From 5794f60c5dc6aebf3583c06e09ad68b98e5dab4c Mon Sep 17 00:00:00 2001 From: Your Name Date: Thu, 20 Aug 2026 17:47:14 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 67 +- .workbuddy/memory/2026-08-20.md | 59 + .../views/first_visit/conversion/index.vue | 4 +- admin/src/views/patient/reception/index.vue | 17 +- admin/src/views/tcm/appointment/list.vue | 56 +- admin/src/views/tcm/appointment/list_h5.vue | 38 +- admin/tsconfig.tsbuildinfo | 2 +- .../appointments_1024x640.png | Bin 128056 -> 126846 bytes .../appointments_1366x768.png | Bin 204495 -> 170685 bytes .../patients_1024x640.png | Bin 117971 -> 118061 bytes .../patients_1366x768.png | Bin 170852 -> 170917 bytes .../patients_1486x920_dpr2.png | Bin 0 -> 600011 bytes .../render_patient_appointment_density.py | 14 +- .../doctor_workstation/services/api_client.py | 129 +- .../services/local_audio_queue.py | 602 ++++++++++ .../services/mock_repository.py | 130 +- .../doctor_workstation/services/repository.py | 246 ++-- .../ui/diagnosis_index_widgets.py | 119 +- .../ui/dialogs/ai_consult.py | 250 +++- .../ui/dialogs/diagnosis.py | 182 ++- .../ui/dialogs/local_audio_queue.py | 625 ++++++++++ .../ui/dialogs/prescription_ai.py | 16 +- .../ui/pages/appointments.py | 495 +++----- .../ui/pages/consultations.py | 76 +- .../doctor_workstation/ui/pages/patients.py | 53 +- .../doctor_workstation/ui/pages/reception.py | 1048 +++++++++++++++-- app/src/doctor_workstation/ui/shell.py | 132 ++- app/src/doctor_workstation/ui/widgets.py | 9 +- app/src/doctor_workstation/video/lifecycle.py | 138 ++- app/src/doctor_workstation/video/window.py | 514 +++++++- app/tests/test_api_client.py | 39 + app/tests/test_appointments_parity_ui.py | 270 ++++- app/tests/test_consultations_parity_ui.py | 130 +- app/tests/test_diagnosis_index_visual.py | 2 + .../test_diagnosis_order_video_visual.py | 137 ++- app/tests/test_local_audio_queue.py | 482 ++++++++ app/tests/test_mock_repository.py | 28 + app/tests/test_patient_ai_report_desktop.py | 620 ++++++++++ app/tests/test_patients_ui.py | 30 +- app/tests/test_reception_parity_ui.py | 415 ++++++- app/tests/test_repository_parity.py | 104 ++ app/tests/test_shell_contract.py | 125 +- app/tests/test_video_contract.py | 392 +++++- .../dist/assets/index-BsDbRyxy.css | 1 + .../{index-DXNYj41g.js => index-DhmAWjut.js} | 226 ++-- .../dist/assets/index-sts1UBl3.css | 1 - app/video_companion/dist/index.html | 4 +- app/video_companion/src/App.vue | 183 ++- app/video_companion/src/env.d.ts | 13 + app/video_companion/src/main.ts | 740 +++++++++++- app/video_companion/src/style.css | 156 +++ .../doctor/AppointmentController.php | 2 +- .../controller/tcm/DiagnosisController.php | 66 +- .../lists/doctor/AppointmentLists.php | 20 +- .../app/adminapi/lists/tcm/DiagnosisLists.php | 82 +- .../adminapi/logic/stats/ConversionLogic.php | 24 +- .../app/adminapi/logic/tcm/DiagnosisLogic.php | 615 ++++++---- .../adminapi/logic/tcm/PrescriptionLogic.php | 32 +- .../validate/tcm/DiagnosisValidate.php | 21 +- .../common/service/storage/engine/Server.php | 25 +- ...2026_08_19_add_local_call_audio_fields.sql | 34 + ...allRecordLifecycleIdentityContractTest.php | 80 ++ .../CallSignatureIdentityContractTest.php | 91 ++ server/tests/ConversionFanEventRuleTest.php | 67 ++ ...DiagnosisWorkspaceRowAuthorizationTest.php | 28 +- server/tests/LocalAudioUploadContractTest.php | 168 +++ ...escriptionAppointmentScopeContractTest.php | 70 ++ 67 files changed, 9257 insertions(+), 1287 deletions(-) create mode 100644 .workbuddy/memory/2026-08-20.md create mode 100644 app/artifacts/patient_appointment_density/patients_1486x920_dpr2.png create mode 100644 app/src/doctor_workstation/services/local_audio_queue.py create mode 100644 app/src/doctor_workstation/ui/dialogs/local_audio_queue.py create mode 100644 app/tests/test_local_audio_queue.py create mode 100644 app/video_companion/dist/assets/index-BsDbRyxy.css rename app/video_companion/dist/assets/{index-DXNYj41g.js => index-DhmAWjut.js} (66%) delete mode 100644 app/video_companion/dist/assets/index-sts1UBl3.css create mode 100644 server/database/migrations/2026_08_19_add_local_call_audio_fields.sql create mode 100644 server/tests/CallRecordLifecycleIdentityContractTest.php create mode 100644 server/tests/CallSignatureIdentityContractTest.php create mode 100644 server/tests/ConversionFanEventRuleTest.php create mode 100644 server/tests/LocalAudioUploadContractTest.php create mode 100644 server/tests/PrescriptionAppointmentScopeContractTest.php diff --git a/.gitignore b/.gitignore index 3edfba339..7cca4bc58 100644 --- a/.gitignore +++ b/.gitignore @@ -1,33 +1,34 @@ -# Build and Release Folders -bin-debug/ -bin-release/ -[Oo]bj/ -[Bb]in/ - -# Other files and folders -.settings/ - -# Executables -*.swf -*.air -*.ipa -*.apk - -# Project files, i.e. `.project`, `.actionScriptProperties` and `.flexProperties` -# should NOT be excluded as they contain compiler settings and other important -# information for Eclipse / Flash Builder. - -/.idea -/.codex-tasks -/.trellis -/.claude -/.agent -/.shared -/.cursor -/.codex -/.agents -/server/.spool -/server/.claude -/.spool -TUICallKit-Vue3/.env -/.codegraph +# Build and Release Folders +bin-debug/ +bin-release/ +[Oo]bj/ +[Bb]in/ + +# Other files and folders +.settings/ + +# Executables +*.swf +*.air +*.ipa +*.apk + +# Project files, i.e. `.project`, `.actionScriptProperties` and `.flexProperties` +# should NOT be excluded as they contain compiler settings and other important +# information for Eclipse / Flash Builder. +# 测试临时目录 +app/.test-tmp-stream/ +/.idea +/.codex-tasks +/.trellis +/.claude +/.agent +/.shared +/.cursor +/.codex +/.agents +/server/.spool +/server/.claude +/.spool +TUICallKit-Vue3/.env +/.codegraph diff --git a/.workbuddy/memory/2026-08-20.md b/.workbuddy/memory/2026-08-20.md new file mode 100644 index 000000000..fc7c1f57d --- /dev/null +++ b/.workbuddy/memory/2026-08-20.md @@ -0,0 +1,59 @@ +# 2026-08-20 — 医生工作站 AI 问诊对话框布局优化 + +## 改动 +- 文件: `app/src/doctor_workstation/ui/dialogs/ai_consult.py` +- 模块: `AiConsultDialog` 右侧「智能分析」卡片 + 问诊对话卡片密度优化 +- 新增 helpers: `_InsightItem`, `_split_insight_segments`, `_split_numbered_list`, `_split_plain_paragraph`, `_split_label_or_sentence`, `_escape_html` +- `_set_insights` 改成将稠密段落拆成 lead / list / plain 三类, 每类单独 QLabel 显示 +- CSS 新增 `AiConsultInsightMarker` / `AiConsultInsightText` / `AiConsultInsightPlaceholder` +- 卡片 padding `10,8,10,8` → `14,12,14,14`; 卡间距 `8` → `10` +- 聊天气泡垂直 margin `4` → `6`, chat_layout spacing `10` → `12` + +## 拆分策略 +- 文本以 `1./2、/3)/4)` 起头 → 视为完整编号列表 +- 文本中嵌入 `…:1.…2.…` → 拆出序言 + 编号列表 +- 短中文标签 `XX:YY` 开头 → 视为 lead, 标签部分加粗 +- 其余按 `。/;/;/` 分句 → 单独成行 + +## 测试 +- 现有 `tests/test_ai_consult_ui.py` 通过 `widget.objectName() == "AiConsultRecordTitle"` 校验标题仍在, 未受影响 +- 暂未运行 UI 测试 (开发环境未装 PySide6); 解析逻辑单独脚本验证通过 + +## 注意 +- PySide6 QSS 对 `QLabel` 的 `line-height` 支持有限; 主要靠 item 间距 `8px` 与 `padding:1px 0` 提供节奏 +- 如果后续接入 `AiConsultInsightText` 还嫌密集, 可再调 `body_host.setSpacing` + +--- + +# 接诊台 AI 智能分析详情对话框 (`ReceptionAiAnalysisDialog`) 优化 +用户截图(`clipboard-2026-08-20T08-42-40`...)反馈: 「问诊详情 → AI 智能分析」卡片里的诊断建议 / 风险评估 / 治疗建议三段文字太稠密, 不利于阅读。 + +## 关键差异 +这次的目标文件和上次不同 — 用户截图里出现 "诊断建议 / 风险评估 / 治疗建议" 标题, 而 `ai_consult.py` 用的是 "血糖控制评估 / 并发症风险评估 / 用药合理性评估"。实际是 `app/src/doctor_workstation/ui/pages/reception.py` 中的 `_ReceptionAiAnalysisDialog` 类。 + +## 改动 +- 文件: `app/src/doctor_workstation/ui/pages/reception.py` +- 新增 helpers (与 ai_consult.py 类似但导出名加 `_ai_` 前缀): + - `_ai_split_into_segments` / `_ai_split_numbered_list` / `_ai_split_plain_paragraph` + - `_ai_segments_to_html` / `_ai_narrative_structured_html` + - `_ai_split_label_or_sentence` / `_ai_escape_html` + - 正则: `_AI_INSIGHT_LIST_RE`, `_AI_INSIGHT_LIST_LOOKAHEAD_RE`, `_AI_INSIGHT_LABEL_RE` +- `add_text_section` 闭包内多挂一个 RichText `_structured_labels[name]` 标签 (`.setObjectName(name + "Structured")`, `property="dialogAiStructured"`) +- 原 PlainText `value_label` 仍存在 (`hide()` + `setMaximumHeight(0)`) 用于兼容既有 findChild 测试 +- `_render_model` 同步刷新两个结构化标签; 空 HTML 时回退显示原 label 文本 +- 风险评估 FlowLayout spacing `7×7` → `9×9` +- `body_layout.setSpacing` `12` → `14` +- 卡片 contentsMargins `14,13,16,15` → `16,14,18,16` +- QSS: `dialogAiBody` 加 `line-height: 1.85`, 新增 `dialogAiStructured` 选择器 (line-height 175%); 风险 pill `min-height` `28` → `30`, padding `4 10` → `5 12`, font 12 → 12.5, border-radius `7` → `8` + +## 兼容约束 +- `tests/test_reception_parity_ui.py` 严格校验: + - `findChild(QLabel, "ReceptionAiAnalysisDialogDiagnosisText")` 必须能找到 + - `.text()` 必须等于 `_ai_narrative_text` 归一化结果 + - `.textFormat() == Qt.TextFormat.PlainText` +- 因此 PlainText 标签必须原样保留, 仅做 `.hide()` + `setMaximumHeight(0)` (避免 QSS `>` 子选择器不被 Qt 支持) + +## 验证 +- `py_compile` 通过, 无 `SyntaxWarning` +- 单独脚本跑过 4 组样本文本 (稠密段落 / 嵌入式编号列表 / 短句 / 纯编号列表), 拆分结果符合预期 +- 未在本机跑 UI 测试 (缺 PySide6) diff --git a/admin/src/views/first_visit/conversion/index.vue b/admin/src/views/first_visit/conversion/index.vue index 246348e99..3100bff4f 100644 --- a/admin/src/views/first_visit/conversion/index.vue +++ b/admin/src/views/first_visit/conversion/index.vue @@ -145,7 +145,7 @@

明细数据列表

-

展开部门可查看人员明细;加粉=总进线=区间有效加粉(按员工+客户去重,须会话同意,剔除已删客户、继承客户、扫一扫/搜手机号/名片分享添加及区间前已加过的重加);挂号=已支付且实收低于 10 元的订单,预约=有效预约记录;开口率=开口/加粉,挂号率=挂号/加粉,面诊率=面诊/挂号(看挂号后流失),预约率=面诊/预约(看预约后未面诊),面诊接诊率=接诊诊单/面诊,接诊率=接诊诊单/总进线

+

展开部门可查看人员明细;加粉=总进线=区间有效加粉(按员工+客户去重,剔除已删客户、继承客户、扫一扫/搜手机号/名片分享添加及区间前已加过的重加);挂号=已支付且实收低于 10 元的订单,预约=有效预约记录;开口率=开口/加粉,挂号率=挂号/加粉,面诊率=面诊/挂号(看挂号后流失),预约率=面诊/预约(看预约后未面诊),面诊接诊率=接诊诊单/面诊,接诊率=接诊诊单/总进线

{{ dashboard.rows.length }} 个顶层节点
@@ -335,7 +335,7 @@ const timeOptions = [ { label: '自定义', value: 'custom' } ] const metricCards: Array<{ key: string; label: string; type: MetricType; hint: string }> = [ - { key: 'add_fans_count', label: '加粉数', type: 'count', hint: '区间有效加粉:去重,须会话同意,剔除已删客户、继承客户、扫一扫/搜手机号/名片分享添加及区间前已加过的重加' }, + { key: 'add_fans_count', label: '加粉数', type: 'count', hint: '区间有效加粉:去重,剔除已删客户、继承客户、扫一扫/搜手机号/名片分享添加及区间前已加过的重加' }, { key: 'total_open_count', label: '开口数', type: 'count', hint: '来源于个人业绩录入' }, { key: 'interview_count', label: '面诊', type: 'count', hint: '已完成预约' }, { key: 'completed_order_count', label: '接诊诊单', type: 'count', hint: '业务订单,按创建人归属并过滤无效单' }, diff --git a/admin/src/views/patient/reception/index.vue b/admin/src/views/patient/reception/index.vue index cc8ff7d28..f5a0193d4 100644 --- a/admin/src/views/patient/reception/index.vue +++ b/admin/src/views/patient/reception/index.vue @@ -215,6 +215,7 @@ const PAGE_SIZE = 15 interface QueueRow { id: number patient_id: number + source_patient_id?: number patient_name: string patient_phone?: string diagnosis_id?: number @@ -436,19 +437,25 @@ const handleSearch = async () => { } const handleCall = async (row: QueueRow) => { - if (!row.patient_id) { + const sourcePatientId = Number(row.source_patient_id || 0) + const diagnosisId = Number(row.diagnosis_id || 0) + if (!sourcePatientId) { feedback.msgWarning('患者信息不完整') return } + if (!diagnosisId) { + feedback.msgWarning('预约信息不完整,无法发起聊天') + return + } try { const res = await getCallSignature({ - patient_id: row.patient_id, - diagnosis_id: row.diagnosis_id || row.id + patient_id: sourcePatientId, + diagnosis_id: diagnosisId }) chatDialogRef.value?.open({ - patientId: row.patient_id, + patientId: sourcePatientId, patientName: row.patient_name, - diagnosisId: row.diagnosis_id || row.id, + diagnosisId, signatureData: res }) } catch (error: any) { diff --git a/admin/src/views/tcm/appointment/list.vue b/admin/src/views/tcm/appointment/list.vue index 8c9c07a0a..5d16ccea6 100644 --- a/admin/src/views/tcm/appointment/list.vue +++ b/admin/src/views/tcm/appointment/list.vue @@ -996,34 +996,34 @@ const handleEdit = (row: any) => { } // 聊天 -const handleChat = async (row: any) => { - if (!row.patient_id) { - feedback.msgWarning('患者信息不完整') - return - } - - // 检查是否有诊单ID - if (!row.diagnosis_id && !row.id) { - feedback.msgWarning('预约信息不完整,无法发起聊天') - return - } - - try { - // 获取聊天签名信息 - const res = await getCallSignature({ - patient_id: row.patient_id, - diagnosis_id: row.diagnosis_id || row.id - }) - - console.log('获取聊天签名成功:', res) - - // 直接打开聊天对话框,传入必要的参数 - chatDialogRef.value?.open({ - patientId: row.patient_id, - patientName: row.patient_name, - diagnosisId: row.diagnosis_id || row.id, - signatureData: res // 传入签名数据 - }) +const handleChat = async (row: any) => { + const sourcePatientId = Number(row.source_patient_id || 0) + const diagnosisId = Number(row.diagnosis_id || 0) + if (!sourcePatientId) { + feedback.msgWarning('患者信息不完整') + return + } + if (!diagnosisId) { + feedback.msgWarning('预约信息不完整,无法发起聊天') + return + } + + try { + // 获取聊天签名信息 + const res = await getCallSignature({ + patient_id: sourcePatientId, + diagnosis_id: diagnosisId + }) + + console.log('获取聊天签名成功:', res) + + // 直接打开聊天对话框,传入必要的参数 + chatDialogRef.value?.open({ + patientId: sourcePatientId, + patientName: row.patient_name, + diagnosisId, + signatureData: res // 传入签名数据 + }) } catch (error: any) { console.error('获取聊天签名失败:', error) feedback.msgError(error.message || '获取聊天签名失败') diff --git a/admin/src/views/tcm/appointment/list_h5.vue b/admin/src/views/tcm/appointment/list_h5.vue index c1c5eab84..bc70429c7 100644 --- a/admin/src/views/tcm/appointment/list_h5.vue +++ b/admin/src/views/tcm/appointment/list_h5.vue @@ -642,22 +642,28 @@ const handleEdit = (row: any) => { } editRef.value?.open('edit', row.patient_id) } -const handleChat = async (row: any) => { - if (!row.patient_id) { - feedback.msgWarning('患者信息不完整') - return - } - try { - const res = await getCallSignature({ - patient_id: row.patient_id, - diagnosis_id: row.diagnosis_id || row.id - }) - chatDialogRef.value?.open({ - patientId: row.patient_id, - patientName: row.patient_name, - diagnosisId: row.diagnosis_id || row.id, - signatureData: res - }) +const handleChat = async (row: any) => { + const sourcePatientId = Number(row.source_patient_id || 0) + const diagnosisId = Number(row.diagnosis_id || 0) + if (!sourcePatientId) { + feedback.msgWarning('患者信息不完整') + return + } + if (!diagnosisId) { + feedback.msgWarning('预约信息不完整,无法发起聊天') + return + } + try { + const res = await getCallSignature({ + patient_id: sourcePatientId, + diagnosis_id: diagnosisId + }) + chatDialogRef.value?.open({ + patientId: sourcePatientId, + patientName: row.patient_name, + diagnosisId, + signatureData: res + }) } catch (e: any) { feedback.msgError(e?.msg || e?.message || '获取通话签名失败') } diff --git a/admin/tsconfig.tsbuildinfo b/admin/tsconfig.tsbuildinfo index 28b249897..73d5761d6 100644 --- a/admin/tsconfig.tsbuildinfo +++ b/admin/tsconfig.tsbuildinfo @@ -1 +1 @@ -{"fileNames":["./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es5.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2019.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2020.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2021.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2022.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2023.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2024.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.esnext.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.dom.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.dom.iterable.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.dom.asynciterable.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.webworker.importscripts.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.scripthost.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2017.date.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2019.array.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2019.object.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2019.string.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2020.date.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2020.string.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2020.number.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2021.promise.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2021.string.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2021.weakref.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2021.intl.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2022.array.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2022.error.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2022.intl.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2022.object.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2022.string.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2022.regexp.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2023.array.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2023.collection.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2023.intl.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2024.collection.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2024.object.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2024.promise.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2024.regexp.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2024.string.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.esnext.array.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.esnext.collection.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.esnext.intl.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.esnext.disposable.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.esnext.decorators.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.esnext.iterator.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.decorators.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.esnext.full.d.ts","./node_modules/.pnpm/vite@6.4.2_@types+node@22.1_8f5e549addd5aa700368df43e00a64dc/node_modules/vite/types/hmrpayload.d.ts","./node_modules/.pnpm/vite@6.4.2_@types+node@22.1_8f5e549addd5aa700368df43e00a64dc/node_modules/vite/types/customevent.d.ts","./node_modules/.pnpm/vite@6.4.2_@types+node@22.1_8f5e549addd5aa700368df43e00a64dc/node_modules/vite/types/hot.d.ts","./node_modules/.pnpm/vite@6.4.2_@types+node@22.1_8f5e549addd5aa700368df43e00a64dc/node_modules/vite/types/importglob.d.ts","./node_modules/.pnpm/vite@6.4.2_@types+node@22.1_8f5e549addd5aa700368df43e00a64dc/node_modules/vite/types/importmeta.d.ts","./node_modules/.pnpm/vite@6.4.2_@types+node@22.1_8f5e549addd5aa700368df43e00a64dc/node_modules/vite/client.d.ts","./global.d.ts","./node_modules/.pnpm/@vue+shared@3.5.33/node_modules/@vue/shared/dist/shared.d.ts","./node_modules/.pnpm/@babel+types@7.29.0/node_modules/@babel/types/lib/index.d.ts","./node_modules/.pnpm/@babel+parser@7.29.3/node_modules/@babel/parser/typings/babel-parser.d.ts","./node_modules/.pnpm/@vue+compiler-core@3.5.33/node_modules/@vue/compiler-core/dist/compiler-core.d.ts","./node_modules/.pnpm/@vue+compiler-dom@3.5.33/node_modules/@vue/compiler-dom/dist/compiler-dom.d.ts","./node_modules/.pnpm/@vue+reactivity@3.5.33/node_modules/@vue/reactivity/dist/reactivity.d.ts","./node_modules/.pnpm/@vue+runtime-core@3.5.33/node_modules/@vue/runtime-core/dist/runtime-core.d.ts","./node_modules/.pnpm/csstype@3.2.3/node_modules/csstype/index.d.ts","./node_modules/.pnpm/@vue+runtime-dom@3.5.33/node_modules/@vue/runtime-dom/dist/runtime-dom.d.ts","./node_modules/.pnpm/vue@3.5.33_typescript@5.7.3/node_modules/vue/dist/vue.d.mts","./node_modules/.pnpm/vue@3.5.33_typescript@5.7.3/node_modules/vue/jsx-runtime/index.d.ts","./node_modules/.vue-global-types/vue_3.5_0_0_0.d.ts","./node_modules/.pnpm/vue-router@4.6.4_vue@3.5.33_typescript@5.7.3_/node_modules/vue-router/dist/router-cwonjprp.d.mts","./node_modules/.pnpm/vue-router@4.6.4_vue@3.5.33_typescript@5.7.3_/node_modules/vue-router/dist/vue-router.d.mts","./node_modules/.pnpm/@vueuse+shared@12.7.0_typescript@5.7.3/node_modules/@vueuse/shared/index.d.mts","./node_modules/.pnpm/@vueuse+core@12.7.0_typescript@5.7.3/node_modules/@vueuse/core/index.d.mts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/zh-cn.d.ts","./src/enums/appenums.ts","./node_modules/.pnpm/vue-demi@0.14.10_vue@3.5.33_typescript@5.7.3_/node_modules/vue-demi/lib/index.d.ts","./node_modules/.pnpm/pinia@2.3.1_typescript@5.7.3_vue@3.5.33_typescript@5.7.3_/node_modules/pinia/dist/pinia.d.ts","./node_modules/.pnpm/axios@1.16.0/node_modules/axios/index.d.ts","./node_modules/@types/lodash/common/common.d.ts","./node_modules/@types/lodash/common/array.d.ts","./node_modules/@types/lodash/common/collection.d.ts","./node_modules/@types/lodash/common/date.d.ts","./node_modules/@types/lodash/common/function.d.ts","./node_modules/@types/lodash/common/lang.d.ts","./node_modules/@types/lodash/common/math.d.ts","./node_modules/@types/lodash/common/number.d.ts","./node_modules/@types/lodash/common/object.d.ts","./node_modules/@types/lodash/common/seq.d.ts","./node_modules/@types/lodash/common/string.d.ts","./node_modules/@types/lodash/common/util.d.ts","./node_modules/@types/lodash/index.d.ts","./src/config/index.ts","./src/enums/pageenum.ts","./src/enums/requestenums.ts","./src/api/user.ts","./src/enums/cacheenums.ts","./src/utils/validate.ts","./src/stores/modules/multipletabs.ts","./src/utils/cache.ts","./src/utils/auth.ts","./src/stores/modules/user.ts","./src/config/setting.ts","./src/utils/theme.ts","./src/stores/modules/setting.ts","./src/layout/default/components/setting/drawer.vue","./src/layout/default/components/setting/index.vue","./src/hooks/usewatchroute.ts","./src/layout/default/components/header/breadcrumb.vue","./src/layout/default/components/header/fold.vue","./src/layout/default/components/header/full-screen.vue","./src/hooks/usemultipletabs.ts","./src/layout/default/components/header/multiple-tabs.vue","./src/layout/default/components/header/refresh.vue","./src/api/setting/system.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/constants/aria.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/constants/date.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/constants/event.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/constants/key.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/constants/size.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/constants/column-alignment.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/constants/form.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/typescript.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/vue/props/util.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/vue/props/runtime.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/vue/props/types.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/dom/aria.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/dom/event.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/dom/position.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/dom/scroll.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/dom/style.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/dom/element.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/dom/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/vue/global-node.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/add-location.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/aim.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/alarm-clock.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/apple.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/arrow-down-bold.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/arrow-down.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/arrow-left-bold.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/arrow-left.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/arrow-right-bold.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/arrow-right.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/arrow-up-bold.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/arrow-up.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/avatar.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/back.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/baseball.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/basketball.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/bell-filled.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/bell.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/bicycle.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/bottom-left.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/bottom-right.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/bottom.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/bowl.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/box.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/briefcase.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/brush-filled.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/brush.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/burger.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/calendar.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/camera-filled.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/camera.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/caret-bottom.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/caret-left.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/caret-right.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/caret-top.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/cellphone.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/chat-dot-round.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/chat-dot-square.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/chat-line-round.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/chat-line-square.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/chat-round.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/chat-square.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/check.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/checked.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/cherry.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/chicken.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/chrome-filled.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/circle-check-filled.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/circle-check.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/circle-close-filled.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/circle-close.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/circle-plus-filled.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/circle-plus.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/clock.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/close-bold.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/close.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/cloudy.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/coffee-cup.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/coffee.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/coin.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/cold-drink.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/collection-tag.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/collection.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/comment.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/compass.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/connection.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/coordinate.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/copy-document.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/cpu.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/credit-card.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/crop.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/d-arrow-left.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/d-arrow-right.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/d-caret.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/data-analysis.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/data-board.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/data-line.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/delete-filled.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/delete-location.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/delete.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/dessert.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/discount.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/dish-dot.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/dish.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/document-add.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/document-checked.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/document-copy.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/document-delete.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/document-remove.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/document.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/download.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/drizzling.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/edit-pen.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/edit.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/eleme-filled.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/eleme.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/element-plus.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/expand.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/failed.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/female.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/files.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/film.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/filter.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/finished.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/first-aid-kit.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/flag.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/fold.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/folder-add.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/folder-checked.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/folder-delete.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/folder-opened.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/folder-remove.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/folder.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/food.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/football.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/fork-spoon.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/fries.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/full-screen.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/goblet-full.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/goblet-square-full.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/goblet-square.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/goblet.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/gold-medal.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/goods-filled.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/goods.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/grape.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/grid.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/guide.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/handbag.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/headset.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/help-filled.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/help.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/hide.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/histogram.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/home-filled.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/hot-water.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/house.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/ice-cream-round.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/ice-cream-square.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/ice-cream.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/ice-drink.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/ice-tea.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/info-filled.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/iphone.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/key.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/knife-fork.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/lightning.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/link.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/list.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/loading.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/location-filled.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/location-information.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/location.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/lock.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/lollipop.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/magic-stick.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/magnet.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/male.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/management.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/map-location.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/medal.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/memo.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/menu.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/message-box.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/message.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/mic.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/microphone.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/milk-tea.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/minus.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/money.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/monitor.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/moon-night.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/moon.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/more-filled.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/more.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/mostly-cloudy.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/mouse.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/mug.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/mute-notification.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/mute.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/no-smoking.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/notebook.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/notification.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/odometer.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/office-building.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/open.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/operation.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/opportunity.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/orange.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/paperclip.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/partly-cloudy.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/pear.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/phone-filled.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/phone.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/picture-filled.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/picture-rounded.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/picture.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/pie-chart.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/place.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/platform.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/plus.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/pointer.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/position.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/postcard.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/pouring.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/present.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/price-tag.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/printer.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/promotion.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/quartz-watch.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/question-filled.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/rank.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/reading-lamp.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/reading.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/refresh-left.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/refresh-right.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/refresh.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/refrigerator.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/remove-filled.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/remove.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/right.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/scale-to-original.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/school.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/scissor.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/search.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/select.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/sell.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/semi-select.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/service.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/set-up.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/setting.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/share.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/ship.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/shop.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/shopping-bag.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/shopping-cart-full.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/shopping-cart.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/shopping-trolley.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/smoking.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/soccer.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/sold-out.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/sort-down.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/sort-up.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/sort.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/stamp.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/star-filled.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/star.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/stopwatch.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/success-filled.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/sugar.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/suitcase-line.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/suitcase.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/sunny.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/sunrise.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/sunset.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/switch-button.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/switch-filled.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/switch.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/takeaway-box.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/ticket.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/tickets.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/timer.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/toilet-paper.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/tools.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/top-left.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/top-right.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/top.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/trend-charts.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/trophy-base.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/trophy.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/turn-off.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/umbrella.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/unlock.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/upload-filled.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/upload.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/user-filled.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/user.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/van.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/video-camera-filled.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/video-camera.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/video-pause.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/video-play.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/view.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/wallet-filled.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/wallet.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/warn-triangle-filled.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/warning-filled.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/warning.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/watch.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/watermelon.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/wind-power.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/zoom-in.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/zoom-out.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/index.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/vue/icon.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/vue/typescript.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/vue/install.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/vue/refs.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/vue/size.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/vue/validator.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/vue/vnode.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/vue/props/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/vue/index.d.ts","./node_modules/.pnpm/@types+lodash@4.17.24/node_modules/@types/lodash/index.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/add.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/after.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/ary.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/assign.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/assignin.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/assigninwith.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/assignwith.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/at.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/attempt.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/before.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/bind.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/bindall.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/bindkey.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/camelcase.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/capitalize.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/castarray.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/ceil.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/chain.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/chunk.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/clamp.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/clone.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/clonedeep.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/clonedeepwith.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/clonewith.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/compact.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/concat.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/cond.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/conforms.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/conformsto.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/constant.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/countby.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/create.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/curry.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/curryright.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/debounce.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/deburr.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/defaults.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/defaultsdeep.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/defaultto.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/defer.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/delay.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/difference.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/differenceby.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/differencewith.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/divide.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/drop.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/dropright.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/droprightwhile.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/dropwhile.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/each.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/eachright.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/endswith.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/entries.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/entriesin.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/eq.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/escape.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/escaperegexp.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/every.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/extend.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/extendwith.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/fill.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/filter.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/find.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/findindex.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/findkey.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/findlast.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/findlastindex.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/findlastkey.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/first.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/flatmap.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/flatmapdeep.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/flatmapdepth.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/flatten.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/flattendeep.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/flattendepth.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/flip.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/floor.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/flow.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/flowright.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/foreach.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/foreachright.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/forin.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/forinright.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/forown.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/forownright.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/frompairs.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/functions.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/functionsin.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/get.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/groupby.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/gt.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/gte.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/has.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/hasin.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/head.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/identity.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/includes.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/indexof.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/initial.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/inrange.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/intersection.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/intersectionby.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/intersectionwith.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/invert.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/invertby.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/invoke.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/invokemap.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/isarguments.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/isarray.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/isarraybuffer.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/isarraylike.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/isarraylikeobject.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/isboolean.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/isbuffer.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/isdate.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/iselement.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/isempty.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/isequal.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/isequalwith.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/iserror.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/isfinite.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/isfunction.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/isinteger.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/islength.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/ismap.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/ismatch.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/ismatchwith.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/isnan.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/isnative.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/isnil.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/isnull.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/isnumber.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/isobject.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/isobjectlike.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/isplainobject.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/isregexp.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/issafeinteger.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/isset.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/isstring.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/issymbol.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/istypedarray.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/isundefined.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/isweakmap.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/isweakset.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/iteratee.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/join.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/kebabcase.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/keyby.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/keys.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/keysin.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/last.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/lastindexof.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/lowercase.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/lowerfirst.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/lt.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/lte.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/map.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/mapkeys.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/mapvalues.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/matches.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/matchesproperty.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/max.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/maxby.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/mean.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/meanby.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/memoize.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/merge.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/mergewith.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/method.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/methodof.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/min.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/minby.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/mixin.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/multiply.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/negate.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/noop.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/now.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/nth.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/ntharg.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/omit.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/omitby.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/once.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/orderby.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/over.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/overargs.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/overevery.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/oversome.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/pad.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/padend.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/padstart.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/parseint.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/partial.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/partialright.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/partition.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/pick.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/pickby.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/property.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/propertyof.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/pull.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/pullall.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/pullallby.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/pullallwith.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/pullat.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/random.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/range.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/rangeright.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/rearg.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/reduce.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/reduceright.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/reject.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/remove.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/repeat.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/replace.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/rest.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/result.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/reverse.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/round.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/sample.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/samplesize.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/set.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/setwith.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/shuffle.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/size.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/slice.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/snakecase.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/some.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/sortby.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/sortedindex.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/sortedindexby.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/sortedindexof.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/sortedlastindex.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/sortedlastindexby.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/sortedlastindexof.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/sorteduniq.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/sorteduniqby.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/split.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/spread.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/startcase.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/startswith.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/stubarray.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/stubfalse.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/stubobject.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/stubstring.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/stubtrue.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/subtract.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/sum.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/sumby.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/tail.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/take.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/takeright.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/takerightwhile.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/takewhile.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/tap.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/template.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/templatesettings.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/throttle.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/thru.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/times.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/toarray.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/tofinite.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/tointeger.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/tolength.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/tolower.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/tonumber.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/topairs.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/topairsin.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/topath.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/toplainobject.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/tosafeinteger.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/tostring.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/toupper.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/transform.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/trim.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/trimend.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/trimstart.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/truncate.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/unary.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/unescape.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/union.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/unionby.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/unionwith.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/uniq.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/uniqby.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/uniqueid.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/uniqwith.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/unset.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/unzip.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/unzipwith.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/update.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/updatewith.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/uppercase.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/upperfirst.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/values.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/valuesin.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/without.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/words.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/wrap.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/xor.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/xorby.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/xorwith.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/zip.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/zipobject.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/zipobjectdeep.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/zipwith.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/index.d.ts","./node_modules/.pnpm/lodash-unified@1.0.3_@types_168785b94d783e1b7a7274df40d5f9d9/node_modules/lodash-unified/type.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/arrays.d.ts","./node_modules/.pnpm/@vueuse+shared@12.0.0_typescript@5.7.3/node_modules/@vueuse/shared/index.d.mts","./node_modules/.pnpm/@vueuse+core@12.0.0_typescript@5.7.3/node_modules/@vueuse/core/index.d.mts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/browser.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/error.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/functions.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/i18n.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/objects.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/raf.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/rand.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/strings.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/types.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/throttlebyraf.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/easings.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/numbers.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/affix/src/affix.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/affix/src/affix.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/affix/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/alert/src/alert.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/alert/src/alert.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/alert/src/instance.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/alert/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/anchor/src/anchor.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/anchor/src/anchor.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/anchor/src/anchor-link.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/anchor/src/anchor-link.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/anchor/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/input/src/input.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/input/src/input.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/input/src/instance.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/input/index.d.ts","./node_modules/.pnpm/@sxzz+popperjs-es@2.11.8/node_modules/@sxzz/popperjs-es/lib/enums.d.ts","./node_modules/.pnpm/@sxzz+popperjs-es@2.11.8/node_modules/@sxzz/popperjs-es/lib/modifiers/popperoffsets.d.ts","./node_modules/.pnpm/@sxzz+popperjs-es@2.11.8/node_modules/@sxzz/popperjs-es/lib/modifiers/flip.d.ts","./node_modules/.pnpm/@sxzz+popperjs-es@2.11.8/node_modules/@sxzz/popperjs-es/lib/modifiers/hide.d.ts","./node_modules/.pnpm/@sxzz+popperjs-es@2.11.8/node_modules/@sxzz/popperjs-es/lib/modifiers/offset.d.ts","./node_modules/.pnpm/@sxzz+popperjs-es@2.11.8/node_modules/@sxzz/popperjs-es/lib/modifiers/eventlisteners.d.ts","./node_modules/.pnpm/@sxzz+popperjs-es@2.11.8/node_modules/@sxzz/popperjs-es/lib/modifiers/computestyles.d.ts","./node_modules/.pnpm/@sxzz+popperjs-es@2.11.8/node_modules/@sxzz/popperjs-es/lib/modifiers/arrow.d.ts","./node_modules/.pnpm/@sxzz+popperjs-es@2.11.8/node_modules/@sxzz/popperjs-es/lib/modifiers/preventoverflow.d.ts","./node_modules/.pnpm/@sxzz+popperjs-es@2.11.8/node_modules/@sxzz/popperjs-es/lib/modifiers/applystyles.d.ts","./node_modules/.pnpm/@sxzz+popperjs-es@2.11.8/node_modules/@sxzz/popperjs-es/lib/types.d.ts","./node_modules/.pnpm/@sxzz+popperjs-es@2.11.8/node_modules/@sxzz/popperjs-es/lib/modifiers/index.d.ts","./node_modules/.pnpm/@sxzz+popperjs-es@2.11.8/node_modules/@sxzz/popperjs-es/lib/utils/detectoverflow.d.ts","./node_modules/.pnpm/@sxzz+popperjs-es@2.11.8/node_modules/@sxzz/popperjs-es/lib/createpopper.d.ts","./node_modules/.pnpm/@sxzz+popperjs-es@2.11.8/node_modules/@sxzz/popperjs-es/lib/popper-lite.d.ts","./node_modules/.pnpm/@sxzz+popperjs-es@2.11.8/node_modules/@sxzz/popperjs-es/lib/popper.d.ts","./node_modules/.pnpm/@sxzz+popperjs-es@2.11.8/node_modules/@sxzz/popperjs-es/lib/index.d.ts","./node_modules/.pnpm/@sxzz+popperjs-es@2.11.8/node_modules/@sxzz/popperjs-es/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/popper/src/constants.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/popper/src/popper.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/popper/src/popper.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/popper/src/arrow.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/popper/src/trigger.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/popper/src/trigger.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/avatar/src/avatar.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/avatar/src/constants.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/popper/src/arrow.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/popper/src/content.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/popper/src/content.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/popper/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/avatar/src/avatar-group-props.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/avatar/src/avatar.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/avatar/src/avatar-group.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/avatar/src/instance.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/avatar/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/backtop/src/backtop.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/backtop/src/backtop.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/backtop/src/instance.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/backtop/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/badge/src/badge.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/badge/src/badge.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/badge/src/instance.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/badge/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/breadcrumb/src/breadcrumb.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/breadcrumb/src/breadcrumb-item.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/breadcrumb/src/constants.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/breadcrumb/src/breadcrumb.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/breadcrumb/src/breadcrumb-item.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/breadcrumb/src/instances.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/breadcrumb/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/button/src/button.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/button/src/constants.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/button/src/button.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/button/src/button-group.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/button/src/button-group.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/button/src/instance.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/button/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/calendar/src/calendar.d.ts","./node_modules/.pnpm/dayjs@1.11.20/node_modules/dayjs/locale/types.d.ts","./node_modules/.pnpm/dayjs@1.11.20/node_modules/dayjs/locale/index.d.ts","./node_modules/.pnpm/dayjs@1.11.20/node_modules/dayjs/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/calendar/src/calendar.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/calendar/src/date-table.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/calendar/src/date-table.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/calendar/src/instance.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/calendar/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/card/src/card.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/card/src/card.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/card/src/instance.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/card/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/carousel/src/carousel.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/carousel/src/carousel-item.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/carousel/src/constants.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/carousel/src/carousel.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/carousel/src/carousel-item.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/carousel/src/instance.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/carousel/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/cascader-panel/src/types.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/cascader-panel/src/node.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/cascader-panel/src/menu.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/cascader-panel/src/config.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/cascader-panel/src/index.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/cascader-panel/src/instance.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/cascader-panel/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/use-attrs/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/use-calc-input-width/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/use-deprecated/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/use-draggable/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/use-focus/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/en.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/af.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/ar-eg.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/ar.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/az.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/bg.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/bn.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/ca.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/ckb.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/cs.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/da.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/de.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/el.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/eo.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/es.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/et.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/eu.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/fa.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/fi.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/fr.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/he.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/hi.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/hr.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/hu.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/hy-am.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/id.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/it.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/ja.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/kk.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/km.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/ko.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/ku.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/ky.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/lo.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/lt.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/lv.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/mg.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/mn.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/ms.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/my.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/nb-no.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/nl.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/no.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/pa.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/pl.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/pt-br.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/pt.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/ro.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/ru.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/sk.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/sl.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/sr.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/sv.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/sw.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/ta.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/te.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/th.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/tk.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/tr.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/ug-cn.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/uk.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/uz-uz.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/vi.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/zh-tw.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/zh-hk.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/zh-mo.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/use-locale/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/use-namespace/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/use-lockscreen/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/use-modal/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/use-model-toggle/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/use-prevent-global/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/use-prop/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/use-popper/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/use-same-target/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/use-teleport/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/use-throttle-render/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/use-timeout/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/use-transition-fallthrough/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/use-id/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/use-escape-keydown/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/use-popper-container/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/use-intermediate-render/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/use-delayed-toggle/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/use-forward-ref/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/use-z-index/index.d.ts","./node_modules/.pnpm/@floating-ui+utils@0.2.11/node_modules/@floating-ui/utils/dist/floating-ui.utils.d.mts","./node_modules/.pnpm/@floating-ui+core@1.7.5/node_modules/@floating-ui/core/dist/floating-ui.core.d.mts","./node_modules/.pnpm/@floating-ui+utils@0.2.11/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.d.mts","./node_modules/.pnpm/@floating-ui+dom@1.7.6/node_modules/@floating-ui/dom/dist/floating-ui.dom.d.mts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/use-floating/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/use-cursor/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/use-ordered-children/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/use-size/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/use-focus-controller/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/use-composition/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/use-empty-values/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/use-aria/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tag/src/tag.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tag/src/tag.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tag/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/cascader/src/cascader.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/cascader/src/cascader.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/cascader/src/instances.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/cascader/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/check-tag/src/check-tag.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/check-tag/src/check-tag.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/check-tag/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/checkbox/src/checkbox.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/checkbox/src/checkbox.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/checkbox/src/checkbox-group.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/checkbox/src/checkbox-group.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/checkbox/src/constants.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/checkbox/src/checkbox-button.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/checkbox/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/col/src/col.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/col/src/col.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/col/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/collapse/src/collapse.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/collapse/src/collapse-item.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/collapse/src/constants.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/collapse/src/collapse.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/collapse/src/collapse-item.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/collapse/src/instance.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/collapse/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/collapse-transition/src/collapse-transition.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/collapse-transition/index.d.ts","./node_modules/.pnpm/@ctrl+tinycolor@4.2.0/node_modules/@ctrl/tinycolor/dist/interfaces.d.ts","./node_modules/.pnpm/@ctrl+tinycolor@4.2.0/node_modules/@ctrl/tinycolor/dist/index.d.ts","./node_modules/.pnpm/@ctrl+tinycolor@4.2.0/node_modules/@ctrl/tinycolor/dist/css-color-names.d.ts","./node_modules/.pnpm/@ctrl+tinycolor@4.2.0/node_modules/@ctrl/tinycolor/dist/readability.d.ts","./node_modules/.pnpm/@ctrl+tinycolor@4.2.0/node_modules/@ctrl/tinycolor/dist/to-ms-filter.d.ts","./node_modules/.pnpm/@ctrl+tinycolor@4.2.0/node_modules/@ctrl/tinycolor/dist/from-ratio.d.ts","./node_modules/.pnpm/@ctrl+tinycolor@4.2.0/node_modules/@ctrl/tinycolor/dist/format-input.d.ts","./node_modules/.pnpm/@ctrl+tinycolor@4.2.0/node_modules/@ctrl/tinycolor/dist/random.d.ts","./node_modules/.pnpm/@ctrl+tinycolor@4.2.0/node_modules/@ctrl/tinycolor/dist/conversion.d.ts","./node_modules/.pnpm/@ctrl+tinycolor@4.2.0/node_modules/@ctrl/tinycolor/dist/public_api.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/color-picker-panel/src/utils/color.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/color-picker-panel/src/color-picker-panel.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/color-picker-panel/src/color-picker-panel.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/color-picker-panel/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tooltip/src/trigger.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tooltip/src/content.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tooltip/src/content.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tooltip/src/tooltip.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tooltip/src/tooltip.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tooltip/src/constants.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tooltip/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/color-picker/src/color-picker.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/color-picker/src/color-picker.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/color-picker/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/dialog/src/dialog-content.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/dialog/src/dialog.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/dialog/src/dialog.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/dialog/src/use-dialog.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/dialog/src/constants.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/dialog/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/message/src/message.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/message/src/message.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/message/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/link/src/link.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/link/src/link.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/link/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table/src/store/tree.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table/src/store/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table/src/table-header/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table/src/table-layout.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table/src/table/defaults.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table/src/util.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table/src/table-column/defaults.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/scrollbar/src/scrollbar.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/scrollbar/src/scrollbar.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/scrollbar/src/thumb.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/scrollbar/src/thumb.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/scrollbar/src/util.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/scrollbar/src/constants.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/scrollbar/index.d.ts","./node_modules/.pnpm/normalize-wheel-es@1.2.0/node_modules/normalize-wheel-es/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/directives/mousewheel/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table/src/table-body/defaults.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table/src/table-footer/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table/src/h-helper.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table/src/table.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table/src/table-column/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table/src/tablecolumn.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/config-provider/src/config-provider-props.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/config-provider/src/config-provider.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/config-provider/src/constants.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/config-provider/src/hooks/use-global-config.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/config-provider/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/container/src/container.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/container/src/aside.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/container/src/footer.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/container/src/header.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/container/src/main.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/container/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/countdown/src/countdown.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/countdown/src/countdown.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/countdown/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/time-picker/src/common/props.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/time-picker/src/common/picker.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/time-picker/src/time-picker-com/panel-time-pick.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/time-picker/src/utils.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/time-picker/src/composables/use-common-picker.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/time-picker/src/constants.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/time-picker/src/time-picker.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/time-picker/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/date-picker-panel/src/constants.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/date-picker-panel/src/types.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/date-picker-panel/src/props/date-picker-panel.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/date-picker-panel/src/date-picker-panel.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/date-picker-panel/src/instance.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/date-picker-panel/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/date-picker/src/props.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/date-picker/src/date-picker.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/date-picker/src/instance.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/date-picker/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/descriptions/src/description.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/descriptions/src/description.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/descriptions/src/description-item.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/descriptions/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/divider/src/divider.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/divider/src/divider.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/divider/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/drawer/src/drawer.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/drawer/src/drawer.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/drawer/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/icon/src/icon.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/icon/src/icon.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/icon/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/dropdown/src/dropdown.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/dropdown/src/dropdown.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/dropdown/src/instance.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/dropdown/src/tokens.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/dropdown/src/dropdown-item.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/dropdown/src/dropdown-menu.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/dropdown/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/empty/src/empty.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/empty/src/empty.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/empty/src/instance.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/empty/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/form/src/utils.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/form/src/form.d.ts","./node_modules/.pnpm/async-validator@4.2.5/node_modules/async-validator/dist-types/interface.d.ts","./node_modules/.pnpm/async-validator@4.2.5/node_modules/async-validator/dist-types/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/form/src/types.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/form/src/form-item.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/form/src/constants.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/form/src/hooks/use-form-common-props.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/form/src/hooks/use-form-item.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/form/src/form.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/form/src/form-item.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/form/src/hooks/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/form/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/image-viewer/src/image-viewer.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/image-viewer/src/image-viewer.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/image-viewer/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/image/src/image.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/image/src/image.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/image/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/input-number/src/input-number.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/input-number/src/input-number.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/input-number/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/input-tag/src/input-tag.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/input-tag/src/input-tag.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/input-tag/src/instance.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/input-tag/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/menu/src/menu.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/menu/src/types.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/menu/src/menu-item.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/menu/src/menu-item-group.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/menu/src/sub-menu.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/menu/src/menu-item.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/menu/src/menu-item-group.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/menu/src/instance.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/menu/src/tokens.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/menu/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/overlay/src/overlay.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/overlay/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/page-header/src/page-header.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/page-header/src/page-header.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/page-header/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/pagination/src/pagination.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/pagination/src/constants.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/pagination/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/popconfirm/src/popconfirm.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/popconfirm/src/popconfirm.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/popconfirm/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/progress/src/progress.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/progress/src/progress.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/progress/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/radio/src/radio.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/radio/src/radio.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/radio/src/radio-button.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/radio/src/radio-button.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/radio/src/radio-group.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/radio/src/radio-group.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/radio/src/constants.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/radio/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/rate/src/rate.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/rate/src/rate.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/rate/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/result/src/result.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/result/src/result.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/result/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/row/src/row.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/row/src/row.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/row/src/constants.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/row/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/virtual-list/src/defaults.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/virtual-list/src/types.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/virtual-list/src/components/fixed-size-list.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/virtual-list/src/components/dynamic-size-list.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/virtual-list/src/components/fixed-size-grid.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/virtual-list/src/props.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/virtual-list/src/hooks/use-cache.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/virtual-list/src/builders/build-grid.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/virtual-list/src/components/dynamic-size-grid.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/select-v2/src/select.types.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/virtual-list/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/select-v2/src/select-dropdown.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/select-v2/src/token.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/select-v2/src/useprops.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/select-v2/src/select.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/select-v2/src/defaults.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/select/src/option.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/select/src/type.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/select/src/select.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/select/src/select.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/select/src/token.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/select/src/option.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/select/src/option-group.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/select/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/select-v2/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/skeleton/src/skeleton.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/skeleton/src/skeleton.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/skeleton/src/skeleton-item.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/skeleton/src/skeleton-item.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/skeleton/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/slider/src/slider.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/slider/src/marker.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/slider/src/slider.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/slider/src/composables/use-marks.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/slider/src/constants.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/slider/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/space/src/space.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/space/src/item.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/space/src/use-space.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/space/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/statistic/src/statistic.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/statistic/src/statistic.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/statistic/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/steps/src/steps.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/steps/src/steps.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/steps/src/item.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/steps/src/item.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/steps/src/tokens.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/steps/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/switch/src/switch.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/switch/src/switch.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/switch/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table-v2/src/constants.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table-v2/src/types.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table-v2/src/common.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table-v2/src/row.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table-v2/src/grid.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table-v2/src/table.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table-v2/src/table-grid.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table-v2/src/composables/use-scrollbar.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table-v2/src/header-row.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table-v2/src/components/header-row.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table-v2/src/components/row.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table-v2/src/cell.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table-v2/src/components/cell.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table-v2/src/header-cell.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table-v2/src/components/header-cell.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table-v2/src/header.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table-v2/src/composables/use-columns.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table-v2/src/components/header.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table-v2/src/components/sort-icon.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table-v2/src/components/expand-icon.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table-v2/src/components/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table-v2/src/table-v2.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table-v2/src/auto-resizer.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table-v2/src/private.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table-v2/src/composables/use-row.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table-v2/src/composables/use-data.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table-v2/src/composables/use-styles.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table-v2/src/composables/use-auto-resize.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table-v2/src/composables/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table-v2/src/use-table.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table-v2/src/renderers/header-cell.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table-v2/src/components/auto-resizer.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table-v2/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tabs/src/tab-pane.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tabs/src/tab-pane.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tabs/src/tab-bar.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tabs/src/tab-bar.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tabs/src/tab-nav.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tabs/src/tabs.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tabs/src/constants.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tabs/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/text/src/text.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/text/src/text.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/text/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/time-select/src/time-select.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/time-select/src/time-select.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/time-select/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/timeline/src/timeline.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/timeline/src/timeline-item.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/timeline/src/timeline-item.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/timeline/src/tokens.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/timeline/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/transfer/src/transfer-panel.vue.d.ts","./node_modules/.pnpm/vue-component-type-helpers@3.2.8/node_modules/vue-component-type-helpers/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/transfer/src/transfer-panel.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/transfer/src/transfer.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/transfer/src/transfer.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/transfer/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tree/src/model/usedragnode.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tree/src/tree.type.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tree/src/model/tree-store.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tree/src/model/node.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tree/src/tree.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tree/src/tree.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tree/src/instance.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tree/src/tokens.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tree/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tree-select/src/instance.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tree-select/src/tree-select.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tree-select/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tree-v2/src/virtual-tree.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tree-v2/src/types.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tree-v2/src/tree.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tree-v2/src/instance.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tree-v2/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/upload/src/ajax.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/upload/src/upload.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/upload/src/upload.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/upload/src/upload-content.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/upload/src/upload-content.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/upload/src/upload-list.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/upload/src/upload-list.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/upload/src/upload-dragger.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/upload/src/upload-dragger.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/upload/src/constants.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/upload/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/watermark/src/watermark.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/watermark/src/watermark.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/watermark/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tour/src/content.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tour/src/types.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tour/src/tour.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tour/src/tour.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tour/src/step.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tour/src/step.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tour/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/segmented/src/types.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/segmented/src/segmented.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/segmented/src/segmented.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/segmented/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/mention/src/types.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/mention/src/helper.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/mention/src/mention.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/mention/src/mention.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/mention/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/splitter/src/type.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/splitter/src/splitter.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/splitter/src/splitter.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/splitter/src/split-panel.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/splitter/src/split-panel.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/splitter/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/infinite-scroll/src/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/infinite-scroll/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/loading/src/types.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/loading/src/loading.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/loading/src/service.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/loading/src/directive.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/loading/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/message-box/src/message-box.type.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/message-box/src/messagebox.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/message-box/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/notification/src/notification.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/notification/src/notification.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/notification/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/popover/src/popover.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/popover/src/popover.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/popover/src/directive.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/popover/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/autocomplete/src/autocomplete.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/autocomplete/src/autocomplete.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/autocomplete/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/defaults.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/directives/click-outside/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/directives/repeat-click/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/directives/trap-focus/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/directives/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/make-installer.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/index.d.ts","./src/utils/feedback.ts","./src/layout/default/components/header/user-drop-down.vue","./src/layout/default/components/header/index.vue","./src/layout/default/components/main.vue","./src/layout/default/components/sidebar/logo.vue","./src/utils/util.ts","./src/layout/default/components/sidebar/menu-item.vue","./src/layout/default/components/sidebar/menu.vue","./src/layout/default/components/sidebar/side.vue","./src/layout/default/components/sidebar/index.vue","./src/layout/default/index.vue","./src/views/error/components/error.vue","./src/views/error/404.vue","./src/views/error/403.vue","./src/hooks/uselockfn.ts","./src/layout/components/footer.vue","./src/views/account/login.vue","./src/views/account/change-password.vue","./src/utils/wecomoauthpostmessage.ts","./src/views/account/bind-work-wechat.vue","./src/views/user/setting.vue","./node_modules/dayjs/locale/types.d.ts","./node_modules/dayjs/locale/index.d.ts","./node_modules/dayjs/index.d.ts","./src/api/doctor.ts","./src/views/doctor/progress.vue","./src/api/decoration.ts","./src/views/decoration/component/widgets/index.ts","./src/views/decoration/component/pages/preview-pc.vue","./src/views/decoration/pc_details.vue","./src/api/fans.ts","./src/views/fans/h5.vue","./src/api/tcm.ts","./src/api/order.ts","./src/api/channel/weapp.ts","./src/hooks/usepaging.ts","./src/utils/perm.ts","./node_modules/.pnpm/vue-demi@0.13.11_vue@3.5.33_typescript@5.7.3_/node_modules/vue-demi/lib/index.d.ts","./node_modules/.pnpm/echarts@5.6.0/node_modules/echarts/types/dist/shared.d.ts","./node_modules/.pnpm/echarts@5.6.0/node_modules/echarts/types/dist/core.d.ts","./node_modules/.pnpm/echarts@5.6.0/node_modules/echarts/core.d.ts","./node_modules/.pnpm/echarts@5.6.0/node_modules/echarts/types/dist/echarts.d.ts","./node_modules/.pnpm/echarts@5.6.0/node_modules/echarts/index.d.ts","./node_modules/.pnpm/vue-echarts@6.7.3_@vue+runt_9e349b8fe817591c55152dc2c2ed6abf/node_modules/vue-echarts/dist/index.d.ts","./src/views/tcm/diagnosis/components/diagnosistodolist.vue","./src/utils/blood-thresholds.ts","./src/views/tcm/diagnosis/components/dailymatrix.vue","./src/views/tcm/diagnosis/components/caserecordlist.vue","./node_modules/.pnpm/hls.js@1.6.17/node_modules/hls.js/dist/hls.d.mts","./src/views/tcm/diagnosis/components/recordingvideoplayer.vue","./src/views/tcm/diagnosis/components/recordingplaybackblock.vue","./node_modules/.pnpm/cos-js-sdk-v5@1.10.1/node_modules/cos-js-sdk-v5/index.d.ts","./src/api/file.ts","./src/utils/oss-direct-upload.ts","./src/components/upload/index.vue","./src/views/tcm/diagnosis/components/callrecordpanel.vue","./src/utils/im-business-message-parse.ts","./src/views/tcm/diagnosis/components/imchatrecordpanel.vue","./src/views/tcm/diagnosis/components/assignlogpanel.vue","./src/views/tcm/diagnosis/components/appointmentrecordpanel.vue","./src/api/patient.ts","./src/views/patient/reception/components/notetimeline.vue","./src/views/tcm/diagnosis/components/trackingnotetimeline.vue","./src/views/consumer/prescription/components/prescription-order-utils.ts","./src/views/consumer/prescription/components/prescriptionorderdetaildrawer.vue","./src/views/tcm/diagnosis/components/patientorderlist.vue","./src/api/medicine.ts","./src/components/medicine-name-select/index.vue","./src/utils/diabetes-discovery-display.ts","./src/components/prescription-slip/utils.ts","./src/components/prescription-slip/index.vue","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/core/logger.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/core/cache-storage.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/core/context.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/layout/bounds.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/dom/document-cloner.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/syntax/tokenizer.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/syntax/parser.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/types/index.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/ipropertydescriptor.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/background-clip.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/itypedescriptor.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/types/color.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/types/length-percentage.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/types/image.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/background-image.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/background-origin.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/background-position.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/background-repeat.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/background-size.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/border-radius.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/border-style.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/border-width.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/direction.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/display.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/float.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/letter-spacing.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/line-break.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/list-style-image.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/list-style-position.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/list-style-type.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/overflow.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/overflow-wrap.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/text-align.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/position.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/types/length.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/text-shadow.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/text-transform.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/transform.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/transform-origin.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/visibility.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/word-break.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/z-index.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/opacity.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/text-decoration-line.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/font-family.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/font-weight.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/font-variant.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/font-style.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/content.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/counter-increment.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/counter-reset.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/duration.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/quotes.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/box-shadow.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/paint-order.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/webkit-text-stroke-width.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/index.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/layout/text.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/dom/text-container.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/dom/element-container.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/render/vector.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/render/bezier-curve.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/render/path.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/render/bound-curves.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/render/effects.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/render/stacking-context.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/dom/replaced-elements/canvas-element-container.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/dom/replaced-elements/image-element-container.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/dom/replaced-elements/svg-element-container.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/dom/replaced-elements/index.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/render/renderer.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/render/canvas/canvas-renderer.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/index.d.ts","./node_modules/.pnpm/jspdf@2.5.2/node_modules/jspdf/types/index.d.ts","./src/components/tcm-prescription/index.vue","./src/views/tcm/diagnosis/edit.vue","./src/views/tcm/diagnosis/detail.vue","./node_modules/dayjs/plugin/isoweek.d.ts","./src/api/first_visit.ts","./src/views/tcm/diagnosis/appointment.vue","./node_modules/.pnpm/trtc-sdk-v5@5.17.1/node_modules/trtc-sdk-v5/plugins/cdn-streaming/cdn-streaming.esm.d.ts","./node_modules/.pnpm/trtc-sdk-v5@5.17.1/node_modules/trtc-sdk-v5/plugins/device-detector/device-detector.esm.d.ts","./node_modules/.pnpm/trtc-sdk-v5@5.17.1/node_modules/trtc-sdk-v5/plugins/video-effect/virtual-background/virtual-background.esm.d.ts","./node_modules/.pnpm/trtc-sdk-v5@5.17.1/node_modules/trtc-sdk-v5/plugins/video-effect/watermark/watermark.esm.d.ts","./node_modules/.pnpm/trtc-sdk-v5@5.17.1/node_modules/trtc-sdk-v5/plugins/video-effect/beauty/beauty.esm.d.ts","./node_modules/.pnpm/trtc-sdk-v5@5.17.1/node_modules/trtc-sdk-v5/plugins/video-effect/basic-beauty/basic-beauty.esm.d.ts","./node_modules/.pnpm/trtc-sdk-v5@5.17.1/node_modules/trtc-sdk-v5/plugins/cross-room/cross-room.esm.d.ts","./node_modules/.pnpm/trtc-sdk-v5@5.17.1/node_modules/trtc-sdk-v5/plugins/custom-encryption/custom-encryption.esm.d.ts","./node_modules/.pnpm/trtc-sdk-v5@5.17.1/node_modules/trtc-sdk-v5/plugins/video-effect/video-mixer/video-mixer.esm.d.ts","./node_modules/.pnpm/trtc-sdk-v5@5.17.1/node_modules/trtc-sdk-v5/plugins/small-stream-auto-switcher/small-stream-auto-switcher.esm.d.ts","./node_modules/.pnpm/trtc-sdk-v5@5.17.1/node_modules/trtc-sdk-v5/plugins/chorus/chorus.esm.d.ts","./node_modules/.pnpm/trtc-sdk-v5@5.17.1/node_modules/trtc-sdk-v5/plugins/lebplayer/lebplayer.esm.d.ts","./node_modules/.pnpm/trtc-sdk-v5@5.17.1/node_modules/trtc-sdk-v5/plugins/realtime-transcriber/realtime-transcriber.esm.d.ts","./node_modules/.pnpm/trtc-sdk-v5@5.17.1/node_modules/trtc-sdk-v5/index.d.ts","./src/views/tcm/diagnosis/components/assistantwatchcalldialog.vue","./src/views/tcm/diagnosis/index_h5.vue","./src/utils/diag-display.ts","./src/views/tcm/diagnosis/components/patientinfocard.vue","./src/views/tcm/diagnosis/components/patientcasecard.vue","./src/views/tcm/diagnosis/readonly.vue","./src/router/routes.ts","./src/router/index.ts","./src/utils/request/cancel.ts","./src/utils/request/type.d.ts","./src/utils/request/axios.ts","./src/utils/wecombindguard.ts","./src/utils/request/index.ts","./src/api/app.ts","./src/stores/modules/app.ts","./src/api/chat.ts","./src/components/chat-notify-toast/index.vue","./src/app.vue","./src/permission.ts","./src/install/index.ts","./src/main.ts","./src/api/article.ts","./src/api/asset.ts","./src/api/consumer.ts","./src/api/finance.ts","./src/api/message.ts","./src/api/pharmacy.ts","./src/api/qywx-msg.ts","./src/api/qywx.ts","./src/api/self_input_stats.ts","./src/api/stats.ts","./src/api/app/recharge.ts","./src/api/channel/h5.ts","./src/api/channel/open_setting.ts","./src/api/channel/wx_oa.ts","./src/api/org/department.ts","./src/api/org/post.ts","./src/api/perms/admin.ts","./src/api/perms/menu.ts","./src/api/perms/role.ts","./src/api/setting/dict.ts","./src/api/setting/pay.ts","./src/api/setting/search.ts","./src/api/setting/storage.ts","./src/api/setting/user.ts","./src/api/setting/website.ts","./src/api/tools/code.ts","./node_modules/.pnpm/@tencentcloud+chat-uikit-vu_f78cbc43da431f244e6b6d27ca79f135/node_modules/@tencentcloud/chat-uikit-vue3/dist/components/chat/chat.vue.d.ts","./node_modules/.pnpm/@tencentcloud+chat-uikit-vu_f78cbc43da431f244e6b6d27ca79f135/node_modules/@tencentcloud/chat-uikit-vue3/dist/components/chat/index.d.ts","./node_modules/.pnpm/@tencentcloud+chat-uikit-vu_f78cbc43da431f244e6b6d27ca79f135/node_modules/@tencentcloud/chat-uikit-vue3/dist/components/chatheader/chatheader.vue.d.ts","./node_modules/.pnpm/@tencentcloud+chat-uikit-vu_f78cbc43da431f244e6b6d27ca79f135/node_modules/@tencentcloud/chat-uikit-vue3/dist/components/chatheader/hooks/usechatheader.d.ts","./node_modules/.pnpm/@tencentcloud+chat-uikit-vu_f78cbc43da431f244e6b6d27ca79f135/node_modules/@tencentcloud/chat-uikit-vue3/dist/components/chatheader/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/types/login.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/states/loginstate.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/components/avatar/avatar.vue.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/components/avatar/constants/avatar.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/components/avatar/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/components/userpicker/type.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/components/userpicker/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/basecomp/view/view.vue.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/basecomp/view/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/components/chatsetting/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/states/uikitmodalstate/uikitmodalstate.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/states/uikitmodalstate/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/components/uikitmodal/type.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/components/uikitmodal/uikitmodal.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/components/uikitmodal/useroommodal/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/components/uikitmodal/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/subentry/common/base.d.ts","./node_modules/.pnpm/@tencentcloud+chat@3.5.9/node_modules/@tencentcloud/chat/index.d.ts","./node_modules/.pnpm/@tencentcloud+tuiroom-engine-js@3.5.2/node_modules/@tencentcloud/tuiroom-engine-js/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/types/device.d.ts","./node_modules/.pnpm/@tencentcloud+chat@3.6.6/node_modules/@tencentcloud/chat/index.d.ts","./node_modules/.pnpm/@tencentcloud+chat-uikit-engine@2.5.8/node_modules/@tencentcloud/chat-uikit-engine/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/types/message.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/hooks/useofflinepushinfo/types.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/hooks/useofflinepushinfo/useofflinepushinfo.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/hooks/useofflinepushinfo/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/types/engine.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/types/search.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/types/contact.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/types/conversation.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/types/call.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/states/groupsettingstate/types.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/types/chatsetting.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/types/types.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/types/live.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/types/stream.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/types/videomixer.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/types/audience.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/types/seat.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/types/monitor.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/types/coguest.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/types/cohost.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/types/battle.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/types/barrage.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/types/room.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/types/participant.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/types/beauty.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/types/virtualbackground.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/types/user.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/types/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/states/devicestate/devicestate.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/states/devicestate/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/hooks/useroomengine.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/components/audiosettingpanel/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/components/videosettingpanel/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/subentry/common/rtc.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/subentry/common/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/states/barragestate/barragestate.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/states/barragestate/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/states/battlestate/battlestate.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/states/battlestate/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/states/cogueststate.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/states/cohoststate/cohoststate.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/states/cohoststate/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/states/liveaudiencestate.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/states/liveliststate/liveliststate.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/states/liveliststate/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/states/livemonitorstate/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/utils/eventcenter.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/states/liveseatstate/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/states/videomixerstate/videomixerstate.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/states/videomixerstate/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/components/barrageinput/barrageinputh5.vue.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/components/barrageinput/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/components/barragelist/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/components/camerabutton/index.vue.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/components/camerabutton/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/components/coguestpanel/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/components/cohostpanel/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/components/liveaudiencelist/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/components/livelist/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/components/livemonitorview/livemonitorview.vue.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/components/livemonitorview/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/components/livescenepanel/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/components/liveview/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/components/micbutton/index.vue.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/components/micbutton/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/components/streammixer/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/subentry/live/live.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/types/asr.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/states/asrstate/asrstate.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/states/freebeautystate/freebeautystate.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/states/freebeautystate/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/states/roomparticipantstate/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/states/roomstate/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/states/virtualbackgroundstate/virtualbackgroundstate.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/states/virtualbackgroundstate/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/components/roomparticipantlist/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/components/roomparticipantview/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/components/roomview/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/components/scheduleroompanel/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/components/virtualbackgroundpanel/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/components/freebeautypanel/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/subentry/room/room.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/i18n/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/components/contactlist/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/components/conversationlist/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/components/messageinput/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/hooks/usemessageactions.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/components/messagelist/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/components/search/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/states/c2csettingstate/c2csettingstate.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/states/c2csettingstate/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/states/contactliststate/contactliststate.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/states/contactliststate/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/states/conversationliststate/conversationliststate.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/states/conversationliststate/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/states/groupsettingstate/groupsettingstate.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/states/groupsettingstate/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/states/messageactionstate/messageactionstate.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/states/messageactionstate/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/states/messageinputstate/type.d.ts","./node_modules/.pnpm/orderedmap@2.1.1/node_modules/orderedmap/dist/index.d.ts","./node_modules/.pnpm/prosemirror-model@1.25.4/node_modules/prosemirror-model/dist/index.d.ts","./node_modules/.pnpm/prosemirror-transform@1.12.0/node_modules/prosemirror-transform/dist/index.d.ts","./node_modules/.pnpm/prosemirror-view@1.41.8/node_modules/prosemirror-view/dist/index.d.ts","./node_modules/.pnpm/prosemirror-state@1.4.4/node_modules/prosemirror-state/dist/index.d.ts","./node_modules/.pnpm/@tiptap+pm@2.27.2/node_modules/@tiptap/pm/state/dist/index.d.ts","./node_modules/.pnpm/@tiptap+pm@2.27.2/node_modules/@tiptap/pm/model/dist/index.d.ts","./node_modules/.pnpm/@tiptap+pm@2.27.2/node_modules/@tiptap/pm/view/dist/index.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/eventemitter.d.ts","./node_modules/.pnpm/@tiptap+pm@2.27.2/node_modules/@tiptap/pm/transform/dist/index.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/inputrule.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/pasterule.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/node.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/mark.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/extension.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/types.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/extensionmanager.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/nodepos.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/extensions/clipboardtextserializer.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/blur.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/clearcontent.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/clearnodes.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/command.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/createparagraphnear.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/cut.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/deletecurrentnode.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/deletenode.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/deleterange.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/deleteselection.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/enter.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/exitcode.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/extendmarkrange.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/first.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/focus.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/foreach.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/insertcontent.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/insertcontentat.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/join.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/joinitembackward.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/joinitemforward.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/jointextblockbackward.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/jointextblockforward.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/keyboardshortcut.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/lift.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/liftemptyblock.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/liftlistitem.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/newlineincode.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/resetattributes.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/scrollintoview.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/selectall.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/selectnodebackward.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/selectnodeforward.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/selectparentnode.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/selecttextblockend.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/selecttextblockstart.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/setcontent.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/setmark.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/setmeta.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/setnode.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/setnodeselection.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/settextselection.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/sinklistitem.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/splitblock.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/splitlistitem.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/togglelist.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/togglemark.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/togglenode.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/togglewrap.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/undoinputrule.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/unsetallmarks.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/unsetmark.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/updateattributes.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/wrapin.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/wrapinlist.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/index.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/extensions/commands.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/extensions/drop.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/extensions/editable.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/extensions/focusevents.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/extensions/keymap.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/extensions/paste.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/extensions/tabindex.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/extensions/index.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/editor.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commandmanager.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/combinetransactionsteps.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/createchainablestate.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/createdocument.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/createnodefromcontent.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/defaultblockat.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/findchildren.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/findchildreninrange.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/findparentnode.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/findparentnodeclosesttopos.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/generatehtml.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/generatejson.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/generatetext.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/getattributes.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/getattributesfromextensions.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/getchangedranges.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/getdebugjson.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/getextensionfield.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/gethtmlfromfragment.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/getmarkattributes.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/getmarkrange.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/getmarksbetween.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/getmarktype.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/getnodeatposition.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/getnodeattributes.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/getnodetype.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/getrenderedattributes.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/getschema.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/getschemabyresolvedextensions.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/getschematypebyname.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/getschematypenamebyname.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/getsplittedattributes.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/gettext.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/gettextbetween.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/gettextcontentfromnodes.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/gettextserializersfromschema.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/injectextensionattributestoparserule.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/isactive.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/isatendofnode.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/isatstartofnode.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/isextensionrulesenabled.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/islist.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/ismarkactive.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/isnodeactive.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/isnodeempty.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/isnodeselection.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/istextselection.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/postodomrect.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/resolvefocusposition.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/rewriteunknowncontent.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/selectiontoinsertionend.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/splitextensions.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/index.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/inputrules/markinputrule.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/inputrules/nodeinputrule.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/inputrules/textblocktypeinputrule.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/inputrules/textinputrule.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/inputrules/wrappinginputrule.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/inputrules/index.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/nodeview.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/pasterules/markpasterule.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/pasterules/nodepasterule.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/pasterules/textpasterule.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/pasterules/index.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/tracker.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/utilities/callorreturn.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/utilities/caninsertnode.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/utilities/createstyletag.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/utilities/deleteprops.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/utilities/elementfromstring.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/utilities/escapeforregex.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/utilities/findduplicates.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/utilities/fromstring.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/utilities/isemptyobject.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/utilities/isfunction.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/utilities/isios.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/utilities/ismacos.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/utilities/isnumber.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/utilities/isplainobject.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/utilities/isregexp.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/utilities/issafari.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/utilities/isstring.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/utilities/mergeattributes.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/utilities/mergedeep.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/utilities/minmax.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/utilities/objectincludes.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/utilities/removeduplicates.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/utilities/index.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/index.d.ts","./node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/enums.d.ts","./node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/popperoffsets.d.ts","./node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/flip.d.ts","./node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/hide.d.ts","./node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/offset.d.ts","./node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/eventlisteners.d.ts","./node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/computestyles.d.ts","./node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/arrow.d.ts","./node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/preventoverflow.d.ts","./node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/applystyles.d.ts","./node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/types.d.ts","./node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/index.d.ts","./node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/detectoverflow.d.ts","./node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/createpopper.d.ts","./node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/popper-lite.d.ts","./node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/popper.d.ts","./node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/index.d.ts","./node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/index.d.ts","./node_modules/.pnpm/tippy.js@6.3.7/node_modules/tippy.js/index.d.ts","./node_modules/.pnpm/@tiptap+extension-bubble-me_cb4d88b0b911ecd5388577427968ef89/node_modules/@tiptap/extension-bubble-menu/dist/bubble-menu-plugin.d.ts","./node_modules/.pnpm/@tiptap+extension-bubble-me_cb4d88b0b911ecd5388577427968ef89/node_modules/@tiptap/extension-bubble-menu/dist/bubble-menu.d.ts","./node_modules/.pnpm/@tiptap+extension-bubble-me_cb4d88b0b911ecd5388577427968ef89/node_modules/@tiptap/extension-bubble-menu/dist/index.d.ts","./node_modules/.pnpm/@tiptap+vue-3@2.27.2_@tipta_58f9c9cb8880c604b8226ea71b48e5d0/node_modules/@tiptap/vue-3/dist/bubblemenu.d.ts","./node_modules/.pnpm/@tiptap+vue-3@2.27.2_@tipta_58f9c9cb8880c604b8226ea71b48e5d0/node_modules/@tiptap/vue-3/dist/editor.d.ts","./node_modules/.pnpm/@tiptap+vue-3@2.27.2_@tipta_58f9c9cb8880c604b8226ea71b48e5d0/node_modules/@tiptap/vue-3/dist/editorcontent.d.ts","./node_modules/.pnpm/@tiptap+extension-floating-_8ade271869755387a8482cceb81d75f6/node_modules/@tiptap/extension-floating-menu/dist/floating-menu-plugin.d.ts","./node_modules/.pnpm/@tiptap+extension-floating-_8ade271869755387a8482cceb81d75f6/node_modules/@tiptap/extension-floating-menu/dist/floating-menu.d.ts","./node_modules/.pnpm/@tiptap+extension-floating-_8ade271869755387a8482cceb81d75f6/node_modules/@tiptap/extension-floating-menu/dist/index.d.ts","./node_modules/.pnpm/@tiptap+vue-3@2.27.2_@tipta_58f9c9cb8880c604b8226ea71b48e5d0/node_modules/@tiptap/vue-3/dist/floatingmenu.d.ts","./node_modules/.pnpm/@tiptap+vue-3@2.27.2_@tipta_58f9c9cb8880c604b8226ea71b48e5d0/node_modules/@tiptap/vue-3/dist/nodeviewcontent.d.ts","./node_modules/.pnpm/@tiptap+vue-3@2.27.2_@tipta_58f9c9cb8880c604b8226ea71b48e5d0/node_modules/@tiptap/vue-3/dist/nodeviewwrapper.d.ts","./node_modules/.pnpm/@tiptap+vue-3@2.27.2_@tipta_58f9c9cb8880c604b8226ea71b48e5d0/node_modules/@tiptap/vue-3/dist/useeditor.d.ts","./node_modules/.pnpm/@tiptap+vue-3@2.27.2_@tipta_58f9c9cb8880c604b8226ea71b48e5d0/node_modules/@tiptap/vue-3/dist/vuenodeviewrenderer.d.ts","./node_modules/.pnpm/@tiptap+vue-3@2.27.2_@tipta_58f9c9cb8880c604b8226ea71b48e5d0/node_modules/@tiptap/vue-3/dist/vuerenderer.d.ts","./node_modules/.pnpm/@tiptap+vue-3@2.27.2_@tipta_58f9c9cb8880c604b8226ea71b48e5d0/node_modules/@tiptap/vue-3/dist/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/states/messageinputstate/messageinputstate.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/states/messageinputstate/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/states/messageliststate/messageliststate.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/states/messageliststate/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/subentry/chat/chat.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_fc6d7901627ffa37cce9ed5237679065/node_modules/tuikit-atomicx-vue3/dist/subentry/chat/index.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/constants/interface.d.ts","./node_modules/.pnpm/i18next@23.15.1/node_modules/i18next/typescript/helpers.d.ts","./node_modules/.pnpm/i18next@23.15.1/node_modules/i18next/typescript/options.d.ts","./node_modules/.pnpm/i18next@23.15.1/node_modules/i18next/typescript/t.d.ts","./node_modules/.pnpm/i18next@23.15.1/node_modules/i18next/index.d.ts","./node_modules/.pnpm/i18next@23.15.1/node_modules/i18next/index.d.mts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/providers/uikitprovider/i18n/index.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/providers/uikitprovider/contexts/languageprovider/uselanguageprovider.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/providers/uikitprovider/contexts/languageprovider/languageprovider.vue.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/providers/uikitprovider/contexts/languageprovider/index.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/providers/uikitprovider/contexts/stylepresetprovider/interface.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/providers/uikitprovider/contexts/stylepresetprovider/stylepresetprovider.vue.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/providers/uikitprovider/contexts/stylepresetprovider/usestylepresetprovider.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/providers/uikitprovider/contexts/stylepresetprovider/index.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/providers/uikitprovider/contexts/uikitprovider/uikitprovider.vue.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/providers/uikitprovider/contexts/uikitprovider/useuikitprovider.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/providers/uikitprovider/index.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/button/types.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/button/index.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/dialog/type.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/dialog/dialog.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/dialog/index.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/drawer/types.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/drawer/index.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/dropdown/types.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/dropdown/index.vue.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/dropdown/dropdownitem.vue.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/dropdown/index.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/icon/index.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/messagebox/i18n/en-us/index.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/messagebox/i18n/zh-cn/index.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/messagebox/i18n/index.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/messagebox/type.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/messagebox/index.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/badge/types.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/badge/index.vue.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/badge/index.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/input/types.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/input/index.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/select/index.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/option/index.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/switch/types.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/switch/index.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/slider/index.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/swiper/type.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/swiper/index.vue.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/swiper/swiperitem.vue.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/swiper/index.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/toast/type.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/toast/index.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/watermark/index.vue.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/watermark/index.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/popup/type.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/popup/index.vue.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/popup/index.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/hooks/usecomponent.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/hooks/index.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/utils/utils.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/index.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/directives/loading/index.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/directives/index.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/index.d.ts","./node_modules/.pnpm/@tencentcloud+chat-uikit-vu_f78cbc43da431f244e6b6d27ca79f135/node_modules/@tencentcloud/chat-uikit-vue3/dist/index.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/constants/interface.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/node_modules/i18next/typescript/helpers.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/node_modules/i18next/typescript/options.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/node_modules/i18next/typescript/t.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/node_modules/i18next/index.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/node_modules/i18next/index.d.mts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/providers/uikitprovider/i18n/index.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/providers/uikitprovider/contexts/languageprovider/uselanguageprovider.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/providers/uikitprovider/contexts/languageprovider/languageprovider.vue.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/providers/uikitprovider/contexts/languageprovider/index.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/providers/uikitprovider/contexts/uikitprovider/uikitprovider.vue.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/providers/uikitprovider/contexts/uikitprovider/useuikitprovider.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/providers/uikitprovider/index.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/button/types.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/button/index.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/dialog/type.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/dialog/dialog.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/dialog/index.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/drawer/types.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/drawer/index.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/dropdown/types.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/dropdown/index.vue.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/dropdown/dropdownitem.vue.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/dropdown/index.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/icon/index.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/messagebox/i18n/en-us/index.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/messagebox/i18n/zh-cn/index.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/messagebox/i18n/index.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/messagebox/type.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/messagebox/index.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/badge/types.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/badge/index.vue.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/badge/index.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/input/types.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/input/index.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/select/index.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/option/index.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/switch/types.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/switch/index.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/slider/index.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/swiper/type.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/swiper/index.vue.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/swiper/swiperitem.vue.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/swiper/index.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/toast/type.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/toast/index.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/watermark/index.vue.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/watermark/index.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/popup/type.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/popup/index.vue.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/popup/index.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/hooks/usecomponent.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/hooks/index.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/utils/utils.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/index.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/directives/loading/index.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/directives/index.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/index.d.ts","./src/components/sidetab.vue","./src/components/app-link/index.vue","./src/components/chat-dialog/chatmessageitem.vue","./src/utils/call-local-recorder.ts","./src/utils/call-video-screenshot.ts","./src/utils/tuicall-error.ts","./node_modules/@tencentcloud/chat/index.d.ts","./node_modules/@tencentcloud/chat-uikit-engine/index.d.ts","./src/utils/im-call-hangup-detect.ts","./node_modules/.pnpm/@tencentcloud+call-uikit-vue@4.0.12/node_modules/@tencentcloud/call-uikit-vue/types/tuicallservice/const/call.d.ts","./node_modules/.pnpm/@tencentcloud+call-uikit-vue@4.0.12/node_modules/@tencentcloud/call-uikit-vue/types/tuicallservice/const/error.d.ts","./node_modules/.pnpm/@tencentcloud+call-uikit-vue@4.0.12/node_modules/@tencentcloud/call-uikit-vue/types/tuicallservice/const/log.d.ts","./node_modules/.pnpm/@tencentcloud+call-uikit-vue@4.0.12/node_modules/@tencentcloud/call-uikit-vue/types/tuicallservice/const/index.d.ts","./node_modules/.pnpm/@tencentcloud+call-uikit-vue@4.0.12/node_modules/@tencentcloud/call-uikit-vue/types/tuicallservice/interface/icallservice.d.ts","./node_modules/.pnpm/@tencentcloud+call-uikit-vue@4.0.12/node_modules/@tencentcloud/call-uikit-vue/types/tuicallservice/interface/icallstore.d.ts","./node_modules/.pnpm/@tencentcloud+call-uikit-vue@4.0.12/node_modules/@tencentcloud/call-uikit-vue/types/tuicallservice/interface/ituiglobal.d.ts","./node_modules/.pnpm/@tencentcloud+call-uikit-vue@4.0.12/node_modules/@tencentcloud/call-uikit-vue/types/tuicallservice/interface/ituistore.d.ts","./node_modules/.pnpm/@tencentcloud+call-uikit-vue@4.0.12/node_modules/@tencentcloud/call-uikit-vue/types/tuicallservice/interface/index.d.ts","./node_modules/.pnpm/@tencentcloud+call-uikit-vue@4.0.12/node_modules/@tencentcloud/call-uikit-vue/types/tuicallservice/callservice/uidesign.d.ts","./node_modules/.pnpm/@tencentcloud+call-uikit-vue@4.0.12/node_modules/@tencentcloud/call-uikit-vue/types/tuicallservice/callservice/index.d.ts","./node_modules/.pnpm/@tencentcloud+call-uikit-vue@4.0.12/node_modules/@tencentcloud/call-uikit-vue/types/tuicallservice/locales/index.d.ts","./node_modules/.pnpm/@tencentcloud+call-uikit-vue@4.0.12/node_modules/@tencentcloud/call-uikit-vue/types/tuicallservice/index.d.ts","./node_modules/.pnpm/@tencentcloud+call-uikit-vue@4.0.12/node_modules/@tencentcloud/call-uikit-vue/types/index.d.ts","./node_modules/@tencentcloud/call-engine-js/index.d.ts","./src/components/chat-dialog/index.vue","./src/components/color-picker/index.vue","./src/components/daterange-picker/index.vue","./src/components/del-wrap/index.vue","./src/components/dict-value/index.vue","./node_modules/.pnpm/@wangeditor+editor@5.1.23/node_modules/@wangeditor/editor/dist/editor/src/utils/browser-polyfill.d.ts","./node_modules/.pnpm/@wangeditor+editor@5.1.23/node_modules/@wangeditor/editor/dist/editor/src/utils/node-polyfill.d.ts","./node_modules/.pnpm/@wangeditor+editor@5.1.23/node_modules/@wangeditor/editor/dist/editor/src/locale/index.d.ts","./node_modules/.pnpm/@wangeditor+editor@5.1.23/node_modules/@wangeditor/editor/dist/editor/src/register-builtin-modules/index.d.ts","./node_modules/.pnpm/@wangeditor+editor@5.1.23/node_modules/@wangeditor/editor/dist/editor/src/init-default-config/index.d.ts","./node_modules/.pnpm/slate@0.72.0/node_modules/slate/dist/create-editor.d.ts","./node_modules/.pnpm/slate@0.72.0/node_modules/slate/dist/interfaces/element.d.ts","./node_modules/.pnpm/slate@0.72.0/node_modules/slate/dist/interfaces/node.d.ts","./node_modules/.pnpm/slate@0.72.0/node_modules/slate/dist/interfaces/editor.d.ts","./node_modules/.pnpm/slate@0.72.0/node_modules/slate/dist/interfaces/location.d.ts","./node_modules/.pnpm/slate@0.72.0/node_modules/slate/dist/interfaces/operation.d.ts","./node_modules/.pnpm/slate@0.72.0/node_modules/slate/dist/interfaces/path.d.ts","./node_modules/.pnpm/slate@0.72.0/node_modules/slate/dist/interfaces/path-ref.d.ts","./node_modules/.pnpm/slate@0.72.0/node_modules/slate/dist/interfaces/point.d.ts","./node_modules/.pnpm/slate@0.72.0/node_modules/slate/dist/interfaces/point-ref.d.ts","./node_modules/.pnpm/slate@0.72.0/node_modules/slate/dist/interfaces/range.d.ts","./node_modules/.pnpm/slate@0.72.0/node_modules/slate/dist/interfaces/range-ref.d.ts","./node_modules/.pnpm/slate@0.72.0/node_modules/slate/dist/interfaces/custom-types.d.ts","./node_modules/.pnpm/slate@0.72.0/node_modules/slate/dist/interfaces/text.d.ts","./node_modules/.pnpm/slate@0.72.0/node_modules/slate/dist/transforms/general.d.ts","./node_modules/.pnpm/slate@0.72.0/node_modules/slate/dist/transforms/node.d.ts","./node_modules/.pnpm/slate@0.72.0/node_modules/slate/dist/transforms/selection.d.ts","./node_modules/.pnpm/slate@0.72.0/node_modules/slate/dist/transforms/text.d.ts","./node_modules/.pnpm/slate@0.72.0/node_modules/slate/dist/transforms/index.d.ts","./node_modules/.pnpm/slate@0.72.0/node_modules/slate/dist/index.d.ts","./node_modules/.pnpm/snabbdom@3.6.3/node_modules/snabbdom/build/htmldomapi.d.ts","./node_modules/.pnpm/snabbdom@3.6.3/node_modules/snabbdom/build/helpers/attachto.d.ts","./node_modules/.pnpm/snabbdom@3.6.3/node_modules/snabbdom/build/modules/style.d.ts","./node_modules/.pnpm/snabbdom@3.6.3/node_modules/snabbdom/build/modules/eventlisteners.d.ts","./node_modules/.pnpm/snabbdom@3.6.3/node_modules/snabbdom/build/modules/attributes.d.ts","./node_modules/.pnpm/snabbdom@3.6.3/node_modules/snabbdom/build/modules/class.d.ts","./node_modules/.pnpm/snabbdom@3.6.3/node_modules/snabbdom/build/modules/props.d.ts","./node_modules/.pnpm/snabbdom@3.6.3/node_modules/snabbdom/build/modules/dataset.d.ts","./node_modules/.pnpm/snabbdom@3.6.3/node_modules/snabbdom/build/vnode.d.ts","./node_modules/.pnpm/snabbdom@3.6.3/node_modules/snabbdom/build/hooks.d.ts","./node_modules/.pnpm/snabbdom@3.6.3/node_modules/snabbdom/build/modules/module.d.ts","./node_modules/.pnpm/snabbdom@3.6.3/node_modules/snabbdom/build/init.d.ts","./node_modules/.pnpm/snabbdom@3.6.3/node_modules/snabbdom/build/thunk.d.ts","./node_modules/.pnpm/snabbdom@3.6.3/node_modules/snabbdom/build/is.d.ts","./node_modules/.pnpm/snabbdom@3.6.3/node_modules/snabbdom/build/tovnode.d.ts","./node_modules/.pnpm/snabbdom@3.6.3/node_modules/snabbdom/build/h.d.ts","./node_modules/.pnpm/snabbdom@3.6.3/node_modules/snabbdom/build/jsx.d.ts","./node_modules/.pnpm/snabbdom@3.6.3/node_modules/snabbdom/build/index.d.ts","./node_modules/.pnpm/@types+event-emitter@0.3.5/node_modules/@types/event-emitter/index.d.ts","./node_modules/.pnpm/dom7@3.0.0/node_modules/dom7/dom7.d.ts","./node_modules/.pnpm/@wangeditor+core@1.1.19_@up_585ce3e2c6aab8ba5d7bc1a654d2a2a0/node_modules/@wangeditor/core/dist/core/src/utils/dom.d.ts","./node_modules/.pnpm/@wangeditor+core@1.1.19_@up_585ce3e2c6aab8ba5d7bc1a654d2a2a0/node_modules/@wangeditor/core/dist/core/src/menus/interface.d.ts","./node_modules/.pnpm/@wangeditor+core@1.1.19_@up_585ce3e2c6aab8ba5d7bc1a654d2a2a0/node_modules/@wangeditor/core/dist/core/src/config/interface.d.ts","./node_modules/.pnpm/@wangeditor+core@1.1.19_@up_585ce3e2c6aab8ba5d7bc1a654d2a2a0/node_modules/@wangeditor/core/dist/core/src/editor/interface.d.ts","./node_modules/.pnpm/@wangeditor+core@1.1.19_@up_585ce3e2c6aab8ba5d7bc1a654d2a2a0/node_modules/@wangeditor/core/dist/core/src/render/index.d.ts","./node_modules/.pnpm/@wangeditor+core@1.1.19_@up_585ce3e2c6aab8ba5d7bc1a654d2a2a0/node_modules/@wangeditor/core/dist/core/src/to-html/index.d.ts","./node_modules/.pnpm/@wangeditor+core@1.1.19_@up_585ce3e2c6aab8ba5d7bc1a654d2a2a0/node_modules/@wangeditor/core/dist/core/src/parse-html/index.d.ts","./node_modules/.pnpm/@wangeditor+core@1.1.19_@up_585ce3e2c6aab8ba5d7bc1a654d2a2a0/node_modules/@wangeditor/core/dist/core/src/menus/bar/toolbar.d.ts","./node_modules/.pnpm/@wangeditor+core@1.1.19_@up_585ce3e2c6aab8ba5d7bc1a654d2a2a0/node_modules/@wangeditor/core/dist/core/src/menus/register.d.ts","./node_modules/.pnpm/@wangeditor+core@1.1.19_@up_585ce3e2c6aab8ba5d7bc1a654d2a2a0/node_modules/@wangeditor/core/dist/core/src/menus/panel-and-modal/baseclass.d.ts","./node_modules/.pnpm/@wangeditor+core@1.1.19_@up_585ce3e2c6aab8ba5d7bc1a654d2a2a0/node_modules/@wangeditor/core/dist/core/src/menus/panel-and-modal/modal.d.ts","./node_modules/.pnpm/@wangeditor+core@1.1.19_@up_585ce3e2c6aab8ba5d7bc1a654d2a2a0/node_modules/@wangeditor/core/dist/core/src/menus/index.d.ts","./node_modules/.pnpm/slate-history@0.66.0_slate@0.72.0/node_modules/slate-history/dist/history.d.ts","./node_modules/.pnpm/slate-history@0.66.0_slate@0.72.0/node_modules/slate-history/dist/history-editor.d.ts","./node_modules/.pnpm/slate-history@0.66.0_slate@0.72.0/node_modules/slate-history/dist/with-history.d.ts","./node_modules/.pnpm/slate-history@0.66.0_slate@0.72.0/node_modules/slate-history/dist/index.d.ts","./node_modules/.pnpm/@wangeditor+core@1.1.19_@up_585ce3e2c6aab8ba5d7bc1a654d2a2a0/node_modules/@wangeditor/core/dist/core/src/create/create-editor.d.ts","./node_modules/.pnpm/@wangeditor+core@1.1.19_@up_585ce3e2c6aab8ba5d7bc1a654d2a2a0/node_modules/@wangeditor/core/dist/core/src/create/create-toolbar.d.ts","./node_modules/.pnpm/@wangeditor+core@1.1.19_@up_585ce3e2c6aab8ba5d7bc1a654d2a2a0/node_modules/@wangeditor/core/dist/core/src/create/index.d.ts","./node_modules/.pnpm/@wangeditor+core@1.1.19_@up_585ce3e2c6aab8ba5d7bc1a654d2a2a0/node_modules/@wangeditor/core/dist/core/src/utils/key.d.ts","./node_modules/.pnpm/@wangeditor+core@1.1.19_@up_585ce3e2c6aab8ba5d7bc1a654d2a2a0/node_modules/@wangeditor/core/dist/core/src/text-area/textarea.d.ts","./node_modules/.pnpm/@wangeditor+core@1.1.19_@up_585ce3e2c6aab8ba5d7bc1a654d2a2a0/node_modules/@wangeditor/core/dist/core/src/menus/bar/hoverbar.d.ts","./node_modules/.pnpm/@wangeditor+core@1.1.19_@up_585ce3e2c6aab8ba5d7bc1a654d2a2a0/node_modules/@wangeditor/core/dist/core/src/editor/dom-editor.d.ts","./node_modules/.pnpm/@uppy+utils@4.1.3/node_modules/@uppy/utils/types/index.d.ts","./node_modules/.pnpm/@uppy+core@2.3.4/node_modules/@uppy/core/types/index.d.ts","./node_modules/.pnpm/@wangeditor+core@1.1.19_@up_585ce3e2c6aab8ba5d7bc1a654d2a2a0/node_modules/@wangeditor/core/dist/core/src/upload/interface.d.ts","./node_modules/.pnpm/@wangeditor+core@1.1.19_@up_585ce3e2c6aab8ba5d7bc1a654d2a2a0/node_modules/@wangeditor/core/dist/core/src/upload/createuploader.d.ts","./node_modules/.pnpm/@wangeditor+core@1.1.19_@up_585ce3e2c6aab8ba5d7bc1a654d2a2a0/node_modules/@wangeditor/core/dist/core/src/upload/index.d.ts","./node_modules/.pnpm/i18next@20.4.0/node_modules/i18next/index.d.ts","./node_modules/.pnpm/@wangeditor+core@1.1.19_@up_585ce3e2c6aab8ba5d7bc1a654d2a2a0/node_modules/@wangeditor/core/dist/core/src/i18n/index.d.ts","./node_modules/.pnpm/@wangeditor+core@1.1.19_@up_585ce3e2c6aab8ba5d7bc1a654d2a2a0/node_modules/@wangeditor/core/dist/core/src/index.d.ts","./node_modules/.pnpm/@wangeditor+editor@5.1.23/node_modules/@wangeditor/editor/dist/editor/src/boot.d.ts","./node_modules/.pnpm/@wangeditor+editor@5.1.23/node_modules/@wangeditor/editor/dist/editor/src/utils/dom.d.ts","./node_modules/.pnpm/@wangeditor+editor@5.1.23/node_modules/@wangeditor/editor/dist/editor/src/create.d.ts","./node_modules/.pnpm/@wangeditor+editor@5.1.23/node_modules/@wangeditor/editor/dist/editor/src/index.d.ts","./node_modules/.pnpm/vuedraggable@4.1.0_vue@3.5.33_typescript@5.7.3_/node_modules/vuedraggable/src/vuedraggable.d.ts","./src/components/popup/index.vue","./src/components/material/file.vue","./src/components/material/hook.ts","./src/components/material/preview.vue","./src/components/material/index.vue","./src/components/material/picker.vue","./src/components/editor/index.vue","./src/components/export-data/index.vue","./src/components/footer-btns/index.vue","./src/components/icon/index.ts","./src/components/icon/svg-icon.vue","./src/components/icon/index.vue","./src/components/icon/picker.vue","./src/components/image-contain/index.vue","./src/components/link/index.ts","./src/components/link/article-list.vue","./src/components/link/custom-link.vue","./src/components/link/mini-program.vue","./src/components/link/shop-pages.vue","./src/components/link/index.vue","./src/components/link/picker.vue","./src/hooks/uselisttimefilter.ts","./src/components/list-time-filter/index.vue","./src/components/overflow-tooltip/index.vue","./src/components/pagination/index.vue","./src/components/popover-input/index.vue","./node_modules/.pnpm/@trtc+calls-uikit-vue@4.5.0/node_modules/@trtc/calls-uikit-vue/types/tuicallservice/const/call.d.ts","./node_modules/.pnpm/@trtc+calls-uikit-vue@4.5.0/node_modules/@trtc/calls-uikit-vue/types/tuicallservice/const/error.d.ts","./node_modules/.pnpm/@trtc+calls-uikit-vue@4.5.0/node_modules/@trtc/calls-uikit-vue/types/tuicallservice/const/log.d.ts","./node_modules/.pnpm/@trtc+calls-uikit-vue@4.5.0/node_modules/@trtc/calls-uikit-vue/types/tuicallservice/const/index.d.ts","./node_modules/.pnpm/@trtc+calls-uikit-vue@4.5.0/node_modules/@trtc/calls-uikit-vue/types/tuicallservice/interface/icallservice.d.ts","./node_modules/.pnpm/@trtc+calls-uikit-vue@4.5.0/node_modules/@trtc/calls-uikit-vue/types/tuicallservice/interface/icallstore.d.ts","./node_modules/.pnpm/@trtc+calls-uikit-vue@4.5.0/node_modules/@trtc/calls-uikit-vue/types/tuicallservice/interface/ituiglobal.d.ts","./node_modules/.pnpm/@trtc+calls-uikit-vue@4.5.0/node_modules/@trtc/calls-uikit-vue/types/tuicallservice/interface/ituistore.d.ts","./node_modules/.pnpm/@trtc+calls-uikit-vue@4.5.0/node_modules/@trtc/calls-uikit-vue/types/tuicallservice/interface/index.d.ts","./node_modules/.pnpm/@trtc+calls-uikit-vue@4.5.0/node_modules/@trtc/calls-uikit-vue/types/tuicallservice/callservice/uidesign.d.ts","./node_modules/.pnpm/@trtc+calls-uikit-vue@4.5.0/node_modules/@trtc/calls-uikit-vue/types/tuicallservice/callservice/index.d.ts","./node_modules/.pnpm/@trtc+calls-uikit-vue@4.5.0/node_modules/@trtc/calls-uikit-vue/types/tuicallservice/locales/index.d.ts","./node_modules/.pnpm/@trtc+calls-uikit-vue@4.5.0/node_modules/@trtc/calls-uikit-vue/types/tuicallservice/index.d.ts","./node_modules/.pnpm/@trtc+calls-uikit-vue@4.5.0/node_modules/@trtc/calls-uikit-vue/types/index.d.ts","./src/components/video-call/index.vue","./src/hooks/usedictoptions.ts","./node_modules/.pnpm/vue-clipboard3@2.0.0/node_modules/vue-clipboard3/dist/esm/index.d.ts","./src/install/directives/copy.ts","./src/install/directives/perms.ts","./node_modules/.pnpm/echarts@5.6.0/node_modules/echarts/types/dist/charts.d.ts","./node_modules/.pnpm/echarts@5.6.0/node_modules/echarts/charts.d.ts","./node_modules/.pnpm/echarts@5.6.0/node_modules/echarts/types/dist/components.d.ts","./node_modules/.pnpm/echarts@5.6.0/node_modules/echarts/components.d.ts","./node_modules/.pnpm/echarts@5.6.0/node_modules/echarts/types/dist/features.d.ts","./node_modules/.pnpm/echarts@5.6.0/node_modules/echarts/features.d.ts","./node_modules/.pnpm/echarts@5.6.0/node_modules/echarts/types/dist/renderers.d.ts","./node_modules/.pnpm/echarts@5.6.0/node_modules/echarts/renderers.d.ts","./src/install/plugins/echart.ts","./src/install/plugins/element.ts","./node_modules/.pnpm/@highlightjs+vue-plugin@2.1_297347e077cdaa3fb4c77d862f4e02c2/node_modules/@highlightjs/vue-plugin/dist/vue.d.ts","./node_modules/.pnpm/highlight.js@11.11.1/node_modules/highlight.js/types/index.d.ts","./src/install/plugins/hljs.ts","./src/stores/index.ts","./src/install/plugins/pinia.ts","./src/router/guard/index.ts","./src/install/plugins/router.ts","./src/install/plugins/tuikit.ts","./src/router/guard/init.ts","./src/utils/checkhttps.ts","./src/utils/env.ts","./src/utils/getexposetype.ts","./src/views/app/recharge/index.vue","./src/views/article/column/edit.vue","./src/views/article/column/index.vue","./src/views/article/lists/edit.vue","./src/views/article/lists/index.vue","./src/views/asset/resource/index.vue","./src/views/asset/user/index.vue","./src/views/channel/h5.vue","./src/views/channel/open_setting.vue","./src/views/channel/weapp.vue","./src/views/channel/wx_oa/config.vue","./src/views/channel/wx_oa/menu_com/usemenuoa.ts","./src/views/channel/wx_oa/menu_com/oa-menu-form.vue","./src/views/channel/wx_oa/menu_com/oa-menu-form-edit.vue","./src/views/channel/wx_oa/menu_com/oa-attr.vue","./src/views/channel/wx_oa/menu_com/oa-phone.vue","./src/views/channel/wx_oa/menu.vue","./src/views/channel/wx_oa/reply/edit.vue","./src/views/channel/wx_oa/reply/default_reply.vue","./src/views/channel/wx_oa/reply/follow_reply.vue","./src/views/channel/wx_oa/reply/keyword_reply.vue","./src/views/chat/components/messagebubble.vue","./src/views/chat/components/sendpanel.vue","./src/views/chat/index.vue","./src/views/consumer/assistant/edit.vue","./src/views/consumer/assistant/index.vue","./src/views/consumer/components/account-adjust.vue","./src/views/consumer/doctor/edit.vue","./src/views/consumer/doctor/index.vue","./src/views/consumer/doctor/paiban.vue","./src/views/consumer/lists/detail.vue","./src/views/consumer/lists/index.vue","./src/views/consumer/prescription/guahao.vue","./src/views/consumer/prescription/index.vue","./src/views/consumer/prescription/components/prescriptionaibatchgeneratedialog.vue","./src/views/consumer/prescription/components/prescriptionaireportdialog.vue","./src/views/consumer/prescription/list.vue","./src/views/consumer/prescription/components/gancaosubmissionreconcilebutton.vue","./src/views/consumer/prescription/order_list.vue","./src/views/consumer/prescription/order_list_h5.vue","./src/views/decoration/pc.vue","./src/views/decoration/component/pages/menu.vue","./src/views/decoration/component/tabbar/mobile/attr.vue","./src/views/decoration/component/decoration-img.vue","./src/views/decoration/component/tabbar/mobile/content.vue","./src/views/decoration/component/tabbar/mobile/index.ts","./src/views/decoration/tabbar.vue","./src/views/decoration/component/add-nav.vue","./src/views/decoration/component/pages/attr-setting.vue","./src/views/decoration/component/pages/preview.vue","./src/views/decoration/component/tabbar/pc/menu-set.vue","./src/views/decoration/component/tabbar/pc/attr.vue","./src/views/decoration/component/tabbar/pc/content.vue","./src/views/decoration/component/tabbar/pc/index.ts","./src/views/decoration/component/widgets/banner/options.ts","./src/views/decoration/component/widgets/banner/attr.vue","./src/views/decoration/component/widgets/banner/content.vue","./src/views/decoration/component/widgets/banner/index.ts","./src/views/decoration/component/widgets/customer-service/options.ts","./src/views/decoration/component/widgets/customer-service/attr.vue","./src/views/decoration/component/widgets/customer-service/content.vue","./src/views/decoration/component/widgets/customer-service/index.ts","./src/views/decoration/component/widgets/middle-banner/options.ts","./src/views/decoration/component/widgets/middle-banner/attr.vue","./src/views/decoration/component/widgets/middle-banner/content.vue","./src/views/decoration/component/widgets/middle-banner/index.ts","./src/views/decoration/component/widgets/my-service/options.ts","./src/views/decoration/component/widgets/my-service/attr.vue","./src/views/decoration/component/widgets/my-service/content.vue","./src/views/decoration/component/widgets/my-service/index.ts","./src/views/decoration/component/widgets/nav/options.ts","./src/views/decoration/component/widgets/nav/attr.vue","./src/views/decoration/component/widgets/nav/content.vue","./src/views/decoration/component/widgets/nav/index.ts","./src/views/decoration/component/widgets/news/options.ts","./src/views/decoration/component/widgets/news/attr.vue","./src/views/decoration/component/widgets/news/content.vue","./src/views/decoration/component/widgets/news/index.ts","./src/views/decoration/component/widgets/page-meta/options.ts","./src/views/decoration/component/widgets/page-meta/attr.vue","./src/views/decoration/component/widgets/page-meta/content.vue","./src/views/decoration/component/widgets/page-meta/index.ts","./src/views/decoration/component/widgets/pc-banner/options.ts","./src/views/decoration/component/widgets/pc-banner/content.vue","./src/views/decoration/component/widgets/pc-banner/index.ts","./src/views/decoration/component/widgets/search/options.ts","./src/views/decoration/component/widgets/search/attr.vue","./src/views/decoration/component/widgets/search/content.vue","./src/views/decoration/component/widgets/search/index.ts","./src/views/decoration/component/widgets/user-banner/options.ts","./src/views/decoration/component/widgets/user-banner/attr.vue","./src/views/decoration/component/widgets/user-banner/content.vue","./src/views/decoration/component/widgets/user-banner/index.ts","./src/views/decoration/component/widgets/user-info/options.ts","./src/views/decoration/component/widgets/user-info/attr.vue","./src/views/decoration/component/widgets/user-info/content.vue","./src/views/decoration/component/widgets/user-info/index.ts","./src/views/decoration/pages/index.vue","./src/views/decoration/style/components/theme-picker.vue","./src/views/decoration/style/components/mobile-style.vue","./src/views/decoration/style/style.vue","./src/views/dev_tools/components/relations-add.vue","./src/views/dev_tools/code/edit.vue","./src/views/dev_tools/components/code-preview.vue","./src/views/dev_tools/components/data-table.vue","./src/views/dev_tools/code/index.vue","./src/views/doctor/dept-tongji.vue","./src/views/doctor/medicine.vue","./src/views/doctor/roster.vue","./src/views/doctor/tongji.vue","./src/views/fans/commission-settlement.vue","./src/views/fans/index.vue","./src/views/fans/qywx.vue","./src/views/fans/yeji.vue","./src/views/finance/balance_details.vue","./src/views/finance/mubiao-dept-node.vue","./src/views/finance/mubiao-dept-card.vue","./src/views/finance/mubiao.vue","./src/views/finance/recharge_record.vue","./src/views/finance/component/refund-log.vue","./src/views/finance/refund_record.vue","./src/views/finance/account_cost/edit.vue","./src/views/finance/account_cost/index.vue","./src/views/first_visit/conversion/index.vue","./src/views/first_visit/doctor_dashboard/index.vue","./src/views/first_visit/my_patients/components/order-actions.ts","./src/views/first_visit/my_patients/components/orderactionhost.vue","./src/views/first_visit/my_patients/components/orderpanel.vue","./src/views/first_visit/my_patients/components/progresspanel.vue","./src/views/first_visit/my_patients/components/paibanpanel.vue","./src/views/first_visit/my_patients/index.vue","./src/views/first_visit/registration_stats/index.vue","./src/views/first_visit/wecom_promotion/components/wecom-widget-templates.ts","./src/views/first_visit/wecom_promotion/components/wecomfloatingwidgetbuilder.vue","./src/views/first_visit/wecom_promotion/index.vue","./src/views/material/index.vue","./src/views/message/notice/edit.vue","./src/views/message/notice/index.vue","./src/views/message/short_letter/edit.vue","./src/views/message/short_letter/index.vue","./src/views/order/index.vue","./src/views/organization/department/edit.vue","./src/views/organization/department/index.vue","./src/views/organization/post/edit.vue","./src/views/organization/post/index.vue","./src/views/patient/reception/index.vue","./src/views/permission/admin/edit.vue","./src/views/permission/admin/index.vue","./src/views/permission/menu/edit.vue","./src/views/permission/menu/index.vue","./src/views/permission/role/auth.vue","./src/views/permission/role/edit.vue","./src/views/permission/role/index.vue","./src/views/pharmacy/medicine_mapping/latest-request.d.mts","./src/views/pharmacy/medicine_mapping/index.vue","./src/views/setting/dict/data/edit.vue","./src/views/setting/dict/data/index.vue","./src/views/setting/dict/type/edit.vue","./src/views/setting/dict/type/index.vue","./src/views/setting/pay/config/edit.vue","./src/views/setting/pay/config/index.vue","./src/views/setting/pay/method/index.vue","./src/views/setting/search/index.vue","./src/views/setting/storage/edit.vue","./src/views/setting/storage/index.vue","./src/views/setting/system/cache.vue","./src/views/setting/system/environment.vue","./src/views/setting/system/journal.vue","./src/views/setting/system/scheduled_task/edit.vue","./src/views/setting/system/scheduled_task/index.vue","./src/views/setting/user/login_register.vue","./src/views/setting/user/setup.vue","./src/views/setting/website/filing.vue","./src/views/setting/website/information.vue","./src/views/setting/website/protocol.vue","./src/views/setting/website/statistics.vue","./src/views/stats/assistant-performance/index.vue","./src/views/stats/auto_assign_log/index.vue","./src/views/stats/conversion/index.vue","./src/views/stats/performance-dashboard/index.vue","./src/views/stats/revisit_rate/index.vue","./src/views/stats/self_input/mediasourceselect.vue","./src/views/stats/self_input/usemediasourceoptions.ts","./src/views/stats/self_input/cost-edit.vue","./src/views/stats/self_input/account_cost.vue","./src/views/stats/self_input/yeji-edit.vue","./src/views/stats/self_input/index.vue","./src/views/tcm/appointment/list.vue","./src/views/tcm/appointment/list_h5.vue","./src/views/tcm/appointment/components/prescription-drawer.vue","./src/views/tcm/diagnosis/add.vue","./src/views/tcm/diagnosis/index.vue","./src/views/tcm/diagnosis/components/bloodrecordlist.vue","./src/views/tcm/diagnosis/components/dietrecordlist.vue","./src/views/tcm/diagnosis/components/exerciserecordlist.vue","./src/views/tcm/diagnosis/components/trackingmatrix.vue","./src/views/tcm/follow/index.vue","./src/views/template/component/file.vue","./src/views/template/component/icon.vue","./src/views/template/component/link.vue","./src/views/template/component/overflow.vue","./src/views/template/component/popover_input.vue","./src/views/template/component/rich_text.vue","./src/views/template/component/upload.vue","./src/views/test/patient-call.vue","./src/views/workbench/index.vue","./components.d.ts","./auto-imports.d.ts","./typings/index.d.ts","./typings/router.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/compatibility/disposable.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/compatibility/indexable.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/compatibility/iterators.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/compatibility/index.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/globals.typedarray.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/buffer.buffer.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/globals.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/web-globals/abortcontroller.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/web-globals/domexception.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/web-globals/events.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/header.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/readable.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/file.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/fetch.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/formdata.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/connector.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/client.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/errors.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/dispatcher.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/global-dispatcher.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/global-origin.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/pool-stats.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/pool.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/handlers.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/balanced-pool.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/agent.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-interceptor.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-agent.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-client.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-pool.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-errors.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/proxy-agent.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/env-http-proxy-agent.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/retry-handler.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/retry-agent.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/api.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/interceptors.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/util.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/cookies.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/patch.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/websocket.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/eventsource.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/filereader.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/diagnostics-channel.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/content-type.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/cache.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/index.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/web-globals/fetch.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/web-globals/navigator.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/web-globals/storage.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/assert.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/assert/strict.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/async_hooks.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/buffer.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/child_process.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/cluster.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/console.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/constants.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/crypto.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/dgram.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/diagnostics_channel.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/dns.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/dns/promises.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/domain.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/events.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/fs.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/fs/promises.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/http.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/http2.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/https.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/inspector.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/inspector.generated.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/module.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/net.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/os.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/path.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/perf_hooks.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/process.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/punycode.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/querystring.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/readline.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/readline/promises.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/repl.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/sea.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/sqlite.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/stream.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/stream/promises.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/stream/consumers.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/stream/web.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/string_decoder.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/test.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/timers.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/timers/promises.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/tls.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/trace_events.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/tty.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/url.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/util.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/v8.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/vm.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/wasi.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/worker_threads.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/zlib.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/index.d.ts","./node_modules/.pnpm/@types+estree@1.0.8/node_modules/@types/estree/index.d.ts","./node_modules/.pnpm/rollup@4.60.3/node_modules/rollup/dist/rollup.d.ts","./node_modules/.pnpm/rollup@4.60.3/node_modules/rollup/dist/parseast.d.ts","./node_modules/.pnpm/vite@6.4.2_@types+node@22.1_8f5e549addd5aa700368df43e00a64dc/node_modules/vite/dist/node/modulerunnertransport.d-dj_me5sf.d.ts","./node_modules/.pnpm/vite@6.4.2_@types+node@22.1_8f5e549addd5aa700368df43e00a64dc/node_modules/vite/dist/node/module-runner.d.ts","./node_modules/.pnpm/esbuild@0.25.0/node_modules/esbuild/lib/main.d.ts","./node_modules/.pnpm/source-map-js@1.2.1/node_modules/source-map-js/source-map.d.ts","./node_modules/.pnpm/postcss@8.5.14/node_modules/postcss/lib/previous-map.d.ts","./node_modules/.pnpm/postcss@8.5.14/node_modules/postcss/lib/input.d.ts","./node_modules/.pnpm/postcss@8.5.14/node_modules/postcss/lib/css-syntax-error.d.ts","./node_modules/.pnpm/postcss@8.5.14/node_modules/postcss/lib/declaration.d.ts","./node_modules/.pnpm/postcss@8.5.14/node_modules/postcss/lib/root.d.ts","./node_modules/.pnpm/postcss@8.5.14/node_modules/postcss/lib/warning.d.ts","./node_modules/.pnpm/postcss@8.5.14/node_modules/postcss/lib/lazy-result.d.ts","./node_modules/.pnpm/postcss@8.5.14/node_modules/postcss/lib/no-work-result.d.ts","./node_modules/.pnpm/postcss@8.5.14/node_modules/postcss/lib/processor.d.ts","./node_modules/.pnpm/postcss@8.5.14/node_modules/postcss/lib/result.d.ts","./node_modules/.pnpm/postcss@8.5.14/node_modules/postcss/lib/document.d.ts","./node_modules/.pnpm/postcss@8.5.14/node_modules/postcss/lib/rule.d.ts","./node_modules/.pnpm/postcss@8.5.14/node_modules/postcss/lib/node.d.ts","./node_modules/.pnpm/postcss@8.5.14/node_modules/postcss/lib/comment.d.ts","./node_modules/.pnpm/postcss@8.5.14/node_modules/postcss/lib/container.d.ts","./node_modules/.pnpm/postcss@8.5.14/node_modules/postcss/lib/at-rule.d.ts","./node_modules/.pnpm/postcss@8.5.14/node_modules/postcss/lib/list.d.ts","./node_modules/.pnpm/postcss@8.5.14/node_modules/postcss/lib/postcss.d.ts","./node_modules/.pnpm/postcss@8.5.14/node_modules/postcss/lib/postcss.d.mts","./node_modules/.pnpm/vite@6.4.2_@types+node@22.1_8f5e549addd5aa700368df43e00a64dc/node_modules/vite/types/internal/lightningcssoptions.d.ts","./node_modules/.pnpm/sass@1.79.6/node_modules/sass/types/deprecations.d.ts","./node_modules/.pnpm/sass@1.79.6/node_modules/sass/types/util/promise_or.d.ts","./node_modules/.pnpm/sass@1.79.6/node_modules/sass/types/importer.d.ts","./node_modules/.pnpm/sass@1.79.6/node_modules/sass/types/logger/source_location.d.ts","./node_modules/.pnpm/sass@1.79.6/node_modules/sass/types/logger/source_span.d.ts","./node_modules/.pnpm/sass@1.79.6/node_modules/sass/types/logger/index.d.ts","./node_modules/.pnpm/immutable@4.3.8/node_modules/immutable/dist/immutable.d.ts","./node_modules/.pnpm/sass@1.79.6/node_modules/sass/types/value/boolean.d.ts","./node_modules/.pnpm/sass@1.79.6/node_modules/sass/types/value/calculation.d.ts","./node_modules/.pnpm/sass@1.79.6/node_modules/sass/types/value/color.d.ts","./node_modules/.pnpm/sass@1.79.6/node_modules/sass/types/value/function.d.ts","./node_modules/.pnpm/sass@1.79.6/node_modules/sass/types/value/list.d.ts","./node_modules/.pnpm/sass@1.79.6/node_modules/sass/types/value/map.d.ts","./node_modules/.pnpm/sass@1.79.6/node_modules/sass/types/value/mixin.d.ts","./node_modules/.pnpm/sass@1.79.6/node_modules/sass/types/value/number.d.ts","./node_modules/.pnpm/sass@1.79.6/node_modules/sass/types/value/string.d.ts","./node_modules/.pnpm/sass@1.79.6/node_modules/sass/types/value/argument_list.d.ts","./node_modules/.pnpm/sass@1.79.6/node_modules/sass/types/value/index.d.ts","./node_modules/.pnpm/sass@1.79.6/node_modules/sass/types/options.d.ts","./node_modules/.pnpm/sass@1.79.6/node_modules/sass/types/compile.d.ts","./node_modules/.pnpm/sass@1.79.6/node_modules/sass/types/exception.d.ts","./node_modules/.pnpm/sass@1.79.6/node_modules/sass/types/legacy/exception.d.ts","./node_modules/.pnpm/sass@1.79.6/node_modules/sass/types/legacy/plugin_this.d.ts","./node_modules/.pnpm/sass@1.79.6/node_modules/sass/types/legacy/function.d.ts","./node_modules/.pnpm/sass@1.79.6/node_modules/sass/types/legacy/importer.d.ts","./node_modules/.pnpm/sass@1.79.6/node_modules/sass/types/legacy/options.d.ts","./node_modules/.pnpm/sass@1.79.6/node_modules/sass/types/legacy/render.d.ts","./node_modules/.pnpm/sass@1.79.6/node_modules/sass/types/index.d.ts","./node_modules/.pnpm/vite@6.4.2_@types+node@22.1_8f5e549addd5aa700368df43e00a64dc/node_modules/vite/types/internal/csspreprocessoroptions.d.ts","./node_modules/.pnpm/vite@6.4.2_@types+node@22.1_8f5e549addd5aa700368df43e00a64dc/node_modules/vite/types/metadata.d.ts","./node_modules/.pnpm/vite@6.4.2_@types+node@22.1_8f5e549addd5aa700368df43e00a64dc/node_modules/vite/dist/node/index.d.ts","./node_modules/.pnpm/magic-string@0.30.21/node_modules/magic-string/dist/magic-string.es.d.mts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/typescript.d.ts","./node_modules/.pnpm/@vue+compiler-sfc@3.5.33/node_modules/@vue/compiler-sfc/dist/compiler-sfc.d.ts","./node_modules/.pnpm/vue@3.5.33_typescript@5.7.3/node_modules/vue/compiler-sfc/index.d.mts","./node_modules/.pnpm/@vitejs+plugin-vue@5.2.1_vi_26ff37bca32818ba6abc2479b735c8c5/node_modules/@vitejs/plugin-vue/dist/index.d.mts","./node_modules/.pnpm/@vue+babel-plugin-resolve-type@1.5.0_@babel+core@7.29.0/node_modules/@vue/babel-plugin-resolve-type/dist/index.d.mts","./node_modules/.pnpm/@vue+babel-plugin-jsx@1.5.0_@babel+core@7.29.0/node_modules/@vue/babel-plugin-jsx/dist/index.d.mts","./node_modules/.pnpm/@vitejs+plugin-vue-jsx@4.1._15604a3242b44866a4c8e668a8c2b0af/node_modules/@vitejs/plugin-vue-jsx/dist/index.d.mts","./node_modules/.pnpm/mlly@1.8.2/node_modules/mlly/dist/index.d.ts","./node_modules/.pnpm/unimport@4.1.1/node_modules/unimport/dist/shared/unimport.cavrr9sh.d.mts","./node_modules/.pnpm/unimport@4.1.1/node_modules/unimport/dist/shared/unimport.czoa5cgj.d.mts","./node_modules/.pnpm/js-tokens@9.0.1/node_modules/js-tokens/index.d.ts","./node_modules/.pnpm/strip-literal@3.1.0/node_modules/strip-literal/dist/index.d.mts","./node_modules/.pnpm/unimport@4.1.1/node_modules/unimport/dist/index.d.mts","./node_modules/.pnpm/unplugin-utils@0.2.5/node_modules/unplugin-utils/dist/index.d.ts","./node_modules/.pnpm/unplugin-auto-import@19.1.0_6f0c1011f66a70c739aaa005d5971cab/node_modules/unplugin-auto-import/dist/types.d.ts","./node_modules/.pnpm/unplugin-auto-import@19.1.0_6f0c1011f66a70c739aaa005d5971cab/node_modules/unplugin-auto-import/dist/vite.d.ts","./node_modules/.pnpm/webpack-virtual-modules@0.6.2/node_modules/webpack-virtual-modules/lib/index.d.ts","./node_modules/.pnpm/unplugin@2.2.0/node_modules/unplugin/dist/index.d.ts","./node_modules/.pnpm/unplugin-vue-components@28._94a912e1594e219e37a7871a02240417/node_modules/unplugin-vue-components/dist/types.d.ts","./node_modules/.pnpm/unplugin-vue-components@28._94a912e1594e219e37a7871a02240417/node_modules/unplugin-vue-components/dist/resolvers.d.ts","./node_modules/.pnpm/unplugin-vue-components@28._94a912e1594e219e37a7871a02240417/node_modules/unplugin-vue-components/dist/vite.d.ts","./node_modules/.pnpm/vite-plugin-style-import@2._963cef04d855493cf45de9418d5fb104/node_modules/vite-plugin-style-import/dist/index.d.ts","./node_modules/.pnpm/@types+svgo@2.6.4/node_modules/@types/svgo/index.d.ts","./node_modules/.pnpm/vite-plugin-svg-icons@2.0.1_832c8c32224a985848ba91788e93a372/node_modules/vite-plugin-svg-icons/dist/index.d.ts","./node_modules/.pnpm/vite-plugin-vue-setup-exten_dfd817fabadf21a508603ce199129005/node_modules/vite-plugin-vue-setup-extend/dist/index.d.ts","./vite.config.ts","./node_modules/.pnpm/@types+lodash@4.17.24/node_modules/@types/lodash/common/common.d.ts","./node_modules/.pnpm/@types+lodash@4.17.24/node_modules/@types/lodash/common/array.d.ts","./node_modules/.pnpm/@types+lodash@4.17.24/node_modules/@types/lodash/common/collection.d.ts","./node_modules/.pnpm/@types+lodash@4.17.24/node_modules/@types/lodash/common/date.d.ts","./node_modules/.pnpm/@types+lodash@4.17.24/node_modules/@types/lodash/common/function.d.ts","./node_modules/.pnpm/@types+lodash@4.17.24/node_modules/@types/lodash/common/lang.d.ts","./node_modules/.pnpm/@types+lodash@4.17.24/node_modules/@types/lodash/common/math.d.ts","./node_modules/.pnpm/@types+lodash@4.17.24/node_modules/@types/lodash/common/number.d.ts","./node_modules/.pnpm/@types+lodash@4.17.24/node_modules/@types/lodash/common/object.d.ts","./node_modules/.pnpm/@types+lodash@4.17.24/node_modules/@types/lodash/common/seq.d.ts","./node_modules/.pnpm/@types+lodash@4.17.24/node_modules/@types/lodash/common/string.d.ts","./node_modules/.pnpm/@types+lodash@4.17.24/node_modules/@types/lodash/common/util.d.ts"],"fileIdsList":[[99,103,109,868,1400,1423,2459,2462,2468,2516,2533,2534],[99,103,109,868,1400,1423,1455,1468,1471,1546,1582,2076,2077,2078,2100,2101,2102,2103,2104,2186,2187,2189,2190,2191,2192,2193,2194,2196,2197,2198,2199,2201,2202,2203,2204,2205,2206,2208,2209,2210,2211,2226,2462,2468,2516,2533,2534],[88,868,1423,2468,2516,2533,2534],[91,868,1423,2468,2516,2533,2534],[868,1423,2468,2516,2533,2534],[868,1027,1423,2468,2516,2533,2534],[868,1028,1423,2468,2516,2533,2534],[868,1027,1028,1029,1030,1031,1032,1033,1034,1035,1423,2468,2516,2533,2534],[99,103,109,868,1423,2459,2468,2516,2533,2534],[166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,868,1423,2468,2516,2533,2534],[459,868,1423,2468,2516,2533,2534],[868,985,1423,2468,2516,2533,2534],[868,986,987,1423,2468,2516,2533,2534],[868,1423,1930,2468,2516,2533,2534],[868,1423,1924,1926,2468,2516,2533,2534],[868,1423,1914,1924,1925,1927,1928,1929,2468,2516,2533,2534],[868,1423,1924,2468,2516,2533,2534],[868,1423,1914,1924,2468,2516,2533,2534],[868,1423,1915,1916,1917,1918,1919,1920,1921,1922,1923,2468,2516,2533,2534],[868,1423,1915,1919,1920,1923,1924,1927,2468,2516,2533,2534],[868,1423,1915,1916,1917,1918,1919,1920,1921,1922,1923,1924,1925,1927,1928,2468,2516,2533,2534],[868,1423,1914,1915,1916,1917,1918,1919,1920,1921,1922,1923,2468,2516,2533,2534],[825,868,1423,2468,2516,2533,2534],[819,821,868,1423,2468,2516,2533,2534],[809,819,820,822,823,824,868,1423,2468,2516,2533,2534],[819,868,1423,2468,2516,2533,2534],[809,819,868,1423,2468,2516,2533,2534],[810,811,812,813,814,815,816,817,818,868,1423,2468,2516,2533,2534],[810,814,815,818,819,822,868,1423,2468,2516,2533,2534],[810,811,812,813,814,815,816,817,818,819,820,822,823,868,1423,2468,2516,2533,2534],[809,810,811,812,813,814,815,816,817,818,868,1423,2468,2516,2533,2534],[868,1423,2097,2468,2516,2533,2534],[868,1423,2088,2089,2093,2094,2468,2516,2533,2534],[868,1423,2088,2468,2516,2533,2534],[868,1423,2085,2086,2087,2468,2516,2533,2534],[868,1423,2088,2095,2096,2468,2516,2533,2534],[868,1423,2088,2093,2468,2516,2533,2534],[868,1423,2089,2090,2091,2092,2468,2516,2533,2534],[868,1423,1638,2468,2516,2533,2534],[868,1423,1613,2468,2516,2533,2534],[868,1423,1615,1616,2468,2516,2533,2534],[868,1423,1614,1617,1954,2016,2468,2516,2533,2534],[868,1423,1635,2468,2516,2533,2534],[99,103,109,868,1423,1989,1990,2459,2468,2516,2533,2534],[99,103,109,868,1423,1989,2459,2468,2516,2533,2534],[99,103,109,868,1423,1972,2459,2468,2516,2533,2534],[99,103,109,868,1423,1974,2459,2468,2516,2533,2534],[99,103,109,868,1423,1974,1975,2459,2468,2516,2533,2534],[868,1423,1972,2468,2516,2533,2534],[99,103,109,868,1423,1977,2459,2468,2516,2533,2534],[99,103,109,868,1423,1979,2459,2468,2516,2533,2534],[99,103,109,868,1423,1979,1980,1981,2459,2468,2516,2533,2534],[868,1423,2010,2468,2516,2533,2534],[868,1423,1973,1976,1978,1982,1983,1988,1991,1993,1994,1995,1997,1998,2002,2004,2006,2009,2011,2012,2468,2516,2533,2534],[99,103,109,868,1423,1992,2459,2468,2516,2533,2534],[868,1423,1984,1985,2468,2516,2533,2534],[868,1423,1986,1987,2468,2516,2533,2534],[868,1423,2007,2008,2468,2516,2533,2534],[99,103,109,868,1423,2007,2459,2468,2516,2533,2534],[868,1423,1999,2000,2001,2468,2516,2533,2534],[99,103,109,868,1423,1999,2459,2468,2516,2533,2534],[99,103,109,868,1423,1996,2459,2468,2516,2533,2534],[99,103,109,868,1423,2003,2459,2468,2516,2533,2534],[99,103,109,868,1423,2005,2459,2468,2516,2533,2534],[99,103,109,868,1423,2014,2459,2468,2516,2533,2534],[868,1423,1961,1971,2013,2015,2468,2516,2533,2534],[868,1423,1962,1963,2468,2516,2533,2534],[99,103,109,868,1423,1962,2459,2468,2516,2533,2534],[99,103,109,868,1423,1960,1961,2459,2468,2516,2533,2534],[868,1423,1965,1966,1967,2468,2516,2533,2534],[99,103,109,868,1423,1965,2459,2468,2516,2533,2534],[99,103,109,868,1423,1955,1964,1968,2459,2468,2516,2533,2534],[99,103,109,868,1423,1955,1960,1967,2459,2468,2516,2533,2534],[868,1423,1960,2468,2516,2533,2534],[868,1423,1968,1969,1970,2468,2516,2533,2534],[868,1423,1746,1756,1824,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1760,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1760,1761,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1760,1761,1762,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1760,1761,1762,1763,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1760,1761,1762,1763,1764,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1747,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1747,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,2468,2516,2533,2534],[868,1423,1747,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1747,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1747,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1747,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1747,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1747,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1747,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1746,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1747,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1747,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1747,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1747,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1747,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1747,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1747,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1747,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1747,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1813,1814,1913,2468,2516,2533,2534],[868,1423,1747,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1814,1913,2468,2516,2533,2534],[868,1423,1747,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1913,2468,2516,2533,2534],[868,1423,1746,1747,1748,1749,1756,1757,1758,1823,2468,2516,2533,2534],[868,1423,1746,1751,1752,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1824,1913,2468,2516,2533,2534],[868,1423,1746,1747,1748,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1824,1913,2468,2516,2533,2534],[868,1423,1755,2468,2516,2533,2534],[868,1423,1755,1815,2468,2516,2533,2534],[868,1423,1746,1755,2468,2516,2533,2534],[868,1423,1759,1816,1817,1818,1819,1820,1821,1822,2468,2516,2533,2534],[868,1423,1746,1747,1750,2468,2516,2533,2534],[868,1423,1746,2468,2516,2533,2534],[868,1423,1747,1756,2468,2516,2533,2534],[868,1423,1747,2468,2516,2533,2534],[868,1423,1742,1746,1756,2468,2516,2533,2534],[868,1423,1756,2468,2516,2533,2534],[868,1423,1746,1747,2468,2516,2533,2534],[868,1423,1750,1756,2468,2516,2533,2534],[868,1423,1747,1756,1824,2468,2516,2533,2534],[868,1423,1747,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1826,1827,1828,1829,1830,1831,1832,1833,1834,1835,1836,1837,1838,1839,1840,1841,1842,1843,1844,1845,1846,1847,1848,1849,1850,1851,1852,1853,1854,1855,1856,1857,1858,1859,1860,1861,1862,1863,1864,1865,1866,1867,1868,1869,1870,1871,1872,1873,1874,1875,1876,2468,2516,2533,2534],[868,1423,1748,2468,2516,2533,2534],[868,1423,1746,1747,1756,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,2468,2516,2533,2534],[868,1423,1751,1752,1753,1754,1755,1756,1758,1823,1824,1825,1877,1883,1884,1888,1889,1912,2468,2516,2533,2534],[868,1423,1878,1879,1880,1881,1882,2468,2516,2533,2534],[868,1423,1747,1751,1756,2468,2516,2533,2534],[868,1423,1751,2468,2516,2533,2534],[868,1423,1747,1751,1756,1824,2468,2516,2533,2534],[868,1423,1746,1747,1751,1752,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1824,1913,2468,2516,2533,2534],[868,1423,1748,1756,1824,2468,2516,2533,2534],[868,1423,1885,1886,1887,2468,2516,2533,2534],[868,1423,1747,1752,1756,2468,2516,2533,2534],[868,1423,1752,2468,2516,2533,2534],[868,1423,1746,1747,1748,1750,1753,1754,1755,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1824,1913,2468,2516,2533,2534],[868,1423,1890,1891,1892,1893,1894,1895,1896,1897,1898,1899,1900,1901,1902,1903,1904,1905,1906,1907,1908,1909,1910,1911,2468,2516,2533,2534],[868,1423,1746,1748,1753,1754,1755,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,1932,2468,2516,2533,2534],[868,1423,1753,1754,1755,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,1933,2468,2516,2533,2534],[868,1423,1933,1934,2468,2516,2533,2534],[868,1423,1753,1754,1755,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,1939,2468,2516,2533,2534],[868,1423,1939,1940,2468,2516,2533,2534],[868,1423,1742,2468,2516,2533,2534],[868,1423,1745,2468,2516,2533,2534],[868,1423,1743,2468,2516,2533,2534],[868,1423,1744,2468,2516,2533,2534],[99,103,109,868,1423,1744,1745,1753,1754,1755,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,1932,1935,2459,2468,2516,2533,2534],[99,103,109,868,1423,1746,1753,1754,1755,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2459,2468,2516,2533,2534],[99,103,109,868,1423,1937,2459,2468,2516,2533,2534],[99,103,109,868,1423,1744,1745,1753,1754,1755,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,1932,1941,2459,2468,2516,2533,2534],[868,1423,1753,1754,1755,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,1936,1937,1938,1942,1943,1944,1945,1946,1947,2468,2516,2533,2534],[99,103,109,868,1423,1753,1754,1755,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,1937,2459,2468,2516,2533,2534],[99,103,109,868,1423,1747,1748,1753,1754,1755,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2459,2468,2516,2533,2534],[868,1423,2224,2468,2516,2533,2534],[868,1423,2215,2216,2220,2221,2468,2516,2533,2534],[868,1423,2215,2468,2516,2533,2534],[868,1423,2212,2213,2214,2468,2516,2533,2534],[868,1423,2215,2222,2223,2468,2516,2533,2534],[868,1423,2215,2220,2468,2516,2533,2534],[868,1423,2216,2217,2218,2219,2468,2516,2533,2534],[123,868,1423,2468,2516,2533,2534],[471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,868,1423,2468,2516,2533,2534],[868,1423,2468,2516,2533,2534,2652,2653,2654,2655,2656,2657,2658,2659,2660,2661,2662,2663],[868,1423,2468,2513,2514,2516,2533,2534],[868,1423,2468,2515,2516,2533,2534],[868,1423,2516,2533,2534],[868,1423,2468,2516,2521,2533,2534,2551],[868,1423,2468,2516,2517,2522,2527,2533,2534,2536,2548,2559],[868,1423,2468,2516,2517,2518,2527,2533,2534,2536],[868,1423,2463,2464,2465,2468,2516,2533,2534],[868,1423,2468,2516,2519,2533,2534,2560],[868,1423,2468,2516,2520,2521,2528,2533,2534,2537],[868,1423,2468,2516,2521,2533,2534,2548,2556],[868,1423,2468,2516,2522,2524,2527,2533,2534,2536],[868,1423,2468,2515,2516,2523,2533,2534],[868,1423,2468,2516,2524,2525,2533,2534],[868,1423,2468,2516,2526,2527,2533,2534],[868,1423,2468,2515,2516,2527,2533,2534],[868,1423,2468,2516,2527,2528,2529,2533,2534,2548,2559],[868,1423,2468,2516,2527,2528,2529,2533,2534,2543,2548,2551],[868,1423,2468,2509,2516,2524,2527,2530,2533,2534,2536,2548,2559],[868,1423,2468,2516,2527,2528,2530,2531,2533,2534,2536,2548,2556,2559],[868,1423,2468,2516,2530,2532,2533,2534,2548,2556,2559],[868,1423,2466,2467,2468,2469,2470,2471,2472,2510,2511,2512,2513,2514,2515,2516,2517,2518,2519,2520,2521,2522,2523,2524,2525,2526,2527,2528,2529,2530,2531,2532,2533,2534,2535,2536,2537,2538,2539,2540,2541,2542,2543,2544,2545,2546,2547,2548,2549,2550,2551,2552,2553,2554,2555,2556,2557,2558,2559,2560,2561,2562,2563,2564,2565],[868,1423,2468,2516,2527,2533,2534],[868,1423,2468,2516,2533,2534,2535,2559],[868,1423,2468,2516,2524,2527,2533,2534,2536,2548],[868,1423,2468,2516,2533,2534,2537],[868,1423,2468,2516,2533,2534,2538],[868,1423,2468,2515,2516,2533,2534,2539],[868,1423,2468,2513,2514,2515,2516,2517,2518,2519,2520,2521,2522,2523,2524,2525,2526,2527,2528,2529,2530,2531,2532,2533,2534,2535,2536,2537,2538,2539,2540,2541,2542,2543,2544,2545,2546,2547,2548,2549,2550,2551,2552,2553,2554,2555,2556,2557,2558,2559,2560,2561,2562,2563,2564,2565],[868,1423,2468,2516,2533,2534,2541],[868,1423,2468,2516,2533,2534,2542],[868,1423,2468,2516,2527,2533,2534,2543,2544],[868,1423,2468,2516,2533,2534,2543,2545,2560,2562],[868,1423,2468,2516,2528,2533,2534],[868,1423,2468,2516,2527,2533,2534,2548,2549,2551],[868,1423,2468,2516,2533,2534,2550,2551],[868,1423,2468,2516,2533,2534,2548,2549],[868,1423,2468,2516,2533,2534,2551],[868,1423,2468,2516,2533,2534,2552],[868,1423,2468,2513,2516,2533,2534,2548,2553,2559],[868,1423,2468,2516,2527,2533,2534,2554,2555],[868,1423,2468,2516,2533,2534,2554,2555],[868,1423,2468,2516,2521,2533,2534,2536,2548,2556],[868,1423,2468,2516,2533,2534,2557],[868,1423,2468,2516,2533,2534,2536,2558],[868,1423,2468,2516,2530,2533,2534,2542,2559],[868,1423,2468,2516,2521,2533,2534,2560],[868,1423,2468,2516,2533,2534,2548,2561],[868,1423,2468,2516,2533,2534,2535,2562],[868,1423,2468,2516,2533,2534,2563],[868,1423,2468,2509,2516,2533,2534],[868,1423,2468,2509,2516,2527,2529,2533,2534,2539,2548,2551,2559,2561,2562,2564],[868,1423,2468,2516,2533,2534,2548,2565],[868,1423,2468,2516,2533,2534,2566],[868,1423,2173,2468,2516,2533,2534],[868,1423,2468,2516,2533,2534,2624,2631],[868,1423,2468,2516,2533,2534,2624,2628],[91,868,1423,2468,2516,2533,2534,2630],[868,1423,2468,2516,2533,2534,2627],[90,91,92,868,1423,2468,2516,2533,2534],[93,868,1423,2468,2516,2533,2534],[91,92,93,868,1423,2468,2516,2533,2534,2592,2625,2626],[90,868,1423,2468,2516,2533,2534],[90,95,96,98,868,1423,2468,2516,2533,2534],[95,96,97,98,868,1423,2468,2516,2533,2534],[99,103,109,778,868,1423,2459,2468,2516,2533,2534],[99,103,104,109,868,1423,2459,2468,2516,2533,2534],[868,1423,2129,2151,2153,2468,2516,2533,2534],[868,1423,2129,2150,2152,2153,2165,2468,2516,2533,2534],[868,1423,2150,2152,2153,2157,2468,2516,2533,2534],[868,1423,2166,2167,2468,2516,2533,2534],[868,1423,2129,2150,2153,2157,2169,2170,2171,2468,2516,2533,2534],[868,1423,2129,2148,2150,2151,2152,2468,2516,2533,2534],[868,1423,2178,2468,2516,2533,2534],[88,868,1423,2152,2153,2154,2155,2156,2161,2168,2172,2177,2179,2468,2516,2533,2534],[868,1423,2151,2468,2516,2533,2534],[868,1423,2150,2151,2152,2468,2516,2533,2534],[868,1423,2151,2157,2158,2160,2468,2516,2533,2534],[868,1423,2129,2150,2153,2468,2516,2533,2534],[868,1423,2150,2153,2468,2516,2533,2534],[868,1423,2150,2151,2153,2159,2468,2516,2533,2534],[868,1423,2129,2147,2153,2468,2516,2533,2534],[868,1423,2150,2468,2516,2533,2534],[868,1423,2129,2153,2468,2516,2533,2534],[868,1423,2174,2175,2468,2516,2533,2534],[868,1423,2175,2176,2468,2516,2533,2534],[868,1423,2174,2468,2516,2533,2534],[868,1423,2149,2468,2516,2533,2534],[868,1423,2180,2468,2516,2533,2534],[868,1423,2129,2180,2182,2468,2516,2533,2534],[88,868,1423,2107,2108,2109,2129,2180,2181,2183,2468,2516,2533,2534],[868,1144,1423,2468,2516,2533,2534],[867,1423,2468,2516,2533,2534],[868,1423,2231,2468,2516,2533,2534],[868,1423,2233,2468,2516,2533,2534],[868,1423,1440,2468,2516,2533,2534],[868,1423,2235,2468,2516,2533,2534],[868,1423,1442,2468,2516,2533,2534],[868,1423,2237,2468,2516,2533,2534],[868,1423,1439,2468,2516,2533,2534],[462,792,793,794,868,1423,2468,2516,2533,2534],[97,99,103,109,154,157,792,793,868,1423,2459,2468,2516,2533,2534],[97,99,103,109,794,868,1423,2459,2468,2516,2533,2534],[462,792,796,797,798,868,1423,2468,2516,2533,2534],[99,103,109,157,461,792,868,1423,2459,2468,2516,2533,2534],[99,103,109,461,792,796,868,1423,2459,2468,2516,2533,2534],[797,868,1423,2468,2516,2533,2534],[462,792,800,801,803,868,1423,2468,2516,2533,2534],[99,103,109,802,868,1423,2459,2468,2516,2533,2534],[99,103,109,157,792,800,868,1423,2459,2468,2516,2533,2534],[99,103,109,801,868,1423,2459,2468,2516,2533,2534],[462,792,868,1390,1391,1423,2468,2516,2533,2534],[99,103,109,154,157,792,805,808,838,868,1043,1047,1315,1390,1423,2459,2468,2516,2533,2534],[99,103,109,807,808,868,1045,1047,1391,1423,2459,2468,2516,2533,2534],[462,792,833,834,839,840,841,842,868,1423,2468,2516,2533,2534],[99,103,109,157,792,829,838,868,1423,2459,2468,2516,2533,2534],[99,100,103,109,157,792,829,838,868,1400,1423,2459,2468,2516,2533,2534],[97,99,103,109,151,154,157,461,792,868,1423,2459,2468,2516,2533,2534],[97,99,103,109,833,868,1423,2459,2468,2516,2533,2534],[99,103,109,833,868,1423,2459,2468,2516,2533,2534],[840,841,868,1423,2468,2516,2533,2534],[462,792,844,845,846,868,1423,2468,2516,2533,2534],[99,103,109,844,868,1423,2459,2468,2516,2533,2534],[845,868,1423,2468,2516,2533,2534],[462,792,848,849,850,868,1423,2468,2516,2533,2534],[99,103,109,157,792,868,1423,2459,2468,2516,2533,2534],[99,103,109,848,868,1423,2459,2468,2516,2533,2534],[849,868,1423,2468,2516,2533,2534],[462,792,852,853,854,855,856,857,868,1423,2468,2516,2533,2534],[99,103,109,157,792,868,1423,2459,2462,2468,2516,2533,2534],[99,103,109,853,868,1423,2459,2462,2468,2516,2533,2534],[99,103,109,852,868,1423,2459,2468,2516,2533,2534],[855,856,868,1423,2468,2516,2533,2534],[462,792,859,860,861,863,864,868,1423,2468,2516,2533,2534],[99,103,109,792,859,868,1423,2459,2468,2516,2533,2534],[99,103,109,862,868,1423,2459,2468,2516,2533,2534],[99,103,109,151,157,461,792,868,1423,2459,2468,2516,2533,2534],[99,103,109,461,792,859,868,1423,2459,2468,2516,2533,2534],[99,103,109,859,868,1423,2459,2468,2516,2533,2534],[861,863,868,1423,2468,2516,2533,2534],[462,792,866,868,870,873,1423,2468,2516,2533,2534],[99,103,109,866,868,869,1423,2459,2468,2516,2533,2534],[99,103,109,792,868,869,1423,2459,2468,2516,2533,2534],[99,103,109,868,869,871,1423,2459,2468,2516,2533,2534],[868,870,872,1423,2468,2516,2533,2534],[462,792,868,875,876,877,1423,2468,2516,2533,2534],[99,103,109,868,875,1423,2459,2468,2516,2533,2534],[868,876,1423,2468,2516,2533,2534],[462,792,868,879,880,881,882,883,884,1423,2468,2516,2533,2534],[99,103,109,868,880,1423,2459,2468,2516,2533,2534],[99,103,109,868,879,1423,2459,2468,2516,2533,2534],[868,882,883,1423,2468,2516,2533,2534],[154,462,792,868,886,887,889,890,891,1423,2468,2516,2533,2534],[99,103,109,157,792,868,886,1423,2459,2468,2516,2533,2534],[99,103,109,868,886,887,889,891,1423,2459,2468,2516,2533,2534],[868,888,890,1423,2468,2516,2533,2534],[99,103,109,868,886,887,1423,2459,2468,2516,2533,2534],[868,886,1423,2468,2516,2533,2534],[99,103,109,154,792,868,887,1423,2459,2468,2516,2533,2534],[462,792,868,1001,1002,1003,1423,2468,2516,2533,2534],[99,103,109,151,157,461,792,829,838,868,886,887,889,892,995,997,999,1000,1423,2459,2468,2516,2533,2534],[99,103,109,461,792,829,838,868,886,887,891,892,1001,1423,2459,2468,2516,2533,2534],[868,1002,1423,2468,2516,2533,2534],[462,792,868,1005,1006,1423,2468,2516,2533,2534],[99,103,109,157,792,868,1005,1423,2459,2468,2516,2533,2534],[99,103,109,868,1006,1423,2459,2468,2516,2533,2534],[462,792,868,1008,1009,1010,1011,1012,1013,1423,2468,2516,2533,2534],[99,103,109,868,1009,1423,2459,2468,2516,2533,2534],[99,103,109,151,157,792,868,996,997,1009,1010,1423,2459,2468,2516,2533,2534],[99,103,109,868,1009,1011,1400,1423,2459,2468,2516,2533,2534],[99,103,109,151,157,792,868,996,997,1008,1423,2459,2468,2516,2533,2534],[99,103,109,868,1011,1423,2459,2468,2516,2533,2534],[462,792,868,1015,1016,1423,2468,2516,2533,2534],[99,103,109,154,157,792,868,1015,1423,2459,2468,2516,2533,2534],[99,103,109,868,1016,1423,2459,2468,2516,2533,2534],[462,792,868,1025,1423,2468,2516,2533,2534],[462,792,868,1018,1019,1020,1021,1022,1023,1423,2468,2516,2533,2534],[99,103,109,157,461,792,868,1018,1423,2459,2468,2516,2533,2534],[99,103,109,461,792,868,1019,1423,2459,2468,2516,2533,2534],[99,103,109,154,157,792,868,1423,2459,2468,2516,2533,2534],[99,103,109,868,1018,1423,2459,2468,2516,2533,2534],[868,1021,1022,1423,2468,2516,2533,2534],[462,792,868,1038,1039,1423,2468,2516,2533,2534],[99,103,109,157,792,868,1036,1037,1038,1423,2459,2468,2516,2533,2534],[99,103,109,807,808,868,1037,1039,1423,2459,2468,2516,2533,2534],[868,1036,1423,2468,2516,2533,2534],[462,792,868,1048,1049,1423,2468,2516,2533,2534],[99,103,109,151,157,792,868,995,996,997,1036,1043,1047,1048,1423,2459,2468,2516,2533,2534],[99,103,109,868,1037,1049,1423,2459,2468,2516,2533,2534],[462,792,868,1086,1087,1088,1089,1423,2468,2516,2533,2534],[99,103,109,157,792,859,865,868,875,878,964,1053,1056,1058,1059,1061,1062,1067,1085,1423,2459,2468,2516,2533,2534],[99,103,109,157,792,859,868,875,964,1053,1058,1059,1061,1067,1086,1400,1423,2459,2468,2516,2533,2534],[99,103,109,868,1086,1423,2459,2468,2516,2533,2534],[99,103,109,779,868,965,997,1086,1088,1400,1423,2459,2468,2516,2533,2534],[462,792,868,1091,1092,1093,1094,1095,1423,2468,2516,2533,2534],[462,792,868,1097,1098,1423,2468,2516,2533,2534],[99,103,109,157,792,868,869,1097,1423,2459,2468,2516,2533,2534],[99,103,109,868,869,1098,1423,2459,2468,2516,2533,2534],[462,792,868,1108,1109,1110,1111,1112,1423,2468,2516,2533,2534],[99,103,109,868,966,997,1423,2459,2468,2516,2533,2534],[99,100,103,109,157,792,868,1100,1107,1109,1400,1423,2459,2468,2516,2533,2534],[868,1111,1423,2468,2516,2533,2534],[99,103,109,157,792,868,1100,1107,1109,1423,2459,2468,2516,2533,2534],[868,869,1423,2468,2516,2533,2534],[462,792,868,1114,1115,1116,1423,2468,2516,2533,2534],[99,100,103,109,157,792,838,868,1100,1107,1109,1113,1400,1423,2459,2468,2516,2533,2534],[868,1115,1423,2468,2516,2533,2534],[99,103,109,157,792,838,868,1100,1107,1109,1400,1423,2459,2468,2516,2533,2534],[462,792,868,1118,1119,1120,1423,2468,2516,2533,2534],[99,103,109,151,157,792,868,1118,1423,2459,2468,2516,2533,2534],[99,103,109,868,1119,1423,2459,2468,2516,2533,2534],[462,792,868,1052,1053,1054,1055,1423,2468,2516,2533,2534],[99,103,109,461,792,868,1423,2459,2468,2516,2533,2534],[99,103,109,157,792,868,1051,1052,1423,2459,2468,2516,2533,2534],[99,103,109,868,1053,1423,2459,2468,2516,2533,2534],[462,792,868,1122,1123,1423,2468,2516,2533,2534],[99,103,109,157,792,868,1122,1423,2459,2468,2516,2533,2534],[99,103,109,868,1123,1423,2459,2468,2516,2533,2534],[462,792,868,1125,1126,1423,2468,2516,2533,2534],[99,103,109,157,792,868,1053,1056,1125,1423,2459,2468,2516,2533,2534],[99,103,109,868,1053,1056,1126,1423,2459,2468,2516,2533,2534],[462,792,868,1131,1132,1133,1134,1135,1136,1423,2468,2516,2533,2534],[99,103,109,157,462,792,868,1129,1400,1423,2459,2468,2516,2533,2534],[99,103,109,154,157,792,826,827,829,838,859,865,868,1423,2459,2468,2516,2533,2534],[99,103,109,151,154,157,461,462,792,827,829,838,859,862,863,865,868,965,997,1041,1043,1045,1047,1071,1076,1129,1130,1400,1423,2459,2468,2516,2533,2534],[868,1132,1423,2468,2516,2533,2534],[99,103,109,829,838,868,1423,2459,2468,2516,2533,2534],[462,792,868,1138,1139,1140,1423,2468,2516,2533,2534],[99,103,109,868,1138,1423,2459,2468,2516,2533,2534],[868,1139,1423,2468,2516,2533,2534],[462,792,868,1143,1146,1147,1148,1149,1150,1151,1152,1153,1423,2468,2516,2533,2534],[99,103,109,868,1146,1423,2459,2468,2516,2533,2534],[99,103,109,151,154,157,792,868,1146,1423,2459,2468,2516,2533,2534],[99,103,109,868,1146,1147,1423,2459,2468,2516,2533,2534],[99,103,109,151,154,157,792,868,1146,1147,1423,2459,2468,2516,2533,2534],[99,103,109,154,792,868,1143,1146,1147,1423,2459,2468,2516,2533,2534],[868,1149,1150,1423,2468,2516,2533,2534],[99,103,109,151,779,868,1423,2459,2468,2516,2533,2534],[99,103,109,151,154,779,792,868,1142,1143,1145,1147,1423,2459,2468,2516,2533,2534],[99,103,109,792,868,1146,1147,1423,2459,2468,2516,2533,2534],[462,792,868,1128,1129,1423,2468,2516,2533,2534],[99,103,109,157,792,868,1128,1423,2459,2468,2516,2533,2534],[99,103,109,868,1129,1423,2459,2468,2516,2533,2534],[462,792,868,1155,1156,1423,2468,2516,2533,2534],[99,103,109,157,792,868,1155,1423,2459,2468,2516,2533,2534],[99,103,109,868,1156,1423,2459,2468,2516,2533,2534],[462,792,868,1158,1159,1423,2468,2516,2533,2534],[99,103,109,157,792,868,1158,1423,2459,2468,2516,2533,2534],[99,103,109,868,1156,1157,1159,1423,2459,2468,2516,2533,2534],[154,794,795,796,798,799,801,804,805,807,808,827,829,830,831,832,833,834,835,836,837,838,839,842,843,844,846,847,848,850,851,852,853,854,857,858,859,860,864,865,866,868,873,874,875,877,878,879,880,881,884,885,886,887,889,891,892,999,1000,1001,1003,1004,1006,1007,1009,1011,1012,1014,1016,1017,1018,1019,1020,1023,1024,1026,1039,1040,1041,1043,1045,1046,1047,1049,1050,1053,1054,1055,1056,1058,1059,1061,1062,1067,1069,1071,1073,1074,1075,1076,1085,1086,1087,1088,1089,1090,1096,1098,1099,1100,1101,1102,1103,1105,1107,1108,1109,1110,1112,1113,1114,1116,1117,1119,1120,1121,1123,1124,1126,1127,1129,1130,1131,1133,1134,1137,1138,1140,1141,1143,1146,1147,1148,1149,1150,1154,1156,1157,1159,1160,1162,1163,1164,1166,1167,1168,1169,1170,1171,1172,1175,1176,1177,1178,1179,1181,1182,1183,1184,1185,1187,1188,1190,1191,1193,1195,1197,1198,1199,1201,1202,1204,1205,1207,1208,1209,1211,1212,1213,1214,1215,1217,1218,1220,1222,1225,1227,1229,1230,1233,1234,1236,1238,1239,1242,1244,1245,1246,1247,1248,1249,1251,1252,1254,1256,1257,1258,1260,1261,1262,1263,1265,1267,1283,1284,1285,1292,1294,1296,1298,1299,1300,1301,1302,1303,1305,1307,1308,1309,1311,1312,1313,1318,1319,1320,1321,1324,1326,1327,1328,1329,1331,1335,1336,1339,1341,1343,1345,1346,1347,1349,1350,1351,1352,1354,1355,1357,1360,1361,1362,1365,1366,1369,1371,1372,1374,1375,1376,1377,1378,1379,1380,1382,1384,1385,1387,1389,1391,1392,1423,2468,2516,2533,2534],[99,103,109,462,792,868,1373,1423,2459,2468,2516,2533,2534],[462,792,868,1161,1162,1423,2468,2516,2533,2534],[99,103,109,151,157,792,868,1161,1423,2459,2468,2516,2533,2534],[99,103,109,868,1162,1423,2459,2468,2516,2533,2534],[462,792,868,1164,1165,1166,1423,2468,2516,2533,2534],[99,103,109,151,157,461,792,829,838,868,999,1000,1423,2459,2468,2516,2533,2534],[99,103,109,461,792,829,868,1164,1400,1423,2459,2468,2516,2533,2534],[868,1165,1423,2468,2516,2533,2534],[462,792,805,806,807,868,1423,2468,2516,2533,2534],[99,103,109,151,154,157,461,792,868,1423,2459,2468,2516,2533,2534],[99,103,109,461,792,805,868,1423,2459,2468,2516,2533,2534],[806,868,1423,2468,2516,2533,2534],[462,792,868,1060,1061,1423,2468,2516,2533,2534],[99,103,109,157,461,792,868,1060,1423,2459,2468,2516,2533,2534],[99,103,109,868,1061,1423,2459,2468,2516,2533,2534],[99,103,109,868,1375,1376,1377,1378,1423,2459,2468,2516,2533,2534],[99,103,109,868,1375,1376,1423,2459,2468,2516,2533,2534],[99,103,109,868,1375,1423,2459,2468,2516,2533,2534],[99,103,109,779,868,1423,2459,2468,2516,2533,2534],[462,792,868,1362,1364,1365,1423,2468,2516,2533,2534],[868,1362,1423,2468,2516,2533,2534],[99,103,109,154,157,792,805,808,838,868,1043,1047,1315,1362,1363,1364,1423,2459,2468,2516,2533,2534],[99,103,109,807,808,868,1045,1047,1362,1365,1423,2459,2468,2516,2533,2534],[462,792,868,1168,1169,1170,1171,1172,1173,1174,1175,1176,1423,2468,2516,2533,2534],[868,1168,1172,1173,1174,1423,2468,2516,2533,2534],[99,103,109,868,1171,1423,2459,2468,2516,2533,2534],[99,103,109,157,792,868,1169,1423,2459,2462,2468,2516,2533,2534],[99,103,109,868,1169,1170,1423,2459,2468,2516,2533,2534],[99,103,109,157,792,829,838,868,1169,1423,2459,2462,2468,2516,2533,2534],[99,103,109,868,1168,1423,2459,2462,2468,2516,2533,2534],[462,792,868,1380,1381,1423,2468,2516,2533,2534],[99,103,109,151,154,792,805,859,865,868,1423,2459,2468,2516,2533,2534],[868,1380,1423,2468,2516,2533,2534],[462,792,868,1058,1423,2468,2516,2533,2534],[99,103,109,154,157,461,792,868,1057,1423,2459,2468,2516,2533,2534],[99,103,109,461,792,868,1058,1423,2459,2468,2516,2533,2534],[462,792,868,1384,1423,2468,2516,2533,2534],[99,103,109,157,461,792,868,1383,1423,2459,2468,2516,2533,2534],[99,103,109,461,792,868,1384,1423,2459,2468,2516,2533,2534],[97,99,103,109,157,792,868,1178,1423,2459,2468,2516,2533,2534],[97,99,103,109,157,792,868,1423,2459,2468,2516,2533,2534],[462,792,868,1180,1181,1423,2468,2516,2533,2534],[99,103,109,157,461,792,868,1180,1423,2459,2468,2516,2533,2534],[99,103,109,461,792,868,1181,1423,2459,2468,2516,2533,2534],[462,792,868,1183,1184,1423,2468,2516,2533,2534],[462,792,868,1186,1187,1423,2468,2516,2533,2534],[99,103,109,157,461,792,827,829,859,865,868,1041,1043,1047,1186,1400,1423,2459,2468,2516,2533,2534],[99,103,109,461,792,829,859,865,868,1187,1400,1423,2459,2468,2516,2533,2534],[462,792,868,1386,1387,1388,1423,2468,2516,2533,2534],[99,103,109,154,157,792,826,829,838,868,1041,1043,1047,1386,1423,2459,2468,2516,2533,2534],[99,103,109,154,792,829,838,868,1041,1047,1387,1400,1423,2459,2468,2516,2533,2534],[462,792,826,827,828,829,830,831,832,835,836,837,868,1423,2468,2516,2533,2534],[99,103,109,157,792,830,868,1423,2459,2468,2516,2533,2534],[99,103,109,826,868,1423,2459,2468,2516,2533,2534],[99,103,109,157,792,826,827,829,835,836,868,1423,2459,2468,2516,2533,2534],[99,103,109,826,829,837,838,868,1400,1423,2459,2468,2516,2533,2534],[99,103,109,157,792,828,868,1423,2459,2468,2516,2533,2534],[99,103,109,827,829,868,1423,2459,2468,2516,2533,2534],[99,103,109,827,831,868,1423,2459,2468,2516,2533,2534],[99,103,109,827,832,868,1423,2459,2468,2516,2533,2534],[462,792,868,1189,1190,1423,2468,2516,2533,2534],[99,103,109,157,792,868,1189,1423,2459,2468,2516,2533,2534],[99,103,109,868,1190,1423,2459,2468,2516,2533,2534],[462,792,868,1192,1193,1194,1195,1196,1197,1198,1423,2468,2516,2533,2534],[99,103,109,868,1197,1423,2459,2468,2516,2533,2534],[99,103,109,157,792,868,1193,1194,1423,2459,2468,2516,2533,2534],[99,103,109,868,1195,1423,2459,2468,2516,2533,2534],[99,103,109,151,157,792,868,1196,1423,2459,2468,2516,2533,2534],[99,103,109,151,157,792,868,1192,1423,2459,2468,2516,2533,2534],[99,103,109,868,1193,1423,2459,2468,2516,2533,2534],[462,792,868,1200,1201,1423,2468,2516,2533,2534],[99,103,109,151,157,461,792,868,1200,1423,2459,2468,2516,2533,2534],[99,103,109,461,792,868,1201,1423,2459,2468,2516,2533,2534],[462,792,868,1203,1204,1423,2468,2516,2533,2534],[99,103,109,157,792,868,1203,1423,2459,2468,2516,2533,2534],[99,103,109,868,1204,1423,2459,2468,2516,2533,2534],[462,792,868,1206,1207,1208,1423,2468,2516,2533,2534],[99,103,109,157,792,868,1206,1423,2459,2468,2516,2533,2534],[99,103,109,868,1207,1423,2459,2468,2516,2533,2534],[462,792,868,1070,1071,1073,1074,1075,1423,2468,2516,2533,2534],[99,103,109,157,792,868,1070,1423,2459,2468,2516,2533,2534],[99,103,109,868,1071,1423,2459,2468,2516,2533,2534],[99,103,109,868,1072,1423,2459,2468,2516,2533,2534],[99,103,109,868,1073,1423,2459,2468,2516,2533,2534],[99,103,109,151,868,1358,1360,1400,1423,2459,2468,2516,2533,2534],[99,103,109,151,157,792,868,1315,1358,1359,1423,2459,2468,2516,2533,2534],[99,103,109,868,1358,1360,1423,2459,2468,2516,2533,2534],[462,792,868,1222,1224,1225,1423,2468,2516,2533,2534],[99,103,109,157,462,792,829,838,868,1219,1223,1224,1423,2459,2468,2516,2533,2534],[99,100,103,109,868,1212,1213,1219,1220,1423,2459,2468,2516,2533,2534],[99,100,103,109,154,157,462,779,792,829,838,868,999,1000,1041,1043,1045,1047,1129,1130,1219,1221,1223,1225,1400,1423,2459,2468,2516,2533,2534],[99,103,109,868,1045,1047,1219,1225,1423,2459,2468,2516,2533,2534],[99,103,109,868,1222,1423,2459,2468,2516,2533,2534],[462,792,868,1227,1228,1229,1230,1231,1232,1423,2468,2516,2533,2534],[99,103,109,157,792,868,1227,1423,2459,2468,2516,2533,2534],[99,103,109,157,462,792,829,838,868,1223,1228,1423,2459,2468,2516,2533,2534],[99,103,109,154,157,462,779,792,829,838,868,999,1000,1041,1043,1045,1047,1071,1076,1129,1130,1219,1223,1227,1229,1400,1423,2459,2468,2516,2533,2534],[99,103,109,868,1227,1423,2459,2468,2516,2533,2534],[99,103,109,868,1226,1229,1423,2459,2468,2516,2533,2534],[462,792,868,1235,1236,1237,1238,1423,2468,2516,2533,2534],[99,103,109,157,792,868,1237,1423,2459,2468,2516,2533,2534],[99,103,109,868,1238,1423,2459,2468,2516,2533,2534],[99,103,109,157,792,868,975,997,1235,1423,2459,2468,2516,2533,2534],[99,103,109,868,1236,1423,2459,2468,2516,2533,2534],[462,792,868,1240,1242,1244,1423,2468,2516,2533,2534],[99,103,109,868,1241,1242,1423,2459,2468,2516,2533,2534],[99,103,109,868,1242,1243,1423,2459,2468,2516,2533,2534],[99,103,109,154,157,792,826,868,1240,1241,1423,2459,2468,2516,2533,2534],[99,103,109,154,157,792,838,868,1400,1423,2459,2468,2516,2533,2534],[462,792,868,1246,1247,1248,1423,2468,2516,2533,2534],[97,99,103,109,154,157,792,868,1423,2459,2468,2516,2533,2534],[99,103,109,154,157,792,868,1246,1423,2459,2468,2516,2533,2534],[462,792,868,1368,1369,1370,1371,1423,2468,2516,2533,2534],[99,103,109,157,792,868,1370,1423,2459,2468,2516,2533,2534],[99,103,109,868,1371,1423,2459,2468,2516,2533,2534],[99,103,109,157,792,868,1367,1368,1423,2459,2468,2516,2533,2534],[99,103,109,868,1367,1369,1423,2459,2468,2516,2533,2534],[462,792,868,1250,1251,1423,2468,2516,2533,2534],[99,103,109,157,792,868,869,1250,1423,2459,2468,2516,2533,2534],[99,103,109,868,869,1251,1423,2459,2468,2516,2533,2534],[462,792,868,1253,1254,1255,1256,1257,1423,2468,2516,2533,2534],[99,103,109,157,461,792,868,1255,1423,2459,2468,2516,2533,2534],[99,103,109,461,792,868,1254,1256,1423,2459,2468,2516,2533,2534],[99,103,109,157,792,868,1253,1423,2459,2468,2516,2533,2534],[99,103,109,868,1254,1423,2459,2468,2516,2533,2534],[462,792,868,1259,1260,1423,2468,2516,2533,2534],[99,103,109,151,157,461,792,868,1259,1423,2459,2468,2516,2533,2534],[99,103,109,868,1260,1423,2459,2468,2516,2533,2534],[462,792,868,1262,1263,1265,1267,1283,1284,1285,1292,1293,1423,2468,2516,2533,2534],[99,103,109,157,792,868,1264,1423,2459,2468,2516,2533,2534],[99,103,109,868,1263,1423,2459,2468,2516,2533,2534],[99,100,103,109,868,1423,2459,2468,2516,2533,2534],[99,103,109,868,1273,1423,2459,2468,2516,2533,2534],[99,100,103,109,868,1272,1423,2459,2468,2516,2533,2534],[99,103,109,868,1275,1423,2459,2468,2516,2533,2534],[99,100,103,109,868,1263,1264,1270,1423,2459,2468,2516,2533,2534],[99,100,103,109,157,792,868,1264,1277,1278,1423,2459,2468,2516,2533,2534],[868,1271,1272,1274,1276,1279,1280,1281,1423,2468,2516,2533,2534],[99,100,103,109,157,792,868,1263,1264,1265,1423,2459,2468,2516,2533,2534],[99,103,109,868,1262,1423,2459,2468,2516,2533,2534],[868,1211,1269,1278,1286,1287,1288,1289,1423,2468,2516,2533,2534],[99,103,109,868,1284,1423,2459,2468,2516,2533,2534],[99,103,109,868,1263,1267,1423,2459,2468,2516,2533,2534],[99,103,109,868,1263,1267,1286,1423,2459,2468,2516,2533,2534],[99,103,109,868,966,997,1263,1265,1266,1267,1268,1423,2459,2468,2516,2533,2534],[99,103,109,868,1211,1220,1267,1268,1423,2459,2468,2516,2533,2534],[99,103,109,868,1267,1278,1423,2459,2468,2516,2533,2534],[99,103,109,792,868,1220,1263,1264,1423,2459,2468,2516,2533,2534],[99,103,109,868,1264,1423,2459,2468,2516,2533,2534],[99,103,109,868,1263,1264,1423,2459,2468,2516,2533,2534],[99,103,109,868,965,966,997,1267,1271,1282,1291,1423,2459,2468,2516,2533,2534],[99,103,109,157,792,868,1263,1264,1423,2459,2468,2516,2533,2534],[99,100,103,109,157,792,868,1211,1218,1220,1263,1264,1266,1423,2459,2468,2516,2533,2534],[99,100,103,109,157,792,868,1211,1262,1263,1264,1265,1266,1267,1269,1271,1272,1282,1400,1423,2459,2468,2516,2533,2534],[99,103,109,157,792,868,1262,1263,1264,1265,1266,1423,2459,2468,2516,2533,2534],[99,103,109,152,868,1262,1423,2459,2468,2516,2533,2534],[99,103,109,868,1211,1263,1265,1266,1267,1268,1269,1290,1400,1423,2459,2468,2516,2533,2534],[462,792,868,1067,1069,1082,1083,1084,1423,2468,2516,2533,2534],[99,103,109,868,1067,1069,1423,2459,2468,2516,2533,2534],[99,103,109,868,965,997,1063,1067,1069,1423,2459,2468,2516,2533,2534],[99,103,109,868,1064,1067,1423,2459,2468,2516,2533,2534],[99,103,109,868,1064,1067,1068,1423,2459,2468,2516,2533,2534],[99,103,109,151,868,1009,1010,1013,1014,1045,1067,1069,1400,1423,2459,2468,2516,2533,2534],[99,103,109,868,1064,1066,1067,1069,1423,2459,2468,2516,2533,2534],[99,103,109,151,868,965,997,1009,1010,1013,1014,1064,1066,1067,1069,1400,1423,2459,2468,2516,2533,2534],[99,103,109,868,1064,1065,1067,1069,1423,2459,2468,2516,2533,2534],[99,103,109,151,157,462,776,792,868,965,997,1009,1010,1013,1045,1063,1064,1065,1066,1067,1069,1071,1076,1078,1079,1080,1081,1400,1423,2459,2468,2516,2533,2534],[99,103,109,151,154,792,868,1064,1066,1068,1069,1423,2459,2468,2516,2533,2534],[868,1083,1423,2468,2516,2533,2534],[99,103,109,868,1045,1047,1067,1069,1423,2459,2468,2516,2533,2534],[462,792,868,1295,1296,1298,1299,1300,1301,1423,2468,2516,2533,2534],[99,103,109,868,1296,1299,1300,1423,2459,2468,2516,2533,2534],[99,103,109,154,157,792,868,1297,1301,1423,2459,2468,2516,2533,2534],[99,103,109,868,1298,1301,1423,2459,2468,2516,2533,2534],[99,100,103,109,157,792,868,1298,1301,1423,2459,2468,2516,2533,2534],[99,103,109,157,792,868,1295,1423,2459,2468,2516,2533,2534],[99,103,109,868,1296,1423,2459,2468,2516,2533,2534],[99,100,103,109,154,157,792,868,1299,1301,1423,2459,2468,2516,2533,2534],[462,792,868,998,999,1423,2468,2516,2533,2534],[99,103,109,151,157,792,868,998,1423,2459,2468,2516,2533,2534],[99,103,109,868,999,1423,2459,2468,2516,2533,2534],[462,792,868,1303,1304,1423,2468,2516,2533,2534],[99,103,109,151,157,792,868,1423,2459,2468,2516,2533,2534],[99,103,109,151,868,1303,1400,1423,2459,2468,2516,2533,2534],[462,792,868,1100,1101,1102,1103,1105,1106,1423,2468,2516,2533,2534],[99,103,109,157,792,826,868,869,1100,1423,2459,2468,2516,2533,2534],[99,103,109,157,792,826,838,868,869,1423,2459,2468,2516,2533,2534],[99,103,109,868,869,1100,1423,2459,2468,2516,2533,2534],[99,103,109,868,1104,1423,2459,2468,2516,2533,2534],[99,103,109,157,792,868,869,1423,2459,2468,2516,2533,2534],[99,100,103,109,157,792,838,868,1100,1400,1423,2459,2468,2516,2533,2534],[868,869,1100,1423,2468,2516,2533,2534],[462,792,868,1306,1307,1423,2468,2516,2533,2534],[99,103,109,151,157,461,792,829,838,868,995,997,1306,1423,2459,2468,2516,2533,2534],[99,103,109,461,792,829,868,1307,1400,1423,2459,2468,2516,2533,2534],[462,792,868,1309,1310,1311,1312,1423,2468,2516,2533,2534],[99,103,109,157,461,792,868,1310,1423,2459,2468,2516,2533,2534],[99,103,109,868,1311,1423,2459,2468,2516,2533,2534],[99,103,109,868,1309,1423,2459,2468,2516,2533,2534],[462,792,868,1041,1043,1044,1045,1046,1423,2468,2516,2533,2534],[99,103,109,154,792,868,1041,1423,2459,2468,2516,2533,2534],[99,103,109,157,792,829,837,838,868,982,996,997,1042,1423,2459,2468,2516,2533,2534],[99,103,109,829,837,838,868,1043,1423,2459,2468,2516,2533,2534],[99,103,109,154,157,792,827,829,835,838,868,969,997,1041,1043,1044,1423,2459,2468,2516,2533,2534],[99,103,109,154,792,829,838,868,1041,1043,1045,1423,2459,2468,2516,2533,2534],[99,103,109,154,157,792,827,832,838,868,1423,2459,2468,2516,2533,2534],[462,792,868,1351,1352,1353,1354,1355,1356,1423,2468,2516,2533,2534],[99,103,109,157,792,868,988,1423,2459,2468,2516,2533,2534],[99,103,109,157,461,792,868,988,1351,1352,1423,2459,2468,2516,2533,2534],[99,103,109,868,988,1352,1355,1423,2459,2468,2516,2533,2534],[99,103,109,157,461,792,868,988,1351,1352,1353,1423,2459,2468,2516,2533,2534],[99,103,109,868,988,1352,1354,1400,1423,2459,2468,2516,2533,2534],[99,103,109,859,865,868,1423,2459,2468,2516,2533,2534],[462,792,868,1317,1318,1423,2468,2516,2533,2534],[99,103,109,792,868,1314,1315,1318,1423,2459,2468,2516,2533,2534],[99,103,109,868,1316,1318,1423,2459,2468,2516,2533,2534],[99,103,109,154,157,792,868,1315,1317,1423,2459,2468,2516,2533,2534],[462,792,868,1329,1330,1423,2468,2516,2533,2534],[868,1229,1233,1326,1328,1423,2468,2516,2533,2534],[99,103,109,157,792,829,838,868,1229,1233,1321,1328,1400,1423,2459,2468,2516,2533,2534],[462,792,868,1334,1335,1423,2468,2516,2533,2534],[868,1334,1423,2468,2516,2533,2534],[99,103,109,868,1009,1211,1220,1321,1333,1400,1423,2459,2468,2516,2533,2534],[99,103,109,461,792,868,1332,1423,2459,2468,2516,2533,2534],[99,103,109,792,868,1014,1321,1333,1423,2459,2468,2516,2533,2534],[462,792,868,1320,1321,1324,1325,1326,1327,1423,2468,2516,2533,2534],[868,1325,1423,2468,2516,2533,2534],[154,792,868,1321,1322,1423,2468,2516,2533,2534],[868,1321,1323,1423,2468,2516,2533,2534],[99,103,109,868,1321,1322,1323,1324,1423,2459,2468,2516,2533,2534],[99,103,109,157,462,792,868,1321,1323,1423,2459,2468,2516,2533,2534],[99,103,109,868,1320,1322,1323,1324,1423,2459,2468,2516,2533,2534],[99,103,109,151,154,157,462,792,868,965,997,1009,1010,1013,1129,1320,1321,1322,1323,1400,1423,2459,2468,2516,2533,2534],[462,792,868,1338,1339,1341,1343,1345,1346,1423,2468,2516,2533,2534],[868,1339,1423,2468,2516,2533,2534],[99,103,109,154,157,792,868,1337,1339,1340,1423,2459,2468,2516,2533,2534],[99,103,109,154,792,868,1337,1339,1341,1423,2459,2468,2516,2533,2534],[99,103,109,157,792,868,1344,1423,2459,2468,2516,2533,2534],[99,103,109,868,1345,1423,2459,2468,2516,2533,2534],[99,103,109,157,792,868,1339,1342,1423,2459,2468,2516,2533,2534],[99,103,109,868,1339,1343,1423,2459,2468,2516,2533,2534],[99,103,109,154,157,792,868,1337,1338,1423,2459,2468,2516,2533,2534],[99,103,109,154,792,868,1339,1423,2459,2468,2516,2533,2534],[868,1211,1212,1213,1214,1215,1217,1218,1423,2468,2516,2533,2534],[99,103,109,157,792,868,1211,1215,1216,1423,2459,2468,2516,2533,2534],[99,103,109,157,792,868,1211,1217,1423,2459,2468,2516,2533,2534],[99,103,109,157,792,868,1211,1423,2459,2468,2516,2533,2534],[99,103,109,157,792,868,1211,1400,1423,2459,2468,2516,2533,2534],[99,103,109,868,1210,1423,2459,2468,2516,2533,2534],[462,792,868,1348,1349,1423,2468,2516,2533,2534],[99,103,109,157,792,868,1348,1423,2459,2468,2516,2533,2534],[99,103,109,868,1349,1423,2459,2468,2516,2533,2534],[99,103,109,868,1088,1393,1423,2459,2468,2516,2533,2534],[868,1078,1395,1396,1397,1423,2468,2516,2533,2534],[99,103,109,868,1077,1423,2459,2468,2516,2533,2534],[868,893,894,895,896,897,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,989,990,991,992,993,994,995,996,1423,2468,2516,2533,2534],[779,868,1423,2468,2516,2533,2534],[99,103,109,868,988,1423,2459,2468,2516,2533,2534],[99,103,109,154,779,792,868,898,964,1423,2459,2468,2516,2533,2534],[99,103,109,868,966,1423,2459,2468,2516,2533,2534],[99,103,109,147,148,149,150,151,152,153,154,794,795,796,798,799,801,804,805,807,808,827,829,830,831,832,833,834,835,836,837,838,839,842,843,844,846,847,848,850,851,852,853,854,857,858,859,860,864,865,866,868,869,873,874,875,877,878,879,880,881,884,885,886,887,889,891,892,893,894,895,896,897,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,989,990,991,992,993,994,995,996,997,999,1000,1001,1003,1004,1006,1007,1009,1011,1012,1014,1016,1017,1018,1019,1020,1023,1024,1026,1039,1040,1041,1043,1045,1046,1047,1049,1050,1053,1054,1055,1056,1058,1059,1061,1062,1067,1069,1071,1073,1074,1075,1076,1078,1085,1086,1087,1088,1089,1090,1096,1098,1099,1100,1101,1102,1103,1105,1107,1108,1109,1110,1112,1113,1114,1116,1117,1119,1120,1121,1123,1124,1126,1127,1129,1130,1131,1133,1134,1137,1138,1140,1141,1143,1146,1147,1148,1149,1150,1154,1156,1157,1159,1160,1162,1163,1164,1166,1167,1168,1169,1170,1171,1172,1175,1176,1177,1178,1179,1181,1182,1183,1184,1185,1187,1188,1190,1191,1193,1195,1197,1198,1199,1201,1202,1204,1205,1207,1208,1209,1211,1212,1213,1214,1215,1217,1218,1222,1225,1227,1229,1230,1233,1234,1236,1238,1239,1242,1244,1245,1246,1247,1248,1249,1251,1252,1254,1256,1257,1258,1260,1261,1262,1263,1265,1267,1283,1284,1285,1292,1294,1296,1298,1299,1300,1301,1302,1303,1305,1307,1308,1309,1311,1312,1313,1318,1319,1320,1321,1324,1326,1327,1328,1329,1331,1335,1336,1339,1341,1343,1345,1346,1347,1349,1350,1351,1352,1354,1355,1357,1360,1361,1362,1365,1366,1369,1371,1372,1374,1375,1376,1377,1378,1379,1380,1382,1384,1385,1387,1389,1391,1392,1393,1394,1395,1396,1397,1398,1399,1423,2459,2468,2516,2533,2534],[106,868,898,899,900,901,902,903,904,905,906,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,1423,2468,2516,2533,2534],[99,103,109,868,1088,1090,1423,2459,2468,2516,2533,2534],[776,868,1423,2468,2516,2533,2534],[158,159,160,161,162,163,868,1423,2468,2516,2533,2534],[154,155,156,157,158,159,160,161,162,163,164,165,461,462,463,464,465,466,467,469,777,780,781,782,783,784,785,786,787,788,789,790,791,868,1423,2468,2516,2533,2534],[90,154,792,868,1423,2468,2516,2533,2534],[97,868,1423,2468,2516,2533,2534],[99,103,109,460,868,1423,2459,2468,2516,2533,2534],[155,156,157,165,461,462,463,464,465,466,467,468,868,1423,2468,2516,2533,2534],[99,103,109,462,868,1423,2459,2468,2516,2533,2534],[155,156,157,868,1423,2468,2516,2533,2534],[99,103,109,157,868,1423,2459,2468,2516,2533,2534],[99,103,109,155,156,868,1423,2459,2468,2516,2533,2534],[151,868,1423,2468,2516,2533,2534],[148,151,868,1423,2468,2516,2533,2534],[868,1423,2242,2468,2516,2533,2534],[868,1423,1474,2468,2516,2533,2534],[868,1423,1472,1473,1475,2468,2516,2533,2534],[868,1423,1474,1478,1481,1483,1484,1486,1487,1488,1489,1490,1491,1492,1493,1494,1495,1496,1497,1498,1499,1500,1501,1502,1503,1504,1505,1507,1508,1509,1510,1511,1512,1513,1514,1515,1516,1517,1518,1519,1520,1521,1522,1523,1524,1525,1526,1527,2468,2516,2533,2534],[868,1423,1474,1478,1479,2468,2516,2533,2534],[868,1423,1474,1478,2468,2516,2533,2534],[868,1423,1474,1475,1528,2468,2516,2533,2534],[868,1423,1480,2468,2516,2533,2534],[868,1423,1480,1485,2468,2516,2533,2534],[868,1423,1480,1484,2468,2516,2533,2534],[868,1423,1477,1480,1484,2468,2516,2533,2534],[868,1423,1480,1483,1506,2468,2516,2533,2534],[868,1423,1478,1480,2468,2516,2533,2534],[868,1423,1477,2468,2516,2533,2534],[868,1423,1474,1482,2468,2516,2533,2534],[868,1423,1478,1482,1483,1484,2468,2516,2533,2534],[868,1423,1477,1478,2468,2516,2533,2534],[868,1423,1474,1475,2468,2516,2533,2534],[868,1423,1474,1475,1528,1530,2468,2516,2533,2534],[868,1423,1474,1531,2468,2516,2533,2534],[868,1423,1538,1539,1540,2468,2516,2533,2534],[868,1423,1474,1528,1529,2468,2516,2533,2534],[868,1423,1474,1476,1543,2468,2516,2533,2534],[868,1423,1532,1534,2468,2516,2533,2534],[868,1423,1531,1534,2468,2516,2533,2534],[868,1423,1474,1483,1492,1528,1529,1530,1531,1534,1535,1536,1537,1541,1542,2468,2516,2533,2534],[868,1423,1509,1534,2468,2516,2533,2534],[868,1423,1532,1533,2468,2516,2533,2534],[868,1423,1474,1543,2468,2516,2533,2534],[868,1423,1531,1535,1536,2468,2516,2533,2534],[868,1423,1534,2468,2516,2533,2534],[868,1423,1956,1957,1958,1959,2468,2516,2533,2534],[868,1423,1956,1957,1958,2468,2516,2533,2534],[868,1423,1956,2468,2516,2533,2534],[868,1423,1956,1957,2468,2516,2533,2534],[775,868,1423,2468,2516,2533,2534],[99,103,108,868,1423,2459,2468,2516,2533,2534],[868,1423,2468,2516,2533,2534,2588],[868,1423,2468,2516,2533,2534,2586,2588],[868,1423,2468,2516,2533,2534,2577,2585,2586,2587,2589,2591],[868,1423,2468,2516,2533,2534,2575],[868,1423,2468,2516,2533,2534,2578,2583,2588,2591],[868,1423,2468,2516,2533,2534,2574,2591],[868,1423,2468,2516,2533,2534,2578,2579,2582,2583,2584,2591],[868,1423,2468,2516,2533,2534,2578,2579,2580,2582,2583,2591],[868,1423,2468,2516,2533,2534,2575,2576,2577,2578,2579,2583,2584,2585,2587,2588,2589,2591],[868,1423,2468,2516,2533,2534,2591],[868,1423,2468,2516,2533,2534,2573,2575,2576,2577,2578,2579,2580,2582,2583,2584,2585,2586,2587,2588,2589,2590],[868,1423,2468,2516,2533,2534,2573,2591],[868,1423,2468,2516,2533,2534,2578,2580,2581,2583,2584,2591],[868,1423,2468,2516,2533,2534,2582,2591],[868,1423,2468,2516,2533,2534,2583,2584,2588,2591],[868,1423,2468,2516,2533,2534,2576,2586],[868,1423,1741,2468,2516,2533,2534],[868,1423,1742,1743,1744,2468,2516,2533,2534],[868,1423,1742,1743,1745,2468,2516,2533,2534],[868,1423,2468,2516,2533,2534,2568,2623,2624],[868,1423,2468,2516,2533,2534,2567,2568],[868,1423,2468,2516,2533,2534,2573,2612],[868,1423,2468,2516,2533,2534,2599],[868,1423,2468,2516,2533,2534,2595,2612],[868,1423,2468,2516,2533,2534,2594,2595,2596,2599,2611,2612,2613,2614,2615,2616,2617,2618,2619,2620],[868,1423,2468,2516,2533,2534,2616],[868,1423,2468,2516,2533,2534,2594,2596,2599,2617,2618],[868,1423,2468,2516,2533,2534,2615,2619],[868,1423,2468,2516,2533,2534,2594,2597,2598],[868,1423,2468,2516,2533,2534,2597],[868,1423,2468,2516,2533,2534,2594,2595,2596,2599,2611],[868,1423,2468,2516,2533,2534,2600,2605,2611],[868,1423,2468,2516,2533,2534,2611],[868,1423,2468,2516,2533,2534,2600,2611],[868,1423,2468,2516,2533,2534,2600,2601,2602,2603,2604,2605,2606,2607,2608,2609,2610],[868,1423,2129,2162,2468,2516,2533,2534],[868,1423,2129,2468,2516,2533,2534],[868,1423,2162,2163,2164,2468,2516,2533,2534],[868,1423,2129,2163,2468,2516,2533,2534],[868,1423,2110,2111,2112,2113,2114,2115,2116,2117,2118,2119,2120,2121,2122,2123,2128,2468,2516,2533,2534],[868,1423,2111,2112,2129,2468,2516,2533,2534],[868,1423,2111,2129,2468,2516,2533,2534],[868,1423,2122,2129,2468,2516,2533,2534],[868,1423,2124,2125,2126,2127,2468,2516,2533,2534],[868,1423,2113,2129,2468,2516,2533,2534],[868,1423,2138,2468,2516,2533,2534],[868,1423,2130,2131,2132,2133,2134,2135,2136,2137,2138,2139,2140,2141,2142,2143,2144,2145,2146,2468,2516,2533,2534],[868,1423,2130,2138,2140,2468,2516,2533,2534],[868,1423,2136,2138,2145,2468,2516,2533,2534],[868,1423,2140,2468,2516,2533,2534],[868,1423,2138,2140,2468,2516,2533,2534],[868,1423,2139,2468,2516,2533,2534],[868,1423,2130,2138,2468,2516,2533,2534],[868,1423,2131,2132,2133,2134,2135,2136,2137,2139,2468,2516,2533,2534],[868,1423,2468,2516,2533,2534,2636],[868,1423,1931,2468,2516,2533,2534],[868,1423,1552,1553,1554,1555,1556,1557,1558,1559,1560,1561,1562,1563,1564,2468,2516,2533,2534],[868,1423,1565,2468,2516,2533,2534],[868,1423,1625,2468,2516,2533,2534],[868,1423,1620,1621,2468,2516,2533,2534],[99,103,109,868,1423,1690,2459,2468,2516,2533,2534],[868,1423,1693,2468,2516,2533,2534],[99,103,109,868,1423,1639,1723,2459,2468,2516,2533,2534],[99,103,109,868,1423,1622,1639,1723,2459,2468,2516,2533,2534],[99,103,109,868,1423,1723,2459,2468,2516,2533,2534],[868,1423,1699,2468,2516,2533,2534],[99,103,109,868,1423,1667,2459,2468,2516,2533,2534],[99,103,109,868,1423,1723,1727,2459,2468,2516,2533,2534],[868,1423,1703,2468,2516,2533,2534],[868,1423,1631,1632,2468,2516,2533,2534],[868,1423,1630,2468,2516,2533,2534],[99,103,109,868,1423,1623,2459,2468,2516,2533,2534],[99,103,109,868,1423,1644,2459,2468,2516,2533,2534],[868,1423,1641,1642,2468,2516,2533,2534],[868,1423,1644,2468,2516,2533,2534],[868,1423,1641,2468,2516,2533,2534],[868,1423,1636,2468,2516,2533,2534],[868,1423,1667,1674,1706,1721,1722,1953,2468,2516,2533,2534],[99,103,109,868,1423,1707,2459,2468,2516,2533,2534],[99,103,109,868,1423,1636,1661,2459,2468,2516,2533,2534],[868,1423,1675,2468,2516,2533,2534],[868,1423,1677,2468,2516,2533,2534],[868,1423,1730,2468,2516,2533,2534],[99,103,109,868,1423,1636,1667,2459,2468,2516,2533,2534],[868,1423,1680,2468,2516,2533,2534],[868,1423,1732,2468,2516,2533,2534],[99,103,109,868,1423,1639,1667,2459,2468,2516,2533,2534],[868,1423,1734,2468,2516,2533,2534],[99,103,109,868,1423,1636,1637,1667,2459,2468,2516,2533,2534],[868,1423,1668,2468,2516,2533,2534],[868,1423,1709,2468,2516,2533,2534],[868,1423,1649,2468,2516,2533,2534],[868,1423,1736,2468,2516,2533,2534],[868,1423,1683,2468,2516,2533,2534],[99,103,109,868,1423,1667,1723,2459,2468,2516,2533,2534],[99,103,109,868,1423,1636,1656,1686,1723,2459,2468,2516,2533,2534],[99,103,109,868,1423,1618,2459,2468,2516,2533,2534],[868,1423,1738,2468,2516,2533,2534],[99,103,109,868,1423,1641,1644,2459,2468,2516,2533,2534],[868,1423,1949,2468,2516,2533,2534],[99,103,109,868,1423,1643,1644,1740,1948,2459,2468,2516,2533,2534],[868,1423,1951,2468,2516,2533,2534],[868,1423,1663,2468,2516,2533,2534],[868,1423,1662,2468,2516,2533,2534],[868,1423,1628,2468,2516,2533,2534],[868,1423,1688,2468,2516,2533,2534],[868,1423,1713,2468,2516,2533,2534],[99,103,109,868,1423,1665,2459,2468,2516,2533,2534],[868,1423,1626,1627,1640,1644,1645,1646,1647,1648,1650,1724,1725,1726,1727,1728,1729,1731,1733,1735,1737,1739,1950,1952,2468,2516,2533,2534],[868,1423,1619,1622,1624,1640,1644,1645,1646,1647,1648,1650,1953,2468,2516,2533,2534],[868,1423,1619,1622,1624,1629,1633,2468,2516,2533,2534],[868,1423,1634,1673,2468,2516,2533,2534],[868,1423,1669,1670,1671,1672,2468,2516,2533,2534],[868,1423,1676,1678,1679,1681,1682,1684,1685,1687,1689,1691,1692,1694,1695,1696,1697,1698,1700,1701,1702,1704,1705,2468,2516,2533,2534],[868,1423,1708,1710,1711,1712,1714,1715,1716,1717,1718,1719,1720,2468,2516,2533,2534],[868,1423,1656,2468,2516,2533,2534],[868,1423,1655,2468,2516,2533,2534],[99,103,109,868,1423,1639,1644,2459,2468,2516,2533,2534],[99,103,109,868,1423,1622,1639,1644,1646,2459,2468,2516,2533,2534],[868,1423,1639,1643,2468,2516,2533,2534],[868,1423,1618,1637,1640,1644,1645,1646,1647,1648,1650,1651,1652,1653,1654,1655,1656,1657,1658,1659,1660,1661,1662,1663,1664,1665,1666,2468,2516,2533,2534],[868,1423,1651,2468,2516,2533,2534],[868,1423,1639,2468,2516,2533,2534],[99,103,109,868,1423,1637,1662,2459,2468,2516,2533,2534],[868,1423,1637,2468,2516,2533,2534],[99,103,109,868,1423,1637,1651,2459,2468,2516,2533,2534],[868,1423,2468,2481,2485,2516,2533,2534,2559],[868,1423,2468,2481,2516,2533,2534,2548,2559],[868,1423,2468,2476,2516,2533,2534],[868,1423,2468,2478,2481,2516,2533,2534,2556,2559],[868,1423,2468,2516,2533,2534,2536,2556],[868,1423,2468,2476,2516,2533,2534,2566],[868,1423,2468,2478,2481,2516,2533,2534,2536,2559],[868,1423,2468,2473,2474,2477,2480,2516,2527,2533,2534,2548,2559],[868,1423,2468,2481,2488,2516,2533,2534],[868,1423,2468,2473,2479,2516,2533,2534],[868,1423,2468,2481,2502,2503,2516,2533,2534],[868,1423,2468,2477,2481,2516,2533,2534,2551,2559,2566],[868,1423,2468,2502,2516,2533,2534,2566],[868,1423,2468,2475,2476,2516,2533,2534,2566],[868,1423,2468,2481,2516,2533,2534],[868,1423,2468,2475,2476,2477,2478,2479,2480,2481,2482,2483,2485,2486,2487,2488,2489,2490,2491,2492,2493,2494,2495,2496,2497,2498,2499,2500,2501,2503,2504,2505,2506,2507,2508,2516,2533,2534],[868,1423,2468,2481,2496,2516,2533,2534],[868,1423,2468,2481,2488,2489,2516,2533,2534],[868,1423,2468,2479,2481,2489,2490,2516,2533,2534],[868,1423,2468,2480,2516,2533,2534],[868,1423,2468,2473,2476,2481,2516,2533,2534],[868,1423,2468,2481,2485,2489,2490,2516,2533,2534],[868,1423,2468,2485,2516,2533,2534],[868,1423,2468,2479,2481,2484,2516,2533,2534,2559],[868,1423,2468,2473,2478,2481,2488,2516,2533,2534],[868,1423,2468,2516,2533,2534,2548],[868,1423,2468,2476,2481,2502,2516,2533,2534,2564,2566],[868,1423,2468,2516,2533,2534,2625,2633,2634,2635,2637],[868,1423,2468,2516,2533,2534,2625,2633],[868,1423,2468,2516,2533,2534,2634],[868,1423,2468,2516,2533,2534,2638,2639],[868,1423,2468,2516,2533,2534,2638,2639,2640],[868,1423,2468,2516,2533,2534,2639,2643,2644],[868,1423,2468,2516,2533,2534,2639,2643],[868,1423,2468,2516,2533,2534,2624,2639,2643,2644],[868,1423,2468,2516,2533,2534,2568,2572,2623,2624,2642],[868,1423,2468,2516,2533,2534,2624],[868,1423,2468,2516,2533,2534,2624,2648],[87,868,1423,2468,2516,2533,2534],[83,84,86,868,1423,2468,2516,2527,2528,2530,2531,2532,2533,2534,2536,2548,2556,2559,2565,2566,2568,2569,2570,2571,2572,2592,2593,2622,2623,2624],[83,84,85,868,1423,2468,2516,2533,2534,2570],[83,868,1423,2468,2516,2533,2534],[84,868,1423,2468,2516,2533,2534],[85,86,868,1423,2468,2516,2533,2534],[868,1423,2468,2516,2533,2534,2621],[868,1423,2468,2516,2533,2534,2568,2624],[99,103,109,868,1423,1438,1439,1441,1442,1443,2459,2468,2516,2533,2534],[99,102,103,109,868,1423,2459,2468,2516,2533,2534],[94,98,868,1423,2468,2516,2533,2534],[98,868,1423,2468,2516,2533,2534],[99,103,109,868,1423,2048,2049,2459,2468,2516,2533,2534],[99,103,109,868,1423,2048,2459,2468,2516,2533,2534],[99,103,109,868,1423,2031,2459,2468,2516,2533,2534],[99,103,109,868,1423,2033,2459,2468,2516,2533,2534],[99,103,109,868,1423,2033,2034,2459,2468,2516,2533,2534],[868,1423,2031,2468,2516,2533,2534],[99,103,109,868,1423,2036,2459,2468,2516,2533,2534],[99,103,109,868,1423,2038,2459,2468,2516,2533,2534],[99,103,109,868,1423,2038,2039,2040,2459,2468,2516,2533,2534],[868,1423,2069,2468,2516,2533,2534],[868,1423,2032,2035,2037,2041,2042,2047,2050,2052,2053,2054,2056,2057,2061,2063,2065,2068,2070,2071,2468,2516,2533,2534],[99,103,109,868,1423,2051,2459,2468,2516,2533,2534],[868,1423,2043,2044,2468,2516,2533,2534],[868,1423,2045,2046,2468,2516,2533,2534],[868,1423,2066,2067,2468,2516,2533,2534],[99,103,109,868,1423,2066,2459,2468,2516,2533,2534],[868,1423,2058,2059,2060,2468,2516,2533,2534],[99,103,109,868,1423,2058,2459,2468,2516,2533,2534],[99,103,109,868,1423,2055,2459,2468,2516,2533,2534],[99,103,109,868,1423,2062,2459,2468,2516,2533,2534],[99,103,109,868,1423,2064,2459,2468,2516,2533,2534],[99,103,109,868,1423,2073,2459,2468,2516,2533,2534],[868,1423,2024,2030,2072,2074,2468,2516,2533,2534],[868,1423,2025,2026,2468,2516,2533,2534],[99,103,109,868,1423,2025,2459,2468,2516,2533,2534],[99,103,109,868,1423,2023,2024,2459,2468,2516,2533,2534],[99,103,109,868,1423,2018,2027,2459,2468,2516,2533,2534],[99,103,109,868,1423,2018,2023,2459,2468,2516,2533,2534],[868,1423,2023,2468,2516,2533,2534],[868,1423,2028,2029,2468,2516,2533,2534],[868,1423,2019,2020,2021,2022,2468,2516,2533,2534],[868,1423,2019,2020,2021,2468,2516,2533,2534],[868,1423,2019,2468,2516,2533,2534],[868,1423,2019,2020,2468,2516,2533,2534],[111,113,114,115,116,117,118,119,120,121,122,123,868,1423,2468,2516,2533,2534],[111,112,114,115,116,117,118,119,120,121,122,123,868,1423,2468,2516,2533,2534],[112,113,114,115,116,117,118,119,120,121,122,123,868,1423,2468,2516,2533,2534],[111,112,113,115,116,117,118,119,120,121,122,123,868,1423,2468,2516,2533,2534],[111,112,113,114,116,117,118,119,120,121,122,123,868,1423,2468,2516,2533,2534],[111,112,113,114,115,117,118,119,120,121,122,123,868,1423,2468,2516,2533,2534],[111,112,113,114,115,116,118,119,120,121,122,123,868,1423,2468,2516,2533,2534],[111,112,113,114,115,116,117,119,120,121,122,123,868,1423,2468,2516,2533,2534],[111,112,113,114,115,116,117,118,120,121,122,123,868,1423,2468,2516,2533,2534],[111,112,113,114,115,116,117,118,119,121,122,123,868,1423,2468,2516,2533,2534],[111,112,113,114,115,116,117,118,119,120,122,123,868,1423,2468,2516,2533,2534],[111,112,113,114,115,116,117,118,119,120,121,123,868,1423,2468,2516,2533,2534],[111,112,113,114,115,116,117,118,119,120,121,122,868,1423,2468,2516,2533,2534],[868,1422,2468,2516,2533,2534],[868,1423,1424,2468,2516,2533,2534],[100,868,1423,1578,2468,2516,2533,2534],[100,124,126,132,868,1423,1578,1580,2468,2516,2533,2534],[100,124,868,1423,1578,2468,2516,2533,2534],[99,100,101,103,105,106,107,109,133,136,868,1423,1580,1582,2459,2462,2468,2516,2533,2534],[99,100,101,103,109,129,868,1423,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,1457,2017,2459,2468,2516,2533,2534],[88,99,100,101,103,109,133,460,868,1401,1423,1433,1453,1461,1638,1639,2017,2078,2079,2080,2081,2084,2098,2099,2459,2468,2516,2533,2534],[99,100,101,103,109,460,868,1423,1581,2459,2462,2468,2516,2533,2534],[99,100,101,103,105,109,868,1423,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,2103,2459,2468,2516,2533,2534],[88,99,100,101,103,109,868,1406,1423,2184,2191,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1401,1423,2186,2459,2468,2516,2533,2534],[100,460,868,1423,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1423,2195,2196,2197,2459,2468,2516,2533,2534],[99,100,101,103,105,109,868,1400,1423,2195,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1406,1423,2196,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1406,1423,2459,2468,2516,2533,2534],[99,100,101,103,109,460,868,1423,1436,1587,2200,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,2200,2459,2468,2516,2533,2534],[100,868,1423,2468,2516,2533,2534],[99,100,101,103,109,868,1423,2200,2201,2202,2203,2204,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,2186,2200,2205,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,2207,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,2187,2459,2468,2516,2533,2534],[99,100,103,109,868,1400,1401,1423,1436,1453,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1423,2187,2188,2189,2459,2468,2516,2533,2534],[99,100,101,103,105,109,868,1401,1423,1453,1580,2185,2186,2187,2189,2190,2191,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,1467,2459,2468,2516,2533,2534],[99,100,101,103,105,109,868,1400,1423,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,2186,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,1470,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,2017,2075,2459,2468,2516,2533,2534],[99,100,101,103,109,133,460,868,1401,1423,1433,1467,1468,1469,1471,1544,1545,1579,1580,2459,2468,2516,2533,2534],[99,100,101,103,109,124,126,133,868,1400,1401,1423,1454,1455,1580,2459,2468,2516,2533,2534],[99,100,101,103,109,460,868,1401,1423,1433,2081,2225,2459,2468,2516,2533,2534],[99,100,103,109,868,1423,1579,2459,2468,2516,2533,2534],[100,130,136,868,1423,2468,2516,2533,2534],[100,103,868,1423,2462,2468,2516,2533,2534],[100,868,1401,1423,2228,2468,2516,2533,2534],[99,100,103,109,133,868,1423,2459,2468,2516,2533,2534],[100,868,1423,1441,2232,2234,2236,2238,2468,2516,2533,2534],[99,100,103,109,460,868,1423,2459,2468,2516,2533,2534],[88,99,100,103,109,868,1423,2241,2242,2459,2468,2516,2533,2534],[99,100,103,109,868,1423,2244,2459,2468,2516,2533,2534],[99,100,103,109,868,1423,1573,2246,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,1580,2459,2468,2516,2533,2534],[99,100,101,103,109,139,868,1423,2459,2462,2468,2516,2533,2534],[99,100,101,103,105,109,136,138,140,141,142,144,145,868,1402,1423,1580,2459,2468,2516,2533,2534],[99,100,101,103,109,130,139,143,868,1423,2459,2468,2516,2533,2534],[99,100,101,103,109,133,146,868,1401,1423,2459,2468,2516,2533,2534],[99,100,101,103,109,130,136,868,1423,1580,2459,2468,2516,2533,2534],[88,99,100,101,103,105,109,136,868,1423,2459,2468,2516,2533,2534],[99,100,101,103,109,136,137,868,1423,2459,2468,2516,2533,2534],[99,100,101,103,109,136,868,1409,1423,1580,2459,2468,2516,2533,2534],[99,100,101,103,107,109,868,1423,1580,2459,2468,2516,2533,2534],[99,100,101,103,109,129,868,1406,1423,2459,2462,2468,2516,2533,2534],[99,100,101,103,109,868,1407,1423,2459,2462,2468,2516,2533,2534],[99,100,101,103,109,133,136,868,1405,1408,1423,1580,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1403,1404,1410,1423,2459,2468,2516,2533,2534],[88,99,100,103,109,868,1423,1579,1583,1584,1585,2459,2468,2516,2533,2534],[100,103,124,125,129,130,132,133,868,1423,1572,1573,2462,2468,2516,2533,2534],[100,103,868,1423,1580,2462,2468,2516,2533,2534],[100,103,107,129,133,868,1423,1572,2462,2468,2516,2533,2534],[100,103,125,868,1411,1413,1414,1417,1418,1420,1421,1423,1426,1430,1432,1567,1571,2462,2468,2516,2533,2534],[100,109,868,1423,2468,2516,2533,2534],[100,109,124,868,1423,1579,2468,2516,2533,2534],[100,103,109,125,129,868,1423,2462,2468,2516,2533,2534],[90,100,109,128,131,134,135,868,1423,2468,2516,2533,2534],[100,103,109,125,127,128,131,132,868,1423,1573,2462,2468,2516,2533,2534],[100,128,130,131,133,868,1423,1573,2468,2516,2533,2534],[100,868,1376,1400,1423,2468,2516,2533,2534],[100,868,1423,1424,2468,2516,2533,2534],[100,868,1423,1452,1453,2468,2516,2533,2534],[100,133,868,1423,2468,2516,2533,2534],[100,110,123,126,868,1423,1574,1575,2468,2516,2533,2534],[100,110,868,1423,1575,2468,2516,2533,2534],[100,110,123,124,125,126,132,868,1401,1423,1573,1575,1576,1577,2468,2516,2533,2534],[110,868,1423,1575,2468,2516,2533,2534],[100,868,1423,2461,2468,2516,2533,2534],[90,100,123,868,1423,2468,2516,2533,2534],[99,100,101,103,109,125,127,132,133,460,868,1400,1416,1419,1423,2459,2468,2516,2533,2534],[99,100,101,103,109,125,127,132,133,868,1400,1415,1416,1423,2459,2468,2516,2533,2534],[99,100,101,103,109,125,127,128,131,133,460,868,1400,1415,1416,1423,1580,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,1597,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1423,1587,2186,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1401,1423,1436,1587,2254,2459,2468,2516,2533,2534],[99,100,101,103,109,143,868,1400,1423,1587,2227,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1401,1423,1436,1573,1587,2227,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1423,1455,1588,2191,2459,2468,2516,2533,2534],[99,100,101,103,109,460,868,1400,1423,1588,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,1598,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1423,1599,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1423,1435,1580,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1423,1580,1600,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,2264,2267,2268,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,2264,2265,2266,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,2265,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1423,2264,2459,2468,2516,2533,2534],[99,100,101,103,109,136,868,1423,2264,2459,2468,2516,2533,2534],[99,100,103,109,868,1400,1401,1423,1600,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1401,1423,1436,1600,2270,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1423,1600,2186,2459,2468,2516,2533,2534],[99,100,101,103,109,460,868,1406,1423,1593,2459,2468,2516,2533,2534],[99,100,101,103,109,460,868,1401,1423,1453,1593,2459,2468,2516,2533,2534],[99,100,101,103,109,460,868,1401,1406,1423,1436,1593,2274,2275,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1401,1423,1579,1601,1602,1603,2227,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1401,1423,1436,1603,2277,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1401,1423,1436,1603,2280,2459,2468,2516,2533,2534],[99,100,101,103,109,460,868,1401,1423,1424,1425,1433,1549,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1406,1423,1589,2279,2459,2468,2516,2533,2534],[99,100,101,103,107,109,868,1423,1436,1573,1589,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1401,1423,1433,2459,2468,2516,2533,2534],[99,100,101,103,109,133,868,1401,1423,1433,2459,2468,2516,2533,2534],[99,100,101,103,109,133,460,868,1400,1401,1423,1433,1464,1579,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1401,1423,1425,1433,1436,1579,2102,2459,2468,2516,2533,2534],[99,100,101,103,109,133,460,868,1400,1401,1423,1433,1436,1437,1467,1468,1471,1544,1545,1547,1579,1605,2102,2459,2462,2468,2516,2533,2534],[99,100,101,103,109,133,868,1400,1401,1423,1433,1436,1468,2287,2288,2459,2468,2516,2533,2534],[99,100,101,103,109,133,460,868,1400,1401,1423,1433,1436,1464,1465,1471,1544,1545,1547,1579,1601,2207,2208,2290,2459,2462,2468,2516,2533,2534],[99,100,101,103,109,133,460,868,1400,1401,1423,1433,1436,1464,1471,1544,1545,1547,1579,1601,2207,2208,2290,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1401,1423,2185,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1406,1423,1580,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,1428,2459,2468,2516,2533,2534],[99,100,101,103,109,460,868,1423,1428,2459,2468,2516,2533,2534],[99,100,101,103,109,460,775,868,1423,1428,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,2296,2459,2468,2516,2533,2534],[100,868,1423,2295,2297,2468,2516,2533,2534],[99,100,101,103,109,868,1423,2303,2459,2468,2516,2533,2534],[100,868,1423,2304,2305,2468,2516,2533,2534],[99,100,101,103,109,775,868,1401,1423,2185,2459,2468,2516,2533,2534],[99,100,101,103,109,775,868,1401,1423,2185,2307,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,2296,2307,2459,2468,2516,2533,2534],[100,868,1423,2307,2308,2309,2468,2516,2533,2534],[99,100,101,103,109,868,1423,2311,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,2296,2311,2459,2468,2516,2533,2534],[100,868,1423,2311,2312,2313,2468,2516,2533,2534],[99,100,101,103,109,775,868,1401,1423,2185,2315,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,2296,2315,2459,2468,2516,2533,2534],[100,868,1423,2315,2316,2317,2468,2516,2533,2534],[99,100,101,103,109,868,1423,2300,2319,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,2296,2319,2459,2468,2516,2533,2534],[100,868,1423,2319,2320,2321,2468,2516,2533,2534],[99,100,101,103,109,868,1423,2300,2323,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,2296,2323,2459,2468,2516,2533,2534],[100,868,1423,2323,2324,2325,2468,2516,2533,2534],[99,100,101,103,109,868,1423,2327,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,1427,2327,2459,2468,2516,2533,2534],[100,868,1423,2327,2328,2329,2468,2516,2533,2534],[99,100,101,103,109,868,1423,2331,2459,2468,2516,2533,2534],[100,868,1423,2331,2332,2333,2468,2516,2533,2534],[99,100,101,103,109,775,868,1401,1423,2186,2335,2459,2468,2516,2533,2534],[100,868,1423,2335,2336,2468,2516,2533,2534],[99,100,101,103,109,868,1423,2338,2459,2468,2516,2533,2534],[100,868,1423,2338,2339,2340,2468,2516,2533,2534],[99,100,101,103,109,775,868,1401,1423,2185,2342,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,2296,2342,2459,2468,2516,2533,2534],[100,868,1423,2342,2343,2344,2468,2516,2533,2534],[99,100,101,103,109,868,1423,2346,2459,2468,2516,2533,2534],[100,868,1423,2346,2347,2348,2468,2516,2533,2534],[99,100,101,103,109,868,1406,1423,1427,1428,2294,2301,2302,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,1427,2459,2468,2516,2533,2534],[99,100,101,103,109,460,868,1401,1423,1427,1429,2459,2468,2516,2533,2534],[99,100,101,103,105,109,868,1423,2351,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,1427,2352,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,1427,2294,2298,2459,2468,2516,2533,2534],[99,100,101,103,109,123,868,1400,1401,1423,1604,1606,1612,2227,2354,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1401,1423,1436,1573,1612,2251,2356,2357,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1401,1423,2228,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1401,1423,1436,1612,2186,2210,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1423,1612,2186,2227,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1423,1425,2459,2468,2516,2533,2534],[99,100,101,103,109,132,460,868,1400,1401,1423,1467,2459,2468,2516,2533,2534],[99,100,101,103,109,133,460,868,1423,1424,1425,2459,2462,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1401,1423,1424,1425,1549,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1412,1423,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,2459,2462,2468,2516,2533,2534],[99,100,101,103,109,460,868,1400,1423,1596,2459,2468,2516,2533,2534],[99,100,101,103,109,460,868,1400,1401,1423,1424,1431,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1401,1423,1424,1431,1436,2459,2468,2516,2533,2534],[99,100,101,103,109,460,868,1401,1423,1436,1594,2459,2468,2516,2533,2534],[99,100,101,103,109,110,460,868,1400,1423,1433,1437,1444,1575,1590,1596,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1423,1590,2186,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1401,1423,1436,1590,2207,2208,2374,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,1436,1590,2227,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,1590,2459,2468,2516,2533,2534],[99,100,101,103,109,460,868,1423,2368,2459,2468,2516,2533,2534],[99,100,101,103,109,460,868,1423,2459,2468,2516,2533,2534],[99,100,101,103,109,460,868,1401,1423,1590,2368,2369,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1401,1423,1436,1590,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1401,1423,1436,1590,2372,2459,2468,2516,2533,2534],[99,100,101,103,109,460,868,1400,1423,1444,1550,2459,2468,2516,2533,2534],[100,868,1423,1437,1464,2468,2516,2533,2534],[99,100,101,103,109,460,868,1400,1401,1423,1465,1550,2378,2459,2468,2516,2533,2534],[99,100,101,103,109,460,868,1423,1436,1550,2378,2379,2459,2468,2516,2533,2534],[99,100,101,103,109,460,868,1423,1424,1436,1550,2459,2468,2516,2533,2534],[99,100,101,103,109,133,460,868,1401,1423,1424,1433,1435,1436,1437,1547,1550,1551,2380,2381,2382,2459,2462,2468,2516,2533,2534],[99,100,101,103,109,460,868,1400,1423,1550,2385,2459,2468,2516,2533,2534],[99,100,101,103,109,460,868,1400,1423,1550,2386,2459,2468,2516,2533,2534],[99,100,101,103,109,123,143,868,1400,1401,1423,1591,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,1436,1573,1591,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1423,1591,2186,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,1591,2391,2459,2468,2516,2533,2534],[99,100,101,103,109,460,868,1401,1423,1433,1434,1436,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1423,1601,2186,2227,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1401,1423,1601,2394,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1423,1602,2186,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1401,1423,1436,1602,2396,2459,2468,2516,2533,2534],[99,100,101,103,109,460,868,1400,1401,1423,1437,1461,1580,2459,2468,2516,2533,2534],[99,100,101,103,109,460,868,1401,1423,1425,1433,1447,1461,1462,1469,1547,1568,1569,1570,2100,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1423,1601,1602,1603,1605,2186,2227,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1401,1423,1436,1603,1605,2227,2399,2459,2468,2516,2533,2534],[99,100,101,103,107,109,868,1400,1406,1423,1573,1604,2186,2459,2468,2516,2533,2534],[99,100,101,103,107,109,868,1400,1401,1423,1436,1604,2401,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1406,1423,1604,1605,2186,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1423,1605,2186,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1401,1423,1436,1605,2403,2404,2459,2468,2516,2533,2534],[99,100,101,103,109,460,868,1400,1401,1423,1592,2406,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1423,1606,2186,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1401,1423,1436,1606,2408,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1401,1423,1436,1573,1606,2410,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1415,1423,1607,2252,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,1607,2252,2412,2459,2468,2516,2533,2534],[99,100,101,103,109,123,868,1423,1607,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,1608,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1423,1609,2186,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,1609,2416,2459,2468,2516,2533,2534],[99,100,101,103,109,146,868,1401,1423,2459,2468,2516,2533,2534],[99,100,101,103,109,146,868,1423,2459,2468,2516,2533,2534],[99,100,101,103,109,146,868,1423,1436,2459,2468,2516,2533,2534],[99,100,101,103,109,143,146,868,1400,1423,2459,2468,2516,2533,2534],[99,100,101,103,109,146,868,1401,1423,1436,1573,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1423,1610,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,1610,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1401,1423,1611,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1423,1580,1611,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,1611,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1423,1611,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1423,1444,1596,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1401,1423,1436,1596,2459,2468,2516,2533,2534],[99,100,101,103,109,460,868,1400,1423,1436,1444,1596,2459,2468,2516,2533,2534],[99,100,101,103,109,460,868,1423,1444,1596,2459,2468,2516,2533,2534],[99,100,101,103,109,460,868,1423,1437,1465,1547,1596,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1401,1423,1436,1573,1595,1601,2207,2208,2434,2435,2436,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1423,1595,2186,2434,2435,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1401,1423,1436,1573,1595,1601,2434,2435,2438,2459,2468,2516,2533,2534],[100,868,1423,1595,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1401,1423,1433,1468,2459,2468,2516,2533,2534],[99,100,101,103,109,133,460,868,1401,1423,1425,1433,1435,1436,1437,1461,1469,1546,1547,1579,1601,2100,2459,2468,2516,2533,2534],[99,100,101,103,109,133,460,868,1401,1423,1425,1433,1435,1436,1437,1461,1469,1546,1547,1579,2100,2459,2468,2516,2533,2534],[99,100,101,103,109,460,868,1400,1401,1423,1433,1579,2459,2462,2468,2516,2533,2534],[99,100,101,103,109,460,868,1401,1423,1424,1425,1433,1549,1550,1579,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,1425,1579,2459,2468,2516,2533,2534],[99,100,101,103,109,460,868,1423,1433,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,1433,1565,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1401,1423,1433,1443,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1401,1423,1433,1451,1455,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,1433,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1401,1423,1433,1437,1444,1445,1446,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1401,1423,1433,1437,2459,2468,2516,2533,2534],[99,100,101,103,109,460,868,1400,1423,1424,1433,1457,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,1446,1469,1568,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,1568,2459,2468,2516,2533,2534],[99,100,101,103,109,460,868,1401,1423,1433,1436,1464,1465,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,1450,1580,2459,2468,2516,2533,2534],[99,100,101,103,109,460,868,1423,1449,1580,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,1433,1446,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,1433,1579,2459,2468,2516,2533,2534],[99,100,101,103,109,133,460,868,1400,1401,1423,1433,1437,1447,1448,1456,1458,1459,1460,1461,1462,1463,1466,1546,1579,1580,2459,2468,2516,2533,2534],[99,100,101,103,109,133,460,868,1401,1423,1424,1425,1433,1434,1435,1436,1437,1546,1547,1548,1551,1566,1579,2102,2459,2462,2468,2516,2533,2534],[99,100,101,103,109,133,460,868,1401,1423,1424,1425,1433,1434,1435,1436,1437,1546,1547,1548,1551,1566,1579,2459,2468,2516,2533,2534],[99,100,101,103,109,460,868,1423,1433,1437,1447,1456,1458,1459,1460,1461,1462,1466,1568,1569,1570,2459,2462,2468,2516,2533,2534],[99,100,101,103,109,133,460,868,1401,1423,1424,1425,1433,1434,1435,1436,1437,1547,1548,1551,1566,1579,1601,2459,2462,2468,2516,2533,2534],[99,100,101,103,109,868,1423,2195,2197,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,1455,2459,2468,2516,2533,2534],[99,100,101,103,109,133,460,868,1400,1423,1578,2098,2459,2468,2516,2533,2534],[99,100,101,103,109,127,133,460,868,1400,1401,1419,1423,2459,2468,2516,2533,2534],[99,100,101,103,109,136,460,868,1406,1423,1433,1434,1444,1579,2252,2459,2468,2516,2533,2534],[103,868,1423,2462,2468,2516,2533,2534],[100,868,1423,2468,2516,2528,2533,2534,2538,2559,2624,2629,2632,2641,2645,2646,2647,2649,2650]],"fileInfos":[{"version":"e41c290ef7dd7dab3493e6cbe5909e0148edf4a8dad0271be08edec368a0f7b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"27bdc30a0e32783366a5abeda841bc22757c1797de8681bbe81fbc735eeb1c10","impliedFormat":1},{"version":"8fd575e12870e9944c7e1d62e1f5a73fcf23dd8d3a321f2a2c74c20d022283fe","impliedFormat":1},{"version":"e12a46ce14b817d4c9e6b2b478956452330bf00c9801b79de46f7a1815b5bd40","impliedFormat":1},{"version":"4fd3f3422b2d2a3dfd5cdd0f387b3a8ec45f006c6ea896a4cb41264c2100bb2c","affectsGlobalScope":true,"impliedFormat":1},{"version":"69e65d976bf166ce4a9e6f6c18f94d2424bf116e90837ace179610dbccad9b42","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7a3c8b952931daebdfc7a2897c53c0a1c73624593fa070e46bd537e64dcd20a","affectsGlobalScope":true,"impliedFormat":1},{"version":"80e18897e5884b6723488d4f5652167e7bb5024f946743134ecc4aa4ee731f89","affectsGlobalScope":true,"impliedFormat":1},{"version":"cd034f499c6cdca722b60c04b5b1b78e058487a7085a8e0d6fb50809947ee573","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"62bb211266ee48b2d0edf0d8d1b191f0c24fc379a82bd4c1692a082c540bc6b1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"936e80ad36a2ee83fc3caf008e7c4c5afe45b3cf3d5c24408f039c1d47bdc1df","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"fef8cfad2e2dc5f5b3d97a6f4f2e92848eb1b88e897bb7318cef0e2820bceaab","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"f1e2a172204962276504466a6393426d2ca9c54894b1ad0a6c9dad867a65f876","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"b5ce7a470bc3628408429040c4e3a53a27755022a32fd05e2cb694e7015386c7","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"bab26767638ab3557de12c900f0b91f710c7dc40ee9793d5a27d32c04f0bf646","affectsGlobalScope":true,"impliedFormat":1},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e3c06ea092138bf9fa5e874a1fdbc9d54805d074bee1de31b99a11e2fec239d","affectsGlobalScope":true,"impliedFormat":1},{"version":"87dc0f382502f5bbce5129bdc0aea21e19a3abbc19259e0b43ae038a9fc4e326","affectsGlobalScope":true,"impliedFormat":1},{"version":"b1cb28af0c891c8c96b2d6b7be76bd394fddcfdb4709a20ba05a7c1605eea0f9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2fef54945a13095fdb9b84f705f2b5994597640c46afeb2ce78352fab4cb3279","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac77cb3e8c6d3565793eb90a8373ee8033146315a3dbead3bde8db5eaf5e5ec6","affectsGlobalScope":true,"impliedFormat":1},{"version":"56e4ed5aab5f5920980066a9409bfaf53e6d21d3f8d020c17e4de584d29600ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ece9f17b3866cc077099c73f4983bddbcb1dc7ddb943227f1ec070f529dedd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a6282c8827e4b9a95f4bf4f5c205673ada31b982f50572d27103df8ceb8013c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1c9319a09485199c1f7b0498f2988d6d2249793ef67edda49d1e584746be9032","affectsGlobalScope":true,"impliedFormat":1},{"version":"e3a2a0cee0f03ffdde24d89660eba2685bfbdeae955a6c67e8c4c9fd28928eeb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811c71eee4aa0ac5f7adf713323a5c41b0cf6c4e17367a34fbce379e12bbf0a4","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"d4b1d2c51d058fc21ec2629fff7a76249dec2e36e12960ea056e3ef89174080f","affectsGlobalScope":true,"impliedFormat":1},{"version":"61d6a2092f48af66dbfb220e31eea8b10bc02b6932d6e529005fd2d7b3281290","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"bde31fd423cd93b0eff97197a3f66df7c93e8c0c335cbeb113b7ff1ac35c23f4","impliedFormat":1},{"version":"a7ca8df4f2931bef2aa4118078584d84a0b16539598eaadf7dce9104dfaa381c","impliedFormat":1},{"version":"11443a1dcfaaa404c68d53368b5b818712b95dd19f188cab1669c39bee8b84b3","impliedFormat":1},{"version":"36977c14a7f7bfc8c0426ae4343875689949fb699f3f84ecbe5b300ebf9a2c55","impliedFormat":1},{"version":"7f698624bbbb060ece7c0e51b7236520ebada74b747d7523c7df376453ed6fea","impliedFormat":1},{"version":"19efad8495a7a6b064483fccd1d2b427403dd84e67819f86d1c6ee3d7abf749c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1eef826bc4a19de22155487984e345a34c9cd511dd1170edc7a447cb8231dd4a","affectsGlobalScope":true,"impliedFormat":99},"424faf9241dd699dda995b367ed36665732da1e6ec1f33b2fd40394488ecac92",{"version":"f468b74459f1ad4473b36a36d49f2b255f3c6b5d536c81239c2b2971df089eaf","impliedFormat":1},{"version":"556ccd493ec36c7d7cb130d51be66e147b91cc1415be383d71da0f1e49f742a9","impliedFormat":1},{"version":"95aba78013d782537cc5e23868e736bec5d377b918990e28ed56110e3ae8b958","impliedFormat":1},{"version":"524a409ad72186b7f6cb16898c349465cfa876f641d6cb6137b3123d5cfca619","impliedFormat":1},{"version":"ebe84ad8344962b7117a3b95065f47383215020eaf1b626463863b45b4d16e62","impliedFormat":1},{"version":"dc0c80f91a4d46c5c4f625a35601ff3c815e2395e6680bacfa12970fc6d49c93","impliedFormat":1},{"version":"3e74c6f34a28b7c948bfdaf19172000d589093660b3605f8c21c1b30173c729b","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac51dd7d31333793807a6abaa5ae168512b6131bd41d9c5b98477fc3b7800f9f","impliedFormat":1},{"version":"88ad1af02cacc61bf79683b021d326eeafc91231660a06495c5046d4649ec3a2","impliedFormat":1},{"version":"c0191592be8eb7906f99ac4b8798d80a585b94001ea1a5f50d6ce5b0d13a5c62","impliedFormat":99},{"version":"318d19118bf6bf8d088441c948990f53cafc79ed581b78f3d41a0f7a3f5f145c","impliedFormat":1},{"version":"549d2a340dc2ac41cf361e10d14d3a2cecd425ffd6fc6f764964c5c4ee0b63d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"860814185d89237c84a6bd1e4f108c2c0b2401609a74a33bc7cab14ea4ee9f21","impliedFormat":99},{"version":"e1ddcbacb7658bf0683bca4ebd31bd05f64823712651263bfc75128a45f00ff7","impliedFormat":99},{"version":"cd0e1f0599b6d8fdd60dc96fdc8527cc60d903e8dffe0b93b7a3527e09e23d49","impliedFormat":99},{"version":"4d643a0df06c8a561870a279ccf6ff9d29a1f04e2c9378eba501eb0e058e13fa","impliedFormat":99},{"version":"e3a0a9032e3ce3945446b33b6329405565aaf5d0e7c115250b972f02dc64d0ae","impliedFormat":1},"6ef27fa41da37327fdb938f081d14851cc26dda0ea642190a0c5f9577a9f1edf",{"version":"52f5c39e78a90c1d8ed7db18f39d890b2e8464a3f44d4233617893f6648e317d","impliedFormat":1},{"version":"a69e8bce30aea7ec98f3b6ddfbc378c92826fede01aafbaec703057c2503ea51","impliedFormat":1},{"version":"b7e91960129ba8a3c22f2402dc8d901b07a44fd11085309ba4780ea044f08323","impliedFormat":99},{"version":"380b919bfa0516118edaf25b99e45f855e7bc3fd75ce4163a1cfe4a666388804","impliedFormat":1},{"version":"40de86ced5175a6ffe84a52abe6ac59ac0efbc604a5975a8c6476c3ddc682ff1","impliedFormat":1},{"version":"fcf79300e5257a23ed3bacaa6861d7c645139c6f7ece134d15e6669447e5e6db","impliedFormat":1},{"version":"187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","impliedFormat":1},{"version":"aa2c18a1b5a086bbcaae10a4efba409cc95ba7287d8cf8f2591b53704fea3dea","impliedFormat":1},{"version":"5a0b15210129310cee9fa6af9200714bb4b12af4a04d890e15f34dbea1cf1852","impliedFormat":1},{"version":"0244119dbcbcf34faf3ffdae72dab1e9bc2bc9efc3c477b2240ffa94af3bca56","impliedFormat":1},{"version":"00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","impliedFormat":1},{"version":"a873c50d3e47c21aa09fbe1e2023d9a44efb07cc0cb8c72f418bf301b0771fd3","impliedFormat":1},{"version":"7c14ccd2eaa82619fffc1bfa877eb68a012e9fb723d07ee98db451fadb618906","impliedFormat":1},{"version":"49c36529ee09ea9ce19525af5bb84985ea8e782cb7ee8c493d9e36d027a3d019","impliedFormat":1},{"version":"df996e25faa505f85aeb294d15ebe61b399cf1d1e49959cdfaf2cc0815c203f9","impliedFormat":1},{"version":"4f6a12044ee6f458db11964153830abbc499e73d065c51c329ec97407f4b13dd","impliedFormat":1},"e0f525d113db44555dd40d6e1fd5e2708f6626c28ed93fa5a3e7864343a4e0b9","d6d50f70ef4224b378ff4a44a6772a5d6c71185869a1dca5dd69198552e33c38","4d85921513f6d9f0e98515890c56d6f150d1caa17cf2cdab54fa0837fa48be58","d287164f84628dcbf023783cfbaccecc0277307f30884afd734c778aaff927c0","56c90889c4d093f8a990ccd3f941cf0bd6b78404aa181416c6d856e3b70115f2","8fe156b1d07c194843a01048c28f920fb155943097eec7b3e06c23fa238cf29f","1249c8a45fe697d72e57c06af96b5b1b1fd02fe0ecdeaa24b5e42676e1686b39","d25f406cdc96422dc6e297a4fc1ea5f08a64ac5f917a70d634bb336e9faf2bd4","c066f545f56d4a7ceb40c7ba6f65af579295560016fd32cef080ac44e9a1437f","fef37fa42bdf34c9082bbdc575cc7e6f13eb9bb57752aa627aad29a648a540c8","7cac9e7dc9264c05eb8b8bd22289f2a4452f97a06daf49b306b76d3106b523c8","fe33311e48e4bcfb8618123fb0134917d3e5f282de6febbfb711c91a2af4f8e0","138ce2f3a7361fe0151dc4fa5720981e62631e3a6503f18d8f4adec58be90da7","fcd22ca9951b617db6b7e805e4dd290a925da6df49e8cbe4818b557bc4ba72c8","41c71bd48f563ed0c2643897c7580c3473a2c45de816131c7f497ada25aa4aca","d3bd74d3efb3eedf8ef3202bd4633e0078a2f0c071347b84ee5e9655c72ec842","396cba6f686e1e46bab41d2796f030d2005694313bd86b0199711eb811661237","3227f8860dca1346c30b08a6b2d66749d65f6ffaab10bc1f1bbad9db23583ac5","1e6bcca7dec48f12c2eb622d3e75a503abd1a8786b28e4c5ab9aeeabaa4db520","817f82dc697d9df3ad46d5790d6fffa3fa490c77a88488f64ab6cad508d5a94f","e18396704db58a17a9b6bc0203e69648d35e23bcb5d654183ff5aa3ebe0cfcc7","c73047306842c0bf13cd3f7b3be3af76e8d58ad16ab549a8812c4f51e4b7f76f","7faca21e2c4e0119f1386f27695516fabc4bceca350e96f6e5c37a45605779bf",{"version":"922d92b500c5359d96b1eff81fe281d1f5350120db253773a3f1c85985c4a9bf","impliedFormat":1},{"version":"ac4efaa37cc9798679da23050bd4e374affb69acda810572d73b11fce731308a","impliedFormat":1},{"version":"c477f69ebfcd6153946ce95799cf49b1c7bce11cec250dab336516b5ad27d72b","impliedFormat":1},{"version":"6355649c4afa3e56a8dd808c3330952154d900bdab5a078dbaffe3974c7baab2","impliedFormat":1},{"version":"5e7185c89a21a5406274b1f010bdce770ad45e7cf09a8b8b346bac352939164a","impliedFormat":1},{"version":"9e9df7677da806cf5eabc7899cb66f6eb075f6c20ed1761a2e882c46883d1ce6","impliedFormat":1},{"version":"633a12dbfb5225a7284b1fa29993f681edf1fe4b36178650d6b4ea1962307f07","impliedFormat":1},{"version":"31ba0d4593007ba73ea1cff32896f6ba551a5794a880c032df2d10aecbc82fe6","impliedFormat":1},{"version":"b4f9fb54a352a0319f6de11eb784b8c9be6aa7b0c65e2fbc8e6822c8f4622ec5","impliedFormat":1},{"version":"24fd9b011d5f800715009959e4c9fcf8dc8a458d4d72e762380e8031f16be8cc","impliedFormat":1},{"version":"bd9462141e563c72110be58bc0e62ca260a62abe07cb4c951d64e636eee9fa60","impliedFormat":1},{"version":"1147ac71b3cfc8d6e9ebf4bf06435bd0a5b6d72a5457b7b00428f218bd01c2e7","impliedFormat":1},{"version":"9a643956e978408cff58f04e3001a41384ed0b4b6f43eeb2a9f91a70f56d2131","impliedFormat":1},{"version":"94d96cc9eb83bf3f3b67497f77d53298fed988c2a00899ba18bc23a8455a6064","impliedFormat":1},{"version":"446d5326728f7110b6180431f407bd8a8344129621fb22130cfdb618aa62e514","impliedFormat":1},{"version":"025b16217c6d980741432fc156bdcbe22b1084f8d1f3f472f6601f09f7853415","impliedFormat":1},{"version":"afb4fe76ed12d1b7b8724321e0f13aab912e633899f7c3e37074035ee9cff91e","impliedFormat":1},{"version":"490621c395bfa973fa6a8c4afc16ccb196a5aac60b55c61d98050ce4990520a5","impliedFormat":1},{"version":"c38e7e1b936c9a8e3f01e291dbc228232c9b61ce96bdfeb78dbc3b74f987c49c","impliedFormat":1},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"e720c8a37b87f5713093ed04015dbc647996545ffc0fdf07885f444af738dcff","impliedFormat":99},{"version":"f73b596cb4b4860fd0a3ea8cab67a42ad344d95a392ca986ca4588f59ea8c2cf","impliedFormat":99},{"version":"29b9ed9e1bccc6eff19b59c3f361ee102d8a77f4409fdb56a642a09cd4142d80","impliedFormat":1},{"version":"219afaff7dd670d2b610e23f8ea09d4982a947516074fb55b7f8f2f218f8da31","impliedFormat":1},{"version":"f3233f848276835085121850b21375b1ae23b1d558e12b520c42e99f19517b05","impliedFormat":1},{"version":"12395b35d56e3162be3e6ff07945f8c385351af536c735958eba430c387fbb3f","impliedFormat":1},{"version":"9bb4778628c37e1e4f0f8379339dcd75bfae5d47fc1fb96673b4fe3f8b328197","impliedFormat":1},{"version":"73a4f0c06fbb2a75e748dae42517c062ad303b0a43d302e8fc2ff89e92f0ecde","impliedFormat":1},{"version":"1f8cd888d94150cec2d0c3b5c734caaabaa418cd10d25463c82718979ec3bec8","impliedFormat":1},{"version":"c6a6c807ba136407c33e425c37a02550b3d729deb0a4a5bb8e7cdef29eea6814","impliedFormat":1},{"version":"ddd271c30afbb3ad41466f9dd0702c868ef992912684162952b976f436dde50c","impliedFormat":1},{"version":"4f6a12044ee6f458db11964153830abbc499e73d065c51c329ec97407f4b13dd","impliedFormat":1},{"version":"cf93e7b09b66e142429611c27ba2cbf330826057e3c793e1e2861e976fae3940","impliedFormat":99},{"version":"90e727d145feb03695693fdc9f165a4dc10684713ee5f6aa81e97a6086faa0f8","impliedFormat":99},{"version":"ee2c6ec73c636c9da5ab4ce9227e5197f55a57241d66ea5828f94b69a4a09a2d","impliedFormat":99},{"version":"afaf64477630c7297e3733765046c95640ab1c63f0dfb3c624691c8445bc3b08","impliedFormat":99},{"version":"5aa03223a53ad03171988820b81a6cae9647eabcebcb987d1284799de978d8e3","impliedFormat":99},{"version":"7f50c8914983009c2b940923d891e621db624ba32968a51db46e0bf480e4e1cb","impliedFormat":99},{"version":"90fc18234b7d2e19d18ac026361aaf2f49d27c98dc30d9f01e033a9c2b01c765","impliedFormat":99},{"version":"a980e4d46239f344eb4d5442b69dcf1d46bd2acac8d908574b5a507181f7e2a1","impliedFormat":99},{"version":"bbbfa4c51cdaa6e2ef7f7be3ae199b319de6b31e3b5afa7e5a2229c14bb2568a","impliedFormat":99},{"version":"bc7bfe8f48fa3067deb3b37d4b511588b01831ba123a785ea81320fe74dd9540","impliedFormat":99},{"version":"fd60c0aaf7c52115f0e7f367d794657ac18dbb257255777406829ab65ca85746","impliedFormat":99},{"version":"15c17866d58a19f4a01a125f3f511567bd1c22235b4fd77bf90c793bf28388c3","impliedFormat":99},{"version":"51301a76264b1e1b4046f803bda44307fba403183bc274fe9e7227252d7315cb","impliedFormat":99},{"version":"ddef23e8ace6c2b2ddf8d8092d30b1dd313743f7ff47b2cbb43f36c395896008","impliedFormat":99},{"version":"9e42df47111429042b5e22561849a512ad5871668097664b8fb06a11640140ac","impliedFormat":99},{"version":"391fcc749c6f94c6c4b7f017c6a6f63296c1c9ae03fa639f99337dddb9cc33fe","impliedFormat":99},{"version":"ac4706eb1fb167b19f336a93989763ab175cd7cc6227b0dcbfa6a7824c6ba59a","impliedFormat":99},{"version":"633220dc1e1a5d0ccf11d3c3e8cadc9124daf80fef468f2ff8186a2775229de3","impliedFormat":99},{"version":"6de22ad73e332e513454f0292275155d6cb77f2f695b73f0744928c4ebb3a128","impliedFormat":99},{"version":"ebe0e3c77f5114b656d857213698fade968cff1b3a681d1868f3cfdd09d63b75","impliedFormat":99},{"version":"22c27a87488a0625657b52b9750122814c2f5582cac971484cda0dcd7a46dc3b","impliedFormat":99},{"version":"7e7a817c8ec57035b2b74df8d5dbcc376a4a60ad870b27ec35463536158e1156","impliedFormat":99},{"version":"0e2061f86ca739f34feae42fd7cce27cc171788d251a587215b33eaec456e786","impliedFormat":99},{"version":"91659b2b090cadffdb593736210910508fc5b77046d4ce180b52580b14b075ec","impliedFormat":99},{"version":"d0f6c657c45faaf576ca1a1dc64484534a8dc74ada36fd57008edc1aab65a02b","impliedFormat":99},{"version":"ce0c52b1ebc023b71d3c1fe974804a2422cf1d85d4af74bb1bced36ff3bff8b5","impliedFormat":99},{"version":"9c6acb4a388887f9a5552eda68987ee5d607152163d72f123193a984c48157c9","impliedFormat":99},{"version":"90d0a9968cbb7048015736299f96a0cceb01cf583fd2e9a9edbc632ac4c81b01","impliedFormat":99},{"version":"49abec0571c941ab6f095885a76828d50498511c03bb326eec62a852e58000c5","impliedFormat":99},{"version":"8eeb4a4ff94460051173d561749539bca870422a6400108903af2fb7a1ffe3d7","impliedFormat":99},{"version":"49e39b284b87452fed1e27ac0748ba698f5a27debe05084bc5066b3ecf4ed762","impliedFormat":99},{"version":"59dcf835762f8df90fba5a3f8ba87941467604041cf127fb456543c793b71456","impliedFormat":99},{"version":"33e0c4c683dcaeb66bedf5bb6cc35798d00ac58d7f3bc82aadb50fa475781d60","impliedFormat":99},{"version":"605839abb6d150b0d83ed3712e1b3ffbeb309e382770e7754085d36bc2d84a4c","impliedFormat":99},{"version":"a862dcb740371257e3dae1ab379b0859edcb5119484f8359a5e6fb405db9e12e","impliedFormat":99},{"version":"0f0a16a0e8037c17e28f537028215e87db047eba52281bd33484d5395402f3c1","impliedFormat":99},{"version":"cf533aed4c455b526ddccbb10dae7cc77e9269c3d7862f9e5cedbd4f5c92e05e","impliedFormat":99},{"version":"f8a60ca31702a0209ef217f8f3b4b32f498813927df2304787ac968c78d8560d","impliedFormat":99},{"version":"530192961885d3ddad87bf9c4390e12689fa29ff515df57f17a57c9125fc77c3","impliedFormat":99},{"version":"165ba9e775dd769749e2177c383d24578e3b212e4774b0a72ad0f6faee103b68","impliedFormat":99},{"version":"61448f238fdfa94e5ccce1f43a7cced5e548b1ea2d957bec5259a6e719378381","impliedFormat":99},{"version":"69fa523e48131ced0a52ab1af36c3a922c5fd7a25e474d82117329fe051f5b85","impliedFormat":99},{"version":"fa10b79cd06f5dd03435e184fb05cc5f0d02713bfb4ee9d343db527501be334c","impliedFormat":99},{"version":"c6fb591e363ee4dea2b102bb721c0921485459df23a2d2171af8354cacef4bce","impliedFormat":99},{"version":"ea7e1f1097c2e61ed6e56fa04a9d7beae9d276d87ac6edb0cd39a3ee649cddfe","impliedFormat":99},{"version":"e8cf2659d87462aae9c7647e2a256ac7dcaf2a565a9681bfb49328a8a52861e8","impliedFormat":99},{"version":"7e374cb98b705d35369b3c15444ef2ff5ff983bd2fbb77a287f7e3240abf208c","impliedFormat":99},{"version":"ca75ba1519f9a426b8c512046ebbad58231d8627678d054008c93c51bc0f3fa5","impliedFormat":99},{"version":"ff63760147d7a60dcfc4ac16e40aa2696d016b9ffe27e296b43655dfa869d66b","impliedFormat":99},{"version":"4d434123b16f46b290982907a4d24675442eb651ca95a5e98e4c274be16f1220","impliedFormat":99},{"version":"57263d6ba38046e85f499f3c0ab518cfaf0a5f5d4f53bdae896d045209ab4aff","impliedFormat":99},{"version":"d3a535f2cd5d17f12b1abf0b19a64e816b90c8c10a030b58f308c0f7f2acfe2c","impliedFormat":99},{"version":"be26d49bb713c13bd737d00ae8a61aa394f0b76bc2d5a1c93c74f59402eb8db3","impliedFormat":99},{"version":"c7012003ac0c9e6c9d3a6418128ddebf6219d904095180d4502b19c42f46a186","impliedFormat":99},{"version":"d58c55750756bcf73f474344e6b4a9376e5381e4ba7d834dc352264b491423b6","impliedFormat":99},{"version":"01e2aabfabe22b4bf6d715fc54d72d32fa860a3bd1faa8974e0d672c4b565dfe","impliedFormat":99},{"version":"ba2c489bb2566c16d28f0500b3d98013917e471c40a4417c03991460cb248e88","impliedFormat":99},{"version":"39f94b619f0844c454a6f912e5d6868d0beb32752587b134c3c858b10ecd7056","impliedFormat":99},{"version":"0d2d8b0477b1cf16b34088e786e9745c3e8145bc8eea5919b700ad054e70a095","impliedFormat":99},{"version":"2a5e963b2b8f33a50bb516215ba54a20801cb379a8e9b1ae0b311e900dc7254c","impliedFormat":99},{"version":"d8307f62b55feeb5858529314761089746dce957d2b8fd919673a4985fa4342a","impliedFormat":99},{"version":"bf449ec80fc692b2703ad03e64ae007b3513ecd507dc2ab77f39be6f578e6f5c","impliedFormat":99},{"version":"f780213dd78998daf2511385dd51abf72905f709c839a9457b6ba2a55df57be7","impliedFormat":99},{"version":"2b7843e8a9a50bdf511de24350b6d429a3ee28430f5e8af7d3599b1e9aa7057f","impliedFormat":99},{"version":"05d95be6e25b4118c2eb28667e784f0b25882f6a8486147788df675c85391ab7","impliedFormat":99},{"version":"62d2721e9f2c9197c3e2e5cffeb2f76c6412121ae155153179049890011eb785","impliedFormat":99},{"version":"ff5668fb7594c02aca5e7ba7be6c238676226e450681ca96b457f4a84898b2d9","impliedFormat":99},{"version":"59fd37ea08657fef36c55ddea879eae550ffe21d7e3a1f8699314a85a30d8ae9","impliedFormat":99},{"version":"84e23663776e080e18b25052eb3459b1a0486b5b19f674d59b96347c0cb7312a","impliedFormat":99},{"version":"43e5934c7355731eec20c5a2aa7a859086f19f60a4e5fcd80e6684228f6fb767","impliedFormat":99},{"version":"a49c210c136c518a7c08325f6058fc648f59f911c41c93de2026db692bba0e47","impliedFormat":99},{"version":"1a92f93597ebc451e9ef4b158653c8d31902de5e6c8a574470ecb6da64932df4","impliedFormat":99},{"version":"256513ad066ac9898a70ca01e6fbdb3898a4e0fe408fbf70608fdc28ac1af224","impliedFormat":99},{"version":"d9835850b6cc05c21e8d85692a8071ebcf167a4382e5e39bf700c4a1e816437e","impliedFormat":99},{"version":"e5ab7190f818442e958d0322191c24c2447ddceae393c4e811e79cda6bd49836","impliedFormat":99},{"version":"91b4b77ef81466ce894f1aade7d35d3589ddd5c9981109d1dea11f55a4b807a0","impliedFormat":99},{"version":"03abb209bed94c8c893d9872639e3789f0282061c7aa6917888965e4047a8b5f","impliedFormat":99},{"version":"e97a07901de562219f5cba545b0945a1540d9663bd9abce66495721af3903eec","impliedFormat":99},{"version":"bf39ed1fdf29bc8178055ec4ff32be6725c1de9f29c252e31bdc71baf5c227e6","impliedFormat":99},{"version":"985eabf06dac7288fc355435b18641282f86107e48334a83605739a1fe82ac15","impliedFormat":99},{"version":"6112d33bcf51e3e6f6a81e419f29580e2f8e773529d53958c7c1c99728d4fb2e","impliedFormat":99},{"version":"89e9f7e87a573504acc2e7e5ad727a110b960330657d1b9a6d3526e77c83d8be","impliedFormat":99},{"version":"44bbb88abe9958c7c417e8687abf65820385191685009cc4b739c2d270cb02e9","impliedFormat":99},{"version":"ab4b506b53d2c4aec4cc00452740c540a0e6abe7778063e95c81a5cd557c19eb","impliedFormat":99},{"version":"858757bde6d615d0d1ee474c972131c6d79c37b0b61897da7fbd7110beb8af12","impliedFormat":99},{"version":"60b9dea33807b086a1b4b4b89f72d5da27ad0dd36d6436a6e306600c47438ac4","impliedFormat":99},{"version":"409c963b1166d0c1d49fdad1dfeb4de27fd2d6662d699009857de9baf43ca7c3","impliedFormat":99},{"version":"b7674ecfeb5753e965404f7b3d31eec8450857d1a23770cb867c82f264f546ab","impliedFormat":99},{"version":"c9800b9a9ad7fcdf74ed8972a5928b66f0e4ff674d55fd038a3b1c076911dcbe","impliedFormat":99},{"version":"99864433e35b24c61f8790d2224428e3b920624c01a6d26ea8b27ee1f62836bb","impliedFormat":99},{"version":"c391317b9ff8f87d28c6bfe4e50ed92e8f8bfab1bb8a03cd1fe104ff13186f83","impliedFormat":99},{"version":"42bdc3c98446fdd528e2591213f71ce6f7008fb9bb12413bd57df60d892a3fb5","impliedFormat":99},{"version":"542d2d689b58c25d39a76312ccaea2fcd10a45fb27b890e18015399c8032e2d9","impliedFormat":99},{"version":"97d1656f0a563dbb361d22b3d7c2487427b0998f347123abd1c69a4991326c96","impliedFormat":99},{"version":"d4f53ed7960c9fba8378af3fa28e3cc483d6c0b48e4a152a83ff0973d507307d","impliedFormat":99},{"version":"0665de5280d65ec32776dc55fb37128e259e60f389cde5b9803cf9e81ad23ce0","impliedFormat":99},{"version":"b6dc8fd1c6092da86725c338ca6c263d1c6dd3073046d3ec4eb2d68515062da2","impliedFormat":99},{"version":"d9198a0f01f00870653347560e10494efeca0bfa2de0988bd5d883a9d2c47edb","impliedFormat":99},{"version":"d4279865b926d7e2cfe8863b2eae270c4c035b6e923af8f9d7e6462d68679e07","impliedFormat":99},{"version":"73b6945448bb3425b764cfe7b1c4b0b56c010cc66e5f438ef320c53e469797eb","impliedFormat":99},{"version":"cf72fd8ffa5395f4f1a26be60246ec79c5a9ad201579c9ba63fd2607b5daf184","impliedFormat":99},{"version":"301a458744666096f84580a78cc3f6e8411f8bab92608cdaa33707546ca2906f","impliedFormat":99},{"version":"711e70c0916ff5f821ea208043ecd3e67ed09434b8a31d5616286802b58ebebe","impliedFormat":99},{"version":"e1f2fd9f88dd0e40c358fbf8c8f992211ab00a699e7d6823579b615b874a8453","impliedFormat":99},{"version":"17db3a9dcb2e1689ff7ace9c94fa110c88da64d69f01dc2f3cec698e4fc7e29e","impliedFormat":99},{"version":"73fb07305106bb18c2230890fcacf910fd1a7a77d93ac12ec40bc04c49ee5b8e","impliedFormat":99},{"version":"2c5f341625a45530b040d59a4bc2bc83824d258985ede10c67005be72d3e21d0","impliedFormat":99},{"version":"c4a262730d4277ecaaf6f6553dabecc84dcca8decaebbf2e16f1df8bbd996397","impliedFormat":99},{"version":"c23c533d85518f3358c55a7f19ab1a05aad290251e8bba0947bd19ea3c259467","impliedFormat":99},{"version":"5d0322a0b8cdc67b8c71e4ccaa30286b0c8453211d4c955a217ac2d3590e911f","impliedFormat":99},{"version":"f5e4032b6e4e116e7fec5b2620a2a35d0b6b8b4a1cc9b94a8e5ee76190153110","impliedFormat":99},{"version":"9ab26cb62a0e86ab7f669c311eb0c4d665457eb70a103508aa39da6ccee663da","impliedFormat":99},{"version":"5f64d1a11d8d4ce2c7ee3b72471df76b82d178a48964a14cdfdc7c5ef7276d70","impliedFormat":99},{"version":"24e2fbc48f65814e691d9377399807b9ec22cd54b51d631ba9e48ee18c5939dd","impliedFormat":99},{"version":"bfa2648b2ee90268c6b6f19e84da3176b4d46329c9ec0555d470e647d0568dfb","impliedFormat":99},{"version":"75ef3cb4e7b3583ba268a094c1bd16ce31023f2c3d1ac36e75ca65aca9721534","impliedFormat":99},{"version":"3be6b3304a81d0301838860fd3b4536c2b93390e785808a1f1a30e4135501514","impliedFormat":99},{"version":"da66c1b3e50ef9908e31ce7a281b137b2db41423c2b143c62524f97a536a53d9","impliedFormat":99},{"version":"3ada1b216e45bb9e32e30d8179a0a95870576fe949c33d9767823ccf4f4f4c97","impliedFormat":99},{"version":"1ace2885dffab849f7c98bffe3d1233260fbf07ee62cb58130167fd67a376a65","impliedFormat":99},{"version":"2126e5989c0ca5194d883cf9e9c10fe3e5224fbd3e4a4a6267677544e8be0aae","impliedFormat":99},{"version":"41a6738cf3c756af74753c5033e95c5b33dfc1f6e1287fa769a1ac4027335bf5","impliedFormat":99},{"version":"6e8630be5b0166cbc9f359b9f9e42801626d64ff1702dcb691af811149766154","impliedFormat":99},{"version":"e36b77c04e00b4a0bb4e1364f2646618a54910c27f6dc3fc558ca2ced8ca5bc5","impliedFormat":99},{"version":"2c4ea7e9f95a558f46c89726d1fedcb525ef649eb755a3d7d5055e22b80c2904","impliedFormat":99},{"version":"4875d65190e789fad05e73abd178297b386806b88b624328222d82e455c0f2e7","impliedFormat":99},{"version":"bf5302ecfaacee37c2316e33703723d62e66590093738c8921773ee30f2ecc38","impliedFormat":99},{"version":"62684064fe034d54b87f62ad416f41b98a405dee4146d0ec03b198c3634ea93c","impliedFormat":99},{"version":"be02cbdb1688c8387f8a76a9c6ed9d75d8bb794ec5b9b1d2ba3339a952a00614","impliedFormat":99},{"version":"cefaff060473a5dbf4939ee1b52eb900f215f8d6249dc7c058d6b869d599983c","impliedFormat":99},{"version":"b2797235a4c1a7442a6f326f28ffb966226c3419399dbb33634b8159af2c712f","impliedFormat":99},{"version":"164d633bbd4329794d329219fc173c3de85d5ad866d44e5b5f0fb60c140e98f2","impliedFormat":99},{"version":"b74300dd0a52eaf564b3757c07d07e1d92def4e3b8708f12eedb40033e4cafe9","impliedFormat":99},{"version":"a792f80b1e265b06dce1783992dbee2b45815a7bdc030782464b8cf982337cf2","impliedFormat":99},{"version":"8816b4b3a87d9b77f0355e616b38ed5054f993cc4c141101297f1914976a94b1","impliedFormat":99},{"version":"0f35e4da974793534c4ca1cdd9491eab6993f8cf47103dadfc048b899ed9b511","impliedFormat":99},{"version":"0ccdfcaebf297ec7b9dde20bbbc8539d5951a3d8aaa40665ca469da27f5a86e1","impliedFormat":99},{"version":"7fcb05c8ce81f05499c7b0488ae02a0a1ac6aebc78c01e9f8c42d98f7ba68140","impliedFormat":99},{"version":"81c376c9e4d227a4629c7fca9dde3bbdfa44bd5bd281aee0ed03801182368dc5","impliedFormat":99},{"version":"0f2448f95110c3714797e4c043bbc539368e9c4c33586d03ecda166aa9908843","impliedFormat":99},{"version":"b2f1a443f7f3982d7325775906b51665fe875c82a62be3528a36184852faa0bb","impliedFormat":99},{"version":"7568ff1f23363d7ee349105eb936e156d61aea8864187a4c5d85c60594b44a25","impliedFormat":99},{"version":"8c4d1d9a4eba4eac69e6da0f599a424b2689aee55a455f0b5a7f27a807e064db","impliedFormat":99},{"version":"e1beb9077c100bdd0fc8e727615f5dae2c6e1207de224569421907072f4ec885","impliedFormat":99},{"version":"3dda13836320ec71b95a68cd3d91a27118b34c05a2bfda3e7e51f1d8ca9b960b","impliedFormat":99},{"version":"fedc79cb91f2b3a14e832d7a8e3d58eb02b5d5411c843fcbdc79e35041316b36","impliedFormat":99},{"version":"99f395322ffae908dcdfbaa2624cc7a2a2cb7b0fbf1a1274aca506f7b57ebcb5","impliedFormat":99},{"version":"5e1f7c43e8d45f2222a5c61cbc88b074f4aaf1ca4b118ac6d6123c858efdcd71","impliedFormat":99},{"version":"7388273ab71cb8f22b3f25ffd8d44a37d5740077c4d87023da25575204d57872","impliedFormat":99},{"version":"0a48ceb01a0fdfc506aa20dfd8a3563edbdeaa53a8333ddf261d2ee87669ea7b","impliedFormat":99},{"version":"3182d06b874f31e8e55f91ea706c85d5f207f16273480f46438781d0bd2a46a1","impliedFormat":99},{"version":"ccd47cab635e8f71693fa4e2bbb7969f559972dae97bd5dbd1bbfee77a63b410","impliedFormat":99},{"version":"89770fa14c037f3dc3882e6c56be1c01bb495c81dec96fa29f868185d9555a5d","impliedFormat":99},{"version":"7048c397f08c54099c52e6b9d90623dc9dc6811ea142f8af3200e40d66a972e1","impliedFormat":99},{"version":"512120cd6f026ce1d3cf686c6ab5da80caa40ef92aa47466ec60ba61a48b5551","impliedFormat":99},{"version":"6cd0cb7f999f221e984157a7640e7871960131f6b221d67e4fdc2a53937c6770","impliedFormat":99},{"version":"f48b84a0884776f1bc5bf0fcf3f69832e97b97dc55d79d7557f344de900d259b","impliedFormat":99},{"version":"dca490d986411644b0f9edf6ea701016836558e8677c150dca8ad315178ec735","impliedFormat":99},{"version":"a028a04948cf98c1233166b48887dad324e8fe424a4be368a287c706d9ccd491","impliedFormat":99},{"version":"3046ed22c701f24272534b293c10cfd17b0f6a89c2ec6014c9a44a90963dfa06","impliedFormat":99},{"version":"394da10397d272f19a324c95bea7492faadf2263da157831e02ae1107bd410f5","impliedFormat":99},{"version":"0580595a99248b2d30d03f2307c50f14eb21716a55beb84dd09d240b1b087a42","impliedFormat":99},{"version":"a7da9510150f36a9bea61513b107b59a423fdff54429ad38547c7475cd390e95","impliedFormat":99},{"version":"659615f96e64361af7127645bb91f287f7b46c5d03bea7371e6e02099226d818","impliedFormat":99},{"version":"1f2a42974920476ce46bb666cd9b3c1b82b2072b66ccd0d775aa960532d78176","impliedFormat":99},{"version":"500b3ae6095cbab92d81de0b40c9129f5524d10ad955643f81fc07d726c5a667","impliedFormat":99},{"version":"a957ad4bd562be0662fb99599dbcf0e16d1631f857e5e1a83a3f3afb6c226059","impliedFormat":99},{"version":"e57a4915266a6a751c6c172e8f30f6df44a495608613e1f1c410196207da9641","impliedFormat":99},{"version":"7a12e57143b7bc5a52a41a8c4e6283a8f8d59a5e302478185fb623a7157fff5e","impliedFormat":99},{"version":"17b3426162e1d9cb0a843e8d04212aabe461d53548e671236de957ed3ae9471b","impliedFormat":99},{"version":"f38e86eb00398d63180210c5090ef6ed065004474361146573f98b3c8a96477d","impliedFormat":99},{"version":"231d9e32382d3971f58325e5a85ba283a2021243651cb650f82f87a1bf62d649","impliedFormat":99},{"version":"6532e3e87b87c95f0771611afce929b5bad9d2c94855b19b29b3246937c9840b","impliedFormat":99},{"version":"65704bbb8f0b55c73871335edd3c9cead7c9f0d4b21f64f5d22d0987c45687f0","impliedFormat":99},{"version":"787232f574af2253ac860f22a445c755d57c73a69a402823ae81ba0dfdd1ce23","impliedFormat":99},{"version":"5e63903cd5ebce02486b91647d951d61a16ad80d65f9c56581cd624f39a66007","impliedFormat":99},{"version":"bcc89a120d8f3c02411f4df6b1d989143c01369314e9b0e04794441e6b078d22","impliedFormat":99},{"version":"d17531ef42b7c76d953f63bd5c5cd927c4723e62a7e0b2badf812d5f35f784eb","impliedFormat":99},{"version":"6d4ee1a8e3a97168ea4c4cc1c68bb61a3fd77134f15c71bb9f3f63df3d26b54c","impliedFormat":99},{"version":"1eb04fea6b47b16922ed79625d90431a8b2fc7ba9d5768b255e62df0c96f1e3a","impliedFormat":99},{"version":"de0c2eece83bd81b8682f4496f558beb728263e17e74cbc4910e5c9ce7bef689","impliedFormat":99},{"version":"98866542d45306dab48ecc3ddd98ee54fa983353bc3139dfbc619df882f54d90","impliedFormat":99},{"version":"9e04c7708917af428c165f1e38536ddb2e8ecd576f55ed11a97442dc34b6b010","impliedFormat":99},{"version":"31fe6f6d02b53c1a7c34b8d8f8c87ee9b6dd4b67f158cbfff3034b4f3f69c409","impliedFormat":99},{"version":"2e1d853f84188e8e002361f4bfdd892ac31c68acaeac426a63cd4ff7abf150d0","impliedFormat":99},{"version":"666b5289ec8a01c4cc0977c62e3fd32e89a8e3fd9e97c8d8fd646f632e63c055","impliedFormat":99},{"version":"a1107bbb2b10982dba1f7958a6a5cf841e1a19d6976d0ecdc4c43269c7b0eaf2","impliedFormat":99},{"version":"07fa6122f7495331f39167ec9e4ebd990146a20f99c16c17bc0a98aa81f63b27","impliedFormat":99},{"version":"39c1483481b35c2123eaab5094a8b548a0c3f1e483ab7338102c3291f1ab18bf","impliedFormat":99},{"version":"b73e6242c13796e7d5fba225bf1c07c8ee66d31b7bb65f45be14226a9ae492d2","impliedFormat":99},{"version":"f2931608d541145d189390d6cfb74e1b1e88f73c0b9a80c4356a4daa7fa5e005","impliedFormat":99},{"version":"8684656fe3bf1425a91bd62b8b455a1c7ec18b074fd695793cfae44ae02e381a","impliedFormat":99},{"version":"ccf0b9057dd65c7fb5e237de34f706966ebc30c6d3669715ed05e76225f54fbd","impliedFormat":99},{"version":"d930f077da575e8ea761e3d644d4c6279e2d847bae2b3ea893bbd572315acc21","impliedFormat":99},{"version":"19b0616946cb615abde72c6d69049f136cc4821b784634771c1d73bec8005f73","impliedFormat":99},{"version":"553312560ad0ef97b344b653931935d6e80840c2de6ab90b8be43cbacf0d04cf","impliedFormat":99},{"version":"1225cf1910667bfd52b4daa9974197c3485f21fe631c3ce9db3b733334199faa","impliedFormat":99},{"version":"f7cb9e46bd6ab9d620d68257b525dbbbbc9b0b148adf500b819d756ebc339de0","impliedFormat":99},{"version":"e46d6c3120aca07ae8ec3189edf518c667d027478810ca67a62431a0fa545434","impliedFormat":99},{"version":"9d234b7d2f662a135d430d3190fc21074325f296273125244b2bf8328b5839a0","impliedFormat":99},{"version":"0554ef14d10acea403348c53436b1dd8d61e7c73ef5872e2fe69cc1c433b02f8","impliedFormat":99},{"version":"2f6ae5538090db60514336bd1441ca208a8fab13108cfa4b311e61eaca5ff716","impliedFormat":99},{"version":"17bf4ce505a4cff88fb56177a8f7eb48aa55c22ccc4cce3e49cc5c8ddc54b07d","impliedFormat":99},{"version":"3d735f493d7da48156b79b4d8a406bf2bbf7e3fe379210d8f7c085028143ee40","impliedFormat":99},{"version":"41de1b3ddd71bd0d9ed7ac217ca1b15b177dd731d5251cde094945c20a715d03","impliedFormat":99},{"version":"17d9c562a46c6a25bc2f317c9b06dd4e8e0368cbe9bdf89be6117aeafd577b36","impliedFormat":99},{"version":"ded799031fe18a0bb5e78be38a6ae168458ff41b6c6542392b009d2abe6a6f32","impliedFormat":99},{"version":"ed48d467a7b25ee1a2769adebc198b647a820e242c96a5f96c1e6c27a40ab131","impliedFormat":99},{"version":"b914114df05f286897a1ae85d2df39cfd98ed8da68754d73cf830159e85ddd15","impliedFormat":99},{"version":"73881e647da3c226f21e0b80e216feaf14a5541a861494c744e9fbe1c3b3a6af","impliedFormat":99},{"version":"d79e1d31b939fa99694f2d6fbdd19870147401dbb3f42214e84c011e7ec359ab","impliedFormat":99},{"version":"4f71097eae7aa37941bab39beb2e53e624321fd341c12cc1d400eb7a805691ff","impliedFormat":99},{"version":"58ebb4f21f3a90dda31a01764462aa617849fdb1b592f3a8d875c85019956aff","impliedFormat":99},{"version":"a8e8d0e6efff70f3c28d3e384f9d64530c7a7596a201e4879a7fd75c7d55cbb5","impliedFormat":99},{"version":"df5cbb80d8353bf0511a4047cc7b8434b0be12e280b6cf3de919d5a3380912c0","impliedFormat":99},{"version":"256eb0520e822b56f720962edd7807ed36abdf7ea23bcadf4a25929a3317c8cf","impliedFormat":99},{"version":"9cf2cbc9ceb5f718c1705f37ce5454f14d3b89f690d9864394963567673c1b5c","impliedFormat":99},{"version":"07d3dd790cf1e66bb6fc9806d014dd40bb2055f8d6ca3811cf0e12f92ba4cb9a","impliedFormat":99},{"version":"1f99fd62e9cff9b50c36f368caf3b9fb79fc6f6c75ca5d3c2ec4afaea08d9109","impliedFormat":99},{"version":"6558faaacba5622ef7f1fdfb843cd967af2c105469b9ff5c18a81ce85178fca7","impliedFormat":99},{"version":"34e7f17ae9395b0269cd3f2f0af10709e6dc975c5b44a36b6b70442dc5e25a38","impliedFormat":99},{"version":"a4295111b54f84c02c27e46b0855b02fad3421ae1d2d7e67ecf16cb49538280a","impliedFormat":99},{"version":"ce9746b2ceae2388b7be9fe1f009dcecbc65f0bdbc16f40c0027fab0fb848c3b","impliedFormat":99},{"version":"35ce823a59f397f0e85295387778f51467cea137d787df385be57a2099752bfb","impliedFormat":99},{"version":"2e5acd3ec67bc309e4f679a70c894f809863c33b9572a8da0b78db403edfa106","impliedFormat":99},{"version":"1872f3fcea0643d5e03b19a19d777704320f857d1be0eb4ee372681357e20c88","impliedFormat":99},{"version":"9689628941205e40dcbb2706d1833bd00ce7510d333b2ef08be24ecbf3eb1a37","impliedFormat":99},{"version":"0317a72a0b63094781476cf1d2d27585d00eb2b0ca62b5287124735912f3d048","impliedFormat":99},{"version":"6ce4c0ab3450a4fff25d60a058a25039cffd03141549589689f5a17055ad0545","impliedFormat":99},{"version":"9153ec7b0577ae77349d2c5e8c5dd57163f41853b80c4fb5ce342c7a431cbe1e","impliedFormat":99},{"version":"f490dfa4619e48edd594a36079950c9fca1230efb3a82aaf325047262ba07379","impliedFormat":99},{"version":"674f00085caff46d2cbc76fc74740fd31f49d53396804558573421e138be0c12","impliedFormat":99},{"version":"41d029194c4811f09b350a1e858143c191073007a9ee836061090ed0143ad94f","impliedFormat":99},{"version":"44a6259ffd6febd8510b9a9b13a700e1d022530d8b33663f0735dbb3bee67b3d","impliedFormat":99},{"version":"6f4322500aff8676d9b8eef7711c7166708d4a0686b792aa4b158e276ed946a7","impliedFormat":99},{"version":"e829ff9ecffa3510d3a4d2c3e4e9b54d4a4ccfef004bacbb1d6919ce3ccca01f","impliedFormat":99},{"version":"62e6fec9dbd012460b47af7e727ec4cd34345b6e4311e781f040e6b640d7f93e","impliedFormat":99},{"version":"4d180dd4d0785f2cd140bc069d56285d0121d95b53e4348feb4f62db2d7035d3","impliedFormat":99},{"version":"f1142cbba31d7f492d2e7c91d82211a8334e6642efe52b71d9a82cb95ba4e8ae","impliedFormat":99},{"version":"279cac827be5d48c0f69fe319dc38c876fdd076b66995d9779c43558552d8a50","impliedFormat":99},{"version":"a70ff3c65dc0e7213bfe0d81c072951db9f5b1e640eb66c1eaed0737879c797b","impliedFormat":99},{"version":"f75d3303c1750f4fdacd23354657eca09aae16122c344e65b8c14c570ff67df5","impliedFormat":99},{"version":"3ebae6a418229d4b303f8e0fdb14de83f39fba9f57b39d5f213398bca72137c7","impliedFormat":99},{"version":"21ba07e33265f59d52dece5ac44f933b2b464059514587e64ad5182ddf34a9b0","impliedFormat":99},{"version":"2d3d96efba00493059c460fd55e6206b0667fc2e73215c4f1a9eb559b550021f","impliedFormat":99},{"version":"d23d4a57fff5cec5607521ba3b72f372e3d735d0f6b11a4681655b0bdd0505f4","impliedFormat":99},{"version":"395c1f3da7e9c87097c8095acbb361541480bf5fd7fa92523985019fef7761dd","impliedFormat":99},{"version":"d61f3d719293c2f92a04ba73d08536940805938ecab89ac35ceabc8a48ccb648","impliedFormat":99},{"version":"ca693235a1242bcd97254f43a17592aa84af66ccb7497333ccfea54842fde648","impliedFormat":99},{"version":"cd41cf040b2e368382f2382ec9145824777233730e3965e9a7ba4523a6a4698e","impliedFormat":99},{"version":"2e7a9dba6512b0310c037a28d27330520904cf5063ca19f034b74ad280dbfe71","impliedFormat":99},{"version":"9f2a38baf702e6cb98e0392fa39d25a64c41457a827b935b366c5e0980a6a667","impliedFormat":99},{"version":"c1dc37f0e7252928f73d03b0d6b46feb26dea3d8737a531ca4c0ec4105e33120","impliedFormat":99},{"version":"25126b80243fb499517e94fc5afe5c9c5df3a0105618e33581fb5b2f2622f342","impliedFormat":99},{"version":"d332c2ddcb64012290eb14753c1b49fe3eee9ca067204efba1cf31c1ce1ee020","impliedFormat":99},{"version":"1be8da453470021f6fe936ba19ee0bfebc7cfa2406953fa56e78940467c90769","impliedFormat":99},{"version":"7c9f2d62d83f1292a183a44fb7fb1f16eb9037deb05691d307d4017ac8af850a","impliedFormat":99},{"version":"d0163ab7b0de6e23b8562af8b5b4adea4182884ca7543488f7ac2a3478f3ae6e","impliedFormat":99},{"version":"05224e15c6e51c4c6cd08c65f0766723f6b39165534b67546076c226661db691","impliedFormat":99},{"version":"a5f7158823c7700dd9fc1843a94b9edc309180c969fbfa6d591aeb0b33d3b514","impliedFormat":99},{"version":"7d30937f8cf9bb0d4b2c2a8fb56a415d7ef393f6252b24e4863f3d7b84285724","impliedFormat":99},{"version":"e04d074584483dc9c59341f9f36c7220f16eed09f7af1fa3ef9c64c26095faec","impliedFormat":99},{"version":"619697e06cbc2c77edda949a83a62047e777efacde1433e895b904fe4877c650","impliedFormat":99},{"version":"88d9a8593d2e6aee67f7b15a25bda62652c77be72b79afbee52bea61d5ffb39e","impliedFormat":99},{"version":"044d7acfc9bd1af21951e32252cf8f3a11c8b35a704169115ddcbde9fd717de2","impliedFormat":99},{"version":"a4ca8f13a91bd80e6d7a4f013b8a9e156fbf579bbec981fe724dad38719cfe01","impliedFormat":99},{"version":"5a216426a68418e37e55c7a4366bc50efc99bda9dc361eae94d7e336da96c027","impliedFormat":99},{"version":"13b65b640306755096d304e76d4a237d21103de88b474634f7ae13a2fac722d5","impliedFormat":99},{"version":"7478bd43e449d3ce4e94f3ed1105c65007b21f078b3a791ea5d2c47b30ea6962","impliedFormat":99},{"version":"601d3e8e71b7d6a24fc003aca9989a6c25fa2b3755df196fd0aaee709d190303","impliedFormat":99},{"version":"168e0850fcc94011e4477e31eca81a8a8a71e1aed66d056b7b50196b877e86c8","impliedFormat":99},{"version":"37ba82d63f5f8c6b4fc9b756f24902e47f62ea66aae07e89ace445a54190a86e","impliedFormat":99},{"version":"f5b66b855f0496bc05f1cd9ba51a6a9de3d989b24aa36f6017257f01c8b65a9f","impliedFormat":99},{"version":"823b16d378e8456fcc5503d6253c8b13659be44435151c6b9f140c4a38ec98c1","impliedFormat":99},{"version":"b58b254bf1b586222844c04b3cdec396e16c811463bf187615bb0a1584beb100","impliedFormat":99},{"version":"a367c2ccfb2460e222c5d10d304e980bd172dd668bcc02f6c2ff626e71e90d75","impliedFormat":99},{"version":"0718623262ac94b016cb0cfd8d54e4d5b7b1d3941c01d85cf95c25ec1ba5ed8d","impliedFormat":99},{"version":"d4f3c9a0bd129e9c7cbfac02b6647e34718a2b81a414d914e8bd6b76341172e0","impliedFormat":99},{"version":"824306df6196f1e0222ff775c8023d399091ada2f10f2995ce53f5e3d4aff7a4","impliedFormat":99},{"version":"84ca07a8d57f1a6ba8c0cf264180d681f7afae995631c6ca9f2b85ec6ee06c0f","impliedFormat":99},{"version":"35755e61e9f4ec82d059efdbe3d1abcccc97a8a839f1dbf2e73ac1965f266847","impliedFormat":99},{"version":"64a918a5aa97a37400ec085ffeea12a14211aa799cd34e5dc828beb1806e95bb","impliedFormat":99},{"version":"0c8f5489ba6af02a4b1d5ba280e7badd58f30dc8eb716113b679e9d7c31185e5","impliedFormat":99},{"version":"7b574ca9ae0417203cdfa621ab1585de5b90c4bc6eea77a465b2eb8b92aa5380","impliedFormat":99},{"version":"3334c03c15102700973e3e334954ac1dffb7be7704c67cc272822d5895215c93","impliedFormat":99},{"version":"aabcb169451df7f78eb43567fab877a74d134a0a6d9850aa58b38321374ab7c0","impliedFormat":99},{"version":"1b5effdd8b4e8d9897fc34ab4cd708a446bf79db4cb9a3467e4a30d55b502e14","impliedFormat":99},{"version":"d772776a7aea246fd72c5818de72c3654f556b2cf0d73b90930c9c187cc055fc","impliedFormat":99},{"version":"dbd4bd62f433f14a419e4c6130075199eb15f2812d2d8e7c9e1f297f4daac788","impliedFormat":99},{"version":"427df949f5f10c73bcc77b2999893bc66c17579ad073ee5f5270a2b30651c873","impliedFormat":99},{"version":"c4c1a5565b9b85abfa1d663ca386d959d55361e801e8d49155a14dd6ca41abe1","impliedFormat":99},{"version":"7a45a45c277686aaff716db75a8157d0458a0d854bacf072c47fee3d499d7a99","impliedFormat":99},{"version":"57005b72bce2dc26293e8924f9c6be7ee3a2c1b71028a680f329762fa4439354","impliedFormat":99},{"version":"8f53b1f97c53c3573c16d0225ee3187d22f14f01421e3c6da1a26a1aace32356","impliedFormat":99},{"version":"810fdc0e554ed7315c723b91f6fa6ef3a6859b943b4cd82879641563b0e6c390","impliedFormat":99},{"version":"87a36b177b04d23214aa4502a0011cd65079e208cd60654aefc47d0d65da68ea","impliedFormat":99},{"version":"28a1c17fcbb9e66d7193caca68bbd12115518f186d90fc729a71869f96e2c07b","impliedFormat":99},{"version":"cc2d2abbb1cc7d6453c6fee760b04a516aa425187d65e296a8aacff66a49598a","impliedFormat":99},{"version":"d2413645bc4ab9c3f3688c5281232e6538684e84b49a57d8a1a8b2e5cf9f2041","impliedFormat":99},{"version":"4e6e21a0f9718282d342e66c83b2cd9aa7cd777dfcf2abd93552da694103b3dc","impliedFormat":99},{"version":"9006cc15c3a35e49508598a51664aa34ae59fc7ab32d6cc6ea2ec68d1c39448e","impliedFormat":99},{"version":"74467b184eadee6186a17cac579938d62eceb6d89c923ae67d058e2bcded254e","impliedFormat":99},{"version":"4169b96bb6309a2619f16d17307da341758da2917ff40c615568217b14357f5e","impliedFormat":99},{"version":"4a94d6146b38050de0830019a1c6a7820c2e2b90eba1a5ee4e4ab3bc30a72036","impliedFormat":99},{"version":"48a35ece156203abf19864daa984475055bbed4dc9049d07f4462100363f1e85","impliedFormat":99},{"version":"2a80ab285da5ec06299594edb456abd51ee69a7506278cca24e1ab494a86952b","impliedFormat":99},{"version":"5cd9fd926e2034c7eeec3de6138e18bafe092e0672f8bccdc1a0669393af60db","impliedFormat":1},{"version":"13d7630be2b4951d99f5ac0bd83e07b4ab9e8b4f3a97e9ad5210ea6eed86fd82","impliedFormat":99},{"version":"a8edf6901be3952dd6ce40004267994165eeb9a51dd48363f43f206a5afc4547","impliedFormat":99},{"version":"865e26608ad2160d9ffcb981dc4649119471855f0467893934e3ab7c22b132e9","impliedFormat":1},{"version":"2bf40a9b2a42dc6f0e2a740fbc1c88c1998d25727b87ed0cf885284cb1e16c44","impliedFormat":1},{"version":"678ce9e1aaba570c9e5bcb5ecfac009720a60ec616bbbc9825fd04d63b53b751","impliedFormat":1},{"version":"b79cc2fb1ad4a842bbb8eecdc632a7f18ee303bd3fa58e972fa3720189859132","impliedFormat":1},{"version":"44338602a65a3e3fc8dfb35b09e6116d05d2c8019e90c8d0237b203cb3b5beb6","impliedFormat":1},{"version":"b2af1e9faa4f6750ca01407fadd7a90eac3f4615df984170cc53f6d7902d3250","impliedFormat":1},{"version":"690872b554003d24a4f905afd2a7bdd6ca9e3f1ea3276eb3dfa43290e7fa57c5","impliedFormat":1},{"version":"20b1ec36566c5915f77b422691e3ce8e467c195af9c9fe2adee1b9f95cfe59ff","impliedFormat":1},{"version":"54e9dbc82c0d74af574f927f8cd1b567be6d275b23984bd1ac602b3f0d385a63","impliedFormat":1},{"version":"ad53bd475d89e449c6539258e64745d35a8ad4eb75ed20c52b2979ba27eb799d","impliedFormat":1},{"version":"fa46c917a8cd50fe346b4646a7b52d9d9223b1d746056bfdac0153f4ea7c62e3","impliedFormat":1},{"version":"95bb7829186cdf1f69e548c9a5cdfa7776e85322ead227812293702128b7e45b","impliedFormat":1},{"version":"fe656648cc1b58e401fa0d0492bf16c0883663c82a819feef879483d20a04da7","impliedFormat":1},{"version":"dae408255bd416b2717a0be18188a64a4530a9440a662b9b470b0a136c75965b","impliedFormat":1},{"version":"1180af664bda92e8c27b788976e0b3c7483201b27efe6f64300c8fd5dfdb7089","impliedFormat":1},{"version":"6d0a1eb807e4f7c63f42c1b164d2c44f7ded4b058ae9232221f14af24869a5d2","impliedFormat":1},{"version":"2b6891c13b74886d1bb32cae8b8531997717eb279cbb147932bf204220db1f69","impliedFormat":1},{"version":"7a7cf51c1625984c330021ca597a88cbf727ab2643f7db8a3bfe22aa84084942","impliedFormat":1},{"version":"ff4b5d69e379c7d2763d952ffcd1e38d95c697658224c7f612735c0c67811834","impliedFormat":1},{"version":"513299726fe81a4e8b949fc555495cc40808bbfa84cde96534773cfdcf459ba7","impliedFormat":1},{"version":"33a29f53161aa4d0778b333128b8687b743fc77173f8ade3f73c13659cf14134","impliedFormat":1},{"version":"98b9efc8d590ecc3762c6c93735bf24266c7f1bfc06f983b5098578352075b64","impliedFormat":1},{"version":"748bc14a2fb8c21ff58b57c87a21bdb9d049bb0266525050d35384c30c44bbde","impliedFormat":1},{"version":"59ee3a45a164d5c29d135c8e713c484f154f421141c614b72b3c8103bff2f816","impliedFormat":1},{"version":"de346ee3e7c0e57a62ee18acd9b9cda57c596eca1fd7162cee0323f55366c0fb","impliedFormat":1},{"version":"df6163feb8cc511ace0d25009ed44f526e91f74b8eac78986bf3a56fccbdadac","impliedFormat":1},{"version":"d559cc752ef17b882fef1b5a2cf5cef76669620f28a0d6098e57b4b5da5eb6de","impliedFormat":1},{"version":"752c7d54e9d328c8aa47c89520fdb38c99ef0132e089cb7bde73bbcddc0b48ed","impliedFormat":1},{"version":"731160a68d1380ca76430a673f064d1b9b567524807f6015b477cd64d36c51fe","impliedFormat":1},{"version":"70a29119482d358ab4f28d28ee2dcd05d6cbf8e678068855d016e10a9256ec12","impliedFormat":1},{"version":"869ac759ae8f304536d609082732cb025a08dcc38237fe619caf3fcdd41dde6f","impliedFormat":1},{"version":"0ea900fe6565f9133e06bce92e3e9a4b5a69234e83d40b7df2e1752b8d2b5002","impliedFormat":1},{"version":"e5408f95ca9ac5997c0fea772d68b1bf390e16c2a8cad62858553409f2b12412","impliedFormat":1},{"version":"3c1332a48695617fc5c8a1aead8f09758c2e73018bd139882283fb5a5b8536a6","impliedFormat":1},{"version":"9260b03453970e98ce9b1ad851275acd9c7d213c26c7d86bae096e8e9db4e62b","impliedFormat":1},{"version":"083838d2f5fea0c28f02ce67087101f43bd6e8697c51fd48029261653095080c","impliedFormat":1},{"version":"969132719f0f5822e669f6da7bd58ea0eb47f7899c1db854f8f06379f753b365","impliedFormat":1},{"version":"94ca5d43ff6f9dc8b1812b0770b761392e6eac1948d99d2da443dc63c32b2ec1","impliedFormat":1},{"version":"2cbc88cf54c50e74ee5642c12217e6fd5415e1b35232d5666d53418bae210b3b","impliedFormat":1},{"version":"ccb226557417c606f8b1bba85d178f4bcea3f8ae67b0e86292709a634a1d389d","impliedFormat":1},{"version":"5ea98f44cc9de1fe05d037afe4813f3dcd3a8c5de43bdd7db24624a364fad8e6","impliedFormat":1},{"version":"5260a62a7d326565c7b42293ed427e4186b9d43d6f160f50e134a18385970d02","impliedFormat":1},{"version":"0b3fc2d2d41ad187962c43cb38117d0aee0d3d515c8a6750aaea467da76b42aa","impliedFormat":1},{"version":"ed219f328224100dad91505388453a8c24a97367d1bc13dcec82c72ab13012b7","impliedFormat":1},{"version":"6847b17c96eb44634daa112849db0c9ade344fe23e6ced190b7eeb862beca9f4","impliedFormat":1},{"version":"d479a5128f27f63b58d57a61e062bd68fa43b684271449a73a4d3e3666a599a7","impliedFormat":1},{"version":"6f308b141358ac799edc3e83e887441852205dc1348310d30b62c69438b93ca0","impliedFormat":1},{"version":"486ce5135771d0b249145f0a1560d8766b35e5e215c0be86eff8b41f80bbcb9e","impliedFormat":1},{"version":"53c917a6d42ee959dfa8f842d612b59f5ac03a72905371fbd5371b1131d7d48d","impliedFormat":1},{"version":"2dc807c070380e3e5402f2f5ff635482e6f9fb43c244bd3a66c682a4aab7a2f8","impliedFormat":1},{"version":"39b4475e6e998885a7a0e69dc1c67ee6facced3ec7234109cefadfc7ef31e276","impliedFormat":1},{"version":"7f4bc4c6f05fa992e11f8b335db63589c556cf683a822f071c01a46d59912e49","impliedFormat":1},{"version":"b38cfb3dc5ce58b0993a9686064c31ca5b8ced1781043249089d171fa1c4fd70","impliedFormat":1},{"version":"e787c7a8b0854d8cb32d48450f95b3737b61a8be697c65d1241ba445b4261e70","impliedFormat":1},{"version":"61359565523e1c4e5b7f8af67e9a69ef177aae2903fc55db2029efa71c42f295","impliedFormat":1},{"version":"973fa3744879daa9ed6a4095b8da2cdd2bc4acd6007aaa87be9b2eab1d6ddc15","impliedFormat":1},{"version":"5cdecf081bf87b64f0afc929d9bf6ddd8731e550f6eb1846dd4513b441301890","impliedFormat":1},{"version":"65d5005eae8ea5af10b8416979cb6fcaaca374d3bc753fefb2aa0ad951e2351f","impliedFormat":1},{"version":"86feb3cb6b01919550f5c846eeae1b36707fe420d16ff7b603d27e53af450e70","impliedFormat":1},{"version":"115619837222e0263791637a3bf476060a93c7236c2b00109b0f0ab33cd6c7c8","impliedFormat":1},{"version":"e4b7cc0c48b817e78119edc65f0607d535bd537ba8a77a2937405f86393b08bd","impliedFormat":1},{"version":"6af30731a08e7b04632d135097de6b5e180bbc447d21771208415fab7489e4e4","impliedFormat":1},{"version":"12388dc354e536eba298cb55914496c389ef554ea1ab749e6b7aa6f39c74bb94","impliedFormat":1},{"version":"d1980619beb34b5b0fd0cdd3cd98c32fd38035127b4c2720b43b002a3377a842","impliedFormat":1},{"version":"46a7f13ac080593e33d76cf5de4fc9db639a9122a6a085bd12d2f3e61c9c46cd","impliedFormat":1},{"version":"efd20c2f4fe04f9965905ad50fd35e5ab0d3611ab9a077bfc1b12eab6f9cb9a3","impliedFormat":1},{"version":"316edc2773a5c40f66de00cca4f35ba671206988e31ea8c1df8e8ff871973917","impliedFormat":1},{"version":"2ae22d6b87836aeb67c823c619e0c66403ae028651f14f34d3cf0430f8fa9ec3","impliedFormat":1},{"version":"c2641eef9519484b19625ff9b9e71310da39600963da25dc0f0de11a8073612e","impliedFormat":1},{"version":"00d2e6fca85d766650ff9de68c0306afa4964823912a4dccc8e7bec80f38fd58","impliedFormat":1},{"version":"d2889f3ed0406f47012b39d59f2a9872b65465d0168f240296a6aaa23ba0e14e","impliedFormat":1},{"version":"99fcc7416501b8dca3e40581e320ef4c72e173317a539d895a2e8cf2640987b7","impliedFormat":1},{"version":"31dea6e70acd25ff078d08104eb2ae41eac598dcc305f7aeac2fbc7859246fff","impliedFormat":1},{"version":"3e3f11e1874771d8d75b18b9bbffffd2b464d2a44b3dcff3325041a7001ff62a","impliedFormat":1},{"version":"b53b302fd7ec7c441269b5cfd4a58de0bdf0e2847c9f8292b133c7c6dbecffee","impliedFormat":1},{"version":"3354fb95230a3d2f23bb4e086ab9fa29bb1fd4ade71ed7e4e15bd7fd175f08da","impliedFormat":1},{"version":"db03c5d3709cbc3f89024de53d0319e49fab02a016c9d3aef5308b44041afc77","impliedFormat":1},{"version":"5c2ebf20d132caae1c4b35d28bacf76384275937924cf72e4efbc2bcbba3cad3","impliedFormat":1},{"version":"054790666d9ed7c5a3cf292503e6a61780f7169fe3863e970d35702cb428e501","impliedFormat":1},{"version":"3095e62f6d48235298dcb23cda5fce12ac58d636b0f7d4ffbc80c84f694c5d70","impliedFormat":1},{"version":"25df3178f9bac06afb08eb57b6bc94989f5354f4ff4d1c43afc3627864446247","impliedFormat":1},{"version":"e3b4b27ff971ec37a4c0a6e1c9c044c206d68f57dabffffa71f2df80b5c8daa0","impliedFormat":1},{"version":"bed7c28681ba3141a429aa0d2660fbb6449f9bf4d7bf368efd4137a8c538c7f3","impliedFormat":1},{"version":"236c2a6aee18331ff39e29a6285aec02350cb1bddf3ca5d1e1235d6b0f059ac9","impliedFormat":1},{"version":"aa192bb83edaae4348184eaf12294dd4c1ed228cbad6da008a01369a557b097a","impliedFormat":1},{"version":"d6eeac6c763ef772e8626bc335568c325851afe57f9674c153046103d13e8569","impliedFormat":1},{"version":"5926e2e5298a0746ce33aa7c33200cf089e684b277f3e3b75cc190d145d3b78f","impliedFormat":1},{"version":"73a0ee6395819b063df4b148211985f2e1442945c1a057204cf4cf6281760dc3","affectsGlobalScope":true,"impliedFormat":1},{"version":"d05d8c67116dceafc62e691c47ac89f8f10cf7313cd1b2fb4fe801c2bf1bb1a7","impliedFormat":1},{"version":"3c5bb5207df7095882400323d692957e90ec17323ccff5fd5f29a1ecf3b165d0","impliedFormat":1},{"version":"49a9fbfd1234674cb80daec73633a563d386b24af63e5297974cc2837a99e49b","impliedFormat":1},{"version":"293c077ae541a6628006aa6f6c2b31738387c4e8d033df81835656ed86655127","impliedFormat":1},{"version":"02e07de42da88aa986b2f47e9e0bd4573133a2240d42817f307440c700a7f04f","impliedFormat":1},{"version":"a5ecc724406ce58a8cf1dd766a2b75ac198730611a909374828fee9ca2c03b24","impliedFormat":1},{"version":"0f3b25a4a58bfbc81497a2560835ba48eb0e0d2cd00d976ac10cefb2214bcb2d","impliedFormat":1},{"version":"1c39cded7dede5be5fe3450179489d7e892e5e81590f5ca0305b063f85b04b8c","impliedFormat":1},{"version":"c94cd94329d2283c7ffaee91f3f9da4789060bfd12c18b1c87ca502dfe2e7e04","impliedFormat":1},{"version":"f82b4c8ad1a1bbad19bd2efefc6a4d80546f7ef1ea4500f2981e3d33a8844cf7","impliedFormat":1},{"version":"b15ae6501af260d0300f8148d9f6e356b16e72aad494b4d90817a60f794099dc","impliedFormat":1},{"version":"e689c521980a119665fbc52e3e9cebf182d76ba18f437710f421252b3f5d39db","impliedFormat":1},{"version":"575e8d070210e93cbb4ac3c18cea6d48b54d64aa8f658496296622d199c34e9a","impliedFormat":1},{"version":"ccfcb0348e378f0423e3b5b74eb23fea9893f9ed5396477a7f6b970c5c627063","impliedFormat":1},{"version":"171effe51e3f90facef73d7d9f3c43fb6723bf44df01740dc4d52c83a47fb70f","impliedFormat":1},{"version":"78d8ce9cc33fc80ba9339bf8018f282e1162d7bb8fd834ad4255cd111c208b4b","impliedFormat":1},{"version":"35a89ca4a11a983694a529c3c8bca9b2604dd39f1ce3be5812760c5d6bca4fcd","impliedFormat":1},{"version":"3343e2df866cc321345b51d3befd4f292fb00450f2e4cd530e6d979af1d3eae3","impliedFormat":1},{"version":"f02cac4bb6d304ead3570c7f78264af2d1fc2a5282fc8b4042dc1c1a8d0f4e61","impliedFormat":1},{"version":"cbc65ab4e61043907dc08a4062423da6e7d33109fda8a219ceda2ec98d0580e8","impliedFormat":1},{"version":"b22c5a59fad638037971add23c11d5b3fcb20b73b7687b595d57cb7c6c858c48","impliedFormat":1},{"version":"a36113daf1c07c21a0978bf3ea716d258eb8d13887c9a3bb394b4042989c1440","impliedFormat":1},{"version":"dfb8609c400499e11485d5933bb6a94029faa73626456f15b137d672f7ed3f0f","impliedFormat":1},{"version":"a1c564e2773dfb7d3bec40de87407ef36af9614ab36c23a2b20e9d07b175484c","impliedFormat":1},{"version":"974a296ae48132c94b948fefc6c41e766e75331f460fff1cac13fca48560f4da","impliedFormat":1},{"version":"8ed68c18be279b40d265f023f989dfe9bcd6334f65d5c35d15dc32e8929cfaa7","impliedFormat":1},{"version":"877353a33cf7651621d4a8d59b0e5d42745dffaa86f863fbad84a3afd3d0353b","impliedFormat":1},{"version":"6a6125d9da9c3516e5cdf26aa7e846ebbbd49cd7a964521074f85902f8df7d45","impliedFormat":1},{"version":"0462b4ed0e09fdb48ff4a70e895b563d75b413ba024f4479ef87760281b81830","impliedFormat":1},{"version":"23ace85c3d01c7d82bedd8fb95b7a7902237929b72a2a1b767fb563a24f2a323","impliedFormat":1},{"version":"53c8221dd71e9c0799e47a7b05bef62baba100e956d4e777c9617afae447aae7","impliedFormat":1},{"version":"f1361e3ed8ce7c3ed2aa9c9d0760a76a35391047e48e98685b04cbcf3d050c42","impliedFormat":1},{"version":"9f213f9495ee1bcbc95691a30711bc2274bb8b6407d55e139f7b551906de54c6","impliedFormat":1},{"version":"61d402fd5dc33411646456348996cd7d608ecf4e696c3a43ef476e64bc41d003","impliedFormat":1},{"version":"5f3f8d803300ea21de99a4e84c60af1ff808dabd9c7feffac2f0093fad064bc8","impliedFormat":1},{"version":"dbf286c3bf2c1ea48dd3d97d3d3265c36c51fd7fcef8fdc52624e5c4162d6ee6","impliedFormat":1},{"version":"e403a118d7064bd836299d296df2a1d4fdb3d35afcabc9c3e6ea9a5151b47afd","impliedFormat":1},{"version":"fd9e3764702b2863636ff175122790c065e39449fd2d2ab66c05c2452a444447","impliedFormat":1},{"version":"a2788a6aef1c55e94d8a3a51c53be474f7f766c3c3e4856940be9e689e7845da","impliedFormat":1},{"version":"57acd378108b9b4ed2a50beb0068a4ec6548a44284e2431f529225fe1c119568","impliedFormat":1},{"version":"ec4fb6bada4aa2161e89b82f1d19c23c9069a0967b3e41469b60fb1ef2a947b9","impliedFormat":1},{"version":"47ca5f288b6d09c737f95e75c952ec80601e425eb5e32a51cff2ec2b235025ed","impliedFormat":1},{"version":"3d53fcdcfc5e04cdc803c4f652f1ed7cadabccbf70b13c6f248da3ddd1fb588b","impliedFormat":1},{"version":"f6384fbd628e78839ed1d4eac7d30c438490e8501fce2671461101dc08cfb561","impliedFormat":1},{"version":"b48fe4141f082032b504b0bbf90e90200e72d26e130acdac7d4728b6d5cf9927","impliedFormat":1},{"version":"ceb82c3f651bbd2e8112df5c9101d18ecd81110157540b729f2d91fd2476af22","impliedFormat":1},{"version":"56dd0a3de5847ec09014c58e99e85b110730e9359a2927a543976625aa521ee2","impliedFormat":1},{"version":"1a996dbaf0bdd2acfeac97fbac98dba2046ec5692326099a51460c4d0f5ae9a1","impliedFormat":1},{"version":"cfc287e2eab581b5aef74288ab12a38dfedad4c7f86da8f9de05866b971260d4","impliedFormat":1},{"version":"b55a10a07d9e89f3fbc84f5adf660106de38c1632187ee89ce4722e3114bab1e","impliedFormat":1},{"version":"b76aa5f6ae4f664f6698f457d512a43424d0b89ecfae92f3862b11a59c356c96","impliedFormat":1},{"version":"7aeadcd6f891a60cbd7398d4efa6bfa8c6abf0d0d3b1c0957271b14835223add","impliedFormat":1},{"version":"ef808080f524a438cee5c18a3037659f772d77d868184073536ee14e505cfefd","impliedFormat":1},{"version":"789e37de9d9be63d4a831c44e1872c0d9973969710622c73e85e5ee488e46bc1","impliedFormat":1},{"version":"aa59e48528cf4a7f0de9db27f8fb1279a57831c87db377494dfd9909d5edd460","impliedFormat":1},{"version":"a7e9abded6309efc8a2dcad525ad862570a55344dcd96bf0e75726139ea46371","impliedFormat":1},{"version":"94095684562e04c69a3c508c15a4e379910a38781301bd05a098f563d1b2077f","impliedFormat":1},{"version":"b909d40ae0a49dc8cf12bef3675e7540f74eaf0f19a9b2fc310b91d0ac95b003","impliedFormat":1},{"version":"18517e95a9b285fa18c0218a1a6dce13c1e02584c4315710f4c29a36a87a4984","impliedFormat":1},{"version":"1554b903cb17787aed9b5dcea80358d6ea248c58933ee515aeb98c830b566347","impliedFormat":1},{"version":"758463ca4e500e663796adbf74833192d3b7b8de4854b63f45bd008f8a85e5a4","impliedFormat":1},{"version":"7731e44e65a7b3e20f506f6342e873ccae6129eecc0cbc02d1b3d30510642981","impliedFormat":1},{"version":"cb13dff5aa56155ed496db2cf084fc6a6e062d33fb0a8b72f2606e12cc3b1bba","impliedFormat":1},{"version":"dedbbcaff7747f2ea2677450351d36e7cfa30a56960a7fd261667eea2d4531aa","impliedFormat":1},{"version":"49620a7bb5ead5e646a697e4ab417a540a57b150efb8a107629eac48b13eb161","impliedFormat":1},{"version":"f07d892242e5d82ac0ed9a58ffe4056cdfbbfe8c4eebd2580e27635d7be65f66","impliedFormat":1},{"version":"2d48cb08bb8a13dc0fb00c829dae31d3ebe48bb060cdcc99a0079b4ac05c673e","impliedFormat":1},{"version":"8ad7581069b5fea9c14f35fa273b79c1eeed3248c15d8e3b3cc3014a60990622","impliedFormat":1},{"version":"96d049cb9f1a5fa296e00be2680394ac6ae91bcc848d98cfc374a469852ec23b","impliedFormat":1},{"version":"554dc5a72dea714b595395a4c12d519efccef1ce0dd5d7f41ae484401e50ff37","impliedFormat":1},{"version":"59dfd66db064bdc4a8167a4d5e6cba56213e94157fa89071f0289f07e3d95b5b","impliedFormat":1},{"version":"d69d5cbcb746e136acdd8e81ccfe00182dd9617bfd6c6c344e09a895e09eeed6","impliedFormat":1},{"version":"0a6182ba6bcbced44384aad64ced03428a44068db6e396627902d55452b63a14","impliedFormat":1},{"version":"f636e08e2de274463127a2adc5e8ca24304a2cd6ee5fe9483e35c8164bf35712","impliedFormat":1},{"version":"437f4518a56c655ee150fb75f821fd0684be16e6459204907fe8eb80ccc48cb2","impliedFormat":1},{"version":"dae796cfb059d6636e718f5e326c8f6243050c6d13f02b30e89522a05798dc96","impliedFormat":1},{"version":"852919a8c9f948a1120e26665877f445c5e979229cd9690926a4c1056ecb67ae","impliedFormat":1},{"version":"a533a88c900177a8bd724a8716d902609e7ab790e77afcdae1043ce882d6214c","impliedFormat":1},{"version":"61921a01ae678fc55f80344dc8770e257e8c3574abf42d94a0fb114439a360b6","impliedFormat":1},{"version":"620d192a20a0fdbb5f75562b2fb174e0df6762c53e0b3f3f9a905000983770f0","impliedFormat":1},{"version":"0d3d5ad7978ea95c0329ace8fc70d541f115393631c56b89b094edf9cc0e0267","impliedFormat":1},{"version":"9c4ff4b26953272dfd3fd9e37d46dbc5a1efa4ded8626b8f0bc79fafe2dcfc98","impliedFormat":1},{"version":"feb35d74e120494bfbc4c4c823da971a5b4b96e663513f68fe3c349fb8a592bc","impliedFormat":1},{"version":"c121aa1a348e834f829fd317dc6944f98169e0698c15f7db107798be1e0da78f","impliedFormat":1},{"version":"e751b5fdb543639ac55a0ad688e74c82ef24b9e712c9f1000399b63d7fc284bb","impliedFormat":1},{"version":"a3f6163afb8f4458c2a935747b1dfb384fa03f4f399a46b162e48d8b92aeb369","impliedFormat":1},{"version":"115dc68151cc74405c37a5199c2d42e5592d594c4788663c74bda8fc5bf0730a","impliedFormat":1},{"version":"d0c62b638bbf6104e0d50483239e212601576e246030b01d1b4b40918e7febab","impliedFormat":1},{"version":"de4227d3f974cb37120411c592819624c9da2bcabbb58082cde7df8dce2a89d7","impliedFormat":1},{"version":"a5c48a6fbf1358a5fe9b947a525fb353498792caa599ef33cb618b92eadcaf86","impliedFormat":1},{"version":"eafa5d831783eb6262f72363582b5a6f0e3a5ce7bcefcdafdaf372b54edcde3c","impliedFormat":1},{"version":"33d2092b9488d738d8c7a733d63affa819fb02773ba3212cf3426f4513e91eed","impliedFormat":1},{"version":"3a81f7ba793511be763ef2fc529b0779ad68aa1a4d8ff061f5b31ffe5338ade9","impliedFormat":1},{"version":"db92169fcf279dc7b08bafe78bbcffc4fe4e5e0fc66d00ea403b740e7a81b46b","impliedFormat":1},{"version":"11916ebd92fb285e5aaa3ad36c3df329057b53097370d884729507ebff0f8332","impliedFormat":1},{"version":"2ed240886fdad836469258df5fecc174ccc8823d619a07b0b0dbbc1a1616e48f","impliedFormat":1},{"version":"0b9214f3b1fe766c6e8ac26c685f5cd54155619f0e163c4e1a60118a7fc3419f","impliedFormat":1},{"version":"69b78d12bbf6f3f26065075189308104c8987988bf9ee57118670ef23c91c0a1","impliedFormat":1},{"version":"b11ec773a6f06effa0e041aec31cace90f3ed3f952d031a3f4e654bf8a313636","impliedFormat":1},{"version":"a9df4cac8ad59067b0bcf991f48ef9dd98f7fc3e7d1e3a36c3fb58073e1eac4c","impliedFormat":1},{"version":"f7e0529012b0baf35c8864fd60994e829a60acf05fb8a206deb405815a731b40","impliedFormat":1},{"version":"17831f179acf5e3b1a81da11b9b6fbae22e0f4eb996ffbac6667bac607fcd121","impliedFormat":1},{"version":"6a312ba9dcdcc637b946bb3d0ba6cc34b26cdc36f582167241e66a15a155512d","impliedFormat":1},{"version":"d10f6923085f763958dbfcedfbee643dd784a2a1489adab40825b7336d095d1a","impliedFormat":1},{"version":"1bb4ddb08f558faa5ada460dc8456be86a1f1e922a680fa37320ea24486a30e3","impliedFormat":1},{"version":"04b1eee9cd36515fc7e7c5ea54086c335c752c110f52e4f73e4f0cdde2cc3087","impliedFormat":1},{"version":"a236a69e4c0d1447040588861899788c718b4cf7d6254a3120a2ebcee95fb3d3","impliedFormat":1},{"version":"44a4531588aecec33f47aa6006da8a679340937d96e03013d05fdee5d8c2e81d","impliedFormat":1},{"version":"5ddef1c7f4524767aeeeda30bf8280d4b01d2c24c87735d0e8fc51455cef3c5e","impliedFormat":1},{"version":"dc31857a04afe1b49ff3fb722e8b4678210a1357003b626b9318448edf8f4880","impliedFormat":1},{"version":"00f09f305a5c82ff104a1b3c58360b4cd2557cff9ff37cfee6d5ed718a2077eb","impliedFormat":1},{"version":"ab57460a0acaa740c9a47c8fd19f22406eaab943992bdb27008eeb819da32d89","impliedFormat":1},{"version":"8776163e9a5556d318fe81de8cf8bb892e4b74d433ebd04edb8ca4856dda236a","impliedFormat":1},{"version":"2414ffd43aa41911f4a88803340a55bfd0e124a13a1a2d7dbe8eb3c619aa904d","impliedFormat":1},{"version":"163f6c701bb1665196f3b4cf5e3d1ca719f35e359c2812f186f3c86e495a13fc","impliedFormat":1},{"version":"4a1d0b807917c0c94767c261008fa1913304cbe959f44bba375dc1e60a74e7a1","impliedFormat":1},{"version":"90d3fc3f0fb18babdf4de1451ca218e36b30edb3105a58700954e33568075dd1","impliedFormat":1},{"version":"2b4276dde46aa2faf0dd86119999c76b81e6488cd6b0d0fcf9fb985769cd11c0","impliedFormat":99},{"version":"38d4cff03e87dc58bfd50ffe5a3fb25e6e6d4136a1282883285baf71d35967c5","impliedFormat":99},{"version":"5ecea63968444d55f7c3cf677cbec9525db9229953b34f06be0386a24b0fffd2","impliedFormat":99},{"version":"6ea9c8bf2ae4d47a0dbc2a1f9ac1e36c639b2ac9225c4d271c2f63a2faf24831","impliedFormat":99},{"version":"a2a6960ef524509846b1ad24f36f6d9ea7e5ec7f0e55f943f8db09a598d99391","impliedFormat":1},{"version":"3d76957cf49167aaf2df848fcb2d95db411523d0025e9bc414006f641f407e17","impliedFormat":1},{"version":"594895eb74bdfe0a5174b5fd7811a8c912f2121347d773e56c28b7fb98642610","impliedFormat":1},{"version":"cf39c3aa36608091ba07df403bfb6fe43265a10b6ca43237ca5cd8dc2215c50b","impliedFormat":1},{"version":"ba7c1fd630f5175e41e24b44e2510aac50e98a2605d55bb4727e52c8bbc61505","impliedFormat":1},{"version":"a1c8b811348d3806581f7c5830d0d663eb910a828a69b5f49b7e3d219f6f200d","impliedFormat":1},{"version":"5fc020e4d3e29a0158977caa3b4ada841116bca7e95f1e3bd81972a973fa3e52","impliedFormat":1},{"version":"2a1f679af017f22773696f5f8a50be7889a256796e1e9c4639bb9683b85eee94","impliedFormat":1},{"version":"5c0896b0a5d08e905ebf5e5d644fcfceeef6b981864241ce87ad44c6d38b7037","impliedFormat":1},{"version":"33082e49dfc7aa882cac44fc860c9a0df4e71b869cdea78920a87c5f9ada3f35","impliedFormat":1},{"version":"37c9b58a44c587bba5fb17937cc009f7c8b11c5e1d034adbb6149fc7edf8f194","impliedFormat":1},{"version":"7a591b347f2956a5fdff47763b18e81f199d59ac4214a0eb10b527f668af3a14","impliedFormat":1},{"version":"18f8fbcb5964b00f0b9a59b9a20818140d256a0c13c40b27a84cf45039cd7ae3","impliedFormat":1},{"version":"7ca3766a7b61700680621bcaddd75095b2f6f1d5fd54054d455963e0b01a5271","impliedFormat":1},{"version":"3c210d785849c58fe7876040224d842318acc311170b36fa1fdecf6705e90b2e","impliedFormat":1},{"version":"931d881e641f8c6205ce766b5b0f4c334b4e44b400ddbd58a65f4225d6e55ae5","impliedFormat":1},{"version":"10b5802a62730e203b023f17e4aa7db9c8bac2fa557c0284362eeb85dd3db33c","impliedFormat":1},{"version":"ac6eb3be3381810472a2fc7056a9f736288f4492acb5e245804ee5275e12fa9e","impliedFormat":1},{"version":"1c7ddf03f8b22aafca004e06eb11ef870c6c48bb210cddf8f723dd634fc4b82b","impliedFormat":1},{"version":"8a62958b8a7962aa876a6554db15b6a40491e28b9772fd939254756dbd69d600","impliedFormat":1},{"version":"9354e4dbaf9540cfffa55762429274f2491c52780856a69df5f2bf1953638a7b","impliedFormat":1},{"version":"597d714b88fb4838f4eaf380e288889686168d0eb4335b03084fed54d71717ea","impliedFormat":1},{"version":"be7f71bc32c002bb28c81860665ac30fdafd9bf8631d3110f2ed5e9cf64806dd","impliedFormat":1},{"version":"ab5265c757bf45df980370183488884c0e6b04ecafd4476d07336fbbfff4a3c0","impliedFormat":1},{"version":"1b95d53b3cf18c5cb3998105b4e2d2db7f786406e194a935f7a4be03e3c98b3b","impliedFormat":1},{"version":"8dcacb13baeb9e2b3f548b81493d484f2bb95a6384e6aa311ead14fb87a7b14c","impliedFormat":1},{"version":"2b924655747dc77d6173bb706d427b89233969c68886301b97f0ec22d38cb948","impliedFormat":1},{"version":"cd532224c54d4c8df7e7fe6df04b9db97bba3c764ec06307f8063923d0ada85b","impliedFormat":1},{"version":"5ab9aca80383397243ab240ebc38ccadf85b566f670b980aed6e777eb3bab1e2","impliedFormat":1},{"version":"1a8452dc75d92ee4fa82455bdecede05171b837b023f374052f58f1bcf5b4da1","impliedFormat":1},{"version":"5290bcde06d2a1d393225c2464ef8a7cf6e3b68ae3ece13c4a48c10f0dbac1c0","impliedFormat":1},{"version":"9dc2e706663c027d2047a7371608bd1aaa0f76a974940f85e101a9f3dcf77f99","impliedFormat":1},{"version":"1a2f03003d76f913c21a1105408fb3af3184ab55dacdd7866e1fb5eb1f4a2934","impliedFormat":1},{"version":"25fed060cca7fcb097bc0a62dc5a71f60ccfbd3efa1bb3584e4b38d441ec9ac1","impliedFormat":1},{"version":"b636d739980b2e9a24b4e73251adf464e2ec0457ba998007b89ce7977ac2ce7b","impliedFormat":1},{"version":"411ed25e4d8e230ee295227a763e32a395bf1eb250e20af71a9c06a7e96a5ceb","impliedFormat":1},{"version":"8fb43d72aa54443abd069be799aec92b354ad28990f5f5f1acd7857773b54bd7","impliedFormat":1},{"version":"fe8e8c8df9218e3e0a418ddb058a81e895bc2ea5b548571b79594eec7d573628","impliedFormat":1},{"version":"2070abe224a2071f224fd7783212d020ee6d3f71c6f48405070a0b2fd9bfe479","impliedFormat":1},{"version":"a18875ee326a56d20c87ea0e86ff11a9d767cdee9cd5feaf60dd61c5b64caae6","impliedFormat":1},{"version":"df9d5f06a1692717762ca9f368917924fdaccfdfced152804d768eff9baeb352","impliedFormat":1},{"version":"34fec0d3b9abe499f5d53f1ae7a6c28d34ac289e5cff6f17587da846823cecb0","impliedFormat":1},{"version":"9ea3742314159f08b93e3dccb7fdba67637ba75736c12923d4df3ec9f40590ab","impliedFormat":1},{"version":"bc55f374f2b27277afd0ebdf0e503faa20ac18e81d15ac106e443ab354d3e892","impliedFormat":1},{"version":"ffc7343ac667843634241465fd8bb2fe5000964873434558f82c0e670d2b7d1b","impliedFormat":1},{"version":"e35562032ca67f79d83bb8e2b86b61dfcbac6a914ce15b0e2235e6626dbd49f7","impliedFormat":1},{"version":"0810fe9c952efed2e4372b734baaaa946c975c7e3114b9cb1e31179bca9662f2","impliedFormat":1},{"version":"18b2b9e3a3c86ebd23ac27a8f966b1870b8ab29a2857dc1c524a08a49b3aedf4","impliedFormat":1},{"version":"7078f3696ec34e21ccdddfd668eb9f679478964b739082f1d2f4ec286e27e324","impliedFormat":1},{"version":"2ef538c8ab12d795cfb3759aab16593d97bf8d1f491ce4a7cec2f452c30d312e","impliedFormat":1},{"version":"7ffbadcb4cd98d917e23f35a803795404e302f2e5ed3c69fbdddcbbd0190d2eb","impliedFormat":1},{"version":"8de84288a2bb7428bb031ba2a5b6ccf5415a06826b902f704dbfe0fbd8c60745","impliedFormat":1},{"version":"d5da81f56f3189ba0a2f7fc2c38915b741a5d4f9c1d56749bae3cd821eb11dbf","impliedFormat":1},{"version":"ba6514678ba39cd24e45efb38e18d25274787fb031b49b7f9dc2ef5857330ecd","impliedFormat":1},{"version":"2dd0a4aeef324625f4ff674e2cfa14e0e3a45202ae2d2c2ab882ec164589ecb1","impliedFormat":1},{"version":"6c9e1fdd65d24d365a746e8a47f8f367650dac5e9436ef0c0f20237e204e072d","impliedFormat":1},{"version":"7f79adbfc34dc2e7fdbb76ed579a4e1944076baa68b62cab9c05a81780088c36","impliedFormat":1},{"version":"b5979ba9077be6b986d0a6c8b6904fb32ebacf0d58fe66f5595a83af055c9f23","impliedFormat":1},{"version":"a883088486a65513998935f6444e0448820478b0f4783171138e3b8d3e92ed9a","impliedFormat":1},{"version":"1a09ea0b80210733d1c5fc284ab10291e9cc2d6c4b70764d05cfdfbe4116e71a","impliedFormat":1},{"version":"3da00f0c6f5f4bca013ced5172164a08e83f33ddf969b893c9cca734f97abfca","impliedFormat":1},{"version":"2ee1fb806f0b0f44313b46de861b55649634ebd9757c5514c3ea93cf1255d45f","impliedFormat":1},{"version":"580f7dd2752bb6468e1eae47c8465d681e8016614cd2d20bad21680401381560","impliedFormat":1},{"version":"3e6c1a8e7d9a2fa9e6e515cbf2eac07eee953a6ecc134e8fc565ed914d288a05","impliedFormat":1},{"version":"aefc07a7a75a93e46eabf563f85ccf13fc5674fb2575433dced13d86cce102d6","impliedFormat":1},{"version":"39593c50b59d3f35738f1d04978755d746aafd90d90f2f088ae072e38c98d753","impliedFormat":1},{"version":"e09e37a97deb2318bcc307e56eec9e74307bf4e185c5028cd61fb7b7a415091e","impliedFormat":1},{"version":"d58164beed48baed6bd4e8b4f1d6d35379bdcb50d79874efc906db8177e99dcc","impliedFormat":1},{"version":"fd4d66024e28ba8eac39b0d79e9932c1e7ab2cce39c3c8d776a10c2d8d550c95","impliedFormat":1},{"version":"0bf65d13cc32a5456a5983b40038f2df29676c568219ed7a173d322a7a7a1046","impliedFormat":1},{"version":"0e174986b721b6f8e0ae71473e8ecabcd27a72a1eb0c6a5b245641c92eb1f548","impliedFormat":1},{"version":"5195fba3a9190c1ab07ebdce0c43ef1215513fceee989230ba26b560db68b9b1","impliedFormat":1},{"version":"6e888892c110c9d9f5dea5cea9d73a7ffdc9539ef33e2c909c71aedb89ad6306","impliedFormat":1},{"version":"e98b949511cf978e1416c23635e4a7af49fb7e906a3aaad78639d0354ca3f91f","impliedFormat":1},{"version":"9fb0f57f4aaa5a7f6f47999bfc60d46fc8624174e5ec1db2eee681e7a7c5b7ac","impliedFormat":1},{"version":"6e5f47bfa10432c13f71a1f65d4c22fdac37f5b466250b200be575b044e466a0","impliedFormat":1},{"version":"9f902e8b6ab7cf1195f7dfd4ba76ab1761d27dde27140d8e4334d664ff5095a1","impliedFormat":1},{"version":"b6597583353a27878d178eff7cef1df25cd47b52318fc8c1df887778f39fb5b3","impliedFormat":1},{"version":"89499fdc926291e337e6befdfd4b3796a5090c8f7d88f670186a3478f287e049","impliedFormat":1},{"version":"f90e0e3dd84b892c1166fee0c4d07fefe1c975aa335249369198e9e303150c8c","impliedFormat":1},{"version":"0dfb0943c928ae130a9b563a0d95d19a654149c63afc5eaeb0bdab22a2e4cf92","impliedFormat":1},{"version":"f1acea90ee99fa895bfc2be16d42d010afccf581f0a4fd81af05c1e33ba52d30","impliedFormat":1},{"version":"eb7f78707b148715913878ab073771c2711636f81d9edacdc23741c5c4676409","impliedFormat":1},{"version":"69b302f58e27871aa18c35c9f6e54e182c7b5e093d680e90dcb271ac206f65b1","impliedFormat":1},{"version":"6bbdaf306a56f31d1780c457a169c54856444cd0e38bea9302ee7f719216320c","impliedFormat":1},{"version":"3764e1710ae3be641878c48688a6064b50f88bdfab8270477421e0ed0370c20e","impliedFormat":1},{"version":"b4039afc53de6f76bfe17e9667c52903e2c3522cf7e2adb48bdb0e9801c53ae2","impliedFormat":1},{"version":"0097a7bca0c500ea9ea03fbe979b864aba32f8add469ab5755f9ca20bffe146b","impliedFormat":1},{"version":"e4128e408464f38961eb93e466b10f0b70a5347bed31a306567de8a9d2cfa2e2","impliedFormat":1},{"version":"6c2913d56a401a786605facc3696159a4334fdde5e3cf3cc99606d63eacfd77f","impliedFormat":1},{"version":"ba9d942ce82486a429051ed695bbdc82922154b1867968bc3cd528fef4b1db0d","impliedFormat":1},{"version":"5065d8794b4d58da06eba6c467c5ce628227fcee5b378bcb513928e5f4351d3d","impliedFormat":1},{"version":"d96916253cf5b59873d497bda35bf1f60ca574a7611c288416903f6da67dadbe","impliedFormat":1},{"version":"1f08d836cb44ad9eb02e5437333eea1422bec0fbeedbe2ee637ba5f85c776df9","impliedFormat":1},{"version":"747978ad044367d203290e385379ba6fa13094707cdf93e7c46a28b557d5ec55","impliedFormat":1},{"version":"085986a624337952d77da5b7f4606715ff736293c0cd1ab2bd3bcaad20948100","impliedFormat":1},{"version":"42052a992a6973092850f23f4010d7137d202c1f56a8e8c515afa5de03b38506","impliedFormat":1},{"version":"80aa8bd81499eeab329bf5cd4cdb47cb6a1e55ce8c381c73ca0b34504dc98c31","impliedFormat":1},{"version":"73041c005eaace48167bab34c90c22873c23cfe7143a8a1e4830325611b8a432","impliedFormat":1},{"version":"1b8e481079ddfa96fa74e13195d09a3042427deeaef5e489c6953d033790e0c8","impliedFormat":1},{"version":"fd8c6a9b6efe0982844a362276267f4a8a0d0eac3f6c0105e07ae448baa089b2","impliedFormat":1},{"version":"671375a441525dfd1dd0d6205596b89cd5e36e43f5d5bd55241a5ebb1f9f8536","impliedFormat":1},{"version":"0ddf0a53aac62bec6bfbb70acd8ec414e4cd406e456d90b927d68589a1bc11fa","impliedFormat":1},{"version":"6b67e49174c6d0b293d10173bd4a1cc03006e5e34982a27e411474d6ad4ab08b","impliedFormat":1},{"version":"bbe077c6b64b00be512cf103a2b162d07e062bd192d27a80e6af5e640883efa2","impliedFormat":1},{"version":"6d8c163fa3b2767df0be2f34a5766f2f84400f855004dee35978668ea8c643d6","impliedFormat":1},{"version":"67901cbfa0e5b836fff44d6433d388ee08d49e861dce861c46089e85db76d1b8","impliedFormat":1},{"version":"cd3637aed7763ba22d12a386349eaa3ac394187d7e62ac5ac2f2b21959f2c92e","impliedFormat":1},{"version":"182e6dc43d9db5b02d97da9ad1a1f33511698690d075aa094a323e5596ee4151","impliedFormat":1},{"version":"03daceaa4fc85ddb4578c3e00c76d06b08354f67d3488fc0d3ba70f5b7bebe5b","impliedFormat":1},{"version":"a61a2b837dd119f4bb6328ddc2a75d2991268ad3f3c7fb057f5647659e8f7a0d","impliedFormat":1},{"version":"1d56fda4de62aa710b03933ed8886600db20fed547fc82fdb1e3172890b911fa","impliedFormat":1},{"version":"cdda9aef8ea456f57dbc7a1dbc992775635f35d1f16bc6ba5eec62582eb95c97","impliedFormat":1},{"version":"809f7de42db29764819db01936dd61260c36bb46da14a2dfd0d9cff433119c97","impliedFormat":1},{"version":"5f5a37e3d8f88da4365d633ba046b4a6fb20295417527e553f64a4b09e3fe7c3","impliedFormat":1},{"version":"5b76ebb3f054e884e915f113277a51baf59e648c63704aecd893b03d59f1a1c7","impliedFormat":1},{"version":"94db31e5feb97be7603749e699e2c7a149c1757ef3a7f9409527a11be2886780","impliedFormat":1},{"version":"80bd39fb5dac4905e90d9d2d2ec1bba058e4c5e65606263d76fbcef5499745fc","impliedFormat":1},{"version":"c814167f5da5cf413798dd7364096bdc04e1880118cd0d6fc7b1c8a13cdade31","impliedFormat":1},{"version":"ddca3180cc80853cbd1fd0ff049b4c174243110a4a2f231ac52f808369e10fb0","impliedFormat":1},{"version":"fdbff9f09e335506a85070891d2a7d370c151b50733742e4d2a7fc16900e4a95","impliedFormat":1},{"version":"b2b44b7e7d9e497466c0af940cb970eeca779ab831550078a0520aedc0ac3460","impliedFormat":1},{"version":"86dc4fb96df154d94b170e083ca293c38c12b9db881d04a4da308b7116fb75df","impliedFormat":1},{"version":"964e5c21c9795282e320431952f8399a76cc9c680516bc05940f6521f82c8495","impliedFormat":1},{"version":"35c15cf54be7051ef44f508d9da9c27c547f6e81d52bf477b0f809e2327ee8d9","impliedFormat":1},{"version":"b8d0deccc242126e1550a2ea3cc2661d7b174ea120559e1918e06b9270285ba6","impliedFormat":1},{"version":"2e52952ef8cf48a372827fa45cdc5fb094c91421f4feab9c803129ee078edb8f","impliedFormat":1},{"version":"a9337ad54903029d34c273ee605be5716e7832e281f6fb66715f661a93c10776","impliedFormat":1},{"version":"d907dd40369128bd18eee0e92d883b919aae330aef5edad23b8bc267c46e1ecb","impliedFormat":1},{"version":"7b877947ac19bfe5039233596c2a10b10f773acbf9857c8354e47e16b319e1c2","impliedFormat":1},{"version":"73ebc746aa0a19fe29c826702d37419fba934262c4c1a3b04d37ed2a20fc15b5","impliedFormat":1},{"version":"a7a1e121728c2e212f90d8d2f305f472b5a88c30dedfdef781ed9c75f2c8b3a4","impliedFormat":1},{"version":"e5531569cb6d4fc5ba2eccbb67ce8f8bca6f569c6f0702a625d5bfd0ef364854","impliedFormat":1},{"version":"5fcb4b897e8ea1ef4d40a6f42a93c329685f29b4c6a3639a02176d9ca9cb4686","impliedFormat":1},{"version":"e8dc672b15bf2e1e35a81e45140d830be8c98111325530e5f0eb7c5863245e82","impliedFormat":1},{"version":"9e8fd5b597e56e984d9ace2f8b5036c52ce3db8bd99c9d0a0e2a6be437eadc85","impliedFormat":1},{"version":"5a4a8f7317fc4821e7a46178c217733bdcf29c915a4919289292438e15de4607","impliedFormat":1},{"version":"5e238dda917cd2472b4f01de26b108974e55284bb214a4bfad978a5be34be7cc","impliedFormat":1},{"version":"5125b5b048d60035522ae201ccf7525e2f6a2ac5b2e68b6607ae54c715c66900","impliedFormat":1},{"version":"f55b6c21681fb9bb17f61ff9368fbd4e71a79693ce295a14151b4f325413b0a4","impliedFormat":1},{"version":"a5b2f909b4117accaca01cabe73871cb9077b9f93d292dd232f10892d146de43","impliedFormat":1},{"version":"9618adb3ebc25306662e030f883eba7057eaf4bb2c6d5879dfd6676129815c02","impliedFormat":1},{"version":"01270a9f63529e308eddd085993c4f25c1cb594e69f47ed3b289fb097af55a6d","impliedFormat":1},{"version":"d92d2527e59d91387d208c266a49524fc263cda8f6d54beb9b85f98b75493617","impliedFormat":1},{"version":"de0d38c21863792de0659e01e8e76615be53fa586ac1dd5b54f6042ec6348feb","impliedFormat":1},{"version":"a55439c4098a852a7dff67fcc3309065f8bf6009e02273e0cf7f6e165fc959c7","impliedFormat":1},{"version":"3e2f969b9fae540fcefdbdd76fd18c9743a369759730c66c775bd7dea5c151e9","impliedFormat":1},{"version":"fd1aa5b5f3c10cb19d3e0ead864d193a5fcc7efb837e47212255bcab2847a173","impliedFormat":1},{"version":"3abe9c7635bdd2ddbbd9f1a4d98ff44c2ebf780e13e17187adc98ec82ad0c7fb","impliedFormat":1},{"version":"ba6fdc7d3a3d6fc4236d491103cdb8b132c151b2dda4b06fbd38698ac0e3d2e4","impliedFormat":1},{"version":"32a3a19d049ef0b2539e525c862760158d6d16345835f2bd541e8f9a45380b50","impliedFormat":1},{"version":"7fa7fb68cea5734bfe2091ff218d302f0a3066f4a78ba26078322358765cca8e","impliedFormat":1},{"version":"11248c1e632fadd67c22d561754c30265e785edd66cdbfbecb227c3a9b1ebf99","impliedFormat":1},{"version":"93b6da74507103bee98e39f0d02cf6849c0cadbfc813f26804bf9ae5d0d3f75c","impliedFormat":1},{"version":"29675992f9e94f7f721674c8d07bc2042ea7a6bb8cf602b0ded185edd0c557a5","impliedFormat":1},{"version":"daec5d2d52be233262c80013e18d57be920152412de99ddb637700410ee7fa7d","impliedFormat":1},{"version":"e1e1837b07bbeb81a00d1b0b7edebf8f3e2b44ad148d5faff905ba17a0005813","impliedFormat":1},{"version":"c01d685b9634c875d18f81b643cc1fa5c01a1c740ad19a2578811aaa8f12f414","impliedFormat":1},{"version":"a896dd450b58d96d34a2b565c4d0db365eebd39cebe6e34fffbb2e01065d3013","impliedFormat":1},{"version":"7fc08eaeb2ac34f87eb2336270f2368e66eb83796d5bee2a96438f01d088cf68","impliedFormat":1},{"version":"d6d4654b5db43b43d857d245c054f359b8aaccf6004bbc4324f320ff2a507a87","impliedFormat":1},{"version":"628cc9debf7b2c1828d01d134506fae17eb26b0196d82184df3b6d9494b43ca1","impliedFormat":1},{"version":"a3d8178c385250d74effd5936477f4d5d2ebb9afb5a342bae1b928f621af63b1","impliedFormat":1},{"version":"02124f773917b14404ea6b1c87bd84e701136ecf91ea1a447cf93ede4bf04983","impliedFormat":1},{"version":"e4d4ed8aab4e61f8ed7656baa565ef07cb0e6f8418d81766721cf2b591845243","impliedFormat":1},{"version":"e2a7ef3681c1d61e11203e8dbfd77e25f23d7560c8fcdfa37490899d037c0ee7","impliedFormat":1},{"version":"8bcac2d5ace8feaeba195f476351a0f09841ba69a1b6175ab6574300fd70c9d0","impliedFormat":1},{"version":"53ccb10a74e6de7b5ee83cb44a12834f823fb78ea0ab3ce51475cee1779a8d9a","impliedFormat":1},{"version":"88751f9db85c13a404f3fd8348ba1ffd606715ac60572aa7b20de442049b0fff","impliedFormat":1},{"version":"d82aa6e7f1decca5179d57d12f94a9ca9b3f7f77048aa20ca98e154c3019c1fc","impliedFormat":1},{"version":"444a93f528d1b023dd00c1b46dd3d474a0339b50599b2e819ab13fb6b2c915cb","impliedFormat":1},{"version":"70c415e2ed25afac403f2828c67743154a8252945ef24e9343e6a3a55431de7a","impliedFormat":1},{"version":"86add54a494cb66d630e4554b9a2552fa2488b491549cbc2a7ca0e538e1d9f1d","impliedFormat":1},{"version":"3039c7975bb1035041e6abac5c71cfd0c2531ac20f8a3c521891d18d21b831ac","impliedFormat":1},{"version":"6a8111e8e43cffcaf41372315ae6cbc11d8596cec0cff4c6c70b27da75cbdd25","impliedFormat":1},{"version":"e75a6771bec31aeb2e8258df9f6c6652d1659648eb53dea7773562660a6fb5ca","impliedFormat":1},{"version":"4c3438e7cc5515323f5846d72b84fec9fe2e6d5fef50a517542c7a9bdc51dbf0","impliedFormat":1},{"version":"1d86876dc1a10218bcc482d392b3b86a61ebd4ae5f591a4755beb074099e4e95","impliedFormat":1},{"version":"80ca9dfd51ef8727912344fa6dceb3ffbda52c4a2ffb2182b704480a5fd7ee8c","impliedFormat":1},{"version":"770c2dd0ac11667883a3ebc682899c068c48ebd57663e4c50949e5652dad80fa","impliedFormat":1},{"version":"feb908fca7ebf8a474b20dcd1aee71d49ecde939d2f9d6dc9e8c9de589cfcfca","impliedFormat":1},{"version":"50849d34df4de824de2907e963279d49ab22f1914d47135cbca6fcb5685d49e8","impliedFormat":1},{"version":"7dc02705f75ddc71b0e2f18351d3696e41f6e07d790c18afe5b78c89e67ad387","impliedFormat":1},{"version":"79ca6338c68397a7e0f0b7ddaa3350c9764b8a2c4f4638251d316f72cccdf1cc","impliedFormat":1},{"version":"d4268aa638387a5d8219b3f8ebf0973ecaa4b2814f4e036248bd189654e510dc","impliedFormat":1},{"version":"7e6aa259bd4b2bfea6fbee6aad9811aa9b0c40ba71cd53e9db77073f41ff3aeb","impliedFormat":1},{"version":"4d19bf8ff0030c8c06c5b006baf9f7627e9f76216138eb45966583d0d5724b13","impliedFormat":1},{"version":"59a25169e290be34736885c06d5e29b2c2af1d6bb0afda1c3126a57a87c0dc4c","impliedFormat":1},{"version":"16adda3678b1f885104505504ff3f705f92cb071152b6826143a6578b18a12da","impliedFormat":1},{"version":"b773a29e6618e4ece53d0984eb455fca116799a6f658f4ab9de40c58d71f2dcd","impliedFormat":1},{"version":"f3b403e6482d63c3f00d1a5e77f8dc02c85bb324fbc35689f94f657ff678cf3e","impliedFormat":1},{"version":"eb1dc31de2323373220ddaa9e35f12eb2e2528ba2ddba760496b5e02f94e83fa","impliedFormat":1},{"version":"80d5e377dbe2d879fd58b903c81cf8051794a2457346783ccc5219088af95229","impliedFormat":1},{"version":"2f011e16e37f62fd4a7a00986fe5678fd7318af48b733274adebc2a1096f4701","impliedFormat":1},{"version":"7af34691e03a05e1cc3ab659fa0eb97df924dc12219b9e0d42df1b1b4944556b","impliedFormat":1},{"version":"d179af5c4c1785302bdf44967a0298b40a055290cbdf49b8b1f6821b5ac45d13","impliedFormat":1},{"version":"715c6cfb5c918ebaf7a4ac12fe7036354c7737ee53f27e953b0c6b32ea5c7fed","impliedFormat":1},{"version":"c14033543f143ff973b992b5cc84a8ec179fbb26c55d021625400bce08693062","impliedFormat":1},{"version":"e0b68ef2073c5ca07054a7569bd426b18eba0a13bfeebd987edbc1c08e9858ef","impliedFormat":1},{"version":"79122f57117b9579f963bf6db860c90f43c61fb3695b7b9709733dd36caacb53","impliedFormat":1},{"version":"4f1ac03c089109e65116ab3c7d6cab25fdb6a39de4261276224e87daad49a416","impliedFormat":1},{"version":"668f9948d2ac4073c890e9085c0a0121e91829b12e7dfff1bc97c2b22febab66","impliedFormat":1},{"version":"95d3f7dbf440ee15105ed62b06ffeece7c6b2e9c8d7cafcf926a02732b0651bb","impliedFormat":1},{"version":"08c35dd9786948e567228b7981fd7fa898635f0ad07dd474d19315a4e4cf8752","impliedFormat":1},{"version":"7c95d753ce060546ccb96db36e36bdc1ee5527a99b81deae23537cc059b728b9","impliedFormat":1},{"version":"f02a70ce1d93ea668934465feb287fdae9fb9fd89ffb175e3641b505d123f1b4","impliedFormat":1},{"version":"ecfa1490baf58bb547cbffd35055a8d37350e5a4555541ef9ca594f296adf0e6","impliedFormat":1},{"version":"17fc7881515e746d2d626fe263fc89224c51c87d12cdd1de0ea18faf297b29b6","impliedFormat":1},{"version":"2676d7da626cfa5bd5c71bb1bebc049e6f2a2b68aeaa3759e052dacaddec2e7a","impliedFormat":1},{"version":"1f252a0e6a399dfcb9c151462a942d3c3640aa024748e2357bc2e50b525dc66c","impliedFormat":1},{"version":"76163722f8e959ab91ff15bec1df8b2af77e12c975a41fe696f3a14fd3850da6","impliedFormat":1},{"version":"121237ae57eaac5ebf646f81cde270eb093e12ee4d3954f9d8595eacdcfd9cb6","impliedFormat":1},{"version":"9a84eebd6e526afc2fc38392b0c507b9c373159bf9565b5a192d53abe9cca1ba","impliedFormat":1},{"version":"1745ce89aa62ddb61b342a63c563575d750207b9951f256c42c15cb825e5df99","impliedFormat":1},{"version":"6762da06aef84aee250f90a6e8d65ffa470c6b5bf7c7a2d4de68077858605417","impliedFormat":1},{"version":"88782e4ead68723b1353d3cbd8eeecb2b88577809d6920714ca3d61f755b6e14","impliedFormat":1},{"version":"95448492f7f7db2368809190d29c7472ed3f6f898614360ec2ded6cd710c5bf6","impliedFormat":1},{"version":"638fd06e4ac9a0f7f80cb59b2acb9ad82d90d4595b791576078500da430cd691","impliedFormat":1},{"version":"532fbe381f6980f5f96c526f5fbb6e2393093ec4a6947af24b2ce4f0c64d464d","impliedFormat":1},{"version":"59262b81348ab6c3b8648eb84d869d359ae5c2ad69a4e0022fd917e936389f9a","impliedFormat":1},{"version":"980bc0f948c0b2cdcdcfce30cb6a67ac7357e9a04a5a5377a4b603ec5ff3ed44","impliedFormat":1},{"version":"08dfa3925bcaf3217ad1cb48e967b334371258446f410a2bfc0647ead3b53958","impliedFormat":1},{"version":"c4de9078f00e95ecf7eae1756d21022683889dc2f7dc359ac1a401eebbccfca5","impliedFormat":1},{"version":"cc0a459bdc4e9cd5fe034a62fa83a8737486b0bf40b11190e82ed4a0d803cd55","impliedFormat":1},{"version":"e159fd8868a308bda44f504d5804f730bbc7f35c7c163c9d3f04d36a1f3eccd5","impliedFormat":1},{"version":"48c16c377d293408b0b9f8ad3822c543728924dc82caaad11d271cb5a43c8b0d","impliedFormat":1},{"version":"a35768b4aa61e5cd551016c91f2da9666c485fd32cb85063a395f55a74932df5","impliedFormat":1},{"version":"60c94b45d32c09deec9a19ba3f7d8f680767992c1724e20386d786ded16668a5","impliedFormat":1},{"version":"d8815d7ac98bac1d4d476b6de5c837913368a909f1d417738c621be550483037","impliedFormat":1},{"version":"efe5226c10cdbdf02bcccdd55ab7eaa546d9d20f8631b71eac14a171b6856115","impliedFormat":1},{"version":"25182a16410182f105e3d4f7ce47704868692d82b810145a1fd9214dd68e39fc","impliedFormat":1},{"version":"5d802fdd246b92e92cceae486384778d2e70099364e3060458ebca3db6c9537d","impliedFormat":1},{"version":"25911651d3fd103da84f2da6089c5796c2cd3bc9b885de8d518538ee0b2502d7","impliedFormat":1},{"version":"b1d4486f4041635f978e24b6aa7aa26a8b1df81ff6d7fe82e8315d436ce4ea4a","impliedFormat":1},{"version":"697ee35ed13099d7b2a3bb7828a581d2b6d1b23574a4213802620429c973ec27","impliedFormat":1},{"version":"595c172dc0edb928be05bac0fc3010d9fe5da4fa92e404083f2749e693138882","impliedFormat":1},{"version":"573082b6780a37ef0f3c4507fa954e09f748f710bc50754437f0394639402520","impliedFormat":1},{"version":"7ae49abce785a8816bbb49dd5fb301ee5522f02014aad1095639a342a4aabb26","impliedFormat":1},{"version":"c8ea14372521ab27bcc17db148bad457dc802b6a7aa95a3e67efabe67831143b","impliedFormat":1},{"version":"8e4209d2c93131a8ea06006841fb7c08043a444071f094927b2e160d67ed3ecc","impliedFormat":1},{"version":"72618877b1e15de4275dfda49102c6240811bcec30e4c9f8bfce889edf18187e","impliedFormat":1},{"version":"3a699715c6b195cd9b7fe96bc4c6482710c5026380ec32ddd49e60a42cd8b9a1","impliedFormat":1},{"version":"13e631d64e1710522bd93bb90235dfbae228d2b6fb762dcf9cba641bd748829b","impliedFormat":1},{"version":"e965e9e03bcb2366b03337dcb8c82a7217eab605f3db90ee942302bf98db340a","impliedFormat":1},{"version":"e384122e4fb7bd3ca8e36b92825508beb73784446e40adc1f747dd331074c35a","impliedFormat":1},{"version":"b331bafdaccff6ab5ea40b3526457cf25f80e3a418958f8b8737450df8ac95cc","impliedFormat":1},{"version":"bc756ad9380c772b2a0090e370516abc6566781684d87560fdc69fd746a22eac","impliedFormat":1},{"version":"8acf5e34281b6896a32f263576144711a1e0c5aec82deb593d8675c18147f546","impliedFormat":1},{"version":"b9876d7df3a4ec58dafa1eeb1e5ae104d3326e5d0ea50fd34e8e67b58e52e98b","impliedFormat":1},{"version":"213891ead7f95efed458988204d6d328fbfa6680dbd071a833e8e8ece091c162","impliedFormat":1},{"version":"42ded6282e32871a3f09fb7a75c5a4fe7b15b567ed26240a9423a66d4b86d208","impliedFormat":1},{"version":"e96ca53a2b2ad48b5bf88acae2eca9b0abc169fc5247ff50b859bcbb1decf17d","impliedFormat":1},{"version":"e498682b4351711ddaef48cf3188cfdecc0283f4f5f73bffdb9cf362a3e7e050","impliedFormat":1},{"version":"ca483bc36f5d4562f841c69ef35ffd4aea406b4279ed20731f09585610e0a802","impliedFormat":1},{"version":"60481d85fed75823dda60351102d97dc8a9da90fa02e3d0a99b87a0bab04e435","impliedFormat":1},{"version":"ee3ed2930c509a2c67f2d5cf2674d4a6492bc76732b3fc68fa7130685e9c8b01","impliedFormat":1},{"version":"321df1633735c87d46c5eff22d8088cff4bc306d1d2ed4ad4dc7a86da66f58ec","impliedFormat":1},{"version":"0d88fdcd81ecbe69ca9653d9d539cdbdb9149c581a21b4baf57de562f8cbecc8","impliedFormat":1},{"version":"fd5dbcb25c0b40f7cef69a0978cb5d0dd024354e8563fbc99ad60ff022b40737","impliedFormat":1},{"version":"0d9e9751713270c684dfd3d0f60d4fb5903ae06ddf5bdfa0f2661b37093f8bee","impliedFormat":1},{"version":"1275c436f0b1b256189ce3a87019fee89f1c7c6194df24f25658ef92d2a75727","impliedFormat":1},{"version":"37fd9ef1c7c0650bf00c918fcee22d682ef3c6976edd858d63d74309afb37f3d","impliedFormat":1},{"version":"ac14166d41facb50f3ef111f7b9e66a5fbb2010724d8bacc3aef62d28c1c981b","impliedFormat":1},{"version":"1b542dc311c5c6c197920545b5d997095d4f81f41fedbab1658ab244db05410e","impliedFormat":1},{"version":"39bb8abea90bd4f0e0f196b26fce0fa7dad2e84d09ebd55cf26f66ed085d4c1e","impliedFormat":1},{"version":"15c3d2438362bc387bc7d7d4f8465d12b292d59d4ae45eb6a5f3a3714aca0533","impliedFormat":1},{"version":"98c26ed17796f720fd2ae16640a41139d13989848387eb78dc1dd4b3fd0c732c","impliedFormat":1},{"version":"1e875cc927e244f0c29c70bab63d90f20e71064565049b8ebffc90552f12776e","impliedFormat":1},{"version":"6129817d361cd2300a08ee34f5fa2b777a4fc90c3febb79c918ed1c40f7a25b1","impliedFormat":1},{"version":"d62158cb30f91935a8d0a410a869a70a6a0940cc2e98177616d74f037688bf92","impliedFormat":1},{"version":"427ffa97d275e77497fad3d24fa95fab369c2cf4709f27620a8673c22d0c151e","impliedFormat":1},{"version":"1a6b8d2e110bc4f4589963c97a3dc4a08b662e59738d59dca2565f7c3b35dd9b","impliedFormat":1},{"version":"451554fa5b756b144bedd2950aef7795728c37e619b141f18ba5efe721aa34fa","impliedFormat":1},{"version":"f63e5fffe7540b043e714c2d9cc1be520fb6fe5b9f8b709eac7523af40195186","impliedFormat":1},{"version":"0315812a5654097cc200625d27fa287f9447b750075cc2d33705198a14066e3e","impliedFormat":1},{"version":"8d0abb60d6f019de7726b136a8276990dbed686409953ad2cf6d79ee8b90d3b2","impliedFormat":1},{"version":"56badaca43104914e6e299612de820bc66a69e43ca7fafd1f340ed70c09cfdbb","impliedFormat":1},{"version":"203d186ddc779e35e7dfa7193735254529d252ef7f52e813f259e6ed479e9507","impliedFormat":1},{"version":"4386fccebced3e526ea7e601e54cfd712b1ad1ac40c21158d053d4bb1e55b951","impliedFormat":1},{"version":"cd965101939d557c184a81cf8e773e31146873382cf1547d035cb5e6cb57dff9","impliedFormat":1},{"version":"c037102606e032569c026474a95c31a63f7d752cfe6d5123e71c09b9fa636d56","impliedFormat":1},{"version":"77588f8d6566b6bac03479322cf55570e8f9eeb8f27ba8b5af2ab907b573fc45","impliedFormat":1},{"version":"522129a86f52ecd6236a4e59be4542a8b2c6a452ec6317e53c82b6ef5840ba89","impliedFormat":1},{"version":"4d1fef84811f86e8ba66ee6af1c97ec67a94d9b74e7e1e8f21a23e47f65b56af","impliedFormat":1},{"version":"3ae84bacbf3da888f2e9faeeec5b1adb9755acaed2a4cde11f2ed34b64201864","impliedFormat":1},{"version":"6df7a162ffc842b6695684de0ee5184aa970fb570a38e702d200df659808fa66","impliedFormat":1},{"version":"7557a2a4e6b0b6a6545d5d65284ebb38bb67d53bd2c0f5e99ad54dea57f67500","impliedFormat":1},{"version":"0d93012bbf9e0a40727e36369752819c387f0a32f30e863c727e9da25b773f6a","impliedFormat":1},{"version":"ed6f91479c0538f25686a80ac97d4b485a3f0f8b06937dcdbd85d458f183db4a","impliedFormat":1},{"version":"84e25d7608672366e55fe39acb592e228f6819686c208a7cb4dfe46ebdb1d6be","impliedFormat":1},{"version":"949ccaac85986e407f0fb6f02519070804470897d50f4c29fdea344f714acfe1","impliedFormat":1},{"version":"5e63b02f4474647dc7bc40d809695e3812af40a0a05b72f23729983d97d91c91","impliedFormat":1},{"version":"86e11b587490cd8365421eca18966a59d89cd4846d5a84a6a0572ee283513902","impliedFormat":1},{"version":"c3dc0d9cff2d4456c574888110720b7a9582282971b907865e323356786cfb42","impliedFormat":1},{"version":"952fcddfcc7b49df167140b9f81b7c62cc6ef29dcd4fa5f12dc0f4f13ae98240","impliedFormat":1},{"version":"e93d9a364b61d50b9ee14554b5f48ea46dd8c557b94bdd637b196afce4fb3e69","impliedFormat":1},{"version":"9d6b766c92985ca30cfc521ca650d1007c9986f8fb8b9dae720d9f55a0f3d351","impliedFormat":1},{"version":"7bf52da3f2b777152c701a9b4dc97008ab0a0f9db3311a2057fe041e021f5f35","impliedFormat":1},{"version":"42feeb1901957dfa282e8c1fe359fb42376abb894e609628dd9cb1edbcef7b5b","impliedFormat":1},{"version":"2e0840eadf33be01dc61f4f62887a8ebced1b8008610885b777265cd09b5a22c","impliedFormat":1},{"version":"f1bacabb70c87fe9d05595db6ec80afb0c16f0437e9b3c01c8e860e3de342a81","impliedFormat":1},{"version":"a82fcd992077e23a2b8f34a245a5785eae074a4c4cf00e295ffcc7e6fbf2b18e","impliedFormat":1},{"version":"7e847c37d924926f5540e2db0362e46e520334823cf889557d2c9a5c7fc7dde0","impliedFormat":1},{"version":"42738fe88686c67006137210788ff9013bcd961e494f015f3aef70ea663bd6e1","impliedFormat":1},{"version":"76703404ab0c7442e3e1920476f9540fd66c1367cde3e98bee8773d20e14d214","impliedFormat":1},{"version":"848670bf9aedb7ed67960ead4edb7a422a9add15e0f18ad3fbdfefbb47500d84","impliedFormat":1},{"version":"168150c074102ffe35603b43705a4dea7660cf01c88dd88740686b943a61acb0","impliedFormat":1},{"version":"900f3e87a9e7270634bbaadf57ec15dc3f02db69d25f9bb325c7c8f99303880e","impliedFormat":1},{"version":"aec5946f6fbf0fe023537cdf7f4f904ea76ffc8976d508d8409da52d0ba6e1fe","impliedFormat":1},{"version":"5b51d210d61b20c944cec24254d20110ef279b79c5e457c16d35395e979aa371","impliedFormat":1},{"version":"547bbc28cbca3e4e26af6b00ac131fad91fd0bef3ecd56e204ba1c66277a27f4","impliedFormat":1},{"version":"88730dd27c119094a269b3319036c4d60adacb10f819e9f0817ff1826709a42e","impliedFormat":1},{"version":"09efdecdb0a3f448be675d83b687d2f6e1d0f6bd756ec36fbf430b2c6840ee70","impliedFormat":1},{"version":"46a4c5544edc93b22ec2d704197c5cd684e6ac5ea491dd9b33ba531867e94e4a","impliedFormat":1},{"version":"a40299fb32c3e734190df64c5e577983616d988f9a0661d2d8092fd66db53634","impliedFormat":1},{"version":"5c568ac086f9156633b8fe8c85366e2d90de49914c81fecc8f0409605459a22e","impliedFormat":1},{"version":"072edfb9947a2eeaba872bea4a2b22a73ea932d51f8c9b19c71c7345a2a636dc","impliedFormat":1},{"version":"a88c164bbd33edea01c4934613ef625f946be8fb7e7df876c7518e8d8b258b11","impliedFormat":1},{"version":"11967bc391eb0ec437202643f3f8cbcdf5e97439cfb4af8ab5215f9be37abaac","impliedFormat":1},{"version":"cdd01be7d5d7cd2388607e6e89bad1dea3bd6d5024f67dd03bc9eabb8f8cc7b2","impliedFormat":1},{"version":"b0417940c1c63dca7f33dee7c7c0851b3443f0b5a12d385b562f1cb5c39720d1","impliedFormat":1},{"version":"cdcf2268514c3b52d909f39fea338b3d670b9b2145b66306e362e59ce921394f","impliedFormat":1},{"version":"0dc8fe7d045ef79a8d61e221b76dc5db793cfedeadaf8fa8bdbb4a717a6b978f","impliedFormat":1},{"version":"bc12f789eea7c7667dc8c1a6664600c696783cbfc854480db157d2b6b9ecdb59","impliedFormat":1},{"version":"75b4143645ee1d64a23f9d18a3ab534ff6682379dc2c239c947f0f83c0e45012","impliedFormat":1},{"version":"fd745003aebb0f7b47e684ba22a118e0d59cffffa86a097714933b4f613aa08f","impliedFormat":1},{"version":"0971815c5614f9c4d36d55a3d1d4a45f062e78cc9a3d97ef6a3b23c86b665475","impliedFormat":1},{"version":"76728d3561f3d4f3e8810fad1178ad402023d55e8a5c5da872303bc8e9c4d79a","impliedFormat":1},{"version":"4acb6230f22875f6defa3584d10c817831affb136ae94f5d2c0d9457b7050936","impliedFormat":1},{"version":"f4e5b51de3c73f0f093739ad5b4a1214d9d8ad3b3d6d01522f1ad6831d60f80b","impliedFormat":1},{"version":"4ade309af02a50dc157394ee7162c88476980b5efb0aa7304d6c618a0112a89e","impliedFormat":1},{"version":"2d3516a828f8ef63b2f2eb3ae1f0570265744df44d6eb9fbe8352bd5ab7f2a62","impliedFormat":1},{"version":"f78edac82d00a3d169adcf1fc70c705be387dd2c18be7d6a7c1e54ef084cd641","impliedFormat":1},{"version":"1f11139bcbbebe3283f0a33b647aafbf272afe86163d9554fad80f6c040b64bc","impliedFormat":1},{"version":"ee0fc780ee45cff7ee13c49ed43d4875c0155da4cd17735113611db6a1665b1b","impliedFormat":1},{"version":"b9e1050114f422013d0f534b4475cdab7126b7217af20f15bdf83cc734d1ead7","impliedFormat":1},{"version":"e231c9fb03ca8893b43f055c5d651d55e189b48ad9351bd2729720671790cd83","impliedFormat":1},{"version":"a97a804c84d0cb7b1c015bc06a005613e1ab5ce58c27528dc9f00fa6a8655f28","impliedFormat":1},{"version":"090eb938f60728f4bbb7f94f6ef48ce4481bf9205aee390c4223ea9acef7a780","impliedFormat":1},{"version":"2348b5c42c8dc9255e5ed9029c102c3f37d25f8289d84b4c711d6fcd3548a05a","impliedFormat":1},{"version":"3bf3b2e2a29b895dfb42b380f61bb60419ce9f733eb26f61809b589de790fe49","impliedFormat":1},{"version":"c8d3fc06cc42c173a363bbad4e392a325867812b47387d1dc2940ab555bfdadc","impliedFormat":1},{"version":"f8890f41d665b98dbc2cfce66719aa64c358af705b183a7f682a5229520e0fde","impliedFormat":1},{"version":"9cd88c0017d85f46e694a13c201bd75d7c404c5b07615b2de57739d645988618","impliedFormat":1},{"version":"f8dc4c538eff6d92330223253dbd66c4354324f411b39de2b7fa520fe41b658f","impliedFormat":1},{"version":"2407b5c4ed19bf2edb4a7459c672627003236d0912947e2a0b03a7fe353c85d9","impliedFormat":1},{"version":"506e91ebd08f2cc0b49a69568329a51bedb0d9bfe2a9417ed1a9b3481841ddac","impliedFormat":1},{"version":"f63da73a8d858871cc7aafaf3146347de5a3504ab99667324172edf79622ad45","impliedFormat":1},{"version":"b877adbe66d8db5350fd60ba62ffb7f9f1e185709f41cc6c79e26314656e7966","impliedFormat":1},{"version":"ff3d1594665d0ea1e8e3367ca1be065cb29e56b544a98ae990150806381e26e0","impliedFormat":1},{"version":"24dcc6ab1b47dbef6db80f0d0406029fe49a5803e6b3a6a2733ca097164839cc","impliedFormat":1},{"version":"76ee5e01370001a08093cb98e98beba007176e5c8c0af5b3b17ad1b8470d3c87","impliedFormat":1},{"version":"1f8822081ce52fdcf13d2ab47d840ff28216abc2ecdd8b3892b3d8dcb66ddf4c","impliedFormat":1},{"version":"e266998f32d1e7bb4127d9e87d48c84d6aa5200df46e1266065f54d969cfa699","impliedFormat":1},{"version":"742ec7d93e66311678aa6f558561245b2e12399fe6a98d849944f161ec6a857a","impliedFormat":1},{"version":"c953ca81f374296b0e0ad9307f854aec1cbd22240bd7676e852c31bbf84d33ab","impliedFormat":1},{"version":"d2380b72ed2f0e19af8291a6e1ac6aa7a60e6ad455d838705ee3b4bf667840b9","impliedFormat":1},{"version":"25d84120721134c846a8733a46e05903f3b109937dd819e5ec41ac8af893899b","impliedFormat":1},{"version":"09870b1892653e3854208cc345b6a7f055a875a06fafbff9a1888abc2ba1a404","impliedFormat":1},{"version":"437c2c7fb5da8738335aa9a739ff4e797039504fa6c5cd10664dcd1f30577095","impliedFormat":1},{"version":"a9d20cf42a783baf00f171b23f89bbc28e5101c2eba461f54708e16ee20a3d4d","impliedFormat":1},{"version":"e54407eec308c19f8e3992c66bcfc893f4b1f5aa478f05a55de3e348ee015c69","impliedFormat":1},{"version":"815a703ea91f25df5ea36696478f59b242f625f45fad37c6873c28c1591dc031","impliedFormat":1},{"version":"07af686616d30fe4caecd19ba83f2b5830e3633f5994e027de90daed22e07319","impliedFormat":1},{"version":"d476ad2c31b6a37660a3b0d90cdafa6cc70e6da342f70f92c8b8994da9606153","impliedFormat":1},{"version":"c601ed82e8c11c2d98fc04da79201eeeb8c6f95927e348d5497bc0c2ad85c6b5","impliedFormat":1},{"version":"7803117fcb92af605e9d0bf5aab04f8fd5959381e0b826ebb05365ece4868ae1","impliedFormat":1},{"version":"025a8cef62e0fdfa4c32995a93e3ddd4f9d6e726477e753781e99179662b6c58","impliedFormat":1},{"version":"dac9e0310cac6c0d3815208ed585b6ebb2a19ed44536d04ca5a2cb81188906d5","impliedFormat":1},{"version":"329dbb853695003974005f642063d2ab083d8c06f7d8f3bb2cbb15f68c892487","impliedFormat":1},{"version":"c1cbd9cd690158fefa1c7b8b285c1862d4064cc61eac7226d937e62ed01db785","impliedFormat":1},{"version":"1804788ef733867ea378a6e571eb60d92ea9ba87ce23f9aed8a6cc5a174f5471","impliedFormat":1},{"version":"d5c6618af14518cfeba225d4dc6180271a423e24bee7ab64eaef5c70bfe63992","impliedFormat":1},{"version":"2abd00c6b8e284cb92d2caf3f93f3170729d68cf4a51fb53ff92078b1455bfb9","impliedFormat":1},{"version":"c388233f176333d0ba84350a79cf88f1724bddd685b2eb9fd9d62533f39850a7","impliedFormat":1},{"version":"85388e4257101bfe0f0e5ffbba40fadea704e576d64f2e83ac1e8f042ec521ba","impliedFormat":1},{"version":"7ffec597c82ed1cfb06d7ffdc36d71d77a564bd55eee6a2cf9c72384736e3726","impliedFormat":1},{"version":"6d72cd0e28e6b157b2b21131891ba29ef596f9d3d0463316955a1ffc4a5c89dc","impliedFormat":1},{"version":"72037f13e369d619e0842119af97d6f6905fc470124ba627c44773aaacae9ba7","impliedFormat":1},{"version":"bf8c812958db10404d946309002674de28f9e300416d7b39a773c98bc51c7475","impliedFormat":1},{"version":"94f3baf5e3e2bacc4d21f9308045913aefa2ef87b44153422057d074d5f7084a","impliedFormat":1},{"version":"293d1aa6c28408e0bde5e4d0b55b9be782e00e2f702d4044530220314e382685","impliedFormat":1},{"version":"e79c77ecfd439075c20dcf9785bb7255706dee26ff6431673932309a2ae624a0","impliedFormat":1},{"version":"f18ba2828d2c1bfaedbcb734d561604784d65fda9d290fb93bdf71015549b920","impliedFormat":1},{"version":"eadc908b2f4e6e8edeaf0970ec92a47129c289d5b4e19bdbafd6d6f70bdc907c","impliedFormat":1},{"version":"407a11241e9056524e24ffb7899d73e819f8d44010db091d473acb4348a82cb7","impliedFormat":1},{"version":"60f9fe665ff16131a8f07a38d2b4277e96a7b11049deaa1c2ff85b8b2cb08abd","impliedFormat":1},{"version":"121ca5c164ad18f6fccd49dc61333dd06ee8e4984c4b127c59744c2d6ac953fa","impliedFormat":1},{"version":"da883f2b97696813d06993a22351cf2f402fcaa29dc446f62fd09b05bf12fef5","impliedFormat":1},{"version":"48964bec72afdd3809f8bc1d5df95f3270e29e03c8d315685db3636535e6d3d8","impliedFormat":1},{"version":"6e13dd30ba8a2a783d41ff51896cbf8a310ebad22d06b9206ebc8ea814d1c440","impliedFormat":1},{"version":"1174c675811ff10caaab514bfd3a7720bdc8cfba524a0eba62d8c1c9563adf80","impliedFormat":1},{"version":"2066017f176fb877854da8afa1585591c67963597af3bfb828974547894e850b","impliedFormat":1},{"version":"0fb7ade7ade491a02022472999f472f84f304f4738a19f2efccea1551a13101b","impliedFormat":1},{"version":"b38bfb03cc99b72e403ce60382cb45bc9467641181a1dc775ee4238dea847b5b","impliedFormat":1},{"version":"f0c93c00af504f52e837bdae5c8d0dd16eb0358372a90bc03fcd2096f22e1e93","impliedFormat":1},{"version":"89e015b6421345ff59eaeabd2ddfdf4d4efc53fadddd0dfa6fb08791d4bc5396","impliedFormat":1},{"version":"275c59e7cc724033d8d962a68b604a827ca1d93ca63da907622ba4cdfdd138d0","impliedFormat":1},{"version":"6529e78e442adf060c2bbc460d4c585d8fff553eb06a09b6b9d4defba6a3e4bc","impliedFormat":1},{"version":"64ccb0668db4982770ccd3eae9982e9236d997f7848549968a59c06cfb2a8c85","impliedFormat":1},{"version":"15f4992579aef55c498805517266560cae989c94570067eb6f0bb1fda8db3e1a","impliedFormat":1},{"version":"1a5cb4225b0e5e65222f89d3ac4f11e1341c84362c34f64573e59aafdec65232","impliedFormat":1},{"version":"85280c9fd80e289ca3fb7cc176e7c56bd1b59cc87153e35b4ad67343a16963e7","impliedFormat":1},{"version":"69ec7481d640752a71598ad9e0cc9c28fcaaf3128a8e56e9f22d09aa75e48aba","impliedFormat":1},{"version":"f1c203586ed60b44b1b54f2d3d6d5489a32a3d08cd9b8430c804edb09374e29d","impliedFormat":1},{"version":"396b9cfbf84f6d62c56eb78313118d33b2b4b112c65452856049b234e91ea782","impliedFormat":1},{"version":"beeb53644fb37efb6c8fc859d7df72d7bf9df52b027169ce087f8ddb8fe43c5e","impliedFormat":1},{"version":"0b10af13b23b16a86decbf9dced96c5412e742f1e1cbbc7e38521f3272699a18","impliedFormat":1},{"version":"5d8912088adc90f54b80df0454cd6b67c1a4a5c08b45e42f6306414f92179e58","impliedFormat":1},{"version":"2bf6f81bff3aec45692cf7df2ec4f6bb955c15db4d7a0b16f5fc0aca638642f0","impliedFormat":1},{"version":"5e1ac93dd33dabf032ae7d26e7d376e25dcff407b285ebed3f08bb440b5a21ca","impliedFormat":1},{"version":"9cfa1b7b61b310b77c8291afc7567f0269982273f5c1c056ea2a6594cc966d74","impliedFormat":1},"34a34be82c301bd36b11967f64793e25c452f683f66eb63a2c9b9382291013cb","212f48de57c8459697680ebcd00c6f6e3b4938a5868e0ee67d16120c06005fab","7a25c2a8996260ae0959bc33b7311de3a098a4e4c250b213ec425d1d038b6280","67faf30978b58f810624c8e9b2fa1e5758fe9b5b400f2419f166721b16e3282c","4d5e09bf879145dadc2707ff2c877c702cad5de8ea5b6e0eb4ec29d4fe9bd3f4","f489209d1449424ca707ef2852f4c732cf3e568c5aeab21cc37c67f4c401ef1f","34c2a35ec8db5ff54fa86d806b8540cd330792a1a977942ae2c203df2411ee44","e878d835f888a25df33826880ab51b23dc0f3a145ff522dcb6df86c19749b479","cea4f6104c14a2de217034c55d5e0c5d108800b8776791277bec0f3a491d6c7d","5d59f5b83155be3893bb5b8f6bd3df7a85157dc2184b21442b5c104603149ea1","aac543d234cd796c6a6ae3a76cd9961480d5b22cd00dc1a64c4a56025310c212","437755bf7362625845340e775422362c249132b5ce85bad8e0863de1442c1ea6","a2325ec154d19da8a7231b9bc4c615650417258d2f887edc0c91f9d9dbc255bb","b8e0a9ce934b5cbdaf505c3028677700753443e9766ff07734db197abf42200b","cee3a191eb553499713a69f5f4728d3b1e917ec9423ad976b4bb576dca530245","29771068febe7e8f360713fbb4f2d0142b7220f099a328759f3f5339dddc460b","100ebc14d3b3f2d9437681da4e37ce15eecf8d0bc50c562f61d43cbedfe9dd89","89e8081e7bb10a1985583264b6772b401c888f0da9efb63deb3dc671bc730900","83b2471c82779e1444b63942a2469bf40a155ed4e646dfc9e1583772ef1cf554","7121f8a3d7143ca81e758e5f4924bb60730a03268151ddc0688f144b03d427d2","df1170274f174c97b713e922dc2b14bd41978f0b128108c4f1d8b52c5ad750f9",{"version":"73a0ee6395819b063df4b148211985f2e1442945c1a057204cf4cf6281760dc3","affectsGlobalScope":true,"impliedFormat":1},{"version":"d05d8c67116dceafc62e691c47ac89f8f10cf7313cd1b2fb4fe801c2bf1bb1a7","impliedFormat":1},{"version":"3c5bb5207df7095882400323d692957e90ec17323ccff5fd5f29a1ecf3b165d0","impliedFormat":1},"242d2da324880332769e3302925f3db9ae112f1fbee32b877f48ee86ad030891","fb402f271e513395909e4074fc569d1b15d1e06f343af3ee9571ffc25a3f047b","cf6141331e337e09f4fd6cd8297af4a54e606a9f9f26945a09302b335b03c2e1","0b5086f10b4c808eb6d57ffc8e682c7093b3b5172854fe2ca7497b48ad85b769","679a0f3e894d5d408147a6bf9e2112d47312b7d303d0dd27b403c62dc24ccac3","22544b339213bdd7af6899eee2730a28850900acec2117e7d237149d9cf45a6c","384d53819d8764fcf034acb61dd5e0b882a508a4be079e78a25622ef25c62f97","cca8499d96e4f5780d93adc94af96c4b5ae79e427ba0a9116a10a8ea00273562",{"version":"56cec9bef9b96ee62a7999a618a728d633cfade7c59ca0d56ff2704b69ec7c81","signature":"f4c779c77a4407baae32b009b3375f60f503f7796482b4e86d8391ef76bf04f1"},"a28136f26720706488db65c5c52f3645079dd581645d3ca810ea3072b6e6b6ab","99b36a6ea4e3ca84501d637d622a29a910ce014d8297be057c560557e128ba8c","c7fb0a48fcb8cb3a72d6cb6837ff92565cc42317729ec6aa0018990492e5b004","9ddc3dab94e0287994822df05f09bd9cf417563fe24b290decad01c0d2eb80ca",{"version":"52f5c39e78a90c1d8ed7db18f39d890b2e8464a3f44d4233617893f6648e317d","impliedFormat":1},{"version":"9891b4e49d435c7ac14fb3cc769e97077bbd946100c952df08eda117c3b5b68d","impliedFormat":99},{"version":"2d45f7ff55036e74513af142af1f414924ad337cc00e612bb37bb55473c70b30","impliedFormat":99},{"version":"3a6b10911970b0588c5a287642e4c6be91c16b96407a499c6dc81a96daf1085a","impliedFormat":99},{"version":"6392353adcff7db02a3f5dcacb5637b791dbbcb76125aac3075da2519af9785a","impliedFormat":99},{"version":"1f3952b74b8c766a2e602a0ba2db19d3d872d00bab4e01746c6b7229c585086c","impliedFormat":99},{"version":"19726a169a4000cba269c284b97043faa0593de45865c43553c233f6825af0fb","impliedFormat":1},"92f966f8184f9cc5f531fdaae3caeabde238a82d783e50713eb015d70e187914","9f44604e67cab8b4618fb0743d41ba9aceb886285f0fadf7fd6c6ef2f3ab913a","19e1a22fe32da3d48906bc7b8c517ada6b58ee44a030331d469155a8af66b348","23154637425b907a992c377203f4c618eee4d12421ac52cec263a83b8173572b",{"version":"1c97ee9a298f6c15c3e637015ee8ce3020a07329105d430d4ec45a5b6cecbb3c","impliedFormat":99},"f136e76a35d7b96a3f826ba6250b2dcf984aab4583006014e9e091d36fca490f","aa0e467a4a77ca517ff1ae8282f91f4ddb28c3acd441f93eedf1aabd07b68b41",{"version":"adf20cc38eff5b498d071cb684fef03bd46a419c65cd33ce39a2308e33cd84ca","impliedFormat":1},"31a5ddda427bd1fbb2c7fe1ca559db8bc393d7f42592452f29f4928603d6bd92","6020c483cbe9b111c42dc146f31f3c269fa44f9666a7bb289f33d4e1d415a5f4","c9d1b88aa2c8cb759d8592fa78e56015a156cc8fcef9acf694d49c646076eda0","a58068f7fc51a4d70f59eaa8d9f6b79440f71287c3988707f6d82e8493cd8c47","baf0f41a91dece70a701d19fd82b1b54c48a22eb94807f9bb0718f0252764aff","579b34fdf9e3f0a6229729e86cefa990d4c9653025a9260ba0b029d04e28696f","79acf870259d9ea9915fd272eb3ca5709361e8a86f80551588c1c97da9dd33b3","a4e143cf77873e6c0ae83b4015a892684338bacaf91ec384803fea0de1c8917b","a98f4bbc7a5f4f4f7df0f1f7cba27eedc34d3852bc4c8d6eaead40a106341848","9c3d1ca00d7911dcd4ad62ca95be97bc253099773a23f452d2f215d235c2a18f","08c8705cd2aba74079347b327a048c0f427024789f41cd6bf732a636f95d11e1","f4a266cbe60a450d84f26445962f7a62e52e73e2c82bfd2e642ebd07cc97f426","f1c8cbd870edf8abf542d3a9eaaf15540a37e9248e4ff06eb0643986e0f4d82c","de454fe663b6815d06e3512a1ca1af2a1f28a2534aa8a997b0ed2b5217dbe836","6fd221dedf75176a02b338de6a8bb4ec34ef023d84d5d95a534ae6d68b4c70d7",{"version":"6ee40b6eaba79cbc7afee85496d30aa48b50d23681582fdc1839642e8187e6ea","signature":"00a9b5ac39b55b2140b976966b2b3621a071dfb7cdae582cb8fa334abd0f7ac8"},"edb9845bc23f34e9718510206fed90eb7e010633a08e91bf92323d5c938435ee",{"version":"15cc4fe15f39c26f9d5d3294e113e29837ace90ad116d94b5bf771d7a0a8dd8b","signature":"0f0087e66c51c6c08c9b42c5f7019bb9c3631514fe60e23f21ee2675f157ac26"},{"version":"85e3edf11c7f4cd1fe2b2b86df607c87f437aafd43eced2141199736b7879dc0","signature":"2285b2cafd3f6800bbceb385b5283fdcba12da2954a3755709f3582e6211245e"},{"version":"c9c42d5948aa033c444cb6a3c188bcd925997bcc2bd8e97928af480ee356417f","impliedFormat":1},{"version":"f4bb2d3708ccd853dac13f97ede135d721bf5c2586f73ab8f1170f439e44b5b4","impliedFormat":1},{"version":"fd5649816766f52b1f86aa290fd07802d26cbb3b66df8ed788a0381494ebd5ed","impliedFormat":1},{"version":"269a13226bf6847c953f01ada5aefe59a3963a3a74f98c866ccbf08679d16b86","impliedFormat":1},{"version":"b769494ac41040c4c26eb6b268d519db4cc8853523d9d6863bee472a08f77f80","impliedFormat":1},{"version":"2fe42f88e2d318ede2a2f84283e36fdb9bd1448cd36b4a66f4ead846c48c1a33","impliedFormat":1},{"version":"cb403dfd16fdbdfd38aa13527bcbb7d15445374bc1c947cfcc3a9e6b514418ab","impliedFormat":1},{"version":"60810cf2adc328fa95c85a0ce2fd10842b8985c97a2832802656166950f8d164","impliedFormat":1},{"version":"de54c75cad3c584e18a8392a9a7e0668b735cd6b81a3f8433e18b5507fd68049","impliedFormat":1},{"version":"c477e5c4e8a805010af88a67996440ba61f826b1ced55e05423ad1b026338582","impliedFormat":1},{"version":"6b419ab45dc8cb943a1da4259a65f203b4bd1d4b67ac4522e43b40d2e424bdd6","impliedFormat":1},{"version":"a364ff73bf9b7b301c73730130aed0b3ca51454a4690922fc4ce0975b6e20a33","impliedFormat":1},{"version":"ef113fa4d5404c269863879ff8c9790aa238e577477d53c781cdae1e4552a0cf","impliedFormat":1},{"version":"5bfa561404d8a4b72b3ab8f2a9e218ab3ebb92a552811c88c878465751b72005","impliedFormat":1},{"version":"45a384db52cf8656860fc79ca496377b60ae93c0966ea65c7b1021d1d196d552","impliedFormat":1},{"version":"b2db0d237108fa98b859197d9fb1e9204915971239edbf63ed418b210e318fb8","impliedFormat":1},{"version":"93470daf956b2faa5f470b910d18b0876cfa3d1f5d7184e9aeafd8de86a30229","impliedFormat":1},{"version":"d472c153510dc0fd95624ad22711d264097ff0518059764981736f7aa94d0fa6","impliedFormat":1},{"version":"01fdef99a0d07e88a5f79d67e0142fc399302a8d679997aac07a901d4cf0fc83","impliedFormat":1},{"version":"ffcbdda683402303fa8845faf9a8fbb068723e08862b9689fc5a37c70ef989b8","impliedFormat":1},{"version":"208c5d0173b66b96c87c659d2decb774be70fb7a5d5af599a5d05f842b2e8d74","impliedFormat":1},{"version":"ec3b09b073a5e8a14fd5932cc4c33efaa0280c967d15bbc4c0c5b73a0d2f1a68","impliedFormat":1},{"version":"4b4c884e11985025294a651092f55dcbf588646d704e339674dfe51bdeead853","impliedFormat":1},{"version":"78c8b34f69c45078c6a3a3f10a24f1a03ea98495b6d75b945c1a3408a3ce5a26","impliedFormat":1},{"version":"0b1a08da571520eb288eb75843aad95d07fed423aba18b1149b5a0c767baf688","impliedFormat":1},{"version":"9c4708e703c8deb525e95946b3fdd8d5caaf724b3ac4a1cd6c2cab759b53f76f","impliedFormat":1},{"version":"ed14fb238769ed0b0dff6b78bef5263f0f50f403878ecd609fc71774b2113b12","impliedFormat":1},{"version":"59405847661d05bec9243efe9498211cb7e66d2620fe946e40750ffcb9e7d56a","impliedFormat":1},{"version":"ef95961bc90e8972bc9d88bee5264544d916929c0240e8c3c8ae220568b26ead","impliedFormat":1},{"version":"3f64230713c989e5f2d1d46c13fc8b2d9193b5dd59d393d5e70098c221894b1e","impliedFormat":1},{"version":"e49eeb0f93ea6a311a22f5b66a155c368e9cdb3585695fd951945df1a4192eb7","impliedFormat":1},{"version":"6f704837b406e4ac6ec5942018691ecc10e2d079cd64706d8ed1e86826d0671e","impliedFormat":1},{"version":"ee2229f4fc2d2306c864e5c2399aaa5958e4b3e1c964701fb8a84709237c9f47","impliedFormat":1},{"version":"6e5563614d424223f4748c6b714e1e197c8422824ff42fdc16f64484e1a863a6","impliedFormat":1},{"version":"8f31673ebf988cfc4b7ce2adb6a6c489dd748025600d8e2b7d922f952d7d21af","impliedFormat":1},{"version":"fd3715f87964b5fc26f4c333422969da8ca45e69e3fb6973ba6c806f437eb012","impliedFormat":1},{"version":"97b1e695f57dd56a6495f7bdca876981cc8db1cc4a555c3964aa14ce26e0f4de","impliedFormat":1},{"version":"cf32c06d23f373f81db3e93d47b7006f5bfc005df4d92bf5407b7792adcb3c47","impliedFormat":1},{"version":"eacc624e44f4b61dae0502e59ca5c0307dee65e7c257ee3eab4b2c8c6f156cd9","impliedFormat":1},{"version":"6041c1c22cb701abf3d98f153f878b12280f3b2213144588209b66ad5f5915dd","impliedFormat":1},{"version":"d95c6fb6552ca855ed11cdcaa5c68ad484bdc6325fd86fbadccdebfe57ed841b","impliedFormat":1},{"version":"0063b3ff097c4542be10322c67ca804e9e4504545b46ae8d620ceab59349ee84","impliedFormat":1},{"version":"9ff44b788f5d8d86f6fa34abf3faec8c425ecf1838248318acb0c5a4c88e62e7","impliedFormat":1},{"version":"4169cb216a6b361ba3caadf4a13670354e2a68ce055f4ec77ae7688902d2ab2d","impliedFormat":1},{"version":"e642a86d8e0956bb7c76aec21b83bde20409b19eb22786ed72ac5515aa9268c8","impliedFormat":1},{"version":"879e2a34d0139f04a32974fdfa44c5720619afd28f8bde0e5860f371d5f65d34","impliedFormat":1},{"version":"8e04860bdf072d4270b09b33b2b91ec4545297f23cc580041cad3e738f58d92c","impliedFormat":1},{"version":"bff595611ce25571f0cb50a83b7dcd7599559d6d3e98bf4fe87ad77b9c347664","impliedFormat":1},{"version":"2eced6af832d4e69811e353c7751f73bba07dc3b63189e0fa963e8264f341c12","impliedFormat":1},{"version":"a884b3560c8a29e5cb7f1263d880ff5c8b017991009edc20f450027c4a112b3f","impliedFormat":1},{"version":"6775c3e28d13ee126ec2c2e0827ec76422b0e11d9d5c2cfdfa7b982d48455fff","impliedFormat":1},{"version":"2ab0ffd4cdaff94c5cb8701f34442f8a018a2b62623528a66ad1ad8172ac6626","impliedFormat":1},{"version":"ea8215cf7cab1015579eac88e2f16fa1fabbe9f84ce4d2848c10f36d7df8ca1d","impliedFormat":1},{"version":"cc894fd562a73055ff72dcb7821729cef909b85bca4d0e2e2cbd0c1a2ecadeba","impliedFormat":1},{"version":"ab058bf3dbdbde6571f97a57a3b52b14be9d7e19f23190e9a551d5d6f6b6563f","impliedFormat":1},{"version":"142892cddebce23312318d79014de94e64a1085b8b0d73b942b4a6ce40a1b18d","impliedFormat":1},{"version":"db84257986e870ab22b304a80b02ea5e079c13a7f7be7891c0950bfd9e33f915","impliedFormat":1},{"version":"24cb43d567d33ac17daaad4e86cd52aba2bb8ff2196d8e1e7f0802faeeb39e95","impliedFormat":1},{"version":"dc6e0137694a7048ceba1ce02e6a57ab77573c38b1d41b36ae8e2e092b04ced2","impliedFormat":1},{"version":"aca624f59f59e63a55f8a5743f02fffc81dd270916e65fcd0edb3d4839641fbe","impliedFormat":1},{"version":"ce47b859c7ada1fbb72b66078a0cade8a234c7ae2ee966f39a21aada85b69dc0","impliedFormat":1},{"version":"389afe4c6734c505044a3a35477b118de0c54a1ae945ad454a065dc9446130a4","impliedFormat":1},{"version":"a44e6996f02661be9aa5c08bce6c2117b675211e92b6e552293e0682325f303e","impliedFormat":1},{"version":"b674f6631098d532a779f21fa6e9bdfca23718614f51d212089c355f27eea479","impliedFormat":1},{"version":"9dbc2b9b24df7b3a609c746eaada8bbc8a49a228d8801e076628d5a067ff3cc3","impliedFormat":1},{"version":"d6ea60339acf1584f623c91f5214be0ac654c0692c0c3abd69a601fe0ff0e165","impliedFormat":1},{"version":"d08badb0bbee55e449ea9ea7e7978cc94859804c49bdc7dc73e25d348337c0da","impliedFormat":1},{"version":"b116a03deacf70767f572c96a833e3c1adf01fff5c47f6c23e7bcb60c71359ba","impliedFormat":1},{"version":"023aedd02204fce1597fd16d7c0f1d7be13fcf4bc1ed28fb30a39587715ea000","impliedFormat":1},{"version":"b18adf3f8103e0711fbe633893cfbce2897f745554058cffa9273348366304d2","impliedFormat":1},{"version":"f41fbddb4a2c67dbf13863507b50f416c2645e7440895ea698605541d5038754","impliedFormat":1},{"version":"636a0fc7a5ee207de956241b8cc821305c8cc72b9f0bec69b9c9de15a9eafcfe","impliedFormat":1},{"version":"c326f85f762b14708a25b9f5c84691562f5cf39ae9148c00f990b8b4a2a4461a","impliedFormat":1},{"version":"caef5b191982cd88619282b10e1c52c3cde8c81d4eaf4650b4e62d73f77483d4","impliedFormat":1},{"version":"e038e10f5702f8e244cf0536b5a100c3f2b149f7631d5c9d0a7f928e26574a12","signature":"88eb3c3baa74c5f82d7e6cff269dff7bd5f50863ca782e91da07c3daace4811a"},"4e8edf729e0c2a04169b79534daf9b66f9976173a12c8f5339c80b9bc23367ff","d2a8f67c03a19b1a2756a9203f0f4b37cac1cb53800cd6c8153780f2ffcb837c",{"version":"9ff194a196707954313c197ff74831edf396ee89f6b6e50cd5fe9e07b8d7d46b","impliedFormat":1},{"version":"6bc6ff00765d1ae58ccf41ffe70ff858568151b80cb5d45937dd234725bddcb9","signature":"a6f8d34822a8be37deaf9d7fc95fefbe4947a85ee2f1853ee7bc757316dc5879"},"7e02783dd585896e4d934743044105b4bf7d98fe9ea128b3b2be8e7862cadb7e",{"version":"3312f7d9eb01483f9e392733e461f06755fdc624b5f2318e01f686a6a036ed7b","impliedFormat":1},{"version":"34491a67ae33c8bdacec1f4c07008f01d2ebe588ed8b7b1bd8f940f5fe953f2a","impliedFormat":1},{"version":"cc0e6f2705c8fd9eb831790840c08be6a3d3108d7c7043c4a1c0a97e3e9e289e","impliedFormat":1},{"version":"273928f388427cb6d6859c6b29d760de7612a110f8a50afe092d3a6440ed0cd3","impliedFormat":1},{"version":"54db43f6a831781a4587d81802277a9686bf34680c586fc0496e32088f2d8942","impliedFormat":1},{"version":"0f53259dab3f0531bfefb89211d4be171821c855980a843b396e9dcf06ab23a3","impliedFormat":1},{"version":"b1b1faeb576467d84ffaab5942f6bd5a024bb715dae28aaeeb22b37cc0f17030","impliedFormat":1},{"version":"a7380d88b8153951784d10b663b949986aa02c238d7aba129d378bc8f0bd2900","impliedFormat":1},{"version":"2110f6c3b26b0d0af8f4d0d7bf8fe89cafbe2a200cc2187db2e446c57628b67f","impliedFormat":1},{"version":"b2d0ca3686d89f74053a1d0d90e8088b9d48869c9814db2cce4554585c83094a","impliedFormat":1},{"version":"6491db94d895853640fd0c6814aa5decc2458a6085193abbd7a83a0a65736a30","impliedFormat":1},{"version":"ce8cd3fcda8947836cb52af1f9a5958fb9cea1ed5eb53466227a82c079ba5622","impliedFormat":1},{"version":"5a081b7e2596e450b5bbcd5c5556806b85bf2c0bdb6b7fbcd640dfa6339a0bb3","impliedFormat":1},{"version":"36022f5544b27ac66385e56350834423923403574cbe6efe1c982649f9452c54","impliedFormat":1},"bba6cfc527c19857aa23b84e8a2046f44b996307563a7ecc22a92fbf20010a14","62c0acd226346f4a785c9193c6c45545ec3fff1979ee8df3f588846f6d19c861","80053711b514e246668987e2ecf81e0d07cac02d4df0fca9349d93a8524c6eaa","e0eb841ca5a2734b2dca0fd51b36db487be2bcb099a86026c7618eb198b4428b","56795690506e9f971e99867981d6d70728826072ac326b5b42a84b32e83b7be3","b0cb22b5146d40d089e9237e00d20889285581a146d11b1673ff0477801f4250","22725615aa6f29bc460cf104925d37da934ce0a070a75ec2f27bfb904e44a42b","63847c8863d58d05b6de39372b3286da63c1848d142966fa4fae49a494b273bd","c8f48ba45f7cc5d21200a73e2299637e9a132be97fe32b5420b41c9083da8f26","5765ff58850bc8f51c7480818910df84df56d86c80a036e347d0d9a169a0be97","069f758baf9f6d57335d108a40043d61cfeb8258a68b1a9d9b9bc5923f26a95c","4dfe1b2c2c969247671df680b24a9c967a241ba8efb8f560d38efbaa68b69dcb","297ba6d7e4e8c638f366363cb8d85141fdb1c2daaa6b06ba257eac005ac978fb","a55b60d594c2c7ca9c2ec78557f60cf80afe36571bd0f17be3b75f22755a6457","403d308ff3ea1212bb55bbc619d813d03fc9515198e13e04dd224607eba4a75c","b8b7ed302e941989201e22112bb8b2c8edeeb9d3fe677f3ec3b155ad1bf067dc","de3f5544642634ae186a297e5f0f64c1ec8455fd0a9e6419c6a0215e2525e534","ea79deb2c6f4040dc55bd04e4a37ea36858d7e59ae354ebc0eccaa2698fcfeb5","91883e5a7e00b0bc6e87ac5989af4c21de2377268e6bc15379ec1eaae601db50","904206fa7cad3d3da7d04805aa61f9ad2438c6812bd7cfe494711195bb042f1f","29a5c6db1d280d9d1608f0445d11b9894d8b689a5464db6e6b9107ae12ef0a67","2985b5a8371b42b78a230fb9712cc3c53692cfb8490b75bd27e41f9f3ed3bdb8","a48607078976e0d9aa652912f678f0dc38782b0735d1e2e15f78addecd97a932","5134195fec4d019251817043345bf7280c10145fe777078f0b7b10d29af0833b","02465a9c5305147d02b7b8055622109c4a4aa06a7c2cbbe36c8d94d5113f492b","e9c20c57dd7f0282aead93fe090788a197d28817d47cc0ef9f5159b74abad69d",{"version":"8cbbefd9b10ebcb631fa5abbc471f7d14818664162210fa19d7125bcd451098f","signature":"e46f6452764da0f9887ede1a46a1151655285cb1205a46a8c2e1c71cf38ac604"},"132679bcb51ed20109bded99dfdc0a065b4c9037c2cacc4dfb4dea623830c17e","4d5c9922ad0be23e51e85f9d8f8b7e5d9a1962e98d7eebacfdbb9d8b8a1cd32f","bfd4b5cd77a389957c8aefef945b2dd6bae4cb79cf094c63cc5b6198e5213b05","9bbdca4053c688b71dd5a2cd64c6c3ded916be13360c723c8c6cee23d1978a13","e23fbb983beeaefb3a412da7b4fb0a44e2c35cb4b7afb09aa465f73f1daa974d","64f29be229c7719a5883a31911beda7970aff4336d375ad1feb4304278d3b828","6a8f4a5aa81b64b18130401a3266c15e74b46d8d06d20a19c4105c51672d3362","2cb2f33d92c9ba1402d1dea4a99e1c68ae5ab11c33e1d5c8743a1e49813d63d2","035d3e4f3d656d5427955191ffcb1ce1f8ee9443aba2fccefc0d8ce34328cba1","97b2b5bc1e1474b8d180a47999ae6fdfbff2366235b4f068917f514103ec8ade","2bf0208ac551b03a24141ab9dedf0fdd508290105fe5e7d1a6fa0ac4de014a1b","97584f8cc5c4e9d6bf87c6be28c4326750b7befce0702416ef2e58e269838fde","b57cc712fd0da58bfeffdee5b34a1732536c0a5fdfb588d7ff5e3105049c21af","8e7c8d0c43e90710a47330829989dd888115e708ecf2e93e131af642ff4d894d","f16582e71182d6e9a11d07efd60222ab148716432d333b229c66f9d26bec92a0","e70cb4b742890d3f9c1ae7965918f04cec997b7f339676b9a36bdc4c6a44c707","58eda13626bd8ccfd3069303532127ab52ddeb9f4bbfd6d5f133b83dfb188a0c","987ebc0d0cd29b95188a2b6cf4a1b69b4e780029f64f1de793f519e6f9f4b6ea","2f1f5761db10d675f86c4cdf82014c18a6feba42ffda5233014d031fa65d3270","ffa264a84c0af2ccb222dbfe84f0034c7c5182674d807c0a2c44741c85018959",{"version":"55a914fba7f17f73eb971e012bcb90221d5dca20751852c217428a5511db57a4","impliedFormat":99},{"version":"d9b54195cd22859480b70a2e287c41e654c812b0d3945652bd08c8943ddef78b","impliedFormat":99},{"version":"73b32be132963c6e06bb2f833ea0c21116581a3aafc8ac9145cc89a0b6f54bc0","impliedFormat":99},{"version":"73597a22736b6efce7cb30e380705cd6572d9e3f9816068130ec09550129996f","impliedFormat":99},{"version":"04504c465aabfed05529bf3b314df66c4eb449b188547c51edb962d8eb6069e0","impliedFormat":99},{"version":"09466b34e26295ee836861fa6348aff7b2275c6220cc0b41040c9949421e052f","impliedFormat":99},{"version":"242ce683695df72f1cdd40ae2ac06c569412e533528de95d956b26218cd195f5","impliedFormat":99},{"version":"d75a572cfd779c99cbdab5f8f44f6ce465367c057c07e33364d186de41ad9b14","impliedFormat":99},{"version":"8d12c3032607835687037e28dc245a4af486ef4aa6e6cb13744dcb0a3b074ab4","impliedFormat":99},{"version":"7ee2d1edc6f59a50eaeb12ac61a74ab4832f64661f795131df23ac8256df2329","impliedFormat":99},{"version":"8fea385f7e21a39e857e3fae89eabde7b0960083d205177430be507b38413579","impliedFormat":99},{"version":"7fdb8950d8a019940182ff1f50d02809a45832121b9a7899677a497aaba506ce","impliedFormat":99},{"version":"530e23db4425868edfc20e35fe2d8acf047af5b6f14afa46ee2e0e71e40c8df1","impliedFormat":99},{"version":"7cf421c4c6e223d2b648dae0ea51a134c4c8a5d8d55db1287372c4c1569c656f","impliedFormat":99},{"version":"ee662f8ffa58a60ca3ca8c141d4910043216efe63f696146b6fa0a455a4f9034","impliedFormat":99},{"version":"4eb4f2e56895129861a971177f8e9241ccf633daae3a6ac7343b92e973381c26","impliedFormat":99},{"version":"c75223aab2bfbe3fe85211fe56cfc844dd93d33e503e22e9911fd0d3e6f6538f","impliedFormat":99},{"version":"8fcea3d952a8129821d4060969f305a341706c256cb8002aba8e5b07088c24ed","impliedFormat":99},{"version":"2a6cef87ea83b5bdbc862e894329ba11002e76d5fb6ab24247502ecad2c6fbe7","impliedFormat":99},{"version":"39248c14bedc3e2d734739452408661523228ec790d7142a4de185ae88904da4","impliedFormat":99},{"version":"c14433af8654964ed33f9cc16f9369e05ae543d56bbc6a1c3b393fa7077f08a1","impliedFormat":99},{"version":"d867a5469eabe8abab25b27abb7125ef2ba019ef42dd1ca2b5d0871513042629","impliedFormat":99},{"version":"89fc4cad6ac7ac6d922523b3ab51462b050189ab335766149e5cc777483d4e1b","impliedFormat":1},{"version":"c031417387ddbb2923f41e3fc94b49157745785281c8949a221cd69368610086","impliedFormat":1},{"version":"73ef706b29d220404677226880137ad0da0145b6a2332d5427b9517dee295e70","impliedFormat":99},{"version":"89fc4cad6ac7ac6d922523b3ab51462b050189ab335766149e5cc777483d4e1b","impliedFormat":1},{"version":"27b14b091ccf309c79f3d2cf226edfa4d533b131f19bc0cbe855adebd464c285","impliedFormat":99},{"version":"50854b8ef4c29f3e952f170aaa045604a9d90360b680ddaeff542d1f5bb5fa8c","impliedFormat":99},{"version":"caa3a0be5c051f52e27b91642c8b31037c09ad0b65288498f4c55e33be7ea249","impliedFormat":99},{"version":"48020f2aa87dd71c26414f9afdf172159a6c31186705417da52add9d6cfe2153","impliedFormat":99},{"version":"f4e5a6883146482d6b49c1406f99a38b1ef883382b169bb5fc6cf7cf9f2ac70c","impliedFormat":99},{"version":"8b7b4f82a54a847a29fa481af4ea74372c19b75379bd27658c2a819149f21871","impliedFormat":99},{"version":"4f7faca5821e340342ea0feb3d478126659ece37d5dfdd6d9c9536bfd48def34","impliedFormat":99},{"version":"99878cc85152e70be715546f165826d83cf033547b4647cc3cc9cbd6d4df429a","impliedFormat":99},{"version":"7677f5595e7bdc2e6e42ebe8b4df4f4b520b28f6f175c839b73a208e6f3c8907","impliedFormat":99},{"version":"fd7faa9225e2e61a0a3d786a7a859af52dcb295c06bce7dfca140037655dc095","impliedFormat":99},{"version":"af0f7e3281ab0774f26ca8bc36d6aa37709f3510c8c1eb0ab122e7063159be01","impliedFormat":99},{"version":"960096f9e2ff9e9019e1c23a04916f2005d4c8dbd43f96b196d754b6c8a16700","impliedFormat":99},{"version":"c7c18305c761411b3c168f2b3376101b60d7a7d7c0505e81c6d8193a418f3d63","impliedFormat":99},{"version":"6b9a76dbc0ac3a427aa7370981cea9aea0e8286453b189dd03776f1034f7847c","impliedFormat":99},{"version":"3e48026dd0f58d4668dbfa9c6747302dcbc52e3aec373ec1f95c2ba78c308f33","impliedFormat":99},{"version":"053f54680ea9b4b1a8e9e5fe9f4a1fdcbc00f8f9b6d895109eb0d169915dfd11","impliedFormat":99},{"version":"3b0f440d9e4227285cec9159b1a472bc885687baf227a7b4126e2ba6dbef96fc","impliedFormat":99},{"version":"656e3a4ac005fcb1513ab1224eacfd55ae04b6f16d21d66c971dc901dad62c66","impliedFormat":99},{"version":"ea4891706f147e494a2a7028b2376110c2e85b7561b27448d51a7d1277c6fcf2","impliedFormat":99},{"version":"7f9bb3e6bb8d0607f94d1498c5fa8ac7445fcb4af52d0775a857d0986e0d0c84","impliedFormat":99},{"version":"c98c85d5b894c8955950338b1091f0febdc6c6702cf3b67a171d29d80fb2dfce","impliedFormat":99},{"version":"d00addf28fd877e3f8109b592b1918084cfb831268a0fd052fa72e6e01390cca","impliedFormat":99},{"version":"0cc0f30db3c4a2577606c6930eac2814d0463148d1bf02be9eaa318d6cb6d40e","impliedFormat":99},{"version":"21fb062824012292b09e9357aa7ac3231a0d683a7fbb9bc8e2b027346c7bcb32","impliedFormat":99},{"version":"9aa939dd1371c068dcda7d17c32fcbee08fa994890fefac8ad39d8cd5a294d92","impliedFormat":99},{"version":"8c0e829b03024d1905dba908ed55a5808d79159709770fe7a3b0395fa78125c6","impliedFormat":99},{"version":"15e6253aeb724521fcd0fd8bab60ac00b40e1b6c39aabb0de3b3e45ebe2d584a","impliedFormat":99},{"version":"4d3a0370e69c2d70d62a2eaeb40512474e38b4dff1a4e7ac98637f954ec5c143","impliedFormat":99},{"version":"b0094b81741504d0282359218e3659f5282b9748ad0e80d9a1c634bc1c88af4b","impliedFormat":99},{"version":"2c8e3d7848994c490cace467a6aae3fc4908e5b577b5ab0996200497062bb80b","impliedFormat":99},{"version":"6db32445cedcfaf6f6a4dbb922cdaf87e1cfc0422e4a31efeebef3fb0eb1a93b","impliedFormat":99},{"version":"b5102cfc507fe0c916a9ad45f4f52e00e3959b90eb90c5873e9527cb37eadb78","impliedFormat":99},{"version":"21e3abbcf80dc69638d138f5c6d07f596f8a162a8dca3bd71286403a96f8d0ab","impliedFormat":99},{"version":"20eab98ea24e9bf8834db1a339abb373e6f6a268537efa1fd571cd3809839eb1","impliedFormat":99},{"version":"796885a2efe76d5bef797516bd3a798b275f81075da8497fc1f6a9d3e085f2a8","impliedFormat":99},{"version":"b5a2192e328273da5a8279add3052bbc33b1adecb15f34a577c69c4dd2766d8e","impliedFormat":99},{"version":"20126c8c53f22550e68edb187f5d4d477b79a2effe7801fff3aa47949219d67b","impliedFormat":99},{"version":"8b63cf9a4a5bafaa3d2e157e6d07bb20d0d73fe0c5ddda715342a48d18534154","impliedFormat":99},{"version":"369dd195a978dcb88d63f1f1878e5dabb90bbc79b3e5fb0f16cf06209ab9e7aa","impliedFormat":99},{"version":"090b7d0fd37b238e003029b9137d5dff073791e21adaac556dd7524ed9ed977e","impliedFormat":99},{"version":"efedab846f4656f034814230fc05513b8cefb5f95994faee4f9b174c98bfef41","impliedFormat":99},{"version":"4f8876f00aa99ae0b39d6bca9da9e86f426dc6c458558773a647100a85fc3312","impliedFormat":99},{"version":"a13e1f68a2a1f29ceac30f51562e13677a5b8615377af952f0b7d1f9edff34f4","impliedFormat":99},{"version":"06f1e24d4146a779e7fd7a0f0cfdcdcb878da25e271e1e7d5d7f81d874f2dbec","impliedFormat":99},{"version":"0a3ede23be099f3ad266a10b4ad0cfb6efd446b9951f553274706348c3b56dae","impliedFormat":99},{"version":"c7b05cafd385f8988babecd476f4f9c817ecc68141dad54e2dd3ae458878a8f4","impliedFormat":99},{"version":"8fc8726fe9d96e0440518b06451181cabba87bdcb60a6e854b77e2b6dab52890","impliedFormat":99},{"version":"6cb381987d43f853d8d01c2fd5f32627e0c0f3a4dd1a11d5e3f94ff5832aff2b","impliedFormat":99},{"version":"ba0567434dbadd0fb8e80c4e00fb9c30449497f8bf07e82b2b857db0029f9b18","impliedFormat":99},{"version":"f72e417b7d49a5dec2d4f3857f6925ee78608cda1c42655d0179ccd38c66c15a","impliedFormat":99},{"version":"fdbb1158637d3ca4d209c7174270e5eb1414b4ee5324e9c33b1fae88e83bfc14","impliedFormat":99},{"version":"436cdc04f8ad3a54d2194b9926f52d564157ca162dcf3c9f71fa4711d057190b","impliedFormat":99},{"version":"73d9180a0b84dfb4c1a95bf72028103bd81472595617dd7ce788ea21639bcee4","impliedFormat":99},{"version":"55c1b951a4d7289a3056e2edea9855671a9d1f8f09632916ed1fb2aebb57b5c6","impliedFormat":99},{"version":"09b1271f73d90a01c889b4963a350825cff11493498b4141fde2399ce09de43a","impliedFormat":99},{"version":"bb9c7998d6def957496260f4c881ccc5b3d4eb4084ab00fbd8abc8c1e1ba67b7","impliedFormat":99},{"version":"340efc3f335a2a3ea2ca1899755906bcb6ebcbddf14306e66d0f16746db98273","impliedFormat":99},{"version":"6a691651e2748bf7792a251d820f00e8d9d3e4da1cdfbea91c33beda2bdd8b89","impliedFormat":99},{"version":"c3096b0c0f579462e17c525ee6835d82952c32b35061a1d32ac32d7e0f191da1","impliedFormat":99},{"version":"91b3c513f0ca4e2d0c5bc9ba1f43b169e1da7c49ff2cf5ffe730009c229f359f","impliedFormat":99},{"version":"ea0b435818ce832634961d1b65e972927f65a3c29a3e2c0cec3aafa0d7fe4ea0","impliedFormat":99},{"version":"50fe63347779cd2244429e0d54148fdb5d230dcc11f2bb8c7efc9d12c1e573d2","impliedFormat":99},{"version":"7adac175e5942f34a34f223d213bdd9869935ec6083dc6da836b996b7acdf7d5","impliedFormat":99},{"version":"2af0e322d1c39e8b16436cd9bd9c97b6013b75c179281df61afa10df0c722a1b","impliedFormat":99},{"version":"09b1271f73d90a01c889b4963a350825cff11493498b4141fde2399ce09de43a","impliedFormat":99},{"version":"0ef3eabd40fcec506413988e397ff7dcbed2aebfe4f88c486e2ba8dd1bc0ee0b","impliedFormat":99},{"version":"44dce86f2b5ef5e38fe6c068bc629afc04221adfa039f0dd649ae10f799f9ec8","impliedFormat":99},{"version":"5ad41356543df4a83b3ce069a7e628d2ba648399db0bdd4005bd1dfef26d34e2","impliedFormat":99},{"version":"0b448474270be29ded59bb946ac311c40c579ef0b9cf358a54750eef34359088","impliedFormat":99},{"version":"d7ddde645d6ca5b97f75923b3946e96495f81d7f4fd568201653f1939a3312a3","impliedFormat":99},{"version":"fb1148873f0d706261f8517b7ce3574b369c8213e8304c7c21cb9ca248b8dcc3","impliedFormat":99},{"version":"0637ec66edeed3f9ee0da72c0d5ab2c128db9e5a6226f8aca5672aa617db1726","impliedFormat":99},{"version":"ee49e1206cf12b67d5b72a98eaab773481130b87a9eeaa262086a4314d1cd991","impliedFormat":99},{"version":"9fa29d6f0b05ee8f619202c07680a46025b166da55e431a49c5badaa2983429b","impliedFormat":99},{"version":"f53857d23110842c0c62416b09caccb9286b3ba52fa2b6bbe254c58123d9bb09","impliedFormat":99},{"version":"89c02b0ad4fc44d10576b3e37c2c5262a37f2db171a486d2d5960ee60323bb96","impliedFormat":99},{"version":"59348badf356a43f7e1847364a8fdb8a914b9977a517b41f3ed206db36b875c1","impliedFormat":99},{"version":"ff0c09d8b0c8c0ffb09ef9250fac17c98eb4dd5a4f4955d53fc3880d6553b91b","impliedFormat":99},{"version":"07146d909fcbc1d33c5fc02f74dab3750d075a4de305a6c078fff8265e089c5e","impliedFormat":99},{"version":"b323496b42ebb7f2839ef1acb04947c74cc586c8ad20cc936c069d34b98a29ac","impliedFormat":99},{"version":"62159930f535b73f265f98f669c7f7bbdaef719ebc2de3a2bc4835e71ed68ba0","impliedFormat":99},{"version":"6ae1d121a8c1ff3398eff8af6e398868b631689d120076d7004c787479eacc61","impliedFormat":99},{"version":"d23bfd5a61fb32048f370f988a9772966651be1380c1a93c199d7cb25b7b0cf0","impliedFormat":99},{"version":"7344e1d823581d72124f6a328669abbeec44910c2045823bf7e7bef79ca49f73","impliedFormat":99},{"version":"af4a6e7559998dac4978f02c572d0f391928b6f40c62459c1e4ae5afc12995c7","impliedFormat":99},{"version":"b0a2a4c5ca7f6f874de72e39be8f470b348ec062c005cb5a7acc840fd7f67807","impliedFormat":99},{"version":"75083e759d8b09bcbf201a250c918a35221d05c7524cbb67b2b4d8959c919252","impliedFormat":99},{"version":"d89f7811a420d990b817f383c3fec421559063a7cb744fae619e8bba20dd151d","impliedFormat":99},{"version":"abd03428933117fdb9db45ac492eaac24d9a77c37c3944d26dba044b7fce6870","impliedFormat":99},{"version":"97050f022128934adae6a773a63be3c5bd5726f153fb72e9a8d34f2656135de2","impliedFormat":99},{"version":"3901f637d5f111593a5ea39a31d27e7a5f62195251f4ed6a50b77a020bc6e416","impliedFormat":99},{"version":"7edffa8d9c968f6a96b6ffc774be07717378ec619777e78510a7b6de4bfe67df","impliedFormat":99},{"version":"8f8d24c887f993b6c131075ac4f82cefbb246747b22c50491dc64ffd2cb340d9","impliedFormat":99},{"version":"5ffb8c07f5474d45bab306b6267ef2777ad786a841e0942416f485125cbd2385","impliedFormat":99},{"version":"e0d7a3cdfaa21621610dc3b74f8ccd59a5cd8617843ded1d610f05bf790adde6","impliedFormat":99},{"version":"b8f4165a3fa8fea167bb5016ad7629581d8fffb16447217d480c8a7ea438ed8d","impliedFormat":99},{"version":"b936b8e4ad57e3be1407c74e36645d31bebe7f1183d926a0c438cf416ec708f5","impliedFormat":99},{"version":"13fc27c27bc9a42e5e0c4cc08b64e7693b225c565bdab45ace16c179760f3cc9","impliedFormat":99},{"version":"8ff87eb5acdf565af022fb9145942b2207ac8cd0644917bc7d44efb91f4115d3","impliedFormat":99},{"version":"616ff480886a32cf50f73c4ee5fdd9672a5f21428eadcac34c41acb06035c214","impliedFormat":99},{"version":"f08e5842644a8e03da9efdbf89bf4eb61ea906a3bbc255bd7d7583756cb3dc61","impliedFormat":99},{"version":"562682efb4f43e58eb779a742f3e26c1fd796da0b785620de601202a38764785","impliedFormat":99},{"version":"264f935450101e4b000eb351cf75c9d799ca20a278b260a9e5770303b5f2b6a3","impliedFormat":99},{"version":"f6f171b23ae6db93454343f1b788960f799c8f37043904874a752c0990c6fca6","impliedFormat":99},{"version":"304e41926d3299c9b30bfd418c35fffd2bd9e5ac726d6f758fb4e0f40a738d51","impliedFormat":99},{"version":"7d3b1ddfce35445b76298090a9dcadee8acf20f4c281eb1f2ce14fc7232c9470","affectsGlobalScope":true,"impliedFormat":99},{"version":"02ab5dbcaa58da1d58c46c7cdfa7f94792c5ccf0fc7c0622ef33755fe415366c","impliedFormat":99},{"version":"e689cc8cd8a102d31c9d3a7b0db0028594202093c4aca25982b425e8ae744556","impliedFormat":99},{"version":"478e59ac0830a0f6360236632d0d589fb0211183aa1ab82292fbca529c0cce35","impliedFormat":99},{"version":"1b4ed9deaba72d4bc8495bf46db690dbf91040da0cb2401db10bad162732c0e2","impliedFormat":99},{"version":"cf60c9e69392dd40b81c02f9674792e8bc5b2aff91d1b468e3d19da8b18358f8","impliedFormat":99},{"version":"3e94295f73335c9122308a858445d2348949842579ac2bacd30728ab46fe75a7","impliedFormat":99},{"version":"8a778c0e0c2f0d9156ca87ab56556b7fd876a185960d829c7e9ed416d5be5fb4","impliedFormat":99},{"version":"b233a945227880b8100b0fec2a8916339fa061ccc23d2d9db4b4646a6cd9655f","impliedFormat":99},{"version":"54821272a9f633d5e8ec23714ece5559ae9a7acc576197fe255974ddbd9b05d6","impliedFormat":99},{"version":"e08685c946d49f555b523e481f4122b398c4444c55b164e5ac67c3ba878db8d1","impliedFormat":99},{"version":"3c99d5232a3c8b54016e5700502078af50fe917eb9cb4b6d9a75a0a3456fcd5d","impliedFormat":99},{"version":"9d8e34ec610435ee2708595564bbad809eab15c9e3fa01ad3746bbe9015faaed","impliedFormat":99},{"version":"7202a89bea0bdab87cc0ae60912b9e631a48f519b6a1f323dba8bc77a02a3481","impliedFormat":99},{"version":"f865343c121abc3516abf5b888d0c1b7596ec772229d8e4d4d796f89e8c9d0c0","impliedFormat":99},{"version":"77114bdbc7388aeeb188c85ebe27e38b1a6e29bc9fea6e09b7011bbb4d71ec41","impliedFormat":99},{"version":"3df489529e6dfe63250b187f1823a9d6006b86a7e9cac6b338944d5fc008db70","impliedFormat":99},{"version":"fe0d316062384b233b16caee26bf8c66f2efdcedcf497be08ad9bcea24bd2d2c","impliedFormat":99},{"version":"2f5846c85bd28a5e8ce93a6e8b67ad0fd6f5a9f7049c74e9c1f6628a0c10062a","impliedFormat":99},{"version":"7dfb517c06ecb1ca89d0b46444eae16ad53d0054e6ec9d82c38e3fbf381ff698","impliedFormat":99},{"version":"35999449fe3af6c7821c63cad3c41b99526113945c778f56c2ae970b4b35c490","impliedFormat":99},{"version":"1fff68ffb3b4a2bf1b6f7f4793f17d6a94c72ca8d67c1d0ac8a872483d23aaf2","impliedFormat":99},{"version":"6dd231d71a5c28f43983de7d91fb34c2c841b0d79c3be2e6bffeb2836d344f00","impliedFormat":99},{"version":"e6a96ceaa78397df35800bafd1069651832422126206e60e1046c3b15b6e5977","impliedFormat":99},{"version":"035dcab32722ff83675483f2608d21cb1ec7b0428b8dca87139f1b524c7fcdb5","impliedFormat":99},{"version":"605892c358273dffa8178aa455edf675c326c4197993f3d1287b120d09cee23f","impliedFormat":99},{"version":"a1caf633e62346bf432d548a0ae03d9288dc803c033412d52f6c4d065ef13c25","impliedFormat":99},{"version":"774f59be62f64cf91d01f9f84c52d9797a86ef7713ff7fc11c8815512be20d12","impliedFormat":99},{"version":"46fc114448951c7b7d9ed1f2cc314e8b9be05b655792ab39262c144c7398be9f","impliedFormat":99},{"version":"9be0a613d408a84fa06b3d748ca37fd83abf7448c534873633b7a1d473c21f76","impliedFormat":99},{"version":"f447ea732d033408efd829cf135cac4f920c4d2065fa926d7f019bff4e119630","impliedFormat":99},{"version":"09f1e21f95a70af0aa40680aaa7aadd7d97eb0ef3b61effd1810557e07e4f66a","impliedFormat":99},{"version":"a43ec5b51f6b4d3c53971d68d4522ef3d5d0b6727e0673a83a0a5d8c1ced6be2","impliedFormat":99},{"version":"c06578ae45a183ba9d35eee917b48ecfdec19bb43860ffc9947a7ab2145c8748","impliedFormat":99},{"version":"2a9b4fd6e99e31552e6c1861352c0f0f2efd6efb6eacf62aa22375b6df1684b1","impliedFormat":99},{"version":"ad9f4320035ac22a5d7f5346a38c9907d06ec35e28ec87e66768e336bc1b4d69","impliedFormat":99},{"version":"05a090d5fb9dc0b48e001b69dc13beaab56883d016e6c6835dbdaf4027d622d4","impliedFormat":99},{"version":"76edff84d1d0ad9cece05db594ebc8d55d6492c9f9cc211776d64b722f1908e0","impliedFormat":99},{"version":"ec7cef68bcd53fae06eecbf331bb3e7fdfbbf34ed0bbb1fb026811a3cd323cb4","impliedFormat":99},{"version":"36ea0d582c82f48990eea829818e7e84e1dd80c9dc26119803b735beac5ee025","impliedFormat":99},{"version":"9c3f927107fb7e1086611de817b1eb2c728da334812ddab9592580070c3d0754","impliedFormat":99},{"version":"eeae71425f0747a79f45381da8dd823d625a28c22c31dca659d62fcc8be159c2","impliedFormat":99},{"version":"d769fae4e2194e67a946d6c51bb8081cf7bd35688f9505951ad2fd293e570701","impliedFormat":99},{"version":"55ce8d5c56f615ae645811e512ddb9438168c0f70e2d536537f7e83cd6b7b4b0","impliedFormat":99},{"version":"fa1369ff60d8c69c1493e4d99f35f43089f0922531205d4040e540bb99c0af4f","impliedFormat":99},{"version":"a3382dd7ef2186ea109a6ee6850ca95db91293693c23f7294045034e7d4e3acf","impliedFormat":99},{"version":"2b1d213281f3aa615ae6c81397247800891be98deca0b8b2123681d736784374","impliedFormat":99},{"version":"c34e7a89ed828af658c88c87db249b579a61e116bea0c472d058e05a19bf5fa9","impliedFormat":99},{"version":"7ae166eb400af5825d3e89eea5783261627959809308d4e383f3c627f9dad3d8","impliedFormat":99},{"version":"69f64614a16f499e755db4951fcbb9cf6e6b722cc072c469b60d2ea9a7d3efe8","impliedFormat":99},{"version":"75df3b2101fc743f2e9443a99d4d53c462953c497497cce204d55fc1efb091e0","impliedFormat":99},{"version":"7dc0f40059b991a1624098161c88b4650644375cc748f4ac142888eb527e9ccd","impliedFormat":99},{"version":"a601809a87528d651b7e1501837d57bb840f47766f06e695949a85f3e58c6315","impliedFormat":99},{"version":"d64f68c9dbd079ad99ec9bae342e1b303da6ce5eac4160eb1ed2ef225a9e9b23","impliedFormat":99},{"version":"99c738354ecc1dba7f6364ed69b4e32f5b0ad6ec39f05e1ee485e1ee40b958eb","impliedFormat":99},{"version":"8cd2c3f1c7c15af539068573c2c77a35cc3a1c6914535275228b8ef934e93ae4","impliedFormat":99},{"version":"efb3ac710c156d408caa25dafd69ea6352257c4cebe80dba0f7554b9e903919c","impliedFormat":99},{"version":"260244548bc1c69fbb26f0a3bb7a65441ae24bcaee4fe0724cf0279596d97fb4","impliedFormat":99},{"version":"ce230ce8f34f70c65809e3ac64dfea499c5fd2f2e73cd2c6e9c7a2c5856215a8","impliedFormat":99},{"version":"0e154a7f40d689bd52af327dee00e988d659258af43ee822e125620bdd3e5519","impliedFormat":99},{"version":"cca506c38ef84e3f70e1a01b709dc98573044530807a74fe090798a8d4dc71ac","impliedFormat":99},{"version":"160dbb165463d553da188b8269b095a4636a48145b733acda60041de8fa0ae88","impliedFormat":99},{"version":"8b1deebfd2c3507964b3078743c1cb8dbef48e565ded3a5743063c5387dec62f","impliedFormat":99},{"version":"6a77c11718845ff230ac61f823221c09ec9a14e5edd4c9eae34eead3fc47e2c7","impliedFormat":99},{"version":"5a633dd8dcf5e35ee141c70e7c0a58df4f481fb44bce225019c75eed483be9be","impliedFormat":99},{"version":"f3fb008d3231c50435508ec6fd8a9e1fdc04dd75d4e56ec3879b08215da02e2c","impliedFormat":99},{"version":"9e4af21f88f57530eea7c963d5223b21de0ddccfd79550636e7618612cc33224","impliedFormat":99},{"version":"b48dd54bd70b7cf7310c671c2b5d21a4c50e882273787eeea62a430c378b041a","impliedFormat":99},{"version":"1302d4a20b1ce874c8c7c0af30051e28b7105dadaec0aebd45545fd365592f30","impliedFormat":99},{"version":"fd939887989692c614ea38129952e34eeca05802a0633cb5c85f3f3b00ce9dff","impliedFormat":99},{"version":"3040f5b3649c95d0df70ce7e7c3cce1d22549dd04ae05e655a40e54e4c6299de","impliedFormat":99},{"version":"de0bd5d5bd17ba2789f4a448964aba57e269a89d0499a521ccb08531d8892f55","impliedFormat":99},{"version":"921d42c7ec8dbefd1457f09466dadedb5855a71fa2637ad67f82ff1ed3ddc0d0","impliedFormat":99},{"version":"b0750451f8aec5c70df9e582ab794fab08dae83ea81bb96bf0b0976e0a2301ee","impliedFormat":99},{"version":"8ba931de83284a779d0524b6f8d6cf3956755fb41c8c8c41cd32caf464d27f05","impliedFormat":99},{"version":"4305804b3ae68aebb7ef164aabd7345c6b91aada8adda10db0227922b2c16502","impliedFormat":99},{"version":"96ae321ebb4b8dcdb57e9f8f92a3f8ddb50bdf534cf58e774281c7a90b502f66","impliedFormat":99},{"version":"934158ee729064a805c8d37713161fef46bf36aa9f0d0949f2cd665ded9e2444","impliedFormat":99},{"version":"6ef5957bb7e973ea49d2b04d739e8561bca5ae125925948491b3cfbd4bf6a553","impliedFormat":99},{"version":"6a32433315d54a605c4be53bf7248dfd784a051e8626aeb01a4e71294dd2747f","impliedFormat":99},{"version":"9476325d3457bfe059adfee87179a5c7d44ecbeec789ede9cfab8dc7b74c48db","impliedFormat":99},{"version":"4f1c9401c286c6fff7bbf2596feef20f76828c99e3ccb81f23d2bd33e72256aa","impliedFormat":99},{"version":"b711cdd39419677f7ca52dd050364d8f8d00ea781bb3252b19c71bdb7ec5423e","impliedFormat":99},{"version":"ee11e2318448babc4d95f7a31f9241823b0dfc4eada26c71ef6899ea06e6f46b","impliedFormat":99},{"version":"27a270826a46278ad5196a6dfc21cd6f9173481ca91443669199379772a32ae8","impliedFormat":99},{"version":"7c52f16314474cef2117a00f8b427dfa62c00e889e6484817dc4cabb9143ac73","impliedFormat":99},{"version":"6c72a60bb273bb1c9a03e64f161136af2eb8aacc23be0c29c8c3ece0ea75a919","impliedFormat":99},{"version":"6fa96d12a720bbad2c4e2c75ddffa8572ef9af4b00750d119a783e32aede3013","impliedFormat":99},{"version":"00128fe475159552deb7d2f8699974a30f25c848cf36448a20f10f1f29249696","impliedFormat":99},{"version":"e7bd1dc063eced5cd08738a5adbba56028b319b0781a8a4971472abf05b0efb4","impliedFormat":99},{"version":"2a92bdf4acbd620f12a8930f0e0ec70f1f0a90e3d9b90a5b0954aac6c1d2a39c","impliedFormat":99},{"version":"c8d08a1e9d91ad3f7d9c3862b30fa32ba4bc3ca8393adafdeeeb915275887b82","impliedFormat":99},{"version":"c0dd6b325d95454319f13802d291f4945556a3df50cf8eed54dbb6d0ade0de2f","impliedFormat":99},{"version":"0627ae8289f0107f1d8425904bb0daa9955481138ca5ba2f8b57707003c428d5","impliedFormat":99},{"version":"4d8c5cc34355bfb08441f6bc18bf31f416afbfa1c71b7b25255d66d349be7e14","impliedFormat":99},{"version":"b365233eaff00901f4709fa605ae164a8e1d304dc6c39b82f49dda3338bea2b0","impliedFormat":99},{"version":"456da89f7f4e0f3dc82afc7918090f550a8af51c72a3cfb9887cf7783d09a266","impliedFormat":99},{"version":"d9a2dcc08e20a9cf3cc56cd6e796611247a0e69aa51254811ec2eed5b63e4ba5","impliedFormat":99},{"version":"44abf5b087f6500ab9280da1e51a2682b985f110134488696ac5f84ae6be566c","impliedFormat":99},{"version":"ced7ef0f2429676d335307ad64116cd2cc727bb0ce29a070bb2992e675a8991e","impliedFormat":99},{"version":"0b73db1447d976759731255d45c5a6feff3d59b7856a1c4da057ab8ccf46dc84","impliedFormat":99},{"version":"3fc6f405e56a678370e4feb7a38afd909f77eb2e26fe153cdaea0fb3c42fbbee","impliedFormat":99},{"version":"2762ed7b9ceb45268b0a8023fd96f02df88f5eb2ad56851cbb3da110fd35fdb5","impliedFormat":99},{"version":"9c20802909ca00f79936c66d8315a5f7f2355d343359a1e51b521ec7a8cfa8bf","impliedFormat":99},{"version":"31ddfdf751c96959c458220cd417454b260ff5e88f66dddc33236343156eb22c","impliedFormat":99},{"version":"ec0339cf070b4dedf708aaed26b8da900a86b3396b30a4777afcd76e69462448","impliedFormat":99},{"version":"067eed0758f3e99f0b1cfe5e3948aa371cbb0f48a26db8c911772e50a9cc9283","impliedFormat":99},{"version":"7dfb9316cfbf2124903d9bc3721d6c19afbf5109dfbc2017ca8ae758f85178ab","impliedFormat":99},{"version":"919a7135fa54057cf42c8cd52165bf938baeb6df316b438bbf4d97f3174ff532","impliedFormat":99},{"version":"4a2957dfe878c8b49acb18299dfba2f72b8bf7a265b793916c0479b3d636b23b","impliedFormat":99},{"version":"fad6a11a73a787168630bf5276f8e8525ab56f897a6a0bf0d3795550201e9df5","impliedFormat":99},{"version":"0cc8d34354ec904617af9f1d569c29b90915634c06d61e7e74b74de26c9379d2","impliedFormat":99},{"version":"529b225f4de49eed08f5a8e5c0b3030699980a8ea130298ff9dfa385a99c2a76","impliedFormat":99},{"version":"77bb50ea87284de10139d000837e5cce037405ac2b699707e3f8766454a8c884","impliedFormat":99},{"version":"95c33ceea3574b974d7a2007fed54992c16b68472b25b426336ef9813e2e96e8","impliedFormat":99},{"version":"1ecb3c690b1bfdc8ea6aaa565415802e5c9012ec616a1d9fb6a2dbd15de7b9dc","impliedFormat":99},{"version":"57fc10e689d39484d5ae38b7fc5632c173d2d9f6f90196fc6a81d6087187ed03","impliedFormat":99},{"version":"f1fb180503fecd5b10428a872f284cc6de52053d4f81f53f7ec2df1c9760d0c0","impliedFormat":99},{"version":"d30d4de63fc781a5b9d8431a4b217cd8ca866d6dc7959c2ce8b7561d57a7213f","impliedFormat":99},{"version":"765896b848b82522a72b7f1837342f613d7c7d46e24752344e790d1f5b02810b","impliedFormat":99},{"version":"ee032efc2dd5c686680f097a676b8031726396a7a2083a4b0b0499b0d32a2aea","impliedFormat":99},{"version":"b76c65680c3160e6b92f5f32bc2e35bca72fedb854195126b26144fd191cd696","impliedFormat":99},{"version":"13e9a215593478bd90e44c1a494caf3c2079c426d5ad8023928261bfc4271c72","impliedFormat":99},{"version":"3e27476a10a715506f9bb196c9c8699a8fe952199233c5af428d801fdda56761","impliedFormat":99},{"version":"dbb9ad48b056876e59a7da5e1552c730b7fa27d59fcd5bf27fd7decc9d823bb8","impliedFormat":99},{"version":"4bd72a99a4273c273201ca6d1e4c77415d10aa24274089b7246d3d0e0084ca06","impliedFormat":99},{"version":"7ae03c4abb0c2d04f81d193895241b40355ae605ec16132c1f339c69552627c1","impliedFormat":99},{"version":"650eddf2807994621e8ca331a29cc5d4a093f5f7ff2f588c3bb7016d3fe4ae6a","impliedFormat":99},{"version":"615834ad3e9e9fe6505d8f657e1de837404a7366e35127fcb20e93e9a0fb1370","impliedFormat":99},{"version":"c3661daba5576b4255a3b157e46884151319d8a270ec37ca8f353c3546b12e9b","impliedFormat":99},{"version":"de4abffb7f7ba4fffbd5986f1fe1d9c73339793e9ac8175176f0d70d4e2c26d2","impliedFormat":99},{"version":"211513b39f80376a8428623bb4d11a8f7ef9cd5aa9adce243200698b84ce4dfb","impliedFormat":99},{"version":"9e8d2591367f2773368f9803f62273eb44ef34dd7dfdaa62ff2f671f30ee1165","impliedFormat":99},{"version":"0f3cef820a473cd90e8c4bdf43be376c7becfda2847174320add08d6a04b5e6e","impliedFormat":99},{"version":"20eed68bc1619806d1a8c501163873b760514b04fcf6a7d185c5595ff5baef65","impliedFormat":99},{"version":"620ef28641765cc6701be0d10d537b61868e6f54c9db153ae64d28187b51dbc0","impliedFormat":99},{"version":"341c8114357c0ec0b17a2a1a99aecbfc6bc0393df49ea6a66193d1e7a691b437","impliedFormat":99},{"version":"b01fe782d4c8efc30ab8f55fae1328898ad88a3b2362ba4daac2059bd30ef903","impliedFormat":99},{"version":"f8e8b33983efa33e28e045b68347341fc77f64821b7aabaac456d17b1781e5f4","impliedFormat":99},{"version":"8d3e416906fb559b9e4ad8b4c4a5f54aeadeb48702e4d0367ffba27483a2e822","impliedFormat":99},{"version":"47db572e8e1c12a37c9ac6bd7e3c88b38e169e3d7fd58cb8fb4a978651e3b121","impliedFormat":99},{"version":"a83a8785713569da150cded8e22c8c14b98b8802eb56167db5734157e23ee804","impliedFormat":99},{"version":"cce1c8b93d1e5ed8dcbaca2c4d346abb34da5c14fa51a1c2e5f93a31c214d8e9","impliedFormat":99},{"version":"213a867daad9eba39f37f264e72e7f2faa0bda9095837de58ab276046d61d97c","impliedFormat":99},{"version":"e1c2ba2ca44e3977d3a79d529940706cef16c9fdd9fd9cad836022643edff84f","impliedFormat":99},{"version":"d63bfe03c3113d5e5b6fcef0bed9cd905e391d523a222caa6d537e767f4e0127","impliedFormat":99},{"version":"4f0a99cb58b887865ae5eed873a34f24032b9a8d390aa27c11982e82f0560b0f","impliedFormat":99},{"version":"3c8a75636dc5639ebd8b0d9b27e5f99cdbc4e52df7f8144bc30e530a90310bbe","impliedFormat":99},{"version":"831ec85d8b9ce9460069612cb8ac6c1407ce45ccaa610a8ae53fe6398f4c1ffd","impliedFormat":99},{"version":"84a15a4f985193d563288b201cb1297f3b2e69cf24042e3f47ad14894bd38e74","impliedFormat":99},{"version":"ea9357f6a359e393d26d83d46f709bc9932a59da732e2c59ea0a46c7db70a8d2","impliedFormat":99},{"version":"2b26c09c593fea6a92facd6475954d4fba0bcc62fe7862849f0cc6073d2c6916","impliedFormat":99},{"version":"b56425afeb034738f443847132bcdec0653b89091e5ea836707338175e5cf014","impliedFormat":99},{"version":"7b3019addc0fd289ab1d174d00854502642f26bec1ae4dadd10ca04db0803a30","impliedFormat":99},{"version":"77883003a85bcfe75dc97d4bd07bd68f8603853d5aad11614c1c57a1204aaf03","impliedFormat":99},{"version":"a69755456ad2d38956b1e54b824556195497fbbb438052c9da5cce5a763a9148","impliedFormat":99},{"version":"c4ea7a4734875037bb04c39e9d9a34701b37784b2e83549b340c01e1851e9fca","impliedFormat":99},{"version":"bba563452954b858d18cc5de0aa8a343b70d58ec0369788b2ffd4c97aa8a8bd1","impliedFormat":99},{"version":"48dd38c566f454246dd0a335309bce001ab25a46be2b44b1988f580d576ae3b5","impliedFormat":99},{"version":"0362f8eccf01deee1ada6f9d899cf83e935970431d6b204a0a450b8a425f8143","impliedFormat":99},{"version":"942c02023b0411836b6d404fc290583309df4c50c0c3a5771051be8ecd832e8d","impliedFormat":99},{"version":"181655e54e8b288d671457be112383e6c51502cff5c4e39020c89f281a987307","impliedFormat":99},{"version":"27d7f5784622ac15e5f56c5d0be9aeefe069ed4855e36cc399c12f31818c40d4","impliedFormat":99},{"version":"0e5e37c5ee7966a03954ddcfc7b11c3faed715ee714a7d7b3f6aaf64173c9ac7","impliedFormat":99},{"version":"adcfd9aaf644eca652b521a4ebac738636c38e28826845dcd2e0dac2130ef539","impliedFormat":99},{"version":"fecc64892b1779fb8ee2f78682f7b4a981a10ed19868108d772bd5807c7fec4f","impliedFormat":99},{"version":"a68eb05fb9bfda476d616b68c2c37776e71cba95406d193b91e71a3369f2bbe7","impliedFormat":99},{"version":"0adf5fa16fe3c677bb0923bde787b4e7e1eb23bcc7b83f89d48d65a6eb563699","impliedFormat":99},{"version":"bf4a06264e6b80cc96fa5e6f11b05825126845563efbf5a68a5b18fddee833b1","impliedFormat":99},{"version":"560a6b3a1e8401fe5e947676dabca8bb337fa115dfd292e96a86f3561274a56d","impliedFormat":99},{"version":"70a29119482d358ab4f28d28ee2dcd05d6cbf8e678068855d016e10a9256ec12","impliedFormat":1},{"version":"869ac759ae8f304536d609082732cb025a08dcc38237fe619caf3fcdd41dde6f","impliedFormat":1},{"version":"0ea900fe6565f9133e06bce92e3e9a4b5a69234e83d40b7df2e1752b8d2b5002","impliedFormat":1},{"version":"e5408f95ca9ac5997c0fea772d68b1bf390e16c2a8cad62858553409f2b12412","impliedFormat":1},{"version":"3c1332a48695617fc5c8a1aead8f09758c2e73018bd139882283fb5a5b8536a6","impliedFormat":1},{"version":"9260b03453970e98ce9b1ad851275acd9c7d213c26c7d86bae096e8e9db4e62b","impliedFormat":1},{"version":"083838d2f5fea0c28f02ce67087101f43bd6e8697c51fd48029261653095080c","impliedFormat":1},{"version":"969132719f0f5822e669f6da7bd58ea0eb47f7899c1db854f8f06379f753b365","impliedFormat":1},{"version":"94ca5d43ff6f9dc8b1812b0770b761392e6eac1948d99d2da443dc63c32b2ec1","impliedFormat":1},{"version":"2cbc88cf54c50e74ee5642c12217e6fd5415e1b35232d5666d53418bae210b3b","impliedFormat":1},{"version":"ccb226557417c606f8b1bba85d178f4bcea3f8ae67b0e86292709a634a1d389d","impliedFormat":1},{"version":"5ea98f44cc9de1fe05d037afe4813f3dcd3a8c5de43bdd7db24624a364fad8e6","impliedFormat":1},{"version":"5260a62a7d326565c7b42293ed427e4186b9d43d6f160f50e134a18385970d02","impliedFormat":1},{"version":"0b3fc2d2d41ad187962c43cb38117d0aee0d3d515c8a6750aaea467da76b42aa","impliedFormat":1},{"version":"ed219f328224100dad91505388453a8c24a97367d1bc13dcec82c72ab13012b7","impliedFormat":1},{"version":"6847b17c96eb44634daa112849db0c9ade344fe23e6ced190b7eeb862beca9f4","impliedFormat":1},{"version":"d479a5128f27f63b58d57a61e062bd68fa43b684271449a73a4d3e3666a599a7","impliedFormat":1},{"version":"6f308b141358ac799edc3e83e887441852205dc1348310d30b62c69438b93ca0","impliedFormat":1},{"version":"b2e451d7958fb4e559df8470e78cbabd17bcebdf694c3ac05440b00ae685aadb","impliedFormat":1},{"version":"435b214f224e0bd2daa15376b7663fd6f5cb0e2bb3a4042672d6396686f7967b","impliedFormat":99},{"version":"5ac787a4a245d99203a12f93f1004db507735a7f3f16f3bc41d21997ccf54256","impliedFormat":99},{"version":"767a9d1487a4a83e6dbe19a56310706b92a77dc0e6c400aa288f48891c8af8d3","impliedFormat":99},{"version":"198f2246a78930833c24db9c42da7ab40c084c2e2132a899f9c03dcbe59d207d","impliedFormat":99},{"version":"eb07eea29499b56357f7593fbdbc6d2312d8afc32c14396952db8d897ea0c4c2","impliedFormat":99},{"version":"06efe54b5ceaa113fbc649424419746efde6dcd5af2a7d4472efb62d751801b3","impliedFormat":99},{"version":"39613fd5250b0e6b48f03d2c994f0135c55d64060c6a0486ecfd6344d4a90a7f","impliedFormat":99},{"version":"8dfbc0d30d20c17f8a9a4487ca14ca8fab6b7d6e0432378ba50cc689d4c07a73","impliedFormat":99},{"version":"4b91040a9b0a06d098defafb39f7e6794789d39c6be0cfd95d73dd3635ca7961","impliedFormat":99},{"version":"66b67d15116c453abd384a1ec73ad2cb90b19fff4c08289360c4f3f573465838","impliedFormat":99},{"version":"5805f6ee9c3a5369ba7f37a809e226f0b217d2059d6f699cc242c9907671143f","impliedFormat":99},{"version":"2f0578c52f2b95a2a2187ad6d1d8fa4e835278871c81747c500bf04bbe0301a2","impliedFormat":99},{"version":"ee9811c1b947c37077408d66bf61ca0f7e6ffad850ecec1e246e643c51fbb5e3","impliedFormat":99},{"version":"4e919bdf4100bc0338598352ad2778d4750fb0d5facbd1bc7c5210340a1f756d","impliedFormat":99},{"version":"4b54813a405270d710da2c598f57cc0c512aad7b5f34f8d2e109862020568a58","impliedFormat":99},{"version":"ac29a9fe4dc4829c7f3f693c7667483f9903ead6ac67abf8d6a5744a5578a7a4","impliedFormat":99},{"version":"5429b7f938113b40fa315e0f100220a5801992497bc3eb05e3b395055033a93c","impliedFormat":99},{"version":"aac828f821e824489c3f10a5452e05b7abc084894dcf6cef1855fe44c88d8556","impliedFormat":99},{"version":"9dda93662ba9cc072a048ed9717df4869820cdc84ebd33db3db6e1ef354f521a","impliedFormat":99},{"version":"a769f4df15ce86d72fdc646ef33bf9ad634e2d7f544399ca030b61d61c781942","impliedFormat":99},{"version":"e1848b9ea5d00c149eae78db2141cb099cd5cd0573064c03f24fada82b2a0d94","impliedFormat":99},{"version":"535dc92c4a20901f7dad384f1fd2b19735bb33720fad67283f4c2b06c4735777","impliedFormat":99},{"version":"2aee0f37dd7974c93900bbda19ff133f2ae270938d99c50f3c6c944260d94ac2","impliedFormat":99},{"version":"e30accdbef6f904f20354b6f598d7f2f7ff29094fc5410c33f63b29b4832172a","impliedFormat":1},{"version":"d8e3ef4fff7d0d3ea72616214977dc2e8407716fb2075e48c61a930d40bfc003","impliedFormat":1},{"version":"9b7f0e34eebf9d3b7196bb340fb2b0013db8bd22fad1a5baaf394b1ad27a0adc","impliedFormat":1},{"version":"b1e5f3a55aa219247976db1b0c6af31d07673e8085197aef925f25ca08fe12c4","impliedFormat":1},{"version":"99d035e265fb5d783f128612f410c7341eac318c75a53cad0012cb2d2cf005f1","impliedFormat":99},{"version":"c609560ed4b5a840f9515229fdf7522440cfacaf2b6f21e1c3e6b46bfc4431c6","impliedFormat":99},{"version":"43980aaf3d50729108658c84a9325fb3341186024247f2af90a9114206577d06","impliedFormat":99},{"version":"a59b6920d3cd9ac94aa10df1c8f2aa9c76c91d73e4af0e745821424e73bbffc8","impliedFormat":99},{"version":"26de2510ef97324e48304cad246786f786be6b9d067746ba672724fe99eb4a76","impliedFormat":99},{"version":"8b57037ca744bd60066cb4daeb239264ae4bf833f87edb3db2d59b4ef3d745d3","impliedFormat":99},{"version":"ae650283eb740cc6f195b89c1d341c03eb93a2fbaf3f7dcd5d01e827e23cd3e3","impliedFormat":99},{"version":"a9422b34f43cc9ee3352838bcd6fc2aec4e388dd6af7f4909df84067ef5b827b","impliedFormat":99},{"version":"88729bf6ce9df1a17ce52112cfe4af935cf1463c9128d4c7dde0a11ad10cfcbe","impliedFormat":99},{"version":"3e0d929622db87b5431036fec53dcf6f98fef5c6dae84570ac1c0c7b3c005ffb","impliedFormat":99},{"version":"53090b74e67c3dde2e97a5f3deaf1f1d2184d5caba7124193ebfc3be2daa667d","impliedFormat":99},{"version":"269966782bfaa41f1f629936d53d6ac01020c60abde7a1f70196a4405018f0b2","impliedFormat":99},{"version":"a507cef707a17f4f58b0f106ed3bf5fb044a9cab3f7c24eaeed10e1fdbab6151","impliedFormat":99},{"version":"a14cb49589c589d4e1257bf7bb457548785b619d37e245fe2a6c1b942156584b","impliedFormat":99},{"version":"272f5f51201ffbd79dbb3533503dd3e20d7f8d1040ad42f33068bf9d0b163e7d","impliedFormat":99},{"version":"85a6e5140a3bf1abbba9e6184d732d25648d20007116cbf39bd3baa9312441f2","impliedFormat":99},{"version":"bb9e472d55badebf8969025cc126eb857874252c58795ee5c6e74d686700ed21","impliedFormat":99},{"version":"7be935d17f4f54e3263e1526bae0128ebd6b15835e6c22116a44d8e0ada5a74b","impliedFormat":99},{"version":"b4aece44eaa3781d058e4f0790aa4a4e1d2012a1d62c73ad05e6a5737a7ee293","impliedFormat":99},{"version":"8519f682ce37f2d021cd6072049a7ac2db5fdef449afa3a2a226d346c25d5962","impliedFormat":99},{"version":"a43478ba83037f64bb87ea8471a7e8a407efa910a75540b384593bcce2d38c48","impliedFormat":99},{"version":"9bc917d7e01d56dfae1f76108a8cad4957f961cb51aa23c5d2e69ef3db286e20","impliedFormat":99},{"version":"b0fc879036b6a62cc7cbd27ea444f6fbe57fbef1b1d039b0d566df2117ffb499","impliedFormat":99},{"version":"f321683ba426eff0d826901b147eabd2d23428147643c869ec99c51da801290d","impliedFormat":99},{"version":"3c1183883c83dbb1be210210e1c11a878f87d60f8afc1b3972cc6388c87e7971","impliedFormat":99},{"version":"3c1183883c83dbb1be210210e1c11a878f87d60f8afc1b3972cc6388c87e7971","impliedFormat":99},{"version":"0b4125a4b9bc524a75e880a6f31849624262d8c97cde4a5da1d34256c95f5bfe","impliedFormat":99},{"version":"0c95bbcf76de3e231a4288d81d9e897e10c73da899277da633b44a08eb8eefba","impliedFormat":99},{"version":"d0ca01ffa779f381a0ec9d9efe34ea3cc98b45e4056ab44b5268766d63aab647","impliedFormat":99},{"version":"b5738f6245eee46675619b44f6af0d70f7586be229fb360532a80c44b1b49ff9","impliedFormat":99},{"version":"517171e44831ae1b5c34ba7aa7c7f1dcb21902c31d3f7b2abb51e497a0b99e6f","impliedFormat":99},{"version":"e2e3cde2cec99e82ea98a82c5bd92ed12e4fea8cf402a6e035d5bd2a7cca281a","impliedFormat":99},{"version":"2639caf99c5969ac53c622f5fafed83ca12d53fa87f406aa2cb7467a1103877b","impliedFormat":99},{"version":"a23d0164a568e779958e7643d81d88dc9027e80ed65e3a54da2505af249d329b","impliedFormat":99},{"version":"2131b5fbfbb47e80581e06e8bd11c7bfefcda71f088aa5f1d137d289c20a2222","impliedFormat":99},{"version":"c0c57f6c7ed346d12352f55865e539621bdcad36045d2b9e71be0e168b1192aa","impliedFormat":99},{"version":"11fd3ff2c4379a9f482f0d7c8591fd679d4f8dcab82046db3a1812f8713f2373","impliedFormat":99},{"version":"36f2ab77365fd65ee3261475892dba15c0fe452077a93a19a63aaf2acb62fc98","impliedFormat":99},{"version":"bb9cd6cc3af0b5e3ffa70cb1de85fe6946b3a3f1f10ebed7ed8c772f7ae50466","impliedFormat":99},{"version":"5b3a8b45bba54d7ef198eefa8c61eed06ec95d267108353c1517742be9eecb88","impliedFormat":99},{"version":"8081faa1962486c7e9e5fc2dff88fae24d868c5a585cdb2c38ba1c15fce4deae","impliedFormat":99},{"version":"9f57322db1a5da7c827f95f23fc860c2296730373a87436ad2ee23644c3c86a3","impliedFormat":99},{"version":"1ee555a004b7194196d6d51cf73227cfc1c0f0d043da9a649e5e867a25d1a2fc","impliedFormat":99},{"version":"1d6201fba84d7d56be10c34ef4f816988da4bfd1548902300f3e031a4f482833","impliedFormat":99},{"version":"51e530ae5cf54f398bee91699fa140199f96f2f55b8fa23901815b02c9721fde","impliedFormat":99},{"version":"18cc29fdaa42892eb79f03b9f00bd4619a35bb6dbc1805a7c5f94d9b0e96bf6a","impliedFormat":99},{"version":"b00e3cca08af70a9cad820cfc0c78e477d67b3f72d5f2d6ca967172e3a971f8b","impliedFormat":99},{"version":"9151c2db5ef596dc764093003dc730d6d3d1f75eaf5fa117f6caa2474e98a634","impliedFormat":99},{"version":"12b545c39034ef75d9b4b66d21324cfd2d37ca0f33c563fdd7e32a9f02839ab6","impliedFormat":99},{"version":"a178ef7d260e3ae2d4bb5ef46000ac0ad00c79a454a80b1e03615ae4e410596a","impliedFormat":99},{"version":"bf48205fdc00bea0ed458cf81a57e4cdb09e740669370be0e17a92e0a89338fc","impliedFormat":99},{"version":"b5873d1c47eff986c60cb5d61878fc2734a8c3e8cc64b7e183fbcdae3676aec8","impliedFormat":99},{"version":"3d1354d536d8ea970fca6ea675d5932b2d5720ac458fa85afcdd80f3b708c763","impliedFormat":99},{"version":"a06839234f46aa66759cd492ce3f716a9f32fc30d9310e1b7618c1f5cc075a62","impliedFormat":99},{"version":"92929866d4c2be4b9510afc8ce088817d8a2f5b58398cc032aa3e587fb700a42","impliedFormat":99},{"version":"6483a445bd97d8cc1545cebe5b4b84e7611c5f2ac65adf4fba8188e1758cb1b1","impliedFormat":99},{"version":"4cdce6d44ef612092168edba4cb736735dda79314c8d816bb376d2d4a4aa7f0c","impliedFormat":99},{"version":"d8ef707d006fdf8e64a9ea3673c4748374cac72d794b632dd6868e7973de3b55","impliedFormat":99},{"version":"695dbe57a9f1686b727ff8112def7376b69da4a9f92a6b4660cfc7adfeb4fd57","impliedFormat":99},{"version":"e30accdbef6f904f20354b6f598d7f2f7ff29094fc5410c33f63b29b4832172a","impliedFormat":1},{"version":"5fd2267cea69c19286f0e90a9ba78c0e19c3782ab2580bfc2f5678c5326fb78a","impliedFormat":1},{"version":"2a628d887712c299dd78731d2e18e5d456ac03fb258b8e39f61b2478b02481ee","impliedFormat":1},{"version":"b1e5f3a55aa219247976db1b0c6af31d07673e8085197aef925f25ca08fe12c4","impliedFormat":1},{"version":"e9f80c5934982b97886eadab6684c073344a588d1758b12fba2d0184e6f450a2","impliedFormat":99},{"version":"c609560ed4b5a840f9515229fdf7522440cfacaf2b6f21e1c3e6b46bfc4431c6","impliedFormat":99},{"version":"43980aaf3d50729108658c84a9325fb3341186024247f2af90a9114206577d06","impliedFormat":99},{"version":"a59b6920d3cd9ac94aa10df1c8f2aa9c76c91d73e4af0e745821424e73bbffc8","impliedFormat":99},{"version":"26de2510ef97324e48304cad246786f786be6b9d067746ba672724fe99eb4a76","impliedFormat":99},{"version":"a822bb869dd9dfdb4b1b5c887b90373d5a1e900191772646b6211541a5ea13b8","impliedFormat":99},{"version":"ba56cf294acda8f40e97bdf8f102617b57c914664476e1f900db307ad0e8c3f2","impliedFormat":99},{"version":"92be2c8229c02b140324d56906af58882ffd87ead115a34380580e9dedea4a18","impliedFormat":99},{"version":"a507cef707a17f4f58b0f106ed3bf5fb044a9cab3f7c24eaeed10e1fdbab6151","impliedFormat":99},{"version":"a14cb49589c589d4e1257bf7bb457548785b619d37e245fe2a6c1b942156584b","impliedFormat":99},{"version":"272f5f51201ffbd79dbb3533503dd3e20d7f8d1040ad42f33068bf9d0b163e7d","impliedFormat":99},{"version":"85a6e5140a3bf1abbba9e6184d732d25648d20007116cbf39bd3baa9312441f2","impliedFormat":99},{"version":"bb9e472d55badebf8969025cc126eb857874252c58795ee5c6e74d686700ed21","impliedFormat":99},{"version":"7be935d17f4f54e3263e1526bae0128ebd6b15835e6c22116a44d8e0ada5a74b","impliedFormat":99},{"version":"b4aece44eaa3781d058e4f0790aa4a4e1d2012a1d62c73ad05e6a5737a7ee293","impliedFormat":99},{"version":"8519f682ce37f2d021cd6072049a7ac2db5fdef449afa3a2a226d346c25d5962","impliedFormat":99},{"version":"a43478ba83037f64bb87ea8471a7e8a407efa910a75540b384593bcce2d38c48","impliedFormat":99},{"version":"9bc917d7e01d56dfae1f76108a8cad4957f961cb51aa23c5d2e69ef3db286e20","impliedFormat":99},{"version":"b0fc879036b6a62cc7cbd27ea444f6fbe57fbef1b1d039b0d566df2117ffb499","impliedFormat":99},{"version":"69b3e0b9435c37d191bce1a4d38c8d18e8add8cb99835eab8f566b95ad9de828","impliedFormat":99},{"version":"3c1183883c83dbb1be210210e1c11a878f87d60f8afc1b3972cc6388c87e7971","impliedFormat":99},{"version":"3c1183883c83dbb1be210210e1c11a878f87d60f8afc1b3972cc6388c87e7971","impliedFormat":99},{"version":"0b4125a4b9bc524a75e880a6f31849624262d8c97cde4a5da1d34256c95f5bfe","impliedFormat":99},{"version":"0c95bbcf76de3e231a4288d81d9e897e10c73da899277da633b44a08eb8eefba","impliedFormat":99},{"version":"d0ca01ffa779f381a0ec9d9efe34ea3cc98b45e4056ab44b5268766d63aab647","impliedFormat":99},{"version":"b5738f6245eee46675619b44f6af0d70f7586be229fb360532a80c44b1b49ff9","impliedFormat":99},{"version":"517171e44831ae1b5c34ba7aa7c7f1dcb21902c31d3f7b2abb51e497a0b99e6f","impliedFormat":99},{"version":"e2e3cde2cec99e82ea98a82c5bd92ed12e4fea8cf402a6e035d5bd2a7cca281a","impliedFormat":99},{"version":"9382e32237e08424b2642d1d9ea4af3a76001cef48888273f769af0c95cf169b","impliedFormat":99},{"version":"45a95142d20916e8510b2d4c42b09aaa3d8ca3d0c3dbd7f915da870ad182380c","impliedFormat":99},{"version":"2131b5fbfbb47e80581e06e8bd11c7bfefcda71f088aa5f1d137d289c20a2222","impliedFormat":99},{"version":"c0c57f6c7ed346d12352f55865e539621bdcad36045d2b9e71be0e168b1192aa","impliedFormat":99},{"version":"11fd3ff2c4379a9f482f0d7c8591fd679d4f8dcab82046db3a1812f8713f2373","impliedFormat":99},{"version":"36f2ab77365fd65ee3261475892dba15c0fe452077a93a19a63aaf2acb62fc98","impliedFormat":99},{"version":"bb9cd6cc3af0b5e3ffa70cb1de85fe6946b3a3f1f10ebed7ed8c772f7ae50466","impliedFormat":99},{"version":"5b3a8b45bba54d7ef198eefa8c61eed06ec95d267108353c1517742be9eecb88","impliedFormat":99},{"version":"8081faa1962486c7e9e5fc2dff88fae24d868c5a585cdb2c38ba1c15fce4deae","impliedFormat":99},{"version":"9f57322db1a5da7c827f95f23fc860c2296730373a87436ad2ee23644c3c86a3","impliedFormat":99},{"version":"1ee555a004b7194196d6d51cf73227cfc1c0f0d043da9a649e5e867a25d1a2fc","impliedFormat":99},{"version":"1d6201fba84d7d56be10c34ef4f816988da4bfd1548902300f3e031a4f482833","impliedFormat":99},{"version":"51e530ae5cf54f398bee91699fa140199f96f2f55b8fa23901815b02c9721fde","impliedFormat":99},{"version":"18cc29fdaa42892eb79f03b9f00bd4619a35bb6dbc1805a7c5f94d9b0e96bf6a","impliedFormat":99},{"version":"b00e3cca08af70a9cad820cfc0c78e477d67b3f72d5f2d6ca967172e3a971f8b","impliedFormat":99},{"version":"9151c2db5ef596dc764093003dc730d6d3d1f75eaf5fa117f6caa2474e98a634","impliedFormat":99},{"version":"827f0158dcf51b4afd0bf7867d30ac9436535fb4422b891a16b88799f9caa6e8","impliedFormat":99},{"version":"a178ef7d260e3ae2d4bb5ef46000ac0ad00c79a454a80b1e03615ae4e410596a","impliedFormat":99},{"version":"6e477dd31a5483cbab13f1f907b29474b33a5140dd4e8672a7ebe00aa27984cf","impliedFormat":99},{"version":"b5873d1c47eff986c60cb5d61878fc2734a8c3e8cc64b7e183fbcdae3676aec8","impliedFormat":99},{"version":"3d1354d536d8ea970fca6ea675d5932b2d5720ac458fa85afcdd80f3b708c763","impliedFormat":99},{"version":"a06839234f46aa66759cd492ce3f716a9f32fc30d9310e1b7618c1f5cc075a62","impliedFormat":99},{"version":"92929866d4c2be4b9510afc8ce088817d8a2f5b58398cc032aa3e587fb700a42","impliedFormat":99},{"version":"6483a445bd97d8cc1545cebe5b4b84e7611c5f2ac65adf4fba8188e1758cb1b1","impliedFormat":99},{"version":"513d0b8895a905e579ed2baebdc817a23dae16e78ecd925400e3142a8096f33e","impliedFormat":99},"fce0bcc6a86782ed4eda9ed21c4843dfa3c0845db64634867034d249ac0933ea","51caf311b5397bb74553bc28cc85973db9f9a7a327c68866e7e7750b72dca42b","d392af7961eda9588aed6392908f014fa318daf9e8a952339ed3db69e9ce5273","2778747ec5f0fa749a66df42831ea70270ab3a17a94f1313e01905b794f92a47","925bb05a1ae6a8d137cf092bc8b31e54ebaa5559a444583eddcff605647d5544","01dd48041d3b0d86d198e58cb750852eea8f0a78d40cd52f7e50bf6f33a06dee",{"version":"89fc4cad6ac7ac6d922523b3ab51462b050189ab335766149e5cc777483d4e1b","impliedFormat":1},{"version":"27b14b091ccf309c79f3d2cf226edfa4d533b131f19bc0cbe855adebd464c285","impliedFormat":99},"d41171d9f336c406532c26d9706a7f3dbb54d757e4dd418d1f21623e8871c740",{"version":"5276ee82ef96770571bd5aae9f4f5cdd474c3d4c1a068f1e1d9ab9cf16529975","impliedFormat":1},{"version":"cdb1d174036ebdb04b5a61461ff523efaeefffd87b093f43fdf20196024b2003","impliedFormat":1},{"version":"23c2c70dd974c3b8b66be4f3d6c9351fd41235d9c038b4d57d334dda8f753819","impliedFormat":1},{"version":"dffa09d0911ebb2639cae47397e011cc195de4a3ad83b53efb2651cfa0e0b75e","impliedFormat":1},{"version":"7d2c1ce36b9370a3af266ca6c663fe62e82671f9cf41337bda0efd837a5e2de9","impliedFormat":1},{"version":"6e45f5dd809aca05301c8e1b9f526096fe89b3369da10fe34f9c037832f103a9","impliedFormat":1},{"version":"0db63cf288cd71a85b06be8065db706797fb7d368a2315bd34967070c880facc","impliedFormat":1},{"version":"755ee0128a813468af08c5e673655a068813c92f4179978fd37ac3df1688c2f8","impliedFormat":1},{"version":"f183da4c889c90d5060aacc1c247c6cd68cc0024b9891402bb1c07a492d18018","impliedFormat":1},{"version":"da1c8718353e2981fa5981328a2d5cf6bc70da59c51967924d032a06177bce50","impliedFormat":1},{"version":"cba87731af3b8e51151ab6b3ba2d9604739649cf132885dff49836d5369ae387","impliedFormat":1},{"version":"3965bb091883ba173f7742c16ec8efe81207d75774d3a809385edce6841adca0","impliedFormat":1},{"version":"108fd0cab464e528dfa511d982368df2c9d9964e1e66f8921ef40accce9dfcf7","impliedFormat":1},{"version":"8d48c98fca3f013fd2872810d7168a9c405c4037962637aaa0a094571e731757","impliedFormat":1},{"version":"9898a7c6ed78c9656079244ea2318282f42ffd1cb5d4aa5753decaa7f3eaafa2","impliedFormat":1},"010bd7696850423d70a40aa6a4968cde67ec4f7f1a113a107d0a7423eeb58dd2","92a71fd81ccd1c569d4922967f10b4bf8e680ee7e97b9caadb5426a70249263e","132279ec90347f347997306254f472ccf473cf7ec59e6cbc358c8b3e3d917dd0","283bbcc38c91737aea86f8d5362b4fb48894b64ae12a7341563a1ce7372eb39c","8c3a4923961d532c332df2f3915a4a70441449f099cea296ca91a02bf6b9f310",{"version":"b4f89206c8e318e5e65294ae7925a52a5bc13508809c5c699d7ebfa14e0509eb","affectsGlobalScope":true,"impliedFormat":1},{"version":"d51500cee65d776a8591b72c1019b0dada25d6f7ea39685130ccedad2e8b1eff","impliedFormat":1},{"version":"e733b8a7d2ecce20916d95d75a0c7cdfff7e8371879006902d77969da1550d65","impliedFormat":1},{"version":"d9d5884c0b7a87c6b0b319474eac7987f915f7460a04012d54689c14c800d69c","impliedFormat":1},{"version":"42739f43f21108aaa8b2e9d1246c537c88fc193694d5c3660b49ab5ed87bec60","impliedFormat":1},{"version":"8c4c212cbe640024a5076e006d5ed48c6856bf3a79880c52d0fe453495b84e7d","impliedFormat":1},{"version":"8dbd432facc1bfd211d58bbbf86a405dd55cdf04d6425037171282ae5e1bd5ae","impliedFormat":1},{"version":"bd0ae662720de3f141b078c64de498113fb13faec0c1cbec62f1630f7b8954a3","impliedFormat":1},{"version":"517fee0f998ca443a8eedaed7ad143753cd7ed6c9fc97a62200c09b21ea661d7","impliedFormat":1},{"version":"e94e5a0936bba407a0d0b7846ff8a7960667f09040b575b5035bc30298510781","impliedFormat":1},{"version":"f6a3229a9d452117bfc85b50e955b836c8c91b1244dd8d3413c2824333022982","impliedFormat":1},{"version":"75d3a0dcb75b27ae7f6d3bc06ebacc608c5145b2f403264b64d603d0be929bca","impliedFormat":1},{"version":"28732171a9e5a176e9d8b9bb417b32dc885591bc2642232389a44167bc5ec581","impliedFormat":1},{"version":"90ebe8ddee75b7e87baf030d45d49e13a91dea47fa4cd8494ac85e5ea35779c8","impliedFormat":1},{"version":"6ec1d690b2213c008b55d31778e6c4f13141487fe26749ee6a0b4c2b6f84f9c9","impliedFormat":1},{"version":"43ae0b1b0a836f113aa973b1a4d114e2867fd320125e43a80805d9a80ab07c4b","impliedFormat":1},{"version":"1b6d1aeb6a58db9a9702623d7edaa31eda44cb33fe66f349f6156b20db8b6211","impliedFormat":1},{"version":"5ee542acb0e360c539bcf027de4389536fdaae8653e47b33eb0445ba85bf223a","impliedFormat":1},{"version":"8a0a53613cfa756a769e4514632acac0e17d80631af21a888daa46ac01ccdd1d","impliedFormat":1},{"version":"e7f9e4cf51627c95fdddff062c58c6b1c4e22d1868acbf3e7e663ee95e3790b8","impliedFormat":1},{"version":"449d082b398ad2a53c5def35397b752d61c968a2acacffb935d564b5ff3aa19c","impliedFormat":1},{"version":"1a3aa0fb5f9a2dc05a33faa6246f85ecc52c8af7a5257d8639e724a12ebc92bf","impliedFormat":1},{"version":"6480e9b0877e389c96e3b89c43fb2e4d84bb6ae8cea22f8ea2bf30ac4a4c4136","impliedFormat":1},{"version":"9cd1a75410c01f48f43befd40b47a7d2d42565b5593d5cf02b7472b04a1d98c8","impliedFormat":1},{"version":"d0144e7240c7f26030468a13211194d192316099ebbcee7782c6005cc393c734","impliedFormat":1},{"version":"095a402135de9fbfda29ba7c984bf54b9e65757396b4165706d898e9baa83ed5","impliedFormat":99},{"version":"0b6471168629b8a0cbac9f8f67bbbba83a1d64cf1424cd7d299439b3af88129a","impliedFormat":99},{"version":"3e0fa3b04086663fd406499ea37f0714b0d7cbc296eb81e244f2bf0ba4938bb2","impliedFormat":99},{"version":"3d11abe325e68a5b76d9f53ecc0b4ea29685ccbd8690b279f2177e0750d87f8c","impliedFormat":99},{"version":"f1952d24cb1344241341230924197977764249edcde80605e96454f073ebb35a","impliedFormat":99},{"version":"3b5b37b56d81802168c5b8df2f1d4a7ee018d67e7463f221d49b6ea20af00060","impliedFormat":99},{"version":"f3a6db8faeb959400a4d0e1100b9d5c54eb494800e6dc9a2452bb2e00a27397c","impliedFormat":99},{"version":"d278699a1c7e06a195ecc065c4965d1bbfb5bc2d67176e63bebf58b273158023","impliedFormat":99},{"version":"261ffd2f7502d9387324715c7dcb9f3a30c8d044b6dc3abc7ff80737c366476c","impliedFormat":99},{"version":"28729ff7b2ea98a9ba6ca4490c5540be744a4d73b4199ff6094cb65c9db33607","impliedFormat":99},{"version":"6ac889647435812fb7ced7035daf90c1f307710056e4b496a3fd5cb97c87daed","impliedFormat":99},{"version":"29f60d17027d6bc8891797f6ed95ac84ee42313e6b03ddb49beff6f22f49f8c6","impliedFormat":99},{"version":"f71579228be8825267577e970c8f0ee2869cebae0bb7603b00644fec924c6717","impliedFormat":99},{"version":"e50f096cb424b63343ad5814622623f15cf3830f41710376bebb3c7f71554713","impliedFormat":99},{"version":"69ebae4354b59ff1ba38419d6033e22d0db6ffe6c1d562e78914f88f06ec517f","impliedFormat":99},{"version":"45f0aee62dc187cbde99b10987e1f8649a30bba8bf9c95957e37d1551d0626da","impliedFormat":99},{"version":"919b048385b82efca27e5adec2f61f17a2b219582f2deb8a13b4648c7c8fafbf","impliedFormat":99},{"version":"47747eabb3c64620a12f707bf30c7f7a211e25754a2da1f98267068f49bd0947","impliedFormat":99},{"version":"2dc1bcd6a132924a89f965b60edd5b5333aaa7eb28ba5af44a0a0a328756e9ad","impliedFormat":1},{"version":"ad117b97b2eb65daeeabf0adb13573a8f1d12d5ce21c312eb7eb588106b92560","impliedFormat":1},{"version":"683f7d52795b5e2c0a269c4a202f212d147eee850b6d74050af619cea7638605","impliedFormat":1},{"version":"bf338c88f9e91b1700029f806a2d8bb447f19d3e39fa57dbba16ce8bf43902c2","impliedFormat":1},{"version":"d3c9c7df6fe4c7905f73578af2542e2f303da2b0565abb10ccf8a75626da1bb5","impliedFormat":1},{"version":"a16c041923053317f99708de244e50f0c563de0ee22313739810b67cec8af89a","impliedFormat":1},{"version":"b64880a77efc0fba08ee595d277a52e7abbdef2dde51a163376f03d6d3a67c7a","impliedFormat":1},{"version":"817d7ba9b41a1f3f7d15e8c1067bc32ce0044aab0ba05e2794294ed25959cdf7","impliedFormat":1},{"version":"6e6d52eece8b335d10a436ca59f91cbf0727f9f2ac0521a0b0ffc32da2006948","impliedFormat":1},{"version":"98e70d3105aa56ac3e2a34a78f10c6d352ff9e3148b1bc2bb11c1787f0176d26","impliedFormat":1},{"version":"144ffc9e0632f167247b8ebc6c12b690555b27930cb2d92edceea7df51e54bbe","impliedFormat":1},{"version":"cb6b2bd587f4d8b0299840be7cedf422fb895d3c7f6cbd8c18c041518ba82fee","impliedFormat":1},{"version":"849b51d422f1a846684da755840ffe68f65701b7b7703ea9622847df65dfb2cb","impliedFormat":1},{"version":"3b17eebfd6fea2320c3d3ab55e26bee41e6745fe51432da7901e898249a8c186","impliedFormat":1},{"version":"5d9c054ecd5fad83e0ec5e117196acdcd4b1cc5b8d28f5df752a416c27052aa2","impliedFormat":1},{"version":"949c8eb79434b05b6d1c10d2010216fbd6c920ee376d08627f717d24b6572454","impliedFormat":1},{"version":"25495d26470692e2591e386c1dbffe4aa0b2d8c00af6ac9c8c69657818262dd5","impliedFormat":1},{"version":"abee0197420ed0849c7adbff50fc13f54ccb52f9a8c906e298c28321bf736cd9","impliedFormat":1},{"version":"3af7286265437a7488193d0ab0b56a6e20e1a5e08831a6c3fe0880212c2c6c75","impliedFormat":1},{"version":"d7eadcb936edf325912a70d1c4874c29b92463ba1eecdb302858763db6a68692","impliedFormat":1},{"version":"04fe6e4f5bd35c234cd04ea88ada66b718aec4b3edf611147b0ec9ea216b3cd7","impliedFormat":1},{"version":"7aa826d09dcfa85af6b2cfeeb6a7f340d417968632695fa8eacf4186fb71e8ac","impliedFormat":1},{"version":"ebbf2bf006f21fc203f1a555ff0fdcd8542d1546d7cab60aa835ff5902db0d2d","impliedFormat":1},{"version":"12aaf4e3c85225c710acd6a9f41532bf8e06bf180e54c1bedc60fa9b9c1a7d23","impliedFormat":1},{"version":"7814f653054116409bc9a36968b77c878c2013ef8d8873328e8f6fcd3348d8d9","impliedFormat":1},{"version":"ff4ade9606d1b3fe1a10bdf6ab944e1bb1d5ac86035228ddd3ecb5fbe51d4d47","impliedFormat":99},{"version":"608ffc65e122c3eeeff832a9007ecc00fe71bf1b03a3069a44e8c565ee8af368","impliedFormat":99},{"version":"40b54b241bc79a986a5ac364f7f11c60af8c68ac8d45c80501ed31af7e587a74","impliedFormat":1},{"version":"0d1a503605c35a53f49ff2b6506704b289bc33d9001d2244044c91fc82315c8a","impliedFormat":1},{"version":"96d1d70759af66ea4404f7c18130ef478e5052de8863e2bf4467cfbc2fc7176a","impliedFormat":1},{"version":"fcb4542949fbf132a400c60cc53b79dde681570147af3a5798aa732798c6b0f1","impliedFormat":1},{"version":"9332e2b6255fd361167671093522351ad5e2d0e3a78d9bf8f0959d779f6d3246","impliedFormat":1},{"version":"5be2e2b5ca39c4fc74b0273674a3e7705088513872fa3de1e4f75357a507a988","impliedFormat":1},{"version":"fc8bef71b44a15c1c6afe97e2ce74c7beb10d0a3c45d19dca5b9d53cf81cc744","impliedFormat":1},{"version":"41dd7695c5e11ca31e40bb8d9a2edc9c2b3e262d1007fc7471ecb91516874d98","impliedFormat":1},{"version":"262efb4650083ac514f3119534d502211d0270140057698e7d4978caaf4b6f97","impliedFormat":1},{"version":"b5e98f1f4e64ace252ae743df592ff0187aac817efaf58cd97c63e243fe15951","impliedFormat":1},{"version":"151f53de4563905919248ae634d857276a8491e62416b6f2cccbfebfe6794a72","impliedFormat":1},"8f7f0fe9723363d03731e2af36efe952b9c8dfae8c9c4feca85f917c8d38ee95","7ecd76861caed403cf1c2e800d380817179703bb003a7e94141e51e9e520a16e","dcfa51263066f8d4064c483762236b3257512c2d88434e8a2f1010fc8d77a729","9811c23f18ed827f5f95f59ac41d59c24e048811741bc97ef4751a6e4b588c93","764d3e4fb632118dd99a7e8109e64f2663f14cf970b4d45e8b9b74ba705f68c2","a993b6a3db6a2d2963115b8eb8e4e04ff6e4de394170571a5b703e482ff5314c","767f21b5b918baaab7627cedd23e90e96c6988f86477df1208b5111f41aee03d","51b6fd7947e721d16a909d057b5d9b008e7c467c94efb5cfbca51edaf10454f4","f846a25a6ad92fae372999fc49fb5fe1febd68ca3eea39ef83425a46cc016776","409ffeafca5a6a110031899b1ede663a3c3fa929124893367f4934e32700d68e","21adf40e2fb8b0a48342d2eaf4125363d94acb49cc59f5ac369749efe683990f","05da203db76a7efb938df54d8cf7db7946fb7c89099b5c41c78662d95b8f7fcb","79b4596a792ed6cc9300ab60c2d21d820f4a13717d14e573b55816cdfb245de2","6c96ec3120fd9f90fe1afc383f6b2f92b824907883c6f99268b5167185b0a3d8","4bb6f6bbc4448a16ffb70812aa37b20ca3941b27443ca36d9d3a499a8bf1d564","ced87fa12049ceb1366ca1f09f6513cc7eea164e6922411dc96af74f9d44cc3f","d2e4a17c63760596ff90b4309942c815d06024e25e7a60bea36d17393602bc79","21e7c97a4a252f6c062480252b3f885ec2e7b67ac56664d2779d4874d1d1916e","aba51eb73c16adbc21fd09bf64b6014e84c469284c501a3c9aacf242aa29279d","26b123b60d4d748e6ad048813295f4c368d46faef228690732d8d289a1a5af8d","5d83ba0eae0798f047802f636c62c4189ef4079f2d017f33b14086fae18b0fd9","1d568d68dad90166c8e322e3a301441095b2e149d458f411209fe6e29f0ec1c2","2d995c15bd75d777ddb5e05b3e838750a7a0e229d9503204984aac0e36d886b6","6cad528e6075009933bc7ec3a49f1d4574995a45e5f1fdfe04a0c38dc693ef57","8c504f40166472fe55bb138187ade1677c14699b70731d3d862d5d19193814a7","7d1e53d013ca549fa99df6bb961822493e2878f2f2ba935e95210c9b7a24cd68",{"version":"5276ee82ef96770571bd5aae9f4f5cdd474c3d4c1a068f1e1d9ab9cf16529975","impliedFormat":1},{"version":"cdb1d174036ebdb04b5a61461ff523efaeefffd87b093f43fdf20196024b2003","impliedFormat":1},{"version":"23c2c70dd974c3b8b66be4f3d6c9351fd41235d9c038b4d57d334dda8f753819","impliedFormat":1},{"version":"dffa09d0911ebb2639cae47397e011cc195de4a3ad83b53efb2651cfa0e0b75e","impliedFormat":1},{"version":"26168183003371ceac063f0cdf62be889d0515a193444a99b176094565dabb0a","impliedFormat":1},{"version":"7fc99221160c51281d2b9095552be2b24b600b3b6fe305cfd068bf501f623ef2","impliedFormat":1},{"version":"e36eeb1297210f99ef4644a5028caa2f222cee56f5f577909470aae77924b7fc","impliedFormat":1},{"version":"755ee0128a813468af08c5e673655a068813c92f4179978fd37ac3df1688c2f8","impliedFormat":1},{"version":"f183da4c889c90d5060aacc1c247c6cd68cc0024b9891402bb1c07a492d18018","impliedFormat":1},{"version":"da1c8718353e2981fa5981328a2d5cf6bc70da59c51967924d032a06177bce50","impliedFormat":1},{"version":"b4b9c09ebf50026552009c501feafa8d69c58dd29cfee93f54d5783f8fc6d2b9","impliedFormat":1},{"version":"3965bb091883ba173f7742c16ec8efe81207d75774d3a809385edce6841adca0","impliedFormat":1},{"version":"c1eb69b3ec8f1080980c25c8244c4ba093af729f4dac451758e69026b20c50a7","impliedFormat":1},{"version":"f67870591872110fd6a97ec0d933972f21ccf433bfb9d8ed1f044740958c4e43","impliedFormat":1},"70d4ad847cb64eb83528a594bc5eba51fe712394c7b5c1de540dbfa1fbb252a6","0a598b4c856c45b4847ceb8cbf5e4dfb8eb164053ee407775363fad2b3689893",{"version":"a28e6fadb0b6e7a95cfcd29366f2b72a8e3193270d3f2b673e1876edf0159c7b","impliedFormat":99},"16db379ab816c2dcb506ece1955925fad9cf7e60a27e192f0ae274abeab0e4e5","c24ff7cbdbc36ed2758430652fd2c208c35f23a69b0204b07d6f3ed016eed9f6",{"version":"9be0dc6f4c5ebff5d838dc0d059f25e5a6ab1d224d5adc7ef46887ce8549e897","impliedFormat":99},{"version":"32aa20fd978847e617304582657723f0dcd1809de9b087ed0ad5b7090b1a47c1","impliedFormat":99},{"version":"1f37db92ea78f4d197a201f80a3c52ce6e2b759b19d3a1e9de5aab0c9026fe3f","impliedFormat":99},{"version":"c07898a85c15b3b636506443e88fe6d85bbd568c0bb504a9ae5cb371d58f6319","impliedFormat":99},{"version":"795d467a57e3a7c4aa3d645fa2edae9a2d0d44dde435bd1b222ab533da6fce44","impliedFormat":99},{"version":"bfc5aa7977557874fcbe1e96f7a06e46b3b568b955c82b74a85cc8f6c62060a5","impliedFormat":99},{"version":"f20bb3ae0de20cd6a4b73155cb506bae39e904b7e5ea4f618f5bda7b3ae474fc","impliedFormat":99},{"version":"44c5d9f47e85552ea141ddc1b0af65903297624f0ff2227372d5ce31ff0380c6","impliedFormat":99},"6bfb9aeb01e1f2a8f2b6196412ce85dc2b7cdc8dcf1962f2e1b6516093e8269c","e4a4f02927024f5fbf9e91abffcec93c3771168b5bc36dea3091b152d5f3186d",{"version":"a896cee6bbf43009c05e9ee4b0cfb1147ae49a4ffc2d814c6d7465806d76fe72","impliedFormat":99},{"version":"6bd987ccf12886137d96b81e48f65a7a6fa940085753c4e212c91f51555f13e5","impliedFormat":1},"8151759f968a478356f66626323955df04679687e8bded20e1ee7b29027fc8a2","476bb552263792befe628d5b588cfee6310e91d27d8e5e3135e3c64cfdf661d6","249a206e642fb5f7539f5127d3a5c6a49de3b802ca604e2b5fff4f38f844bfe3","4a9e0a7891dc98c602bfcdd97d00bfebe517011e39a0f88926cf619ee24d9aa1","4fab487193cffe755885c698cc1bdc01b00ecf4dcca0dddfc447d88970681c97","401cbeffc1cbc3427fc85070bb0dd35df981fcf82a30318e9b468a660a95f743","c84078b0f3b82c13b2e97be494c0f1071a89df00858c9035ea5444924a263884","7293106d19cf62705dc6f168cdb00e7e4c37d57f1019d73eab5e5633f002abfb","8bc0222adfdb85b62b1a3f1ac9fafb8e1116c6494cc86782ac2a7fb6d13bd09b","1de97be13cb6d21a4a1da963d41b6141b27f05786ffdb35713bf378328eac097","e538c60f67d9e7d463ce9fc6299a9c1e436fea994f03f14e436871f69659854f","19b53283228e93ccee1500899e42b4d22853555d91fb8f2efa3f82922cdbdc41","9c93d91720155376e598da843b36a77a24890972270195940569950846c0c7d2","8236d0455cdc0c5df74726e2fc7011e4d133b7df6180be669bad5e025d727308","3be0ff06250bdce15bd08cb9eda008ccabd85aa331a784dfb6d81838c470eae0","8278755295ae2604e765676713fb773b43b8a4c8b98b2bf33693c068b916ccf6","10d43e25bfdaf81335aa875387740a9e952a7f5e2f47f9bf6e473c42a7187564","22a90b05fdc32fa4ff466a5819128275749dee90a305858ef353246e723a2d85","51d4f6415cae0357ae923f7110e6f6962690e44c701589a65f2d95903e40e368","cb838c5fdd46f7f469fefa566e2b5c2fafe02be638ef02177bc1c7cbbd3bf879","53fa54de6d9b14ec6a35ac2c6e7c5dcf47ac17eb74741c57d6948db7a2ccc489","1a947f95ecc0f6a6e2ea8122470d6881b5dfb2592051b68ee8f72f8f8ee36d5f","bbdbdb42b704a60fa5d7177ef83346be726578ccf95e26add73999c1148dafea","71b2f6191be093ac9d84c9286a609f3414390ff88be50e2f01c9bcdb85d3287f","35635edf9f859027af3be25cd38a5d42e52c1258a1a3ced5703842d177dd805f","e5357f120b95cc70b91bff28981d75e63d381f96ddd12df8c6274ce209040c52","1142ae3be3921a530a00fbd2f4aa5e511375891f625fa098e2618ffbb804d3c9","3d93128631bbfed8da5aa5960e91a88249a6bfc7bd00dedc04f4d18cbffaf5ef","32377265da5db06811fb10303adbb6759f1dc0796f11c3509f8c368a394c89e7","6a374c778084795fc7a2aa1c15d20e461b1d8ace2990ecdf6ac8baaf25072b7c","90dec2351372005d3ccfe8cdcf628bee17dc7c48a6bacb3c58d13f376aa92abc","b889c9ec0f1e55e0129ce9d06f0cf10daa320f0161b7c992db8bb1ba99adb36f","f310657015f5c7accfa816f290a474674eedbbe3c79a15477d344da54f4c1c56","ca8aa1a3dec921d461a781d9f529d814dc6aff720b10f2e458cb2e0cc7058536","016017c4c67f193e806011e0f76de65cb3c4771f37a0197447ae00f4ec3d675c","f07b219d7d1e1cbe8d95d8a6e0decb00a1b6087ae186c5ebee9896e2ff413ac2","aaddc268703ab388bf6c44617543cc939831ad85d5dc0aa1984c26a6077e7d6d","1eccc6cef0e7c37d47eb03a97ace30d00bf819de8461786360bf7209960ea3ea","eb431d32ffc7698839b93fb185bd7748ce804f6ba334b5a0f84c926ca374223a",{"version":"3d708b76940e1051d77827e6a8a02b2527288c6d4d1c23b5adaa16730f1f4009","signature":"01fe9ce173f45a09b54f82b726959cff3d7af1f2e6596298f44b8476c86b1609"},"5dbe51f917f9a0e623f6d4e85168f0fb54590db471edb9a959f1f9c51af279b9","62ab67147a9b8fd96a09da8fdc2471a1ca66d1aecc0f02ef58277f52e4b7c00a","02488bf52002565e729cd29363490adbdfa45672e042fa65325f761e5a69e55b",{"version":"b3b660c3d033dc9ef4ad8cb72ef53689a9553d164d863df70a016388dc720563","signature":"73e6a02a6e9410391b3fd5c1fea87f7099b6b0cfea1638aa7724b53dcc2fa9ee"},"5cc05c76b2616468da6647bba3164da3a43a5072957a361f8fd83443f70ed19b",{"version":"8f8b4bf72768215e198c9d23a2e57e658df831e89db050638e8392bfd1496d79","signature":"12e293340c7477ac5806055b16f1e6ef5d1328c7f9dbaf1dbd822179d6bd7c02"},"7823de72ea86749463b18871158db12e33e7d452c2da17e770fe14f983ec8acd",{"version":"fb0c6ec6d7932a3a1dc83f0eed33ab793fac1e0640bf91dc909c30cd0f0c8285","signature":"2c20df07430d1520f4242b99d6bb3cd2bbabc30cb2c16d9d710fb5780e779135"},{"version":"c17f9ed4e1c43d6bdf74de055df4b42366ffbdd52c818e0ae7ce0f20f849c2f7","signature":"b37e21f2bd859bd153abb0eb031e1148211b994f773f3341c9ed443828b92930"},{"version":"b3a161ee261f5909ff7415f9ab59719b21c5c8d7d6a1dabde90f804ac49fa0da","signature":"f19416898947362b3d6d3c0eeb67fee0a86bbbf51de1d6df6285962defbee9d3"},"eab87a5108d9732a2508991e58ea5c32b90aa3d6b959eb62b4e29cbb7322bf9c","28d3f60af41a48022385a5619c49a4c799284ebadad30d987ec1f67ef84a1ffe","747e4ce9c28359c400ab94e506648be05de64c9d991b349123a4a8fc48b84b73","1b3f557087d532489d56388c31dd4195b775cc3f735975a4589d2f54aba467c7","4aeae8d8887e81c7698be984c3505a7099f25ee58a6ae215aa5276089924918c","593be32ac4f8fe372a6bd9ea4859ca1a84d6dc84fa630e24616cf24120d68da6","afcd168776c141a058fadc66872e0765bef97fb1c7fbf8a480454bdf30b84186","6da63471ad0749bf97b1e481c0bfe6a43ca8f3daba53269568f033fed989ddf2","8a15db08fb7d7b2ab4717156081b95d4ed32a770e4624b0722e8606e91c3df4b","ff10c6742f17c4ad02e6e18981c646eb136f034df6c6da769ce518bef035dac7","386502117ad2cf606bc88655cb9195b4644bcb8f97cd1e8c5c322ac7e4006c05","ab58c363da9bc405eb1f6810b28b3add09b3f610425615360e311c1198ebd73a","0873fbc7f9d6ab783ed2e6a73403a079cab3d122c7eea69392889eb706d5297a","593be32ac4f8fe372a6bd9ea4859ca1a84d6dc84fa630e24616cf24120d68da6","9e98458ea2d271f13b0d0b5d0a492005fb0ca454d24a2645e129a42a0ce5f3fb","7a912902c1c09e09ec8f2638a4d52f6fca012d1a4402753a604c310f680263f6","a4d0dbc0f6fcba705be0aa16752ba7df2a9a4cc98d03adcf0a70d2b70d0db7c3","4b3707ee5c02dfed26946147a17ad487d954cb648a352417f7305f3a8b0b091e","118fed45cbddb3c9b4a4dab8c83967bd4f61d7b0afd8f148045b4287a4cef9a9","2a100a93d6afbe9e3363df7d206b8a3ce61e2c174e5417f825986bc8d21ffc69","8ea16a7310e3501565e2d32de8b9f985f79e462f655686dcab7d6b230fa655b9","4b3707ee5c02dfed26946147a17ad487d954cb648a352417f7305f3a8b0b091e","b60413abb20bdbfafe6b5326d2b4e05f63dfdcf5d9b1246a3f86ece2ad562d86","b4478b686216adcc7a6255a930d419f33075d942195a00707d9cfe03e373e8b9","c36744b2651a62f52866b47c74545de84fdf6991e0a96920e0004642e4830524","4b3707ee5c02dfed26946147a17ad487d954cb648a352417f7305f3a8b0b091e","2049bb071060b81c49c6cf96872f23632d6e4fa7f9a1c93e007dec52d77f8a70","907a3d799649a512646f1e6b70591b137a5f5923669ccf8673003ad498c42e75","b82efd290a7dd61bddb329a05b5d622ec9927cfc8c27b8178676c85875460266","4b3707ee5c02dfed26946147a17ad487d954cb648a352417f7305f3a8b0b091e","6204a985b097ba214229d512959870ec0d74c7b6708b5bebd9f7c270d9ba3f42","234efca8a392e60b9c4d5f5ae51b20c7e593706ed542033427d7123f9ac00047","a21ce57317e583912540dad2b34d2762431c9f603a480affc58b03e6b5e8a369","4b3707ee5c02dfed26946147a17ad487d954cb648a352417f7305f3a8b0b091e","ce0d2754f32697babe3c5ebccd63d627bc2fe2c47d02edc8fb52aefd67bf20ff","30c53f37fc9649f10cd59a98f43a9358878d7be661ace991325756c2d69eaebe","320bec3745b17fe114b018d64b01f1463b34ab3d0196319c3261710e908d3541","4b3707ee5c02dfed26946147a17ad487d954cb648a352417f7305f3a8b0b091e","b48a58724e886fc741cbc9db68909d87f8102cdd102b34b8d011f40263f2eff6","481f5f7de3521edad947b39300f2978debd136ab602433d014e44f6e119dc242","87223c92d8c9f0f6d2163674475be7c4d2c8a4439c31fcf04d01a873c255361e","4b3707ee5c02dfed26946147a17ad487d954cb648a352417f7305f3a8b0b091e","292d1124dff7d7313ac9d6ec5879a113e09acaf4226ab127cb024fd7d0d2131e","9bb30ee6833cc37825294772c9c67863ebf61c3913eb92abb3f259444c274498","693c946a6f66734a59fcb7a131f1f744645b92ba919aac02893161d5b7633964","aea1e4628bba7c088db32011bc0c10cef5543824a882f5e7abc9d480ed900b61","30c53f37fc9649f10cd59a98f43a9358878d7be661ace991325756c2d69eaebe","c52f0a0c1ada7b92b2dc03e2d68cede5dd7d0c3d5f6564dfbf8bc23c5dce603c","4b3707ee5c02dfed26946147a17ad487d954cb648a352417f7305f3a8b0b091e","6983b0c80cc42153db35b6a4dc27c916c15ef43f07c5444754aa99d211e31f82","a09132cf4896ca4a291b30f07e0c2dfa420d4e71b5802f5d130123d20fe976d7","b223502c32cb7040a9ccc12fd30e4a5da2334cd9823920f33e449713eca4d435","4b3707ee5c02dfed26946147a17ad487d954cb648a352417f7305f3a8b0b091e","e3bfcb48c23f5e17495e0050deddcfae71a2ead167760132a4c68bca3ea19f3a","30c53f37fc9649f10cd59a98f43a9358878d7be661ace991325756c2d69eaebe","9e544e6dfc01035c7f28297d2e7d966a655ef1869f6ef4a8a613cf0810113bfc","4b3707ee5c02dfed26946147a17ad487d954cb648a352417f7305f3a8b0b091e","40a717506493221f42ea61f37615fe241827f16309699a4f00d397742db73cb4","c34fa140427f097c7bf3b5b428756fdc790df61bf7c5826008107e2e772f2d1c","aadb12cc5f8c3160aac0f9dc62daa4386c30386ca82223d283f5ce64b486e81e","7b00f5001a9cc73872657547eaf8d736a5ee7d86a82281099111cb56078c45bf","4b80774707d45b293e210ad51549d26e73e44ffafb80874d1a16c232cb47a28a","1423249be76c3ea1e9f13797229a3f813675589513a4b6989e0291e5efd2fed4","f896934a55f792e6e48635ad510db4f9c8cf62d59ccb9076e3ddaaa058eb2299","c9d0eb2d0e962a44edbff2d4ef0d1bba177815b032347c6ca687199569391c16","3e4e710ea86a17244a493dd90c8540cae7c9c14902d004a9a5af29c33ae956a0","44c0d53011f4b029ae82ccf4b1ae9f79b50756aa374e66f63772d661348ef5b3","cef52f035785e353e67a7589e972cebb9768a1c7dee644e2048f14124222bb20","af47ec042fb2136af93235422654247a3988acf6407b643cf9e4c82a6223938d","6fb1d409092b2c60d495bcd219fbd259432787812615d018d34e3095a9779661","86d7666fdb51a41a2eec4b622ebb4e386827f51525d1c0eb39f142a3043cb939","1140fa6ed9e972caad948398ac3f0c66f7f1c3eedac3aebf5666dbf1e08c9984",{"version":"81663ff17585d1c4a17b9aa2b458664ecf1c6391e267c889398cad61d37b0040","signature":"01fe9ce173f45a09b54f82b726959cff3d7af1f2e6596298f44b8476c86b1609"},"65e8f650d059a9f6866c8d21277eb75f109c179e6662635e31c73f7314a15b47","973c1d4a8e79b6956e68a922cb0a17d5a73e0f97b9e83ddd320cfd4734260fea","f7047e6358933c7805013ebb85901582f04a55fcc40e9502c32f97513bf78412","8cdcb4c784cb0572917238dcefe583009adbf7797d4c4886ad4039982b5a21fb","07516dc144bbd2ca6c851b2c633c0531f07a8481c1b751e53572b36b4972f463","d1970db5ca2441b07bf3573094ee46114427df80ec4931ace0bdcf77aba69fe5","6dbf76049317057ff152b0491fe3252229cb9443bab1e44802735492727377b9","74e1e40bd50b34196d8a33446cd965f40bb47e5805ffdb95b3eab8a554646752","7747dc051cafcc0b8577ee408f4daf15c9be9259d88c26f2209a96f9eb546a13","f9fb06981b946167276f069cf5bab3d9c731443e9c13fc7d0b92176e5a214343",{"version":"b885c790a4f3f1beb0e09d7fa97fe250c4a13d7ca92180e595d2c7c7ad6e5c28","signature":"01fe9ce173f45a09b54f82b726959cff3d7af1f2e6596298f44b8476c86b1609"},{"version":"d1d20f87f975a3aa646bfc3a3ad2e92c63c0ba0ee750a4888672ea95b26cc970","signature":"01fe9ce173f45a09b54f82b726959cff3d7af1f2e6596298f44b8476c86b1609"},{"version":"59af31c3bbe3a06bd0939a09b7005b28964e2965d3f689f18e3c4eb3134afd45","signature":"cb1e6ba186da71055d2f6caf7a39125a8a4037e52ba9bb93186805ac4f509aca"},{"version":"4f49015b77c7fe35daaf2b89eca2943e0984803e00afd832328d4eb105f8c8f5","signature":"3c8efa8e9645ead1e435495d44b35ddebc17f004ada835934dab1b92cb9b59b6"},{"version":"fa426c5e9f0c7214b9e21310f044ca81eb25140dacc1dbf84724bd6008a0017e","signature":"0cc6e5a587d4df8d4114597aea1c36dc2b96aeedf9723c21b5ca7af97c16fa61"},{"version":"bf5d835b23a254e2f21f3b2a8d02504739f5f06f6fb957b8e851d9ea0b87ded0","signature":"b16f5a4e537eadbbf83dd27af4be91487d5870105bd733d3adca9509af620148"},{"version":"ea5b38c298ce08bae20be60938e0719918d96aa9817dc037a60c951bf6425fd3","signature":"e7d5a49ab2bc5dbc7ca62e8864ac27943b3730bfad2edab3b779d9e854a027e9"},{"version":"a91b3fd4b3fe11073176b237083ff9889a0f3889925809a414fa232ec11acd08","signature":"ac0a53833caa5539e428bcc74f2e7fd12b70658401ac64dcca932ef5075a131f"},{"version":"8e114a6e59773df9747822fbd19f9db6af0b3ec399c908cca4b7f75fd2a8a6f8","signature":"01fe9ce173f45a09b54f82b726959cff3d7af1f2e6596298f44b8476c86b1609"},"3793b3c429626f29cee5acbc1bd7ebd20dcff7f8e8b34e05e5fe73850944ad91","89a26c835c143998a3155eedd1b997fd3d5e319200db92d76970f4b82b52f785",{"version":"fed576c57aa64fd36c153f5d9257f687dcd5fff21f33103c9f6685d9b63520c4","signature":"01fe9ce173f45a09b54f82b726959cff3d7af1f2e6596298f44b8476c86b1609"},"71336d2b229dfe87d375349ad48e56b50497bbe016aa6c5f5ab474c332a47fc4","b3d64e107af520235489c6ae5f27c4ed2d5b1e20bf14400a318459319372fb92","f570553cc117a5b10246f1baa14980d501e86fe29a3e3eb92a4ebc8bb5b586fb","b8a7c792da78d7c358243bc909f2386ded97ee47397aad6fbee8b81cc139e916","fbffe3cd9ee84ff85c569c2099baa96d7795df06c22940c10545488dd1a6fa96","ac02c5780d20a8bdcf91bec4a7d7f67c6ce3027cf25e1ffbc46780c379e499f4",{"version":"d20cbef7830eb4e327bf0e3693940ed8fc53bdf3e7166a90ff60b7fcd2acdee0","signature":"366a59a451462d2e3a0ed38fc2751207da1a81af2d78459d5e3b8d6910915c5d"},"89c67a901ab5e00abb6ae1ca5c97ab9da40d2bdef92413d730e8ada3da2449ab","b84bf8850597b6296f984612ea2775f6c17a51056c78dd05e037d7c5cb1b5c84","1d5613198f43052f404ec0d41155a8a33d6ec11ca3f7c3762422b123a3d79912","d65ee52c5f6a97afc1182e45dd4c0306a4b23935cd959162af0c45f95fbb6506","716c3c72272c620c83b73b7f3331e591b245dd1963a3f56b890202dc35e4a922","e929970d3b5f26baa81520defcb14d5736b906bd97c1944117c0b701774fe6b9","039c083e305f3bd6d2a1a79fadefa34e309ffa714a5b6d28d5e466176409fe32","908563083b6bc71fa2c9d13cdf89642cfc2bb2e25bf7ac0c5075c6b7ec0538e8","949ad82b645e715938818b7e88a461b0f449436248cfaf11041e194dcbe55df5","dd51bfc79ecaf436d787354b727c38477d7668799f537ce52c304ef7b7386b44","e2c3158e8c5b09e261905bb377ed06562ace98b9365e327544c925d72980ab95",{"version":"6873402982dc22d2d4435250816d960d1e83f3b33d368a3d172de4267f936591","impliedFormat":99},{"version":"35edf813ed85141ce1d820bcbbde57af69c2c5f295ac4ef3ea227948325e2f83","signature":"01fe9ce173f45a09b54f82b726959cff3d7af1f2e6596298f44b8476c86b1609"},"989ef2ce7e7d2b5fb7cb27c624b244ca3212adb649454146293af2dd3f47faec","6a6cbaccf66ec3a6ca2e2011da79a56aeef182f896d668d180372d03a4f15c74","8f0ff0f7f53aa0d040927159e547d2e201d6bf5bf80a9eccbf49b61fcf102f65","c4914ffabcf525b9bb8a93deb96740f8472b0f1657e17e8a674ecbf8ef6daa40","f81feb8c38d8e187025bbfd52bb52cbf250a736fd38570372ae9bbb5ee3e35d9","ba233f0f876ade2fb846230915b0f2e2cd7f2f9c850d0ae5031240b90adc9320","0800cf2618838a7259300ad750a6082625acceab6ae570f3cc86b894fdd8ac2e","82c7ebad97b9e7ea28d09327522976affdf6137d903127b3224943519fdbbeaf","638c696aee97d0a7c2c56599043f24d53e740439da60dc0d1c2656171fad84c8","a823842f755ebb9a5f53f17a1bf58af08e82d025489a738b294ccfe4cdb64f90","43ec53da0e417894fdae2f84ca2861ee785f9cc8054b1355cad458e32e758790","ee1712609c030f93f0193104a41e472b3b17838da6067fa7805478e81332b98c","20d70bea5782e468fb89759369709d156829e090b355915ff28730a506e1e2a1","d3b610f24e0d08a1079f42b995138866ce6f2681ed0b2d435e134d469cb8f67b","efc09ca98d6b6e72bc69f8bbdbfcdb01c16f24ee4fcda39e3add30a3416166dd","ce8f04f229a40d31b90a740e7b74aca3ed76b03b7f1585ca1323f1b80d6f7006","dbe95686b188aeb09b4f3041b2509d5cf543314b57e725372f351eaea25971ee","976c05f92fabbf396a18651da480b6b2d23195b3c9b5b6f37f27c1b5fb286b54","aa6aad25b2e56284705f8594a304ac31b2e74e6db9f67209b149c5882e4b89dd","e05a47f523b7792fa063e687e327bac6f00011da01c032003225c815eca79497","ae0ba394411502f58ba43cfffbbe5d12dbd312c833b3969b16bf1a94ec90e530","d15e9b66b65a440157551cde22c910c2e2b186e6c7f44324e895f291d629117c",{"version":"ada4a6a5564bb66bc51c9e13bd452d47027a0f18b20d05e4c532d6bdf705f5b2","signature":"380904696347ace20b4c234ebc25319249f3a9bb99b04a3398156c41d8ea6365"},"084e034e45167d15d154b2e7811a281d94885c71b3b01d4769a44f55c0f6f952",{"version":"111e12ab1b89cb2cdad21ca59ea9de523ac39bd79490149cea43d1f91697b8e0","signature":"01fe9ce173f45a09b54f82b726959cff3d7af1f2e6596298f44b8476c86b1609"},"71860f1efab600e8405761b577df7e870dbfb8415d7899696d3b2128fd00a931","474f6272ee75a64d1e98271ae5b83cf4862adf6c141726433296b463a1c130a3","fe5a46c46f3dea2fb31b76edc5fdc14e3ee051bf4fa95cdf32c97d1b9518ff53","e10eafaac3c15258ed78fbef15a3f8692196f971d53f137e60315e5adf7459a3","39492b021fb0e38a2277b43b075781b34e6f4f189ea5f53ed082372ea96c1dcb","906e1e7266f5495194c95064d02829511c0fced58fb5811180488d7158b3ccb0","4c09210b68020d99169d29a1185e9ce81943bd1e313b703546f652ca02b873ec","95c9f7b62d0b74f41b6f1430b4236e8999b46853d380187bd93df3377aa01048","ecb2768de4faee213a791aa8de3dc951e150ee6c2b7969c33eabe2fadf557caf",{"version":"7d23e15d7633ee7073067050aacd89c45c7259d21e60c0a990782fdbc1caa4e4","signature":"27d7e240e20b2da0070ab6469a8d6400672264db6d8d04470c8e3acd3e233ac6"},"f45cfe5a4f8c43c95c9c11d87a58b105cd216f1ae3f59ec2a1aaa598a9cf52c6","68020d3d42f720106a089dca5c168cf04e5d349089fbc191c36f9cccabcb3c3a","94e34c7d90e04bd1de26495f460aaf1f00e7bb004ffec8797f617ea29ae837a5","7f863c4a7c54be9ac30b0575f918420a38ff2edde87b808e59c4c8902e2fe93e","0043c0a8c6d450739b60f14cf684806ae4241c91f3fca50f172665dd9adfde90","9ec2d2c25f1f8befa23ba16b01c401d73da979dcdda8532aa0600f37edbf743b","7232de6a2a92489a070d7701bc60ae747fb40107563e87eb59096c540c4c40ad","1103186962bccc2e2100b1135a8e288f614bce6617ed8a85170e06a3b69cebf8","16d86d734dd6e6ff0ddc33e0e599da535de9bbc5b63abe3b35050f41c00892a3","cd8ffeab689cf8a4b893cdf152bae8be5526afaa8c2eb4a0819dd3db60e14602","7d9e7e04b576f76dfafbb03eccc7781d7b545450be3b4df7015369a4901090a7","3f08732c3a69da9b77f7e626163bb2b84afad459b844e629e01282312c53d82d","de936b6eabc0ac5efe7656dcadf07e5b3baff23ac51c8ef8d301fe5f0647dcbb","44ee0be70278c636f36b993c239c08f0f01c71e16d083b0be9a70f9a66efff09","1b8cacc68f25d13d3bfff13b9dbf773d52e40dca350697b0c19ceb0bd913c22e","ddfbc2e8c681833765607dcbc38a0fa7c768ed7a7d82cfaab528a049b3a55642","05dea9aecec291ee09237f125cc938c48eb38938eef3b05f18e09da94003d2e7",{"version":"d2c13e6de6161ee47ad9edd275f03910121f6d3488a8d36a63e16c6635634bd8","affectsGlobalScope":true},{"version":"ea8a445ae856033c4027b52f3ed2a225ad841dde1248b9d2f58283671dce372d","affectsGlobalScope":true},"73bd4ebe9409ec75ebb1a8f91f1564b92ee28695c995ea15095fc51e830405ab",{"version":"6c7176368037af28cb72f2392010fa1cef295d6d6744bca8cfb54985f3a18c3e","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true,"impliedFormat":1},{"version":"437e20f2ba32abaeb7985e0afe0002de1917bc74e949ba585e49feba65da6ca1","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"98cffbf06d6bab333473c70a893770dbe990783904002c4f1a960447b4b53dca","affectsGlobalScope":true,"impliedFormat":1},{"version":"3af97acf03cc97de58a3a4bc91f8f616408099bc4233f6d0852e72a8ffb91ac9","affectsGlobalScope":true,"impliedFormat":1},{"version":"808069bba06b6768b62fd22429b53362e7af342da4a236ed2d2e1c89fcca3b4a","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"b52476feb4a0cbcb25e5931b930fc73cb6643fb1a5060bf8a3dda0eeae5b4b68","affectsGlobalScope":true,"impliedFormat":1},{"version":"f9501cc13ce624c72b61f12b3963e84fad210fbdf0ffbc4590e08460a3f04eba","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0fa06ada475b910e2106c98c68b10483dc8811d0c14a8a8dd36efb2672485b29","impliedFormat":1},{"version":"33e5e9aba62c3193d10d1d33ae1fa75c46a1171cf76fef750777377d53b0303f","impliedFormat":1},{"version":"2b06b93fd01bcd49d1a6bd1f9b65ddcae6480b9a86e9061634d6f8e354c1468f","impliedFormat":1},{"version":"6a0cd27e5dc2cfbe039e731cf879d12b0e2dded06d1b1dedad07f7712de0d7f4","affectsGlobalScope":true,"impliedFormat":1},{"version":"13f5c844119c43e51ce777c509267f14d6aaf31eafb2c2b002ca35584cd13b29","impliedFormat":1},{"version":"e60477649d6ad21542bd2dc7e3d9ff6853d0797ba9f689ba2f6653818999c264","impliedFormat":1},{"version":"c2510f124c0293ab80b1777c44d80f812b75612f297b9857406468c0f4dafe29","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"4c829ab315f57c5442c6667b53769975acbf92003a66aef19bce151987675bd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"b2ade7657e2db96d18315694789eff2ddd3d8aea7215b181f8a0b303277cc579","impliedFormat":1},{"version":"9855e02d837744303391e5623a531734443a5f8e6e8755e018c41d63ad797db2","impliedFormat":1},{"version":"4d631b81fa2f07a0e63a9a143d6a82c25c5f051298651a9b69176ba28930756d","impliedFormat":1},{"version":"836a356aae992ff3c28a0212e3eabcb76dd4b0cc06bcb9607aeef560661b860d","impliedFormat":1},{"version":"1e0d1f8b0adfa0b0330e028c7941b5a98c08b600efe7f14d2d2a00854fb2f393","impliedFormat":1},{"version":"41670ee38943d9cbb4924e436f56fc19ee94232bc96108562de1a734af20dc2c","affectsGlobalScope":true,"impliedFormat":1},{"version":"c906fb15bd2aabc9ed1e3f44eb6a8661199d6c320b3aa196b826121552cb3695","impliedFormat":1},{"version":"22295e8103f1d6d8ea4b5d6211e43421fe4564e34d0dd8e09e520e452d89e659","impliedFormat":1},{"version":"58647d85d0f722a1ce9de50955df60a7489f0593bf1a7015521efe901c06d770","impliedFormat":1},{"version":"6b4e081d55ac24fc8a4631d5dd77fe249fa25900abd7d046abb87d90e3b45645","impliedFormat":1},{"version":"a10f0e1854f3316d7ee437b79649e5a6ae3ae14ffe6322b02d4987071a95362e","impliedFormat":1},{"version":"e208f73ef6a980104304b0d2ca5f6bf1b85de6009d2c7e404028b875020fa8f2","impliedFormat":1},{"version":"d163b6bc2372b4f07260747cbc6c0a6405ab3fbcea3852305e98ac43ca59f5bc","impliedFormat":1},{"version":"e6fa9ad47c5f71ff733744a029d1dc472c618de53804eae08ffc243b936f87ff","affectsGlobalScope":true,"impliedFormat":1},{"version":"a6f137d651076822d4fe884287e68fd61785a0d3d1fdb250a5059b691fa897db","impliedFormat":1},{"version":"24826ed94a78d5c64bd857570fdbd96229ad41b5cb654c08d75a9845e3ab7dde","impliedFormat":1},{"version":"8b479a130ccb62e98f11f136d3ac80f2984fdc07616516d29881f3061f2dd472","impliedFormat":1},{"version":"928af3d90454bf656a52a48679f199f64c1435247d6189d1caf4c68f2eaf921f","affectsGlobalScope":true,"impliedFormat":1},{"version":"bceb58df66ab8fb00170df20cd813978c5ab84be1d285710c4eb005d8e9d8efb","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f16a7e4deafa527ed9995a772bb380eb7d3c2c0fd4ae178c5263ed18394db2c","impliedFormat":1},{"version":"933921f0bb0ec12ef45d1062a1fc0f27635318f4d294e4d99de9a5493e618ca2","impliedFormat":1},{"version":"71a0f3ad612c123b57239a7749770017ecfe6b66411488000aba83e4546fde25","impliedFormat":1},{"version":"77fbe5eecb6fac4b6242bbf6eebfc43e98ce5ccba8fa44e0ef6a95c945ff4d98","impliedFormat":1},{"version":"4f9d8ca0c417b67b69eeb54c7ca1bedd7b56034bb9bfd27c5d4f3bc4692daca7","impliedFormat":1},{"version":"814118df420c4e38fe5ae1b9a3bafb6e9c2aa40838e528cde908381867be6466","impliedFormat":1},{"version":"a3fc63c0d7b031693f665f5494412ba4b551fe644ededccc0ab5922401079c95","impliedFormat":1},{"version":"80523c00b8544a2000ae0143e4a90a00b47f99823eb7926c1e03c494216fc363","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee","impliedFormat":1},{"version":"746911b62b329587939560deb5c036aca48aece03147b021fa680223255d5183","affectsGlobalScope":true,"impliedFormat":1},{"version":"18fd40412d102c5564136f29735e5d1c3b455b8a37f920da79561f1fde068208","impliedFormat":1},{"version":"c8d3e5a18ba35629954e48c4cc8f11dc88224650067a172685c736b27a34a4dc","impliedFormat":1},{"version":"f0be1b8078cd549d91f37c30c222c2a187ac1cf981d994fb476a1adc61387b14","affectsGlobalScope":true,"impliedFormat":1},{"version":"0aaed1d72199b01234152f7a60046bc947f1f37d78d182e9ae09c4289e06a592","impliedFormat":1},{"version":"2b55d426ff2b9087485e52ac4bc7cfafe1dc420fc76dad926cd46526567c501a","impliedFormat":1},{"version":"66ba1b2c3e3a3644a1011cd530fb444a96b1b2dfe2f5e837a002d41a1a799e60","impliedFormat":1},{"version":"7e514f5b852fdbc166b539fdd1f4e9114f29911592a5eb10a94bb3a13ccac3c4","impliedFormat":1},{"version":"5b7aa3c4c1a5d81b411e8cb302b45507fea9358d3569196b27eb1a27ae3a90ef","affectsGlobalScope":true,"impliedFormat":1},{"version":"5987a903da92c7462e0b35704ce7da94d7fdc4b89a984871c0e2b87a8aae9e69","affectsGlobalScope":true,"impliedFormat":1},{"version":"ea08a0345023ade2b47fbff5a76d0d0ed8bff10bc9d22b83f40858a8e941501c","impliedFormat":1},{"version":"47613031a5a31510831304405af561b0ffaedb734437c595256bb61a90f9311b","impliedFormat":1},{"version":"ae062ce7d9510060c5d7e7952ae379224fb3f8f2dd74e88959878af2057c143b","impliedFormat":1},{"version":"8a1a0d0a4a06a8d278947fcb66bf684f117bf147f89b06e50662d79a53be3e9f","affectsGlobalScope":true,"impliedFormat":1},{"version":"358765d5ea8afd285d4fd1532e78b88273f18cb3f87403a9b16fef61ac9fdcfe","impliedFormat":1},{"version":"9f55299850d4f0921e79b6bf344b47c420ce0f507b9dcf593e532b09ea7eeea1","impliedFormat":1},{"version":"151ff381ef9ff8da2da9b9663ebf657eac35c4c9a19183420c05728f31a6761d","impliedFormat":1},{"version":"ee70b8037ecdf0de6c04f35277f253663a536d7e38f1539d270e4e916d225a3f","affectsGlobalScope":true,"impliedFormat":1},{"version":"a660aa95476042d3fdcc1343cf6bb8fdf24772d31712b1db321c5a4dcc325434","impliedFormat":1},{"version":"035d0934d304483f07148427a5bd5b98ac265dae914a6b49749fe23fbd893ec7","impliedFormat":99},{"version":"e2ed5b81cbed3a511b21a18ab2539e79ac1f4bc1d1d28f8d35d8104caa3b429f","impliedFormat":99},{"version":"b8caba62c0d2ef625f31cbb4fde09d851251af2551086ccf068611b0a69efd81","affectsGlobalScope":true,"impliedFormat":1},{"version":"402e5c534fb2b85fa771170595db3ac0dd532112c8fa44fc23f233bc6967488b","impliedFormat":1},{"version":"52dcc257df5119fb66d864625112ce5033ac51a4c2afe376a0b299d2f7f76e4a","impliedFormat":1},{"version":"e5bab5f871ef708d52d47b3e5d0aa72a08ee7a152f33931d9a60809711a2a9a3","impliedFormat":1},{"version":"e16dc2a81595736024a206c7d5c8a39bfe2e6039208ef29981d0d95434ba8fcf","impliedFormat":1},{"version":"cc4a4903fb698ca1d961d4c10dce658aa3a479faf40509d526f122b044eaf6a4","impliedFormat":1},{"version":"19ee8416e6473ed6c7adb868fa796b5653cf0fa2a337658e677eaa0d134388c3","impliedFormat":1},{"version":"1328ab4e442614b28cdb3d4b414cf68325c0da0dca07287a338d0654b7a00261","impliedFormat":1},{"version":"a039dc21f045919f3cbee2ec13812cc6cc3eebc99dae4be00973230f468d19a6","impliedFormat":1},{"version":"3fbe57af01460e49dcd29df55d6931e1672bc6f1be0fb073d11410bc16f9037d","impliedFormat":1},{"version":"f760be449e8562ec5c09bb5187e8e1eabf3c113c0c58cddda53ef8c69f3e2131","impliedFormat":1},{"version":"44325ed13294fce6ab825b82947bbeed2611db7dad9d9135260192f375e5a189","impliedFormat":1},{"version":"e392e8fb5b514eafc585601c1d781485aa6dd6a320e75daf1064a4c6918a1b45","impliedFormat":1},{"version":"46e4a36e8ddbdfb4e7330e11c81c970dc8b218611df9183d39c41c5f8c653b55","impliedFormat":1},{"version":"370bde134aa8c2abc926d0e99d3a4d5d5dba65c6ee65459137e4f02670cbf841","impliedFormat":1},{"version":"6332f565867cf4a740a70e30f31cefba37ef7cebcf74f22eab8d744fde6d193e","impliedFormat":1},{"version":"2977b7884aedc895a1d0c9c210c7cf3272c29d6959a08a6fa3ff71e0aff08175","impliedFormat":1},{"version":"17f2922d41ddd032830a91371c948cd9ce903b35c95adca72271a54584f19b0b","impliedFormat":1},{"version":"3eed76ede2a1a14d7c9bb0a642041282dcc264811139d3dd275c9fe14efc9840","impliedFormat":1},{"version":"e3cf0611709328b449ec13f8c436712d62003620ce480139fae46ce001c2ee9f","impliedFormat":1},{"version":"8d369483f0c2b9ee388129cfdb6a43bc8112b377e86a41884bd06e19ce04f4c1","impliedFormat":99},{"version":"4ec16d7a4e366c06a4573d299e15fe6207fc080f41beac5da06f4af33ea9761e","impliedFormat":1},{"version":"bf6402a3cfff440801c3ea5835f08784aac18087016534b48741adbcee931921","impliedFormat":1},{"version":"71b110829b8f5e7653352a132544ece2b9a10e93ba1c77453187673bd46f13ee","impliedFormat":1},{"version":"7c0ace9de3109ecdd8ad808dd40a052b82681786c66bb0bff6d848c1fc56a7c4","impliedFormat":1},{"version":"1223780c318ef42fd33ac772996335ed92d57cf7c0fc73178acab5e154971aab","impliedFormat":1},{"version":"0d04cbe88c8a25c2debd2eef03ec5674563e23ca9323fa82ede3577822653bd2","impliedFormat":1},{"version":"aaa70439f135c3fa0a34313de49e94cae3db954c8b8d6af0d56a46c998c2923f","impliedFormat":1},{"version":"4ace083580c1b77eb8ddf4ea915cde605af1a96e426c4c04b897feef1acdb534","impliedFormat":1},{"version":"daf07c1ca8ccfb21ad958833546a4f414c418fe096dcebdbb90b02e12aa5c3a2","impliedFormat":1},{"version":"89ac5224feeb2de76fc52fc2a91c5f6448a98dbe4e8d726ecb1730fa64cd2d30","impliedFormat":1},{"version":"7feb39ba69b3fc6d55faca4f91f06d77d15ffedd3931b0ef7740e8b6fd488b15","impliedFormat":1},{"version":"acf00cfabe8c4de18bea655754ea39c4d04140257556bbf283255b695d00e36f","impliedFormat":1},{"version":"39b70d5f131fcfdeba404ee63aba25f26d8376a73bacd8275fb5a9f06219ac77","impliedFormat":1},{"version":"cdae26c737cf4534eeec210e42eab2d5f0c3855240d8dde3be4aee9194e4e781","impliedFormat":1},{"version":"5aa0c50083d0d9a423a46afaef78c7f42420759cfa038ad40e8b9e6cafc38831","impliedFormat":1},{"version":"10d6a49a99a593678ba4ea6073d53d005adfc383df24a9e93f86bf47de6ed857","impliedFormat":1},{"version":"1b7ea32849a7982047c2e5d372300a4c92338683864c9ab0f5bbd1acadae83a3","impliedFormat":1},{"version":"224083e6fcec1d300229da3d1dafc678c642863996cbfed7290df20954435a55","impliedFormat":1},{"version":"4248ac3167b1a1ce199fda9307abc314b3132527aeb94ec30dbcfe4c6a417b1b","impliedFormat":1},{"version":"633cb8c2c51c550a63bda0e3dec0ad5fa1346d1682111917ad4bc7005d496d8c","impliedFormat":1},{"version":"ca055d26105248f745ea6259b4c498ebeed18c9b772e7f2b3a16f50226ff9078","impliedFormat":1},{"version":"ea6b2badb951d6dfa24bb7d7eb733327e5f9a15fc994d6dc1c54b2c7a83b6a0b","impliedFormat":1},{"version":"03fdf8dba650d830388b9985750d770dd435f95634717f41cea814863a9ac98b","impliedFormat":1},{"version":"6fd08e3ef1568cd0dc735c9015f6765e25143a4a0331d004a29c51b50eec402a","impliedFormat":1},{"version":"2e988cd4d24edac4936449630581c79686c8adac10357eb0cdb410c24f47c7f0","impliedFormat":1},{"version":"b813f62a37886ed986b0f6f8c5bf323b3fcae32c1952b71d75741e74ea9353cf","impliedFormat":1},{"version":"44a1a722038365972b1b52841e1132785bf5d75839dbc6cc1339f2d36f8507a1","impliedFormat":1},{"version":"83fe1053701101ac6d25364696fea50d2ceb2f81d1456bc11e682a20aaeac52e","impliedFormat":1},{"version":"4f228cb2089a5a135a1a8cefe612d5aebcef8258f7dbe3b7c4dad4e26a81ec08","impliedFormat":1},{"version":"7870becb94cbc11d2d01b77c4422589adcba4d8e59f726246d40cd0d129784d8","affectsGlobalScope":true,"impliedFormat":1},{"version":"f70b8328a15ca1d10b1436b691e134a49bc30dcf3183a69bfaa7ba77e1b78ecd","impliedFormat":1},{"version":"d9030fc0c412a31e7e13d189b9ad032b5177c20217add0f24fd3fff0cf272882","impliedFormat":99},{"version":"2be2227c3810dfd84e46674fd33b8d09a4a28ad9cb633ed536effd411665ea1e","impliedFormat":99},{"version":"7f9c8c4fd31e6e0f137ded52f026f97934abcc4624db1c9c8120b91a170798e0","impliedFormat":1},{"version":"957a44f864ab3c182edc747428e8eec1765257deee7fac86c1147eeac897d832","impliedFormat":1},{"version":"3feec212c0aeb91e5a6e62caaf9f128954590210f8c302910ea377c088f6b61a","impliedFormat":99},{"version":"d27eadfc7a0c340fbbb62294e70eb5cf27751e1dcf47ee688ca38dd64d15502c","impliedFormat":99},{"version":"86d818ada2f5f0cfffca153af94205b67ba50f8e36524a413d66652f34ef19af","impliedFormat":99},{"version":"40afd49a15d0bafef682b42664ff21c274e02dcc60052f2df85dd53c70d9394f","impliedFormat":99},{"version":"5a5b1dd91662e93efae28d985e0e44d10f6a7e3c2c2ae8abc29bcfc406cb5310","impliedFormat":99},{"version":"66d0a61b3b0df6c9c2eb09dbe26e3c2aef71d9043fed17cd56de6669cb706325","impliedFormat":99},{"version":"f6692c3a1847d846bc4b7a690ef2ba096b2ca56bea5818f073eb8193ce33b5e1","impliedFormat":99},{"version":"1e4d27cf43aa16d164e958a220fee3c225b9dd146b1912cbc12083263f157ca9","impliedFormat":99},{"version":"a46147f499d4246998d1e44b43beecd2ee04c0a330c35863eaeccc827a737fdf","impliedFormat":1},{"version":"390140c96dcaf0831d24b5408d19af017e3a8f150fed140791d976ac20dd2da7","impliedFormat":99},{"version":"886c87489e99cbe6af5b1d83f147b04f96a2ae499d4302de7f9e4478cb93ccca","impliedFormat":99},{"version":"13e7c1f8ddda39d034935e667f3a314ec8b89b8be18fbd4cd987ea4312b4221f","impliedFormat":99},{"version":"370a3bbb8117e32fd7ae37d318e28cf63251013fe015c5dd382599614a3d5d59","impliedFormat":99},{"version":"daf09fb2571ee9e9251b08237852ed26b67257cb7997358935608f63f9fd2ecb","impliedFormat":99},{"version":"768fd34f23de8dc5f5df6cd45f044bb4193105b5964e4ef734dbfc1a1f8e6223","impliedFormat":1},{"version":"dc18b19797fbc286f2bd51e14eca66fb46bd07c0c567cb40fc04e6e805533850","impliedFormat":99},{"version":"5903ab9ed38b4d4f878e507f76020f75b7fc2285515ebdb7596393ce196eee2f","impliedFormat":99},{"version":"58395463e3fd8b466d5801cd73027f82bbf12e3d90cb4b27538e61ee9ff3427c","impliedFormat":99},{"version":"4d4804f5da06e47254d253a07e82d400c55964ea097016753dbd4372ce0eaab0","impliedFormat":99},{"version":"cf76eeea2b4ec3fe26520cd129cfc32352d1ddb22b6d4ff0c6a709656a4b1b37","impliedFormat":1},{"version":"fea0cb28540b473977c722853998d39d28575fa12e31b3371fcf1f324e3a9fb7","impliedFormat":1},{"version":"ee4ee9bf6c6d276343e7f0bce3a5374800eb4ec6b2d7c70fab6ae3ef840d9777","impliedFormat":1},{"version":"571ba264349552a1111ac0d6a5ed580a41c390aac43a70546c3a7374c77faa71","impliedFormat":1},"06f5c2408e959ccebcbef2989bce4a528a531aeddb4f3c7fb2324c03a00b9b19"],"root":[89,107,[124,146],[1401,1421],[1425,1437],[1445,1448],1450,1451,[1453,1471],[1546,1548],1550,1551,[1566,1612],[2076,2081],2084,[2100,2104],[2186,2211],2226,2227,2229,2230,2239,2240,[2243,2462],2651],"options":{"allowImportingTsExtensions":true,"composite":true,"esModuleInterop":true,"jsx":1,"jsxImportSource":"vue","module":99,"noImplicitThis":true,"skipLibCheck":true,"strict":true,"target":99,"useDefineForClassFields":true,"verbatimModuleSyntax":true},"referencedMap":[[2460,1],[2459,2],[89,3],[92,4],[91,5],[1035,6],[1029,5],[1033,6],[1032,7],[1028,6],[1027,5],[1036,8],[1034,7],[1030,7],[1031,7],[166,9],[167,9],[168,9],[169,9],[170,9],[171,9],[172,9],[173,9],[174,9],[175,9],[176,9],[177,9],[178,9],[179,9],[180,9],[181,9],[182,9],[183,9],[184,9],[185,9],[186,9],[187,9],[188,9],[189,9],[190,9],[191,9],[192,9],[193,9],[194,9],[195,9],[196,9],[197,9],[198,9],[199,9],[200,9],[201,9],[202,9],[203,9],[204,9],[205,9],[206,9],[207,9],[208,9],[209,9],[210,9],[211,9],[212,9],[213,9],[214,9],[215,9],[216,9],[217,9],[218,9],[219,9],[220,9],[221,9],[222,9],[223,9],[224,9],[225,9],[226,9],[227,9],[228,9],[229,9],[230,9],[231,9],[232,9],[233,9],[234,9],[235,9],[236,9],[237,9],[238,9],[239,9],[240,9],[241,9],[242,9],[243,9],[244,9],[245,9],[246,9],[247,9],[248,9],[249,9],[250,9],[251,9],[252,9],[253,9],[254,9],[255,9],[256,9],[257,9],[258,9],[259,9],[260,9],[261,9],[262,9],[263,9],[264,9],[265,9],[266,9],[267,9],[268,9],[269,9],[270,9],[271,9],[272,9],[273,9],[274,9],[275,9],[276,9],[277,9],[278,9],[279,9],[280,9],[281,9],[282,9],[283,9],[284,9],[285,9],[286,9],[287,9],[288,9],[289,9],[290,9],[291,9],[292,9],[293,9],[294,9],[295,9],[296,9],[297,9],[298,9],[299,9],[300,9],[301,9],[302,9],[303,9],[304,9],[305,9],[306,9],[307,9],[459,10],[308,9],[309,9],[310,9],[311,9],[312,9],[313,9],[314,9],[315,9],[316,9],[317,9],[318,9],[319,9],[320,9],[321,9],[322,9],[323,9],[324,9],[325,9],[326,9],[327,9],[328,9],[329,9],[330,9],[331,9],[332,9],[333,9],[334,9],[335,9],[336,9],[337,9],[338,9],[339,9],[340,9],[341,9],[342,9],[343,9],[344,9],[345,9],[346,9],[347,9],[348,9],[349,9],[350,9],[351,9],[352,9],[353,9],[354,9],[355,9],[356,9],[357,9],[358,9],[359,9],[360,9],[361,9],[362,9],[363,9],[364,9],[365,9],[366,9],[367,9],[368,9],[369,9],[370,9],[371,9],[372,9],[373,9],[374,9],[375,9],[376,9],[377,9],[378,9],[379,9],[380,9],[381,9],[382,9],[383,9],[384,9],[385,9],[386,9],[387,9],[388,9],[389,9],[390,9],[391,9],[392,9],[393,9],[394,9],[395,9],[396,9],[397,9],[398,9],[399,9],[400,9],[401,9],[402,9],[403,9],[404,9],[405,9],[406,9],[407,9],[408,9],[409,9],[410,9],[411,9],[412,9],[413,9],[414,9],[415,9],[416,9],[417,9],[418,9],[419,9],[420,9],[421,9],[422,9],[423,9],[424,9],[425,9],[426,9],[427,9],[428,9],[429,9],[430,9],[431,9],[432,9],[433,9],[434,9],[435,9],[436,9],[437,9],[438,9],[439,9],[440,9],[441,9],[442,9],[443,9],[444,9],[445,9],[446,9],[447,9],[448,9],[449,9],[450,9],[451,9],[452,9],[453,9],[454,9],[455,9],[456,9],[457,9],[458,9],[460,11],[986,12],[988,13],[985,5],[987,5],[2241,9],[1931,14],[1927,15],[1914,5],[1930,16],[1923,17],[1921,18],[1920,18],[1919,17],[1916,18],[1917,17],[1925,19],[1918,18],[1915,17],[1922,18],[1928,20],[1929,21],[1924,22],[1926,18],[826,23],[822,24],[809,5],[825,25],[818,26],[816,27],[815,27],[814,26],[811,27],[812,26],[820,28],[813,27],[810,26],[817,27],[823,29],[824,30],[819,31],[821,27],[2098,32],[2095,33],[2094,34],[2085,5],[2086,5],[2088,35],[2087,5],[2097,36],[2089,34],[2090,37],[2093,38],[2091,5],[2092,34],[2096,5],[1639,39],[1613,9],[1614,40],[1615,9],[1616,9],[1617,41],[2017,42],[1635,5],[1638,5],[1636,43],[1991,44],[1990,45],[1989,5],[1973,46],[1972,9],[1975,47],[1976,48],[1974,49],[1978,50],[1977,5],[1981,51],[1982,52],[1980,51],[1979,5],[2011,53],[2010,9],[1983,9],[2013,54],[1993,55],[1992,9],[1984,5],[1986,56],[1985,5],[1988,57],[1987,49],[1995,9],[2009,58],[2008,59],[2007,9],[1994,9],[1998,9],[2002,60],[2000,61],[2001,9],[1999,9],[1997,62],[1996,5],[2004,63],[2003,5],[2006,64],[2005,9],[1955,5],[2015,65],[2014,9],[2016,66],[1964,67],[1963,68],[1962,69],[1968,70],[1965,9],[1966,71],[1967,71],[1969,72],[1970,73],[1961,74],[1971,75],[2012,5],[1825,76],[1760,77],[1761,78],[1762,79],[1763,80],[1764,81],[1765,82],[1766,83],[1767,84],[1768,85],[1769,86],[1770,87],[1771,88],[1772,89],[1773,90],[1774,91],[1775,92],[1815,93],[1776,94],[1777,95],[1778,96],[1779,97],[1780,98],[1781,99],[1782,100],[1783,101],[1784,102],[1785,103],[1786,104],[1787,105],[1788,106],[1789,107],[1790,108],[1791,109],[1792,110],[1793,111],[1794,112],[1795,113],[1796,114],[1797,115],[1798,116],[1799,117],[1800,118],[1801,119],[1802,120],[1803,121],[1804,122],[1805,123],[1806,124],[1807,125],[1808,126],[1809,127],[1810,128],[1811,129],[1812,130],[1813,131],[1814,132],[1824,133],[1749,5],[1755,134],[1757,135],[1759,136],[1816,137],[1817,136],[1818,136],[1819,138],[1823,139],[1820,136],[1821,136],[1822,136],[1826,140],[1827,141],[1828,142],[1829,142],[1830,143],[1831,142],[1832,142],[1833,144],[1834,142],[1835,145],[1836,145],[1837,145],[1838,146],[1839,145],[1840,147],[1841,142],[1842,145],[1843,143],[1844,146],[1845,142],[1846,142],[1847,143],[1848,146],[1849,146],[1850,143],[1851,142],[1852,148],[1853,149],[1854,143],[1855,143],[1856,145],[1857,142],[1858,142],[1859,143],[1860,142],[1877,150],[1861,142],[1862,141],[1863,141],[1864,141],[1865,145],[1866,145],[1867,146],[1868,146],[1869,143],[1870,141],[1871,141],[1872,151],[1873,152],[1874,142],[1875,141],[1876,153],[1913,154],[1751,76],[1883,155],[1878,156],[1879,156],[1880,156],[1881,157],[1882,158],[1754,159],[1753,159],[1758,148],[1884,160],[1752,76],[1888,161],[1885,162],[1886,162],[1887,163],[1889,141],[1756,164],[1890,145],[1891,146],[1892,5],[1893,5],[1894,5],[1895,5],[1896,5],[1897,5],[1912,165],[1898,5],[1899,5],[1900,5],[1901,5],[1902,5],[1903,5],[1904,5],[1905,5],[1906,5],[1907,5],[1908,5],[1909,5],[1910,5],[1911,5],[1933,166],[1934,167],[1935,168],[1939,166],[1940,169],[1941,170],[1747,171],[1746,172],[1750,173],[1748,174],[1936,175],[1937,176],[1938,177],[1942,178],[1948,179],[1943,9],[1944,9],[1945,180],[1946,181],[1947,180],[2225,182],[2222,183],[2221,184],[2212,5],[2213,5],[2215,185],[2214,5],[2224,186],[2216,184],[2217,187],[2220,188],[2218,5],[2219,184],[2223,5],[2567,5],[2148,5],[471,189],[472,189],[473,189],[474,189],[475,189],[476,189],[477,189],[478,189],[479,189],[480,189],[481,189],[482,189],[483,189],[484,189],[485,189],[486,189],[487,189],[488,189],[489,189],[490,189],[491,189],[492,189],[493,189],[494,189],[495,189],[496,189],[497,189],[498,189],[499,189],[500,189],[501,189],[502,189],[503,189],[504,189],[505,189],[506,189],[507,189],[508,189],[509,189],[510,189],[511,189],[512,189],[513,189],[514,189],[515,189],[516,189],[517,189],[518,189],[519,189],[520,189],[521,189],[522,189],[523,189],[524,189],[525,189],[526,189],[527,189],[528,189],[529,189],[530,189],[531,189],[532,189],[533,189],[534,189],[535,189],[536,189],[537,189],[538,189],[539,189],[540,189],[541,189],[542,189],[543,189],[544,189],[545,189],[546,189],[547,189],[548,189],[549,189],[550,189],[551,189],[552,189],[553,189],[554,189],[555,189],[556,189],[557,189],[558,189],[559,189],[560,189],[561,189],[562,189],[563,189],[564,189],[565,189],[566,189],[567,189],[775,190],[568,189],[569,189],[570,189],[571,189],[572,189],[573,189],[574,189],[575,189],[576,189],[577,189],[578,189],[579,189],[580,189],[581,189],[582,189],[583,189],[584,189],[585,189],[586,189],[587,189],[588,189],[589,189],[590,189],[591,189],[592,189],[593,189],[594,189],[595,189],[596,189],[597,189],[598,189],[599,189],[600,189],[601,189],[602,189],[603,189],[604,189],[605,189],[606,189],[607,189],[608,189],[609,189],[610,189],[611,189],[612,189],[613,189],[614,189],[615,189],[616,189],[617,189],[618,189],[619,189],[620,189],[621,189],[622,189],[623,189],[624,189],[625,189],[626,189],[627,189],[628,189],[629,189],[630,189],[631,189],[632,189],[633,189],[634,189],[635,189],[636,189],[637,189],[638,189],[639,189],[640,189],[641,189],[642,189],[643,189],[644,189],[645,189],[646,189],[647,189],[648,189],[649,189],[650,189],[651,189],[652,189],[653,189],[654,189],[655,189],[656,189],[657,189],[658,189],[659,189],[660,189],[661,189],[662,189],[663,189],[664,189],[665,189],[666,189],[667,189],[668,189],[669,189],[670,189],[671,189],[672,189],[673,189],[674,189],[675,189],[676,189],[677,189],[678,189],[679,189],[680,189],[681,189],[682,189],[683,189],[684,189],[685,189],[686,189],[687,189],[688,189],[689,189],[690,189],[691,189],[692,189],[693,189],[694,189],[695,189],[696,189],[697,189],[698,189],[699,189],[700,189],[701,189],[702,189],[703,189],[704,189],[705,189],[706,189],[707,189],[708,189],[709,189],[710,189],[711,189],[712,189],[713,189],[714,189],[715,189],[716,189],[717,189],[718,189],[719,189],[720,189],[721,189],[722,189],[723,189],[724,189],[725,189],[726,189],[727,189],[728,189],[729,189],[730,189],[731,189],[732,189],[733,189],[734,189],[735,189],[736,189],[737,189],[738,189],[739,189],[740,189],[741,189],[742,189],[743,189],[744,189],[745,189],[746,189],[747,189],[748,189],[749,189],[750,189],[751,189],[752,189],[753,189],[754,189],[755,189],[756,189],[757,189],[758,189],[759,189],[760,189],[761,189],[762,189],[763,189],[764,189],[765,189],[766,189],[767,189],[768,189],[769,189],[770,189],[771,189],[772,189],[773,189],[774,189],[470,191],[2513,192],[2514,192],[2515,193],[2468,194],[2516,195],[2517,196],[2518,197],[2463,5],[2466,198],[2464,5],[2465,5],[2519,199],[2520,200],[2521,201],[2522,202],[2523,203],[2524,204],[2525,204],[2526,205],[2527,206],[2528,207],[2529,208],[2469,5],[2467,5],[2530,209],[2531,210],[2532,211],[2566,212],[2533,213],[2534,5],[2535,214],[2536,215],[2537,216],[2538,217],[2539,218],[2540,219],[2541,220],[2542,221],[2543,222],[2544,222],[2545,223],[2546,5],[2547,224],[2548,225],[2550,226],[2549,227],[2551,228],[2552,229],[2553,230],[2554,231],[2555,232],[2556,233],[2557,234],[2558,235],[2559,236],[2560,237],[2561,238],[2562,239],[2563,240],[2470,5],[2471,5],[2472,5],[2510,241],[2511,5],[2512,5],[2564,242],[2565,243],[2648,244],[2174,245],[2173,245],[2632,246],[2629,247],[2631,248],[2630,249],[93,250],[94,251],[2627,252],[95,253],[96,254],[98,255],[90,5],[779,256],[105,257],[778,9],[104,9],[2152,258],[2166,259],[2167,260],[2168,261],[2172,262],[2153,263],[2179,264],[2180,265],[2171,266],[2157,267],[2161,268],[2151,269],[2159,270],[2160,271],[2158,266],[2156,269],[2154,272],[2170,273],[2155,274],[2176,275],[2177,276],[2175,277],[2150,278],[2169,5],[2181,279],[2183,280],[2184,281],[2109,5],[2107,5],[2108,3],[2105,5],[2182,5],[2106,5],[1145,282],[1144,5],[110,5],[1452,5],[97,5],[869,5],[868,283],[867,5],[2149,5],[2232,284],[2234,285],[1441,286],[2236,287],[1443,288],[2238,289],[2231,290],[2233,290],[1440,290],[1442,5],[2235,290],[2237,290],[1439,5],[795,291],[794,292],[793,293],[799,294],[796,295],[797,296],[798,297],[804,298],[802,9],[803,299],[801,300],[800,301],[1392,302],[1391,303],[1390,304],[843,305],[839,306],[841,307],[833,308],[840,309],[834,310],[842,311],[847,312],[844,9],[845,313],[846,314],[851,315],[848,316],[849,317],[850,318],[858,319],[853,320],[856,321],[852,295],[855,322],[854,322],[857,323],[865,324],[862,325],[863,326],[859,327],[861,328],[860,329],[864,330],[874,331],[866,316],[870,332],[871,333],[872,334],[873,335],[878,336],[875,316],[876,337],[877,338],[885,339],[880,316],[883,340],[879,316],[882,341],[881,340],[884,342],[892,343],[889,344],[890,345],[891,346],[888,347],[887,348],[886,349],[1004,350],[1001,351],[1002,352],[1003,353],[1007,354],[1006,355],[1005,356],[1014,357],[1013,358],[1011,359],[1010,360],[1009,361],[1008,358],[1012,362],[1017,363],[1016,364],[1015,365],[1026,366],[1025,9],[1024,367],[1019,368],[1022,369],[1018,370],[1021,371],[1020,371],[1023,372],[1040,373],[1039,374],[1038,375],[1037,376],[1050,377],[1049,378],[1048,379],[1090,380],[1086,381],[1087,382],[1088,383],[1089,384],[1096,385],[1092,9],[1091,9],[1093,9],[1094,9],[1095,9],[1099,386],[1098,387],[1097,388],[1113,389],[1108,390],[1111,391],[1112,392],[1110,393],[1109,394],[1117,395],[1115,396],[1116,397],[1114,398],[1121,399],[1120,316],[1119,400],[1118,401],[1056,402],[1055,390],[1051,403],[1053,404],[1052,405],[1054,405],[1124,406],[1123,407],[1122,408],[1127,409],[1126,410],[1125,411],[1137,412],[1135,413],[1136,9],[1131,414],[1132,415],[1133,416],[1134,417],[1141,418],[1138,316],[1139,419],[1140,420],[1154,421],[1148,422],[1147,423],[1152,424],[1143,425],[1151,426],[1153,427],[1149,428],[1150,422],[1146,429],[1142,430],[1130,431],[1129,432],[1128,433],[1157,434],[1156,435],[1155,436],[1160,437],[1159,438],[1158,439],[1393,440],[1374,441],[1373,9],[1163,442],[1162,443],[1161,444],[1167,445],[1164,446],[1165,447],[1166,448],[808,449],[805,450],[806,451],[807,452],[1062,453],[1061,454],[1060,455],[1379,456],[1378,457],[1376,458],[1377,457],[1375,459],[1366,460],[1363,461],[1365,462],[1364,463],[1362,5],[1177,464],[1175,465],[1171,9],[1174,466],[1170,467],[1173,468],[1168,469],[1172,316],[1176,5],[1169,470],[1382,471],[1380,472],[1381,473],[1059,474],[1058,475],[1057,476],[1385,477],[1384,478],[1383,479],[1179,480],[1178,481],[1182,482],[1181,483],[1180,484],[1185,485],[1184,9],[1183,316],[1188,486],[1187,487],[1186,488],[1389,489],[1388,9],[1387,490],[1386,491],[838,492],[835,493],[830,9],[827,494],[837,495],[836,496],[829,497],[828,498],[832,499],[831,500],[1191,501],[1190,502],[1189,503],[1199,504],[1198,505],[1195,506],[1194,507],[1197,508],[1196,505],[1193,509],[1192,510],[1202,511],[1201,512],[1200,513],[1205,514],[1204,515],[1203,516],[1209,517],[1208,9],[1207,518],[1206,519],[1076,520],[1075,9],[1071,521],[1070,522],[1073,523],[1072,524],[1074,524],[1361,525],[1360,526],[1359,527],[1358,5],[1234,528],[1225,529],[1221,530],[1219,5],[1224,531],[1222,532],[1223,533],[1233,534],[1232,9],[1226,316],[1231,535],[1229,536],[1228,537],[1230,538],[1227,539],[1239,540],[1238,541],[1237,542],[1236,543],[1235,544],[1245,545],[1243,546],[1244,547],[1241,316],[1242,548],[1240,549],[1249,550],[1247,9],[1246,551],[1248,552],[1372,553],[1371,554],[1370,555],[1369,556],[1368,557],[1367,9],[1252,558],[1251,559],[1250,560],[1258,561],[1256,562],[1255,563],[1254,564],[1253,565],[1257,5],[1261,566],[1260,567],[1259,568],[1294,569],[1284,9],[1273,570],[1264,571],[1293,572],[1274,573],[1281,574],[1276,575],[1271,576],[1279,577],[1282,578],[1272,579],[1280,580],[1290,581],[1289,582],[1278,583],[1287,584],[1286,585],[1269,586],[1288,587],[1262,5],[1266,588],[1275,589],[1270,590],[1277,570],[1285,5],[1292,591],[1265,592],[1268,593],[1283,594],[1267,595],[1263,596],[1291,597],[1085,598],[1081,599],[1064,600],[1063,601],[1079,602],[1069,602],[1083,603],[1080,604],[1065,605],[1066,606],[1082,607],[1067,608],[1084,609],[1068,610],[1302,611],[1301,612],[1298,613],[1297,614],[1299,615],[1296,616],[1295,617],[1300,618],[1000,619],[999,620],[998,621],[1305,622],[1303,623],[1304,624],[1107,625],[1101,626],[1100,627],[1104,628],[1105,629],[1102,630],[1106,631],[1103,632],[1308,633],[1307,634],[1306,635],[1313,636],[1311,637],[1310,638],[1309,316],[1312,639],[1047,640],[1046,641],[1043,642],[1042,643],[1045,644],[1044,645],[1041,646],[1357,647],[1351,648],[1355,649],[1356,650],[1354,651],[1353,652],[1352,653],[1319,654],[1316,655],[1314,656],[1318,657],[1317,656],[1331,658],[1329,659],[1330,660],[1336,661],[1335,662],[1334,663],[1333,664],[1332,665],[1328,666],[1326,667],[1323,668],[1322,669],[1320,670],[1327,5],[1324,671],[1321,672],[1325,673],[1347,674],[1337,675],[1346,9],[1341,676],[1340,677],[1345,678],[1344,679],[1343,680],[1342,681],[1339,682],[1338,683],[1220,684],[1217,685],[1218,686],[1213,687],[1214,688],[1212,688],[1210,5],[1216,9],[1215,687],[1211,689],[1350,690],[1349,691],[1348,692],[147,5],[152,5],[148,5],[149,5],[153,5],[150,5],[151,5],[1394,693],[1395,9],[1398,694],[1078,695],[1396,9],[1397,9],[997,696],[996,9],[893,9],[894,9],[994,9],[990,9],[982,316],[895,697],[896,9],[995,316],[979,5],[989,698],[993,459],[897,9],[983,9],[978,459],[981,9],[965,699],[967,700],[968,9],[969,316],[966,9],[991,9],[980,9],[972,494],[970,9],[971,9],[973,5],[992,623],[974,9],[975,9],[976,5],[977,5],[984,9],[1400,701],[964,702],[899,5],[900,5],[901,5],[902,5],[903,5],[904,5],[905,5],[906,5],[907,5],[908,5],[909,5],[910,5],[898,5],[911,5],[912,5],[913,5],[914,5],[915,5],[916,5],[917,5],[918,5],[919,5],[920,5],[921,5],[922,5],[923,5],[924,5],[925,5],[926,5],[927,5],[928,5],[929,5],[930,5],[931,5],[932,5],[933,5],[934,5],[935,5],[936,5],[937,5],[938,5],[939,5],[940,5],[941,5],[942,5],[943,5],[944,5],[945,5],[946,5],[947,5],[948,5],[949,5],[950,5],[951,5],[952,5],[953,5],[954,5],[955,5],[956,5],[957,5],[958,5],[959,5],[960,5],[106,5],[962,5],[963,5],[961,5],[1399,703],[777,704],[780,697],[158,5],[163,5],[159,5],[164,705],[160,5],[161,5],[162,9],[790,5],[781,5],[782,253],[783,5],[792,706],[791,5],[784,707],[785,5],[786,5],[787,253],[789,5],[788,253],[154,708],[165,5],[461,709],[469,710],[463,711],[468,712],[156,713],[157,714],[155,5],[464,9],[465,715],[462,9],[466,716],[467,9],[2572,5],[2242,717],[1449,5],[1473,718],[1474,719],[1472,5],[1528,720],[1480,721],[1482,722],[1475,718],[1529,723],[1481,724],[1486,725],[1487,724],[1488,726],[1489,724],[1490,727],[1491,726],[1492,724],[1493,724],[1525,728],[1520,729],[1521,724],[1522,724],[1494,724],[1495,724],[1523,724],[1496,724],[1516,724],[1519,724],[1518,724],[1517,724],[1497,724],[1498,724],[1499,725],[1500,724],[1501,724],[1514,724],[1503,724],[1502,724],[1526,724],[1505,724],[1524,724],[1504,724],[1515,724],[1507,728],[1508,724],[1510,726],[1509,724],[1511,724],[1527,724],[1512,724],[1513,724],[1478,730],[1477,5],[1483,731],[1485,732],[1479,5],[1484,733],[1506,733],[1476,734],[1531,735],[1538,736],[1539,736],[1541,737],[1540,736],[1530,738],[1544,739],[1533,740],[1535,741],[1543,742],[1536,743],[1534,744],[1542,745],[1537,746],[1532,747],[2178,5],[1960,748],[1959,749],[1956,5],[1957,750],[1958,751],[2600,5],[2636,5],[1545,5],[776,752],[2625,5],[2633,5],[1077,5],[1741,5],[109,753],[2589,754],[2587,755],[2588,756],[2576,757],[2577,755],[2584,758],[2575,759],[2580,760],[2590,5],[2581,761],[2586,762],[2592,763],[2591,764],[2574,765],[2582,766],[2583,767],[2578,768],[2585,754],[2579,769],[1742,770],[1745,771],[1743,171],[1744,772],[2569,773],[2568,774],[2613,775],[2594,5],[2614,776],[2596,777],[2621,778],[2615,5],[2617,779],[2618,779],[2619,780],[2616,5],[2620,781],[2599,782],[2597,5],[2598,783],[2612,784],[2595,5],[2610,785],[2601,786],[2602,787],[2603,787],[2604,786],[2611,788],[2605,787],[2606,785],[2607,786],[2608,787],[2609,786],[2163,789],[2162,790],[2165,791],[2164,792],[2110,790],[2129,793],[2122,5],[2113,794],[2111,790],[2114,790],[2112,795],[2115,790],[2117,790],[2116,790],[2119,790],[2118,790],[2121,790],[2120,790],[2123,796],[2124,790],[2128,797],[2125,798],[2126,790],[2127,790],[2145,799],[2131,799],[2139,799],[2130,5],[2147,800],[2141,801],[2143,5],[2146,802],[2134,803],[2135,803],[2137,803],[2133,804],[2140,805],[2136,803],[2132,803],[2142,799],[2144,806],[2138,807],[2573,5],[2637,808],[1932,809],[1565,810],[1552,5],[1562,5],[1558,5],[1559,5],[1553,5],[1563,5],[1564,5],[1561,5],[1557,5],[1556,5],[1560,811],[1554,5],[1555,5],[1626,812],[1625,9],[1671,9],[1620,9],[1621,5],[1622,813],[1690,9],[1691,814],[1692,9],[1694,815],[1693,9],[1627,9],[1695,9],[1696,9],[1724,816],[1725,817],[1720,9],[1697,818],[1698,818],[1700,819],[1699,820],[1701,9],[1702,818],[1726,9],[1728,821],[1704,822],[1703,9],[1715,9],[1716,818],[1717,818],[1718,818],[1729,816],[1705,9],[1633,823],[1630,9],[1631,824],[1632,5],[1624,825],[1623,5],[1672,9],[1719,9],[1727,826],[1643,827],[1641,828],[1642,829],[1670,830],[1722,5],[1723,831],[1708,832],[1675,833],[1676,834],[1677,820],[1678,835],[1730,9],[1731,836],[1679,820],[1680,837],[1681,838],[1732,820],[1733,839],[1734,840],[1735,841],[1668,842],[1669,843],[1709,820],[1710,844],[1736,845],[1737,846],[1649,9],[1682,820],[1684,847],[1683,820],[1685,848],[1687,849],[1619,850],[1739,851],[1738,852],[1950,853],[1949,854],[1740,5],[1952,855],[1951,826],[1711,856],[1712,857],[1629,858],[1628,9],[1689,859],[1688,820],[1714,860],[1713,861],[1953,862],[1954,863],[1634,864],[1674,865],[1673,866],[1706,867],[1721,868],[1707,5],[1655,830],[1661,5],[1660,869],[1664,5],[1648,5],[1650,845],[1658,870],[1659,5],[1646,871],[1647,872],[1637,5],[1644,873],[1667,874],[1652,875],[1618,5],[1640,876],[1657,5],[1663,877],[1662,9],[1645,826],[1656,878],[1653,5],[1651,5],[1666,879],[1654,830],[1665,5],[1686,5],[80,5],[81,5],[15,5],[13,5],[14,5],[19,5],[18,5],[2,5],[20,5],[21,5],[22,5],[23,5],[24,5],[25,5],[26,5],[27,5],[3,5],[28,5],[29,5],[4,5],[30,5],[34,5],[31,5],[32,5],[33,5],[35,5],[36,5],[37,5],[5,5],[38,5],[39,5],[40,5],[41,5],[6,5],[45,5],[42,5],[43,5],[44,5],[46,5],[7,5],[47,5],[52,5],[53,5],[48,5],[49,5],[50,5],[51,5],[8,5],[57,5],[54,5],[55,5],[56,5],[58,5],[9,5],[59,5],[60,5],[61,5],[63,5],[62,5],[64,5],[65,5],[10,5],[66,5],[67,5],[68,5],[11,5],[69,5],[70,5],[71,5],[72,5],[73,5],[1,5],[74,5],[75,5],[12,5],[78,5],[77,5],[82,5],[76,5],[79,5],[17,5],[16,5],[2626,5],[2488,880],[2498,881],[2487,880],[2508,882],[2479,883],[2478,884],[2507,244],[2501,885],[2506,886],[2481,887],[2495,888],[2480,889],[2504,890],[2476,891],[2475,244],[2505,892],[2477,893],[2482,894],[2483,5],[2486,894],[2473,5],[2509,895],[2499,896],[2490,897],[2491,898],[2493,899],[2489,900],[2492,901],[2502,244],[2484,902],[2485,903],[2494,904],[2474,905],[2497,896],[2496,894],[2500,5],[2503,906],[2638,907],[2634,908],[2635,909],[2640,910],[2641,911],[2639,5],[2645,912],[2644,913],[2646,914],[2643,915],[2647,916],[2649,917],[2650,916],[88,918],[2624,919],[2571,920],[2570,921],[84,921],[83,5],[85,922],[86,5],[87,923],[2622,924],[2593,5],[2623,925],[2228,5],[1315,5],[1438,9],[108,9],[1444,926],[102,9],[103,927],[2628,249],[99,928],[100,929],[2185,9],[2642,5],[101,572],[2099,39],[2083,39],[2082,5],[2050,930],[2049,931],[2048,5],[2032,932],[2031,9],[2034,933],[2035,934],[2033,935],[2037,936],[2036,5],[2040,937],[2041,938],[2039,937],[2038,5],[2070,939],[2069,9],[2042,9],[2072,940],[2052,941],[2051,9],[2043,5],[2045,942],[2044,5],[2047,943],[2046,935],[2054,9],[2068,944],[2067,945],[2066,9],[2053,9],[2057,9],[2061,946],[2059,947],[2060,9],[2058,9],[2056,948],[2055,5],[2063,949],[2062,5],[2065,950],[2064,9],[2018,5],[2074,951],[2073,9],[2075,952],[2027,953],[2026,954],[2025,955],[2028,956],[2029,957],[2024,958],[2030,959],[2071,5],[2023,960],[2022,961],[2019,5],[2020,962],[2021,963],[112,964],[113,965],[111,966],[114,967],[115,968],[116,969],[117,970],[118,971],[119,972],[120,973],[121,974],[122,975],[123,976],[1424,5],[1423,977],[1422,5],[1549,978],[1579,979],[1597,979],[1587,979],[1588,979],[1598,979],[1599,979],[1435,979],[1600,979],[1581,979],[1589,979],[1427,979],[1425,979],[1431,979],[1453,980],[1590,979],[1550,979],[1467,979],[1591,979],[1434,979],[1601,979],[1602,979],[1461,979],[1603,979],[1604,979],[1605,979],[1592,979],[1593,979],[1594,979],[1595,979],[1606,979],[1607,979],[1608,979],[1609,979],[146,979],[1610,979],[1611,979],[1596,979],[1433,979],[1612,979],[127,981],[1583,982],[2077,983],[2078,984],[2100,985],[1582,986],[2101,987],[2102,988],[2103,989],[2104,988],[2192,990],[2193,991],[2194,988],[2195,992],[2197,993],[2198,994],[2196,995],[2199,996],[2201,997],[2202,998],[2200,999],[2205,1000],[2203,998],[2206,1001],[2204,998],[2208,1002],[2187,1003],[2188,1004],[2190,1005],[2191,1006],[2189,988],[1468,1007],[2209,1008],[2210,988],[2211,987],[2186,1009],[1471,1010],[1470,999],[2076,1011],[1546,1012],[1455,1013],[2226,1014],[124,999],[134,999],[107,999],[128,999],[125,999],[126,999],[2227,1015],[2207,999],[1415,572],[143,1016],[1436,572],[139,1017],[2229,1018],[2230,1019],[1585,572],[2239,1020],[2240,1021],[2243,1022],[2245,1023],[2247,1024],[2248,572],[1416,1025],[140,1026],[141,1025],[142,987],[1403,1027],[144,1028],[145,1025],[1402,1029],[1404,1030],[137,1031],[138,1032],[1410,1033],[1405,1034],[1407,1035],[1408,1036],[1409,1037],[1411,1038],[1586,1039],[1584,1040],[2246,1017],[2249,1041],[1573,1042],[1572,1043],[2244,1044],[1580,1045],[130,1046],[136,1047],[133,1048],[132,1049],[1446,999],[131,999],[2079,999],[2080,999],[2250,999],[1469,999],[1568,572],[2251,999],[1401,1050],[2252,572],[1457,1051],[2084,999],[1454,1052],[1437,1053],[1576,1054],[1574,1055],[1578,1056],[1575,1057],[135,1058],[2081,999],[1406,1059],[129,999],[1577,999],[1419,999],[1420,1060],[1418,1061],[1417,1062],[2253,1063],[2254,1064],[2255,1065],[2256,1066],[2257,1067],[2258,1068],[2259,1069],[2260,1070],[2261,1071],[2262,1072],[2263,1073],[2269,1074],[2267,1075],[2266,1076],[2265,1077],[2268,1078],[2264,1079],[2271,1080],[2270,1081],[2272,1080],[2273,1080],[2274,1082],[2275,1083],[2276,1084],[2277,1085],[2278,1086],[2279,991],[2280,1085],[2281,1087],[2282,1088],[2283,1089],[2284,1090],[2290,1091],[1464,999],[2287,1091],[2288,1092],[1465,1093],[2285,1094],[2286,1095],[2289,1096],[2291,1097],[2292,1098],[2300,1099],[2296,1100],[2301,1101],[2294,988],[1429,1102],[2302,1103],[2295,1099],[2297,1104],[2298,1105],[2304,1106],[2305,1104],[2306,1107],[2303,1108],[2308,1109],[2309,1110],[2310,1111],[2307,999],[2312,1112],[2313,1113],[2314,1114],[2311,999],[1428,999],[2316,1115],[2317,1116],[2318,1117],[2315,999],[2320,1118],[2321,1119],[2322,1120],[2319,999],[2324,1121],[2325,1122],[2326,1123],[2323,999],[2328,1124],[2329,1125],[2330,1126],[2327,999],[2332,1127],[2333,988],[2334,1128],[2331,999],[2336,1129],[2337,1130],[2335,999],[2339,1131],[2340,988],[2341,1132],[2338,999],[2343,1133],[2344,1134],[2345,1135],[2342,999],[2347,1136],[2348,988],[2349,1137],[2346,999],[2350,1138],[2293,1139],[1430,1140],[2352,1141],[2351,987],[2353,1142],[2299,1143],[2355,1144],[2358,1145],[2356,1146],[2357,1147],[2354,1148],[2359,1149],[2360,1150],[1426,1151],[2361,1152],[2362,1149],[1414,1153],[1413,1153],[1412,1154],[2363,1155],[1432,1156],[2364,1157],[2365,1158],[2366,1159],[2374,1160],[2375,1161],[2367,1162],[2372,1163],[2369,1164],[2368,1165],[2370,1166],[2371,1167],[2373,1168],[2376,1169],[2377,1169],[2378,1170],[2379,1171],[2380,1172],[2382,1088],[2381,1173],[2383,1174],[2384,1169],[2385,999],[2386,1175],[2387,1176],[2388,988],[2389,1177],[2390,1178],[2391,1179],[2392,1180],[2393,1181],[2394,1182],[2395,1183],[2396,1184],[2397,1185],[1462,1186],[2398,1187],[2399,1188],[2400,1189],[2401,1190],[2402,1191],[2403,1192],[2404,1193],[2405,1194],[2407,1195],[2406,5],[2408,1196],[2409,1197],[2410,1196],[2411,1198],[2412,1199],[2413,1200],[2414,1201],[2415,1202],[2416,1203],[2417,1204],[2418,1205],[2419,1206],[2420,1207],[2421,1208],[2422,1209],[2423,1210],[2424,1211],[2425,1212],[2426,1213],[2427,1214],[2428,1215],[2429,1216],[2430,1217],[2431,1218],[2432,1219],[2433,1220],[2437,1221],[2436,1222],[2439,1223],[2434,988],[2435,1224],[2438,1222],[2442,1225],[2440,1226],[2441,1227],[2443,1228],[1551,1229],[1460,1230],[1459,1231],[1566,1232],[2445,1233],[1456,1234],[1448,1235],[1447,1236],[1445,1237],[2446,1091],[2447,1091],[1458,1238],[1570,1239],[1569,1240],[1466,1241],[1451,1242],[1450,1243],[2448,1244],[1463,1091],[1548,1245],[1547,1246],[2444,1247],[1567,1248],[1571,1249],[2449,1250],[2450,988],[2451,1251],[2452,988],[2453,988],[2454,988],[2455,988],[2456,1252],[2457,1253],[1421,1254],[2458,1255],[2461,5],[2462,1256],[2651,1257]],"semanticDiagnosticsPerFile":[[1432,[{"start":1799,"length":4,"code":2322,"category":1,"messageText":{"messageText":"Type '\"\" | \"danger\" | \"info\"' is not assignable to type '\"success\" | \"danger\" | \"primary\" | \"info\" | \"warning\" | undefined'.","category":1,"code":2322,"next":[{"messageText":"Type '\"\"' is not assignable to type '\"success\" | \"danger\" | \"primary\" | \"info\" | \"warning\" | undefined'.","category":1,"code":2322}]},"relatedInformation":[{"file":"./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tag/src/tag.d.ts","start":414,"length":4,"messageText":"The expected type comes from property 'type' which is declared here on type '{ readonly type?: \"success\" | \"danger\" | \"primary\" | \"info\" | \"warning\" | undefined; readonly closable?: boolean | undefined; readonly disableTransitions?: boolean | undefined; ... 6 more ...; readonly onClose?: ((evt: MouseEvent) => any) | undefined; } & VNodeProps & AllowedComponentProps & ComponentCustomProps & R...'","category":3,"code":6500}]},{"start":7767,"length":4,"code":2322,"category":1,"messageText":"Type 'string' is not assignable to type '\"success\" | \"danger\" | \"primary\" | \"info\" | \"warning\" | undefined'.","relatedInformation":[{"file":"./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tag/src/tag.d.ts","start":414,"length":4,"messageText":"The expected type comes from property 'type' which is declared here on type '{ readonly type?: \"success\" | \"danger\" | \"primary\" | \"info\" | \"warning\" | undefined; readonly closable?: boolean | undefined; readonly disableTransitions?: boolean | undefined; ... 6 more ...; readonly onClose?: ((evt: MouseEvent) => any) | undefined; } & VNodeProps & AllowedComponentProps & ComponentCustomProps & R...'","category":3,"code":6500}]}]],[1450,[{"start":4562,"length":16,"messageText":"Expected 0 arguments, but got 1.","category":1,"code":2554},{"start":4647,"length":12,"messageText":"Expected 0 arguments, but got 1.","category":1,"code":2554},{"start":4725,"length":9,"messageText":"Expected 0 arguments, but got 1.","category":1,"code":2554},{"start":4800,"length":9,"messageText":"Expected 0 arguments, but got 1.","category":1,"code":2554},{"start":5010,"length":19,"messageText":"Expected 0 arguments, but got 1.","category":1,"code":2554}]],[2078,[{"start":1300,"length":5,"messageText":"'attrs' implicitly has type 'any' because it does not have a type annotation and is referenced directly or indirectly in its own initializer.","category":1,"code":7022}]],[2079,[{"start":10172,"length":13,"code":2339,"category":1,"messageText":"Property 'captureStream' does not exist on type 'HTMLVideoElement'."}]],[2192,[{"start":888,"length":28,"code":7016,"category":1,"messageText":{"messageText":"Could not find a declaration file for module '@wangeditor/editor-for-vue'. 'D:/web/zyt/admin/node_modules/.pnpm/@wangeditor+editor-for-vue@_d49ef1161b4f4b880c450fdbfe3a0001/node_modules/@wangeditor/editor-for-vue/dist/index.esm.js' implicitly has an 'any' type.","category":1,"code":7016,"next":[{"info":{"moduleReference":"@wangeditor/editor-for-vue","mode":99}}]}}]],[2259,[{"start":8667,"length":6,"code":2339,"category":1,"messageText":"Property 'remark' does not exist on type 'never'."}]],[2286,[{"start":96679,"length":19,"code":2322,"category":1,"messageText":{"messageText":"Type '{ name: any; code: any; children: any; }[]' is not assignable to type 'never[]'.","category":1,"code":2322,"next":[{"messageText":"Type '{ name: any; code: any; children: any; }' is not assignable to type 'never'.","category":1,"code":2322}]}},{"start":96947,"length":989,"code":2322,"category":1,"messageText":"Type '{ name: string; children: { name: string; children: { name: string; }[]; }[]; }' is not assignable to type 'never'."},{"start":97951,"length":471,"code":2322,"category":1,"messageText":"Type '{ name: string; children: { name: string; children: { name: string; }[]; }[]; }' is not assignable to type 'never'."},{"start":98437,"length":471,"code":2322,"category":1,"messageText":"Type '{ name: string; children: { name: string; children: { name: string; }[]; }[]; }' is not assignable to type 'never'."},{"start":98923,"length":803,"code":2322,"category":1,"messageText":"Type '{ name: string; children: { name: string; children: { name: string; }[]; }[]; }' is not assignable to type 'never'."},{"start":107436,"length":17,"messageText":"Cannot find name 'searchPatientsAPI'.","category":1,"code":2304},{"start":60888,"length":6,"code":2322,"category":1,"messageText":{"messageText":"Type '(value: string[]) => void' is not assignable to type '(value: CascaderValue | null | undefined) => any'.","category":1,"code":2322,"next":[{"messageText":"Types of parameters 'value' and 'value' are incompatible.","category":1,"code":2328,"next":[{"messageText":"Type 'CascaderValue | null | undefined' is not assignable to type 'string[]'.","category":1,"code":2322,"next":[{"messageText":"Type 'undefined' is not assignable to type 'string[]'.","category":1,"code":2322}]}]}]},"relatedInformation":[{"file":"./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/cascader/src/cascader.vue.d.ts","start":2156,"length":8,"messageText":"The expected type comes from property 'onChange' which is declared here on type '__VLS_NormalizeComponentEvent; props: TreeOptionProps; effect: EpPropMergeType<...>; ... 48 more ...; cacheData: unknown[]; }> & Omit<...> & Record<...>'","category":3,"code":6500}]},{"start":51818,"length":7,"code":2322,"category":1,"messageText":{"messageText":"Type 'string | number | undefined' is not assignable to type 'number | null | undefined'.","category":1,"code":2322,"next":[{"messageText":"Type 'string' is not assignable to type 'number'.","category":1,"code":2322}]},"relatedInformation":[{"file":"./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/input-number/src/input-number.d.ts","start":907,"length":10,"messageText":"The expected type comes from property 'modelValue' which is declared here on type '{ readonly id?: string | undefined; readonly step?: number | undefined; readonly stepStrictly?: boolean | undefined; readonly max?: number | undefined; readonly min?: number | undefined; ... 19 more ...; readonly \"onUpdate:modelValue\"?: ((val: number | undefined) => any) | undefined; } & VNodeProps & AllowedComponen...'","category":3,"code":6500}]},{"start":64632,"length":7,"code":2322,"category":1,"messageText":{"messageText":"Type 'string | number | undefined' is not assignable to type 'number | null | undefined'.","category":1,"code":2322,"next":[{"messageText":"Type 'string' is not assignable to type 'number'.","category":1,"code":2322}]},"relatedInformation":[{"file":"./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/input-number/src/input-number.d.ts","start":907,"length":10,"messageText":"The expected type comes from property 'modelValue' which is declared here on type '{ readonly id?: string | undefined; readonly step?: number | undefined; readonly stepStrictly?: boolean | undefined; readonly max?: number | undefined; readonly min?: number | undefined; ... 19 more ...; readonly \"onUpdate:modelValue\"?: ((val: number | undefined) => any) | undefined; } & VNodeProps & AllowedComponen...'","category":3,"code":6500}]},{"start":101188,"length":1,"messageText":"Parameter 'r' implicitly has an 'any' type.","category":1,"code":7006}]],[2292,[{"start":153496,"length":19,"code":2322,"category":1,"messageText":{"messageText":"Type '{ value: any; label: any; code: any; children: any; }[]' is not assignable to type 'never[]'.","category":1,"code":2322,"next":[{"messageText":"Type '{ value: any; label: any; code: any; children: any; }' is not assignable to type 'never'.","category":1,"code":2322}]}},{"start":217157,"length":15,"code":2322,"category":1,"messageText":{"messageText":"Type 'string | number | undefined' is not assignable to type 'number | undefined'.","category":1,"code":2322,"next":[{"messageText":"Type 'string' is not assignable to type 'number'.","category":1,"code":2322}]},"relatedInformation":[{"file":"./src/api/tcm.ts","start":16728,"length":15,"messageText":"The expected type comes from property 'medication_days' which is declared here on type '{ id: number; dose_count?: number | undefined; medication_days?: number | undefined; }'","category":3,"code":6500}]},{"start":14551,"length":4,"code":2322,"category":1,"messageText":{"messageText":"Type 'unknown[]' is not assignable to type 'TreeNodeData[]'.","category":1,"code":2322,"next":[{"messageText":"Type 'unknown' is not assignable to type 'TreeNodeData'.","category":1,"code":2322}]},"relatedInformation":[{"file":"./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tree-select/src/tree-select.vue.d.ts","start":27789,"length":4,"messageText":"The expected type comes from property 'data' which is declared here on type 'Partial<{ lazy: boolean; offset: number; teleported: EpPropMergeType; props: TreeOptionProps; effect: EpPropMergeType<...>; ... 48 more ...; cacheData: unknown[]; }> & Omit<...> & Record<...>'","category":3,"code":6500}]},{"start":30726,"length":10,"code":2345,"category":1,"messageText":{"messageText":"Argument of type 'Record' is not assignable to parameter of type '{ id: number; }'.","category":1,"code":2345,"next":[{"messageText":"Property 'id' is missing in type 'Record' but required in type '{ id: number; }'.","category":1,"code":2741}]},"relatedInformation":[{"start":213900,"length":2,"messageText":"'id' is declared here.","category":3,"code":2728}]},{"start":31214,"length":10,"code":2345,"category":1,"messageText":{"messageText":"Argument of type 'Record' is not assignable to parameter of type '{ id: number; }'.","category":1,"code":2345,"next":[{"messageText":"Property 'id' is missing in type 'Record' but required in type '{ id: number; }'.","category":1,"code":2741}]},"relatedInformation":[{"start":238033,"length":2,"messageText":"'id' is declared here.","category":3,"code":2728}]},{"start":31670,"length":10,"code":2345,"category":1,"messageText":{"messageText":"Argument of type 'Record' is not assignable to parameter of type '{ id: number; }'.","category":1,"code":2345,"next":[{"messageText":"Property 'id' is missing in type 'Record' but required in type '{ id: number; }'.","category":1,"code":2741}]},"relatedInformation":[{"start":213900,"length":2,"messageText":"'id' is declared here.","category":3,"code":2728}]},{"start":32150,"length":10,"code":2345,"category":1,"messageText":{"messageText":"Argument of type 'Record' is not assignable to parameter of type '{ id: number; }'.","category":1,"code":2345,"next":[{"messageText":"Property 'id' is missing in type 'Record' but required in type '{ id: number; }'.","category":1,"code":2741}]},"relatedInformation":[{"start":238914,"length":2,"messageText":"'id' is declared here.","category":3,"code":2728}]},{"start":32596,"length":10,"code":2345,"category":1,"messageText":{"messageText":"Argument of type 'Record' is not assignable to parameter of type '{ id: number; express_company?: unknown; tracking_number?: unknown; ship_mode?: unknown; }'.","category":1,"code":2345,"next":[{"messageText":"Property 'id' is missing in type 'Record' but required in type '{ id: number; express_company?: unknown; tracking_number?: unknown; ship_mode?: unknown; }'.","category":1,"code":2741}]},"relatedInformation":[{"start":222042,"length":2,"messageText":"'id' is declared here.","category":3,"code":2728}]},{"start":33061,"length":10,"code":2345,"category":1,"messageText":{"messageText":"Argument of type 'Record' is not assignable to parameter of type '{ id: number; diagnosis_id?: number | undefined; pay_order_ids?: number[] | undefined; }'.","category":1,"code":2345,"next":[{"messageText":"Property 'id' is missing in type 'Record' but required in type '{ id: number; diagnosis_id?: number | undefined; pay_order_ids?: number[] | undefined; }'.","category":1,"code":2741}]},"relatedInformation":[{"start":234641,"length":2,"messageText":"'id' is declared here.","category":3,"code":2728}]},{"start":33521,"length":10,"code":2345,"category":1,"messageText":{"messageText":"Argument of type 'Record' is not assignable to parameter of type '{ id: number; }'.","category":1,"code":2345,"next":[{"messageText":"Property 'id' is missing in type 'Record' but required in type '{ id: number; }'.","category":1,"code":2741}]},"relatedInformation":[{"start":237664,"length":2,"messageText":"'id' is declared here.","category":3,"code":2728}]},{"start":33975,"length":10,"code":2345,"category":1,"messageText":{"messageText":"Argument of type 'Record' is not assignable to parameter of type '{ id: number; }'.","category":1,"code":2345,"next":[{"messageText":"Property 'id' is missing in type 'Record' but required in type '{ id: number; }'.","category":1,"code":2741}]},"relatedInformation":[{"start":229818,"length":2,"messageText":"'id' is declared here.","category":3,"code":2728}]},{"start":92405,"length":7,"code":2322,"category":1,"messageText":{"messageText":"Type 'string | number | undefined' is not assignable to type 'number | null | undefined'.","category":1,"code":2322,"next":[{"messageText":"Type 'string' is not assignable to type 'number'.","category":1,"code":2322}]},"relatedInformation":[{"file":"./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/input-number/src/input-number.d.ts","start":907,"length":10,"messageText":"The expected type comes from property 'modelValue' which is declared here on type '{ readonly id?: string | undefined; readonly step?: number | undefined; readonly stepStrictly?: boolean | undefined; readonly max?: number | undefined; readonly min?: number | undefined; ... 19 more ...; readonly \"onUpdate:modelValue\"?: ((val: number | undefined) => any) | undefined; } & VNodeProps & AllowedComponen...'","category":3,"code":6500}]},{"start":104708,"length":7,"code":2322,"category":1,"messageText":{"messageText":"Type 'string | number | undefined' is not assignable to type 'number | null | undefined'.","category":1,"code":2322,"next":[{"messageText":"Type 'string' is not assignable to type 'number'.","category":1,"code":2322}]},"relatedInformation":[{"file":"./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/input-number/src/input-number.d.ts","start":907,"length":10,"messageText":"The expected type comes from property 'modelValue' which is declared here on type '{ readonly id?: string | undefined; readonly step?: number | undefined; readonly stepStrictly?: boolean | undefined; readonly max?: number | undefined; readonly min?: number | undefined; ... 19 more ...; readonly \"onUpdate:modelValue\"?: ((val: number | undefined) => any) | undefined; } & VNodeProps & AllowedComponen...'","category":3,"code":6500}]},{"start":140602,"length":1,"messageText":"Parameter 'r' implicitly has an 'any' type.","category":1,"code":7006}]],[2304,[{"start":325,"length":8,"code":2345,"category":1,"messageText":{"messageText":"Argument of type '{ modelValue: any; }' is not assignable to parameter of type '{ readonly modelValue: any[]; readonly max?: number | undefined; readonly min?: number | undefined; readonly itemData: any; readonly \"onUpdate:modelValue\"?: ((value: any) => any) | undefined; } & VNodeProps & AllowedComponentProps & ComponentCustomProps & Record<...>'.","category":1,"code":2345,"next":[{"messageText":"Property 'itemData' is missing in type '{ modelValue: any; }' but required in type '{ readonly modelValue: any[]; readonly max?: number | undefined; readonly min?: number | undefined; readonly itemData: any; readonly \"onUpdate:modelValue\"?: ((value: any) => any) | undefined; }'.","category":1,"code":2741,"canonicalHead":{"code":2322,"messageText":"Type '{ modelValue: any; }' is not assignable to type '{ readonly modelValue: any[]; readonly max?: number | undefined; readonly min?: number | undefined; readonly itemData: any; readonly \"onUpdate:modelValue\"?: ((value: any) => any) | undefined; }'."}}]},"relatedInformation":[{"file":"./src/views/decoration/component/tabbar/pc/menu-set.vue","start":4006,"length":8,"messageText":"'itemData' is declared here.","category":3,"code":2728}]},{"start":454,"length":8,"code":2345,"category":1,"messageText":{"messageText":"Argument of type '{ modelValue: any; }' is not assignable to parameter of type '{ readonly modelValue: any[]; readonly max?: number | undefined; readonly min?: number | undefined; readonly itemData: any; readonly \"onUpdate:modelValue\"?: ((value: any) => any) | undefined; } & VNodeProps & AllowedComponentProps & ComponentCustomProps & Record<...>'.","category":1,"code":2345,"next":[{"messageText":"Property 'itemData' is missing in type '{ modelValue: any; }' but required in type '{ readonly modelValue: any[]; readonly max?: number | undefined; readonly min?: number | undefined; readonly itemData: any; readonly \"onUpdate:modelValue\"?: ((value: any) => any) | undefined; }'.","category":1,"code":2741,"canonicalHead":{"code":2322,"messageText":"Type '{ modelValue: any; }' is not assignable to type '{ readonly modelValue: any[]; readonly max?: number | undefined; readonly min?: number | undefined; readonly itemData: any; readonly \"onUpdate:modelValue\"?: ((value: any) => any) | undefined; }'."}}]},"relatedInformation":[{"file":"./src/views/decoration/component/tabbar/pc/menu-set.vue","start":4006,"length":8,"messageText":"'itemData' is declared here.","category":3,"code":2728}]}]],[2317,[{"start":195,"length":6,"code":2339,"category":1,"messageText":"Property 'height' does not exist on type '{}'."}]],[2359,[{"start":5709,"length":5,"messageText":"Parameter 'depts' implicitly has an 'any' type.","category":1,"code":7006},{"start":5738,"length":6,"messageText":"Variable 'result' implicitly has type 'any[]' in some locations where its type cannot be determined.","category":1,"code":7034},{"start":5777,"length":4,"messageText":"Parameter 'dept' implicitly has an 'any' type.","category":1,"code":7006},{"start":5946,"length":6,"messageText":"Variable 'result' implicitly has an 'any[]' type.","category":1,"code":7005},{"start":6044,"length":6,"messageText":"Variable 'result' implicitly has an 'any[]' type.","category":1,"code":7005}]],[2362,[{"start":10278,"length":47,"code":2769,"category":1,"messageText":{"messageText":"No overload matches this call.","category":1,"code":2769,"next":[{"messageText":"Overload 1 of 3, '(callbackfn: (previousValue: unknown, currentValue: unknown, currentIndex: number, array: unknown[]) => unknown, initialValue: unknown): unknown', gave the following error.","category":1,"code":2772,"next":[{"messageText":"Argument of type '(total: number, count: number) => number' is not assignable to parameter of type '(previousValue: unknown, currentValue: unknown, currentIndex: number, array: unknown[]) => unknown'.","category":1,"code":2345,"next":[{"messageText":"Types of parameters 'total' and 'previousValue' are incompatible.","category":1,"code":2328,"next":[{"messageText":"Type 'unknown' is not assignable to type 'number'.","category":1,"code":2322}]}]}]},{"messageText":"Overload 2 of 3, '(callbackfn: (previousValue: number, currentValue: unknown, currentIndex: number, array: unknown[]) => number, initialValue: number): number', gave the following error.","category":1,"code":2772,"next":[{"messageText":"Argument of type '(total: number, count: number) => number' is not assignable to parameter of type '(previousValue: number, currentValue: unknown, currentIndex: number, array: unknown[]) => number'.","category":1,"code":2345,"next":[{"messageText":"Types of parameters 'count' and 'currentValue' are incompatible.","category":1,"code":2328,"next":[{"messageText":"Type 'unknown' is not assignable to type 'number'.","category":1,"code":2322}]}]}]}]},"relatedInformation":[]},{"start":10485,"length":47,"code":2769,"category":1,"messageText":{"messageText":"No overload matches this call.","category":1,"code":2769,"next":[{"messageText":"Overload 1 of 3, '(callbackfn: (previousValue: unknown, currentValue: unknown, currentIndex: number, array: unknown[]) => unknown, initialValue: unknown): unknown', gave the following error.","category":1,"code":2772,"next":[{"messageText":"Argument of type '(total: number, count: number) => number' is not assignable to parameter of type '(previousValue: unknown, currentValue: unknown, currentIndex: number, array: unknown[]) => unknown'.","category":1,"code":2345,"next":[{"messageText":"Types of parameters 'total' and 'previousValue' are incompatible.","category":1,"code":2328,"next":[{"messageText":"Type 'unknown' is not assignable to type 'number'.","category":1,"code":2322}]}]}]},{"messageText":"Overload 2 of 3, '(callbackfn: (previousValue: number, currentValue: unknown, currentIndex: number, array: unknown[]) => number, initialValue: number): number', gave the following error.","category":1,"code":2772,"next":[{"messageText":"Argument of type '(total: number, count: number) => number' is not assignable to parameter of type '(previousValue: number, currentValue: unknown, currentIndex: number, array: unknown[]) => number'.","category":1,"code":2345,"next":[{"messageText":"Types of parameters 'count' and 'currentValue' are incompatible.","category":1,"code":2328,"next":[{"messageText":"Type 'unknown' is not assignable to type 'number'.","category":1,"code":2322}]}]}]}]},"relatedInformation":[]},{"start":4702,"length":4,"code":2322,"category":1,"messageText":"Type 'string' is not assignable to type '\"success\" | \"danger\" | \"primary\" | \"info\" | \"warning\" | undefined'.","relatedInformation":[{"file":"./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tag/src/tag.d.ts","start":414,"length":4,"messageText":"The expected type comes from property 'type' which is declared here on type '{ readonly type?: \"success\" | \"danger\" | \"primary\" | \"info\" | \"warning\" | undefined; readonly closable?: boolean | undefined; readonly disableTransitions?: boolean | undefined; ... 6 more ...; readonly onClose?: ((evt: MouseEvent) => any) | undefined; } & VNodeProps & AllowedComponentProps & ComponentCustomProps & R...'","category":3,"code":6500}]},{"start":6901,"length":4,"code":2322,"category":1,"messageText":"Type 'string' is not assignable to type '\"success\" | \"danger\" | \"primary\" | \"info\" | \"warning\" | undefined'.","relatedInformation":[{"file":"./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tag/src/tag.d.ts","start":414,"length":4,"messageText":"The expected type comes from property 'type' which is declared here on type '{ readonly type?: \"success\" | \"danger\" | \"primary\" | \"info\" | \"warning\" | undefined; readonly closable?: boolean | undefined; readonly disableTransitions?: boolean | undefined; ... 6 more ...; readonly onClose?: ((evt: MouseEvent) => any) | undefined; } & VNodeProps & AllowedComponentProps & ComponentCustomProps & R...'","category":3,"code":6500}]}]],[2364,[{"start":7613,"length":4,"code":2322,"category":1,"messageText":"Type 'string' is not assignable to type '\"success\" | \"danger\" | \"primary\" | \"info\" | \"warning\" | undefined'.","relatedInformation":[{"file":"./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tag/src/tag.d.ts","start":414,"length":4,"messageText":"The expected type comes from property 'type' which is declared here on type '{ readonly type?: \"success\" | \"danger\" | \"primary\" | \"info\" | \"warning\" | undefined; readonly closable?: boolean | undefined; readonly disableTransitions?: boolean | undefined; ... 6 more ...; readonly onClose?: ((evt: MouseEvent) => any) | undefined; } & VNodeProps & AllowedComponentProps & ComponentCustomProps & R...'","category":3,"code":6500}]}]],[2390,[{"start":397,"length":10,"code":2322,"category":1,"messageText":{"messageText":"Type '(opts?: { silent?: boolean; }) => Promise' is not assignable to type '(name: TabPaneName) => any'.","category":1,"code":2322,"next":[{"messageText":"Types of parameters 'opts' and 'name' are incompatible.","category":1,"code":2328,"next":[{"messageText":"Type 'TabPaneName' is not assignable to type '{ silent?: boolean | undefined; } | undefined'.","category":1,"code":2322,"next":[{"messageText":"Type 'string' has no properties in common with type '{ silent?: boolean | undefined; }'.","category":1,"code":2559}]}]}]},"relatedInformation":[{"file":"./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tabs/src/tabs.d.ts","start":7614,"length":11,"messageText":"The expected type comes from property 'onTabChange' which is declared here on type '__VLS_NormalizeComponentEvent; readonly closable: boolean; readonly tabindex: EpPropMergeType; ... 4 more ...; readonly addable: boolean; }>...'","category":3,"code":6500}]}]],[2393,[{"start":56480,"length":34,"messageText":"This comparison appears to be unintentional because the types '\"supplement\"' and '\"normal\"' have no overlap.","category":1,"code":2367},{"start":20344,"length":28,"messageText":"This comparison appears to be unintentional because the types '\"supplement\"' and '\"normal\"' have no overlap.","category":1,"code":2367}]],[2394,[{"start":723,"length":5,"code":2353,"category":1,"messageText":"Object literal may only specify known properties, and 'value' does not exist in type 'TreeOptionProps'.","relatedInformation":[{"file":"./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tree-select/src/tree-select.vue.d.ts","start":25072,"length":5,"messageText":"The expected type comes from property 'props' which is declared here on type 'Partial<{ lazy: boolean; offset: number; teleported: EpPropMergeType; props: TreeOptionProps; effect: EpPropMergeType<...>; ... 48 more ...; cacheData: unknown[]; }> & Omit<...> & Record<...>'","category":3,"code":6500}]}]],[2399,[{"start":1732,"length":5,"code":2353,"category":1,"messageText":"Object literal may only specify known properties, and 'value' does not exist in type 'TreeOptionProps'.","relatedInformation":[{"file":"./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tree-select/src/tree-select.vue.d.ts","start":25072,"length":5,"messageText":"The expected type comes from property 'props' which is declared here on type 'Partial<{ lazy: boolean; offset: number; teleported: EpPropMergeType; props: TreeOptionProps; effect: EpPropMergeType<...>; ... 48 more ...; cacheData: unknown[]; }> & Omit<...> & Record<...>'","category":3,"code":6500}]}]],[2440,[{"start":5402,"length":4,"code":2322,"category":1,"messageText":{"messageText":"Type 'unknown[]' is not assignable to type 'TreeNodeData[]'.","category":1,"code":2322,"next":[{"messageText":"Type 'unknown' is not assignable to type 'TreeNodeData'.","category":1,"code":2322}]},"relatedInformation":[{"file":"./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tree-select/src/tree-select.vue.d.ts","start":27789,"length":4,"messageText":"The expected type comes from property 'data' which is declared here on type 'Partial<{ lazy: boolean; offset: number; teleported: EpPropMergeType; props: TreeOptionProps; effect: EpPropMergeType<...>; ... 48 more ...; cacheData: unknown[]; }> & Omit<...> & Record<...>'","category":3,"code":6500}]}]],[2443,[{"start":31652,"length":6,"code":2349,"category":1,"messageText":{"messageText":"This expression is not callable.","category":1,"code":2349,"next":[{"messageText":"Type 'String' has no call signatures.","category":1,"code":2757}]},"relatedInformation":[{"start":31652,"length":6,"messageText":"Are you missing a semicolon?","category":1,"code":2734}]},{"start":32437,"length":2,"code":2349,"category":1,"messageText":{"messageText":"This expression is not callable.","category":1,"code":2349,"next":[{"messageText":"Type 'String' has no call signatures.","category":1,"code":2757}]},"relatedInformation":[{"start":32437,"length":2,"messageText":"Are you missing a semicolon?","category":1,"code":2734}]}]],[2445,[{"start":14749,"length":34,"code":2322,"category":1,"messageText":"Type 'string' is not assignable to type 'number'."}]],[2458,[{"start":24819,"length":1,"messageText":"Parameter 'd' implicitly has an 'any' type.","category":1,"code":7006}]]],"affectedFilesPendingEmit":[1579,1597,1587,1588,1598,1599,1435,1600,1581,1589,1427,1425,1431,1453,1590,1550,1467,1591,1434,1601,1602,1461,1603,1604,1605,1592,1593,1594,1595,1606,1607,1608,1609,146,1610,1611,1596,1433,1612,127,1583,2077,2078,2100,1582,2101,2102,2103,2104,2192,2193,2194,2195,2197,2198,2196,2199,2201,2202,2200,2205,2203,2206,2204,2208,2187,2188,2190,2191,2189,1468,2209,2210,2211,2186,1471,1470,2076,1546,1455,2226,124,134,107,128,125,126,2227,2207,1415,143,1436,139,2229,2230,1585,2239,2240,2243,2245,2247,2248,1416,140,141,142,1403,144,145,1402,1404,137,138,1410,1405,1407,1408,1409,1411,1586,1584,2246,2249,1573,1572,2244,1580,130,136,133,132,1446,131,2079,2080,2250,1469,1568,2251,1401,2252,1457,2084,1454,1437,1576,1574,1578,135,2081,1406,129,1577,1419,1420,1418,1417,2253,2254,2255,2256,2257,2258,2259,2260,2261,2262,2263,2269,2267,2266,2265,2268,2264,2271,2270,2272,2273,2274,2275,2276,2277,2278,2279,2280,2281,2282,2283,2284,2290,1464,2287,2288,1465,2285,2286,2289,2291,2292,2300,2296,2301,2294,1429,2302,2295,2297,2298,2304,2305,2306,2303,2308,2309,2310,2307,2312,2313,2314,2311,1428,2316,2317,2318,2315,2320,2321,2322,2319,2324,2325,2326,2323,2328,2329,2330,2327,2332,2333,2334,2331,2336,2337,2335,2339,2340,2341,2338,2343,2344,2345,2342,2347,2348,2349,2346,2350,2293,1430,2352,2351,2353,2299,2355,2358,2356,2357,2354,2359,2360,1426,2361,2362,1414,1413,1412,2363,1432,2364,2365,2366,2374,2375,2367,2372,2369,2368,2370,2371,2373,2376,2377,2378,2379,2380,2382,2381,2383,2384,2385,2386,2387,2388,2389,2390,2391,2392,2393,2394,2395,2396,2397,1462,2398,2399,2400,2401,2402,2403,2404,2405,2407,2408,2409,2410,2411,2412,2413,2414,2415,2416,2417,2418,2419,2420,2421,2422,2423,2424,2425,2426,2427,2428,2429,2430,2431,2432,2433,2437,2436,2439,2434,2435,2438,2442,2440,2441,2443,1551,1460,1459,1566,2445,1456,1448,1447,1445,2446,2447,1458,1570,1569,1466,1451,1450,2448,1463,1548,1547,2444,1567,1571,2449,2450,2451,2452,2453,2454,2455,2456,2457,1421,2458,2651],"emitSignatures":[107,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,1401,1402,1403,1404,1405,1406,1407,1408,1409,1410,1411,1412,1413,1414,1415,1416,1417,1418,1419,1420,1421,1425,1426,1427,1428,1429,1430,1431,1432,1433,1434,1435,1436,1437,1445,1446,1447,1448,1450,1451,1453,1454,1455,1456,1457,1458,1459,1460,1461,1462,1463,1464,1465,1466,1467,1468,1469,1470,1471,1546,1547,1548,1550,1551,1566,1567,1568,1569,1570,1571,1572,1573,1574,1576,1577,1578,1579,1580,1581,1582,1583,1584,1585,1586,1587,1588,1589,1590,1591,1592,1593,1594,1595,1596,1597,1598,1599,1600,1601,1602,1603,1604,1605,1606,1607,1608,1609,1610,1611,1612,2076,2077,2078,2079,2080,2081,2084,2100,2101,2102,2103,2104,2186,2187,2188,2189,2190,2191,2192,2193,2194,2195,2196,2197,2198,2199,2200,2201,2202,2203,2204,2205,2206,2207,2208,2209,2210,2211,2226,2227,2229,2230,2239,2240,2243,2244,2245,2246,2247,2248,2249,2250,2251,2252,2253,2254,2255,2256,2257,2258,2259,2260,2261,2262,2263,2264,2265,2266,2267,2268,2269,2270,2271,2272,2273,2274,2275,2276,2277,2278,2279,2280,2281,2282,2283,2284,2285,2286,2287,2288,2289,2290,2291,2292,2293,2294,2295,2296,2297,2298,2299,2300,2301,2302,2303,2304,2305,2306,2307,2308,2309,2310,2311,2312,2313,2314,2315,2316,2317,2318,2319,2320,2321,2322,2323,2324,2325,2326,2327,2328,2329,2330,2331,2332,2333,2334,2335,2336,2337,2338,2339,2340,2341,2342,2343,2344,2345,2346,2347,2348,2349,2350,2351,2352,2353,2354,2355,2356,2357,2358,2359,2360,2361,2362,2363,2364,2365,2366,2367,2368,2369,2370,2371,2372,2373,2374,2375,2376,2377,2378,2379,2380,2381,2382,2383,2384,2385,2386,2387,2388,2389,2390,2391,2392,2393,2394,2395,2396,2397,2398,2399,2400,2401,2402,2403,2404,2405,2407,2408,2409,2410,2411,2412,2413,2414,2415,2416,2417,2418,2419,2420,2421,2422,2423,2424,2425,2426,2427,2428,2429,2430,2431,2432,2433,2434,2435,2436,2437,2438,2439,2440,2441,2442,2443,2444,2445,2446,2447,2448,2449,2450,2451,2452,2453,2454,2455,2456,2457,2458,2651],"version":"5.7.3"} \ No newline at end of file +{"fileNames":["./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es5.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2019.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2020.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2021.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2022.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2023.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2024.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.esnext.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.dom.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.dom.iterable.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.dom.asynciterable.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.webworker.importscripts.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.scripthost.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2017.date.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2019.array.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2019.object.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2019.string.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2020.date.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2020.string.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2020.number.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2021.promise.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2021.string.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2021.weakref.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2021.intl.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2022.array.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2022.error.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2022.intl.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2022.object.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2022.string.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2022.regexp.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2023.array.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2023.collection.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2023.intl.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2024.collection.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2024.object.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2024.promise.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2024.regexp.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2024.string.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.esnext.array.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.esnext.collection.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.esnext.intl.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.esnext.disposable.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.esnext.decorators.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.esnext.iterator.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.decorators.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.esnext.full.d.ts","./node_modules/.pnpm/vite@6.4.2_@types+node@22.1_8f5e549addd5aa700368df43e00a64dc/node_modules/vite/types/hmrpayload.d.ts","./node_modules/.pnpm/vite@6.4.2_@types+node@22.1_8f5e549addd5aa700368df43e00a64dc/node_modules/vite/types/customevent.d.ts","./node_modules/.pnpm/vite@6.4.2_@types+node@22.1_8f5e549addd5aa700368df43e00a64dc/node_modules/vite/types/hot.d.ts","./node_modules/.pnpm/vite@6.4.2_@types+node@22.1_8f5e549addd5aa700368df43e00a64dc/node_modules/vite/types/importglob.d.ts","./node_modules/.pnpm/vite@6.4.2_@types+node@22.1_8f5e549addd5aa700368df43e00a64dc/node_modules/vite/types/importmeta.d.ts","./node_modules/.pnpm/vite@6.4.2_@types+node@22.1_8f5e549addd5aa700368df43e00a64dc/node_modules/vite/client.d.ts","./global.d.ts","./node_modules/.pnpm/@vue+shared@3.5.33/node_modules/@vue/shared/dist/shared.d.ts","./node_modules/.pnpm/@babel+types@7.29.0/node_modules/@babel/types/lib/index.d.ts","./node_modules/.pnpm/@babel+parser@7.29.3/node_modules/@babel/parser/typings/babel-parser.d.ts","./node_modules/.pnpm/@vue+compiler-core@3.5.33/node_modules/@vue/compiler-core/dist/compiler-core.d.ts","./node_modules/.pnpm/@vue+compiler-dom@3.5.33/node_modules/@vue/compiler-dom/dist/compiler-dom.d.ts","./node_modules/.pnpm/@vue+reactivity@3.5.33/node_modules/@vue/reactivity/dist/reactivity.d.ts","./node_modules/.pnpm/@vue+runtime-core@3.5.33/node_modules/@vue/runtime-core/dist/runtime-core.d.ts","./node_modules/.pnpm/csstype@3.2.3/node_modules/csstype/index.d.ts","./node_modules/.pnpm/@vue+runtime-dom@3.5.33/node_modules/@vue/runtime-dom/dist/runtime-dom.d.ts","./node_modules/.pnpm/vue@3.5.33_typescript@5.7.3/node_modules/vue/dist/vue.d.mts","./node_modules/.pnpm/vue@3.5.33_typescript@5.7.3/node_modules/vue/jsx-runtime/index.d.ts","./node_modules/.vue-global-types/vue_3.5_0_0_0.d.ts","./node_modules/.pnpm/vue-router@4.6.4_vue@3.5.33_typescript@5.7.3_/node_modules/vue-router/dist/router-cwonjprp.d.mts","./node_modules/.pnpm/vue-router@4.6.4_vue@3.5.33_typescript@5.7.3_/node_modules/vue-router/dist/vue-router.d.mts","./node_modules/.pnpm/@vueuse+shared@12.7.0_typescript@5.7.3/node_modules/@vueuse/shared/index.d.mts","./node_modules/.pnpm/@vueuse+core@12.7.0_typescript@5.7.3/node_modules/@vueuse/core/index.d.mts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/zh-cn.d.ts","./src/enums/appenums.ts","./node_modules/.pnpm/vue-demi@0.14.10_vue@3.5.33_typescript@5.7.3_/node_modules/vue-demi/lib/index.d.ts","./node_modules/.pnpm/pinia@2.3.1_typescript@5.7.3_vue@3.5.33_typescript@5.7.3_/node_modules/pinia/dist/pinia.d.ts","./node_modules/.pnpm/axios@1.16.0/node_modules/axios/index.d.ts","./node_modules/@types/lodash/common/common.d.ts","./node_modules/@types/lodash/common/array.d.ts","./node_modules/@types/lodash/common/collection.d.ts","./node_modules/@types/lodash/common/date.d.ts","./node_modules/@types/lodash/common/function.d.ts","./node_modules/@types/lodash/common/lang.d.ts","./node_modules/@types/lodash/common/math.d.ts","./node_modules/@types/lodash/common/number.d.ts","./node_modules/@types/lodash/common/object.d.ts","./node_modules/@types/lodash/common/seq.d.ts","./node_modules/@types/lodash/common/string.d.ts","./node_modules/@types/lodash/common/util.d.ts","./node_modules/@types/lodash/index.d.ts","./src/config/index.ts","./src/enums/pageenum.ts","./src/enums/requestenums.ts","./src/api/user.ts","./src/enums/cacheenums.ts","./src/utils/validate.ts","./src/stores/modules/multipletabs.ts","./src/utils/cache.ts","./src/utils/auth.ts","./src/stores/modules/user.ts","./src/config/setting.ts","./src/utils/theme.ts","./src/stores/modules/setting.ts","./src/layout/default/components/setting/drawer.vue","./src/layout/default/components/setting/index.vue","./src/hooks/usewatchroute.ts","./src/layout/default/components/header/breadcrumb.vue","./src/layout/default/components/header/fold.vue","./src/layout/default/components/header/full-screen.vue","./src/hooks/usemultipletabs.ts","./src/layout/default/components/header/multiple-tabs.vue","./src/layout/default/components/header/refresh.vue","./src/api/setting/system.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/constants/aria.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/constants/date.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/constants/event.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/constants/key.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/constants/size.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/constants/column-alignment.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/constants/form.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/typescript.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/vue/props/util.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/vue/props/runtime.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/vue/props/types.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/dom/aria.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/dom/event.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/dom/position.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/dom/scroll.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/dom/style.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/dom/element.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/dom/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/vue/global-node.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/add-location.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/aim.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/alarm-clock.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/apple.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/arrow-down-bold.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/arrow-down.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/arrow-left-bold.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/arrow-left.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/arrow-right-bold.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/arrow-right.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/arrow-up-bold.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/arrow-up.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/avatar.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/back.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/baseball.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/basketball.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/bell-filled.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/bell.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/bicycle.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/bottom-left.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/bottom-right.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/bottom.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/bowl.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/box.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/briefcase.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/brush-filled.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/brush.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/burger.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/calendar.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/camera-filled.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/camera.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/caret-bottom.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/caret-left.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/caret-right.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/caret-top.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/cellphone.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/chat-dot-round.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/chat-dot-square.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/chat-line-round.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/chat-line-square.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/chat-round.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/chat-square.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/check.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/checked.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/cherry.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/chicken.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/chrome-filled.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/circle-check-filled.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/circle-check.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/circle-close-filled.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/circle-close.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/circle-plus-filled.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/circle-plus.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/clock.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/close-bold.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/close.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/cloudy.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/coffee-cup.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/coffee.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/coin.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/cold-drink.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/collection-tag.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/collection.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/comment.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/compass.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/connection.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/coordinate.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/copy-document.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/cpu.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/credit-card.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/crop.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/d-arrow-left.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/d-arrow-right.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/d-caret.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/data-analysis.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/data-board.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/data-line.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/delete-filled.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/delete-location.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/delete.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/dessert.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/discount.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/dish-dot.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/dish.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/document-add.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/document-checked.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/document-copy.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/document-delete.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/document-remove.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/document.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/download.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/drizzling.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/edit-pen.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/edit.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/eleme-filled.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/eleme.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/element-plus.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/expand.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/failed.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/female.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/files.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/film.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/filter.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/finished.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/first-aid-kit.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/flag.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/fold.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/folder-add.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/folder-checked.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/folder-delete.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/folder-opened.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/folder-remove.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/folder.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/food.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/football.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/fork-spoon.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/fries.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/full-screen.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/goblet-full.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/goblet-square-full.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/goblet-square.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/goblet.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/gold-medal.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/goods-filled.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/goods.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/grape.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/grid.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/guide.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/handbag.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/headset.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/help-filled.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/help.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/hide.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/histogram.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/home-filled.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/hot-water.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/house.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/ice-cream-round.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/ice-cream-square.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/ice-cream.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/ice-drink.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/ice-tea.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/info-filled.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/iphone.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/key.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/knife-fork.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/lightning.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/link.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/list.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/loading.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/location-filled.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/location-information.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/location.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/lock.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/lollipop.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/magic-stick.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/magnet.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/male.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/management.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/map-location.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/medal.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/memo.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/menu.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/message-box.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/message.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/mic.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/microphone.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/milk-tea.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/minus.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/money.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/monitor.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/moon-night.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/moon.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/more-filled.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/more.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/mostly-cloudy.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/mouse.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/mug.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/mute-notification.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/mute.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/no-smoking.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/notebook.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/notification.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/odometer.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/office-building.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/open.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/operation.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/opportunity.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/orange.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/paperclip.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/partly-cloudy.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/pear.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/phone-filled.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/phone.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/picture-filled.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/picture-rounded.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/picture.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/pie-chart.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/place.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/platform.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/plus.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/pointer.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/position.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/postcard.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/pouring.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/present.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/price-tag.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/printer.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/promotion.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/quartz-watch.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/question-filled.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/rank.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/reading-lamp.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/reading.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/refresh-left.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/refresh-right.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/refresh.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/refrigerator.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/remove-filled.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/remove.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/right.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/scale-to-original.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/school.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/scissor.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/search.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/select.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/sell.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/semi-select.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/service.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/set-up.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/setting.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/share.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/ship.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/shop.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/shopping-bag.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/shopping-cart-full.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/shopping-cart.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/shopping-trolley.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/smoking.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/soccer.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/sold-out.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/sort-down.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/sort-up.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/sort.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/stamp.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/star-filled.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/star.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/stopwatch.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/success-filled.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/sugar.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/suitcase-line.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/suitcase.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/sunny.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/sunrise.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/sunset.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/switch-button.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/switch-filled.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/switch.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/takeaway-box.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/ticket.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/tickets.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/timer.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/toilet-paper.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/tools.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/top-left.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/top-right.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/top.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/trend-charts.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/trophy-base.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/trophy.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/turn-off.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/umbrella.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/unlock.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/upload-filled.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/upload.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/user-filled.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/user.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/van.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/video-camera-filled.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/video-camera.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/video-pause.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/video-play.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/view.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/wallet-filled.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/wallet.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/warn-triangle-filled.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/warning-filled.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/warning.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/watch.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/watermelon.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/wind-power.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/zoom-in.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/zoom-out.vue.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/components/index.d.ts","./node_modules/.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.33_typescript@5.7.3_/node_modules/@element-plus/icons-vue/dist/types/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/vue/icon.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/vue/typescript.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/vue/install.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/vue/refs.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/vue/size.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/vue/validator.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/vue/vnode.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/vue/props/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/vue/index.d.ts","./node_modules/.pnpm/@types+lodash@4.17.24/node_modules/@types/lodash/index.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/add.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/after.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/ary.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/assign.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/assignin.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/assigninwith.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/assignwith.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/at.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/attempt.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/before.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/bind.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/bindall.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/bindkey.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/camelcase.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/capitalize.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/castarray.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/ceil.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/chain.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/chunk.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/clamp.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/clone.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/clonedeep.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/clonedeepwith.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/clonewith.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/compact.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/concat.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/cond.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/conforms.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/conformsto.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/constant.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/countby.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/create.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/curry.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/curryright.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/debounce.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/deburr.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/defaults.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/defaultsdeep.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/defaultto.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/defer.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/delay.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/difference.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/differenceby.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/differencewith.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/divide.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/drop.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/dropright.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/droprightwhile.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/dropwhile.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/each.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/eachright.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/endswith.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/entries.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/entriesin.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/eq.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/escape.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/escaperegexp.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/every.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/extend.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/extendwith.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/fill.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/filter.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/find.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/findindex.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/findkey.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/findlast.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/findlastindex.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/findlastkey.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/first.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/flatmap.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/flatmapdeep.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/flatmapdepth.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/flatten.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/flattendeep.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/flattendepth.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/flip.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/floor.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/flow.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/flowright.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/foreach.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/foreachright.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/forin.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/forinright.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/forown.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/forownright.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/frompairs.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/functions.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/functionsin.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/get.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/groupby.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/gt.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/gte.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/has.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/hasin.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/head.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/identity.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/includes.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/indexof.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/initial.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/inrange.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/intersection.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/intersectionby.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/intersectionwith.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/invert.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/invertby.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/invoke.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/invokemap.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/isarguments.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/isarray.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/isarraybuffer.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/isarraylike.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/isarraylikeobject.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/isboolean.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/isbuffer.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/isdate.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/iselement.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/isempty.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/isequal.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/isequalwith.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/iserror.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/isfinite.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/isfunction.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/isinteger.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/islength.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/ismap.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/ismatch.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/ismatchwith.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/isnan.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/isnative.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/isnil.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/isnull.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/isnumber.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/isobject.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/isobjectlike.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/isplainobject.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/isregexp.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/issafeinteger.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/isset.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/isstring.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/issymbol.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/istypedarray.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/isundefined.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/isweakmap.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/isweakset.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/iteratee.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/join.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/kebabcase.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/keyby.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/keys.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/keysin.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/last.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/lastindexof.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/lowercase.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/lowerfirst.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/lt.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/lte.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/map.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/mapkeys.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/mapvalues.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/matches.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/matchesproperty.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/max.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/maxby.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/mean.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/meanby.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/memoize.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/merge.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/mergewith.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/method.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/methodof.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/min.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/minby.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/mixin.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/multiply.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/negate.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/noop.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/now.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/nth.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/ntharg.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/omit.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/omitby.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/once.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/orderby.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/over.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/overargs.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/overevery.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/oversome.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/pad.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/padend.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/padstart.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/parseint.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/partial.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/partialright.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/partition.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/pick.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/pickby.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/property.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/propertyof.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/pull.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/pullall.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/pullallby.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/pullallwith.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/pullat.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/random.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/range.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/rangeright.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/rearg.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/reduce.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/reduceright.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/reject.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/remove.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/repeat.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/replace.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/rest.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/result.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/reverse.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/round.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/sample.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/samplesize.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/set.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/setwith.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/shuffle.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/size.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/slice.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/snakecase.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/some.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/sortby.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/sortedindex.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/sortedindexby.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/sortedindexof.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/sortedlastindex.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/sortedlastindexby.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/sortedlastindexof.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/sorteduniq.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/sorteduniqby.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/split.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/spread.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/startcase.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/startswith.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/stubarray.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/stubfalse.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/stubobject.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/stubstring.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/stubtrue.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/subtract.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/sum.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/sumby.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/tail.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/take.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/takeright.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/takerightwhile.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/takewhile.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/tap.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/template.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/templatesettings.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/throttle.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/thru.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/times.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/toarray.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/tofinite.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/tointeger.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/tolength.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/tolower.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/tonumber.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/topairs.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/topairsin.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/topath.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/toplainobject.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/tosafeinteger.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/tostring.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/toupper.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/transform.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/trim.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/trimend.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/trimstart.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/truncate.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/unary.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/unescape.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/union.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/unionby.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/unionwith.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/uniq.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/uniqby.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/uniqueid.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/uniqwith.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/unset.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/unzip.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/unzipwith.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/update.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/updatewith.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/uppercase.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/upperfirst.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/values.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/valuesin.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/without.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/words.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/wrap.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/xor.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/xorby.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/xorwith.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/zip.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/zipobject.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/zipobjectdeep.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/zipwith.d.ts","./node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es/index.d.ts","./node_modules/.pnpm/lodash-unified@1.0.3_@types_168785b94d783e1b7a7274df40d5f9d9/node_modules/lodash-unified/type.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/arrays.d.ts","./node_modules/.pnpm/@vueuse+shared@12.0.0_typescript@5.7.3/node_modules/@vueuse/shared/index.d.mts","./node_modules/.pnpm/@vueuse+core@12.0.0_typescript@5.7.3/node_modules/@vueuse/core/index.d.mts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/browser.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/error.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/functions.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/i18n.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/objects.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/raf.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/rand.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/strings.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/types.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/throttlebyraf.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/easings.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/numbers.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/utils/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/affix/src/affix.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/affix/src/affix.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/affix/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/alert/src/alert.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/alert/src/alert.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/alert/src/instance.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/alert/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/anchor/src/anchor.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/anchor/src/anchor.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/anchor/src/anchor-link.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/anchor/src/anchor-link.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/anchor/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/input/src/input.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/input/src/input.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/input/src/instance.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/input/index.d.ts","./node_modules/.pnpm/@sxzz+popperjs-es@2.11.8/node_modules/@sxzz/popperjs-es/lib/enums.d.ts","./node_modules/.pnpm/@sxzz+popperjs-es@2.11.8/node_modules/@sxzz/popperjs-es/lib/modifiers/popperoffsets.d.ts","./node_modules/.pnpm/@sxzz+popperjs-es@2.11.8/node_modules/@sxzz/popperjs-es/lib/modifiers/flip.d.ts","./node_modules/.pnpm/@sxzz+popperjs-es@2.11.8/node_modules/@sxzz/popperjs-es/lib/modifiers/hide.d.ts","./node_modules/.pnpm/@sxzz+popperjs-es@2.11.8/node_modules/@sxzz/popperjs-es/lib/modifiers/offset.d.ts","./node_modules/.pnpm/@sxzz+popperjs-es@2.11.8/node_modules/@sxzz/popperjs-es/lib/modifiers/eventlisteners.d.ts","./node_modules/.pnpm/@sxzz+popperjs-es@2.11.8/node_modules/@sxzz/popperjs-es/lib/modifiers/computestyles.d.ts","./node_modules/.pnpm/@sxzz+popperjs-es@2.11.8/node_modules/@sxzz/popperjs-es/lib/modifiers/arrow.d.ts","./node_modules/.pnpm/@sxzz+popperjs-es@2.11.8/node_modules/@sxzz/popperjs-es/lib/modifiers/preventoverflow.d.ts","./node_modules/.pnpm/@sxzz+popperjs-es@2.11.8/node_modules/@sxzz/popperjs-es/lib/modifiers/applystyles.d.ts","./node_modules/.pnpm/@sxzz+popperjs-es@2.11.8/node_modules/@sxzz/popperjs-es/lib/types.d.ts","./node_modules/.pnpm/@sxzz+popperjs-es@2.11.8/node_modules/@sxzz/popperjs-es/lib/modifiers/index.d.ts","./node_modules/.pnpm/@sxzz+popperjs-es@2.11.8/node_modules/@sxzz/popperjs-es/lib/utils/detectoverflow.d.ts","./node_modules/.pnpm/@sxzz+popperjs-es@2.11.8/node_modules/@sxzz/popperjs-es/lib/createpopper.d.ts","./node_modules/.pnpm/@sxzz+popperjs-es@2.11.8/node_modules/@sxzz/popperjs-es/lib/popper-lite.d.ts","./node_modules/.pnpm/@sxzz+popperjs-es@2.11.8/node_modules/@sxzz/popperjs-es/lib/popper.d.ts","./node_modules/.pnpm/@sxzz+popperjs-es@2.11.8/node_modules/@sxzz/popperjs-es/lib/index.d.ts","./node_modules/.pnpm/@sxzz+popperjs-es@2.11.8/node_modules/@sxzz/popperjs-es/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/popper/src/constants.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/popper/src/popper.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/popper/src/popper.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/popper/src/arrow.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/popper/src/trigger.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/popper/src/trigger.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/avatar/src/avatar.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/avatar/src/constants.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/popper/src/arrow.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/popper/src/content.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/popper/src/content.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/popper/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/avatar/src/avatar-group-props.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/avatar/src/avatar.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/avatar/src/avatar-group.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/avatar/src/instance.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/avatar/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/backtop/src/backtop.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/backtop/src/backtop.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/backtop/src/instance.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/backtop/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/badge/src/badge.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/badge/src/badge.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/badge/src/instance.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/badge/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/breadcrumb/src/breadcrumb.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/breadcrumb/src/breadcrumb-item.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/breadcrumb/src/constants.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/breadcrumb/src/breadcrumb.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/breadcrumb/src/breadcrumb-item.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/breadcrumb/src/instances.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/breadcrumb/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/button/src/button.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/button/src/constants.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/button/src/button.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/button/src/button-group.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/button/src/button-group.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/button/src/instance.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/button/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/calendar/src/calendar.d.ts","./node_modules/.pnpm/dayjs@1.11.20/node_modules/dayjs/locale/types.d.ts","./node_modules/.pnpm/dayjs@1.11.20/node_modules/dayjs/locale/index.d.ts","./node_modules/.pnpm/dayjs@1.11.20/node_modules/dayjs/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/calendar/src/calendar.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/calendar/src/date-table.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/calendar/src/date-table.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/calendar/src/instance.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/calendar/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/card/src/card.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/card/src/card.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/card/src/instance.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/card/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/carousel/src/carousel.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/carousel/src/carousel-item.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/carousel/src/constants.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/carousel/src/carousel.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/carousel/src/carousel-item.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/carousel/src/instance.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/carousel/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/cascader-panel/src/types.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/cascader-panel/src/node.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/cascader-panel/src/menu.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/cascader-panel/src/config.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/cascader-panel/src/index.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/cascader-panel/src/instance.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/cascader-panel/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/use-attrs/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/use-calc-input-width/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/use-deprecated/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/use-draggable/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/use-focus/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/en.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/af.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/ar-eg.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/ar.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/az.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/bg.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/bn.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/ca.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/ckb.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/cs.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/da.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/de.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/el.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/eo.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/es.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/et.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/eu.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/fa.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/fi.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/fr.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/he.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/hi.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/hr.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/hu.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/hy-am.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/id.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/it.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/ja.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/kk.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/km.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/ko.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/ku.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/ky.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/lo.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/lt.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/lv.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/mg.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/mn.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/ms.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/my.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/nb-no.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/nl.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/no.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/pa.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/pl.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/pt-br.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/pt.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/ro.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/ru.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/sk.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/sl.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/sr.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/sv.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/sw.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/ta.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/te.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/th.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/tk.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/tr.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/ug-cn.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/uk.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/uz-uz.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/vi.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/zh-tw.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/zh-hk.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/lang/zh-mo.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/locale/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/use-locale/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/use-namespace/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/use-lockscreen/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/use-modal/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/use-model-toggle/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/use-prevent-global/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/use-prop/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/use-popper/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/use-same-target/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/use-teleport/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/use-throttle-render/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/use-timeout/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/use-transition-fallthrough/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/use-id/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/use-escape-keydown/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/use-popper-container/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/use-intermediate-render/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/use-delayed-toggle/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/use-forward-ref/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/use-z-index/index.d.ts","./node_modules/.pnpm/@floating-ui+utils@0.2.11/node_modules/@floating-ui/utils/dist/floating-ui.utils.d.mts","./node_modules/.pnpm/@floating-ui+core@1.7.5/node_modules/@floating-ui/core/dist/floating-ui.core.d.mts","./node_modules/.pnpm/@floating-ui+utils@0.2.11/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.d.mts","./node_modules/.pnpm/@floating-ui+dom@1.7.6/node_modules/@floating-ui/dom/dist/floating-ui.dom.d.mts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/use-floating/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/use-cursor/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/use-ordered-children/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/use-size/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/use-focus-controller/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/use-composition/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/use-empty-values/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/use-aria/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/hooks/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tag/src/tag.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tag/src/tag.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tag/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/cascader/src/cascader.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/cascader/src/cascader.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/cascader/src/instances.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/cascader/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/check-tag/src/check-tag.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/check-tag/src/check-tag.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/check-tag/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/checkbox/src/checkbox.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/checkbox/src/checkbox.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/checkbox/src/checkbox-group.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/checkbox/src/checkbox-group.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/checkbox/src/constants.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/checkbox/src/checkbox-button.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/checkbox/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/col/src/col.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/col/src/col.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/col/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/collapse/src/collapse.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/collapse/src/collapse-item.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/collapse/src/constants.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/collapse/src/collapse.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/collapse/src/collapse-item.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/collapse/src/instance.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/collapse/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/collapse-transition/src/collapse-transition.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/collapse-transition/index.d.ts","./node_modules/.pnpm/@ctrl+tinycolor@4.2.0/node_modules/@ctrl/tinycolor/dist/interfaces.d.ts","./node_modules/.pnpm/@ctrl+tinycolor@4.2.0/node_modules/@ctrl/tinycolor/dist/index.d.ts","./node_modules/.pnpm/@ctrl+tinycolor@4.2.0/node_modules/@ctrl/tinycolor/dist/css-color-names.d.ts","./node_modules/.pnpm/@ctrl+tinycolor@4.2.0/node_modules/@ctrl/tinycolor/dist/readability.d.ts","./node_modules/.pnpm/@ctrl+tinycolor@4.2.0/node_modules/@ctrl/tinycolor/dist/to-ms-filter.d.ts","./node_modules/.pnpm/@ctrl+tinycolor@4.2.0/node_modules/@ctrl/tinycolor/dist/from-ratio.d.ts","./node_modules/.pnpm/@ctrl+tinycolor@4.2.0/node_modules/@ctrl/tinycolor/dist/format-input.d.ts","./node_modules/.pnpm/@ctrl+tinycolor@4.2.0/node_modules/@ctrl/tinycolor/dist/random.d.ts","./node_modules/.pnpm/@ctrl+tinycolor@4.2.0/node_modules/@ctrl/tinycolor/dist/conversion.d.ts","./node_modules/.pnpm/@ctrl+tinycolor@4.2.0/node_modules/@ctrl/tinycolor/dist/public_api.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/color-picker-panel/src/utils/color.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/color-picker-panel/src/color-picker-panel.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/color-picker-panel/src/color-picker-panel.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/color-picker-panel/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tooltip/src/trigger.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tooltip/src/content.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tooltip/src/content.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tooltip/src/tooltip.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tooltip/src/tooltip.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tooltip/src/constants.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tooltip/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/color-picker/src/color-picker.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/color-picker/src/color-picker.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/color-picker/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/dialog/src/dialog-content.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/dialog/src/dialog.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/dialog/src/dialog.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/dialog/src/use-dialog.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/dialog/src/constants.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/dialog/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/message/src/message.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/message/src/message.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/message/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/link/src/link.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/link/src/link.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/link/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table/src/store/tree.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table/src/store/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table/src/table-header/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table/src/table-layout.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table/src/table/defaults.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table/src/util.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table/src/table-column/defaults.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/scrollbar/src/scrollbar.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/scrollbar/src/scrollbar.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/scrollbar/src/thumb.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/scrollbar/src/thumb.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/scrollbar/src/util.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/scrollbar/src/constants.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/scrollbar/index.d.ts","./node_modules/.pnpm/normalize-wheel-es@1.2.0/node_modules/normalize-wheel-es/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/directives/mousewheel/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table/src/table-body/defaults.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table/src/table-footer/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table/src/h-helper.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table/src/table.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table/src/table-column/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table/src/tablecolumn.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/config-provider/src/config-provider-props.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/config-provider/src/config-provider.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/config-provider/src/constants.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/config-provider/src/hooks/use-global-config.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/config-provider/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/container/src/container.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/container/src/aside.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/container/src/footer.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/container/src/header.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/container/src/main.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/container/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/countdown/src/countdown.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/countdown/src/countdown.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/countdown/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/time-picker/src/common/props.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/time-picker/src/common/picker.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/time-picker/src/time-picker-com/panel-time-pick.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/time-picker/src/utils.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/time-picker/src/composables/use-common-picker.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/time-picker/src/constants.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/time-picker/src/time-picker.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/time-picker/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/date-picker-panel/src/constants.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/date-picker-panel/src/types.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/date-picker-panel/src/props/date-picker-panel.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/date-picker-panel/src/date-picker-panel.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/date-picker-panel/src/instance.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/date-picker-panel/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/date-picker/src/props.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/date-picker/src/date-picker.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/date-picker/src/instance.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/date-picker/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/descriptions/src/description.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/descriptions/src/description.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/descriptions/src/description-item.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/descriptions/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/divider/src/divider.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/divider/src/divider.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/divider/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/drawer/src/drawer.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/drawer/src/drawer.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/drawer/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/icon/src/icon.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/icon/src/icon.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/icon/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/dropdown/src/dropdown.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/dropdown/src/dropdown.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/dropdown/src/instance.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/dropdown/src/tokens.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/dropdown/src/dropdown-item.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/dropdown/src/dropdown-menu.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/dropdown/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/empty/src/empty.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/empty/src/empty.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/empty/src/instance.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/empty/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/form/src/utils.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/form/src/form.d.ts","./node_modules/.pnpm/async-validator@4.2.5/node_modules/async-validator/dist-types/interface.d.ts","./node_modules/.pnpm/async-validator@4.2.5/node_modules/async-validator/dist-types/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/form/src/types.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/form/src/form-item.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/form/src/constants.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/form/src/hooks/use-form-common-props.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/form/src/hooks/use-form-item.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/form/src/form.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/form/src/form-item.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/form/src/hooks/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/form/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/image-viewer/src/image-viewer.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/image-viewer/src/image-viewer.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/image-viewer/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/image/src/image.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/image/src/image.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/image/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/input-number/src/input-number.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/input-number/src/input-number.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/input-number/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/input-tag/src/input-tag.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/input-tag/src/input-tag.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/input-tag/src/instance.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/input-tag/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/menu/src/menu.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/menu/src/types.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/menu/src/menu-item.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/menu/src/menu-item-group.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/menu/src/sub-menu.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/menu/src/menu-item.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/menu/src/menu-item-group.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/menu/src/instance.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/menu/src/tokens.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/menu/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/overlay/src/overlay.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/overlay/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/page-header/src/page-header.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/page-header/src/page-header.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/page-header/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/pagination/src/pagination.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/pagination/src/constants.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/pagination/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/popconfirm/src/popconfirm.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/popconfirm/src/popconfirm.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/popconfirm/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/progress/src/progress.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/progress/src/progress.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/progress/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/radio/src/radio.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/radio/src/radio.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/radio/src/radio-button.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/radio/src/radio-button.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/radio/src/radio-group.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/radio/src/radio-group.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/radio/src/constants.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/radio/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/rate/src/rate.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/rate/src/rate.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/rate/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/result/src/result.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/result/src/result.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/result/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/row/src/row.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/row/src/row.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/row/src/constants.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/row/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/virtual-list/src/defaults.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/virtual-list/src/types.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/virtual-list/src/components/fixed-size-list.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/virtual-list/src/components/dynamic-size-list.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/virtual-list/src/components/fixed-size-grid.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/virtual-list/src/props.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/virtual-list/src/hooks/use-cache.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/virtual-list/src/builders/build-grid.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/virtual-list/src/components/dynamic-size-grid.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/select-v2/src/select.types.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/virtual-list/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/select-v2/src/select-dropdown.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/select-v2/src/token.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/select-v2/src/useprops.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/select-v2/src/select.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/select-v2/src/defaults.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/select/src/option.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/select/src/type.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/select/src/select.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/select/src/select.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/select/src/token.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/select/src/option.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/select/src/option-group.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/select/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/select-v2/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/skeleton/src/skeleton.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/skeleton/src/skeleton.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/skeleton/src/skeleton-item.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/skeleton/src/skeleton-item.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/skeleton/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/slider/src/slider.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/slider/src/marker.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/slider/src/slider.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/slider/src/composables/use-marks.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/slider/src/constants.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/slider/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/space/src/space.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/space/src/item.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/space/src/use-space.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/space/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/statistic/src/statistic.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/statistic/src/statistic.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/statistic/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/steps/src/steps.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/steps/src/steps.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/steps/src/item.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/steps/src/item.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/steps/src/tokens.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/steps/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/switch/src/switch.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/switch/src/switch.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/switch/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table-v2/src/constants.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table-v2/src/types.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table-v2/src/common.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table-v2/src/row.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table-v2/src/grid.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table-v2/src/table.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table-v2/src/table-grid.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table-v2/src/composables/use-scrollbar.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table-v2/src/header-row.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table-v2/src/components/header-row.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table-v2/src/components/row.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table-v2/src/cell.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table-v2/src/components/cell.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table-v2/src/header-cell.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table-v2/src/components/header-cell.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table-v2/src/header.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table-v2/src/composables/use-columns.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table-v2/src/components/header.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table-v2/src/components/sort-icon.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table-v2/src/components/expand-icon.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table-v2/src/components/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table-v2/src/table-v2.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table-v2/src/auto-resizer.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table-v2/src/private.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table-v2/src/composables/use-row.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table-v2/src/composables/use-data.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table-v2/src/composables/use-styles.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table-v2/src/composables/use-auto-resize.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table-v2/src/composables/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table-v2/src/use-table.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table-v2/src/renderers/header-cell.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table-v2/src/components/auto-resizer.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/table-v2/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tabs/src/tab-pane.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tabs/src/tab-pane.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tabs/src/tab-bar.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tabs/src/tab-bar.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tabs/src/tab-nav.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tabs/src/tabs.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tabs/src/constants.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tabs/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/text/src/text.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/text/src/text.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/text/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/time-select/src/time-select.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/time-select/src/time-select.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/time-select/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/timeline/src/timeline.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/timeline/src/timeline-item.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/timeline/src/timeline-item.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/timeline/src/tokens.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/timeline/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/transfer/src/transfer-panel.vue.d.ts","./node_modules/.pnpm/vue-component-type-helpers@3.2.8/node_modules/vue-component-type-helpers/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/transfer/src/transfer-panel.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/transfer/src/transfer.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/transfer/src/transfer.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/transfer/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tree/src/model/usedragnode.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tree/src/tree.type.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tree/src/model/tree-store.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tree/src/model/node.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tree/src/tree.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tree/src/tree.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tree/src/instance.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tree/src/tokens.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tree/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tree-select/src/instance.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tree-select/src/tree-select.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tree-select/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tree-v2/src/virtual-tree.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tree-v2/src/types.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tree-v2/src/tree.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tree-v2/src/instance.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tree-v2/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/upload/src/ajax.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/upload/src/upload.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/upload/src/upload.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/upload/src/upload-content.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/upload/src/upload-content.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/upload/src/upload-list.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/upload/src/upload-list.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/upload/src/upload-dragger.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/upload/src/upload-dragger.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/upload/src/constants.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/upload/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/watermark/src/watermark.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/watermark/src/watermark.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/watermark/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tour/src/content.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tour/src/types.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tour/src/tour.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tour/src/tour.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tour/src/step.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tour/src/step.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tour/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/segmented/src/types.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/segmented/src/segmented.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/segmented/src/segmented.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/segmented/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/mention/src/types.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/mention/src/helper.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/mention/src/mention.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/mention/src/mention.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/mention/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/splitter/src/type.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/splitter/src/splitter.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/splitter/src/splitter.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/splitter/src/split-panel.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/splitter/src/split-panel.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/splitter/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/infinite-scroll/src/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/infinite-scroll/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/loading/src/types.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/loading/src/loading.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/loading/src/service.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/loading/src/directive.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/loading/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/message-box/src/message-box.type.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/message-box/src/messagebox.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/message-box/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/notification/src/notification.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/notification/src/notification.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/notification/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/popover/src/popover.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/popover/src/popover.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/popover/src/directive.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/popover/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/autocomplete/src/autocomplete.vue.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/autocomplete/src/autocomplete.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/autocomplete/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/defaults.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/directives/click-outside/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/directives/repeat-click/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/directives/trap-focus/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/directives/index.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/make-installer.d.ts","./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/index.d.ts","./src/utils/feedback.ts","./src/layout/default/components/header/user-drop-down.vue","./src/layout/default/components/header/index.vue","./src/layout/default/components/main.vue","./src/layout/default/components/sidebar/logo.vue","./src/utils/util.ts","./src/layout/default/components/sidebar/menu-item.vue","./src/layout/default/components/sidebar/menu.vue","./src/layout/default/components/sidebar/side.vue","./src/layout/default/components/sidebar/index.vue","./src/layout/default/index.vue","./src/views/error/components/error.vue","./src/views/error/404.vue","./src/views/error/403.vue","./src/hooks/uselockfn.ts","./src/layout/components/footer.vue","./src/views/account/login.vue","./src/views/account/change-password.vue","./src/utils/wecomoauthpostmessage.ts","./src/views/account/bind-work-wechat.vue","./src/views/user/setting.vue","./node_modules/dayjs/locale/types.d.ts","./node_modules/dayjs/locale/index.d.ts","./node_modules/dayjs/index.d.ts","./src/api/doctor.ts","./src/views/doctor/progress.vue","./src/api/decoration.ts","./src/views/decoration/component/widgets/index.ts","./src/views/decoration/component/pages/preview-pc.vue","./src/views/decoration/pc_details.vue","./src/api/fans.ts","./src/views/fans/h5.vue","./src/api/tcm.ts","./src/api/order.ts","./src/api/channel/weapp.ts","./src/hooks/usepaging.ts","./src/utils/perm.ts","./node_modules/.pnpm/vue-demi@0.13.11_vue@3.5.33_typescript@5.7.3_/node_modules/vue-demi/lib/index.d.ts","./node_modules/.pnpm/echarts@5.6.0/node_modules/echarts/types/dist/shared.d.ts","./node_modules/.pnpm/echarts@5.6.0/node_modules/echarts/types/dist/core.d.ts","./node_modules/.pnpm/echarts@5.6.0/node_modules/echarts/core.d.ts","./node_modules/.pnpm/echarts@5.6.0/node_modules/echarts/types/dist/echarts.d.ts","./node_modules/.pnpm/echarts@5.6.0/node_modules/echarts/index.d.ts","./node_modules/.pnpm/vue-echarts@6.7.3_@vue+runt_9e349b8fe817591c55152dc2c2ed6abf/node_modules/vue-echarts/dist/index.d.ts","./src/views/tcm/diagnosis/components/diagnosistodolist.vue","./src/utils/blood-thresholds.ts","./src/views/tcm/diagnosis/components/dailymatrix.vue","./src/views/tcm/diagnosis/components/caserecordlist.vue","./node_modules/.pnpm/hls.js@1.6.19/node_modules/hls.js/dist/hls.d.mts","./src/views/tcm/diagnosis/components/recordingvideoplayer.vue","./src/views/tcm/diagnosis/components/recordingplaybackblock.vue","./node_modules/.pnpm/cos-js-sdk-v5@1.10.1/node_modules/cos-js-sdk-v5/index.d.ts","./src/api/file.ts","./src/utils/oss-direct-upload.ts","./src/components/upload/index.vue","./src/views/tcm/diagnosis/components/callrecordpanel.vue","./src/utils/im-business-message-parse.ts","./src/views/tcm/diagnosis/components/imchatrecordpanel.vue","./src/views/tcm/diagnosis/components/assignlogpanel.vue","./src/views/tcm/diagnosis/components/appointmentrecordpanel.vue","./src/api/patient.ts","./src/views/patient/reception/components/notetimeline.vue","./src/views/tcm/diagnosis/components/trackingnotetimeline.vue","./src/views/consumer/prescription/components/prescription-order-utils.ts","./src/views/consumer/prescription/components/prescriptionorderdetaildrawer.vue","./src/views/tcm/diagnosis/components/patientorderlist.vue","./src/api/medicine.ts","./src/components/medicine-name-select/index.vue","./src/utils/diabetes-discovery-display.ts","./src/components/prescription-slip/utils.ts","./src/components/prescription-slip/index.vue","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/core/logger.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/core/cache-storage.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/core/context.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/layout/bounds.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/dom/document-cloner.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/syntax/tokenizer.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/syntax/parser.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/types/index.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/ipropertydescriptor.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/background-clip.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/itypedescriptor.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/types/color.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/types/length-percentage.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/types/image.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/background-image.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/background-origin.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/background-position.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/background-repeat.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/background-size.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/border-radius.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/border-style.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/border-width.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/direction.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/display.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/float.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/letter-spacing.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/line-break.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/list-style-image.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/list-style-position.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/list-style-type.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/overflow.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/overflow-wrap.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/text-align.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/position.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/types/length.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/text-shadow.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/text-transform.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/transform.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/transform-origin.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/visibility.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/word-break.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/z-index.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/opacity.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/text-decoration-line.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/font-family.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/font-weight.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/font-variant.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/font-style.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/content.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/counter-increment.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/counter-reset.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/duration.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/quotes.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/box-shadow.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/paint-order.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/property-descriptors/webkit-text-stroke-width.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/index.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/css/layout/text.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/dom/text-container.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/dom/element-container.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/render/vector.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/render/bezier-curve.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/render/path.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/render/bound-curves.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/render/effects.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/render/stacking-context.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/dom/replaced-elements/canvas-element-container.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/dom/replaced-elements/image-element-container.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/dom/replaced-elements/svg-element-container.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/dom/replaced-elements/index.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/render/renderer.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/render/canvas/canvas-renderer.d.ts","./node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/types/index.d.ts","./node_modules/.pnpm/jspdf@2.5.2/node_modules/jspdf/types/index.d.ts","./src/components/tcm-prescription/index.vue","./src/views/tcm/diagnosis/edit.vue","./src/views/tcm/diagnosis/detail.vue","./node_modules/dayjs/plugin/isoweek.d.ts","./src/api/first_visit.ts","./src/views/tcm/diagnosis/appointment.vue","./node_modules/.pnpm/trtc-sdk-v5@5.17.1/node_modules/trtc-sdk-v5/plugins/cdn-streaming/cdn-streaming.esm.d.ts","./node_modules/.pnpm/trtc-sdk-v5@5.17.1/node_modules/trtc-sdk-v5/plugins/device-detector/device-detector.esm.d.ts","./node_modules/.pnpm/trtc-sdk-v5@5.17.1/node_modules/trtc-sdk-v5/plugins/video-effect/virtual-background/virtual-background.esm.d.ts","./node_modules/.pnpm/trtc-sdk-v5@5.17.1/node_modules/trtc-sdk-v5/plugins/video-effect/watermark/watermark.esm.d.ts","./node_modules/.pnpm/trtc-sdk-v5@5.17.1/node_modules/trtc-sdk-v5/plugins/video-effect/beauty/beauty.esm.d.ts","./node_modules/.pnpm/trtc-sdk-v5@5.17.1/node_modules/trtc-sdk-v5/plugins/video-effect/basic-beauty/basic-beauty.esm.d.ts","./node_modules/.pnpm/trtc-sdk-v5@5.17.1/node_modules/trtc-sdk-v5/plugins/cross-room/cross-room.esm.d.ts","./node_modules/.pnpm/trtc-sdk-v5@5.17.1/node_modules/trtc-sdk-v5/plugins/custom-encryption/custom-encryption.esm.d.ts","./node_modules/.pnpm/trtc-sdk-v5@5.17.1/node_modules/trtc-sdk-v5/plugins/video-effect/video-mixer/video-mixer.esm.d.ts","./node_modules/.pnpm/trtc-sdk-v5@5.17.1/node_modules/trtc-sdk-v5/plugins/small-stream-auto-switcher/small-stream-auto-switcher.esm.d.ts","./node_modules/.pnpm/trtc-sdk-v5@5.17.1/node_modules/trtc-sdk-v5/plugins/chorus/chorus.esm.d.ts","./node_modules/.pnpm/trtc-sdk-v5@5.17.1/node_modules/trtc-sdk-v5/plugins/lebplayer/lebplayer.esm.d.ts","./node_modules/.pnpm/trtc-sdk-v5@5.17.1/node_modules/trtc-sdk-v5/plugins/realtime-transcriber/realtime-transcriber.esm.d.ts","./node_modules/.pnpm/trtc-sdk-v5@5.17.1/node_modules/trtc-sdk-v5/index.d.ts","./src/views/tcm/diagnosis/components/assistantwatchcalldialog.vue","./src/views/tcm/diagnosis/index_h5.vue","./src/utils/diag-display.ts","./src/views/tcm/diagnosis/components/patientinfocard.vue","./src/views/tcm/diagnosis/components/patientcasecard.vue","./src/views/tcm/diagnosis/readonly.vue","./src/router/routes.ts","./src/router/index.ts","./src/utils/request/cancel.ts","./src/utils/request/type.d.ts","./src/utils/request/axios.ts","./src/utils/wecombindguard.ts","./src/utils/request/index.ts","./src/api/app.ts","./src/stores/modules/app.ts","./src/api/chat.ts","./src/components/chat-notify-toast/index.vue","./src/app.vue","./src/permission.ts","./src/install/index.ts","./src/main.ts","./src/api/article.ts","./src/api/asset.ts","./src/api/consumer.ts","./src/api/finance.ts","./src/api/message.ts","./src/api/pharmacy.ts","./src/api/qywx-msg.ts","./src/api/qywx.ts","./src/api/self_input_stats.ts","./src/api/stats.ts","./src/api/app/recharge.ts","./src/api/channel/h5.ts","./src/api/channel/open_setting.ts","./src/api/channel/wx_oa.ts","./src/api/org/department.ts","./src/api/org/post.ts","./src/api/perms/admin.ts","./src/api/perms/menu.ts","./src/api/perms/role.ts","./src/api/setting/dict.ts","./src/api/setting/pay.ts","./src/api/setting/search.ts","./src/api/setting/storage.ts","./src/api/setting/user.ts","./src/api/setting/website.ts","./src/api/tools/code.ts","./node_modules/.pnpm/@tencentcloud+chat-uikit-vu_9fd9fcdfcee31e157ce6c6ef7e26af46/node_modules/@tencentcloud/chat-uikit-vue3/dist/components/chat/chat.vue.d.ts","./node_modules/.pnpm/@tencentcloud+chat-uikit-vu_9fd9fcdfcee31e157ce6c6ef7e26af46/node_modules/@tencentcloud/chat-uikit-vue3/dist/components/chat/index.d.ts","./node_modules/.pnpm/@tencentcloud+chat-uikit-vu_9fd9fcdfcee31e157ce6c6ef7e26af46/node_modules/@tencentcloud/chat-uikit-vue3/dist/components/chatheader/chatheader.vue.d.ts","./node_modules/.pnpm/@tencentcloud+chat-uikit-vu_9fd9fcdfcee31e157ce6c6ef7e26af46/node_modules/@tencentcloud/chat-uikit-vue3/dist/components/chatheader/hooks/usechatheader.d.ts","./node_modules/.pnpm/@tencentcloud+chat-uikit-vu_9fd9fcdfcee31e157ce6c6ef7e26af46/node_modules/@tencentcloud/chat-uikit-vue3/dist/components/chatheader/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/types/login.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/states/loginstate.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/components/avatar/avatar.vue.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/components/avatar/constants/avatar.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/components/avatar/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/components/userpicker/type.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/components/userpicker/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/basecomp/view/view.vue.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/basecomp/view/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/components/chatsetting/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/states/uikitmodalstate/uikitmodalstate.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/states/uikitmodalstate/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/components/uikitmodal/type.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/components/uikitmodal/uikitmodal.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/components/uikitmodal/useroommodal/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/components/uikitmodal/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/subentry/common/base.d.ts","./node_modules/.pnpm/@tencentcloud+chat@3.5.9/node_modules/@tencentcloud/chat/index.d.ts","./node_modules/.pnpm/@tencentcloud+tuiroom-engine-js@3.5.2/node_modules/@tencentcloud/tuiroom-engine-js/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/types/device.d.ts","./node_modules/.pnpm/@tencentcloud+chat@3.6.7/node_modules/@tencentcloud/chat/index.d.ts","./node_modules/.pnpm/@tencentcloud+chat-uikit-engine@2.5.8/node_modules/@tencentcloud/chat-uikit-engine/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/types/message.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/hooks/useofflinepushinfo/types.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/hooks/useofflinepushinfo/useofflinepushinfo.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/hooks/useofflinepushinfo/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/types/engine.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/types/search.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/types/contact.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/types/conversation.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/types/call.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/states/groupsettingstate/types.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/types/chatsetting.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/types/types.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/types/live.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/types/stream.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/types/videomixer.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/types/audience.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/types/seat.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/types/monitor.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/types/coguest.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/types/cohost.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/types/battle.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/types/barrage.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/types/room.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/types/participant.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/types/beauty.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/types/virtualbackground.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/types/user.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/types/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/states/devicestate/devicestate.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/states/devicestate/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/hooks/useroomengine.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/components/audiosettingpanel/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/components/videosettingpanel/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/subentry/common/rtc.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/subentry/common/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/states/barragestate/barragestate.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/states/barragestate/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/states/battlestate/battlestate.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/states/battlestate/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/states/cogueststate.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/states/cohoststate/cohoststate.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/states/cohoststate/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/states/liveaudiencestate.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/states/liveliststate/liveliststate.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/states/liveliststate/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/states/livemonitorstate/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/utils/eventcenter.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/states/liveseatstate/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/states/videomixerstate/videomixerstate.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/states/videomixerstate/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/components/barrageinput/barrageinputh5.vue.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/components/barrageinput/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/components/barragelist/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/components/camerabutton/index.vue.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/components/camerabutton/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/components/coguestpanel/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/components/cohostpanel/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/components/liveaudiencelist/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/components/livelist/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/components/livemonitorview/livemonitorview.vue.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/components/livemonitorview/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/components/livescenepanel/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/components/liveview/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/components/micbutton/index.vue.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/components/micbutton/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/components/streammixer/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/subentry/live/live.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/types/asr.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/states/asrstate/asrstate.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/states/freebeautystate/freebeautystate.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/states/freebeautystate/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/states/roomparticipantstate/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/states/roomstate/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/states/virtualbackgroundstate/virtualbackgroundstate.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/states/virtualbackgroundstate/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/components/roomparticipantlist/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/components/roomparticipantview/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/components/roomview/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/components/scheduleroompanel/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/components/virtualbackgroundpanel/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/components/freebeautypanel/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/subentry/room/room.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/i18n/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/components/contactlist/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/components/conversationlist/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/components/messageinput/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/hooks/usemessageactions.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/components/messagelist/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/components/search/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/states/c2csettingstate/c2csettingstate.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/states/c2csettingstate/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/states/contactliststate/contactliststate.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/states/contactliststate/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/states/conversationliststate/conversationliststate.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/states/conversationliststate/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/states/groupsettingstate/groupsettingstate.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/states/groupsettingstate/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/states/messageactionstate/messageactionstate.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/states/messageactionstate/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/states/messageinputstate/type.d.ts","./node_modules/.pnpm/orderedmap@2.1.1/node_modules/orderedmap/dist/index.d.ts","./node_modules/.pnpm/prosemirror-model@1.25.4/node_modules/prosemirror-model/dist/index.d.ts","./node_modules/.pnpm/prosemirror-transform@1.12.0/node_modules/prosemirror-transform/dist/index.d.ts","./node_modules/.pnpm/prosemirror-view@1.41.8/node_modules/prosemirror-view/dist/index.d.ts","./node_modules/.pnpm/prosemirror-state@1.4.4/node_modules/prosemirror-state/dist/index.d.ts","./node_modules/.pnpm/@tiptap+pm@2.27.2/node_modules/@tiptap/pm/state/dist/index.d.ts","./node_modules/.pnpm/@tiptap+pm@2.27.2/node_modules/@tiptap/pm/model/dist/index.d.ts","./node_modules/.pnpm/@tiptap+pm@2.27.2/node_modules/@tiptap/pm/view/dist/index.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/eventemitter.d.ts","./node_modules/.pnpm/@tiptap+pm@2.27.2/node_modules/@tiptap/pm/transform/dist/index.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/inputrule.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/pasterule.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/node.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/mark.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/extension.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/types.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/extensionmanager.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/nodepos.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/extensions/clipboardtextserializer.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/blur.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/clearcontent.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/clearnodes.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/command.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/createparagraphnear.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/cut.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/deletecurrentnode.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/deletenode.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/deleterange.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/deleteselection.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/enter.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/exitcode.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/extendmarkrange.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/first.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/focus.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/foreach.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/insertcontent.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/insertcontentat.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/join.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/joinitembackward.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/joinitemforward.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/jointextblockbackward.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/jointextblockforward.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/keyboardshortcut.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/lift.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/liftemptyblock.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/liftlistitem.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/newlineincode.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/resetattributes.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/scrollintoview.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/selectall.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/selectnodebackward.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/selectnodeforward.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/selectparentnode.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/selecttextblockend.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/selecttextblockstart.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/setcontent.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/setmark.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/setmeta.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/setnode.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/setnodeselection.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/settextselection.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/sinklistitem.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/splitblock.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/splitlistitem.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/togglelist.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/togglemark.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/togglenode.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/togglewrap.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/undoinputrule.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/unsetallmarks.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/unsetmark.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/updateattributes.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/wrapin.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/wrapinlist.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commands/index.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/extensions/commands.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/extensions/drop.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/extensions/editable.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/extensions/focusevents.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/extensions/keymap.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/extensions/paste.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/extensions/tabindex.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/extensions/index.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/editor.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/commandmanager.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/combinetransactionsteps.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/createchainablestate.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/createdocument.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/createnodefromcontent.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/defaultblockat.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/findchildren.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/findchildreninrange.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/findparentnode.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/findparentnodeclosesttopos.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/generatehtml.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/generatejson.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/generatetext.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/getattributes.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/getattributesfromextensions.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/getchangedranges.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/getdebugjson.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/getextensionfield.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/gethtmlfromfragment.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/getmarkattributes.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/getmarkrange.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/getmarksbetween.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/getmarktype.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/getnodeatposition.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/getnodeattributes.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/getnodetype.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/getrenderedattributes.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/getschema.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/getschemabyresolvedextensions.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/getschematypebyname.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/getschematypenamebyname.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/getsplittedattributes.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/gettext.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/gettextbetween.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/gettextcontentfromnodes.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/gettextserializersfromschema.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/injectextensionattributestoparserule.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/isactive.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/isatendofnode.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/isatstartofnode.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/isextensionrulesenabled.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/islist.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/ismarkactive.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/isnodeactive.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/isnodeempty.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/isnodeselection.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/istextselection.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/postodomrect.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/resolvefocusposition.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/rewriteunknowncontent.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/selectiontoinsertionend.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/splitextensions.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/helpers/index.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/inputrules/markinputrule.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/inputrules/nodeinputrule.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/inputrules/textblocktypeinputrule.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/inputrules/textinputrule.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/inputrules/wrappinginputrule.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/inputrules/index.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/nodeview.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/pasterules/markpasterule.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/pasterules/nodepasterule.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/pasterules/textpasterule.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/pasterules/index.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/tracker.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/utilities/callorreturn.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/utilities/caninsertnode.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/utilities/createstyletag.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/utilities/deleteprops.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/utilities/elementfromstring.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/utilities/escapeforregex.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/utilities/findduplicates.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/utilities/fromstring.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/utilities/isemptyobject.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/utilities/isfunction.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/utilities/isios.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/utilities/ismacos.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/utilities/isnumber.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/utilities/isplainobject.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/utilities/isregexp.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/utilities/issafari.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/utilities/isstring.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/utilities/mergeattributes.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/utilities/mergedeep.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/utilities/minmax.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/utilities/objectincludes.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/utilities/removeduplicates.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/utilities/index.d.ts","./node_modules/.pnpm/@tiptap+core@2.27.2_@tiptap+pm@2.27.2/node_modules/@tiptap/core/dist/index.d.ts","./node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/enums.d.ts","./node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/popperoffsets.d.ts","./node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/flip.d.ts","./node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/hide.d.ts","./node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/offset.d.ts","./node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/eventlisteners.d.ts","./node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/computestyles.d.ts","./node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/arrow.d.ts","./node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/preventoverflow.d.ts","./node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/applystyles.d.ts","./node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/types.d.ts","./node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/index.d.ts","./node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/detectoverflow.d.ts","./node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/createpopper.d.ts","./node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/popper-lite.d.ts","./node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/popper.d.ts","./node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/index.d.ts","./node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/index.d.ts","./node_modules/.pnpm/tippy.js@6.3.7/node_modules/tippy.js/index.d.ts","./node_modules/.pnpm/@tiptap+extension-bubble-me_cb4d88b0b911ecd5388577427968ef89/node_modules/@tiptap/extension-bubble-menu/dist/bubble-menu-plugin.d.ts","./node_modules/.pnpm/@tiptap+extension-bubble-me_cb4d88b0b911ecd5388577427968ef89/node_modules/@tiptap/extension-bubble-menu/dist/bubble-menu.d.ts","./node_modules/.pnpm/@tiptap+extension-bubble-me_cb4d88b0b911ecd5388577427968ef89/node_modules/@tiptap/extension-bubble-menu/dist/index.d.ts","./node_modules/.pnpm/@tiptap+vue-3@2.27.2_@tipta_58f9c9cb8880c604b8226ea71b48e5d0/node_modules/@tiptap/vue-3/dist/bubblemenu.d.ts","./node_modules/.pnpm/@tiptap+vue-3@2.27.2_@tipta_58f9c9cb8880c604b8226ea71b48e5d0/node_modules/@tiptap/vue-3/dist/editor.d.ts","./node_modules/.pnpm/@tiptap+vue-3@2.27.2_@tipta_58f9c9cb8880c604b8226ea71b48e5d0/node_modules/@tiptap/vue-3/dist/editorcontent.d.ts","./node_modules/.pnpm/@tiptap+extension-floating-_8ade271869755387a8482cceb81d75f6/node_modules/@tiptap/extension-floating-menu/dist/floating-menu-plugin.d.ts","./node_modules/.pnpm/@tiptap+extension-floating-_8ade271869755387a8482cceb81d75f6/node_modules/@tiptap/extension-floating-menu/dist/floating-menu.d.ts","./node_modules/.pnpm/@tiptap+extension-floating-_8ade271869755387a8482cceb81d75f6/node_modules/@tiptap/extension-floating-menu/dist/index.d.ts","./node_modules/.pnpm/@tiptap+vue-3@2.27.2_@tipta_58f9c9cb8880c604b8226ea71b48e5d0/node_modules/@tiptap/vue-3/dist/floatingmenu.d.ts","./node_modules/.pnpm/@tiptap+vue-3@2.27.2_@tipta_58f9c9cb8880c604b8226ea71b48e5d0/node_modules/@tiptap/vue-3/dist/nodeviewcontent.d.ts","./node_modules/.pnpm/@tiptap+vue-3@2.27.2_@tipta_58f9c9cb8880c604b8226ea71b48e5d0/node_modules/@tiptap/vue-3/dist/nodeviewwrapper.d.ts","./node_modules/.pnpm/@tiptap+vue-3@2.27.2_@tipta_58f9c9cb8880c604b8226ea71b48e5d0/node_modules/@tiptap/vue-3/dist/useeditor.d.ts","./node_modules/.pnpm/@tiptap+vue-3@2.27.2_@tipta_58f9c9cb8880c604b8226ea71b48e5d0/node_modules/@tiptap/vue-3/dist/vuenodeviewrenderer.d.ts","./node_modules/.pnpm/@tiptap+vue-3@2.27.2_@tipta_58f9c9cb8880c604b8226ea71b48e5d0/node_modules/@tiptap/vue-3/dist/vuerenderer.d.ts","./node_modules/.pnpm/@tiptap+vue-3@2.27.2_@tipta_58f9c9cb8880c604b8226ea71b48e5d0/node_modules/@tiptap/vue-3/dist/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/states/messageinputstate/messageinputstate.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/states/messageinputstate/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/states/messageliststate/messageliststate.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/states/messageliststate/index.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/subentry/chat/chat.d.ts","./node_modules/.pnpm/tuikit-atomicx-vue3@4.5.7_@_1b2bb943b496f0826b0d1190c2b9611b/node_modules/tuikit-atomicx-vue3/dist/subentry/chat/index.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/constants/interface.d.ts","./node_modules/.pnpm/i18next@23.15.1/node_modules/i18next/typescript/helpers.d.ts","./node_modules/.pnpm/i18next@23.15.1/node_modules/i18next/typescript/options.d.ts","./node_modules/.pnpm/i18next@23.15.1/node_modules/i18next/typescript/t.d.ts","./node_modules/.pnpm/i18next@23.15.1/node_modules/i18next/index.d.ts","./node_modules/.pnpm/i18next@23.15.1/node_modules/i18next/index.d.mts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/providers/uikitprovider/i18n/index.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/providers/uikitprovider/contexts/languageprovider/uselanguageprovider.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/providers/uikitprovider/contexts/languageprovider/languageprovider.vue.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/providers/uikitprovider/contexts/languageprovider/index.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/providers/uikitprovider/contexts/stylepresetprovider/interface.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/providers/uikitprovider/contexts/stylepresetprovider/stylepresetprovider.vue.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/providers/uikitprovider/contexts/stylepresetprovider/usestylepresetprovider.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/providers/uikitprovider/contexts/stylepresetprovider/index.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/providers/uikitprovider/contexts/uikitprovider/uikitprovider.vue.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/providers/uikitprovider/contexts/uikitprovider/useuikitprovider.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/providers/uikitprovider/index.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/button/types.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/button/index.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/dialog/type.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/dialog/dialog.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/dialog/index.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/drawer/types.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/drawer/index.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/dropdown/types.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/dropdown/index.vue.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/dropdown/dropdownitem.vue.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/dropdown/index.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/icon/index.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/messagebox/i18n/en-us/index.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/messagebox/i18n/zh-cn/index.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/messagebox/i18n/index.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/messagebox/type.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/messagebox/index.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/badge/types.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/badge/index.vue.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/badge/index.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/input/types.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/input/index.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/select/index.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/option/index.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/switch/types.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/switch/index.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/slider/index.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/swiper/type.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/swiper/index.vue.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/swiper/swiperitem.vue.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/swiper/index.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/toast/type.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/toast/index.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/watermark/index.vue.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/watermark/index.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/popup/type.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/popup/index.vue.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/popup/index.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/hooks/usecomponent.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/hooks/index.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/utils/utils.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/index.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/directives/loading/index.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/directives/index.d.ts","./node_modules/.pnpm/@tencentcloud+uikit-base-co_be75d70b544ed9dfda482c36cc733d1c/node_modules/@tencentcloud/uikit-base-component-vue3/dist/index.d.ts","./node_modules/.pnpm/@tencentcloud+chat-uikit-vu_9fd9fcdfcee31e157ce6c6ef7e26af46/node_modules/@tencentcloud/chat-uikit-vue3/dist/index.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/constants/interface.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/node_modules/i18next/typescript/helpers.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/node_modules/i18next/typescript/options.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/node_modules/i18next/typescript/t.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/node_modules/i18next/index.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/node_modules/i18next/index.d.mts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/providers/uikitprovider/i18n/index.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/providers/uikitprovider/contexts/languageprovider/uselanguageprovider.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/providers/uikitprovider/contexts/languageprovider/languageprovider.vue.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/providers/uikitprovider/contexts/languageprovider/index.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/providers/uikitprovider/contexts/uikitprovider/uikitprovider.vue.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/providers/uikitprovider/contexts/uikitprovider/useuikitprovider.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/providers/uikitprovider/index.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/button/types.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/button/index.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/dialog/type.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/dialog/dialog.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/dialog/index.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/drawer/types.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/drawer/index.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/dropdown/types.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/dropdown/index.vue.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/dropdown/dropdownitem.vue.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/dropdown/index.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/icon/index.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/messagebox/i18n/en-us/index.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/messagebox/i18n/zh-cn/index.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/messagebox/i18n/index.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/messagebox/type.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/messagebox/index.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/badge/types.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/badge/index.vue.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/badge/index.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/input/types.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/input/index.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/select/index.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/option/index.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/switch/types.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/switch/index.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/slider/index.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/swiper/type.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/swiper/index.vue.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/swiper/swiperitem.vue.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/swiper/index.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/toast/type.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/toast/index.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/watermark/index.vue.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/watermark/index.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/popup/type.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/popup/index.vue.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/popup/index.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/hooks/usecomponent.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/hooks/index.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/utils/utils.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/components/index.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/directives/loading/index.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/directives/index.d.ts","./node_modules/@tencentcloud/uikit-base-component-vue3/dist/index.d.ts","./src/components/sidetab.vue","./src/components/app-link/index.vue","./src/components/chat-dialog/chatmessageitem.vue","./src/utils/call-local-recorder.ts","./src/utils/call-video-screenshot.ts","./src/utils/tuicall-error.ts","./node_modules/@tencentcloud/chat/index.d.ts","./node_modules/@tencentcloud/chat-uikit-engine/index.d.ts","./src/utils/im-call-hangup-detect.ts","./node_modules/.pnpm/@tencentcloud+call-uikit-vue@4.0.12/node_modules/@tencentcloud/call-uikit-vue/types/tuicallservice/const/call.d.ts","./node_modules/.pnpm/@tencentcloud+call-uikit-vue@4.0.12/node_modules/@tencentcloud/call-uikit-vue/types/tuicallservice/const/error.d.ts","./node_modules/.pnpm/@tencentcloud+call-uikit-vue@4.0.12/node_modules/@tencentcloud/call-uikit-vue/types/tuicallservice/const/log.d.ts","./node_modules/.pnpm/@tencentcloud+call-uikit-vue@4.0.12/node_modules/@tencentcloud/call-uikit-vue/types/tuicallservice/const/index.d.ts","./node_modules/.pnpm/@tencentcloud+call-uikit-vue@4.0.12/node_modules/@tencentcloud/call-uikit-vue/types/tuicallservice/interface/icallservice.d.ts","./node_modules/.pnpm/@tencentcloud+call-uikit-vue@4.0.12/node_modules/@tencentcloud/call-uikit-vue/types/tuicallservice/interface/icallstore.d.ts","./node_modules/.pnpm/@tencentcloud+call-uikit-vue@4.0.12/node_modules/@tencentcloud/call-uikit-vue/types/tuicallservice/interface/ituiglobal.d.ts","./node_modules/.pnpm/@tencentcloud+call-uikit-vue@4.0.12/node_modules/@tencentcloud/call-uikit-vue/types/tuicallservice/interface/ituistore.d.ts","./node_modules/.pnpm/@tencentcloud+call-uikit-vue@4.0.12/node_modules/@tencentcloud/call-uikit-vue/types/tuicallservice/interface/index.d.ts","./node_modules/.pnpm/@tencentcloud+call-uikit-vue@4.0.12/node_modules/@tencentcloud/call-uikit-vue/types/tuicallservice/callservice/uidesign.d.ts","./node_modules/.pnpm/@tencentcloud+call-uikit-vue@4.0.12/node_modules/@tencentcloud/call-uikit-vue/types/tuicallservice/callservice/index.d.ts","./node_modules/.pnpm/@tencentcloud+call-uikit-vue@4.0.12/node_modules/@tencentcloud/call-uikit-vue/types/tuicallservice/locales/index.d.ts","./node_modules/.pnpm/@tencentcloud+call-uikit-vue@4.0.12/node_modules/@tencentcloud/call-uikit-vue/types/tuicallservice/index.d.ts","./node_modules/.pnpm/@tencentcloud+call-uikit-vue@4.0.12/node_modules/@tencentcloud/call-uikit-vue/types/index.d.ts","./node_modules/@tencentcloud/call-engine-js/index.d.ts","./src/components/chat-dialog/index.vue","./src/components/color-picker/index.vue","./src/components/daterange-picker/index.vue","./src/components/del-wrap/index.vue","./src/components/dict-value/index.vue","./node_modules/.pnpm/@wangeditor+editor@5.1.23/node_modules/@wangeditor/editor/dist/editor/src/utils/browser-polyfill.d.ts","./node_modules/.pnpm/@wangeditor+editor@5.1.23/node_modules/@wangeditor/editor/dist/editor/src/utils/node-polyfill.d.ts","./node_modules/.pnpm/@wangeditor+editor@5.1.23/node_modules/@wangeditor/editor/dist/editor/src/locale/index.d.ts","./node_modules/.pnpm/@wangeditor+editor@5.1.23/node_modules/@wangeditor/editor/dist/editor/src/register-builtin-modules/index.d.ts","./node_modules/.pnpm/@wangeditor+editor@5.1.23/node_modules/@wangeditor/editor/dist/editor/src/init-default-config/index.d.ts","./node_modules/.pnpm/slate@0.72.0/node_modules/slate/dist/create-editor.d.ts","./node_modules/.pnpm/slate@0.72.0/node_modules/slate/dist/interfaces/element.d.ts","./node_modules/.pnpm/slate@0.72.0/node_modules/slate/dist/interfaces/node.d.ts","./node_modules/.pnpm/slate@0.72.0/node_modules/slate/dist/interfaces/editor.d.ts","./node_modules/.pnpm/slate@0.72.0/node_modules/slate/dist/interfaces/location.d.ts","./node_modules/.pnpm/slate@0.72.0/node_modules/slate/dist/interfaces/operation.d.ts","./node_modules/.pnpm/slate@0.72.0/node_modules/slate/dist/interfaces/path.d.ts","./node_modules/.pnpm/slate@0.72.0/node_modules/slate/dist/interfaces/path-ref.d.ts","./node_modules/.pnpm/slate@0.72.0/node_modules/slate/dist/interfaces/point.d.ts","./node_modules/.pnpm/slate@0.72.0/node_modules/slate/dist/interfaces/point-ref.d.ts","./node_modules/.pnpm/slate@0.72.0/node_modules/slate/dist/interfaces/range.d.ts","./node_modules/.pnpm/slate@0.72.0/node_modules/slate/dist/interfaces/range-ref.d.ts","./node_modules/.pnpm/slate@0.72.0/node_modules/slate/dist/interfaces/custom-types.d.ts","./node_modules/.pnpm/slate@0.72.0/node_modules/slate/dist/interfaces/text.d.ts","./node_modules/.pnpm/slate@0.72.0/node_modules/slate/dist/transforms/general.d.ts","./node_modules/.pnpm/slate@0.72.0/node_modules/slate/dist/transforms/node.d.ts","./node_modules/.pnpm/slate@0.72.0/node_modules/slate/dist/transforms/selection.d.ts","./node_modules/.pnpm/slate@0.72.0/node_modules/slate/dist/transforms/text.d.ts","./node_modules/.pnpm/slate@0.72.0/node_modules/slate/dist/transforms/index.d.ts","./node_modules/.pnpm/slate@0.72.0/node_modules/slate/dist/index.d.ts","./node_modules/.pnpm/snabbdom@3.6.3/node_modules/snabbdom/build/htmldomapi.d.ts","./node_modules/.pnpm/snabbdom@3.6.3/node_modules/snabbdom/build/helpers/attachto.d.ts","./node_modules/.pnpm/snabbdom@3.6.3/node_modules/snabbdom/build/modules/style.d.ts","./node_modules/.pnpm/snabbdom@3.6.3/node_modules/snabbdom/build/modules/eventlisteners.d.ts","./node_modules/.pnpm/snabbdom@3.6.3/node_modules/snabbdom/build/modules/attributes.d.ts","./node_modules/.pnpm/snabbdom@3.6.3/node_modules/snabbdom/build/modules/class.d.ts","./node_modules/.pnpm/snabbdom@3.6.3/node_modules/snabbdom/build/modules/props.d.ts","./node_modules/.pnpm/snabbdom@3.6.3/node_modules/snabbdom/build/modules/dataset.d.ts","./node_modules/.pnpm/snabbdom@3.6.3/node_modules/snabbdom/build/vnode.d.ts","./node_modules/.pnpm/snabbdom@3.6.3/node_modules/snabbdom/build/hooks.d.ts","./node_modules/.pnpm/snabbdom@3.6.3/node_modules/snabbdom/build/modules/module.d.ts","./node_modules/.pnpm/snabbdom@3.6.3/node_modules/snabbdom/build/init.d.ts","./node_modules/.pnpm/snabbdom@3.6.3/node_modules/snabbdom/build/thunk.d.ts","./node_modules/.pnpm/snabbdom@3.6.3/node_modules/snabbdom/build/is.d.ts","./node_modules/.pnpm/snabbdom@3.6.3/node_modules/snabbdom/build/tovnode.d.ts","./node_modules/.pnpm/snabbdom@3.6.3/node_modules/snabbdom/build/h.d.ts","./node_modules/.pnpm/snabbdom@3.6.3/node_modules/snabbdom/build/jsx.d.ts","./node_modules/.pnpm/snabbdom@3.6.3/node_modules/snabbdom/build/index.d.ts","./node_modules/.pnpm/@types+event-emitter@0.3.5/node_modules/@types/event-emitter/index.d.ts","./node_modules/.pnpm/dom7@3.0.0/node_modules/dom7/dom7.d.ts","./node_modules/.pnpm/@wangeditor+core@1.1.19_@up_585ce3e2c6aab8ba5d7bc1a654d2a2a0/node_modules/@wangeditor/core/dist/core/src/utils/dom.d.ts","./node_modules/.pnpm/@wangeditor+core@1.1.19_@up_585ce3e2c6aab8ba5d7bc1a654d2a2a0/node_modules/@wangeditor/core/dist/core/src/menus/interface.d.ts","./node_modules/.pnpm/@wangeditor+core@1.1.19_@up_585ce3e2c6aab8ba5d7bc1a654d2a2a0/node_modules/@wangeditor/core/dist/core/src/config/interface.d.ts","./node_modules/.pnpm/@wangeditor+core@1.1.19_@up_585ce3e2c6aab8ba5d7bc1a654d2a2a0/node_modules/@wangeditor/core/dist/core/src/editor/interface.d.ts","./node_modules/.pnpm/@wangeditor+core@1.1.19_@up_585ce3e2c6aab8ba5d7bc1a654d2a2a0/node_modules/@wangeditor/core/dist/core/src/render/index.d.ts","./node_modules/.pnpm/@wangeditor+core@1.1.19_@up_585ce3e2c6aab8ba5d7bc1a654d2a2a0/node_modules/@wangeditor/core/dist/core/src/to-html/index.d.ts","./node_modules/.pnpm/@wangeditor+core@1.1.19_@up_585ce3e2c6aab8ba5d7bc1a654d2a2a0/node_modules/@wangeditor/core/dist/core/src/parse-html/index.d.ts","./node_modules/.pnpm/@wangeditor+core@1.1.19_@up_585ce3e2c6aab8ba5d7bc1a654d2a2a0/node_modules/@wangeditor/core/dist/core/src/menus/bar/toolbar.d.ts","./node_modules/.pnpm/@wangeditor+core@1.1.19_@up_585ce3e2c6aab8ba5d7bc1a654d2a2a0/node_modules/@wangeditor/core/dist/core/src/menus/register.d.ts","./node_modules/.pnpm/@wangeditor+core@1.1.19_@up_585ce3e2c6aab8ba5d7bc1a654d2a2a0/node_modules/@wangeditor/core/dist/core/src/menus/panel-and-modal/baseclass.d.ts","./node_modules/.pnpm/@wangeditor+core@1.1.19_@up_585ce3e2c6aab8ba5d7bc1a654d2a2a0/node_modules/@wangeditor/core/dist/core/src/menus/panel-and-modal/modal.d.ts","./node_modules/.pnpm/@wangeditor+core@1.1.19_@up_585ce3e2c6aab8ba5d7bc1a654d2a2a0/node_modules/@wangeditor/core/dist/core/src/menus/index.d.ts","./node_modules/.pnpm/slate-history@0.66.0_slate@0.72.0/node_modules/slate-history/dist/history.d.ts","./node_modules/.pnpm/slate-history@0.66.0_slate@0.72.0/node_modules/slate-history/dist/history-editor.d.ts","./node_modules/.pnpm/slate-history@0.66.0_slate@0.72.0/node_modules/slate-history/dist/with-history.d.ts","./node_modules/.pnpm/slate-history@0.66.0_slate@0.72.0/node_modules/slate-history/dist/index.d.ts","./node_modules/.pnpm/@wangeditor+core@1.1.19_@up_585ce3e2c6aab8ba5d7bc1a654d2a2a0/node_modules/@wangeditor/core/dist/core/src/create/create-editor.d.ts","./node_modules/.pnpm/@wangeditor+core@1.1.19_@up_585ce3e2c6aab8ba5d7bc1a654d2a2a0/node_modules/@wangeditor/core/dist/core/src/create/create-toolbar.d.ts","./node_modules/.pnpm/@wangeditor+core@1.1.19_@up_585ce3e2c6aab8ba5d7bc1a654d2a2a0/node_modules/@wangeditor/core/dist/core/src/create/index.d.ts","./node_modules/.pnpm/@wangeditor+core@1.1.19_@up_585ce3e2c6aab8ba5d7bc1a654d2a2a0/node_modules/@wangeditor/core/dist/core/src/utils/key.d.ts","./node_modules/.pnpm/@wangeditor+core@1.1.19_@up_585ce3e2c6aab8ba5d7bc1a654d2a2a0/node_modules/@wangeditor/core/dist/core/src/text-area/textarea.d.ts","./node_modules/.pnpm/@wangeditor+core@1.1.19_@up_585ce3e2c6aab8ba5d7bc1a654d2a2a0/node_modules/@wangeditor/core/dist/core/src/menus/bar/hoverbar.d.ts","./node_modules/.pnpm/@wangeditor+core@1.1.19_@up_585ce3e2c6aab8ba5d7bc1a654d2a2a0/node_modules/@wangeditor/core/dist/core/src/editor/dom-editor.d.ts","./node_modules/.pnpm/@uppy+utils@4.1.3/node_modules/@uppy/utils/types/index.d.ts","./node_modules/.pnpm/@uppy+core@2.3.4/node_modules/@uppy/core/types/index.d.ts","./node_modules/.pnpm/@wangeditor+core@1.1.19_@up_585ce3e2c6aab8ba5d7bc1a654d2a2a0/node_modules/@wangeditor/core/dist/core/src/upload/interface.d.ts","./node_modules/.pnpm/@wangeditor+core@1.1.19_@up_585ce3e2c6aab8ba5d7bc1a654d2a2a0/node_modules/@wangeditor/core/dist/core/src/upload/createuploader.d.ts","./node_modules/.pnpm/@wangeditor+core@1.1.19_@up_585ce3e2c6aab8ba5d7bc1a654d2a2a0/node_modules/@wangeditor/core/dist/core/src/upload/index.d.ts","./node_modules/.pnpm/i18next@20.4.0/node_modules/i18next/index.d.ts","./node_modules/.pnpm/@wangeditor+core@1.1.19_@up_585ce3e2c6aab8ba5d7bc1a654d2a2a0/node_modules/@wangeditor/core/dist/core/src/i18n/index.d.ts","./node_modules/.pnpm/@wangeditor+core@1.1.19_@up_585ce3e2c6aab8ba5d7bc1a654d2a2a0/node_modules/@wangeditor/core/dist/core/src/index.d.ts","./node_modules/.pnpm/@wangeditor+editor@5.1.23/node_modules/@wangeditor/editor/dist/editor/src/boot.d.ts","./node_modules/.pnpm/@wangeditor+editor@5.1.23/node_modules/@wangeditor/editor/dist/editor/src/utils/dom.d.ts","./node_modules/.pnpm/@wangeditor+editor@5.1.23/node_modules/@wangeditor/editor/dist/editor/src/create.d.ts","./node_modules/.pnpm/@wangeditor+editor@5.1.23/node_modules/@wangeditor/editor/dist/editor/src/index.d.ts","./node_modules/.pnpm/vuedraggable@4.1.0_vue@3.5.33_typescript@5.7.3_/node_modules/vuedraggable/src/vuedraggable.d.ts","./src/components/popup/index.vue","./src/components/material/file.vue","./src/components/material/hook.ts","./src/components/material/preview.vue","./src/components/material/index.vue","./src/components/material/picker.vue","./src/components/editor/index.vue","./src/components/export-data/index.vue","./src/components/footer-btns/index.vue","./src/components/icon/index.ts","./src/components/icon/svg-icon.vue","./src/components/icon/index.vue","./src/components/icon/picker.vue","./src/components/image-contain/index.vue","./src/components/link/index.ts","./src/components/link/article-list.vue","./src/components/link/custom-link.vue","./src/components/link/mini-program.vue","./src/components/link/shop-pages.vue","./src/components/link/index.vue","./src/components/link/picker.vue","./src/hooks/uselisttimefilter.ts","./src/components/list-time-filter/index.vue","./src/components/overflow-tooltip/index.vue","./src/components/pagination/index.vue","./src/components/popover-input/index.vue","./node_modules/.pnpm/@trtc+calls-uikit-vue@4.5.0/node_modules/@trtc/calls-uikit-vue/types/tuicallservice/const/call.d.ts","./node_modules/.pnpm/@trtc+calls-uikit-vue@4.5.0/node_modules/@trtc/calls-uikit-vue/types/tuicallservice/const/error.d.ts","./node_modules/.pnpm/@trtc+calls-uikit-vue@4.5.0/node_modules/@trtc/calls-uikit-vue/types/tuicallservice/const/log.d.ts","./node_modules/.pnpm/@trtc+calls-uikit-vue@4.5.0/node_modules/@trtc/calls-uikit-vue/types/tuicallservice/const/index.d.ts","./node_modules/.pnpm/@trtc+calls-uikit-vue@4.5.0/node_modules/@trtc/calls-uikit-vue/types/tuicallservice/interface/icallservice.d.ts","./node_modules/.pnpm/@trtc+calls-uikit-vue@4.5.0/node_modules/@trtc/calls-uikit-vue/types/tuicallservice/interface/icallstore.d.ts","./node_modules/.pnpm/@trtc+calls-uikit-vue@4.5.0/node_modules/@trtc/calls-uikit-vue/types/tuicallservice/interface/ituiglobal.d.ts","./node_modules/.pnpm/@trtc+calls-uikit-vue@4.5.0/node_modules/@trtc/calls-uikit-vue/types/tuicallservice/interface/ituistore.d.ts","./node_modules/.pnpm/@trtc+calls-uikit-vue@4.5.0/node_modules/@trtc/calls-uikit-vue/types/tuicallservice/interface/index.d.ts","./node_modules/.pnpm/@trtc+calls-uikit-vue@4.5.0/node_modules/@trtc/calls-uikit-vue/types/tuicallservice/callservice/uidesign.d.ts","./node_modules/.pnpm/@trtc+calls-uikit-vue@4.5.0/node_modules/@trtc/calls-uikit-vue/types/tuicallservice/callservice/index.d.ts","./node_modules/.pnpm/@trtc+calls-uikit-vue@4.5.0/node_modules/@trtc/calls-uikit-vue/types/tuicallservice/locales/index.d.ts","./node_modules/.pnpm/@trtc+calls-uikit-vue@4.5.0/node_modules/@trtc/calls-uikit-vue/types/tuicallservice/index.d.ts","./node_modules/.pnpm/@trtc+calls-uikit-vue@4.5.0/node_modules/@trtc/calls-uikit-vue/types/index.d.ts","./src/components/video-call/index.vue","./src/hooks/usedictoptions.ts","./node_modules/.pnpm/vue-clipboard3@2.0.0/node_modules/vue-clipboard3/dist/esm/index.d.ts","./src/install/directives/copy.ts","./src/install/directives/perms.ts","./node_modules/.pnpm/echarts@5.6.0/node_modules/echarts/types/dist/charts.d.ts","./node_modules/.pnpm/echarts@5.6.0/node_modules/echarts/charts.d.ts","./node_modules/.pnpm/echarts@5.6.0/node_modules/echarts/types/dist/components.d.ts","./node_modules/.pnpm/echarts@5.6.0/node_modules/echarts/components.d.ts","./node_modules/.pnpm/echarts@5.6.0/node_modules/echarts/types/dist/features.d.ts","./node_modules/.pnpm/echarts@5.6.0/node_modules/echarts/features.d.ts","./node_modules/.pnpm/echarts@5.6.0/node_modules/echarts/types/dist/renderers.d.ts","./node_modules/.pnpm/echarts@5.6.0/node_modules/echarts/renderers.d.ts","./src/install/plugins/echart.ts","./src/install/plugins/element.ts","./node_modules/.pnpm/@highlightjs+vue-plugin@2.1_297347e077cdaa3fb4c77d862f4e02c2/node_modules/@highlightjs/vue-plugin/dist/vue.d.ts","./node_modules/.pnpm/highlight.js@11.11.1/node_modules/highlight.js/types/index.d.ts","./src/install/plugins/hljs.ts","./src/stores/index.ts","./src/install/plugins/pinia.ts","./src/router/guard/index.ts","./src/install/plugins/router.ts","./src/install/plugins/tuikit.ts","./src/router/guard/init.ts","./src/utils/checkhttps.ts","./src/utils/env.ts","./src/utils/getexposetype.ts","./src/views/app/recharge/index.vue","./src/views/article/column/edit.vue","./src/views/article/column/index.vue","./src/views/article/lists/edit.vue","./src/views/article/lists/index.vue","./src/views/asset/resource/index.vue","./src/views/asset/user/index.vue","./src/views/channel/h5.vue","./src/views/channel/open_setting.vue","./src/views/channel/weapp.vue","./src/views/channel/wx_oa/config.vue","./src/views/channel/wx_oa/menu_com/usemenuoa.ts","./src/views/channel/wx_oa/menu_com/oa-menu-form.vue","./src/views/channel/wx_oa/menu_com/oa-menu-form-edit.vue","./src/views/channel/wx_oa/menu_com/oa-attr.vue","./src/views/channel/wx_oa/menu_com/oa-phone.vue","./src/views/channel/wx_oa/menu.vue","./src/views/channel/wx_oa/reply/edit.vue","./src/views/channel/wx_oa/reply/default_reply.vue","./src/views/channel/wx_oa/reply/follow_reply.vue","./src/views/channel/wx_oa/reply/keyword_reply.vue","./src/views/chat/components/messagebubble.vue","./src/views/chat/components/sendpanel.vue","./src/views/chat/index.vue","./src/views/consumer/assistant/edit.vue","./src/views/consumer/assistant/index.vue","./src/views/consumer/components/account-adjust.vue","./src/views/consumer/doctor/edit.vue","./src/views/consumer/doctor/index.vue","./src/views/consumer/doctor/paiban.vue","./src/views/consumer/lists/detail.vue","./src/views/consumer/lists/index.vue","./src/views/consumer/prescription/guahao.vue","./src/views/consumer/prescription/index.vue","./src/views/consumer/prescription/components/prescriptionaibatchgeneratedialog.vue","./src/views/consumer/prescription/components/prescriptionaireportdialog.vue","./src/views/consumer/prescription/list.vue","./src/views/consumer/prescription/components/gancaosubmissionreconcilebutton.vue","./src/views/consumer/prescription/order_list.vue","./src/views/consumer/prescription/order_list_h5.vue","./src/views/decoration/pc.vue","./src/views/decoration/component/pages/menu.vue","./src/views/decoration/component/tabbar/mobile/attr.vue","./src/views/decoration/component/decoration-img.vue","./src/views/decoration/component/tabbar/mobile/content.vue","./src/views/decoration/component/tabbar/mobile/index.ts","./src/views/decoration/tabbar.vue","./src/views/decoration/component/add-nav.vue","./src/views/decoration/component/pages/attr-setting.vue","./src/views/decoration/component/pages/preview.vue","./src/views/decoration/component/tabbar/pc/menu-set.vue","./src/views/decoration/component/tabbar/pc/attr.vue","./src/views/decoration/component/tabbar/pc/content.vue","./src/views/decoration/component/tabbar/pc/index.ts","./src/views/decoration/component/widgets/banner/options.ts","./src/views/decoration/component/widgets/banner/attr.vue","./src/views/decoration/component/widgets/banner/content.vue","./src/views/decoration/component/widgets/banner/index.ts","./src/views/decoration/component/widgets/customer-service/options.ts","./src/views/decoration/component/widgets/customer-service/attr.vue","./src/views/decoration/component/widgets/customer-service/content.vue","./src/views/decoration/component/widgets/customer-service/index.ts","./src/views/decoration/component/widgets/middle-banner/options.ts","./src/views/decoration/component/widgets/middle-banner/attr.vue","./src/views/decoration/component/widgets/middle-banner/content.vue","./src/views/decoration/component/widgets/middle-banner/index.ts","./src/views/decoration/component/widgets/my-service/options.ts","./src/views/decoration/component/widgets/my-service/attr.vue","./src/views/decoration/component/widgets/my-service/content.vue","./src/views/decoration/component/widgets/my-service/index.ts","./src/views/decoration/component/widgets/nav/options.ts","./src/views/decoration/component/widgets/nav/attr.vue","./src/views/decoration/component/widgets/nav/content.vue","./src/views/decoration/component/widgets/nav/index.ts","./src/views/decoration/component/widgets/news/options.ts","./src/views/decoration/component/widgets/news/attr.vue","./src/views/decoration/component/widgets/news/content.vue","./src/views/decoration/component/widgets/news/index.ts","./src/views/decoration/component/widgets/page-meta/options.ts","./src/views/decoration/component/widgets/page-meta/attr.vue","./src/views/decoration/component/widgets/page-meta/content.vue","./src/views/decoration/component/widgets/page-meta/index.ts","./src/views/decoration/component/widgets/pc-banner/options.ts","./src/views/decoration/component/widgets/pc-banner/content.vue","./src/views/decoration/component/widgets/pc-banner/index.ts","./src/views/decoration/component/widgets/search/options.ts","./src/views/decoration/component/widgets/search/attr.vue","./src/views/decoration/component/widgets/search/content.vue","./src/views/decoration/component/widgets/search/index.ts","./src/views/decoration/component/widgets/user-banner/options.ts","./src/views/decoration/component/widgets/user-banner/attr.vue","./src/views/decoration/component/widgets/user-banner/content.vue","./src/views/decoration/component/widgets/user-banner/index.ts","./src/views/decoration/component/widgets/user-info/options.ts","./src/views/decoration/component/widgets/user-info/attr.vue","./src/views/decoration/component/widgets/user-info/content.vue","./src/views/decoration/component/widgets/user-info/index.ts","./src/views/decoration/pages/index.vue","./src/views/decoration/style/components/theme-picker.vue","./src/views/decoration/style/components/mobile-style.vue","./src/views/decoration/style/style.vue","./src/views/dev_tools/components/relations-add.vue","./src/views/dev_tools/code/edit.vue","./src/views/dev_tools/components/code-preview.vue","./src/views/dev_tools/components/data-table.vue","./src/views/dev_tools/code/index.vue","./src/views/doctor/dept-tongji.vue","./src/views/doctor/medicine.vue","./src/views/doctor/roster.vue","./src/views/doctor/tongji.vue","./src/views/fans/commission-settlement.vue","./src/views/fans/index.vue","./src/views/fans/qywx.vue","./src/views/fans/yeji.vue","./src/views/finance/balance_details.vue","./src/views/finance/mubiao-dept-node.vue","./src/views/finance/mubiao-dept-card.vue","./src/views/finance/mubiao.vue","./src/views/finance/recharge_record.vue","./src/views/finance/component/refund-log.vue","./src/views/finance/refund_record.vue","./src/views/finance/account_cost/edit.vue","./src/views/finance/account_cost/index.vue","./src/views/first_visit/conversion/index.vue","./src/views/first_visit/doctor_dashboard/index.vue","./src/views/first_visit/my_patients/components/order-actions.ts","./src/views/first_visit/my_patients/components/orderactionhost.vue","./src/views/first_visit/my_patients/components/orderpanel.vue","./src/views/first_visit/my_patients/components/progresspanel.vue","./src/views/first_visit/my_patients/components/paibanpanel.vue","./src/views/first_visit/my_patients/index.vue","./src/views/first_visit/registration_stats/index.vue","./src/views/first_visit/wecom_promotion/components/wecom-widget-templates.ts","./src/views/first_visit/wecom_promotion/components/wecomfloatingwidgetbuilder.vue","./src/views/first_visit/wecom_promotion/index.vue","./src/views/material/index.vue","./src/views/message/notice/edit.vue","./src/views/message/notice/index.vue","./src/views/message/short_letter/edit.vue","./src/views/message/short_letter/index.vue","./src/views/order/index.vue","./src/views/organization/department/edit.vue","./src/views/organization/department/index.vue","./src/views/organization/post/edit.vue","./src/views/organization/post/index.vue","./src/views/patient/reception/index.vue","./src/views/permission/admin/edit.vue","./src/views/permission/admin/index.vue","./src/views/permission/menu/edit.vue","./src/views/permission/menu/index.vue","./src/views/permission/role/auth.vue","./src/views/permission/role/edit.vue","./src/views/permission/role/index.vue","./src/views/pharmacy/medicine_mapping/latest-request.d.mts","./src/views/pharmacy/medicine_mapping/index.vue","./src/views/setting/dict/data/edit.vue","./src/views/setting/dict/data/index.vue","./src/views/setting/dict/type/edit.vue","./src/views/setting/dict/type/index.vue","./src/views/setting/pay/config/edit.vue","./src/views/setting/pay/config/index.vue","./src/views/setting/pay/method/index.vue","./src/views/setting/search/index.vue","./src/views/setting/storage/edit.vue","./src/views/setting/storage/index.vue","./src/views/setting/system/cache.vue","./src/views/setting/system/environment.vue","./src/views/setting/system/journal.vue","./src/views/setting/system/scheduled_task/edit.vue","./src/views/setting/system/scheduled_task/index.vue","./src/views/setting/user/login_register.vue","./src/views/setting/user/setup.vue","./src/views/setting/website/filing.vue","./src/views/setting/website/information.vue","./src/views/setting/website/protocol.vue","./src/views/setting/website/statistics.vue","./src/views/stats/assistant-performance/index.vue","./src/views/stats/auto_assign_log/index.vue","./src/views/stats/conversion/index.vue","./src/views/stats/performance-dashboard/index.vue","./src/views/stats/revisit_rate/index.vue","./src/views/stats/self_input/mediasourceselect.vue","./src/views/stats/self_input/usemediasourceoptions.ts","./src/views/stats/self_input/cost-edit.vue","./src/views/stats/self_input/account_cost.vue","./src/views/stats/self_input/yeji-edit.vue","./src/views/stats/self_input/index.vue","./src/views/tcm/appointment/list.vue","./src/views/tcm/appointment/list_h5.vue","./src/views/tcm/appointment/components/prescription-drawer.vue","./src/views/tcm/diagnosis/add.vue","./src/views/tcm/diagnosis/index.vue","./src/views/tcm/diagnosis/components/bloodrecordlist.vue","./src/views/tcm/diagnosis/components/dietrecordlist.vue","./src/views/tcm/diagnosis/components/exerciserecordlist.vue","./src/views/tcm/diagnosis/components/trackingmatrix.vue","./src/views/tcm/follow/index.vue","./src/views/template/component/file.vue","./src/views/template/component/icon.vue","./src/views/template/component/link.vue","./src/views/template/component/overflow.vue","./src/views/template/component/popover_input.vue","./src/views/template/component/rich_text.vue","./src/views/template/component/upload.vue","./src/views/test/patient-call.vue","./src/views/workbench/index.vue","./components.d.ts","./auto-imports.d.ts","./typings/index.d.ts","./typings/router.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/compatibility/disposable.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/compatibility/indexable.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/compatibility/iterators.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/compatibility/index.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/globals.typedarray.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/buffer.buffer.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/globals.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/web-globals/abortcontroller.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/web-globals/domexception.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/web-globals/events.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/header.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/readable.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/file.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/fetch.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/formdata.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/connector.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/client.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/errors.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/dispatcher.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/global-dispatcher.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/global-origin.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/pool-stats.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/pool.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/handlers.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/balanced-pool.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/agent.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-interceptor.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-agent.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-client.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-pool.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-errors.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/proxy-agent.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/env-http-proxy-agent.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/retry-handler.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/retry-agent.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/api.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/interceptors.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/util.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/cookies.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/patch.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/websocket.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/eventsource.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/filereader.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/diagnostics-channel.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/content-type.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/cache.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/index.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/web-globals/fetch.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/web-globals/navigator.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/web-globals/storage.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/assert.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/assert/strict.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/async_hooks.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/buffer.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/child_process.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/cluster.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/console.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/constants.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/crypto.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/dgram.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/diagnostics_channel.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/dns.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/dns/promises.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/domain.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/events.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/fs.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/fs/promises.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/http.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/http2.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/https.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/inspector.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/inspector.generated.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/module.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/net.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/os.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/path.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/perf_hooks.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/process.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/punycode.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/querystring.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/readline.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/readline/promises.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/repl.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/sea.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/sqlite.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/stream.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/stream/promises.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/stream/consumers.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/stream/web.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/string_decoder.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/test.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/timers.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/timers/promises.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/tls.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/trace_events.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/tty.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/url.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/util.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/v8.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/vm.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/wasi.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/worker_threads.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/zlib.d.ts","./node_modules/.pnpm/@types+node@22.19.17/node_modules/@types/node/index.d.ts","./node_modules/.pnpm/@types+estree@1.0.8/node_modules/@types/estree/index.d.ts","./node_modules/.pnpm/rollup@4.60.3/node_modules/rollup/dist/rollup.d.ts","./node_modules/.pnpm/rollup@4.60.3/node_modules/rollup/dist/parseast.d.ts","./node_modules/.pnpm/vite@6.4.2_@types+node@22.1_8f5e549addd5aa700368df43e00a64dc/node_modules/vite/dist/node/modulerunnertransport.d-dj_me5sf.d.ts","./node_modules/.pnpm/vite@6.4.2_@types+node@22.1_8f5e549addd5aa700368df43e00a64dc/node_modules/vite/dist/node/module-runner.d.ts","./node_modules/.pnpm/esbuild@0.25.0/node_modules/esbuild/lib/main.d.ts","./node_modules/.pnpm/source-map-js@1.2.1/node_modules/source-map-js/source-map.d.ts","./node_modules/.pnpm/postcss@8.5.14/node_modules/postcss/lib/previous-map.d.ts","./node_modules/.pnpm/postcss@8.5.14/node_modules/postcss/lib/input.d.ts","./node_modules/.pnpm/postcss@8.5.14/node_modules/postcss/lib/css-syntax-error.d.ts","./node_modules/.pnpm/postcss@8.5.14/node_modules/postcss/lib/declaration.d.ts","./node_modules/.pnpm/postcss@8.5.14/node_modules/postcss/lib/root.d.ts","./node_modules/.pnpm/postcss@8.5.14/node_modules/postcss/lib/warning.d.ts","./node_modules/.pnpm/postcss@8.5.14/node_modules/postcss/lib/lazy-result.d.ts","./node_modules/.pnpm/postcss@8.5.14/node_modules/postcss/lib/no-work-result.d.ts","./node_modules/.pnpm/postcss@8.5.14/node_modules/postcss/lib/processor.d.ts","./node_modules/.pnpm/postcss@8.5.14/node_modules/postcss/lib/result.d.ts","./node_modules/.pnpm/postcss@8.5.14/node_modules/postcss/lib/document.d.ts","./node_modules/.pnpm/postcss@8.5.14/node_modules/postcss/lib/rule.d.ts","./node_modules/.pnpm/postcss@8.5.14/node_modules/postcss/lib/node.d.ts","./node_modules/.pnpm/postcss@8.5.14/node_modules/postcss/lib/comment.d.ts","./node_modules/.pnpm/postcss@8.5.14/node_modules/postcss/lib/container.d.ts","./node_modules/.pnpm/postcss@8.5.14/node_modules/postcss/lib/at-rule.d.ts","./node_modules/.pnpm/postcss@8.5.14/node_modules/postcss/lib/list.d.ts","./node_modules/.pnpm/postcss@8.5.14/node_modules/postcss/lib/postcss.d.ts","./node_modules/.pnpm/postcss@8.5.14/node_modules/postcss/lib/postcss.d.mts","./node_modules/.pnpm/vite@6.4.2_@types+node@22.1_8f5e549addd5aa700368df43e00a64dc/node_modules/vite/types/internal/lightningcssoptions.d.ts","./node_modules/.pnpm/sass@1.79.6/node_modules/sass/types/deprecations.d.ts","./node_modules/.pnpm/sass@1.79.6/node_modules/sass/types/util/promise_or.d.ts","./node_modules/.pnpm/sass@1.79.6/node_modules/sass/types/importer.d.ts","./node_modules/.pnpm/sass@1.79.6/node_modules/sass/types/logger/source_location.d.ts","./node_modules/.pnpm/sass@1.79.6/node_modules/sass/types/logger/source_span.d.ts","./node_modules/.pnpm/sass@1.79.6/node_modules/sass/types/logger/index.d.ts","./node_modules/.pnpm/immutable@4.3.8/node_modules/immutable/dist/immutable.d.ts","./node_modules/.pnpm/sass@1.79.6/node_modules/sass/types/value/boolean.d.ts","./node_modules/.pnpm/sass@1.79.6/node_modules/sass/types/value/calculation.d.ts","./node_modules/.pnpm/sass@1.79.6/node_modules/sass/types/value/color.d.ts","./node_modules/.pnpm/sass@1.79.6/node_modules/sass/types/value/function.d.ts","./node_modules/.pnpm/sass@1.79.6/node_modules/sass/types/value/list.d.ts","./node_modules/.pnpm/sass@1.79.6/node_modules/sass/types/value/map.d.ts","./node_modules/.pnpm/sass@1.79.6/node_modules/sass/types/value/mixin.d.ts","./node_modules/.pnpm/sass@1.79.6/node_modules/sass/types/value/number.d.ts","./node_modules/.pnpm/sass@1.79.6/node_modules/sass/types/value/string.d.ts","./node_modules/.pnpm/sass@1.79.6/node_modules/sass/types/value/argument_list.d.ts","./node_modules/.pnpm/sass@1.79.6/node_modules/sass/types/value/index.d.ts","./node_modules/.pnpm/sass@1.79.6/node_modules/sass/types/options.d.ts","./node_modules/.pnpm/sass@1.79.6/node_modules/sass/types/compile.d.ts","./node_modules/.pnpm/sass@1.79.6/node_modules/sass/types/exception.d.ts","./node_modules/.pnpm/sass@1.79.6/node_modules/sass/types/legacy/exception.d.ts","./node_modules/.pnpm/sass@1.79.6/node_modules/sass/types/legacy/plugin_this.d.ts","./node_modules/.pnpm/sass@1.79.6/node_modules/sass/types/legacy/function.d.ts","./node_modules/.pnpm/sass@1.79.6/node_modules/sass/types/legacy/importer.d.ts","./node_modules/.pnpm/sass@1.79.6/node_modules/sass/types/legacy/options.d.ts","./node_modules/.pnpm/sass@1.79.6/node_modules/sass/types/legacy/render.d.ts","./node_modules/.pnpm/sass@1.79.6/node_modules/sass/types/index.d.ts","./node_modules/.pnpm/vite@6.4.2_@types+node@22.1_8f5e549addd5aa700368df43e00a64dc/node_modules/vite/types/internal/csspreprocessoroptions.d.ts","./node_modules/.pnpm/vite@6.4.2_@types+node@22.1_8f5e549addd5aa700368df43e00a64dc/node_modules/vite/types/metadata.d.ts","./node_modules/.pnpm/vite@6.4.2_@types+node@22.1_8f5e549addd5aa700368df43e00a64dc/node_modules/vite/dist/node/index.d.ts","./node_modules/.pnpm/magic-string@0.30.21/node_modules/magic-string/dist/magic-string.es.d.mts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/typescript.d.ts","./node_modules/.pnpm/@vue+compiler-sfc@3.5.33/node_modules/@vue/compiler-sfc/dist/compiler-sfc.d.ts","./node_modules/.pnpm/vue@3.5.33_typescript@5.7.3/node_modules/vue/compiler-sfc/index.d.mts","./node_modules/.pnpm/@vitejs+plugin-vue@5.2.1_vi_26ff37bca32818ba6abc2479b735c8c5/node_modules/@vitejs/plugin-vue/dist/index.d.mts","./node_modules/.pnpm/@vue+babel-plugin-resolve-type@1.5.0_@babel+core@7.29.0/node_modules/@vue/babel-plugin-resolve-type/dist/index.d.mts","./node_modules/.pnpm/@vue+babel-plugin-jsx@1.5.0_@babel+core@7.29.0/node_modules/@vue/babel-plugin-jsx/dist/index.d.mts","./node_modules/.pnpm/@vitejs+plugin-vue-jsx@4.1._15604a3242b44866a4c8e668a8c2b0af/node_modules/@vitejs/plugin-vue-jsx/dist/index.d.mts","./node_modules/.pnpm/mlly@1.8.2/node_modules/mlly/dist/index.d.ts","./node_modules/.pnpm/unimport@4.1.1/node_modules/unimport/dist/shared/unimport.cavrr9sh.d.mts","./node_modules/.pnpm/unimport@4.1.1/node_modules/unimport/dist/shared/unimport.czoa5cgj.d.mts","./node_modules/.pnpm/js-tokens@9.0.1/node_modules/js-tokens/index.d.ts","./node_modules/.pnpm/strip-literal@3.1.0/node_modules/strip-literal/dist/index.d.mts","./node_modules/.pnpm/unimport@4.1.1/node_modules/unimport/dist/index.d.mts","./node_modules/.pnpm/unplugin-utils@0.2.5/node_modules/unplugin-utils/dist/index.d.ts","./node_modules/.pnpm/unplugin-auto-import@19.1.0_6f0c1011f66a70c739aaa005d5971cab/node_modules/unplugin-auto-import/dist/types.d.ts","./node_modules/.pnpm/unplugin-auto-import@19.1.0_6f0c1011f66a70c739aaa005d5971cab/node_modules/unplugin-auto-import/dist/vite.d.ts","./node_modules/.pnpm/webpack-virtual-modules@0.6.2/node_modules/webpack-virtual-modules/lib/index.d.ts","./node_modules/.pnpm/unplugin@2.2.0/node_modules/unplugin/dist/index.d.ts","./node_modules/.pnpm/unplugin-vue-components@28._94a912e1594e219e37a7871a02240417/node_modules/unplugin-vue-components/dist/types.d.ts","./node_modules/.pnpm/unplugin-vue-components@28._94a912e1594e219e37a7871a02240417/node_modules/unplugin-vue-components/dist/resolvers.d.ts","./node_modules/.pnpm/unplugin-vue-components@28._94a912e1594e219e37a7871a02240417/node_modules/unplugin-vue-components/dist/vite.d.ts","./node_modules/.pnpm/vite-plugin-style-import@2._963cef04d855493cf45de9418d5fb104/node_modules/vite-plugin-style-import/dist/index.d.ts","./node_modules/.pnpm/@types+svgo@2.6.4/node_modules/@types/svgo/index.d.ts","./node_modules/.pnpm/vite-plugin-svg-icons@2.0.1_832c8c32224a985848ba91788e93a372/node_modules/vite-plugin-svg-icons/dist/index.d.ts","./node_modules/.pnpm/vite-plugin-vue-setup-exten_dfd817fabadf21a508603ce199129005/node_modules/vite-plugin-vue-setup-extend/dist/index.d.ts","./vite.config.ts","./node_modules/.pnpm/@types+lodash@4.17.24/node_modules/@types/lodash/common/common.d.ts","./node_modules/.pnpm/@types+lodash@4.17.24/node_modules/@types/lodash/common/array.d.ts","./node_modules/.pnpm/@types+lodash@4.17.24/node_modules/@types/lodash/common/collection.d.ts","./node_modules/.pnpm/@types+lodash@4.17.24/node_modules/@types/lodash/common/date.d.ts","./node_modules/.pnpm/@types+lodash@4.17.24/node_modules/@types/lodash/common/function.d.ts","./node_modules/.pnpm/@types+lodash@4.17.24/node_modules/@types/lodash/common/lang.d.ts","./node_modules/.pnpm/@types+lodash@4.17.24/node_modules/@types/lodash/common/math.d.ts","./node_modules/.pnpm/@types+lodash@4.17.24/node_modules/@types/lodash/common/number.d.ts","./node_modules/.pnpm/@types+lodash@4.17.24/node_modules/@types/lodash/common/object.d.ts","./node_modules/.pnpm/@types+lodash@4.17.24/node_modules/@types/lodash/common/seq.d.ts","./node_modules/.pnpm/@types+lodash@4.17.24/node_modules/@types/lodash/common/string.d.ts","./node_modules/.pnpm/@types+lodash@4.17.24/node_modules/@types/lodash/common/util.d.ts"],"fileIdsList":[[99,103,109,868,1400,1423,2459,2462,2468,2516,2533,2534],[99,103,109,868,1400,1423,1455,1468,1471,1546,1582,2076,2077,2078,2100,2101,2102,2103,2104,2186,2187,2189,2190,2191,2192,2193,2194,2196,2197,2198,2199,2201,2202,2203,2204,2205,2206,2208,2209,2210,2211,2226,2462,2468,2516,2533,2534],[88,868,1423,2468,2516,2533,2534],[91,868,1423,2468,2516,2533,2534],[868,1423,2468,2516,2533,2534],[868,1027,1423,2468,2516,2533,2534],[868,1028,1423,2468,2516,2533,2534],[868,1027,1028,1029,1030,1031,1032,1033,1034,1035,1423,2468,2516,2533,2534],[99,103,109,868,1423,2459,2468,2516,2533,2534],[166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,868,1423,2468,2516,2533,2534],[459,868,1423,2468,2516,2533,2534],[868,985,1423,2468,2516,2533,2534],[868,986,987,1423,2468,2516,2533,2534],[868,1423,1930,2468,2516,2533,2534],[868,1423,1924,1926,2468,2516,2533,2534],[868,1423,1914,1924,1925,1927,1928,1929,2468,2516,2533,2534],[868,1423,1924,2468,2516,2533,2534],[868,1423,1914,1924,2468,2516,2533,2534],[868,1423,1915,1916,1917,1918,1919,1920,1921,1922,1923,2468,2516,2533,2534],[868,1423,1915,1919,1920,1923,1924,1927,2468,2516,2533,2534],[868,1423,1915,1916,1917,1918,1919,1920,1921,1922,1923,1924,1925,1927,1928,2468,2516,2533,2534],[868,1423,1914,1915,1916,1917,1918,1919,1920,1921,1922,1923,2468,2516,2533,2534],[825,868,1423,2468,2516,2533,2534],[819,821,868,1423,2468,2516,2533,2534],[809,819,820,822,823,824,868,1423,2468,2516,2533,2534],[819,868,1423,2468,2516,2533,2534],[809,819,868,1423,2468,2516,2533,2534],[810,811,812,813,814,815,816,817,818,868,1423,2468,2516,2533,2534],[810,814,815,818,819,822,868,1423,2468,2516,2533,2534],[810,811,812,813,814,815,816,817,818,819,820,822,823,868,1423,2468,2516,2533,2534],[809,810,811,812,813,814,815,816,817,818,868,1423,2468,2516,2533,2534],[868,1423,2097,2468,2516,2533,2534],[868,1423,2088,2089,2093,2094,2468,2516,2533,2534],[868,1423,2088,2468,2516,2533,2534],[868,1423,2085,2086,2087,2468,2516,2533,2534],[868,1423,2088,2095,2096,2468,2516,2533,2534],[868,1423,2088,2093,2468,2516,2533,2534],[868,1423,2089,2090,2091,2092,2468,2516,2533,2534],[868,1423,1638,2468,2516,2533,2534],[868,1423,1613,2468,2516,2533,2534],[868,1423,1615,1616,2468,2516,2533,2534],[868,1423,1614,1617,1954,2016,2468,2516,2533,2534],[868,1423,1635,2468,2516,2533,2534],[99,103,109,868,1423,1989,1990,2459,2468,2516,2533,2534],[99,103,109,868,1423,1989,2459,2468,2516,2533,2534],[99,103,109,868,1423,1972,2459,2468,2516,2533,2534],[99,103,109,868,1423,1974,2459,2468,2516,2533,2534],[99,103,109,868,1423,1974,1975,2459,2468,2516,2533,2534],[868,1423,1972,2468,2516,2533,2534],[99,103,109,868,1423,1977,2459,2468,2516,2533,2534],[99,103,109,868,1423,1979,2459,2468,2516,2533,2534],[99,103,109,868,1423,1979,1980,1981,2459,2468,2516,2533,2534],[868,1423,2010,2468,2516,2533,2534],[868,1423,1973,1976,1978,1982,1983,1988,1991,1993,1994,1995,1997,1998,2002,2004,2006,2009,2011,2012,2468,2516,2533,2534],[99,103,109,868,1423,1992,2459,2468,2516,2533,2534],[868,1423,1984,1985,2468,2516,2533,2534],[868,1423,1986,1987,2468,2516,2533,2534],[868,1423,2007,2008,2468,2516,2533,2534],[99,103,109,868,1423,2007,2459,2468,2516,2533,2534],[868,1423,1999,2000,2001,2468,2516,2533,2534],[99,103,109,868,1423,1999,2459,2468,2516,2533,2534],[99,103,109,868,1423,1996,2459,2468,2516,2533,2534],[99,103,109,868,1423,2003,2459,2468,2516,2533,2534],[99,103,109,868,1423,2005,2459,2468,2516,2533,2534],[99,103,109,868,1423,2014,2459,2468,2516,2533,2534],[868,1423,1961,1971,2013,2015,2468,2516,2533,2534],[868,1423,1962,1963,2468,2516,2533,2534],[99,103,109,868,1423,1962,2459,2468,2516,2533,2534],[99,103,109,868,1423,1960,1961,2459,2468,2516,2533,2534],[868,1423,1965,1966,1967,2468,2516,2533,2534],[99,103,109,868,1423,1965,2459,2468,2516,2533,2534],[99,103,109,868,1423,1955,1964,1968,2459,2468,2516,2533,2534],[99,103,109,868,1423,1955,1960,1967,2459,2468,2516,2533,2534],[868,1423,1960,2468,2516,2533,2534],[868,1423,1968,1969,1970,2468,2516,2533,2534],[868,1423,1746,1756,1824,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1760,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1760,1761,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1760,1761,1762,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1760,1761,1762,1763,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1760,1761,1762,1763,1764,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1747,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1747,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,2468,2516,2533,2534],[868,1423,1747,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1747,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1747,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1747,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1747,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1747,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1747,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1746,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1747,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1747,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1747,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1747,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1747,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1747,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1747,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1747,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1747,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1813,1814,1913,2468,2516,2533,2534],[868,1423,1747,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1814,1913,2468,2516,2533,2534],[868,1423,1747,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1913,2468,2516,2533,2534],[868,1423,1746,1747,1748,1749,1756,1757,1758,1823,2468,2516,2533,2534],[868,1423,1746,1751,1752,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1824,1913,2468,2516,2533,2534],[868,1423,1746,1747,1748,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1824,1913,2468,2516,2533,2534],[868,1423,1755,2468,2516,2533,2534],[868,1423,1755,1815,2468,2516,2533,2534],[868,1423,1746,1755,2468,2516,2533,2534],[868,1423,1759,1816,1817,1818,1819,1820,1821,1822,2468,2516,2533,2534],[868,1423,1746,1747,1750,2468,2516,2533,2534],[868,1423,1746,2468,2516,2533,2534],[868,1423,1747,1756,2468,2516,2533,2534],[868,1423,1747,2468,2516,2533,2534],[868,1423,1742,1746,1756,2468,2516,2533,2534],[868,1423,1756,2468,2516,2533,2534],[868,1423,1746,1747,2468,2516,2533,2534],[868,1423,1750,1756,2468,2516,2533,2534],[868,1423,1747,1756,1824,2468,2516,2533,2534],[868,1423,1747,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2468,2516,2533,2534],[868,1423,1826,1827,1828,1829,1830,1831,1832,1833,1834,1835,1836,1837,1838,1839,1840,1841,1842,1843,1844,1845,1846,1847,1848,1849,1850,1851,1852,1853,1854,1855,1856,1857,1858,1859,1860,1861,1862,1863,1864,1865,1866,1867,1868,1869,1870,1871,1872,1873,1874,1875,1876,2468,2516,2533,2534],[868,1423,1748,2468,2516,2533,2534],[868,1423,1746,1747,1756,2468,2516,2533,2534],[868,1423,1753,1754,1755,1756,2468,2516,2533,2534],[868,1423,1751,1752,1753,1754,1755,1756,1758,1823,1824,1825,1877,1883,1884,1888,1889,1912,2468,2516,2533,2534],[868,1423,1878,1879,1880,1881,1882,2468,2516,2533,2534],[868,1423,1747,1751,1756,2468,2516,2533,2534],[868,1423,1751,2468,2516,2533,2534],[868,1423,1747,1751,1756,1824,2468,2516,2533,2534],[868,1423,1746,1747,1751,1752,1753,1754,1755,1756,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1824,1913,2468,2516,2533,2534],[868,1423,1748,1756,1824,2468,2516,2533,2534],[868,1423,1885,1886,1887,2468,2516,2533,2534],[868,1423,1747,1752,1756,2468,2516,2533,2534],[868,1423,1752,2468,2516,2533,2534],[868,1423,1746,1747,1748,1750,1753,1754,1755,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1824,1913,2468,2516,2533,2534],[868,1423,1890,1891,1892,1893,1894,1895,1896,1897,1898,1899,1900,1901,1902,1903,1904,1905,1906,1907,1908,1909,1910,1911,2468,2516,2533,2534],[868,1423,1746,1748,1753,1754,1755,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,1932,2468,2516,2533,2534],[868,1423,1753,1754,1755,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,1933,2468,2516,2533,2534],[868,1423,1933,1934,2468,2516,2533,2534],[868,1423,1753,1754,1755,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,1939,2468,2516,2533,2534],[868,1423,1939,1940,2468,2516,2533,2534],[868,1423,1742,2468,2516,2533,2534],[868,1423,1745,2468,2516,2533,2534],[868,1423,1743,2468,2516,2533,2534],[868,1423,1744,2468,2516,2533,2534],[99,103,109,868,1423,1744,1745,1753,1754,1755,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,1932,1935,2459,2468,2516,2533,2534],[99,103,109,868,1423,1746,1753,1754,1755,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2459,2468,2516,2533,2534],[99,103,109,868,1423,1937,2459,2468,2516,2533,2534],[99,103,109,868,1423,1744,1745,1753,1754,1755,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,1932,1941,2459,2468,2516,2533,2534],[868,1423,1753,1754,1755,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,1936,1937,1938,1942,1943,1944,1945,1946,1947,2468,2516,2533,2534],[99,103,109,868,1423,1753,1754,1755,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,1937,2459,2468,2516,2533,2534],[99,103,109,868,1423,1747,1748,1753,1754,1755,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1913,2459,2468,2516,2533,2534],[868,1423,2224,2468,2516,2533,2534],[868,1423,2215,2216,2220,2221,2468,2516,2533,2534],[868,1423,2215,2468,2516,2533,2534],[868,1423,2212,2213,2214,2468,2516,2533,2534],[868,1423,2215,2222,2223,2468,2516,2533,2534],[868,1423,2215,2220,2468,2516,2533,2534],[868,1423,2216,2217,2218,2219,2468,2516,2533,2534],[123,868,1423,2468,2516,2533,2534],[471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,868,1423,2468,2516,2533,2534],[868,1423,2468,2516,2533,2534,2652,2653,2654,2655,2656,2657,2658,2659,2660,2661,2662,2663],[868,1423,2468,2513,2514,2516,2533,2534],[868,1423,2468,2515,2516,2533,2534],[868,1423,2516,2533,2534],[868,1423,2468,2516,2521,2533,2534,2551],[868,1423,2468,2516,2517,2522,2527,2533,2534,2536,2548,2559],[868,1423,2468,2516,2517,2518,2527,2533,2534,2536],[868,1423,2463,2464,2465,2468,2516,2533,2534],[868,1423,2468,2516,2519,2533,2534,2560],[868,1423,2468,2516,2520,2521,2528,2533,2534,2537],[868,1423,2468,2516,2521,2533,2534,2548,2556],[868,1423,2468,2516,2522,2524,2527,2533,2534,2536],[868,1423,2468,2515,2516,2523,2533,2534],[868,1423,2468,2516,2524,2525,2533,2534],[868,1423,2468,2516,2526,2527,2533,2534],[868,1423,2468,2515,2516,2527,2533,2534],[868,1423,2468,2516,2527,2528,2529,2533,2534,2548,2559],[868,1423,2468,2516,2527,2528,2529,2533,2534,2543,2548,2551],[868,1423,2468,2509,2516,2524,2527,2530,2533,2534,2536,2548,2559],[868,1423,2468,2516,2527,2528,2530,2531,2533,2534,2536,2548,2556,2559],[868,1423,2468,2516,2530,2532,2533,2534,2548,2556,2559],[868,1423,2466,2467,2468,2469,2470,2471,2472,2510,2511,2512,2513,2514,2515,2516,2517,2518,2519,2520,2521,2522,2523,2524,2525,2526,2527,2528,2529,2530,2531,2532,2533,2534,2535,2536,2537,2538,2539,2540,2541,2542,2543,2544,2545,2546,2547,2548,2549,2550,2551,2552,2553,2554,2555,2556,2557,2558,2559,2560,2561,2562,2563,2564,2565],[868,1423,2468,2516,2527,2533,2534],[868,1423,2468,2516,2533,2534,2535,2559],[868,1423,2468,2516,2524,2527,2533,2534,2536,2548],[868,1423,2468,2516,2533,2534,2537],[868,1423,2468,2516,2533,2534,2538],[868,1423,2468,2515,2516,2533,2534,2539],[868,1423,2468,2513,2514,2515,2516,2517,2518,2519,2520,2521,2522,2523,2524,2525,2526,2527,2528,2529,2530,2531,2532,2533,2534,2535,2536,2537,2538,2539,2540,2541,2542,2543,2544,2545,2546,2547,2548,2549,2550,2551,2552,2553,2554,2555,2556,2557,2558,2559,2560,2561,2562,2563,2564,2565],[868,1423,2468,2516,2533,2534,2541],[868,1423,2468,2516,2533,2534,2542],[868,1423,2468,2516,2527,2533,2534,2543,2544],[868,1423,2468,2516,2533,2534,2543,2545,2560,2562],[868,1423,2468,2516,2528,2533,2534],[868,1423,2468,2516,2527,2533,2534,2548,2549,2551],[868,1423,2468,2516,2533,2534,2550,2551],[868,1423,2468,2516,2533,2534,2548,2549],[868,1423,2468,2516,2533,2534,2551],[868,1423,2468,2516,2533,2534,2552],[868,1423,2468,2513,2516,2533,2534,2548,2553,2559],[868,1423,2468,2516,2527,2533,2534,2554,2555],[868,1423,2468,2516,2533,2534,2554,2555],[868,1423,2468,2516,2521,2533,2534,2536,2548,2556],[868,1423,2468,2516,2533,2534,2557],[868,1423,2468,2516,2533,2534,2536,2558],[868,1423,2468,2516,2530,2533,2534,2542,2559],[868,1423,2468,2516,2521,2533,2534,2560],[868,1423,2468,2516,2533,2534,2548,2561],[868,1423,2468,2516,2533,2534,2535,2562],[868,1423,2468,2516,2533,2534,2563],[868,1423,2468,2509,2516,2533,2534],[868,1423,2468,2509,2516,2527,2529,2533,2534,2539,2548,2551,2559,2561,2562,2564],[868,1423,2468,2516,2533,2534,2548,2565],[868,1423,2468,2516,2533,2534,2566],[868,1423,2173,2468,2516,2533,2534],[868,1423,2468,2516,2533,2534,2624,2631],[868,1423,2468,2516,2533,2534,2624,2628],[91,868,1423,2468,2516,2533,2534,2630],[868,1423,2468,2516,2533,2534,2627],[90,91,92,868,1423,2468,2516,2533,2534],[93,868,1423,2468,2516,2533,2534],[91,92,93,868,1423,2468,2516,2533,2534,2592,2625,2626],[90,868,1423,2468,2516,2533,2534],[90,95,96,98,868,1423,2468,2516,2533,2534],[95,96,97,98,868,1423,2468,2516,2533,2534],[99,103,109,778,868,1423,2459,2468,2516,2533,2534],[99,103,104,109,868,1423,2459,2468,2516,2533,2534],[868,1423,2129,2151,2153,2468,2516,2533,2534],[868,1423,2129,2150,2152,2153,2165,2468,2516,2533,2534],[868,1423,2150,2152,2153,2157,2468,2516,2533,2534],[868,1423,2166,2167,2468,2516,2533,2534],[868,1423,2129,2150,2153,2157,2169,2170,2171,2468,2516,2533,2534],[868,1423,2129,2148,2150,2151,2152,2468,2516,2533,2534],[868,1423,2178,2468,2516,2533,2534],[88,868,1423,2152,2153,2154,2155,2156,2161,2168,2172,2177,2179,2468,2516,2533,2534],[868,1423,2151,2468,2516,2533,2534],[868,1423,2150,2151,2152,2468,2516,2533,2534],[868,1423,2151,2157,2158,2160,2468,2516,2533,2534],[868,1423,2129,2150,2153,2468,2516,2533,2534],[868,1423,2150,2153,2468,2516,2533,2534],[868,1423,2150,2151,2153,2159,2468,2516,2533,2534],[868,1423,2129,2147,2153,2468,2516,2533,2534],[868,1423,2150,2468,2516,2533,2534],[868,1423,2129,2153,2468,2516,2533,2534],[868,1423,2174,2175,2468,2516,2533,2534],[868,1423,2175,2176,2468,2516,2533,2534],[868,1423,2174,2468,2516,2533,2534],[868,1423,2149,2468,2516,2533,2534],[868,1423,2180,2468,2516,2533,2534],[868,1423,2129,2180,2182,2468,2516,2533,2534],[88,868,1423,2107,2108,2109,2129,2180,2181,2183,2468,2516,2533,2534],[868,1144,1423,2468,2516,2533,2534],[867,1423,2468,2516,2533,2534],[868,1423,2231,2468,2516,2533,2534],[868,1423,2233,2468,2516,2533,2534],[868,1423,1440,2468,2516,2533,2534],[868,1423,2235,2468,2516,2533,2534],[868,1423,1442,2468,2516,2533,2534],[868,1423,2237,2468,2516,2533,2534],[868,1423,1439,2468,2516,2533,2534],[462,792,793,794,868,1423,2468,2516,2533,2534],[97,99,103,109,154,157,792,793,868,1423,2459,2468,2516,2533,2534],[97,99,103,109,794,868,1423,2459,2468,2516,2533,2534],[462,792,796,797,798,868,1423,2468,2516,2533,2534],[99,103,109,157,461,792,868,1423,2459,2468,2516,2533,2534],[99,103,109,461,792,796,868,1423,2459,2468,2516,2533,2534],[797,868,1423,2468,2516,2533,2534],[462,792,800,801,803,868,1423,2468,2516,2533,2534],[99,103,109,802,868,1423,2459,2468,2516,2533,2534],[99,103,109,157,792,800,868,1423,2459,2468,2516,2533,2534],[99,103,109,801,868,1423,2459,2468,2516,2533,2534],[462,792,868,1390,1391,1423,2468,2516,2533,2534],[99,103,109,154,157,792,805,808,838,868,1043,1047,1315,1390,1423,2459,2468,2516,2533,2534],[99,103,109,807,808,868,1045,1047,1391,1423,2459,2468,2516,2533,2534],[462,792,833,834,839,840,841,842,868,1423,2468,2516,2533,2534],[99,103,109,157,792,829,838,868,1423,2459,2468,2516,2533,2534],[99,100,103,109,157,792,829,838,868,1400,1423,2459,2468,2516,2533,2534],[97,99,103,109,151,154,157,461,792,868,1423,2459,2468,2516,2533,2534],[97,99,103,109,833,868,1423,2459,2468,2516,2533,2534],[99,103,109,833,868,1423,2459,2468,2516,2533,2534],[840,841,868,1423,2468,2516,2533,2534],[462,792,844,845,846,868,1423,2468,2516,2533,2534],[99,103,109,844,868,1423,2459,2468,2516,2533,2534],[845,868,1423,2468,2516,2533,2534],[462,792,848,849,850,868,1423,2468,2516,2533,2534],[99,103,109,157,792,868,1423,2459,2468,2516,2533,2534],[99,103,109,848,868,1423,2459,2468,2516,2533,2534],[849,868,1423,2468,2516,2533,2534],[462,792,852,853,854,855,856,857,868,1423,2468,2516,2533,2534],[99,103,109,157,792,868,1423,2459,2462,2468,2516,2533,2534],[99,103,109,853,868,1423,2459,2462,2468,2516,2533,2534],[99,103,109,852,868,1423,2459,2468,2516,2533,2534],[855,856,868,1423,2468,2516,2533,2534],[462,792,859,860,861,863,864,868,1423,2468,2516,2533,2534],[99,103,109,792,859,868,1423,2459,2468,2516,2533,2534],[99,103,109,862,868,1423,2459,2468,2516,2533,2534],[99,103,109,151,157,461,792,868,1423,2459,2468,2516,2533,2534],[99,103,109,461,792,859,868,1423,2459,2468,2516,2533,2534],[99,103,109,859,868,1423,2459,2468,2516,2533,2534],[861,863,868,1423,2468,2516,2533,2534],[462,792,866,868,870,873,1423,2468,2516,2533,2534],[99,103,109,866,868,869,1423,2459,2468,2516,2533,2534],[99,103,109,792,868,869,1423,2459,2468,2516,2533,2534],[99,103,109,868,869,871,1423,2459,2468,2516,2533,2534],[868,870,872,1423,2468,2516,2533,2534],[462,792,868,875,876,877,1423,2468,2516,2533,2534],[99,103,109,868,875,1423,2459,2468,2516,2533,2534],[868,876,1423,2468,2516,2533,2534],[462,792,868,879,880,881,882,883,884,1423,2468,2516,2533,2534],[99,103,109,868,880,1423,2459,2468,2516,2533,2534],[99,103,109,868,879,1423,2459,2468,2516,2533,2534],[868,882,883,1423,2468,2516,2533,2534],[154,462,792,868,886,887,889,890,891,1423,2468,2516,2533,2534],[99,103,109,157,792,868,886,1423,2459,2468,2516,2533,2534],[99,103,109,868,886,887,889,891,1423,2459,2468,2516,2533,2534],[868,888,890,1423,2468,2516,2533,2534],[99,103,109,868,886,887,1423,2459,2468,2516,2533,2534],[868,886,1423,2468,2516,2533,2534],[99,103,109,154,792,868,887,1423,2459,2468,2516,2533,2534],[462,792,868,1001,1002,1003,1423,2468,2516,2533,2534],[99,103,109,151,157,461,792,829,838,868,886,887,889,892,995,997,999,1000,1423,2459,2468,2516,2533,2534],[99,103,109,461,792,829,838,868,886,887,891,892,1001,1423,2459,2468,2516,2533,2534],[868,1002,1423,2468,2516,2533,2534],[462,792,868,1005,1006,1423,2468,2516,2533,2534],[99,103,109,157,792,868,1005,1423,2459,2468,2516,2533,2534],[99,103,109,868,1006,1423,2459,2468,2516,2533,2534],[462,792,868,1008,1009,1010,1011,1012,1013,1423,2468,2516,2533,2534],[99,103,109,868,1009,1423,2459,2468,2516,2533,2534],[99,103,109,151,157,792,868,996,997,1009,1010,1423,2459,2468,2516,2533,2534],[99,103,109,868,1009,1011,1400,1423,2459,2468,2516,2533,2534],[99,103,109,151,157,792,868,996,997,1008,1423,2459,2468,2516,2533,2534],[99,103,109,868,1011,1423,2459,2468,2516,2533,2534],[462,792,868,1015,1016,1423,2468,2516,2533,2534],[99,103,109,154,157,792,868,1015,1423,2459,2468,2516,2533,2534],[99,103,109,868,1016,1423,2459,2468,2516,2533,2534],[462,792,868,1025,1423,2468,2516,2533,2534],[462,792,868,1018,1019,1020,1021,1022,1023,1423,2468,2516,2533,2534],[99,103,109,157,461,792,868,1018,1423,2459,2468,2516,2533,2534],[99,103,109,461,792,868,1019,1423,2459,2468,2516,2533,2534],[99,103,109,154,157,792,868,1423,2459,2468,2516,2533,2534],[99,103,109,868,1018,1423,2459,2468,2516,2533,2534],[868,1021,1022,1423,2468,2516,2533,2534],[462,792,868,1038,1039,1423,2468,2516,2533,2534],[99,103,109,157,792,868,1036,1037,1038,1423,2459,2468,2516,2533,2534],[99,103,109,807,808,868,1037,1039,1423,2459,2468,2516,2533,2534],[868,1036,1423,2468,2516,2533,2534],[462,792,868,1048,1049,1423,2468,2516,2533,2534],[99,103,109,151,157,792,868,995,996,997,1036,1043,1047,1048,1423,2459,2468,2516,2533,2534],[99,103,109,868,1037,1049,1423,2459,2468,2516,2533,2534],[462,792,868,1086,1087,1088,1089,1423,2468,2516,2533,2534],[99,103,109,157,792,859,865,868,875,878,964,1053,1056,1058,1059,1061,1062,1067,1085,1423,2459,2468,2516,2533,2534],[99,103,109,157,792,859,868,875,964,1053,1058,1059,1061,1067,1086,1400,1423,2459,2468,2516,2533,2534],[99,103,109,868,1086,1423,2459,2468,2516,2533,2534],[99,103,109,779,868,965,997,1086,1088,1400,1423,2459,2468,2516,2533,2534],[462,792,868,1091,1092,1093,1094,1095,1423,2468,2516,2533,2534],[462,792,868,1097,1098,1423,2468,2516,2533,2534],[99,103,109,157,792,868,869,1097,1423,2459,2468,2516,2533,2534],[99,103,109,868,869,1098,1423,2459,2468,2516,2533,2534],[462,792,868,1108,1109,1110,1111,1112,1423,2468,2516,2533,2534],[99,103,109,868,966,997,1423,2459,2468,2516,2533,2534],[99,100,103,109,157,792,868,1100,1107,1109,1400,1423,2459,2468,2516,2533,2534],[868,1111,1423,2468,2516,2533,2534],[99,103,109,157,792,868,1100,1107,1109,1423,2459,2468,2516,2533,2534],[868,869,1423,2468,2516,2533,2534],[462,792,868,1114,1115,1116,1423,2468,2516,2533,2534],[99,100,103,109,157,792,838,868,1100,1107,1109,1113,1400,1423,2459,2468,2516,2533,2534],[868,1115,1423,2468,2516,2533,2534],[99,103,109,157,792,838,868,1100,1107,1109,1400,1423,2459,2468,2516,2533,2534],[462,792,868,1118,1119,1120,1423,2468,2516,2533,2534],[99,103,109,151,157,792,868,1118,1423,2459,2468,2516,2533,2534],[99,103,109,868,1119,1423,2459,2468,2516,2533,2534],[462,792,868,1052,1053,1054,1055,1423,2468,2516,2533,2534],[99,103,109,461,792,868,1423,2459,2468,2516,2533,2534],[99,103,109,157,792,868,1051,1052,1423,2459,2468,2516,2533,2534],[99,103,109,868,1053,1423,2459,2468,2516,2533,2534],[462,792,868,1122,1123,1423,2468,2516,2533,2534],[99,103,109,157,792,868,1122,1423,2459,2468,2516,2533,2534],[99,103,109,868,1123,1423,2459,2468,2516,2533,2534],[462,792,868,1125,1126,1423,2468,2516,2533,2534],[99,103,109,157,792,868,1053,1056,1125,1423,2459,2468,2516,2533,2534],[99,103,109,868,1053,1056,1126,1423,2459,2468,2516,2533,2534],[462,792,868,1131,1132,1133,1134,1135,1136,1423,2468,2516,2533,2534],[99,103,109,157,462,792,868,1129,1400,1423,2459,2468,2516,2533,2534],[99,103,109,154,157,792,826,827,829,838,859,865,868,1423,2459,2468,2516,2533,2534],[99,103,109,151,154,157,461,462,792,827,829,838,859,862,863,865,868,965,997,1041,1043,1045,1047,1071,1076,1129,1130,1400,1423,2459,2468,2516,2533,2534],[868,1132,1423,2468,2516,2533,2534],[99,103,109,829,838,868,1423,2459,2468,2516,2533,2534],[462,792,868,1138,1139,1140,1423,2468,2516,2533,2534],[99,103,109,868,1138,1423,2459,2468,2516,2533,2534],[868,1139,1423,2468,2516,2533,2534],[462,792,868,1143,1146,1147,1148,1149,1150,1151,1152,1153,1423,2468,2516,2533,2534],[99,103,109,868,1146,1423,2459,2468,2516,2533,2534],[99,103,109,151,154,157,792,868,1146,1423,2459,2468,2516,2533,2534],[99,103,109,868,1146,1147,1423,2459,2468,2516,2533,2534],[99,103,109,151,154,157,792,868,1146,1147,1423,2459,2468,2516,2533,2534],[99,103,109,154,792,868,1143,1146,1147,1423,2459,2468,2516,2533,2534],[868,1149,1150,1423,2468,2516,2533,2534],[99,103,109,151,779,868,1423,2459,2468,2516,2533,2534],[99,103,109,151,154,779,792,868,1142,1143,1145,1147,1423,2459,2468,2516,2533,2534],[99,103,109,792,868,1146,1147,1423,2459,2468,2516,2533,2534],[462,792,868,1128,1129,1423,2468,2516,2533,2534],[99,103,109,157,792,868,1128,1423,2459,2468,2516,2533,2534],[99,103,109,868,1129,1423,2459,2468,2516,2533,2534],[462,792,868,1155,1156,1423,2468,2516,2533,2534],[99,103,109,157,792,868,1155,1423,2459,2468,2516,2533,2534],[99,103,109,868,1156,1423,2459,2468,2516,2533,2534],[462,792,868,1158,1159,1423,2468,2516,2533,2534],[99,103,109,157,792,868,1158,1423,2459,2468,2516,2533,2534],[99,103,109,868,1156,1157,1159,1423,2459,2468,2516,2533,2534],[154,794,795,796,798,799,801,804,805,807,808,827,829,830,831,832,833,834,835,836,837,838,839,842,843,844,846,847,848,850,851,852,853,854,857,858,859,860,864,865,866,868,873,874,875,877,878,879,880,881,884,885,886,887,889,891,892,999,1000,1001,1003,1004,1006,1007,1009,1011,1012,1014,1016,1017,1018,1019,1020,1023,1024,1026,1039,1040,1041,1043,1045,1046,1047,1049,1050,1053,1054,1055,1056,1058,1059,1061,1062,1067,1069,1071,1073,1074,1075,1076,1085,1086,1087,1088,1089,1090,1096,1098,1099,1100,1101,1102,1103,1105,1107,1108,1109,1110,1112,1113,1114,1116,1117,1119,1120,1121,1123,1124,1126,1127,1129,1130,1131,1133,1134,1137,1138,1140,1141,1143,1146,1147,1148,1149,1150,1154,1156,1157,1159,1160,1162,1163,1164,1166,1167,1168,1169,1170,1171,1172,1175,1176,1177,1178,1179,1181,1182,1183,1184,1185,1187,1188,1190,1191,1193,1195,1197,1198,1199,1201,1202,1204,1205,1207,1208,1209,1211,1212,1213,1214,1215,1217,1218,1220,1222,1225,1227,1229,1230,1233,1234,1236,1238,1239,1242,1244,1245,1246,1247,1248,1249,1251,1252,1254,1256,1257,1258,1260,1261,1262,1263,1265,1267,1283,1284,1285,1292,1294,1296,1298,1299,1300,1301,1302,1303,1305,1307,1308,1309,1311,1312,1313,1318,1319,1320,1321,1324,1326,1327,1328,1329,1331,1335,1336,1339,1341,1343,1345,1346,1347,1349,1350,1351,1352,1354,1355,1357,1360,1361,1362,1365,1366,1369,1371,1372,1374,1375,1376,1377,1378,1379,1380,1382,1384,1385,1387,1389,1391,1392,1423,2468,2516,2533,2534],[99,103,109,462,792,868,1373,1423,2459,2468,2516,2533,2534],[462,792,868,1161,1162,1423,2468,2516,2533,2534],[99,103,109,151,157,792,868,1161,1423,2459,2468,2516,2533,2534],[99,103,109,868,1162,1423,2459,2468,2516,2533,2534],[462,792,868,1164,1165,1166,1423,2468,2516,2533,2534],[99,103,109,151,157,461,792,829,838,868,999,1000,1423,2459,2468,2516,2533,2534],[99,103,109,461,792,829,868,1164,1400,1423,2459,2468,2516,2533,2534],[868,1165,1423,2468,2516,2533,2534],[462,792,805,806,807,868,1423,2468,2516,2533,2534],[99,103,109,151,154,157,461,792,868,1423,2459,2468,2516,2533,2534],[99,103,109,461,792,805,868,1423,2459,2468,2516,2533,2534],[806,868,1423,2468,2516,2533,2534],[462,792,868,1060,1061,1423,2468,2516,2533,2534],[99,103,109,157,461,792,868,1060,1423,2459,2468,2516,2533,2534],[99,103,109,868,1061,1423,2459,2468,2516,2533,2534],[99,103,109,868,1375,1376,1377,1378,1423,2459,2468,2516,2533,2534],[99,103,109,868,1375,1376,1423,2459,2468,2516,2533,2534],[99,103,109,868,1375,1423,2459,2468,2516,2533,2534],[99,103,109,779,868,1423,2459,2468,2516,2533,2534],[462,792,868,1362,1364,1365,1423,2468,2516,2533,2534],[868,1362,1423,2468,2516,2533,2534],[99,103,109,154,157,792,805,808,838,868,1043,1047,1315,1362,1363,1364,1423,2459,2468,2516,2533,2534],[99,103,109,807,808,868,1045,1047,1362,1365,1423,2459,2468,2516,2533,2534],[462,792,868,1168,1169,1170,1171,1172,1173,1174,1175,1176,1423,2468,2516,2533,2534],[868,1168,1172,1173,1174,1423,2468,2516,2533,2534],[99,103,109,868,1171,1423,2459,2468,2516,2533,2534],[99,103,109,157,792,868,1169,1423,2459,2462,2468,2516,2533,2534],[99,103,109,868,1169,1170,1423,2459,2468,2516,2533,2534],[99,103,109,157,792,829,838,868,1169,1423,2459,2462,2468,2516,2533,2534],[99,103,109,868,1168,1423,2459,2462,2468,2516,2533,2534],[462,792,868,1380,1381,1423,2468,2516,2533,2534],[99,103,109,151,154,792,805,859,865,868,1423,2459,2468,2516,2533,2534],[868,1380,1423,2468,2516,2533,2534],[462,792,868,1058,1423,2468,2516,2533,2534],[99,103,109,154,157,461,792,868,1057,1423,2459,2468,2516,2533,2534],[99,103,109,461,792,868,1058,1423,2459,2468,2516,2533,2534],[462,792,868,1384,1423,2468,2516,2533,2534],[99,103,109,157,461,792,868,1383,1423,2459,2468,2516,2533,2534],[99,103,109,461,792,868,1384,1423,2459,2468,2516,2533,2534],[97,99,103,109,157,792,868,1178,1423,2459,2468,2516,2533,2534],[97,99,103,109,157,792,868,1423,2459,2468,2516,2533,2534],[462,792,868,1180,1181,1423,2468,2516,2533,2534],[99,103,109,157,461,792,868,1180,1423,2459,2468,2516,2533,2534],[99,103,109,461,792,868,1181,1423,2459,2468,2516,2533,2534],[462,792,868,1183,1184,1423,2468,2516,2533,2534],[462,792,868,1186,1187,1423,2468,2516,2533,2534],[99,103,109,157,461,792,827,829,859,865,868,1041,1043,1047,1186,1400,1423,2459,2468,2516,2533,2534],[99,103,109,461,792,829,859,865,868,1187,1400,1423,2459,2468,2516,2533,2534],[462,792,868,1386,1387,1388,1423,2468,2516,2533,2534],[99,103,109,154,157,792,826,829,838,868,1041,1043,1047,1386,1423,2459,2468,2516,2533,2534],[99,103,109,154,792,829,838,868,1041,1047,1387,1400,1423,2459,2468,2516,2533,2534],[462,792,826,827,828,829,830,831,832,835,836,837,868,1423,2468,2516,2533,2534],[99,103,109,157,792,830,868,1423,2459,2468,2516,2533,2534],[99,103,109,826,868,1423,2459,2468,2516,2533,2534],[99,103,109,157,792,826,827,829,835,836,868,1423,2459,2468,2516,2533,2534],[99,103,109,826,829,837,838,868,1400,1423,2459,2468,2516,2533,2534],[99,103,109,157,792,828,868,1423,2459,2468,2516,2533,2534],[99,103,109,827,829,868,1423,2459,2468,2516,2533,2534],[99,103,109,827,831,868,1423,2459,2468,2516,2533,2534],[99,103,109,827,832,868,1423,2459,2468,2516,2533,2534],[462,792,868,1189,1190,1423,2468,2516,2533,2534],[99,103,109,157,792,868,1189,1423,2459,2468,2516,2533,2534],[99,103,109,868,1190,1423,2459,2468,2516,2533,2534],[462,792,868,1192,1193,1194,1195,1196,1197,1198,1423,2468,2516,2533,2534],[99,103,109,868,1197,1423,2459,2468,2516,2533,2534],[99,103,109,157,792,868,1193,1194,1423,2459,2468,2516,2533,2534],[99,103,109,868,1195,1423,2459,2468,2516,2533,2534],[99,103,109,151,157,792,868,1196,1423,2459,2468,2516,2533,2534],[99,103,109,151,157,792,868,1192,1423,2459,2468,2516,2533,2534],[99,103,109,868,1193,1423,2459,2468,2516,2533,2534],[462,792,868,1200,1201,1423,2468,2516,2533,2534],[99,103,109,151,157,461,792,868,1200,1423,2459,2468,2516,2533,2534],[99,103,109,461,792,868,1201,1423,2459,2468,2516,2533,2534],[462,792,868,1203,1204,1423,2468,2516,2533,2534],[99,103,109,157,792,868,1203,1423,2459,2468,2516,2533,2534],[99,103,109,868,1204,1423,2459,2468,2516,2533,2534],[462,792,868,1206,1207,1208,1423,2468,2516,2533,2534],[99,103,109,157,792,868,1206,1423,2459,2468,2516,2533,2534],[99,103,109,868,1207,1423,2459,2468,2516,2533,2534],[462,792,868,1070,1071,1073,1074,1075,1423,2468,2516,2533,2534],[99,103,109,157,792,868,1070,1423,2459,2468,2516,2533,2534],[99,103,109,868,1071,1423,2459,2468,2516,2533,2534],[99,103,109,868,1072,1423,2459,2468,2516,2533,2534],[99,103,109,868,1073,1423,2459,2468,2516,2533,2534],[99,103,109,151,868,1358,1360,1400,1423,2459,2468,2516,2533,2534],[99,103,109,151,157,792,868,1315,1358,1359,1423,2459,2468,2516,2533,2534],[99,103,109,868,1358,1360,1423,2459,2468,2516,2533,2534],[462,792,868,1222,1224,1225,1423,2468,2516,2533,2534],[99,103,109,157,462,792,829,838,868,1219,1223,1224,1423,2459,2468,2516,2533,2534],[99,100,103,109,868,1212,1213,1219,1220,1423,2459,2468,2516,2533,2534],[99,100,103,109,154,157,462,779,792,829,838,868,999,1000,1041,1043,1045,1047,1129,1130,1219,1221,1223,1225,1400,1423,2459,2468,2516,2533,2534],[99,103,109,868,1045,1047,1219,1225,1423,2459,2468,2516,2533,2534],[99,103,109,868,1222,1423,2459,2468,2516,2533,2534],[462,792,868,1227,1228,1229,1230,1231,1232,1423,2468,2516,2533,2534],[99,103,109,157,792,868,1227,1423,2459,2468,2516,2533,2534],[99,103,109,157,462,792,829,838,868,1223,1228,1423,2459,2468,2516,2533,2534],[99,103,109,154,157,462,779,792,829,838,868,999,1000,1041,1043,1045,1047,1071,1076,1129,1130,1219,1223,1227,1229,1400,1423,2459,2468,2516,2533,2534],[99,103,109,868,1227,1423,2459,2468,2516,2533,2534],[99,103,109,868,1226,1229,1423,2459,2468,2516,2533,2534],[462,792,868,1235,1236,1237,1238,1423,2468,2516,2533,2534],[99,103,109,157,792,868,1237,1423,2459,2468,2516,2533,2534],[99,103,109,868,1238,1423,2459,2468,2516,2533,2534],[99,103,109,157,792,868,975,997,1235,1423,2459,2468,2516,2533,2534],[99,103,109,868,1236,1423,2459,2468,2516,2533,2534],[462,792,868,1240,1242,1244,1423,2468,2516,2533,2534],[99,103,109,868,1241,1242,1423,2459,2468,2516,2533,2534],[99,103,109,868,1242,1243,1423,2459,2468,2516,2533,2534],[99,103,109,154,157,792,826,868,1240,1241,1423,2459,2468,2516,2533,2534],[99,103,109,154,157,792,838,868,1400,1423,2459,2468,2516,2533,2534],[462,792,868,1246,1247,1248,1423,2468,2516,2533,2534],[97,99,103,109,154,157,792,868,1423,2459,2468,2516,2533,2534],[99,103,109,154,157,792,868,1246,1423,2459,2468,2516,2533,2534],[462,792,868,1368,1369,1370,1371,1423,2468,2516,2533,2534],[99,103,109,157,792,868,1370,1423,2459,2468,2516,2533,2534],[99,103,109,868,1371,1423,2459,2468,2516,2533,2534],[99,103,109,157,792,868,1367,1368,1423,2459,2468,2516,2533,2534],[99,103,109,868,1367,1369,1423,2459,2468,2516,2533,2534],[462,792,868,1250,1251,1423,2468,2516,2533,2534],[99,103,109,157,792,868,869,1250,1423,2459,2468,2516,2533,2534],[99,103,109,868,869,1251,1423,2459,2468,2516,2533,2534],[462,792,868,1253,1254,1255,1256,1257,1423,2468,2516,2533,2534],[99,103,109,157,461,792,868,1255,1423,2459,2468,2516,2533,2534],[99,103,109,461,792,868,1254,1256,1423,2459,2468,2516,2533,2534],[99,103,109,157,792,868,1253,1423,2459,2468,2516,2533,2534],[99,103,109,868,1254,1423,2459,2468,2516,2533,2534],[462,792,868,1259,1260,1423,2468,2516,2533,2534],[99,103,109,151,157,461,792,868,1259,1423,2459,2468,2516,2533,2534],[99,103,109,868,1260,1423,2459,2468,2516,2533,2534],[462,792,868,1262,1263,1265,1267,1283,1284,1285,1292,1293,1423,2468,2516,2533,2534],[99,103,109,157,792,868,1264,1423,2459,2468,2516,2533,2534],[99,103,109,868,1263,1423,2459,2468,2516,2533,2534],[99,100,103,109,868,1423,2459,2468,2516,2533,2534],[99,103,109,868,1273,1423,2459,2468,2516,2533,2534],[99,100,103,109,868,1272,1423,2459,2468,2516,2533,2534],[99,103,109,868,1275,1423,2459,2468,2516,2533,2534],[99,100,103,109,868,1263,1264,1270,1423,2459,2468,2516,2533,2534],[99,100,103,109,157,792,868,1264,1277,1278,1423,2459,2468,2516,2533,2534],[868,1271,1272,1274,1276,1279,1280,1281,1423,2468,2516,2533,2534],[99,100,103,109,157,792,868,1263,1264,1265,1423,2459,2468,2516,2533,2534],[99,103,109,868,1262,1423,2459,2468,2516,2533,2534],[868,1211,1269,1278,1286,1287,1288,1289,1423,2468,2516,2533,2534],[99,103,109,868,1284,1423,2459,2468,2516,2533,2534],[99,103,109,868,1263,1267,1423,2459,2468,2516,2533,2534],[99,103,109,868,1263,1267,1286,1423,2459,2468,2516,2533,2534],[99,103,109,868,966,997,1263,1265,1266,1267,1268,1423,2459,2468,2516,2533,2534],[99,103,109,868,1211,1220,1267,1268,1423,2459,2468,2516,2533,2534],[99,103,109,868,1267,1278,1423,2459,2468,2516,2533,2534],[99,103,109,792,868,1220,1263,1264,1423,2459,2468,2516,2533,2534],[99,103,109,868,1264,1423,2459,2468,2516,2533,2534],[99,103,109,868,1263,1264,1423,2459,2468,2516,2533,2534],[99,103,109,868,965,966,997,1267,1271,1282,1291,1423,2459,2468,2516,2533,2534],[99,103,109,157,792,868,1263,1264,1423,2459,2468,2516,2533,2534],[99,100,103,109,157,792,868,1211,1218,1220,1263,1264,1266,1423,2459,2468,2516,2533,2534],[99,100,103,109,157,792,868,1211,1262,1263,1264,1265,1266,1267,1269,1271,1272,1282,1400,1423,2459,2468,2516,2533,2534],[99,103,109,157,792,868,1262,1263,1264,1265,1266,1423,2459,2468,2516,2533,2534],[99,103,109,152,868,1262,1423,2459,2468,2516,2533,2534],[99,103,109,868,1211,1263,1265,1266,1267,1268,1269,1290,1400,1423,2459,2468,2516,2533,2534],[462,792,868,1067,1069,1082,1083,1084,1423,2468,2516,2533,2534],[99,103,109,868,1067,1069,1423,2459,2468,2516,2533,2534],[99,103,109,868,965,997,1063,1067,1069,1423,2459,2468,2516,2533,2534],[99,103,109,868,1064,1067,1423,2459,2468,2516,2533,2534],[99,103,109,868,1064,1067,1068,1423,2459,2468,2516,2533,2534],[99,103,109,151,868,1009,1010,1013,1014,1045,1067,1069,1400,1423,2459,2468,2516,2533,2534],[99,103,109,868,1064,1066,1067,1069,1423,2459,2468,2516,2533,2534],[99,103,109,151,868,965,997,1009,1010,1013,1014,1064,1066,1067,1069,1400,1423,2459,2468,2516,2533,2534],[99,103,109,868,1064,1065,1067,1069,1423,2459,2468,2516,2533,2534],[99,103,109,151,157,462,776,792,868,965,997,1009,1010,1013,1045,1063,1064,1065,1066,1067,1069,1071,1076,1078,1079,1080,1081,1400,1423,2459,2468,2516,2533,2534],[99,103,109,151,154,792,868,1064,1066,1068,1069,1423,2459,2468,2516,2533,2534],[868,1083,1423,2468,2516,2533,2534],[99,103,109,868,1045,1047,1067,1069,1423,2459,2468,2516,2533,2534],[462,792,868,1295,1296,1298,1299,1300,1301,1423,2468,2516,2533,2534],[99,103,109,868,1296,1299,1300,1423,2459,2468,2516,2533,2534],[99,103,109,154,157,792,868,1297,1301,1423,2459,2468,2516,2533,2534],[99,103,109,868,1298,1301,1423,2459,2468,2516,2533,2534],[99,100,103,109,157,792,868,1298,1301,1423,2459,2468,2516,2533,2534],[99,103,109,157,792,868,1295,1423,2459,2468,2516,2533,2534],[99,103,109,868,1296,1423,2459,2468,2516,2533,2534],[99,100,103,109,154,157,792,868,1299,1301,1423,2459,2468,2516,2533,2534],[462,792,868,998,999,1423,2468,2516,2533,2534],[99,103,109,151,157,792,868,998,1423,2459,2468,2516,2533,2534],[99,103,109,868,999,1423,2459,2468,2516,2533,2534],[462,792,868,1303,1304,1423,2468,2516,2533,2534],[99,103,109,151,157,792,868,1423,2459,2468,2516,2533,2534],[99,103,109,151,868,1303,1400,1423,2459,2468,2516,2533,2534],[462,792,868,1100,1101,1102,1103,1105,1106,1423,2468,2516,2533,2534],[99,103,109,157,792,826,868,869,1100,1423,2459,2468,2516,2533,2534],[99,103,109,157,792,826,838,868,869,1423,2459,2468,2516,2533,2534],[99,103,109,868,869,1100,1423,2459,2468,2516,2533,2534],[99,103,109,868,1104,1423,2459,2468,2516,2533,2534],[99,103,109,157,792,868,869,1423,2459,2468,2516,2533,2534],[99,100,103,109,157,792,838,868,1100,1400,1423,2459,2468,2516,2533,2534],[868,869,1100,1423,2468,2516,2533,2534],[462,792,868,1306,1307,1423,2468,2516,2533,2534],[99,103,109,151,157,461,792,829,838,868,995,997,1306,1423,2459,2468,2516,2533,2534],[99,103,109,461,792,829,868,1307,1400,1423,2459,2468,2516,2533,2534],[462,792,868,1309,1310,1311,1312,1423,2468,2516,2533,2534],[99,103,109,157,461,792,868,1310,1423,2459,2468,2516,2533,2534],[99,103,109,868,1311,1423,2459,2468,2516,2533,2534],[99,103,109,868,1309,1423,2459,2468,2516,2533,2534],[462,792,868,1041,1043,1044,1045,1046,1423,2468,2516,2533,2534],[99,103,109,154,792,868,1041,1423,2459,2468,2516,2533,2534],[99,103,109,157,792,829,837,838,868,982,996,997,1042,1423,2459,2468,2516,2533,2534],[99,103,109,829,837,838,868,1043,1423,2459,2468,2516,2533,2534],[99,103,109,154,157,792,827,829,835,838,868,969,997,1041,1043,1044,1423,2459,2468,2516,2533,2534],[99,103,109,154,792,829,838,868,1041,1043,1045,1423,2459,2468,2516,2533,2534],[99,103,109,154,157,792,827,832,838,868,1423,2459,2468,2516,2533,2534],[462,792,868,1351,1352,1353,1354,1355,1356,1423,2468,2516,2533,2534],[99,103,109,157,792,868,988,1423,2459,2468,2516,2533,2534],[99,103,109,157,461,792,868,988,1351,1352,1423,2459,2468,2516,2533,2534],[99,103,109,868,988,1352,1355,1423,2459,2468,2516,2533,2534],[99,103,109,157,461,792,868,988,1351,1352,1353,1423,2459,2468,2516,2533,2534],[99,103,109,868,988,1352,1354,1400,1423,2459,2468,2516,2533,2534],[99,103,109,859,865,868,1423,2459,2468,2516,2533,2534],[462,792,868,1317,1318,1423,2468,2516,2533,2534],[99,103,109,792,868,1314,1315,1318,1423,2459,2468,2516,2533,2534],[99,103,109,868,1316,1318,1423,2459,2468,2516,2533,2534],[99,103,109,154,157,792,868,1315,1317,1423,2459,2468,2516,2533,2534],[462,792,868,1329,1330,1423,2468,2516,2533,2534],[868,1229,1233,1326,1328,1423,2468,2516,2533,2534],[99,103,109,157,792,829,838,868,1229,1233,1321,1328,1400,1423,2459,2468,2516,2533,2534],[462,792,868,1334,1335,1423,2468,2516,2533,2534],[868,1334,1423,2468,2516,2533,2534],[99,103,109,868,1009,1211,1220,1321,1333,1400,1423,2459,2468,2516,2533,2534],[99,103,109,461,792,868,1332,1423,2459,2468,2516,2533,2534],[99,103,109,792,868,1014,1321,1333,1423,2459,2468,2516,2533,2534],[462,792,868,1320,1321,1324,1325,1326,1327,1423,2468,2516,2533,2534],[868,1325,1423,2468,2516,2533,2534],[154,792,868,1321,1322,1423,2468,2516,2533,2534],[868,1321,1323,1423,2468,2516,2533,2534],[99,103,109,868,1321,1322,1323,1324,1423,2459,2468,2516,2533,2534],[99,103,109,157,462,792,868,1321,1323,1423,2459,2468,2516,2533,2534],[99,103,109,868,1320,1322,1323,1324,1423,2459,2468,2516,2533,2534],[99,103,109,151,154,157,462,792,868,965,997,1009,1010,1013,1129,1320,1321,1322,1323,1400,1423,2459,2468,2516,2533,2534],[462,792,868,1338,1339,1341,1343,1345,1346,1423,2468,2516,2533,2534],[868,1339,1423,2468,2516,2533,2534],[99,103,109,154,157,792,868,1337,1339,1340,1423,2459,2468,2516,2533,2534],[99,103,109,154,792,868,1337,1339,1341,1423,2459,2468,2516,2533,2534],[99,103,109,157,792,868,1344,1423,2459,2468,2516,2533,2534],[99,103,109,868,1345,1423,2459,2468,2516,2533,2534],[99,103,109,157,792,868,1339,1342,1423,2459,2468,2516,2533,2534],[99,103,109,868,1339,1343,1423,2459,2468,2516,2533,2534],[99,103,109,154,157,792,868,1337,1338,1423,2459,2468,2516,2533,2534],[99,103,109,154,792,868,1339,1423,2459,2468,2516,2533,2534],[868,1211,1212,1213,1214,1215,1217,1218,1423,2468,2516,2533,2534],[99,103,109,157,792,868,1211,1215,1216,1423,2459,2468,2516,2533,2534],[99,103,109,157,792,868,1211,1217,1423,2459,2468,2516,2533,2534],[99,103,109,157,792,868,1211,1423,2459,2468,2516,2533,2534],[99,103,109,157,792,868,1211,1400,1423,2459,2468,2516,2533,2534],[99,103,109,868,1210,1423,2459,2468,2516,2533,2534],[462,792,868,1348,1349,1423,2468,2516,2533,2534],[99,103,109,157,792,868,1348,1423,2459,2468,2516,2533,2534],[99,103,109,868,1349,1423,2459,2468,2516,2533,2534],[99,103,109,868,1088,1393,1423,2459,2468,2516,2533,2534],[868,1078,1395,1396,1397,1423,2468,2516,2533,2534],[99,103,109,868,1077,1423,2459,2468,2516,2533,2534],[868,893,894,895,896,897,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,989,990,991,992,993,994,995,996,1423,2468,2516,2533,2534],[779,868,1423,2468,2516,2533,2534],[99,103,109,868,988,1423,2459,2468,2516,2533,2534],[99,103,109,154,779,792,868,898,964,1423,2459,2468,2516,2533,2534],[99,103,109,868,966,1423,2459,2468,2516,2533,2534],[99,103,109,147,148,149,150,151,152,153,154,794,795,796,798,799,801,804,805,807,808,827,829,830,831,832,833,834,835,836,837,838,839,842,843,844,846,847,848,850,851,852,853,854,857,858,859,860,864,865,866,868,869,873,874,875,877,878,879,880,881,884,885,886,887,889,891,892,893,894,895,896,897,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,989,990,991,992,993,994,995,996,997,999,1000,1001,1003,1004,1006,1007,1009,1011,1012,1014,1016,1017,1018,1019,1020,1023,1024,1026,1039,1040,1041,1043,1045,1046,1047,1049,1050,1053,1054,1055,1056,1058,1059,1061,1062,1067,1069,1071,1073,1074,1075,1076,1078,1085,1086,1087,1088,1089,1090,1096,1098,1099,1100,1101,1102,1103,1105,1107,1108,1109,1110,1112,1113,1114,1116,1117,1119,1120,1121,1123,1124,1126,1127,1129,1130,1131,1133,1134,1137,1138,1140,1141,1143,1146,1147,1148,1149,1150,1154,1156,1157,1159,1160,1162,1163,1164,1166,1167,1168,1169,1170,1171,1172,1175,1176,1177,1178,1179,1181,1182,1183,1184,1185,1187,1188,1190,1191,1193,1195,1197,1198,1199,1201,1202,1204,1205,1207,1208,1209,1211,1212,1213,1214,1215,1217,1218,1222,1225,1227,1229,1230,1233,1234,1236,1238,1239,1242,1244,1245,1246,1247,1248,1249,1251,1252,1254,1256,1257,1258,1260,1261,1262,1263,1265,1267,1283,1284,1285,1292,1294,1296,1298,1299,1300,1301,1302,1303,1305,1307,1308,1309,1311,1312,1313,1318,1319,1320,1321,1324,1326,1327,1328,1329,1331,1335,1336,1339,1341,1343,1345,1346,1347,1349,1350,1351,1352,1354,1355,1357,1360,1361,1362,1365,1366,1369,1371,1372,1374,1375,1376,1377,1378,1379,1380,1382,1384,1385,1387,1389,1391,1392,1393,1394,1395,1396,1397,1398,1399,1423,2459,2468,2516,2533,2534],[106,868,898,899,900,901,902,903,904,905,906,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,1423,2468,2516,2533,2534],[99,103,109,868,1088,1090,1423,2459,2468,2516,2533,2534],[776,868,1423,2468,2516,2533,2534],[158,159,160,161,162,163,868,1423,2468,2516,2533,2534],[154,155,156,157,158,159,160,161,162,163,164,165,461,462,463,464,465,466,467,469,777,780,781,782,783,784,785,786,787,788,789,790,791,868,1423,2468,2516,2533,2534],[90,154,792,868,1423,2468,2516,2533,2534],[97,868,1423,2468,2516,2533,2534],[99,103,109,460,868,1423,2459,2468,2516,2533,2534],[155,156,157,165,461,462,463,464,465,466,467,468,868,1423,2468,2516,2533,2534],[99,103,109,462,868,1423,2459,2468,2516,2533,2534],[155,156,157,868,1423,2468,2516,2533,2534],[99,103,109,157,868,1423,2459,2468,2516,2533,2534],[99,103,109,155,156,868,1423,2459,2468,2516,2533,2534],[151,868,1423,2468,2516,2533,2534],[148,151,868,1423,2468,2516,2533,2534],[868,1423,2242,2468,2516,2533,2534],[868,1423,1474,2468,2516,2533,2534],[868,1423,1472,1473,1475,2468,2516,2533,2534],[868,1423,1474,1478,1481,1483,1484,1486,1487,1488,1489,1490,1491,1492,1493,1494,1495,1496,1497,1498,1499,1500,1501,1502,1503,1504,1505,1507,1508,1509,1510,1511,1512,1513,1514,1515,1516,1517,1518,1519,1520,1521,1522,1523,1524,1525,1526,1527,2468,2516,2533,2534],[868,1423,1474,1478,1479,2468,2516,2533,2534],[868,1423,1474,1478,2468,2516,2533,2534],[868,1423,1474,1475,1528,2468,2516,2533,2534],[868,1423,1480,2468,2516,2533,2534],[868,1423,1480,1485,2468,2516,2533,2534],[868,1423,1480,1484,2468,2516,2533,2534],[868,1423,1477,1480,1484,2468,2516,2533,2534],[868,1423,1480,1483,1506,2468,2516,2533,2534],[868,1423,1478,1480,2468,2516,2533,2534],[868,1423,1477,2468,2516,2533,2534],[868,1423,1474,1482,2468,2516,2533,2534],[868,1423,1478,1482,1483,1484,2468,2516,2533,2534],[868,1423,1477,1478,2468,2516,2533,2534],[868,1423,1474,1475,2468,2516,2533,2534],[868,1423,1474,1475,1528,1530,2468,2516,2533,2534],[868,1423,1474,1531,2468,2516,2533,2534],[868,1423,1538,1539,1540,2468,2516,2533,2534],[868,1423,1474,1528,1529,2468,2516,2533,2534],[868,1423,1474,1476,1543,2468,2516,2533,2534],[868,1423,1532,1534,2468,2516,2533,2534],[868,1423,1531,1534,2468,2516,2533,2534],[868,1423,1474,1483,1492,1528,1529,1530,1531,1534,1535,1536,1537,1541,1542,2468,2516,2533,2534],[868,1423,1509,1534,2468,2516,2533,2534],[868,1423,1532,1533,2468,2516,2533,2534],[868,1423,1474,1543,2468,2516,2533,2534],[868,1423,1531,1535,1536,2468,2516,2533,2534],[868,1423,1534,2468,2516,2533,2534],[868,1423,1956,1957,1958,1959,2468,2516,2533,2534],[868,1423,1956,1957,1958,2468,2516,2533,2534],[868,1423,1956,2468,2516,2533,2534],[868,1423,1956,1957,2468,2516,2533,2534],[775,868,1423,2468,2516,2533,2534],[99,103,108,868,1423,2459,2468,2516,2533,2534],[868,1423,2468,2516,2533,2534,2588],[868,1423,2468,2516,2533,2534,2586,2588],[868,1423,2468,2516,2533,2534,2577,2585,2586,2587,2589,2591],[868,1423,2468,2516,2533,2534,2575],[868,1423,2468,2516,2533,2534,2578,2583,2588,2591],[868,1423,2468,2516,2533,2534,2574,2591],[868,1423,2468,2516,2533,2534,2578,2579,2582,2583,2584,2591],[868,1423,2468,2516,2533,2534,2578,2579,2580,2582,2583,2591],[868,1423,2468,2516,2533,2534,2575,2576,2577,2578,2579,2583,2584,2585,2587,2588,2589,2591],[868,1423,2468,2516,2533,2534,2591],[868,1423,2468,2516,2533,2534,2573,2575,2576,2577,2578,2579,2580,2582,2583,2584,2585,2586,2587,2588,2589,2590],[868,1423,2468,2516,2533,2534,2573,2591],[868,1423,2468,2516,2533,2534,2578,2580,2581,2583,2584,2591],[868,1423,2468,2516,2533,2534,2582,2591],[868,1423,2468,2516,2533,2534,2583,2584,2588,2591],[868,1423,2468,2516,2533,2534,2576,2586],[868,1423,1741,2468,2516,2533,2534],[868,1423,1742,1743,1744,2468,2516,2533,2534],[868,1423,1742,1743,1745,2468,2516,2533,2534],[868,1423,2468,2516,2533,2534,2568,2623,2624],[868,1423,2468,2516,2533,2534,2567,2568],[868,1423,2468,2516,2533,2534,2573,2612],[868,1423,2468,2516,2533,2534,2599],[868,1423,2468,2516,2533,2534,2595,2612],[868,1423,2468,2516,2533,2534,2594,2595,2596,2599,2611,2612,2613,2614,2615,2616,2617,2618,2619,2620],[868,1423,2468,2516,2533,2534,2616],[868,1423,2468,2516,2533,2534,2594,2596,2599,2617,2618],[868,1423,2468,2516,2533,2534,2615,2619],[868,1423,2468,2516,2533,2534,2594,2597,2598],[868,1423,2468,2516,2533,2534,2597],[868,1423,2468,2516,2533,2534,2594,2595,2596,2599,2611],[868,1423,2468,2516,2533,2534,2600,2605,2611],[868,1423,2468,2516,2533,2534,2611],[868,1423,2468,2516,2533,2534,2600,2611],[868,1423,2468,2516,2533,2534,2600,2601,2602,2603,2604,2605,2606,2607,2608,2609,2610],[868,1423,2129,2162,2468,2516,2533,2534],[868,1423,2129,2468,2516,2533,2534],[868,1423,2162,2163,2164,2468,2516,2533,2534],[868,1423,2129,2163,2468,2516,2533,2534],[868,1423,2110,2111,2112,2113,2114,2115,2116,2117,2118,2119,2120,2121,2122,2123,2128,2468,2516,2533,2534],[868,1423,2111,2112,2129,2468,2516,2533,2534],[868,1423,2111,2129,2468,2516,2533,2534],[868,1423,2122,2129,2468,2516,2533,2534],[868,1423,2124,2125,2126,2127,2468,2516,2533,2534],[868,1423,2113,2129,2468,2516,2533,2534],[868,1423,2138,2468,2516,2533,2534],[868,1423,2130,2131,2132,2133,2134,2135,2136,2137,2138,2139,2140,2141,2142,2143,2144,2145,2146,2468,2516,2533,2534],[868,1423,2130,2138,2140,2468,2516,2533,2534],[868,1423,2136,2138,2145,2468,2516,2533,2534],[868,1423,2140,2468,2516,2533,2534],[868,1423,2138,2140,2468,2516,2533,2534],[868,1423,2139,2468,2516,2533,2534],[868,1423,2130,2138,2468,2516,2533,2534],[868,1423,2131,2132,2133,2134,2135,2136,2137,2139,2468,2516,2533,2534],[868,1423,2468,2516,2533,2534,2636],[868,1423,1931,2468,2516,2533,2534],[868,1423,1552,1553,1554,1555,1556,1557,1558,1559,1560,1561,1562,1563,1564,2468,2516,2533,2534],[868,1423,1565,2468,2516,2533,2534],[868,1423,1625,2468,2516,2533,2534],[868,1423,1620,1621,2468,2516,2533,2534],[99,103,109,868,1423,1690,2459,2468,2516,2533,2534],[868,1423,1693,2468,2516,2533,2534],[99,103,109,868,1423,1639,1723,2459,2468,2516,2533,2534],[99,103,109,868,1423,1622,1639,1723,2459,2468,2516,2533,2534],[99,103,109,868,1423,1723,2459,2468,2516,2533,2534],[868,1423,1699,2468,2516,2533,2534],[99,103,109,868,1423,1667,2459,2468,2516,2533,2534],[99,103,109,868,1423,1723,1727,2459,2468,2516,2533,2534],[868,1423,1703,2468,2516,2533,2534],[868,1423,1631,1632,2468,2516,2533,2534],[868,1423,1630,2468,2516,2533,2534],[99,103,109,868,1423,1623,2459,2468,2516,2533,2534],[99,103,109,868,1423,1644,2459,2468,2516,2533,2534],[868,1423,1641,1642,2468,2516,2533,2534],[868,1423,1644,2468,2516,2533,2534],[868,1423,1641,2468,2516,2533,2534],[868,1423,1636,2468,2516,2533,2534],[868,1423,1667,1674,1706,1721,1722,1953,2468,2516,2533,2534],[99,103,109,868,1423,1707,2459,2468,2516,2533,2534],[99,103,109,868,1423,1636,1661,2459,2468,2516,2533,2534],[868,1423,1675,2468,2516,2533,2534],[868,1423,1677,2468,2516,2533,2534],[868,1423,1730,2468,2516,2533,2534],[99,103,109,868,1423,1636,1667,2459,2468,2516,2533,2534],[868,1423,1680,2468,2516,2533,2534],[868,1423,1732,2468,2516,2533,2534],[99,103,109,868,1423,1639,1667,2459,2468,2516,2533,2534],[868,1423,1734,2468,2516,2533,2534],[99,103,109,868,1423,1636,1637,1667,2459,2468,2516,2533,2534],[868,1423,1668,2468,2516,2533,2534],[868,1423,1709,2468,2516,2533,2534],[868,1423,1649,2468,2516,2533,2534],[868,1423,1736,2468,2516,2533,2534],[868,1423,1683,2468,2516,2533,2534],[99,103,109,868,1423,1667,1723,2459,2468,2516,2533,2534],[99,103,109,868,1423,1636,1656,1686,1723,2459,2468,2516,2533,2534],[99,103,109,868,1423,1618,2459,2468,2516,2533,2534],[868,1423,1738,2468,2516,2533,2534],[99,103,109,868,1423,1641,1644,2459,2468,2516,2533,2534],[868,1423,1949,2468,2516,2533,2534],[99,103,109,868,1423,1643,1644,1740,1948,2459,2468,2516,2533,2534],[868,1423,1951,2468,2516,2533,2534],[868,1423,1663,2468,2516,2533,2534],[868,1423,1662,2468,2516,2533,2534],[868,1423,1628,2468,2516,2533,2534],[868,1423,1688,2468,2516,2533,2534],[868,1423,1713,2468,2516,2533,2534],[99,103,109,868,1423,1665,2459,2468,2516,2533,2534],[868,1423,1626,1627,1640,1644,1645,1646,1647,1648,1650,1724,1725,1726,1727,1728,1729,1731,1733,1735,1737,1739,1950,1952,2468,2516,2533,2534],[868,1423,1619,1622,1624,1640,1644,1645,1646,1647,1648,1650,1953,2468,2516,2533,2534],[868,1423,1619,1622,1624,1629,1633,2468,2516,2533,2534],[868,1423,1634,1673,2468,2516,2533,2534],[868,1423,1669,1670,1671,1672,2468,2516,2533,2534],[868,1423,1676,1678,1679,1681,1682,1684,1685,1687,1689,1691,1692,1694,1695,1696,1697,1698,1700,1701,1702,1704,1705,2468,2516,2533,2534],[868,1423,1708,1710,1711,1712,1714,1715,1716,1717,1718,1719,1720,2468,2516,2533,2534],[868,1423,1656,2468,2516,2533,2534],[868,1423,1655,2468,2516,2533,2534],[99,103,109,868,1423,1639,1644,2459,2468,2516,2533,2534],[99,103,109,868,1423,1622,1639,1644,1646,2459,2468,2516,2533,2534],[868,1423,1639,1643,2468,2516,2533,2534],[868,1423,1618,1637,1640,1644,1645,1646,1647,1648,1650,1651,1652,1653,1654,1655,1656,1657,1658,1659,1660,1661,1662,1663,1664,1665,1666,2468,2516,2533,2534],[868,1423,1651,2468,2516,2533,2534],[868,1423,1639,2468,2516,2533,2534],[99,103,109,868,1423,1637,1662,2459,2468,2516,2533,2534],[868,1423,1637,2468,2516,2533,2534],[99,103,109,868,1423,1637,1651,2459,2468,2516,2533,2534],[868,1423,2468,2481,2485,2516,2533,2534,2559],[868,1423,2468,2481,2516,2533,2534,2548,2559],[868,1423,2468,2476,2516,2533,2534],[868,1423,2468,2478,2481,2516,2533,2534,2556,2559],[868,1423,2468,2516,2533,2534,2536,2556],[868,1423,2468,2476,2516,2533,2534,2566],[868,1423,2468,2478,2481,2516,2533,2534,2536,2559],[868,1423,2468,2473,2474,2477,2480,2516,2527,2533,2534,2548,2559],[868,1423,2468,2481,2488,2516,2533,2534],[868,1423,2468,2473,2479,2516,2533,2534],[868,1423,2468,2481,2502,2503,2516,2533,2534],[868,1423,2468,2477,2481,2516,2533,2534,2551,2559,2566],[868,1423,2468,2502,2516,2533,2534,2566],[868,1423,2468,2475,2476,2516,2533,2534,2566],[868,1423,2468,2481,2516,2533,2534],[868,1423,2468,2475,2476,2477,2478,2479,2480,2481,2482,2483,2485,2486,2487,2488,2489,2490,2491,2492,2493,2494,2495,2496,2497,2498,2499,2500,2501,2503,2504,2505,2506,2507,2508,2516,2533,2534],[868,1423,2468,2481,2496,2516,2533,2534],[868,1423,2468,2481,2488,2489,2516,2533,2534],[868,1423,2468,2479,2481,2489,2490,2516,2533,2534],[868,1423,2468,2480,2516,2533,2534],[868,1423,2468,2473,2476,2481,2516,2533,2534],[868,1423,2468,2481,2485,2489,2490,2516,2533,2534],[868,1423,2468,2485,2516,2533,2534],[868,1423,2468,2479,2481,2484,2516,2533,2534,2559],[868,1423,2468,2473,2478,2481,2488,2516,2533,2534],[868,1423,2468,2516,2533,2534,2548],[868,1423,2468,2476,2481,2502,2516,2533,2534,2564,2566],[868,1423,2468,2516,2533,2534,2625,2633,2634,2635,2637],[868,1423,2468,2516,2533,2534,2625,2633],[868,1423,2468,2516,2533,2534,2634],[868,1423,2468,2516,2533,2534,2638,2639],[868,1423,2468,2516,2533,2534,2638,2639,2640],[868,1423,2468,2516,2533,2534,2639,2643,2644],[868,1423,2468,2516,2533,2534,2639,2643],[868,1423,2468,2516,2533,2534,2624,2639,2643,2644],[868,1423,2468,2516,2533,2534,2568,2572,2623,2624,2642],[868,1423,2468,2516,2533,2534,2624],[868,1423,2468,2516,2533,2534,2624,2648],[87,868,1423,2468,2516,2533,2534],[83,84,86,868,1423,2468,2516,2527,2528,2530,2531,2532,2533,2534,2536,2548,2556,2559,2565,2566,2568,2569,2570,2571,2572,2592,2593,2622,2623,2624],[83,84,85,868,1423,2468,2516,2533,2534,2570],[83,868,1423,2468,2516,2533,2534],[84,868,1423,2468,2516,2533,2534],[85,86,868,1423,2468,2516,2533,2534],[868,1423,2468,2516,2533,2534,2621],[868,1423,2468,2516,2533,2534,2568,2624],[99,103,109,868,1423,1438,1439,1441,1442,1443,2459,2468,2516,2533,2534],[99,102,103,109,868,1423,2459,2468,2516,2533,2534],[94,98,868,1423,2468,2516,2533,2534],[98,868,1423,2468,2516,2533,2534],[868,1423,2082,2468,2516,2533,2534],[99,103,109,868,1423,2048,2049,2459,2468,2516,2533,2534],[99,103,109,868,1423,2048,2459,2468,2516,2533,2534],[99,103,109,868,1423,2031,2459,2468,2516,2533,2534],[99,103,109,868,1423,2033,2459,2468,2516,2533,2534],[99,103,109,868,1423,2033,2034,2459,2468,2516,2533,2534],[868,1423,2031,2468,2516,2533,2534],[99,103,109,868,1423,2036,2459,2468,2516,2533,2534],[99,103,109,868,1423,2038,2459,2468,2516,2533,2534],[99,103,109,868,1423,2038,2039,2040,2459,2468,2516,2533,2534],[868,1423,2069,2468,2516,2533,2534],[868,1423,2032,2035,2037,2041,2042,2047,2050,2052,2053,2054,2056,2057,2061,2063,2065,2068,2070,2071,2468,2516,2533,2534],[99,103,109,868,1423,2051,2459,2468,2516,2533,2534],[868,1423,2043,2044,2468,2516,2533,2534],[868,1423,2045,2046,2468,2516,2533,2534],[868,1423,2066,2067,2468,2516,2533,2534],[99,103,109,868,1423,2066,2459,2468,2516,2533,2534],[868,1423,2058,2059,2060,2468,2516,2533,2534],[99,103,109,868,1423,2058,2459,2468,2516,2533,2534],[99,103,109,868,1423,2055,2459,2468,2516,2533,2534],[99,103,109,868,1423,2062,2459,2468,2516,2533,2534],[99,103,109,868,1423,2064,2459,2468,2516,2533,2534],[99,103,109,868,1423,2073,2459,2468,2516,2533,2534],[868,1423,2024,2030,2072,2074,2468,2516,2533,2534],[868,1423,2025,2026,2468,2516,2533,2534],[99,103,109,868,1423,2025,2459,2468,2516,2533,2534],[99,103,109,868,1423,2023,2024,2459,2468,2516,2533,2534],[99,103,109,868,1423,2018,2027,2459,2468,2516,2533,2534],[99,103,109,868,1423,2018,2023,2459,2468,2516,2533,2534],[868,1423,2023,2468,2516,2533,2534],[868,1423,2028,2029,2468,2516,2533,2534],[868,1423,2019,2020,2021,2022,2468,2516,2533,2534],[868,1423,2019,2020,2021,2468,2516,2533,2534],[868,1423,2019,2468,2516,2533,2534],[868,1423,2019,2020,2468,2516,2533,2534],[111,113,114,115,116,117,118,119,120,121,122,123,868,1423,2468,2516,2533,2534],[111,112,114,115,116,117,118,119,120,121,122,123,868,1423,2468,2516,2533,2534],[112,113,114,115,116,117,118,119,120,121,122,123,868,1423,2468,2516,2533,2534],[111,112,113,115,116,117,118,119,120,121,122,123,868,1423,2468,2516,2533,2534],[111,112,113,114,116,117,118,119,120,121,122,123,868,1423,2468,2516,2533,2534],[111,112,113,114,115,117,118,119,120,121,122,123,868,1423,2468,2516,2533,2534],[111,112,113,114,115,116,118,119,120,121,122,123,868,1423,2468,2516,2533,2534],[111,112,113,114,115,116,117,119,120,121,122,123,868,1423,2468,2516,2533,2534],[111,112,113,114,115,116,117,118,120,121,122,123,868,1423,2468,2516,2533,2534],[111,112,113,114,115,116,117,118,119,121,122,123,868,1423,2468,2516,2533,2534],[111,112,113,114,115,116,117,118,119,120,122,123,868,1423,2468,2516,2533,2534],[111,112,113,114,115,116,117,118,119,120,121,123,868,1423,2468,2516,2533,2534],[111,112,113,114,115,116,117,118,119,120,121,122,868,1423,2468,2516,2533,2534],[868,1422,2468,2516,2533,2534],[868,1423,1424,2468,2516,2533,2534],[100,868,1423,1578,2468,2516,2533,2534],[100,124,126,132,868,1423,1578,1580,2468,2516,2533,2534],[100,124,868,1423,1578,2468,2516,2533,2534],[99,100,101,103,105,106,107,109,133,136,868,1423,1580,1582,2459,2462,2468,2516,2533,2534],[99,100,101,103,109,129,868,1423,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,1457,2017,2459,2468,2516,2533,2534],[88,99,100,101,103,109,133,460,868,1401,1423,1433,1453,1461,1639,2017,2078,2079,2080,2081,2082,2084,2098,2099,2459,2468,2516,2533,2534],[99,100,101,103,109,460,868,1423,1581,2459,2462,2468,2516,2533,2534],[99,100,101,103,105,109,868,1423,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,2103,2459,2468,2516,2533,2534],[88,99,100,101,103,109,868,1406,1423,2184,2191,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1401,1423,2186,2459,2468,2516,2533,2534],[100,460,868,1423,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1423,2195,2196,2197,2459,2468,2516,2533,2534],[99,100,101,103,105,109,868,1400,1423,2195,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1406,1423,2196,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1406,1423,2459,2468,2516,2533,2534],[99,100,101,103,109,460,868,1423,1436,1587,2200,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,2200,2459,2468,2516,2533,2534],[100,868,1423,2468,2516,2533,2534],[99,100,101,103,109,868,1423,2200,2201,2202,2203,2204,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,2186,2200,2205,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,2207,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,2187,2459,2468,2516,2533,2534],[99,100,103,109,868,1400,1401,1423,1436,1453,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1423,2187,2188,2189,2459,2468,2516,2533,2534],[99,100,101,103,105,109,868,1401,1423,1453,1580,2185,2186,2187,2189,2190,2191,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,1467,2459,2468,2516,2533,2534],[99,100,101,103,105,109,868,1400,1423,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,2186,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,1470,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,2017,2075,2459,2468,2516,2533,2534],[99,100,101,103,109,133,460,868,1401,1423,1433,1467,1468,1469,1471,1544,1545,1579,1580,2459,2468,2516,2533,2534],[99,100,101,103,109,124,126,133,868,1400,1401,1423,1454,1455,1580,2459,2468,2516,2533,2534],[99,100,101,103,109,460,868,1401,1423,1433,2081,2225,2459,2468,2516,2533,2534],[99,100,103,109,868,1423,1579,2459,2468,2516,2533,2534],[100,130,136,868,1423,2468,2516,2533,2534],[100,103,868,1423,2462,2468,2516,2533,2534],[100,868,1401,1423,2228,2468,2516,2533,2534],[99,100,103,109,133,868,1423,2459,2468,2516,2533,2534],[100,868,1423,1441,2232,2234,2236,2238,2468,2516,2533,2534],[99,100,103,109,460,868,1423,2459,2468,2516,2533,2534],[88,99,100,103,109,868,1423,2241,2242,2459,2468,2516,2533,2534],[99,100,103,109,868,1423,2244,2459,2468,2516,2533,2534],[99,100,103,109,868,1423,1573,2246,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,1580,2459,2468,2516,2533,2534],[99,100,101,103,109,139,868,1423,2459,2462,2468,2516,2533,2534],[99,100,101,103,105,109,136,138,140,141,142,144,145,868,1402,1423,1580,2459,2468,2516,2533,2534],[99,100,101,103,109,130,139,143,868,1423,2459,2468,2516,2533,2534],[99,100,101,103,109,133,146,868,1401,1423,2459,2468,2516,2533,2534],[99,100,101,103,109,130,136,868,1423,1580,2459,2468,2516,2533,2534],[88,99,100,101,103,105,109,136,868,1423,2459,2468,2516,2533,2534],[99,100,101,103,109,136,137,868,1423,2459,2468,2516,2533,2534],[99,100,101,103,109,136,868,1409,1423,1580,2459,2468,2516,2533,2534],[99,100,101,103,107,109,868,1423,1580,2459,2468,2516,2533,2534],[99,100,101,103,109,129,868,1406,1423,2459,2462,2468,2516,2533,2534],[99,100,101,103,109,868,1407,1423,2459,2462,2468,2516,2533,2534],[99,100,101,103,109,133,136,868,1405,1408,1423,1580,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1403,1404,1410,1423,2459,2468,2516,2533,2534],[88,99,100,103,109,868,1423,1579,1583,1584,1585,2459,2468,2516,2533,2534],[100,103,124,125,129,130,132,133,868,1423,1572,1573,2462,2468,2516,2533,2534],[100,103,868,1423,1580,2462,2468,2516,2533,2534],[100,103,107,129,133,868,1423,1572,2462,2468,2516,2533,2534],[100,103,125,868,1411,1413,1414,1417,1418,1420,1421,1423,1426,1430,1432,1567,1571,2462,2468,2516,2533,2534],[100,109,868,1423,2468,2516,2533,2534],[100,109,124,868,1423,1579,2468,2516,2533,2534],[100,103,109,125,129,868,1423,2462,2468,2516,2533,2534],[90,100,109,128,131,134,135,868,1423,2468,2516,2533,2534],[100,103,109,125,127,128,131,132,868,1423,1573,2462,2468,2516,2533,2534],[100,128,130,131,133,868,1423,1573,2468,2516,2533,2534],[100,868,1376,1400,1423,2468,2516,2533,2534],[100,868,1423,1424,2468,2516,2533,2534],[100,868,1423,1452,1453,2468,2516,2533,2534],[100,133,868,1423,2468,2516,2533,2534],[100,110,123,126,868,1423,1574,1575,2468,2516,2533,2534],[100,110,868,1423,1575,2468,2516,2533,2534],[100,110,123,124,125,126,132,868,1401,1423,1573,1575,1576,1577,2468,2516,2533,2534],[110,868,1423,1575,2468,2516,2533,2534],[100,868,1423,2461,2468,2516,2533,2534],[90,100,123,868,1423,2468,2516,2533,2534],[99,100,101,103,109,125,127,132,133,460,868,1400,1416,1419,1423,2459,2468,2516,2533,2534],[99,100,101,103,109,125,127,132,133,868,1400,1415,1416,1423,2459,2468,2516,2533,2534],[99,100,101,103,109,125,127,128,131,133,460,868,1400,1415,1416,1423,1580,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,1597,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1423,1587,2186,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1401,1423,1436,1587,2254,2459,2468,2516,2533,2534],[99,100,101,103,109,143,868,1400,1423,1587,2227,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1401,1423,1436,1573,1587,2227,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1423,1455,1588,2191,2459,2468,2516,2533,2534],[99,100,101,103,109,460,868,1400,1423,1588,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,1598,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1423,1599,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1423,1435,1580,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1423,1580,1600,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,2264,2267,2268,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,2264,2265,2266,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,2265,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1423,2264,2459,2468,2516,2533,2534],[99,100,101,103,109,136,868,1423,2264,2459,2468,2516,2533,2534],[99,100,103,109,868,1400,1401,1423,1600,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1401,1423,1436,1600,2270,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1423,1600,2186,2459,2468,2516,2533,2534],[99,100,101,103,109,460,868,1406,1423,1593,2459,2468,2516,2533,2534],[99,100,101,103,109,460,868,1401,1423,1453,1593,2459,2468,2516,2533,2534],[99,100,101,103,109,460,868,1401,1406,1423,1436,1593,2274,2275,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1401,1423,1579,1601,1602,1603,2227,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1401,1423,1436,1603,2277,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1401,1423,1436,1603,2280,2459,2468,2516,2533,2534],[99,100,101,103,109,460,868,1401,1423,1424,1425,1433,1549,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1406,1423,1589,2279,2459,2468,2516,2533,2534],[99,100,101,103,107,109,868,1423,1436,1573,1589,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1401,1423,1433,2459,2468,2516,2533,2534],[99,100,101,103,109,133,868,1401,1423,1433,2459,2468,2516,2533,2534],[99,100,101,103,109,133,460,868,1400,1401,1423,1433,1464,1579,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1401,1423,1425,1433,1436,1579,2102,2459,2468,2516,2533,2534],[99,100,101,103,109,133,460,868,1400,1401,1423,1433,1436,1437,1467,1468,1471,1544,1545,1547,1579,1605,2102,2459,2462,2468,2516,2533,2534],[99,100,101,103,109,133,868,1400,1401,1423,1433,1436,1468,2287,2288,2459,2468,2516,2533,2534],[99,100,101,103,109,133,460,868,1400,1401,1423,1433,1436,1464,1465,1471,1544,1545,1547,1579,1601,2207,2208,2290,2459,2462,2468,2516,2533,2534],[99,100,101,103,109,133,460,868,1400,1401,1423,1433,1436,1464,1471,1544,1545,1547,1579,1601,2207,2208,2290,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1401,1423,2185,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1406,1423,1580,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,1428,2459,2468,2516,2533,2534],[99,100,101,103,109,460,868,1423,1428,2459,2468,2516,2533,2534],[99,100,101,103,109,460,775,868,1423,1428,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,2296,2459,2468,2516,2533,2534],[100,868,1423,2295,2297,2468,2516,2533,2534],[99,100,101,103,109,868,1423,2303,2459,2468,2516,2533,2534],[100,868,1423,2304,2305,2468,2516,2533,2534],[99,100,101,103,109,775,868,1401,1423,2185,2459,2468,2516,2533,2534],[99,100,101,103,109,775,868,1401,1423,2185,2307,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,2296,2307,2459,2468,2516,2533,2534],[100,868,1423,2307,2308,2309,2468,2516,2533,2534],[99,100,101,103,109,868,1423,2311,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,2296,2311,2459,2468,2516,2533,2534],[100,868,1423,2311,2312,2313,2468,2516,2533,2534],[99,100,101,103,109,775,868,1401,1423,2185,2315,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,2296,2315,2459,2468,2516,2533,2534],[100,868,1423,2315,2316,2317,2468,2516,2533,2534],[99,100,101,103,109,868,1423,2300,2319,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,2296,2319,2459,2468,2516,2533,2534],[100,868,1423,2319,2320,2321,2468,2516,2533,2534],[99,100,101,103,109,868,1423,2300,2323,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,2296,2323,2459,2468,2516,2533,2534],[100,868,1423,2323,2324,2325,2468,2516,2533,2534],[99,100,101,103,109,868,1423,2327,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,1427,2327,2459,2468,2516,2533,2534],[100,868,1423,2327,2328,2329,2468,2516,2533,2534],[99,100,101,103,109,868,1423,2331,2459,2468,2516,2533,2534],[100,868,1423,2331,2332,2333,2468,2516,2533,2534],[99,100,101,103,109,775,868,1401,1423,2186,2335,2459,2468,2516,2533,2534],[100,868,1423,2335,2336,2468,2516,2533,2534],[99,100,101,103,109,868,1423,2338,2459,2468,2516,2533,2534],[100,868,1423,2338,2339,2340,2468,2516,2533,2534],[99,100,101,103,109,775,868,1401,1423,2185,2342,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,2296,2342,2459,2468,2516,2533,2534],[100,868,1423,2342,2343,2344,2468,2516,2533,2534],[99,100,101,103,109,868,1423,2346,2459,2468,2516,2533,2534],[100,868,1423,2346,2347,2348,2468,2516,2533,2534],[99,100,101,103,109,868,1406,1423,1427,1428,2294,2301,2302,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,1427,2459,2468,2516,2533,2534],[99,100,101,103,109,460,868,1401,1423,1427,1429,2459,2468,2516,2533,2534],[99,100,101,103,105,109,868,1423,2351,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,1427,2352,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,1427,2294,2298,2459,2468,2516,2533,2534],[99,100,101,103,109,123,868,1400,1401,1423,1604,1606,1612,2227,2354,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1401,1423,1436,1573,1612,2251,2356,2357,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1401,1423,2228,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1401,1423,1436,1612,2186,2210,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1423,1612,2186,2227,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1423,1425,2459,2468,2516,2533,2534],[99,100,101,103,109,132,460,868,1400,1401,1423,1467,2459,2468,2516,2533,2534],[99,100,101,103,109,133,460,868,1423,1424,1425,2459,2462,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1401,1423,1424,1425,1549,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1412,1423,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,2459,2462,2468,2516,2533,2534],[99,100,101,103,109,460,868,1400,1423,1596,2459,2468,2516,2533,2534],[99,100,101,103,109,460,868,1400,1401,1423,1424,1431,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1401,1423,1424,1431,1436,2459,2468,2516,2533,2534],[99,100,101,103,109,460,868,1401,1423,1436,1594,2459,2468,2516,2533,2534],[99,100,101,103,109,110,460,868,1400,1423,1433,1437,1444,1575,1590,1596,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1423,1590,2186,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1401,1423,1436,1590,2207,2208,2374,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,1436,1590,2227,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,1590,2459,2468,2516,2533,2534],[99,100,101,103,109,460,868,1423,2368,2459,2468,2516,2533,2534],[99,100,101,103,109,460,868,1423,2459,2468,2516,2533,2534],[99,100,101,103,109,460,868,1401,1423,1590,2368,2369,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1401,1423,1436,1590,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1401,1423,1436,1590,2372,2459,2468,2516,2533,2534],[99,100,101,103,109,460,868,1400,1423,1444,1550,2459,2468,2516,2533,2534],[100,868,1423,1437,1464,2468,2516,2533,2534],[99,100,101,103,109,460,868,1400,1401,1423,1465,1550,2378,2459,2468,2516,2533,2534],[99,100,101,103,109,460,868,1423,1436,1550,2378,2379,2459,2468,2516,2533,2534],[99,100,101,103,109,460,868,1423,1424,1436,1550,2459,2468,2516,2533,2534],[99,100,101,103,109,133,460,868,1401,1423,1424,1433,1435,1436,1437,1547,1550,1551,2380,2381,2382,2459,2462,2468,2516,2533,2534],[99,100,101,103,109,460,868,1400,1423,1550,2385,2459,2468,2516,2533,2534],[99,100,101,103,109,460,868,1400,1423,1550,2386,2459,2468,2516,2533,2534],[99,100,101,103,109,123,143,868,1400,1401,1423,1591,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,1436,1573,1591,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1423,1591,2186,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,1591,2391,2459,2468,2516,2533,2534],[99,100,101,103,109,460,868,1401,1423,1433,1434,1436,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1423,1601,2186,2227,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1401,1423,1601,2394,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1423,1602,2186,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1401,1423,1436,1602,2396,2459,2468,2516,2533,2534],[99,100,101,103,109,460,868,1400,1401,1423,1437,1461,1580,2459,2468,2516,2533,2534],[99,100,101,103,109,460,868,1401,1423,1425,1433,1447,1461,1462,1469,1547,1568,1569,1570,2100,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1423,1601,1602,1603,1605,2186,2227,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1401,1423,1436,1603,1605,2227,2399,2459,2468,2516,2533,2534],[99,100,101,103,107,109,868,1400,1406,1423,1573,1604,2186,2459,2468,2516,2533,2534],[99,100,101,103,107,109,868,1400,1401,1423,1436,1604,2401,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1406,1423,1604,1605,2186,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1423,1605,2186,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1401,1423,1436,1605,2403,2404,2459,2468,2516,2533,2534],[99,100,101,103,109,460,868,1400,1401,1423,1592,2406,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1423,1606,2186,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1401,1423,1436,1606,2408,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1401,1423,1436,1573,1606,2410,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1415,1423,1607,2252,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,1607,2252,2412,2459,2468,2516,2533,2534],[99,100,101,103,109,123,868,1423,1607,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,1608,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1423,1609,2186,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,1609,2416,2459,2468,2516,2533,2534],[99,100,101,103,109,146,868,1401,1423,2459,2468,2516,2533,2534],[99,100,101,103,109,146,868,1423,2459,2468,2516,2533,2534],[99,100,101,103,109,146,868,1423,1436,2459,2468,2516,2533,2534],[99,100,101,103,109,143,146,868,1400,1423,2459,2468,2516,2533,2534],[99,100,101,103,109,146,868,1401,1423,1436,1573,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1423,1610,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,1610,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1401,1423,1611,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1423,1580,1611,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,1611,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1423,1611,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1423,1444,1596,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1401,1423,1436,1596,2459,2468,2516,2533,2534],[99,100,101,103,109,460,868,1400,1423,1436,1444,1596,2459,2468,2516,2533,2534],[99,100,101,103,109,460,868,1423,1444,1596,2459,2468,2516,2533,2534],[99,100,101,103,109,460,868,1423,1437,1465,1547,1596,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1401,1423,1436,1573,1595,1601,2207,2208,2434,2435,2436,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1423,1595,2186,2434,2435,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1401,1423,1436,1573,1595,1601,2434,2435,2438,2459,2468,2516,2533,2534],[100,868,1423,1595,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1401,1423,1433,1468,2459,2468,2516,2533,2534],[99,100,101,103,109,133,460,868,1401,1423,1425,1433,1435,1436,1437,1461,1469,1546,1547,1579,1601,2100,2459,2468,2516,2533,2534],[99,100,101,103,109,133,460,868,1401,1423,1425,1433,1435,1436,1437,1461,1469,1546,1547,1579,2100,2459,2468,2516,2533,2534],[99,100,101,103,109,460,868,1400,1401,1423,1433,1579,2459,2462,2468,2516,2533,2534],[99,100,101,103,109,460,868,1401,1423,1424,1425,1433,1549,1550,1579,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,1425,1579,2459,2468,2516,2533,2534],[99,100,101,103,109,460,868,1423,1433,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,1433,1565,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1401,1423,1433,1443,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1401,1423,1433,1451,1455,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,1433,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1401,1423,1433,1437,1444,1445,1446,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1400,1401,1423,1433,1437,2459,2468,2516,2533,2534],[99,100,101,103,109,460,868,1400,1423,1424,1433,1457,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,1446,1469,1568,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,1568,2459,2468,2516,2533,2534],[99,100,101,103,109,460,868,1401,1423,1433,1436,1464,1465,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,1450,1580,2459,2468,2516,2533,2534],[99,100,101,103,109,460,868,1423,1449,1580,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,1433,1446,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,1433,1579,2459,2468,2516,2533,2534],[99,100,101,103,109,133,460,868,1400,1401,1423,1433,1437,1447,1448,1456,1458,1459,1460,1461,1462,1463,1466,1546,1579,1580,2459,2468,2516,2533,2534],[99,100,101,103,109,133,460,868,1401,1423,1424,1425,1433,1434,1435,1436,1437,1546,1547,1548,1551,1566,1579,2102,2459,2462,2468,2516,2533,2534],[99,100,101,103,109,133,460,868,1401,1423,1424,1425,1433,1434,1435,1436,1437,1546,1547,1548,1551,1566,1579,2459,2468,2516,2533,2534],[99,100,101,103,109,460,868,1423,1433,1437,1447,1456,1458,1459,1460,1461,1462,1466,1568,1569,1570,2459,2462,2468,2516,2533,2534],[99,100,101,103,109,133,460,868,1401,1423,1424,1425,1433,1434,1435,1436,1437,1547,1548,1551,1566,1579,1601,2459,2462,2468,2516,2533,2534],[99,100,101,103,109,868,1423,2195,2197,2459,2468,2516,2533,2534],[99,100,101,103,109,868,1423,1455,2459,2468,2516,2533,2534],[99,100,101,103,109,133,460,868,1400,1423,1578,2098,2459,2468,2516,2533,2534],[99,100,101,103,109,127,133,460,868,1400,1401,1419,1423,2459,2468,2516,2533,2534],[99,100,101,103,109,136,460,868,1406,1423,1433,1434,1444,1579,2252,2459,2468,2516,2533,2534],[103,868,1423,2462,2468,2516,2533,2534],[100,868,1423,2468,2516,2528,2533,2534,2538,2559,2624,2629,2632,2641,2645,2646,2647,2649,2650]],"fileInfos":[{"version":"e41c290ef7dd7dab3493e6cbe5909e0148edf4a8dad0271be08edec368a0f7b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"27bdc30a0e32783366a5abeda841bc22757c1797de8681bbe81fbc735eeb1c10","impliedFormat":1},{"version":"8fd575e12870e9944c7e1d62e1f5a73fcf23dd8d3a321f2a2c74c20d022283fe","impliedFormat":1},{"version":"e12a46ce14b817d4c9e6b2b478956452330bf00c9801b79de46f7a1815b5bd40","impliedFormat":1},{"version":"4fd3f3422b2d2a3dfd5cdd0f387b3a8ec45f006c6ea896a4cb41264c2100bb2c","affectsGlobalScope":true,"impliedFormat":1},{"version":"69e65d976bf166ce4a9e6f6c18f94d2424bf116e90837ace179610dbccad9b42","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7a3c8b952931daebdfc7a2897c53c0a1c73624593fa070e46bd537e64dcd20a","affectsGlobalScope":true,"impliedFormat":1},{"version":"80e18897e5884b6723488d4f5652167e7bb5024f946743134ecc4aa4ee731f89","affectsGlobalScope":true,"impliedFormat":1},{"version":"cd034f499c6cdca722b60c04b5b1b78e058487a7085a8e0d6fb50809947ee573","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"62bb211266ee48b2d0edf0d8d1b191f0c24fc379a82bd4c1692a082c540bc6b1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"936e80ad36a2ee83fc3caf008e7c4c5afe45b3cf3d5c24408f039c1d47bdc1df","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"fef8cfad2e2dc5f5b3d97a6f4f2e92848eb1b88e897bb7318cef0e2820bceaab","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"f1e2a172204962276504466a6393426d2ca9c54894b1ad0a6c9dad867a65f876","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"b5ce7a470bc3628408429040c4e3a53a27755022a32fd05e2cb694e7015386c7","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"bab26767638ab3557de12c900f0b91f710c7dc40ee9793d5a27d32c04f0bf646","affectsGlobalScope":true,"impliedFormat":1},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e3c06ea092138bf9fa5e874a1fdbc9d54805d074bee1de31b99a11e2fec239d","affectsGlobalScope":true,"impliedFormat":1},{"version":"87dc0f382502f5bbce5129bdc0aea21e19a3abbc19259e0b43ae038a9fc4e326","affectsGlobalScope":true,"impliedFormat":1},{"version":"b1cb28af0c891c8c96b2d6b7be76bd394fddcfdb4709a20ba05a7c1605eea0f9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2fef54945a13095fdb9b84f705f2b5994597640c46afeb2ce78352fab4cb3279","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac77cb3e8c6d3565793eb90a8373ee8033146315a3dbead3bde8db5eaf5e5ec6","affectsGlobalScope":true,"impliedFormat":1},{"version":"56e4ed5aab5f5920980066a9409bfaf53e6d21d3f8d020c17e4de584d29600ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ece9f17b3866cc077099c73f4983bddbcb1dc7ddb943227f1ec070f529dedd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a6282c8827e4b9a95f4bf4f5c205673ada31b982f50572d27103df8ceb8013c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1c9319a09485199c1f7b0498f2988d6d2249793ef67edda49d1e584746be9032","affectsGlobalScope":true,"impliedFormat":1},{"version":"e3a2a0cee0f03ffdde24d89660eba2685bfbdeae955a6c67e8c4c9fd28928eeb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811c71eee4aa0ac5f7adf713323a5c41b0cf6c4e17367a34fbce379e12bbf0a4","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"d4b1d2c51d058fc21ec2629fff7a76249dec2e36e12960ea056e3ef89174080f","affectsGlobalScope":true,"impliedFormat":1},{"version":"61d6a2092f48af66dbfb220e31eea8b10bc02b6932d6e529005fd2d7b3281290","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"bde31fd423cd93b0eff97197a3f66df7c93e8c0c335cbeb113b7ff1ac35c23f4","impliedFormat":1},{"version":"a7ca8df4f2931bef2aa4118078584d84a0b16539598eaadf7dce9104dfaa381c","impliedFormat":1},{"version":"11443a1dcfaaa404c68d53368b5b818712b95dd19f188cab1669c39bee8b84b3","impliedFormat":1},{"version":"36977c14a7f7bfc8c0426ae4343875689949fb699f3f84ecbe5b300ebf9a2c55","impliedFormat":1},{"version":"7f698624bbbb060ece7c0e51b7236520ebada74b747d7523c7df376453ed6fea","impliedFormat":1},{"version":"19efad8495a7a6b064483fccd1d2b427403dd84e67819f86d1c6ee3d7abf749c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1eef826bc4a19de22155487984e345a34c9cd511dd1170edc7a447cb8231dd4a","affectsGlobalScope":true,"impliedFormat":99},"424faf9241dd699dda995b367ed36665732da1e6ec1f33b2fd40394488ecac92",{"version":"f468b74459f1ad4473b36a36d49f2b255f3c6b5d536c81239c2b2971df089eaf","impliedFormat":1},{"version":"556ccd493ec36c7d7cb130d51be66e147b91cc1415be383d71da0f1e49f742a9","impliedFormat":1},{"version":"95aba78013d782537cc5e23868e736bec5d377b918990e28ed56110e3ae8b958","impliedFormat":1},{"version":"524a409ad72186b7f6cb16898c349465cfa876f641d6cb6137b3123d5cfca619","impliedFormat":1},{"version":"ebe84ad8344962b7117a3b95065f47383215020eaf1b626463863b45b4d16e62","impliedFormat":1},{"version":"dc0c80f91a4d46c5c4f625a35601ff3c815e2395e6680bacfa12970fc6d49c93","impliedFormat":1},{"version":"3e74c6f34a28b7c948bfdaf19172000d589093660b3605f8c21c1b30173c729b","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac51dd7d31333793807a6abaa5ae168512b6131bd41d9c5b98477fc3b7800f9f","impliedFormat":1},{"version":"88ad1af02cacc61bf79683b021d326eeafc91231660a06495c5046d4649ec3a2","impliedFormat":1},{"version":"c0191592be8eb7906f99ac4b8798d80a585b94001ea1a5f50d6ce5b0d13a5c62","impliedFormat":99},{"version":"318d19118bf6bf8d088441c948990f53cafc79ed581b78f3d41a0f7a3f5f145c","impliedFormat":1},{"version":"549d2a340dc2ac41cf361e10d14d3a2cecd425ffd6fc6f764964c5c4ee0b63d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"860814185d89237c84a6bd1e4f108c2c0b2401609a74a33bc7cab14ea4ee9f21","impliedFormat":99},{"version":"e1ddcbacb7658bf0683bca4ebd31bd05f64823712651263bfc75128a45f00ff7","impliedFormat":99},{"version":"cd0e1f0599b6d8fdd60dc96fdc8527cc60d903e8dffe0b93b7a3527e09e23d49","impliedFormat":99},{"version":"4d643a0df06c8a561870a279ccf6ff9d29a1f04e2c9378eba501eb0e058e13fa","impliedFormat":99},{"version":"e3a0a9032e3ce3945446b33b6329405565aaf5d0e7c115250b972f02dc64d0ae","impliedFormat":1},"6ef27fa41da37327fdb938f081d14851cc26dda0ea642190a0c5f9577a9f1edf",{"version":"52f5c39e78a90c1d8ed7db18f39d890b2e8464a3f44d4233617893f6648e317d","impliedFormat":1},{"version":"a69e8bce30aea7ec98f3b6ddfbc378c92826fede01aafbaec703057c2503ea51","impliedFormat":1},{"version":"b7e91960129ba8a3c22f2402dc8d901b07a44fd11085309ba4780ea044f08323","impliedFormat":99},{"version":"380b919bfa0516118edaf25b99e45f855e7bc3fd75ce4163a1cfe4a666388804","impliedFormat":1},{"version":"40de86ced5175a6ffe84a52abe6ac59ac0efbc604a5975a8c6476c3ddc682ff1","impliedFormat":1},{"version":"fcf79300e5257a23ed3bacaa6861d7c645139c6f7ece134d15e6669447e5e6db","impliedFormat":1},{"version":"187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","impliedFormat":1},{"version":"aa2c18a1b5a086bbcaae10a4efba409cc95ba7287d8cf8f2591b53704fea3dea","impliedFormat":1},{"version":"5a0b15210129310cee9fa6af9200714bb4b12af4a04d890e15f34dbea1cf1852","impliedFormat":1},{"version":"0244119dbcbcf34faf3ffdae72dab1e9bc2bc9efc3c477b2240ffa94af3bca56","impliedFormat":1},{"version":"00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","impliedFormat":1},{"version":"a873c50d3e47c21aa09fbe1e2023d9a44efb07cc0cb8c72f418bf301b0771fd3","impliedFormat":1},{"version":"7c14ccd2eaa82619fffc1bfa877eb68a012e9fb723d07ee98db451fadb618906","impliedFormat":1},{"version":"49c36529ee09ea9ce19525af5bb84985ea8e782cb7ee8c493d9e36d027a3d019","impliedFormat":1},{"version":"df996e25faa505f85aeb294d15ebe61b399cf1d1e49959cdfaf2cc0815c203f9","impliedFormat":1},{"version":"4f6a12044ee6f458db11964153830abbc499e73d065c51c329ec97407f4b13dd","impliedFormat":1},"e0f525d113db44555dd40d6e1fd5e2708f6626c28ed93fa5a3e7864343a4e0b9","d6d50f70ef4224b378ff4a44a6772a5d6c71185869a1dca5dd69198552e33c38","4d85921513f6d9f0e98515890c56d6f150d1caa17cf2cdab54fa0837fa48be58","d287164f84628dcbf023783cfbaccecc0277307f30884afd734c778aaff927c0","56c90889c4d093f8a990ccd3f941cf0bd6b78404aa181416c6d856e3b70115f2","8fe156b1d07c194843a01048c28f920fb155943097eec7b3e06c23fa238cf29f","1249c8a45fe697d72e57c06af96b5b1b1fd02fe0ecdeaa24b5e42676e1686b39","d25f406cdc96422dc6e297a4fc1ea5f08a64ac5f917a70d634bb336e9faf2bd4","c066f545f56d4a7ceb40c7ba6f65af579295560016fd32cef080ac44e9a1437f","fef37fa42bdf34c9082bbdc575cc7e6f13eb9bb57752aa627aad29a648a540c8","7cac9e7dc9264c05eb8b8bd22289f2a4452f97a06daf49b306b76d3106b523c8","fe33311e48e4bcfb8618123fb0134917d3e5f282de6febbfb711c91a2af4f8e0","138ce2f3a7361fe0151dc4fa5720981e62631e3a6503f18d8f4adec58be90da7","fcd22ca9951b617db6b7e805e4dd290a925da6df49e8cbe4818b557bc4ba72c8","41c71bd48f563ed0c2643897c7580c3473a2c45de816131c7f497ada25aa4aca","d3bd74d3efb3eedf8ef3202bd4633e0078a2f0c071347b84ee5e9655c72ec842","396cba6f686e1e46bab41d2796f030d2005694313bd86b0199711eb811661237","3227f8860dca1346c30b08a6b2d66749d65f6ffaab10bc1f1bbad9db23583ac5","1e6bcca7dec48f12c2eb622d3e75a503abd1a8786b28e4c5ab9aeeabaa4db520","817f82dc697d9df3ad46d5790d6fffa3fa490c77a88488f64ab6cad508d5a94f","e18396704db58a17a9b6bc0203e69648d35e23bcb5d654183ff5aa3ebe0cfcc7","c73047306842c0bf13cd3f7b3be3af76e8d58ad16ab549a8812c4f51e4b7f76f","7faca21e2c4e0119f1386f27695516fabc4bceca350e96f6e5c37a45605779bf",{"version":"922d92b500c5359d96b1eff81fe281d1f5350120db253773a3f1c85985c4a9bf","impliedFormat":1},{"version":"ac4efaa37cc9798679da23050bd4e374affb69acda810572d73b11fce731308a","impliedFormat":1},{"version":"c477f69ebfcd6153946ce95799cf49b1c7bce11cec250dab336516b5ad27d72b","impliedFormat":1},{"version":"6355649c4afa3e56a8dd808c3330952154d900bdab5a078dbaffe3974c7baab2","impliedFormat":1},{"version":"5e7185c89a21a5406274b1f010bdce770ad45e7cf09a8b8b346bac352939164a","impliedFormat":1},{"version":"9e9df7677da806cf5eabc7899cb66f6eb075f6c20ed1761a2e882c46883d1ce6","impliedFormat":1},{"version":"633a12dbfb5225a7284b1fa29993f681edf1fe4b36178650d6b4ea1962307f07","impliedFormat":1},{"version":"31ba0d4593007ba73ea1cff32896f6ba551a5794a880c032df2d10aecbc82fe6","impliedFormat":1},{"version":"b4f9fb54a352a0319f6de11eb784b8c9be6aa7b0c65e2fbc8e6822c8f4622ec5","impliedFormat":1},{"version":"24fd9b011d5f800715009959e4c9fcf8dc8a458d4d72e762380e8031f16be8cc","impliedFormat":1},{"version":"bd9462141e563c72110be58bc0e62ca260a62abe07cb4c951d64e636eee9fa60","impliedFormat":1},{"version":"1147ac71b3cfc8d6e9ebf4bf06435bd0a5b6d72a5457b7b00428f218bd01c2e7","impliedFormat":1},{"version":"9a643956e978408cff58f04e3001a41384ed0b4b6f43eeb2a9f91a70f56d2131","impliedFormat":1},{"version":"94d96cc9eb83bf3f3b67497f77d53298fed988c2a00899ba18bc23a8455a6064","impliedFormat":1},{"version":"446d5326728f7110b6180431f407bd8a8344129621fb22130cfdb618aa62e514","impliedFormat":1},{"version":"025b16217c6d980741432fc156bdcbe22b1084f8d1f3f472f6601f09f7853415","impliedFormat":1},{"version":"afb4fe76ed12d1b7b8724321e0f13aab912e633899f7c3e37074035ee9cff91e","impliedFormat":1},{"version":"490621c395bfa973fa6a8c4afc16ccb196a5aac60b55c61d98050ce4990520a5","impliedFormat":1},{"version":"c38e7e1b936c9a8e3f01e291dbc228232c9b61ce96bdfeb78dbc3b74f987c49c","impliedFormat":1},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"9984ee56114b71935ce5877a2eedba93a8f1c2eabc2cabbf88bfec7c955d4a75","impliedFormat":99},{"version":"e720c8a37b87f5713093ed04015dbc647996545ffc0fdf07885f444af738dcff","impliedFormat":99},{"version":"f73b596cb4b4860fd0a3ea8cab67a42ad344d95a392ca986ca4588f59ea8c2cf","impliedFormat":99},{"version":"29b9ed9e1bccc6eff19b59c3f361ee102d8a77f4409fdb56a642a09cd4142d80","impliedFormat":1},{"version":"219afaff7dd670d2b610e23f8ea09d4982a947516074fb55b7f8f2f218f8da31","impliedFormat":1},{"version":"f3233f848276835085121850b21375b1ae23b1d558e12b520c42e99f19517b05","impliedFormat":1},{"version":"12395b35d56e3162be3e6ff07945f8c385351af536c735958eba430c387fbb3f","impliedFormat":1},{"version":"9bb4778628c37e1e4f0f8379339dcd75bfae5d47fc1fb96673b4fe3f8b328197","impliedFormat":1},{"version":"73a4f0c06fbb2a75e748dae42517c062ad303b0a43d302e8fc2ff89e92f0ecde","impliedFormat":1},{"version":"1f8cd888d94150cec2d0c3b5c734caaabaa418cd10d25463c82718979ec3bec8","impliedFormat":1},{"version":"c6a6c807ba136407c33e425c37a02550b3d729deb0a4a5bb8e7cdef29eea6814","impliedFormat":1},{"version":"ddd271c30afbb3ad41466f9dd0702c868ef992912684162952b976f436dde50c","impliedFormat":1},{"version":"4f6a12044ee6f458db11964153830abbc499e73d065c51c329ec97407f4b13dd","impliedFormat":1},{"version":"cf93e7b09b66e142429611c27ba2cbf330826057e3c793e1e2861e976fae3940","impliedFormat":99},{"version":"90e727d145feb03695693fdc9f165a4dc10684713ee5f6aa81e97a6086faa0f8","impliedFormat":99},{"version":"ee2c6ec73c636c9da5ab4ce9227e5197f55a57241d66ea5828f94b69a4a09a2d","impliedFormat":99},{"version":"afaf64477630c7297e3733765046c95640ab1c63f0dfb3c624691c8445bc3b08","impliedFormat":99},{"version":"5aa03223a53ad03171988820b81a6cae9647eabcebcb987d1284799de978d8e3","impliedFormat":99},{"version":"7f50c8914983009c2b940923d891e621db624ba32968a51db46e0bf480e4e1cb","impliedFormat":99},{"version":"90fc18234b7d2e19d18ac026361aaf2f49d27c98dc30d9f01e033a9c2b01c765","impliedFormat":99},{"version":"a980e4d46239f344eb4d5442b69dcf1d46bd2acac8d908574b5a507181f7e2a1","impliedFormat":99},{"version":"bbbfa4c51cdaa6e2ef7f7be3ae199b319de6b31e3b5afa7e5a2229c14bb2568a","impliedFormat":99},{"version":"bc7bfe8f48fa3067deb3b37d4b511588b01831ba123a785ea81320fe74dd9540","impliedFormat":99},{"version":"fd60c0aaf7c52115f0e7f367d794657ac18dbb257255777406829ab65ca85746","impliedFormat":99},{"version":"15c17866d58a19f4a01a125f3f511567bd1c22235b4fd77bf90c793bf28388c3","impliedFormat":99},{"version":"51301a76264b1e1b4046f803bda44307fba403183bc274fe9e7227252d7315cb","impliedFormat":99},{"version":"ddef23e8ace6c2b2ddf8d8092d30b1dd313743f7ff47b2cbb43f36c395896008","impliedFormat":99},{"version":"9e42df47111429042b5e22561849a512ad5871668097664b8fb06a11640140ac","impliedFormat":99},{"version":"391fcc749c6f94c6c4b7f017c6a6f63296c1c9ae03fa639f99337dddb9cc33fe","impliedFormat":99},{"version":"ac4706eb1fb167b19f336a93989763ab175cd7cc6227b0dcbfa6a7824c6ba59a","impliedFormat":99},{"version":"633220dc1e1a5d0ccf11d3c3e8cadc9124daf80fef468f2ff8186a2775229de3","impliedFormat":99},{"version":"6de22ad73e332e513454f0292275155d6cb77f2f695b73f0744928c4ebb3a128","impliedFormat":99},{"version":"ebe0e3c77f5114b656d857213698fade968cff1b3a681d1868f3cfdd09d63b75","impliedFormat":99},{"version":"22c27a87488a0625657b52b9750122814c2f5582cac971484cda0dcd7a46dc3b","impliedFormat":99},{"version":"7e7a817c8ec57035b2b74df8d5dbcc376a4a60ad870b27ec35463536158e1156","impliedFormat":99},{"version":"0e2061f86ca739f34feae42fd7cce27cc171788d251a587215b33eaec456e786","impliedFormat":99},{"version":"91659b2b090cadffdb593736210910508fc5b77046d4ce180b52580b14b075ec","impliedFormat":99},{"version":"d0f6c657c45faaf576ca1a1dc64484534a8dc74ada36fd57008edc1aab65a02b","impliedFormat":99},{"version":"ce0c52b1ebc023b71d3c1fe974804a2422cf1d85d4af74bb1bced36ff3bff8b5","impliedFormat":99},{"version":"9c6acb4a388887f9a5552eda68987ee5d607152163d72f123193a984c48157c9","impliedFormat":99},{"version":"90d0a9968cbb7048015736299f96a0cceb01cf583fd2e9a9edbc632ac4c81b01","impliedFormat":99},{"version":"49abec0571c941ab6f095885a76828d50498511c03bb326eec62a852e58000c5","impliedFormat":99},{"version":"8eeb4a4ff94460051173d561749539bca870422a6400108903af2fb7a1ffe3d7","impliedFormat":99},{"version":"49e39b284b87452fed1e27ac0748ba698f5a27debe05084bc5066b3ecf4ed762","impliedFormat":99},{"version":"59dcf835762f8df90fba5a3f8ba87941467604041cf127fb456543c793b71456","impliedFormat":99},{"version":"33e0c4c683dcaeb66bedf5bb6cc35798d00ac58d7f3bc82aadb50fa475781d60","impliedFormat":99},{"version":"605839abb6d150b0d83ed3712e1b3ffbeb309e382770e7754085d36bc2d84a4c","impliedFormat":99},{"version":"a862dcb740371257e3dae1ab379b0859edcb5119484f8359a5e6fb405db9e12e","impliedFormat":99},{"version":"0f0a16a0e8037c17e28f537028215e87db047eba52281bd33484d5395402f3c1","impliedFormat":99},{"version":"cf533aed4c455b526ddccbb10dae7cc77e9269c3d7862f9e5cedbd4f5c92e05e","impliedFormat":99},{"version":"f8a60ca31702a0209ef217f8f3b4b32f498813927df2304787ac968c78d8560d","impliedFormat":99},{"version":"530192961885d3ddad87bf9c4390e12689fa29ff515df57f17a57c9125fc77c3","impliedFormat":99},{"version":"165ba9e775dd769749e2177c383d24578e3b212e4774b0a72ad0f6faee103b68","impliedFormat":99},{"version":"61448f238fdfa94e5ccce1f43a7cced5e548b1ea2d957bec5259a6e719378381","impliedFormat":99},{"version":"69fa523e48131ced0a52ab1af36c3a922c5fd7a25e474d82117329fe051f5b85","impliedFormat":99},{"version":"fa10b79cd06f5dd03435e184fb05cc5f0d02713bfb4ee9d343db527501be334c","impliedFormat":99},{"version":"c6fb591e363ee4dea2b102bb721c0921485459df23a2d2171af8354cacef4bce","impliedFormat":99},{"version":"ea7e1f1097c2e61ed6e56fa04a9d7beae9d276d87ac6edb0cd39a3ee649cddfe","impliedFormat":99},{"version":"e8cf2659d87462aae9c7647e2a256ac7dcaf2a565a9681bfb49328a8a52861e8","impliedFormat":99},{"version":"7e374cb98b705d35369b3c15444ef2ff5ff983bd2fbb77a287f7e3240abf208c","impliedFormat":99},{"version":"ca75ba1519f9a426b8c512046ebbad58231d8627678d054008c93c51bc0f3fa5","impliedFormat":99},{"version":"ff63760147d7a60dcfc4ac16e40aa2696d016b9ffe27e296b43655dfa869d66b","impliedFormat":99},{"version":"4d434123b16f46b290982907a4d24675442eb651ca95a5e98e4c274be16f1220","impliedFormat":99},{"version":"57263d6ba38046e85f499f3c0ab518cfaf0a5f5d4f53bdae896d045209ab4aff","impliedFormat":99},{"version":"d3a535f2cd5d17f12b1abf0b19a64e816b90c8c10a030b58f308c0f7f2acfe2c","impliedFormat":99},{"version":"be26d49bb713c13bd737d00ae8a61aa394f0b76bc2d5a1c93c74f59402eb8db3","impliedFormat":99},{"version":"c7012003ac0c9e6c9d3a6418128ddebf6219d904095180d4502b19c42f46a186","impliedFormat":99},{"version":"d58c55750756bcf73f474344e6b4a9376e5381e4ba7d834dc352264b491423b6","impliedFormat":99},{"version":"01e2aabfabe22b4bf6d715fc54d72d32fa860a3bd1faa8974e0d672c4b565dfe","impliedFormat":99},{"version":"ba2c489bb2566c16d28f0500b3d98013917e471c40a4417c03991460cb248e88","impliedFormat":99},{"version":"39f94b619f0844c454a6f912e5d6868d0beb32752587b134c3c858b10ecd7056","impliedFormat":99},{"version":"0d2d8b0477b1cf16b34088e786e9745c3e8145bc8eea5919b700ad054e70a095","impliedFormat":99},{"version":"2a5e963b2b8f33a50bb516215ba54a20801cb379a8e9b1ae0b311e900dc7254c","impliedFormat":99},{"version":"d8307f62b55feeb5858529314761089746dce957d2b8fd919673a4985fa4342a","impliedFormat":99},{"version":"bf449ec80fc692b2703ad03e64ae007b3513ecd507dc2ab77f39be6f578e6f5c","impliedFormat":99},{"version":"f780213dd78998daf2511385dd51abf72905f709c839a9457b6ba2a55df57be7","impliedFormat":99},{"version":"2b7843e8a9a50bdf511de24350b6d429a3ee28430f5e8af7d3599b1e9aa7057f","impliedFormat":99},{"version":"05d95be6e25b4118c2eb28667e784f0b25882f6a8486147788df675c85391ab7","impliedFormat":99},{"version":"62d2721e9f2c9197c3e2e5cffeb2f76c6412121ae155153179049890011eb785","impliedFormat":99},{"version":"ff5668fb7594c02aca5e7ba7be6c238676226e450681ca96b457f4a84898b2d9","impliedFormat":99},{"version":"59fd37ea08657fef36c55ddea879eae550ffe21d7e3a1f8699314a85a30d8ae9","impliedFormat":99},{"version":"84e23663776e080e18b25052eb3459b1a0486b5b19f674d59b96347c0cb7312a","impliedFormat":99},{"version":"43e5934c7355731eec20c5a2aa7a859086f19f60a4e5fcd80e6684228f6fb767","impliedFormat":99},{"version":"a49c210c136c518a7c08325f6058fc648f59f911c41c93de2026db692bba0e47","impliedFormat":99},{"version":"1a92f93597ebc451e9ef4b158653c8d31902de5e6c8a574470ecb6da64932df4","impliedFormat":99},{"version":"256513ad066ac9898a70ca01e6fbdb3898a4e0fe408fbf70608fdc28ac1af224","impliedFormat":99},{"version":"d9835850b6cc05c21e8d85692a8071ebcf167a4382e5e39bf700c4a1e816437e","impliedFormat":99},{"version":"e5ab7190f818442e958d0322191c24c2447ddceae393c4e811e79cda6bd49836","impliedFormat":99},{"version":"91b4b77ef81466ce894f1aade7d35d3589ddd5c9981109d1dea11f55a4b807a0","impliedFormat":99},{"version":"03abb209bed94c8c893d9872639e3789f0282061c7aa6917888965e4047a8b5f","impliedFormat":99},{"version":"e97a07901de562219f5cba545b0945a1540d9663bd9abce66495721af3903eec","impliedFormat":99},{"version":"bf39ed1fdf29bc8178055ec4ff32be6725c1de9f29c252e31bdc71baf5c227e6","impliedFormat":99},{"version":"985eabf06dac7288fc355435b18641282f86107e48334a83605739a1fe82ac15","impliedFormat":99},{"version":"6112d33bcf51e3e6f6a81e419f29580e2f8e773529d53958c7c1c99728d4fb2e","impliedFormat":99},{"version":"89e9f7e87a573504acc2e7e5ad727a110b960330657d1b9a6d3526e77c83d8be","impliedFormat":99},{"version":"44bbb88abe9958c7c417e8687abf65820385191685009cc4b739c2d270cb02e9","impliedFormat":99},{"version":"ab4b506b53d2c4aec4cc00452740c540a0e6abe7778063e95c81a5cd557c19eb","impliedFormat":99},{"version":"858757bde6d615d0d1ee474c972131c6d79c37b0b61897da7fbd7110beb8af12","impliedFormat":99},{"version":"60b9dea33807b086a1b4b4b89f72d5da27ad0dd36d6436a6e306600c47438ac4","impliedFormat":99},{"version":"409c963b1166d0c1d49fdad1dfeb4de27fd2d6662d699009857de9baf43ca7c3","impliedFormat":99},{"version":"b7674ecfeb5753e965404f7b3d31eec8450857d1a23770cb867c82f264f546ab","impliedFormat":99},{"version":"c9800b9a9ad7fcdf74ed8972a5928b66f0e4ff674d55fd038a3b1c076911dcbe","impliedFormat":99},{"version":"99864433e35b24c61f8790d2224428e3b920624c01a6d26ea8b27ee1f62836bb","impliedFormat":99},{"version":"c391317b9ff8f87d28c6bfe4e50ed92e8f8bfab1bb8a03cd1fe104ff13186f83","impliedFormat":99},{"version":"42bdc3c98446fdd528e2591213f71ce6f7008fb9bb12413bd57df60d892a3fb5","impliedFormat":99},{"version":"542d2d689b58c25d39a76312ccaea2fcd10a45fb27b890e18015399c8032e2d9","impliedFormat":99},{"version":"97d1656f0a563dbb361d22b3d7c2487427b0998f347123abd1c69a4991326c96","impliedFormat":99},{"version":"d4f53ed7960c9fba8378af3fa28e3cc483d6c0b48e4a152a83ff0973d507307d","impliedFormat":99},{"version":"0665de5280d65ec32776dc55fb37128e259e60f389cde5b9803cf9e81ad23ce0","impliedFormat":99},{"version":"b6dc8fd1c6092da86725c338ca6c263d1c6dd3073046d3ec4eb2d68515062da2","impliedFormat":99},{"version":"d9198a0f01f00870653347560e10494efeca0bfa2de0988bd5d883a9d2c47edb","impliedFormat":99},{"version":"d4279865b926d7e2cfe8863b2eae270c4c035b6e923af8f9d7e6462d68679e07","impliedFormat":99},{"version":"73b6945448bb3425b764cfe7b1c4b0b56c010cc66e5f438ef320c53e469797eb","impliedFormat":99},{"version":"cf72fd8ffa5395f4f1a26be60246ec79c5a9ad201579c9ba63fd2607b5daf184","impliedFormat":99},{"version":"301a458744666096f84580a78cc3f6e8411f8bab92608cdaa33707546ca2906f","impliedFormat":99},{"version":"711e70c0916ff5f821ea208043ecd3e67ed09434b8a31d5616286802b58ebebe","impliedFormat":99},{"version":"e1f2fd9f88dd0e40c358fbf8c8f992211ab00a699e7d6823579b615b874a8453","impliedFormat":99},{"version":"17db3a9dcb2e1689ff7ace9c94fa110c88da64d69f01dc2f3cec698e4fc7e29e","impliedFormat":99},{"version":"73fb07305106bb18c2230890fcacf910fd1a7a77d93ac12ec40bc04c49ee5b8e","impliedFormat":99},{"version":"2c5f341625a45530b040d59a4bc2bc83824d258985ede10c67005be72d3e21d0","impliedFormat":99},{"version":"c4a262730d4277ecaaf6f6553dabecc84dcca8decaebbf2e16f1df8bbd996397","impliedFormat":99},{"version":"c23c533d85518f3358c55a7f19ab1a05aad290251e8bba0947bd19ea3c259467","impliedFormat":99},{"version":"5d0322a0b8cdc67b8c71e4ccaa30286b0c8453211d4c955a217ac2d3590e911f","impliedFormat":99},{"version":"f5e4032b6e4e116e7fec5b2620a2a35d0b6b8b4a1cc9b94a8e5ee76190153110","impliedFormat":99},{"version":"9ab26cb62a0e86ab7f669c311eb0c4d665457eb70a103508aa39da6ccee663da","impliedFormat":99},{"version":"5f64d1a11d8d4ce2c7ee3b72471df76b82d178a48964a14cdfdc7c5ef7276d70","impliedFormat":99},{"version":"24e2fbc48f65814e691d9377399807b9ec22cd54b51d631ba9e48ee18c5939dd","impliedFormat":99},{"version":"bfa2648b2ee90268c6b6f19e84da3176b4d46329c9ec0555d470e647d0568dfb","impliedFormat":99},{"version":"75ef3cb4e7b3583ba268a094c1bd16ce31023f2c3d1ac36e75ca65aca9721534","impliedFormat":99},{"version":"3be6b3304a81d0301838860fd3b4536c2b93390e785808a1f1a30e4135501514","impliedFormat":99},{"version":"da66c1b3e50ef9908e31ce7a281b137b2db41423c2b143c62524f97a536a53d9","impliedFormat":99},{"version":"3ada1b216e45bb9e32e30d8179a0a95870576fe949c33d9767823ccf4f4f4c97","impliedFormat":99},{"version":"1ace2885dffab849f7c98bffe3d1233260fbf07ee62cb58130167fd67a376a65","impliedFormat":99},{"version":"2126e5989c0ca5194d883cf9e9c10fe3e5224fbd3e4a4a6267677544e8be0aae","impliedFormat":99},{"version":"41a6738cf3c756af74753c5033e95c5b33dfc1f6e1287fa769a1ac4027335bf5","impliedFormat":99},{"version":"6e8630be5b0166cbc9f359b9f9e42801626d64ff1702dcb691af811149766154","impliedFormat":99},{"version":"e36b77c04e00b4a0bb4e1364f2646618a54910c27f6dc3fc558ca2ced8ca5bc5","impliedFormat":99},{"version":"2c4ea7e9f95a558f46c89726d1fedcb525ef649eb755a3d7d5055e22b80c2904","impliedFormat":99},{"version":"4875d65190e789fad05e73abd178297b386806b88b624328222d82e455c0f2e7","impliedFormat":99},{"version":"bf5302ecfaacee37c2316e33703723d62e66590093738c8921773ee30f2ecc38","impliedFormat":99},{"version":"62684064fe034d54b87f62ad416f41b98a405dee4146d0ec03b198c3634ea93c","impliedFormat":99},{"version":"be02cbdb1688c8387f8a76a9c6ed9d75d8bb794ec5b9b1d2ba3339a952a00614","impliedFormat":99},{"version":"cefaff060473a5dbf4939ee1b52eb900f215f8d6249dc7c058d6b869d599983c","impliedFormat":99},{"version":"b2797235a4c1a7442a6f326f28ffb966226c3419399dbb33634b8159af2c712f","impliedFormat":99},{"version":"164d633bbd4329794d329219fc173c3de85d5ad866d44e5b5f0fb60c140e98f2","impliedFormat":99},{"version":"b74300dd0a52eaf564b3757c07d07e1d92def4e3b8708f12eedb40033e4cafe9","impliedFormat":99},{"version":"a792f80b1e265b06dce1783992dbee2b45815a7bdc030782464b8cf982337cf2","impliedFormat":99},{"version":"8816b4b3a87d9b77f0355e616b38ed5054f993cc4c141101297f1914976a94b1","impliedFormat":99},{"version":"0f35e4da974793534c4ca1cdd9491eab6993f8cf47103dadfc048b899ed9b511","impliedFormat":99},{"version":"0ccdfcaebf297ec7b9dde20bbbc8539d5951a3d8aaa40665ca469da27f5a86e1","impliedFormat":99},{"version":"7fcb05c8ce81f05499c7b0488ae02a0a1ac6aebc78c01e9f8c42d98f7ba68140","impliedFormat":99},{"version":"81c376c9e4d227a4629c7fca9dde3bbdfa44bd5bd281aee0ed03801182368dc5","impliedFormat":99},{"version":"0f2448f95110c3714797e4c043bbc539368e9c4c33586d03ecda166aa9908843","impliedFormat":99},{"version":"b2f1a443f7f3982d7325775906b51665fe875c82a62be3528a36184852faa0bb","impliedFormat":99},{"version":"7568ff1f23363d7ee349105eb936e156d61aea8864187a4c5d85c60594b44a25","impliedFormat":99},{"version":"8c4d1d9a4eba4eac69e6da0f599a424b2689aee55a455f0b5a7f27a807e064db","impliedFormat":99},{"version":"e1beb9077c100bdd0fc8e727615f5dae2c6e1207de224569421907072f4ec885","impliedFormat":99},{"version":"3dda13836320ec71b95a68cd3d91a27118b34c05a2bfda3e7e51f1d8ca9b960b","impliedFormat":99},{"version":"fedc79cb91f2b3a14e832d7a8e3d58eb02b5d5411c843fcbdc79e35041316b36","impliedFormat":99},{"version":"99f395322ffae908dcdfbaa2624cc7a2a2cb7b0fbf1a1274aca506f7b57ebcb5","impliedFormat":99},{"version":"5e1f7c43e8d45f2222a5c61cbc88b074f4aaf1ca4b118ac6d6123c858efdcd71","impliedFormat":99},{"version":"7388273ab71cb8f22b3f25ffd8d44a37d5740077c4d87023da25575204d57872","impliedFormat":99},{"version":"0a48ceb01a0fdfc506aa20dfd8a3563edbdeaa53a8333ddf261d2ee87669ea7b","impliedFormat":99},{"version":"3182d06b874f31e8e55f91ea706c85d5f207f16273480f46438781d0bd2a46a1","impliedFormat":99},{"version":"ccd47cab635e8f71693fa4e2bbb7969f559972dae97bd5dbd1bbfee77a63b410","impliedFormat":99},{"version":"89770fa14c037f3dc3882e6c56be1c01bb495c81dec96fa29f868185d9555a5d","impliedFormat":99},{"version":"7048c397f08c54099c52e6b9d90623dc9dc6811ea142f8af3200e40d66a972e1","impliedFormat":99},{"version":"512120cd6f026ce1d3cf686c6ab5da80caa40ef92aa47466ec60ba61a48b5551","impliedFormat":99},{"version":"6cd0cb7f999f221e984157a7640e7871960131f6b221d67e4fdc2a53937c6770","impliedFormat":99},{"version":"f48b84a0884776f1bc5bf0fcf3f69832e97b97dc55d79d7557f344de900d259b","impliedFormat":99},{"version":"dca490d986411644b0f9edf6ea701016836558e8677c150dca8ad315178ec735","impliedFormat":99},{"version":"a028a04948cf98c1233166b48887dad324e8fe424a4be368a287c706d9ccd491","impliedFormat":99},{"version":"3046ed22c701f24272534b293c10cfd17b0f6a89c2ec6014c9a44a90963dfa06","impliedFormat":99},{"version":"394da10397d272f19a324c95bea7492faadf2263da157831e02ae1107bd410f5","impliedFormat":99},{"version":"0580595a99248b2d30d03f2307c50f14eb21716a55beb84dd09d240b1b087a42","impliedFormat":99},{"version":"a7da9510150f36a9bea61513b107b59a423fdff54429ad38547c7475cd390e95","impliedFormat":99},{"version":"659615f96e64361af7127645bb91f287f7b46c5d03bea7371e6e02099226d818","impliedFormat":99},{"version":"1f2a42974920476ce46bb666cd9b3c1b82b2072b66ccd0d775aa960532d78176","impliedFormat":99},{"version":"500b3ae6095cbab92d81de0b40c9129f5524d10ad955643f81fc07d726c5a667","impliedFormat":99},{"version":"a957ad4bd562be0662fb99599dbcf0e16d1631f857e5e1a83a3f3afb6c226059","impliedFormat":99},{"version":"e57a4915266a6a751c6c172e8f30f6df44a495608613e1f1c410196207da9641","impliedFormat":99},{"version":"7a12e57143b7bc5a52a41a8c4e6283a8f8d59a5e302478185fb623a7157fff5e","impliedFormat":99},{"version":"17b3426162e1d9cb0a843e8d04212aabe461d53548e671236de957ed3ae9471b","impliedFormat":99},{"version":"f38e86eb00398d63180210c5090ef6ed065004474361146573f98b3c8a96477d","impliedFormat":99},{"version":"231d9e32382d3971f58325e5a85ba283a2021243651cb650f82f87a1bf62d649","impliedFormat":99},{"version":"6532e3e87b87c95f0771611afce929b5bad9d2c94855b19b29b3246937c9840b","impliedFormat":99},{"version":"65704bbb8f0b55c73871335edd3c9cead7c9f0d4b21f64f5d22d0987c45687f0","impliedFormat":99},{"version":"787232f574af2253ac860f22a445c755d57c73a69a402823ae81ba0dfdd1ce23","impliedFormat":99},{"version":"5e63903cd5ebce02486b91647d951d61a16ad80d65f9c56581cd624f39a66007","impliedFormat":99},{"version":"bcc89a120d8f3c02411f4df6b1d989143c01369314e9b0e04794441e6b078d22","impliedFormat":99},{"version":"d17531ef42b7c76d953f63bd5c5cd927c4723e62a7e0b2badf812d5f35f784eb","impliedFormat":99},{"version":"6d4ee1a8e3a97168ea4c4cc1c68bb61a3fd77134f15c71bb9f3f63df3d26b54c","impliedFormat":99},{"version":"1eb04fea6b47b16922ed79625d90431a8b2fc7ba9d5768b255e62df0c96f1e3a","impliedFormat":99},{"version":"de0c2eece83bd81b8682f4496f558beb728263e17e74cbc4910e5c9ce7bef689","impliedFormat":99},{"version":"98866542d45306dab48ecc3ddd98ee54fa983353bc3139dfbc619df882f54d90","impliedFormat":99},{"version":"9e04c7708917af428c165f1e38536ddb2e8ecd576f55ed11a97442dc34b6b010","impliedFormat":99},{"version":"31fe6f6d02b53c1a7c34b8d8f8c87ee9b6dd4b67f158cbfff3034b4f3f69c409","impliedFormat":99},{"version":"2e1d853f84188e8e002361f4bfdd892ac31c68acaeac426a63cd4ff7abf150d0","impliedFormat":99},{"version":"666b5289ec8a01c4cc0977c62e3fd32e89a8e3fd9e97c8d8fd646f632e63c055","impliedFormat":99},{"version":"a1107bbb2b10982dba1f7958a6a5cf841e1a19d6976d0ecdc4c43269c7b0eaf2","impliedFormat":99},{"version":"07fa6122f7495331f39167ec9e4ebd990146a20f99c16c17bc0a98aa81f63b27","impliedFormat":99},{"version":"39c1483481b35c2123eaab5094a8b548a0c3f1e483ab7338102c3291f1ab18bf","impliedFormat":99},{"version":"b73e6242c13796e7d5fba225bf1c07c8ee66d31b7bb65f45be14226a9ae492d2","impliedFormat":99},{"version":"f2931608d541145d189390d6cfb74e1b1e88f73c0b9a80c4356a4daa7fa5e005","impliedFormat":99},{"version":"8684656fe3bf1425a91bd62b8b455a1c7ec18b074fd695793cfae44ae02e381a","impliedFormat":99},{"version":"ccf0b9057dd65c7fb5e237de34f706966ebc30c6d3669715ed05e76225f54fbd","impliedFormat":99},{"version":"d930f077da575e8ea761e3d644d4c6279e2d847bae2b3ea893bbd572315acc21","impliedFormat":99},{"version":"19b0616946cb615abde72c6d69049f136cc4821b784634771c1d73bec8005f73","impliedFormat":99},{"version":"553312560ad0ef97b344b653931935d6e80840c2de6ab90b8be43cbacf0d04cf","impliedFormat":99},{"version":"1225cf1910667bfd52b4daa9974197c3485f21fe631c3ce9db3b733334199faa","impliedFormat":99},{"version":"f7cb9e46bd6ab9d620d68257b525dbbbbc9b0b148adf500b819d756ebc339de0","impliedFormat":99},{"version":"e46d6c3120aca07ae8ec3189edf518c667d027478810ca67a62431a0fa545434","impliedFormat":99},{"version":"9d234b7d2f662a135d430d3190fc21074325f296273125244b2bf8328b5839a0","impliedFormat":99},{"version":"0554ef14d10acea403348c53436b1dd8d61e7c73ef5872e2fe69cc1c433b02f8","impliedFormat":99},{"version":"2f6ae5538090db60514336bd1441ca208a8fab13108cfa4b311e61eaca5ff716","impliedFormat":99},{"version":"17bf4ce505a4cff88fb56177a8f7eb48aa55c22ccc4cce3e49cc5c8ddc54b07d","impliedFormat":99},{"version":"3d735f493d7da48156b79b4d8a406bf2bbf7e3fe379210d8f7c085028143ee40","impliedFormat":99},{"version":"41de1b3ddd71bd0d9ed7ac217ca1b15b177dd731d5251cde094945c20a715d03","impliedFormat":99},{"version":"17d9c562a46c6a25bc2f317c9b06dd4e8e0368cbe9bdf89be6117aeafd577b36","impliedFormat":99},{"version":"ded799031fe18a0bb5e78be38a6ae168458ff41b6c6542392b009d2abe6a6f32","impliedFormat":99},{"version":"ed48d467a7b25ee1a2769adebc198b647a820e242c96a5f96c1e6c27a40ab131","impliedFormat":99},{"version":"b914114df05f286897a1ae85d2df39cfd98ed8da68754d73cf830159e85ddd15","impliedFormat":99},{"version":"73881e647da3c226f21e0b80e216feaf14a5541a861494c744e9fbe1c3b3a6af","impliedFormat":99},{"version":"d79e1d31b939fa99694f2d6fbdd19870147401dbb3f42214e84c011e7ec359ab","impliedFormat":99},{"version":"4f71097eae7aa37941bab39beb2e53e624321fd341c12cc1d400eb7a805691ff","impliedFormat":99},{"version":"58ebb4f21f3a90dda31a01764462aa617849fdb1b592f3a8d875c85019956aff","impliedFormat":99},{"version":"a8e8d0e6efff70f3c28d3e384f9d64530c7a7596a201e4879a7fd75c7d55cbb5","impliedFormat":99},{"version":"df5cbb80d8353bf0511a4047cc7b8434b0be12e280b6cf3de919d5a3380912c0","impliedFormat":99},{"version":"256eb0520e822b56f720962edd7807ed36abdf7ea23bcadf4a25929a3317c8cf","impliedFormat":99},{"version":"9cf2cbc9ceb5f718c1705f37ce5454f14d3b89f690d9864394963567673c1b5c","impliedFormat":99},{"version":"07d3dd790cf1e66bb6fc9806d014dd40bb2055f8d6ca3811cf0e12f92ba4cb9a","impliedFormat":99},{"version":"1f99fd62e9cff9b50c36f368caf3b9fb79fc6f6c75ca5d3c2ec4afaea08d9109","impliedFormat":99},{"version":"6558faaacba5622ef7f1fdfb843cd967af2c105469b9ff5c18a81ce85178fca7","impliedFormat":99},{"version":"34e7f17ae9395b0269cd3f2f0af10709e6dc975c5b44a36b6b70442dc5e25a38","impliedFormat":99},{"version":"a4295111b54f84c02c27e46b0855b02fad3421ae1d2d7e67ecf16cb49538280a","impliedFormat":99},{"version":"ce9746b2ceae2388b7be9fe1f009dcecbc65f0bdbc16f40c0027fab0fb848c3b","impliedFormat":99},{"version":"35ce823a59f397f0e85295387778f51467cea137d787df385be57a2099752bfb","impliedFormat":99},{"version":"2e5acd3ec67bc309e4f679a70c894f809863c33b9572a8da0b78db403edfa106","impliedFormat":99},{"version":"1872f3fcea0643d5e03b19a19d777704320f857d1be0eb4ee372681357e20c88","impliedFormat":99},{"version":"9689628941205e40dcbb2706d1833bd00ce7510d333b2ef08be24ecbf3eb1a37","impliedFormat":99},{"version":"0317a72a0b63094781476cf1d2d27585d00eb2b0ca62b5287124735912f3d048","impliedFormat":99},{"version":"6ce4c0ab3450a4fff25d60a058a25039cffd03141549589689f5a17055ad0545","impliedFormat":99},{"version":"9153ec7b0577ae77349d2c5e8c5dd57163f41853b80c4fb5ce342c7a431cbe1e","impliedFormat":99},{"version":"f490dfa4619e48edd594a36079950c9fca1230efb3a82aaf325047262ba07379","impliedFormat":99},{"version":"674f00085caff46d2cbc76fc74740fd31f49d53396804558573421e138be0c12","impliedFormat":99},{"version":"41d029194c4811f09b350a1e858143c191073007a9ee836061090ed0143ad94f","impliedFormat":99},{"version":"44a6259ffd6febd8510b9a9b13a700e1d022530d8b33663f0735dbb3bee67b3d","impliedFormat":99},{"version":"6f4322500aff8676d9b8eef7711c7166708d4a0686b792aa4b158e276ed946a7","impliedFormat":99},{"version":"e829ff9ecffa3510d3a4d2c3e4e9b54d4a4ccfef004bacbb1d6919ce3ccca01f","impliedFormat":99},{"version":"62e6fec9dbd012460b47af7e727ec4cd34345b6e4311e781f040e6b640d7f93e","impliedFormat":99},{"version":"4d180dd4d0785f2cd140bc069d56285d0121d95b53e4348feb4f62db2d7035d3","impliedFormat":99},{"version":"f1142cbba31d7f492d2e7c91d82211a8334e6642efe52b71d9a82cb95ba4e8ae","impliedFormat":99},{"version":"279cac827be5d48c0f69fe319dc38c876fdd076b66995d9779c43558552d8a50","impliedFormat":99},{"version":"a70ff3c65dc0e7213bfe0d81c072951db9f5b1e640eb66c1eaed0737879c797b","impliedFormat":99},{"version":"f75d3303c1750f4fdacd23354657eca09aae16122c344e65b8c14c570ff67df5","impliedFormat":99},{"version":"3ebae6a418229d4b303f8e0fdb14de83f39fba9f57b39d5f213398bca72137c7","impliedFormat":99},{"version":"21ba07e33265f59d52dece5ac44f933b2b464059514587e64ad5182ddf34a9b0","impliedFormat":99},{"version":"2d3d96efba00493059c460fd55e6206b0667fc2e73215c4f1a9eb559b550021f","impliedFormat":99},{"version":"d23d4a57fff5cec5607521ba3b72f372e3d735d0f6b11a4681655b0bdd0505f4","impliedFormat":99},{"version":"395c1f3da7e9c87097c8095acbb361541480bf5fd7fa92523985019fef7761dd","impliedFormat":99},{"version":"d61f3d719293c2f92a04ba73d08536940805938ecab89ac35ceabc8a48ccb648","impliedFormat":99},{"version":"ca693235a1242bcd97254f43a17592aa84af66ccb7497333ccfea54842fde648","impliedFormat":99},{"version":"cd41cf040b2e368382f2382ec9145824777233730e3965e9a7ba4523a6a4698e","impliedFormat":99},{"version":"2e7a9dba6512b0310c037a28d27330520904cf5063ca19f034b74ad280dbfe71","impliedFormat":99},{"version":"9f2a38baf702e6cb98e0392fa39d25a64c41457a827b935b366c5e0980a6a667","impliedFormat":99},{"version":"c1dc37f0e7252928f73d03b0d6b46feb26dea3d8737a531ca4c0ec4105e33120","impliedFormat":99},{"version":"25126b80243fb499517e94fc5afe5c9c5df3a0105618e33581fb5b2f2622f342","impliedFormat":99},{"version":"d332c2ddcb64012290eb14753c1b49fe3eee9ca067204efba1cf31c1ce1ee020","impliedFormat":99},{"version":"1be8da453470021f6fe936ba19ee0bfebc7cfa2406953fa56e78940467c90769","impliedFormat":99},{"version":"7c9f2d62d83f1292a183a44fb7fb1f16eb9037deb05691d307d4017ac8af850a","impliedFormat":99},{"version":"d0163ab7b0de6e23b8562af8b5b4adea4182884ca7543488f7ac2a3478f3ae6e","impliedFormat":99},{"version":"05224e15c6e51c4c6cd08c65f0766723f6b39165534b67546076c226661db691","impliedFormat":99},{"version":"a5f7158823c7700dd9fc1843a94b9edc309180c969fbfa6d591aeb0b33d3b514","impliedFormat":99},{"version":"7d30937f8cf9bb0d4b2c2a8fb56a415d7ef393f6252b24e4863f3d7b84285724","impliedFormat":99},{"version":"e04d074584483dc9c59341f9f36c7220f16eed09f7af1fa3ef9c64c26095faec","impliedFormat":99},{"version":"619697e06cbc2c77edda949a83a62047e777efacde1433e895b904fe4877c650","impliedFormat":99},{"version":"88d9a8593d2e6aee67f7b15a25bda62652c77be72b79afbee52bea61d5ffb39e","impliedFormat":99},{"version":"044d7acfc9bd1af21951e32252cf8f3a11c8b35a704169115ddcbde9fd717de2","impliedFormat":99},{"version":"a4ca8f13a91bd80e6d7a4f013b8a9e156fbf579bbec981fe724dad38719cfe01","impliedFormat":99},{"version":"5a216426a68418e37e55c7a4366bc50efc99bda9dc361eae94d7e336da96c027","impliedFormat":99},{"version":"13b65b640306755096d304e76d4a237d21103de88b474634f7ae13a2fac722d5","impliedFormat":99},{"version":"7478bd43e449d3ce4e94f3ed1105c65007b21f078b3a791ea5d2c47b30ea6962","impliedFormat":99},{"version":"601d3e8e71b7d6a24fc003aca9989a6c25fa2b3755df196fd0aaee709d190303","impliedFormat":99},{"version":"168e0850fcc94011e4477e31eca81a8a8a71e1aed66d056b7b50196b877e86c8","impliedFormat":99},{"version":"37ba82d63f5f8c6b4fc9b756f24902e47f62ea66aae07e89ace445a54190a86e","impliedFormat":99},{"version":"f5b66b855f0496bc05f1cd9ba51a6a9de3d989b24aa36f6017257f01c8b65a9f","impliedFormat":99},{"version":"823b16d378e8456fcc5503d6253c8b13659be44435151c6b9f140c4a38ec98c1","impliedFormat":99},{"version":"b58b254bf1b586222844c04b3cdec396e16c811463bf187615bb0a1584beb100","impliedFormat":99},{"version":"a367c2ccfb2460e222c5d10d304e980bd172dd668bcc02f6c2ff626e71e90d75","impliedFormat":99},{"version":"0718623262ac94b016cb0cfd8d54e4d5b7b1d3941c01d85cf95c25ec1ba5ed8d","impliedFormat":99},{"version":"d4f3c9a0bd129e9c7cbfac02b6647e34718a2b81a414d914e8bd6b76341172e0","impliedFormat":99},{"version":"824306df6196f1e0222ff775c8023d399091ada2f10f2995ce53f5e3d4aff7a4","impliedFormat":99},{"version":"84ca07a8d57f1a6ba8c0cf264180d681f7afae995631c6ca9f2b85ec6ee06c0f","impliedFormat":99},{"version":"35755e61e9f4ec82d059efdbe3d1abcccc97a8a839f1dbf2e73ac1965f266847","impliedFormat":99},{"version":"64a918a5aa97a37400ec085ffeea12a14211aa799cd34e5dc828beb1806e95bb","impliedFormat":99},{"version":"0c8f5489ba6af02a4b1d5ba280e7badd58f30dc8eb716113b679e9d7c31185e5","impliedFormat":99},{"version":"7b574ca9ae0417203cdfa621ab1585de5b90c4bc6eea77a465b2eb8b92aa5380","impliedFormat":99},{"version":"3334c03c15102700973e3e334954ac1dffb7be7704c67cc272822d5895215c93","impliedFormat":99},{"version":"aabcb169451df7f78eb43567fab877a74d134a0a6d9850aa58b38321374ab7c0","impliedFormat":99},{"version":"1b5effdd8b4e8d9897fc34ab4cd708a446bf79db4cb9a3467e4a30d55b502e14","impliedFormat":99},{"version":"d772776a7aea246fd72c5818de72c3654f556b2cf0d73b90930c9c187cc055fc","impliedFormat":99},{"version":"dbd4bd62f433f14a419e4c6130075199eb15f2812d2d8e7c9e1f297f4daac788","impliedFormat":99},{"version":"427df949f5f10c73bcc77b2999893bc66c17579ad073ee5f5270a2b30651c873","impliedFormat":99},{"version":"c4c1a5565b9b85abfa1d663ca386d959d55361e801e8d49155a14dd6ca41abe1","impliedFormat":99},{"version":"7a45a45c277686aaff716db75a8157d0458a0d854bacf072c47fee3d499d7a99","impliedFormat":99},{"version":"57005b72bce2dc26293e8924f9c6be7ee3a2c1b71028a680f329762fa4439354","impliedFormat":99},{"version":"8f53b1f97c53c3573c16d0225ee3187d22f14f01421e3c6da1a26a1aace32356","impliedFormat":99},{"version":"810fdc0e554ed7315c723b91f6fa6ef3a6859b943b4cd82879641563b0e6c390","impliedFormat":99},{"version":"87a36b177b04d23214aa4502a0011cd65079e208cd60654aefc47d0d65da68ea","impliedFormat":99},{"version":"28a1c17fcbb9e66d7193caca68bbd12115518f186d90fc729a71869f96e2c07b","impliedFormat":99},{"version":"cc2d2abbb1cc7d6453c6fee760b04a516aa425187d65e296a8aacff66a49598a","impliedFormat":99},{"version":"d2413645bc4ab9c3f3688c5281232e6538684e84b49a57d8a1a8b2e5cf9f2041","impliedFormat":99},{"version":"4e6e21a0f9718282d342e66c83b2cd9aa7cd777dfcf2abd93552da694103b3dc","impliedFormat":99},{"version":"9006cc15c3a35e49508598a51664aa34ae59fc7ab32d6cc6ea2ec68d1c39448e","impliedFormat":99},{"version":"74467b184eadee6186a17cac579938d62eceb6d89c923ae67d058e2bcded254e","impliedFormat":99},{"version":"4169b96bb6309a2619f16d17307da341758da2917ff40c615568217b14357f5e","impliedFormat":99},{"version":"4a94d6146b38050de0830019a1c6a7820c2e2b90eba1a5ee4e4ab3bc30a72036","impliedFormat":99},{"version":"48a35ece156203abf19864daa984475055bbed4dc9049d07f4462100363f1e85","impliedFormat":99},{"version":"2a80ab285da5ec06299594edb456abd51ee69a7506278cca24e1ab494a86952b","impliedFormat":99},{"version":"5cd9fd926e2034c7eeec3de6138e18bafe092e0672f8bccdc1a0669393af60db","impliedFormat":1},{"version":"13d7630be2b4951d99f5ac0bd83e07b4ab9e8b4f3a97e9ad5210ea6eed86fd82","impliedFormat":99},{"version":"a8edf6901be3952dd6ce40004267994165eeb9a51dd48363f43f206a5afc4547","impliedFormat":99},{"version":"865e26608ad2160d9ffcb981dc4649119471855f0467893934e3ab7c22b132e9","impliedFormat":1},{"version":"2bf40a9b2a42dc6f0e2a740fbc1c88c1998d25727b87ed0cf885284cb1e16c44","impliedFormat":1},{"version":"678ce9e1aaba570c9e5bcb5ecfac009720a60ec616bbbc9825fd04d63b53b751","impliedFormat":1},{"version":"b79cc2fb1ad4a842bbb8eecdc632a7f18ee303bd3fa58e972fa3720189859132","impliedFormat":1},{"version":"44338602a65a3e3fc8dfb35b09e6116d05d2c8019e90c8d0237b203cb3b5beb6","impliedFormat":1},{"version":"b2af1e9faa4f6750ca01407fadd7a90eac3f4615df984170cc53f6d7902d3250","impliedFormat":1},{"version":"690872b554003d24a4f905afd2a7bdd6ca9e3f1ea3276eb3dfa43290e7fa57c5","impliedFormat":1},{"version":"20b1ec36566c5915f77b422691e3ce8e467c195af9c9fe2adee1b9f95cfe59ff","impliedFormat":1},{"version":"54e9dbc82c0d74af574f927f8cd1b567be6d275b23984bd1ac602b3f0d385a63","impliedFormat":1},{"version":"ad53bd475d89e449c6539258e64745d35a8ad4eb75ed20c52b2979ba27eb799d","impliedFormat":1},{"version":"fa46c917a8cd50fe346b4646a7b52d9d9223b1d746056bfdac0153f4ea7c62e3","impliedFormat":1},{"version":"95bb7829186cdf1f69e548c9a5cdfa7776e85322ead227812293702128b7e45b","impliedFormat":1},{"version":"fe656648cc1b58e401fa0d0492bf16c0883663c82a819feef879483d20a04da7","impliedFormat":1},{"version":"dae408255bd416b2717a0be18188a64a4530a9440a662b9b470b0a136c75965b","impliedFormat":1},{"version":"1180af664bda92e8c27b788976e0b3c7483201b27efe6f64300c8fd5dfdb7089","impliedFormat":1},{"version":"6d0a1eb807e4f7c63f42c1b164d2c44f7ded4b058ae9232221f14af24869a5d2","impliedFormat":1},{"version":"2b6891c13b74886d1bb32cae8b8531997717eb279cbb147932bf204220db1f69","impliedFormat":1},{"version":"7a7cf51c1625984c330021ca597a88cbf727ab2643f7db8a3bfe22aa84084942","impliedFormat":1},{"version":"ff4b5d69e379c7d2763d952ffcd1e38d95c697658224c7f612735c0c67811834","impliedFormat":1},{"version":"513299726fe81a4e8b949fc555495cc40808bbfa84cde96534773cfdcf459ba7","impliedFormat":1},{"version":"33a29f53161aa4d0778b333128b8687b743fc77173f8ade3f73c13659cf14134","impliedFormat":1},{"version":"98b9efc8d590ecc3762c6c93735bf24266c7f1bfc06f983b5098578352075b64","impliedFormat":1},{"version":"748bc14a2fb8c21ff58b57c87a21bdb9d049bb0266525050d35384c30c44bbde","impliedFormat":1},{"version":"59ee3a45a164d5c29d135c8e713c484f154f421141c614b72b3c8103bff2f816","impliedFormat":1},{"version":"de346ee3e7c0e57a62ee18acd9b9cda57c596eca1fd7162cee0323f55366c0fb","impliedFormat":1},{"version":"df6163feb8cc511ace0d25009ed44f526e91f74b8eac78986bf3a56fccbdadac","impliedFormat":1},{"version":"d559cc752ef17b882fef1b5a2cf5cef76669620f28a0d6098e57b4b5da5eb6de","impliedFormat":1},{"version":"752c7d54e9d328c8aa47c89520fdb38c99ef0132e089cb7bde73bbcddc0b48ed","impliedFormat":1},{"version":"731160a68d1380ca76430a673f064d1b9b567524807f6015b477cd64d36c51fe","impliedFormat":1},{"version":"70a29119482d358ab4f28d28ee2dcd05d6cbf8e678068855d016e10a9256ec12","impliedFormat":1},{"version":"869ac759ae8f304536d609082732cb025a08dcc38237fe619caf3fcdd41dde6f","impliedFormat":1},{"version":"0ea900fe6565f9133e06bce92e3e9a4b5a69234e83d40b7df2e1752b8d2b5002","impliedFormat":1},{"version":"e5408f95ca9ac5997c0fea772d68b1bf390e16c2a8cad62858553409f2b12412","impliedFormat":1},{"version":"3c1332a48695617fc5c8a1aead8f09758c2e73018bd139882283fb5a5b8536a6","impliedFormat":1},{"version":"9260b03453970e98ce9b1ad851275acd9c7d213c26c7d86bae096e8e9db4e62b","impliedFormat":1},{"version":"083838d2f5fea0c28f02ce67087101f43bd6e8697c51fd48029261653095080c","impliedFormat":1},{"version":"969132719f0f5822e669f6da7bd58ea0eb47f7899c1db854f8f06379f753b365","impliedFormat":1},{"version":"94ca5d43ff6f9dc8b1812b0770b761392e6eac1948d99d2da443dc63c32b2ec1","impliedFormat":1},{"version":"2cbc88cf54c50e74ee5642c12217e6fd5415e1b35232d5666d53418bae210b3b","impliedFormat":1},{"version":"ccb226557417c606f8b1bba85d178f4bcea3f8ae67b0e86292709a634a1d389d","impliedFormat":1},{"version":"5ea98f44cc9de1fe05d037afe4813f3dcd3a8c5de43bdd7db24624a364fad8e6","impliedFormat":1},{"version":"5260a62a7d326565c7b42293ed427e4186b9d43d6f160f50e134a18385970d02","impliedFormat":1},{"version":"0b3fc2d2d41ad187962c43cb38117d0aee0d3d515c8a6750aaea467da76b42aa","impliedFormat":1},{"version":"ed219f328224100dad91505388453a8c24a97367d1bc13dcec82c72ab13012b7","impliedFormat":1},{"version":"6847b17c96eb44634daa112849db0c9ade344fe23e6ced190b7eeb862beca9f4","impliedFormat":1},{"version":"d479a5128f27f63b58d57a61e062bd68fa43b684271449a73a4d3e3666a599a7","impliedFormat":1},{"version":"6f308b141358ac799edc3e83e887441852205dc1348310d30b62c69438b93ca0","impliedFormat":1},{"version":"486ce5135771d0b249145f0a1560d8766b35e5e215c0be86eff8b41f80bbcb9e","impliedFormat":1},{"version":"53c917a6d42ee959dfa8f842d612b59f5ac03a72905371fbd5371b1131d7d48d","impliedFormat":1},{"version":"2dc807c070380e3e5402f2f5ff635482e6f9fb43c244bd3a66c682a4aab7a2f8","impliedFormat":1},{"version":"39b4475e6e998885a7a0e69dc1c67ee6facced3ec7234109cefadfc7ef31e276","impliedFormat":1},{"version":"7f4bc4c6f05fa992e11f8b335db63589c556cf683a822f071c01a46d59912e49","impliedFormat":1},{"version":"b38cfb3dc5ce58b0993a9686064c31ca5b8ced1781043249089d171fa1c4fd70","impliedFormat":1},{"version":"e787c7a8b0854d8cb32d48450f95b3737b61a8be697c65d1241ba445b4261e70","impliedFormat":1},{"version":"61359565523e1c4e5b7f8af67e9a69ef177aae2903fc55db2029efa71c42f295","impliedFormat":1},{"version":"973fa3744879daa9ed6a4095b8da2cdd2bc4acd6007aaa87be9b2eab1d6ddc15","impliedFormat":1},{"version":"5cdecf081bf87b64f0afc929d9bf6ddd8731e550f6eb1846dd4513b441301890","impliedFormat":1},{"version":"65d5005eae8ea5af10b8416979cb6fcaaca374d3bc753fefb2aa0ad951e2351f","impliedFormat":1},{"version":"86feb3cb6b01919550f5c846eeae1b36707fe420d16ff7b603d27e53af450e70","impliedFormat":1},{"version":"115619837222e0263791637a3bf476060a93c7236c2b00109b0f0ab33cd6c7c8","impliedFormat":1},{"version":"e4b7cc0c48b817e78119edc65f0607d535bd537ba8a77a2937405f86393b08bd","impliedFormat":1},{"version":"6af30731a08e7b04632d135097de6b5e180bbc447d21771208415fab7489e4e4","impliedFormat":1},{"version":"12388dc354e536eba298cb55914496c389ef554ea1ab749e6b7aa6f39c74bb94","impliedFormat":1},{"version":"d1980619beb34b5b0fd0cdd3cd98c32fd38035127b4c2720b43b002a3377a842","impliedFormat":1},{"version":"46a7f13ac080593e33d76cf5de4fc9db639a9122a6a085bd12d2f3e61c9c46cd","impliedFormat":1},{"version":"efd20c2f4fe04f9965905ad50fd35e5ab0d3611ab9a077bfc1b12eab6f9cb9a3","impliedFormat":1},{"version":"316edc2773a5c40f66de00cca4f35ba671206988e31ea8c1df8e8ff871973917","impliedFormat":1},{"version":"2ae22d6b87836aeb67c823c619e0c66403ae028651f14f34d3cf0430f8fa9ec3","impliedFormat":1},{"version":"c2641eef9519484b19625ff9b9e71310da39600963da25dc0f0de11a8073612e","impliedFormat":1},{"version":"00d2e6fca85d766650ff9de68c0306afa4964823912a4dccc8e7bec80f38fd58","impliedFormat":1},{"version":"d2889f3ed0406f47012b39d59f2a9872b65465d0168f240296a6aaa23ba0e14e","impliedFormat":1},{"version":"99fcc7416501b8dca3e40581e320ef4c72e173317a539d895a2e8cf2640987b7","impliedFormat":1},{"version":"31dea6e70acd25ff078d08104eb2ae41eac598dcc305f7aeac2fbc7859246fff","impliedFormat":1},{"version":"3e3f11e1874771d8d75b18b9bbffffd2b464d2a44b3dcff3325041a7001ff62a","impliedFormat":1},{"version":"b53b302fd7ec7c441269b5cfd4a58de0bdf0e2847c9f8292b133c7c6dbecffee","impliedFormat":1},{"version":"3354fb95230a3d2f23bb4e086ab9fa29bb1fd4ade71ed7e4e15bd7fd175f08da","impliedFormat":1},{"version":"db03c5d3709cbc3f89024de53d0319e49fab02a016c9d3aef5308b44041afc77","impliedFormat":1},{"version":"5c2ebf20d132caae1c4b35d28bacf76384275937924cf72e4efbc2bcbba3cad3","impliedFormat":1},{"version":"054790666d9ed7c5a3cf292503e6a61780f7169fe3863e970d35702cb428e501","impliedFormat":1},{"version":"3095e62f6d48235298dcb23cda5fce12ac58d636b0f7d4ffbc80c84f694c5d70","impliedFormat":1},{"version":"25df3178f9bac06afb08eb57b6bc94989f5354f4ff4d1c43afc3627864446247","impliedFormat":1},{"version":"e3b4b27ff971ec37a4c0a6e1c9c044c206d68f57dabffffa71f2df80b5c8daa0","impliedFormat":1},{"version":"bed7c28681ba3141a429aa0d2660fbb6449f9bf4d7bf368efd4137a8c538c7f3","impliedFormat":1},{"version":"236c2a6aee18331ff39e29a6285aec02350cb1bddf3ca5d1e1235d6b0f059ac9","impliedFormat":1},{"version":"aa192bb83edaae4348184eaf12294dd4c1ed228cbad6da008a01369a557b097a","impliedFormat":1},{"version":"d6eeac6c763ef772e8626bc335568c325851afe57f9674c153046103d13e8569","impliedFormat":1},{"version":"5926e2e5298a0746ce33aa7c33200cf089e684b277f3e3b75cc190d145d3b78f","impliedFormat":1},{"version":"73a0ee6395819b063df4b148211985f2e1442945c1a057204cf4cf6281760dc3","affectsGlobalScope":true,"impliedFormat":1},{"version":"d05d8c67116dceafc62e691c47ac89f8f10cf7313cd1b2fb4fe801c2bf1bb1a7","impliedFormat":1},{"version":"3c5bb5207df7095882400323d692957e90ec17323ccff5fd5f29a1ecf3b165d0","impliedFormat":1},{"version":"49a9fbfd1234674cb80daec73633a563d386b24af63e5297974cc2837a99e49b","impliedFormat":1},{"version":"293c077ae541a6628006aa6f6c2b31738387c4e8d033df81835656ed86655127","impliedFormat":1},{"version":"02e07de42da88aa986b2f47e9e0bd4573133a2240d42817f307440c700a7f04f","impliedFormat":1},{"version":"a5ecc724406ce58a8cf1dd766a2b75ac198730611a909374828fee9ca2c03b24","impliedFormat":1},{"version":"0f3b25a4a58bfbc81497a2560835ba48eb0e0d2cd00d976ac10cefb2214bcb2d","impliedFormat":1},{"version":"1c39cded7dede5be5fe3450179489d7e892e5e81590f5ca0305b063f85b04b8c","impliedFormat":1},{"version":"c94cd94329d2283c7ffaee91f3f9da4789060bfd12c18b1c87ca502dfe2e7e04","impliedFormat":1},{"version":"f82b4c8ad1a1bbad19bd2efefc6a4d80546f7ef1ea4500f2981e3d33a8844cf7","impliedFormat":1},{"version":"b15ae6501af260d0300f8148d9f6e356b16e72aad494b4d90817a60f794099dc","impliedFormat":1},{"version":"e689c521980a119665fbc52e3e9cebf182d76ba18f437710f421252b3f5d39db","impliedFormat":1},{"version":"575e8d070210e93cbb4ac3c18cea6d48b54d64aa8f658496296622d199c34e9a","impliedFormat":1},{"version":"ccfcb0348e378f0423e3b5b74eb23fea9893f9ed5396477a7f6b970c5c627063","impliedFormat":1},{"version":"171effe51e3f90facef73d7d9f3c43fb6723bf44df01740dc4d52c83a47fb70f","impliedFormat":1},{"version":"78d8ce9cc33fc80ba9339bf8018f282e1162d7bb8fd834ad4255cd111c208b4b","impliedFormat":1},{"version":"35a89ca4a11a983694a529c3c8bca9b2604dd39f1ce3be5812760c5d6bca4fcd","impliedFormat":1},{"version":"3343e2df866cc321345b51d3befd4f292fb00450f2e4cd530e6d979af1d3eae3","impliedFormat":1},{"version":"f02cac4bb6d304ead3570c7f78264af2d1fc2a5282fc8b4042dc1c1a8d0f4e61","impliedFormat":1},{"version":"cbc65ab4e61043907dc08a4062423da6e7d33109fda8a219ceda2ec98d0580e8","impliedFormat":1},{"version":"b22c5a59fad638037971add23c11d5b3fcb20b73b7687b595d57cb7c6c858c48","impliedFormat":1},{"version":"a36113daf1c07c21a0978bf3ea716d258eb8d13887c9a3bb394b4042989c1440","impliedFormat":1},{"version":"dfb8609c400499e11485d5933bb6a94029faa73626456f15b137d672f7ed3f0f","impliedFormat":1},{"version":"a1c564e2773dfb7d3bec40de87407ef36af9614ab36c23a2b20e9d07b175484c","impliedFormat":1},{"version":"974a296ae48132c94b948fefc6c41e766e75331f460fff1cac13fca48560f4da","impliedFormat":1},{"version":"8ed68c18be279b40d265f023f989dfe9bcd6334f65d5c35d15dc32e8929cfaa7","impliedFormat":1},{"version":"877353a33cf7651621d4a8d59b0e5d42745dffaa86f863fbad84a3afd3d0353b","impliedFormat":1},{"version":"6a6125d9da9c3516e5cdf26aa7e846ebbbd49cd7a964521074f85902f8df7d45","impliedFormat":1},{"version":"0462b4ed0e09fdb48ff4a70e895b563d75b413ba024f4479ef87760281b81830","impliedFormat":1},{"version":"23ace85c3d01c7d82bedd8fb95b7a7902237929b72a2a1b767fb563a24f2a323","impliedFormat":1},{"version":"53c8221dd71e9c0799e47a7b05bef62baba100e956d4e777c9617afae447aae7","impliedFormat":1},{"version":"f1361e3ed8ce7c3ed2aa9c9d0760a76a35391047e48e98685b04cbcf3d050c42","impliedFormat":1},{"version":"9f213f9495ee1bcbc95691a30711bc2274bb8b6407d55e139f7b551906de54c6","impliedFormat":1},{"version":"61d402fd5dc33411646456348996cd7d608ecf4e696c3a43ef476e64bc41d003","impliedFormat":1},{"version":"5f3f8d803300ea21de99a4e84c60af1ff808dabd9c7feffac2f0093fad064bc8","impliedFormat":1},{"version":"dbf286c3bf2c1ea48dd3d97d3d3265c36c51fd7fcef8fdc52624e5c4162d6ee6","impliedFormat":1},{"version":"e403a118d7064bd836299d296df2a1d4fdb3d35afcabc9c3e6ea9a5151b47afd","impliedFormat":1},{"version":"fd9e3764702b2863636ff175122790c065e39449fd2d2ab66c05c2452a444447","impliedFormat":1},{"version":"a2788a6aef1c55e94d8a3a51c53be474f7f766c3c3e4856940be9e689e7845da","impliedFormat":1},{"version":"57acd378108b9b4ed2a50beb0068a4ec6548a44284e2431f529225fe1c119568","impliedFormat":1},{"version":"ec4fb6bada4aa2161e89b82f1d19c23c9069a0967b3e41469b60fb1ef2a947b9","impliedFormat":1},{"version":"47ca5f288b6d09c737f95e75c952ec80601e425eb5e32a51cff2ec2b235025ed","impliedFormat":1},{"version":"3d53fcdcfc5e04cdc803c4f652f1ed7cadabccbf70b13c6f248da3ddd1fb588b","impliedFormat":1},{"version":"f6384fbd628e78839ed1d4eac7d30c438490e8501fce2671461101dc08cfb561","impliedFormat":1},{"version":"b48fe4141f082032b504b0bbf90e90200e72d26e130acdac7d4728b6d5cf9927","impliedFormat":1},{"version":"ceb82c3f651bbd2e8112df5c9101d18ecd81110157540b729f2d91fd2476af22","impliedFormat":1},{"version":"56dd0a3de5847ec09014c58e99e85b110730e9359a2927a543976625aa521ee2","impliedFormat":1},{"version":"1a996dbaf0bdd2acfeac97fbac98dba2046ec5692326099a51460c4d0f5ae9a1","impliedFormat":1},{"version":"cfc287e2eab581b5aef74288ab12a38dfedad4c7f86da8f9de05866b971260d4","impliedFormat":1},{"version":"b55a10a07d9e89f3fbc84f5adf660106de38c1632187ee89ce4722e3114bab1e","impliedFormat":1},{"version":"b76aa5f6ae4f664f6698f457d512a43424d0b89ecfae92f3862b11a59c356c96","impliedFormat":1},{"version":"7aeadcd6f891a60cbd7398d4efa6bfa8c6abf0d0d3b1c0957271b14835223add","impliedFormat":1},{"version":"ef808080f524a438cee5c18a3037659f772d77d868184073536ee14e505cfefd","impliedFormat":1},{"version":"789e37de9d9be63d4a831c44e1872c0d9973969710622c73e85e5ee488e46bc1","impliedFormat":1},{"version":"aa59e48528cf4a7f0de9db27f8fb1279a57831c87db377494dfd9909d5edd460","impliedFormat":1},{"version":"a7e9abded6309efc8a2dcad525ad862570a55344dcd96bf0e75726139ea46371","impliedFormat":1},{"version":"94095684562e04c69a3c508c15a4e379910a38781301bd05a098f563d1b2077f","impliedFormat":1},{"version":"b909d40ae0a49dc8cf12bef3675e7540f74eaf0f19a9b2fc310b91d0ac95b003","impliedFormat":1},{"version":"18517e95a9b285fa18c0218a1a6dce13c1e02584c4315710f4c29a36a87a4984","impliedFormat":1},{"version":"1554b903cb17787aed9b5dcea80358d6ea248c58933ee515aeb98c830b566347","impliedFormat":1},{"version":"758463ca4e500e663796adbf74833192d3b7b8de4854b63f45bd008f8a85e5a4","impliedFormat":1},{"version":"7731e44e65a7b3e20f506f6342e873ccae6129eecc0cbc02d1b3d30510642981","impliedFormat":1},{"version":"cb13dff5aa56155ed496db2cf084fc6a6e062d33fb0a8b72f2606e12cc3b1bba","impliedFormat":1},{"version":"dedbbcaff7747f2ea2677450351d36e7cfa30a56960a7fd261667eea2d4531aa","impliedFormat":1},{"version":"49620a7bb5ead5e646a697e4ab417a540a57b150efb8a107629eac48b13eb161","impliedFormat":1},{"version":"f07d892242e5d82ac0ed9a58ffe4056cdfbbfe8c4eebd2580e27635d7be65f66","impliedFormat":1},{"version":"2d48cb08bb8a13dc0fb00c829dae31d3ebe48bb060cdcc99a0079b4ac05c673e","impliedFormat":1},{"version":"8ad7581069b5fea9c14f35fa273b79c1eeed3248c15d8e3b3cc3014a60990622","impliedFormat":1},{"version":"96d049cb9f1a5fa296e00be2680394ac6ae91bcc848d98cfc374a469852ec23b","impliedFormat":1},{"version":"554dc5a72dea714b595395a4c12d519efccef1ce0dd5d7f41ae484401e50ff37","impliedFormat":1},{"version":"59dfd66db064bdc4a8167a4d5e6cba56213e94157fa89071f0289f07e3d95b5b","impliedFormat":1},{"version":"d69d5cbcb746e136acdd8e81ccfe00182dd9617bfd6c6c344e09a895e09eeed6","impliedFormat":1},{"version":"0a6182ba6bcbced44384aad64ced03428a44068db6e396627902d55452b63a14","impliedFormat":1},{"version":"f636e08e2de274463127a2adc5e8ca24304a2cd6ee5fe9483e35c8164bf35712","impliedFormat":1},{"version":"437f4518a56c655ee150fb75f821fd0684be16e6459204907fe8eb80ccc48cb2","impliedFormat":1},{"version":"dae796cfb059d6636e718f5e326c8f6243050c6d13f02b30e89522a05798dc96","impliedFormat":1},{"version":"852919a8c9f948a1120e26665877f445c5e979229cd9690926a4c1056ecb67ae","impliedFormat":1},{"version":"a533a88c900177a8bd724a8716d902609e7ab790e77afcdae1043ce882d6214c","impliedFormat":1},{"version":"61921a01ae678fc55f80344dc8770e257e8c3574abf42d94a0fb114439a360b6","impliedFormat":1},{"version":"620d192a20a0fdbb5f75562b2fb174e0df6762c53e0b3f3f9a905000983770f0","impliedFormat":1},{"version":"0d3d5ad7978ea95c0329ace8fc70d541f115393631c56b89b094edf9cc0e0267","impliedFormat":1},{"version":"9c4ff4b26953272dfd3fd9e37d46dbc5a1efa4ded8626b8f0bc79fafe2dcfc98","impliedFormat":1},{"version":"feb35d74e120494bfbc4c4c823da971a5b4b96e663513f68fe3c349fb8a592bc","impliedFormat":1},{"version":"c121aa1a348e834f829fd317dc6944f98169e0698c15f7db107798be1e0da78f","impliedFormat":1},{"version":"e751b5fdb543639ac55a0ad688e74c82ef24b9e712c9f1000399b63d7fc284bb","impliedFormat":1},{"version":"a3f6163afb8f4458c2a935747b1dfb384fa03f4f399a46b162e48d8b92aeb369","impliedFormat":1},{"version":"115dc68151cc74405c37a5199c2d42e5592d594c4788663c74bda8fc5bf0730a","impliedFormat":1},{"version":"d0c62b638bbf6104e0d50483239e212601576e246030b01d1b4b40918e7febab","impliedFormat":1},{"version":"de4227d3f974cb37120411c592819624c9da2bcabbb58082cde7df8dce2a89d7","impliedFormat":1},{"version":"a5c48a6fbf1358a5fe9b947a525fb353498792caa599ef33cb618b92eadcaf86","impliedFormat":1},{"version":"eafa5d831783eb6262f72363582b5a6f0e3a5ce7bcefcdafdaf372b54edcde3c","impliedFormat":1},{"version":"33d2092b9488d738d8c7a733d63affa819fb02773ba3212cf3426f4513e91eed","impliedFormat":1},{"version":"3a81f7ba793511be763ef2fc529b0779ad68aa1a4d8ff061f5b31ffe5338ade9","impliedFormat":1},{"version":"db92169fcf279dc7b08bafe78bbcffc4fe4e5e0fc66d00ea403b740e7a81b46b","impliedFormat":1},{"version":"11916ebd92fb285e5aaa3ad36c3df329057b53097370d884729507ebff0f8332","impliedFormat":1},{"version":"2ed240886fdad836469258df5fecc174ccc8823d619a07b0b0dbbc1a1616e48f","impliedFormat":1},{"version":"0b9214f3b1fe766c6e8ac26c685f5cd54155619f0e163c4e1a60118a7fc3419f","impliedFormat":1},{"version":"69b78d12bbf6f3f26065075189308104c8987988bf9ee57118670ef23c91c0a1","impliedFormat":1},{"version":"b11ec773a6f06effa0e041aec31cace90f3ed3f952d031a3f4e654bf8a313636","impliedFormat":1},{"version":"a9df4cac8ad59067b0bcf991f48ef9dd98f7fc3e7d1e3a36c3fb58073e1eac4c","impliedFormat":1},{"version":"f7e0529012b0baf35c8864fd60994e829a60acf05fb8a206deb405815a731b40","impliedFormat":1},{"version":"17831f179acf5e3b1a81da11b9b6fbae22e0f4eb996ffbac6667bac607fcd121","impliedFormat":1},{"version":"6a312ba9dcdcc637b946bb3d0ba6cc34b26cdc36f582167241e66a15a155512d","impliedFormat":1},{"version":"d10f6923085f763958dbfcedfbee643dd784a2a1489adab40825b7336d095d1a","impliedFormat":1},{"version":"1bb4ddb08f558faa5ada460dc8456be86a1f1e922a680fa37320ea24486a30e3","impliedFormat":1},{"version":"04b1eee9cd36515fc7e7c5ea54086c335c752c110f52e4f73e4f0cdde2cc3087","impliedFormat":1},{"version":"a236a69e4c0d1447040588861899788c718b4cf7d6254a3120a2ebcee95fb3d3","impliedFormat":1},{"version":"44a4531588aecec33f47aa6006da8a679340937d96e03013d05fdee5d8c2e81d","impliedFormat":1},{"version":"5ddef1c7f4524767aeeeda30bf8280d4b01d2c24c87735d0e8fc51455cef3c5e","impliedFormat":1},{"version":"dc31857a04afe1b49ff3fb722e8b4678210a1357003b626b9318448edf8f4880","impliedFormat":1},{"version":"00f09f305a5c82ff104a1b3c58360b4cd2557cff9ff37cfee6d5ed718a2077eb","impliedFormat":1},{"version":"ab57460a0acaa740c9a47c8fd19f22406eaab943992bdb27008eeb819da32d89","impliedFormat":1},{"version":"8776163e9a5556d318fe81de8cf8bb892e4b74d433ebd04edb8ca4856dda236a","impliedFormat":1},{"version":"2414ffd43aa41911f4a88803340a55bfd0e124a13a1a2d7dbe8eb3c619aa904d","impliedFormat":1},{"version":"163f6c701bb1665196f3b4cf5e3d1ca719f35e359c2812f186f3c86e495a13fc","impliedFormat":1},{"version":"4a1d0b807917c0c94767c261008fa1913304cbe959f44bba375dc1e60a74e7a1","impliedFormat":1},{"version":"90d3fc3f0fb18babdf4de1451ca218e36b30edb3105a58700954e33568075dd1","impliedFormat":1},{"version":"2b4276dde46aa2faf0dd86119999c76b81e6488cd6b0d0fcf9fb985769cd11c0","impliedFormat":99},{"version":"38d4cff03e87dc58bfd50ffe5a3fb25e6e6d4136a1282883285baf71d35967c5","impliedFormat":99},{"version":"5ecea63968444d55f7c3cf677cbec9525db9229953b34f06be0386a24b0fffd2","impliedFormat":99},{"version":"6ea9c8bf2ae4d47a0dbc2a1f9ac1e36c639b2ac9225c4d271c2f63a2faf24831","impliedFormat":99},{"version":"a2a6960ef524509846b1ad24f36f6d9ea7e5ec7f0e55f943f8db09a598d99391","impliedFormat":1},{"version":"3d76957cf49167aaf2df848fcb2d95db411523d0025e9bc414006f641f407e17","impliedFormat":1},{"version":"594895eb74bdfe0a5174b5fd7811a8c912f2121347d773e56c28b7fb98642610","impliedFormat":1},{"version":"cf39c3aa36608091ba07df403bfb6fe43265a10b6ca43237ca5cd8dc2215c50b","impliedFormat":1},{"version":"ba7c1fd630f5175e41e24b44e2510aac50e98a2605d55bb4727e52c8bbc61505","impliedFormat":1},{"version":"a1c8b811348d3806581f7c5830d0d663eb910a828a69b5f49b7e3d219f6f200d","impliedFormat":1},{"version":"5fc020e4d3e29a0158977caa3b4ada841116bca7e95f1e3bd81972a973fa3e52","impliedFormat":1},{"version":"2a1f679af017f22773696f5f8a50be7889a256796e1e9c4639bb9683b85eee94","impliedFormat":1},{"version":"5c0896b0a5d08e905ebf5e5d644fcfceeef6b981864241ce87ad44c6d38b7037","impliedFormat":1},{"version":"33082e49dfc7aa882cac44fc860c9a0df4e71b869cdea78920a87c5f9ada3f35","impliedFormat":1},{"version":"37c9b58a44c587bba5fb17937cc009f7c8b11c5e1d034adbb6149fc7edf8f194","impliedFormat":1},{"version":"7a591b347f2956a5fdff47763b18e81f199d59ac4214a0eb10b527f668af3a14","impliedFormat":1},{"version":"18f8fbcb5964b00f0b9a59b9a20818140d256a0c13c40b27a84cf45039cd7ae3","impliedFormat":1},{"version":"7ca3766a7b61700680621bcaddd75095b2f6f1d5fd54054d455963e0b01a5271","impliedFormat":1},{"version":"3c210d785849c58fe7876040224d842318acc311170b36fa1fdecf6705e90b2e","impliedFormat":1},{"version":"931d881e641f8c6205ce766b5b0f4c334b4e44b400ddbd58a65f4225d6e55ae5","impliedFormat":1},{"version":"10b5802a62730e203b023f17e4aa7db9c8bac2fa557c0284362eeb85dd3db33c","impliedFormat":1},{"version":"ac6eb3be3381810472a2fc7056a9f736288f4492acb5e245804ee5275e12fa9e","impliedFormat":1},{"version":"1c7ddf03f8b22aafca004e06eb11ef870c6c48bb210cddf8f723dd634fc4b82b","impliedFormat":1},{"version":"8a62958b8a7962aa876a6554db15b6a40491e28b9772fd939254756dbd69d600","impliedFormat":1},{"version":"9354e4dbaf9540cfffa55762429274f2491c52780856a69df5f2bf1953638a7b","impliedFormat":1},{"version":"597d714b88fb4838f4eaf380e288889686168d0eb4335b03084fed54d71717ea","impliedFormat":1},{"version":"be7f71bc32c002bb28c81860665ac30fdafd9bf8631d3110f2ed5e9cf64806dd","impliedFormat":1},{"version":"ab5265c757bf45df980370183488884c0e6b04ecafd4476d07336fbbfff4a3c0","impliedFormat":1},{"version":"1b95d53b3cf18c5cb3998105b4e2d2db7f786406e194a935f7a4be03e3c98b3b","impliedFormat":1},{"version":"8dcacb13baeb9e2b3f548b81493d484f2bb95a6384e6aa311ead14fb87a7b14c","impliedFormat":1},{"version":"2b924655747dc77d6173bb706d427b89233969c68886301b97f0ec22d38cb948","impliedFormat":1},{"version":"cd532224c54d4c8df7e7fe6df04b9db97bba3c764ec06307f8063923d0ada85b","impliedFormat":1},{"version":"5ab9aca80383397243ab240ebc38ccadf85b566f670b980aed6e777eb3bab1e2","impliedFormat":1},{"version":"1a8452dc75d92ee4fa82455bdecede05171b837b023f374052f58f1bcf5b4da1","impliedFormat":1},{"version":"5290bcde06d2a1d393225c2464ef8a7cf6e3b68ae3ece13c4a48c10f0dbac1c0","impliedFormat":1},{"version":"9dc2e706663c027d2047a7371608bd1aaa0f76a974940f85e101a9f3dcf77f99","impliedFormat":1},{"version":"1a2f03003d76f913c21a1105408fb3af3184ab55dacdd7866e1fb5eb1f4a2934","impliedFormat":1},{"version":"25fed060cca7fcb097bc0a62dc5a71f60ccfbd3efa1bb3584e4b38d441ec9ac1","impliedFormat":1},{"version":"b636d739980b2e9a24b4e73251adf464e2ec0457ba998007b89ce7977ac2ce7b","impliedFormat":1},{"version":"411ed25e4d8e230ee295227a763e32a395bf1eb250e20af71a9c06a7e96a5ceb","impliedFormat":1},{"version":"8fb43d72aa54443abd069be799aec92b354ad28990f5f5f1acd7857773b54bd7","impliedFormat":1},{"version":"fe8e8c8df9218e3e0a418ddb058a81e895bc2ea5b548571b79594eec7d573628","impliedFormat":1},{"version":"2070abe224a2071f224fd7783212d020ee6d3f71c6f48405070a0b2fd9bfe479","impliedFormat":1},{"version":"a18875ee326a56d20c87ea0e86ff11a9d767cdee9cd5feaf60dd61c5b64caae6","impliedFormat":1},{"version":"df9d5f06a1692717762ca9f368917924fdaccfdfced152804d768eff9baeb352","impliedFormat":1},{"version":"34fec0d3b9abe499f5d53f1ae7a6c28d34ac289e5cff6f17587da846823cecb0","impliedFormat":1},{"version":"9ea3742314159f08b93e3dccb7fdba67637ba75736c12923d4df3ec9f40590ab","impliedFormat":1},{"version":"bc55f374f2b27277afd0ebdf0e503faa20ac18e81d15ac106e443ab354d3e892","impliedFormat":1},{"version":"ffc7343ac667843634241465fd8bb2fe5000964873434558f82c0e670d2b7d1b","impliedFormat":1},{"version":"e35562032ca67f79d83bb8e2b86b61dfcbac6a914ce15b0e2235e6626dbd49f7","impliedFormat":1},{"version":"0810fe9c952efed2e4372b734baaaa946c975c7e3114b9cb1e31179bca9662f2","impliedFormat":1},{"version":"18b2b9e3a3c86ebd23ac27a8f966b1870b8ab29a2857dc1c524a08a49b3aedf4","impliedFormat":1},{"version":"7078f3696ec34e21ccdddfd668eb9f679478964b739082f1d2f4ec286e27e324","impliedFormat":1},{"version":"2ef538c8ab12d795cfb3759aab16593d97bf8d1f491ce4a7cec2f452c30d312e","impliedFormat":1},{"version":"7ffbadcb4cd98d917e23f35a803795404e302f2e5ed3c69fbdddcbbd0190d2eb","impliedFormat":1},{"version":"8de84288a2bb7428bb031ba2a5b6ccf5415a06826b902f704dbfe0fbd8c60745","impliedFormat":1},{"version":"d5da81f56f3189ba0a2f7fc2c38915b741a5d4f9c1d56749bae3cd821eb11dbf","impliedFormat":1},{"version":"ba6514678ba39cd24e45efb38e18d25274787fb031b49b7f9dc2ef5857330ecd","impliedFormat":1},{"version":"2dd0a4aeef324625f4ff674e2cfa14e0e3a45202ae2d2c2ab882ec164589ecb1","impliedFormat":1},{"version":"6c9e1fdd65d24d365a746e8a47f8f367650dac5e9436ef0c0f20237e204e072d","impliedFormat":1},{"version":"7f79adbfc34dc2e7fdbb76ed579a4e1944076baa68b62cab9c05a81780088c36","impliedFormat":1},{"version":"b5979ba9077be6b986d0a6c8b6904fb32ebacf0d58fe66f5595a83af055c9f23","impliedFormat":1},{"version":"a883088486a65513998935f6444e0448820478b0f4783171138e3b8d3e92ed9a","impliedFormat":1},{"version":"1a09ea0b80210733d1c5fc284ab10291e9cc2d6c4b70764d05cfdfbe4116e71a","impliedFormat":1},{"version":"3da00f0c6f5f4bca013ced5172164a08e83f33ddf969b893c9cca734f97abfca","impliedFormat":1},{"version":"2ee1fb806f0b0f44313b46de861b55649634ebd9757c5514c3ea93cf1255d45f","impliedFormat":1},{"version":"580f7dd2752bb6468e1eae47c8465d681e8016614cd2d20bad21680401381560","impliedFormat":1},{"version":"3e6c1a8e7d9a2fa9e6e515cbf2eac07eee953a6ecc134e8fc565ed914d288a05","impliedFormat":1},{"version":"aefc07a7a75a93e46eabf563f85ccf13fc5674fb2575433dced13d86cce102d6","impliedFormat":1},{"version":"39593c50b59d3f35738f1d04978755d746aafd90d90f2f088ae072e38c98d753","impliedFormat":1},{"version":"e09e37a97deb2318bcc307e56eec9e74307bf4e185c5028cd61fb7b7a415091e","impliedFormat":1},{"version":"d58164beed48baed6bd4e8b4f1d6d35379bdcb50d79874efc906db8177e99dcc","impliedFormat":1},{"version":"fd4d66024e28ba8eac39b0d79e9932c1e7ab2cce39c3c8d776a10c2d8d550c95","impliedFormat":1},{"version":"0bf65d13cc32a5456a5983b40038f2df29676c568219ed7a173d322a7a7a1046","impliedFormat":1},{"version":"0e174986b721b6f8e0ae71473e8ecabcd27a72a1eb0c6a5b245641c92eb1f548","impliedFormat":1},{"version":"5195fba3a9190c1ab07ebdce0c43ef1215513fceee989230ba26b560db68b9b1","impliedFormat":1},{"version":"6e888892c110c9d9f5dea5cea9d73a7ffdc9539ef33e2c909c71aedb89ad6306","impliedFormat":1},{"version":"e98b949511cf978e1416c23635e4a7af49fb7e906a3aaad78639d0354ca3f91f","impliedFormat":1},{"version":"9fb0f57f4aaa5a7f6f47999bfc60d46fc8624174e5ec1db2eee681e7a7c5b7ac","impliedFormat":1},{"version":"6e5f47bfa10432c13f71a1f65d4c22fdac37f5b466250b200be575b044e466a0","impliedFormat":1},{"version":"9f902e8b6ab7cf1195f7dfd4ba76ab1761d27dde27140d8e4334d664ff5095a1","impliedFormat":1},{"version":"b6597583353a27878d178eff7cef1df25cd47b52318fc8c1df887778f39fb5b3","impliedFormat":1},{"version":"89499fdc926291e337e6befdfd4b3796a5090c8f7d88f670186a3478f287e049","impliedFormat":1},{"version":"f90e0e3dd84b892c1166fee0c4d07fefe1c975aa335249369198e9e303150c8c","impliedFormat":1},{"version":"0dfb0943c928ae130a9b563a0d95d19a654149c63afc5eaeb0bdab22a2e4cf92","impliedFormat":1},{"version":"f1acea90ee99fa895bfc2be16d42d010afccf581f0a4fd81af05c1e33ba52d30","impliedFormat":1},{"version":"eb7f78707b148715913878ab073771c2711636f81d9edacdc23741c5c4676409","impliedFormat":1},{"version":"69b302f58e27871aa18c35c9f6e54e182c7b5e093d680e90dcb271ac206f65b1","impliedFormat":1},{"version":"6bbdaf306a56f31d1780c457a169c54856444cd0e38bea9302ee7f719216320c","impliedFormat":1},{"version":"3764e1710ae3be641878c48688a6064b50f88bdfab8270477421e0ed0370c20e","impliedFormat":1},{"version":"b4039afc53de6f76bfe17e9667c52903e2c3522cf7e2adb48bdb0e9801c53ae2","impliedFormat":1},{"version":"0097a7bca0c500ea9ea03fbe979b864aba32f8add469ab5755f9ca20bffe146b","impliedFormat":1},{"version":"e4128e408464f38961eb93e466b10f0b70a5347bed31a306567de8a9d2cfa2e2","impliedFormat":1},{"version":"6c2913d56a401a786605facc3696159a4334fdde5e3cf3cc99606d63eacfd77f","impliedFormat":1},{"version":"ba9d942ce82486a429051ed695bbdc82922154b1867968bc3cd528fef4b1db0d","impliedFormat":1},{"version":"5065d8794b4d58da06eba6c467c5ce628227fcee5b378bcb513928e5f4351d3d","impliedFormat":1},{"version":"d96916253cf5b59873d497bda35bf1f60ca574a7611c288416903f6da67dadbe","impliedFormat":1},{"version":"1f08d836cb44ad9eb02e5437333eea1422bec0fbeedbe2ee637ba5f85c776df9","impliedFormat":1},{"version":"747978ad044367d203290e385379ba6fa13094707cdf93e7c46a28b557d5ec55","impliedFormat":1},{"version":"085986a624337952d77da5b7f4606715ff736293c0cd1ab2bd3bcaad20948100","impliedFormat":1},{"version":"42052a992a6973092850f23f4010d7137d202c1f56a8e8c515afa5de03b38506","impliedFormat":1},{"version":"80aa8bd81499eeab329bf5cd4cdb47cb6a1e55ce8c381c73ca0b34504dc98c31","impliedFormat":1},{"version":"73041c005eaace48167bab34c90c22873c23cfe7143a8a1e4830325611b8a432","impliedFormat":1},{"version":"1b8e481079ddfa96fa74e13195d09a3042427deeaef5e489c6953d033790e0c8","impliedFormat":1},{"version":"fd8c6a9b6efe0982844a362276267f4a8a0d0eac3f6c0105e07ae448baa089b2","impliedFormat":1},{"version":"671375a441525dfd1dd0d6205596b89cd5e36e43f5d5bd55241a5ebb1f9f8536","impliedFormat":1},{"version":"0ddf0a53aac62bec6bfbb70acd8ec414e4cd406e456d90b927d68589a1bc11fa","impliedFormat":1},{"version":"6b67e49174c6d0b293d10173bd4a1cc03006e5e34982a27e411474d6ad4ab08b","impliedFormat":1},{"version":"bbe077c6b64b00be512cf103a2b162d07e062bd192d27a80e6af5e640883efa2","impliedFormat":1},{"version":"6d8c163fa3b2767df0be2f34a5766f2f84400f855004dee35978668ea8c643d6","impliedFormat":1},{"version":"67901cbfa0e5b836fff44d6433d388ee08d49e861dce861c46089e85db76d1b8","impliedFormat":1},{"version":"cd3637aed7763ba22d12a386349eaa3ac394187d7e62ac5ac2f2b21959f2c92e","impliedFormat":1},{"version":"182e6dc43d9db5b02d97da9ad1a1f33511698690d075aa094a323e5596ee4151","impliedFormat":1},{"version":"03daceaa4fc85ddb4578c3e00c76d06b08354f67d3488fc0d3ba70f5b7bebe5b","impliedFormat":1},{"version":"a61a2b837dd119f4bb6328ddc2a75d2991268ad3f3c7fb057f5647659e8f7a0d","impliedFormat":1},{"version":"1d56fda4de62aa710b03933ed8886600db20fed547fc82fdb1e3172890b911fa","impliedFormat":1},{"version":"cdda9aef8ea456f57dbc7a1dbc992775635f35d1f16bc6ba5eec62582eb95c97","impliedFormat":1},{"version":"809f7de42db29764819db01936dd61260c36bb46da14a2dfd0d9cff433119c97","impliedFormat":1},{"version":"5f5a37e3d8f88da4365d633ba046b4a6fb20295417527e553f64a4b09e3fe7c3","impliedFormat":1},{"version":"5b76ebb3f054e884e915f113277a51baf59e648c63704aecd893b03d59f1a1c7","impliedFormat":1},{"version":"94db31e5feb97be7603749e699e2c7a149c1757ef3a7f9409527a11be2886780","impliedFormat":1},{"version":"80bd39fb5dac4905e90d9d2d2ec1bba058e4c5e65606263d76fbcef5499745fc","impliedFormat":1},{"version":"c814167f5da5cf413798dd7364096bdc04e1880118cd0d6fc7b1c8a13cdade31","impliedFormat":1},{"version":"ddca3180cc80853cbd1fd0ff049b4c174243110a4a2f231ac52f808369e10fb0","impliedFormat":1},{"version":"fdbff9f09e335506a85070891d2a7d370c151b50733742e4d2a7fc16900e4a95","impliedFormat":1},{"version":"b2b44b7e7d9e497466c0af940cb970eeca779ab831550078a0520aedc0ac3460","impliedFormat":1},{"version":"86dc4fb96df154d94b170e083ca293c38c12b9db881d04a4da308b7116fb75df","impliedFormat":1},{"version":"964e5c21c9795282e320431952f8399a76cc9c680516bc05940f6521f82c8495","impliedFormat":1},{"version":"35c15cf54be7051ef44f508d9da9c27c547f6e81d52bf477b0f809e2327ee8d9","impliedFormat":1},{"version":"b8d0deccc242126e1550a2ea3cc2661d7b174ea120559e1918e06b9270285ba6","impliedFormat":1},{"version":"2e52952ef8cf48a372827fa45cdc5fb094c91421f4feab9c803129ee078edb8f","impliedFormat":1},{"version":"a9337ad54903029d34c273ee605be5716e7832e281f6fb66715f661a93c10776","impliedFormat":1},{"version":"d907dd40369128bd18eee0e92d883b919aae330aef5edad23b8bc267c46e1ecb","impliedFormat":1},{"version":"7b877947ac19bfe5039233596c2a10b10f773acbf9857c8354e47e16b319e1c2","impliedFormat":1},{"version":"73ebc746aa0a19fe29c826702d37419fba934262c4c1a3b04d37ed2a20fc15b5","impliedFormat":1},{"version":"a7a1e121728c2e212f90d8d2f305f472b5a88c30dedfdef781ed9c75f2c8b3a4","impliedFormat":1},{"version":"e5531569cb6d4fc5ba2eccbb67ce8f8bca6f569c6f0702a625d5bfd0ef364854","impliedFormat":1},{"version":"5fcb4b897e8ea1ef4d40a6f42a93c329685f29b4c6a3639a02176d9ca9cb4686","impliedFormat":1},{"version":"e8dc672b15bf2e1e35a81e45140d830be8c98111325530e5f0eb7c5863245e82","impliedFormat":1},{"version":"9e8fd5b597e56e984d9ace2f8b5036c52ce3db8bd99c9d0a0e2a6be437eadc85","impliedFormat":1},{"version":"5a4a8f7317fc4821e7a46178c217733bdcf29c915a4919289292438e15de4607","impliedFormat":1},{"version":"5e238dda917cd2472b4f01de26b108974e55284bb214a4bfad978a5be34be7cc","impliedFormat":1},{"version":"5125b5b048d60035522ae201ccf7525e2f6a2ac5b2e68b6607ae54c715c66900","impliedFormat":1},{"version":"f55b6c21681fb9bb17f61ff9368fbd4e71a79693ce295a14151b4f325413b0a4","impliedFormat":1},{"version":"a5b2f909b4117accaca01cabe73871cb9077b9f93d292dd232f10892d146de43","impliedFormat":1},{"version":"9618adb3ebc25306662e030f883eba7057eaf4bb2c6d5879dfd6676129815c02","impliedFormat":1},{"version":"01270a9f63529e308eddd085993c4f25c1cb594e69f47ed3b289fb097af55a6d","impliedFormat":1},{"version":"d92d2527e59d91387d208c266a49524fc263cda8f6d54beb9b85f98b75493617","impliedFormat":1},{"version":"de0d38c21863792de0659e01e8e76615be53fa586ac1dd5b54f6042ec6348feb","impliedFormat":1},{"version":"a55439c4098a852a7dff67fcc3309065f8bf6009e02273e0cf7f6e165fc959c7","impliedFormat":1},{"version":"3e2f969b9fae540fcefdbdd76fd18c9743a369759730c66c775bd7dea5c151e9","impliedFormat":1},{"version":"fd1aa5b5f3c10cb19d3e0ead864d193a5fcc7efb837e47212255bcab2847a173","impliedFormat":1},{"version":"3abe9c7635bdd2ddbbd9f1a4d98ff44c2ebf780e13e17187adc98ec82ad0c7fb","impliedFormat":1},{"version":"ba6fdc7d3a3d6fc4236d491103cdb8b132c151b2dda4b06fbd38698ac0e3d2e4","impliedFormat":1},{"version":"32a3a19d049ef0b2539e525c862760158d6d16345835f2bd541e8f9a45380b50","impliedFormat":1},{"version":"7fa7fb68cea5734bfe2091ff218d302f0a3066f4a78ba26078322358765cca8e","impliedFormat":1},{"version":"11248c1e632fadd67c22d561754c30265e785edd66cdbfbecb227c3a9b1ebf99","impliedFormat":1},{"version":"93b6da74507103bee98e39f0d02cf6849c0cadbfc813f26804bf9ae5d0d3f75c","impliedFormat":1},{"version":"29675992f9e94f7f721674c8d07bc2042ea7a6bb8cf602b0ded185edd0c557a5","impliedFormat":1},{"version":"daec5d2d52be233262c80013e18d57be920152412de99ddb637700410ee7fa7d","impliedFormat":1},{"version":"e1e1837b07bbeb81a00d1b0b7edebf8f3e2b44ad148d5faff905ba17a0005813","impliedFormat":1},{"version":"c01d685b9634c875d18f81b643cc1fa5c01a1c740ad19a2578811aaa8f12f414","impliedFormat":1},{"version":"a896dd450b58d96d34a2b565c4d0db365eebd39cebe6e34fffbb2e01065d3013","impliedFormat":1},{"version":"7fc08eaeb2ac34f87eb2336270f2368e66eb83796d5bee2a96438f01d088cf68","impliedFormat":1},{"version":"d6d4654b5db43b43d857d245c054f359b8aaccf6004bbc4324f320ff2a507a87","impliedFormat":1},{"version":"628cc9debf7b2c1828d01d134506fae17eb26b0196d82184df3b6d9494b43ca1","impliedFormat":1},{"version":"a3d8178c385250d74effd5936477f4d5d2ebb9afb5a342bae1b928f621af63b1","impliedFormat":1},{"version":"02124f773917b14404ea6b1c87bd84e701136ecf91ea1a447cf93ede4bf04983","impliedFormat":1},{"version":"e4d4ed8aab4e61f8ed7656baa565ef07cb0e6f8418d81766721cf2b591845243","impliedFormat":1},{"version":"e2a7ef3681c1d61e11203e8dbfd77e25f23d7560c8fcdfa37490899d037c0ee7","impliedFormat":1},{"version":"8bcac2d5ace8feaeba195f476351a0f09841ba69a1b6175ab6574300fd70c9d0","impliedFormat":1},{"version":"53ccb10a74e6de7b5ee83cb44a12834f823fb78ea0ab3ce51475cee1779a8d9a","impliedFormat":1},{"version":"88751f9db85c13a404f3fd8348ba1ffd606715ac60572aa7b20de442049b0fff","impliedFormat":1},{"version":"d82aa6e7f1decca5179d57d12f94a9ca9b3f7f77048aa20ca98e154c3019c1fc","impliedFormat":1},{"version":"444a93f528d1b023dd00c1b46dd3d474a0339b50599b2e819ab13fb6b2c915cb","impliedFormat":1},{"version":"70c415e2ed25afac403f2828c67743154a8252945ef24e9343e6a3a55431de7a","impliedFormat":1},{"version":"86add54a494cb66d630e4554b9a2552fa2488b491549cbc2a7ca0e538e1d9f1d","impliedFormat":1},{"version":"3039c7975bb1035041e6abac5c71cfd0c2531ac20f8a3c521891d18d21b831ac","impliedFormat":1},{"version":"6a8111e8e43cffcaf41372315ae6cbc11d8596cec0cff4c6c70b27da75cbdd25","impliedFormat":1},{"version":"e75a6771bec31aeb2e8258df9f6c6652d1659648eb53dea7773562660a6fb5ca","impliedFormat":1},{"version":"4c3438e7cc5515323f5846d72b84fec9fe2e6d5fef50a517542c7a9bdc51dbf0","impliedFormat":1},{"version":"1d86876dc1a10218bcc482d392b3b86a61ebd4ae5f591a4755beb074099e4e95","impliedFormat":1},{"version":"80ca9dfd51ef8727912344fa6dceb3ffbda52c4a2ffb2182b704480a5fd7ee8c","impliedFormat":1},{"version":"770c2dd0ac11667883a3ebc682899c068c48ebd57663e4c50949e5652dad80fa","impliedFormat":1},{"version":"feb908fca7ebf8a474b20dcd1aee71d49ecde939d2f9d6dc9e8c9de589cfcfca","impliedFormat":1},{"version":"50849d34df4de824de2907e963279d49ab22f1914d47135cbca6fcb5685d49e8","impliedFormat":1},{"version":"7dc02705f75ddc71b0e2f18351d3696e41f6e07d790c18afe5b78c89e67ad387","impliedFormat":1},{"version":"79ca6338c68397a7e0f0b7ddaa3350c9764b8a2c4f4638251d316f72cccdf1cc","impliedFormat":1},{"version":"d4268aa638387a5d8219b3f8ebf0973ecaa4b2814f4e036248bd189654e510dc","impliedFormat":1},{"version":"7e6aa259bd4b2bfea6fbee6aad9811aa9b0c40ba71cd53e9db77073f41ff3aeb","impliedFormat":1},{"version":"4d19bf8ff0030c8c06c5b006baf9f7627e9f76216138eb45966583d0d5724b13","impliedFormat":1},{"version":"59a25169e290be34736885c06d5e29b2c2af1d6bb0afda1c3126a57a87c0dc4c","impliedFormat":1},{"version":"16adda3678b1f885104505504ff3f705f92cb071152b6826143a6578b18a12da","impliedFormat":1},{"version":"b773a29e6618e4ece53d0984eb455fca116799a6f658f4ab9de40c58d71f2dcd","impliedFormat":1},{"version":"f3b403e6482d63c3f00d1a5e77f8dc02c85bb324fbc35689f94f657ff678cf3e","impliedFormat":1},{"version":"eb1dc31de2323373220ddaa9e35f12eb2e2528ba2ddba760496b5e02f94e83fa","impliedFormat":1},{"version":"80d5e377dbe2d879fd58b903c81cf8051794a2457346783ccc5219088af95229","impliedFormat":1},{"version":"2f011e16e37f62fd4a7a00986fe5678fd7318af48b733274adebc2a1096f4701","impliedFormat":1},{"version":"7af34691e03a05e1cc3ab659fa0eb97df924dc12219b9e0d42df1b1b4944556b","impliedFormat":1},{"version":"d179af5c4c1785302bdf44967a0298b40a055290cbdf49b8b1f6821b5ac45d13","impliedFormat":1},{"version":"715c6cfb5c918ebaf7a4ac12fe7036354c7737ee53f27e953b0c6b32ea5c7fed","impliedFormat":1},{"version":"c14033543f143ff973b992b5cc84a8ec179fbb26c55d021625400bce08693062","impliedFormat":1},{"version":"e0b68ef2073c5ca07054a7569bd426b18eba0a13bfeebd987edbc1c08e9858ef","impliedFormat":1},{"version":"79122f57117b9579f963bf6db860c90f43c61fb3695b7b9709733dd36caacb53","impliedFormat":1},{"version":"4f1ac03c089109e65116ab3c7d6cab25fdb6a39de4261276224e87daad49a416","impliedFormat":1},{"version":"668f9948d2ac4073c890e9085c0a0121e91829b12e7dfff1bc97c2b22febab66","impliedFormat":1},{"version":"95d3f7dbf440ee15105ed62b06ffeece7c6b2e9c8d7cafcf926a02732b0651bb","impliedFormat":1},{"version":"08c35dd9786948e567228b7981fd7fa898635f0ad07dd474d19315a4e4cf8752","impliedFormat":1},{"version":"7c95d753ce060546ccb96db36e36bdc1ee5527a99b81deae23537cc059b728b9","impliedFormat":1},{"version":"f02a70ce1d93ea668934465feb287fdae9fb9fd89ffb175e3641b505d123f1b4","impliedFormat":1},{"version":"ecfa1490baf58bb547cbffd35055a8d37350e5a4555541ef9ca594f296adf0e6","impliedFormat":1},{"version":"17fc7881515e746d2d626fe263fc89224c51c87d12cdd1de0ea18faf297b29b6","impliedFormat":1},{"version":"2676d7da626cfa5bd5c71bb1bebc049e6f2a2b68aeaa3759e052dacaddec2e7a","impliedFormat":1},{"version":"1f252a0e6a399dfcb9c151462a942d3c3640aa024748e2357bc2e50b525dc66c","impliedFormat":1},{"version":"76163722f8e959ab91ff15bec1df8b2af77e12c975a41fe696f3a14fd3850da6","impliedFormat":1},{"version":"121237ae57eaac5ebf646f81cde270eb093e12ee4d3954f9d8595eacdcfd9cb6","impliedFormat":1},{"version":"9a84eebd6e526afc2fc38392b0c507b9c373159bf9565b5a192d53abe9cca1ba","impliedFormat":1},{"version":"1745ce89aa62ddb61b342a63c563575d750207b9951f256c42c15cb825e5df99","impliedFormat":1},{"version":"6762da06aef84aee250f90a6e8d65ffa470c6b5bf7c7a2d4de68077858605417","impliedFormat":1},{"version":"88782e4ead68723b1353d3cbd8eeecb2b88577809d6920714ca3d61f755b6e14","impliedFormat":1},{"version":"95448492f7f7db2368809190d29c7472ed3f6f898614360ec2ded6cd710c5bf6","impliedFormat":1},{"version":"638fd06e4ac9a0f7f80cb59b2acb9ad82d90d4595b791576078500da430cd691","impliedFormat":1},{"version":"532fbe381f6980f5f96c526f5fbb6e2393093ec4a6947af24b2ce4f0c64d464d","impliedFormat":1},{"version":"59262b81348ab6c3b8648eb84d869d359ae5c2ad69a4e0022fd917e936389f9a","impliedFormat":1},{"version":"980bc0f948c0b2cdcdcfce30cb6a67ac7357e9a04a5a5377a4b603ec5ff3ed44","impliedFormat":1},{"version":"08dfa3925bcaf3217ad1cb48e967b334371258446f410a2bfc0647ead3b53958","impliedFormat":1},{"version":"c4de9078f00e95ecf7eae1756d21022683889dc2f7dc359ac1a401eebbccfca5","impliedFormat":1},{"version":"cc0a459bdc4e9cd5fe034a62fa83a8737486b0bf40b11190e82ed4a0d803cd55","impliedFormat":1},{"version":"e159fd8868a308bda44f504d5804f730bbc7f35c7c163c9d3f04d36a1f3eccd5","impliedFormat":1},{"version":"48c16c377d293408b0b9f8ad3822c543728924dc82caaad11d271cb5a43c8b0d","impliedFormat":1},{"version":"a35768b4aa61e5cd551016c91f2da9666c485fd32cb85063a395f55a74932df5","impliedFormat":1},{"version":"60c94b45d32c09deec9a19ba3f7d8f680767992c1724e20386d786ded16668a5","impliedFormat":1},{"version":"d8815d7ac98bac1d4d476b6de5c837913368a909f1d417738c621be550483037","impliedFormat":1},{"version":"efe5226c10cdbdf02bcccdd55ab7eaa546d9d20f8631b71eac14a171b6856115","impliedFormat":1},{"version":"25182a16410182f105e3d4f7ce47704868692d82b810145a1fd9214dd68e39fc","impliedFormat":1},{"version":"5d802fdd246b92e92cceae486384778d2e70099364e3060458ebca3db6c9537d","impliedFormat":1},{"version":"25911651d3fd103da84f2da6089c5796c2cd3bc9b885de8d518538ee0b2502d7","impliedFormat":1},{"version":"b1d4486f4041635f978e24b6aa7aa26a8b1df81ff6d7fe82e8315d436ce4ea4a","impliedFormat":1},{"version":"697ee35ed13099d7b2a3bb7828a581d2b6d1b23574a4213802620429c973ec27","impliedFormat":1},{"version":"595c172dc0edb928be05bac0fc3010d9fe5da4fa92e404083f2749e693138882","impliedFormat":1},{"version":"573082b6780a37ef0f3c4507fa954e09f748f710bc50754437f0394639402520","impliedFormat":1},{"version":"7ae49abce785a8816bbb49dd5fb301ee5522f02014aad1095639a342a4aabb26","impliedFormat":1},{"version":"c8ea14372521ab27bcc17db148bad457dc802b6a7aa95a3e67efabe67831143b","impliedFormat":1},{"version":"8e4209d2c93131a8ea06006841fb7c08043a444071f094927b2e160d67ed3ecc","impliedFormat":1},{"version":"72618877b1e15de4275dfda49102c6240811bcec30e4c9f8bfce889edf18187e","impliedFormat":1},{"version":"3a699715c6b195cd9b7fe96bc4c6482710c5026380ec32ddd49e60a42cd8b9a1","impliedFormat":1},{"version":"13e631d64e1710522bd93bb90235dfbae228d2b6fb762dcf9cba641bd748829b","impliedFormat":1},{"version":"e965e9e03bcb2366b03337dcb8c82a7217eab605f3db90ee942302bf98db340a","impliedFormat":1},{"version":"e384122e4fb7bd3ca8e36b92825508beb73784446e40adc1f747dd331074c35a","impliedFormat":1},{"version":"b331bafdaccff6ab5ea40b3526457cf25f80e3a418958f8b8737450df8ac95cc","impliedFormat":1},{"version":"bc756ad9380c772b2a0090e370516abc6566781684d87560fdc69fd746a22eac","impliedFormat":1},{"version":"8acf5e34281b6896a32f263576144711a1e0c5aec82deb593d8675c18147f546","impliedFormat":1},{"version":"b9876d7df3a4ec58dafa1eeb1e5ae104d3326e5d0ea50fd34e8e67b58e52e98b","impliedFormat":1},{"version":"213891ead7f95efed458988204d6d328fbfa6680dbd071a833e8e8ece091c162","impliedFormat":1},{"version":"42ded6282e32871a3f09fb7a75c5a4fe7b15b567ed26240a9423a66d4b86d208","impliedFormat":1},{"version":"e96ca53a2b2ad48b5bf88acae2eca9b0abc169fc5247ff50b859bcbb1decf17d","impliedFormat":1},{"version":"e498682b4351711ddaef48cf3188cfdecc0283f4f5f73bffdb9cf362a3e7e050","impliedFormat":1},{"version":"ca483bc36f5d4562f841c69ef35ffd4aea406b4279ed20731f09585610e0a802","impliedFormat":1},{"version":"60481d85fed75823dda60351102d97dc8a9da90fa02e3d0a99b87a0bab04e435","impliedFormat":1},{"version":"ee3ed2930c509a2c67f2d5cf2674d4a6492bc76732b3fc68fa7130685e9c8b01","impliedFormat":1},{"version":"321df1633735c87d46c5eff22d8088cff4bc306d1d2ed4ad4dc7a86da66f58ec","impliedFormat":1},{"version":"0d88fdcd81ecbe69ca9653d9d539cdbdb9149c581a21b4baf57de562f8cbecc8","impliedFormat":1},{"version":"fd5dbcb25c0b40f7cef69a0978cb5d0dd024354e8563fbc99ad60ff022b40737","impliedFormat":1},{"version":"0d9e9751713270c684dfd3d0f60d4fb5903ae06ddf5bdfa0f2661b37093f8bee","impliedFormat":1},{"version":"1275c436f0b1b256189ce3a87019fee89f1c7c6194df24f25658ef92d2a75727","impliedFormat":1},{"version":"37fd9ef1c7c0650bf00c918fcee22d682ef3c6976edd858d63d74309afb37f3d","impliedFormat":1},{"version":"ac14166d41facb50f3ef111f7b9e66a5fbb2010724d8bacc3aef62d28c1c981b","impliedFormat":1},{"version":"1b542dc311c5c6c197920545b5d997095d4f81f41fedbab1658ab244db05410e","impliedFormat":1},{"version":"39bb8abea90bd4f0e0f196b26fce0fa7dad2e84d09ebd55cf26f66ed085d4c1e","impliedFormat":1},{"version":"15c3d2438362bc387bc7d7d4f8465d12b292d59d4ae45eb6a5f3a3714aca0533","impliedFormat":1},{"version":"98c26ed17796f720fd2ae16640a41139d13989848387eb78dc1dd4b3fd0c732c","impliedFormat":1},{"version":"1e875cc927e244f0c29c70bab63d90f20e71064565049b8ebffc90552f12776e","impliedFormat":1},{"version":"6129817d361cd2300a08ee34f5fa2b777a4fc90c3febb79c918ed1c40f7a25b1","impliedFormat":1},{"version":"d62158cb30f91935a8d0a410a869a70a6a0940cc2e98177616d74f037688bf92","impliedFormat":1},{"version":"427ffa97d275e77497fad3d24fa95fab369c2cf4709f27620a8673c22d0c151e","impliedFormat":1},{"version":"1a6b8d2e110bc4f4589963c97a3dc4a08b662e59738d59dca2565f7c3b35dd9b","impliedFormat":1},{"version":"451554fa5b756b144bedd2950aef7795728c37e619b141f18ba5efe721aa34fa","impliedFormat":1},{"version":"f63e5fffe7540b043e714c2d9cc1be520fb6fe5b9f8b709eac7523af40195186","impliedFormat":1},{"version":"0315812a5654097cc200625d27fa287f9447b750075cc2d33705198a14066e3e","impliedFormat":1},{"version":"8d0abb60d6f019de7726b136a8276990dbed686409953ad2cf6d79ee8b90d3b2","impliedFormat":1},{"version":"56badaca43104914e6e299612de820bc66a69e43ca7fafd1f340ed70c09cfdbb","impliedFormat":1},{"version":"203d186ddc779e35e7dfa7193735254529d252ef7f52e813f259e6ed479e9507","impliedFormat":1},{"version":"4386fccebced3e526ea7e601e54cfd712b1ad1ac40c21158d053d4bb1e55b951","impliedFormat":1},{"version":"cd965101939d557c184a81cf8e773e31146873382cf1547d035cb5e6cb57dff9","impliedFormat":1},{"version":"c037102606e032569c026474a95c31a63f7d752cfe6d5123e71c09b9fa636d56","impliedFormat":1},{"version":"77588f8d6566b6bac03479322cf55570e8f9eeb8f27ba8b5af2ab907b573fc45","impliedFormat":1},{"version":"522129a86f52ecd6236a4e59be4542a8b2c6a452ec6317e53c82b6ef5840ba89","impliedFormat":1},{"version":"4d1fef84811f86e8ba66ee6af1c97ec67a94d9b74e7e1e8f21a23e47f65b56af","impliedFormat":1},{"version":"3ae84bacbf3da888f2e9faeeec5b1adb9755acaed2a4cde11f2ed34b64201864","impliedFormat":1},{"version":"6df7a162ffc842b6695684de0ee5184aa970fb570a38e702d200df659808fa66","impliedFormat":1},{"version":"7557a2a4e6b0b6a6545d5d65284ebb38bb67d53bd2c0f5e99ad54dea57f67500","impliedFormat":1},{"version":"0d93012bbf9e0a40727e36369752819c387f0a32f30e863c727e9da25b773f6a","impliedFormat":1},{"version":"ed6f91479c0538f25686a80ac97d4b485a3f0f8b06937dcdbd85d458f183db4a","impliedFormat":1},{"version":"84e25d7608672366e55fe39acb592e228f6819686c208a7cb4dfe46ebdb1d6be","impliedFormat":1},{"version":"949ccaac85986e407f0fb6f02519070804470897d50f4c29fdea344f714acfe1","impliedFormat":1},{"version":"5e63b02f4474647dc7bc40d809695e3812af40a0a05b72f23729983d97d91c91","impliedFormat":1},{"version":"86e11b587490cd8365421eca18966a59d89cd4846d5a84a6a0572ee283513902","impliedFormat":1},{"version":"c3dc0d9cff2d4456c574888110720b7a9582282971b907865e323356786cfb42","impliedFormat":1},{"version":"952fcddfcc7b49df167140b9f81b7c62cc6ef29dcd4fa5f12dc0f4f13ae98240","impliedFormat":1},{"version":"e93d9a364b61d50b9ee14554b5f48ea46dd8c557b94bdd637b196afce4fb3e69","impliedFormat":1},{"version":"9d6b766c92985ca30cfc521ca650d1007c9986f8fb8b9dae720d9f55a0f3d351","impliedFormat":1},{"version":"7bf52da3f2b777152c701a9b4dc97008ab0a0f9db3311a2057fe041e021f5f35","impliedFormat":1},{"version":"42feeb1901957dfa282e8c1fe359fb42376abb894e609628dd9cb1edbcef7b5b","impliedFormat":1},{"version":"2e0840eadf33be01dc61f4f62887a8ebced1b8008610885b777265cd09b5a22c","impliedFormat":1},{"version":"f1bacabb70c87fe9d05595db6ec80afb0c16f0437e9b3c01c8e860e3de342a81","impliedFormat":1},{"version":"a82fcd992077e23a2b8f34a245a5785eae074a4c4cf00e295ffcc7e6fbf2b18e","impliedFormat":1},{"version":"7e847c37d924926f5540e2db0362e46e520334823cf889557d2c9a5c7fc7dde0","impliedFormat":1},{"version":"42738fe88686c67006137210788ff9013bcd961e494f015f3aef70ea663bd6e1","impliedFormat":1},{"version":"76703404ab0c7442e3e1920476f9540fd66c1367cde3e98bee8773d20e14d214","impliedFormat":1},{"version":"848670bf9aedb7ed67960ead4edb7a422a9add15e0f18ad3fbdfefbb47500d84","impliedFormat":1},{"version":"168150c074102ffe35603b43705a4dea7660cf01c88dd88740686b943a61acb0","impliedFormat":1},{"version":"900f3e87a9e7270634bbaadf57ec15dc3f02db69d25f9bb325c7c8f99303880e","impliedFormat":1},{"version":"aec5946f6fbf0fe023537cdf7f4f904ea76ffc8976d508d8409da52d0ba6e1fe","impliedFormat":1},{"version":"5b51d210d61b20c944cec24254d20110ef279b79c5e457c16d35395e979aa371","impliedFormat":1},{"version":"547bbc28cbca3e4e26af6b00ac131fad91fd0bef3ecd56e204ba1c66277a27f4","impliedFormat":1},{"version":"88730dd27c119094a269b3319036c4d60adacb10f819e9f0817ff1826709a42e","impliedFormat":1},{"version":"09efdecdb0a3f448be675d83b687d2f6e1d0f6bd756ec36fbf430b2c6840ee70","impliedFormat":1},{"version":"46a4c5544edc93b22ec2d704197c5cd684e6ac5ea491dd9b33ba531867e94e4a","impliedFormat":1},{"version":"a40299fb32c3e734190df64c5e577983616d988f9a0661d2d8092fd66db53634","impliedFormat":1},{"version":"5c568ac086f9156633b8fe8c85366e2d90de49914c81fecc8f0409605459a22e","impliedFormat":1},{"version":"072edfb9947a2eeaba872bea4a2b22a73ea932d51f8c9b19c71c7345a2a636dc","impliedFormat":1},{"version":"a88c164bbd33edea01c4934613ef625f946be8fb7e7df876c7518e8d8b258b11","impliedFormat":1},{"version":"11967bc391eb0ec437202643f3f8cbcdf5e97439cfb4af8ab5215f9be37abaac","impliedFormat":1},{"version":"cdd01be7d5d7cd2388607e6e89bad1dea3bd6d5024f67dd03bc9eabb8f8cc7b2","impliedFormat":1},{"version":"b0417940c1c63dca7f33dee7c7c0851b3443f0b5a12d385b562f1cb5c39720d1","impliedFormat":1},{"version":"cdcf2268514c3b52d909f39fea338b3d670b9b2145b66306e362e59ce921394f","impliedFormat":1},{"version":"0dc8fe7d045ef79a8d61e221b76dc5db793cfedeadaf8fa8bdbb4a717a6b978f","impliedFormat":1},{"version":"bc12f789eea7c7667dc8c1a6664600c696783cbfc854480db157d2b6b9ecdb59","impliedFormat":1},{"version":"75b4143645ee1d64a23f9d18a3ab534ff6682379dc2c239c947f0f83c0e45012","impliedFormat":1},{"version":"fd745003aebb0f7b47e684ba22a118e0d59cffffa86a097714933b4f613aa08f","impliedFormat":1},{"version":"0971815c5614f9c4d36d55a3d1d4a45f062e78cc9a3d97ef6a3b23c86b665475","impliedFormat":1},{"version":"76728d3561f3d4f3e8810fad1178ad402023d55e8a5c5da872303bc8e9c4d79a","impliedFormat":1},{"version":"4acb6230f22875f6defa3584d10c817831affb136ae94f5d2c0d9457b7050936","impliedFormat":1},{"version":"f4e5b51de3c73f0f093739ad5b4a1214d9d8ad3b3d6d01522f1ad6831d60f80b","impliedFormat":1},{"version":"4ade309af02a50dc157394ee7162c88476980b5efb0aa7304d6c618a0112a89e","impliedFormat":1},{"version":"2d3516a828f8ef63b2f2eb3ae1f0570265744df44d6eb9fbe8352bd5ab7f2a62","impliedFormat":1},{"version":"f78edac82d00a3d169adcf1fc70c705be387dd2c18be7d6a7c1e54ef084cd641","impliedFormat":1},{"version":"1f11139bcbbebe3283f0a33b647aafbf272afe86163d9554fad80f6c040b64bc","impliedFormat":1},{"version":"ee0fc780ee45cff7ee13c49ed43d4875c0155da4cd17735113611db6a1665b1b","impliedFormat":1},{"version":"b9e1050114f422013d0f534b4475cdab7126b7217af20f15bdf83cc734d1ead7","impliedFormat":1},{"version":"e231c9fb03ca8893b43f055c5d651d55e189b48ad9351bd2729720671790cd83","impliedFormat":1},{"version":"a97a804c84d0cb7b1c015bc06a005613e1ab5ce58c27528dc9f00fa6a8655f28","impliedFormat":1},{"version":"090eb938f60728f4bbb7f94f6ef48ce4481bf9205aee390c4223ea9acef7a780","impliedFormat":1},{"version":"2348b5c42c8dc9255e5ed9029c102c3f37d25f8289d84b4c711d6fcd3548a05a","impliedFormat":1},{"version":"3bf3b2e2a29b895dfb42b380f61bb60419ce9f733eb26f61809b589de790fe49","impliedFormat":1},{"version":"c8d3fc06cc42c173a363bbad4e392a325867812b47387d1dc2940ab555bfdadc","impliedFormat":1},{"version":"f8890f41d665b98dbc2cfce66719aa64c358af705b183a7f682a5229520e0fde","impliedFormat":1},{"version":"9cd88c0017d85f46e694a13c201bd75d7c404c5b07615b2de57739d645988618","impliedFormat":1},{"version":"f8dc4c538eff6d92330223253dbd66c4354324f411b39de2b7fa520fe41b658f","impliedFormat":1},{"version":"2407b5c4ed19bf2edb4a7459c672627003236d0912947e2a0b03a7fe353c85d9","impliedFormat":1},{"version":"506e91ebd08f2cc0b49a69568329a51bedb0d9bfe2a9417ed1a9b3481841ddac","impliedFormat":1},{"version":"f63da73a8d858871cc7aafaf3146347de5a3504ab99667324172edf79622ad45","impliedFormat":1},{"version":"b877adbe66d8db5350fd60ba62ffb7f9f1e185709f41cc6c79e26314656e7966","impliedFormat":1},{"version":"ff3d1594665d0ea1e8e3367ca1be065cb29e56b544a98ae990150806381e26e0","impliedFormat":1},{"version":"24dcc6ab1b47dbef6db80f0d0406029fe49a5803e6b3a6a2733ca097164839cc","impliedFormat":1},{"version":"76ee5e01370001a08093cb98e98beba007176e5c8c0af5b3b17ad1b8470d3c87","impliedFormat":1},{"version":"1f8822081ce52fdcf13d2ab47d840ff28216abc2ecdd8b3892b3d8dcb66ddf4c","impliedFormat":1},{"version":"e266998f32d1e7bb4127d9e87d48c84d6aa5200df46e1266065f54d969cfa699","impliedFormat":1},{"version":"742ec7d93e66311678aa6f558561245b2e12399fe6a98d849944f161ec6a857a","impliedFormat":1},{"version":"c953ca81f374296b0e0ad9307f854aec1cbd22240bd7676e852c31bbf84d33ab","impliedFormat":1},{"version":"d2380b72ed2f0e19af8291a6e1ac6aa7a60e6ad455d838705ee3b4bf667840b9","impliedFormat":1},{"version":"25d84120721134c846a8733a46e05903f3b109937dd819e5ec41ac8af893899b","impliedFormat":1},{"version":"09870b1892653e3854208cc345b6a7f055a875a06fafbff9a1888abc2ba1a404","impliedFormat":1},{"version":"437c2c7fb5da8738335aa9a739ff4e797039504fa6c5cd10664dcd1f30577095","impliedFormat":1},{"version":"a9d20cf42a783baf00f171b23f89bbc28e5101c2eba461f54708e16ee20a3d4d","impliedFormat":1},{"version":"e54407eec308c19f8e3992c66bcfc893f4b1f5aa478f05a55de3e348ee015c69","impliedFormat":1},{"version":"815a703ea91f25df5ea36696478f59b242f625f45fad37c6873c28c1591dc031","impliedFormat":1},{"version":"07af686616d30fe4caecd19ba83f2b5830e3633f5994e027de90daed22e07319","impliedFormat":1},{"version":"d476ad2c31b6a37660a3b0d90cdafa6cc70e6da342f70f92c8b8994da9606153","impliedFormat":1},{"version":"c601ed82e8c11c2d98fc04da79201eeeb8c6f95927e348d5497bc0c2ad85c6b5","impliedFormat":1},{"version":"7803117fcb92af605e9d0bf5aab04f8fd5959381e0b826ebb05365ece4868ae1","impliedFormat":1},{"version":"025a8cef62e0fdfa4c32995a93e3ddd4f9d6e726477e753781e99179662b6c58","impliedFormat":1},{"version":"dac9e0310cac6c0d3815208ed585b6ebb2a19ed44536d04ca5a2cb81188906d5","impliedFormat":1},{"version":"329dbb853695003974005f642063d2ab083d8c06f7d8f3bb2cbb15f68c892487","impliedFormat":1},{"version":"c1cbd9cd690158fefa1c7b8b285c1862d4064cc61eac7226d937e62ed01db785","impliedFormat":1},{"version":"1804788ef733867ea378a6e571eb60d92ea9ba87ce23f9aed8a6cc5a174f5471","impliedFormat":1},{"version":"d5c6618af14518cfeba225d4dc6180271a423e24bee7ab64eaef5c70bfe63992","impliedFormat":1},{"version":"2abd00c6b8e284cb92d2caf3f93f3170729d68cf4a51fb53ff92078b1455bfb9","impliedFormat":1},{"version":"c388233f176333d0ba84350a79cf88f1724bddd685b2eb9fd9d62533f39850a7","impliedFormat":1},{"version":"85388e4257101bfe0f0e5ffbba40fadea704e576d64f2e83ac1e8f042ec521ba","impliedFormat":1},{"version":"7ffec597c82ed1cfb06d7ffdc36d71d77a564bd55eee6a2cf9c72384736e3726","impliedFormat":1},{"version":"6d72cd0e28e6b157b2b21131891ba29ef596f9d3d0463316955a1ffc4a5c89dc","impliedFormat":1},{"version":"72037f13e369d619e0842119af97d6f6905fc470124ba627c44773aaacae9ba7","impliedFormat":1},{"version":"bf8c812958db10404d946309002674de28f9e300416d7b39a773c98bc51c7475","impliedFormat":1},{"version":"94f3baf5e3e2bacc4d21f9308045913aefa2ef87b44153422057d074d5f7084a","impliedFormat":1},{"version":"293d1aa6c28408e0bde5e4d0b55b9be782e00e2f702d4044530220314e382685","impliedFormat":1},{"version":"e79c77ecfd439075c20dcf9785bb7255706dee26ff6431673932309a2ae624a0","impliedFormat":1},{"version":"f18ba2828d2c1bfaedbcb734d561604784d65fda9d290fb93bdf71015549b920","impliedFormat":1},{"version":"eadc908b2f4e6e8edeaf0970ec92a47129c289d5b4e19bdbafd6d6f70bdc907c","impliedFormat":1},{"version":"407a11241e9056524e24ffb7899d73e819f8d44010db091d473acb4348a82cb7","impliedFormat":1},{"version":"60f9fe665ff16131a8f07a38d2b4277e96a7b11049deaa1c2ff85b8b2cb08abd","impliedFormat":1},{"version":"121ca5c164ad18f6fccd49dc61333dd06ee8e4984c4b127c59744c2d6ac953fa","impliedFormat":1},{"version":"da883f2b97696813d06993a22351cf2f402fcaa29dc446f62fd09b05bf12fef5","impliedFormat":1},{"version":"48964bec72afdd3809f8bc1d5df95f3270e29e03c8d315685db3636535e6d3d8","impliedFormat":1},{"version":"6e13dd30ba8a2a783d41ff51896cbf8a310ebad22d06b9206ebc8ea814d1c440","impliedFormat":1},{"version":"1174c675811ff10caaab514bfd3a7720bdc8cfba524a0eba62d8c1c9563adf80","impliedFormat":1},{"version":"2066017f176fb877854da8afa1585591c67963597af3bfb828974547894e850b","impliedFormat":1},{"version":"0fb7ade7ade491a02022472999f472f84f304f4738a19f2efccea1551a13101b","impliedFormat":1},{"version":"b38bfb03cc99b72e403ce60382cb45bc9467641181a1dc775ee4238dea847b5b","impliedFormat":1},{"version":"f0c93c00af504f52e837bdae5c8d0dd16eb0358372a90bc03fcd2096f22e1e93","impliedFormat":1},{"version":"89e015b6421345ff59eaeabd2ddfdf4d4efc53fadddd0dfa6fb08791d4bc5396","impliedFormat":1},{"version":"275c59e7cc724033d8d962a68b604a827ca1d93ca63da907622ba4cdfdd138d0","impliedFormat":1},{"version":"6529e78e442adf060c2bbc460d4c585d8fff553eb06a09b6b9d4defba6a3e4bc","impliedFormat":1},{"version":"64ccb0668db4982770ccd3eae9982e9236d997f7848549968a59c06cfb2a8c85","impliedFormat":1},{"version":"15f4992579aef55c498805517266560cae989c94570067eb6f0bb1fda8db3e1a","impliedFormat":1},{"version":"1a5cb4225b0e5e65222f89d3ac4f11e1341c84362c34f64573e59aafdec65232","impliedFormat":1},{"version":"85280c9fd80e289ca3fb7cc176e7c56bd1b59cc87153e35b4ad67343a16963e7","impliedFormat":1},{"version":"69ec7481d640752a71598ad9e0cc9c28fcaaf3128a8e56e9f22d09aa75e48aba","impliedFormat":1},{"version":"f1c203586ed60b44b1b54f2d3d6d5489a32a3d08cd9b8430c804edb09374e29d","impliedFormat":1},{"version":"396b9cfbf84f6d62c56eb78313118d33b2b4b112c65452856049b234e91ea782","impliedFormat":1},{"version":"beeb53644fb37efb6c8fc859d7df72d7bf9df52b027169ce087f8ddb8fe43c5e","impliedFormat":1},{"version":"0b10af13b23b16a86decbf9dced96c5412e742f1e1cbbc7e38521f3272699a18","impliedFormat":1},{"version":"5d8912088adc90f54b80df0454cd6b67c1a4a5c08b45e42f6306414f92179e58","impliedFormat":1},{"version":"2bf6f81bff3aec45692cf7df2ec4f6bb955c15db4d7a0b16f5fc0aca638642f0","impliedFormat":1},{"version":"5e1ac93dd33dabf032ae7d26e7d376e25dcff407b285ebed3f08bb440b5a21ca","impliedFormat":1},{"version":"9cfa1b7b61b310b77c8291afc7567f0269982273f5c1c056ea2a6594cc966d74","impliedFormat":1},"34a34be82c301bd36b11967f64793e25c452f683f66eb63a2c9b9382291013cb","212f48de57c8459697680ebcd00c6f6e3b4938a5868e0ee67d16120c06005fab","7a25c2a8996260ae0959bc33b7311de3a098a4e4c250b213ec425d1d038b6280","67faf30978b58f810624c8e9b2fa1e5758fe9b5b400f2419f166721b16e3282c","4d5e09bf879145dadc2707ff2c877c702cad5de8ea5b6e0eb4ec29d4fe9bd3f4","f489209d1449424ca707ef2852f4c732cf3e568c5aeab21cc37c67f4c401ef1f","34c2a35ec8db5ff54fa86d806b8540cd330792a1a977942ae2c203df2411ee44","e878d835f888a25df33826880ab51b23dc0f3a145ff522dcb6df86c19749b479","cea4f6104c14a2de217034c55d5e0c5d108800b8776791277bec0f3a491d6c7d","5d59f5b83155be3893bb5b8f6bd3df7a85157dc2184b21442b5c104603149ea1","aac543d234cd796c6a6ae3a76cd9961480d5b22cd00dc1a64c4a56025310c212","437755bf7362625845340e775422362c249132b5ce85bad8e0863de1442c1ea6","a2325ec154d19da8a7231b9bc4c615650417258d2f887edc0c91f9d9dbc255bb","b8e0a9ce934b5cbdaf505c3028677700753443e9766ff07734db197abf42200b","cee3a191eb553499713a69f5f4728d3b1e917ec9423ad976b4bb576dca530245","29771068febe7e8f360713fbb4f2d0142b7220f099a328759f3f5339dddc460b","100ebc14d3b3f2d9437681da4e37ce15eecf8d0bc50c562f61d43cbedfe9dd89","89e8081e7bb10a1985583264b6772b401c888f0da9efb63deb3dc671bc730900","83b2471c82779e1444b63942a2469bf40a155ed4e646dfc9e1583772ef1cf554","7121f8a3d7143ca81e758e5f4924bb60730a03268151ddc0688f144b03d427d2","df1170274f174c97b713e922dc2b14bd41978f0b128108c4f1d8b52c5ad750f9",{"version":"73a0ee6395819b063df4b148211985f2e1442945c1a057204cf4cf6281760dc3","affectsGlobalScope":true,"impliedFormat":1},{"version":"d05d8c67116dceafc62e691c47ac89f8f10cf7313cd1b2fb4fe801c2bf1bb1a7","impliedFormat":1},{"version":"3c5bb5207df7095882400323d692957e90ec17323ccff5fd5f29a1ecf3b165d0","impliedFormat":1},"242d2da324880332769e3302925f3db9ae112f1fbee32b877f48ee86ad030891","fb402f271e513395909e4074fc569d1b15d1e06f343af3ee9571ffc25a3f047b","cf6141331e337e09f4fd6cd8297af4a54e606a9f9f26945a09302b335b03c2e1","0b5086f10b4c808eb6d57ffc8e682c7093b3b5172854fe2ca7497b48ad85b769","679a0f3e894d5d408147a6bf9e2112d47312b7d303d0dd27b403c62dc24ccac3","22544b339213bdd7af6899eee2730a28850900acec2117e7d237149d9cf45a6c","384d53819d8764fcf034acb61dd5e0b882a508a4be079e78a25622ef25c62f97","cca8499d96e4f5780d93adc94af96c4b5ae79e427ba0a9116a10a8ea00273562","56cec9bef9b96ee62a7999a618a728d633cfade7c59ca0d56ff2704b69ec7c81","a28136f26720706488db65c5c52f3645079dd581645d3ca810ea3072b6e6b6ab","99b36a6ea4e3ca84501d637d622a29a910ce014d8297be057c560557e128ba8c","c7fb0a48fcb8cb3a72d6cb6837ff92565cc42317729ec6aa0018990492e5b004","9ddc3dab94e0287994822df05f09bd9cf417563fe24b290decad01c0d2eb80ca",{"version":"52f5c39e78a90c1d8ed7db18f39d890b2e8464a3f44d4233617893f6648e317d","impliedFormat":1},{"version":"9891b4e49d435c7ac14fb3cc769e97077bbd946100c952df08eda117c3b5b68d","impliedFormat":99},{"version":"2d45f7ff55036e74513af142af1f414924ad337cc00e612bb37bb55473c70b30","impliedFormat":99},{"version":"3a6b10911970b0588c5a287642e4c6be91c16b96407a499c6dc81a96daf1085a","impliedFormat":99},{"version":"6392353adcff7db02a3f5dcacb5637b791dbbcb76125aac3075da2519af9785a","impliedFormat":99},{"version":"1f3952b74b8c766a2e602a0ba2db19d3d872d00bab4e01746c6b7229c585086c","impliedFormat":99},{"version":"19726a169a4000cba269c284b97043faa0593de45865c43553c233f6825af0fb","impliedFormat":1},"92f966f8184f9cc5f531fdaae3caeabde238a82d783e50713eb015d70e187914","9f44604e67cab8b4618fb0743d41ba9aceb886285f0fadf7fd6c6ef2f3ab913a","19e1a22fe32da3d48906bc7b8c517ada6b58ee44a030331d469155a8af66b348","23154637425b907a992c377203f4c618eee4d12421ac52cec263a83b8173572b",{"version":"e6d3677b68ec40e2898974e8cf7eb3599c35012d2cf5236289d762ac64909aa3","impliedFormat":99},{"version":"f136e76a35d7b96a3f826ba6250b2dcf984aab4583006014e9e091d36fca490f","signature":"d2022ef4d860a53606f63435b93c0a7547990e8d8b88862bd2eee8ee9a4ace0c"},"aa0e467a4a77ca517ff1ae8282f91f4ddb28c3acd441f93eedf1aabd07b68b41",{"version":"adf20cc38eff5b498d071cb684fef03bd46a419c65cd33ce39a2308e33cd84ca","impliedFormat":1},"31a5ddda427bd1fbb2c7fe1ca559db8bc393d7f42592452f29f4928603d6bd92","6020c483cbe9b111c42dc146f31f3c269fa44f9666a7bb289f33d4e1d415a5f4","c9d1b88aa2c8cb759d8592fa78e56015a156cc8fcef9acf694d49c646076eda0","a58068f7fc51a4d70f59eaa8d9f6b79440f71287c3988707f6d82e8493cd8c47","baf0f41a91dece70a701d19fd82b1b54c48a22eb94807f9bb0718f0252764aff","579b34fdf9e3f0a6229729e86cefa990d4c9653025a9260ba0b029d04e28696f","79acf870259d9ea9915fd272eb3ca5709361e8a86f80551588c1c97da9dd33b3","a4e143cf77873e6c0ae83b4015a892684338bacaf91ec384803fea0de1c8917b","a98f4bbc7a5f4f4f7df0f1f7cba27eedc34d3852bc4c8d6eaead40a106341848","9c3d1ca00d7911dcd4ad62ca95be97bc253099773a23f452d2f215d235c2a18f","08c8705cd2aba74079347b327a048c0f427024789f41cd6bf732a636f95d11e1","f4a266cbe60a450d84f26445962f7a62e52e73e2c82bfd2e642ebd07cc97f426","f1c8cbd870edf8abf542d3a9eaaf15540a37e9248e4ff06eb0643986e0f4d82c","de454fe663b6815d06e3512a1ca1af2a1f28a2534aa8a997b0ed2b5217dbe836","6fd221dedf75176a02b338de6a8bb4ec34ef023d84d5d95a534ae6d68b4c70d7","6ee40b6eaba79cbc7afee85496d30aa48b50d23681582fdc1839642e8187e6ea","edb9845bc23f34e9718510206fed90eb7e010633a08e91bf92323d5c938435ee","15cc4fe15f39c26f9d5d3294e113e29837ace90ad116d94b5bf771d7a0a8dd8b","85e3edf11c7f4cd1fe2b2b86df607c87f437aafd43eced2141199736b7879dc0",{"version":"c9c42d5948aa033c444cb6a3c188bcd925997bcc2bd8e97928af480ee356417f","impliedFormat":1},{"version":"f4bb2d3708ccd853dac13f97ede135d721bf5c2586f73ab8f1170f439e44b5b4","impliedFormat":1},{"version":"fd5649816766f52b1f86aa290fd07802d26cbb3b66df8ed788a0381494ebd5ed","impliedFormat":1},{"version":"269a13226bf6847c953f01ada5aefe59a3963a3a74f98c866ccbf08679d16b86","impliedFormat":1},{"version":"b769494ac41040c4c26eb6b268d519db4cc8853523d9d6863bee472a08f77f80","impliedFormat":1},{"version":"2fe42f88e2d318ede2a2f84283e36fdb9bd1448cd36b4a66f4ead846c48c1a33","impliedFormat":1},{"version":"cb403dfd16fdbdfd38aa13527bcbb7d15445374bc1c947cfcc3a9e6b514418ab","impliedFormat":1},{"version":"60810cf2adc328fa95c85a0ce2fd10842b8985c97a2832802656166950f8d164","impliedFormat":1},{"version":"de54c75cad3c584e18a8392a9a7e0668b735cd6b81a3f8433e18b5507fd68049","impliedFormat":1},{"version":"c477e5c4e8a805010af88a67996440ba61f826b1ced55e05423ad1b026338582","impliedFormat":1},{"version":"6b419ab45dc8cb943a1da4259a65f203b4bd1d4b67ac4522e43b40d2e424bdd6","impliedFormat":1},{"version":"a364ff73bf9b7b301c73730130aed0b3ca51454a4690922fc4ce0975b6e20a33","impliedFormat":1},{"version":"ef113fa4d5404c269863879ff8c9790aa238e577477d53c781cdae1e4552a0cf","impliedFormat":1},{"version":"5bfa561404d8a4b72b3ab8f2a9e218ab3ebb92a552811c88c878465751b72005","impliedFormat":1},{"version":"45a384db52cf8656860fc79ca496377b60ae93c0966ea65c7b1021d1d196d552","impliedFormat":1},{"version":"b2db0d237108fa98b859197d9fb1e9204915971239edbf63ed418b210e318fb8","impliedFormat":1},{"version":"93470daf956b2faa5f470b910d18b0876cfa3d1f5d7184e9aeafd8de86a30229","impliedFormat":1},{"version":"d472c153510dc0fd95624ad22711d264097ff0518059764981736f7aa94d0fa6","impliedFormat":1},{"version":"01fdef99a0d07e88a5f79d67e0142fc399302a8d679997aac07a901d4cf0fc83","impliedFormat":1},{"version":"ffcbdda683402303fa8845faf9a8fbb068723e08862b9689fc5a37c70ef989b8","impliedFormat":1},{"version":"208c5d0173b66b96c87c659d2decb774be70fb7a5d5af599a5d05f842b2e8d74","impliedFormat":1},{"version":"ec3b09b073a5e8a14fd5932cc4c33efaa0280c967d15bbc4c0c5b73a0d2f1a68","impliedFormat":1},{"version":"4b4c884e11985025294a651092f55dcbf588646d704e339674dfe51bdeead853","impliedFormat":1},{"version":"78c8b34f69c45078c6a3a3f10a24f1a03ea98495b6d75b945c1a3408a3ce5a26","impliedFormat":1},{"version":"0b1a08da571520eb288eb75843aad95d07fed423aba18b1149b5a0c767baf688","impliedFormat":1},{"version":"9c4708e703c8deb525e95946b3fdd8d5caaf724b3ac4a1cd6c2cab759b53f76f","impliedFormat":1},{"version":"ed14fb238769ed0b0dff6b78bef5263f0f50f403878ecd609fc71774b2113b12","impliedFormat":1},{"version":"59405847661d05bec9243efe9498211cb7e66d2620fe946e40750ffcb9e7d56a","impliedFormat":1},{"version":"ef95961bc90e8972bc9d88bee5264544d916929c0240e8c3c8ae220568b26ead","impliedFormat":1},{"version":"3f64230713c989e5f2d1d46c13fc8b2d9193b5dd59d393d5e70098c221894b1e","impliedFormat":1},{"version":"e49eeb0f93ea6a311a22f5b66a155c368e9cdb3585695fd951945df1a4192eb7","impliedFormat":1},{"version":"6f704837b406e4ac6ec5942018691ecc10e2d079cd64706d8ed1e86826d0671e","impliedFormat":1},{"version":"ee2229f4fc2d2306c864e5c2399aaa5958e4b3e1c964701fb8a84709237c9f47","impliedFormat":1},{"version":"6e5563614d424223f4748c6b714e1e197c8422824ff42fdc16f64484e1a863a6","impliedFormat":1},{"version":"8f31673ebf988cfc4b7ce2adb6a6c489dd748025600d8e2b7d922f952d7d21af","impliedFormat":1},{"version":"fd3715f87964b5fc26f4c333422969da8ca45e69e3fb6973ba6c806f437eb012","impliedFormat":1},{"version":"97b1e695f57dd56a6495f7bdca876981cc8db1cc4a555c3964aa14ce26e0f4de","impliedFormat":1},{"version":"cf32c06d23f373f81db3e93d47b7006f5bfc005df4d92bf5407b7792adcb3c47","impliedFormat":1},{"version":"eacc624e44f4b61dae0502e59ca5c0307dee65e7c257ee3eab4b2c8c6f156cd9","impliedFormat":1},{"version":"6041c1c22cb701abf3d98f153f878b12280f3b2213144588209b66ad5f5915dd","impliedFormat":1},{"version":"d95c6fb6552ca855ed11cdcaa5c68ad484bdc6325fd86fbadccdebfe57ed841b","impliedFormat":1},{"version":"0063b3ff097c4542be10322c67ca804e9e4504545b46ae8d620ceab59349ee84","impliedFormat":1},{"version":"9ff44b788f5d8d86f6fa34abf3faec8c425ecf1838248318acb0c5a4c88e62e7","impliedFormat":1},{"version":"4169cb216a6b361ba3caadf4a13670354e2a68ce055f4ec77ae7688902d2ab2d","impliedFormat":1},{"version":"e642a86d8e0956bb7c76aec21b83bde20409b19eb22786ed72ac5515aa9268c8","impliedFormat":1},{"version":"879e2a34d0139f04a32974fdfa44c5720619afd28f8bde0e5860f371d5f65d34","impliedFormat":1},{"version":"8e04860bdf072d4270b09b33b2b91ec4545297f23cc580041cad3e738f58d92c","impliedFormat":1},{"version":"bff595611ce25571f0cb50a83b7dcd7599559d6d3e98bf4fe87ad77b9c347664","impliedFormat":1},{"version":"2eced6af832d4e69811e353c7751f73bba07dc3b63189e0fa963e8264f341c12","impliedFormat":1},{"version":"a884b3560c8a29e5cb7f1263d880ff5c8b017991009edc20f450027c4a112b3f","impliedFormat":1},{"version":"6775c3e28d13ee126ec2c2e0827ec76422b0e11d9d5c2cfdfa7b982d48455fff","impliedFormat":1},{"version":"2ab0ffd4cdaff94c5cb8701f34442f8a018a2b62623528a66ad1ad8172ac6626","impliedFormat":1},{"version":"ea8215cf7cab1015579eac88e2f16fa1fabbe9f84ce4d2848c10f36d7df8ca1d","impliedFormat":1},{"version":"cc894fd562a73055ff72dcb7821729cef909b85bca4d0e2e2cbd0c1a2ecadeba","impliedFormat":1},{"version":"ab058bf3dbdbde6571f97a57a3b52b14be9d7e19f23190e9a551d5d6f6b6563f","impliedFormat":1},{"version":"142892cddebce23312318d79014de94e64a1085b8b0d73b942b4a6ce40a1b18d","impliedFormat":1},{"version":"db84257986e870ab22b304a80b02ea5e079c13a7f7be7891c0950bfd9e33f915","impliedFormat":1},{"version":"24cb43d567d33ac17daaad4e86cd52aba2bb8ff2196d8e1e7f0802faeeb39e95","impliedFormat":1},{"version":"dc6e0137694a7048ceba1ce02e6a57ab77573c38b1d41b36ae8e2e092b04ced2","impliedFormat":1},{"version":"aca624f59f59e63a55f8a5743f02fffc81dd270916e65fcd0edb3d4839641fbe","impliedFormat":1},{"version":"ce47b859c7ada1fbb72b66078a0cade8a234c7ae2ee966f39a21aada85b69dc0","impliedFormat":1},{"version":"389afe4c6734c505044a3a35477b118de0c54a1ae945ad454a065dc9446130a4","impliedFormat":1},{"version":"a44e6996f02661be9aa5c08bce6c2117b675211e92b6e552293e0682325f303e","impliedFormat":1},{"version":"b674f6631098d532a779f21fa6e9bdfca23718614f51d212089c355f27eea479","impliedFormat":1},{"version":"9dbc2b9b24df7b3a609c746eaada8bbc8a49a228d8801e076628d5a067ff3cc3","impliedFormat":1},{"version":"d6ea60339acf1584f623c91f5214be0ac654c0692c0c3abd69a601fe0ff0e165","impliedFormat":1},{"version":"d08badb0bbee55e449ea9ea7e7978cc94859804c49bdc7dc73e25d348337c0da","impliedFormat":1},{"version":"b116a03deacf70767f572c96a833e3c1adf01fff5c47f6c23e7bcb60c71359ba","impliedFormat":1},{"version":"023aedd02204fce1597fd16d7c0f1d7be13fcf4bc1ed28fb30a39587715ea000","impliedFormat":1},{"version":"b18adf3f8103e0711fbe633893cfbce2897f745554058cffa9273348366304d2","impliedFormat":1},{"version":"f41fbddb4a2c67dbf13863507b50f416c2645e7440895ea698605541d5038754","impliedFormat":1},{"version":"636a0fc7a5ee207de956241b8cc821305c8cc72b9f0bec69b9c9de15a9eafcfe","impliedFormat":1},{"version":"c326f85f762b14708a25b9f5c84691562f5cf39ae9148c00f990b8b4a2a4461a","impliedFormat":1},{"version":"caef5b191982cd88619282b10e1c52c3cde8c81d4eaf4650b4e62d73f77483d4","impliedFormat":1},"e038e10f5702f8e244cf0536b5a100c3f2b149f7631d5c9d0a7f928e26574a12","4e8edf729e0c2a04169b79534daf9b66f9976173a12c8f5339c80b9bc23367ff","d2a8f67c03a19b1a2756a9203f0f4b37cac1cb53800cd6c8153780f2ffcb837c",{"version":"9ff194a196707954313c197ff74831edf396ee89f6b6e50cd5fe9e07b8d7d46b","impliedFormat":1},"6bc6ff00765d1ae58ccf41ffe70ff858568151b80cb5d45937dd234725bddcb9","7e02783dd585896e4d934743044105b4bf7d98fe9ea128b3b2be8e7862cadb7e",{"version":"3312f7d9eb01483f9e392733e461f06755fdc624b5f2318e01f686a6a036ed7b","impliedFormat":1},{"version":"34491a67ae33c8bdacec1f4c07008f01d2ebe588ed8b7b1bd8f940f5fe953f2a","impliedFormat":1},{"version":"cc0e6f2705c8fd9eb831790840c08be6a3d3108d7c7043c4a1c0a97e3e9e289e","impliedFormat":1},{"version":"273928f388427cb6d6859c6b29d760de7612a110f8a50afe092d3a6440ed0cd3","impliedFormat":1},{"version":"54db43f6a831781a4587d81802277a9686bf34680c586fc0496e32088f2d8942","impliedFormat":1},{"version":"0f53259dab3f0531bfefb89211d4be171821c855980a843b396e9dcf06ab23a3","impliedFormat":1},{"version":"b1b1faeb576467d84ffaab5942f6bd5a024bb715dae28aaeeb22b37cc0f17030","impliedFormat":1},{"version":"a7380d88b8153951784d10b663b949986aa02c238d7aba129d378bc8f0bd2900","impliedFormat":1},{"version":"2110f6c3b26b0d0af8f4d0d7bf8fe89cafbe2a200cc2187db2e446c57628b67f","impliedFormat":1},{"version":"b2d0ca3686d89f74053a1d0d90e8088b9d48869c9814db2cce4554585c83094a","impliedFormat":1},{"version":"6491db94d895853640fd0c6814aa5decc2458a6085193abbd7a83a0a65736a30","impliedFormat":1},{"version":"ce8cd3fcda8947836cb52af1f9a5958fb9cea1ed5eb53466227a82c079ba5622","impliedFormat":1},{"version":"5a081b7e2596e450b5bbcd5c5556806b85bf2c0bdb6b7fbcd640dfa6339a0bb3","impliedFormat":1},{"version":"36022f5544b27ac66385e56350834423923403574cbe6efe1c982649f9452c54","impliedFormat":1},"bba6cfc527c19857aa23b84e8a2046f44b996307563a7ecc22a92fbf20010a14","62c0acd226346f4a785c9193c6c45545ec3fff1979ee8df3f588846f6d19c861","80053711b514e246668987e2ecf81e0d07cac02d4df0fca9349d93a8524c6eaa","e0eb841ca5a2734b2dca0fd51b36db487be2bcb099a86026c7618eb198b4428b","56795690506e9f971e99867981d6d70728826072ac326b5b42a84b32e83b7be3","b0cb22b5146d40d089e9237e00d20889285581a146d11b1673ff0477801f4250","22725615aa6f29bc460cf104925d37da934ce0a070a75ec2f27bfb904e44a42b","63847c8863d58d05b6de39372b3286da63c1848d142966fa4fae49a494b273bd","c8f48ba45f7cc5d21200a73e2299637e9a132be97fe32b5420b41c9083da8f26","5765ff58850bc8f51c7480818910df84df56d86c80a036e347d0d9a169a0be97","069f758baf9f6d57335d108a40043d61cfeb8258a68b1a9d9b9bc5923f26a95c","4dfe1b2c2c969247671df680b24a9c967a241ba8efb8f560d38efbaa68b69dcb","297ba6d7e4e8c638f366363cb8d85141fdb1c2daaa6b06ba257eac005ac978fb","a55b60d594c2c7ca9c2ec78557f60cf80afe36571bd0f17be3b75f22755a6457","403d308ff3ea1212bb55bbc619d813d03fc9515198e13e04dd224607eba4a75c","b8b7ed302e941989201e22112bb8b2c8edeeb9d3fe677f3ec3b155ad1bf067dc","de3f5544642634ae186a297e5f0f64c1ec8455fd0a9e6419c6a0215e2525e534","ea79deb2c6f4040dc55bd04e4a37ea36858d7e59ae354ebc0eccaa2698fcfeb5","91883e5a7e00b0bc6e87ac5989af4c21de2377268e6bc15379ec1eaae601db50","904206fa7cad3d3da7d04805aa61f9ad2438c6812bd7cfe494711195bb042f1f","29a5c6db1d280d9d1608f0445d11b9894d8b689a5464db6e6b9107ae12ef0a67","2985b5a8371b42b78a230fb9712cc3c53692cfb8490b75bd27e41f9f3ed3bdb8","a48607078976e0d9aa652912f678f0dc38782b0735d1e2e15f78addecd97a932","5134195fec4d019251817043345bf7280c10145fe777078f0b7b10d29af0833b","02465a9c5305147d02b7b8055622109c4a4aa06a7c2cbbe36c8d94d5113f492b","e9c20c57dd7f0282aead93fe090788a197d28817d47cc0ef9f5159b74abad69d","8cbbefd9b10ebcb631fa5abbc471f7d14818664162210fa19d7125bcd451098f","132679bcb51ed20109bded99dfdc0a065b4c9037c2cacc4dfb4dea623830c17e","4d5c9922ad0be23e51e85f9d8f8b7e5d9a1962e98d7eebacfdbb9d8b8a1cd32f","bfd4b5cd77a389957c8aefef945b2dd6bae4cb79cf094c63cc5b6198e5213b05","9bbdca4053c688b71dd5a2cd64c6c3ded916be13360c723c8c6cee23d1978a13","e23fbb983beeaefb3a412da7b4fb0a44e2c35cb4b7afb09aa465f73f1daa974d","64f29be229c7719a5883a31911beda7970aff4336d375ad1feb4304278d3b828","6a8f4a5aa81b64b18130401a3266c15e74b46d8d06d20a19c4105c51672d3362","2cb2f33d92c9ba1402d1dea4a99e1c68ae5ab11c33e1d5c8743a1e49813d63d2","035d3e4f3d656d5427955191ffcb1ce1f8ee9443aba2fccefc0d8ce34328cba1","97b2b5bc1e1474b8d180a47999ae6fdfbff2366235b4f068917f514103ec8ade","2bf0208ac551b03a24141ab9dedf0fdd508290105fe5e7d1a6fa0ac4de014a1b","97584f8cc5c4e9d6bf87c6be28c4326750b7befce0702416ef2e58e269838fde","b57cc712fd0da58bfeffdee5b34a1732536c0a5fdfb588d7ff5e3105049c21af","8e7c8d0c43e90710a47330829989dd888115e708ecf2e93e131af642ff4d894d","f16582e71182d6e9a11d07efd60222ab148716432d333b229c66f9d26bec92a0","e70cb4b742890d3f9c1ae7965918f04cec997b7f339676b9a36bdc4c6a44c707","58eda13626bd8ccfd3069303532127ab52ddeb9f4bbfd6d5f133b83dfb188a0c","987ebc0d0cd29b95188a2b6cf4a1b69b4e780029f64f1de793f519e6f9f4b6ea","2f1f5761db10d675f86c4cdf82014c18a6feba42ffda5233014d031fa65d3270","ffa264a84c0af2ccb222dbfe84f0034c7c5182674d807c0a2c44741c85018959",{"version":"55a914fba7f17f73eb971e012bcb90221d5dca20751852c217428a5511db57a4","impliedFormat":99},{"version":"d9b54195cd22859480b70a2e287c41e654c812b0d3945652bd08c8943ddef78b","impliedFormat":99},{"version":"73b32be132963c6e06bb2f833ea0c21116581a3aafc8ac9145cc89a0b6f54bc0","impliedFormat":99},{"version":"73597a22736b6efce7cb30e380705cd6572d9e3f9816068130ec09550129996f","impliedFormat":99},{"version":"04504c465aabfed05529bf3b314df66c4eb449b188547c51edb962d8eb6069e0","impliedFormat":99},{"version":"09466b34e26295ee836861fa6348aff7b2275c6220cc0b41040c9949421e052f","impliedFormat":99},{"version":"242ce683695df72f1cdd40ae2ac06c569412e533528de95d956b26218cd195f5","impliedFormat":99},{"version":"d75a572cfd779c99cbdab5f8f44f6ce465367c057c07e33364d186de41ad9b14","impliedFormat":99},{"version":"8d12c3032607835687037e28dc245a4af486ef4aa6e6cb13744dcb0a3b074ab4","impliedFormat":99},{"version":"7ee2d1edc6f59a50eaeb12ac61a74ab4832f64661f795131df23ac8256df2329","impliedFormat":99},{"version":"8fea385f7e21a39e857e3fae89eabde7b0960083d205177430be507b38413579","impliedFormat":99},{"version":"7fdb8950d8a019940182ff1f50d02809a45832121b9a7899677a497aaba506ce","impliedFormat":99},{"version":"530e23db4425868edfc20e35fe2d8acf047af5b6f14afa46ee2e0e71e40c8df1","impliedFormat":99},{"version":"7cf421c4c6e223d2b648dae0ea51a134c4c8a5d8d55db1287372c4c1569c656f","impliedFormat":99},{"version":"ee662f8ffa58a60ca3ca8c141d4910043216efe63f696146b6fa0a455a4f9034","impliedFormat":99},{"version":"4eb4f2e56895129861a971177f8e9241ccf633daae3a6ac7343b92e973381c26","impliedFormat":99},{"version":"c75223aab2bfbe3fe85211fe56cfc844dd93d33e503e22e9911fd0d3e6f6538f","impliedFormat":99},{"version":"8fcea3d952a8129821d4060969f305a341706c256cb8002aba8e5b07088c24ed","impliedFormat":99},{"version":"2a6cef87ea83b5bdbc862e894329ba11002e76d5fb6ab24247502ecad2c6fbe7","impliedFormat":99},{"version":"39248c14bedc3e2d734739452408661523228ec790d7142a4de185ae88904da4","impliedFormat":99},{"version":"c14433af8654964ed33f9cc16f9369e05ae543d56bbc6a1c3b393fa7077f08a1","impliedFormat":99},{"version":"d867a5469eabe8abab25b27abb7125ef2ba019ef42dd1ca2b5d0871513042629","impliedFormat":99},{"version":"89fc4cad6ac7ac6d922523b3ab51462b050189ab335766149e5cc777483d4e1b","impliedFormat":1},{"version":"c031417387ddbb2923f41e3fc94b49157745785281c8949a221cd69368610086","impliedFormat":1},{"version":"73ef706b29d220404677226880137ad0da0145b6a2332d5427b9517dee295e70","impliedFormat":99},{"version":"89fc4cad6ac7ac6d922523b3ab51462b050189ab335766149e5cc777483d4e1b","impliedFormat":1},{"version":"27b14b091ccf309c79f3d2cf226edfa4d533b131f19bc0cbe855adebd464c285","impliedFormat":99},{"version":"50854b8ef4c29f3e952f170aaa045604a9d90360b680ddaeff542d1f5bb5fa8c","impliedFormat":99},{"version":"caa3a0be5c051f52e27b91642c8b31037c09ad0b65288498f4c55e33be7ea249","impliedFormat":99},{"version":"48020f2aa87dd71c26414f9afdf172159a6c31186705417da52add9d6cfe2153","impliedFormat":99},{"version":"f4e5a6883146482d6b49c1406f99a38b1ef883382b169bb5fc6cf7cf9f2ac70c","impliedFormat":99},{"version":"8b7b4f82a54a847a29fa481af4ea74372c19b75379bd27658c2a819149f21871","impliedFormat":99},{"version":"4f7faca5821e340342ea0feb3d478126659ece37d5dfdd6d9c9536bfd48def34","impliedFormat":99},{"version":"99878cc85152e70be715546f165826d83cf033547b4647cc3cc9cbd6d4df429a","impliedFormat":99},{"version":"7677f5595e7bdc2e6e42ebe8b4df4f4b520b28f6f175c839b73a208e6f3c8907","impliedFormat":99},{"version":"fd7faa9225e2e61a0a3d786a7a859af52dcb295c06bce7dfca140037655dc095","impliedFormat":99},{"version":"af0f7e3281ab0774f26ca8bc36d6aa37709f3510c8c1eb0ab122e7063159be01","impliedFormat":99},{"version":"960096f9e2ff9e9019e1c23a04916f2005d4c8dbd43f96b196d754b6c8a16700","impliedFormat":99},{"version":"c7c18305c761411b3c168f2b3376101b60d7a7d7c0505e81c6d8193a418f3d63","impliedFormat":99},{"version":"6b9a76dbc0ac3a427aa7370981cea9aea0e8286453b189dd03776f1034f7847c","impliedFormat":99},{"version":"3e48026dd0f58d4668dbfa9c6747302dcbc52e3aec373ec1f95c2ba78c308f33","impliedFormat":99},{"version":"053f54680ea9b4b1a8e9e5fe9f4a1fdcbc00f8f9b6d895109eb0d169915dfd11","impliedFormat":99},{"version":"3b0f440d9e4227285cec9159b1a472bc885687baf227a7b4126e2ba6dbef96fc","impliedFormat":99},{"version":"656e3a4ac005fcb1513ab1224eacfd55ae04b6f16d21d66c971dc901dad62c66","impliedFormat":99},{"version":"ea4891706f147e494a2a7028b2376110c2e85b7561b27448d51a7d1277c6fcf2","impliedFormat":99},{"version":"7f9bb3e6bb8d0607f94d1498c5fa8ac7445fcb4af52d0775a857d0986e0d0c84","impliedFormat":99},{"version":"c98c85d5b894c8955950338b1091f0febdc6c6702cf3b67a171d29d80fb2dfce","impliedFormat":99},{"version":"d00addf28fd877e3f8109b592b1918084cfb831268a0fd052fa72e6e01390cca","impliedFormat":99},{"version":"0cc0f30db3c4a2577606c6930eac2814d0463148d1bf02be9eaa318d6cb6d40e","impliedFormat":99},{"version":"21fb062824012292b09e9357aa7ac3231a0d683a7fbb9bc8e2b027346c7bcb32","impliedFormat":99},{"version":"9aa939dd1371c068dcda7d17c32fcbee08fa994890fefac8ad39d8cd5a294d92","impliedFormat":99},{"version":"8c0e829b03024d1905dba908ed55a5808d79159709770fe7a3b0395fa78125c6","impliedFormat":99},{"version":"15e6253aeb724521fcd0fd8bab60ac00b40e1b6c39aabb0de3b3e45ebe2d584a","impliedFormat":99},{"version":"4d3a0370e69c2d70d62a2eaeb40512474e38b4dff1a4e7ac98637f954ec5c143","impliedFormat":99},{"version":"b0094b81741504d0282359218e3659f5282b9748ad0e80d9a1c634bc1c88af4b","impliedFormat":99},{"version":"2c8e3d7848994c490cace467a6aae3fc4908e5b577b5ab0996200497062bb80b","impliedFormat":99},{"version":"6db32445cedcfaf6f6a4dbb922cdaf87e1cfc0422e4a31efeebef3fb0eb1a93b","impliedFormat":99},{"version":"b5102cfc507fe0c916a9ad45f4f52e00e3959b90eb90c5873e9527cb37eadb78","impliedFormat":99},{"version":"21e3abbcf80dc69638d138f5c6d07f596f8a162a8dca3bd71286403a96f8d0ab","impliedFormat":99},{"version":"20eab98ea24e9bf8834db1a339abb373e6f6a268537efa1fd571cd3809839eb1","impliedFormat":99},{"version":"796885a2efe76d5bef797516bd3a798b275f81075da8497fc1f6a9d3e085f2a8","impliedFormat":99},{"version":"b5a2192e328273da5a8279add3052bbc33b1adecb15f34a577c69c4dd2766d8e","impliedFormat":99},{"version":"20126c8c53f22550e68edb187f5d4d477b79a2effe7801fff3aa47949219d67b","impliedFormat":99},{"version":"8b63cf9a4a5bafaa3d2e157e6d07bb20d0d73fe0c5ddda715342a48d18534154","impliedFormat":99},{"version":"369dd195a978dcb88d63f1f1878e5dabb90bbc79b3e5fb0f16cf06209ab9e7aa","impliedFormat":99},{"version":"090b7d0fd37b238e003029b9137d5dff073791e21adaac556dd7524ed9ed977e","impliedFormat":99},{"version":"efedab846f4656f034814230fc05513b8cefb5f95994faee4f9b174c98bfef41","impliedFormat":99},{"version":"4f8876f00aa99ae0b39d6bca9da9e86f426dc6c458558773a647100a85fc3312","impliedFormat":99},{"version":"a13e1f68a2a1f29ceac30f51562e13677a5b8615377af952f0b7d1f9edff34f4","impliedFormat":99},{"version":"06f1e24d4146a779e7fd7a0f0cfdcdcb878da25e271e1e7d5d7f81d874f2dbec","impliedFormat":99},{"version":"0a3ede23be099f3ad266a10b4ad0cfb6efd446b9951f553274706348c3b56dae","impliedFormat":99},{"version":"c7b05cafd385f8988babecd476f4f9c817ecc68141dad54e2dd3ae458878a8f4","impliedFormat":99},{"version":"8fc8726fe9d96e0440518b06451181cabba87bdcb60a6e854b77e2b6dab52890","impliedFormat":99},{"version":"6cb381987d43f853d8d01c2fd5f32627e0c0f3a4dd1a11d5e3f94ff5832aff2b","impliedFormat":99},{"version":"ba0567434dbadd0fb8e80c4e00fb9c30449497f8bf07e82b2b857db0029f9b18","impliedFormat":99},{"version":"f72e417b7d49a5dec2d4f3857f6925ee78608cda1c42655d0179ccd38c66c15a","impliedFormat":99},{"version":"fdbb1158637d3ca4d209c7174270e5eb1414b4ee5324e9c33b1fae88e83bfc14","impliedFormat":99},{"version":"436cdc04f8ad3a54d2194b9926f52d564157ca162dcf3c9f71fa4711d057190b","impliedFormat":99},{"version":"73d9180a0b84dfb4c1a95bf72028103bd81472595617dd7ce788ea21639bcee4","impliedFormat":99},{"version":"55c1b951a4d7289a3056e2edea9855671a9d1f8f09632916ed1fb2aebb57b5c6","impliedFormat":99},{"version":"09b1271f73d90a01c889b4963a350825cff11493498b4141fde2399ce09de43a","impliedFormat":99},{"version":"bb9c7998d6def957496260f4c881ccc5b3d4eb4084ab00fbd8abc8c1e1ba67b7","impliedFormat":99},{"version":"340efc3f335a2a3ea2ca1899755906bcb6ebcbddf14306e66d0f16746db98273","impliedFormat":99},{"version":"6a691651e2748bf7792a251d820f00e8d9d3e4da1cdfbea91c33beda2bdd8b89","impliedFormat":99},{"version":"c3096b0c0f579462e17c525ee6835d82952c32b35061a1d32ac32d7e0f191da1","impliedFormat":99},{"version":"91b3c513f0ca4e2d0c5bc9ba1f43b169e1da7c49ff2cf5ffe730009c229f359f","impliedFormat":99},{"version":"ea0b435818ce832634961d1b65e972927f65a3c29a3e2c0cec3aafa0d7fe4ea0","impliedFormat":99},{"version":"50fe63347779cd2244429e0d54148fdb5d230dcc11f2bb8c7efc9d12c1e573d2","impliedFormat":99},{"version":"7adac175e5942f34a34f223d213bdd9869935ec6083dc6da836b996b7acdf7d5","impliedFormat":99},{"version":"2af0e322d1c39e8b16436cd9bd9c97b6013b75c179281df61afa10df0c722a1b","impliedFormat":99},{"version":"09b1271f73d90a01c889b4963a350825cff11493498b4141fde2399ce09de43a","impliedFormat":99},{"version":"0ef3eabd40fcec506413988e397ff7dcbed2aebfe4f88c486e2ba8dd1bc0ee0b","impliedFormat":99},{"version":"44dce86f2b5ef5e38fe6c068bc629afc04221adfa039f0dd649ae10f799f9ec8","impliedFormat":99},{"version":"5ad41356543df4a83b3ce069a7e628d2ba648399db0bdd4005bd1dfef26d34e2","impliedFormat":99},{"version":"0b448474270be29ded59bb946ac311c40c579ef0b9cf358a54750eef34359088","impliedFormat":99},{"version":"d7ddde645d6ca5b97f75923b3946e96495f81d7f4fd568201653f1939a3312a3","impliedFormat":99},{"version":"fb1148873f0d706261f8517b7ce3574b369c8213e8304c7c21cb9ca248b8dcc3","impliedFormat":99},{"version":"0637ec66edeed3f9ee0da72c0d5ab2c128db9e5a6226f8aca5672aa617db1726","impliedFormat":99},{"version":"ee49e1206cf12b67d5b72a98eaab773481130b87a9eeaa262086a4314d1cd991","impliedFormat":99},{"version":"9fa29d6f0b05ee8f619202c07680a46025b166da55e431a49c5badaa2983429b","impliedFormat":99},{"version":"f53857d23110842c0c62416b09caccb9286b3ba52fa2b6bbe254c58123d9bb09","impliedFormat":99},{"version":"89c02b0ad4fc44d10576b3e37c2c5262a37f2db171a486d2d5960ee60323bb96","impliedFormat":99},{"version":"59348badf356a43f7e1847364a8fdb8a914b9977a517b41f3ed206db36b875c1","impliedFormat":99},{"version":"ff0c09d8b0c8c0ffb09ef9250fac17c98eb4dd5a4f4955d53fc3880d6553b91b","impliedFormat":99},{"version":"07146d909fcbc1d33c5fc02f74dab3750d075a4de305a6c078fff8265e089c5e","impliedFormat":99},{"version":"b323496b42ebb7f2839ef1acb04947c74cc586c8ad20cc936c069d34b98a29ac","impliedFormat":99},{"version":"62159930f535b73f265f98f669c7f7bbdaef719ebc2de3a2bc4835e71ed68ba0","impliedFormat":99},{"version":"6ae1d121a8c1ff3398eff8af6e398868b631689d120076d7004c787479eacc61","impliedFormat":99},{"version":"d23bfd5a61fb32048f370f988a9772966651be1380c1a93c199d7cb25b7b0cf0","impliedFormat":99},{"version":"7344e1d823581d72124f6a328669abbeec44910c2045823bf7e7bef79ca49f73","impliedFormat":99},{"version":"af4a6e7559998dac4978f02c572d0f391928b6f40c62459c1e4ae5afc12995c7","impliedFormat":99},{"version":"b0a2a4c5ca7f6f874de72e39be8f470b348ec062c005cb5a7acc840fd7f67807","impliedFormat":99},{"version":"75083e759d8b09bcbf201a250c918a35221d05c7524cbb67b2b4d8959c919252","impliedFormat":99},{"version":"d89f7811a420d990b817f383c3fec421559063a7cb744fae619e8bba20dd151d","impliedFormat":99},{"version":"abd03428933117fdb9db45ac492eaac24d9a77c37c3944d26dba044b7fce6870","impliedFormat":99},{"version":"97050f022128934adae6a773a63be3c5bd5726f153fb72e9a8d34f2656135de2","impliedFormat":99},{"version":"3901f637d5f111593a5ea39a31d27e7a5f62195251f4ed6a50b77a020bc6e416","impliedFormat":99},{"version":"7edffa8d9c968f6a96b6ffc774be07717378ec619777e78510a7b6de4bfe67df","impliedFormat":99},{"version":"8f8d24c887f993b6c131075ac4f82cefbb246747b22c50491dc64ffd2cb340d9","impliedFormat":99},{"version":"5ffb8c07f5474d45bab306b6267ef2777ad786a841e0942416f485125cbd2385","impliedFormat":99},{"version":"e0d7a3cdfaa21621610dc3b74f8ccd59a5cd8617843ded1d610f05bf790adde6","impliedFormat":99},{"version":"b8f4165a3fa8fea167bb5016ad7629581d8fffb16447217d480c8a7ea438ed8d","impliedFormat":99},{"version":"b936b8e4ad57e3be1407c74e36645d31bebe7f1183d926a0c438cf416ec708f5","impliedFormat":99},{"version":"13fc27c27bc9a42e5e0c4cc08b64e7693b225c565bdab45ace16c179760f3cc9","impliedFormat":99},{"version":"8ff87eb5acdf565af022fb9145942b2207ac8cd0644917bc7d44efb91f4115d3","impliedFormat":99},{"version":"616ff480886a32cf50f73c4ee5fdd9672a5f21428eadcac34c41acb06035c214","impliedFormat":99},{"version":"f08e5842644a8e03da9efdbf89bf4eb61ea906a3bbc255bd7d7583756cb3dc61","impliedFormat":99},{"version":"562682efb4f43e58eb779a742f3e26c1fd796da0b785620de601202a38764785","impliedFormat":99},{"version":"264f935450101e4b000eb351cf75c9d799ca20a278b260a9e5770303b5f2b6a3","impliedFormat":99},{"version":"f6f171b23ae6db93454343f1b788960f799c8f37043904874a752c0990c6fca6","impliedFormat":99},{"version":"304e41926d3299c9b30bfd418c35fffd2bd9e5ac726d6f758fb4e0f40a738d51","impliedFormat":99},{"version":"7d3b1ddfce35445b76298090a9dcadee8acf20f4c281eb1f2ce14fc7232c9470","affectsGlobalScope":true,"impliedFormat":99},{"version":"02ab5dbcaa58da1d58c46c7cdfa7f94792c5ccf0fc7c0622ef33755fe415366c","impliedFormat":99},{"version":"e689cc8cd8a102d31c9d3a7b0db0028594202093c4aca25982b425e8ae744556","impliedFormat":99},{"version":"478e59ac0830a0f6360236632d0d589fb0211183aa1ab82292fbca529c0cce35","impliedFormat":99},{"version":"1b4ed9deaba72d4bc8495bf46db690dbf91040da0cb2401db10bad162732c0e2","impliedFormat":99},{"version":"cf60c9e69392dd40b81c02f9674792e8bc5b2aff91d1b468e3d19da8b18358f8","impliedFormat":99},{"version":"3e94295f73335c9122308a858445d2348949842579ac2bacd30728ab46fe75a7","impliedFormat":99},{"version":"8a778c0e0c2f0d9156ca87ab56556b7fd876a185960d829c7e9ed416d5be5fb4","impliedFormat":99},{"version":"b233a945227880b8100b0fec2a8916339fa061ccc23d2d9db4b4646a6cd9655f","impliedFormat":99},{"version":"54821272a9f633d5e8ec23714ece5559ae9a7acc576197fe255974ddbd9b05d6","impliedFormat":99},{"version":"e08685c946d49f555b523e481f4122b398c4444c55b164e5ac67c3ba878db8d1","impliedFormat":99},{"version":"3c99d5232a3c8b54016e5700502078af50fe917eb9cb4b6d9a75a0a3456fcd5d","impliedFormat":99},{"version":"9d8e34ec610435ee2708595564bbad809eab15c9e3fa01ad3746bbe9015faaed","impliedFormat":99},{"version":"7202a89bea0bdab87cc0ae60912b9e631a48f519b6a1f323dba8bc77a02a3481","impliedFormat":99},{"version":"f865343c121abc3516abf5b888d0c1b7596ec772229d8e4d4d796f89e8c9d0c0","impliedFormat":99},{"version":"77114bdbc7388aeeb188c85ebe27e38b1a6e29bc9fea6e09b7011bbb4d71ec41","impliedFormat":99},{"version":"3df489529e6dfe63250b187f1823a9d6006b86a7e9cac6b338944d5fc008db70","impliedFormat":99},{"version":"fe0d316062384b233b16caee26bf8c66f2efdcedcf497be08ad9bcea24bd2d2c","impliedFormat":99},{"version":"2f5846c85bd28a5e8ce93a6e8b67ad0fd6f5a9f7049c74e9c1f6628a0c10062a","impliedFormat":99},{"version":"7dfb517c06ecb1ca89d0b46444eae16ad53d0054e6ec9d82c38e3fbf381ff698","impliedFormat":99},{"version":"35999449fe3af6c7821c63cad3c41b99526113945c778f56c2ae970b4b35c490","impliedFormat":99},{"version":"1fff68ffb3b4a2bf1b6f7f4793f17d6a94c72ca8d67c1d0ac8a872483d23aaf2","impliedFormat":99},{"version":"6dd231d71a5c28f43983de7d91fb34c2c841b0d79c3be2e6bffeb2836d344f00","impliedFormat":99},{"version":"e6a96ceaa78397df35800bafd1069651832422126206e60e1046c3b15b6e5977","impliedFormat":99},{"version":"035dcab32722ff83675483f2608d21cb1ec7b0428b8dca87139f1b524c7fcdb5","impliedFormat":99},{"version":"605892c358273dffa8178aa455edf675c326c4197993f3d1287b120d09cee23f","impliedFormat":99},{"version":"a1caf633e62346bf432d548a0ae03d9288dc803c033412d52f6c4d065ef13c25","impliedFormat":99},{"version":"774f59be62f64cf91d01f9f84c52d9797a86ef7713ff7fc11c8815512be20d12","impliedFormat":99},{"version":"46fc114448951c7b7d9ed1f2cc314e8b9be05b655792ab39262c144c7398be9f","impliedFormat":99},{"version":"9be0a613d408a84fa06b3d748ca37fd83abf7448c534873633b7a1d473c21f76","impliedFormat":99},{"version":"f447ea732d033408efd829cf135cac4f920c4d2065fa926d7f019bff4e119630","impliedFormat":99},{"version":"09f1e21f95a70af0aa40680aaa7aadd7d97eb0ef3b61effd1810557e07e4f66a","impliedFormat":99},{"version":"a43ec5b51f6b4d3c53971d68d4522ef3d5d0b6727e0673a83a0a5d8c1ced6be2","impliedFormat":99},{"version":"c06578ae45a183ba9d35eee917b48ecfdec19bb43860ffc9947a7ab2145c8748","impliedFormat":99},{"version":"2a9b4fd6e99e31552e6c1861352c0f0f2efd6efb6eacf62aa22375b6df1684b1","impliedFormat":99},{"version":"ad9f4320035ac22a5d7f5346a38c9907d06ec35e28ec87e66768e336bc1b4d69","impliedFormat":99},{"version":"05a090d5fb9dc0b48e001b69dc13beaab56883d016e6c6835dbdaf4027d622d4","impliedFormat":99},{"version":"76edff84d1d0ad9cece05db594ebc8d55d6492c9f9cc211776d64b722f1908e0","impliedFormat":99},{"version":"ec7cef68bcd53fae06eecbf331bb3e7fdfbbf34ed0bbb1fb026811a3cd323cb4","impliedFormat":99},{"version":"36ea0d582c82f48990eea829818e7e84e1dd80c9dc26119803b735beac5ee025","impliedFormat":99},{"version":"9c3f927107fb7e1086611de817b1eb2c728da334812ddab9592580070c3d0754","impliedFormat":99},{"version":"eeae71425f0747a79f45381da8dd823d625a28c22c31dca659d62fcc8be159c2","impliedFormat":99},{"version":"d769fae4e2194e67a946d6c51bb8081cf7bd35688f9505951ad2fd293e570701","impliedFormat":99},{"version":"55ce8d5c56f615ae645811e512ddb9438168c0f70e2d536537f7e83cd6b7b4b0","impliedFormat":99},{"version":"fa1369ff60d8c69c1493e4d99f35f43089f0922531205d4040e540bb99c0af4f","impliedFormat":99},{"version":"a3382dd7ef2186ea109a6ee6850ca95db91293693c23f7294045034e7d4e3acf","impliedFormat":99},{"version":"2b1d213281f3aa615ae6c81397247800891be98deca0b8b2123681d736784374","impliedFormat":99},{"version":"c34e7a89ed828af658c88c87db249b579a61e116bea0c472d058e05a19bf5fa9","impliedFormat":99},{"version":"7ae166eb400af5825d3e89eea5783261627959809308d4e383f3c627f9dad3d8","impliedFormat":99},{"version":"69f64614a16f499e755db4951fcbb9cf6e6b722cc072c469b60d2ea9a7d3efe8","impliedFormat":99},{"version":"75df3b2101fc743f2e9443a99d4d53c462953c497497cce204d55fc1efb091e0","impliedFormat":99},{"version":"7dc0f40059b991a1624098161c88b4650644375cc748f4ac142888eb527e9ccd","impliedFormat":99},{"version":"a601809a87528d651b7e1501837d57bb840f47766f06e695949a85f3e58c6315","impliedFormat":99},{"version":"d64f68c9dbd079ad99ec9bae342e1b303da6ce5eac4160eb1ed2ef225a9e9b23","impliedFormat":99},{"version":"99c738354ecc1dba7f6364ed69b4e32f5b0ad6ec39f05e1ee485e1ee40b958eb","impliedFormat":99},{"version":"8cd2c3f1c7c15af539068573c2c77a35cc3a1c6914535275228b8ef934e93ae4","impliedFormat":99},{"version":"efb3ac710c156d408caa25dafd69ea6352257c4cebe80dba0f7554b9e903919c","impliedFormat":99},{"version":"260244548bc1c69fbb26f0a3bb7a65441ae24bcaee4fe0724cf0279596d97fb4","impliedFormat":99},{"version":"ce230ce8f34f70c65809e3ac64dfea499c5fd2f2e73cd2c6e9c7a2c5856215a8","impliedFormat":99},{"version":"0e154a7f40d689bd52af327dee00e988d659258af43ee822e125620bdd3e5519","impliedFormat":99},{"version":"cca506c38ef84e3f70e1a01b709dc98573044530807a74fe090798a8d4dc71ac","impliedFormat":99},{"version":"160dbb165463d553da188b8269b095a4636a48145b733acda60041de8fa0ae88","impliedFormat":99},{"version":"8b1deebfd2c3507964b3078743c1cb8dbef48e565ded3a5743063c5387dec62f","impliedFormat":99},{"version":"6a77c11718845ff230ac61f823221c09ec9a14e5edd4c9eae34eead3fc47e2c7","impliedFormat":99},{"version":"5a633dd8dcf5e35ee141c70e7c0a58df4f481fb44bce225019c75eed483be9be","impliedFormat":99},{"version":"f3fb008d3231c50435508ec6fd8a9e1fdc04dd75d4e56ec3879b08215da02e2c","impliedFormat":99},{"version":"9e4af21f88f57530eea7c963d5223b21de0ddccfd79550636e7618612cc33224","impliedFormat":99},{"version":"b48dd54bd70b7cf7310c671c2b5d21a4c50e882273787eeea62a430c378b041a","impliedFormat":99},{"version":"1302d4a20b1ce874c8c7c0af30051e28b7105dadaec0aebd45545fd365592f30","impliedFormat":99},{"version":"fd939887989692c614ea38129952e34eeca05802a0633cb5c85f3f3b00ce9dff","impliedFormat":99},{"version":"3040f5b3649c95d0df70ce7e7c3cce1d22549dd04ae05e655a40e54e4c6299de","impliedFormat":99},{"version":"de0bd5d5bd17ba2789f4a448964aba57e269a89d0499a521ccb08531d8892f55","impliedFormat":99},{"version":"921d42c7ec8dbefd1457f09466dadedb5855a71fa2637ad67f82ff1ed3ddc0d0","impliedFormat":99},{"version":"b0750451f8aec5c70df9e582ab794fab08dae83ea81bb96bf0b0976e0a2301ee","impliedFormat":99},{"version":"8ba931de83284a779d0524b6f8d6cf3956755fb41c8c8c41cd32caf464d27f05","impliedFormat":99},{"version":"4305804b3ae68aebb7ef164aabd7345c6b91aada8adda10db0227922b2c16502","impliedFormat":99},{"version":"96ae321ebb4b8dcdb57e9f8f92a3f8ddb50bdf534cf58e774281c7a90b502f66","impliedFormat":99},{"version":"934158ee729064a805c8d37713161fef46bf36aa9f0d0949f2cd665ded9e2444","impliedFormat":99},{"version":"6ef5957bb7e973ea49d2b04d739e8561bca5ae125925948491b3cfbd4bf6a553","impliedFormat":99},{"version":"6a32433315d54a605c4be53bf7248dfd784a051e8626aeb01a4e71294dd2747f","impliedFormat":99},{"version":"9476325d3457bfe059adfee87179a5c7d44ecbeec789ede9cfab8dc7b74c48db","impliedFormat":99},{"version":"4f1c9401c286c6fff7bbf2596feef20f76828c99e3ccb81f23d2bd33e72256aa","impliedFormat":99},{"version":"b711cdd39419677f7ca52dd050364d8f8d00ea781bb3252b19c71bdb7ec5423e","impliedFormat":99},{"version":"ee11e2318448babc4d95f7a31f9241823b0dfc4eada26c71ef6899ea06e6f46b","impliedFormat":99},{"version":"27a270826a46278ad5196a6dfc21cd6f9173481ca91443669199379772a32ae8","impliedFormat":99},{"version":"7c52f16314474cef2117a00f8b427dfa62c00e889e6484817dc4cabb9143ac73","impliedFormat":99},{"version":"6c72a60bb273bb1c9a03e64f161136af2eb8aacc23be0c29c8c3ece0ea75a919","impliedFormat":99},{"version":"6fa96d12a720bbad2c4e2c75ddffa8572ef9af4b00750d119a783e32aede3013","impliedFormat":99},{"version":"00128fe475159552deb7d2f8699974a30f25c848cf36448a20f10f1f29249696","impliedFormat":99},{"version":"e7bd1dc063eced5cd08738a5adbba56028b319b0781a8a4971472abf05b0efb4","impliedFormat":99},{"version":"2a92bdf4acbd620f12a8930f0e0ec70f1f0a90e3d9b90a5b0954aac6c1d2a39c","impliedFormat":99},{"version":"c8d08a1e9d91ad3f7d9c3862b30fa32ba4bc3ca8393adafdeeeb915275887b82","impliedFormat":99},{"version":"c0dd6b325d95454319f13802d291f4945556a3df50cf8eed54dbb6d0ade0de2f","impliedFormat":99},{"version":"0627ae8289f0107f1d8425904bb0daa9955481138ca5ba2f8b57707003c428d5","impliedFormat":99},{"version":"4d8c5cc34355bfb08441f6bc18bf31f416afbfa1c71b7b25255d66d349be7e14","impliedFormat":99},{"version":"b365233eaff00901f4709fa605ae164a8e1d304dc6c39b82f49dda3338bea2b0","impliedFormat":99},{"version":"456da89f7f4e0f3dc82afc7918090f550a8af51c72a3cfb9887cf7783d09a266","impliedFormat":99},{"version":"d9a2dcc08e20a9cf3cc56cd6e796611247a0e69aa51254811ec2eed5b63e4ba5","impliedFormat":99},{"version":"44abf5b087f6500ab9280da1e51a2682b985f110134488696ac5f84ae6be566c","impliedFormat":99},{"version":"ced7ef0f2429676d335307ad64116cd2cc727bb0ce29a070bb2992e675a8991e","impliedFormat":99},{"version":"0b73db1447d976759731255d45c5a6feff3d59b7856a1c4da057ab8ccf46dc84","impliedFormat":99},{"version":"3fc6f405e56a678370e4feb7a38afd909f77eb2e26fe153cdaea0fb3c42fbbee","impliedFormat":99},{"version":"2762ed7b9ceb45268b0a8023fd96f02df88f5eb2ad56851cbb3da110fd35fdb5","impliedFormat":99},{"version":"9c20802909ca00f79936c66d8315a5f7f2355d343359a1e51b521ec7a8cfa8bf","impliedFormat":99},{"version":"31ddfdf751c96959c458220cd417454b260ff5e88f66dddc33236343156eb22c","impliedFormat":99},{"version":"ec0339cf070b4dedf708aaed26b8da900a86b3396b30a4777afcd76e69462448","impliedFormat":99},{"version":"067eed0758f3e99f0b1cfe5e3948aa371cbb0f48a26db8c911772e50a9cc9283","impliedFormat":99},{"version":"7dfb9316cfbf2124903d9bc3721d6c19afbf5109dfbc2017ca8ae758f85178ab","impliedFormat":99},{"version":"919a7135fa54057cf42c8cd52165bf938baeb6df316b438bbf4d97f3174ff532","impliedFormat":99},{"version":"4a2957dfe878c8b49acb18299dfba2f72b8bf7a265b793916c0479b3d636b23b","impliedFormat":99},{"version":"fad6a11a73a787168630bf5276f8e8525ab56f897a6a0bf0d3795550201e9df5","impliedFormat":99},{"version":"0cc8d34354ec904617af9f1d569c29b90915634c06d61e7e74b74de26c9379d2","impliedFormat":99},{"version":"529b225f4de49eed08f5a8e5c0b3030699980a8ea130298ff9dfa385a99c2a76","impliedFormat":99},{"version":"77bb50ea87284de10139d000837e5cce037405ac2b699707e3f8766454a8c884","impliedFormat":99},{"version":"95c33ceea3574b974d7a2007fed54992c16b68472b25b426336ef9813e2e96e8","impliedFormat":99},{"version":"1ecb3c690b1bfdc8ea6aaa565415802e5c9012ec616a1d9fb6a2dbd15de7b9dc","impliedFormat":99},{"version":"57fc10e689d39484d5ae38b7fc5632c173d2d9f6f90196fc6a81d6087187ed03","impliedFormat":99},{"version":"f1fb180503fecd5b10428a872f284cc6de52053d4f81f53f7ec2df1c9760d0c0","impliedFormat":99},{"version":"d30d4de63fc781a5b9d8431a4b217cd8ca866d6dc7959c2ce8b7561d57a7213f","impliedFormat":99},{"version":"765896b848b82522a72b7f1837342f613d7c7d46e24752344e790d1f5b02810b","impliedFormat":99},{"version":"ee032efc2dd5c686680f097a676b8031726396a7a2083a4b0b0499b0d32a2aea","impliedFormat":99},{"version":"b76c65680c3160e6b92f5f32bc2e35bca72fedb854195126b26144fd191cd696","impliedFormat":99},{"version":"13e9a215593478bd90e44c1a494caf3c2079c426d5ad8023928261bfc4271c72","impliedFormat":99},{"version":"3e27476a10a715506f9bb196c9c8699a8fe952199233c5af428d801fdda56761","impliedFormat":99},{"version":"dbb9ad48b056876e59a7da5e1552c730b7fa27d59fcd5bf27fd7decc9d823bb8","impliedFormat":99},{"version":"4bd72a99a4273c273201ca6d1e4c77415d10aa24274089b7246d3d0e0084ca06","impliedFormat":99},{"version":"7ae03c4abb0c2d04f81d193895241b40355ae605ec16132c1f339c69552627c1","impliedFormat":99},{"version":"650eddf2807994621e8ca331a29cc5d4a093f5f7ff2f588c3bb7016d3fe4ae6a","impliedFormat":99},{"version":"615834ad3e9e9fe6505d8f657e1de837404a7366e35127fcb20e93e9a0fb1370","impliedFormat":99},{"version":"c3661daba5576b4255a3b157e46884151319d8a270ec37ca8f353c3546b12e9b","impliedFormat":99},{"version":"de4abffb7f7ba4fffbd5986f1fe1d9c73339793e9ac8175176f0d70d4e2c26d2","impliedFormat":99},{"version":"211513b39f80376a8428623bb4d11a8f7ef9cd5aa9adce243200698b84ce4dfb","impliedFormat":99},{"version":"9e8d2591367f2773368f9803f62273eb44ef34dd7dfdaa62ff2f671f30ee1165","impliedFormat":99},{"version":"0f3cef820a473cd90e8c4bdf43be376c7becfda2847174320add08d6a04b5e6e","impliedFormat":99},{"version":"20eed68bc1619806d1a8c501163873b760514b04fcf6a7d185c5595ff5baef65","impliedFormat":99},{"version":"620ef28641765cc6701be0d10d537b61868e6f54c9db153ae64d28187b51dbc0","impliedFormat":99},{"version":"341c8114357c0ec0b17a2a1a99aecbfc6bc0393df49ea6a66193d1e7a691b437","impliedFormat":99},{"version":"b01fe782d4c8efc30ab8f55fae1328898ad88a3b2362ba4daac2059bd30ef903","impliedFormat":99},{"version":"f8e8b33983efa33e28e045b68347341fc77f64821b7aabaac456d17b1781e5f4","impliedFormat":99},{"version":"8d3e416906fb559b9e4ad8b4c4a5f54aeadeb48702e4d0367ffba27483a2e822","impliedFormat":99},{"version":"47db572e8e1c12a37c9ac6bd7e3c88b38e169e3d7fd58cb8fb4a978651e3b121","impliedFormat":99},{"version":"a83a8785713569da150cded8e22c8c14b98b8802eb56167db5734157e23ee804","impliedFormat":99},{"version":"cce1c8b93d1e5ed8dcbaca2c4d346abb34da5c14fa51a1c2e5f93a31c214d8e9","impliedFormat":99},{"version":"213a867daad9eba39f37f264e72e7f2faa0bda9095837de58ab276046d61d97c","impliedFormat":99},{"version":"e1c2ba2ca44e3977d3a79d529940706cef16c9fdd9fd9cad836022643edff84f","impliedFormat":99},{"version":"d63bfe03c3113d5e5b6fcef0bed9cd905e391d523a222caa6d537e767f4e0127","impliedFormat":99},{"version":"4f0a99cb58b887865ae5eed873a34f24032b9a8d390aa27c11982e82f0560b0f","impliedFormat":99},{"version":"3c8a75636dc5639ebd8b0d9b27e5f99cdbc4e52df7f8144bc30e530a90310bbe","impliedFormat":99},{"version":"831ec85d8b9ce9460069612cb8ac6c1407ce45ccaa610a8ae53fe6398f4c1ffd","impliedFormat":99},{"version":"84a15a4f985193d563288b201cb1297f3b2e69cf24042e3f47ad14894bd38e74","impliedFormat":99},{"version":"ea9357f6a359e393d26d83d46f709bc9932a59da732e2c59ea0a46c7db70a8d2","impliedFormat":99},{"version":"2b26c09c593fea6a92facd6475954d4fba0bcc62fe7862849f0cc6073d2c6916","impliedFormat":99},{"version":"b56425afeb034738f443847132bcdec0653b89091e5ea836707338175e5cf014","impliedFormat":99},{"version":"7b3019addc0fd289ab1d174d00854502642f26bec1ae4dadd10ca04db0803a30","impliedFormat":99},{"version":"77883003a85bcfe75dc97d4bd07bd68f8603853d5aad11614c1c57a1204aaf03","impliedFormat":99},{"version":"a69755456ad2d38956b1e54b824556195497fbbb438052c9da5cce5a763a9148","impliedFormat":99},{"version":"c4ea7a4734875037bb04c39e9d9a34701b37784b2e83549b340c01e1851e9fca","impliedFormat":99},{"version":"bba563452954b858d18cc5de0aa8a343b70d58ec0369788b2ffd4c97aa8a8bd1","impliedFormat":99},{"version":"48dd38c566f454246dd0a335309bce001ab25a46be2b44b1988f580d576ae3b5","impliedFormat":99},{"version":"0362f8eccf01deee1ada6f9d899cf83e935970431d6b204a0a450b8a425f8143","impliedFormat":99},{"version":"942c02023b0411836b6d404fc290583309df4c50c0c3a5771051be8ecd832e8d","impliedFormat":99},{"version":"181655e54e8b288d671457be112383e6c51502cff5c4e39020c89f281a987307","impliedFormat":99},{"version":"27d7f5784622ac15e5f56c5d0be9aeefe069ed4855e36cc399c12f31818c40d4","impliedFormat":99},{"version":"0e5e37c5ee7966a03954ddcfc7b11c3faed715ee714a7d7b3f6aaf64173c9ac7","impliedFormat":99},{"version":"adcfd9aaf644eca652b521a4ebac738636c38e28826845dcd2e0dac2130ef539","impliedFormat":99},{"version":"fecc64892b1779fb8ee2f78682f7b4a981a10ed19868108d772bd5807c7fec4f","impliedFormat":99},{"version":"a68eb05fb9bfda476d616b68c2c37776e71cba95406d193b91e71a3369f2bbe7","impliedFormat":99},{"version":"0adf5fa16fe3c677bb0923bde787b4e7e1eb23bcc7b83f89d48d65a6eb563699","impliedFormat":99},{"version":"bf4a06264e6b80cc96fa5e6f11b05825126845563efbf5a68a5b18fddee833b1","impliedFormat":99},{"version":"560a6b3a1e8401fe5e947676dabca8bb337fa115dfd292e96a86f3561274a56d","impliedFormat":99},{"version":"70a29119482d358ab4f28d28ee2dcd05d6cbf8e678068855d016e10a9256ec12","impliedFormat":1},{"version":"869ac759ae8f304536d609082732cb025a08dcc38237fe619caf3fcdd41dde6f","impliedFormat":1},{"version":"0ea900fe6565f9133e06bce92e3e9a4b5a69234e83d40b7df2e1752b8d2b5002","impliedFormat":1},{"version":"e5408f95ca9ac5997c0fea772d68b1bf390e16c2a8cad62858553409f2b12412","impliedFormat":1},{"version":"3c1332a48695617fc5c8a1aead8f09758c2e73018bd139882283fb5a5b8536a6","impliedFormat":1},{"version":"9260b03453970e98ce9b1ad851275acd9c7d213c26c7d86bae096e8e9db4e62b","impliedFormat":1},{"version":"083838d2f5fea0c28f02ce67087101f43bd6e8697c51fd48029261653095080c","impliedFormat":1},{"version":"969132719f0f5822e669f6da7bd58ea0eb47f7899c1db854f8f06379f753b365","impliedFormat":1},{"version":"94ca5d43ff6f9dc8b1812b0770b761392e6eac1948d99d2da443dc63c32b2ec1","impliedFormat":1},{"version":"2cbc88cf54c50e74ee5642c12217e6fd5415e1b35232d5666d53418bae210b3b","impliedFormat":1},{"version":"ccb226557417c606f8b1bba85d178f4bcea3f8ae67b0e86292709a634a1d389d","impliedFormat":1},{"version":"5ea98f44cc9de1fe05d037afe4813f3dcd3a8c5de43bdd7db24624a364fad8e6","impliedFormat":1},{"version":"5260a62a7d326565c7b42293ed427e4186b9d43d6f160f50e134a18385970d02","impliedFormat":1},{"version":"0b3fc2d2d41ad187962c43cb38117d0aee0d3d515c8a6750aaea467da76b42aa","impliedFormat":1},{"version":"ed219f328224100dad91505388453a8c24a97367d1bc13dcec82c72ab13012b7","impliedFormat":1},{"version":"6847b17c96eb44634daa112849db0c9ade344fe23e6ced190b7eeb862beca9f4","impliedFormat":1},{"version":"d479a5128f27f63b58d57a61e062bd68fa43b684271449a73a4d3e3666a599a7","impliedFormat":1},{"version":"6f308b141358ac799edc3e83e887441852205dc1348310d30b62c69438b93ca0","impliedFormat":1},{"version":"b2e451d7958fb4e559df8470e78cbabd17bcebdf694c3ac05440b00ae685aadb","impliedFormat":1},{"version":"435b214f224e0bd2daa15376b7663fd6f5cb0e2bb3a4042672d6396686f7967b","impliedFormat":99},{"version":"5ac787a4a245d99203a12f93f1004db507735a7f3f16f3bc41d21997ccf54256","impliedFormat":99},{"version":"767a9d1487a4a83e6dbe19a56310706b92a77dc0e6c400aa288f48891c8af8d3","impliedFormat":99},{"version":"198f2246a78930833c24db9c42da7ab40c084c2e2132a899f9c03dcbe59d207d","impliedFormat":99},{"version":"eb07eea29499b56357f7593fbdbc6d2312d8afc32c14396952db8d897ea0c4c2","impliedFormat":99},{"version":"06efe54b5ceaa113fbc649424419746efde6dcd5af2a7d4472efb62d751801b3","impliedFormat":99},{"version":"39613fd5250b0e6b48f03d2c994f0135c55d64060c6a0486ecfd6344d4a90a7f","impliedFormat":99},{"version":"8dfbc0d30d20c17f8a9a4487ca14ca8fab6b7d6e0432378ba50cc689d4c07a73","impliedFormat":99},{"version":"4b91040a9b0a06d098defafb39f7e6794789d39c6be0cfd95d73dd3635ca7961","impliedFormat":99},{"version":"66b67d15116c453abd384a1ec73ad2cb90b19fff4c08289360c4f3f573465838","impliedFormat":99},{"version":"5805f6ee9c3a5369ba7f37a809e226f0b217d2059d6f699cc242c9907671143f","impliedFormat":99},{"version":"2f0578c52f2b95a2a2187ad6d1d8fa4e835278871c81747c500bf04bbe0301a2","impliedFormat":99},{"version":"ee9811c1b947c37077408d66bf61ca0f7e6ffad850ecec1e246e643c51fbb5e3","impliedFormat":99},{"version":"4e919bdf4100bc0338598352ad2778d4750fb0d5facbd1bc7c5210340a1f756d","impliedFormat":99},{"version":"4b54813a405270d710da2c598f57cc0c512aad7b5f34f8d2e109862020568a58","impliedFormat":99},{"version":"ac29a9fe4dc4829c7f3f693c7667483f9903ead6ac67abf8d6a5744a5578a7a4","impliedFormat":99},{"version":"5429b7f938113b40fa315e0f100220a5801992497bc3eb05e3b395055033a93c","impliedFormat":99},{"version":"aac828f821e824489c3f10a5452e05b7abc084894dcf6cef1855fe44c88d8556","impliedFormat":99},{"version":"9dda93662ba9cc072a048ed9717df4869820cdc84ebd33db3db6e1ef354f521a","impliedFormat":99},{"version":"a769f4df15ce86d72fdc646ef33bf9ad634e2d7f544399ca030b61d61c781942","impliedFormat":99},{"version":"e1848b9ea5d00c149eae78db2141cb099cd5cd0573064c03f24fada82b2a0d94","impliedFormat":99},{"version":"535dc92c4a20901f7dad384f1fd2b19735bb33720fad67283f4c2b06c4735777","impliedFormat":99},{"version":"2aee0f37dd7974c93900bbda19ff133f2ae270938d99c50f3c6c944260d94ac2","impliedFormat":99},{"version":"e30accdbef6f904f20354b6f598d7f2f7ff29094fc5410c33f63b29b4832172a","impliedFormat":1},{"version":"d8e3ef4fff7d0d3ea72616214977dc2e8407716fb2075e48c61a930d40bfc003","impliedFormat":1},{"version":"9b7f0e34eebf9d3b7196bb340fb2b0013db8bd22fad1a5baaf394b1ad27a0adc","impliedFormat":1},{"version":"b1e5f3a55aa219247976db1b0c6af31d07673e8085197aef925f25ca08fe12c4","impliedFormat":1},{"version":"99d035e265fb5d783f128612f410c7341eac318c75a53cad0012cb2d2cf005f1","impliedFormat":99},{"version":"c609560ed4b5a840f9515229fdf7522440cfacaf2b6f21e1c3e6b46bfc4431c6","impliedFormat":99},{"version":"43980aaf3d50729108658c84a9325fb3341186024247f2af90a9114206577d06","impliedFormat":99},{"version":"a59b6920d3cd9ac94aa10df1c8f2aa9c76c91d73e4af0e745821424e73bbffc8","impliedFormat":99},{"version":"26de2510ef97324e48304cad246786f786be6b9d067746ba672724fe99eb4a76","impliedFormat":99},{"version":"8b57037ca744bd60066cb4daeb239264ae4bf833f87edb3db2d59b4ef3d745d3","impliedFormat":99},{"version":"ae650283eb740cc6f195b89c1d341c03eb93a2fbaf3f7dcd5d01e827e23cd3e3","impliedFormat":99},{"version":"a9422b34f43cc9ee3352838bcd6fc2aec4e388dd6af7f4909df84067ef5b827b","impliedFormat":99},{"version":"88729bf6ce9df1a17ce52112cfe4af935cf1463c9128d4c7dde0a11ad10cfcbe","impliedFormat":99},{"version":"3e0d929622db87b5431036fec53dcf6f98fef5c6dae84570ac1c0c7b3c005ffb","impliedFormat":99},{"version":"53090b74e67c3dde2e97a5f3deaf1f1d2184d5caba7124193ebfc3be2daa667d","impliedFormat":99},{"version":"269966782bfaa41f1f629936d53d6ac01020c60abde7a1f70196a4405018f0b2","impliedFormat":99},{"version":"a507cef707a17f4f58b0f106ed3bf5fb044a9cab3f7c24eaeed10e1fdbab6151","impliedFormat":99},{"version":"a14cb49589c589d4e1257bf7bb457548785b619d37e245fe2a6c1b942156584b","impliedFormat":99},{"version":"272f5f51201ffbd79dbb3533503dd3e20d7f8d1040ad42f33068bf9d0b163e7d","impliedFormat":99},{"version":"85a6e5140a3bf1abbba9e6184d732d25648d20007116cbf39bd3baa9312441f2","impliedFormat":99},{"version":"bb9e472d55badebf8969025cc126eb857874252c58795ee5c6e74d686700ed21","impliedFormat":99},{"version":"7be935d17f4f54e3263e1526bae0128ebd6b15835e6c22116a44d8e0ada5a74b","impliedFormat":99},{"version":"b4aece44eaa3781d058e4f0790aa4a4e1d2012a1d62c73ad05e6a5737a7ee293","impliedFormat":99},{"version":"8519f682ce37f2d021cd6072049a7ac2db5fdef449afa3a2a226d346c25d5962","impliedFormat":99},{"version":"a43478ba83037f64bb87ea8471a7e8a407efa910a75540b384593bcce2d38c48","impliedFormat":99},{"version":"9bc917d7e01d56dfae1f76108a8cad4957f961cb51aa23c5d2e69ef3db286e20","impliedFormat":99},{"version":"b0fc879036b6a62cc7cbd27ea444f6fbe57fbef1b1d039b0d566df2117ffb499","impliedFormat":99},{"version":"f321683ba426eff0d826901b147eabd2d23428147643c869ec99c51da801290d","impliedFormat":99},{"version":"3c1183883c83dbb1be210210e1c11a878f87d60f8afc1b3972cc6388c87e7971","impliedFormat":99},{"version":"3c1183883c83dbb1be210210e1c11a878f87d60f8afc1b3972cc6388c87e7971","impliedFormat":99},{"version":"0b4125a4b9bc524a75e880a6f31849624262d8c97cde4a5da1d34256c95f5bfe","impliedFormat":99},{"version":"0c95bbcf76de3e231a4288d81d9e897e10c73da899277da633b44a08eb8eefba","impliedFormat":99},{"version":"d0ca01ffa779f381a0ec9d9efe34ea3cc98b45e4056ab44b5268766d63aab647","impliedFormat":99},{"version":"b5738f6245eee46675619b44f6af0d70f7586be229fb360532a80c44b1b49ff9","impliedFormat":99},{"version":"517171e44831ae1b5c34ba7aa7c7f1dcb21902c31d3f7b2abb51e497a0b99e6f","impliedFormat":99},{"version":"e2e3cde2cec99e82ea98a82c5bd92ed12e4fea8cf402a6e035d5bd2a7cca281a","impliedFormat":99},{"version":"2639caf99c5969ac53c622f5fafed83ca12d53fa87f406aa2cb7467a1103877b","impliedFormat":99},{"version":"a23d0164a568e779958e7643d81d88dc9027e80ed65e3a54da2505af249d329b","impliedFormat":99},{"version":"2131b5fbfbb47e80581e06e8bd11c7bfefcda71f088aa5f1d137d289c20a2222","impliedFormat":99},{"version":"c0c57f6c7ed346d12352f55865e539621bdcad36045d2b9e71be0e168b1192aa","impliedFormat":99},{"version":"11fd3ff2c4379a9f482f0d7c8591fd679d4f8dcab82046db3a1812f8713f2373","impliedFormat":99},{"version":"36f2ab77365fd65ee3261475892dba15c0fe452077a93a19a63aaf2acb62fc98","impliedFormat":99},{"version":"bb9cd6cc3af0b5e3ffa70cb1de85fe6946b3a3f1f10ebed7ed8c772f7ae50466","impliedFormat":99},{"version":"5b3a8b45bba54d7ef198eefa8c61eed06ec95d267108353c1517742be9eecb88","impliedFormat":99},{"version":"8081faa1962486c7e9e5fc2dff88fae24d868c5a585cdb2c38ba1c15fce4deae","impliedFormat":99},{"version":"9f57322db1a5da7c827f95f23fc860c2296730373a87436ad2ee23644c3c86a3","impliedFormat":99},{"version":"1ee555a004b7194196d6d51cf73227cfc1c0f0d043da9a649e5e867a25d1a2fc","impliedFormat":99},{"version":"1d6201fba84d7d56be10c34ef4f816988da4bfd1548902300f3e031a4f482833","impliedFormat":99},{"version":"51e530ae5cf54f398bee91699fa140199f96f2f55b8fa23901815b02c9721fde","impliedFormat":99},{"version":"18cc29fdaa42892eb79f03b9f00bd4619a35bb6dbc1805a7c5f94d9b0e96bf6a","impliedFormat":99},{"version":"b00e3cca08af70a9cad820cfc0c78e477d67b3f72d5f2d6ca967172e3a971f8b","impliedFormat":99},{"version":"9151c2db5ef596dc764093003dc730d6d3d1f75eaf5fa117f6caa2474e98a634","impliedFormat":99},{"version":"12b545c39034ef75d9b4b66d21324cfd2d37ca0f33c563fdd7e32a9f02839ab6","impliedFormat":99},{"version":"a178ef7d260e3ae2d4bb5ef46000ac0ad00c79a454a80b1e03615ae4e410596a","impliedFormat":99},{"version":"bf48205fdc00bea0ed458cf81a57e4cdb09e740669370be0e17a92e0a89338fc","impliedFormat":99},{"version":"b5873d1c47eff986c60cb5d61878fc2734a8c3e8cc64b7e183fbcdae3676aec8","impliedFormat":99},{"version":"3d1354d536d8ea970fca6ea675d5932b2d5720ac458fa85afcdd80f3b708c763","impliedFormat":99},{"version":"a06839234f46aa66759cd492ce3f716a9f32fc30d9310e1b7618c1f5cc075a62","impliedFormat":99},{"version":"92929866d4c2be4b9510afc8ce088817d8a2f5b58398cc032aa3e587fb700a42","impliedFormat":99},{"version":"6483a445bd97d8cc1545cebe5b4b84e7611c5f2ac65adf4fba8188e1758cb1b1","impliedFormat":99},{"version":"4cdce6d44ef612092168edba4cb736735dda79314c8d816bb376d2d4a4aa7f0c","impliedFormat":99},{"version":"d8ef707d006fdf8e64a9ea3673c4748374cac72d794b632dd6868e7973de3b55","impliedFormat":99},{"version":"695dbe57a9f1686b727ff8112def7376b69da4a9f92a6b4660cfc7adfeb4fd57","impliedFormat":99},{"version":"e30accdbef6f904f20354b6f598d7f2f7ff29094fc5410c33f63b29b4832172a","impliedFormat":1},{"version":"5fd2267cea69c19286f0e90a9ba78c0e19c3782ab2580bfc2f5678c5326fb78a","impliedFormat":1},{"version":"2a628d887712c299dd78731d2e18e5d456ac03fb258b8e39f61b2478b02481ee","impliedFormat":1},{"version":"b1e5f3a55aa219247976db1b0c6af31d07673e8085197aef925f25ca08fe12c4","impliedFormat":1},{"version":"e9f80c5934982b97886eadab6684c073344a588d1758b12fba2d0184e6f450a2","impliedFormat":99},{"version":"c609560ed4b5a840f9515229fdf7522440cfacaf2b6f21e1c3e6b46bfc4431c6","impliedFormat":99},{"version":"43980aaf3d50729108658c84a9325fb3341186024247f2af90a9114206577d06","impliedFormat":99},{"version":"a59b6920d3cd9ac94aa10df1c8f2aa9c76c91d73e4af0e745821424e73bbffc8","impliedFormat":99},{"version":"26de2510ef97324e48304cad246786f786be6b9d067746ba672724fe99eb4a76","impliedFormat":99},{"version":"a822bb869dd9dfdb4b1b5c887b90373d5a1e900191772646b6211541a5ea13b8","impliedFormat":99},{"version":"ba56cf294acda8f40e97bdf8f102617b57c914664476e1f900db307ad0e8c3f2","impliedFormat":99},{"version":"92be2c8229c02b140324d56906af58882ffd87ead115a34380580e9dedea4a18","impliedFormat":99},{"version":"a507cef707a17f4f58b0f106ed3bf5fb044a9cab3f7c24eaeed10e1fdbab6151","impliedFormat":99},{"version":"a14cb49589c589d4e1257bf7bb457548785b619d37e245fe2a6c1b942156584b","impliedFormat":99},{"version":"272f5f51201ffbd79dbb3533503dd3e20d7f8d1040ad42f33068bf9d0b163e7d","impliedFormat":99},{"version":"85a6e5140a3bf1abbba9e6184d732d25648d20007116cbf39bd3baa9312441f2","impliedFormat":99},{"version":"bb9e472d55badebf8969025cc126eb857874252c58795ee5c6e74d686700ed21","impliedFormat":99},{"version":"7be935d17f4f54e3263e1526bae0128ebd6b15835e6c22116a44d8e0ada5a74b","impliedFormat":99},{"version":"b4aece44eaa3781d058e4f0790aa4a4e1d2012a1d62c73ad05e6a5737a7ee293","impliedFormat":99},{"version":"8519f682ce37f2d021cd6072049a7ac2db5fdef449afa3a2a226d346c25d5962","impliedFormat":99},{"version":"a43478ba83037f64bb87ea8471a7e8a407efa910a75540b384593bcce2d38c48","impliedFormat":99},{"version":"9bc917d7e01d56dfae1f76108a8cad4957f961cb51aa23c5d2e69ef3db286e20","impliedFormat":99},{"version":"b0fc879036b6a62cc7cbd27ea444f6fbe57fbef1b1d039b0d566df2117ffb499","impliedFormat":99},{"version":"69b3e0b9435c37d191bce1a4d38c8d18e8add8cb99835eab8f566b95ad9de828","impliedFormat":99},{"version":"3c1183883c83dbb1be210210e1c11a878f87d60f8afc1b3972cc6388c87e7971","impliedFormat":99},{"version":"3c1183883c83dbb1be210210e1c11a878f87d60f8afc1b3972cc6388c87e7971","impliedFormat":99},{"version":"0b4125a4b9bc524a75e880a6f31849624262d8c97cde4a5da1d34256c95f5bfe","impliedFormat":99},{"version":"0c95bbcf76de3e231a4288d81d9e897e10c73da899277da633b44a08eb8eefba","impliedFormat":99},{"version":"d0ca01ffa779f381a0ec9d9efe34ea3cc98b45e4056ab44b5268766d63aab647","impliedFormat":99},{"version":"b5738f6245eee46675619b44f6af0d70f7586be229fb360532a80c44b1b49ff9","impliedFormat":99},{"version":"517171e44831ae1b5c34ba7aa7c7f1dcb21902c31d3f7b2abb51e497a0b99e6f","impliedFormat":99},{"version":"e2e3cde2cec99e82ea98a82c5bd92ed12e4fea8cf402a6e035d5bd2a7cca281a","impliedFormat":99},{"version":"9382e32237e08424b2642d1d9ea4af3a76001cef48888273f769af0c95cf169b","impliedFormat":99},{"version":"45a95142d20916e8510b2d4c42b09aaa3d8ca3d0c3dbd7f915da870ad182380c","impliedFormat":99},{"version":"2131b5fbfbb47e80581e06e8bd11c7bfefcda71f088aa5f1d137d289c20a2222","impliedFormat":99},{"version":"c0c57f6c7ed346d12352f55865e539621bdcad36045d2b9e71be0e168b1192aa","impliedFormat":99},{"version":"11fd3ff2c4379a9f482f0d7c8591fd679d4f8dcab82046db3a1812f8713f2373","impliedFormat":99},{"version":"36f2ab77365fd65ee3261475892dba15c0fe452077a93a19a63aaf2acb62fc98","impliedFormat":99},{"version":"bb9cd6cc3af0b5e3ffa70cb1de85fe6946b3a3f1f10ebed7ed8c772f7ae50466","impliedFormat":99},{"version":"5b3a8b45bba54d7ef198eefa8c61eed06ec95d267108353c1517742be9eecb88","impliedFormat":99},{"version":"8081faa1962486c7e9e5fc2dff88fae24d868c5a585cdb2c38ba1c15fce4deae","impliedFormat":99},{"version":"9f57322db1a5da7c827f95f23fc860c2296730373a87436ad2ee23644c3c86a3","impliedFormat":99},{"version":"1ee555a004b7194196d6d51cf73227cfc1c0f0d043da9a649e5e867a25d1a2fc","impliedFormat":99},{"version":"1d6201fba84d7d56be10c34ef4f816988da4bfd1548902300f3e031a4f482833","impliedFormat":99},{"version":"51e530ae5cf54f398bee91699fa140199f96f2f55b8fa23901815b02c9721fde","impliedFormat":99},{"version":"18cc29fdaa42892eb79f03b9f00bd4619a35bb6dbc1805a7c5f94d9b0e96bf6a","impliedFormat":99},{"version":"b00e3cca08af70a9cad820cfc0c78e477d67b3f72d5f2d6ca967172e3a971f8b","impliedFormat":99},{"version":"9151c2db5ef596dc764093003dc730d6d3d1f75eaf5fa117f6caa2474e98a634","impliedFormat":99},{"version":"827f0158dcf51b4afd0bf7867d30ac9436535fb4422b891a16b88799f9caa6e8","impliedFormat":99},{"version":"a178ef7d260e3ae2d4bb5ef46000ac0ad00c79a454a80b1e03615ae4e410596a","impliedFormat":99},{"version":"6e477dd31a5483cbab13f1f907b29474b33a5140dd4e8672a7ebe00aa27984cf","impliedFormat":99},{"version":"b5873d1c47eff986c60cb5d61878fc2734a8c3e8cc64b7e183fbcdae3676aec8","impliedFormat":99},{"version":"3d1354d536d8ea970fca6ea675d5932b2d5720ac458fa85afcdd80f3b708c763","impliedFormat":99},{"version":"a06839234f46aa66759cd492ce3f716a9f32fc30d9310e1b7618c1f5cc075a62","impliedFormat":99},{"version":"92929866d4c2be4b9510afc8ce088817d8a2f5b58398cc032aa3e587fb700a42","impliedFormat":99},{"version":"6483a445bd97d8cc1545cebe5b4b84e7611c5f2ac65adf4fba8188e1758cb1b1","impliedFormat":99},{"version":"513d0b8895a905e579ed2baebdc817a23dae16e78ecd925400e3142a8096f33e","impliedFormat":99},{"version":"fce0bcc6a86782ed4eda9ed21c4843dfa3c0845db64634867034d249ac0933ea","signature":"65fe0c4c818cbc60e5bfaa2e73af1833feee5840b682e0b36f5b6f033b5adf19"},"51caf311b5397bb74553bc28cc85973db9f9a7a327c68866e7e7750b72dca42b",{"version":"d392af7961eda9588aed6392908f014fa318daf9e8a952339ed3db69e9ce5273","signature":"0ceb4ef84ef078e260af63215f7878d2086590ac443fe35a3d510f1c8f792bdf"},"2778747ec5f0fa749a66df42831ea70270ab3a17a94f1313e01905b794f92a47","925bb05a1ae6a8d137cf092bc8b31e54ebaa5559a444583eddcff605647d5544","01dd48041d3b0d86d198e58cb750852eea8f0a78d40cd52f7e50bf6f33a06dee",{"version":"89fc4cad6ac7ac6d922523b3ab51462b050189ab335766149e5cc777483d4e1b","impliedFormat":1},{"version":"27b14b091ccf309c79f3d2cf226edfa4d533b131f19bc0cbe855adebd464c285","impliedFormat":99},"d41171d9f336c406532c26d9706a7f3dbb54d757e4dd418d1f21623e8871c740",{"version":"5276ee82ef96770571bd5aae9f4f5cdd474c3d4c1a068f1e1d9ab9cf16529975","impliedFormat":1},{"version":"cdb1d174036ebdb04b5a61461ff523efaeefffd87b093f43fdf20196024b2003","impliedFormat":1},{"version":"23c2c70dd974c3b8b66be4f3d6c9351fd41235d9c038b4d57d334dda8f753819","impliedFormat":1},{"version":"dffa09d0911ebb2639cae47397e011cc195de4a3ad83b53efb2651cfa0e0b75e","impliedFormat":1},{"version":"7d2c1ce36b9370a3af266ca6c663fe62e82671f9cf41337bda0efd837a5e2de9","impliedFormat":1},{"version":"6e45f5dd809aca05301c8e1b9f526096fe89b3369da10fe34f9c037832f103a9","impliedFormat":1},{"version":"0db63cf288cd71a85b06be8065db706797fb7d368a2315bd34967070c880facc","impliedFormat":1},{"version":"755ee0128a813468af08c5e673655a068813c92f4179978fd37ac3df1688c2f8","impliedFormat":1},{"version":"f183da4c889c90d5060aacc1c247c6cd68cc0024b9891402bb1c07a492d18018","impliedFormat":1},{"version":"da1c8718353e2981fa5981328a2d5cf6bc70da59c51967924d032a06177bce50","impliedFormat":1},{"version":"cba87731af3b8e51151ab6b3ba2d9604739649cf132885dff49836d5369ae387","impliedFormat":1},{"version":"3965bb091883ba173f7742c16ec8efe81207d75774d3a809385edce6841adca0","impliedFormat":1},{"version":"108fd0cab464e528dfa511d982368df2c9d9964e1e66f8921ef40accce9dfcf7","impliedFormat":1},{"version":"8d48c98fca3f013fd2872810d7168a9c405c4037962637aaa0a094571e731757","impliedFormat":1},{"version":"9898a7c6ed78c9656079244ea2318282f42ffd1cb5d4aa5753decaa7f3eaafa2","impliedFormat":1},{"version":"cd76d0f1eff1c892bd783f4a53efe2470746b892e810f60a5c82dc5a858d13c8","signature":"3bc043476397d7853285aa2c2c9563355245e633caa301ebe3dde1f24880f533"},"92a71fd81ccd1c569d4922967f10b4bf8e680ee7e97b9caadb5426a70249263e","132279ec90347f347997306254f472ccf473cf7ec59e6cbc358c8b3e3d917dd0","283bbcc38c91737aea86f8d5362b4fb48894b64ae12a7341563a1ce7372eb39c","8c3a4923961d532c332df2f3915a4a70441449f099cea296ca91a02bf6b9f310",{"version":"b4f89206c8e318e5e65294ae7925a52a5bc13508809c5c699d7ebfa14e0509eb","affectsGlobalScope":true,"impliedFormat":1},{"version":"d51500cee65d776a8591b72c1019b0dada25d6f7ea39685130ccedad2e8b1eff","impliedFormat":1},{"version":"e733b8a7d2ecce20916d95d75a0c7cdfff7e8371879006902d77969da1550d65","impliedFormat":1},{"version":"d9d5884c0b7a87c6b0b319474eac7987f915f7460a04012d54689c14c800d69c","impliedFormat":1},{"version":"42739f43f21108aaa8b2e9d1246c537c88fc193694d5c3660b49ab5ed87bec60","impliedFormat":1},{"version":"8c4c212cbe640024a5076e006d5ed48c6856bf3a79880c52d0fe453495b84e7d","impliedFormat":1},{"version":"8dbd432facc1bfd211d58bbbf86a405dd55cdf04d6425037171282ae5e1bd5ae","impliedFormat":1},{"version":"bd0ae662720de3f141b078c64de498113fb13faec0c1cbec62f1630f7b8954a3","impliedFormat":1},{"version":"517fee0f998ca443a8eedaed7ad143753cd7ed6c9fc97a62200c09b21ea661d7","impliedFormat":1},{"version":"e94e5a0936bba407a0d0b7846ff8a7960667f09040b575b5035bc30298510781","impliedFormat":1},{"version":"f6a3229a9d452117bfc85b50e955b836c8c91b1244dd8d3413c2824333022982","impliedFormat":1},{"version":"75d3a0dcb75b27ae7f6d3bc06ebacc608c5145b2f403264b64d603d0be929bca","impliedFormat":1},{"version":"28732171a9e5a176e9d8b9bb417b32dc885591bc2642232389a44167bc5ec581","impliedFormat":1},{"version":"90ebe8ddee75b7e87baf030d45d49e13a91dea47fa4cd8494ac85e5ea35779c8","impliedFormat":1},{"version":"6ec1d690b2213c008b55d31778e6c4f13141487fe26749ee6a0b4c2b6f84f9c9","impliedFormat":1},{"version":"43ae0b1b0a836f113aa973b1a4d114e2867fd320125e43a80805d9a80ab07c4b","impliedFormat":1},{"version":"1b6d1aeb6a58db9a9702623d7edaa31eda44cb33fe66f349f6156b20db8b6211","impliedFormat":1},{"version":"5ee542acb0e360c539bcf027de4389536fdaae8653e47b33eb0445ba85bf223a","impliedFormat":1},{"version":"8a0a53613cfa756a769e4514632acac0e17d80631af21a888daa46ac01ccdd1d","impliedFormat":1},{"version":"e7f9e4cf51627c95fdddff062c58c6b1c4e22d1868acbf3e7e663ee95e3790b8","impliedFormat":1},{"version":"449d082b398ad2a53c5def35397b752d61c968a2acacffb935d564b5ff3aa19c","impliedFormat":1},{"version":"1a3aa0fb5f9a2dc05a33faa6246f85ecc52c8af7a5257d8639e724a12ebc92bf","impliedFormat":1},{"version":"6480e9b0877e389c96e3b89c43fb2e4d84bb6ae8cea22f8ea2bf30ac4a4c4136","impliedFormat":1},{"version":"9cd1a75410c01f48f43befd40b47a7d2d42565b5593d5cf02b7472b04a1d98c8","impliedFormat":1},{"version":"d0144e7240c7f26030468a13211194d192316099ebbcee7782c6005cc393c734","impliedFormat":1},{"version":"095a402135de9fbfda29ba7c984bf54b9e65757396b4165706d898e9baa83ed5","impliedFormat":99},{"version":"0b6471168629b8a0cbac9f8f67bbbba83a1d64cf1424cd7d299439b3af88129a","impliedFormat":99},{"version":"3e0fa3b04086663fd406499ea37f0714b0d7cbc296eb81e244f2bf0ba4938bb2","impliedFormat":99},{"version":"3d11abe325e68a5b76d9f53ecc0b4ea29685ccbd8690b279f2177e0750d87f8c","impliedFormat":99},{"version":"f1952d24cb1344241341230924197977764249edcde80605e96454f073ebb35a","impliedFormat":99},{"version":"3b5b37b56d81802168c5b8df2f1d4a7ee018d67e7463f221d49b6ea20af00060","impliedFormat":99},{"version":"f3a6db8faeb959400a4d0e1100b9d5c54eb494800e6dc9a2452bb2e00a27397c","impliedFormat":99},{"version":"d278699a1c7e06a195ecc065c4965d1bbfb5bc2d67176e63bebf58b273158023","impliedFormat":99},{"version":"261ffd2f7502d9387324715c7dcb9f3a30c8d044b6dc3abc7ff80737c366476c","impliedFormat":99},{"version":"28729ff7b2ea98a9ba6ca4490c5540be744a4d73b4199ff6094cb65c9db33607","impliedFormat":99},{"version":"6ac889647435812fb7ced7035daf90c1f307710056e4b496a3fd5cb97c87daed","impliedFormat":99},{"version":"29f60d17027d6bc8891797f6ed95ac84ee42313e6b03ddb49beff6f22f49f8c6","impliedFormat":99},{"version":"f71579228be8825267577e970c8f0ee2869cebae0bb7603b00644fec924c6717","impliedFormat":99},{"version":"e50f096cb424b63343ad5814622623f15cf3830f41710376bebb3c7f71554713","impliedFormat":99},{"version":"69ebae4354b59ff1ba38419d6033e22d0db6ffe6c1d562e78914f88f06ec517f","impliedFormat":99},{"version":"45f0aee62dc187cbde99b10987e1f8649a30bba8bf9c95957e37d1551d0626da","impliedFormat":99},{"version":"919b048385b82efca27e5adec2f61f17a2b219582f2deb8a13b4648c7c8fafbf","impliedFormat":99},{"version":"47747eabb3c64620a12f707bf30c7f7a211e25754a2da1f98267068f49bd0947","impliedFormat":99},{"version":"2dc1bcd6a132924a89f965b60edd5b5333aaa7eb28ba5af44a0a0a328756e9ad","impliedFormat":1},{"version":"ad117b97b2eb65daeeabf0adb13573a8f1d12d5ce21c312eb7eb588106b92560","impliedFormat":1},{"version":"683f7d52795b5e2c0a269c4a202f212d147eee850b6d74050af619cea7638605","impliedFormat":1},{"version":"bf338c88f9e91b1700029f806a2d8bb447f19d3e39fa57dbba16ce8bf43902c2","impliedFormat":1},{"version":"d3c9c7df6fe4c7905f73578af2542e2f303da2b0565abb10ccf8a75626da1bb5","impliedFormat":1},{"version":"a16c041923053317f99708de244e50f0c563de0ee22313739810b67cec8af89a","impliedFormat":1},{"version":"b64880a77efc0fba08ee595d277a52e7abbdef2dde51a163376f03d6d3a67c7a","impliedFormat":1},{"version":"817d7ba9b41a1f3f7d15e8c1067bc32ce0044aab0ba05e2794294ed25959cdf7","impliedFormat":1},{"version":"6e6d52eece8b335d10a436ca59f91cbf0727f9f2ac0521a0b0ffc32da2006948","impliedFormat":1},{"version":"98e70d3105aa56ac3e2a34a78f10c6d352ff9e3148b1bc2bb11c1787f0176d26","impliedFormat":1},{"version":"144ffc9e0632f167247b8ebc6c12b690555b27930cb2d92edceea7df51e54bbe","impliedFormat":1},{"version":"cb6b2bd587f4d8b0299840be7cedf422fb895d3c7f6cbd8c18c041518ba82fee","impliedFormat":1},{"version":"849b51d422f1a846684da755840ffe68f65701b7b7703ea9622847df65dfb2cb","impliedFormat":1},{"version":"3b17eebfd6fea2320c3d3ab55e26bee41e6745fe51432da7901e898249a8c186","impliedFormat":1},{"version":"5d9c054ecd5fad83e0ec5e117196acdcd4b1cc5b8d28f5df752a416c27052aa2","impliedFormat":1},{"version":"949c8eb79434b05b6d1c10d2010216fbd6c920ee376d08627f717d24b6572454","impliedFormat":1},{"version":"25495d26470692e2591e386c1dbffe4aa0b2d8c00af6ac9c8c69657818262dd5","impliedFormat":1},{"version":"abee0197420ed0849c7adbff50fc13f54ccb52f9a8c906e298c28321bf736cd9","impliedFormat":1},{"version":"3af7286265437a7488193d0ab0b56a6e20e1a5e08831a6c3fe0880212c2c6c75","impliedFormat":1},{"version":"d7eadcb936edf325912a70d1c4874c29b92463ba1eecdb302858763db6a68692","impliedFormat":1},{"version":"04fe6e4f5bd35c234cd04ea88ada66b718aec4b3edf611147b0ec9ea216b3cd7","impliedFormat":1},{"version":"7aa826d09dcfa85af6b2cfeeb6a7f340d417968632695fa8eacf4186fb71e8ac","impliedFormat":1},{"version":"ebbf2bf006f21fc203f1a555ff0fdcd8542d1546d7cab60aa835ff5902db0d2d","impliedFormat":1},{"version":"12aaf4e3c85225c710acd6a9f41532bf8e06bf180e54c1bedc60fa9b9c1a7d23","impliedFormat":1},{"version":"7814f653054116409bc9a36968b77c878c2013ef8d8873328e8f6fcd3348d8d9","impliedFormat":1},{"version":"ff4ade9606d1b3fe1a10bdf6ab944e1bb1d5ac86035228ddd3ecb5fbe51d4d47","impliedFormat":99},{"version":"608ffc65e122c3eeeff832a9007ecc00fe71bf1b03a3069a44e8c565ee8af368","impliedFormat":99},{"version":"40b54b241bc79a986a5ac364f7f11c60af8c68ac8d45c80501ed31af7e587a74","impliedFormat":1},{"version":"0d1a503605c35a53f49ff2b6506704b289bc33d9001d2244044c91fc82315c8a","impliedFormat":1},{"version":"96d1d70759af66ea4404f7c18130ef478e5052de8863e2bf4467cfbc2fc7176a","impliedFormat":1},{"version":"fcb4542949fbf132a400c60cc53b79dde681570147af3a5798aa732798c6b0f1","impliedFormat":1},{"version":"9332e2b6255fd361167671093522351ad5e2d0e3a78d9bf8f0959d779f6d3246","impliedFormat":1},{"version":"5be2e2b5ca39c4fc74b0273674a3e7705088513872fa3de1e4f75357a507a988","impliedFormat":1},{"version":"fc8bef71b44a15c1c6afe97e2ce74c7beb10d0a3c45d19dca5b9d53cf81cc744","impliedFormat":1},{"version":"41dd7695c5e11ca31e40bb8d9a2edc9c2b3e262d1007fc7471ecb91516874d98","impliedFormat":1},{"version":"262efb4650083ac514f3119534d502211d0270140057698e7d4978caaf4b6f97","impliedFormat":1},{"version":"b5e98f1f4e64ace252ae743df592ff0187aac817efaf58cd97c63e243fe15951","impliedFormat":1},{"version":"151f53de4563905919248ae634d857276a8491e62416b6f2cccbfebfe6794a72","impliedFormat":1},"8f7f0fe9723363d03731e2af36efe952b9c8dfae8c9c4feca85f917c8d38ee95","7ecd76861caed403cf1c2e800d380817179703bb003a7e94141e51e9e520a16e","dcfa51263066f8d4064c483762236b3257512c2d88434e8a2f1010fc8d77a729","9811c23f18ed827f5f95f59ac41d59c24e048811741bc97ef4751a6e4b588c93","764d3e4fb632118dd99a7e8109e64f2663f14cf970b4d45e8b9b74ba705f68c2","a993b6a3db6a2d2963115b8eb8e4e04ff6e4de394170571a5b703e482ff5314c","767f21b5b918baaab7627cedd23e90e96c6988f86477df1208b5111f41aee03d","51b6fd7947e721d16a909d057b5d9b008e7c467c94efb5cfbca51edaf10454f4","f846a25a6ad92fae372999fc49fb5fe1febd68ca3eea39ef83425a46cc016776","409ffeafca5a6a110031899b1ede663a3c3fa929124893367f4934e32700d68e","21adf40e2fb8b0a48342d2eaf4125363d94acb49cc59f5ac369749efe683990f","05da203db76a7efb938df54d8cf7db7946fb7c89099b5c41c78662d95b8f7fcb","79b4596a792ed6cc9300ab60c2d21d820f4a13717d14e573b55816cdfb245de2","6c96ec3120fd9f90fe1afc383f6b2f92b824907883c6f99268b5167185b0a3d8","4bb6f6bbc4448a16ffb70812aa37b20ca3941b27443ca36d9d3a499a8bf1d564","ced87fa12049ceb1366ca1f09f6513cc7eea164e6922411dc96af74f9d44cc3f","d2e4a17c63760596ff90b4309942c815d06024e25e7a60bea36d17393602bc79","21e7c97a4a252f6c062480252b3f885ec2e7b67ac56664d2779d4874d1d1916e","aba51eb73c16adbc21fd09bf64b6014e84c469284c501a3c9aacf242aa29279d","26b123b60d4d748e6ad048813295f4c368d46faef228690732d8d289a1a5af8d","5d83ba0eae0798f047802f636c62c4189ef4079f2d017f33b14086fae18b0fd9","1d568d68dad90166c8e322e3a301441095b2e149d458f411209fe6e29f0ec1c2","2d995c15bd75d777ddb5e05b3e838750a7a0e229d9503204984aac0e36d886b6","6cad528e6075009933bc7ec3a49f1d4574995a45e5f1fdfe04a0c38dc693ef57","8c504f40166472fe55bb138187ade1677c14699b70731d3d862d5d19193814a7","7d1e53d013ca549fa99df6bb961822493e2878f2f2ba935e95210c9b7a24cd68",{"version":"5276ee82ef96770571bd5aae9f4f5cdd474c3d4c1a068f1e1d9ab9cf16529975","impliedFormat":1},{"version":"cdb1d174036ebdb04b5a61461ff523efaeefffd87b093f43fdf20196024b2003","impliedFormat":1},{"version":"23c2c70dd974c3b8b66be4f3d6c9351fd41235d9c038b4d57d334dda8f753819","impliedFormat":1},{"version":"dffa09d0911ebb2639cae47397e011cc195de4a3ad83b53efb2651cfa0e0b75e","impliedFormat":1},{"version":"26168183003371ceac063f0cdf62be889d0515a193444a99b176094565dabb0a","impliedFormat":1},{"version":"7fc99221160c51281d2b9095552be2b24b600b3b6fe305cfd068bf501f623ef2","impliedFormat":1},{"version":"e36eeb1297210f99ef4644a5028caa2f222cee56f5f577909470aae77924b7fc","impliedFormat":1},{"version":"755ee0128a813468af08c5e673655a068813c92f4179978fd37ac3df1688c2f8","impliedFormat":1},{"version":"f183da4c889c90d5060aacc1c247c6cd68cc0024b9891402bb1c07a492d18018","impliedFormat":1},{"version":"da1c8718353e2981fa5981328a2d5cf6bc70da59c51967924d032a06177bce50","impliedFormat":1},{"version":"b4b9c09ebf50026552009c501feafa8d69c58dd29cfee93f54d5783f8fc6d2b9","impliedFormat":1},{"version":"3965bb091883ba173f7742c16ec8efe81207d75774d3a809385edce6841adca0","impliedFormat":1},{"version":"c1eb69b3ec8f1080980c25c8244c4ba093af729f4dac451758e69026b20c50a7","impliedFormat":1},{"version":"f67870591872110fd6a97ec0d933972f21ccf433bfb9d8ed1f044740958c4e43","impliedFormat":1},"70d4ad847cb64eb83528a594bc5eba51fe712394c7b5c1de540dbfa1fbb252a6","0a598b4c856c45b4847ceb8cbf5e4dfb8eb164053ee407775363fad2b3689893",{"version":"a28e6fadb0b6e7a95cfcd29366f2b72a8e3193270d3f2b673e1876edf0159c7b","impliedFormat":99},"16db379ab816c2dcb506ece1955925fad9cf7e60a27e192f0ae274abeab0e4e5","c24ff7cbdbc36ed2758430652fd2c208c35f23a69b0204b07d6f3ed016eed9f6",{"version":"9be0dc6f4c5ebff5d838dc0d059f25e5a6ab1d224d5adc7ef46887ce8549e897","impliedFormat":99},{"version":"32aa20fd978847e617304582657723f0dcd1809de9b087ed0ad5b7090b1a47c1","impliedFormat":99},{"version":"1f37db92ea78f4d197a201f80a3c52ce6e2b759b19d3a1e9de5aab0c9026fe3f","impliedFormat":99},{"version":"c07898a85c15b3b636506443e88fe6d85bbd568c0bb504a9ae5cb371d58f6319","impliedFormat":99},{"version":"795d467a57e3a7c4aa3d645fa2edae9a2d0d44dde435bd1b222ab533da6fce44","impliedFormat":99},{"version":"bfc5aa7977557874fcbe1e96f7a06e46b3b568b955c82b74a85cc8f6c62060a5","impliedFormat":99},{"version":"f20bb3ae0de20cd6a4b73155cb506bae39e904b7e5ea4f618f5bda7b3ae474fc","impliedFormat":99},{"version":"44c5d9f47e85552ea141ddc1b0af65903297624f0ff2227372d5ce31ff0380c6","impliedFormat":99},"6bfb9aeb01e1f2a8f2b6196412ce85dc2b7cdc8dcf1962f2e1b6516093e8269c","e4a4f02927024f5fbf9e91abffcec93c3771168b5bc36dea3091b152d5f3186d",{"version":"a896cee6bbf43009c05e9ee4b0cfb1147ae49a4ffc2d814c6d7465806d76fe72","impliedFormat":99},{"version":"6bd987ccf12886137d96b81e48f65a7a6fa940085753c4e212c91f51555f13e5","impliedFormat":1},"8151759f968a478356f66626323955df04679687e8bded20e1ee7b29027fc8a2","476bb552263792befe628d5b588cfee6310e91d27d8e5e3135e3c64cfdf661d6","249a206e642fb5f7539f5127d3a5c6a49de3b802ca604e2b5fff4f38f844bfe3","4a9e0a7891dc98c602bfcdd97d00bfebe517011e39a0f88926cf619ee24d9aa1","4fab487193cffe755885c698cc1bdc01b00ecf4dcca0dddfc447d88970681c97","401cbeffc1cbc3427fc85070bb0dd35df981fcf82a30318e9b468a660a95f743","c84078b0f3b82c13b2e97be494c0f1071a89df00858c9035ea5444924a263884","7293106d19cf62705dc6f168cdb00e7e4c37d57f1019d73eab5e5633f002abfb","8bc0222adfdb85b62b1a3f1ac9fafb8e1116c6494cc86782ac2a7fb6d13bd09b","1de97be13cb6d21a4a1da963d41b6141b27f05786ffdb35713bf378328eac097","e538c60f67d9e7d463ce9fc6299a9c1e436fea994f03f14e436871f69659854f","19b53283228e93ccee1500899e42b4d22853555d91fb8f2efa3f82922cdbdc41","9c93d91720155376e598da843b36a77a24890972270195940569950846c0c7d2","8236d0455cdc0c5df74726e2fc7011e4d133b7df6180be669bad5e025d727308","3be0ff06250bdce15bd08cb9eda008ccabd85aa331a784dfb6d81838c470eae0","8278755295ae2604e765676713fb773b43b8a4c8b98b2bf33693c068b916ccf6","10d43e25bfdaf81335aa875387740a9e952a7f5e2f47f9bf6e473c42a7187564","22a90b05fdc32fa4ff466a5819128275749dee90a305858ef353246e723a2d85","51d4f6415cae0357ae923f7110e6f6962690e44c701589a65f2d95903e40e368","cb838c5fdd46f7f469fefa566e2b5c2fafe02be638ef02177bc1c7cbbd3bf879","53fa54de6d9b14ec6a35ac2c6e7c5dcf47ac17eb74741c57d6948db7a2ccc489","1a947f95ecc0f6a6e2ea8122470d6881b5dfb2592051b68ee8f72f8f8ee36d5f","bbdbdb42b704a60fa5d7177ef83346be726578ccf95e26add73999c1148dafea","71b2f6191be093ac9d84c9286a609f3414390ff88be50e2f01c9bcdb85d3287f","35635edf9f859027af3be25cd38a5d42e52c1258a1a3ced5703842d177dd805f","e5357f120b95cc70b91bff28981d75e63d381f96ddd12df8c6274ce209040c52","1142ae3be3921a530a00fbd2f4aa5e511375891f625fa098e2618ffbb804d3c9","3d93128631bbfed8da5aa5960e91a88249a6bfc7bd00dedc04f4d18cbffaf5ef","32377265da5db06811fb10303adbb6759f1dc0796f11c3509f8c368a394c89e7","6a374c778084795fc7a2aa1c15d20e461b1d8ace2990ecdf6ac8baaf25072b7c","90dec2351372005d3ccfe8cdcf628bee17dc7c48a6bacb3c58d13f376aa92abc","b889c9ec0f1e55e0129ce9d06f0cf10daa320f0161b7c992db8bb1ba99adb36f","f310657015f5c7accfa816f290a474674eedbbe3c79a15477d344da54f4c1c56","ca8aa1a3dec921d461a781d9f529d814dc6aff720b10f2e458cb2e0cc7058536","016017c4c67f193e806011e0f76de65cb3c4771f37a0197447ae00f4ec3d675c","f07b219d7d1e1cbe8d95d8a6e0decb00a1b6087ae186c5ebee9896e2ff413ac2","aaddc268703ab388bf6c44617543cc939831ad85d5dc0aa1984c26a6077e7d6d","1eccc6cef0e7c37d47eb03a97ace30d00bf819de8461786360bf7209960ea3ea","eb431d32ffc7698839b93fb185bd7748ce804f6ba334b5a0f84c926ca374223a","3d708b76940e1051d77827e6a8a02b2527288c6d4d1c23b5adaa16730f1f4009","5dbe51f917f9a0e623f6d4e85168f0fb54590db471edb9a959f1f9c51af279b9","62ab67147a9b8fd96a09da8fdc2471a1ca66d1aecc0f02ef58277f52e4b7c00a","02488bf52002565e729cd29363490adbdfa45672e042fa65325f761e5a69e55b","b3b660c3d033dc9ef4ad8cb72ef53689a9553d164d863df70a016388dc720563","5cc05c76b2616468da6647bba3164da3a43a5072957a361f8fd83443f70ed19b","8f8b4bf72768215e198c9d23a2e57e658df831e89db050638e8392bfd1496d79","7823de72ea86749463b18871158db12e33e7d452c2da17e770fe14f983ec8acd","fb0c6ec6d7932a3a1dc83f0eed33ab793fac1e0640bf91dc909c30cd0f0c8285","c17f9ed4e1c43d6bdf74de055df4b42366ffbdd52c818e0ae7ce0f20f849c2f7","b3a161ee261f5909ff7415f9ab59719b21c5c8d7d6a1dabde90f804ac49fa0da","eab87a5108d9732a2508991e58ea5c32b90aa3d6b959eb62b4e29cbb7322bf9c","28d3f60af41a48022385a5619c49a4c799284ebadad30d987ec1f67ef84a1ffe","747e4ce9c28359c400ab94e506648be05de64c9d991b349123a4a8fc48b84b73","1b3f557087d532489d56388c31dd4195b775cc3f735975a4589d2f54aba467c7","4aeae8d8887e81c7698be984c3505a7099f25ee58a6ae215aa5276089924918c","593be32ac4f8fe372a6bd9ea4859ca1a84d6dc84fa630e24616cf24120d68da6","afcd168776c141a058fadc66872e0765bef97fb1c7fbf8a480454bdf30b84186","6da63471ad0749bf97b1e481c0bfe6a43ca8f3daba53269568f033fed989ddf2","8a15db08fb7d7b2ab4717156081b95d4ed32a770e4624b0722e8606e91c3df4b","ff10c6742f17c4ad02e6e18981c646eb136f034df6c6da769ce518bef035dac7","386502117ad2cf606bc88655cb9195b4644bcb8f97cd1e8c5c322ac7e4006c05","ab58c363da9bc405eb1f6810b28b3add09b3f610425615360e311c1198ebd73a","0873fbc7f9d6ab783ed2e6a73403a079cab3d122c7eea69392889eb706d5297a","593be32ac4f8fe372a6bd9ea4859ca1a84d6dc84fa630e24616cf24120d68da6","9e98458ea2d271f13b0d0b5d0a492005fb0ca454d24a2645e129a42a0ce5f3fb","7a912902c1c09e09ec8f2638a4d52f6fca012d1a4402753a604c310f680263f6","a4d0dbc0f6fcba705be0aa16752ba7df2a9a4cc98d03adcf0a70d2b70d0db7c3","4b3707ee5c02dfed26946147a17ad487d954cb648a352417f7305f3a8b0b091e","118fed45cbddb3c9b4a4dab8c83967bd4f61d7b0afd8f148045b4287a4cef9a9","2a100a93d6afbe9e3363df7d206b8a3ce61e2c174e5417f825986bc8d21ffc69","8ea16a7310e3501565e2d32de8b9f985f79e462f655686dcab7d6b230fa655b9","4b3707ee5c02dfed26946147a17ad487d954cb648a352417f7305f3a8b0b091e","b60413abb20bdbfafe6b5326d2b4e05f63dfdcf5d9b1246a3f86ece2ad562d86","b4478b686216adcc7a6255a930d419f33075d942195a00707d9cfe03e373e8b9","c36744b2651a62f52866b47c74545de84fdf6991e0a96920e0004642e4830524","4b3707ee5c02dfed26946147a17ad487d954cb648a352417f7305f3a8b0b091e","2049bb071060b81c49c6cf96872f23632d6e4fa7f9a1c93e007dec52d77f8a70","907a3d799649a512646f1e6b70591b137a5f5923669ccf8673003ad498c42e75","b82efd290a7dd61bddb329a05b5d622ec9927cfc8c27b8178676c85875460266","4b3707ee5c02dfed26946147a17ad487d954cb648a352417f7305f3a8b0b091e","6204a985b097ba214229d512959870ec0d74c7b6708b5bebd9f7c270d9ba3f42","234efca8a392e60b9c4d5f5ae51b20c7e593706ed542033427d7123f9ac00047","a21ce57317e583912540dad2b34d2762431c9f603a480affc58b03e6b5e8a369","4b3707ee5c02dfed26946147a17ad487d954cb648a352417f7305f3a8b0b091e","ce0d2754f32697babe3c5ebccd63d627bc2fe2c47d02edc8fb52aefd67bf20ff","30c53f37fc9649f10cd59a98f43a9358878d7be661ace991325756c2d69eaebe","320bec3745b17fe114b018d64b01f1463b34ab3d0196319c3261710e908d3541","4b3707ee5c02dfed26946147a17ad487d954cb648a352417f7305f3a8b0b091e","b48a58724e886fc741cbc9db68909d87f8102cdd102b34b8d011f40263f2eff6","481f5f7de3521edad947b39300f2978debd136ab602433d014e44f6e119dc242","87223c92d8c9f0f6d2163674475be7c4d2c8a4439c31fcf04d01a873c255361e","4b3707ee5c02dfed26946147a17ad487d954cb648a352417f7305f3a8b0b091e","292d1124dff7d7313ac9d6ec5879a113e09acaf4226ab127cb024fd7d0d2131e","9bb30ee6833cc37825294772c9c67863ebf61c3913eb92abb3f259444c274498","693c946a6f66734a59fcb7a131f1f744645b92ba919aac02893161d5b7633964","aea1e4628bba7c088db32011bc0c10cef5543824a882f5e7abc9d480ed900b61","30c53f37fc9649f10cd59a98f43a9358878d7be661ace991325756c2d69eaebe","c52f0a0c1ada7b92b2dc03e2d68cede5dd7d0c3d5f6564dfbf8bc23c5dce603c","4b3707ee5c02dfed26946147a17ad487d954cb648a352417f7305f3a8b0b091e","6983b0c80cc42153db35b6a4dc27c916c15ef43f07c5444754aa99d211e31f82","a09132cf4896ca4a291b30f07e0c2dfa420d4e71b5802f5d130123d20fe976d7","b223502c32cb7040a9ccc12fd30e4a5da2334cd9823920f33e449713eca4d435","4b3707ee5c02dfed26946147a17ad487d954cb648a352417f7305f3a8b0b091e","e3bfcb48c23f5e17495e0050deddcfae71a2ead167760132a4c68bca3ea19f3a","30c53f37fc9649f10cd59a98f43a9358878d7be661ace991325756c2d69eaebe","9e544e6dfc01035c7f28297d2e7d966a655ef1869f6ef4a8a613cf0810113bfc","4b3707ee5c02dfed26946147a17ad487d954cb648a352417f7305f3a8b0b091e","40a717506493221f42ea61f37615fe241827f16309699a4f00d397742db73cb4","c34fa140427f097c7bf3b5b428756fdc790df61bf7c5826008107e2e772f2d1c","aadb12cc5f8c3160aac0f9dc62daa4386c30386ca82223d283f5ce64b486e81e","7b00f5001a9cc73872657547eaf8d736a5ee7d86a82281099111cb56078c45bf","4b80774707d45b293e210ad51549d26e73e44ffafb80874d1a16c232cb47a28a","1423249be76c3ea1e9f13797229a3f813675589513a4b6989e0291e5efd2fed4","f896934a55f792e6e48635ad510db4f9c8cf62d59ccb9076e3ddaaa058eb2299","c9d0eb2d0e962a44edbff2d4ef0d1bba177815b032347c6ca687199569391c16","3e4e710ea86a17244a493dd90c8540cae7c9c14902d004a9a5af29c33ae956a0","44c0d53011f4b029ae82ccf4b1ae9f79b50756aa374e66f63772d661348ef5b3","cef52f035785e353e67a7589e972cebb9768a1c7dee644e2048f14124222bb20","af47ec042fb2136af93235422654247a3988acf6407b643cf9e4c82a6223938d","6fb1d409092b2c60d495bcd219fbd259432787812615d018d34e3095a9779661","86d7666fdb51a41a2eec4b622ebb4e386827f51525d1c0eb39f142a3043cb939","1140fa6ed9e972caad948398ac3f0c66f7f1c3eedac3aebf5666dbf1e08c9984","81663ff17585d1c4a17b9aa2b458664ecf1c6391e267c889398cad61d37b0040","65e8f650d059a9f6866c8d21277eb75f109c179e6662635e31c73f7314a15b47","973c1d4a8e79b6956e68a922cb0a17d5a73e0f97b9e83ddd320cfd4734260fea","f7047e6358933c7805013ebb85901582f04a55fcc40e9502c32f97513bf78412","8cdcb4c784cb0572917238dcefe583009adbf7797d4c4886ad4039982b5a21fb","07516dc144bbd2ca6c851b2c633c0531f07a8481c1b751e53572b36b4972f463","d1970db5ca2441b07bf3573094ee46114427df80ec4931ace0bdcf77aba69fe5","6dbf76049317057ff152b0491fe3252229cb9443bab1e44802735492727377b9","74e1e40bd50b34196d8a33446cd965f40bb47e5805ffdb95b3eab8a554646752","7747dc051cafcc0b8577ee408f4daf15c9be9259d88c26f2209a96f9eb546a13","f9fb06981b946167276f069cf5bab3d9c731443e9c13fc7d0b92176e5a214343",{"version":"c930c2e6784e31ee5013e8f754ab3cc4a44c34ab28039820fa2aac28eb046799","signature":"01fe9ce173f45a09b54f82b726959cff3d7af1f2e6596298f44b8476c86b1609"},"d1d20f87f975a3aa646bfc3a3ad2e92c63c0ba0ee750a4888672ea95b26cc970","59af31c3bbe3a06bd0939a09b7005b28964e2965d3f689f18e3c4eb3134afd45","4f49015b77c7fe35daaf2b89eca2943e0984803e00afd832328d4eb105f8c8f5","fa426c5e9f0c7214b9e21310f044ca81eb25140dacc1dbf84724bd6008a0017e","bf5d835b23a254e2f21f3b2a8d02504739f5f06f6fb957b8e851d9ea0b87ded0","ea5b38c298ce08bae20be60938e0719918d96aa9817dc037a60c951bf6425fd3","a91b3fd4b3fe11073176b237083ff9889a0f3889925809a414fa232ec11acd08","8e114a6e59773df9747822fbd19f9db6af0b3ec399c908cca4b7f75fd2a8a6f8","3793b3c429626f29cee5acbc1bd7ebd20dcff7f8e8b34e05e5fe73850944ad91","89a26c835c143998a3155eedd1b997fd3d5e319200db92d76970f4b82b52f785","fed576c57aa64fd36c153f5d9257f687dcd5fff21f33103c9f6685d9b63520c4","71336d2b229dfe87d375349ad48e56b50497bbe016aa6c5f5ab474c332a47fc4","b3d64e107af520235489c6ae5f27c4ed2d5b1e20bf14400a318459319372fb92","f570553cc117a5b10246f1baa14980d501e86fe29a3e3eb92a4ebc8bb5b586fb","b8a7c792da78d7c358243bc909f2386ded97ee47397aad6fbee8b81cc139e916","fbffe3cd9ee84ff85c569c2099baa96d7795df06c22940c10545488dd1a6fa96","ac02c5780d20a8bdcf91bec4a7d7f67c6ce3027cf25e1ffbc46780c379e499f4","d20cbef7830eb4e327bf0e3693940ed8fc53bdf3e7166a90ff60b7fcd2acdee0","89c67a901ab5e00abb6ae1ca5c97ab9da40d2bdef92413d730e8ada3da2449ab","b84bf8850597b6296f984612ea2775f6c17a51056c78dd05e037d7c5cb1b5c84","1d5613198f43052f404ec0d41155a8a33d6ec11ca3f7c3762422b123a3d79912",{"version":"15581a8f34749737f5c411504386961dbed015730e8959edbe92f898dcedf75a","signature":"39d8d99f59b29f0bb417d844fb0814f5ad47bc221fb502fa4d4a1b2abd8dd217"},"716c3c72272c620c83b73b7f3331e591b245dd1963a3f56b890202dc35e4a922","e929970d3b5f26baa81520defcb14d5736b906bd97c1944117c0b701774fe6b9","039c083e305f3bd6d2a1a79fadefa34e309ffa714a5b6d28d5e466176409fe32","908563083b6bc71fa2c9d13cdf89642cfc2bb2e25bf7ac0c5075c6b7ec0538e8","949ad82b645e715938818b7e88a461b0f449436248cfaf11041e194dcbe55df5","dd51bfc79ecaf436d787354b727c38477d7668799f537ce52c304ef7b7386b44","e2c3158e8c5b09e261905bb377ed06562ace98b9365e327544c925d72980ab95",{"version":"6873402982dc22d2d4435250816d960d1e83f3b33d368a3d172de4267f936591","impliedFormat":99},"35edf813ed85141ce1d820bcbbde57af69c2c5f295ac4ef3ea227948325e2f83","989ef2ce7e7d2b5fb7cb27c624b244ca3212adb649454146293af2dd3f47faec","6a6cbaccf66ec3a6ca2e2011da79a56aeef182f896d668d180372d03a4f15c74","8f0ff0f7f53aa0d040927159e547d2e201d6bf5bf80a9eccbf49b61fcf102f65","c4914ffabcf525b9bb8a93deb96740f8472b0f1657e17e8a674ecbf8ef6daa40","f81feb8c38d8e187025bbfd52bb52cbf250a736fd38570372ae9bbb5ee3e35d9","ba233f0f876ade2fb846230915b0f2e2cd7f2f9c850d0ae5031240b90adc9320","0800cf2618838a7259300ad750a6082625acceab6ae570f3cc86b894fdd8ac2e","82c7ebad97b9e7ea28d09327522976affdf6137d903127b3224943519fdbbeaf","638c696aee97d0a7c2c56599043f24d53e740439da60dc0d1c2656171fad84c8","a823842f755ebb9a5f53f17a1bf58af08e82d025489a738b294ccfe4cdb64f90","43ec53da0e417894fdae2f84ca2861ee785f9cc8054b1355cad458e32e758790","ee1712609c030f93f0193104a41e472b3b17838da6067fa7805478e81332b98c","20d70bea5782e468fb89759369709d156829e090b355915ff28730a506e1e2a1","d3b610f24e0d08a1079f42b995138866ce6f2681ed0b2d435e134d469cb8f67b","efc09ca98d6b6e72bc69f8bbdbfcdb01c16f24ee4fcda39e3add30a3416166dd","ce8f04f229a40d31b90a740e7b74aca3ed76b03b7f1585ca1323f1b80d6f7006","dbe95686b188aeb09b4f3041b2509d5cf543314b57e725372f351eaea25971ee","976c05f92fabbf396a18651da480b6b2d23195b3c9b5b6f37f27c1b5fb286b54","aa6aad25b2e56284705f8594a304ac31b2e74e6db9f67209b149c5882e4b89dd","e05a47f523b7792fa063e687e327bac6f00011da01c032003225c815eca79497","ae0ba394411502f58ba43cfffbbe5d12dbd312c833b3969b16bf1a94ec90e530","d15e9b66b65a440157551cde22c910c2e2b186e6c7f44324e895f291d629117c","ada4a6a5564bb66bc51c9e13bd452d47027a0f18b20d05e4c532d6bdf705f5b2","084e034e45167d15d154b2e7811a281d94885c71b3b01d4769a44f55c0f6f952","111e12ab1b89cb2cdad21ca59ea9de523ac39bd79490149cea43d1f91697b8e0","71860f1efab600e8405761b577df7e870dbfb8415d7899696d3b2128fd00a931","474f6272ee75a64d1e98271ae5b83cf4862adf6c141726433296b463a1c130a3","fe5a46c46f3dea2fb31b76edc5fdc14e3ee051bf4fa95cdf32c97d1b9518ff53","e10eafaac3c15258ed78fbef15a3f8692196f971d53f137e60315e5adf7459a3","39492b021fb0e38a2277b43b075781b34e6f4f189ea5f53ed082372ea96c1dcb","906e1e7266f5495194c95064d02829511c0fced58fb5811180488d7158b3ccb0","4c09210b68020d99169d29a1185e9ce81943bd1e313b703546f652ca02b873ec","95c9f7b62d0b74f41b6f1430b4236e8999b46853d380187bd93df3377aa01048","ecb2768de4faee213a791aa8de3dc951e150ee6c2b7969c33eabe2fadf557caf","7d23e15d7633ee7073067050aacd89c45c7259d21e60c0a990782fdbc1caa4e4","f45cfe5a4f8c43c95c9c11d87a58b105cd216f1ae3f59ec2a1aaa598a9cf52c6","68020d3d42f720106a089dca5c168cf04e5d349089fbc191c36f9cccabcb3c3a","94e34c7d90e04bd1de26495f460aaf1f00e7bb004ffec8797f617ea29ae837a5","7f863c4a7c54be9ac30b0575f918420a38ff2edde87b808e59c4c8902e2fe93e","0043c0a8c6d450739b60f14cf684806ae4241c91f3fca50f172665dd9adfde90","9ec2d2c25f1f8befa23ba16b01c401d73da979dcdda8532aa0600f37edbf743b","7232de6a2a92489a070d7701bc60ae747fb40107563e87eb59096c540c4c40ad","1103186962bccc2e2100b1135a8e288f614bce6617ed8a85170e06a3b69cebf8","16d86d734dd6e6ff0ddc33e0e599da535de9bbc5b63abe3b35050f41c00892a3","cd8ffeab689cf8a4b893cdf152bae8be5526afaa8c2eb4a0819dd3db60e14602","7d9e7e04b576f76dfafbb03eccc7781d7b545450be3b4df7015369a4901090a7","3f08732c3a69da9b77f7e626163bb2b84afad459b844e629e01282312c53d82d","de936b6eabc0ac5efe7656dcadf07e5b3baff23ac51c8ef8d301fe5f0647dcbb","44ee0be70278c636f36b993c239c08f0f01c71e16d083b0be9a70f9a66efff09","1b8cacc68f25d13d3bfff13b9dbf773d52e40dca350697b0c19ceb0bd913c22e","ddfbc2e8c681833765607dcbc38a0fa7c768ed7a7d82cfaab528a049b3a55642","124a30a1afcdb78c582a2cb0f2ab15fd604bc1c97cb5b38146090981b599df01",{"version":"b0237ee676f90a9a7545c1f005abc713c2d646946817b4ff939ae011209ca54b","affectsGlobalScope":true},{"version":"ea8a445ae856033c4027b52f3ed2a225ad841dde1248b9d2f58283671dce372d","affectsGlobalScope":true},"73bd4ebe9409ec75ebb1a8f91f1564b92ee28695c995ea15095fc51e830405ab",{"version":"6c7176368037af28cb72f2392010fa1cef295d6d6744bca8cfb54985f3a18c3e","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true,"impliedFormat":1},{"version":"437e20f2ba32abaeb7985e0afe0002de1917bc74e949ba585e49feba65da6ca1","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"98cffbf06d6bab333473c70a893770dbe990783904002c4f1a960447b4b53dca","affectsGlobalScope":true,"impliedFormat":1},{"version":"3af97acf03cc97de58a3a4bc91f8f616408099bc4233f6d0852e72a8ffb91ac9","affectsGlobalScope":true,"impliedFormat":1},{"version":"808069bba06b6768b62fd22429b53362e7af342da4a236ed2d2e1c89fcca3b4a","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"b52476feb4a0cbcb25e5931b930fc73cb6643fb1a5060bf8a3dda0eeae5b4b68","affectsGlobalScope":true,"impliedFormat":1},{"version":"f9501cc13ce624c72b61f12b3963e84fad210fbdf0ffbc4590e08460a3f04eba","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0fa06ada475b910e2106c98c68b10483dc8811d0c14a8a8dd36efb2672485b29","impliedFormat":1},{"version":"33e5e9aba62c3193d10d1d33ae1fa75c46a1171cf76fef750777377d53b0303f","impliedFormat":1},{"version":"2b06b93fd01bcd49d1a6bd1f9b65ddcae6480b9a86e9061634d6f8e354c1468f","impliedFormat":1},{"version":"6a0cd27e5dc2cfbe039e731cf879d12b0e2dded06d1b1dedad07f7712de0d7f4","affectsGlobalScope":true,"impliedFormat":1},{"version":"13f5c844119c43e51ce777c509267f14d6aaf31eafb2c2b002ca35584cd13b29","impliedFormat":1},{"version":"e60477649d6ad21542bd2dc7e3d9ff6853d0797ba9f689ba2f6653818999c264","impliedFormat":1},{"version":"c2510f124c0293ab80b1777c44d80f812b75612f297b9857406468c0f4dafe29","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"4c829ab315f57c5442c6667b53769975acbf92003a66aef19bce151987675bd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"b2ade7657e2db96d18315694789eff2ddd3d8aea7215b181f8a0b303277cc579","impliedFormat":1},{"version":"9855e02d837744303391e5623a531734443a5f8e6e8755e018c41d63ad797db2","impliedFormat":1},{"version":"4d631b81fa2f07a0e63a9a143d6a82c25c5f051298651a9b69176ba28930756d","impliedFormat":1},{"version":"836a356aae992ff3c28a0212e3eabcb76dd4b0cc06bcb9607aeef560661b860d","impliedFormat":1},{"version":"1e0d1f8b0adfa0b0330e028c7941b5a98c08b600efe7f14d2d2a00854fb2f393","impliedFormat":1},{"version":"41670ee38943d9cbb4924e436f56fc19ee94232bc96108562de1a734af20dc2c","affectsGlobalScope":true,"impliedFormat":1},{"version":"c906fb15bd2aabc9ed1e3f44eb6a8661199d6c320b3aa196b826121552cb3695","impliedFormat":1},{"version":"22295e8103f1d6d8ea4b5d6211e43421fe4564e34d0dd8e09e520e452d89e659","impliedFormat":1},{"version":"58647d85d0f722a1ce9de50955df60a7489f0593bf1a7015521efe901c06d770","impliedFormat":1},{"version":"6b4e081d55ac24fc8a4631d5dd77fe249fa25900abd7d046abb87d90e3b45645","impliedFormat":1},{"version":"a10f0e1854f3316d7ee437b79649e5a6ae3ae14ffe6322b02d4987071a95362e","impliedFormat":1},{"version":"e208f73ef6a980104304b0d2ca5f6bf1b85de6009d2c7e404028b875020fa8f2","impliedFormat":1},{"version":"d163b6bc2372b4f07260747cbc6c0a6405ab3fbcea3852305e98ac43ca59f5bc","impliedFormat":1},{"version":"e6fa9ad47c5f71ff733744a029d1dc472c618de53804eae08ffc243b936f87ff","affectsGlobalScope":true,"impliedFormat":1},{"version":"a6f137d651076822d4fe884287e68fd61785a0d3d1fdb250a5059b691fa897db","impliedFormat":1},{"version":"24826ed94a78d5c64bd857570fdbd96229ad41b5cb654c08d75a9845e3ab7dde","impliedFormat":1},{"version":"8b479a130ccb62e98f11f136d3ac80f2984fdc07616516d29881f3061f2dd472","impliedFormat":1},{"version":"928af3d90454bf656a52a48679f199f64c1435247d6189d1caf4c68f2eaf921f","affectsGlobalScope":true,"impliedFormat":1},{"version":"bceb58df66ab8fb00170df20cd813978c5ab84be1d285710c4eb005d8e9d8efb","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f16a7e4deafa527ed9995a772bb380eb7d3c2c0fd4ae178c5263ed18394db2c","impliedFormat":1},{"version":"933921f0bb0ec12ef45d1062a1fc0f27635318f4d294e4d99de9a5493e618ca2","impliedFormat":1},{"version":"71a0f3ad612c123b57239a7749770017ecfe6b66411488000aba83e4546fde25","impliedFormat":1},{"version":"77fbe5eecb6fac4b6242bbf6eebfc43e98ce5ccba8fa44e0ef6a95c945ff4d98","impliedFormat":1},{"version":"4f9d8ca0c417b67b69eeb54c7ca1bedd7b56034bb9bfd27c5d4f3bc4692daca7","impliedFormat":1},{"version":"814118df420c4e38fe5ae1b9a3bafb6e9c2aa40838e528cde908381867be6466","impliedFormat":1},{"version":"a3fc63c0d7b031693f665f5494412ba4b551fe644ededccc0ab5922401079c95","impliedFormat":1},{"version":"80523c00b8544a2000ae0143e4a90a00b47f99823eb7926c1e03c494216fc363","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee","impliedFormat":1},{"version":"746911b62b329587939560deb5c036aca48aece03147b021fa680223255d5183","affectsGlobalScope":true,"impliedFormat":1},{"version":"18fd40412d102c5564136f29735e5d1c3b455b8a37f920da79561f1fde068208","impliedFormat":1},{"version":"c8d3e5a18ba35629954e48c4cc8f11dc88224650067a172685c736b27a34a4dc","impliedFormat":1},{"version":"f0be1b8078cd549d91f37c30c222c2a187ac1cf981d994fb476a1adc61387b14","affectsGlobalScope":true,"impliedFormat":1},{"version":"0aaed1d72199b01234152f7a60046bc947f1f37d78d182e9ae09c4289e06a592","impliedFormat":1},{"version":"2b55d426ff2b9087485e52ac4bc7cfafe1dc420fc76dad926cd46526567c501a","impliedFormat":1},{"version":"66ba1b2c3e3a3644a1011cd530fb444a96b1b2dfe2f5e837a002d41a1a799e60","impliedFormat":1},{"version":"7e514f5b852fdbc166b539fdd1f4e9114f29911592a5eb10a94bb3a13ccac3c4","impliedFormat":1},{"version":"5b7aa3c4c1a5d81b411e8cb302b45507fea9358d3569196b27eb1a27ae3a90ef","affectsGlobalScope":true,"impliedFormat":1},{"version":"5987a903da92c7462e0b35704ce7da94d7fdc4b89a984871c0e2b87a8aae9e69","affectsGlobalScope":true,"impliedFormat":1},{"version":"ea08a0345023ade2b47fbff5a76d0d0ed8bff10bc9d22b83f40858a8e941501c","impliedFormat":1},{"version":"47613031a5a31510831304405af561b0ffaedb734437c595256bb61a90f9311b","impliedFormat":1},{"version":"ae062ce7d9510060c5d7e7952ae379224fb3f8f2dd74e88959878af2057c143b","impliedFormat":1},{"version":"8a1a0d0a4a06a8d278947fcb66bf684f117bf147f89b06e50662d79a53be3e9f","affectsGlobalScope":true,"impliedFormat":1},{"version":"358765d5ea8afd285d4fd1532e78b88273f18cb3f87403a9b16fef61ac9fdcfe","impliedFormat":1},{"version":"9f55299850d4f0921e79b6bf344b47c420ce0f507b9dcf593e532b09ea7eeea1","impliedFormat":1},{"version":"151ff381ef9ff8da2da9b9663ebf657eac35c4c9a19183420c05728f31a6761d","impliedFormat":1},{"version":"ee70b8037ecdf0de6c04f35277f253663a536d7e38f1539d270e4e916d225a3f","affectsGlobalScope":true,"impliedFormat":1},{"version":"a660aa95476042d3fdcc1343cf6bb8fdf24772d31712b1db321c5a4dcc325434","impliedFormat":1},{"version":"035d0934d304483f07148427a5bd5b98ac265dae914a6b49749fe23fbd893ec7","impliedFormat":99},{"version":"e2ed5b81cbed3a511b21a18ab2539e79ac1f4bc1d1d28f8d35d8104caa3b429f","impliedFormat":99},{"version":"b8caba62c0d2ef625f31cbb4fde09d851251af2551086ccf068611b0a69efd81","affectsGlobalScope":true,"impliedFormat":1},{"version":"402e5c534fb2b85fa771170595db3ac0dd532112c8fa44fc23f233bc6967488b","impliedFormat":1},{"version":"52dcc257df5119fb66d864625112ce5033ac51a4c2afe376a0b299d2f7f76e4a","impliedFormat":1},{"version":"e5bab5f871ef708d52d47b3e5d0aa72a08ee7a152f33931d9a60809711a2a9a3","impliedFormat":1},{"version":"e16dc2a81595736024a206c7d5c8a39bfe2e6039208ef29981d0d95434ba8fcf","impliedFormat":1},{"version":"cc4a4903fb698ca1d961d4c10dce658aa3a479faf40509d526f122b044eaf6a4","impliedFormat":1},{"version":"19ee8416e6473ed6c7adb868fa796b5653cf0fa2a337658e677eaa0d134388c3","impliedFormat":1},{"version":"1328ab4e442614b28cdb3d4b414cf68325c0da0dca07287a338d0654b7a00261","impliedFormat":1},{"version":"a039dc21f045919f3cbee2ec13812cc6cc3eebc99dae4be00973230f468d19a6","impliedFormat":1},{"version":"3fbe57af01460e49dcd29df55d6931e1672bc6f1be0fb073d11410bc16f9037d","impliedFormat":1},{"version":"f760be449e8562ec5c09bb5187e8e1eabf3c113c0c58cddda53ef8c69f3e2131","impliedFormat":1},{"version":"44325ed13294fce6ab825b82947bbeed2611db7dad9d9135260192f375e5a189","impliedFormat":1},{"version":"e392e8fb5b514eafc585601c1d781485aa6dd6a320e75daf1064a4c6918a1b45","impliedFormat":1},{"version":"46e4a36e8ddbdfb4e7330e11c81c970dc8b218611df9183d39c41c5f8c653b55","impliedFormat":1},{"version":"370bde134aa8c2abc926d0e99d3a4d5d5dba65c6ee65459137e4f02670cbf841","impliedFormat":1},{"version":"6332f565867cf4a740a70e30f31cefba37ef7cebcf74f22eab8d744fde6d193e","impliedFormat":1},{"version":"2977b7884aedc895a1d0c9c210c7cf3272c29d6959a08a6fa3ff71e0aff08175","impliedFormat":1},{"version":"17f2922d41ddd032830a91371c948cd9ce903b35c95adca72271a54584f19b0b","impliedFormat":1},{"version":"3eed76ede2a1a14d7c9bb0a642041282dcc264811139d3dd275c9fe14efc9840","impliedFormat":1},{"version":"e3cf0611709328b449ec13f8c436712d62003620ce480139fae46ce001c2ee9f","impliedFormat":1},{"version":"8d369483f0c2b9ee388129cfdb6a43bc8112b377e86a41884bd06e19ce04f4c1","impliedFormat":99},{"version":"4ec16d7a4e366c06a4573d299e15fe6207fc080f41beac5da06f4af33ea9761e","impliedFormat":1},{"version":"bf6402a3cfff440801c3ea5835f08784aac18087016534b48741adbcee931921","impliedFormat":1},{"version":"71b110829b8f5e7653352a132544ece2b9a10e93ba1c77453187673bd46f13ee","impliedFormat":1},{"version":"7c0ace9de3109ecdd8ad808dd40a052b82681786c66bb0bff6d848c1fc56a7c4","impliedFormat":1},{"version":"1223780c318ef42fd33ac772996335ed92d57cf7c0fc73178acab5e154971aab","impliedFormat":1},{"version":"0d04cbe88c8a25c2debd2eef03ec5674563e23ca9323fa82ede3577822653bd2","impliedFormat":1},{"version":"aaa70439f135c3fa0a34313de49e94cae3db954c8b8d6af0d56a46c998c2923f","impliedFormat":1},{"version":"4ace083580c1b77eb8ddf4ea915cde605af1a96e426c4c04b897feef1acdb534","impliedFormat":1},{"version":"daf07c1ca8ccfb21ad958833546a4f414c418fe096dcebdbb90b02e12aa5c3a2","impliedFormat":1},{"version":"89ac5224feeb2de76fc52fc2a91c5f6448a98dbe4e8d726ecb1730fa64cd2d30","impliedFormat":1},{"version":"7feb39ba69b3fc6d55faca4f91f06d77d15ffedd3931b0ef7740e8b6fd488b15","impliedFormat":1},{"version":"acf00cfabe8c4de18bea655754ea39c4d04140257556bbf283255b695d00e36f","impliedFormat":1},{"version":"39b70d5f131fcfdeba404ee63aba25f26d8376a73bacd8275fb5a9f06219ac77","impliedFormat":1},{"version":"cdae26c737cf4534eeec210e42eab2d5f0c3855240d8dde3be4aee9194e4e781","impliedFormat":1},{"version":"5aa0c50083d0d9a423a46afaef78c7f42420759cfa038ad40e8b9e6cafc38831","impliedFormat":1},{"version":"10d6a49a99a593678ba4ea6073d53d005adfc383df24a9e93f86bf47de6ed857","impliedFormat":1},{"version":"1b7ea32849a7982047c2e5d372300a4c92338683864c9ab0f5bbd1acadae83a3","impliedFormat":1},{"version":"224083e6fcec1d300229da3d1dafc678c642863996cbfed7290df20954435a55","impliedFormat":1},{"version":"4248ac3167b1a1ce199fda9307abc314b3132527aeb94ec30dbcfe4c6a417b1b","impliedFormat":1},{"version":"633cb8c2c51c550a63bda0e3dec0ad5fa1346d1682111917ad4bc7005d496d8c","impliedFormat":1},{"version":"ca055d26105248f745ea6259b4c498ebeed18c9b772e7f2b3a16f50226ff9078","impliedFormat":1},{"version":"ea6b2badb951d6dfa24bb7d7eb733327e5f9a15fc994d6dc1c54b2c7a83b6a0b","impliedFormat":1},{"version":"03fdf8dba650d830388b9985750d770dd435f95634717f41cea814863a9ac98b","impliedFormat":1},{"version":"6fd08e3ef1568cd0dc735c9015f6765e25143a4a0331d004a29c51b50eec402a","impliedFormat":1},{"version":"2e988cd4d24edac4936449630581c79686c8adac10357eb0cdb410c24f47c7f0","impliedFormat":1},{"version":"b813f62a37886ed986b0f6f8c5bf323b3fcae32c1952b71d75741e74ea9353cf","impliedFormat":1},{"version":"44a1a722038365972b1b52841e1132785bf5d75839dbc6cc1339f2d36f8507a1","impliedFormat":1},{"version":"83fe1053701101ac6d25364696fea50d2ceb2f81d1456bc11e682a20aaeac52e","impliedFormat":1},{"version":"4f228cb2089a5a135a1a8cefe612d5aebcef8258f7dbe3b7c4dad4e26a81ec08","impliedFormat":1},{"version":"7870becb94cbc11d2d01b77c4422589adcba4d8e59f726246d40cd0d129784d8","affectsGlobalScope":true,"impliedFormat":1},{"version":"f70b8328a15ca1d10b1436b691e134a49bc30dcf3183a69bfaa7ba77e1b78ecd","impliedFormat":1},{"version":"d9030fc0c412a31e7e13d189b9ad032b5177c20217add0f24fd3fff0cf272882","impliedFormat":99},{"version":"2be2227c3810dfd84e46674fd33b8d09a4a28ad9cb633ed536effd411665ea1e","impliedFormat":99},{"version":"7f9c8c4fd31e6e0f137ded52f026f97934abcc4624db1c9c8120b91a170798e0","impliedFormat":1},{"version":"957a44f864ab3c182edc747428e8eec1765257deee7fac86c1147eeac897d832","impliedFormat":1},{"version":"3feec212c0aeb91e5a6e62caaf9f128954590210f8c302910ea377c088f6b61a","impliedFormat":99},{"version":"d27eadfc7a0c340fbbb62294e70eb5cf27751e1dcf47ee688ca38dd64d15502c","impliedFormat":99},{"version":"86d818ada2f5f0cfffca153af94205b67ba50f8e36524a413d66652f34ef19af","impliedFormat":99},{"version":"40afd49a15d0bafef682b42664ff21c274e02dcc60052f2df85dd53c70d9394f","impliedFormat":99},{"version":"5a5b1dd91662e93efae28d985e0e44d10f6a7e3c2c2ae8abc29bcfc406cb5310","impliedFormat":99},{"version":"66d0a61b3b0df6c9c2eb09dbe26e3c2aef71d9043fed17cd56de6669cb706325","impliedFormat":99},{"version":"f6692c3a1847d846bc4b7a690ef2ba096b2ca56bea5818f073eb8193ce33b5e1","impliedFormat":99},{"version":"1e4d27cf43aa16d164e958a220fee3c225b9dd146b1912cbc12083263f157ca9","impliedFormat":99},{"version":"a46147f499d4246998d1e44b43beecd2ee04c0a330c35863eaeccc827a737fdf","impliedFormat":1},{"version":"390140c96dcaf0831d24b5408d19af017e3a8f150fed140791d976ac20dd2da7","impliedFormat":99},{"version":"886c87489e99cbe6af5b1d83f147b04f96a2ae499d4302de7f9e4478cb93ccca","impliedFormat":99},{"version":"13e7c1f8ddda39d034935e667f3a314ec8b89b8be18fbd4cd987ea4312b4221f","impliedFormat":99},{"version":"370a3bbb8117e32fd7ae37d318e28cf63251013fe015c5dd382599614a3d5d59","impliedFormat":99},{"version":"daf09fb2571ee9e9251b08237852ed26b67257cb7997358935608f63f9fd2ecb","impliedFormat":99},{"version":"768fd34f23de8dc5f5df6cd45f044bb4193105b5964e4ef734dbfc1a1f8e6223","impliedFormat":1},{"version":"dc18b19797fbc286f2bd51e14eca66fb46bd07c0c567cb40fc04e6e805533850","impliedFormat":99},{"version":"5903ab9ed38b4d4f878e507f76020f75b7fc2285515ebdb7596393ce196eee2f","impliedFormat":99},{"version":"58395463e3fd8b466d5801cd73027f82bbf12e3d90cb4b27538e61ee9ff3427c","impliedFormat":99},{"version":"4d4804f5da06e47254d253a07e82d400c55964ea097016753dbd4372ce0eaab0","impliedFormat":99},{"version":"cf76eeea2b4ec3fe26520cd129cfc32352d1ddb22b6d4ff0c6a709656a4b1b37","impliedFormat":1},{"version":"fea0cb28540b473977c722853998d39d28575fa12e31b3371fcf1f324e3a9fb7","impliedFormat":1},{"version":"ee4ee9bf6c6d276343e7f0bce3a5374800eb4ec6b2d7c70fab6ae3ef840d9777","impliedFormat":1},{"version":"571ba264349552a1111ac0d6a5ed580a41c390aac43a70546c3a7374c77faa71","impliedFormat":1},"06f5c2408e959ccebcbef2989bce4a528a531aeddb4f3c7fb2324c03a00b9b19"],"root":[89,107,[124,146],[1401,1421],[1425,1437],[1445,1448],1450,1451,[1453,1471],[1546,1548],1550,1551,[1566,1612],[2076,2081],2084,[2100,2104],[2186,2211],2226,2227,2229,2230,2239,2240,[2243,2462],2651],"options":{"allowImportingTsExtensions":true,"composite":true,"esModuleInterop":true,"jsx":1,"jsxImportSource":"vue","module":99,"noImplicitThis":true,"skipLibCheck":true,"strict":true,"target":99,"useDefineForClassFields":true,"verbatimModuleSyntax":true},"referencedMap":[[2460,1],[2459,2],[89,3],[92,4],[91,5],[1035,6],[1029,5],[1033,6],[1032,7],[1028,6],[1027,5],[1036,8],[1034,7],[1030,7],[1031,7],[166,9],[167,9],[168,9],[169,9],[170,9],[171,9],[172,9],[173,9],[174,9],[175,9],[176,9],[177,9],[178,9],[179,9],[180,9],[181,9],[182,9],[183,9],[184,9],[185,9],[186,9],[187,9],[188,9],[189,9],[190,9],[191,9],[192,9],[193,9],[194,9],[195,9],[196,9],[197,9],[198,9],[199,9],[200,9],[201,9],[202,9],[203,9],[204,9],[205,9],[206,9],[207,9],[208,9],[209,9],[210,9],[211,9],[212,9],[213,9],[214,9],[215,9],[216,9],[217,9],[218,9],[219,9],[220,9],[221,9],[222,9],[223,9],[224,9],[225,9],[226,9],[227,9],[228,9],[229,9],[230,9],[231,9],[232,9],[233,9],[234,9],[235,9],[236,9],[237,9],[238,9],[239,9],[240,9],[241,9],[242,9],[243,9],[244,9],[245,9],[246,9],[247,9],[248,9],[249,9],[250,9],[251,9],[252,9],[253,9],[254,9],[255,9],[256,9],[257,9],[258,9],[259,9],[260,9],[261,9],[262,9],[263,9],[264,9],[265,9],[266,9],[267,9],[268,9],[269,9],[270,9],[271,9],[272,9],[273,9],[274,9],[275,9],[276,9],[277,9],[278,9],[279,9],[280,9],[281,9],[282,9],[283,9],[284,9],[285,9],[286,9],[287,9],[288,9],[289,9],[290,9],[291,9],[292,9],[293,9],[294,9],[295,9],[296,9],[297,9],[298,9],[299,9],[300,9],[301,9],[302,9],[303,9],[304,9],[305,9],[306,9],[307,9],[459,10],[308,9],[309,9],[310,9],[311,9],[312,9],[313,9],[314,9],[315,9],[316,9],[317,9],[318,9],[319,9],[320,9],[321,9],[322,9],[323,9],[324,9],[325,9],[326,9],[327,9],[328,9],[329,9],[330,9],[331,9],[332,9],[333,9],[334,9],[335,9],[336,9],[337,9],[338,9],[339,9],[340,9],[341,9],[342,9],[343,9],[344,9],[345,9],[346,9],[347,9],[348,9],[349,9],[350,9],[351,9],[352,9],[353,9],[354,9],[355,9],[356,9],[357,9],[358,9],[359,9],[360,9],[361,9],[362,9],[363,9],[364,9],[365,9],[366,9],[367,9],[368,9],[369,9],[370,9],[371,9],[372,9],[373,9],[374,9],[375,9],[376,9],[377,9],[378,9],[379,9],[380,9],[381,9],[382,9],[383,9],[384,9],[385,9],[386,9],[387,9],[388,9],[389,9],[390,9],[391,9],[392,9],[393,9],[394,9],[395,9],[396,9],[397,9],[398,9],[399,9],[400,9],[401,9],[402,9],[403,9],[404,9],[405,9],[406,9],[407,9],[408,9],[409,9],[410,9],[411,9],[412,9],[413,9],[414,9],[415,9],[416,9],[417,9],[418,9],[419,9],[420,9],[421,9],[422,9],[423,9],[424,9],[425,9],[426,9],[427,9],[428,9],[429,9],[430,9],[431,9],[432,9],[433,9],[434,9],[435,9],[436,9],[437,9],[438,9],[439,9],[440,9],[441,9],[442,9],[443,9],[444,9],[445,9],[446,9],[447,9],[448,9],[449,9],[450,9],[451,9],[452,9],[453,9],[454,9],[455,9],[456,9],[457,9],[458,9],[460,11],[986,12],[988,13],[985,5],[987,5],[2241,9],[1931,14],[1927,15],[1914,5],[1930,16],[1923,17],[1921,18],[1920,18],[1919,17],[1916,18],[1917,17],[1925,19],[1918,18],[1915,17],[1922,18],[1928,20],[1929,21],[1924,22],[1926,18],[826,23],[822,24],[809,5],[825,25],[818,26],[816,27],[815,27],[814,26],[811,27],[812,26],[820,28],[813,27],[810,26],[817,27],[823,29],[824,30],[819,31],[821,27],[2098,32],[2095,33],[2094,34],[2085,5],[2086,5],[2088,35],[2087,5],[2097,36],[2089,34],[2090,37],[2093,38],[2091,5],[2092,34],[2096,5],[1639,39],[1613,9],[1614,40],[1615,9],[1616,9],[1617,41],[2017,42],[1635,5],[1638,5],[1636,43],[1991,44],[1990,45],[1989,5],[1973,46],[1972,9],[1975,47],[1976,48],[1974,49],[1978,50],[1977,5],[1981,51],[1982,52],[1980,51],[1979,5],[2011,53],[2010,9],[1983,9],[2013,54],[1993,55],[1992,9],[1984,5],[1986,56],[1985,5],[1988,57],[1987,49],[1995,9],[2009,58],[2008,59],[2007,9],[1994,9],[1998,9],[2002,60],[2000,61],[2001,9],[1999,9],[1997,62],[1996,5],[2004,63],[2003,5],[2006,64],[2005,9],[1955,5],[2015,65],[2014,9],[2016,66],[1964,67],[1963,68],[1962,69],[1968,70],[1965,9],[1966,71],[1967,71],[1969,72],[1970,73],[1961,74],[1971,75],[2012,5],[1825,76],[1760,77],[1761,78],[1762,79],[1763,80],[1764,81],[1765,82],[1766,83],[1767,84],[1768,85],[1769,86],[1770,87],[1771,88],[1772,89],[1773,90],[1774,91],[1775,92],[1815,93],[1776,94],[1777,95],[1778,96],[1779,97],[1780,98],[1781,99],[1782,100],[1783,101],[1784,102],[1785,103],[1786,104],[1787,105],[1788,106],[1789,107],[1790,108],[1791,109],[1792,110],[1793,111],[1794,112],[1795,113],[1796,114],[1797,115],[1798,116],[1799,117],[1800,118],[1801,119],[1802,120],[1803,121],[1804,122],[1805,123],[1806,124],[1807,125],[1808,126],[1809,127],[1810,128],[1811,129],[1812,130],[1813,131],[1814,132],[1824,133],[1749,5],[1755,134],[1757,135],[1759,136],[1816,137],[1817,136],[1818,136],[1819,138],[1823,139],[1820,136],[1821,136],[1822,136],[1826,140],[1827,141],[1828,142],[1829,142],[1830,143],[1831,142],[1832,142],[1833,144],[1834,142],[1835,145],[1836,145],[1837,145],[1838,146],[1839,145],[1840,147],[1841,142],[1842,145],[1843,143],[1844,146],[1845,142],[1846,142],[1847,143],[1848,146],[1849,146],[1850,143],[1851,142],[1852,148],[1853,149],[1854,143],[1855,143],[1856,145],[1857,142],[1858,142],[1859,143],[1860,142],[1877,150],[1861,142],[1862,141],[1863,141],[1864,141],[1865,145],[1866,145],[1867,146],[1868,146],[1869,143],[1870,141],[1871,141],[1872,151],[1873,152],[1874,142],[1875,141],[1876,153],[1913,154],[1751,76],[1883,155],[1878,156],[1879,156],[1880,156],[1881,157],[1882,158],[1754,159],[1753,159],[1758,148],[1884,160],[1752,76],[1888,161],[1885,162],[1886,162],[1887,163],[1889,141],[1756,164],[1890,145],[1891,146],[1892,5],[1893,5],[1894,5],[1895,5],[1896,5],[1897,5],[1912,165],[1898,5],[1899,5],[1900,5],[1901,5],[1902,5],[1903,5],[1904,5],[1905,5],[1906,5],[1907,5],[1908,5],[1909,5],[1910,5],[1911,5],[1933,166],[1934,167],[1935,168],[1939,166],[1940,169],[1941,170],[1747,171],[1746,172],[1750,173],[1748,174],[1936,175],[1937,176],[1938,177],[1942,178],[1948,179],[1943,9],[1944,9],[1945,180],[1946,181],[1947,180],[2225,182],[2222,183],[2221,184],[2212,5],[2213,5],[2215,185],[2214,5],[2224,186],[2216,184],[2217,187],[2220,188],[2218,5],[2219,184],[2223,5],[2567,5],[2148,5],[471,189],[472,189],[473,189],[474,189],[475,189],[476,189],[477,189],[478,189],[479,189],[480,189],[481,189],[482,189],[483,189],[484,189],[485,189],[486,189],[487,189],[488,189],[489,189],[490,189],[491,189],[492,189],[493,189],[494,189],[495,189],[496,189],[497,189],[498,189],[499,189],[500,189],[501,189],[502,189],[503,189],[504,189],[505,189],[506,189],[507,189],[508,189],[509,189],[510,189],[511,189],[512,189],[513,189],[514,189],[515,189],[516,189],[517,189],[518,189],[519,189],[520,189],[521,189],[522,189],[523,189],[524,189],[525,189],[526,189],[527,189],[528,189],[529,189],[530,189],[531,189],[532,189],[533,189],[534,189],[535,189],[536,189],[537,189],[538,189],[539,189],[540,189],[541,189],[542,189],[543,189],[544,189],[545,189],[546,189],[547,189],[548,189],[549,189],[550,189],[551,189],[552,189],[553,189],[554,189],[555,189],[556,189],[557,189],[558,189],[559,189],[560,189],[561,189],[562,189],[563,189],[564,189],[565,189],[566,189],[567,189],[775,190],[568,189],[569,189],[570,189],[571,189],[572,189],[573,189],[574,189],[575,189],[576,189],[577,189],[578,189],[579,189],[580,189],[581,189],[582,189],[583,189],[584,189],[585,189],[586,189],[587,189],[588,189],[589,189],[590,189],[591,189],[592,189],[593,189],[594,189],[595,189],[596,189],[597,189],[598,189],[599,189],[600,189],[601,189],[602,189],[603,189],[604,189],[605,189],[606,189],[607,189],[608,189],[609,189],[610,189],[611,189],[612,189],[613,189],[614,189],[615,189],[616,189],[617,189],[618,189],[619,189],[620,189],[621,189],[622,189],[623,189],[624,189],[625,189],[626,189],[627,189],[628,189],[629,189],[630,189],[631,189],[632,189],[633,189],[634,189],[635,189],[636,189],[637,189],[638,189],[639,189],[640,189],[641,189],[642,189],[643,189],[644,189],[645,189],[646,189],[647,189],[648,189],[649,189],[650,189],[651,189],[652,189],[653,189],[654,189],[655,189],[656,189],[657,189],[658,189],[659,189],[660,189],[661,189],[662,189],[663,189],[664,189],[665,189],[666,189],[667,189],[668,189],[669,189],[670,189],[671,189],[672,189],[673,189],[674,189],[675,189],[676,189],[677,189],[678,189],[679,189],[680,189],[681,189],[682,189],[683,189],[684,189],[685,189],[686,189],[687,189],[688,189],[689,189],[690,189],[691,189],[692,189],[693,189],[694,189],[695,189],[696,189],[697,189],[698,189],[699,189],[700,189],[701,189],[702,189],[703,189],[704,189],[705,189],[706,189],[707,189],[708,189],[709,189],[710,189],[711,189],[712,189],[713,189],[714,189],[715,189],[716,189],[717,189],[718,189],[719,189],[720,189],[721,189],[722,189],[723,189],[724,189],[725,189],[726,189],[727,189],[728,189],[729,189],[730,189],[731,189],[732,189],[733,189],[734,189],[735,189],[736,189],[737,189],[738,189],[739,189],[740,189],[741,189],[742,189],[743,189],[744,189],[745,189],[746,189],[747,189],[748,189],[749,189],[750,189],[751,189],[752,189],[753,189],[754,189],[755,189],[756,189],[757,189],[758,189],[759,189],[760,189],[761,189],[762,189],[763,189],[764,189],[765,189],[766,189],[767,189],[768,189],[769,189],[770,189],[771,189],[772,189],[773,189],[774,189],[470,191],[2513,192],[2514,192],[2515,193],[2468,194],[2516,195],[2517,196],[2518,197],[2463,5],[2466,198],[2464,5],[2465,5],[2519,199],[2520,200],[2521,201],[2522,202],[2523,203],[2524,204],[2525,204],[2526,205],[2527,206],[2528,207],[2529,208],[2469,5],[2467,5],[2530,209],[2531,210],[2532,211],[2566,212],[2533,213],[2534,5],[2535,214],[2536,215],[2537,216],[2538,217],[2539,218],[2540,219],[2541,220],[2542,221],[2543,222],[2544,222],[2545,223],[2546,5],[2547,224],[2548,225],[2550,226],[2549,227],[2551,228],[2552,229],[2553,230],[2554,231],[2555,232],[2556,233],[2557,234],[2558,235],[2559,236],[2560,237],[2561,238],[2562,239],[2563,240],[2470,5],[2471,5],[2472,5],[2510,241],[2511,5],[2512,5],[2564,242],[2565,243],[2648,244],[2174,245],[2173,245],[2632,246],[2629,247],[2631,248],[2630,249],[93,250],[94,251],[2627,252],[95,253],[96,254],[98,255],[90,5],[779,256],[105,257],[778,9],[104,9],[2152,258],[2166,259],[2167,260],[2168,261],[2172,262],[2153,263],[2179,264],[2180,265],[2171,266],[2157,267],[2161,268],[2151,269],[2159,270],[2160,271],[2158,266],[2156,269],[2154,272],[2170,273],[2155,274],[2176,275],[2177,276],[2175,277],[2150,278],[2169,5],[2181,279],[2183,280],[2184,281],[2109,5],[2107,5],[2108,3],[2105,5],[2182,5],[2106,5],[1145,282],[1144,5],[110,5],[1452,5],[97,5],[869,5],[868,283],[867,5],[2149,5],[2232,284],[2234,285],[1441,286],[2236,287],[1443,288],[2238,289],[2231,290],[2233,290],[1440,290],[1442,5],[2235,290],[2237,290],[1439,5],[795,291],[794,292],[793,293],[799,294],[796,295],[797,296],[798,297],[804,298],[802,9],[803,299],[801,300],[800,301],[1392,302],[1391,303],[1390,304],[843,305],[839,306],[841,307],[833,308],[840,309],[834,310],[842,311],[847,312],[844,9],[845,313],[846,314],[851,315],[848,316],[849,317],[850,318],[858,319],[853,320],[856,321],[852,295],[855,322],[854,322],[857,323],[865,324],[862,325],[863,326],[859,327],[861,328],[860,329],[864,330],[874,331],[866,316],[870,332],[871,333],[872,334],[873,335],[878,336],[875,316],[876,337],[877,338],[885,339],[880,316],[883,340],[879,316],[882,341],[881,340],[884,342],[892,343],[889,344],[890,345],[891,346],[888,347],[887,348],[886,349],[1004,350],[1001,351],[1002,352],[1003,353],[1007,354],[1006,355],[1005,356],[1014,357],[1013,358],[1011,359],[1010,360],[1009,361],[1008,358],[1012,362],[1017,363],[1016,364],[1015,365],[1026,366],[1025,9],[1024,367],[1019,368],[1022,369],[1018,370],[1021,371],[1020,371],[1023,372],[1040,373],[1039,374],[1038,375],[1037,376],[1050,377],[1049,378],[1048,379],[1090,380],[1086,381],[1087,382],[1088,383],[1089,384],[1096,385],[1092,9],[1091,9],[1093,9],[1094,9],[1095,9],[1099,386],[1098,387],[1097,388],[1113,389],[1108,390],[1111,391],[1112,392],[1110,393],[1109,394],[1117,395],[1115,396],[1116,397],[1114,398],[1121,399],[1120,316],[1119,400],[1118,401],[1056,402],[1055,390],[1051,403],[1053,404],[1052,405],[1054,405],[1124,406],[1123,407],[1122,408],[1127,409],[1126,410],[1125,411],[1137,412],[1135,413],[1136,9],[1131,414],[1132,415],[1133,416],[1134,417],[1141,418],[1138,316],[1139,419],[1140,420],[1154,421],[1148,422],[1147,423],[1152,424],[1143,425],[1151,426],[1153,427],[1149,428],[1150,422],[1146,429],[1142,430],[1130,431],[1129,432],[1128,433],[1157,434],[1156,435],[1155,436],[1160,437],[1159,438],[1158,439],[1393,440],[1374,441],[1373,9],[1163,442],[1162,443],[1161,444],[1167,445],[1164,446],[1165,447],[1166,448],[808,449],[805,450],[806,451],[807,452],[1062,453],[1061,454],[1060,455],[1379,456],[1378,457],[1376,458],[1377,457],[1375,459],[1366,460],[1363,461],[1365,462],[1364,463],[1362,5],[1177,464],[1175,465],[1171,9],[1174,466],[1170,467],[1173,468],[1168,469],[1172,316],[1176,5],[1169,470],[1382,471],[1380,472],[1381,473],[1059,474],[1058,475],[1057,476],[1385,477],[1384,478],[1383,479],[1179,480],[1178,481],[1182,482],[1181,483],[1180,484],[1185,485],[1184,9],[1183,316],[1188,486],[1187,487],[1186,488],[1389,489],[1388,9],[1387,490],[1386,491],[838,492],[835,493],[830,9],[827,494],[837,495],[836,496],[829,497],[828,498],[832,499],[831,500],[1191,501],[1190,502],[1189,503],[1199,504],[1198,505],[1195,506],[1194,507],[1197,508],[1196,505],[1193,509],[1192,510],[1202,511],[1201,512],[1200,513],[1205,514],[1204,515],[1203,516],[1209,517],[1208,9],[1207,518],[1206,519],[1076,520],[1075,9],[1071,521],[1070,522],[1073,523],[1072,524],[1074,524],[1361,525],[1360,526],[1359,527],[1358,5],[1234,528],[1225,529],[1221,530],[1219,5],[1224,531],[1222,532],[1223,533],[1233,534],[1232,9],[1226,316],[1231,535],[1229,536],[1228,537],[1230,538],[1227,539],[1239,540],[1238,541],[1237,542],[1236,543],[1235,544],[1245,545],[1243,546],[1244,547],[1241,316],[1242,548],[1240,549],[1249,550],[1247,9],[1246,551],[1248,552],[1372,553],[1371,554],[1370,555],[1369,556],[1368,557],[1367,9],[1252,558],[1251,559],[1250,560],[1258,561],[1256,562],[1255,563],[1254,564],[1253,565],[1257,5],[1261,566],[1260,567],[1259,568],[1294,569],[1284,9],[1273,570],[1264,571],[1293,572],[1274,573],[1281,574],[1276,575],[1271,576],[1279,577],[1282,578],[1272,579],[1280,580],[1290,581],[1289,582],[1278,583],[1287,584],[1286,585],[1269,586],[1288,587],[1262,5],[1266,588],[1275,589],[1270,590],[1277,570],[1285,5],[1292,591],[1265,592],[1268,593],[1283,594],[1267,595],[1263,596],[1291,597],[1085,598],[1081,599],[1064,600],[1063,601],[1079,602],[1069,602],[1083,603],[1080,604],[1065,605],[1066,606],[1082,607],[1067,608],[1084,609],[1068,610],[1302,611],[1301,612],[1298,613],[1297,614],[1299,615],[1296,616],[1295,617],[1300,618],[1000,619],[999,620],[998,621],[1305,622],[1303,623],[1304,624],[1107,625],[1101,626],[1100,627],[1104,628],[1105,629],[1102,630],[1106,631],[1103,632],[1308,633],[1307,634],[1306,635],[1313,636],[1311,637],[1310,638],[1309,316],[1312,639],[1047,640],[1046,641],[1043,642],[1042,643],[1045,644],[1044,645],[1041,646],[1357,647],[1351,648],[1355,649],[1356,650],[1354,651],[1353,652],[1352,653],[1319,654],[1316,655],[1314,656],[1318,657],[1317,656],[1331,658],[1329,659],[1330,660],[1336,661],[1335,662],[1334,663],[1333,664],[1332,665],[1328,666],[1326,667],[1323,668],[1322,669],[1320,670],[1327,5],[1324,671],[1321,672],[1325,673],[1347,674],[1337,675],[1346,9],[1341,676],[1340,677],[1345,678],[1344,679],[1343,680],[1342,681],[1339,682],[1338,683],[1220,684],[1217,685],[1218,686],[1213,687],[1214,688],[1212,688],[1210,5],[1216,9],[1215,687],[1211,689],[1350,690],[1349,691],[1348,692],[147,5],[152,5],[148,5],[149,5],[153,5],[150,5],[151,5],[1394,693],[1395,9],[1398,694],[1078,695],[1396,9],[1397,9],[997,696],[996,9],[893,9],[894,9],[994,9],[990,9],[982,316],[895,697],[896,9],[995,316],[979,5],[989,698],[993,459],[897,9],[983,9],[978,459],[981,9],[965,699],[967,700],[968,9],[969,316],[966,9],[991,9],[980,9],[972,494],[970,9],[971,9],[973,5],[992,623],[974,9],[975,9],[976,5],[977,5],[984,9],[1400,701],[964,702],[899,5],[900,5],[901,5],[902,5],[903,5],[904,5],[905,5],[906,5],[907,5],[908,5],[909,5],[910,5],[898,5],[911,5],[912,5],[913,5],[914,5],[915,5],[916,5],[917,5],[918,5],[919,5],[920,5],[921,5],[922,5],[923,5],[924,5],[925,5],[926,5],[927,5],[928,5],[929,5],[930,5],[931,5],[932,5],[933,5],[934,5],[935,5],[936,5],[937,5],[938,5],[939,5],[940,5],[941,5],[942,5],[943,5],[944,5],[945,5],[946,5],[947,5],[948,5],[949,5],[950,5],[951,5],[952,5],[953,5],[954,5],[955,5],[956,5],[957,5],[958,5],[959,5],[960,5],[106,5],[962,5],[963,5],[961,5],[1399,703],[777,704],[780,697],[158,5],[163,5],[159,5],[164,705],[160,5],[161,5],[162,9],[790,5],[781,5],[782,253],[783,5],[792,706],[791,5],[784,707],[785,5],[786,5],[787,253],[789,5],[788,253],[154,708],[165,5],[461,709],[469,710],[463,711],[468,712],[156,713],[157,714],[155,5],[464,9],[465,715],[462,9],[466,716],[467,9],[2572,5],[2242,717],[1449,5],[1473,718],[1474,719],[1472,5],[1528,720],[1480,721],[1482,722],[1475,718],[1529,723],[1481,724],[1486,725],[1487,724],[1488,726],[1489,724],[1490,727],[1491,726],[1492,724],[1493,724],[1525,728],[1520,729],[1521,724],[1522,724],[1494,724],[1495,724],[1523,724],[1496,724],[1516,724],[1519,724],[1518,724],[1517,724],[1497,724],[1498,724],[1499,725],[1500,724],[1501,724],[1514,724],[1503,724],[1502,724],[1526,724],[1505,724],[1524,724],[1504,724],[1515,724],[1507,728],[1508,724],[1510,726],[1509,724],[1511,724],[1527,724],[1512,724],[1513,724],[1478,730],[1477,5],[1483,731],[1485,732],[1479,5],[1484,733],[1506,733],[1476,734],[1531,735],[1538,736],[1539,736],[1541,737],[1540,736],[1530,738],[1544,739],[1533,740],[1535,741],[1543,742],[1536,743],[1534,744],[1542,745],[1537,746],[1532,747],[2178,5],[1960,748],[1959,749],[1956,5],[1957,750],[1958,751],[2600,5],[2636,5],[1545,5],[776,752],[2625,5],[2633,5],[1077,5],[1741,5],[109,753],[2589,754],[2587,755],[2588,756],[2576,757],[2577,755],[2584,758],[2575,759],[2580,760],[2590,5],[2581,761],[2586,762],[2592,763],[2591,764],[2574,765],[2582,766],[2583,767],[2578,768],[2585,754],[2579,769],[1742,770],[1745,771],[1743,171],[1744,772],[2569,773],[2568,774],[2613,775],[2594,5],[2614,776],[2596,777],[2621,778],[2615,5],[2617,779],[2618,779],[2619,780],[2616,5],[2620,781],[2599,782],[2597,5],[2598,783],[2612,784],[2595,5],[2610,785],[2601,786],[2602,787],[2603,787],[2604,786],[2611,788],[2605,787],[2606,785],[2607,786],[2608,787],[2609,786],[2163,789],[2162,790],[2165,791],[2164,792],[2110,790],[2129,793],[2122,5],[2113,794],[2111,790],[2114,790],[2112,795],[2115,790],[2117,790],[2116,790],[2119,790],[2118,790],[2121,790],[2120,790],[2123,796],[2124,790],[2128,797],[2125,798],[2126,790],[2127,790],[2145,799],[2131,799],[2139,799],[2130,5],[2147,800],[2141,801],[2143,5],[2146,802],[2134,803],[2135,803],[2137,803],[2133,804],[2140,805],[2136,803],[2132,803],[2142,799],[2144,806],[2138,807],[2573,5],[2637,808],[1932,809],[1565,810],[1552,5],[1562,5],[1558,5],[1559,5],[1553,5],[1563,5],[1564,5],[1561,5],[1557,5],[1556,5],[1560,811],[1554,5],[1555,5],[1626,812],[1625,9],[1671,9],[1620,9],[1621,5],[1622,813],[1690,9],[1691,814],[1692,9],[1694,815],[1693,9],[1627,9],[1695,9],[1696,9],[1724,816],[1725,817],[1720,9],[1697,818],[1698,818],[1700,819],[1699,820],[1701,9],[1702,818],[1726,9],[1728,821],[1704,822],[1703,9],[1715,9],[1716,818],[1717,818],[1718,818],[1729,816],[1705,9],[1633,823],[1630,9],[1631,824],[1632,5],[1624,825],[1623,5],[1672,9],[1719,9],[1727,826],[1643,827],[1641,828],[1642,829],[1670,830],[1722,5],[1723,831],[1708,832],[1675,833],[1676,834],[1677,820],[1678,835],[1730,9],[1731,836],[1679,820],[1680,837],[1681,838],[1732,820],[1733,839],[1734,840],[1735,841],[1668,842],[1669,843],[1709,820],[1710,844],[1736,845],[1737,846],[1649,9],[1682,820],[1684,847],[1683,820],[1685,848],[1687,849],[1619,850],[1739,851],[1738,852],[1950,853],[1949,854],[1740,5],[1952,855],[1951,826],[1711,856],[1712,857],[1629,858],[1628,9],[1689,859],[1688,820],[1714,860],[1713,861],[1953,862],[1954,863],[1634,864],[1674,865],[1673,866],[1706,867],[1721,868],[1707,5],[1655,830],[1661,5],[1660,869],[1664,5],[1648,5],[1650,845],[1658,870],[1659,5],[1646,871],[1647,872],[1637,5],[1644,873],[1667,874],[1652,875],[1618,5],[1640,876],[1657,5],[1663,877],[1662,9],[1645,826],[1656,878],[1653,5],[1651,5],[1666,879],[1654,830],[1665,5],[1686,5],[80,5],[81,5],[15,5],[13,5],[14,5],[19,5],[18,5],[2,5],[20,5],[21,5],[22,5],[23,5],[24,5],[25,5],[26,5],[27,5],[3,5],[28,5],[29,5],[4,5],[30,5],[34,5],[31,5],[32,5],[33,5],[35,5],[36,5],[37,5],[5,5],[38,5],[39,5],[40,5],[41,5],[6,5],[45,5],[42,5],[43,5],[44,5],[46,5],[7,5],[47,5],[52,5],[53,5],[48,5],[49,5],[50,5],[51,5],[8,5],[57,5],[54,5],[55,5],[56,5],[58,5],[9,5],[59,5],[60,5],[61,5],[63,5],[62,5],[64,5],[65,5],[10,5],[66,5],[67,5],[68,5],[11,5],[69,5],[70,5],[71,5],[72,5],[73,5],[1,5],[74,5],[75,5],[12,5],[78,5],[77,5],[82,5],[76,5],[79,5],[17,5],[16,5],[2626,5],[2488,880],[2498,881],[2487,880],[2508,882],[2479,883],[2478,884],[2507,244],[2501,885],[2506,886],[2481,887],[2495,888],[2480,889],[2504,890],[2476,891],[2475,244],[2505,892],[2477,893],[2482,894],[2483,5],[2486,894],[2473,5],[2509,895],[2499,896],[2490,897],[2491,898],[2493,899],[2489,900],[2492,901],[2502,244],[2484,902],[2485,903],[2494,904],[2474,905],[2497,896],[2496,894],[2500,5],[2503,906],[2638,907],[2634,908],[2635,909],[2640,910],[2641,911],[2639,5],[2645,912],[2644,913],[2646,914],[2643,915],[2647,916],[2649,917],[2650,916],[88,918],[2624,919],[2571,920],[2570,921],[84,921],[83,5],[85,922],[86,5],[87,923],[2622,924],[2593,5],[2623,925],[2228,5],[1315,5],[1438,9],[108,9],[1444,926],[102,9],[103,927],[2628,249],[99,928],[100,929],[2185,9],[2642,5],[101,572],[2099,930],[2083,39],[2082,5],[2050,931],[2049,932],[2048,5],[2032,933],[2031,9],[2034,934],[2035,935],[2033,936],[2037,937],[2036,5],[2040,938],[2041,939],[2039,938],[2038,5],[2070,940],[2069,9],[2042,9],[2072,941],[2052,942],[2051,9],[2043,5],[2045,943],[2044,5],[2047,944],[2046,936],[2054,9],[2068,945],[2067,946],[2066,9],[2053,9],[2057,9],[2061,947],[2059,948],[2060,9],[2058,9],[2056,949],[2055,5],[2063,950],[2062,5],[2065,951],[2064,9],[2018,5],[2074,952],[2073,9],[2075,953],[2027,954],[2026,955],[2025,956],[2028,957],[2029,958],[2024,959],[2030,960],[2071,5],[2023,961],[2022,962],[2019,5],[2020,963],[2021,964],[112,965],[113,966],[111,967],[114,968],[115,969],[116,970],[117,971],[118,972],[119,973],[120,974],[121,975],[122,976],[123,977],[1424,5],[1423,978],[1422,5],[1549,979],[1579,980],[1597,980],[1587,980],[1588,980],[1598,980],[1599,980],[1435,980],[1600,980],[1581,980],[1589,980],[1427,980],[1425,980],[1431,980],[1453,981],[1590,980],[1550,980],[1467,980],[1591,980],[1434,980],[1601,980],[1602,980],[1461,980],[1603,980],[1604,980],[1605,980],[1592,980],[1593,980],[1594,980],[1595,980],[1606,980],[1607,980],[1608,980],[1609,980],[146,980],[1610,980],[1611,980],[1596,980],[1433,980],[1612,980],[127,982],[1583,983],[2077,984],[2078,985],[2100,986],[1582,987],[2101,988],[2102,989],[2103,990],[2104,989],[2192,991],[2193,992],[2194,989],[2195,993],[2197,994],[2198,995],[2196,996],[2199,997],[2201,998],[2202,999],[2200,1000],[2205,1001],[2203,999],[2206,1002],[2204,999],[2208,1003],[2187,1004],[2188,1005],[2190,1006],[2191,1007],[2189,989],[1468,1008],[2209,1009],[2210,989],[2211,988],[2186,1010],[1471,1011],[1470,1000],[2076,1012],[1546,1013],[1455,1014],[2226,1015],[124,1000],[134,1000],[107,1000],[128,1000],[125,1000],[126,1000],[2227,1016],[2207,1000],[1415,572],[143,1017],[1436,572],[139,1018],[2229,1019],[2230,1020],[1585,572],[2239,1021],[2240,1022],[2243,1023],[2245,1024],[2247,1025],[2248,572],[1416,1026],[140,1027],[141,1026],[142,988],[1403,1028],[144,1029],[145,1026],[1402,1030],[1404,1031],[137,1032],[138,1033],[1410,1034],[1405,1035],[1407,1036],[1408,1037],[1409,1038],[1411,1039],[1586,1040],[1584,1041],[2246,1018],[2249,1042],[1573,1043],[1572,1044],[2244,1045],[1580,1046],[130,1047],[136,1048],[133,1049],[132,1050],[1446,1000],[131,1000],[2079,1000],[2080,1000],[2250,1000],[1469,1000],[1568,572],[2251,1000],[1401,1051],[2252,572],[1457,1052],[2084,1000],[1454,1053],[1437,1054],[1576,1055],[1574,1056],[1578,1057],[1575,1058],[135,1059],[2081,1000],[1406,1060],[129,1000],[1577,1000],[1419,1000],[1420,1061],[1418,1062],[1417,1063],[2253,1064],[2254,1065],[2255,1066],[2256,1067],[2257,1068],[2258,1069],[2259,1070],[2260,1071],[2261,1072],[2262,1073],[2263,1074],[2269,1075],[2267,1076],[2266,1077],[2265,1078],[2268,1079],[2264,1080],[2271,1081],[2270,1082],[2272,1081],[2273,1081],[2274,1083],[2275,1084],[2276,1085],[2277,1086],[2278,1087],[2279,992],[2280,1086],[2281,1088],[2282,1089],[2283,1090],[2284,1091],[2290,1092],[1464,1000],[2287,1092],[2288,1093],[1465,1094],[2285,1095],[2286,1096],[2289,1097],[2291,1098],[2292,1099],[2300,1100],[2296,1101],[2301,1102],[2294,989],[1429,1103],[2302,1104],[2295,1100],[2297,1105],[2298,1106],[2304,1107],[2305,1105],[2306,1108],[2303,1109],[2308,1110],[2309,1111],[2310,1112],[2307,1000],[2312,1113],[2313,1114],[2314,1115],[2311,1000],[1428,1000],[2316,1116],[2317,1117],[2318,1118],[2315,1000],[2320,1119],[2321,1120],[2322,1121],[2319,1000],[2324,1122],[2325,1123],[2326,1124],[2323,1000],[2328,1125],[2329,1126],[2330,1127],[2327,1000],[2332,1128],[2333,989],[2334,1129],[2331,1000],[2336,1130],[2337,1131],[2335,1000],[2339,1132],[2340,989],[2341,1133],[2338,1000],[2343,1134],[2344,1135],[2345,1136],[2342,1000],[2347,1137],[2348,989],[2349,1138],[2346,1000],[2350,1139],[2293,1140],[1430,1141],[2352,1142],[2351,988],[2353,1143],[2299,1144],[2355,1145],[2358,1146],[2356,1147],[2357,1148],[2354,1149],[2359,1150],[2360,1151],[1426,1152],[2361,1153],[2362,1150],[1414,1154],[1413,1154],[1412,1155],[2363,1156],[1432,1157],[2364,1158],[2365,1159],[2366,1160],[2374,1161],[2375,1162],[2367,1163],[2372,1164],[2369,1165],[2368,1166],[2370,1167],[2371,1168],[2373,1169],[2376,1170],[2377,1170],[2378,1171],[2379,1172],[2380,1173],[2382,1089],[2381,1174],[2383,1175],[2384,1170],[2385,1000],[2386,1176],[2387,1177],[2388,989],[2389,1178],[2390,1179],[2391,1180],[2392,1181],[2393,1182],[2394,1183],[2395,1184],[2396,1185],[2397,1186],[1462,1187],[2398,1188],[2399,1189],[2400,1190],[2401,1191],[2402,1192],[2403,1193],[2404,1194],[2405,1195],[2407,1196],[2406,5],[2408,1197],[2409,1198],[2410,1197],[2411,1199],[2412,1200],[2413,1201],[2414,1202],[2415,1203],[2416,1204],[2417,1205],[2418,1206],[2419,1207],[2420,1208],[2421,1209],[2422,1210],[2423,1211],[2424,1212],[2425,1213],[2426,1214],[2427,1215],[2428,1216],[2429,1217],[2430,1218],[2431,1219],[2432,1220],[2433,1221],[2437,1222],[2436,1223],[2439,1224],[2434,989],[2435,1225],[2438,1223],[2442,1226],[2440,1227],[2441,1228],[2443,1229],[1551,1230],[1460,1231],[1459,1232],[1566,1233],[2445,1234],[1456,1235],[1448,1236],[1447,1237],[1445,1238],[2446,1092],[2447,1092],[1458,1239],[1570,1240],[1569,1241],[1466,1242],[1451,1243],[1450,1244],[2448,1245],[1463,1092],[1548,1246],[1547,1247],[2444,1248],[1567,1249],[1571,1250],[2449,1251],[2450,989],[2451,1252],[2452,989],[2453,989],[2454,989],[2455,989],[2456,1253],[2457,1254],[1421,1255],[2458,1256],[2461,5],[2462,1257],[2651,1258]],"semanticDiagnosticsPerFile":[[1432,[{"start":1799,"length":4,"code":2322,"category":1,"messageText":{"messageText":"Type '\"\" | \"info\" | \"danger\"' is not assignable to type '\"primary\" | \"success\" | \"warning\" | \"info\" | \"danger\" | undefined'.","category":1,"code":2322,"next":[{"messageText":"Type '\"\"' is not assignable to type '\"primary\" | \"success\" | \"warning\" | \"info\" | \"danger\" | undefined'.","category":1,"code":2322}]},"relatedInformation":[{"file":"./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tag/src/tag.d.ts","start":414,"length":4,"messageText":"The expected type comes from property 'type' which is declared here on type '{ readonly type?: \"primary\" | \"success\" | \"warning\" | \"info\" | \"danger\" | undefined; readonly closable?: boolean | undefined; readonly disableTransitions?: boolean | undefined; ... 6 more ...; readonly onClose?: ((evt: MouseEvent) => any) | undefined; } & VNodeProps & AllowedComponentProps & ComponentCustomProps & R...'","category":3,"code":6500}]},{"start":7767,"length":4,"code":2322,"category":1,"messageText":"Type 'string' is not assignable to type '\"primary\" | \"success\" | \"warning\" | \"info\" | \"danger\" | undefined'.","relatedInformation":[{"file":"./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tag/src/tag.d.ts","start":414,"length":4,"messageText":"The expected type comes from property 'type' which is declared here on type '{ readonly type?: \"primary\" | \"success\" | \"warning\" | \"info\" | \"danger\" | undefined; readonly closable?: boolean | undefined; readonly disableTransitions?: boolean | undefined; ... 6 more ...; readonly onClose?: ((evt: MouseEvent) => any) | undefined; } & VNodeProps & AllowedComponentProps & ComponentCustomProps & R...'","category":3,"code":6500}]}]],[1450,[{"start":4562,"length":16,"messageText":"Expected 0 arguments, but got 1.","category":1,"code":2554},{"start":4647,"length":12,"messageText":"Expected 0 arguments, but got 1.","category":1,"code":2554},{"start":4725,"length":9,"messageText":"Expected 0 arguments, but got 1.","category":1,"code":2554},{"start":4800,"length":9,"messageText":"Expected 0 arguments, but got 1.","category":1,"code":2554},{"start":5010,"length":19,"messageText":"Expected 0 arguments, but got 1.","category":1,"code":2554}]],[2078,[{"start":1300,"length":5,"messageText":"'attrs' implicitly has type 'any' because it does not have a type annotation and is referenced directly or indirectly in its own initializer.","category":1,"code":7022}]],[2079,[{"start":10172,"length":13,"code":2339,"category":1,"messageText":"Property 'captureStream' does not exist on type 'HTMLVideoElement'."}]],[2192,[{"start":888,"length":28,"code":7016,"category":1,"messageText":{"messageText":"Could not find a declaration file for module '@wangeditor/editor-for-vue'. 'D:/web/zyt/admin/node_modules/.pnpm/@wangeditor+editor-for-vue@_d49ef1161b4f4b880c450fdbfe3a0001/node_modules/@wangeditor/editor-for-vue/dist/index.esm.js' implicitly has an 'any' type.","category":1,"code":7016,"next":[{"info":{"moduleReference":"@wangeditor/editor-for-vue","mode":99}}]}}]],[2259,[{"start":8667,"length":6,"code":2339,"category":1,"messageText":"Property 'remark' does not exist on type 'never'."}]],[2286,[{"start":96679,"length":19,"code":2322,"category":1,"messageText":{"messageText":"Type '{ name: any; code: any; children: any; }[]' is not assignable to type 'never[]'.","category":1,"code":2322,"next":[{"messageText":"Type '{ name: any; code: any; children: any; }' is not assignable to type 'never'.","category":1,"code":2322}]}},{"start":96947,"length":989,"code":2322,"category":1,"messageText":"Type '{ name: string; children: { name: string; children: { name: string; }[]; }[]; }' is not assignable to type 'never'."},{"start":97951,"length":471,"code":2322,"category":1,"messageText":"Type '{ name: string; children: { name: string; children: { name: string; }[]; }[]; }' is not assignable to type 'never'."},{"start":98437,"length":471,"code":2322,"category":1,"messageText":"Type '{ name: string; children: { name: string; children: { name: string; }[]; }[]; }' is not assignable to type 'never'."},{"start":98923,"length":803,"code":2322,"category":1,"messageText":"Type '{ name: string; children: { name: string; children: { name: string; }[]; }[]; }' is not assignable to type 'never'."},{"start":107436,"length":17,"messageText":"Cannot find name 'searchPatientsAPI'.","category":1,"code":2304},{"start":60888,"length":6,"code":2322,"category":1,"messageText":{"messageText":"Type '(value: string[]) => void' is not assignable to type '(value: CascaderValue | null | undefined) => any'.","category":1,"code":2322,"next":[{"messageText":"Types of parameters 'value' and 'value' are incompatible.","category":1,"code":2328,"next":[{"messageText":"Type 'CascaderValue | null | undefined' is not assignable to type 'string[]'.","category":1,"code":2322,"next":[{"messageText":"Type 'undefined' is not assignable to type 'string[]'.","category":1,"code":2322}]}]}]},"relatedInformation":[{"file":"./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/cascader/src/cascader.vue.d.ts","start":2156,"length":8,"messageText":"The expected type comes from property 'onChange' which is declared here on type '__VLS_NormalizeComponentEvent; props: TreeOptionProps; effect: EpPropMergeType<...>; ... 48 more ...; cacheData: unknown[]; }> & Omit<...> & Record<...>'","category":3,"code":6500}]},{"start":51818,"length":7,"code":2322,"category":1,"messageText":{"messageText":"Type 'string | number | undefined' is not assignable to type 'number | null | undefined'.","category":1,"code":2322,"next":[{"messageText":"Type 'string' is not assignable to type 'number'.","category":1,"code":2322}]},"relatedInformation":[{"file":"./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/input-number/src/input-number.d.ts","start":907,"length":10,"messageText":"The expected type comes from property 'modelValue' which is declared here on type '{ readonly id?: string | undefined; readonly step?: number | undefined; readonly stepStrictly?: boolean | undefined; readonly max?: number | undefined; readonly min?: number | undefined; ... 19 more ...; readonly \"onUpdate:modelValue\"?: ((val: number | undefined) => any) | undefined; } & VNodeProps & AllowedComponen...'","category":3,"code":6500}]},{"start":64632,"length":7,"code":2322,"category":1,"messageText":{"messageText":"Type 'string | number | undefined' is not assignable to type 'number | null | undefined'.","category":1,"code":2322,"next":[{"messageText":"Type 'string' is not assignable to type 'number'.","category":1,"code":2322}]},"relatedInformation":[{"file":"./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/input-number/src/input-number.d.ts","start":907,"length":10,"messageText":"The expected type comes from property 'modelValue' which is declared here on type '{ readonly id?: string | undefined; readonly step?: number | undefined; readonly stepStrictly?: boolean | undefined; readonly max?: number | undefined; readonly min?: number | undefined; ... 19 more ...; readonly \"onUpdate:modelValue\"?: ((val: number | undefined) => any) | undefined; } & VNodeProps & AllowedComponen...'","category":3,"code":6500}]},{"start":101188,"length":1,"messageText":"Parameter 'r' implicitly has an 'any' type.","category":1,"code":7006}]],[2292,[{"start":153496,"length":19,"code":2322,"category":1,"messageText":{"messageText":"Type '{ value: any; label: any; code: any; children: any; }[]' is not assignable to type 'never[]'.","category":1,"code":2322,"next":[{"messageText":"Type '{ value: any; label: any; code: any; children: any; }' is not assignable to type 'never'.","category":1,"code":2322}]}},{"start":217157,"length":15,"code":2322,"category":1,"messageText":{"messageText":"Type 'string | number | undefined' is not assignable to type 'number | undefined'.","category":1,"code":2322,"next":[{"messageText":"Type 'string' is not assignable to type 'number'.","category":1,"code":2322}]},"relatedInformation":[{"file":"./src/api/tcm.ts","start":16728,"length":15,"messageText":"The expected type comes from property 'medication_days' which is declared here on type '{ id: number; dose_count?: number | undefined; medication_days?: number | undefined; }'","category":3,"code":6500}]},{"start":14551,"length":4,"code":2322,"category":1,"messageText":{"messageText":"Type 'unknown[]' is not assignable to type 'TreeNodeData[]'.","category":1,"code":2322,"next":[{"messageText":"Type 'unknown' is not assignable to type 'TreeNodeData'.","category":1,"code":2322}]},"relatedInformation":[{"file":"./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tree-select/src/tree-select.vue.d.ts","start":27789,"length":4,"messageText":"The expected type comes from property 'data' which is declared here on type 'Partial<{ lazy: boolean; offset: number; teleported: EpPropMergeType; props: TreeOptionProps; effect: EpPropMergeType<...>; ... 48 more ...; cacheData: unknown[]; }> & Omit<...> & Record<...>'","category":3,"code":6500}]},{"start":30726,"length":10,"code":2345,"category":1,"messageText":{"messageText":"Argument of type 'Record' is not assignable to parameter of type '{ id: number; }'.","category":1,"code":2345,"next":[{"messageText":"Property 'id' is missing in type 'Record' but required in type '{ id: number; }'.","category":1,"code":2741}]},"relatedInformation":[{"start":213900,"length":2,"messageText":"'id' is declared here.","category":3,"code":2728}]},{"start":31214,"length":10,"code":2345,"category":1,"messageText":{"messageText":"Argument of type 'Record' is not assignable to parameter of type '{ id: number; }'.","category":1,"code":2345,"next":[{"messageText":"Property 'id' is missing in type 'Record' but required in type '{ id: number; }'.","category":1,"code":2741}]},"relatedInformation":[{"start":238033,"length":2,"messageText":"'id' is declared here.","category":3,"code":2728}]},{"start":31670,"length":10,"code":2345,"category":1,"messageText":{"messageText":"Argument of type 'Record' is not assignable to parameter of type '{ id: number; }'.","category":1,"code":2345,"next":[{"messageText":"Property 'id' is missing in type 'Record' but required in type '{ id: number; }'.","category":1,"code":2741}]},"relatedInformation":[{"start":213900,"length":2,"messageText":"'id' is declared here.","category":3,"code":2728}]},{"start":32150,"length":10,"code":2345,"category":1,"messageText":{"messageText":"Argument of type 'Record' is not assignable to parameter of type '{ id: number; }'.","category":1,"code":2345,"next":[{"messageText":"Property 'id' is missing in type 'Record' but required in type '{ id: number; }'.","category":1,"code":2741}]},"relatedInformation":[{"start":238914,"length":2,"messageText":"'id' is declared here.","category":3,"code":2728}]},{"start":32596,"length":10,"code":2345,"category":1,"messageText":{"messageText":"Argument of type 'Record' is not assignable to parameter of type '{ id: number; express_company?: unknown; tracking_number?: unknown; ship_mode?: unknown; }'.","category":1,"code":2345,"next":[{"messageText":"Property 'id' is missing in type 'Record' but required in type '{ id: number; express_company?: unknown; tracking_number?: unknown; ship_mode?: unknown; }'.","category":1,"code":2741}]},"relatedInformation":[{"start":222042,"length":2,"messageText":"'id' is declared here.","category":3,"code":2728}]},{"start":33061,"length":10,"code":2345,"category":1,"messageText":{"messageText":"Argument of type 'Record' is not assignable to parameter of type '{ id: number; diagnosis_id?: number | undefined; pay_order_ids?: number[] | undefined; }'.","category":1,"code":2345,"next":[{"messageText":"Property 'id' is missing in type 'Record' but required in type '{ id: number; diagnosis_id?: number | undefined; pay_order_ids?: number[] | undefined; }'.","category":1,"code":2741}]},"relatedInformation":[{"start":234641,"length":2,"messageText":"'id' is declared here.","category":3,"code":2728}]},{"start":33521,"length":10,"code":2345,"category":1,"messageText":{"messageText":"Argument of type 'Record' is not assignable to parameter of type '{ id: number; }'.","category":1,"code":2345,"next":[{"messageText":"Property 'id' is missing in type 'Record' but required in type '{ id: number; }'.","category":1,"code":2741}]},"relatedInformation":[{"start":237664,"length":2,"messageText":"'id' is declared here.","category":3,"code":2728}]},{"start":33975,"length":10,"code":2345,"category":1,"messageText":{"messageText":"Argument of type 'Record' is not assignable to parameter of type '{ id: number; }'.","category":1,"code":2345,"next":[{"messageText":"Property 'id' is missing in type 'Record' but required in type '{ id: number; }'.","category":1,"code":2741}]},"relatedInformation":[{"start":229818,"length":2,"messageText":"'id' is declared here.","category":3,"code":2728}]},{"start":92405,"length":7,"code":2322,"category":1,"messageText":{"messageText":"Type 'string | number | undefined' is not assignable to type 'number | null | undefined'.","category":1,"code":2322,"next":[{"messageText":"Type 'string' is not assignable to type 'number'.","category":1,"code":2322}]},"relatedInformation":[{"file":"./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/input-number/src/input-number.d.ts","start":907,"length":10,"messageText":"The expected type comes from property 'modelValue' which is declared here on type '{ readonly id?: string | undefined; readonly step?: number | undefined; readonly stepStrictly?: boolean | undefined; readonly max?: number | undefined; readonly min?: number | undefined; ... 19 more ...; readonly \"onUpdate:modelValue\"?: ((val: number | undefined) => any) | undefined; } & VNodeProps & AllowedComponen...'","category":3,"code":6500}]},{"start":104708,"length":7,"code":2322,"category":1,"messageText":{"messageText":"Type 'string | number | undefined' is not assignable to type 'number | null | undefined'.","category":1,"code":2322,"next":[{"messageText":"Type 'string' is not assignable to type 'number'.","category":1,"code":2322}]},"relatedInformation":[{"file":"./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/input-number/src/input-number.d.ts","start":907,"length":10,"messageText":"The expected type comes from property 'modelValue' which is declared here on type '{ readonly id?: string | undefined; readonly step?: number | undefined; readonly stepStrictly?: boolean | undefined; readonly max?: number | undefined; readonly min?: number | undefined; ... 19 more ...; readonly \"onUpdate:modelValue\"?: ((val: number | undefined) => any) | undefined; } & VNodeProps & AllowedComponen...'","category":3,"code":6500}]},{"start":140602,"length":1,"messageText":"Parameter 'r' implicitly has an 'any' type.","category":1,"code":7006}]],[2304,[{"start":325,"length":8,"code":2345,"category":1,"messageText":{"messageText":"Argument of type '{ modelValue: any; }' is not assignable to parameter of type '{ readonly modelValue: any[]; readonly max?: number | undefined; readonly min?: number | undefined; readonly itemData: any; readonly \"onUpdate:modelValue\"?: ((value: any) => any) | undefined; } & VNodeProps & AllowedComponentProps & ComponentCustomProps & Record<...>'.","category":1,"code":2345,"next":[{"messageText":"Property 'itemData' is missing in type '{ modelValue: any; }' but required in type '{ readonly modelValue: any[]; readonly max?: number | undefined; readonly min?: number | undefined; readonly itemData: any; readonly \"onUpdate:modelValue\"?: ((value: any) => any) | undefined; }'.","category":1,"code":2741,"canonicalHead":{"code":2322,"messageText":"Type '{ modelValue: any; }' is not assignable to type '{ readonly modelValue: any[]; readonly max?: number | undefined; readonly min?: number | undefined; readonly itemData: any; readonly \"onUpdate:modelValue\"?: ((value: any) => any) | undefined; }'."}}]},"relatedInformation":[{"file":"./src/views/decoration/component/tabbar/pc/menu-set.vue","start":4006,"length":8,"messageText":"'itemData' is declared here.","category":3,"code":2728}]},{"start":454,"length":8,"code":2345,"category":1,"messageText":{"messageText":"Argument of type '{ modelValue: any; }' is not assignable to parameter of type '{ readonly modelValue: any[]; readonly max?: number | undefined; readonly min?: number | undefined; readonly itemData: any; readonly \"onUpdate:modelValue\"?: ((value: any) => any) | undefined; } & VNodeProps & AllowedComponentProps & ComponentCustomProps & Record<...>'.","category":1,"code":2345,"next":[{"messageText":"Property 'itemData' is missing in type '{ modelValue: any; }' but required in type '{ readonly modelValue: any[]; readonly max?: number | undefined; readonly min?: number | undefined; readonly itemData: any; readonly \"onUpdate:modelValue\"?: ((value: any) => any) | undefined; }'.","category":1,"code":2741,"canonicalHead":{"code":2322,"messageText":"Type '{ modelValue: any; }' is not assignable to type '{ readonly modelValue: any[]; readonly max?: number | undefined; readonly min?: number | undefined; readonly itemData: any; readonly \"onUpdate:modelValue\"?: ((value: any) => any) | undefined; }'."}}]},"relatedInformation":[{"file":"./src/views/decoration/component/tabbar/pc/menu-set.vue","start":4006,"length":8,"messageText":"'itemData' is declared here.","category":3,"code":2728}]}]],[2317,[{"start":195,"length":6,"code":2339,"category":1,"messageText":"Property 'height' does not exist on type '{}'."}]],[2359,[{"start":5709,"length":5,"messageText":"Parameter 'depts' implicitly has an 'any' type.","category":1,"code":7006},{"start":5738,"length":6,"messageText":"Variable 'result' implicitly has type 'any[]' in some locations where its type cannot be determined.","category":1,"code":7034},{"start":5777,"length":4,"messageText":"Parameter 'dept' implicitly has an 'any' type.","category":1,"code":7006},{"start":5946,"length":6,"messageText":"Variable 'result' implicitly has an 'any[]' type.","category":1,"code":7005},{"start":6044,"length":6,"messageText":"Variable 'result' implicitly has an 'any[]' type.","category":1,"code":7005}]],[2362,[{"start":10278,"length":47,"code":2769,"category":1,"messageText":{"messageText":"No overload matches this call.","category":1,"code":2769,"next":[{"messageText":"Overload 1 of 3, '(callbackfn: (previousValue: unknown, currentValue: unknown, currentIndex: number, array: unknown[]) => unknown, initialValue: unknown): unknown', gave the following error.","category":1,"code":2772,"next":[{"messageText":"Argument of type '(total: number, count: number) => number' is not assignable to parameter of type '(previousValue: unknown, currentValue: unknown, currentIndex: number, array: unknown[]) => unknown'.","category":1,"code":2345,"next":[{"messageText":"Types of parameters 'total' and 'previousValue' are incompatible.","category":1,"code":2328,"next":[{"messageText":"Type 'unknown' is not assignable to type 'number'.","category":1,"code":2322}]}]}]},{"messageText":"Overload 2 of 3, '(callbackfn: (previousValue: number, currentValue: unknown, currentIndex: number, array: unknown[]) => number, initialValue: number): number', gave the following error.","category":1,"code":2772,"next":[{"messageText":"Argument of type '(total: number, count: number) => number' is not assignable to parameter of type '(previousValue: number, currentValue: unknown, currentIndex: number, array: unknown[]) => number'.","category":1,"code":2345,"next":[{"messageText":"Types of parameters 'count' and 'currentValue' are incompatible.","category":1,"code":2328,"next":[{"messageText":"Type 'unknown' is not assignable to type 'number'.","category":1,"code":2322}]}]}]}]},"relatedInformation":[]},{"start":10485,"length":47,"code":2769,"category":1,"messageText":{"messageText":"No overload matches this call.","category":1,"code":2769,"next":[{"messageText":"Overload 1 of 3, '(callbackfn: (previousValue: unknown, currentValue: unknown, currentIndex: number, array: unknown[]) => unknown, initialValue: unknown): unknown', gave the following error.","category":1,"code":2772,"next":[{"messageText":"Argument of type '(total: number, count: number) => number' is not assignable to parameter of type '(previousValue: unknown, currentValue: unknown, currentIndex: number, array: unknown[]) => unknown'.","category":1,"code":2345,"next":[{"messageText":"Types of parameters 'total' and 'previousValue' are incompatible.","category":1,"code":2328,"next":[{"messageText":"Type 'unknown' is not assignable to type 'number'.","category":1,"code":2322}]}]}]},{"messageText":"Overload 2 of 3, '(callbackfn: (previousValue: number, currentValue: unknown, currentIndex: number, array: unknown[]) => number, initialValue: number): number', gave the following error.","category":1,"code":2772,"next":[{"messageText":"Argument of type '(total: number, count: number) => number' is not assignable to parameter of type '(previousValue: number, currentValue: unknown, currentIndex: number, array: unknown[]) => number'.","category":1,"code":2345,"next":[{"messageText":"Types of parameters 'count' and 'currentValue' are incompatible.","category":1,"code":2328,"next":[{"messageText":"Type 'unknown' is not assignable to type 'number'.","category":1,"code":2322}]}]}]}]},"relatedInformation":[]},{"start":4702,"length":4,"code":2322,"category":1,"messageText":"Type 'string' is not assignable to type '\"primary\" | \"success\" | \"warning\" | \"info\" | \"danger\" | undefined'.","relatedInformation":[{"file":"./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tag/src/tag.d.ts","start":414,"length":4,"messageText":"The expected type comes from property 'type' which is declared here on type '{ readonly type?: \"primary\" | \"success\" | \"warning\" | \"info\" | \"danger\" | undefined; readonly closable?: boolean | undefined; readonly disableTransitions?: boolean | undefined; ... 6 more ...; readonly onClose?: ((evt: MouseEvent) => any) | undefined; } & VNodeProps & AllowedComponentProps & ComponentCustomProps & R...'","category":3,"code":6500}]},{"start":6901,"length":4,"code":2322,"category":1,"messageText":"Type 'string' is not assignable to type '\"primary\" | \"success\" | \"warning\" | \"info\" | \"danger\" | undefined'.","relatedInformation":[{"file":"./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tag/src/tag.d.ts","start":414,"length":4,"messageText":"The expected type comes from property 'type' which is declared here on type '{ readonly type?: \"primary\" | \"success\" | \"warning\" | \"info\" | \"danger\" | undefined; readonly closable?: boolean | undefined; readonly disableTransitions?: boolean | undefined; ... 6 more ...; readonly onClose?: ((evt: MouseEvent) => any) | undefined; } & VNodeProps & AllowedComponentProps & ComponentCustomProps & R...'","category":3,"code":6500}]}]],[2364,[{"start":7613,"length":4,"code":2322,"category":1,"messageText":"Type 'string' is not assignable to type '\"primary\" | \"success\" | \"warning\" | \"info\" | \"danger\" | undefined'.","relatedInformation":[{"file":"./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tag/src/tag.d.ts","start":414,"length":4,"messageText":"The expected type comes from property 'type' which is declared here on type '{ readonly type?: \"primary\" | \"success\" | \"warning\" | \"info\" | \"danger\" | undefined; readonly closable?: boolean | undefined; readonly disableTransitions?: boolean | undefined; ... 6 more ...; readonly onClose?: ((evt: MouseEvent) => any) | undefined; } & VNodeProps & AllowedComponentProps & ComponentCustomProps & R...'","category":3,"code":6500}]}]],[2390,[{"start":397,"length":10,"code":2322,"category":1,"messageText":{"messageText":"Type '(opts?: { silent?: boolean; }) => Promise' is not assignable to type '(name: TabPaneName) => any'.","category":1,"code":2322,"next":[{"messageText":"Types of parameters 'opts' and 'name' are incompatible.","category":1,"code":2328,"next":[{"messageText":"Type 'TabPaneName' is not assignable to type '{ silent?: boolean | undefined; } | undefined'.","category":1,"code":2322,"next":[{"messageText":"Type 'string' has no properties in common with type '{ silent?: boolean | undefined; }'.","category":1,"code":2559}]}]}]},"relatedInformation":[{"file":"./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tabs/src/tabs.d.ts","start":7614,"length":11,"messageText":"The expected type comes from property 'onTabChange' which is declared here on type '__VLS_NormalizeComponentEvent; readonly closable: boolean; readonly tabindex: EpPropMergeType; ... 4 more ...; readonly addable: boolean; }>...'","category":3,"code":6500}]}]],[2393,[{"start":56480,"length":34,"messageText":"This comparison appears to be unintentional because the types '\"supplement\"' and '\"normal\"' have no overlap.","category":1,"code":2367},{"start":20344,"length":28,"messageText":"This comparison appears to be unintentional because the types '\"supplement\"' and '\"normal\"' have no overlap.","category":1,"code":2367}]],[2394,[{"start":723,"length":5,"code":2353,"category":1,"messageText":"Object literal may only specify known properties, and 'value' does not exist in type 'TreeOptionProps'.","relatedInformation":[{"file":"./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tree-select/src/tree-select.vue.d.ts","start":25072,"length":5,"messageText":"The expected type comes from property 'props' which is declared here on type 'Partial<{ lazy: boolean; offset: number; teleported: EpPropMergeType; props: TreeOptionProps; effect: EpPropMergeType<...>; ... 48 more ...; cacheData: unknown[]; }> & Omit<...> & Record<...>'","category":3,"code":6500}]}]],[2399,[{"start":1732,"length":5,"code":2353,"category":1,"messageText":"Object literal may only specify known properties, and 'value' does not exist in type 'TreeOptionProps'.","relatedInformation":[{"file":"./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tree-select/src/tree-select.vue.d.ts","start":25072,"length":5,"messageText":"The expected type comes from property 'props' which is declared here on type 'Partial<{ lazy: boolean; offset: number; teleported: EpPropMergeType; props: TreeOptionProps; effect: EpPropMergeType<...>; ... 48 more ...; cacheData: unknown[]; }> & Omit<...> & Record<...>'","category":3,"code":6500}]}]],[2440,[{"start":5402,"length":4,"code":2322,"category":1,"messageText":{"messageText":"Type 'unknown[]' is not assignable to type 'TreeNodeData[]'.","category":1,"code":2322,"next":[{"messageText":"Type 'unknown' is not assignable to type 'TreeNodeData'.","category":1,"code":2322}]},"relatedInformation":[{"file":"./node_modules/.pnpm/element-plus@2.13.7_typescr_8dc22b845ba8de11448ecad5177e079a/node_modules/element-plus/es/components/tree-select/src/tree-select.vue.d.ts","start":27789,"length":4,"messageText":"The expected type comes from property 'data' which is declared here on type 'Partial<{ lazy: boolean; offset: number; teleported: EpPropMergeType; props: TreeOptionProps; effect: EpPropMergeType<...>; ... 48 more ...; cacheData: unknown[]; }> & Omit<...> & Record<...>'","category":3,"code":6500}]}]],[2443,[{"start":31652,"length":6,"code":2349,"category":1,"messageText":{"messageText":"This expression is not callable.","category":1,"code":2349,"next":[{"messageText":"Type 'String' has no call signatures.","category":1,"code":2757}]},"relatedInformation":[{"start":31652,"length":6,"messageText":"Are you missing a semicolon?","category":1,"code":2734}]},{"start":32437,"length":2,"code":2349,"category":1,"messageText":{"messageText":"This expression is not callable.","category":1,"code":2349,"next":[{"messageText":"Type 'String' has no call signatures.","category":1,"code":2757}]},"relatedInformation":[{"start":32437,"length":2,"messageText":"Are you missing a semicolon?","category":1,"code":2734}]}]],[2445,[{"start":14749,"length":34,"code":2322,"category":1,"messageText":"Type 'string' is not assignable to type 'number'."}]],[2458,[{"start":24819,"length":1,"messageText":"Parameter 'd' implicitly has an 'any' type.","category":1,"code":7006}]]],"affectedFilesPendingEmit":[1579,1597,1587,1588,1598,1599,1435,1600,1581,1589,1427,1425,1431,1453,1590,1550,1467,1591,1434,1601,1602,1461,1603,1604,1605,1592,1593,1594,1595,1606,1607,1608,1609,146,1610,1611,1596,1433,1612,127,1583,2077,2078,2100,1582,2101,2102,2103,2104,2192,2193,2194,2195,2197,2198,2196,2199,2201,2202,2200,2205,2203,2206,2204,2208,2187,2188,2190,2191,2189,1468,2209,2210,2211,2186,1471,1470,2076,1546,1455,2226,124,134,107,128,125,126,2227,2207,1415,143,1436,139,2229,2230,1585,2239,2240,2243,2245,2247,2248,1416,140,141,142,1403,144,145,1402,1404,137,138,1410,1405,1407,1408,1409,1411,1586,1584,2246,2249,1573,1572,2244,1580,130,136,133,132,1446,131,2079,2080,2250,1469,1568,2251,1401,2252,1457,2084,1454,1437,1576,1574,1578,135,2081,1406,129,1577,1419,1420,1418,1417,2253,2254,2255,2256,2257,2258,2259,2260,2261,2262,2263,2269,2267,2266,2265,2268,2264,2271,2270,2272,2273,2274,2275,2276,2277,2278,2279,2280,2281,2282,2283,2284,2290,1464,2287,2288,1465,2285,2286,2289,2291,2292,2300,2296,2301,2294,1429,2302,2295,2297,2298,2304,2305,2306,2303,2308,2309,2310,2307,2312,2313,2314,2311,1428,2316,2317,2318,2315,2320,2321,2322,2319,2324,2325,2326,2323,2328,2329,2330,2327,2332,2333,2334,2331,2336,2337,2335,2339,2340,2341,2338,2343,2344,2345,2342,2347,2348,2349,2346,2350,2293,1430,2352,2351,2353,2299,2355,2358,2356,2357,2354,2359,2360,1426,2361,2362,1414,1413,1412,2363,1432,2364,2365,2366,2374,2375,2367,2372,2369,2368,2370,2371,2373,2376,2377,2378,2379,2380,2382,2381,2383,2384,2385,2386,2387,2388,2389,2390,2391,2392,2393,2394,2395,2396,2397,1462,2398,2399,2400,2401,2402,2403,2404,2405,2407,2408,2409,2410,2411,2412,2413,2414,2415,2416,2417,2418,2419,2420,2421,2422,2423,2424,2425,2426,2427,2428,2429,2430,2431,2432,2433,2437,2436,2439,2434,2435,2438,2442,2440,2441,2443,1551,1460,1459,1566,2445,1456,1448,1447,1445,2446,2447,1458,1570,1569,1466,1451,1450,2448,1463,1548,1547,2444,1567,1571,2449,2450,2451,2452,2453,2454,2455,2456,2457,1421,2458,2651],"emitSignatures":[107,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,1401,1402,1403,1404,1405,1406,1407,1408,1409,1410,1411,1412,1413,1414,1415,1416,1417,1418,1419,1420,1421,1425,1426,1427,1428,1429,1430,1431,1432,1433,1434,1435,1436,1437,1445,1446,1447,1448,1450,1451,1453,1454,1455,1456,1457,1458,1459,1460,1461,1462,1463,1464,1465,1466,1467,1468,1469,1470,1471,1546,1547,1548,1550,1551,1566,1567,1568,1569,1570,1571,1572,1573,1574,1576,1577,1578,1579,1580,1581,1582,1583,1584,1585,1586,1587,1588,1589,1590,1591,1592,1593,1594,1595,1596,1597,1598,1599,1600,1601,1602,1603,1604,1605,1606,1607,1608,1609,1610,1611,1612,2076,2077,2078,2079,2080,2081,2084,2100,2101,2102,2103,2104,2186,2187,2188,2189,2190,2191,2192,2193,2194,2195,2196,2197,2198,2199,2200,2201,2202,2203,2204,2205,2206,2207,2208,2209,2210,2211,2226,2227,2229,2230,2239,2240,2243,2244,2245,2246,2247,2248,2249,2250,2251,2252,2253,2254,2255,2256,2257,2258,2259,2260,2261,2262,2263,2264,2265,2266,2267,2268,2269,2270,2271,2272,2273,2274,2275,2276,2277,2278,2279,2280,2281,2282,2283,2284,2285,2286,2287,2288,2289,2290,2291,2292,2293,2294,2295,2296,2297,2298,2299,2300,2301,2302,2303,2304,2305,2306,2307,2308,2309,2310,2311,2312,2313,2314,2315,2316,2317,2318,2319,2320,2321,2322,2323,2324,2325,2326,2327,2328,2329,2330,2331,2332,2333,2334,2335,2336,2337,2338,2339,2340,2341,2342,2343,2344,2345,2346,2347,2348,2349,2350,2351,2352,2353,2354,2355,2356,2357,2358,2359,2360,2361,2362,2363,2364,2365,2366,2367,2368,2369,2370,2371,2372,2373,2374,2375,2376,2377,2378,2379,2380,2381,2382,2383,2384,2385,2386,2387,2388,2389,2390,2391,2392,2393,2394,2395,2396,2397,2398,2399,2400,2401,2402,2403,2404,2405,2407,2408,2409,2410,2411,2412,2413,2414,2415,2416,2417,2418,2419,2420,2421,2422,2423,2424,2425,2426,2427,2428,2429,2430,2431,2432,2433,2434,2435,2436,2437,2438,2439,2440,2441,2442,2443,2444,2445,2446,2447,2448,2449,2450,2451,2452,2453,2454,2455,2456,2457,2458,2651],"version":"5.7.3"} \ No newline at end of file diff --git a/app/artifacts/patient_appointment_density/appointments_1024x640.png b/app/artifacts/patient_appointment_density/appointments_1024x640.png index 48721e6515156e4063a0cebb71b9b5d25940a721..83cfc4ceed504333d7f05e57094de200a6aaa8b1 100644 GIT binary patch delta 90145 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≻*K6AG@p2Qh?M10q+UnlDX~Wc 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 BOZNZ( delta 91364 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Ċu7HNx9Szqy#dMq*nT z>QU2+gu<8@3gM*wo4ck&{h}kkvn_MD)yu{%({Sc{EhxMr z+b88rc?Uk(Ftb>EK%%A=GRED-W?H{c zgVIiDt0~0$HVE-a{O^e%hSu2mTGhvG@5xAMmmB4q-7`pm0(Cv>O%3kXr@N@$Z! z$=Xh#V&_5N5U?LWn4kR)_h)Q+CDECqNDu>=24TLr=kNe%X?86yBI15IKEKK=zW;;s z!*^yDE5=A|Y%=<7!EzU_6d4r*Lp(97y|x5L$KPNPb}VN`Dw~Va)i}>R(l1;{`;zL5 z3EA5V->3r2k|&xB^0`>8577d9HuUWTM|l~V#QdB+X!s}3=DD==w*?^B$b^Chsy-DaK8G+<*E>xKd8PyT`=#t&vCk!mz~4hUy-yvr#oBU}&dn^r9;+Mj}9z|*6n;H?vlr!ndEUnUiMu;Q-X zsDp<`8_+~`Xm2XlO3`j}<|&N<|M?XasCe(SI}L+3y_e{IRuq+1{p82j7WgM|ad9|Y z+q&5G`G+#=eNB9M`bG5`IXhl#kg9h`DBD^38w?6#VTZGSeFaFQ)rbs1;WQHKts36Bc(WX+M1sX#k_K?bL@e z*&3^fBn;7QI8lAK`#rD*L&aUvlo0{L#`I4QNG1f4p&SkUVLhwI3&@J7aFL5GB0mK5 z%UB`;%n>D}mO~>EvLP9!54fF|o~(RBGWfXDZykT_2Ny;t4X+diw^7zqb3i++$)e#m z9y`+x_*CL|Rq)Y}5pjGzfLQ`@F++MY@XXasn8Nt2ri+;rEg|wvDwqc~u_`I~K#dlo zKtirCyUfwtksPQy-W(9eNA`~}(fHCF1kSij{+yh+T*oIL_SCfRMq19QeIeIL#CDfMD}@ zUk)D`s31>D(Dq!lb(hs0igycocvw6Vbsg$O+Dw>wY52Jj)&tLL)zrM%{>a5`(K8H`_8qkS`CX?BM)_o`Jg7yWYu$qZoCuyUMZA9eh{( zV&8MKERZT%{g+=g{2)_@+YD2^>7YN2;Bud2V3nbXJ4;&ZHG1u+p%Q1BZ3G9tT}2i_ zwCs*JfyW5*;2~=)gc?HlTQ7Lq=pXg=7bU@DEUpPgJVWw}$CY4HN6vm}J@Y{(K%|7Y z5R0Gb5D8GkMF>9P@)hJVZuQyz&^_~(9AtShsjf*WP^I57G!E8L4GeMdlc;XTL8HmX z*WHy0lA6!Spenq_iLU%8&RJ+0nz{s8zCycF_P#~p%GH4R8$VZ(W1CD$M4xvE_qE|*omS@#~&Qsg~v1$ zAtS%;L^l2TpA7P+kDE75{qZ_0NUO z`?UOKoOHi#jPXwPJX}aCg{JOQZ=xu#+v?=#&dhLBHZv}t8$*YloTj_hk}yn zoUW(7SoyAm!KzmHM`3_NJ>tJQTkDsog?&QP?Tv9f&q80Hy#eloWAHFy9Zggd01b`8 z8ym!Jk5|!zx<7wc0G~Q$S1Z@$E`PZsnPKP zIjnsldxH_hktb+PseS*7h*5SLF#25g#walf)zGlV;9_Y*gv4-oCHI4(2>xryv2=yW zI)4wG7g({Ov|s|!@?3AKDl=ia+Dx4kkgg_gFqP#6r@_F*F#5@U^Pjrj@AG@v`~)sl zDkA|r2-R7t%EfRHI`5FH36j;Srt~^szIofa#Ub}ekui=0i!n8aDRSRT!@!?`p}J!x zAxzdR=nNk)Q5-@9K72=pRN#uAV-phc!I`l6XgJ`h%PZ85sh;4@onKz{8$|I(iymje z0a1Hld(;iypMH>H&loU&2-}(c@u5Cir?c3LNSHp@7PE_W6U+0@zx^r{Jteh#JJ^*d zegtEwTZiVq&8mwcBOzq?VaZ|d)j98v!S9ja>;)JLwI8JCAj!v-l<=uX?|azL06buV z5-PwN>D+H75|!BiXVSvSCfzQsZ97R@!G#lKU$73a0kC}Oe0yGOEBBjR1T`9V!?#i? z;QK(HEd16*@ZHSnp%z)AcWxV?!jGxySoN=cYmF8?tS;KdiAQN2I!fld-vXJt#8S< zHaBg#`}0Ax;Ief*?OW!;N7KEy?PhMppRb=j@LwxU_i#raia;D*(Qd(CTK_pR&ZV-N zdL@t3!JYES3C#CFBQlu67+cC7AL=K`H#R8+c7I(7ijmfB{eeof9|f$t1~OEv2p5*Sj9P@;o#---;R9F?;~|N{xYM{Ig65h``G+zl{PpI94)Sg?t?5XsU5) z`pxrcxws9Xdq*OGQU8tw(4yNa7ZBc-Fnh0YE$@WbKHpzvz~tAQoa?oq#sr|yft4K> zQJV*W@JUuHnwHqOy|GG%n&mu662}&bCOeSIV_S^o+F-aWi#~>rZ$ycY!c1MS(}wY3 z?}$eAes;TB_G<{fQm|u9lflN=U;giaBLZd&aeww!E`^tT89H1CNddsz{M)A|y~R7P zD3k2+;_-cmZml{aJ{+7oIti|^!mOsX%K;B*tM410_SvW09f@?s*5|D+>X1=I(w=yj z=A@(=kd`vvzytcB%2b$hbM(FFC-a43zwWBJ=#S=6W}Q7@>|fba#7bvTeo1*{b21-j zM)F2?*U_(;MjQ8M-KXNSF3X;eK!AUfacbM&n_F-1auCI`S8;tlU^h%}Li1F&QnG#* z`3->nD(Ze3E2K;G0qO$`q_YxM@*O|68_TUZZ>mp*8An5)oOELQbO`W8tuHe(G^h02 z^!~e4^tVCEg@H$lky?oVR*O9CDC5IbgL+;+E(-mb;>cozTNuQ>z}vSb80i^yCai(o zB?d2;w6+oo*I(-ph^CcUGfsTe+w(1y3VD;Dvys$@6`qv{AVumHH7Tj2udxEupwVb1 zR{OE}9x#Wuojvc(*a*Lu=nTebM$KppFZVrkfmT{@8HoWdQw{lfP~hLvgl}MedE5WB z-@{y!r5Ny!>IUDAkCjCM8>aU}Tv%cBu>ZP_AgqV`h}hn-_UB*o4c2T;wqrs>-Y}Yi zJtzKi<`gF*Gpt{y%l5#TYj z-=hET<;nOvW^CJSz#e(b#D|uf_WV^IF~rNfsS=gW?B&O(a3s$ErdUNO{jw zr}ebjsf-X`bC5hr`A%nH$xH)p&815xqaQ7LkM=*B5G=s#H__Gx3edsap{@kOe-ApS ztK}8f<=$1ou%i4y|L@#@x4F^x1tgrMNc{JSBt^gl0{=M+Ecx(eg*`R#_@#ydksJCK zn<8fRA_f7r=5zrDvX%({c^;X)L168~!uroTrdpzZ49MRnFsSmsp<-HT5JJ0u`S?$v z?ca-eMj`1oLB(~cz_-LrpnoN!;#ihFMjPrkBgP$*ZOLKGSsd|BPi^NQ{_z<22qjvj;B*ktyn^9zspK< zEM@&Z%}o*z&7O4eFC`wQcapl_>6xLLn9tqGg@p7q9@yvQ~9 z^62oR_5I1Qb-;r&`ngjF3S`v4hd4bY+|H|Bt4(fjw!may*A_gJDXToLqZIq|l0z;O z)HDy4Bz<&x^Q{)ePtGw93-iwlF0sEeM$(paTa;Rs1@uawL^h6zd0FRXC(!{`RDMrp zdfK+n&(*E>o{ZrGTaMiW;pW7*S0~#TrTE`iR=*#SthL zRkuKNcC55_str|yj1citiAx5re4*!oVs8-5R4QBc%rs9hPleX!<4-2s)41rqA!~#E zdm`Je8oApd{C>%w^Ot3p>4_!#>ln92IKrUi`gjUlX**%L#wS+k4X};Pmr|y1?xRM& z96NJh?$=XPdH&NMq31d>Dt4mkz6T`m`FxJRel>gaF!3#$qGv?%)pdaPWOO4aK5*O6 zm9(_^B9ZHi<{Hg_tC*IbNWACjSP2Ul#ImwMsApGZrWTgQ=6;qkE9U-Wpoas!9FWgN z9Lz@{bX*J9&Gkgh9X4K7Oxt{Si75>WDA8A-M2?>N&i169B{GLmGF#oR$bcAiwF`Gq82y<$YsD@0z=lHK3qw;JRrC0VFm1?_ zJgN&+Msw85$#F4P)M|LCPa|`(vdVzhW0NsY^PAoJKD|2jNCtJ!2MS*z~ z^buknDV3C}c~43Apsw@VJlZpnaIdyjMLwXF428TOoEt=-2Mq(pFWbtA4(s(XbS5m2 zWjt9_^ued;K`Qq=pM||_>H87>I%MRdlCJa_#`bk5m2E60P`2U=UOZX~OddA3W0bBq z;{%>SUh`VS(0*Y7fmH##`QL++0b(&dBYb$w!;>6k-;4J~4s^3s(KUr3t!gx3p&mA- zw%^=}0Fe!AK@T-e<2TD3@y4*CXODYNKT^Z_ytmh?E3o9?k8sMG^ebK4lkFUWs@G+xT4T*m)p@U3QyoX!yh#A^Kq7+?9B^}y`s>F$M zdi8k-@ROqYPDX3;Cqykuu2Q$&Tiq{UEN!?m zt$+PzB3#Sc`0*R7n|bkh=sviDPbp^2&%n_0zKO@d`>Znb&fk!kYP{(gGD2sobVR!f zt?NyXByfFzzXN?E4DxdQU?BO&gPeZT#d`k*XE+YeNkiTO`n4O`)M6X;w5{#Tqn83> zWXtl-m&QN^F3zj7UpTVXU4+ia#}3yNd~g6ECw-la{kDvptuGM(d(Y?USPcu<#{L<} zHmQ)>Kl+3K0mLakNv#6v!_ws!-%;oGsR2w6mNeBKFU$+%m8H|gYsvLsjb|U?m4si( zwQxG9l>UBD&EBc2f>SWS1bY}5#efnCu^gGm%OQBhe`BHbB7(rL8lrZ5a+J}ylh$qi zhsF>6wpN_R?+3ID>=^qWa*jkfhsTa=@M-X4ME63_Fl=mcli-;ZGoH6JY)FVI-`jNM zu6JCS7aj2{_lJ}_wxw`oeBgXi`$~zFC=LtI@>g}m=&^?oVvo`BM?@Q{VG+-PeE$V) zqP5iov3zoGrC}Lr{P>h%6D2`?o2kKc0mZ*-(%gpK(*iM4q+mTP%g8`CVb2Z2hXm`_ z1>}?oX!j}z9-Y!Mcx*mY)c0mDsC$X5Qr;;SOn#^0gt+kO?BbW^+Zb?0^#hhm7{7lm z`QB|b53W&(pu>@xp*!=ku9OCBRdYf0>5iE1&|*HM95^jLw8x?1Dro+8tFX;#XCL@6 zmP_;lGT-w%z*%|7eRnPnG@|w5VBtyLh0Jj>E84&GGsKGZu5n<%UtMEdyU|2T@28z& zhoA!W0-p}vE~|WnYv}39rOn%1sZSQ6Y)PIC5n*MUF|Hy6K3bLVSR0K>DjKdfr|%wG z2xURW_QDkPUNPpd-<>%{GzNQI7W8%(E_0MXD59wfVVM3~OCZhf$}JNQ8NR%#4pSU) zaNx`b6C;IpRHCFFmA;Gi$iM)7QMAEMO?{;e9)hkaWh4NwIS`q!S6nyE&J5IZU0O+q zLi6=+A$vb)i^2zr_q5z|wew@RQviT~Po%@086&{Dt7a{mz4XYQs3v4)(N}dlWPX;| zY!ykCd`8LJs}#XyYXPyac@v|T8S~AQvuHbknJNP(?0x=wZ3XoPdgI=4LyQS_!+5G0Ddxt>%67{01ye^5QqXo<( zBoH;%ZBGq}3K_m4J1knuJv6a1vo=kMHoRZFS1l5KT*Lqv@qNx7GeLDElT*2f5k0_g zXB-UH=%0U$hwy?&kA)o+8Dqh2Fgn8oT>V>h7@!6lU?_IF7;Ij)sXK~b^x^O?M}|GM zuOQ*_h`|27~rQm zVl6+d`?Jva4JYM@YjeXv?QzQpU3n!Z$LU2S29h(pZPF3?r49><7zw4uO0=phI!i@glbE|q5(gF_>!e0Z5#y;JfUXV5}{FHQWn{M&j`MA+|1qF?Sfm0hB$Ln>y}b(UAH1gdQ4`IL-5UMo$G_ zOLM#6%Fumyg@%W>cgNXvLdk-iEm}jw!mXe_`|N|`SBvT)ERJC_PL$bAxVzV$d{*#_lx$Ztj96DksdAK&8F1f<^%lU_WY#QbE);{-gTK7AW(yR?LQc%_gv=jVD47l_J85W|W)Z`h`Rug9ej&HwSJ_86-}Z5io;s{I8%u!(u(ogO_<|^Wa4cq zZ(~7A%o0_37UeXXwodZ!W3`*-QQ#<6rsV6z^-CXJF|;2j;SGA@#~jc=d!D|gHNk=w z5sY7cGMX?mDe&bn#b|w^?l{7vijaf$a%f~LrQwyJnbfzu2N6l52Z%pOkxi=<*gVcE zJT*z2(x3s404E+DDCSA+ep6P;`2DR3cC-Q)*NioqPYwFjp)gXpBaXpV5&DM}*>BD9 ze!(R$06axBgA79vXOxBp zop(h*X<ERy5Pu;g|b8xKhi(*CerM(6d!&A@`wVbc6jg5P&xUb%~v3ipQk! zG5RV!$pV!JdCQsrMc-&)b+e2qw9?xcqWNxs0utA!!j9as5?*g<4tvK>;7|{GB9lE5 zbBoOfBys?F_5Cxx7EFNE4_xLyN0>*hw>9m0w+J+}682B{9qi5v%53_Ci!GJmpaCF1 z1_5YnL?u&11X0cJ<@r!uYN_G3`_t1XHwO~_0P(HI0thCN#iQ!G7-czNB>6eqAv~lR z15wPlGOVZ^W5x|`MIm`3BTP(;g*hq*U^LB?jAceHc_l7gpBtzwI65@ZSdNOWlq&URk{YJval;nKyh-~wEkT} z-PL!xAGLW@*k>-DP~`)Dax`4*ijp8e%vG6$9Rrun(b1XM6cUK7IzU_xI(J~Nq#0kn zjG_wWAB_Y6aEW+>IxDdsdp9oP;pp}dL^Z5dRQqAl>D7I~l3^SCIXz=DZv1^h<7?q?IG-Gce^(f1@6cn9BkO?b`yYT z_KT`P?!aw3ehecT7?cp#2+LMNN zIKN&XgQZu4crv*nZyg+}rAFynFIfAh$D>3o>wW-*M1gdBaDe^okl6I1WM&sDYE=z; z8dpWW%=t?8Cb)EzL5u`BA6V%4RaGa}G5D$$UF>ZXq`FGMX5;Vb0nr2&=(SClYpR_? z`Ta$dBzO+=svM!Bd`+i;MoaCUcV;R6WDJZ2IGoJq#XbQn83_qd1n~)5TV`QAVG?{I zDa~1qfc=R{sZPVi`S4svlnioBi(skNmtffBncX-j~s{wEriNX8T^Shs7fNF}{Q<)I!l?2XQ@8ep@l+w&5YPvH zwlj{3?Oa2ly5^<{_geqAJBPQ_)XOYWw7waXr;;&J&|P1b6$dUtp1OhhPL4**X2 zTEINN7e68KZu2axA5<5$*}*}Dn#bVu+4(Ov)xkSMuMfZ*u~bl80%ah_Sles+pA(a` zVS!`j83e^u2wA$NSr+*?^Kmtec*L;UlO#9+?#`7nT3EnM92FKKF)t}VL0itrMjg>z zV(bCO;MD2IbHLi7z@m1wc7J_}1lfR(N>q(HWzUza&u?W$Sy01AwRtl(ySM$+rHg?L z1@N>oCh=^pY-sKqK!A6IL8Jmc=`z$Pf!Oqc0`+w-r3lg?bPWV$!X#|01y8*8&>{*3 zd-DuzlRYjGvO^$n>P17#Rq2mN%UcPNVdr2YEOFHY6<7Bw=IHl0(m79!4<=gSy2ptpE(PAm}~xL93Q_Ay1nH?;sPvWGwzSX7&8!)#H3(&^)LuEX9K$)1ti}&W{n&KuB9}Fi> z?Cj3Jg%98}`ZyNi6j68BVryfGi$8}n$_a{50a;Lw83#CxT9i(;JP2SDS{#9PR*vB4 zD1$%8Mv%Z!J7Yq<7SjBCZt2`}S)Mf7=7Dao^GzT-Q}Nq#TW>tWsitCrM7e$Z{j}I# zHtq>Dv_t0&gD>dOW#zq5GA3&D+VrvD=v}$do;DU>nbGly=BbzH-&=fK{*+wvd&dQ6 z9~mepIZs`JBHg!{ABac?ag#D7AdZ8D6R$uC!9u%o`SO_B0nJ|%AvKj1HK0n6ei?Eq z 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

1E>F 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

98}P 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 YVxK-yk;Oy`xGyXtp&(u^YWV*D0N{k?(f|Me delta 168646 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 <}UD=aqq)Bi8uco2T0h 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 W6nvbX+c~^CQejHD!4KeII}`xkuVs>qqGW!ab~ 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 z%0A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 D5{PV& delta 80173 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 z z*JD0tUCocbra((CDG)MIc#E6W;Fs3l3+XR|f*P?;PlWH}(2>2bKZd7<*61b?P|F5% z{F&q&P2)4Xu8K3CC(3~4aWyf$H&$gn;swn$#|-X^`T6_sg>;h zOG`l5`3k%h+%LO@z20Rfq)NGw-UhEHx88dMKk19Li$*B?&l|cx1SIl!rTQ$!^Qeqq zYRFvu{h&0FJQu;bk?WONX)cQe zkpqUN?N}%U0dIf6L^ZpZ_it|aiLj{1rqfJ~d=c6q*|5?lmi zO5}I7Bv`w<2Aktg&wSo^B?$40SrARG5gq(ErdnzalczWmpb0Z6MSKEDLAX z)qP7iv*cZnfooEnI2cSROcRvzT6hrz7#wW~YggLmpP<+uC`^A3!90lgx0YbrH-ii` z%MXL`eDQ3=AysE%>vSf;=4R_k;%?XX$1aW1;8H_J|K3&s4P#~T zs&V#$4HX8VK-4=r3kCg((&>BULp}tGAIUYxysSo&E9x14fbhgbA*bPfu~J-BRmd{7 z%f#8%&SCYl!Pm_PfBtj5M*Gwm|0QsUX^`}Gp>~gh>Pco`BU;6Z5e>M0WZ&B^i$~5C zhXCY4wMDxL8x^8r9YBI<9A0E;bnSgMEonTTI3BMEA$Mll6k&D?? z;Bi{FM@ea-)=o$3+TD66HZnG&EQvc$mye*$&Tb5CSP}1H$0GlD8ez+f1~UEN^}apz zXTGE5;SVL5&pQbt%y>^ooOZq^>pCN61H6BY^##uw1z=`pPs+?sXRLjP9u-PryHb+_ zMLiBZwNet+k5xwx?k?c&Oyf@uO}A$#|69K_d;NE+x7WY>NZ*RA)K>mV zFT-M(r1SBU_KJzAd*p9AU8yhEoDi=U@b0XYbnmxMJV7;lIjp>}*vJo^hMPXw)=0 z%k@tO<5T=dH1MM%N_fR9m5^ltc?ano(--|?HrPi>c3jM)2WWCwgYQ?hO<3T#ZT}J= zl%UB=F64#513H-gZK6LHPko=S^4Y`{TC}e%$h zt>y1eegu_oI4KC5yaq+n#irkUO)Q~aT}Ien`P}<5$W>B*I^26ux;@e*O_C3>-1I38 z^Qn0A+iCypg$D&=lI2QbJFdd9@K4c>=eP4taA~a(pitw-lzBFB^g*kWBT_=vzk^FX zAB~r{dTqWE23)aU z+0GR!_Ab#znK7MdZM|~!)YfqI9WeuCF{%d#4|?@mUoxM?w7Np%dQa%9;+z8SyGM2? zbbltV7wAikLThefGNiS7!Olj*EXclkFqQYV1Nr-=|3pe!BL5aF z<2gU(wLSqGYl=AvwI%fB&CeRT_^*%#^?sS1?94$Is4aCFdD7lH2}~y!&VpMtHwk|F zQ+3|$Q>6}(%rxL%Jd&`UC;W>>7$xql{v90dPOG%~@n|j9h&&xmSlST`njHFbs-P&i z+-kyTW(!~9^2YOtsM@v541kIr4G#BhBI%*0a?Lm-?icRNUL!~#thC&HESqP>LWzl% zemc~~hOl(f{CTU}zGCgL4fiomljB%g`#m&z4OtVQs9^jF8p}BjTsvF&8D5)nXImu_ z6We73L7jeSg}+}|T6>N|lzCn-d2DQKM0k88bVMhk0??E3|FQzBr(KSZ>pJsBR#Kb4 zIIIy$5ZyV<7DtHQmM$DTF*01Ls~p7YN{}MYu8S?bsjrJZoUh5I>vvgbpZpaJQ6#o= zuxx$ST7>Y!KkG9!CCqbO`d`$3O^CoSBK1dOv<1jOgOwwoZ5z#O_$rYL_E8t%L5(>v zku(4JuraR^O&09Ch231-z5QBlkheC}DBp8wSBF!Vr+-{JKp@`={U<-tbj2+w$jdU$9RvrEw#Nn|}hN zL5E4jJ3H=BKcW`XR!KUAMjV`&Uj!4cA8C4=ToO`LZ9GK+gwJjP>U}j}2MtZCS|d zNbuL#V#sABYPa|JZ_dreQR-Z|ukWI&2*pW=gL zu>r1Mzij8T6%it{CBO9!_dVQi(uTc-5?(~1h7fuy)>(Hk$m13iKN>Bqu6pTiZoUmN zz<8lZXi#`c);~J>{4PviuLTBeO>|p}e?v)fXR^IP#`9{{?)tof@>vMkw0!pq7(FTJ z5Y&gDAc%vKeIZk-<2!$Il6E|Tk7M9#z<@3OX(x8##N+r5Y&b3*(R=Y^|@Qm=; z+1a$Td9aw%)Xj3u@#@a(;1KlY*zKWR-K}cbz>cv=h5hOJ!^F+fdVxnQ^O>muv+YwP zLgcWt*0Gr}WU482LPqz%w(rcFJw^Wqln_6yqppI@UmV`quO?6Rk12My8gk##mON>MJHD*w>YEJ-Erl% zy2XS4im0ftc=EWFMS4pfq!$ZW_PVE7Z>TUzB?z((zh7IA%9AJSGGP<)x~Z_fsCk3n zAtllKR-41C+jGQEn!ETkKBrXe-Jbdf4$jFVLGSkUzcEiO82rF}P*C&3>fGMbTUf1a zRBKR>(l#cSQAC}0vv4hQHXQ>e^Y^dpfDbKJFv}ZCwA+qZQ^NG@ za-Vg$%j>vC71fDy{P+EfG(mjV!~4KP$3FTX_j``Xd|N#)+^7kAxBJv3ehw~fuk-VZ z-81gYOrtz`qA6&x@q5*x$QyLm{kDw#y;RIO37v7{x6e}o#{;ILpv=VW#-FOSx57V4 zod>_?bxrhCqMv^O0ga=(?cAhuEico!7}@311WHVA$Sg;=&vxgmy}oIQfmXv~8!d}`}Qyvu91Z`~Mw35LD^pU1K6ma}Ez zf`|#%3mM`Y7zpCx)eDPBK8Zaa=*t~)`=CEbrHGehz5N0Tl>(ssl6IlRin#k%y@wKgjHha zpKMihjcUPUq=dC(pQf3%cJ>W`)e1cn;CY{l35Qgg*p5hI(rUfuo&?@5pA>eFb-xcJ zT_a^>0Db!Mi=)h>8V2wus#%^?q{EF=CD4Kf^-D%0Gft&HZ4&R%56r${uG%^LD^;Mw z(oyVTho)oe><_-wq zjU=}&7krmZOHDyV_m!5Cx?1o^e%-e=jl}fR{B4I?*-B1P$yA|O73QHUJYuNBNuKQhk$UbE^}d)P1#w3vW^Z z&{>b-O|I-KR^#P8?WoPWsNiU}F1WOEa_~m4zh9>ZPLO}Ly6`9kbhIttv9GaV5w30dFm}a5 zxcA%6rtkAS3V5P3Uc|1f`5dk8b*Z@zb7Hreau-h2nYRu^R;E9dWT~I$vC+Iy7u%H= z@7na(tl8+*tPr&`vyw&zKmkx%rS@I_^&e}a?=(F%vy%o-L zIOe2v`hw^jBq4i)Wz#$oG9;j|-_3^AlMj5vbAGl!;cecZR;Ka?tOkblA{Lw8j*UaL zqo9FlF_ZY0KQ)mxw7OS&r}gW=AD?5}2q$H64`ToQ{#J2yXcMuLdY3a9wvGN!N`=Zh z7dDT(4`aK!pS%M;ieNLPM8%1DvX#9jGP(MmT{b>LPxyy9g(+1hrO%QCKEHgJ4HXVg zh58Lpp%IxJL63z8vi{%}rpDBk&`#0)?dG*pghww|AWV$-!H7_8L-If=o$eD84txAy zzmEBb_OPEiWUb8)I|F$xiHUf@t-Y^tf;6nvavpBgPq>PwA-P_^{#&vzeb+-m%z!8m zP`^;!yNVlmiA7bAS*)_ee^WU%Inqi&XABkAHtcj1`iXP|vd_W4(ZP(MqEe&pE{kNXq4yG2zF*`je#g1=SaT=E$V0 zA7|X1DGO|7@&*WPhdq&kJ)It&b?4MaP$)x`V4(A&@!1X??@t*^5+JS2DZwzwPS=3 zv2Z19FGu!;MrWR!ex1r;viDScBbPjPEPrX&m%DX6BgwYMJ-3oNHx>FJ0C4)% z;6l@B*~!;bOlMpDW%|svi>Fz{y)o&&**C?HmoiTP>;&OCkY8lT2bSHJ6@>C$n#Qhc zCB)fDtwl-ow8#W~n~0-=I8X?%C7@fcJXbvNqM%6~?9b(!f5$ZV*DQocUJn=QnLyj- zd(kMihjczqH72aB3k#KKI3W8e6$QlcU|zEprV9$Ces*Crud(j^tP5IOZoV~<)*QTq zQX;#<0sxaH?O+<)cQ{$%KUZnk7$L9>lvk5I#GIXt^Q=DbioA<|GL$kD0sK_UKBeMu zJy%$QdLNw+s$b@=B+T;6Jd10lxhb8in1{34#>%q!6KeH$>wGT;xj9<+UeID)4_oSY zWWp1QOq@|&<9*9LRqGQ)Oufb#4UZsVIvzu&FR#Gf18rp2H{=VL?qMdHn%)gfj*=&w zsnUyQ09l&S@XU~uWTq>8VFpYOor3abW&o6eHW0_Tez4K|ZZ9QFyiIt?WvQeBd#A{Vv)BeJAZLIEy5{JS8y;yc1&EELA34thLn zp2wN!>;As~stdJB%@x>E(&c=Bx` z>@#(ykm$aGdoSVh39I?a6{=%;iat|)Qr-MX*D`-Ump|n6_H8}}qnxbGLZVh#q{!iG zV#~Ck@ACu&Hjw5wb8;_TL~7@=+J`|V&hP5fHxxl-Tp*XF!_oknWk-;*@=wB$FYw3RVyf?<dwtt6iT=fMxG)B6Tf|WitTm(CUG5m9(Jz?;-J~f4wApQRlq81g3 z0@Y28Is-*vuTjANdB&*^TF9*wrRSBJJV|~AZjlcgWj}?uGW~Nrli-u^4{?$hc^w=u>_!5&*heV*28l!iRz%u`#FCXVL zMqf2X;jeb?e8DCuEuMygPU|{*%q$peX2w_Pa)%v-O`0~>yFuRg=3mVzxvN0sXNWH} zOwz%6di?zG{|q5%rv}RR)e0fsP*L?Jbz15^cnyI^W@`HEaaUmx@TPwROuIU0?KW3d zJk~!@{(Q_;`@SpeRkd7S?-`WoAL0;peTxRD-CS$WV!k~AYYpbOcqjBX*H?ZG{iqS7 z83mmN?(K~pz6C* zyLy7tPK(o^QwB@FL?OF}zzOc`CmNcZIcMUL_2>PJUUSD6jW1TTob88u2O}bWvmFb@ zl?o2Fn)WAGL#DHgWjGY7VoY!5icycbD>UmgL_js~|B6Xf`B2}t-=*W1#HzP8NJ$MO z3(ahIK2GVdJOh$x$~4|B^c5x~z|KBsC0YWI&TpmT8(`3Gy^U0rvZJ1$g@Fv9caYpV zrEqu*9scB3_oyqr{6a4+MKDCf?zZ^)7WR;fptme2A}r*3VDD)CEjiHh76;s|Sv-CS zu)Els(tI~y;hQDc{LnTgE#2%a?SfWcmzASx3~2mX94SngbIp77i{f)X)w<3jPnxca ztr3|TPc)rKmbhd-Ex2r^nRwA~mG<{g;#V+M^}=FB>4XF(@je+5J_H@aL?YZo*V!ee zBdPq@@y@kntMwR*=+%YD$iPgUJbD0SBFm3xOvh#dzR~aSs9pY%A?xU(v3_cQ4HZa; z2+Oj&(~xae8;|tFB+Sxlm2GBmK(h{OYWO%&Ox$e{!_offY)jYou246v_2b^Yg)AAr z>((SBa!%H13D_PkYX3*$TsQV0ND!PyTweD8w|W-Wi*I$+?0yyqhGV6Yu_$-HU}1w~ zr*d*q`jz%QDFJ1ild5^44)N>{l*Z3PbP%!%AatVO4^QFnzYOMG+Xnq9GmSC0-7a=IZQvZdPUFFIBiD=>P zu#$ElwZU*wjVXP|+y86<_;_(^bI(-V=u@npWb{4ho!$I@ti5$mRec-&yFft{0hN+Q zkuK?O=?E!b{mo`bAY&ocL?kx&C% z)_n$+1m1SQZ11ekc#850cny1on60UQ^OEyD!GXzG1Py5d$mIvEm zdI>-zsuTs5|EyCo0GMs7+bnqMm#L$g@{F^MogU4UInLMn$uB$v1y~u+e|Q`A*(^`A z9z9Y51$B0r`4u5c-eE&0m`cJA|7idO2%17q@1K6<9y5+DC!+IjXVKq~PH?8Ls@j3rg zx0^01B2mhi63*Syqt4VDK9R|~L5l6(ZrE6mC9@arPq4Oldn%$m6UTE_ytP1DvX`_+ zs_X7}$Z}`{aTZgD5X+>U1J9Fl|MZtGNAx4eohWT?j6>6MizrT(QF#D2=gHgteP3X`^i9DrJV3*#H6bIBv0Ljl7M*~jVt zWB{K%%dFm!V6!%w%LwZpVv-&p(k*T?CK0gLrVC$d0(T&A{+M;mTU{i*hx+J`A#8O; z8U0Yl^?qU$d%+#>ChZ<8e;&`^IzNBf>1irQ#BSTyEa#ckSnK?biQ1}biadT|pyF`G zH!UZ(Xg4dEK;{w-O<+~tAM;^5<*VFSJAs;ifOqH%W`2QZZ~4e(XD{`Reh{I{1x^$t zSdab&%^YM}uqG=gFWk`xE0+4gDj=c258aP*%Vgx6?%LVG!G4=^d_?^rjDuJM#@BHT z`<8K|BwqO@8wt8k_S#v)JOXa@a4&x` zu3mjqRsN`~*pnT6bi5kbR-|g}p03>7=#IV~+z=8{b zW?Q{W>-#LI0J2ajFl6}f82J&SUCt7;Q}08xQb;yQ5?#J*o}j88LN^&D3Nx%zRaF@h z0=^AX`}h$Lh-OH5Z|(4Matf6erU)$bW{;{ybo@GK8nbZL5`K37jg*XbR!|p&Iv)AW z50E%CnO@wZa&0}cFp~kz73F)H{x{my9^bU5^)9CAi+`DEnRq6U57s*|rhr=W7nz0% ztb;L4Nf}hocEXFDhA{23@ybf}{*e7sx`aI%61cL@9|(|eK+QHa^5f%&G>w|e=V6+k z&QL3E*lBzx3O5>1X2JP+yOs8sx?Q$@_bm-BtSJ@_{=3;4Ji)Ny3C*9^u``v9D`QnJx!RzViZi(ytI>uXPhRNZH zq2Y6~2ebD5lew1)b932kePM7X z4ArWBGD3H`#HD7VPZG_U)fi5;i&vt=O_Rb&guHIK!Hw*J?c9zJ(VZ>F+j!HNQzNN` zj-c&2^}m`fI6|SXa{D2LB3iqEl#uMlX`A%fA*Mi{3LCC!aKW+nENJfzhD!Aer_U~q zhs*|*@1@>dyA#2;|H1^UgMNc88mu-B$75oh2=n|N52c@D7yDE8Rjqkz?N-B@7DrxT zlfkI~5s~?kUx<2TF<7FR8O9(nuT!ohnQ~pFtEw#v^KXK<3EKK5hX+KVP^6B)B=p+z zYw2qlq++r6&j}9ned3)Ku~Sjdud;-?S<`|kT|`=8jc1~kx}-hzMF4R13YEjxkc zU0M19?XS~2pqp%c#-IQry(Oz1%w}Sv!N!mI0&`2)2F|K4Pf>S%S?v>qbUa_s6lOR8?8c-(A5ed2wr+6y7zu z?wU0t9D*j4Wa~wVpau!QZDx&VD};wu9W+kWl>Tf)vs%Shb!3Yg-4uCt_xQgnxb=OX z&Fb5LvuF^$Xa(cswv|qS#H$7dK z1K(8lXVnmzzfQ|>&)_>*(a&pj*18|;jFf(aRyGbufBDGUhYZ*2`a)XvBNuo@3f)46 zZG%!d(&_~o%QWv}BX>(Cxex$Bb9Y$?V z1YnBJwyA&9*@}NpZK&=4|Ao%R*oplVo@cQY zH}#~@-!U(f{f0=uc7p;qy8a4MGA>x;TQ?uIc?J-`_%T|Oi%1Kiq z{uDJ}&)4f*-Qph{Dj8fLKp%!bd;FH1fj~-{`iJtOmD{DI87Z@VL#lz-!(1)u&J*q`StQ1&ZTpZg(h(xJA`6 zjAJ2T`L2#Ep#puEQ^Eo<@7)A_5;69BG>xR+z8M)|c61C-Tl?Mo0ccdn>02L>fBO9` zL-tv6bU?~{^=4Jz>8?{kEarV&@(CL?tM`lbEU#J|SIDAe$0Su&r|1n(w{-e4$2d1 zceH}_72FXu5RrRhPDqRk$85h$C6Xu+3)aN>Ft)(=O z8xp&X%D1*;1P-Pf3SoZIL+f=~45qzB5e%4wP%IykRPV%hWhSh&Q|QjfZp}lS95a%h zzaPZ{#;1dn+}!j%$)Z}qc1m_`&};dP-ZSHs7$3~e=NTlM8z=OZe$t(PYTOUP?`Q7( zs3GG3>~<^$#ZtNv+iDE zO*D^|ZwkxkAXlDyQukMf5TZ*Fal9>U1k&br@HQSfYbmuNp93ilnh&li-LC(l&S)fa zBM*s(bA)6xEsz1rIa;>|-!Jh4l@|A=1>#F=l5Nf-o;dM?*%JpZ)YX>;f(z`_`}moC zwbtk#d-v0FWr?|}e)g?BLRhMY>yENYy!vE~bFtSpHqnO2@Kd$ll$I8o?oS%X_O<%) zGk|rR3Dv$nNhmg8t3ey_iwS}s8nu~9oAYn!x)VI2 zR@~;hal`<`fUgN!0U3g^fy18Ve7n_J=o0Trnx)?tkmLsveM=){_qoB5pM!l zkD=vwS{Toa&(Wr8gPnAwEF}wOFMt$DKVCVpKSyKRdr&qQc!v}CwA)NY3LiUO@c!pp zP%PrUmgUx|SnfD*M`Z#ZNfZ?;K7LotO)?caA6r_Q3NI5xZ7%1%>P2{Vhf02Wvv34x zp)s(~R)wj1PW!{}uuWCubuai!kGr7+eEzViJaJz)Fm_W{>OF0sI3uY0Az}bMlrpi_ zw|1C>F+0Opr}jp#`6m)g9ukpEqX3mQYTnD7j4*J$Bi;2tla+Ps=E73G=^Z(}eP3i$ zQ`)Kt!_<*;l>G!=<+m&*Mz_8{ z8us^>4i%wMB}rk0g;`8tKcj^BJzm}0e+6=JaobPk+hnRG;1?|y#_lNA?px;CN z&ai=-#I_xs^E*ka1y=)jSfHO%;lIFa$#Bq%csNi<0we`-76f?wo&e6ojp)3!N$^^1P8syy~DKVYQNpCw{V_%<6KW@;dn$+U;JW`DCFq4>XC*=M;*) z2BiYYqWv6ub4SHF7G0m6DJTRTn{go$XoYwvYH^NFQ%zi*0-1y4M?T|<)-6tGx zRShWVQ+<7$_}Ck*P81j_!?a%`&8jrvV)f*ER3Ir5Eg{3_CMiSM{p#7D!_XXcL$KbI zGAoWII!>;^MLLM6N25k^Dh=-uaQCR~0l@%>;SCrs7T>PRnMDr(fL7?&`(`FRINWrs zmPq)K=iY!JB2Y>4%1YpI`jav_?N_w6skS0>f*A3e)It7a0$${^l}11_t22U-0@OCx zHF=&-;llUmZvV;30p`kw(ANO?`Z+|hLfr&+M-z67f@*0_>|FfsfPyJr?knhohDw7U zALyaDR=|1r;#>R!RA7-ySRT*y>}?^dB}-o^LK4uax<@|AF=3Ddmx`GP zAJ)s1moLz3e3fphPx~isLLafDoX5>BY@16>~jXUX@)bntZ2y8HoXFOpJeXU)8Ju;G^+y z5U74xr)Og1+n4^*3;%?}@NuI!`rYDSpe#M^Ru~t= zuhp>wQ?zCPS7Z)@`u3Jmh|pwCgJq#`#GTg0plHl2$+h?#qYPDi*&1 zB~q&cctO|W#xAU$(!#u<@%Rvl@YmPyFonsl$(+x(@UgK;j?ZDDhNC@n-4VElQ0*i* zegm@Y=IWD_k&ECb$MI(=v(t2Nu(q22-fa-n$6-y&0fP@Be1LM3sY>e}Bj#9{jlOP? zO?S(WM=zS8`sr7O`HzZ_nRUR8h0q){unRj7q{Q`-4D*vmIBA;HKWs|k#qBd-_WR`s zvzC$Vg>b~vv*n8GPDn(un6%GRS+)SKtxN}2Z4MIhL4g$X7u>8kzie#PLgO+&EZcbC zbsn-OU!Ub~X(C3sLHM>Cy2_XTXLcL>KY_RZe_*%4|2OdVUts%xytd8%8L!QTf}j$l z0TQX@j7PyjJ_z4kVG|sm;{pl%BzCJ4qb9QWcLDy;5UhZt;4B@#PnaFgT`q3E8N!R8 z-0{pNh|qDl>Yp%$9S48y*&|#<{=&Z}1@6A)PAq`%eg> zxST}aYr!ck!T!MXQjrO!YJ)%tj?QT<+!Xpjs^~{mjD=WrlGF-HQev{JcM~MtYJi(r za|=~K?dj6`&iSpS6&=n1UY)>IOWwJAw(J*to;1~E5)O|>QVRC%7o;;E}hKn>Aa7!LSp$i;F3ltUS zt#2u%x2q+zBLS^qkI)G2YsA*nQAyYPC9MM4wY2eQODC@n<>R$6Crb)QmgBPMzfe3; zvBYZbLn2@us}a8_WT^h58R5&$RZ}0Lo3@=>GN|MAdAP4A=G0=6ePT$Vx2tC{If3*k zq<;C!e&4>dZParR{Q)L~h22kj0<9y=(2UPN&6&bfQi^X>5TM9lhWNMMgxU>qd}2fu z+mhPWo8<3pW9tjQDyeZH_~RU@8xYsXN0+nU^9F*FC)z<3< z!Byeh8v($`coUsqlPSg7j|cbB*mzC$z@pAJX0_w}om~+e_xzWx&!mmyp%0C97Nx+O zSUcht@|%|;Y`@#(b+FJ5`tj%dT=`}0F32P~5G)sNvs(o0V}k}#M_ge#$q27e2j%o{ zKLst{pQ6^oe3B8~feprY{E-oLA*5VUX(SHTt?!weH{^{U2`(wV1W>-eNdAymLvaEz z-!$kMciMj_@+VmN0CpYP^ zUN=1M#g)z4Y#xnA^zwRnb2spZzAl)n(wr_Aj(fH?ealM>?;NbgAZha3)0BlHme^<= z-e>3FBzAz>HN*=I(zMqRu!J}!tKg8^`eUS9Kg@`cX9MZ9Vj6A}8F=|*=>`xajp3{1 z2Bkhr4~g5^{GR?0`wNxGpYwjX7`Vr6MRt1RttbMYZR+ivD;Mj>N9MW5u~{HycAc0x z_+~QB#xdP6-mp|0%Xd5I5qO6LgefvXW1liGV0U&1c)U-~bhm0WkvesUt`LVyj)|cP z#HBi${UCeDMX>DUp_bQ9=pd{s**fqZfZ75)Jd}*@SS{zuqXv{!?_i4d2>76J+|6=Y zlI*2!mB-G74!LVj$*>@yX{JY4GLc{a5(x&HyqD+P@5NfT){Ct%D^nikoZ;%B`nBRP z(|M^x@9(fTXE$HrktfR|Fhk5OE)=De*2|;tCIo=-T66E)-Hvig*|!>78|lRNTfu|CUELO=6kOQ${C@q=DN_Y= zUb@_xIvg(LkHsGYmSO?-v}Eq6DdE9?CZv1(Kd# zG}v?L=`G4xMAt0T5DpcqKGa1-CtdR}P%|-|e;%5#;2@zS&mN_XXNcvn9(dJMu&0%| znOZJKa_s4JyA-87Yf0DN5wr!Xb3h;fX%;;XPCFoGU3PaPiPN)eaHwYfW{}rzW#-y2 z{#lVf*^7Wzuary}XI>vO(d-q#WnlVDrT(i~g}fenCqE3m=6PUCbvkbXZaNrmiBcS- z+%Qx;A%zi;;`?SI6^k$G9lVD`-qY-jE2H zNF@BRgIRA3&kr=fFhOm!Gb$I;pxeQTOtZd%FFlyLDAT`G?F*dRb~`$zQRddkP$OnV zt|5jFr_$tQb|ZG9Yq0_;Q2P4g>)(yNQc}u9EJLkRmU?A>1TjWOx-jfx33xtZRzZ$C zV}W?({A1o+KvmS#k2+@l$hYYbW+Dm&hg7jc24*@cMwS@pibUW`D(0v+|ME33>LW3t8ZE zbb-qT#YBHweWfu@m5w3Eg;o=5gI^jUhux~fCheyCzdx+5JbO-SD#iS^y9H_~IXbXf z74$_nJ>}isAf;`o^5hTUmwdx1&o~_)oU)zz$%(F%Xc6C$XH$}A+QOT@6Tn)* z@B&71eSPcSwz6JCEc!|qYo$TXGcmNLb5CpQ6aS7`96yy|waXF|8x`!^~(>x7=D`40qA zMD9*~_O?2CjfGlIwaXBVPf>_PCgwS7-rm@NT1eI2PNY;qK2reDBECCS7WSowd0P8;b{fVwpM8RM`*LS=g;G z2KxG#*hd2IhPceem(kwYke*JQLk80oj*QAQqhMTelt{NE{;IWMtD+VP7q1cE_$~?Qw4JC;Lk!$##(| z9U(a>RMUe5A`R~475S>01K)7}bQXJs1Shf>uB9|4_Shf&{GhmaWehewij;%y@w~xC z{RcMAB>@v6mXl`5VHj0f1R2X#b=P?8$5E6g-o^wEmbH?_T(_{IUkA=KX6Ylhp z7|DJX5au1-Af_Y#p5cDKP)~`GjDxn*U0@Lm5#%C_{@K5br`1=9cahEuZPC~)7a)SX z=FTnJWfYkcn9^85gEhG#&>*t;z;;~`c)>4=+AV!_J;O=E74)kep2suogoclv1H2Qc z0O_09fCtf$Nv1>z3shd1xaj@6d5YYXn0^C2v+3WOK^gDyo;6r?Yd`s`dH* z)k;dSswq!G7F`Nv%q&wjhw6p=D*K_ndBNARQS9~PJ zR2I|VRzAPm1X12ea@Hh)^QIO#%9r%J4{oE6E)sD9{ilmsDXWXXT063Y-t{Zj!Bn2D zo<9PoN%2R2gXRup2C3lsg$13^m+2;Y^IulXvSyO=&*zhLT>VJ`p7xY%zgPU^F)>Kl zPAS=2VEpZvk{m9U6yK{dSxg35Tlr^O>{jYrn8JEs@o`Uouiz2VpIRSK1WUnvXyFY= z)VU{&v(N#>qzpEEqIXPno{4x7_;ipBfr9NhG}iCqh1y!5YGTJDRJozgGuAR5!U54) zwViiQl{+>Ev!=I5EUnBo#)?nH;7gzS37pIq2?6NoS$@{!I2z(&W7yn!sPMhvzCO+} z=B_J1nX3Q3(DX}8aSXZ{<92pX=Q|?#EXYp=?T!{bR~W|Q2R+>?op%=f+l@we5ZgRz zS)KAG8^nv**v2;cU#~NlM&5V8J&NbG#0M_tV81;O-oEu8Rn5=0_v3LqoEm7{ivk^N z6p6Wd+4;F93$peap88fFL7+SW4q|pG4BZof3>=G?u7CLmNUEnOn!}OD|Fbjui`rh? zo3^T5s8f`up@!{O$t20oirMdH6o~S=n9xQEl8NCBXKRgUGI`lK_Bft1xycP7JBI?` zQijlOXVeO|QrOG3Q2st;Si1pY99x^RQm)wf@yq*DKZ&(9MIa?NNf)P8%k?y?WR|-N zR^o|340;k;EaMBMFv41W(CWU+?!C6sct2PF5ciwO7)x3cbJkX&+6vqGM(H7;d(TR! zWtC_A?h+MASdBaW9^6$tIjYRzEeBk-Ljllp1wc{I(r2;SWQVW9G;D=d=}h z8kL#7FhNqIGIi{c{DOBMm+mvEq+Aaru&GF*K6X$5U%xLG@#3J)nU-85R)5h>2$exQ z9F*Cc_V?EpEPl_(B3PzzH4()OvE1sz+9euCw83+AKKc2-Aj@qUHc#rNVCqIQF7dpl zq_lpuPJW!8AIDO$4JRJ619Ki!=$v%Vj+SA9g$QpL@md3d-#kJObnyrvO^s$cV2?eg z`RZ}$e|7OKNIqlE^mja)o*w7BOog)OV?NU|SZE;v_9Lhy3Ck&jf{7%8#}{a)@qh=+ zE(nbYg1SDv&!J?2%JUBq4m5wm^AX3f)(263V zm2?rK$a4wV%Q8G~^S<>P{8nFQ6~yW+l`1u|j>?{@<>u@E;Dhi9;d!vhu5tUXyik7~ z^cO;TuN^=Ip^v$u$Y5BqpdfVILZMyJBAHibg!T**HxIM=HQ!uG^AB?MYO<^HpAeQ^ za<@4}r~aqAe{i?hhJ)v1A9Xhv;!llZ{TPmF7psIMLZ$e*0) zRet_@`^4YP(d6Xnn$mKC_Kr|;B+3;~`z@#N-U#{8p5;+p$Wv*1Ez<9`Ce^>l7rMg` zuu!l|z*do(yq}5ydG5DQ(a>+GrNS1=nLq1=#So~l&1J;{loAC9#<>myzV;}%=9y1_ z8uy68qVZcvJyA^hE&n)lv}0a4{5v_z!?2fX!1BS#?MY(Lolu^Asc+@KIPJ)=mIU6N zd2xu-hTb=|aql}d%|eDsKxa0c`6>|F38s&ss@T5@&*9}aHcMJW4hs`~`55p{LZ_I{ zUK)`t%|f22`L#z~`Wed`Q6>6eCpQs>00stT3%`z5Gb6nhGf z`ZEPQ>MFj-htKz`k6sNz?t1dSLr041q*RmFGXh8u|FQms#>EtY`0NNOyE<3qiLU?o zIyDzNDsF%g<6gF)@XKzK`;R=d$u8@viqtCi;kjBp4Np^OCWP`0lK%4{pgFR7%wNK) zd1-3tHgqe>PW)B9u%m>>8Do1g@q-a_6mlwn|6tNI*y!miV!17o!zCa#=bu5xLM+>9G=}E1IcrF72x>mybsy=172~ zP)LB2=eY3?cAVF+Gx0dZB}eDiKa{b`v-R1>3jO)L3gOPtI4J!iwyw&T!KOK-+ z+lxShV6LVh+HK~#P6CnIGO)Z-1X6+zZ)AeTXt|$~D-^~7SjDf{XmTu-j-TQCD=ESl zz9Ep}gzaPz#seyq=m9D@_{i8pCebl*s&D@FJuu8%0$Z~o&qPybybt@o&@_sYS&jiF z@XsH=l0H-Qj05r<89gcnc>nn_A~2r&RPb1#;eU*I?uVZIrzvr&uzc5xfBxAouv6^P z0R`j#V8(x+bfnOF91xkV0dml(?DqWwt&_q#3$`AseEQ!L8kf?@@_t91`tzMc`xr80 z%-h~pL+Hz0RqYnrvihF~o<&*~hmZZ*T{21WR5pPUOkeO0sQijceM9{HTiI zIMevDU0&-yXf>$;_lJF^ILbednJ;2>y4`WQ_=6XOHB3`1LG`Dp$#? z!`M#!d7T(?dom7o#4#CrS>w8ZoXEeIbLhw$$!G7^Ls&ZB=RVzE|KDc`IEe>nY>2RO z6`)T6PQVeGdt@%#Zyy`KTe=OYuH?&_C^A;L%AKlSJ0ftW-yMTIn8D5+v|Eh5vo$+7 ztH{Gm;ufn(cdz>sa&Z&JlRCFk$v-bfSbm>7R6HZzo}ah9?La!AJoLIEU_5MaW;~39 zlRwMQ%{HA0DS76vf!(K7vfWbQN60R{Q3iQ5EKfeND(I6U@)9;M?_3ydYUEbmc@g=J z^5K5hTgMVjgh^nuz8CZ;3ob)gvRd+X6RFI_8>4r>8obw-B-kl79ImDFL1A9yPmGyx zIKd10lLq%}*cA{Dxipq1R02f?KQQZU3Z5gNrdsV;o;c6{PM&soD9}Nj6~Apw9<@^lm)6wX4MuR4rOguD>gvD zK*Wd}TI?m2Wk@Zz>YHU;xK5M*75jwodaH%IgClF;vpOKHKw0?0+^Nuy$o=VzdYf=Xg@n~Zv&;>Cx` zrwtY|DXS9AHpTVRoS28_%?7rAuedMinoKp8oW1V7jOVDJKkpUr2-aEJhO@84o9*MH znuZWFRmZR8h9sx+O&+*joRGbt_~c$&E%O=$IECGCSbt`-m04^NB0{MlJbq(-%3Y;I znZ>M8z0l9Tv*Wb%5&Udu?6p(E zA*sYEBHA=wF0&tBqve6is+R6c1RRZm$D?5G_GB3M{(5kctE6sVcb({@s7c}+K)QO{ z3RSz~Wb3p>BI_}T^9>h93PuTYSHp0lx73}pcHw!D>+@h>gOk@Cp_OF@hvOaCtj-{^ zy$aQ&+jV#tblltY%P4{lc5A-yYI}<&Vu)%L{=mkzvy-}MF`l(qa8FGy;TrYB zO+Gm?eVIS;VsH&#>Xg=5)%#u`y12Ex$TBI~v2~$Pj~o$cyz^#>s`(0&>Gj#MW03xB57EXW)|Q!_EN>^k8Y47wNsCHCsMBAl=7T%$U%ph@n^n>K@LCBu#WvV0cy zz|RM~MVq!3Gt5N9sv6YC!W7?9t5sCh@0Yd;YMx>ZuO6nqcrx;;m}mLv*sfAy{_z~=pi z;7(`0A`FHAfzvH>W2OX}LzJvZ9<^V-iE_W959RJ9EJ!lW(7{q85^t-vna;=W zzxhj=JrZY}USY|0-;Bl*m5r+yFm4g-{>;XwU5NQ)VnF>jIVCJRHx(K99;0wy=jkSP zL9>_=k6U?3QaWV%BOiL|gE8MF%j!dr3J+K;A97n4xM!H%Hn7iiCJXdSrY!uze82-3 zjPhCMZ-;YhaX;U)_0f#fbME48{i@_jvvI0B^)|c1=7=W^(1-R(hm95J50zT6Ai<;& zn2VLEZU~xUc)Tksv!Z=9{s>ChX5^ev?GXQjQl?x5Om91tUEd#2#3p)0Of;J|`n{#o za5bDfL|w+DYat3yXi93Y$0HL0Cq4i`NhQgrqs6@h-tLzHY1LW-ew1(EGK2M*vjaNy zPXOUCH9DM-xIOZxZ+Ix>HKiW`zUX_u&Gz>|REp(2=odN-KXmu(H@63Vm3UP={Q8?3n3jd0-675Yu`Y z5)w1Us^aFg7JYr1Tj`40uOX|!;BsT<4$D#=xUa6!SX-GJ&d{9Hs-C#BAw zFBv1chg-f70_F4?Y=ofuYao0fvH#}$?d|1mjQcF${np?4_F+fNx?zo8Q@O(^;k#<* z`HrKp#W`uu2reR@oh&6f?r!o{Nkpm7q0s4iHj6!7$VJRZWK=~;#* znT95}$LEisBU6+O0V?4nhQ{nLdoBH{8zg_C+jvcg8DDPwgEp{xZzQ!nqx2q~q)CH1 z4hWzb`8wfRGoZ0`dDiYXdDu9kp_zcL1B*)R)i2{DbW(A!JbZIX*Jlx}`PH)unUW$C zZeKF~t0IxJ@_0f*UJ-;ue2h=8V9go|@ zx>4<2J&1Kv#^@sFC%iGCo)qiYqE5TY#bNN}(hTznQ>>KPmoV2v;o-$A=0gCA9rpQL8hxQYOFOsQj_>Bbd1%g&BFBid zk@OsQ(yyeMpVs36ER6B|{18y?@oN^x_0~=sO?I0vJ0+I_B6YR{VB%t`cYh$zJmUpU zg*9Wtiv5a@9lHB^%x)LU!A3%$vLL?9c%Bf5*{NLU=&?Lbxbs1VAeKb#&dv7uM|K;i z5HCw1sz_}X>yD9BtXnJ>KLJ$)NU^jVh`l_Tg0@pEc(o^7Y5_nfRB2T-B(d=rihb@B zRncDiqB-w~h3wFoKqIWL_Bks-%i#}h8|L38(rt97bjp0s-r`1>7DmWCR$JX>wl+E( zR{q4>R7L_6#Gx7EmTn1(c3(Y6WCxQ0clGtri*`E|mA8P9=?+1UA4fpvR3m)FRg(V$3N zOEp4EL*JLjq}LDfKSqV4*8V$Vqvh)5t}ucU2SGbtqr)C|3|$)xUhM1pOGwuDEQu@@ zMPaaK547xZ19Co&rl=dn*Boe86(yqr!Sn<_1OkuLu$TA;@uc2D9Qeuk5w7!vbnqN1 zIA2+@cVnsu0nYdp5S|7NR)%)i5bdm}C!8M3-*7d8h+AGpO3r3;%BZYL^UuR(J#XWv z+GV?ahtuvFDHo@?M93>qZ6pOjeNLS(-@CvB^7!p1n4M?PJTrx6yBi-h8E7;EKK>RC zx`O#zAcRptwO4m0fboSL>fMbZ5_08yQ$noijF;F&F|KR3E~d`+7cFxTZAHdd`^ekO zPu+ybbl8;rHPHuw6p2zQj;PG*Nj2X#RZ6bQ9c7BKD?1S48pU@UF}`Ua#%I^tV`aBQ5Ae z4dICq&KF&7H;dmh%G=ghp+W4|b)9#|>o6$*;Kavw+E|%y>9n^y-Fi|}QxC;z5Go@( z8&WH0H!?iI`@-(pPR+%`VCNj1mG`WA+)19{u)Ft#eC%-YuW`D zQ0oQS2GjkHoWPvtQIF@x<`pi(gd0bV8vdM5vaP=?OrqX(l9Qcs{{Y`M9wP{D5P5eS zc|f86VulW}{1Fd(cb>HsKs6thHbSNt?VhqDA(hGg7)2aikDFB=GMAojp)CF>T4dR| z0d}~3*TDgU-_4u;cIEAHuPd?j^a#R~eiJw?-WiHIi2^ha1}b;5HVHZXM8yE)o;>_D zm;Tc$Kh(gdtc!~Za?xrqg%lQ1B!2y2ac%n)3)nI@JTE++Ve5@-W1IbM!~f!Jwd4Hw z=OBbF+glE(t@Sis3-9u&NMtiM3RFNz>4B*!4Clrqr1#jW1V%>a93 zz|^PPPcq{-J{%^b_#$4=GmxTH_tkmf(HqYgo%qMHd*JJHy5orCfpIW4i13msAowN*vN;c!h|I*QdJQ0qCPDwY&m+&*6KlA zr4i;qo%%`lt-D^z`#84B?t$({-tm_@30%LENV{TDIr`N~{H>b+Zz#M_jHpioJ7nW` zHQ(nzT$iKHXm&6ODGS2Ka5b3{b(!26;#Z(wh;9_GoLqNkU(5>>Q7oi$&4*ZnTEo?^ zI`c%!|0SA>ixc5AKB4IbvcL>ZAtyIQuC6t!V~rrmwcSkN(FZ_LuE+53t`T2}?y)x| zKgj?6-1kcJLPx#!@jG4trLuOa=dg#u(2MmBm~vVBS3}N3j`hy!@H6mZ9?Hv_Fu2*e~@M`QXKxKtNetc>wwu#2%Y0EWe$UdHFK#q;k%L-~G_8IlkKJE`d^k z67{~+RbD7a|4}AR`%avk{Pb^V-duRgxY_?2BI$TQ#|QLz$XJ@Jo$8iP!SVIB;YJ0- z-%0pU1f_3&fL4Fv?0dwoqKabl1wtf9&27K`{m7x?1(8?U>phaQWnW?4Z$M0&q8 z|LZD^DJMgyGe;u~vk7bx3sV-?*N9WIM0BN6;q@d$1$a47_{GD4r8>ylXMUDN{JGu^ zxJ#4bndT(hHxW*brHGOA5>ve7G2+o8qoo4I;X+bwraxpW4YiX7MAZK77lQWy>H7~@ zuiqkicay1m)BYPtRBizCvTWKrYG1d-izITA$tk-ho{d;rL-6_{F zeB2%N6{ty7LyN>@yXIGHlyCAJhygbSC{cPw2yI5Zho^9gwK2i_q-x07#!l=p@Ekej zwV`7_VY6XVrnfM$P|Dm%N=iQ)vP@2$)!_=s;G66i>Pg()J^(t|g| zM9vQ<_g)P%EU#Szhwu!^?$NE{dSuj?mcP^xj%sw2Wuw)RJW#9|sg-rGJ3OiAO+W9uLgfNxg{3kyoPQG}CFCABb=Dd&mxuB5%}B^*h2kR}ovI3JpK1W4 zSpK$zsv`x%zlX|pVu(&hhKf|%QWYyjPGAC8PF{+#eoPt_r?<1}alTf(0*?S{oDYPA z)LmCr)9#r*+QnZ#UatK-O_rB~-O*Oyco%*2>%h!VU3j&gne7Fl=g;=$f5~G`Yuy(+ zxc_2A2-Gi(E5{^Kxdy!ZZs0YcylA44b%E9qsn-+4ytZ-DQB&02)z|3iRcD-dXQ8aC zN=wftZ6~LpkyROu+~5`8cN$o$fyZe*%-Qsur`*hq?z5xf8v&QQ3#+y&WxolCSB6rZ zV)6*yPX}q6@1?;X3Nkv}o=ERDN$jLCE_y|0-~e{^u5d!Za(DQ2bpL(~u{pnw{1b=JUwCPUuR1eX8MbQ!C7os=u z;Zv&{2<-uZC@W*1LmrB^66Q0nogALmn1$?F@k@UvUHW66X6uQpD>x5I1rfB+n5z%U zhZ%L@4G%Tap(+zX#_mRkyzj~@TIwndWnOnYE6Jf8zb80rHvt z{?})Edv7r8o%Ua!X=rEqUYbHa(;dFALqH6TxT)67?;@CD#SG5@XyenYu4E9iz~^o% zk)9&x4Xg=>Lv~a@2QyAzOf*n__kU?(5M;~wqF(lwwGA`dpGp#}>9IcqGb@7&FRUZf z=KtlIC|`P788dQ_<|tCT^9m?R1>e)iMOR|AyaIe5{zQjo}Px zSJwjGoAVCk94CA3{l$*A&m|MNt*UF8KN(c*RS2IX-KlXJ+-}_sm_GV_x6kMB z1~PYmqYr*{PQ7Xy%jY0Y<^|oQq151>PSj_zw&5j7dPnfqIXQ3C+llJd^{g|)e!^j?Raf(X zHV?M~mg92IH*Ee}ryKgnJoqEQPfiC*rNobJ9jZZcLG45Ww}T5i@UVHGU;}1<-;`r> zmv#WG3;x}-OrsIWp)y<;`u9Im@uycP83T|nP0$Wnc}Xa|Zo@L-0rtat<>llW8GXzw zoqDq0zjN99@mxK2<|&7v7S%yr^vO2CcA4^2BetOn{0?z%B>E-h;GClx)vL0Za=kk_ z(x-?EUT+~Ib60S<^z`jbd7RjkoQ-vE#O47RBo+3iV?Kt5r|AKeG*bkyknVxx$ba-fAin_t;U7x6$CK zbB%EO+jb&^jlmK0Zj**Ki}_vYW4G$gC7`{Wqo?Y6ha&~e&LagRKM1MFc%ENKLv{(k z66Xfkr2i0sOR|EgBpp`|)p3|2oHO-v#=3+g6gC2w?`Xuy65%d2qy@+KZjpQNmSicW`1{Q zmI~pPe}=#);@r7C(2&J}e+wh(_14WzVL3Mby-8suV1WZ zZuDFCxs}tu*zj{kPxeNx&d8UUyUu!N3K^KWt0hVmAgJ(8fpl#W z0}$MbPHX99VGz)i@uY2bmhv@R79enQON&fQf%<6YpBQhCb}Gma;gXx)(;v6Al0KRT zjkFe^{iT_i_O@RMxYlm3e$TiY7WBEFF975J2WN(^Ky${~>qCjjp|eM5wRd+R;5ay$ z2-&H&`ixgeC2PE6rnHjuU1!+9R6-4FLMn}-gTP;<4y?V=u-AAU-DZo3+>Ig8+0gcP z{PVpT{xtJeI;I-5W3`-$aO77S>d|k4%XT^Z^g@oBm$OTk%fyHPf}2gj%*!o`pYJ;| zJ{W&SQ#^GSmb0}EK>PIJB=`$idp~S+)N2{orf+708NU$y*c8fl*83+>YE1c?W0{uc zGnIRAX2v_U7#p7w8eL@N3=4gm*_h-UiwxxO&~$4*tFEA~{LrMu^3y^`*IqHBDkzD9 z-0p3;tLKceL#(VeLcR}1f+XKUb$f8!ce~K%JMCuTej5Lr9D{raUJZI(g~}=9Dd<1X zXl5Snzfn!jqiuH_9s6~9E$TirY8MFIf^K|1-^v6VU?&R=ZOTxkPCy`mvKXaIi`U&v zXNs<}h;g7BV;yUm_RO#Rr_YiVBrh-jjDLOaJD@`yOw7GEbMz@B8eGY@Fpnf2U+Pt2 z*&o!n-Hcr^L2Ec)=f(SGLMQYb00_|U+Z9H5p09jyy2^zB_Lau7{mCGK8ppl~nrCjW zpxT{)ySI_$ok68)HwM&jh!#BSjzo9W1TJlQGjI~>tbX(s|c^eEe5km=t{xJjm{HYgzIp@!U zF8lrGbbmSLvC%#897yL$#CKNwTOqS~>ASD93{vZ47$DQP12u=@Hp8Lpc2i%vP^b|2 zarwq|_4_N`sYYU`Jp^rB?JnI0`Zirj|I}L@l!JP&NIO=CJ2bf>&J)wJu#K$U4$o{GDuCPq_$YwA;(4HN|Ba+eT6a-D8C@zK~UbQ*+VCu z4{Gav*UxSz8-s@=|_9ZDH_yb}NadryQM?Ta&x}+=Nw>66N9Y_st*^BGeU7?YLe^F7{n# zH`PcQ8-zN)@rg*?Yjxd-c@_8kba_A@wWp~Z@{V`!*iA`JE`*4-3XDm}|9ieBNQw3< z>s>7j5>!nuA(TUe15Q2e9rL^#w0X8qFFqW}Be8_sj*+ZF1x^f-*(s}tJE&eyU-!J^ z4TQkwY;1je6^G?kFN)-3~3hUE=Svxq$Z@%FlpUa~BhDOSK)G@Y_34fSwb!>r3<2rSgWPHpxp;ZRY+CE&YrG2jYJ3fUykH6OWujCp-C7!&!PvWt& zKYohlNZV#t)ebo1Q##eJMg&XhcFTfT< zsHy`&&Jfff&|Kc+BLp$dwihW94nkU(k11EsV2Z^TO8u^vKb?>f4x* zs}s@OgHW39D1Ra6#yQsa8a`Xmei!#Yj*V}D`bMJy2Qr_#KJ}CW@u`Ss7E$!xjHeq6 zd|W2&V6UWM>jV8gPVoD`EJWKte3$91Jw|;EJJDiW?a}n=G}BAB!%<=Y&-=hutL+f# zwM;gqzd)LKxw|*Y0?BfTh0MC3LI3Ar!4gNZ;&={fUo($r#u-1<64xW9d)(YQw;3ED zJ^RyX%)Ubc^SjO9CD+{EVaH7BOKUXqNGC93Lro63>w4Q;$o;k#y4^vQv-vvvaj4@N z_;jS-vyE1{=;3pkVy6&4>(o?rOl|HwS545wEL7Aoc6wBF>eB(v+qfc3LFRmroSuF; zoTm#(F%0p-6!MsZJn^eSAvikzZS}32N&n*W)qXq2QO7Z8nJrJTe}QCt!2P-*qGsied zP%BmT^?CDj{~DXm69=#?-3F7pST&b_(Cyb_vO_M|q*ZU$>Hq};9K&XY>4~45oMh~& zF1EwhB#QE+JvxnVvHlEfelY4_e*Z$?Z5kdrPt|{!V0VpALt#xg_PSjetqCF)?B2RD z$JYv65XI_`l{7pYO)ku*NRM$k8TdQ?ECM56*F%$N`bfv{{CmYXm$Vu;W$WtLcj0(oLLGDLU5UJ=^10?c~&G?c0x zcO2es#{XrBJ%B!1j@Rm15J3pzq~U^Jj&~nMab>@{Yi$C=q`#9l?5{EjbI=)%wTA8O zE`tzd}jYT5OL%O3;aAq|75X;_~|7yPTrj$dGe9BWnNl8@;ALhsPJDykJMv@|*7 zr~F#?OTW81*QD34gZxz%xpc8vM68*tCW3n3<3g78M?`GGoO*U z{jEsZmA{tQw+LIBq<%ZD33LFj0vCO^5AwureWJ|p;_!7xNgg)#cEGQ<`&nHX{?`(Fzw=Z7 z1bp_lPylxcsS;hCO|dk5;C<3Jhc&WUO;F!%u!Kj|zf9er@pY6UHFPR;s8Lz?Gqs&kn5OK6vzZjXs+-@)34$q!@^v;p ziyb0)ihDfH1E4|@Jiv^^$kcxxxZ5uC+%U$_YC;JKh`IOPh_Jj6AFd}`tI~23eP$j` z-3Z1MYg$l8XMw-AT7La4Q>7sJQSHGaNSL#>4aPSN zAeg{V5D7~w?^mJ;N zT@sslf@WFBWJQt9L6j)6=J$ENkhW!M^J-Io@Fq}g+Ze;n(F<9Wj+P>b&vUXlnlc>0 zb?AeH?;MJ%+7Fo$oM=Vu$!-|3XsHtX;w?%_Wlx{}altkW$R8Vo46>ncw>V!^<|P~( zYom;X-b`%W11Xr^id=?&uvM~m-+JqQBVEnu{H{+b<%R4EN#gmQ3<)DJSo^pcc0qUN zY0hrc!*=oiVy?ZrG_wX2a7Ez5{x7Z^L#{SO4RlFdSpN@pT>=xF%n$%W3@R)9U(go! zm+^0MM+7yO|3J`^QD6NpnwFglQ-X{!B#imz<~p#GBp;HO!9wAP^OT2&a+REr$ z%&PJ?X~KJZ(hjD&e7sHxTjm-o8 zUs&^wdP^u!j2iV1eoe*>$*evJZnF`7`61S?kEE$!rcalXL^g_Q7oeoFp=0gTb{9lh za0(ID;e4-!`Kl)UlV3(5!G%s^Nt%`3OOaA17OvlG5v&KJFJT5ko zM$=VkOaNA`OZd9<3k`07=BRW+SQx&tZ?bX~%*&TzX5nf)>Q1WdVSzem?}kOMR_shr zlT%~=&1Dz=(rNi$%yhphF448h|3S)Qz!Iok78bHQ^)G0dOnNGNl-keQK)-TpPU@de zL`}Dg5$W^4*=927#MdKuex=#;^6;V<|2E7?1&ga@-d5{s2{u&HqWhl__?#<9ZE zko|VE|Mh#+^a~R;(4FAe=sC@O#KIyPYivo&hHo^1jBx{_ax)R#N|OGP^2F8`6aQ&)MXE zl^$57%PUGA`ZdR>ClQ&_gHKbinL;2Vm6QJucl)Ei0L2eBM@vo_M=XX?Qn|R}hn^8Z zunF|wjbbB2FSb1}7WC((7Uqbip?~DW;7amjBEcl$GXLvh4MJblD?P+gf{ zxR7z^X6Ied2ft=emuFfzKZ{A+O) zO6>Q%!=~*00%m5%0>Y}1LzYHnO7~XEY=mvUIqVo89bf(rPM?4&sj{gQ^7BK)y|=hG zc+>f>k8m?Lo7#_@{}M%f5Fb03pPkx)tUq|2Aj$+HNH_p81}RGHurIdM8ZzB*8>esF zo}e0}Ut-E(_!UaOwBJImJbuS3r&-375p(lR!N!-Cc4ivKs}ILB(BgJ(uT5=>X~(Fy z;7eoYW;nHMlr0)BGxl>f$50Sj-W|*hDQBux9HR(&ZWShJJQn7OfK*yvX7Wj)@Fxt? zMc>4baKW{N*c$bb{Nie-&(d6pziXArAsR;iPX6io-n2wQDQ@x8)zRg-u?<1kO-fdu7|f^(h$*~J*$EE(xBQND6!PMtOJip)PN+gcOUEPsIGUY5C#eGDJ^dBK=#1C%lWYFVwq|&gqbB5Z%=+`jHTF z-3EhTbLt9iLIam6W!6f)Vy&m^9RxRjhrk6+*~~)t@Ix}$I=*IG)TEVzo9iYO$V7c) zo`FAg_y-Y48G8mUom&ZBILWA<(wUamYY)tmY)g|ww|;vwQ_7+Lq$yvu{L#&@=4>L_ z(uAU=Zy3%(j^rIFl$-8ZzUWA|{~WS30C`HQAkM`F2G3O(fV{?A7QIIx#u|mKX1v3! z|JtA3gpqy&Qe{#ZEI2HIf3a}a#cW6>8m@S=zWv{349*>v!tVy zVH#m~*V1)IAcFj(KHNIiXq{u*>4cbi$V zovWtZ*d~RXKhJ#F-2EaS!Jm-)bD{{HZvA=64&9E>aTdPq4ViQ)@n1XbFOy#{H(&fC zK?(obI^qHAkC`g#yu8xG5#A9Z<(FdIxUCP`QfhyV6w+H&U6Zy*mDoNLXK*j zg>}>{+w5=uXt^@(&gCN4VzcKR>S7$n^JgA&O2^gPLG-%A3YZ46+f;;x=BTy}1Jxei|5D<4)xJ>C5b8^FmYMAf zmMXGsKV1`we3<-IvYr83-}o1X&+BDb%oWevYt@#}KbU%0g$mauMP5@itUD{sfrD6a zs^bkv!G}T~^-+>ceLwrXdtyA{7(K*=h@2tN{EH{tC_t(xU21g-g1_X588K`Eh z@O}A`z&-2PM}5S%#9xi!7vp_WFYR1Ucv!|2ymxmd;0?yyJ7oDNbm**g$ z^N8ffpKARRNps|6J~fR-OldR`h*Q!-ep~+bCd7CCj(~d2|a%w zLlINvfYF=}R`LK0kk*|fJW#mw<7%E>Ou#kCMy znm2oe^X}v7<{+?ZU20ALE(ncI>YdC1-5#;lF4{nQyOKuf8w63TM(pUW-lsY&=H#v} z=}+XepKe@n$T#jYA_ZV!$k^z7=ZOu4v&u?x+|Cvitb%X5Z^wPFb6pNOFo4QsR3YEB z!#)Wcy|>I?jzGR!)$@_N=wIE6XTvW(`{lZkqQd~mA2X&azT`;9(|4h^Tg<6>@mLLh z7MA^S)k#yxU0pu1?sV?5H%bVl@10y*U7t0F>_pSk-@EEYl`q5@CTozm+JwA5ual0z zcy)YqREAS9X%R?$Dsldeua#0#TL2v*fR$C%b6h`E?1O3W`-a-zW^woK10?LBD8(@f zh$wmSc>Tq{RUz?8>it(xSd*h(ldam0?auQ$b6CD7E4pQ`%xX@u$2?nZ_{XPSmZBmU z$=36_B;?vzK`wYn$SCL|!(J>55QFW>OmnGjznIn-vH%0|=2szlsL4hmPfVKX4VFZ4 zE9s-Q;Al|UWk`Dpw&UeYhaESh^QP4;i>=k5u(&=zHsawaSLw+XC!T*GjqXA4VHD{yQPIB-JIku|B8TyT72`9w_Fegqc|I<~Rlav0A$!Y@ zXO|QH`U8;d1@!Q8arGfNDWSw|XV3Bt1!b(_yU`mTRtq?lha;2+=-glv`f9!A)JB5R z3_rCzi@skR{k1VURyW7zDaahsv;HwWbWgxV;bBEVOMNIM{Hp$t@8jmA26x(2vv=C^ z(n7m~6rh8ibb39f+ib1@V7crzwN_3;pL}Yn_0GUs)}@hITL%qG113MWa+sH>qlvEFC8bnij8{}?Z~R%@5F4G&LZ8OaTra-y z5-S|1=o*}Lo11PWP!z~BEX2*Lg42-MBz}^=e~z45Fsi5{&3SvJVFea>g-WCL;~S|<<|+rqX67G`cROoB158X2njZ3*?A}YG zVoN`^qRvtU?4h3`X1;Urb4bxqpG9qN7cKJ90Q4}SwCTxn#wR~C4GcMuM0c*&RI822 zs9e`jKjZ%5fu6;kzhCrynQZC{3kTnO9MwYRdpO!hTiYd)AEwLK${iUn?e#;wY1?kQ zGl>{ZYlk%&yU5l31HR`<+sY6{-t3DEl3wTAD(wIGNFnN=CGm+&D8!hm3@6I-IOy9 zL5L)bOP;z4eIyHWB*Jbbp>;P^*ZGib`w{(bPG+-p>t~RC_6yL$zMpZkpm&gH-$ZG{Y>-)}ln{(X_f=^_qkXyR|mymP!edKnO zLyYQC1`XdJ$rY;(?A8F99+6jkQ}7qrP^k3ANb11;L_uI-ebhLZ{}a@%_J zh3h0EWP+nEUb0u0$(szw7S&(d9>>c-mnxJ{-(dZGo!* z0pu|>EHWB{YbTA>E`hT@lQzf0`DC_h;{VlhUn@&3-uEvAIvhzbwmt>xMAlQY2q^wC zu6c^<_2Ys=zzN7zfgu96JnV8*j>OlRpOHQRuOA_nFF$3%pr~T|dvmlD;ZMYlH6347hBC|)+xV5_!faH0R1|zv z64uko0(0P>edr!7{6mmy!N#T`ibEpD2LzYDzcF`gaI}os|v4+Mg_7oiPF-|y*Ou>e3Nycb?qI{T3_>)A`dm-hHt(GPi}Mh z<0ogn_H}VzgW6QNwAr-1LwVAu2{#~e%lj60rmPV-;*jslxj$R@ zNQkv@5FA4%lL^>4BdY5~^}TD89k3U;jk!3bH0^Ln7jhDk#3X$vGlQQ;T{2>DZG5C< zvw;oi2u^UJ=gJ6^&2N1qYkQ#db~hJre@r{aPh8Zvy%(W=1erp*#FgNGqWsR{{8YyH zA$|43EEOSmgOu5X2tZ>7Gx{1GFqRX?`t%k1X?KXmB^VOwajBcZi@nrN(dYj@H`!^l zwm+6f%_7ohlagBMGJA^1kz*yc%7d1EeHMrJ6%OYSopilmro53Kv|gT3uB8Zn%D zDBe0^keI3Bem2IKt-H*O9;mym@YqG%$#USzaEVn272Z~!d@dT7b~`?k+Dh$+4$VFg zFpJEj=l11NPrDV7vW>scf(KU2tf(qtq#<`?_*d8W)T9h9CIS3M`fbhGh5>`2!evIo z$V5yTl{9w}fe#z^IZIDtHf8~oGGC26-yj9XFk^*pjr8FH?NB_Fc+_niJfF>4p*9+K z1}0;7esO*rM1Sws6xtMN)D}fbE68NkfJW;j&hGvA7G<-9dE68rZ2oH*>xQQk?I6fX zg|c9|^~ve9(Lap9P>me&%l=YlWTFt2?d%;gd_aN<;^I9zo`fwmFz>_qwIGc^tH+9~ zOe#E+J~~23MoKUR9uCH`YXDuRt9^TGf!>SXpNyffB=zO2)8C{Y9HXBIG1I^$_dmp{ zCV`nt#4F&vd3Ke=NDKkBnDU$MH^1i(ifF{`;YrWeKFoG>GpYY}w!*!CBI*)8b~5*C zj{YTBggJtXJfinQY7YS#fg$We{$W3=xjt9osjOgmUWK|;n~{jHpn!@lPR0iq31433 z-8OxeMz^p17wgD~M$KoHf;+luQv)ba~ zrO2#HrS-@?IpMRogW&*Kp3ix?GJsYa5}cp?!EDEEZ5=0rSVCD*v{s5UE6T+m1h$U^ zQjEbQA=TX&W6)1Puhv1lxW{0dPptKcZ`3xy1FjKd?gJg1__{O$mWgGXfi;Eb6XcS=fBl5yW`*U~)^!}@=YiZ@*>uJRXqT-Gr+AC|kyd8HaMM!K`~+Fx{X z$t-DR(b3m?%bNx zzrJ;(OA>DPy(T_89bBzAn;B(N?&4;v2NAh)NNCt(33f5>^mOKbyHYm9XJ+wOhe$4w zHeppQ7A0FgP9NcsUL}X%yBI0Oj_8oZm`8~&$KU5S0t-Idc*8zNV`W_o?jsp%-1~}# zfzZ^j2;y)L%e(E}t-Ou32z;w4#j&f73{@3os~u%QD$1&JC-=iG%5}NdCJ>5lLH-c` z9-A1H9MdT-o!~r*xnq!9XqpLWf1bpAv-YgjKu2k2Sso$*+A{J=C!8E{fSAT>iS`eU z(<~F240Yw+xOhvdEBe8F&$ubr_$L=)AtKz%g;}UK>@Y^Y(2$ zr=pivQd24_Nn6G2J-<#WP~Ge7;+xk5RJWTI7%DNBmy3d5frf-+8vH=1F8-oT7 zXtE>ucn}3G8UM`#0&EvO<* zbY|;MR+;U~OK?14b%F=dwct5TCJ(%Cj?&?@*y?qQ8ah4w)VctxqQZXf#(V<`n24WP zzyXi}_7&~m!d139T>MRD9wvf;-ln%vKX0;fhZnAXb=aHVkmn3k-D!5SMmf)|Pf7ts zrQf6gYNu)O0J5fhw8A8-&DFuzOiaBbf^C2pOyarI|P%KH~J>d!u?X;ga2|Ay5+l|~m$|-$&Nt=dLH;8J~ z{R4x(|K0?t1&#FBd?8=VKJ&Pvh+rP~QgYV&ZYy$Qqe@dzQBsnQLm>H4ItCs(*IF&w zFds1bhf-rx+&jn)^Tye5}j*_#DeNyp89(*)fzpQiUkTum#|;aC_l62oa^s~j>{2ye-MwWe^jT)KgkbXJSq_H6lllLoay#!T{!v{zD^JV3OB2X!--}NJOLw+>ud!iCL zrWyjKL{qk)eco)US+|O^F)G)5;+asAwRKQt6D8rsAmL=1?;7IcC7etdP)|$?VqIG> zzEIbgsv`fqPu$-ZMTMpOoRsQ)EIhO-?dW0IXj;;0)+o<;I7Ry5Or&88>#Yb-|KwA+ zEH@0L6l-6IrUamw5qgZyox8>^+4PIdhtGtnj?>=e#=nr&BuWuTK?6SaPyuA!kOL;a zxBgfA=MG>DC1V_cu%DfI1ep6d|F;GCkQRO1YIb2jexWMBI-;A-kS&dkX}emr6bi{a z(!esKeLF2A%Ri zGj0Q`*x9FqW}=?nRTd8as*NB488#ZuN0Mr#Pr3be630jJ$u#%iba`}Jy`VztVMjOf+>dV6m*vO+u`V|Wd$sOrXc@o?WiD2< zIzt=(!OQvE-61Jpw&o~5?CZGr2wNBr3zYs6w%r7&oAH)OA=sE@Uy3FKa+5%rXvu5q zE-bJhL20`G16o~Yf6T~VS@u0Ht&^De)xAxDc*Xn8!V?W4hD^87NeahWz87r zRvIftEA?GLGb(q_G9IuWUI4jm-G}pFn1Ud-%ipNGu&c@>)j|si$|Q8cJ=fpoL#}1! z`zwc2&;$i7R5OH|4pq;eMF*w9kWp~Z&}d@eIGKP@KusP^)%6L(`;nh9$qvH2?ly2x z0!Cwfg)3#ix1zF$@nyr(iR^_DfxW?WG&OyGd8BMwnhW1ncOW!egqS4tbnBDnN*zYX z{tT;)4cB7Z&KE4P{_Q``uQu&PjkT~y46D^tRtz6;1fwp+VqU*?X=B|)1CUi)JB9l3 zv#>!!;=XWD_b`}F8nRfL(#?S|Tm|`|2u0~gMQM4tcW{8}i$F{}o%`+DqwT7EC@K^_ zqe<8-AUyqEklA9Ab$iq1zO}2LWAbxQCeo~1p_3oraNeS z+Jzc()J3MFvGVvsgzMieo!t}+60dT8dB~AmUM}IQo0*m92+}BKm#cl?ghH{v-EssX z3K5?cNBbW1tJgJ9C!w$$9l6zs&BM7tp~AXyjY||N>zEAzW(DQW+2ky?L+n#20tZbhr5-~A}5ZY&9q>vRs` zd?_EA*s6i$$yUo6De^1)!ypj5@=$zdC5Wgo7KXlib(|@kto;{!WGIykEPuoMq0CMM zfCqp08yoKYCoRs%g-KMqr2sSQPo*W~#F&CU3VN-96MLz``g7E8i)C53LjtcESG9Gs zbuo>M*;aYg!Wc_RBP?gc8ueD4#F{a43*!v8*q>ECQMZ;n-yIJ>XbS~b>Z!sz{QD^Q z09G$7n%@*DaS9o&^nBopkzppR1X@%j9L`BBf8;-)`?-_%HBc`NZwSV`PCf~1_|9MA zA_Ww`9paU^5yLX#1e|z%*X(=h-Nxm02&;}Z5+XJ>Tpo|6-s*|>pJ^W1FMB?6Fk4NI z8qfwXU(C&nE_y(lAy8kS-n2%En8s~iBUnrF@&R4&pVOgZxM-nPt8^#mtDFO zPgl;VCRgjau^tK*#aZW=9qX2y<(1oQKSu?iTGpR>g2H?o z$=}BBbs~~Lu4llmyKegB$;+0S=&zoUJwd&T!xQW^e;RTY>$W>vI}xmOG*IX0Ax$`m zH~4~iaHDhwMYRo&7Xrb5K~qRvaGZVMVyC;zd;eg&LNZ2$)3g^jua()#=b1(uuT6nJ z9Hvp6lKS#g{P&E&{@mAI=drE&C7Rvc$rA(iAWX1{j^=6Ha~-c@amlV7-OTLKPnaZm zC`(DDpew1oBRr}|aPwszlo5M-by#gYmhW_4oKF~7h^K&dN+X&IIp@!*hSbiL zyOXvJU(9pcD!G>g{TLZ9F)6A{7j}PWO61_2G^_hK)t>rP=rB+CB{8wANSEeTmv~Px zeh$R7c~DbJ;D_o`tTJoI-=M(B0<*8$i~yuw&kGiCFgWnM(D>8DB*mOLD`yk0E5PY` zuwr)nr%URpqF5a%7SC+vQ56O%i;2``*z-v$Uy%kA&I}wm7(02{XO4dNPJ4?Xe+yTO;R`P$UPHRv(aP8&s{0i8>bgG_2JCCKpJie`#pc2`CUDX}Db{QIo@>GqIuT~EhfVZiU!3CV>gLkF>rIzgtf`g67#cH=gz_fXrP4qxb<48Z za^cd_fZ{Up6PcTe{^0_(gqT4_Q~<&pXFb@3V}E>rd$w4~=}he2^O{j8{1-}TKokHN znSL%TRJJ0-35Egk&6EHm+s{DzqeC-%sX0g0lj31m)?n^Wg(3&c zvtj2expC?f97!RsmmhhLRaziqBw60~RFM47MxBr@9+VV% zbsfau7EG)kB6IxMv6aE!q@gcwHW5Vz$r@@X?s^?A^NQBOH4hIb@(w;JKjb3~%+--T zFbER@yM%ubufdA)FfcMYGuXRgzM@FK=Vztk9rqBlq?i;xI`7Z@nu!4~=GElk6XQKR zZIo=UJ2T9j{`G2=keJ3?o`m0ix3sK5{KjW_i!1XSQJ+i6dgTmz#kYCijAJK`b8~3e z?f0M-mE8dK`bc#m>hkpGhZcC5qfMNG3ER(<0qiQI;dDs}{fpJ%0+-~1h^(!O@C&dQKsVJd@q)z?&$P5^!>hin|@e73y05T?k6Z6yuM9e!-bx& z?&>c>1NQ1=Yb*2VmQanCz*|!C<9m$fcrvEuKRegbcVs1n(LCNF_FjJ{Kl1z$rv{*c z^;iJ+VaKF;Y_;^SI-a|8Tw=rv{yeUyPin;EJ)+jaAyM2xG@~?ehOvNVlNY?_xpt7pXs(KJvs*)1pnqO z!ZH4tLmALX@W}C+K~X8JBCiyCW>zVqhbc`+_WM&JHhd_Vbj@@<7lMomLGW|trzjNamqYPW1#04tlBap zSvb9rW$cCw;Z~TZ@d_8)szk}irB&1=cMM-f=H8c$fOgpd^pJ&ij%pAwCS&F>Zs^)? zc|o?Im-Ep}wG>2Reo?H3w*KA0f9eyv$~$mzT(&*K!R~k@?qja0=YX_KULn)-l$SYa zkL!KKz*pyzy{pe0GnCN!$vg^NhiyOTxn2hPmR)_k!lB(wQVPPw-s=X^=SV!K2;`+I zY5=t0@Q!*{&Zy+hqaerlokx@$M;RU^*sHkb&G4Qy`)`VqO@Wk{H%ys7?Uug;Wkaa> zkRG)Tf4Gf>>PK8rTfy&hEQUVWS5I|&8;Y0{Js<1^+gVz>Zc1GA@zXk5L*TRDVQKR78UDLn!Nl^ZvSyUE&}jjc;*zD>NIIvdAS+!+psp z%aITTd2pNDMDCRtA}Fy*0o`%wIsL1Sb7o5mRfyK_7X@%6!`>#E6n~_@niIv!ug^fx zTCesftw`>xEv3cdCnf{oIz$jTM5IgXU{nbnSFplMpg$@<}>H4U!EHZsLi$$V;|EY&cCE8#$56Kad>E9v9 zK&J^Ks*f@D$Z^_M$p8EIU}dLP3ckY{3SE9UM_TS`C&G^$K9JuBNE;HrB<-+Yq=5nw z_lZj@ga+oZ?G|G$HgId!u@C{DS6|Z9EX7=}6W&k`Co8KbK=Tc0bVj1b$hO^8&&TfA zhvwP?yD^f-ID?E?apjM}Oi0zmmMZjvEIJI#dhFo{kuS5avaq)$Z(USHGzR)ozOg?zM~R_@WyDc}pS3OaJ=HNgbe;w(;@Z=M*9atq#!M7CpMNWAn896#LgcvV@*JV zj`$x(FuO90kWyW5HZKgHIM(NWiYNSFN-?qk;`c*eGB{ZOIqnNS@X=D2eBsOmzI@tn zdW->wON$J;N=opiA7gKtiz5rkI4My)$$N2Ol~YF*lw(pA@(W)SymC>*iedQl1C;@X z;NQoiqEW39iUCOglpq%3q9JrauOMGneHlHtBFR)2(Sy?aBJt0e;g>;M_G>wNJy=ZO z0)3W3Pn~N@cFaclLpzGn8V3vr`|tN7c<0|^7RvUubi}Zm5Qph zN*gJ23Ndz7pQ~;9=cGaCtm~5o_K=m#*o&3Qi|?NSR)lZ#U=^?!pgI)>I8w1I~AR&BU8A%Q9ioy2xqC=*YAg zfAz*x6lik`L^w@CG*x>$_|MCZXOwl-0AA(HB@cN2=ar?1x3px~qLhfYe~!gU3lL#x z!<6*G1!dj^p}_z1n!it!Fk{Y%gG>#%_Y{9N!LxDxU8SjR^+r&l@QDZge!@qS{P_q; zn_11u-|}sMFX3Uhs6_V}mMQ<6B>=_LY{K8Yd6ifID=mjh&oB@?O^e4>aEi$w>XbSv z3R%tuf5H*_j>f`6+fR(%rzH3^GSdCzyuyG6<&;K&uC`B89}{uSi8neT6sLYhFi8}U z87{{viie3RHaiV-_u|n~(k1P^@#|j>#xpicdP2ee080t4grh`B28}5`SWr|+6l=BG zZwOXHd&4sf_BA5?{a3C$6|HZ^S3mv2V{^oyLjL$0xd1fyTtR1(`1H6} z$uY!t41Bu-(cRPLclFGr{`DF#Tm^1743k3WT)&>qYEPaPulfTBJ4)A~DGsbNGz%g` zx?x>cb!9afIDUFNM2hr@9W|ZP5XW8YYBPZtJmA>hgCbWgUyZt}cds>j zE)5SfwcmG(2@hVYkqpkV-;=7G(F3mwmAFwwBm9vW0#RUP0yeRL>1jqf#~w^td#r41{#aU}O3vQe!Bp%M zk&67$mr{)kMS!lJe_wylg=DRT;I}49ixn;^E~-O~`+yOy*zSBLjY7?UKvRSTeAtz% zm*Wo!FD}gvMzoc6uB@m2MQ0b1MFw>EmmL>FEfJ^}=`b-XPWx+EuW`G!Q(v;c1y?+p zxgw;=rR8o_-N*Rd(;8Z)U^D=vaoe9a;0N%4_0HcQ@$Dy05b}`PYe1kq@r<}1`Ogbn z$-ci5wpfi&E#D7C^evt%M042Xe zSWlw@H1DF@Z!VBN-ilXh$+_B%xPM!pnqtZ;5(WUu0;~~(@FS7uU}!huGo?D#*cqER zMu|6mpxn0Jy4mBOyXB%7jZM+`$?C_ZX z!};%bD}ltAL;zH9NVyik6NMZqAXgQaIxZ4jt^zJr9oI=*YtsL`Q^9pOSgRl?S>v>S z(Yl}QBbM+@x}#N>k32=%D=z~FUXH4M&!bp5(mJe(=QDX*oI*IT*9fmEjezy)X7ix= z&orid#NG~!C>+}QaWBhStRX5A0wdnt)^y;lD?hdil`tCu0GTU$=wW7Mfx@I|L$JU~ zB1irWR8%{dwD2;qsip9KG$DrhUmsV$lzb_``kmen93=%SMM<4p7&D|SiLE`Qn~X{Vx%>CF9n3<3j5p|j40s) zl)RV_T2~YjZlUFoFsL6y0s~}!mk(UPcTZe?_a8GQ^c0}2Ma@3F%tpa3jss;W=o;^& zY4KF!m(ps+ORpz(|<%A64)56qF=|iw`{WJm)TF1 z0sBr_G^Rby#!VCn7T!36$Rw5kWY-)LKhY+5Va1puT|^J zag8f!CT@)kz4(EAm#r?<0;b4ISmhRYwx~$?`Tyr3_AXKzX4Od^80RQyh|R4$xKX(S z(esA&UkLk9!vZM(eGMsyP7(Z$K*c1#xjpxoj@1$)Tapa4Wfu(e;PcJ{t|2pN&`eH3=@a|8ZN zO`!m%@Z^9|?OfSYnhviB#G+2jl5hM;Rq-DB_uy2*&9?}ZiTg!KDW)+zO`9C(G)tS+ zqp~#+KS1B|uT=$IL`~~EjA;W6YdHk6ZJu8!pToM5VTlh;hfdg_Y};lE4nB;hYbH+N z9SVgcJjqoa+XOqUhUW-&!XKZr{6Ca^Wn5I<_wShj2`QzeyF)sZ7AYy|7Le|iJfH$9 zog*#M-JQ~nbc52}o%cNdU)+0N+!q&lqn}|o$w6YC zzT8^hb+UCGaUT+%B&0r@gS(0Wa(cp>Omi8RX8?ql+ zxaktMM70^#Myh<#KAvuGe@|llJu#9jYW4i%s!i#%ZM;GnHl^5uit74{s`3<3o%2PI zGyv`4X<8g(WY2JRKE%f!{c~c?T}uD&2=!0>^TsP)Tc*Mq%Q^1K_7xs?d50VCW0w3N zFM^zGUF{p0^^y#>k7`-+o%EgX%uZ+Y*GFK(a!YtCkXySNG5WGAB}u2Y`YByz@Im8e zGmQ80fAU!c(k7H=#CLWQeouQlY;|0&=5`U1x6wQo=B0|jpb3Qon5gznrc{jT#^9PH z#;ueAx=z5Gm#C|*clk7}bEA}mZz4Wz&&GEBqL$6(5D|m;{~7SCVpH%K0MFXM6Bu2SWK2 z2F;BN6Z8_Z#D$(b?sQo66ZN{?uH7m?4cB)S-29eMRN&j~bZQiGZki-mFUMolcy0Oj z7~UP(bZ;SW@R-A60!OO-#aV)C`lJ@XK9-tgaou9k1vV;nDWd3B6TjU}D-JwCl#~%L zi*Yd*r7!&Mv$ms;PCDElan9J-NfOgBBfN2BOu3vaX?f0`{k9LRt8<%-*dSngl}tdn zKNUekHySZK$z`aHNkAh?U8RBeihJc0T7b(M{5PBb)3>`Zu7k5nomXWZ2DQhI*NtJ) zW1l1;3-z-ZBf+)fFvj+-2Q7NV5?coEOB7_I7{7mnibwnk$IZ%@dmf6~X~C`Shp&rM|GOXuKPMBEA1;~e zoM|~35v$H8NU$%Rv2Sic3Ca4zuM{AFhRgjeo=Op)E|W-!=$o_j&)X)GXh~=1uNe|L zzFzsf_N{rRhR<*JcEz0Uq1*$ZcFqmC>snkIAb55J$>f+t-itdsT`$ex#W5Ha)uk?k zF^7CWA-H@LWix*nzurrafpk+u++`y)Mu<`4_G=b1n#||a_q3cE$e(8iK}rH1hpq6M zD5KEri4-xL)l!M8NqR^lVz<=Fgln-#dE_THs=-&E z2e*FR2xozHO7lHX?KO@E$9aLK0mCQ}d2)_#`2E+|!k>n`7N@&b?fUbC;0;Chic_aa zVSx1A7|cdCT5>H-Ue^W8eO6_;@5kH*M#?X|2B`WjnfosDGR;_G*lo3lB#teFduSZZRrCjN8LM#ztN9T%29fLKpThAePc-*ZrrX;x2sxJSs99bs z*9@(eA!TBl)OofA_InuA-+%623niVg*t#t{1>$2V0nt~TYzAP{gY+~ioUsv6-w;8n zVjD&ur$1V$f(xZit*h%L!3M>|x0ATm==4}$VwH{jI1H;c4)@IxN%8?`dYYj#hC=2Z z#-1SBB&<5B1%2!hqJ~=~O6>YuR*tOHbdHa$bwAGfHE$+H)OY^8RHW-__KmnX`wNHQ zp8ksqDb;&IV0vK(1mYm`<&=gMR1XOSdfsqcukGMKFle-wp5#CxU)A^|l(W^Wrfl*d zNld_XXSLMwe6y{l$J5sm|Dh;Q(h1?m18Z$euqhja-f6xuf%Y}#{{C`xZELi_g&pzu_kkB5Er2@Q)h=l#Fur$ zE%z;2bbgSf3!A!oNrTt6MslLH@g8MDO9;sg7(`Y6V(Q zIt7mEaslLw-h2|>98*O_P0RQ5dr{8#m+v(V9IT|{ay}#)f(Bnp`ZhKYd07Fa+H73l zYjT`kr^=0s&7U1>w?~*0{0+EWOzDXUB6h@pE9K_QXmM0>1#wrXBLz>})$)W)M4Ghi zVJbDDDbfPr!K`3Ol@#8=Sul6GbDu7!+*>XCAjpWiaGqTZ*VQa;imm{KA%}B5MbyC* zV-5w2eFv$vFi=lDHjXA08M0%I_+AUn4|Mzh56;($1Jj>#*oQ#$xtXDn>P;<#vYoT# z$mV^~yo;Oumougf{&EQvK^{xU@53BQ&)oEXX8L zV9`0Ug6L+ZH_egIl?zNrASP6LP+*LYMtSv3lx(S4YAEEt?bqJ>^P$m_CGO(?{AFz9`6LpL`RRIhU!txXa8lOOSkL}+-M(0Qhi zZ@e!kxG!8=Ng%lSPmj3MYgyI9n#q!aCdVrd1G_aq*;M43if4N^(#aW6RnnYKjOyW7MK3^evGU>a*m%y}Ya zDM(g}GM!*@%dxm#f$NP53QEvhRqaPAGu*kMkEsL@rx-m-!*qJn$8$9r!X9Pf?xRy? z%tyS_OnP2~RPpSWo-0+!ZECb8f0XwCQZv>g-tBGt+u#+asK1{kC`F!%V&M7Sf2)g7 z)zV9) zRLx4y&cnmH(LXi)^i#vIE9Lxby4-7XC6%5*RIP79{6DqV*=GFqN0FdQqG0$6Edxgm zq%7UnOORWT2ekfyr3e(IYFMk<#4E2kPXo{G-=}r5Lgcl~(T6RgU{JWyBB44ys5<_2 z31}Z~>>xJsu%)4XX~R#hQ?Z5S+W-;R`U#~rZK8-tg-eC2+3w#$e$N$tdQ<=%T~>ql zHOo;Q#HRA#*p2NaJQAH<7(-+-K|jD<;XJOcvAIwUm24le3)yscL7Ur;N(((hy&2$_ z(1BzRIlDg34+5*%H$-seX6j}#PnH~Rtob&7+PqL;B@l8y@O88t zVLFvw9Y5lLA_e4VbV)`&H(IPZ(jf2U`#7V=p~-Kj49vsR-xu*(aG3u1v&!e@>A~jj zSJzI{KZ=nh_FuT}Pv?;`;@pgnsFU(^-uzK2fykaXq~mrFG27NXj!9qMOS!-Dd9BY% zZvZXP_O_LiP%^{;WKR*}r{&2ZW46bq2Ql1dlXj;()aCON&$e~OqzRN(9V3fVV)tz8(m7vo z$8o#UKWsqp>{gT|8>-cFkR}t8NZ_rx#!auWcIaaU+XgoEBTL2~1HkKs65STQ=UmKT z-7DDSHEg0>eAkMyc@uU9J9TbFjKG`oL%VmNapP|uvEQvpHEE3A#olfYrOWIa&eISK zAlrgm(D_$=dY;Fo{Z1g|_*b;Hpoox_`-s?4tB-!D>;mW@GLiXJUk|6rETTd{_>Vh7HT?W=#aW=S{ zz3?ZWNLJBPjs7LlYUK-MVLp6SNS{v)?TOCtUbqRwHcWh8}ScO1XX zP#U)7Ke8=4d-P+fnfGh&7WQBf><{R6$w*J{hiAhh+*IWolhHz+8Z!6~f6hKARd7|! z8e(s9Sm`qL#aB^mTeEa4FU9Kgu^LM5Neubpqew(9ByFhSS3UGxVHKDIt)ZSt`ZpdF z(>3i!kx9i!!c#wt#N{AzaJeEYDWpqnlL-YK=tdG^9${GPRE(vamH-az!YizB_TDm^YuPsL-LMqVq;`w;N?pV5fvS7X=L&3Z_{pUtBJ zRzhXA?QzZB9okPcEobGARsjEgVlEc>M)AHHF~u*-|5Gt@@zB)jvsMtnG)EmJDnEwQ05&E9=o+H79?OgSe`? z(A(9@oI)2W;B#_IQc8?~?ix=ZjqY9HKAE+^ISIPpsNB6&`okSWJ zF!69)Rr}2#!c*iOeQtqe0R>npR`tI zx#RSpA%Z&C;sMu@JPEQ4gHk?^>k+*#|!);9hTKs;AF&^$*1; zxtlb^L2Pgac}^#qq();=(;a3jISfnLzFvMFhk7%>J1cuv#~h-An$udpiBKiq>@kW^ zJeiA~>0;@>4ao4Q{@hLs5gE6=O)5pQzq3tmG#(zrVSzt#$61hpmqh>Y{u<8WdVO3S z{36-O7)Qq{Tq{GkOk$mopM2}+llQr1jUrw-sg(vD@+2yY>V1V@bmuOdCa0AkGpFGh zJ$kBbxP8Mqf*?flSG`H-A~zouB8@oB;bg)^tY$f>Ka`rudijnvUa&ObHd?Pm9_>Aq zUUnmKjgk}Cs#l4;-P#KXn3TF`oY`RORm>WD8hhvC+k8|MuTg`7BoJ5C#j?Dcbpu_o z=T|`<3;>GUQ2R0~yhK-bnUIS_-Jjru0ogFjm@f(e3_vdTsjmM`P#P z%QNP0A6xhsel_64hKa!e2vJx`&>B`T2UphjzGCPz-Btl=A2!dHHN1(u>g&MMz1q>K zB^4u!jNyUu(^}iu)6{q?<5u$us647HwPSkn4eX@X`#yo>f1DLNPQmB3Iaur)L#UT^Y~tH zk=l$82C6X=c5{`j`cQHKwxHn<4__a`P=6s1aO^t35x|Q6yq46tFk4o|8}-8lIy|*~ z^5yK`TXgZ$WMTfTC7fA4F$L)&on?+%0x zBTM4$?|SD#)6X>DE976PimOH@$wc8Zojmm_@i@>GO+yvLc4?CS1bVv&3zjoIUdGMi z+Jj)_lEyc|K>D#63ODtNlJslG3o;wwjNo4F`EaokB zh}nnu2e0IJBX_<(;J$w=u*GRT`uK;oHd7>>W9=7W*6HsaPMX)3((_OsuDe8eIVK~M z0+!YGdM3zgGK_5&+_tJPNXA%1=0YLkfCKbbbCWEr0K*gUutSJV!Z2wLrEW;s9J^^t zhS7aXz~$2gW-#H^WKdJX3lZO^SIfm>z<@z{hQ-vVJ0}b>BB{qYeOYPq)l^}IY3)7$ z;pJvyXBpY@rQ2y4x@YQ55m3Ia&2+}Za$U~g$j-J%X#h`KJrCzubNB^nti)BvKPT8g zs;hh+U0g0P!|S>zcvq#kN3JaFbUP_R|mEk ziawBlC{}6qd@e1rIX=QG|K{hpD&7Z?el-PD1i3+}Df0Cp*8VB~4n+6qo(xs)t}gZ6 zSdns$#oy(5VJzV(tKW5pS~F$FBZ$V`?4^IR^GH3&=D^F_k*5C#J8uuQWQgK~9?iK6 zyj2|AuoEU))vGLymX8->XOe_2Z%&T-N^-4xU#5JbRcV`B5%%|P|DmdN77l4 zAIGo>Im`YgL% zH4epNwbL`^M2TNZ*DE1^7Ep&E6{BZfe6RSQ$f*`DdU@TBhs6Z@LNfJ#xD?_p=OK3p zP5B52AV`GbK@l{VAo@~3`NMUah%To}Grmx)751riqkymGn4h2eEOe(5TP=I1_w+sXw>sMd!6wPf9m3U@P|7P7IkA#qlGj zZ0zOl-((Yz`)mn*cUR1TSWHo31@NxVHu*zoY8DLOU6jCYAHM-foAmo=1!HVL$Dus>r6O5s_ON;Q!^w9?@ReaI#NI#t+vx-5ew1~R^%Z9Ecw3-UrO zx+RlkPJPgGx<=~-A;!WEs0sPdHmOyZ?8K>Ir$Nx*@gzR8p7!5|Khy*g=XgKdvMt-K zBF1E<%C&Q$isV=t4-yVYe;8Zxy|n&&yl`Sshvl)SSsU3dp|vl9ne<%VT{#H`Kn;3w zss10vMtOYRhvm&Uoi}AM7h}N5q5@v__B*oi)IVvb^rvt~?=|ovD=$7Z zihVF9H8ra^Te91MRW3I@^gqG`{9<-W%X}99;_3CcjQ=V77f%l_>6Xj(V4Q7wsUb6( zQp8tpw-SOwy+Nl3-ChlKyiJPY84s*;-FqsB3(+rrh#5BDzgKAqUjpfTZcm${;;gEw zs?{^gEvM(0tZZOZoXXnyu#sk|4c%EjlZqKze(x?it>I2Ro4UvE@`mrnHV*RhS)dLM zjNw<-q_)-8%s=;3FNLy_2+VH}lThaz`*Gbb;|ha$LIuc|bhKj8_mo4JQrHR9}cb@a&dY5hW!KbHAO7OA-bd zJM8age2;rHo5gN3|72(pK&N_M$?4rM@kWa@4?X^KO!@#jxC|IyBGScCB zP~b`3l&Os|i;%x!g7ayt9x1f_ik~Qeu3qjSS+x3d!Mv%^k9iIa(D*DB592L_(CcAx zu4LW##nUEE#PwV1!%MXJ;#UekAmro_Z8S=@B_8XkwBTQ^08@u{$tP%ap}|2<1(leN zq81INyNBc%!v4H}51D4FOL7z3QwZ=B8#M4`y^RS6q#z=81`otUJQcJXV>+b{KC z{gpBd5rRqjWB2_qR!D2~TcOdFyVceWS~oZC^J@KPHxHTkG%tb+bB0j>B`2I`AD@Q< zftM}3lGD{2tMkuj<4Z(ZH%^quj&*8%F7CQZU{w4Z35%tV{B3e-4n6gyd{dxqH}Gyh zn*4mQsJ%@rE0Zu;BQL#JSNk3n5KRLwmfDUwHS0aYWCkKWFQ6(pOg|m3%J`>%ni{rc z&kO8~|FnYq?dPV$AmO*4eSJPa55!cXC6^fGaRI29R@Vn#3`405>hd7Ta3l)Yy!XyA z_w;P5(t}57yUa^LM&G(B|<2gG!&Y{X<2gpfEnee3-e2J@_7bFT$KnBSFQkdA$ zsdE-djj=ZL*@PNYc5wOZu3 zj@Alc)_Uk(H0Y8(I)wobb_OGPKX|`h2+6lK%aj$Bt2%>aP8+Jy%&LVOGOm zXOA?Z5Jn2r(PY6T9M142uqkDxuAwPqX}p9`BVO^+hxM}0B+81uAbyO7V(;4B(>U<8 zy}298-&g>6W9`b9cVt7}&^Yku$;tBfR5z)B=EQ_)ySYIv(PEK(d1pue@IVZuV~KVz zSgm*QC@wnofo_N5?@p)u{m6I@zYFT`q>pbdXI_{&&{o}O6~4>Q0_oL@m6dpSBV?kG z16H)PBf-g4XJKb0#G{X`8sU*K$>Bf#Ix}0-2N`Q!ktOeQeZgpjyq*f@d@jcW)}mC8 zDiF3}bq+cl7>4nUCRxhdUZYMni4!dT~gx6}IsaWLQLo+y7u2|*#oyfKgWXVbS9 zLiD6*ejV`$Y;c?{)LP46+Z0PZmI1ucxOW;dpnKwXN6hV5Ir)rYfGn1B2I zar=EjQR$juDLAO`=+RK>l(UuX%YG5d#mMJeZP}sgF#iK;Awbsb$+PyNv>~E)(E6XM~+T-4pcI9-yM8&8@0zEs5Ks{Wc6{@%4+bA{h$nNWE$+Ur$B#OxBYtG`khTX?Uz%T;Vgr>Z{?ykI#C0nsbVb@VhCL1 z>FLATm$`$)#}PIQjT|*UIfIk7amulfWtE96_8$GN*0_tgK}f{c0mn(jVR18?=>}rH z=uo~%4+pC^ulI5Y3ErG6;=H8hGTXLI^W>2sCfU3;YV;8Jv$ks`1^Z!@q083Kq5W6j zSCN+Mo3>~^?|L`O#{iP|gTuRnfj9Oy4qe}SS?|u%Fs`5M@)z!m)|r-5cor<>X%@S& z%;@>ulXz{-O4-M*6eDe<*a%PN|BYN4yDiAd326aQf;F5fm+uFKXpJYD~?T68V?>&N0HW0Qi|CXEoJL`mCMVsdWITqaOKcHk`o~DQnae~;&N<5 zV*WJJq%5{UYmDsp^wRr;<=AbINV zn7c1P&an!6G~l{Aj2>M~^1$x?!)S)Q*wRNcs^b}nok^bKa*N%$lXMROP4ZeIMvWGU zzc|&T>ekHMPCZ}l$R6$=3wTO&tccVT*w|<>EnX{Iei#TWfFYFciHHzFRaoJsYyHn= zv=i$1i$%Og_|r7hKDNm0ig|fn#0%B!4sWP}QrA^!6&;X3!WK~Ky0<90p!auMxO&ZX zHJJm$6VXj;IXgj{1Ml5F?6uk2S~fJ$gUXno_dVaGW9Dzvc?F6r?R9&H+Pwcx5@2-2 z*%rGr)cHIdHKe9)|JY#+kg&imsw`(p^Q98^k#yF6^+w(Gc4R@}mUBMrtK#ll69E8z zP=2<&U$?!VRRof?8R!m?>7oNp=)I;QT6O$RqVC)E+-Lw5FGYb4yS1Jkk(w`F_;gNkvev3;vis!l7}#T36A_S`^9 z$WnHzdwHTECR&Y?Os~M5PO_};APkgn>ObInemF#7_UUicoN~_4;^p-((YG@!rX7NLAaGRVH>n!``&a!MEbvocUsu=xdR#=D}Q-LjltZrgDO1thF|NNeU=Wc~II zD_jr8D<_$fSo`Yn3!Hw3N4Yq#M$DgAFKY?JmmWW{SgI;+ynox$6#tP256kj+&rFCh?$`5g1psyZPgL3N1F%Vx+~U_gE_ zp6El+(ReS8v!l2tNJlyU$?Gl^{Hpj)SwFU$zI@(Bhz&y!+e=tG2)VYwnS+12gtg8y z;&umTeNU##?njW4WTB>&Um%kkHDLb&tu&DjxrS2KfE4ZY>{~fGH*-QAIaSdb-IK?q zWHfD&W9M&=l&gOsnz`CF5CZ+^QyBhw9};YMw3s#{OD%J(&#&aU82FE7!6HV+p~c4$ zU&vpScmHYLgTlAKHHE|IkneaTM>~pZj{;R|hjvS`OPryUIXy#`W`POhLSn)}dhIov zgI)N&$udbT~3F`zb}1kA|)Oa=$=Y$^3`p@3FcK*(=-9D~h3D($jBdGYhDk zn_E^|pkAt(MJ)~VZUWp0gqo{VmNt(#T^p8`W>2t6@M&Au3?g^70K zMvQW7ysE)40DSTGNKbY#iprzSi2Szl>4?P#D79Z9AaebR0sBJ-wsfIQtUX5#(!@5< zA`m=_jm$Yd{gBb;xm{qpWYrsyWP`sqDcv0ARo`N= z!bL10Ehg4Bdc2Gc`yAK}h(l+ukG)=4cWEgZ?!UKVq4d4E+OI!~p$kP}J@hXLfy)fI ze`*XB{q`ePjj|x!=3=kgV(3#L`uy{rIwQhk8cvzt0|mje@LraeG?Om+V$pPq$i6AN zRn11j{CyP13LEt}&U(+ykNY%2x(W=wGz$`M?&vq235pmLj&@)HMxWX_4Zz&w_x3}$ zMt1DR{pK9p3G;o+Q*bi2{;p2OC}bG$%%nH+e(yn#e+z7z@XxY2*B5M#w*eefYP?E{ z*&A?9h5x)T${?iCkXMqM^WI#Bk~m~a_`BY70U|ZBrg>f8HbteU${&R4H;c-9`jj}4 zUCarFn18PzI=C`wyx8;p&|Mvdho=^vQYU0QJ6l~uI$mgRR8$_8TI{awDhVxF`vZxF zTV=B+crmlsj%a=q>>YkE)f8is=Ssmm9VT(qd%zc&W~NA1j1-tX7@^jnyB?u{c!-)L z9N0HKjxe&CLdjfuT6gmO>0E9bO$Mm)slSQrH%aQwP)y;Pq-K1OVpL$6S>`KP z2L4!vXhGNmf&s*|1l$w!$C!E5S^kR}^Fm~u+sYv@CuF8Xj5y+H;#t`(EgN;*{fQy) zesP&AZwr^lbYdw-Kl44%o@<}^Otu&J`gy^FX-0+e!gVY?_h+4D-`XzNoQEzq5DD{w z!?Ic5j{T+Vme9)F@63Xfya81wlPK9L%JNyV%`cA)@41dlcw)eh_?y8cNB9w?6)HTw zUYbTy(W{T^%lFbygWeO6r>PEY4%b}3# z6eceMwJXEgr(HCWv|JY;ND*c^(bZZo%BWkFlkccaH=vFxQLBmpeSD@Cj zv6||U%CQ+KDPr1TwXw5ep_b#N{NqP^O^yXRo*B$5H$LB2u{lzA)pvHY)1Yp%IQ|SUADGiGDjz%-vG@$X9}!Uq#X74c z>SCnBA?5>bt`p|3?a1QIHaM5^is;`KE9#ltYh&-!P+<8SrK>eCh}74W$uOp)-0)0vtBlZMlKyTkSwvsE?N=5oR>UVYSDX(anKJ5M7 zyW!jy^O>mgjVY|!q&6k|`s$;fh;9Rap1~z#KvRvM_A=hiQoUZ<^NjqxSN+$N0z3_} z!xs_wc8Sq6)b59sjgp?Wv&5<4{DkC5o}4Ag82&dk$zQLB1LY-!vb^`}O@_HVYpOF{ z+(0-$(e#6JQ9X21!Od1W-{9$=WyQdyr&sG)ACDQPLp)BSvAFG@26S_7LZ|L6cj&H6 zSQ5L=%M_y#Oj1$la!VGmoG0QGE@(hOO|NTJ8T6uI?A5Orj~`)G<^Od$vOVkjur!qL zE2R>X5U2zv`MerJL}ZRgCRANsBwo12A%022Nnv(~1!=el*e8P}OvL=mGyg@rGn#m| zKc*Y4$tXRQnz(D|^5$3dljF~GRC{d~k7VV|eQ+|RUyb;BZ^iP^d(v6v?Yv{fwVV|9 z2lmvw{-JR&gADhZ zG#_ozdiDX-iDz$izvosFB`Juc1`-2A_f5XROPpSQ#UC=%fC7uJaEzUS943-|kY^QY z<@4?-P8Ao*)b4Nlg6Gh9r{OOgnj|r5I!{_ZUkg7WJR0h+BHNrdhjEbOJG%t* z-(F5WQbIZ`juR4|MJa|@#Ev|^(r#H4&Ss!{N2N|wNd3hm@4?~Lt0mho(7cPEWiE{| za47=kywnB`R4f{h7;9Wezx|Be>7X@Kw#lRVJWBvuqLuMvt~!D$E7x*on>ffy*9h!> zD|1*yIy_vY6{tJ!>W}sohkPkcP&gO?_->U0@9m!(pcZ`+V3?k`7OK&EybJT;e5)n_wZMBw~6uFFOl5vBH5)+ z$E+Usz>k7Y&+bG|TADc~n|xK3Djd(jL>lh+t;N*$I)ck3x$i?RcI2axtMB}G`|N~y zqvfEQxZz3M-cf$s7t~?PGy`tn$>Fcbd=&xphKOGJ(SgUI@o0ef)j@#TvGmv_>Fs;! zzi$xynIU-lD~t|P$@mJ~9@;fh=YKIW3I~Su&*x&XkYP~Nn8UHsQ_yEYBE3z-d^INpHYt2 zQbg;`(J$QBN6hR)ay34aIUH=Su3cDbC?1Ya+gKiW)@@*|%Q#cs-=}i3^_1x2-tIqY zg^O>U!kILg62n(l5w>J-5-_a|2f2rK&DH-(KKF3T{OpMIWbFkl?z;&xr(z6o7`_bl z829v)1g3OA*du$}Tv1c$IQus*S>sDJ2^@i*Clxe*OIClHOk<+k*d#prBr9)Rr<)T% zk*%Ne=hiK-nsBnwST#KPuE86Ik0}R8f7DN}Pf>>VBb8wy!wWstRKdIYwmOBXrwru)CtQKt%DV3s*QGg&LY zka=f=7fh|m@ppN3BJH5iW4lenn|D_O1MlWU^+2lQYx=X^U(e7vV`wlxNaE7YB3yQ@ z4Y7Xf`~TZQ<@f?j+BdvTxgoQ2>TVl6F?v%e{eAZ6q4U=`ni@w%bk#i$u%=j6$Xe?7 ziA~+r+TeO(qiyVq%adbq30B1IrF1J&5G)T4h%>e3YyLH=m)NK=WQ#M_D7dxWS&yMo zxp>s!OiU7qQG92#W&1u-9t{BAWBPKiY>FH3@t{a6sHK7QK~cob?R5eH#(qm_)0WSw zcze5vwf=4Q1KF+gz6e8u{SmZ8AICv`f({@8E;lZ}RaW}cgh2houaP;;&?D-?TSKUs zsyDhTptE}eB8w_xBSyb*ZXKB#rNRN_8*?f49Ur-nG~1=qSC>1iBb2oCd2FROQgCKW zu%ysNxU*SjWP_nag%SB*zjrmQJHs&{`LAl{+~-u0uhDV>2lA}JiALNYf(8SIUtTSX zOSSq*JAa)ShJyy@rfV(zQ53c&@c2gt)U62*kOkDS$=`gwy~Tq4apfz>Cxbq=!9afg z?jaYSJ1G0-i2`DT{|qK>M%4;}M*D$ZV`_Xbh)uReYfJ`l^0>O&jg(y+Q_k0KEqAW3 zhOqu^&qCGdPvcbg6Q8A?KE{4AP7|B2<^4Se$q0sjdyc=cc)mTB;5Wd4J+iO0p62LW zs@e+4*-Rtq$)R}br{wI$KWeRAqmDGH~84f9BsPf>Mt_;sw~aD>Iw3E_av1EGl1gG#0)Mgsttr=XGfkFv3ypxI@b#_Q5%V7458%OwU;l zJE&3nW=%<;VtcYsJNT>U={rk5MLD+L8N(Q#I?aR{9EvUHXHblqflhIw3LMk z75eX|aE+I~_)NI2pXpT}{19Grmni<$VCw9A{10QJE^?rjGDhyNax zOiN?*JkNZ?m=EE!+tdoaeC!4$=K7~RJbn07QLuLWTQoszIK?5az;b#%^1rGHrVWsq zK*#w9ZQtI)u)&+g>48_V{n$}u+c^qsnu3P85qNKd?)uZhz^nO?$1Ls3YMTAkg{fM8 z>CQdmENRQ1`UshE>!v)MiJm1HTdVW(ZN`Sa)SwCZp`;K0CriJ?#pmrIpi;|CqZMbz zM4~{)zw)TOwTZ;t{p^nzeHS|_PlOm&fK!3@e4uiLARq_G`A6dLB0YZeob5N}bGA}j za}}T+`qS;-3hVZ#3lKN53bV*GI{dB^(8*{PD_{R*{RSaM`fyxFM4%qjnFHOjbVN#S zCD$TfsEc-@#<3scTqj8a^2pf8C6zp?$-iF#|JgoNvQbh+tN;4jKVC~{$I9Z=03GQ# zI_$qDPi!oSRn9U$Ezo+X)3wW zFjd4EH(FEPzhCrI>1}?jnReaB^n{;vR_m&Qa(_S{3hF-_nw+f1t|!Hn&be3gF>%tK zMQ`7Tv^*w&i~r~Sm`^gD8K~uKGl#pMhsyj#4kzd}HgkSm{4SGQ*x={ysdc>1+r}Zx z27|-t>xh9Rj6i@F!}`;Iwvl2?BppY1ydg#436s8pthp>c7y2`EhI~1EH4wtf>k5tE zMqhcSKLLKGcf6IheD55joqA)hE7>=yA2BSI_Wob{EK{2PZ) z#JF>Dn5-S-TEBqp{hwjYQW|(Al@+qaPk0T^4-QF+iLBs=JbFyU!0)vA{Soh=fozyL7i8lJjwlB73;HzGkM5!0>!x<=l~! zlA@zqe0wpIza2P4a;zNkCDdlxJX1fNsq^J$nJ)Kj9%%+GrV8~Uzm|C;=W}p*;p>=| z#ggA;$3&e%jm3iV-|bH@+6_Vt&5*d8RRV~}^!A>VJVqtw>USunoGQ84#l`i++;CMQ zCd3BnUqh=PayV;o6xfMZ#Y0pd2-W2}e~Bfm`v@g4Lx*M6TK!+KKL1_fh9CQ5B(Gv- z|2()cbX{{f$@$%Yw+lfYsQ#a1I2*?EqkRQVjv1gX9wfrLaGf>f(1GG_0ChKM4x^&uE?PsK<2FtUY?h6y@Bm zP4(^D&idtJXwEUMC;Y-Zo`vd+c`0h zt;H-GnBL^zfS341lnA7b?7K6>!>YhzuP_xp7<*H>ldc=q+nE@K3aw$MNPI8BnJ)GU zMNYQ)>DGvF1nP|UW}8omYTRy-Qc9DM(=|ey7S0564x=NHOnLO($38^yaa83)V%k1) z#cIJG?7drP&7u|h)*9$OSAG-MNPsvGX1LA%o**qEQ>J-s>$|9)h5@x=r{ng_Hc6j_ zqV+|UH4hPxA8|UBw;6qUru4q`oaGbFnrmg`PXF0%;+g29&w@{|6W-_-jUYy*m@7YC93_eE53Uoex9-#KCfgd9$g+&9xH4gdbXkeMsS5n`IgK3x9**^Wcqk|@sT#=MQ79nk6 zVeKK+zAEt6R%29hu{u1-He?i_>F2f^)K{8C`SNEuQ+dv} zi@LG4HNnf%!P~WFncMis$c+@>CyRJai}6b1A{q_^oAdR%g1gRO{Su&Fcve`qtq_&D zH9q+`X36HA$y;k^m&Ff}cQ@&Kk_J)920*d?7;pRYVMF2sIYgSLct&1hI-DSJH_MqO zCQ8Fy?ALEhnM$s;UtzmPp=WcFLTcd>0SWS=%y_{HbzhcM$Cy4fF9c=1U~H)?Lsbk| zTT4!pKiQwEI$@v34;%TSVMOR~Po>cGt}E&XVePv9*`(hOGE`6~^;t+=+uYqTi#PIIw#dYEzett7>ccCBTC z&_wF(J&Sj?O!JkG30vvF7(v|H^84tLPk#l0P3_5om+vTn zj%J}0l4~~hTj|RMETEP9w85Z-kGA2Bcjp*?Z))&&BAHWiUGUho&uoGC=30Gv;f(Kf zYPaKPsl0bP%U%E}QRy8xqy`VE#C&WvwO;2V3RNon1!I4~FgQia{$ie|zT|P9OO1W< zoQb`;t-blnQso9I#$xB17V8Vh7}my}&q~|oI#Z&K5z!w7u~utM$H-`_U!bQWV|i;&?De-d(f%oI^oQ zapQzZH0^?2uu+XtS)u=!K4vb)!r`uF?RTK*LloUex?%>l9SKbQ)qDLUdp!8T{&4-q zolHrxjWE3Rmnot@i8%aBKfRY@XHmqKJ(Ef*2^X6~F zs`(vzW4)1=V|TEAZ*8JN78peJkPQz4RP3H!5f$nzQ)@AqEaM`ENORnS2?zC2!jnl! zlXyp(h70rBA#FR9Z3x5R$>x1^t|lq@xE*{R0bhc*#vUO(PAy<-0-ykgF^SUbyuuYuDrJARAE%RLtg!w6@3%Wkb&XJ zaaZStwy`@6o4zle4})O7R0%tSQbN<~w2~5srFIC-cTefuT0Sz2GwZIOU9N-skagU8 zR~}lcoWr0_=_ha64R^d~PR<3tBO`RjG^M&!-HD;TELbpNi7{#> zbadQU7Gr?6utAdGfv97#uGw7amrcli&_TB-+rC|=sY6OjW~ZmOK*wS2Kie1H{yc4B zOgny|>|)^C)e5ZD^g0o;eskTM-aYIsSZJtZDszGveUif2<=4hXMDqI0ZjS|Pu0`*M zy-+5dEP?@Q44BWk$8A(fuAv-lh`}#lqYrWJUXQI`0^%FZYGR077Wg=r3Y|&wlITe% zn)({4urYdMg34@hRf4e5`ut^FkJl5lhHCt(_!o9w|`NuG}tFvkOOOtiqXPI7BJ)VAE8jt6DV1_u&5FA+p#f0#@fCnZvdFLBDq1vA-#Xu} zg;KNJfEd^@U@yVbsIoIXtcWm0TlFQYGZUPuCTVA(v8h=&iIzqPHE85{0`IkU6Pm_YbX6I^H>3{Y*h*CeD$g>Zo_NnBPv-NRz_Sl^q? z7DC+@7(40doaW@Bb7wwKUDUdTc!e}BK=&u+Cx=s@o#-lmVMA*1`JxmNhan`u@wLT$ z=V<%vhBjkGw|-K{!_`h!+w}rAR?hJBDFG>75;0ye{qpEtlQ`|+YzuJ zTn}>Su2~okeOPNlzYT1>)!(&yFB&DK8zm*B zLj)8gq(Qp7anlV8ML9gIb6HrP;TZ)+}!=P4U zvI0w|Clm;nm@|*c7#myg!btBm94%w5@MkcSRLcwY+p2eCxEF+h<~%n`DweaR zEI?^`Pknh3`M13-CiH;VHaO0hF!3${7M{)EqMX7h)0Z}JZsc8Jv_HM=>&>N>{2kY_kC9$gf z!r?`_cY$F1v*+|D?ek1)XxBIiBA^}y3tJav8}??ikpiw2+c@^`sF zeFz%1!iD<(AbAN#HYPjuHdjNC%>BlJ>o)J&Zgeewi3l0__TJ)4*eq2hj$V|uUUIF& z%+lWpjQ+$HNOZL`vZ=fjju}w;w zAC}(@iB6^*4%V&vVspOFPf3_mxXE;FD(>#IizRf9nQ!G8;=(@JIscN1E#VcIn?DzV0 zOm~rZ#D)9}9Mgg#oEmH00;#c=I+>4suNLj@Ek7`&l!++k=jK=F^Qp4NcXcvVv5T0h zB(e~q7oH-k>Q0Bc~W1+QkIkE-NEHc;YeCC{2_r31_x*xS= zZMF=m4lb^QRZ2bwl3L}im$6U)w)$Qm%Z;!KMmnkj$NWo3+;0|H7pE}1=p%u5Apb6J zsajsMmSC~zQBh7r7jspV(eFSXwUbF%J55HQ{UU4rB8v);KF@hs!|qA!)|!b8a6!-! zfI@|`I5JmgL74|-^eHcFfaxFdbta^z;DH?Vc_J2?N*~D!*e6B9r#KPDi+-lt6OhZ% z*Tm2HI(qW+MXahFPbySsz@vn=s{k=aIa~l0$ud7F0&Ov$MW;4qU1>R&1j>WSe&|o8 zV8wW_%ESTysMDPH=_-GD27J~Ej%cgyFNhPjBnWlw+cuyNalLy&aCN1(xex%7f(lc; zuj^q^0+R`Fx5_r(JCjK?w4CoNkbvN&*JUk5ZRJtS@FO!okz`AB8#ylm*ot5Q9!JP~!Co&Jsw)it@0TFf{%a8SXHK$h?g$DFY`-~68GnVnKjp|V_X|7f!2u2Zt_1iKT@BrCbqvfu#t~VCOV7N? zhjoh)jpK^|IX`z_AwE>V5N5}w9Ih$W^_wS%fzeTsWAAY-_00k2>K3UQWWRjb(Dkmb zNK46~rgHf91I6YJ15^I~1?El@wErjm~&ihV?I~rr<^+53Rm;Hh=olWiB|`t|l0(9{!4Z-stss@L6hc{^kFW~bdAjUDe+hd{TbIc0p6~bM0sZH zf?^G5a`angq!YKD{7AE$=0@@QnLU`YSM`foam?|6#UO|0S#%Y|21H@duCLIX^ z5i|CK4$|O~MVap3g8O3-4B+&rw1}H2As|w~{ei`xC)9fC698ly97`xEZHwMd<-r1> z`OXw^Tg%88;dkWJ`qq18n3F%OizpwW^>2l69>{D*L!i!X zK}C2%^LNh@4T@Du3#g(a9tZZXPEIs$ZrR=)2|Y%OSP{B+VI-#Nk@`OPVFMbeGSR*? zU0l1N)q>J^Tj)TDvVN=k$scH^@g$mY`KwsOhYEsXc zIEz|r);;|#jDQce?Yr6ut!^(I|AeJS;%bgD;mp=P?EWGa>Bim>0}EjyYp4ry1fhI< zuhy5x1j|yU(11$q?>0Grkn=kNfb!(;bD(>Sdre?_hVROKan9zn%P3-sJ@s;JGO8q8 zDnFiGS0UWHW#?uhXdP$1zY+Tv3lc!4bzrN1H}%rpD;ewQ{u;MINieb>KX0Yp1FY@1 zGWI4u?f_|)*uXIc#G{zRGQJ(x(53tNF+IGB^Ke~#=oyCr)hYKsq5y`&bmwPkkSL%K z5(O|S$o1)Grde9kMA1D$?x{S0-BvRtjz!1DsDaJ6#@Z5UtWfo#-1)P9VXJ8z5_U)V z43vNS{AM0afS<$cZnC52f-@>CGPBwBrc!jkS?92-mqXx?qRiL#Y_L0kxx&C!bNwZT z#U2^}HwvON`wJr&;WnR$lrQ_f55qy zy7;nQgMlFJ5Z-9qcyLYpUasLjbL@q`l2!o0Hz;YP`8Z|r{*Hsw?SIYxga0o9fKoJ0 zlK1~l0f6&|dI(*D048Ls5xYh{fs8d8KA3D0naO+U6KI3|Mg`>ZeEDjkY>)uH$m~P- ztI%8q?@z_oRJJ=Q7+&&6caJ3W5@+QEbus<`xZI-oI07xmrYq%s*ype_MH<}jqOPa~ zev`|dBI5><5_<$V3BI5jn+MG3EjP_hA1fv|n~-52Nb;A3yF-9QYkSE796%>@5&z!m*K867-Z zoOh>3X+<;4;i0A6-kT9H+WT|NDIjJun7d|}Az59AC)2}VPA!ud{<$;m$qI?z6$M4+ zx0a2iD<3?g^Ue7*pMIa^^#gIb4m#6UR(ByQmsxFlKo(f>us6#yQdK|u5_t>>+!8h) z9js+3+UoMhMRPlD?`Iag(0^6=^XH_gG2;AHn6I-7-UX@SMATEqcr43*WqU3S5k8mB z(1?J(#nmg@p{hO^Wy6EtcFrZkD|l3`yP&7yq_9&ikC(doeCJjP0@bh8dDf~$@8I|0 zKRny6i0|_5a&1}a6x+H4s1^?mnP`2a$4}u?uK~{oZlRY<&p4mWcwB5jZI#a^e@K0i z#>oP*(zqvUXtGt>w}n3y<2GD4+eGwVerZb{<77|%DZa&Kzoal;B9(SZ%z2^a06b6n zZ(iK9RTnk*XBnWo_u)mLwHV$9wBMo&o&DkuY++%R4eIC{lI1Mc6uYH|ODe(H*;4eT z$Iod1>|Lb@YPCY?FUe+J6Vyl7wU2hf8X^UxRUI$5{qBQ5-K4nNOX+HKHrLbtix^Mb z7e$T(mxSBE^C@Vq9IP)`&9Af|oEZypsfE29QW1TjX4j4j2WF;(Qgld}%IQKb9YraA zhPbAtrA7tr@ogPe|3KJf_CCEZr-@o)>QH7wF*_^zH&SF&JKWORg5)xwN8YK zj*fLX_;{A;^F1?Q|H%clQg1A(G&#yp7E`68w}Py0zu+|)t2I~r?u=HI?K=7y91mUr z#xt{Q_jiotCbY~~8X?qLUc!jq{pBac$ORb`*Xq$vV4Fz=ZT)rB37;1YbMTpuTot;U zj6j^%#xuQEH?r9ozdN6CY&*Cv`JYIeaeWH&a{8RNrn}xXhe|>71O=e>@nNms+_v`f z@_G!^m8J^Ytj~5kNT-ldvZwF|+kxtX77tL*mLdHgjc!v%bkSLMGE>51(yMWWv-CSV zHnfO()BV2=!-^Poc8{7}tp&jK!rKfbPA%+VBX1qds4wZei%|@r^#^dJBSS>J45bC$ z6~vN;G`%1bv{*YvTbbZ|Ycvm~;Oi|{?pIg&pbkm_-Np#7h5DW+IG z-CNy&K#Q5nONN-Iz*9+f^6`qhS;kmSLoDsK4wRyuRz2=4`%hqQ0tnmB32b6RdSf5s*v!`{itlh(t=3gsAg z^e!^?#GSYF94~X7?wZ_OIr@g_<%IA4lJ*g20Z@JwHGup?06Kt0fA3|D6bQLZcn)jg zd%I_wjQGjpb~;B>0KvwExcPCY1}2JV{S3iR06h|H8;v4IDBiJ&G`<`%VT; z<~vI8Ghy(NuX`Usj1JlmiSttcQ0MDe`8#v@R+9+@_@Zo%)c%VKC14L@73m`%;EQLb zWTaVRr)2wxTSkNmfL4HbJ@Y;m`@q?^1Ja$f&0&nZm-*6APsfUH$gkDeDXD%rBFs2r z&;LtW^clh2Sl192~u(F|o?Fygn^$3ufpestJtWX0>Y!SMKK;9pTUd9PiF! zp(^tE-XHG;XXWzj)Ksjer*~epH_GSt%EHu3P>H4fKs>Q;wFBKPMMTua75uw(QV(13 z%GZCgv>!;?AA~Y@mQ>?7X&p~~Q`LNNm^bxli27m5vomYBKWHs26&E-B3sS&iOQsuN zQmE0C)FwpiFJcL%Qjm{3mCx3wmIb@nSubs#en0LR3En6@Ba}X?s@B;1(qi|3ie=wJk1k(qI1rgqP3gWe_AEulxgq zR~G8IZ9+h}(Xavpgirnp2yf}kzfUtNQAaN?VpI%exCCD&l(h^}5Z&N>Ff8Ygg{tN= zkQpB?l_+ePUGPJmC}Ys4j8@MQ9pRk5mGRFWCu~t076v(XlSmZ&lz3mihK>Cp@lqxi zu(e*dPMHw9*>m7%@~~~2wE{&qY|9nXklO8juG>ZmwE2u+qTNb1Cy-HYTjZyHdo}HF zKk3HXcm~c1L2^3%#`k&*Q0n)`VL`$RkR2n_K_(M^`#akqc0b*KC1zC<71Iy&|Gnwu zLDTYklE6E1=Rlyvhf}7vixy#rcj5ouvI5GdTC0x~<=LgPicgit%H}4Pi?^ICbp^^) zysWj0sU;Eh-KC3`{axU*17Z85ZO2jN99_&&pams)>IYTBI|>YFhZ~*4%`;;Czx{Yt!@>UpGTeY+ zlt&x*eXldMxyN}<)n%tHGvsHvIHu7rM%rHK5;jmzjP9M3K;rwz63R@PMDI>N8?Wh7 zL&PJC(P}zG3u`>1Xu_vC@u#ffE(XQ(N+KL)>F0i^aJeU#kIF8hi_b(4NkFV@5w@iw zyE^7m9)XVWLTlUK|4`msP%Zd6q+}hOapE$6 z+2T@*t;9m_$3HdmS2P-|W&K^b*e!7O0TP6W8hXEs88Hv)Yu?{I1`4W6{E^Jjzh)pm zb?rK3tEw`#P?Po{u8Q*jkYxSx8qHQ3b+z)l2y}2|_%u@~msJst1oes$aZl)MqHD9{ zG-5>k7SnCmCY9O30Mm_1;`)jKOdYV*?Z?6lIG0iyAXP0RW1t1v?zO1*hV7f+&m1xM z?NDMiq19PNWZvN^F;&0)0yC++b_$Zq`*|}4$YuHDTJ-KpgpeE@@{ZV;D3&u8>g=o} zT$i;}UKO5t?uq%7?~~3>s*c~%>_Y@L4?JllSVe39IfO^|yhwtCeg($sGGt?w#9Olg zOA>%I`t+{G=bcHFG&(o#yf2?=SDUHT5fd#r$ zqtv-^cy3(B;DJb4AAv8ye@}XE>-I>?pnX%XagrlH@Wd<5*~GB-gl@uiSt!9zQ#f~( z*uj9hgG*5l>&N&L-@R)W=N*k~5<%*xpW?VTud_b(tGz|<6Df)-GmVO(cx})s32jsy z6of;R-^NGuS|H-v`ETSM^BOjaq>q(Y;+nvZr<21sd*IYiC#FcHXf*P_pN zviZR6>9AAL=Wu5kB&evL^yh&0VQ0s5VJ=omNN;V%F05BO-^VA$V)+aFdkn{71=~A< z>2s7Sw)(B#vP_Ke4!aWSbv-4TbTqGW{M`G1*Xc=n1P>EJR&d5d)HEX#Q2qO;5rx(8Z-{W}&hbTzL)@K6b9qofo z;1>jO7TD|qIZkx@UJZXi)#jH;+d)(aI+C zEVQ1A90<++jjT&)ph>I4d@phj7fPZ4O@QQy`%;Lveh$0dVF8xVbqY7fo7mMe`Hv(6 z;-1$~ApQG8dg0H&XMnoi+y931Rx^J=$guuhr@xdela=Q@g-ezmE)2gML|vESjMmIN=7@mg@)CFLu@C zf=4h!{RStID)tnF)Vu$f^8GiO2&%23LU_!JbGK60S`E@Fj^uyyh>{7v?SrN0X`coB z-K?S^@3Nnx_j(A`EZe8|dKxdGz(+|aDenJzZg#~FLzOB2iv2Ag?td`K)lAhC6r@G) zyA?;D=fgX*?}A`8%qZ!MEf3L_b8 z0_emn|Gw>*-=()c1KK2Y`_Wm~U^HR)@-&igct7!fc+9?h*L)OT!rWe}hbW?2=rSX; zNpc$ZDYZ1FggkO$s#Gu1U7rkHyZ{C6*IZt(7Gj4h>u}6fc^h5@^*>|vDD(}(W7W%* zO-lYECxUhLZ3_SOpE@>-R~kfHN8b=F-bxQr&w!RVXWc|ADr5#Q-_;u_ivgX)%)ywLTxVmvu8z>l&j*a#7r1#r|{e)db>Z@B<`%ig|wrfP(GMvfyV?uY6-20HCz{HI9nqtz3{_+1JMo zkdgn@rBk50I-5OrV5vU#l*Dxgz@oN(D`Ob%vkl-0X(b@i{;!X7|kv4q0})jijOJbie&H`QQ7>*e3N~u zkMR=~CPc%-ouAM?pj7F+Gjh1oHGt#p#lkBnR<>4`X;l;)i!!O88Bc|4dZLIEs zgo;rOGAs334G~NhzCmu^)rkp$V-5{gu|2GGKkANv;-xV2M2?B=xI4^epYbIyvttsI z=*)DK%8ki2MK~;cQ*v3JRju~jcxiuH=zdh38(=!g14EQ{JbaGmjlB#_4NZ*t$HEysLCPPWq z-lM#`;L|@THvXJV3~2H0QpjL;bYF+El0#pCXU`P!FfXc!tumv!jy^6D|rZkH%Vg*QR7PDMvb2|p6e8SeMid1p@{YhG~73r z-)yd;K2ndCNLZig*&pmGyimp{w({Q=OGF%F!9|v{rOnogryRYbQ z4&|#3E1!M%m`MO&K2=KB^qgAO(Z*k1-i5w*d`bWP-KM+47Aew933{4X85b`-gsfWE1U4pHKBme2%4F~wt>QI)r$dHuaYPK)p3etYp3 zlu&JheQ^eB0;rDbEmVN)r|J4wIpvMIy_h0aL}NaR{agxqzy|{xdHKI%R+F<~+Ses- z%5zCLW8TWR5InlLtgL#^tXmFz3ec-3N`I-g(4?9v#%;^1()jplr{Wh_TA+i1MDil0 zyDK3g5@;IA(=NWHNRD}?Nz{@W{l&dTkoa-`9y9sBp8uAnY1m-Dg39*-E_}7mW?=j(#o9+9~j@SLz4bjKjN70PX)vf{kwb3k5QhS?sPD}!^9b|A9E zHQ~%o7x4I;pGQjeIKP|d;C_iY7?j6vM6XF4{m-pq zS!82PzPxs4RCvUGlM?&dmv;u@&W1^W6EP+fRAKs0GI??7@nd{5}?< zpqT6K@o23NR%*SEKT=tM~$4s*rs^hQCf;3EM97Q zQeUcIPFrx5M)5b%ra#b2*rUW;@^oJ+B)Bs1UiJBES}jg;TxZzl&-%l{Lf@cXz!%9i zKb|5j-TADaJ6J4ux8PE5La$c^QfqG|Oy$bDB}>%nA|n-Ffvyg2%swtIv5F#*&5bX8 z?+Knz5tx{pACB~$F*+Fl(%l#-wnKb-0 zbH8-N@gZjg@fXv(IwjYeCJV>;KOTDX+66NOOH(v&2jiZVkVMdOH-yh7Qq)qHc>gXQ z=)}vE2)&gYcd`0y=&itW#&4Ot6N(}AY_)`wAe;!xVLAg z-G>6?zRMoXRf!HVD_^*+uOsg9f4($JJv&^!&5HxX1U}q3`_*1t$_EYg?MQYgmhhKu z^NLQLD?g;#?T@A`Z5>2Ri9fX-{_6k>l&~)y0&laYh!FS1dslup$8)s6B6<+Je&tT+ zgPwFByWZxGNO2-K%e$WFtnWKoYE(Dha5FgGX?Uoys|gABEbesDa6^F6G}|&YehP13;6zb(7N# zH%heea;a*unJ}*Bwf9J0ks)>c%UT1-ez3v}L|DWPU<5U68I+k;S)qoq^n*n)NLiOAwBIYi*P_T3RHD zaW=#ben#F0>;!3ec=(cT&ETdVR8up5Euy@ENbXQm?Q$Z^)RpMQxhDCIe{XO73C@(r z)-zv^sp%Oog+SFK#s{c_jwdHw%-zlp_EoH#5#k_8jVhh@tOu_H7F(}~&}1Teg>lOb zMzEik8Zy?@4d1SIbz5Zo9b;bK(K-iDSsKfz9|_@SAv?Mk|MhUVSmF-HrMcU(DprMRKGpzH%~&`Xv9=fv`> zJ;b>@H}3<}^VRvh<^+N=JG*C@l@1(~BFxF0BIJ+?X$(p+r zU2)Yd5T!Y#**}UI<6qOwyE7qohA!-;iwd~;zk;dN`i~YgKf!aKxL>yRFY;?_n=SP& z`L+HggChNQ%P?ZGam6k=>KyD>%dy3s%RD?k-jIg_Ku_iI*U!xGDXqOF;d9r;04bIm zzmw>hv0(nvjVJh*PN%uV@q4A$=hiq^AT*}MSMAg<-c)x-?N|GZy-HS4I`X_q=Z41> z49^%_KlMIaQqg|93k}?Ks$Fk)ha!QXhRa+<5#{|^aI!Dkd9r&FV zUh)aRC6^yC5|sfaU7o;{*-s4W)sw0@kNYblEwx9>%Wp)vxVQ7)i%a+w}9=D(*C6SR+hB-5-edf4YEBJBo8XP)s!+eGlKZoC5O{&n5*#E+4 z#)b6pHY3exhE5Zmj|u!Ym-}fHd2x?$hul;J+pk|Ukm%(Rq@k3o)a{c zZ;RD=3_y&*)e{>)yWUr>x_gE{lQ!6W;rK=Ym~K4SoeB3C8||vj$5m8NO265utCeRS zN#gVD&i#3nq0GxmV*k=-nG@bErTq zb_H9N@HOqh^bcsFo5B>9xAT_k&Y@x@U;N!OQh4jz)K%v-Mc$FYG;yR$|~e zVl;oa!Nur9X{Dos-QI-ARK`~H$2ZJO$US2ETjk$!Rgld-F(9>fW~-JhgGjG;OR9^q zM@D}ceO_2V1*isEuB(-Yi6}<=`UIYl95h@C@$gF`{29`^U)*w6o2z?Hm*bPvPj{qLRY^a349G~e0o zS^YDi&5o%Xf24bl3sShR+#7$Xl(FJ2!u&zqhs&8%(h9MLMxivZ8diP|NwB>D4f%fK z+ZWC|OCj}Yj#})B1<&V90$a`LWsv=e&d3}NfJ+TGwKH25@r!`yObOFsm0s}ddgT~# z4nuG?>-AUyOS{@vzm9gfk;w^)-tG-bUz_&?3j@$ISuD+gMGX&WP_8)#ZNh&CE0p77 z@-#nSZ_h=VOsC%r(};miXP5VD>z3X0Juhxt25woZC-JuD{BJiGi8OFaqHW;?zz^pm zR53-Q_QLFib&eSta^i}|NQJE^`YqSSBOg!V?b$E+{7%Quf~x&x<&@ZdC9FrZ9uFv+ z9DJl$+`*SfVXJ=zxdhGqkV?^68&*A7^iiq1$SVCoe6)lwAjANAXnh*9B0@FqA?;UK zqp?}KSbOhpB$j7bqPik;K_lKI2z;d)UF#~r+w)eU7A>9o+i0fV%*c?x`YLQi2+sV` zgSN$(Ofy?WvrKIZA@d>v8wW66iCmdGPZJR29d@J3i+S?+%74n;E~Z3WQ}MxU!WFo5 znx&Z9*4R*>&7TGD|E`757F77V7dVQyDQ7gtrzCLO=p#z;+fM>6=%Q67(vX3OovD|X z7ZwvMYgm4XFHX?{(pot+?#2A>9KN{+e@c9Y`UZPZLEJPLvdObvfE*q zvv(HGUErFXf6qC`!~WJ|*+#bkZy!8^!o6iGk|!=_>nqedRvU@E!5U)I^JQBzxacg$7KR@|21pIbuAI!ot`Wk_) zUbe~lhx<_l0&RyK5yWkEGK%jRu%%6T8Z+C3CBw;|jK!Dw#+T(5#K49U;13zHN%omCbS5}yDS!(gY>B)Zp zYYm~X?D}D%yAVD?;U%dXIaRv-dxyAa+!u9UkN}(vY$8k1d?P zD6i6epIK5l-@~ZOV6N~eAZYp1>N`LK&$@IAe%&4t1n;BpJi2zBY`(Ge%1ix3@))zI z^phZO;!`BfZ`n9enXRE=?;wlY8pMhgI5#;Wz(eG);8)!AJ|0>cez42j3tm4LV)))R zQn)$Y`O$BdL$7&cuB1E6$hSmf#;D=gxcif0Q4zUSRH^2ku)iyel=&t^8D)w+`7M4Y zM7`Ck63P#e;i*4N&e)gZZj4Z6KmJX5#g2*6I0?Rgru1@#xujv5vTynwOm!0 znH^=f+e{A%3RP!~l{KeRU6+w#PdFzRgAJc9@A*=gQ}gE^S0B`=@)QVKfyTw-Ijat-{ zrTbm2qus%*kAcaEwgl9)_yh_+-3AIip(EP#Z$Mn!M7Fpms-P2&Zd7E1yzOGAT}Qu- ztxq`7x8vEoSUr!_Rs8~5;4Af?jsmHL+p6Mi^SI1!6{=dWSI2OVtRIY7F2dn_6@fAj z@8n4{MO&oL_+AQdGjTov7E#eg9O4N&gBdtmY5)>C>kdw!}-+(;|`sAh; zsYEu`1H~E-V6=Q<`L$FRgMRaw=N@ecUCzo}?T3G&v+QMVQS_nyWLa}{eS3X1=%rbY zdskz2kPLkY=;?1dJ1_pS=EHQIhF_yZ(Y0egv0TC$D)RMqazsd^f&Vp~_3Y=5faAvf z3Dm=EFj=fr*&~zD?p(93_S)}?$iPVEUEhHZ1xQY8)V#$7I6BomxD5FI1WhbzJ%F&k ztvHX1b~Gf}ql08RH9d-vA&Us;0if_TV+8v~j2{{nuvI>qhl#90*fvg!CvbS9bd|F) zxclgq>8#2pC9NeF`?_;Dbudx3Azp7aV}JFBSdAuAHQpmLD~?2@_UkTWnVUh96#q7m z01#@uNj0Hh#|obsn61xZAN)dZMGPNaqWt2#VLbWR#+(lWuw?q&jHT06r>&#k_KxO| z$;H%7*@K7cc{6wIJJChxs+1S;z7(jw(9HZKR#`@2R{)EA` zRV4^6wy95kXWFP`TG=YhADQJxX4^mwEgCQ1a?+*T+{WYJS~S;XH`TDnA7L%5PW(z! z@%yFnj*Gv8=8>)=v@6z?ZC~t;9=ph1mfvmYrxgo{XyRT`%;cKvxg_peo>729DOg!4 zet8en1N&MtIW8xq8DTn2?zZl`gJ(K$`z=JtUPZ};{>x~X1_K>yx#YnX)DGQxl)9u?Ot$=nfwyXFtw)#342_vdR1;v5FpfZ)EE zh>Isq$B$U6vQ$2o1t?lM&R~Pb2}e@$T3Cb#MEGaCVt^bM{thCdG8>cmm9?{Xg+1F` zLh?0s$FXOA>w#Y3dN6v07xb8MVk9wK)kN^Kb^?-#qEG`+ zpqZ{Xpj~fTtj-h_A^%tC!+dWBbT}WHzdPIZfz6fLj` z+a84loAEafQ>V1}Q`%eE(@0h!Bb5b!kR_jfX!M31hZ&zn#^ zcPpw&*D(M6@R#uYuwlbo9%SyKRC;ml%CUs&c#`q(^|KK)~WOeAT4wr*2nJOcDt17735#s^Tpp&mZmkk{IV4^9R*T)jX6 zQqTJY_X3}_Zo)^{-bxfME6nN=igQER8GI#;K3tBX6#i3>$IP{^gvf`5Kf}Lv6CcZkRm(ex2a#o5QGo>a zYj);PitJMW8ZUTBK*4W)`kit^5Yci|Dj&iGFTbz0N=#^!CZG{>a@&p5fco<=yd$F| zhb%B=wCd0UuEZa>8jO4z^;rmxulU>`o#@XT(leTu7vtF)6Y0B>ZPGmwBMYYnZJ}Li6I8nH{7qI}rcles zd_}U$vCcQb7d3S}H>ZCYfL`3W_~Yy^QCd5Hg10 z%yF>T>rB(eX=IYecsN8D_Kgjk+!7Qf%<`X=N2C9`Kq6ow1UBGNgL zzA@7(LsRlbwUlemGO)hVZy}|_^_3wc3g>bD1<5UHC^zbbL@fOUu`bVx7K|p+&F{ZH zDJH*!;^xJN5H#nY7?~K{3`qJ>Ws?rS;2e0dc7tcshJEX~y~IirRcdcl>$#tFC0|z} zt+FAPy)>Z8nhdq`{cyEsRYs(=rJ|SHsNdk5X_5TwPNX;kG;BG}g5hPpFv?kMefYb) zuI=r0mr*KZb!&ufu|@(wG8@F+>lzotOz_#O=V9NU+a5Rgk8Rv#k30)_k*x~NOFPJf zbd~l7I>AAnw)@Mm?NF{xy+V#*wDbzM+I8=DjTB*p!OaMyx?R~|kqkaRxP&4OM!Wl0 zZr1TMk>JX6Rf+8OwyL4=Bb5CsG%8`IiMg>egiOWwA`)PHGD}{Zv+X^hBKmwb;g)Ed zCJE81#NYf;>?vlFK=6y$j!Bf`f)_LQ3!5SLU(<28!CL!%Ye+Rs1Ki%y!<$g9HV}`4 z*ShgmLOxgSxc7yFw!t57l*yGnGSs^ldGavdg8A8)-~agFU%O{(!s3~kTwIur1H~$fxBb-FT~3TF zjqzB;qN^+E7}U4~=tf;rF8>5;xVJL#eHmbwO9*RD-o5Rqw#Q0Jh@ zyY(2py14CGDONz3L<~0A4mmvIzCMg_P^TP9)AMcOg705~Rg@LNoJT8r-%18>>}`c= z(uuFEjSl1UG*Yf+`N@<el&|Ozs=Qa7)p0ku6)f zFPTmg*9?q+=nfi}NjEGQ{TKX#W8jK#vZStL7G~ssGpAL_%?A=ecz8($4|~VP7*Ui= z%s;7cVdX@l{=PmNhIf_`Hgu2ZxP@^5&sRKJkI|YpE+ja$Y8*7+hm6_0w&8rt32Xjy zzUJpO%f$ec{_^aogO5-dQWK~DaO^4{1It*Ae-4b+Z!A4PtKzwXLDC5)5pnE48FFYv zSf{|u^45x9F+M65{Rk7sqaB~|xK6PlL~ojM#D9EwLEAR?BCFJejWj|_luYc0i?f{f z>!py^5D2vwRH{{Fj}ASaSA9RmbB&vcD6xaexVv0j_!+M}?EdsG=p`yTK&D`^q;fec z4bcAg!bIOe@VFCA3c=}$C?CHn=}&~|XkZ$5Wb8hEST)L>eR)=`rC>`jRYRi;Wu;r+ zUt;hS*X`&p`k8CNV(YCtDW~bH+voUJf}~XE9%9(yT*t0k4y_YRmexc_fP1lu%Nt)y z>Y>S$={hy-)!iXIj&S)Ubr4Tia7{;#K>VQ>BVa*>7B&0jxAaGi;I@sOX= zzCa4-uj@>(kU)8+okGZon;ZJ1(%WwR11eGu#^?~`vA}Kuh-rxwU;-|kiuZ5hng@SA zp_ZPT+xkO`rntEt(rl&JpA$^u=QBWPMLIgsYC6#)Cov{nd*gbcD%$3Bp|f$W*yPc_ zKXD*ZJQYo-MJw)u@-T#Uc;u4wy4^}=Kf~y?f$~(Ts8Q<`pUbi(;CU$Y8(K3VK{ARo zr#{?tc7m5O6AhI^7i@&eEdL}Q-#cD@CWqT(h%#d|(}J58HXod?t|iUr10kZZ-#iGD z`3511e|Gy$2#e$IAdqzy4on6IY-s95r z^^(j`b-@O-t7J<45}l_~SKhh#s&*&hbe?bf=qN3hM+))eBr2n&&V6Q8ynYZiQ!@-5 zd55VC@9tNo`l=^UUaL9l>NZ^-hL&{r>+`toRv7*IUbioHb$T^dPMv}j@RsiVo#q&A z*w@cD;d|hUkhS*5gGu1U>+x#(;wv;b+x}Tsy^M5G_tRB^BjZG&eR|-_idgW%T=6W~ z)#YpN&H*|r1xb@9l~C~oDhJTgW>S$8(?Tz5Fctv*ReCdOFOb3AKZfMQnb7bGd0VOv zIvQuX=Qa_?oX9s?@WLWj5=v(%6TjVF8ytqYVR&y;Q@#HAVbN<63Y3t8OE%{mp26vc zwhqRoczGD^d}@&(b=ynl+o~->^jWPs8|{%C>9b;}Ap87GpY(L)c;V&+fz7@g*hTnI zzY$s9>ft4mxi7{>s@wqmG{TvD0E3F8p62#Y!;hmoHclguj53k0P+0^>dN}DVs-7yy zw^$YXcz*>|E(6-5q=V57Uh-);K!HBxm#RecFOd9<@8m)YCWa7#du?ALL7_VIG@O?< z^W>Q)J*>xMJ;Hn~7V*ivP^28(SSQ|W+&zo^GM|L{Q3K_TvPxFMvg@L;fDLpmr>_o*hph`E}BPJzX2>aCo9~49sIeH9mOH# z$e*GIBf!LOGn77j0+ZW=4qit&)4)0MCxcIb&YEIh)RJ>iz1V-s)lNouI@a&ydp zOb*8ir4Q5eiG8n&P%{J;jp$K+jixP~d>p}$clkBV#XDq_e{@k!_;U82H~36FN)=rF z!*?qbhaT|6Zwu5qm~MExKQ12TG8I>}HPiZC7+01+A>vUbkvh1q?zHr?^?4DI7-*qv zs7@k2lJ`!~N##>OXwGLW%`d#2(`)*vZ_zv3muHiWaz72sREr+CdLSc#d!v0;ob$=N zehs#qP{ZnXikVzy4p5Dbe<58v!7NU}R#$pyZV9{c^cXw~VR)xrT>-5U>t;8JCD*;_ zuYNd>cdkL%GjzJ2P_*WZ`;qOnz5Xclqte}h`&;w*&PqQS?CrFagi4ExK9Y3iuaq+` znacJJsC?5$dpc_tM( zw2|@zYH`KFB*1O=STH+aI7Oa49Eu*#*m!r^#fK2j2_8drG?5yc8k4n}Q|xy)hGUau zNiol&2~g+nFT5D-!ed%9B);QtP!1oW1Y8P&iL4Wp=Ef`CtQIk!@kb>AAd-5$3*K64 zJI&1UaU&_V5tmd~sNtOTZ4F!E`0oNJ>n86Jan0K7YIJlq`7)0o8D>u(`j93Hd|aW+ zyp;-7z$rBt%Q2J@7d1!tzWSMCmO;Bh7Ni;<>X+xG&z{4ZTRhkjXzw5CLG@erNuPugzXI!QIq zJtQ7rSqn~f%t;_gr7+U*e1HmGL|s_EH&+E-lo%H~-zFse*Sci~;JtEaUxm&Jw~1XBahG6U+j9dX%(H5+N}LOIr22Mr@mEg|(G!+^k*hRe_9 z8goV3bkxGR1GFXiMosJgqq3`viYn^bcL+s5L{ds5g`rbgIvp6gLqbXr=^j8@KpH{1 zyFqD`5|BWI_u;paAH*dzQxuP7v5N!O3TV15{(Q$t zK>4G_3S~kn1!Gs?)-`_UX&Oly{pg%Y=p7mhU28nR`;5h72sWnY)sc|YDU1LkSA@M! zC4n5>GgTR>YdpllUYB}e-HPSfckQGz)PTRN7LNVS7+g{jk0=#AK1Ci*e4WvkmAKDg zLXHed%jQY$7T}Qs>>TK=>k=-UP^htm5$bLhF%~@x*DGELjLs;O7EW3Vs{=r5g5Aj$ zq1ozqY(}tMks^wy({1~0XE%B1L^f-g4cFYUM-QO`8gD!r@D0=pK5Klew6W^5Qfi5g zuOD&I&a9SgRdbwAnpXjm#!2VF%B-ZFCc|9W&Kh+{k>%Cd+bbXY63U%Xo}dW&CagQ7 zP$1SEQ2JKY%L+knpk$FCdZyU028SK>aZI9^N2R7`S9({CMh-E7HELKb1=ZUeX4CcB zZnymcrP?DB8|^`V9-3P&8dqQ5e>A=5YZw4=d@yZ_e#=$1lxkUR38{|&$c9J;pY6a7 zr#{+h*?IqlXbcg^kzDnwRDB&&Cp?5kNVtMd!#-|XCD~yjaXBAoj(xjw`Vb!H*5=Nm z%X4Zw{#Es!OrCYG%TqEi$4T zdQm%Hz4GDIdOCGPo{r0FvGsnl0-OFJJ|;SurqaOK9cJbErjw)mi8R)4r-+lL$eQKv zokYV+?5Iq{Wfggh$|oO>J0ki?hF)RH_H=sq2=PFdd$atiOjSxUR@d;gm7XS_g>aVJ zX*{_v8h=|MB?+0-B)|N#X0CFSA+>d~qOB1MQ@Ffc8hA>ihL&Sk`+8sQO&6;{^PpzU zumMp{bYhERP)f=2Kuiz;k{OYtr>Q4yKk&I~9)aC=fhUHmFUURn(TfVE3=%}_OAKnj z%Te$@E4>zt&G=)$2;|w+%%p&cTp#0MMo?-!H+xZjerVw&URCE| zczE#pPu~p3wH+Y&sT!3U$bxT9nV0<@3xNl%ccgX|)taV+0M{eGv(^q z5TN7YdHO28(E*bDDZSBN#?n^)0qK`K+*&zd16P74uW5y?5p^$5buvVO7MlbQx4oqC zRhaH2Y`5^Wgatm0@h0RfH|I+TR`y8O!ISMc%4zzkMkUsmHot-nOo(Jhhz&DOi5M}n zdew=Oejs=w0!^BA6FuKSeM9AA90(-qe-&%9wEiG|88C8)>!X%?i5C^kdflIVU;37( zj0Zkdi`|trVo!;&M=9zl8Fm{UT1LrS2zgicGG=I|yhAFwFw%g%@<_(IaRb)OT3J|n zrd+Hdeeese({g>>h}~O#pi`SS89 zOjHOu@gV7x6n(AKgUL=4pCX7ubCNa0fwY#&>3h(b!kFf^wMcg7E9Mo$$wfn9=b)Dwd}W^_0L4UMfCO^ z7-|1{F1ljf5jI<5c-d$8#9Co-wDg;u3>@uTzT4ozs0 zOB`Ti{7lPR@USKE&QKm!PDdRl(nX(yubmGvmn$Hc;SbbWv@N9H$#B3L`(%;;Jj* zX&g2wPk4P}Wch=jv_LRjvMM>XK2f8d;A$ zdaGCek?r1?xz{D`BZ}d+Im{cjHFp|9>dK zEDul^?oL)mfSh)aeN7^znk`=N1`%qzo~-Fm-;;5j@a(%E74Vz#4pNJI5@cIrx)m}q zdoj@Gu|wEW4y_b5`A3n_jJiE-p0{Lm%Ri$0c~QJB*dGk8OPpTK-q)m|`M-rV0XJoV z9C}QM1VD%LVf_BhHyG=vEJ0vMb0cj;@nJj!yEn=|sfP96!#GVH97rVXXCsVsW+Uy0 zU%Y5OugLy>823ujm^7=~TSz5~$RttkxpC{yk;dI!o#$)jV>+znDjnEq{i*jVeLRyM z5Hz)jzVvJFpGxH+=K~SIy>N~=-sT%a&a=E40iAt8T33V+k9Q3vW zMt-eYStiWVT>@sP;!6|8VR>Ga4pMdDnnr3s4i}H)EtL=R`R`c?38Uk|+KlB^kvUXe z+h~+UswcceppY{ZT2zyxq`SpFD;Ts*%BN+}j;FWOUqu00hl|%Zs;CuYi8h!1^ERT; zr<&rJ+LtyY7CQ`OttOTmT`uwyIojX8sxwTLp$`+}z{@%LBMOI9?fJ8e_#WXL@=C<~}quu|3OZ87uRb zReGPHvBl5&O=aU=NTWPtbE%|rG`Jf0vqaQ8#eo2yA(TEN{+k(4D{nWIldC>Du#8rU z38a>1R_~+_-7a=W%k=Lr;@4k>BNcMDpe z;`9?|ZVrZXVrE`3V{;q$Qrq7(D4XWAJJ;l+$!5@~)mj85a3fQQ(x{Arj_2cPDK;o= zHe=qX5nSVHT_X!`5I}zO|8Ov7IOpJA0ZO-lur7^s}5{oMi z&=H~J53*k)eE&+H?7g@|TwuKDp9aWSWZ{#Hnp{jNup&4-gfjX^^DZ}C)WL$SWN|C&VQA6n)Kmf^}I zq=@G8w>J!ksk;!P|MquSb-9SxNAdY3>fdT2MMh44cNg)mzf>iIr?{e2YI_!t{}z)k z8e7WsugqoKUV9R}9Pw^wEOYP1C%TAS*(7SqBsF1%(Tc8t9#jL4A&z9p!mFZk_Q&8| z^@h7j%G8jM0TmAOlMdaU;C625m@8M>{U&|+>_M!ke8qXk*(W841XDHu|IKdm#aSpU za#EX&;LPr3jC!a8qG1DY)3H0~`Prtn`|@())SAQU zFQWk*qb*r)56W;(4Ute{0Mxa-@zfS3eXQ!K2x5>J9M`Sl>+sQ#@u z)!KhWFY-M#>W|`Y0q5Fc=zxhtv#jXjylyNIWoHwqH84?j6iF=8 zp}{{dfGLFjOu{-OAleM^p#RH};P#||xv^vwa~{0%Y`fewC!6~)W(3S>A?#GgXh1Qn z0j7A1|0`OU;bwJ5*a10-q7x)T!2t!2^o!wwQFHrM2mX>N>ic+jpJG zlLF%3I8mtuGQ<|AvSB1(!D282lKMA>I0S5$!$Or~itJSz>!sEOP^aJqIt!{Q!y=xT z_!#K5yes1xD(_bqCVuO>Asw3vw3d5|}O@w%E>A?reJu=yD%tT0#YQhmcZ{&q}$uc)}v& zj_e%ZU*k$yPj*H8#~mHmxp-Ll%;L?`TF&=4_>#@|F)OEQ<8 zmf#SD^V0<;kf{RR%x<{W(?8CsYY?1iMmCmehCd#dvr1h7p&K`$N<$Y)k+c`uiqIHT zKKCt>yJW<7$XDHhd!j^}{ z9BpZ79v>kl4Bmert$w+sA)fa(SW&=!W#L_$=Qr4xztN2zfm#X&vB|;kDZlf73{5e+ zk28P1id5A9_3?+-`Kbkmnce{Pa_N?K-NNpsiy=WH0(6f%UWHL+%ULbgxE^N`w^sR_ zQod;mzbo~Shg_F;|G?vN>ah%)&nnwff0=d^v37dejt;u{=2N{#gVl0E^sF49885oa zODl&0$l=|h7So^&d=w0_#=$|Ihsi)=KqnHlJdNWc?C|l<$X-G=)Tdy2#)(&N0>pix zZ4`)U?jw(bdYw3V&`ZE+bM&i+n!LP@g(L` zELl+3B&T}*TGRHnBKdb->$me&O2nn+i0#MktX{n`Pd#n@)qaH9wTp#zbp7+RiuXmZ z*)8hpZ~OZ4+yghlY$zNl!kp{rx+65Bu4lh5)Z*I$C?pifX* zJNx@isGFp>dlFQ z=T=sZCyQRw@0b_U967==P**iWnHWOr0zj|60hAlVP1$RlXn(tc>Zt=P0G&?dQ7wi0E zEXhA}lTXWSvo=(n5w!8z(|DtT%Z2It`+*eRM=cxgG~OrSmgvHp8iuIvb36~^LOlw6WcU+KlDQ=4O^edthFZuW^`=w6rHC@kF_{r4eA@ zcH5!Jq8|!_=3pX<-qoWw;y7rZTxlNhz^1BwdxL(gB~N$Y)m20dPQvp~7=TEo*pJs< zf|-U~f@D>BYzT?kt%jkYypzrJy;$z?=Gf<~ z;}qfqRdN-!1g^gvuM zOK;yJ>D~V00F)`@Sb`qtx1eTwY}4YS_lujyTaql$EbFI=tly83#u22D3CVa~frqDx zfE*ruXD0Ow#a~UG^c;U2@j}?SSYy34J~056Ar+%DR_MuP#RsKdKWSmBiL4X4_R9Cf zZ^x!=cgatBWy1FkEp0{3{nqL!t&0o-hBHxmm_Qj2*p>8wb5k$7dyr%6z>Z8!1HHEvBdvooy4G~txrs;)9 zR39y72baDuoUaH|d(^1bwy}llEKP~?kD4F4!OKvWT?sI7Q|5wH+~Y5vD{pWWmYyKJ zJf_*c4$tJ9Wsx2?kvnYf{aEihP0NyvF0W*-t>PdXEvg95kyDYEmbK6u%=;?n%_zsX zDD9M@`^1TD|DPG!`gxANNXCIsu!uT)@N*vM8ig2;8JO$SZJu{AO~|;K5^}q4_TR|w z>i^o(pd|b%HIec4La2CD1HO-Rko82R8x2u0pWV@s4H*-dC-nmnRlv=FQvqcnQ z5CG|OYH7LXzf?Us8pcJuqy3)bLlWuOvAxar;s`6ySFmM}J5Jd0>208uA@MK)Nr9MY zNSUetD5kkRkB<6=R3|Kx77s1K(hhf2wNBznelErg=+!GJ3z>o`5OD0voj7ZBGp=(6L}$ttJbQ>o zs@>bS58fsAk$SAyB-OG%S)a<#M(nfY39ZkUfHx8Lbs$ap^62S+B(*neqKDtbVs5a; zt?iYDr(VNV^lth1u@J?kn?Ssk!HofeqIKN6rpJU*{N3@ghXv{PZsUil%ff(!y{(*L zHvph2H%k~Rz@|00yTI#HHx!`W$kwXbcKy?xs@j)xUj02^vO#%Am^Hb+l>>KBDD!R4 zBwk*Q@&Z%kEcdZ@X>G&9bkfq9dDpwqBf}0m1smu9@S;=t?xx!w!`vQ(VvOz%m^Kx2 zs=7GA`se$M*@K<+k#B;#oyjxSrb^^m6TLO13D$GUxU}!opzlG>9^}VH_+x%U_x+8m zsyF(Cf=r={Ik{#CFo6^povOa>MP4^&mj!>=l0 zF|gt#k;Kk7>_^V5qQIofmH{Yf<0HlEfV$cUL_odjA=jrk`T`OXOi1gX=wM-pu7%{6 zhIdgQ_zXJQo)oS68djx(XOZcXdD?4T<7#cx1m3;_1Od;D*_e}~8`L>h(=uYO%|9UE z$2O0KDq70AnKSSuIbZbyG49v)&UFQr?8=hm12-CT*10Ort04)&7YXZ&EX^QnUwx80 zeq!f`Ja5X!b1GYahptYLLel1&9K=`-HR4}@xa-TwD(km;Y&^DbEI??69AuP0S}SxA zD+E9(zeX(sg1dN{7}EQ?@cXsH`fz8F0vTJxPc;fAwcpAF+Ya*v;>*4#WG&!6?#Mh! zMfrxtcJ3bFqfYkj?$&H!bWKt~g@Vi`5rJG`A_n~9#;9|uNV5y*gBBi_7#^qnon>wj zyblJT=b8lrnj}4i*CzZsAj{AQscG1WV@XFa*v+^okw;l=yP`Zj+YCQGSo=gE5#>W0 z;`1bf(l6_Am_?TJ$L!d!HuHzhHb2#8hoozk_uu}|-2LKSeOg;&s(h4>MnN6cM@;qlgmT?Rs4{FEexEVQy~1TdbryCWLsAd+VyR|8(lDByG2Yiz1%=#6z%tH11FKb zX_w39gdi^&N+k$o3xf2|u}8KnrG9TW1OJJt3K!5i+HQA!Bqq`))P=Kqv~+fHg)ju; z$8IEI-OGKqJ6rFzUh>GGfqq~rl+RtIKkn*8MVQ&3iFD6v6~6Dzo&d zx_}6RQ4!6^7=HBdpyCdmpf%519#glyBa^*}NyQRjo8o7PgXZ%SlcjKvSGP`WUz!xG zj8S8}lfPUYFKX5&1zOMbK^Kg=q~lK+B8AETiShS3rh(1zQjIEU!jfd1KbE07x$^5p zKg78e=Y9QYA}6AOhq>MBv?^z@b<^N3q{CA(TLJTmicC8k^YHc!Qk>KIb!gO8h|ZH& z(0BNQ13{8x`lu|89&^J(HReU=$naZTEdE-y)B4?c7K3eQ-C|$OoA4Z2CK5$LYqb>+ zix$9!SS&VxmmbCsh%kOc-c`dr6STDB#)dtehfie4RYeLRn&D%Pa=3x6=EQ>ahWF`xzb z@A!(t=Z;t1v3jr=oiRn3CppSV6v zDfPIbZj1)A!wuL};YNKA|GY^hETKxPo16Q^oIj$hG-6{raX`;5$L~?=v~FMU@o$q} zeF-}*CsXFey2*%^R;BHr8R1;2?+=z9?!XL{QQ6qYPnq6#(w*M~1F|+$%n+2>t}6%j zz~P7tY%{`}TGXt)I!QN6&}+VsjqMDyvYG-~e}0~f@(k7NNkjqCEx(-J z7Ku`#^gmE;tk01F0k>AD>vyqewBALsz&|G&D5kYTRP^(oG1=}HTzvY)vT~|gNtl?E zc}@59r?aX}0MDd+l|+k?!t^8u#2JGDVf^w}70TCQw7DEfTM6dO!6$DUa2Yqwo5uIg zcto0N4=h0e9xzi0{Wki(ENH~&29Z;_|BTUYf6OoGdhOxc!CcxCl0AodDxn_f& z6^sQlY)rIZoE$mLkLrEb%}@8RN|EM_Af^MaWVEz*xa)_WBui+GIHD(HL4#9+(HVeh zZ+9;YNOn%Il(>BBgcKWy_5Kzu#~?HQ3bg`wxjkLcA-(l)04U?&B)GQ(=D0|i~n* z=M7}iNWvf7Z^N{}1;Rid4f@>XW+#N_2>xj=h^`W3XLp}@Ml&Cix{+W*(krEDvtzLz z$5?YOq20{2f6tS|WaY}_T0|f~Ab(#Ra38KOCL=sttTQ&O4Y{8ZOWnor53Quj?Wq>j zPg+sug-HM%WoSgPu6J_7t24ocAcvbve>sXRB~KcG@fYb=hja4d6SDF0GRz#@o|m!E zF=Mhug|O?SV-@q_EsSIb6!>HYzjwW(h#UO7wFrOQLJO7QrFFcVnmSq9(SywOq_WWb z^+{A5K9p**T+x8MtU4eL(=RW_04fgYSUptXBA|tcL*8}KxY1@T0}pPtPmFa){PKf% zFya!_~k<8ye=$FjWjf(TWwQX5OR2@`q%02&?y z+CS*ohezZs^sYO$oFN^&Y;tuteA&5nDs(SI*LQtIoE#KZo;NJB(TSwJdp);t3VtO} zQ~X_3e@L9$qlV(cY7-d20q`M4Xav+aAtWd3(AFCLCM|JW)oqjwpBkfp&n}8sHj~b_ zH=#c9Oj7Zix$iaJ3ABY{!TAlhpzT zOD5VnVM;o`>ku|;{}tPN{?c0kJ@USS$LZ0W+s=#=ZtJ{Nc<&NI6inCMs>sQzI_}<^ z^>JQda%ye_^1XX_vFm*gUBQ9^k|J|9rHE6}Mg{Su-^)|GN+jIVnZSQgI`{{{tgUT>}6B delta 132509 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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

    Nm|2{>E4 zvz5NoQSdNO1vBv6Ta3_K?41S2gp}(~=DQCpI*c+hS=*rs3a@?iO^4qw1J|VSuzv6X zpG|l7U3TUI8-2va%cPCBftp_^At1&0X<9I+ZLn5IKoDURLpoqo5>6#04H4~zBZif5 zvI;re4;pPV^JP?64#`wdF@%Ka7fi!g%=+qx+uZzI{t8zM18(?F<%cOXOxnp0^1pBW^9HkbLV1XTcZ7F}hodwkl*mGY?Z~_Mo>Uh&C_L=k#)JdsxXf6%!NTM?fC0 z?3TX>ek4q$=@le)z8U)s9*aHj_cb@&{ZY66l8f+t%BurrtvH+ z{p7c%3lZ;PW9rz_&rsBooJ$hHJL+3n;0^eF@z)W~4|m?}zs&t&j`Y#<)JB4|C`bh7 z?mBmptu+5012k?JQAiiqHH?*Ry*nS2VSKBg_qe9neh5d- zvh3|}IE4tjp^%Z+-IETqRMec3_W}zv0_;SNin-i|HC=YNNc=KWCaye|V5pdH96E(I zhEPJAtqC!f^30Z|tUieTRwi$c85!GZ>|gNfEFv-e|8W+CMCWttlW_A0+Bt%VxomZm1YyQg1ictF=|HE0Wdh){_{j{tutDmf%Xf5Q z9ZoAF%Zg4nMXstlp7;_WLLrYF_-KaVOZNSa*{r=o{aKE5MXBYS=p+5v-?f@cM~u=V z_qb^(F)^-!Mw8HRk5(Pu>CHv62v7RupsL|&mvfb|;4c5_^l}l;MO{5nM^HdBzc32q z6g4*91;5=8QHXdqIojQEjvti?vsXlbA)L)=uxMg2|f%k~Y}c(nTJ=jhdq?D3wCaNMUuyP3>QGcZIq zpsj8NFL45I3LHR*1HFEc&o6LOd6Q$tq#yaZBNm+|#& zz_VZ9;#-E)Wda3YMRBdV3HmYofh-uMR%kX9sHu*&9q;$>q0P&trA51L(IkS3P(}

    w_m_}mPBxsoLVMP;NQ>a`;CkcPbOKf} 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

    @B!_j+wZA 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 z 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

    Q36n!oGLadyv!97oT_;C5E^Hd+ycp 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

    i#!7m^Qp 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

    ^2C|@ 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


    Sse(gnZdo@$q*z<6LP!`dG#JI~loX7@ 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 literal 0 HcmV?d00001 diff --git a/app/scripts/render_patient_appointment_density.py b/app/scripts/render_patient_appointment_density.py index d4fd97486..588f38384 100644 --- a/app/scripts/render_patient_appointment_density.py +++ b/app/scripts/render_patient_appointment_density.py @@ -61,6 +61,7 @@ def _appointment_rows() -> list[dict[str, Any]]: "id": 801 + index, "diagnosis_id": 901 + index, "patient_id": 401 + index, + "source_patient_id": 401 + index, "patient_name": names[index % len(names)], "patient_phone": f"1380013{8000 + index}", "gender": 2 if index % 2 == 0 else 1, @@ -77,6 +78,11 @@ def _appointment_rows() -> list[dict[str, Any]]: "status_desc": "已挂号", "revisit_time": "复诊" if index % 2 else "初诊", "unserved_days": index, + "video_call_hint": ( + {"state": "live", "label": "视频通话进行中"} + if index == 0 + else {"state": "idle", "label": "等待医生发起"} + ), } ) return rows @@ -161,15 +167,17 @@ def render() -> list[Path]: raise RuntimeError( f"appointment table only exposes {appointment_slots} ordinary rows" ) - if width == 1024 and not appointments.video_panel.isHidden(): - raise RuntimeError("narrow appointment viewport did not collapse the video panel") + if appointments.content_layout.count() != 1: + raise RuntimeError("appointment list still reserves a secondary side panel") + if appointments.table_card.width() != appointments.content_host.width(): + raise RuntimeError("appointment table does not fill the content viewport") appointment_path = output / f"appointments_{width}x{height}.png" if not shell.grab().save(str(appointment_path), "PNG"): raise RuntimeError(f"failed to save {appointment_path}") paths.append(appointment_path) print( f"{width}x{height}: patient_slots={patient_slots}, " - f"appointment_slots={appointment_slots}, video_hidden={appointments.video_panel.isHidden()}" + f"appointment_slots={appointment_slots}, table_full_width=True" ) shell.close() application.processEvents() diff --git a/app/src/doctor_workstation/services/api_client.py b/app/src/doctor_workstation/services/api_client.py index 39a48e3a1..405988676 100644 --- a/app/src/doctor_workstation/services/api_client.py +++ b/app/src/doctor_workstation/services/api_client.py @@ -5,7 +5,8 @@ from __future__ import annotations import json import time from collections.abc import Callable, Iterator, Mapping -from threading import Lock, RLock +from contextlib import contextmanager +from threading import Condition, RLock from typing import Any from urllib.parse import urljoin, urlsplit, urlunsplit @@ -23,15 +24,6 @@ from doctor_workstation.core.errors import ( WorkWechatBindingRequiredError, ) -# One shared transport lock serializes every HTTP exchange in the process. -# The GUI fires page loads, dialog bundles and polling timers from many -# QThreadPool workers that all share a single ``httpx.Client``. Concurrent -# TLS handshakes on one shared SSLContext have repeatedly crashed the -# process inside libcrypto (access violation at a stable offset), so all -# network traffic now goes through this single lock. Requests stay -# off-thread, so the GUI never blocks; only the network itself is serialized. -_HTTP_TRANSPORT_LOCK = Lock() - class ApiClient: """A small, testable client implementing the admin API contract. @@ -42,6 +34,7 @@ class ApiClient: """ API_VERSION = "1.9.4" + DEFAULT_MAX_PARALLEL_REQUESTS = 8 def __init__( self, @@ -55,6 +48,7 @@ class ApiClient: transport: httpx.BaseTransport | None = None, client: httpx.Client | None = None, sleep: Callable[[float], None] = time.sleep, + max_parallel_requests: int = DEFAULT_MAX_PARALLEL_REQUESTS, ) -> None: """Create a client without performing any network requests.""" @@ -64,6 +58,8 @@ class ApiClient: raise ValueError("retry_backoff must be non-negative") if client is not None and transport is not None: raise ValueError("pass either client or transport, not both") + if max_parallel_requests <= 0: + raise ValueError("max_parallel_requests must be positive") self.base_url = self.normalise_base_url(base_url) self.timeout = timeout self.max_retries = max_retries @@ -71,10 +67,68 @@ class ApiClient: self._sleep = sleep self._token = token.strip() self._lock = RLock() + self._transport_lock = RLock() + self._client_condition = Condition(RLock()) + self._available_clients: list[httpx.Client] = [] + self._pooled_clients: list[httpx.Client] = [] + self._active_requests = 0 + self._closing = False + self._closed = False + self._max_parallel_requests = max_parallel_requests + # Production requests use a bounded pool of independent clients. This + # permits unrelated patient requests to run concurrently without + # sharing the SSLContext that previously caused native TLS crashes. + # A pool also works across PySide QRunnable boundaries, where Python + # thread-local state is not retained reliably. + # Explicit clients/transports remain on one locked client because + # their ownership and thread-safety contracts are unknown. + self._uses_client_pool = client is None and transport is None self._owns_client = client is None self._stream_transport = transport self._verify = verify - self._client = client or httpx.Client(transport=transport, verify=verify) + self._client = ( + None + if self._uses_client_pool + else client or httpx.Client(transport=transport, verify=verify) + ) + + @contextmanager + def _borrow_client(self) -> Iterator[httpx.Client]: + """Yield a safe synchronous client for the calling worker thread.""" + + if not self._uses_client_pool: + with self._transport_lock: + with self._client_condition: + if self._closing or self._closed: + raise RuntimeError("ApiClient is closed") + if self._client is None: # Defensive; this mode always has one. + raise RuntimeError("ApiClient transport is unavailable") + yield self._client + return + + with self._client_condition: + while True: + if self._closing or self._closed: + raise RuntimeError("ApiClient is closed") + if self._available_clients: + pooled_client = self._available_clients.pop() + break + if len(self._pooled_clients) < self._max_parallel_requests: + pooled_client = httpx.Client(verify=self._verify) + self._pooled_clients.append(pooled_client) + break + self._client_condition.wait() + self._active_requests += 1 + try: + yield pooled_client + finally: + with self._client_condition: + self._active_requests -= 1 + self._available_clients.append(pooled_client) + if self._active_requests == 0: + self._client_condition.notify_all() + else: + self._client_condition.notify() @staticmethod def normalise_base_url(base_url: str) -> str: @@ -184,9 +238,9 @@ class ApiClient: ) -> Iterator[dict[str, Any]]: """POST JSON and yield parsed server-sent events on an isolated client. - Streaming deliberately does not use ``_HTTP_TRANSPORT_LOCK`` or the - process-wide JSON client. A diagnosis response can remain open for - more than a minute and must not block unrelated page requests. + Streaming deliberately does not use the bounded short-request client + pool. A diagnosis response can remain open for more than a minute and + must not consume capacity needed by unrelated page requests. """ url = self._endpoint_url(endpoint) @@ -245,8 +299,8 @@ class ApiClient: if parsed.scheme not in {"http", "https"} or not parsed.netloc: raise ValueError("url must resolve to an absolute http(s) URL") try: - with _HTTP_TRANSPORT_LOCK: - response = self._client.get( + with self._borrow_client() as client: + response = client.get( target, headers={"Accept": "image/*,application/octet-stream;q=0.8"}, timeout=self.timeout, @@ -324,10 +378,10 @@ class ApiClient: attempts = self.max_retries + 1 if verb == "GET" else 1 response: httpx.Response | None = None request_timeout = self.timeout if timeout is None else timeout - with _HTTP_TRANSPORT_LOCK: + with self._borrow_client() as client: for attempt in range(attempts): try: - response = self._client.request( + response = client.request( verb, url, params=dict(params) if params is not None else None, @@ -360,9 +414,42 @@ class ApiClient: def close(self) -> None: """Close the internally-created HTTP transport.""" - if self._owns_client: - with _HTTP_TRANSPORT_LOCK: - self._client.close() + with self._client_condition: + if self._closed: + return + if self._closing: + while not self._closed: + self._client_condition.wait() + return + self._closing = True + self._client_condition.notify_all() + + clients: list[httpx.Client] = [] + if self._uses_client_pool: + with self._client_condition: + while self._active_requests: + self._client_condition.wait() + clients = list(self._pooled_clients) + self._available_clients.clear() + self._pooled_clients.clear() + else: + with self._transport_lock: + if self._owns_client and self._client is not None: + clients = [self._client] + + close_error: Exception | None = None + for client in clients: + try: + client.close() + except Exception as error: # Close every transport before surfacing one failure. + if close_error is None: + close_error = error + with self._client_condition: + self._closed = True + self._closing = False + self._client_condition.notify_all() + if close_error is not None: + raise close_error def __enter__(self) -> ApiClient: """Return this client for use as a context manager.""" diff --git a/app/src/doctor_workstation/services/local_audio_queue.py b/app/src/doctor_workstation/services/local_audio_queue.py new file mode 100644 index 000000000..eaeb58699 --- /dev/null +++ b/app/src/doctor_workstation/services/local_audio_queue.py @@ -0,0 +1,602 @@ +"""Persistent local-audio capture and COS upload queue. + +Local call recordings are medical records. They must survive application +restarts and failed network requests, so the queue deliberately keeps the +audio file after a successful upload as well as after a failed one. +""" + +from __future__ import annotations + +import queue +import sqlite3 +import threading +from collections.abc import Callable +from concurrent.futures import Future +from contextlib import suppress +from dataclasses import dataclass +from datetime import UTC, datetime +from os import PathLike +from pathlib import Path +from typing import Any +from uuid import uuid4 + +from platformdirs import user_data_path + +_MAX_UPLOAD_WORKERS = 3 +_RETRYABLE_STATUSES = {"pending", "failed"} +_RECOVERY_LOCK = threading.Lock() +_RECOVERED_DATABASES: set[Path] = set() +_MANAGER_LOCK = threading.Lock() +_MANAGERS: dict[tuple[int, Path], LocalAudioUploadManager] = {} + + +def _utc_now() -> str: + return datetime.now(UTC).isoformat(timespec="seconds") + + +def _clean_room_id(value: Any) -> str: + room_id = str(value or "").strip() + return "" if room_id == "0" else room_id + + +def _clean_call_record_id(value: Any, *, required: bool) -> int | None: + if value in (None, "") and not required: + return None + try: + call_record_id = int(value) + except (TypeError, ValueError) as error: + raise ValueError("通话记录 ID 无效。") from error + if call_record_id <= 0: + raise ValueError("通话记录 ID 无效。") + return call_record_id + + +def _default_root() -> Path: + return ( + user_data_path( + "ZhenyangDoctorWorkstation", + appauthor="ZhenYangTang", + ensure_exists=True, + ) + / "local-call-audio" + ) + + +@dataclass(frozen=True, slots=True) +class LocalAudioRecord: + id: int + session_id: str + diagnosis_id: int + call_record_id: int | None + room_id: str + mime_type: str + file_path: Path + size_bytes: int + status: str + error_text: str + uploaded_url: str + attempts: int + created_at: str + updated_at: str + uploaded_at: str + + @property + def exists(self) -> bool: + return self.file_path.is_file() + + +class LocalAudioQueueStore: + """SQLite-backed manifest for durable local call recordings.""" + + def __init__(self, root: str | PathLike[str] | None = None) -> None: + self.root = Path(root).expanduser().resolve() if root else _default_root().resolve() + self.files_dir = self.root / "files" + self.files_dir.mkdir(parents=True, exist_ok=True) + self.database_path = self.root / "queue.sqlite3" + self._initialize() + + def _connect(self) -> sqlite3.Connection: + connection = sqlite3.connect(self.database_path, timeout=10.0) + connection.row_factory = sqlite3.Row + connection.execute("PRAGMA busy_timeout = 10000") + return connection + + def _initialize(self) -> None: + with self._connect() as connection: + connection.execute("PRAGMA journal_mode = WAL") + # Serialise schema inspection and ALTER TABLE across two workstation + # processes. The second process waits, then re-checks the columns. + connection.execute("BEGIN IMMEDIATE") + connection.execute( + """ + CREATE TABLE IF NOT EXISTS local_audio_uploads ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + session_id TEXT NOT NULL UNIQUE, + diagnosis_id INTEGER NOT NULL, + call_record_id INTEGER, + room_id TEXT NOT NULL DEFAULT '', + mime_type TEXT NOT NULL, + file_path TEXT NOT NULL, + size_bytes INTEGER NOT NULL DEFAULT 0, + status TEXT NOT NULL, + error_text TEXT NOT NULL DEFAULT '', + uploaded_url TEXT NOT NULL DEFAULT '', + attempts INTEGER NOT NULL DEFAULT 0, + created_at TEXT NOT NULL, + updated_at TEXT NOT NULL, + uploaded_at TEXT NOT NULL DEFAULT '' + ) + """ + ) + columns = { + str(row["name"]) + for row in connection.execute( + "PRAGMA table_info(local_audio_uploads)" + ).fetchall() + } + if "room_id" not in columns: + connection.execute( + "ALTER TABLE local_audio_uploads " + "ADD COLUMN room_id TEXT NOT NULL DEFAULT ''" + ) + connection.execute( + "CREATE INDEX IF NOT EXISTS idx_local_audio_diagnosis " + "ON local_audio_uploads(diagnosis_id, id DESC)" + ) + # Recover interrupted work once per process. Creating the management + # dialog while a worker is active must not move that worker back to + # ``pending`` and accidentally upload the same medical file twice. + with _RECOVERY_LOCK: + if self.database_path in _RECOVERED_DATABASES: + return + with self._connect() as connection: + now = _utc_now() + connection.execute( + """ + UPDATE local_audio_uploads + SET status = 'pending', + error_text = '应用上次退出时上传尚未完成,可重试。', + updated_at = ? + WHERE status = 'uploading' + """, + (now,), + ) + connection.execute( + """ + UPDATE local_audio_uploads + SET status = 'invalid', + error_text = '应用上次退出时录音尚未完成。', + updated_at = ? + WHERE status = 'recording' + """, + (now,), + ) + _RECOVERED_DATABASES.add(self.database_path) + + @staticmethod + def _from_row(row: sqlite3.Row) -> LocalAudioRecord: + raw_call_record_id = row["call_record_id"] + return LocalAudioRecord( + id=int(row["id"]), + session_id=str(row["session_id"]), + diagnosis_id=int(row["diagnosis_id"]), + call_record_id=( + int(raw_call_record_id) if raw_call_record_id not in (None, "") else None + ), + room_id=_clean_room_id(row["room_id"]), + mime_type=str(row["mime_type"]), + file_path=Path(str(row["file_path"])).resolve(), + size_bytes=int(row["size_bytes"] or 0), + status=str(row["status"]), + error_text=str(row["error_text"] or ""), + uploaded_url=str(row["uploaded_url"] or ""), + attempts=int(row["attempts"] or 0), + created_at=str(row["created_at"]), + updated_at=str(row["updated_at"]), + uploaded_at=str(row["uploaded_at"] or ""), + ) + + def begin_recording( + self, + *, + session_id: str, + diagnosis_id: int, + mime_type: str, + call_record_id: int | None = None, + room_id: str = "", + ) -> LocalAudioRecord: + suffix = ".ogg" if mime_type.startswith("audio/ogg") else ".webm" + timestamp = datetime.now().strftime("%Y%m%d-%H%M%S") + name = f"call-{int(diagnosis_id)}-{timestamp}-{uuid4().hex[:10]}{suffix}.part" + path = (self.files_dir / name).resolve() + now = _utc_now() + clean_call_record_id = _clean_call_record_id(call_record_id, required=False) + clean_room_id = _clean_room_id(room_id) + with self._connect() as connection: + cursor = connection.execute( + """ + INSERT INTO local_audio_uploads ( + session_id, diagnosis_id, call_record_id, room_id, + mime_type, file_path, + status, created_at, updated_at + ) VALUES (?, ?, ?, ?, ?, ?, 'recording', ?, ?) + """, + ( + session_id, + int(diagnosis_id), + clean_call_record_id, + clean_room_id, + mime_type, + str(path), + now, + now, + ), + ) + record_id = int(cursor.lastrowid) + record = self.get(record_id) + if record is None: # pragma: no cover - SQLite insert/read invariant. + raise RuntimeError("无法创建本地录音记录。") + return record + + def finalize_recording(self, record_id: int, *, size_bytes: int) -> LocalAudioRecord: + record = self.require(record_id) + if record.status != "recording": + raise RuntimeError("本地录音记录状态不允许完成。") + if record.file_path.suffix == ".part": + final_path = record.file_path.with_suffix("") + record.file_path.replace(final_path) + else: + final_path = record.file_path + now = _utc_now() + with self._connect() as connection: + connection.execute( + """ + UPDATE local_audio_uploads + SET file_path = ?, size_bytes = ?, status = 'pending', + error_text = '', updated_at = ? + WHERE id = ? + """, + (str(final_path), int(size_bytes), now, int(record_id)), + ) + return self.require(record_id) + + def mark_invalid(self, record_id: int, message: str) -> LocalAudioRecord: + record = self.require(record_id) + size = record.file_path.stat().st_size if record.file_path.is_file() else 0 + now = _utc_now() + with self._connect() as connection: + connection.execute( + """ + UPDATE local_audio_uploads + SET size_bytes = ?, status = 'invalid', error_text = ?, updated_at = ? + WHERE id = ? + """, + (size, str(message)[:1000], now, int(record_id)), + ) + return self.require(record_id) + + def bind_identity( + self, + record_id: int, + *, + call_record_id: int, + room_id: str = "", + ) -> LocalAudioRecord: + """Bind one recording to a call without overwriting a different identity.""" + + clean_call_record_id = _clean_call_record_id(call_record_id, required=True) + assert clean_call_record_id is not None + clean_room_id = _clean_room_id(room_id) + now = _utc_now() + with self._connect() as connection: + cursor = connection.execute( + """ + UPDATE local_audio_uploads + SET call_record_id = CASE + WHEN call_record_id IS NULL THEN ? + ELSE call_record_id + END, + room_id = CASE + WHEN room_id = '' AND ? <> '' THEN ? + ELSE room_id + END, + updated_at = ? + WHERE id = ? + AND (call_record_id IS NULL OR call_record_id = ?) + AND (? = '' OR room_id = '' OR room_id = ?) + """, + ( + clean_call_record_id, + clean_room_id, + clean_room_id, + now, + int(record_id), + clean_call_record_id, + clean_room_id, + clean_room_id, + ), + ) + if cursor.rowcount != 1: + exists = connection.execute( + "SELECT 1 FROM local_audio_uploads WHERE id = ?", + (int(record_id),), + ).fetchone() + if exists is None: + raise LookupError("本地录音记录不存在。") + raise RuntimeError("本地录音的通话记录 ID 或房间号发生冲突。") + return self.require(record_id) + + def set_call_record_id(self, record_id: int, call_record_id: int) -> None: + self.bind_identity(record_id, call_record_id=call_record_id) + + def update_status(self, record_id: int, status: str, message: str = "") -> None: + if status not in {"pending", "uploading", "uploaded", "failed", "invalid"}: + raise ValueError("unsupported local-audio status") + now = _utc_now() + with self._connect() as connection: + connection.execute( + """ + UPDATE local_audio_uploads + SET status = ?, error_text = ?, updated_at = ? + WHERE id = ? + """, + (status, str(message)[:1000], now, int(record_id)), + ) + + def get(self, record_id: int) -> LocalAudioRecord | None: + with self._connect() as connection: + row = connection.execute( + "SELECT * FROM local_audio_uploads WHERE id = ?", + (int(record_id),), + ).fetchone() + return self._from_row(row) if row is not None else None + + def require(self, record_id: int) -> LocalAudioRecord: + record = self.get(record_id) + if record is None: + raise LookupError("本地录音记录不存在。") + return record + + def list_records(self, *, diagnosis_id: int | None = None) -> list[LocalAudioRecord]: + with self._connect() as connection: + if diagnosis_id is None: + rows = connection.execute( + "SELECT * FROM local_audio_uploads ORDER BY id DESC" + ).fetchall() + else: + rows = connection.execute( + """ + SELECT * FROM local_audio_uploads + WHERE diagnosis_id = ? + ORDER BY id DESC + """, + (int(diagnosis_id),), + ).fetchall() + return [self._from_row(row) for row in rows] + + def claim_upload(self, record_id: int) -> LocalAudioRecord | None: + now = _utc_now() + with self._connect() as connection: + cursor = connection.execute( + """ + UPDATE local_audio_uploads + SET status = 'uploading', error_text = '', attempts = attempts + 1, + updated_at = ? + WHERE id = ? AND status IN ('pending', 'failed') + """, + (now, int(record_id)), + ) + if cursor.rowcount != 1: + return None + return self.require(record_id) + + def mark_uploaded(self, record_id: int, uploaded_url: str = "") -> None: + now = _utc_now() + with self._connect() as connection: + connection.execute( + """ + UPDATE local_audio_uploads + SET status = 'uploaded', uploaded_url = ?, error_text = '', + uploaded_at = ?, updated_at = ? + WHERE id = ? + """, + (str(uploaded_url)[:2000], now, now, int(record_id)), + ) + + def mark_failed(self, record_id: int, message: str) -> None: + now = _utc_now() + with self._connect() as connection: + connection.execute( + """ + UPDATE local_audio_uploads + SET status = 'failed', error_text = ?, updated_at = ? + WHERE id = ? + """, + (str(message)[:1000] or "上传失败。", now, int(record_id)), + ) + + def retry(self, record_id: int) -> LocalAudioRecord: + record = self.require(record_id) + if record.status not in {"failed", "pending"}: + raise RuntimeError("当前录音状态不允许重试上传。") + if not record.file_path.is_file() or record.file_path.stat().st_size <= 0: + raise RuntimeError("本地录音文件不存在或为空。") + now = _utc_now() + with self._connect() as connection: + connection.execute( + """ + UPDATE local_audio_uploads + SET status = 'pending', error_text = '', updated_at = ? + WHERE id = ? + """, + (now, int(record_id)), + ) + return self.require(record_id) + + +def _upload_url(result: Any) -> str: + if not isinstance(result, dict): + return "" + data = result.get("data") + payload = data if isinstance(data, dict) else result + for key in ("file_url", "fileUrl", "url", "recording_url"): + value = payload.get(key) + if value: + return str(value) + return "" + + +class LocalAudioUploadManager: + """Small daemon worker pool that uploads up to three recordings at once.""" + + def __init__( + self, + repository: Any, + store: LocalAudioQueueStore, + *, + max_workers: int = _MAX_UPLOAD_WORKERS, + ) -> None: + self.repository = repository + self.store = store + self.max_workers = max(1, min(int(max_workers), 8)) + self._jobs: queue.Queue[tuple[int, Future[bool]]] = queue.Queue() + self._active: dict[int, Future[bool]] = {} + self._upload_listeners: set[Callable[[LocalAudioRecord], None]] = set() + self._lock = threading.Lock() + for index in range(self.max_workers): + threading.Thread( + target=self._worker, + name=f"local-audio-upload-{index + 1}", + daemon=True, + ).start() + + def submit(self, record_id: int) -> Future[bool]: + record_id = int(record_id) + with self._lock: + existing = self._active.get(record_id) + if existing is not None: + return existing + future: Future[bool] = Future() + self._active[record_id] = future + self._jobs.put((record_id, future)) + return future + + def add_upload_listener( + self, + listener: Callable[[LocalAudioRecord], None], + ) -> None: + with self._lock: + self._upload_listeners.add(listener) + + def remove_upload_listener( + self, + listener: Callable[[LocalAudioRecord], None], + ) -> None: + with self._lock: + self._upload_listeners.discard(listener) + + def _notify_uploaded(self, record_id: int) -> None: + try: + record = self.store.require(record_id) + except Exception: + return + with self._lock: + listeners = tuple(self._upload_listeners) + for listener in listeners: + with suppress(Exception): + listener(record) + + def submit_retryable(self, *, diagnosis_id: int | None = None) -> list[Future[bool]]: + futures: list[Future[bool]] = [] + for record in self.store.list_records(diagnosis_id=diagnosis_id): + if record.status in _RETRYABLE_STATUSES: + futures.append(self.submit(record.id)) + return futures + + def submit_pending(self, *, diagnosis_id: int | None = None) -> list[Future[bool]]: + """Resume only queued work; failed uploads require an explicit retry.""" + + return [ + self.submit(record.id) + for record in self.store.list_records(diagnosis_id=diagnosis_id) + if record.status == "pending" + ] + + def _worker(self) -> None: + while True: + record_id, future = self._jobs.get() + try: + try: + succeeded = self._upload(record_id) + except Exception as error: # Defensive boundary around a daemon worker. + with suppress(Exception): + self.store.mark_failed( + record_id, + str(error) or "本地录音上传失败。", + ) + succeeded = False + if not future.done(): + future.set_result(succeeded) + finally: + with self._lock: + self._active.pop(record_id, None) + self._jobs.task_done() + + def _upload(self, record_id: int) -> bool: + record = self.store.claim_upload(record_id) + if record is None: + current = self.store.get(record_id) + return bool(current and current.status == "uploaded") + if not record.file_path.is_file() or record.file_path.stat().st_size <= 0: + self.store.mark_failed(record.id, "本地录音文件不存在或为空。") + return False + if record.call_record_id is None or record.call_record_id <= 0: + self.store.mark_failed(record.id, "未保存对应的通话记录编号,暂不能上传。") + return False + upload = getattr(self.repository, "upload_call_recording", None) + if not callable(upload): + self.store.mark_failed(record.id, "当前服务未提供本地录音上传接口。") + return False + try: + result = upload( + path=record.file_path, + diagnosis_id=record.diagnosis_id, + call_record_id=record.call_record_id, + mime_type=record.mime_type, + ) + except Exception as error: + self.store.mark_failed(record.id, str(error) or "本地录音上传 COS 失败。") + return False + uploaded_url = _upload_url(result) + if not uploaded_url: + self.store.mark_failed(record.id, "服务器未返回本地录音文件地址。") + return False + self.store.mark_uploaded(record.id, uploaded_url) + self._notify_uploaded(record.id) + return True + + +def get_local_audio_upload_manager( + repository: Any, + store: LocalAudioQueueStore | None = None, +) -> tuple[LocalAudioQueueStore, LocalAudioUploadManager]: + """Return one three-worker uploader per repository and manifest. + + Video windows and the recording-management dialog may be opened many times + during a workstation session. Sharing the pool prevents each window from + creating another set of background threads while SQLite's atomic claim still + protects against duplicate uploads across processes. + """ + + resolved_store = store or LocalAudioQueueStore() + key = (id(repository), resolved_store.database_path) + with _MANAGER_LOCK: + manager = _MANAGERS.get(key) + if manager is None: + manager = LocalAudioUploadManager( + repository, + resolved_store, + max_workers=_MAX_UPLOAD_WORKERS, + ) + _MANAGERS[key] = manager + return resolved_store, manager diff --git a/app/src/doctor_workstation/services/mock_repository.py b/app/src/doctor_workstation/services/mock_repository.py index ee1dfd5b6..6a1bc0ef5 100644 --- a/app/src/doctor_workstation/services/mock_repository.py +++ b/app/src/doctor_workstation/services/mock_repository.py @@ -2588,8 +2588,11 @@ class DemoDoctorRepository: "room_id": "manual-upload", "status": 2, "status_text": "已结束", - "recording_status_text": "待上传", - "recording_urls_list": [], + "recording_status_text": "待上传", + "recording_urls_list": [], + "local_audio_status": 0, + "local_audio_status_text": "无本地录音", + "local_audio_urls_list": [], "transcription_status": "not_started", "transcription_status_text": "未生成文字", "transcript_text": "", @@ -2633,25 +2636,60 @@ class DemoDoctorRepository: record["recording_status_text"] = "录制完成" return deepcopy(record) - def upload_call_recording( - self, - path: str | PathLike[str], - diagnosis_id: int, - *, - call_record_id: int | None = None, - ) -> dict[str, Any]: - """Upload then attach a demo video using the production sequence.""" - - file_url = self.upload_material(path, "video") - target_id = call_record_id - if target_id is None: - target_id = int(self.create_manual_call_record(diagnosis_id)["id"]) - self.attach_local_call_recording(diagnosis_id, file_url, call_record_id=target_id) - return { - "diagnosis_id": diagnosis_id, - "call_record_id": target_id, - "file_url": file_url, - } + def upload_call_recording( + self, + path: str | PathLike[str], + diagnosis_id: int, + *, + call_record_id: int | None = None, + mime_type: str = "audio/webm", + ) -> dict[str, Any]: + """Upload then attach a demo local-audio file using the production sequence.""" + + source_path = Path(path) + is_audio = source_path.suffix.lower() in { + ".ogg", + ".opus", + ".mp3", + ".wav", + ".m4a", + ".aac", + ".amr", + ".wma", + } or ( + source_path.suffix.lower() == ".webm" + and str(mime_type or "").lower().startswith("audio/") + ) + file_url = self.upload_material(path, "file" if is_audio else "video") + target_id = call_record_id + if target_id is None: + target_id = int(self.create_manual_call_record(diagnosis_id)["id"]) + if is_audio: + with self._lock: + record = next( + ( + row + for row in self._call_records.setdefault(diagnosis_id, []) + if int(row.get("id") or 0) == int(target_id) + ), + None, + ) + if record is None: + raise RepositoryNotFoundError("call record not found") + urls = record.setdefault("local_audio_urls_list", []) + if file_url not in urls: + urls.append(file_url) + record["local_audio_status"] = 2 + record["local_audio_status_text"] = "已保存" + else: + self.attach_local_call_recording(diagnosis_id, file_url, call_record_id=target_id) + return { + "diagnosis_id": diagnosis_id, + "call_record_id": target_id, + "file_url": file_url, + "media_kind": "local_audio" if is_audio else "video", + "completed": True, + } def list_im_chat_messages( self, diagnosis_id: int, *, only_archived: bool = True @@ -2890,8 +2928,11 @@ class DemoDoctorRepository: replay = { **record, "status_text": "呼叫中", - "recording_status_text": "未录制", - "recording_urls_list": [], + "recording_status_text": "未录制", + "recording_urls_list": [], + "local_audio_status": 0, + "local_audio_status_text": "无本地录音", + "local_audio_urls_list": [], "transcription_status": "not_started", "transcription_status_text": "未生成文字", "transcript_text": "", @@ -2903,13 +2944,21 @@ class DemoDoctorRepository: self._call_records.setdefault(diagnosis_id, []).insert(0, replay) return deepcopy(record) - def end_call(self, diagnosis_id: int) -> dict[str, Any]: + def end_call( + self, diagnosis_id: int, *, call_record_id: int | str | None = None + ) -> dict[str, Any]: """Persistently mark the demo call record ended.""" with self._lock: - record = self._calls.get(diagnosis_id) - if record is None: - raise RepositoryNotFoundError(f"active call for {diagnosis_id} not found") + record = self._calls.get(diagnosis_id) + if record is None: + raise RepositoryNotFoundError(f"active call for {diagnosis_id} not found") + if call_record_id is not None and str(record.get("id") or "") != str( + call_record_id + ): + raise RepositoryNotFoundError( + f"active call record {call_record_id} for {diagnosis_id} not found" + ) record["status"] = "ended" record["ended_at"] = datetime.now().replace(microsecond=0).isoformat(sep=" ") replay = next( @@ -2930,15 +2979,27 @@ class DemoDoctorRepository: ) return deepcopy(record) - def bind_call_room(self, diagnosis_id: int, room_id: str) -> dict[str, Any]: + def bind_call_room( + self, + diagnosis_id: int, + room_id: str, + *, + call_record_id: int | str | None = None, + ) -> dict[str, Any]: """Persist the room identifier on the active demo call.""" if not room_id.strip(): raise ValueError("room_id is required") with self._lock: - record = self._calls.get(diagnosis_id) - if record is None: - raise RepositoryNotFoundError(f"active call for {diagnosis_id} not found") + record = self._calls.get(diagnosis_id) + if record is None: + raise RepositoryNotFoundError(f"active call for {diagnosis_id} not found") + if call_record_id is not None and str(record.get("id") or "") != str( + call_record_id + ): + raise RepositoryNotFoundError( + f"active call record {call_record_id} for {diagnosis_id} not found" + ) record["room_id"] = room_id.strip() record["status"] = "connected" replay = next( @@ -2957,9 +3018,10 @@ class DemoDoctorRepository: "status_text": "通话中", } ) - return { - "diagnosis_id": diagnosis_id, - "room_id": room_id.strip(), + return { + "diagnosis_id": diagnosis_id, + "call_record_id": record["id"], + "room_id": room_id.strip(), "cloud_recording": {"started": False, "message": "演示模式不录制"}, } diff --git a/app/src/doctor_workstation/services/repository.py b/app/src/doctor_workstation/services/repository.py index 13a997b88..4d7c754db 100644 --- a/app/src/doctor_workstation/services/repository.py +++ b/app/src/doctor_workstation/services/repository.py @@ -2,16 +2,18 @@ from __future__ import annotations -import mimetypes -import re -import time +import mimetypes +import re +import time from collections.abc import Callable, Iterator, Mapping, Sequence -from contextlib import suppress -from datetime import date +from contextlib import suppress +from datetime import date +from inspect import Parameter, signature from io import BytesIO from os import PathLike -from pathlib import Path -from typing import Any, Final, Literal, Protocol +from pathlib import Path +from typing import Any, Final, Literal, Protocol +from uuid import uuid4 from doctor_workstation.core.errors import ( ApiBusinessError, @@ -631,14 +633,15 @@ class DoctorRepository(Protocol): ) -> Any: """Attach one uploaded replay URI to a call record.""" - def upload_call_recording( - self, - path: str | PathLike[str], - diagnosis_id: int, - *, - call_record_id: int | None = None, - ) -> dict[str, Any]: - """Upload a local video then attach it to a real call record.""" + def upload_call_recording( + self, + path: str | PathLike[str], + diagnosis_id: int, + *, + call_record_id: int | None = None, + mime_type: str = "audio/webm", + ) -> dict[str, Any]: + """Upload a locally captured call recording to a real call record.""" def list_im_chat_messages( self, diagnosis_id: int, *, only_archived: bool = True @@ -699,11 +702,19 @@ class DoctorRepository(Protocol): def start_call(self, diagnosis_id: int, patient_id: int, *, call_type: int = 2) -> Any: """Create a call record.""" - def end_call(self, diagnosis_id: int) -> Any: - """End the active diagnosis call.""" - - def bind_call_room(self, diagnosis_id: int, room_id: str) -> Any: - """Bind a TRTC room to the active call.""" + def end_call( + self, diagnosis_id: int, *, call_record_id: int | str | None = None + ) -> Any: + """End the exact active call when its server identity is available.""" + + def bind_call_room( + self, + diagnosis_id: int, + room_id: str, + *, + call_record_id: int | str | None = None, + ) -> Any: + """Bind a TRTC room to the exact active call and start cloud recording.""" def start_call_transcription( self, @@ -2322,31 +2333,75 @@ class RemoteDoctorRepository: body["call_record_id"] = call_record_id return self.client.post("tcm.diagnosis/attachLocalCallRecording", body) - def upload_call_recording( - self, - path: str | PathLike[str], - diagnosis_id: int, - *, - call_record_id: int | None = None, - ) -> dict[str, Any]: - """Perform the same upload/create/attach sequence as ``CallRecordPanel``.""" - - if diagnosis_id <= 0: - raise ValueError("diagnosis_id must be positive") - # Match the admin component exactly: upload first so a failed upload does - # not leave behind an empty synthetic call record. - file_url = self.upload_material(path, "video") - target_id = call_record_id - if target_id is None: - target_id = int(self.create_manual_call_record(diagnosis_id).get("id") or 0) - if target_id <= 0: - raise ApiProtocolError("tcm.diagnosis/createManualCallRecord returned no id") - self.attach_local_call_recording(diagnosis_id, file_url, call_record_id=target_id) - return { - "diagnosis_id": diagnosis_id, - "call_record_id": target_id, - "file_url": file_url, - } + def upload_call_recording( + self, + path: str | PathLike[str], + diagnosis_id: int, + *, + call_record_id: int | None = None, + mime_type: str = "audio/webm", + ) -> dict[str, Any]: + """Chunk-upload one local audio recording and attach it atomically.""" + + if diagnosis_id <= 0: + raise ValueError("diagnosis_id must be positive") + if call_record_id is not None and call_record_id <= 0: + raise ValueError("call_record_id must be positive") + recording_path = Path(path).expanduser().resolve() + if not recording_path.is_file(): + raise ValueError(f"recording file does not exist: {recording_path}") + file_size = recording_path.stat().st_size + if file_size <= 0: + raise ValueError("recording file must not be empty") + + chunk_size = 4 * 1024 * 1024 + chunk_total = (file_size + chunk_size - 1) // chunk_size + upload_id = f"local_audio_{uuid4().hex}" + file_name = recording_path.name + clean_mime = str(mime_type or "audio/webm").strip()[:120] or "audio/webm" + final_result: Mapping[str, Any] | None = None + bound_call_record_id = call_record_id + with recording_path.open("rb") as stream: + for chunk_index in range(chunk_total): + content = stream.read(chunk_size) + if not content: + raise ApiProtocolError("local recording ended before all chunks were read") + result = self.client.post_multipart( + "tcm.diagnosis/uploadCallRecording", + files={"file": (file_name, content, clean_mime)}, + data={ + "diagnosis_id": diagnosis_id, + "call_record_id": bound_call_record_id or 0, + "upload_id": upload_id, + "file_name": file_name, + "file_size": file_size, + "mime_type": clean_mime, + "chunk_index": chunk_index, + "chunk_total": chunk_total, + }, + ) + final_result = _require_mapping( + result, + "tcm.diagnosis/uploadCallRecording", + ) + returned_id = int(final_result.get("call_record_id") or 0) + if returned_id <= 0: + raise ApiProtocolError( + "uploadCallRecording returned no call_record_id" + ) + if bound_call_record_id is None: + bound_call_record_id = returned_id + elif returned_id != bound_call_record_id: + raise ApiProtocolError( + "uploadCallRecording returned a different call_record_id" + ) + + if final_result is None or not bool(final_result.get("completed")): + raise ApiProtocolError("uploadCallRecording did not complete the local audio upload") + file_url = str(final_result.get("file_url") or "").strip() + if not file_url: + raise ApiProtocolError("uploadCallRecording returned no COS file URL") + return dict(final_result) def list_im_chat_messages( self, diagnosis_id: int, *, only_archived: bool = True @@ -2546,20 +2601,53 @@ class RemoteDoctorRepository: ) return {"call_record_id": call_record_id} - def end_call(self, diagnosis_id: int) -> Any: - """End the active call/recording associated with a diagnosis.""" - - return self.client.post("tcm.diagnosis/endCall", {"diagnosis_id": diagnosis_id}) - - def bind_call_room(self, diagnosis_id: int, room_id: str) -> Any: - """Bind the actual TRTC room to the active call record.""" - - if not room_id.strip(): - raise ValueError("room_id is required") - return self.client.post( - "tcm.diagnosis/bindCallRoom", - {"diagnosis_id": diagnosis_id, "room_id": room_id.strip()}, - ) + @staticmethod + def _optional_call_record_id(call_record_id: int | str | None) -> int | str | None: + if call_record_id is None: + return None + if isinstance(call_record_id, bool) or not str(call_record_id).strip(): + raise ValueError("call_record_id must be a positive identifier") + try: + normalized = int(str(call_record_id).strip()) + except (TypeError, ValueError) as exc: + raise ValueError("call_record_id must be a positive identifier") from exc + if normalized <= 0: + raise ValueError("call_record_id must be a positive identifier") + return normalized + + def end_call( + self, diagnosis_id: int, *, call_record_id: int | str | None = None + ) -> Any: + """Stop COS cloud recording and end the exact call record.""" + + body: dict[str, Any] = {"diagnosis_id": diagnosis_id} + normalized_id = self._optional_call_record_id(call_record_id) + if normalized_id is not None: + body["call_record_id"] = normalized_id + return self.client.post("tcm.diagnosis/endCall", body) + + def bind_call_room( + self, + diagnosis_id: int, + room_id: str, + *, + call_record_id: int | str | None = None, + ) -> Any: + """Bind the actual TRTC room and auto-start COS cloud recording.""" + + if not room_id.strip(): + raise ValueError("room_id is required") + body: dict[str, Any] = { + "diagnosis_id": diagnosis_id, + "room_id": room_id.strip(), + } + normalized_id = self._optional_call_record_id(call_record_id) + if normalized_id is not None: + body["call_record_id"] = normalized_id + return self.client.post( + "tcm.diagnosis/bindCallRoom", + body, + ) @staticmethod def _transcription_identity( @@ -2767,24 +2855,40 @@ def _require_mapping(value: object, endpoint: str) -> Mapping[str, Any]: return value -def _client_request( +def _client_request( client: Any, method: str, endpoint: str, payload: Mapping[str, Any] | None = None, *, timeout: float | None = None, -) -> Any: - """Call get/post, ignoring timeout kwargs that test doubles do not accept.""" - - fn = getattr(client, method) - params = dict(payload or {}) - try: - if timeout is None: - return fn(endpoint, params) - return fn(endpoint, params, timeout=timeout) - except TypeError: - return fn(endpoint, params) +) -> Any: + """Call get/post once, omitting timeout for legacy test doubles. + + Capability is determined before invocation. Catching ``TypeError`` from + the call itself is unsafe for POST because the transport may already have + submitted the write before raising, and a fallback call would duplicate it. + """ + + fn = getattr(client, method) + params = dict(payload or {}) + if timeout is not None: + try: + parameters = signature(fn).parameters.values() + except (TypeError, ValueError): + parameters = () + accepts_timeout = any( + parameter.kind is Parameter.VAR_KEYWORD + or ( + parameter.name == "timeout" + and parameter.kind + in {Parameter.POSITIONAL_OR_KEYWORD, Parameter.KEYWORD_ONLY} + ) + for parameter in parameters + ) + if accepts_timeout: + return fn(endpoint, params, timeout=timeout) + return fn(endpoint, params) def _material_kind( diff --git a/app/src/doctor_workstation/ui/diagnosis_index_widgets.py b/app/src/doctor_workstation/ui/diagnosis_index_widgets.py index 65acc17d4..b6e8abb30 100644 --- a/app/src/doctor_workstation/ui/diagnosis_index_widgets.py +++ b/app/src/doctor_workstation/ui/diagnosis_index_widgets.py @@ -260,11 +260,32 @@ def _appointment_status(record: Any) -> int: return _as_int(status, -1) -def _appointment_active(record: Any) -> bool: - return _has_appointment(record) and _appointment_status(record) == 1 - - -def _single_cancellable_appointment(record: Any) -> Any | None: +def _appointment_active(record: Any) -> bool: + return _has_appointment(record) and _appointment_status(record) == 1 + + +def video_call_state(record: Any) -> str: + """Return the server-owned state of the latest video-call session.""" + + return str( + first_value( + record, + "video_call_hint.state", + "video_hint.state", + "video_hint", + default="none", + ) + or "none" + ).strip().lower() + + +def video_call_is_live(record: Any) -> bool: + """Only a room already opened by the doctor may be joined from this list.""" + + return video_call_state(record) == "live" + + +def _single_cancellable_appointment(record: Any) -> Any | None: """Return the sole cancellable appointment, never an ambiguous row-level fallback.""" if not _has_appointment(record) or _appointment_status(record) not in {1, 4}: @@ -317,12 +338,34 @@ def _video_ids_complete(record: Any) -> bool: ) -def _prescription_action_label(record: Any, *, force_open: bool = False) -> str: - if force_open: - return "开方" - audit = _as_int(first_value(record, "prescription_audit_status", "audit_status"), -1) - voided = _as_int(first_value(record, "prescription_void_status", "void_status"), 0) - return "查看处方" if audit == 1 and voided != 1 else "开方" +def prescription_action(record: Any, *, force_open: bool = False) -> tuple[str, str]: + """Return the label and immutable click intent for the current appointment.""" + + if force_open: + return "开方", "open" + audit = _as_int(first_value(record, "prescription_audit_status", "audit_status"), -1) + voided = _as_int(first_value(record, "prescription_void_status", "void_status"), 0) + explicit_current = first_value(record, "current_has_prescription", default=None) + if explicit_current is not None: + has_current = _as_bool(explicit_current) + elif _as_int(first_value(record, "current_prescription_id", default=0)) > 0: + has_current = True + else: + explicit_legacy = first_value(record, "has_prescription", default=None) + has_current = ( + _as_bool(explicit_legacy) + if explicit_legacy is not None + else audit in {0, 1, 2} + ) + if not has_current: + return "开方", "open" + if audit == 1 and voided != 1: + return "查看处方", "view" + return "编辑处方", "edit" + + +def _prescription_action_label(record: Any, *, force_open: bool = False) -> str: + return prescription_action(record, force_open=force_open)[0] class FlowLayout(QLayout): @@ -1486,25 +1529,32 @@ class DiagnosisTableHost(QFrame): layout.setContentsMargins(3, 2, 3, 2) layout.setAlignment(Qt.AlignmentFlag.AlignCenter) video_capable = self.action_policy.get("video_call", False) - if video_capable and _appointment_active(record): - button = QToolButton(host) - button.setText("进入视频问诊") - button.setProperty("rowLink", "primary") - button.setCursor(Qt.CursorShape.PointingHandCursor) - button.setToolTip("进入医生端视频问诊(将使用摄像头和麦克风)") - button.setEnabled(_video_ids_complete(record)) - if not button.isEnabled(): - button.setToolTip("患者、诊单或挂号标识不完整,无法进入视频问诊") - button.clicked.connect( - lambda _checked=False, item=record: self.video_requested.emit(item) - ) - layout.addWidget(button) - else: - status = "—" - if video_capable: - status = {3: "已完成", 4: "已过号"}.get( - _appointment_status(record), "未挂号" if not _has_appointment(record) else "—" - ) + call_state = video_call_state(record) + if video_capable and _appointment_active(record) and call_state == "live": + button = QToolButton(host) + button.setText("进入视频问诊") + button.setProperty("rowLink", "primary") + button.setCursor(Qt.CursorShape.PointingHandCursor) + button.setToolTip("医生已发起视频会话,点击进入(将使用摄像头和麦克风)") + button.setEnabled(_video_ids_complete(record)) + if not button.isEnabled(): + button.setToolTip("患者、诊单或挂号标识不完整,无法进入视频问诊") + button.clicked.connect( + lambda _checked=False, item=record: self.video_requested.emit(item) + ) + layout.addWidget(button) + else: + status = "—" + if video_capable: + if call_state == "pending_room": + status = "等待接通" + elif _appointment_active(record): + status = "暂无通话" + else: + status = {3: "已完成", 4: "已过号"}.get( + _appointment_status(record), + "未挂号" if not _has_appointment(record) else "—", + ) label = QLabel(display_text(status), host) label.setProperty("fixedMuted", True) label.setAlignment(Qt.AlignmentFlag.AlignCenter) @@ -2201,7 +2251,8 @@ __all__ = [ "DiagnosisLoadingOverlay", "DiagnosisPager", "DiagnosisTableHost", - "DiagnosisTableModel", - "FlowLayout", - "FlowWidget", -] + "DiagnosisTableModel", + "FlowLayout", + "FlowWidget", + "prescription_action", +] diff --git a/app/src/doctor_workstation/ui/dialogs/ai_consult.py b/app/src/doctor_workstation/ui/dialogs/ai_consult.py index 1e0b3721e..02d6ead99 100644 --- a/app/src/doctor_workstation/ui/dialogs/ai_consult.py +++ b/app/src/doctor_workstation/ui/dialogs/ai_consult.py @@ -3,7 +3,9 @@ from __future__ import annotations import json +import re from collections.abc import Mapping, Sequence +from collections import namedtuple from datetime import datetime from threading import Event from typing import Any @@ -214,6 +216,32 @@ QDialog#AiConsultDialog QLabel#AiConsultBody { background-color: transparent; font-size: 12px; } +QDialog#AiConsultDialog QLabel#AiConsultInsightMarker { + color: #5B67F1; + background-color: #EEF1FF; + border: 1px solid #DDE3FA; + border-radius: 9px; + min-width: 26px; + max-width: 26px; + min-height: 22px; + max-height: 22px; + font-size: 11px; + font-weight: 700; + padding: 0; +} +QDialog#AiConsultDialog QLabel#AiConsultInsightText { + color: #3F4E75; + background-color: transparent; + font-size: 12.5px; + padding: 1px 0; + line-height: 22px; +} +QDialog#AiConsultDialog QLabel#AiConsultInsightPlaceholder { + color: #8A94B3; + background-color: transparent; + font-size: 12px; + padding: 2px 0; +} QDialog#AiConsultDialog QLabel#AiConsultTag[level="high"] { color: #F15B67; background-color: #FFF1F3; @@ -994,6 +1022,149 @@ def _analysis_markdown(analysis: Mapping[str, Any]) -> str: return "\n\n".join(parts) +_InsightItem = namedtuple("_InsightItem", "kind marker label text") + +_INSIGHT_LIST_RE = re.compile(r"^\s*(\d{1,2})\s*([\.、))]\s*)") +_INSIGHT_LIST_LOOKAHEAD_RE = re.compile(r"(?:^|(?<=[::;;。\s]))(\d{1,2})\s*([\.、))])\s*") +_INSIGHT_LABEL_RE = re.compile(r"^([\u4e00-\u9fa5A-Za-z()()·\s]{1,12})[::]\s*(.*)$") + + +def _split_insight_segments(text: str) -> list[_InsightItem]: + """把较稠密的分析段落拆成结构化条目,便于分条阅读。 + + 识别模式: + - 数字编号开头 (1. / 2、 / 3) / 4)) 作为 list_item + - 文本中嵌入的编号列表 (如 "...阶段:1. 肾功评估:... 2. 代谢评估:...") + 也会被识别,编号前的内容视为序言 + - "短中文标签:内容" 中含 已知事实 / 建议 / 信息缺口 / 综合推断 等 + 可作为 lead_item, 标签部分加粗 + - 其余按 。 / ; 分句, 每句成一个 plain_item + + 每种类型都会渲染成独立 QLabel, 以改善阅读节奏。 + """ + raw = display_text(text, "").strip() + if not raw: + return [] + + # 检查是否包含嵌入式编号列表: 先找第一次出现 "。 数字。 " 或 "...:数字。 " + lookahead_match = _INSIGHT_LIST_LOOKAHEAD_RE.search(raw) + starts_with_list = _INSIGHT_LIST_RE.match(raw) is not None + + if not starts_with_list and lookahead_match is not None: + # 切出序言 + 多个列表条目; 序言尽量停在最近的句末标点 / 冒号处 + # 注意: lookahead 是 zero-width 的 lookbehind, 所以 start() 即编号数字位置 + list_start = lookahead_match.start() + preamble_candidate = raw[:list_start].rstrip() + sentence_tail = re.search(r"[。;;][^。;;]*$", preamble_candidate) + if sentence_tail is not None: + preamble = preamble_candidate[: sentence_tail.end()].rstrip("。;;:: \t") + else: + preamble = preamble_candidate.rstrip(":: \t") + body = raw[list_start:].lstrip() + items: list[_InsightItem] = [] + if preamble: + items.extend(_split_plain_paragraph(preamble)) + items.extend(_split_numbered_list(body)) + return items + + if starts_with_list: + return _split_numbered_list(raw) + + return _split_plain_paragraph(raw) + + +def _split_numbered_list(text: str) -> list[_InsightItem]: + """把一段文本按编号列表解析;开头的非编号内容视为序言。""" + items: list[_InsightItem] = [] + cursor = 0 + length = len(text) + prefix_consumed = False + while cursor < length: + remainder = text[cursor:] + list_match = _INSIGHT_LIST_RE.match(remainder) + if list_match is None: + # 剩余部分按含序言的段落处理 (无编号前缀, 仍按句末分条) + tail = remainder.strip() + if tail and not prefix_consumed: + items.extend(_split_plain_paragraph(tail)) + elif tail: + # 已消费过编号, 余下尾段按段落继续分条 + items.extend(_split_plain_paragraph(tail)) + break + prefix_consumed = True + marker = f"{list_match.group(1)}." + after_marker = remainder[list_match.end():] + # 在本条内找到最近的句末标点; 或下一个编号之前 + sentence_match = re.search(r"[。;;\n]", after_marker) + candidate_ends: list[int] = [] + if sentence_match is not None: + candidate_ends.append(sentence_match.end()) + next_marker_match = re.search( + r"\s\d{1,2}\s*[\.、))]", + after_marker, + ) + if next_marker_match is not None: + candidate_ends.append(next_marker_match.start() + 1) + if candidate_ends: + inner_end = min(candidate_ends) + else: + inner_end = len(after_marker) + segment = after_marker[:inner_end].strip("。;; \n").strip() + if segment: + items.append(_split_label_or_sentence(segment, marker=marker)) + cursor += list_match.end() + inner_end + while cursor < length and text[cursor] in "。;;\n": + cursor += 1 + return items + + +def _split_plain_paragraph(text: str) -> list[_InsightItem]: + items: list[_InsightItem] = [] + if not text.strip(): + return items + + cursor = 0 + length = len(text) + while cursor < length: + remainder = text[cursor:] + sentence_match = re.search(r"[。;;\n]", remainder) + if sentence_match is not None: + segment = remainder[: sentence_match.start()].strip() + if segment: + items.append(_split_label_or_sentence(segment)) + cursor += sentence_match.end() + continue + tail = remainder.strip() + if tail: + items.append(_split_label_or_sentence(tail)) + break + return items + + +def _split_label_or_sentence(segment: str, *, marker: str | None = None) -> _InsightItem: + """对单段片段进一步检查是否含 '标签:内容' 结构。""" + label_match = _INSIGHT_LABEL_RE.match(segment) + if label_match: + label = label_match.group(1).strip() + body = label_match.group(2).strip() + if label and body: + kind = "list" if marker else "lead" + return _InsightItem(kind=kind, marker=marker or "", label=label, text=body) + if marker: + return _InsightItem(kind="list", marker=marker, label="", text=segment) + return _InsightItem(kind="plain", marker="", label="", text=segment) + + +def _escape_html(value: str) -> str: + """转义富文本片段,防止分析文本中带 HTML/Markdown 误伤样式。""" + return ( + (value or "") + .replace("&", "&") + .replace("<", "<") + .replace(">", ">") + ) + + class _FlowRow(QWidget): def __init__(self, parent: QWidget | None = None) -> None: super().__init__(parent) @@ -1059,7 +1230,7 @@ class _ChatBubble(QWidget): ) -> None: super().__init__(parent) row = QHBoxLayout(self) - row.setContentsMargins(8, 4, 8, 4) + row.setContentsMargins(8, 6, 8, 6) row.setSpacing(8) avatar = QLabel("医" if role == "doctor" else "患" if role == "patient" else "AI") avatar.setObjectName("AiConsultRole") @@ -1383,7 +1554,7 @@ class AiConsultDialog(QDialog): self.chat_host = QWidget() self.chat_layout = QVBoxLayout(self.chat_host) self.chat_layout.setContentsMargins(16, 16, 16, 8) - self.chat_layout.setSpacing(10) + self.chat_layout.setSpacing(12) self.chat_layout.addStretch(1) self.chat_scroll.setWidget(self.chat_host) scroll_bar = self.chat_scroll.verticalScrollBar() @@ -1576,7 +1747,7 @@ class AiConsultDialog(QDialog): insight_title.setObjectName("AiConsultSection") layout.addWidget(insight_title) self.insight_host = QVBoxLayout() - self.insight_host.setSpacing(8) + self.insight_host.setSpacing(10) layout.addLayout(self.insight_host) tools_title = QLabel("快捷工具") @@ -1708,27 +1879,78 @@ class AiConsultDialog(QDialog): card = QFrame() card.setObjectName("AiConsultInsightRow") _style_surface(card) - inner = QHBoxLayout(card) - inner.setContentsMargins(10, 8, 10, 8) - text = QVBoxLayout() - text.setSpacing(2) + outer = QVBoxLayout(card) + outer.setContentsMargins(14, 12, 14, 14) + outer.setSpacing(10) + + header_row = QHBoxLayout() + header_row.setSpacing(8) + header_row.setContentsMargins(0, 0, 0, 0) heading = QLabel(title) heading.setObjectName("AiConsultRecordTitle") - body = QLabel(detail) - body.setObjectName("AiConsultBody") - body.setWordWrap(True) - text.addWidget(heading) - text.addWidget(body) - inner.addLayout(text, 1) + header_row.addWidget(heading, 1) badge = QLabel(tag) badge.setObjectName("AiConsultTag") _style_surface(badge) badge.setProperty("level", level) badge.style().unpolish(badge) badge.style().polish(badge) - inner.addWidget(badge, 0, Qt.AlignmentFlag.AlignTop) + header_row.addWidget(badge, 0, Qt.AlignmentFlag.AlignTop) + outer.addLayout(header_row) + + body_host = QVBoxLayout() + body_host.setSpacing(8) + body_host.setContentsMargins(0, 0, 0, 0) + segments = _split_insight_segments(detail) + if not segments: + placeholder = QLabel(detail or "暂无数据") + placeholder.setObjectName("AiConsultInsightPlaceholder") + placeholder.setWordWrap(True) + body_host.addWidget(placeholder) + else: + for segment in segments: + body_host.addWidget(self._build_insight_item(segment)) + outer.addLayout(body_host) self.insight_host.addWidget(card) + def _build_insight_item(self, item: _InsightItem) -> QWidget: + row = QWidget() + layout = QHBoxLayout(row) + layout.setContentsMargins(0, 0, 0, 0) + layout.setSpacing(8) + + marker_label: QLabel | None = None + if item.kind == "list" and item.marker: + marker_label = QLabel(item.marker) + marker_label.setObjectName("AiConsultInsightMarker") + marker_label.setAlignment( + Qt.AlignmentFlag.AlignTop | Qt.AlignmentFlag.AlignHCenter + ) + + text_label = QLabel() + text_label.setObjectName("AiConsultInsightText") + text_label.setWordWrap(True) + text_label.setTextInteractionFlags( + Qt.TextInteractionFlag.TextSelectableByMouse + ) + text_label.setTextFormat(Qt.TextFormat.RichText) + + if item.label: + html_label = _escape_html(item.label) + html_body = _escape_html(item.text or "") + text_label.setText( + f"{html_label}" + f"" + f"{html_body}" + ) + else: + text_label.setText(_escape_html(item.text or "")) + + if marker_label is not None: + layout.addWidget(marker_label, 0, Qt.AlignmentFlag.AlignTop) + layout.addWidget(text_label, 1) + return row + def _apply_header( self, payload: Mapping[str, Any], diff --git a/app/src/doctor_workstation/ui/dialogs/diagnosis.py b/app/src/doctor_workstation/ui/dialogs/diagnosis.py index aa03f91d1..cf8265e4d 100644 --- a/app/src/doctor_workstation/ui/dialogs/diagnosis.py +++ b/app/src/doctor_workstation/ui/dialogs/diagnosis.py @@ -3,6 +3,7 @@ from __future__ import annotations import re +import sqlite3 from collections.abc import Mapping, Sequence from contextlib import suppress from typing import Any @@ -69,6 +70,7 @@ from ..widgets import ( page_total, run_async, ) +from .local_audio_queue import LocalAudioQueueDialog from .prescription_ai import can_open_diagnosis_ai_report, present_diagnosis_ai_report _PHONE_PERMISSION = "tcm.diagnosis/phonePlain" @@ -747,6 +749,7 @@ class DiagnosisDialog(QDialog): """ saved = Signal() + _local_audio_upload_completed = Signal(int, int) def __init__( self, @@ -841,6 +844,10 @@ class DiagnosisDialog(QDialog): self._recording_players: list[RecordingPlayerDialog] = [] self._inline_recording_cells: list[RecordingPlaybackCell] = [] self._last_order_detail_dialog: QDialog | None = None + self._local_audio_dialog: LocalAudioQueueDialog | None = None + self._local_audio_upload_manager: Any = None + self._local_audio_upload_listener: Any = None + self._video_reload_pending = False self._orders_page = 1 self._orders_page_size = 10 self._orders_total = 0 @@ -868,6 +875,10 @@ class DiagnosisDialog(QDialog): self._daily_panels: list[DailyRecordPanel] = [] self._owner = None self._owner_filter_installed = False + self._local_audio_upload_completed.connect( + self._local_audio_upload_succeeded, + type=Qt.ConnectionType.QueuedConnection, + ) self.setObjectName("DiagnosisDialogRoot") self.setWindowFlags(Qt.WindowType.Dialog | Qt.WindowType.FramelessWindowHint) @@ -1433,6 +1444,11 @@ class DiagnosisDialog(QDialog): hint.setWordWrap(True) toolbar.addWidget(hint, 1) toolbar.addStretch(1) + self.local_audio_queue_button = QPushButton("本机录音文件") + self.local_audio_queue_button.setObjectName("DiagnosisLocalAudioQueueButton") + self.local_audio_queue_button.setAccessibleName("查看本机录音文件及上传状态") + self.local_audio_queue_button.clicked.connect(self._open_local_audio_queue) + toolbar.addWidget(self.local_audio_queue_button) self.video_upload_button = QPushButton("上传本地回放") self.video_upload_button.setProperty("variant", "primary") self.video_upload_button.clicked.connect( @@ -1556,10 +1572,10 @@ class DiagnosisDialog(QDialog): ), "video": ( ("录制回放", 440), + ("房间号", 180), ("开始时间", 170), ("结束时间", 170), ("通话类型", 100), - ("房间号", 180), ("时长", 110), ("状态", 90), ("录制 / 文字", 120), @@ -1695,6 +1711,10 @@ class DiagnosisDialog(QDialog): ) self.prescribe_button.setVisible(self._editable and self._can_prescribe) self.video_upload_button.setVisible(self._editable and self._can_video_upload) + self.local_audio_queue_button.setVisible(self._can_video_upload) + self.local_audio_queue_button.setEnabled( + self._diagnosis_id > 0 and self._can_video_upload + ) offset_visible = self._editable and self._can_offset self.order_offset.setVisible(offset_visible) self.order_offset_save.setVisible(offset_visible) @@ -1914,6 +1934,10 @@ class DiagnosisDialog(QDialog): with suppress(RuntimeError): self._last_order_detail_dialog.close() self._last_order_detail_dialog = None + if self._local_audio_dialog is not None: + with suppress(RuntimeError): + self._local_audio_dialog.close() + self._local_audio_dialog = None self._diagnosis_id = int(diagnosis_id) self._patient_id = 0 self._editable = bool( @@ -1939,6 +1963,7 @@ class DiagnosisDialog(QDialog): self._tab_generations[key] += 1 self._loaded_tabs.clear() self._loading_tabs.clear() + self._video_reload_pending = False self._daily_todo_status = None self._orders_page = 1 self._orders_total = 0 @@ -2208,6 +2233,8 @@ class DiagnosisDialog(QDialog): self._ensure_tab_loaded(self._current_tab_key(), force=True) def _invalidate_requests(self) -> None: + self._stop_watching_local_audio_uploads() + self._video_reload_pending = False self._generation += 1 self._save_generation += 1 self._orders_generation += 1 @@ -2232,6 +2259,11 @@ class DiagnosisDialog(QDialog): with suppress(RuntimeError): order_dialog.close() self._last_order_detail_dialog = None + local_audio_dialog = getattr(self, "_local_audio_dialog", None) + if local_audio_dialog is not None: + with suppress(RuntimeError): + local_audio_dialog.close() + self._local_audio_dialog = None if hasattr(self, "readonly_loading"): self.readonly_loading.hide() if hasattr(self, "drawer_loading"): @@ -2474,7 +2506,11 @@ class DiagnosisDialog(QDialog): def _tab_changed(self, _index: int) -> None: self._sync_save_button() if self._authoritative_detail_loaded and not self._standalone_readonly: - self._ensure_tab_loaded(self._current_tab_key()) + key = self._current_tab_key() + if key == "video": + self._reload_video_records(self._diagnosis_id) + else: + self._ensure_tab_loaded(key) def _load_visible_readonly_sections(self) -> None: permission_map = {key: codes for key, _label, codes in _TAB_DEFINITIONS} @@ -2635,6 +2671,8 @@ class DiagnosisDialog(QDialog): panel.set_messages(rows) if not self._standalone_readonly and self._current_tab_key() == key: self._clear_message() + if key == "video": + self._flush_video_reload_if_pending(diagnosis_id) def _tab_load_error( self, @@ -2650,6 +2688,8 @@ class DiagnosisDialog(QDialog): self._set_tab_error(key, text) if not self._standalone_readonly and self._current_tab_key() == key: self._show_message(text, "danger", action_text="重试") + if key == "video": + self._flush_video_reload_if_pending(diagnosis_id) def _load_daily_range(self, start: str, end: str, *, force: bool = False) -> None: key = "daily" @@ -3116,6 +3156,91 @@ class DiagnosisDialog(QDialog): "video", ) + def _open_local_audio_queue(self) -> None: + if self._diagnosis_id <= 0 or not self._can_video_upload: + self._show_message("当前账号无本机录音上传权限或接口不可用。", "warning") + return + current = self._local_audio_dialog + if current is not None and current.isVisible(): + current.raise_() + current.activateWindow() + return + try: + dialog = LocalAudioQueueDialog( + self.repository, + self._diagnosis_id, + self, + ) + except (OSError, RuntimeError, sqlite3.Error) as error: + self._show_message(f"无法打开本机录音文件:{error}", "danger") + return + self._local_audio_dialog = dialog + opened_diagnosis_id = self._diagnosis_id + self._watch_local_audio_uploads(dialog.manager) + + def clear_dialog(_result: int) -> None: + if self._local_audio_dialog is dialog: + self._local_audio_dialog = None + + dialog.finished.connect(clear_dialog) + dialog.open() + # Opening the queue commonly follows a background upload that completed + # before this dialog existed, so also refresh the server-backed rows now. + self._reload_video_records(opened_diagnosis_id) + + def _local_audio_upload_succeeded( + self, + diagnosis_id: int, + _call_record_id: int, + ) -> None: + if self._local_audio_upload_manager is None: + return + self._reload_video_records(diagnosis_id) + + def _reload_video_records(self, diagnosis_id: int) -> None: + if int(diagnosis_id) != self._diagnosis_id: + return + if "video" in self._loading_tabs: + self._video_reload_pending = True + return + self._video_reload_pending = False + self._loaded_tabs.discard("video") + self._ensure_tab_loaded("video", force=True) + + def _watch_local_audio_uploads(self, manager: Any) -> None: + if self._local_audio_upload_manager is manager: + return + self._stop_watching_local_audio_uploads() + + def notify(record: Any) -> None: + with suppress(RuntimeError): + self._local_audio_upload_completed.emit( + int(record.diagnosis_id), + int(record.call_record_id or 0), + ) + + manager.add_upload_listener(notify) + self._local_audio_upload_manager = manager + self._local_audio_upload_listener = notify + + def _stop_watching_local_audio_uploads(self) -> None: + manager = self._local_audio_upload_manager + listener = self._local_audio_upload_listener + self._local_audio_upload_manager = None + self._local_audio_upload_listener = None + if manager is not None and listener is not None: + with suppress(Exception): + manager.remove_upload_listener(listener) + + def _flush_video_reload_if_pending(self, diagnosis_id: int) -> None: + if not self._video_reload_pending or diagnosis_id != self._diagnosis_id: + return + self._video_reload_pending = False + QTimer.singleShot( + 0, + lambda expected_id=diagnosis_id: self._reload_video_records(expected_id), + ) + def _sync_chat_archive(self) -> None: if not self._can_chat_sync or self._diagnosis_id <= 0: self._show_message("当前账号无聊天归档同步权限或接口不可用。", "warning") @@ -3616,6 +3741,7 @@ class DiagnosisDialog(QDialog): self._stop_inline_recordings() matrix: list[tuple[Any, ...]] = [] row_urls: list[list[str]] = [] + row_audio_urls: list[list[str]] = [] record_ids: list[int] = [] transcripts: list[str] = [] for row in rows: @@ -3629,6 +3755,22 @@ class DiagnosisDialog(QDialog): if url and url not in normalized: normalized.append(url) row_urls.append(normalized) + raw_audio_urls = first_value( + row, + "local_audio_urls_list", + "local_audio_urls", + default=[], + ) or [] + if isinstance(raw_audio_urls, str) or not isinstance( + raw_audio_urls, Sequence + ): + raw_audio_urls = [raw_audio_urls] + normalized_audio: list[str] = [] + for candidate in raw_audio_urls: + url = str(candidate or "").strip() + if url and url not in normalized_audio: + normalized_audio.append(url) + row_audio_urls.append(normalized_audio) record_ids.append(_int(first_value(row, "id", "call_record_id"), 0)) transcript = self._call_transcript_text(row) transcripts.append(transcript) @@ -3651,22 +3793,41 @@ class DiagnosisDialog(QDialog): recording_status = first_value( row, "recording_status_text", "record_status_text", "record_status" ) + local_audio_status = first_value( + row, + "local_audio_status_text", + default="本机录音已保存" if normalized_audio else "无本机录音", + ) transcript_status = first_value( row, "transcription_status_text", "transcript_status_text", default="文字已生成" if transcript else "未生成文字", ) + room_id = str( + first_value( + row, + "room_id_text", + "room_id", + "room_no", + default="", + ) + or "" + ).strip() matrix.append( ( "" if normalized else "暂无录制回放", + room_id or "历史记录未保存", first_value(row, "start_time_text", "start_time"), first_value(row, "end_time_text", "end_time"), call_type, - first_value(row, "room_id", "room_no"), first_value(row, "duration_text", "duration"), status, - f"{display_text(recording_status)}\n{display_text(transcript_status)}", + ( + f"云端视频:{display_text(recording_status)}\n" + f"本机录音:{display_text(local_audio_status)}\n" + f"转写文字:{display_text(transcript_status)}" + ), "", ) ) @@ -3692,6 +3853,19 @@ class DiagnosisDialog(QDialog): item.setText("") call_record_id = record_ids[row_index] actions: list[QPushButton] = [] + audio_urls = row_audio_urls[row_index] + if audio_urls and call_record_id > 0: + play_audio = self._action_button( + "播放录音", f"播放通话记录 #{call_record_id} 的本机混音录音" + ) + play_audio.setObjectName("DiagnosisLocalAudioPlayback") + play_audio.setProperty("callRecordId", call_record_id) + play_audio.clicked.connect( + lambda _checked=False, target=audio_urls[0]: self._open_recording_player( + target + ) + ) + actions.append(play_audio) transcript = transcripts[row_index] if transcript and call_record_id > 0: view_transcript = self._action_button( diff --git a/app/src/doctor_workstation/ui/dialogs/local_audio_queue.py b/app/src/doctor_workstation/ui/dialogs/local_audio_queue.py new file mode 100644 index 000000000..dcc90add1 --- /dev/null +++ b/app/src/doctor_workstation/ui/dialogs/local_audio_queue.py @@ -0,0 +1,625 @@ +"""Local call-audio upload queue shown from a diagnosis video-history tab.""" + +from __future__ import annotations + +from collections.abc import Mapping +from datetime import datetime, timedelta, timezone +from pathlib import Path +from typing import Any + +from PySide6.QtCore import Qt, QTimer, QUrl +from PySide6.QtGui import QColor, QDesktopServices +from PySide6.QtWidgets import ( + QAbstractItemView, + QDialog, + QFrame, + QHBoxLayout, + QHeaderView, + QLabel, + QPushButton, + QTableWidget, + QTableWidgetItem, + QVBoxLayout, + QWidget, +) + +from ...services.local_audio_queue import ( + LocalAudioQueueStore, + LocalAudioRecord, + LocalAudioUploadManager, + get_local_audio_upload_manager, +) +from ..widgets import run_async + +_STATUS_LABELS = { + "recording": "录制中", + "pending": "待上传", + "uploading": "上传中", + "uploaded": "已上传", + "failed": "上传失败", + "invalid": "无效录音", +} +_STATUS_COLORS = { + "recording": "#5364F5", + "pending": "#B26A00", + "uploading": "#2F6FEB", + "uploaded": "#07966B", + "failed": "#DC4054", + "invalid": "#7886AA", +} +_BUSINESS_TIMEZONE = timezone(timedelta(hours=8)) + +_LOCAL_AUDIO_QSS = """ +QDialog#LocalAudioQueueDialog { + background: #F6F8FD; + color: #111F46; +} +QFrame#LocalAudioQueueHeader, QFrame#LocalAudioQueueSummary, +QFrame#LocalAudioQueueTableCard, QFrame#LocalAudioQueueFooter { + background: #FFFFFF; + border: 1px solid #E2E7F4; + border-radius: 14px; +} +QLabel#LocalAudioQueueTitle { + color: #111F46; + font-size: 20px; + font-weight: 700; +} +QLabel#LocalAudioQueueSubtitle, QLabel#LocalAudioQueueHint { + color: #6E7C9F; + font-size: 13px; +} +QLabel[queueSummary="true"] { + background: #F3F5FB; + border: 1px solid #E6EAF5; + border-radius: 10px; + color: #3F4E75; + font-size: 13px; + font-weight: 600; + padding: 8px 12px; +} +QPushButton { + min-height: 34px; + border: 1px solid #D9E0F2; + border-radius: 9px; + background: #FFFFFF; + color: #354365; + padding: 0 14px; + font-weight: 600; +} +QPushButton:hover { background: #F1F3FF; border-color: #AEB8FF; } +QPushButton:disabled { color: #A5AFC6; background: #F7F8FC; } +QPushButton[variant="primary"] { + color: #FFFFFF; + background: #5661F4; + border-color: #5661F4; +} +QPushButton[variant="danger"] { color: #D83E51; background: #FFF6F7; } +QTableWidget#LocalAudioQueueTable { + background: #FFFFFF; + alternate-background-color: #FAFBFE; + border: 0; + gridline-color: #E8ECF5; + color: #263452; + selection-background-color: #EEF1FF; + selection-color: #111F46; +} +QTableWidget#LocalAudioQueueTable::item { padding: 8px; } +QHeaderView::section { + background: #F5F7FC; + color: #53617F; + border: 0; + border-bottom: 1px solid #E1E6F1; + padding: 10px 8px; + font-weight: 700; +} +""" + + +def _human_size(size: int) -> str: + value = max(0, int(size)) + if value < 1024: + return f"{value} B" + if value < 1024 * 1024: + return f"{value / 1024:.1f} KB" + return f"{value / 1024 / 1024:.1f} MB" + + +def _display_time(value: str) -> str: + raw = str(value or "").strip() + if not raw: + return "—" + try: + parsed = datetime.fromisoformat(raw.replace("Z", "+00:00")) + except ValueError: + return raw.replace("T", " ") + if parsed.tzinfo is not None: + parsed = parsed.astimezone(_BUSINESS_TIMEZONE) + return parsed.strftime("%Y-%m-%d %H:%M:%S") + + +class LocalAudioQueueDialog(QDialog): + """Persistent local-audio list with concurrent upload and retry.""" + + def __init__( + self, + repository: Any, + diagnosis_id: int | None, + parent: QWidget | None = None, + *, + store: LocalAudioQueueStore | None = None, + manager: LocalAudioUploadManager | None = None, + ) -> None: + super().__init__(parent) + self.repository = repository + self._global_scope = diagnosis_id is None + self.diagnosis_id = int(diagnosis_id) if diagnosis_id is not None else None + if manager is None: + self.store, self.manager = get_local_audio_upload_manager(repository, store) + else: + self.store = store or manager.store + self.manager = manager + self._signature: tuple[Any, ...] = () + self._room_fetch_generation = 0 + self._room_fetch_inflight: set[int] = set() + self._room_fetch_attempted: set[int] = set() + self._room_fetch_errors: dict[int, str] = {} + self._closed = False + + self.setObjectName("LocalAudioQueueDialog") + self.setProperty("businessDialog", True) + self.setWindowTitle( + "本机录音上传管理" if self._global_scope else "本机录音文件" + ) + self.setModal(True) + self.setMinimumSize(760, 480) + self.resize(1160, 620) + self.setStyleSheet(_LOCAL_AUDIO_QSS) + self._build_ui() + + self.poll_timer = QTimer(self) + self.poll_timer.setInterval(500) + self.poll_timer.timeout.connect(self.refresh_records) + self.poll_timer.start() + self.manager.submit_pending(diagnosis_id=self.diagnosis_id) + self.refresh_records(force=True) + + def _build_ui(self) -> None: + root = QVBoxLayout(self) + root.setContentsMargins(18, 18, 18, 18) + root.setSpacing(12) + + header = QFrame() + header.setObjectName("LocalAudioQueueHeader") + header_layout = QVBoxLayout(header) + header_layout.setContentsMargins(18, 14, 18, 14) + header_layout.setSpacing(4) + self.title_label = QLabel( + "本机录音上传管理" if self._global_scope else "本机录音文件" + ) + self.title_label.setObjectName("LocalAudioQueueTitle") + header_layout.addWidget(self.title_label) + if self._global_scope: + subtitle_text = ( + "集中查看所有诊单的本机录音上传记录;成功文件和未成功文件都会保留。" + "最多同时上传 3 个文件,失败后可重试。" + ) + else: + subtitle_text = ( + "每次通话的本地录音会先保存在本机,再上传到 COS;最多同时上传 3 个文件。" + "上传失败不会删除文件,可随时重试。" + ) + subtitle = QLabel(subtitle_text) + subtitle.setObjectName("LocalAudioQueueSubtitle") + subtitle.setWordWrap(True) + header_layout.addWidget(subtitle) + root.addWidget(header) + + summary = QFrame() + summary.setObjectName("LocalAudioQueueSummary") + summary_layout = QHBoxLayout(summary) + summary_layout.setContentsMargins(12, 10, 12, 10) + summary_layout.setSpacing(8) + self.summary_total = self._summary_label() + self.summary_pending = self._summary_label() + self.summary_uploading = self._summary_label() + self.summary_uploaded = self._summary_label() + self.summary_failed = self._summary_label() + for label in ( + self.summary_total, + self.summary_pending, + self.summary_uploading, + self.summary_uploaded, + self.summary_failed, + ): + summary_layout.addWidget(label) + summary_layout.addStretch(1) + self.upload_pending_button = QPushButton("上传待处理") + self.upload_pending_button.setObjectName("LocalAudioUploadPendingButton") + self.upload_pending_button.setProperty("variant", "primary") + self.upload_pending_button.clicked.connect(self._upload_pending) + summary_layout.addWidget(self.upload_pending_button) + self.retry_failed_button = QPushButton("重试全部失败") + self.retry_failed_button.setObjectName("LocalAudioRetryAllButton") + self.retry_failed_button.setProperty("variant", "danger") + self.retry_failed_button.clicked.connect(self._retry_all_failed) + summary_layout.addWidget(self.retry_failed_button) + refresh_button = QPushButton("刷新") + refresh_button.setObjectName("LocalAudioRefreshButton") + refresh_button.clicked.connect(self._manual_refresh) + summary_layout.addWidget(refresh_button) + root.addWidget(summary) + + card = QFrame() + card.setObjectName("LocalAudioQueueTableCard") + card_layout = QVBoxLayout(card) + card_layout.setContentsMargins(1, 1, 1, 1) + headers = ["录制时间"] + if self._global_scope: + headers.append("诊单 ID") + headers.extend( + [ + "通话记录 ID", + "房间号", + "音频文件", + "大小", + "上传状态", + "失败原因", + "操作", + ] + ) + self._diagnosis_column = 1 if self._global_scope else None + self._call_column = 2 if self._global_scope else 1 + self._room_column = 3 if self._global_scope else 2 + self._file_column = 4 if self._global_scope else 3 + self._size_column = 5 if self._global_scope else 4 + self._status_column = 6 if self._global_scope else 5 + self._error_column = 7 if self._global_scope else 6 + self._action_column = 8 if self._global_scope else 7 + + self.table = QTableWidget(0, len(headers)) + self.table.setObjectName("LocalAudioQueueTable") + self.table.setHorizontalHeaderLabels(headers) + self.table.verticalHeader().hide() + self.table.setAlternatingRowColors(True) + self.table.setEditTriggers(QAbstractItemView.EditTrigger.NoEditTriggers) + self.table.setSelectionBehavior(QAbstractItemView.SelectionBehavior.SelectRows) + self.table.setSelectionMode(QAbstractItemView.SelectionMode.SingleSelection) + self.table.setWordWrap(False) + header_view = self.table.horizontalHeader() + header_view.setSectionResizeMode(QHeaderView.ResizeMode.Interactive) + header_view.setSectionResizeMode( + self._file_column, QHeaderView.ResizeMode.Stretch + ) + header_view.setSectionResizeMode( + self._error_column, QHeaderView.ResizeMode.Stretch + ) + self.table.setColumnWidth(0, 160) + if self._diagnosis_column is not None: + self.table.setColumnWidth(self._diagnosis_column, 90) + self.table.setColumnWidth(self._call_column, 90) + self.table.setColumnWidth(self._room_column, 180) + self.table.setColumnWidth(self._size_column, 88) + self.table.setColumnWidth(self._status_column, 100) + self.table.setColumnWidth(self._action_column, 190) + card_layout.addWidget(self.table) + root.addWidget(card, 1) + + footer = QFrame() + footer.setObjectName("LocalAudioQueueFooter") + footer_layout = QHBoxLayout(footer) + footer_layout.setContentsMargins(14, 9, 14, 9) + hint = QLabel("已上传文件仍保留在本机;请按机构的数据保留制度定期归档。") + hint.setObjectName("LocalAudioQueueHint") + footer_layout.addWidget(hint, 1) + close_button = QPushButton("关闭") + close_button.setObjectName("LocalAudioQueueCloseButton") + close_button.setProperty("variant", "primary") + close_button.clicked.connect(self.accept) + footer_layout.addWidget(close_button) + root.addWidget(footer) + + @staticmethod + def _summary_label() -> QLabel: + label = QLabel() + label.setProperty("queueSummary", True) + return label + + def _records(self) -> list[LocalAudioRecord]: + return self.store.list_records(diagnosis_id=self.diagnosis_id) + + def refresh_records(self, *, force: bool = False) -> None: + records = self._records() + self._schedule_room_lookups(records) + signature = tuple( + ( + record.id, + record.diagnosis_id, + record.status, + record.error_text, + record.call_record_id, + record.room_id, + record.size_bytes, + record.uploaded_url, + record.exists, + record.attempts, + self._room_fetch_state(record), + ) + for record in records + ) + if not force and signature == self._signature: + return + self._signature = signature + self._update_summary(records) + self.table.setRowCount(len(records)) + for row, record in enumerate(records): + self.table.setRowHeight(row, 54) + self._set_item(row, 0, _display_time(record.created_at)) + if self._diagnosis_column is not None: + self._set_item(row, self._diagnosis_column, str(record.diagnosis_id)) + self._set_item( + row, self._call_column, str(record.call_record_id or "待关联") + ) + room_text, room_tooltip = self._room_display(record) + room_item = self._set_item(row, self._room_column, room_text) + room_item.setToolTip(room_tooltip) + file_item = self._set_item(row, self._file_column, record.file_path.name) + file_item.setToolTip(str(record.file_path)) + self._set_item(row, self._size_column, _human_size(record.size_bytes)) + status_item = self._set_item( + row, + self._status_column, + _STATUS_LABELS.get(record.status, record.status), + ) + status_item.setForeground(QColor(_STATUS_COLORS.get(record.status, "#53617F"))) + status_item.setToolTip( + f"已尝试 {record.attempts} 次" + + (f"\nCOS:{record.uploaded_url}" if record.uploaded_url else "") + ) + error_item = self._set_item( + row, self._error_column, record.error_text or "—" + ) + error_item.setToolTip(record.error_text) + self.table.setCellWidget(row, self._action_column, self._actions(record)) + + def _room_fetch_state(self, record: LocalAudioRecord) -> str: + diagnosis_id = record.diagnosis_id + if record.room_id: + return record.room_id + if diagnosis_id in self._room_fetch_inflight: + return "loading" + if diagnosis_id in self._room_fetch_errors: + return f"error:{self._room_fetch_errors[diagnosis_id]}" + if diagnosis_id in self._room_fetch_attempted: + return "missing" + return "idle" + + def _room_display(self, record: LocalAudioRecord) -> tuple[str, str]: + if record.room_id: + return record.room_id, record.room_id + if record.call_record_id is None: + return "—", "尚未关联通话记录,无法取得房间号。" + diagnosis_id = record.diagnosis_id + if diagnosis_id in self._room_fetch_inflight: + return "查询中…", "正在从服务端通话记录查询房间号。" + error = self._room_fetch_errors.get(diagnosis_id) + if error: + return "获取失败", error + return "未记录", "服务端通话记录未保存房间号。" + + def _schedule_room_lookups(self, records: list[LocalAudioRecord]) -> None: + if self._closed: + return + method = getattr(self.repository, "list_call_records", None) + if not callable(method): + method = getattr(self.repository, "get_call_records", None) + if not callable(method): + return + + target_ids: dict[int, set[int]] = {} + for record in records: + call_record_id = int(record.call_record_id or 0) + if record.room_id or call_record_id <= 0: + continue + target_ids.setdefault(record.diagnosis_id, set()).add(call_record_id) + diagnosis_ids = tuple( + sorted( + diagnosis_id + for diagnosis_id in target_ids + if diagnosis_id not in self._room_fetch_inflight + and diagnosis_id not in self._room_fetch_attempted + ) + ) + if not diagnosis_ids: + return + + generation = self._room_fetch_generation + self._room_fetch_inflight.update(diagnosis_ids) + self._room_fetch_attempted.update(diagnosis_ids) + + def load_rooms() -> tuple[dict[tuple[int, int], str], dict[int, str]]: + rooms: dict[tuple[int, int], str] = {} + errors: dict[int, str] = {} + for diagnosis_id in diagnosis_ids: + try: + payload = method(diagnosis_id) + rows = payload if isinstance(payload, list) else [] + for row in rows: + if not isinstance(row, Mapping): + continue + raw_record_id = row.get("id", row.get("call_record_id")) + try: + call_record_id = int(raw_record_id or 0) + except (TypeError, ValueError): + continue + if call_record_id not in target_ids[diagnosis_id]: + continue + room_id = str( + row.get("room_id") + or row.get("roomId") + or row.get("room_id_text") + or row.get("room_no") + or "" + ).strip() + if room_id and room_id != "0": + rooms[(diagnosis_id, call_record_id)] = room_id + except Exception as error: + errors[diagnosis_id] = str(error)[:300] or "房间号获取失败。" + return rooms, errors + + run_async( + load_rooms, + on_success=lambda result: self._apply_room_lookups( + generation, + diagnosis_ids, + result, + ), + on_error=lambda error: self._fail_room_lookups( + generation, + diagnosis_ids, + error, + ), + ) + + def _apply_room_lookups( + self, + generation: int, + diagnosis_ids: tuple[int, ...], + result: tuple[dict[tuple[int, int], str], dict[int, str]], + ) -> None: + if self._closed or generation != self._room_fetch_generation: + return + rooms, errors = result + self._room_fetch_inflight.difference_update(diagnosis_ids) + self._room_fetch_errors.update(errors) + records_by_key: dict[tuple[int, int], list[LocalAudioRecord]] = {} + for record in self._records(): + if record.call_record_id is None: + continue + key = (record.diagnosis_id, record.call_record_id) + records_by_key.setdefault(key, []).append(record) + for key, room_id in rooms.items(): + for record in records_by_key.get(key, []): + try: + self.store.bind_identity( + record.id, + call_record_id=key[1], + room_id=room_id, + ) + except (LookupError, RuntimeError, ValueError) as error: + self._room_fetch_errors[key[0]] = str(error)[:300] + self.refresh_records(force=True) + + def _fail_room_lookups( + self, + generation: int, + diagnosis_ids: tuple[int, ...], + error: Exception, + ) -> None: + if self._closed or generation != self._room_fetch_generation: + return + self._room_fetch_inflight.difference_update(diagnosis_ids) + message = str(error)[:300] or "房间号获取失败。" + self._room_fetch_errors.update( + {diagnosis_id: message for diagnosis_id in diagnosis_ids} + ) + self.refresh_records(force=True) + + def _manual_refresh(self) -> None: + self._room_fetch_generation += 1 + self._room_fetch_inflight.clear() + self._room_fetch_attempted.clear() + self._room_fetch_errors.clear() + self.refresh_records(force=True) + + def _set_item(self, row: int, column: int, text: str) -> QTableWidgetItem: + item = QTableWidgetItem(str(text)) + item.setTextAlignment(Qt.AlignmentFlag.AlignVCenter | Qt.AlignmentFlag.AlignLeft) + self.table.setItem(row, column, item) + return item + + def _update_summary(self, records: list[LocalAudioRecord]) -> None: + counts = {status: 0 for status in _STATUS_LABELS} + for record in records: + counts[record.status] = counts.get(record.status, 0) + 1 + self.summary_total.setText(f"全部 {len(records)}") + self.summary_pending.setText(f"待上传 {counts['pending']}") + self.summary_uploading.setText(f"上传中 {counts['uploading']}") + self.summary_uploaded.setText(f"已上传 {counts['uploaded']}") + self.summary_failed.setText(f"失败 {counts['failed']}") + self.upload_pending_button.setEnabled(counts["pending"] > 0) + self.retry_failed_button.setEnabled(counts["failed"] > 0) + + def _actions(self, record: LocalAudioRecord) -> QWidget: + host = QWidget() + layout = QHBoxLayout(host) + layout.setContentsMargins(4, 5, 4, 5) + layout.setSpacing(5) + if record.status == "pending": + upload = QPushButton("上传") + upload.setAccessibleName(f"上传录音 {record.file_path.name}") + upload.clicked.connect(lambda _checked=False, record_id=record.id: self._upload_one(record_id)) + layout.addWidget(upload) + elif record.status == "failed": + retry = QPushButton("重试") + retry.setProperty("variant", "danger") + retry.setAccessibleName(f"重试上传录音 {record.file_path.name}") + retry.clicked.connect(lambda _checked=False, record_id=record.id: self._retry_one(record_id)) + layout.addWidget(retry) + elif record.status == "uploading": + busy = QPushButton("上传中") + busy.setEnabled(False) + layout.addWidget(busy) + if record.exists: + reveal = QPushButton("打开位置") + reveal.setAccessibleName(f"打开录音文件位置 {record.file_path.name}") + reveal.clicked.connect( + lambda _checked=False, path=record.file_path: self._open_location(path) + ) + layout.addWidget(reveal) + layout.addStretch(1) + return host + + def _upload_pending(self) -> None: + self.manager.submit_pending(diagnosis_id=self.diagnosis_id) + self.refresh_records(force=True) + + def _upload_one(self, record_id: int) -> None: + self.manager.submit(record_id) + self.refresh_records(force=True) + + def _retry_one(self, record_id: int) -> None: + try: + self.store.retry(record_id) + except (OSError, RuntimeError, LookupError) as error: + self._show_local_error(str(error)) + return + self.manager.submit(record_id) + self.refresh_records(force=True) + + def _retry_all_failed(self) -> None: + for record in self._records(): + if record.status != "failed": + continue + try: + self.store.retry(record.id) + except (OSError, RuntimeError, LookupError): + continue + self.manager.submit(record.id) + self.refresh_records(force=True) + + def _show_local_error(self, message: str) -> None: + self.summary_failed.setText(str(message)[:160]) + self.summary_failed.setToolTip(str(message)) + + @staticmethod + def _open_location(path: Path) -> None: + target = path.parent if path.parent.is_dir() else path + QDesktopServices.openUrl(QUrl.fromLocalFile(str(target))) + + def done(self, result: int) -> None: + self._closed = True + self._room_fetch_generation += 1 + if hasattr(self, "poll_timer"): + self.poll_timer.stop() + super().done(result) diff --git a/app/src/doctor_workstation/ui/dialogs/prescription_ai.py b/app/src/doctor_workstation/ui/dialogs/prescription_ai.py index b512e2482..df9e153ce 100644 --- a/app/src/doctor_workstation/ui/dialogs/prescription_ai.py +++ b/app/src/doctor_workstation/ui/dialogs/prescription_ai.py @@ -8,7 +8,7 @@ from collections.abc import Callable from dataclasses import dataclass, field from typing import Any -from PySide6.QtCore import Qt +from PySide6.QtCore import QCoreApplication, QEvent, Qt from PySide6.QtWidgets import ( QDialog, QFrame, @@ -1086,11 +1086,15 @@ class PrescriptionAiReportDialog(QDialog): def _clear_host(self) -> None: while self.host_layout.count(): - item = self.host_layout.takeAt(0) - widget = item.widget() - if widget is not None: - widget.setParent(None) - widget.deleteLater() + item = self.host_layout.takeAt(0) + widget = item.widget() + if widget is not None: + # Keep the parent until Qt processes the deferred deletion. + # Detaching a visible child promotes it to a native top-level + # window on Windows and causes a small title-bar window to flash. + widget.hide() + widget.deleteLater() + QCoreApplication.sendPostedEvents(widget, QEvent.Type.DeferredDelete) def _add_label( self, diff --git a/app/src/doctor_workstation/ui/pages/appointments.py b/app/src/doctor_workstation/ui/pages/appointments.py index 827a4e6b9..70e27acbb 100644 --- a/app/src/doctor_workstation/ui/pages/appointments.py +++ b/app/src/doctor_workstation/ui/pages/appointments.py @@ -9,8 +9,8 @@ from html import escape from types import MappingProxyType from typing import Any -from PySide6.QtCore import QDate, QSize, Qt, QTimer, QUrl, Signal -from PySide6.QtGui import QAction, QBrush, QColor, QDesktopServices, QPixmap +from PySide6.QtCore import QDate, Qt, QTimer, QUrl, Signal +from PySide6.QtGui import QBrush, QColor, QDesktopServices, QPixmap from PySide6.QtWidgets import ( QAbstractItemView, QButtonGroup, @@ -21,10 +21,9 @@ from PySide6.QtWidgets import ( QDialogButtonBox, QFrame, QHBoxLayout, + QHeaderView, QLabel, QLineEdit, - QListWidget, - QListWidgetItem, QMenu, QMessageBox, QPushButton, @@ -104,8 +103,7 @@ APPOINTMENTS_LIGHT_QSS = """ border: 1px solid #E2E7F4; border-radius: 10px; } -#AppointmentsPage QFrame#AppointmentMainCard, -#AppointmentsPage QFrame#VideoConsultPanel { +#AppointmentsPage QFrame#AppointmentMainCard { background-color: #FFFFFF; border: 1px solid #E2E7F4; border-radius: 10px; @@ -209,6 +207,34 @@ APPOINTMENTS_LIGHT_QSS = """ border-radius: 4px; font-size: 10px; } +#AppointmentsPage QWidget[appointmentImHost="true"] { + background-color: transparent; +} +#AppointmentsPage QPushButton[appointmentImAction="true"] { + min-width: 74px; + min-height: 26px; + max-height: 26px; + padding: 0 9px; + color: #5265F6; + background-color: #F0F2FF; + border: 1px solid #D7DEFF; + border-radius: 7px; + font-size: 11px; + font-weight: 600; +} +#AppointmentsPage QPushButton[appointmentImAction="true"]:hover { + color: #FFFFFF; + background-color: #5265F6; + border-color: #5265F6; +} +#AppointmentsPage QPushButton[appointmentImAction="true"]:focus { + border-color: #8D9BFF; +} +#AppointmentsPage QPushButton[appointmentImAction="true"]:disabled { + color: #98A3BC; + background-color: #F7F8FC; + border-color: #E4E8F2; +} #AppointmentsPage QWidget[appointmentInfoHost="true"] { background-color: #FFFFFF; } @@ -257,77 +283,6 @@ APPOINTMENTS_LIGHT_QSS = """ background-color: #EEF1FF; border-bottom-color: #5265F6; } -#AppointmentsPage QLabel#VideoConsultTitle { - color: #15224A; - font-size: 16px; - font-weight: 700; -} -#AppointmentsPage QListWidget#VideoConsultList { - background-color: transparent; - border: 0; - border-radius: 0; - outline: 0; -} -#AppointmentsPage QListWidget#VideoConsultList::item { - min-height: 80px; - margin: 0 0 7px 0; - padding: 0; - background-color: transparent; - border: 0; -} -#AppointmentsPage QListWidget#VideoConsultList::item:hover { - background-color: transparent; -} -#AppointmentsPage QListWidget#VideoConsultList::item:selected { - background-color: transparent; -} -#AppointmentsPage QFrame[videoPatientCard="true"] { - background-color: #FCFDFF; - border: 1px solid #E1E6F1; - border-radius: 9px; -} -#AppointmentsPage QFrame[videoPatientCard="true"]:hover { - background-color: #F9FAFF; - border-color: #C9D2FF; -} -#AppointmentsPage QLabel[videoStatus="true"] { - min-height: 20px; - max-height: 20px; - padding: 0 7px; - color: #5265F6; - background-color: #EEF1FF; - border-radius: 5px; - font-size: 10px; - font-weight: 600; -} -#AppointmentsPage QLabel[videoStatusKind="warning"] { - color: #B97715; - background-color: #FFF4DF; -} -#AppointmentsPage QLabel[videoIdentity="true"] { - color: #24335E; - font-size: 12px; - font-weight: 600; -} -#AppointmentsPage QLabel[videoAssistant="true"] { - color: #59698E; - font-size: 11px; -} -#AppointmentsPage QPushButton[videoAction="true"] { - min-height: 20px; - max-height: 20px; - padding: 0 5px; - color: #5265F6; - background-color: transparent; - border: 0; - border-radius: 4px; - font-size: 10px; -} -#AppointmentsPage QPushButton[videoAction="true"]:hover { - background-color: #EEF1FF; -} -#AppointmentsPage QPushButton[videoActionKind="success"] { color: #159C79; } -#AppointmentsPage QPushButton[videoActionKind="warning"] { color: #C17A16; } #AppointmentsPage QPushButton[filterChoice="true"] { min-height: 28px; max-height: 28px; @@ -342,11 +297,6 @@ APPOINTMENTS_LIGHT_QSS = """ background-color: #F0F1FF; border-color: #E0E4FF; } -#AppointmentsPage QPushButton#VideoMoreButton { - min-height: 36px; - color: #405074; - background-color: #FFFFFF; -} """ @@ -452,14 +402,37 @@ def _status_value(row: Any) -> int: return _as_int(first_value(row, "status", default=0)) +_IM_CONSULT_ACTIVE_STATUSES = frozenset({1, 4}) + + +def _im_consult_status_error(row: Any) -> str: + """Return why a queue row cannot open the doctor's IM consultation.""" + + status = _status_value(row) + if status in _IM_CONSULT_ACTIVE_STATUSES: + return "" + if status == 2: + return "已取消的挂号不可进入 IM 问诊" + if status == 3: + return "已完成的挂号不可再进入 IM 问诊" + return "当前挂号状态不可进入 IM 问诊" + + def prescription_action_label(row: Any) -> str: audit = _as_int(first_value(row, "prescription_audit_status", "audit_status"), -1) voided = _as_int(first_value(row, "prescription_void_status", "void_status"), 0) - explicit = first_value(row, "has_prescription", default=None) + explicit = first_value(row, "current_has_prescription", default=None) + if explicit is None and _as_int(first_value(row, "current_prescription_id", default=0)) <= 0: + explicit = first_value(row, "has_prescription", default=None) has_prescription = ( _as_bool(explicit) if explicit is not None - else _as_int(first_value(row, "prescription_id", default=0), 0) > 0 or audit in {0, 1, 2} + else _as_int( + first_value(row, "current_prescription_id", "prescription_id", default=0), + 0, + ) + > 0 + or audit in {0, 1, 2} ) if not has_prescription: return "开方" @@ -689,7 +662,6 @@ class AppointmentsPage(QWidget): self._dict_labels: dict[str, dict[str, str]] = {} self._last_render_signature: tuple[Any, ...] | None = None self._responsive_narrow: bool | None = None - self._video_panel_user_open = False self._can_plain_phone = _canonical_allowed( permissions, "tcm.diagnosis/phonePlain", default=False ) @@ -889,35 +861,9 @@ class AppointmentsPage(QWidget): layout.setSpacing(4) self.content_layout = layout self.table_card = self._build_table_card() - self.video_panel = self._build_video_panel() - layout.addWidget(self.table_card, 3) - layout.addWidget(self.video_panel, 1) + layout.addWidget(self.table_card, 1) return host - def _build_video_panel(self) -> QWidget: - panel = QFrame() - panel.setObjectName("VideoConsultPanel") - panel.setMinimumWidth(0) - panel.setMaximumWidth(420) - layout = QVBoxLayout(panel) - layout.setContentsMargins(14, 12, 14, 8) - layout.setSpacing(8) - title = QLabel("视频问诊") - title.setObjectName("VideoConsultTitle") - layout.addWidget(title) - self.video_list = QListWidget() - self.video_list.setObjectName("VideoConsultList") - self.video_list.setSpacing(0) - self.video_list.setVerticalScrollMode(QAbstractItemView.ScrollMode.ScrollPerPixel) - self.video_list.currentRowChanged.connect(self._video_row_selected) - self.video_list.itemDoubleClicked.connect(lambda _item: self._open_detail()) - layout.addWidget(self.video_list, 1) - more = QPushButton("查看更多患者 ﹀") - more.setObjectName("VideoMoreButton") - more.clicked.connect(lambda: self.pager.next.click()) - layout.addWidget(more) - return panel - def _build_table_card(self) -> QWidget: card = QFrame() card.setObjectName("AppointmentMainCard") @@ -1004,12 +950,6 @@ class AppointmentsPage(QWidget): self.toolbar_cancel_button.setEnabled(False) self.toolbar_cancel_button.clicked.connect(self._cancel_selected) actions.addWidget(self.toolbar_cancel_button) - self.video_panel_button = QPushButton("视频问诊", card) - self.video_panel_button.setCheckable(True) - self.video_panel_button.setProperty("variant", "ghost") - self.video_panel_button.setProperty("compactAction", True) - self.video_panel_button.clicked.connect(self._toggle_video_panel) - actions.addWidget(self.video_panel_button) actions.addStretch(1) refresh = QPushButton("刷新", card) refresh.setProperty("variant", "ghost") @@ -1034,13 +974,23 @@ class AppointmentsPage(QWidget): TableColumn("assistant_name", "助理", 110), TableColumn("has_prescription", "开方", 108, formatter=_prescription_cell), TableColumn("unserved_days", "未服务天数", 112, formatter=_unserved_cell), + TableColumn( + "_im_consult", + "IM 问诊", + 104, + alignment=Qt.AlignmentFlag.AlignCenter, + ), ] ) self.table.setObjectName("AppointmentTable") self.table.setMinimumHeight(0) self.table.setWordWrap(True) self.table.setVerticalScrollMode(QAbstractItemView.ScrollMode.ScrollPerPixel) - self.table.horizontalHeader().setFixedHeight(34) + header = self.table.horizontalHeader() + header.setFixedHeight(34) + header.setStretchLastSection(False) + header.setSectionResizeMode(4, QHeaderView.ResizeMode.Stretch) + header.setSectionResizeMode(10, QHeaderView.ResizeMode.Fixed) self.table.verticalHeader().setDefaultSectionSize(60) self.table.itemSelectionChanged.connect(self._selection_changed) self.table.itemDoubleClicked.connect(lambda _item: self._open_detail()) @@ -1051,157 +1001,21 @@ class AppointmentsPage(QWidget): layout.addWidget(self.pager) return card - def _toggle_video_panel(self, checked: bool) -> None: - self._video_panel_user_open = checked - self._apply_responsive_layout() - def _apply_responsive_layout(self) -> None: - """Keep the table usable while retaining a video-list entry at low widths.""" + """Collapse only the date filters when horizontal space is limited.""" - panel = getattr(self, "video_panel", None) - button = getattr(self, "video_panel_button", None) - if not isinstance(panel, QWidget) or not isinstance(button, QPushButton): - return narrow = self.width() < 1120 for preset in ("yesterday", "day_before", "tomorrow", "day_after"): self.date_buttons[preset].setVisible(not narrow) self.date_overflow_button.setVisible(narrow) self.status_filter_label.setVisible(not narrow) self.confirm_filter_label.setVisible(not narrow) - if narrow: - if self._responsive_narrow is not True: - self._video_panel_user_open = False - button.show() - button.setChecked(self._video_panel_user_open) - panel.setVisible(self._video_panel_user_open) - if self._video_panel_user_open: - panel.setFixedWidth(max(250, min(300, round(self.width() * 0.32)))) - else: - button.hide() - button.setChecked(False) - panel.show() - panel.setFixedWidth(max(300, min(420, round(self.width() * 0.30)))) self._responsive_narrow = narrow def resizeEvent(self, event: Any) -> None: super().resizeEvent(event) self._apply_responsive_layout() - def _sync_video_list(self, rows: Sequence[Any]) -> None: - selected_id = ( - _appointment_id(self.video_list.currentItem().data(Qt.ItemDataRole.UserRole)) - if self.video_list.currentItem() - else 0 - ) - self.video_list.clear() - row_to_select = -1 - for index, row in enumerate(rows): - status = display_text(first_value(row, "status_desc"), "已预约") - name = display_text(first_value(row, "patient_name"), "患者") - gender = gender_text(first_value(row, "gender", "gender_desc", default=None)) - age = first_value(row, "age", default="") - identity = " · ".join( - part - for part in (name, gender, f"{age}岁" if age not in (None, "") else "") - if part and part != "—" - ) - assistant = display_text(first_value(row, "assistant_name"), "未分配") - item = QListWidgetItem( - f"{status} {identity} {assistant}\n" - "进入视频问诊 查看 诊单 开方 预约 补全身份" - ) - item.setData(Qt.ItemDataRole.UserRole, row) - item.setSizeHint(QSize(0, 84)) - self.video_list.addItem(item) - self.video_list.setItemWidget(item, self._build_video_patient_card(row)) - if selected_id and _appointment_id(row) == selected_id: - row_to_select = index - if row_to_select >= 0: - self.video_list.setCurrentRow(row_to_select) - else: - self.video_list.setCurrentRow(-1) - self.video_panel_button.setText(f"视频问诊 {len(rows)}") - - def _build_video_patient_card(self, row: Any) -> QWidget: - card = QFrame() - card.setProperty("videoPatientCard", True) - layout = QVBoxLayout(card) - layout.setContentsMargins(10, 7, 10, 6) - layout.setSpacing(5) - - status_text = display_text(first_value(row, "status_desc"), "已预约") - name = display_text(first_value(row, "patient_name"), "患者") - gender = gender_text(first_value(row, "gender", "gender_desc", default=None)) - age = first_value(row, "age", default="") - identity = " · ".join( - part - for part in (name, gender, f"{age}岁" if age not in (None, "") else "") - if part and part != "—" - ) - assistant = display_text(first_value(row, "assistant_name"), "未分配") - heading = QHBoxLayout() - heading.setContentsMargins(0, 0, 0, 0) - heading.setSpacing(7) - status = QLabel(status_text) - status.setProperty("videoStatus", True) - status.setProperty("videoStatusKind", "warning" if "挂号" in status_text else "primary") - heading.addWidget(status) - identity_label = QLabel(identity) - identity_label.setProperty("videoIdentity", True) - heading.addWidget(identity_label) - heading.addStretch(1) - assistant_label = QLabel(assistant) - assistant_label.setProperty("videoAssistant", True) - heading.addWidget(assistant_label) - layout.addLayout(heading) - - actions = QHBoxLayout() - actions.setContentsMargins(0, 0, 0, 0) - actions.setSpacing(1) - - def add_action( - label: str, - callback: Any, - permission: str | None = None, - kind: str = "", - ) -> None: - if permission and not _canonical_allowed(self.permissions, permission, default=False): - return - button = QPushButton(label, card) - button.setProperty("videoAction", True) - if kind: - button.setProperty("videoActionKind", kind) - button.clicked.connect( - lambda _checked=False, source=row, slot=callback: self._run_video_row_action( - source, slot - ) - ) - actions.addWidget(button) - - add_action( - "进入视频问诊", - self._request_video, - "doctor.appointment/prescription", - ) - add_action("查看", self._open_detail) - add_action("诊单", self._edit_patient, "tcm.diagnosis/edit") - if can_open_ai_consult(self.permissions): - add_action("AI 分析", self._open_ai_consult) - add_action("开方", self._open_prescription, "tcm.diagnosis/kaifang") - add_action("二维码", self._request_video_qr, "tcm.diagnosis/videoQr", "success") - more = QPushButton("更多", card) - more.setProperty("videoAction", True) - more.setProperty("videoActionKind", "warning") - more.clicked.connect( - lambda _checked=False, source=row, anchor=more: self._show_video_more_menu( - anchor, source - ) - ) - actions.addWidget(more) - actions.addStretch(1) - layout.addLayout(actions) - return card - def _run_video_row_action(self, row: Any, callback: Any) -> None: appointment_id = _appointment_id(row) for row_index in range(self.table.rowCount()): @@ -1214,47 +1028,6 @@ class AppointmentsPage(QWidget): break callback() - def _show_video_more_menu(self, anchor: QPushButton, row: Any) -> None: - menu = QMenu(anchor) - - def add_action(label: str, callback: Any, permission: str | None = None) -> None: - if permission and not _canonical_allowed(self.permissions, permission, default=False): - return - action = QAction(label, menu) - action.triggered.connect( - lambda _checked=False, source=row, slot=callback: self._run_video_row_action( - source, slot - ) - ) - menu.addAction(action) - - add_action("完成问诊", self._complete_selected, "doctor.appointment/complete") - add_action("查看病历", self._view_case, "tcm.diagnosis/kaifang") - if can_open_ai_consult(self.permissions): - add_action("AI 分析", self._open_ai_consult) - if can_open_diagnosis_ai_report(self.permissions): - add_action("AI 报告", self._open_ai_report) - add_action("取消挂号", self._cancel_selected, "doctor.appointment/cancel") - if menu.actions(): - menu.exec(anchor.mapToGlobal(anchor.rect().bottomLeft())) - - def _video_row_selected(self, index: int) -> None: - if index < 0: - return - item = self.video_list.item(index) - source = item.data(Qt.ItemDataRole.UserRole) if item is not None else None - appointment_id = _appointment_id(source) - if appointment_id <= 0: - return - for row_index in range(self.table.rowCount()): - cell = self.table.item(row_index, 0) - if ( - cell is not None - and _appointment_id(cell.data(Qt.ItemDataRole.UserRole)) == appointment_id - ): - self.table.selectRow(row_index) - break - def _action_button( self, label: str, @@ -1484,7 +1257,7 @@ class AppointmentsPage(QWidget): self.table.set_rows(rows) self._install_table_selectors() self._install_appointment_info_cells() - self._sync_video_list(rows) + self._install_im_consult_actions() self._fit_table_rows() for row_index in range(self.table.rowCount()): source_item = self.table.item(row_index, 0) @@ -1634,6 +1407,67 @@ class AppointmentsPage(QWidget): font.setBold(True) patient.setFont(font) + def _install_im_consult_actions(self) -> None: + """Render a doctor-initiated IM entry for every appointment row.""" + + action_column = 10 + has_permission = _canonical_allowed( + self.permissions, + "doctor.appointment/prescription", + default=False, + ) + for row_index in range(self.table.rowCount()): + source_item = self.table.item(row_index, 0) + row = source_item.data(Qt.ItemDataRole.UserRole) if source_item is not None else None + host = QWidget(self.table) + host.setProperty("appointmentImHost", True) + host.setAttribute(Qt.WidgetAttribute.WA_StyledBackground, True) + layout = QHBoxLayout(host) + layout.setContentsMargins(5, 0, 5, 0) + layout.setAlignment(Qt.AlignmentFlag.AlignCenter) + + button = QPushButton("IM 问诊", host) + button.setObjectName("AppointmentImConsultButton") + button.setProperty("appointmentImAction", True) + patient_name = display_text(first_value(row, "patient_name"), "患者") + button.setAccessibleName(f"与{patient_name}进行 IM 问诊") + + identifiers_ready = ( + _appointment_id(row) > 0 + and _diagnosis_id(row) > 0 + and _video_patient_id(row) > 0 + ) + status_error = _im_consult_status_error(row) + enabled = ( + has_permission + and self._native_video_capable + and identifiers_ready + and not status_error + ) + button.setEnabled(enabled) + if not has_permission: + tooltip = "当前账号无 IM 问诊权限" + elif not self._native_video_capable: + tooltip = "当前工作站未配置完整的视频问诊能力" + elif not identifiers_ready: + tooltip = "患者、诊单或挂号标识不完整" + elif status_error: + tooltip = status_error + else: + tooltip = "打开患者 IM,可发送消息并从会话中发起视频" + button.setToolTip(tooltip) + button.clicked.connect( + lambda _checked=False, source=row: self._run_video_row_action( + source, + self._request_video, + ) + ) + layout.addWidget(button) + self.table.setCellWidget(row_index, action_column, host) + item = self.table.item(row_index, action_column) + if item is not None: + item.setText("") + def _fit_table_rows(self) -> None: """Give each appointment row enough height for its real line count.""" @@ -1685,7 +1519,12 @@ class AppointmentsPage(QWidget): and _as_int(first_value(row, "doctor_id", default=0)) > 0 ) self.call_button.setEnabled( - not_completed and self._native_video_capable and _appointment_id(row) > 0 + has_row + and not _im_consult_status_error(row) + and self._native_video_capable + and _appointment_id(row) > 0 + and _diagnosis_id(row) > 0 + and _video_patient_id(row) > 0 ) self.complete_button.setEnabled(not_completed and _appointment_id(row) > 0) self.prescription_button.setEnabled(has_row and _diagnosis_id(row) > 0) @@ -1760,15 +1599,15 @@ class AppointmentsPage(QWidget): row = self._current_row() if row is None: return - status = _status_value(row) - if status == 3: - show_toast(self, "已完成的挂号不可再发起通话。", "warning") + status_error = _im_consult_status_error(row) + if status_error: + show_toast(self, f"{status_error}。", "warning") return appointment_id = _appointment_id(row) diagnosis_id = _diagnosis_id(row) patient_id = _video_patient_id(row) if appointment_id <= 0 or diagnosis_id <= 0 or patient_id <= 0: - show_toast(self, "患者、诊单或挂号标识不完整,无法进入视频问诊。", "warning") + show_toast(self, "患者、诊单或挂号标识不完整,无法进入 IM 问诊。", "warning") return self.video_requested.emit( { @@ -1777,6 +1616,8 @@ class AppointmentsPage(QWidget): "patient_id": patient_id, "diagnosis_id": diagnosis_id, "patient_name": first_value(row, "patient_name", default="患者"), + # Open IM first. The doctor explicitly starts video from the + # conversation instead of requiring an already-live call. "mode": "im", "record": row, } @@ -2069,7 +1910,8 @@ class AppointmentsPage(QWidget): if _diagnosis_id(row) <= 0 or _appointment_id(row) <= 0: show_toast(self, "该预约缺少诊单信息,请先编辑患者。", "warning") return - self._begin_prescription_load(row) + mode = "view" if prescription_action_label(row) == "查看" else "open" + self._begin_prescription_load(row, mode=mode) def _view_case(self) -> None: if not _canonical_allowed(self.permissions, "tcm.diagnosis/kaifang", default=False): @@ -2112,7 +1954,7 @@ class AppointmentsPage(QWidget): dialog.diagnosis_requested.connect(self._open_diagnosis_id) dialog.exec() - def _begin_prescription_load(self, row: Any) -> None: + def _begin_prescription_load(self, row: Any, *, mode: str = "open") -> None: snapshot = deepcopy(row) self._prescription_generation += 1 generation = self._prescription_generation @@ -2126,18 +1968,51 @@ class AppointmentsPage(QWidget): "get_prescription_by_appointment", appointment_id=appointment_id, ), - on_success=lambda existing: self._prescription_loaded(existing, snapshot, generation), + on_success=lambda existing: self._prescription_loaded( + existing, + snapshot, + generation, + mode, + ), on_error=lambda error: self._prescription_error(error, generation), on_finished=lambda: self._prescription_finished(generation), ) - def _prescription_loaded(self, existing: Any, row: Any, generation: int) -> None: + def _prescription_loaded( + self, + existing: Any, + row: Any, + generation: int, + mode: str = "open", + ) -> None: if generation != self._prescription_generation: return self.banner.clear() if existing is not None and _as_int(first_value(existing, "id", default=0)) > 0: approved = _as_int(first_value(existing, "audit_status", "status"), -1) == 1 voided = _as_int(first_value(existing, "void_status", "is_void"), 0) == 1 + actual_id = _as_int(first_value(existing, "id", "prescription_id", default=0)) + expected_id = _as_int( + first_value(row, "current_prescription_id", default=0) + ) + actual_appointment_id = _as_int( + first_value(existing, "appointment_id", default=0) + ) + expected_appointment_id = _appointment_id(row) + identity_changed = ( + (expected_id > 0 and actual_id != expected_id) + or ( + actual_appointment_id > 0 + and expected_appointment_id > 0 + and actual_appointment_id != expected_appointment_id + ) + ) + if mode == "view" and (not approved or voided or identity_changed): + self.banner.show_message( + "当前挂号的处方状态已变化,请刷新列表后重试。", + "warning", + ) + return if not approved or voided: self._open_existing_prescription_editor(existing) else: @@ -2151,6 +2026,12 @@ class AppointmentsPage(QWidget): dialog.diagnosis_requested.connect(self._open_diagnosis_id) dialog.exec() return + if mode == "view": + self.banner.show_message( + "当前挂号没有可查看的处方,请刷新列表后重试。", + "warning", + ) + return self._begin_case_record_load(row) def _open_existing_prescription_editor(self, prescription: Any) -> None: diff --git a/app/src/doctor_workstation/ui/pages/consultations.py b/app/src/doctor_workstation/ui/pages/consultations.py index 85fbd877f..5a7cc6404 100644 --- a/app/src/doctor_workstation/ui/pages/consultations.py +++ b/app/src/doctor_workstation/ui/pages/consultations.py @@ -45,6 +45,8 @@ from ..diagnosis_index_widgets import ( DiagnosisPager, DiagnosisTableHost, FlowWidget, + prescription_action, + video_call_is_live, ) from ..dialogs import DiagnosisDialog from ..dialogs.ai_consult import can_open_ai_consult, present_ai_consult @@ -373,6 +375,9 @@ def _video_payload(record: Any) -> dict[str, Any]: "patient_id": first_value(record, "patient_id", "source_patient_id"), "diagnosis_id": first_value(record, "diagnosis_id", "id"), "patient_name": first_value(record, "patient_name", default="患者"), + # This page is the assistant/admin receiver. IM mode logs in and waits + # for the doctor's existing invitation; it must never call startCall. + "mode": "im", "record": record, } @@ -389,17 +394,7 @@ def is_diagnosis_confirmed(record: Any) -> bool: def prescription_action_label(record: Any) -> str: - audit = _as_int(first_value(record, "prescription_audit_status", "audit_status"), -1) - voided = _as_int(first_value(record, "prescription_void_status", "void_status"), 0) - explicit = first_value(record, "has_prescription", default=None) - has_prescription = ( - _as_bool(explicit) - if explicit is not None - else _as_int(first_value(record, "prescription_id", default=0), 0) > 0 or audit in {0, 1, 2} - ) - if not has_prescription: - return "开方" - return "查看处方" if audit == 1 and voided != 1 else "编辑处方" + return prescription_action(record)[0] def can_void_prescription(record: Any) -> bool: @@ -2931,10 +2926,21 @@ class ConsultationsPage(QWidget): self.edit_button.setEnabled(has_record) self.delete_button.setEnabled(has_record) self.prescription_button.setText( - prescription_action_label(record) if record is not None else "开方" + prescription_action( + record, + force_open=self.table_host.force_open_prescription, + )[0] + if record is not None + else "开方" ) self.prescription_button.setEnabled(has_record and not self._prescription_busy) - row_has_prescription = _as_bool(first_value(record, "has_prescription", default=False)) + row_has_prescription = _as_bool( + first_value( + record, + "current_has_prescription", + default=first_value(record, "has_prescription", default=False), + ) + ) self.void_button.setEnabled( has_record and row_has_prescription @@ -2946,7 +2952,12 @@ class ConsultationsPage(QWidget): _as_int(payload.get(key), 0) > 0 for key in ("appointment_id", "patient_id", "diagnosis_id") ) - self.video_button.setEnabled(has_record and is_video_available(record) and valid_ids) + self.video_button.setEnabled( + has_record + and is_video_available(record) + and video_call_is_live(record) + and valid_ids + ) @property def _diagnosis_dialog(self) -> DiagnosisDialog: @@ -3076,7 +3087,11 @@ class ConsultationsPage(QWidget): record = self.table.current_data() if _as_int(first_value(record, "diagnosis_id", "id", default=0)) <= 0: return - self._begin_prescription_load(record, mode="open") + _label, mode = prescription_action( + record, + force_open=self.table_host.force_open_prescription, + ) + self._begin_prescription_load(record, mode=mode) def _void_selected_prescription(self) -> None: if not _canonical_allowed(self.permissions, "tcm.diagnosis/kaifang"): @@ -3114,6 +3129,28 @@ class ConsultationsPage(QWidget): if existing is not None: approved = _as_int(first_value(existing, "audit_status", "status"), -1) == 1 voided = _as_int(first_value(existing, "void_status", "is_void"), 0) == 1 + actual_id = _as_int(first_value(existing, "id", "prescription_id", default=0)) + expected_id = _as_int( + first_value(record, "current_prescription_id", default=0) + ) + actual_appointment_id = _as_int( + first_value(existing, "appointment_id", default=0) + ) + expected_appointment_id = _appointment_id(record) + identity_changed = ( + (expected_id > 0 and actual_id != expected_id) + or ( + actual_appointment_id > 0 + and expected_appointment_id > 0 + and actual_appointment_id != expected_appointment_id + ) + ) + if mode == "view" and (not approved or voided or identity_changed): + self.banner.show_message( + "当前挂号的处方状态已变化,请刷新列表后重试。", + "warning", + ) + return if not approved or voided: self._open_existing_prescription_editor(existing) else: @@ -3127,6 +3164,12 @@ class ConsultationsPage(QWidget): detail.diagnosis_requested.connect(self._open_diagnosis_id) detail.exec() return + if mode == "view": + self.banner.show_message( + "当前挂号没有可查看的处方,请刷新列表后重试。", + "warning", + ) + return self._begin_case_record_load(record) def _open_existing_prescription_editor(self, prescription: Any) -> None: @@ -3339,6 +3382,9 @@ class ConsultationsPage(QWidget): if record is None or not is_video_available(record): self.banner.show_message("仅当前“已预约”的挂号可进入视频问诊。", "warning") return + if not video_call_is_live(record): + self.banner.show_message("医生尚未发起视频会话,请等待会话开始。", "warning") + return payload = _video_payload(record) if not all( _as_int(payload.get(key), 0) > 0 diff --git a/app/src/doctor_workstation/ui/pages/patients.py b/app/src/doctor_workstation/ui/pages/patients.py index a1309bdae..456b7e29f 100644 --- a/app/src/doctor_workstation/ui/pages/patients.py +++ b/app/src/doctor_workstation/ui/pages/patients.py @@ -1317,9 +1317,13 @@ class PatientListWorkspace(QWidget): panel.setSpacing(6) top_row = QHBoxLayout() + top_row.setObjectName("PatientFilterTopRow") top_row.setContentsMargins(0, 0, 0, 0) top_row.setSpacing(6) + top_row.setAlignment(Qt.AlignmentFlag.AlignLeft) self.keyword_edit = QLineEdit() + self.keyword_edit.setObjectName("PatientKeywordInput") + self.keyword_edit.setMaximumWidth(620) self.keyword_edit.setPlaceholderText("患者姓名 / 手机号 / 助理 / 医生") self.keyword_edit.setClearButtonEnabled(True) self.keyword_edit.returnPressed.connect(self.search) @@ -1335,6 +1339,8 @@ class PatientListWorkspace(QWidget): self.status_combo.addItem("已过号", "missed") self.status_combo.hide() self.status_host = QWidget() + self.status_host.setObjectName("PatientStatusFilterHost") + self.status_host.setMaximumWidth(440) status_row = QHBoxLayout(self.status_host) status_row.setContentsMargins(0, 0, 0, 0) status_row.setSpacing(2) @@ -1370,21 +1376,27 @@ class PatientListWorkspace(QWidget): status_row.addWidget(button, 1) self.status_buttons[""].setChecked(True) top_row.addWidget(self.status_host, 2) - search = QPushButton("查询") - search.setProperty("variant", "primary") - search.setProperty("patientSearchAction", True) - search.clicked.connect(self.search) - top_row.addWidget(search) - reset = QPushButton("重置") - reset.setProperty("variant", "ghost") - reset.clicked.connect(self.reset_filters) - top_row.addWidget(reset) + self.search_button = QPushButton("查询") + self.search_button.setObjectName("PatientSearchButton") + self.search_button.setProperty("variant", "primary") + self.search_button.setProperty("patientSearchAction", True) + self.search_button.clicked.connect(self.search) + top_row.addWidget(self.search_button) + self.reset_button = QPushButton("重置") + self.reset_button.setObjectName("PatientResetButton") + self.reset_button.setProperty("variant", "ghost") + self.reset_button.clicked.connect(self.reset_filters) + top_row.addWidget(self.reset_button) panel.addLayout(top_row) bottom_row = QHBoxLayout() + bottom_row.setObjectName("PatientFilterDateRow") bottom_row.setContentsMargins(0, 0, 0, 0) bottom_row.setSpacing(6) + bottom_row.setAlignment(Qt.AlignmentFlag.AlignLeft) self.quick_host = QWidget() + self.quick_host.setObjectName("PatientQuickDateHost") + self.quick_host.setMaximumWidth(620) quick = QHBoxLayout(self.quick_host) quick.setContentsMargins(0, 0, 0, 0) quick.setSpacing(2) @@ -1411,10 +1423,13 @@ class PatientListWorkspace(QWidget): bottom_row.addWidget(self.quick_host, 3) self.date_host = QWidget() + self.date_host.setObjectName("PatientDateRangeHost") + self.date_host.setMaximumWidth(420) dates = QHBoxLayout(self.date_host) dates.setContentsMargins(0, 0, 0, 0) dates.setSpacing(6) self.start_date = QDateEdit(QDate.currentDate()) + self.start_date.setObjectName("PatientStartDateEdit") self.start_date.setCalendarPopup(True) self.start_date.setDisplayFormat("yyyy-MM-dd") self.start_date.setEnabled(False) @@ -1425,22 +1440,26 @@ class PatientListWorkspace(QWidget): separator.setProperty("role", "muted") dates.addWidget(separator) self.end_date = QDateEdit(QDate.currentDate()) + self.end_date.setObjectName("PatientEndDateEdit") self.end_date.setCalendarPopup(True) self.end_date.setDisplayFormat("yyyy-MM-dd") self.end_date.setEnabled(False) self.end_date.editingFinished.connect(self._custom_date_changed) dates.addWidget(self.end_date, 1) bottom_row.addWidget(self.date_host, 2) - custom = QPushButton("自定义") - custom.setProperty("variant", "ghost") - custom.clicked.connect(lambda: self.set_date_mode("custom")) - bottom_row.addWidget(custom) + self.custom_date_button = QPushButton("自定义") + self.custom_date_button.setObjectName("PatientCustomDateButton") + self.custom_date_button.setProperty("variant", "ghost") + self.custom_date_button.clicked.connect(lambda: self.set_date_mode("custom")) + bottom_row.addWidget(self.custom_date_button) panel.addLayout(bottom_row) return card def _build_summary(self) -> QHBoxLayout: layout = QHBoxLayout() + layout.setObjectName("PatientSummaryRow") layout.setSpacing(8) + layout.setAlignment(Qt.AlignmentFlag.AlignLeft) self.summary_buttons: dict[str, QPushButton] = {} for key, label, mode in ( ("today", "今日预约", "today"), @@ -1448,8 +1467,16 @@ class PatientListWorkspace(QWidget): ("day_after", "后天预约", "day_after"), ): button = QPushButton(f"{label}\n0 人") + button.setObjectName( + { + "today": "PatientSummaryToday", + "tomorrow": "PatientSummaryTomorrow", + "day_after": "PatientSummaryDayAfter", + }[key] + ) button.setProperty("summaryCard", True) button.setFixedHeight(42) + button.setMaximumWidth(420) button.setIcon(_summary_calendar_icon()) button.setIconSize(QSize(34, 34)) button.clicked.connect(lambda _checked=False, value=mode: self.set_date_mode(value)) diff --git a/app/src/doctor_workstation/ui/pages/reception.py b/app/src/doctor_workstation/ui/pages/reception.py index c2b790cbc..b64f902cb 100644 --- a/app/src/doctor_workstation/ui/pages/reception.py +++ b/app/src/doctor_workstation/ui/pages/reception.py @@ -10,9 +10,23 @@ from copy import deepcopy from datetime import date, timedelta from inspect import Parameter, signature from pathlib import Path +from threading import BoundedSemaphore, Event, Lock from typing import Any -from PySide6.QtCore import QDate, QPoint, QPointF, QRectF, QSize, Qt, QTimer, QUrl, Signal +from PySide6.QtCore import ( + QCoreApplication, + QDate, + QEvent, + QPoint, + QPointF, + QRectF, + QSize, + Qt, + QThreadPool, + QTimer, + QUrl, + Signal, +) from PySide6.QtGui import ( QBrush, QColor, @@ -91,6 +105,13 @@ NOTE_LIMIT = 500 MAX_NOTE_MEDIA = 99 AI_ANALYSIS_MODELS = ("qwen", "openai") AI_ANALYSIS_MODEL_LABELS = {"qwen": "千问", "openai": "OpenAI"} +_ASYNC_REQUEST_CANCELLED = object() +_ASYNC_REQUEST_DEFERRED = object() +_AI_AUTOMATIC_GENERATION_SETTLE_SECONDS = 0.25 +_AI_AUTOMATIC_REQUEST_SLOTS = BoundedSemaphore(2) +_AI_GENERATION_POOL = QThreadPool() +_AI_GENERATION_POOL.setMaxThreadCount(4) +_AI_GENERATION_POOL.setExpiryTimeout(30_000) AI_MEDICAL_DISCLAIMER = ( "仅供临床辅助参考,不可替代医生诊断,不得直接用于开方、用药调整或其他医疗决策。" "系统未对舌像、报告附件或视频画面进行视觉诊断;仅分析已录入、归档或转写的文字及附件元数据。" @@ -238,7 +259,8 @@ QWidget#ReceptionPage QLabel#StatusBadge { font-size: 11px; font-weight: 500; } -QWidget#ReceptionPage QPushButton#ReceptionHistoryButton { +QWidget#ReceptionPage QPushButton#ReceptionHistoryButton, +QWidget#ReceptionPage QPushButton#ReceptionImButton { min-height: 34px; max-height: 34px; padding: 0 13px; @@ -260,7 +282,8 @@ QWidget#ReceptionPage QPushButton#ReceptionMoreButton { font-size: 13px; font-weight: 500; } -QWidget#ReceptionPage QPushButton#ReceptionHistoryButton:hover { +QWidget#ReceptionPage QPushButton#ReceptionHistoryButton:hover, +QWidget#ReceptionPage QPushButton#ReceptionImButton:hover { color: #5469F0; background-color: #F7F9FE; border-color: #C5CEFF; @@ -1008,20 +1031,28 @@ QDialog#ReceptionAiAnalysisDialog QLabel[dialogAiCaption="true"] { color: #3F4E75; font-size: 13px; font-weight: 700; + padding-bottom: 2px; } QDialog#ReceptionAiAnalysisDialog QLabel[dialogAiBody="true"] { color: #314165; - font-size: 13px; + font-size: 13.5px; font-weight: 400; + line-height: 1.85; +} +QDialog#ReceptionAiAnalysisDialog QLabel[dialogAiStructured="true"] { + color: #314165; + font-size: 13.5px; + font-weight: 400; + line-height: 175%; } QDialog#ReceptionAiAnalysisDialog QLabel[dialogAiRisk="true"] { - min-height: 28px; - padding: 4px 10px; + min-height: 30px; + padding: 5px 12px; color: #B13E4D; background-color: #FFF0F2; border: 1px solid #F3D1D7; - border-radius: 7px; - font-size: 12px; + border-radius: 8px; + font-size: 12.5px; font-weight: 600; } QDialog#ReceptionAiAnalysisDialog QLabel[dialogAiRisk="true"][riskLevel="medium"] { @@ -1265,6 +1296,233 @@ def _ai_narrative_text(value: object) -> str: return _normalize_ai_narrative_string(value) +_AI_INSIGHT_LIST_RE = re.compile(r"^\s*(\d{1,2})\s*([\.、))]\s*)") +_AI_INSIGHT_LIST_LOOKAHEAD_RE = re.compile( + r"(?:^|(?<=[::;;。\s]))(\d{1,2})\s*([\.、))])\s*" +) +_AI_INSIGHT_LABEL_RE = re.compile( + r"^([\u4e00-\u9fa5A-Za-z()()·\s]{1,12})[::]\s*(.*)$" +) + + +def _ai_escape_html(value: str) -> str: + """转义富文本片段,防止分析文本中带 HTML/Markdown 误伤样式。""" + + return ( + (value or "") + .replace("&", "&") + .replace("<", "<") + .replace(">", ">") + ) + + +def _ai_split_label_or_sentence( + segment: str, + *, + marker: str | None = None, +) -> tuple[str, str, str, bool]: + """识别单段是否为 '标签:内容' 结构, 决定是否加粗展示。""" + + label_match = _AI_INSIGHT_LABEL_RE.match(segment) + if label_match: + label = label_match.group(1).strip() + body = label_match.group(2).strip() + if label and body: + return marker or "", label, body, True + if marker: + return marker, "", segment, False + return "", "", segment, False + + +def _ai_split_numbered_list(text: str) -> list[dict[str, str]]: + """把以 '1.'/'2、'/'3)' 开头的连续列表拆成独立项。""" + + items: list[dict[str, str]] = [] + cursor = 0 + length = len(text) + while cursor < length: + remainder = text[cursor:] + list_match = _AI_INSIGHT_LIST_RE.match(remainder) + if not list_match: + tail = remainder.strip() + if tail: + marker, label, body, has_label = _ai_split_label_or_sentence(tail) + items.append( + {"marker": marker, "label": label, "body": body, "has_label": has_label} + ) + break + marker = f"{list_match.group(1)}." + after_marker = remainder[list_match.end():] + sentence_match = re.search(r"[。;;\n]", after_marker) + candidate_ends: list[int] = [] + if sentence_match is not None: + candidate_ends.append(sentence_match.end()) + next_marker_match = re.search(r"\s\d{1,2}\s*[\.、))]", after_marker) + if next_marker_match is not None: + candidate_ends.append(next_marker_match.start() + 1) + inner_end = min(candidate_ends) if candidate_ends else len(after_marker) + segment = after_marker[:inner_end].strip("。;; \n").strip() + if segment: + inner_marker, inner_label, inner_body, has_label = _ai_split_label_or_sentence( + segment, marker=marker + ) + items.append( + { + "marker": inner_marker, + "label": inner_label, + "body": inner_body, + "has_label": has_label, + } + ) + cursor += list_match.end() + inner_end + while cursor < length and text[cursor] in "。;;\n": + cursor += 1 + return items + + +def _ai_split_plain_paragraph(text: str) -> list[dict[str, str]]: + """把密集段落按 。;拆成结构化条目, 每行一条更易阅读。""" + + items: list[dict[str, str]] = [] + if not text.strip(): + return items + cursor = 0 + length = len(text) + while cursor < length: + remainder = text[cursor:] + sentence_match = re.search(r"[。;;\n]", remainder) + if sentence_match is not None: + segment = remainder[: sentence_match.start()].strip() + if segment: + marker, label, body, has_label = _ai_split_label_or_sentence(segment) + items.append( + {"marker": marker, "label": label, "body": body, "has_label": has_label} + ) + cursor += sentence_match.end() + continue + tail = remainder.strip() + if tail: + marker, label, body, has_label = _ai_split_label_or_sentence(tail) + items.append( + {"marker": marker, "label": label, "body": body, "has_label": has_label} + ) + break + return items + + +def _ai_split_into_segments(text: str) -> list[dict[str, str]]: + """对一段 AI 叙事文本进行结构化拆分, 便于分条阅读。 + + 识别三种模式: + - 编号开头 (1. / 2、 / 3) / 4)) -> list_item + - "短中文标签:内容" 形式 -> lead_item, 标签部分加粗 + - 其余按 。 / ;分句 -> plain_item + + 每种类型都会渲染成独立行, 改善阅读节奏。 + """ + + raw = (text or "").strip() + if not raw: + return [] + + items: list[dict[str, str]] = [] + paragraphs = [line.strip() for line in raw.split("\n") if line.strip()] + if not paragraphs: + return [] + + for paragraph in paragraphs: + lookahead_match = _AI_INSIGHT_LIST_LOOKAHEAD_RE.search(paragraph) + starts_with_list = _AI_INSIGHT_LIST_RE.match(paragraph) is not None + if not starts_with_list and lookahead_match is not None: + list_start = lookahead_match.start() + preamble_candidate = paragraph[:list_start].rstrip() + sentence_tail = re.search(r"[。;;][^。;;]*$", preamble_candidate) + if sentence_tail is not None: + preamble = preamble_candidate[: sentence_tail.end()].strip( + "。;;:: \t\n" + ) + else: + preamble = re.sub( + r"\s*\d{1,2}\s*[\.、))]?\s*$", + "", + preamble_candidate, + ).strip("。;;:: \t\n") + body = paragraph[list_start:].lstrip() + if preamble: + items.extend(_ai_split_plain_paragraph(preamble)) + items.extend(_ai_split_numbered_list(body)) + elif starts_with_list: + items.extend(_ai_split_numbered_list(paragraph)) + else: + items.extend(_ai_split_plain_paragraph(paragraph)) + return items + + +def _ai_segments_to_html(items: list[dict[str, str]]) -> str: + """把拆分出的条目渲染为 RichText HTML 片段, 用于布局层分段展示。""" + + if not items: + return "" + fragments: list[str] = [] + for item in items: + marker = _ai_escape_html(item.get("marker", "")) + label = _ai_escape_html(item.get("label", "")) + body = _ai_escape_html(item.get("body", "")) + has_label = bool(item.get("has_label")) and label + indent_open = "" + indent_close = "" + if marker or has_label: + indent_open = ( + '
    ' + ) + indent_close = "
    " + block_parts: list[str] = [] + if marker: + block_parts.append( + "" + f"{marker}" + "" + ) + label_html = label + body_html = body + if has_label: + inline = ( + "" + f"{label_html}" + "" + "" + f"{body_html}" + ) + else: + inline = f"{body_html}" + block_parts.append( + "" + f"{inline}" + "" + ) + fragments.append(indent_open + "".join(block_parts) + indent_close) + else: + fragments.append( + "
    " + f"{body}" + "
    " + ) + return "".join(fragments) + + +def _ai_narrative_structured_html(value: object) -> str: + """把 AI 叙事文本先归一化, 再切成可阅读片段, 渲染为 HTML。""" + + normalized = _ai_narrative_text(value) + if not normalized: + return "" + items = _ai_split_into_segments(normalized) + return _ai_segments_to_html(items) + + def _queue_condition_summary(record: Any) -> str: """Build the queue's disease/complaint summary from scalar or nested DTOs.""" @@ -1783,15 +2041,22 @@ def _accepts_ai_model(method: Any) -> bool: def _clear_ai_layout(layout: Any) -> None: - """Detach dynamic AI labels immediately so model switches cannot duplicate them.""" + """Hide dynamic AI labels before their deferred deletion. + + Keeping the widget parented until ``deleteLater`` is delivered is important on + Windows. Reparenting a visible child to ``None`` promotes it to a native + top-level window, which can briefly flash a small title-bar window while a + patient or AI model is loading. + """ while layout.count(): item = layout.takeAt(0) widget = item.widget() child_layout = item.layout() if widget is not None: - widget.setParent(None) + widget.hide() widget.deleteLater() + QCoreApplication.sendPostedEvents(widget, QEvent.Type.DeferredDelete) elif child_layout is not None: _clear_ai_layout(child_layout) @@ -2438,7 +2703,7 @@ class _ReceptionAiAnalysisDialog(QDialog): body.setObjectName("ReceptionAiAnalysisDialogBody") body_layout = QVBoxLayout(body) body_layout.setContentsMargins(18, 16, 18, 20) - body_layout.setSpacing(12) + body_layout.setSpacing(14) disclaimer = QLabel(AI_MEDICAL_DISCLAIMER, body) disclaimer.setObjectName("ReceptionAiAnalysisDialogDisclaimer") @@ -2448,6 +2713,8 @@ class _ReceptionAiAnalysisDialog(QDialog): body_layout.addWidget(disclaimer) self.disclaimer_label = disclaimer + self._structured_labels: dict[str, QLabel] = {} + def add_text_section( caption: str, tone: str, @@ -2457,7 +2724,7 @@ class _ReceptionAiAnalysisDialog(QDialog): section = QFrame(body) section.setObjectName("ReceptionAiAnalysisDialogSection") section_layout = QHBoxLayout(section) - section_layout.setContentsMargins(14, 13, 16, 15) + section_layout.setContentsMargins(16, 14, 18, 16) section_layout.setSpacing(11) section_layout.addWidget( _ReceptionAiSectionIcon(tone, section), @@ -2466,7 +2733,7 @@ class _ReceptionAiAnalysisDialog(QDialog): ) copy = QVBoxLayout() copy.setContentsMargins(0, 0, 0, 0) - copy.setSpacing(7) + copy.setSpacing(8) caption_label = QLabel(caption, section) caption_label.setProperty("dialogAiCaption", True) copy.addWidget(caption_label) @@ -2481,9 +2748,30 @@ class _ReceptionAiAnalysisDialog(QDialog): QSizePolicy.Policy.Ignored, QSizePolicy.Policy.Preferred, ) + # PlainText 标签仍然保留以兼容现有的 findChild 测试; + # 视觉上隐藏, 由下方的 RichText 结构化视图替代渲染。 + value_label.setMaximumHeight(0) + value_label.hide() copy.addWidget(value_label) + + structured_label = QLabel("", section) + structured_label.setObjectName(object_name + "Structured") + structured_label.setProperty("dialogAiBody", True) + structured_label.setProperty("dialogAiStructured", True) + structured_label.setTextFormat(Qt.TextFormat.RichText) + structured_label.setWordWrap(True) + structured_label.setMinimumWidth(0) + structured_label.setTextInteractionFlags(Qt.TextInteractionFlag.TextSelectableByMouse) + structured_label.setSizePolicy( + QSizePolicy.Policy.Ignored, + QSizePolicy.Policy.Preferred, + ) + # 默认占位符 (后续 _render_model 会覆盖) + structured_label.setText("—") + copy.addWidget(structured_label) section_layout.addLayout(copy, 1) body_layout.addWidget(section) + self._structured_labels[object_name] = structured_label return value_label self.diagnosis_label = add_text_section( @@ -2496,7 +2784,7 @@ class _ReceptionAiAnalysisDialog(QDialog): risk_section = QFrame(body) risk_section.setObjectName("ReceptionAiAnalysisDialogSection") risk_layout = QHBoxLayout(risk_section) - risk_layout.setContentsMargins(14, 13, 16, 15) + risk_layout.setContentsMargins(16, 14, 18, 16) risk_layout.setSpacing(11) risk_layout.addWidget( _ReceptionAiSectionIcon("risk", risk_section), @@ -2505,14 +2793,14 @@ class _ReceptionAiAnalysisDialog(QDialog): ) risk_copy = QVBoxLayout() risk_copy.setContentsMargins(0, 0, 0, 0) - risk_copy.setSpacing(7) + risk_copy.setSpacing(9) risk_caption = QLabel("风险评估", risk_section) risk_caption.setProperty("dialogAiCaption", True) risk_copy.addWidget(risk_caption) risk_items = _AiFlowHost( risk_section, - horizontal_spacing=7, - vertical_spacing=7, + horizontal_spacing=9, + vertical_spacing=9, ) risk_items.setObjectName("ReceptionAiAnalysisDialogRiskItems") risk_items_layout = risk_items.flow @@ -2663,6 +2951,23 @@ class _ReceptionAiAnalysisDialog(QDialog): self.treatment_label.setText( _ai_narrative_text(_analysis_value(payload, "treatment_advice")) or "—" ) + # 同步刷新右侧 RichText 结构化视图 (左侧 PlainText 标签只在 findChild 测试中使用) + structured_diagnosis = self._structured_labels.get( + "ReceptionAiAnalysisDialogDiagnosisText" + ) + if structured_diagnosis is not None: + diagnosis_html = _ai_narrative_structured_html( + _analysis_value(payload, "diagnosis_advice") + ) + structured_diagnosis.setText(diagnosis_html or self.diagnosis_label.text()) + structured_treatment = self._structured_labels.get( + "ReceptionAiAnalysisDialogTreatmentText" + ) + if structured_treatment is not None: + treatment_html = _ai_narrative_structured_html( + _analysis_value(payload, "treatment_advice") + ) + structured_treatment.setText(treatment_html or self.treatment_label.text()) _clear_ai_layout(self.risk_items_layout) risks = _normalize_ai_risks(_analysis_value(payload, "risk_assessment")) if not risks: @@ -3009,9 +3314,12 @@ class QueueRow(QWidget): default=STATUS_TEXT.get(status_number, status_number), ) ) + # The nested layouts are attached later. Parent widgets that are shown + # during construction so Windows never promotes them to transient HWNDs. badge = StatusBadge( status_text, _queue_badge_kind(status_number, status_text), + parent=self, ) badge.setMinimumWidth(max(54, badge.sizeHint().width())) show_badge = _queue_shows_status_badge(status_number, status_text) @@ -3022,7 +3330,7 @@ class QueueRow(QWidget): 0, Qt.AlignmentFlag.AlignRight | Qt.AlignmentFlag.AlignTop, ) - time_label = QLabel(_queue_time_text(record)) + time_label = QLabel(_queue_time_text(record), self) time_label.setObjectName("ReceptionQueueTime") time_label.setVisible(not show_badge and bool(time_label.text())) top.addWidget(time_label, 0, Qt.AlignmentFlag.AlignRight | Qt.AlignmentFlag.AlignTop) @@ -3040,7 +3348,8 @@ class QueueRow(QWidget): self.glucose_drop = drop bottom.addWidget(drop, 0, Qt.AlignmentFlag.AlignRight | Qt.AlignmentFlag.AlignVCenter) metric_label = QLabel( - f"{display_text(metric)} mmol/L" if metric not in (None, "") else "" + f"{display_text(metric)} mmol/L" if metric not in (None, "") else "", + self, ) metric_label.setObjectName("ReceptionQueueMetric") tone = _glucose_tone(metric) @@ -3150,6 +3459,10 @@ class ReceptionDailyRecordsPanel(DailyRecordPanel): self._patient_age = parsed if parsed is not None and parsed >= 0 else None def clear_with_message(self, message: str) -> None: + # A stale range request is intentionally barred from touching the new + # patient. Reset the panel-owned flag here so that stale ``finished`` + # is not also required to re-enable the controls. + self.set_loading(False) super().clear() self.state.show_message(message, "info") @@ -3275,6 +3588,8 @@ class ReceptionPage(QWidget): self._queue_query_key: tuple[Any, ...] | None = None self._detail_loading = False self._detail_requests: set[tuple[int, int]] = set() + self._detail_cancel_events: dict[tuple[int, int], Event] = {} + self._detail_failed_requests: set[tuple[int, int]] = set() self._daily_generation = 0 self._daily_loading = False self._daily_diagnosis_id: int | None = None @@ -3293,7 +3608,19 @@ class ReceptionPage(QWidget): self._ai_analysis_model_states = {model: "empty" for model in AI_ANALYSIS_MODELS} self._ai_analysis_model_messages = {model: "" for model in AI_ANALYSIS_MODELS} self._ai_analysis_requests: set[tuple[int, int, int, str]] = set() + self._ai_analysis_cancel_events: dict[tuple[int, int, int, str], Event] = {} + self._ai_analysis_started: set[tuple[int, int, int, str]] = set() + self._patient_ai_generation_requests: set[tuple[int, int, int, str]] = set() + self._patient_ai_generation_cancel_events: dict[ + tuple[int, int, int, str], Event + ] = {} + self._patient_ai_generation_started: set[tuple[int, int, int, str]] = set() self._patient_ai_list_requests: set[tuple[int, int, int]] = set() + self._patient_ai_list_cancel_events: dict[tuple[int, int, int], Event] = {} + self._patient_ai_list_started: set[tuple[int, int, int]] = set() + self._patient_ai_list_epochs: dict[tuple[int, int, int], int] = {} + self._patient_ai_mutation_epochs: dict[int, int] = {} + self._patient_ai_mutation_lock = Lock() self._ai_analysis_active_model = "qwen" self._ai_analysis_supports_models = True self._ai_analysis_patient_flow = False @@ -3513,11 +3840,16 @@ class ReceptionPage(QWidget): self.history_button.setIconSize(QSize(14, 14)) self.history_button.clicked.connect(lambda: self.detail_tabs.setCurrentIndex(4)) patient_head.addWidget(self.history_button) + self.video_button = QPushButton("IM 问诊", hero) + self.video_button.setObjectName("ReceptionImButton") + self.video_button.setToolTip("打开患者 IM,可发送消息并从会话中发起视频") + self.video_button.setProperty("variant", "secondary") + self.video_button.clicked.connect(self._request_video) + patient_head.addWidget(self.video_button) self.more_button = QPushButton("更多", hero) self.more_button.setObjectName("ReceptionMoreButton") more_menu = QMenu(self.more_button) more_menu.addAction("通知医助").triggered.connect(self._notify_assistant) - more_menu.addAction("IM 问诊").triggered.connect(self._request_video) edit_action = more_menu.addAction("编辑病历") edit_action.setVisible(self._can_edit) edit_action.triggered.connect(self._edit_diagnosis) @@ -3537,10 +3869,6 @@ class ReceptionPage(QWidget): action_compat.move(-100, -100) self.notify_button = QPushButton("通知医助", action_compat) self.notify_button.clicked.connect(self._notify_assistant) - self.video_button = QPushButton("IM 问诊", action_compat) - self.video_button.setToolTip("打开患者 IM,可发送消息并从会话中发起视频") - self.video_button.setProperty("variant", "secondary") - self.video_button.clicked.connect(self._request_video) self.edit_button = QPushButton("编辑病历", action_compat) self.edit_button.setProperty("variant", "secondary") self.edit_button.clicked.connect(self._edit_diagnosis) @@ -4744,6 +5072,129 @@ class ReceptionPage(QWidget): context = self._selection_context() return context is not None and _same_id(context[3], patient_id) + def _patient_ai_request_pending( + self, + patient_id: int, + model: str | None = None, + ) -> bool: + """Return whether a live worker can settle this patient's model state. + + A history request can only settle the qwen-first loading state. An + unrelated OpenAI generation must never keep qwen stuck in loading. + Patient-level workers are intentionally shared across A -> B -> A + selection generations, so matching is by stable patient id. + """ + + if model in {None, "qwen"}: + for request_key in self._patient_ai_list_requests: + _generation, _appointment_id, request_patient_id = request_key + if not _same_id(request_patient_id, patient_id): + continue + cancel_event = self._patient_ai_list_cancel_events.get(request_key) + if ( + request_key in self._patient_ai_list_started + or cancel_event is None + or not cancel_event.is_set() + ): + return True + expected_model = "qwen" if model is None else model + for request_key in self._patient_ai_generation_requests: + ( + _generation, + _request_appointment_id, + request_patient_id, + request_model, + ) = request_key + if not ( + _same_id(request_patient_id, patient_id) + and request_model == expected_model + ): + continue + cancel_event = self._patient_ai_generation_cancel_events.get(request_key) + if ( + request_key in self._patient_ai_generation_started + or cancel_event is None + or not cancel_event.is_set() + ): + return True + return False + + def _current_patient_ai_context( + self, + patient_id: int, + ) -> tuple[int, int, int] | None: + """Return the active patient-report context, including attached retries.""" + + if not self._ai_analysis_patient_flow: + return None + context = self._selection_context() + if context is None or not _same_id(context[3], patient_id): + return None + return self._ai_analysis_generation, context[1], patient_id + + def _patient_ai_mutation_epoch(self, patient_id: int) -> int: + with self._patient_ai_mutation_lock: + return self._patient_ai_mutation_epochs.get(patient_id, 0) + + def _advance_patient_ai_mutation_epoch(self, patient_id: int) -> None: + with self._patient_ai_mutation_lock: + self._patient_ai_mutation_epochs[patient_id] = ( + self._patient_ai_mutation_epochs.get(patient_id, 0) + 1 + ) + + def _reconcile_stale_patient_ai_list(self, patient_id: int) -> None: + """Preserve newer writes and only retry an otherwise orphaned read.""" + + current_context = self._current_patient_ai_context(patient_id) + if current_context is None: + return + _generation, appointment_id, _patient_id = current_context + if ( + self._ai_analysis_model_states.get("qwen") != "loading" + or "qwen" in self._ai_analysis_payloads + or self._patient_ai_request_pending(patient_id, "qwen") + ): + self._sync_ai_analysis_view() + return + self._load_patient_ai_reports( + patient_id, + appointment_id=appointment_id, + diagnosis_id=self._ai_analysis_diagnosis_id, + force=True, + ) + + def _diagnosis_ai_request_pending( + self, + request_generation: int, + appointment_id: int, + diagnosis_id: int, + model: str, + ) -> bool: + return ( + request_generation, + appointment_id, + diagnosis_id, + model, + ) in self._ai_analysis_requests + + def _finish_orphaned_ai_loading(self, model: str, message: str) -> None: + """Turn an unsupported loading state into a visible retryable error.""" + + regenerating = self._ai_analysis_regeneration_model == model + if regenerating: + self._ai_analysis_regenerating = False + self._ai_analysis_regeneration_model = None + if self._ai_analysis_model_states.get(model) != "loading" and not regenerating: + return + if model in self._ai_analysis_payloads: + self._ai_analysis_model_states[model] = "success" + self._ai_analysis_model_messages[model] = "" + self._ai_analysis_operation_error = message + else: + self._ai_analysis_model_states[model] = "error" + self._ai_analysis_model_messages[model] = message + self._sync_ai_analysis_view() + def _install_patient_ai_rows( self, rows: Sequence[Mapping[str, Any]], @@ -4819,13 +5270,15 @@ class ReceptionPage(QWidget): diagnosis_id: int | None, force: bool, ) -> None: - if ( - not force - and _same_id(patient_id, self._ai_analysis_patient_id) - and self._ai_analysis_model_states["qwen"] - in {"loading", "success", "missing", "error", "permission"} - ): - return + if not force and _same_id(patient_id, self._ai_analysis_patient_id): + qwen_state = self._ai_analysis_model_states["qwen"] + if qwen_state == "loading": + if self._patient_ai_request_pending( + patient_id, + ): + return + elif qwen_state in {"success", "missing", "error", "permission"}: + return self._ai_analysis_generation += 1 request_generation = self._ai_analysis_generation self._ai_analysis_patient_flow = True @@ -4846,10 +5299,60 @@ class ReceptionPage(QWidget): "loading", "正在查询该患者已保存的 AI 报告…", ) + # A patient-level read or qwen generation survives a temporary switch + # away from the patient. Reattach the current view instead of issuing + # a duplicate GET/POST when the doctor returns via A -> B -> A. + cancelled_reads = [ + request_key + for request_key in self._patient_ai_list_requests + if _same_id(request_key[2], patient_id) + and request_key not in self._patient_ai_list_started + and (cancel_event := self._patient_ai_list_cancel_events.get(request_key)) + is not None + and cancel_event.is_set() + ] + for cancelled_key in cancelled_reads: + self._patient_ai_list_requests.discard(cancelled_key) + self._patient_ai_list_cancel_events.pop(cancelled_key, None) + self._patient_ai_list_epochs.pop(cancelled_key, None) + if self._patient_ai_request_pending(patient_id, "qwen"): + self._sync_ai_analysis_view() + return request_key = (request_generation, appointment_id, patient_id) self._patient_ai_list_requests.add(request_key) + cancel_event = Event() + self._patient_ai_list_cancel_events[request_key] = cancel_event + self._patient_ai_list_epochs[request_key] = self._patient_ai_mutation_epoch( + patient_id + ) + + def request() -> Any: + if cancel_event.wait(_AI_AUTOMATIC_GENERATION_SETTLE_SECONDS): + return _ASYNC_REQUEST_CANCELLED + if not self._patient_ai_context_current( + request_generation, + appointment_id, + patient_id, + ) or cancel_event.is_set(): + return _ASYNC_REQUEST_CANCELLED + automatic_slot = _AI_AUTOMATIC_REQUEST_SLOTS.acquire(blocking=False) + if not automatic_slot: + return _ASYNC_REQUEST_DEFERRED + try: + self._patient_ai_list_started.add(request_key) + if not self._patient_ai_context_current( + request_generation, + appointment_id, + patient_id, + ) or cancel_event.is_set(): + self._patient_ai_list_started.discard(request_key) + return _ASYNC_REQUEST_CANCELLED + return method(patient_id) + finally: + _AI_AUTOMATIC_REQUEST_SLOTS.release() + run_async( - lambda: method(patient_id), + request, on_success=lambda result: self._apply_patient_ai_report_list( result, request_generation, @@ -4867,6 +5370,7 @@ class ReceptionPage(QWidget): appointment_id, patient_id, ), + priority=self._detail_generation, ) def _apply_patient_ai_report_list( @@ -4876,12 +5380,31 @@ class ReceptionPage(QWidget): appointment_id: int, patient_id: int, ) -> None: - self._patient_ai_list_requests.discard( - (request_generation, appointment_id, patient_id) - ) - if not self._patient_ai_context_current( - request_generation, appointment_id, patient_id - ): + request_key = (request_generation, appointment_id, patient_id) + authoritative = request_key in self._patient_ai_list_requests + request_epoch = self._patient_ai_list_epochs.pop(request_key, None) + self._patient_ai_list_requests.discard(request_key) + self._patient_ai_list_cancel_events.pop(request_key, None) + self._patient_ai_list_started.discard(request_key) + current_context = self._current_patient_ai_context(patient_id) + if current_context is None or not authoritative: + return + effective_generation, effective_appointment_id, _patient_id = current_context + if request_epoch != self._patient_ai_mutation_epoch(patient_id): + # A report POST began after this GET. The older read, including a + # cancellation result, must never clear the generated snapshot. + self._reconcile_stale_patient_ai_list(patient_id) + return + if result is _ASYNC_REQUEST_DEFERRED: + message = "患者报告查询任务较多,请稍后重试。" + if "qwen" in self._ai_analysis_payloads: + self._ai_analysis_operation_error = message + self._sync_ai_analysis_view() + else: + self._set_ai_analysis_state("error", message) + return + if result is _ASYNC_REQUEST_CANCELLED: + self._reconcile_stale_patient_ai_list(patient_id) return rows = _patient_report_rows( result, @@ -4922,9 +5445,10 @@ class ReceptionPage(QWidget): self._ai_analysis_regeneration_model = "qwen" self._request_patient_ai_generation( "qwen", - request_generation, - appointment_id, + effective_generation, + effective_appointment_id, patient_id, + settle_before_request=True, ) def _patient_ai_report_list_error( @@ -4934,16 +5458,25 @@ class ReceptionPage(QWidget): appointment_id: int, patient_id: int, ) -> None: - self._patient_ai_list_requests.discard( - (request_generation, appointment_id, patient_id) - ) - if not self._patient_ai_context_current( - request_generation, appointment_id, patient_id - ): + request_key = (request_generation, appointment_id, patient_id) + authoritative = request_key in self._patient_ai_list_requests + request_epoch = self._patient_ai_list_epochs.pop(request_key, None) + self._patient_ai_list_requests.discard(request_key) + self._patient_ai_list_cancel_events.pop(request_key, None) + self._patient_ai_list_started.discard(request_key) + if self._current_patient_ai_context(patient_id) is None or not authoritative: + return + if request_epoch != self._patient_ai_mutation_epoch(patient_id): + self._reconcile_stale_patient_ai_list(patient_id) + return + message = f"患者历史报告查询失败:{friendly_error(error)}" + if "qwen" in self._ai_analysis_payloads: + self._ai_analysis_operation_error = message + self._sync_ai_analysis_view() return self._set_ai_analysis_state( "error", - f"患者历史报告查询失败:{friendly_error(error)}", + message, ) def _patient_ai_report_list_finished( @@ -4952,12 +5485,19 @@ class ReceptionPage(QWidget): appointment_id: int, patient_id: int, ) -> None: - self._patient_ai_list_requests.discard( - (request_generation, appointment_id, patient_id) - ) - if self._patient_ai_context_current( - request_generation, appointment_id, patient_id - ): + request_key = (request_generation, appointment_id, patient_id) + self._patient_ai_list_requests.discard(request_key) + self._patient_ai_list_epochs.pop(request_key, None) + self._patient_ai_list_cancel_events.pop(request_key, None) + self._patient_ai_list_started.discard(request_key) + if self._current_patient_ai_context(patient_id) is not None: + if not self._patient_ai_request_pending( + patient_id, + ): + self._finish_orphaned_ai_loading( + "qwen", + "患者 AI 报告查询已结束但未返回有效结果,请重试。", + ) self._sync_ai_analysis_view() def _request_patient_ai_generation( @@ -4966,6 +5506,8 @@ class ReceptionPage(QWidget): request_generation: int, appointment_id: int, patient_id: int, + *, + settle_before_request: bool = False, ) -> None: if not self._patient_ai_context_current( request_generation, appointment_id, patient_id @@ -4991,9 +5533,6 @@ class ReceptionPage(QWidget): ) return request_key = (request_generation, appointment_id, patient_id, model) - if request_key in self._ai_analysis_requests: - return - self._ai_analysis_requests.add(request_key) self._ai_analysis_regenerating = True self._ai_analysis_regeneration_model = model self._ai_analysis_operation_error = "" @@ -5001,14 +5540,63 @@ class ReceptionPage(QWidget): self._ai_analysis_model_states[model] = "loading" self._ai_analysis_model_messages[model] = "" self._sync_ai_analysis_view() + cancelled_matches: list[tuple[int, int, int, str]] = [] + for active_key in self._patient_ai_generation_requests: + _generation, _active_appointment_id, active_patient_id, active_model = active_key + if not (_same_id(active_patient_id, patient_id) and active_model == model): + continue + cancel_event = self._patient_ai_generation_cancel_events.get(active_key) + if ( + active_key in self._patient_ai_generation_started + or cancel_event is None + or not cancel_event.is_set() + ): + return + cancelled_matches.append(active_key) + for cancelled_key in cancelled_matches: + self._patient_ai_generation_requests.discard(cancelled_key) + self._patient_ai_generation_cancel_events.pop(cancelled_key, None) + self._patient_ai_generation_requests.add(request_key) + cancel_event = Event() + self._patient_ai_generation_cancel_events[request_key] = cancel_event + + def request() -> Any: + if settle_before_request and cancel_event.wait( + _AI_AUTOMATIC_GENERATION_SETTLE_SECONDS + ): + return _ASYNC_REQUEST_CANCELLED + if cancel_event.is_set() or self._current_patient_ai_context(patient_id) is None: + return _ASYNC_REQUEST_CANCELLED + automatic_slot = False + if settle_before_request: + automatic_slot = _AI_AUTOMATIC_REQUEST_SLOTS.acquire(blocking=False) + if not automatic_slot: + return _ASYNC_REQUEST_DEFERRED + try: + self._patient_ai_generation_started.add(request_key) + if ( + cancel_event.is_set() + or self._current_patient_ai_context(patient_id) is None + ): + self._patient_ai_generation_started.discard(request_key) + return _ASYNC_REQUEST_CANCELLED + # From this point the write is authoritative and will be + # submitted; older history reads cannot replace it. + self._advance_patient_ai_mutation_epoch(patient_id) + return method(patient_id, model=model) + finally: + if automatic_slot: + _AI_AUTOMATIC_REQUEST_SLOTS.release() + run_async( - lambda: method(patient_id, model=model), + request, on_success=lambda result: self._apply_patient_ai_generation( result, request_generation, appointment_id, patient_id, model, + settle_before_request, ), on_error=lambda error: self._patient_ai_generation_error( error, @@ -5023,6 +5611,8 @@ class ReceptionPage(QWidget): patient_id, model, ), + pool=_AI_GENERATION_POOL, + priority=self._detail_generation, ) def _apply_patient_ai_generation( @@ -5032,13 +5622,52 @@ class ReceptionPage(QWidget): appointment_id: int, patient_id: int, model: str, + settle_before_request: bool, ) -> None: - self._ai_analysis_requests.discard( - (request_generation, appointment_id, patient_id, model) - ) - if not self._patient_ai_context_current( - request_generation, appointment_id, patient_id - ): + request_key = (request_generation, appointment_id, patient_id, model) + authoritative = request_key in self._patient_ai_generation_requests + self._patient_ai_generation_requests.discard(request_key) + self._patient_ai_generation_cancel_events.pop(request_key, None) + self._patient_ai_generation_started.discard(request_key) + current_context = self._current_patient_ai_context(patient_id) + if current_context is None or not authoritative: + return + effective_generation, effective_appointment_id, _patient_id = current_context + if result is _ASYNC_REQUEST_DEFERRED: + if self._ai_analysis_regeneration_model == model: + self._ai_analysis_regenerating = False + self._ai_analysis_regeneration_model = None + label = AI_ANALYSIS_MODEL_LABELS.get(model, model) + message = f"{label}后台分析任务较多,请稍后点击重新分析。" + if model in self._ai_analysis_payloads: + self._ai_analysis_model_states[model] = "success" + self._ai_analysis_model_messages[model] = "" + self._ai_analysis_operation_error = message + else: + self._ai_analysis_model_states[model] = "error" + self._ai_analysis_model_messages[model] = message + self._sync_ai_analysis_view() + return + if result is _ASYNC_REQUEST_CANCELLED: + # The old worker reached its preflight while another patient was + # selected, then A became current again before signal delivery. + # Replace the cancelled single-flight instead of treating the + # sentinel as a malformed server response. + if ( + model not in self._ai_analysis_payloads + and not self._patient_ai_request_pending(patient_id, model) + and ( + self._ai_analysis_model_states.get(model) == "loading" + or self._ai_analysis_regeneration_model == model + ) + ): + self._request_patient_ai_generation( + model, + effective_generation, + effective_appointment_id, + patient_id, + settle_before_request=settle_before_request, + ) return generated = _generated_patient_report( result, @@ -5061,9 +5690,10 @@ class ReceptionPage(QWidget): if model == "qwen": self._request_patient_ai_generation( "openai", - request_generation, - appointment_id, + effective_generation, + effective_appointment_id, patient_id, + settle_before_request=True, ) return self._ai_analysis_regenerating = False @@ -5079,12 +5709,12 @@ class ReceptionPage(QWidget): patient_id: int, model: str, ) -> None: - self._ai_analysis_requests.discard( - (request_generation, appointment_id, patient_id, model) - ) - if not self._patient_ai_context_current( - request_generation, appointment_id, patient_id - ): + request_key = (request_generation, appointment_id, patient_id, model) + authoritative = request_key in self._patient_ai_generation_requests + self._patient_ai_generation_requests.discard(request_key) + self._patient_ai_generation_cancel_events.pop(request_key, None) + self._patient_ai_generation_started.discard(request_key) + if self._current_patient_ai_context(patient_id) is None or not authoritative: return self._ai_analysis_regenerating = False self._ai_analysis_regeneration_model = None @@ -5107,12 +5737,20 @@ class ReceptionPage(QWidget): patient_id: int, model: str, ) -> None: - self._ai_analysis_requests.discard( - (request_generation, appointment_id, patient_id, model) - ) - if self._patient_ai_context_current( - request_generation, appointment_id, patient_id - ): + request_key = (request_generation, appointment_id, patient_id, model) + self._patient_ai_generation_requests.discard(request_key) + self._patient_ai_generation_cancel_events.pop(request_key, None) + self._patient_ai_generation_started.discard(request_key) + if self._current_patient_ai_context(patient_id) is not None: + if not self._patient_ai_request_pending( + patient_id, + model, + ): + label = AI_ANALYSIS_MODEL_LABELS.get(model, model) + self._finish_orphaned_ai_loading( + model, + f"{label}报告请求已结束但未返回有效结果,请重试。", + ) self._sync_ai_analysis_view() def _regenerate_patient_ai_reports(self) -> None: @@ -5179,13 +5817,18 @@ class ReceptionPage(QWidget): self._ai_analysis_patient_flow = False self._ai_analysis_patient_id = patient_id - if ( - not force - and _same_id(diagnosis_id, self._ai_analysis_diagnosis_id) - and self._ai_analysis_model_states["qwen"] - in {"loading", "success", "error", "permission"} - ): - return + if not force and _same_id(diagnosis_id, self._ai_analysis_diagnosis_id): + qwen_state = self._ai_analysis_model_states["qwen"] + if qwen_state == "loading": + if self._diagnosis_ai_request_pending( + self._ai_analysis_generation, + appointment_id, + diagnosis_id, + "qwen", + ): + return + elif qwen_state in {"success", "error", "permission"}: + return self._ai_analysis_generation += 1 request_generation = self._ai_analysis_generation self._ai_analysis_diagnosis_id = diagnosis_id @@ -5206,6 +5849,7 @@ class ReceptionPage(QWidget): request_generation, appointment_id, diagnosis_id, + settle_before_request=not force, ) def _request_ai_analysis_model( @@ -5215,6 +5859,8 @@ class ReceptionPage(QWidget): request_generation: int, appointment_id: int, diagnosis_id: int, + *, + settle_before_request: bool = False, ) -> None: if not self._ai_analysis_context_current( request_generation, @@ -5238,14 +5884,43 @@ class ReceptionPage(QWidget): if self._ai_analysis_model_states.get(model) == "success": return self._ai_analysis_requests.add(request_key) + cancel_event = Event() + self._ai_analysis_cancel_events[request_key] = cancel_event self._ai_analysis_model_states[model] = "loading" self._ai_analysis_model_messages[model] = "" self._sync_ai_analysis_view() def request() -> Any: - if self._ai_analysis_supports_models: - return method(diagnosis_id, model=model) - return method(diagnosis_id) + if settle_before_request and cancel_event.wait( + _AI_AUTOMATIC_GENERATION_SETTLE_SECONDS + ): + return _ASYNC_REQUEST_CANCELLED + if not self._ai_analysis_context_current( + request_generation, + appointment_id, + diagnosis_id, + ) or cancel_event.is_set(): + return _ASYNC_REQUEST_CANCELLED + automatic_slot = False + if settle_before_request: + automatic_slot = _AI_AUTOMATIC_REQUEST_SLOTS.acquire(blocking=False) + if not automatic_slot: + return _ASYNC_REQUEST_DEFERRED + try: + self._ai_analysis_started.add(request_key) + if not self._ai_analysis_context_current( + request_generation, + appointment_id, + diagnosis_id, + ) or cancel_event.is_set(): + self._ai_analysis_started.discard(request_key) + return _ASYNC_REQUEST_CANCELLED + if self._ai_analysis_supports_models: + return method(diagnosis_id, model=model) + return method(diagnosis_id) + finally: + if automatic_slot: + _AI_AUTOMATIC_REQUEST_SLOTS.release() run_async( request, @@ -5269,6 +5944,8 @@ class ReceptionPage(QWidget): diagnosis_id, model, ), + pool=_AI_GENERATION_POOL, + priority=self._detail_generation, ) def _apply_ai_analysis( @@ -5279,17 +5956,32 @@ class ReceptionPage(QWidget): diagnosis_id: int, model: str = "qwen", ) -> None: - self._ai_analysis_requests.discard( - (request_generation, appointment_id, diagnosis_id, model) - ) + request_key = (request_generation, appointment_id, diagnosis_id, model) + authoritative = request_key in self._ai_analysis_requests + self._ai_analysis_requests.discard(request_key) + self._ai_analysis_cancel_events.pop(request_key, None) + self._ai_analysis_started.discard(request_key) if not self._ai_analysis_context_current( request_generation, appointment_id, diagnosis_id, - ): + ) or not authoritative: return if self._ai_analysis_model_states.get(model) != "loading": return + if result is _ASYNC_REQUEST_CANCELLED: + self._finish_orphaned_ai_loading( + model, + f"{AI_ANALYSIS_MODEL_LABELS.get(model, model)}分析已取消,请重试。", + ) + return + if result is _ASYNC_REQUEST_DEFERRED: + self._ai_analysis_model_states[model] = "error" + self._ai_analysis_model_messages[model] = ( + f"{AI_ANALYSIS_MODEL_LABELS.get(model, model)}后台分析任务较多,请稍后重试。" + ) + self._sync_ai_analysis_view() + return payload: Mapping[str, Any] = result if isinstance(result, Mapping) else {} returned_model = str(_analysis_value(payload, "model_key") or "").strip().lower() if returned_model and returned_model != model: @@ -5332,6 +6024,7 @@ class ReceptionPage(QWidget): request_generation, appointment_id, diagnosis_id, + settle_before_request=True, ) def _ai_analysis_error( @@ -5342,9 +6035,10 @@ class ReceptionPage(QWidget): diagnosis_id: int, model: str = "qwen", ) -> None: - self._ai_analysis_requests.discard( - (request_generation, appointment_id, diagnosis_id, model) - ) + request_key = (request_generation, appointment_id, diagnosis_id, model) + self._ai_analysis_requests.discard(request_key) + self._ai_analysis_cancel_events.pop(request_key, None) + self._ai_analysis_started.discard(request_key) if not self._ai_analysis_context_current( request_generation, appointment_id, @@ -5368,15 +6062,27 @@ class ReceptionPage(QWidget): diagnosis_id: int, model: str = "qwen", ) -> None: - self._ai_analysis_requests.discard( - (request_generation, appointment_id, diagnosis_id, model) - ) + request_key = (request_generation, appointment_id, diagnosis_id, model) + self._ai_analysis_requests.discard(request_key) + self._ai_analysis_cancel_events.pop(request_key, None) + self._ai_analysis_started.discard(request_key) if not self._ai_analysis_context_current( request_generation, appointment_id, diagnosis_id, ): return + if not self._diagnosis_ai_request_pending( + request_generation, + appointment_id, + diagnosis_id, + model, + ): + label = AI_ANALYSIS_MODEL_LABELS.get(model, model) + self._finish_orphaned_ai_loading( + model, + f"{label}分析请求已结束但未返回有效结果,请重试。", + ) self._sync_ai_analysis_view() def _retry_ai_analysis(self) -> None: @@ -5895,6 +6601,11 @@ class ReceptionPage(QWidget): return self._detail_generation += 1 generation = self._detail_generation + for cancel_event in self._detail_cancel_events.values(): + cancel_event.set() + cancel_event = Event() + request_key = (generation, appointment_id) + self._detail_cancel_events[request_key] = cancel_event self._selected_record = record self._selected_appointment_id = appointment_id if clear: @@ -5904,21 +6615,31 @@ class ReceptionPage(QWidget): if not silent: self.detail_banner.show_message("正在加载患者详情…", "info") self._detail_loading = True - self._detail_requests.add((generation, appointment_id)) + self._detail_requests.add(request_key) run_async( - lambda: self._fetch_detail_bundle(record, appointment_id), + lambda: self._fetch_detail_bundle(record, appointment_id, cancel_event), on_success=lambda bundle: self._apply_detail(bundle, generation, appointment_id), on_error=lambda error: self._detail_error(error, generation, appointment_id), on_finished=lambda: self._detail_finished(generation, appointment_id), + priority=generation, ) - def _fetch_detail_bundle(self, record: Any, appointment_id: int) -> dict[str, Any]: + def _fetch_detail_bundle( + self, + record: Any, + appointment_id: int, + cancel_event: Event | None = None, + ) -> dict[str, Any]: + if cancel_event is not None and cancel_event.is_set(): + return {"cancelled": True} detail = invoke( self.repository, "get_reception", appointment_id=appointment_id, id=appointment_id, ) + if cancel_event is not None and cancel_event.is_set(): + return {"detail": detail, "cancelled": True} if ( get_value(detail, "data", None) is not None and get_value(detail, "appointment", None) is None @@ -5940,8 +6661,10 @@ class ReceptionPage(QWidget): embedded_tracking, (list, tuple) ) else ([embedded_tracking] if embedded_tracking else []) warnings: list[str] = [] - if diagnosis_id is not None and callable( - getattr(self.repository, "get_doctor_notes", None) + if ( + (cancel_event is None or not cancel_event.is_set()) + and diagnosis_id is not None + and callable(getattr(self.repository, "get_doctor_notes", None)) ): try: notes = page_items( @@ -5953,8 +6676,10 @@ class ReceptionPage(QWidget): ) except Exception as error: warnings.append(f"医生备注:{friendly_error(error)}") - if diagnosis_id is not None and callable( - getattr(self.repository, "get_tracking_window", None) + if ( + (cancel_event is None or not cancel_event.is_set()) + and diagnosis_id is not None + and callable(getattr(self.repository, "get_tracking_window", None)) ): end_date = date.today() try: @@ -5967,8 +6692,10 @@ class ReceptionPage(QWidget): ) except Exception as error: warnings.append(f"日常记录:{friendly_error(error)}") - if diagnosis_id is not None and callable( - getattr(self.repository, "list_tracking_notes", None) + if ( + (cancel_event is None or not cancel_event.is_set()) + and diagnosis_id is not None + and callable(getattr(self.repository, "list_tracking_notes", None)) ): try: tracking_notes = page_items( @@ -6021,13 +6748,23 @@ class ReceptionPage(QWidget): self._daily_requests.add(request_key) self.daily_panel.set_loading(True) fallback_notes = list(self._daily_tracking_fallback) - run_async( - lambda: self._fetch_daily_bundle( + + def request() -> dict[str, Any]: + if ( + generation != self._daily_generation + or not _same_id(appointment_id, self._selected_appointment_id) + or diagnosis_id != self._daily_diagnosis_id + ): + return {"cancelled": True} + return self._fetch_daily_bundle( diagnosis_id, start, end, fallback_notes=fallback_notes, - ), + ) + + run_async( + request, on_success=lambda bundle: self._apply_daily_bundle( bundle, generation, @@ -6045,6 +6782,7 @@ class ReceptionPage(QWidget): appointment_id, diagnosis_id, ), + priority=self._detail_generation, ) def _fetch_daily_bundle( @@ -6163,6 +6901,10 @@ class ReceptionPage(QWidget): if not _same_id(actual_id, expected_id): self._selected_detail = None self._reset_detail_content(seed=self._selected_record) + self._detail_failed_requests.add((generation, expected_id)) + self._render_detail_load_failure( + "患者详情校验失败,请重新选择患者后重试。" + ) self._stop_ai_analysis_after_detail_failure( "患者详情校验失败,暂时无法生成 AI 智能分析。" ) @@ -7271,6 +8013,12 @@ class ReceptionPage(QWidget): show_toast(self, f"图片预览失败:{friendly_error(error)}", "danger", 5200) def _reset_detail_content(self, seed: Any = None) -> None: + for cancel_event in self._patient_ai_generation_cancel_events.values(): + cancel_event.set() + for cancel_event in self._patient_ai_list_cancel_events.values(): + cancel_event.set() + for cancel_event in self._ai_analysis_cancel_events.values(): + cancel_event.set() patient_name = display_text(first_value(seed, "patient_name", "name", default="—")) self.patient_name_label.setText(patient_name) self.patient_avatar_label.setText(patient_name[:1] if patient_name != "—" else "患") @@ -7338,6 +8086,41 @@ class ReceptionPage(QWidget): self._render_notes([]) self._update_action_state(seed or {}, {}) + def _render_detail_load_failure(self, message: str) -> None: + """Replace every transient detail placeholder with a terminal state.""" + + if not hasattr(self, "diagnosis_text"): + return + self.patient_meta_label.setText(message) + self._set_case_placeholder(message) + self.prescription_hint.setText("处方:患者详情加载失败") + self.prescription_hint.setProperty("casePrescriptionState", "unknown") + self.prescription_hint.style().unpolish(self.prescription_hint) + self.prescription_hint.style().polish(self.prescription_hint) + self._daily_generation += 1 + self._daily_loading = False + self._daily_diagnosis_id = None + self._daily_tracking_fallback = [] + self.daily_panel.set_error("患者详情加载失败,暂时无法读取日常记录。") + self.followup_text.setText("患者详情加载失败,暂时无法读取跟踪备注。") + self.health_summary_label.setText("患者详情加载失败,暂时无法读取健康数据。") + for label in self.case_labels.values(): + label.setText("—") + for kind, caption in ( + ("smoke", "吸烟"), + ("drink", "饮酒"), + ("exercise", "运动"), + ): + self.lifestyle_value_labels[kind].setText(f"{caption}:—") + for label in self.vital_labels.values(): + label.setText("—") + for label in self.vital_unit_labels.values(): + label.setVisible(False) + self.vital_bmi_state.setVisible(False) + for key, label in self.lab_labels.items(): + label.setText("—") + self.lab_state_labels[key].setVisible(False) + def _update_action_state(self, appointment: Any, diagnosis: Any) -> None: appointment_id = _record_id(appointment) or self._selected_appointment_id diagnosis_id = _as_int( @@ -7404,12 +8187,27 @@ class ReceptionPage(QWidget): and expected_id is not None and _same_id(expected_id, self._selected_appointment_id) ): - self._selected_detail = None + request_key = (generation, expected_id) + self._detail_failed_requests.add(request_key) + cached_detail = self._selected_detail + if cached_detail is None: + self._render_detail_load_failure( + "患者详情加载失败,请重新选择患者或稍后重试。" + ) self._stop_ai_analysis_after_detail_failure( "患者病历加载失败,暂时无法生成 AI 智能分析。" ) self.detail_banner.show_message(friendly_error(error), "danger") - self._update_action_state(self._selected_record or {}, {}) + if cached_detail is None: + self._update_action_state(self._selected_record or {}, {}) + else: + appointment = ( + get_value(cached_detail, "appointment", None) + or self._selected_record + or {} + ) + diagnosis = get_value(cached_detail, "diagnosis", None) or {} + self._update_action_state(appointment, diagnosis) def _stop_ai_analysis_after_detail_failure(self, message: str) -> None: """Leave the AI card in a terminal, retryable state after detail failure.""" @@ -7448,7 +8246,9 @@ class ReceptionPage(QWidget): self._set_ai_analysis_state("error", message) def _detail_finished(self, generation: int, appointment_id: int) -> None: - self._detail_requests.discard((generation, appointment_id)) + request_key = (generation, appointment_id) + self._detail_requests.discard(request_key) + self._detail_cancel_events.pop(request_key, None) current_request = ( self._detail_generation, self._selected_appointment_id, @@ -7456,7 +8256,25 @@ class ReceptionPage(QWidget): self._detail_loading = ( current_request[1] is not None and current_request in self._detail_requests ) - if not self._detail_loading and self._context_current(generation, appointment_id): + current = self._context_current(generation, appointment_id) + failed = request_key in self._detail_failed_requests + if ( + current + and not self._detail_loading + and self._selected_detail is None + and not failed + ): + self._render_detail_load_failure( + "患者详情请求已结束但未返回有效结果,请重新选择患者后重试。" + ) + self._stop_ai_analysis_after_detail_failure( + "患者病历未返回有效结果,暂时无法生成 AI 智能分析。" + ) + self.detail_banner.show_message( + "患者详情请求未返回有效结果,请重新选择患者后重试。", + "danger", + ) + if not self._detail_loading and current: appointment = ( get_value(self._selected_detail, "appointment", None) or self._selected_record @@ -7464,9 +8282,13 @@ class ReceptionPage(QWidget): ) diagnosis = get_value(self._selected_detail, "diagnosis", None) or {} self._update_action_state(appointment, diagnosis) + self._detail_failed_requests.discard(request_key) def _clear_selection(self) -> None: self._detail_generation += 1 + for cancel_event in self._detail_cancel_events.values(): + cancel_event.set() + self._detail_loading = False self._selected_record = None self._selected_detail = None self._selected_appointment_id = None diff --git a/app/src/doctor_workstation/ui/shell.py b/app/src/doctor_workstation/ui/shell.py index 17916471d..6aba8acfe 100644 --- a/app/src/doctor_workstation/ui/shell.py +++ b/app/src/doctor_workstation/ui/shell.py @@ -2,6 +2,7 @@ from __future__ import annotations +import sqlite3 from collections.abc import Mapping, Sequence from dataclasses import dataclass from functools import wraps @@ -22,6 +23,7 @@ from PySide6.QtGui import ( QShortcut, ) from PySide6.QtWidgets import ( + QApplication, QButtonGroup, QFrame, QHBoxLayout, @@ -38,6 +40,7 @@ from PySide6.QtWidgets import ( QWidget, ) +from .dialogs.local_audio_queue import LocalAudioQueueDialog from .pages import ( AppointmentsPage, ConsultationsPage, @@ -61,6 +64,25 @@ _SHELL_TOPBAR_HEIGHT = 62 _SHELL_TABS_HEIGHT = 0 _SHELL_OUTER_GUTTER = 13 _SHELL_PANEL_GAP = 0 +_SHELL_DESIGN_SIZE = QSize(1710, 920) +_SHELL_MINIMUM_SIZE = QSize(1024, 640) + + +def _bounded_initial_window_size(available_size: QSize | None) -> QSize: + """Fit the design viewport inside the screen's logical available geometry.""" + + if available_size is None or not available_size.isValid(): + return QSize(_SHELL_DESIGN_SIZE.width(), _SHELL_DESIGN_SIZE.height()) + return QSize( + max( + _SHELL_MINIMUM_SIZE.width(), + min(_SHELL_DESIGN_SIZE.width(), available_size.width()), + ), + max( + _SHELL_MINIMUM_SIZE.height(), + min(_SHELL_DESIGN_SIZE.height(), available_size.height()), + ), + ) # The references place the workspace at page-specific global x anchors while # keeping a 13 px outer gutter. These are the actual rail widths inside that @@ -660,24 +682,29 @@ class _PaintedIconButton(QToolButton): self.setFixedSize(size, size) self.setIcon(_painted_shell_icon(kind, icon_size)) self.setIconSize(QSize(icon_size, icon_size)) + content_size = max(0, size - 2) self.setStyleSheet( - """ - QToolButton#ShellPaintedIconButton { + f""" + QToolButton#ShellPaintedIconButton {{ + min-width: {content_size}px; + max-width: {content_size}px; + min-height: {content_size}px; + max-height: {content_size}px; background: transparent; border: 1px solid transparent; border-radius: 9px; - } - QToolButton#ShellPaintedIconButton:hover { + }} + QToolButton#ShellPaintedIconButton:hover {{ background: #F0F3FC; border-color: #E2E7F4; - } - QToolButton#ShellPaintedIconButton:pressed { background: #EEF1FF; } - QToolButton#ShellPaintedIconButton:focus { border-color: #8D9BFF; } - QToolButton#ShellPaintedIconButton[windowControl="close"]:hover { + }} + QToolButton#ShellPaintedIconButton:pressed {{ background: #EEF1FF; }} + QToolButton#ShellPaintedIconButton:focus {{ border-color: #8D9BFF; }} + QToolButton#ShellPaintedIconButton[windowControl="close"]:hover {{ background: #FFF0F2; border-color: #F4C4CC; - } - QToolButton#ShellPaintedIconButton::menu-indicator { image: none; width: 0; } + }} + QToolButton#ShellPaintedIconButton::menu-indicator {{ image: none; width: 0; }} """ ) @@ -868,9 +895,12 @@ class ShellWindow(QMainWindow): self._activation_page: QWidget | None = None self._activation_generation = 0 self._activation_refreshed = False + self._local_audio_settings_dialog: LocalAudioQueueDialog | None = None - self.setMinimumSize(1024, 640) - self.resize(1710, 920) + self.setMinimumSize(_SHELL_MINIMUM_SIZE) + screen = self.screen() or QApplication.primaryScreen() + available_size = screen.availableGeometry().size() if screen is not None else None + self.resize(_bounded_initial_window_size(available_size)) canvas = _ShellCanvas(self) canvas.setObjectName("AppCanvas") @@ -1002,7 +1032,20 @@ class ShellWindow(QMainWindow): font-weight: 700; } QPushButton#ShellAssistantButton:hover { background-color: #4658E8; } - QLabel#ShellModelLabel { color: #8A95AF; font-size: 10px; } + QPushButton#ShellSettingsButton { + min-height: 42px; + color: #6E7C9F; + font-size: 11px; + font-weight: 600; + background-color: transparent; + border: 1px solid transparent; + border-radius: 10px; + } + QPushButton#ShellSettingsButton:hover { + color: #5265F6; + background-color: #EEF1FF; + } + QPushButton#ShellSettingsButton:focus { border-color: #8D9BFF; } """ ) layout = QVBoxLayout(sidebar) @@ -1074,11 +1117,17 @@ class ShellWindow(QMainWindow): outer_assistant.addWidget(self.assistant_card) layout.addLayout(outer_assistant) - self.model_label = QLabel("模型:GPT-4o 医疗版 ›", sidebar) - self.model_label.setObjectName("ShellModelLabel") - self.model_label.setAlignment(Qt.AlignmentFlag.AlignCenter) - self.model_label.setFixedHeight(76) - layout.addWidget(self.model_label) + self.upload_settings_button = QPushButton("设置 ›", sidebar) + self.upload_settings_button.setObjectName("ShellSettingsButton") + self.upload_settings_button.setAccessibleName("本机录音上传设置") + self.upload_settings_button.setToolTip("查看本机录音上传记录") + self.upload_settings_button.setCursor(Qt.CursorShape.PointingHandCursor) + self.upload_settings_button.setFixedHeight(76) + self.upload_settings_button.clicked.connect(self._open_local_audio_settings) + # Keep the former attribute as a compatibility alias for integrations + # that inspect the bottom sidebar control. + self.model_label = self.upload_settings_button + layout.addWidget(self.upload_settings_button) return sidebar def _build_topbar(self) -> QWidget: @@ -1095,10 +1144,6 @@ class ShellWindow(QMainWindow): border-top-right-radius: 16px; } QFrame#ShellGlobalSearch { - min-width: 265px; - max-width: 265px; - min-height: 36px; - max-height: 36px; background-color: #F8FAFF; border: 1px solid #E2E7F4; border-radius: 10px; @@ -1112,6 +1157,23 @@ class ShellWindow(QMainWindow): border: 0; border-radius: 9px; } + QLineEdit#ShellGlobalSearchInput QToolButton { + min-width: 22px; + max-width: 22px; + min-height: 18px; + max-height: 18px; + margin: 0; + padding: 0; + background-color: transparent; + border: 0; + border-radius: 0; + } + QLineEdit#ShellGlobalSearchInput QToolButton:hover, + QLineEdit#ShellGlobalSearchInput QToolButton:pressed, + QLineEdit#ShellGlobalSearchInput QToolButton:focus { + background-color: transparent; + border: 0; + } QLabel#ShellShortcutHint { color: #8A95AF; background-color: #F0F3FC; @@ -1207,7 +1269,9 @@ class ShellWindow(QMainWindow): search_layout.addWidget(self.global_search, 1) shortcut_hint = QLabel("Ctrl K", search_host) shortcut_hint.setObjectName("ShellShortcutHint") - search_layout.addWidget(shortcut_hint) + shortcut_hint.setAlignment(Qt.AlignmentFlag.AlignCenter) + shortcut_hint.setSizePolicy(QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Fixed) + search_layout.addWidget(shortcut_hint, 0, Qt.AlignmentFlag.AlignVCenter) layout.addWidget(search_host) self.context_label = QLabel("工作台", topbar) @@ -1393,7 +1457,7 @@ class ShellWindow(QMainWindow): ) self.brand_copy.setVisible(not self._sidebar_collapsed) self.assistant_card.setVisible(not self._sidebar_collapsed) - self.model_label.setVisible(not self._sidebar_collapsed) + self.upload_settings_button.setVisible(not self._sidebar_collapsed) margins = (7, 14, 7, 0) if self._sidebar_collapsed else (12, 19, 12, 0) self.nav_layout.setContentsMargins(*margins) self.fold_button.kind = "expand" if self._sidebar_collapsed else "fold" @@ -1486,6 +1550,26 @@ class ShellWindow(QMainWindow): 3600, ) + def _open_local_audio_settings(self) -> None: + current = self._local_audio_settings_dialog + if current is not None and current.isVisible(): + current.raise_() + current.activateWindow() + return + try: + dialog = LocalAudioQueueDialog(self.repository, None, self) + except (OSError, RuntimeError, ValueError, sqlite3.Error) as error: + show_toast(self, f"无法打开本机录音上传设置:{error}", "error") + return + self._local_audio_settings_dialog = dialog + + def clear_dialog(_result: int) -> None: + if self._local_audio_settings_dialog is dialog: + self._local_audio_settings_dialog = None + + dialog.finished.connect(clear_dialog) + dialog.open() + def _tab_index_for_key(self, key: str) -> int: for index in range(self.tab_bar.count()): if self.tab_bar.tabData(index) == key: diff --git a/app/src/doctor_workstation/ui/widgets.py b/app/src/doctor_workstation/ui/widgets.py index de6f5d1d9..9d3a885d0 100644 --- a/app/src/doctor_workstation/ui/widgets.py +++ b/app/src/doctor_workstation/ui/widgets.py @@ -312,9 +312,14 @@ def run_async( on_error: Callable[[Exception], None] | None = None, on_finished: Callable[[], None] | None = None, pool: QThreadPool | None = None, + priority: int = 0, **kwargs: Any, ) -> Worker: - """Run ``function`` off the GUI thread and return its Worker handle.""" + """Run ``function`` off the GUI thread and return its Worker handle. + + Higher-priority queued work starts first when a pool thread becomes free. + Running work is never interrupted. + """ worker = Worker(function, *args, **kwargs) _RUNNING_WORKERS.add(worker) @@ -324,7 +329,7 @@ def run_async( if on_finished is not None: worker.signals.finished.connect(on_finished) worker.signals.finished.connect(lambda: _RUNNING_WORKERS.discard(worker)) - (pool or QThreadPool.globalInstance()).start(worker) + (pool or QThreadPool.globalInstance()).start(worker, priority) return worker diff --git a/app/src/doctor_workstation/video/lifecycle.py b/app/src/doctor_workstation/video/lifecycle.py index 0a9906ce0..37b8275c8 100644 --- a/app/src/doctor_workstation/video/lifecycle.py +++ b/app/src/doctor_workstation/video/lifecycle.py @@ -15,6 +15,7 @@ import threading from collections.abc import Callable, Mapping from concurrent.futures import Future from dataclasses import dataclass +from pathlib import Path from typing import Any, TypeVar from .launcher import VideoCallRequest @@ -110,6 +111,29 @@ def _extract_call_record_id(result: Any) -> int | str | None: return None +def _extract_cloud_recording_outcome(result: Any) -> tuple[bool, str] | None: + """Read the cloud mixed-video recording outcome returned by room binding.""" + + pending = [result] + visited: set[int] = set() + while pending: + candidate = pending.pop(0) + mapping = _mapping_candidate(candidate) + if mapping is None or id(mapping) in visited: + continue + visited.add(id(mapping)) + recording = mapping.get("cloud_recording", mapping.get("cloudRecording")) + if isinstance(recording, Mapping): + started = bool(recording.get("started")) + message = str(recording.get("message") or "").strip()[:200] + return started, message + for key in ("data", "result"): + nested = mapping.get(key) + if isinstance(nested, Mapping): + pending.append(nested) + return None + + def _clean_transcript_segment(segment: Mapping[str, Any], session_id: str) -> dict[str, Any]: segment_id = str(segment.get("segment_id", segment.get("segmentId", ""))).strip() text = str(segment.get("text", segment.get("sourceText", ""))).strip() @@ -239,6 +263,7 @@ class OrderedCallLifecycle: self._claimed_room_id: str | None = None self._start_future: Future[bool] | None = None self._bind_future: Future[bool] | None = None + self._local_recording_future: Future[bool] | None = None self._end_future: Future[bool] | None = None self._transcription_start_future: Future[bool] | None = None self._transcription_finish_future: Future[bool] | None = None @@ -256,6 +281,13 @@ class OrderedCallLifecycle: def transcription_session_id(self) -> str | None: return self._transcription_session_id + @property + def current_room_id(self) -> str | None: + """Return the room observed for this call cycle, including an active bind.""" + + with self._lock: + return self.bound_room_id or self._claimed_room_id + def start(self) -> Future[bool]: with self._lock: if self._start_future is not None: @@ -318,18 +350,31 @@ class OrderedCallLifecycle: def operation() -> bool: with self._lock: started = self.started + record_id = self.call_record_id if not started: return False + if record_id is None: + raise ValueError("server did not return the current call_record_id") if not callable(method): self.logger.warning( "video repository does not implement bind_call_room", extra={"video_call": self.request.safe_log_context()}, ) return False - _call_repository_method( + result = _call_repository_method( method, - {"diagnosis_id": self.request.diagnosis_id, "room_id": cleaned}, + { + "diagnosis_id": self.request.diagnosis_id, + "room_id": cleaned, + "call_record_id": record_id, + }, ) + recording_outcome = _extract_cloud_recording_outcome(result) + if recording_outcome is not None and not recording_outcome[0]: + raise RuntimeError( + recording_outcome[1] + or "automatic Tencent cloud mixed-video recording did not start" + ) with self._lock: self.bound_room_id = cleaned self.logger.info( @@ -338,8 +383,85 @@ class OrderedCallLifecycle: ) return True - self._bind_future = self._worker.submit("bind", operation) - return self._bind_future + future = self._worker.submit("bind", operation) + self._bind_future = future + + def release_failed_claim(completed: Future[bool]) -> None: + try: + succeeded = bool(completed.result()) + except Exception: + succeeded = False + if succeeded: + return + # A transient bridge/API failure must not permanently pin the + # room to a failed Future. The companion retries the exact + # same room after the host acknowledgement, so release only + # this failed claim while preserving successful bindings. + with self._lock: + if self._bind_future is completed and self.bound_room_id is None: + self._bind_future = None + self._claimed_room_id = None + + future.add_done_callback(release_failed_claim) + return future + + def save_local_audio_recording( + self, + path: str | Path, + *, + mime_type: str = "audio/webm", + ) -> Future[bool]: + """Upload one locally mixed audio file to this exact call record. + + The operation shares the lifecycle FIFO, so a caller that queues this + before :meth:`end` is guaranteed to attach the COS object before the + call record is marked ended. + """ + + recording_path = Path(path).expanduser().resolve() + clean_mime = str(mime_type or "audio/webm").strip()[:120] or "audio/webm" + if not recording_path.is_file() or recording_path.stat().st_size <= 0: + raise ValueError("local audio recording is empty or missing") + with self._lock: + if self._end_future is not None: + raise RuntimeError("video call has already ended") + if self._local_recording_future is not None: + return self._local_recording_future + if self._start_future is None: + self.start() + method = getattr(self.repository, "upload_call_recording", None) + if not callable(method): + raise ValueError("video repository does not implement local recording upload") + + def operation() -> bool: + with self._lock: + started = self.started + record_id = self.call_record_id + if not started: + return False + if record_id is None: + raise ValueError("server did not return the current call_record_id") + result = _call_repository_method( + method, + { + "path": recording_path, + "diagnosis_id": self.request.diagnosis_id, + "call_record_id": record_id, + "mime_type": clean_mime, + }, + ) + if result is False: + raise RuntimeError("local audio recording upload failed") + self.logger.info( + "local call audio uploaded and attached", + extra={"video_call": self.request.safe_log_context()}, + ) + return True + + self._local_recording_future = self._worker.submit( + "local-audio-upload", operation + ) + return self._local_recording_future def save_screenshot(self, content: bytes, filename: str) -> Future[str]: """Upload one video frame and append it to the diagnosis doctor notes.""" @@ -554,15 +676,21 @@ class OrderedCallLifecycle: def operation() -> bool: with self._lock: started = self.started + record_id = self.call_record_id if not started: with self._lock: self.ended = True return False if not callable(method): raise ValueError("video repository does not implement end_call") + if record_id is None: + raise ValueError("server did not return the current call_record_id") _call_repository_method( method, - {"diagnosis_id": self.request.diagnosis_id}, + { + "diagnosis_id": self.request.diagnosis_id, + "call_record_id": record_id, + }, ) with self._lock: self.ended = True diff --git a/app/src/doctor_workstation/video/window.py b/app/src/doctor_workstation/video/window.py index 32112f0f7..ee5aa6b35 100644 --- a/app/src/doctor_workstation/video/window.py +++ b/app/src/doctor_workstation/video/window.py @@ -11,6 +11,9 @@ import base64 import binascii import json import logging +import os +import re +import sqlite3 import sys from collections.abc import Callable, Mapping from concurrent.futures import Future @@ -20,6 +23,11 @@ from pathlib import Path from typing import Any from urllib.parse import parse_qsl, urlsplit +from ..services.local_audio_queue import ( + LocalAudioQueueStore, + LocalAudioUploadManager, + get_local_audio_upload_manager, +) from .launcher import ( VideoCallRequest, VideoTicketError, @@ -29,7 +37,7 @@ from .lifecycle import OrderedCallLifecycle from .security import TrustedDocumentError, TrustedDocumentPolicy try: # Optional by design: core-only builds must still import this module. - from PySide6.QtCore import QObject, Qt, QUrl, Signal, Slot + from PySide6.QtCore import QObject, Qt, QTimer, QUrl, Signal, Slot from PySide6.QtWebChannel import QWebChannel from PySide6.QtWebEngineCore import ( QWebEnginePage, @@ -39,7 +47,7 @@ try: # Optional by design: core-only builds must still import this module. from PySide6.QtWebEngineWidgets import QWebEngineView from PySide6.QtWidgets import QApplication, QMainWindow except (ImportError, OSError) as _qt_import_error: # pragma: no cover - no Qt runtime. - QObject = Qt = QUrl = Signal = Slot = None # type: ignore[assignment] + QObject = QTimer = Qt = QUrl = Signal = Slot = None # type: ignore[assignment] QWebChannel = QWebEnginePage = QWebEngineProfile = None # type: ignore[assignment] QWebEngineSettings = QWebEngineView = None # type: ignore[assignment] QApplication = QMainWindow = None # type: ignore[assignment] @@ -63,6 +71,18 @@ class CompanionLocation: is_local: bool +@dataclass(slots=True) +class _LocalAudioCapture: + record_id: int + session_id: str + mime_type: str + path: Path + handle: Any + lifecycle: OrderedCallLifecycle + next_sequence: int = 0 + bytes_written: int = 0 + + def _validate_remote_url(value: str) -> str: parsed = urlsplit(value) if parsed.scheme.lower() != "https" or not parsed.hostname: @@ -204,13 +224,67 @@ if WEBENGINE_AVAILABLE: # pragma: no cover - GUI behavior needs an integration } ) + @Slot(str, str) # type: ignore[misc] + def startLocalAudioRecording( # noqa: N802 - Qt bridge API + self, session_id: str, mime_type: str + ) -> None: + self._callback( + { + "source": "doctor-call", + "event": "local-audio-start", + "sessionId": session_id, + "mimeType": mime_type, + } + ) + + @Slot(str, int, str) # type: ignore[misc] + def appendLocalAudioChunk( # noqa: N802 - Qt bridge API + self, session_id: str, sequence: int, encoded: str + ) -> None: + self._callback( + { + "source": "doctor-call", + "event": "local-audio-chunk", + "sessionId": session_id, + "sequence": sequence, + "data": encoded, + } + ) + + @Slot(str, int) # type: ignore[misc] + def finishLocalAudioRecording( # noqa: N802 - Qt bridge API + self, session_id: str, total_bytes: int + ) -> None: + self._callback( + { + "source": "doctor-call", + "event": "local-audio-finish", + "sessionId": session_id, + "totalBytes": total_bytes, + } + ) + + @Slot(str) # type: ignore[misc] + def abortLocalAudioRecording(self, session_id: str) -> None: # noqa: N802 + self._callback( + { + "source": "doctor-call", + "event": "local-audio-abort", + "sessionId": session_id, + } + ) + class _EmbeddedVideoWindow(QMainWindow): # type: ignore[misc, valid-type] status_changed = Signal(str) # type: ignore[misc] call_ended = Signal(str) # type: ignore[misc] call_error = Signal(str) # type: ignore[misc] _start_completed = Signal(bool) # type: ignore[misc] + _room_completed = Signal(str, bool, str) # type: ignore[misc] _screenshot_completed = Signal(bool, str) # type: ignore[misc] _transcription_completed = Signal(str, str, str, bool, str) # type: ignore[misc] + _local_recording_completed = Signal( # type: ignore[misc] + str, str, int, bool, str + ) def __init__( self, @@ -247,8 +321,15 @@ if WEBENGINE_AVAILABLE: # pragma: no cover - GUI behavior needs an integration self._close_reason = "window-closed" self._call_cycle_closed = False self._start_requested = False + self._shutdown_requested = False + self._local_audio_capture: _LocalAudioCapture | None = None + self._local_audio_store: LocalAudioQueueStore | None = None + self._local_audio_uploads: LocalAudioUploadManager | None = None self._legacy_grants: list[tuple[Any, Any]] = [] self._permission_grants: list[Any] = [] + self._shutdown_timer = QTimer(self) + self._shutdown_timer.setSingleShot(True) + self._shutdown_timer.timeout.connect(self._force_requested_shutdown) self.setWindowTitle( f"与 {self.patient_name} IM 问诊" if self.open_im else "视频面诊" @@ -284,8 +365,10 @@ if WEBENGINE_AVAILABLE: # pragma: no cover - GUI behavior needs an integration self._connect_permissions() self._start_completed.connect(self._on_lifecycle_started) + self._room_completed.connect(self._on_room_completed) self._screenshot_completed.connect(self._on_screenshot_completed) self._transcription_completed.connect(self._on_transcription_completed) + self._local_recording_completed.connect(self._on_local_recording_completed) self.web_view.loadFinished.connect(self._on_load_finished) self.web_view.setUrl(QUrl(self.location.url)) @@ -428,6 +511,28 @@ if WEBENGINE_AVAILABLE: # pragma: no cover - GUI behavior needs an integration str(message.get("message") or "截屏图片无效。")[:200], ) return + if event == "local-audio-start": + self._start_local_audio_recording( + str(message.get("sessionId") or ""), + str(message.get("mimeType") or "audio/webm"), + ) + return + if event == "local-audio-chunk": + self._append_local_audio_chunk( + str(message.get("sessionId") or ""), + message.get("sequence"), + str(message.get("data") or ""), + ) + return + if event == "local-audio-finish": + self._finish_local_audio_recording( + str(message.get("sessionId") or ""), + message.get("totalBytes"), + ) + return + if event == "local-audio-abort": + self._abort_local_audio_recording(str(message.get("sessionId") or "")) + return if event == "transcription-start-request": self._start_transcription( str(message.get("sessionId") or ""), @@ -445,7 +550,13 @@ if WEBENGINE_AVAILABLE: # pragma: no cover - GUI behavior needs an integration return room_id = message.get("roomId", message.get("room_id")) if room_id not in (None, ""): - self.lifecycle.bind_room(room_id) + clean_room_id = str(room_id).strip() + future = self.lifecycle.bind_room(clean_room_id) + future.add_done_callback( + lambda completed, current_room_id=clean_room_id: ( + self._notify_room_completed(current_room_id, completed) + ) + ) if event == "room": return if event == "status": @@ -457,7 +568,7 @@ if WEBENGINE_AVAILABLE: # pragma: no cover - GUI behavior needs an integration self.lifecycle.end(f"companion-{status}") self._call_cycle_closed = True self._start_requested = False - if not self.open_im: + if not self.open_im or self._shutdown_requested: self._close_from_companion("companion-hangup") elif event == "error": message_text = str(message.get("message", "视频通话错误"))[:400] @@ -466,9 +577,343 @@ if WEBENGINE_AVAILABLE: # pragma: no cover - GUI behavior needs an integration self.lifecycle.end("companion-error") self._call_cycle_closed = True self._start_requested = False - if not self.open_im: + if not self.open_im or self._shutdown_requested: self._close_from_companion("companion-error") + def _notify_room_completed(self, room_id: str, future: Future[bool]) -> None: + try: + succeeded = bool(future.result()) + except Exception as error: + succeeded = False + message = str(error)[:200] or "腾讯云混流视频录制未启动。" + else: + message = ( + "腾讯云混流视频已启动;本机录音将在结束后另行上传 COS。" + if succeeded + else "通话房间尚未绑定,云端视频和本机录音无法关联通话记录。" + ) + with suppress(RuntimeError): + self._room_completed.emit(room_id, succeeded, message) + + def _on_room_completed( + self, + room_id: str, + succeeded: bool, + message: str, + ) -> None: + if self._closing: + return + room_payload = json.dumps(str(room_id)[:160], ensure_ascii=True) + payload = json.dumps(str(message)[:200], ensure_ascii=True) + state = "true" if succeeded else "false" + self._page.runJavaScript( + "window.doctorConsultation?.roomBindingResult?.(" + f"{room_payload}, {state}, {payload});" + ) + + def _emit_local_recording_result( + self, + operation: str, + session_id: str, + sequence: int, + succeeded: bool, + message: str, + ) -> None: + with suppress(RuntimeError): + self._local_recording_completed.emit( + operation, + session_id, + sequence, + succeeded, + str(message)[:200], + ) + + def _on_local_recording_completed( + self, + operation: str, + session_id: str, + sequence: int, + succeeded: bool, + message: str, + ) -> None: + if self._closing or self._released: + return + self._page.runJavaScript( + "window.doctorConsultation?.localRecordingResult?.(" + f"{json.dumps(operation)}, {json.dumps(session_id)}, {sequence}, " + f"{'true' if succeeded else 'false'}, " + f"{json.dumps(str(message)[:200], ensure_ascii=True)});" + ) + + def _start_local_audio_recording(self, session_id: str, mime_type: str) -> None: + cleaned = str(session_id or "").strip() + clean_mime = str(mime_type or "audio/webm").strip().lower()[:120] + if not re.fullmatch(r"[A-Za-z0-9_-]{12,64}", cleaned): + self._emit_local_recording_result( + "start", cleaned, -1, False, "本地录音会话标识无效。" + ) + return + if not clean_mime.startswith(("audio/webm", "audio/ogg")): + self._emit_local_recording_result( + "start", cleaned, -1, False, "当前浏览器录音格式不受支持。" + ) + return + if self._local_audio_capture is not None: + existing = self._local_audio_capture.session_id == cleaned + self._emit_local_recording_result( + "start", + cleaned, + -1, + existing, + "本地录音已启动。" if existing else "已有另一条本地录音正在进行。", + ) + return + try: + lifecycle = self.lifecycle + raw_call_record_id = lifecycle.call_record_id + call_record_id = ( + int(raw_call_record_id) if raw_call_record_id not in (None, "") else None + ) + store, uploads = get_local_audio_upload_manager( + lifecycle.repository, + self._local_audio_store, + ) + self._local_audio_store = store + self._local_audio_uploads = uploads + record = store.begin_recording( + session_id=cleaned, + diagnosis_id=self.request.diagnosis_id, + mime_type=clean_mime, + call_record_id=call_record_id, + room_id=lifecycle.current_room_id or "", + ) + # The handle intentionally remains open across WebChannel chunks. + handle = record.file_path.open("w+b") + except (OSError, RuntimeError, sqlite3.Error) as error: + self._emit_local_recording_result( + "start", cleaned, -1, False, str(error)[:200] + ) + return + self._local_audio_capture = _LocalAudioCapture( + record_id=record.id, + session_id=cleaned, + mime_type=clean_mime, + path=record.file_path, + handle=handle, + lifecycle=lifecycle, + ) + self._emit_local_recording_result( + "start", cleaned, -1, True, "本机语音录音已启动。" + ) + + def _append_local_audio_chunk( + self, + session_id: str, + sequence_value: Any, + encoded: str, + ) -> None: + capture = self._local_audio_capture + try: + sequence = int(sequence_value) + except (TypeError, ValueError): + sequence = -1 + if capture is None or session_id != capture.session_id: + self._emit_local_recording_result( + "chunk", session_id, sequence, False, "本地录音会话标识不匹配。" + ) + return + if sequence != capture.next_sequence: + self._emit_local_recording_result( + "chunk", session_id, sequence, False, "本地录音分片顺序不连续。" + ) + return + if not encoded or len(encoded) > 16_384: + self._emit_local_recording_result( + "chunk", session_id, sequence, False, "本地录音分片过大或为空。" + ) + return + try: + content = base64.b64decode(encoded, validate=True) + except (ValueError, binascii.Error): + self._emit_local_recording_result( + "chunk", session_id, sequence, False, "本地录音分片解析失败。" + ) + return + if not content or len(content) > 12 * 1024: + self._emit_local_recording_result( + "chunk", session_id, sequence, False, "本地录音分片大小无效。" + ) + return + if capture.bytes_written + len(content) > 512 * 1024 * 1024: + self._emit_local_recording_result( + "chunk", session_id, sequence, False, "本地录音超过 512 MB 限制。" + ) + self._abort_local_audio_recording(session_id) + return + try: + capture.handle.write(content) + except OSError as error: + self._emit_local_recording_result( + "chunk", session_id, sequence, False, str(error)[:200] + ) + self._abort_local_audio_recording(session_id) + return + capture.bytes_written += len(content) + capture.next_sequence += 1 + + def _finish_local_audio_recording( + self, session_id: str, total_bytes_value: Any + ) -> None: + capture = self._local_audio_capture + try: + total_bytes = int(total_bytes_value) + except (TypeError, ValueError): + total_bytes = -1 + if capture is None or session_id != capture.session_id: + self._emit_local_recording_result( + "finish", session_id, -1, False, "本地录音会话标识不匹配。" + ) + return + self._local_audio_capture = None + try: + capture.handle.flush() + os.fsync(capture.handle.fileno()) + capture.handle.close() + except OSError as error: + self._mark_local_audio_invalid(capture.record_id, str(error)) + self._emit_local_recording_result( + "finish", session_id, -1, False, str(error)[:200] + ) + return + if total_bytes != capture.bytes_written or total_bytes <= 0: + self._mark_local_audio_invalid( + capture.record_id, "本地录音文件不完整。" + ) + self._emit_local_recording_result( + "finish", session_id, -1, False, "本地录音文件不完整。" + ) + return + if capture.bytes_written < 1024: + self._mark_local_audio_invalid( + capture.record_id, "本地录音文件为空或只有容器信息。" + ) + self._emit_local_recording_result( + "finish", + session_id, + -1, + False, + "本地录音文件为空或只有容器信息,已阻止上传。", + ) + return + try: + with capture.path.open("rb") as recording: + signature = recording.read(4) + except OSError as error: + self._mark_local_audio_invalid(capture.record_id, str(error)) + self._emit_local_recording_result( + "finish", session_id, -1, False, str(error)[:200] + ) + return + valid_signature = ( + capture.mime_type.startswith("audio/webm") + and signature == b"\x1aE\xdf\xa3" + ) or ( + capture.mime_type.startswith("audio/ogg") and signature == b"OggS" + ) + if not valid_signature: + self._mark_local_audio_invalid( + capture.record_id, "本地录音格式校验失败。" + ) + self._emit_local_recording_result( + "finish", + session_id, + -1, + False, + "本地录音格式校验失败,已阻止上传无效文件。", + ) + return + store = self._local_audio_store + uploads = self._local_audio_uploads + if store is None or uploads is None: + self._emit_local_recording_result( + "finish", session_id, -1, False, "本机录音队列尚未初始化。" + ) + return + try: + store.finalize_recording( + capture.record_id, + size_bytes=capture.bytes_written, + ) + except (OSError, RuntimeError, sqlite3.Error) as error: + self._mark_local_audio_invalid(capture.record_id, str(error)) + self._emit_local_recording_result( + "finish", session_id, -1, False, str(error)[:200] + ) + return + + lifecycle = capture.lifecycle + + def enqueue_upload(start_result: Future[bool] | None = None) -> None: + try: + if start_result is not None and not bool(start_result.result()): + raise RuntimeError("通话记录创建失败,录音已保存在本机,可稍后重试。") + raw_call_record_id = lifecycle.call_record_id + call_record_id = int(raw_call_record_id or 0) + if call_record_id <= 0: + raise RuntimeError("未取得通话记录编号,录音已保存在本机,可稍后重试。") + store.bind_identity( + capture.record_id, + call_record_id=call_record_id, + room_id=lifecycle.current_room_id or "", + ) + uploads.submit(capture.record_id) + except Exception as error: + with suppress(Exception): + store.update_status( + capture.record_id, + "failed", + str(error)[:1000], + ) + + if lifecycle.call_record_id: + enqueue_upload() + else: + try: + lifecycle.start().add_done_callback(enqueue_upload) + except Exception as error: + store.update_status( + capture.record_id, + "failed", + str(error)[:1000] or "通话记录创建失败。", + ) + self._emit_local_recording_result( + "finish", + session_id, + -1, + True, + "本地录音已保存,正在后台上传 COS。", + ) + + def _mark_local_audio_invalid(self, record_id: int, message: str) -> None: + store = self._local_audio_store + if store is None: + return + with suppress(Exception): + store.mark_invalid(record_id, message) + + def _abort_local_audio_recording(self, session_id: str) -> None: + capture = self._local_audio_capture + if capture is None or (session_id and capture.session_id != session_id): + return + self._local_audio_capture = None + with suppress(OSError): + capture.handle.flush() + capture.handle.close() + self._mark_local_audio_invalid( + capture.record_id, + "本次本地录音未正常结束,文件已保留以便排查。", + ) + def _start_call_cycle(self) -> None: if self._closing or self._start_requested: return @@ -633,7 +1078,49 @@ if WEBENGINE_AVAILABLE: # pragma: no cover - GUI behavior needs an integration self.close() def hangup(self) -> None: - self._close_reason = "desktop-hangup" + self._request_companion_shutdown("desktop-hangup") + + def _request_companion_shutdown(self, reason: str) -> None: + """Let MediaRecorder finish and upload before WebEngine is destroyed.""" + + self._close_reason = reason + if self._closing or self._released: + return + should_wait_for_companion = ( + self._injected + and self._start_requested + and not self._call_cycle_closed + and not self._companion_ended + ) + if not should_wait_for_companion: + self.close() + return + if self._shutdown_requested: + return + self._shutdown_requested = True + # doctorConsultation.close() stops MediaRecorder, drains every queued + # WebChannel chunk, waits for the Qt/COS finish acknowledgement, and + # only then emits hangup. Keeping _closing false here is essential: + # bridge callbacks are deliberately rejected once final destruction + # begins. + self._page.runJavaScript( + "void window.doctorConsultation?.close?.().catch(() => undefined)" + ) + self._shutdown_timer.start(190_000) + + def _force_requested_shutdown(self) -> None: + """Bound a failed companion shutdown without racing queued uploads.""" + + if not self._shutdown_requested or self._closing or self._released: + return + if self._start_requested and not self._call_cycle_closed: + # OrderedCallLifecycle places end after any upload that already + # reached the Qt bridge. + self.lifecycle.end(f"{self._close_reason}-timeout") + self._call_cycle_closed = True + self._start_requested = False + self._abort_local_audio_recording("") + self._companion_ended = True self.close() def _begin_shutdown(self) -> None: @@ -641,12 +1128,10 @@ if WEBENGINE_AVAILABLE: # pragma: no cover - GUI behavior needs an integration return self._closing = True self._media_active = False - if self._injected and not self._companion_ended and not self._released: - self._page.runJavaScript( - "void window.doctorConsultation?.close?.().catch(() => undefined)" - ) + self._shutdown_timer.stop() if self._start_requested and not self._call_cycle_closed: self.lifecycle.end(self._close_reason) + self._abort_local_audio_recording("") self._release_webengine() def wait_for_lifecycles(self, timeout: float) -> bool: @@ -698,6 +1183,15 @@ if WEBENGINE_AVAILABLE: # pragma: no cover - GUI behavior needs an integration self._profile.deleteLater() def closeEvent(self, event: Any) -> None: + if ( + self._injected + and self._start_requested + and not self._call_cycle_closed + and not self._companion_ended + ): + event.ignore() + self._request_companion_shutdown(self._close_reason) + return self._begin_shutdown() event.accept() diff --git a/app/tests/test_api_client.py b/app/tests/test_api_client.py index ea3b984d5..e20e867f7 100644 --- a/app/tests/test_api_client.py +++ b/app/tests/test_api_client.py @@ -3,7 +3,10 @@ from __future__ import annotations import json +from concurrent.futures import ThreadPoolExecutor from pathlib import Path +from threading import Barrier, get_ident +from typing import Any import httpx import pytest @@ -17,6 +20,7 @@ from doctor_workstation.core.errors import ( OpenPageRequiredError, WorkWechatBindingRequiredError, ) +from doctor_workstation.services import api_client as api_client_module from doctor_workstation.services.api_client import ApiClient from doctor_workstation.services.token_store import TokenStore @@ -48,6 +52,41 @@ def test_get_normalises_adminapi_and_sends_contract_headers() -> None: ) +def test_default_client_allows_parallel_requests_with_independent_transports( + monkeypatch: pytest.MonkeyPatch, +) -> None: + """Production workers must not queue behind one process-wide HTTP lock.""" + + rendezvous = Barrier(2, timeout=2) + created: list[Any] = [] + request_threads: set[int] = set() + + class PooledClient: + def __init__(self, **_options: Any) -> None: + self.closed = False + created.append(self) + + def request(self, _method: str, url: str, **_options: Any) -> httpx.Response: + request_threads.add(get_ident()) + rendezvous.wait() + return httpx.Response(200, json={"code": 1, "data": url.rsplit("/", 1)[-1]}) + + def close(self) -> None: + self.closed = True + + monkeypatch.setattr(api_client_module.httpx, "Client", PooledClient) + client = ApiClient("https://example.test", max_retries=0) + with ThreadPoolExecutor(max_workers=2) as executor: + first = executor.submit(client.get, "patient/first") + second = executor.submit(client.get, "patient/second") + assert {first.result(timeout=3), second.result(timeout=3)} == {"first", "second"} + client.close() + + assert len(created) == 2 + assert len(request_threads) == 2 + assert all(item.closed for item in created) + + def test_post_uses_json_and_never_retries_timeout() -> None: """Writes use JSON and a timeout never causes an automatic duplicate POST.""" diff --git a/app/tests/test_appointments_parity_ui.py b/app/tests/test_appointments_parity_ui.py index a6f4aae0f..d7600aed8 100644 --- a/app/tests/test_appointments_parity_ui.py +++ b/app/tests/test_appointments_parity_ui.py @@ -10,7 +10,14 @@ from typing import Any os.environ.setdefault("QT_QPA_PLATFORM", "offscreen") import pytest -from PySide6.QtWidgets import QAbstractItemView, QApplication, QDialog, QDialogButtonBox, QLabel +from PySide6.QtWidgets import ( + QAbstractItemView, + QApplication, + QDialog, + QDialogButtonBox, + QLabel, + QPushButton, +) from doctor_workstation.core.errors import ApiProtocolError from doctor_workstation.core.models import Appointment, PageResult @@ -188,6 +195,106 @@ def test_diagnosis_and_patient_ids_stay_distinct_for_video() -> None: ) assert prescription_action_label(pending) == "编辑处方" + historical_only = Appointment.from_dict( + { + "id": 104, + "prescription_audit_status": 1, + "prescription_void_status": 0, + "has_prescription": 1, + "current_has_prescription": 0, + "current_prescription_id": 0, + } + ) + assert prescription_action_label(historical_only) == "开方" + + +def test_appointment_view_intent_never_degrades_to_edit( + application: QApplication, + monkeypatch: pytest.MonkeyPatch, +) -> None: + row = { + "id": 101, + "appointment_id": 101, + "diagnosis_id": 501, + "current_has_prescription": 1, + "current_prescription_id": 81, + "prescription_audit_status": 1, + "prescription_void_status": 0, + } + page = AppointmentsPage(SimpleNamespace(), permissions=PermissionSet(["*"])) + monkeypatch.setattr(page, "_current_row", lambda: row) + requested: list[tuple[Any, str]] = [] + monkeypatch.setattr( + page, + "_begin_prescription_load", + lambda source, *, mode="open": requested.append((source, mode)), + ) + page._open_prescription() + assert requested == [(row, "view")] + + monkeypatch.setattr( + page, + "_open_existing_prescription_editor", + lambda _existing: pytest.fail("view intent must never open the editor"), + ) + page._prescription_loaded( + { + "id": 81, + "appointment_id": 101, + "audit_status": 2, + "void_status": 0, + }, + row, + page._prescription_generation, + "view", + ) + assert "状态已变化" in page.banner.label.text() + page.close() + application.processEvents() + + +def test_appointment_im_action_opens_chat_without_an_existing_live_call( + application: QApplication, + monkeypatch: pytest.MonkeyPatch, +) -> None: + page = AppointmentsPage( + DemoDoctorRepository(), + permissions=PermissionSet(["doctor.appointment/prescription"]), + ) + row = { + "id": 101, + "appointment_id": 101, + "diagnosis_id": 501, + "patient_id": 501, + "source_patient_id": 301, + "patient_name": "测试患者", + "status": 1, + } + emitted: list[dict[str, Any]] = [] + monkeypatch.setattr(page, "_current_row", lambda: row) + page.video_requested.connect(emitted.append) + + page._request_video() + + assert len(emitted) == 1 + assert emitted[0]["mode"] == "im" + assert emitted[0]["appointment_id"] == 101 + assert emitted[0]["diagnosis_id"] == 501 + assert emitted[0]["patient_id"] == 301 + + warnings: list[str] = [] + monkeypatch.setattr( + appointments_module, + "show_toast", + lambda _parent, message, _kind: warnings.append(message), + ) + row["status"] = 2 + page._request_video() + assert len(emitted) == 1 + assert warnings == ["已取消的挂号不可进入 IM 问诊。"] + page.close() + application.processEvents() + def test_appointment_pending_prescription_uses_full_edit_contract( application: QApplication, @@ -508,15 +615,20 @@ def test_appointment_ai_report_button_visible_with_reception_permission( application.processEvents() -def test_appointments_reference_split_layout_and_video_list( +def test_appointments_use_full_width_table_with_per_row_im_consult( application: QApplication, + monkeypatch: pytest.MonkeyPatch, ) -> None: + monkeypatch.setattr(appointments_module, "run_async", lambda *_args, **_kwargs: object()) page = AppointmentsPage( DemoDoctorRepository(), - permissions=PermissionSet(["doctor.appointment/lists"]), + permissions=PermissionSet( + ["doctor.appointment/lists", "doctor.appointment/prescription"] + ), current_user={"id": 1001, "role_id": 1}, ) page.resize(1460, 820) + page.show() page._apply_responsive_layout() page._loaded( { @@ -524,6 +636,7 @@ def test_appointments_reference_split_layout_and_video_list( { "id": 101, "diagnosis_id": 501, + "source_patient_id": 301, "patient_name": "赵俊霞", "gender": 0, "age": 53, @@ -532,6 +645,7 @@ def test_appointments_reference_split_layout_and_video_list( "appointment_time": "09:50", "status": 1, "status_desc": "已挂号", + "video_call_hint": {"state": "live", "label": "视频通话进行中"}, } ], "count": 1, @@ -541,32 +655,143 @@ def test_appointments_reference_split_layout_and_video_list( ) application.processEvents() - assert page.video_list.count() == 1 - assert "赵俊霞" in page.video_list.item(0).text() - assert 300 <= page.video_panel.width() <= 420 + assert page.content_layout.count() == 1 + assert not hasattr(page, "video_panel") + assert not hasattr(page, "video_list") + assert page.table_card.width() == page.content_host.width() assert page.table.objectName() == "AppointmentTable" assert ( page.table.verticalScrollMode() == QAbstractItemView.ScrollMode.ScrollPerPixel ) - assert ( - page.video_list.verticalScrollMode() - == QAbstractItemView.ScrollMode.ScrollPerPixel - ) + assert page.table.horizontalHeaderItem(10).text() == "IM 问诊" + im_host = page.table.cellWidget(0, 10) + assert im_host is not None + im_button = im_host.findChild(QPushButton, "AppointmentImConsultButton") + assert im_button is not None + assert im_button.text() == "IM 问诊" + assert im_button.isEnabled() + assert im_button.accessibleName() == "与赵俊霞进行 IM 问诊" + emitted: list[dict[str, Any]] = [] + page.video_requested.connect(emitted.append) + im_button.click() + assert emitted and emitted[0]["mode"] == "im" + assert emitted[0]["appointment_id"] == 101 assert page.date_buttons["today"].isChecked() page.resize(1024, 640) page._apply_responsive_layout() - assert page.video_panel.isHidden() - assert not page.video_panel_button.isHidden() + application.processEvents() + assert page.table_card.width() == page.content_host.width() assert not page.date_overflow_button.isHidden() assert page.date_buttons["yesterday"].isHidden() assert not page.date_buttons["today"].isHidden() - page.video_panel_button.click() - assert not page.video_panel.isHidden() - assert 250 <= page.video_panel.width() <= 300 - page.video_panel_button.click() - assert page.video_panel.isHidden() + page.close() + application.processEvents() + + +def test_im_entry_does_not_require_a_live_video_hint( + application: QApplication, +) -> None: + page = AppointmentsPage( + DemoDoctorRepository(), + permissions=PermissionSet(["doctor.appointment/prescription"]), + ) + rows = [ + { + "id": 101, + "diagnosis_id": 501, + "source_patient_id": 301, + "patient_name": "已接通患者", + "status": 1, + "video_call_hint": {"state": "ended", "label": "视频通话已结束"}, + }, + { + "id": 102, + "diagnosis_id": 502, + "source_patient_id": 302, + "patient_name": "等待患者", + "status": 1, + }, + ] + page._loaded({"lists": rows, "count": 2}, page._generation, False) + application.processEvents() + + buttons = [ + page.table.cellWidget(index, 10).findChild( + QPushButton, + "AppointmentImConsultButton", + ) + for index in range(page.table.rowCount()) + ] + buttons_by_name = { + button.accessibleName(): button for button in buttons if button is not None + } + assert set(buttons_by_name) == { + "与已接通患者进行 IM 问诊", + "与等待患者进行 IM 问诊", + } + assert buttons_by_name["与已接通患者进行 IM 问诊"].isEnabled() + waiting = buttons_by_name["与等待患者进行 IM 问诊"] + assert waiting.isEnabled() + assert waiting.toolTip() == "打开患者 IM,可发送消息并从会话中发起视频" + page.close() + application.processEvents() + + +def test_im_entry_allows_fulfillable_statuses_and_rejects_terminal_or_unknown_statuses( + application: QApplication, +) -> None: + page = AppointmentsPage( + DemoDoctorRepository(), + permissions=PermissionSet(["doctor.appointment/prescription"]), + ) + rows = [ + { + "id": index + 100, + "diagnosis_id": index + 500, + "source_patient_id": index + 300, + "patient_name": name, + "status": status, + } + for index, (name, status) in enumerate( + ( + ("已预约患者", 1), + ("已过号患者", 4), + ("已取消患者", 2), + ("已完成患者", 3), + ("未知状态患者", 0), + ) + ) + ] + page._loaded({"lists": rows, "count": len(rows)}, page._generation, False) + application.processEvents() + + buttons = { + button.accessibleName(): button + for row_index in range(page.table.rowCount()) + if ( + button := page.table.cellWidget(row_index, 10).findChild( + QPushButton, + "AppointmentImConsultButton", + ) + ) + is not None + } + assert buttons["与已预约患者进行 IM 问诊"].isEnabled() + assert buttons["与已过号患者进行 IM 问诊"].isEnabled() + assert not buttons["与已取消患者进行 IM 问诊"].isEnabled() + assert buttons["与已取消患者进行 IM 问诊"].toolTip() == ( + "已取消的挂号不可进入 IM 问诊" + ) + assert not buttons["与已完成患者进行 IM 问诊"].isEnabled() + assert buttons["与已完成患者进行 IM 问诊"].toolTip() == ( + "已完成的挂号不可再进入 IM 问诊" + ) + assert not buttons["与未知状态患者进行 IM 问诊"].isEnabled() + assert buttons["与未知状态患者进行 IM 问诊"].toolTip() == ( + "当前挂号状态不可进入 IM 问诊" + ) page.close() application.processEvents() @@ -601,19 +826,20 @@ def test_identical_appointment_poll_keeps_existing_cell_widgets( page._loaded(result, page._generation, True) selector = page.table.cellWidget(0, 0) appointment_info = page.table.cellWidget(0, 4) - video_card = page.video_list.itemWidget(page.video_list.item(0)) + im_action = page.table.cellWidget(0, 10) page._loaded(deepcopy(result), page._generation, True) assert page.table.cellWidget(0, 0) is selector assert page.table.cellWidget(0, 4) is appointment_info - assert page.video_list.itemWidget(page.video_list.item(0)) is video_card + assert page.table.cellWidget(0, 10) is im_action changed = deepcopy(result) changed["lists"][0]["assistant_name"] = "新医助" page._loaded(changed, page._generation, True) assert page.table.cellWidget(0, 0) is not selector assert page.table.cellWidget(0, 4) is not appointment_info + assert page.table.cellWidget(0, 10) is not im_action page.close() application.processEvents() @@ -665,11 +891,11 @@ def test_appointments_density_fits_four_rows_in_1366_shell_viewport( assert all(60 <= height <= 66 for height in heights) assert page.table.viewport().height() // max(heights) >= 4 assert page.pager.isVisibleTo(page) - assert 300 <= page.video_panel.width() < 420 + assert page.content_layout.count() == 1 + assert page.table_card.width() == page.content_host.width() page.resize(1024, 640) application.processEvents() - assert page.video_panel.isHidden() - assert not page.video_panel_button.isHidden() + assert page.table_card.width() == page.content_host.width() page.close() application.processEvents() diff --git a/app/tests/test_consultations_parity_ui.py b/app/tests/test_consultations_parity_ui.py index 8db774af0..ce71b0ce2 100644 --- a/app/tests/test_consultations_parity_ui.py +++ b/app/tests/test_consultations_parity_ui.py @@ -169,7 +169,7 @@ def test_video_condition_never_uses_diagnosis_status_or_missed_status() -> None: assert payload["patient_id"] == 301 -def test_nested_appointments_confirmation_and_prescription_labels() -> None: +def test_nested_appointments_confirmation_and_prescription_labels() -> None: row = _row( appointment_id=None, appointment_status=None, @@ -195,6 +195,62 @@ def test_nested_appointments_confirmation_and_prescription_labels() -> None: ) == "编辑处方" ) + assert ( + prescription_action_label( + { + "has_prescription": 1, + "current_has_prescription": 0, + "prescription_audit_status": 1, + "prescription_void_status": 0, + } + ) + == "开方" + ) + + +def test_view_prescription_intent_is_readonly_and_fails_closed_on_state_change( + application: QApplication, + monkeypatch: pytest.MonkeyPatch, +) -> None: + row = _row( + has_prescription=1, + current_has_prescription=1, + current_prescription_id=701, + prescription_audit_status=1, + prescription_void_status=0, + ) + page = ConsultationsPage(SimpleNamespace(), permissions=PermissionSet(["*"])) + page.table_host.set_rows([row]) + page.table.selectRow(0) + + requested: list[tuple[Any, str]] = [] + monkeypatch.setattr( + page, + "_begin_prescription_load", + lambda record, *, mode: requested.append((record, mode)), + ) + page._open_prescription() + assert requested == [(row, "view")] + + monkeypatch.setattr( + page, + "_open_existing_prescription_editor", + lambda _existing: pytest.fail("view intent must never open the editor"), + ) + page._prescription_loaded( + { + "id": 701, + "appointment_id": 101, + "audit_status": 0, + "void_status": 0, + }, + row, + "view", + page._prescription_generation, + ) + assert "状态已变化" in page.banner.label.text() + page.close() + application.processEvents() def test_default_query_matches_admin_today_and_page_size_contract( @@ -611,7 +667,7 @@ def test_switching_rows_invalidates_prescription_worker_and_clears_busy( application.processEvents() -def test_native_call_does_not_reuse_video_qr_permission( +def test_native_call_does_not_reuse_video_qr_permission( application: QApplication, ) -> None: class VideoRepository: @@ -627,10 +683,17 @@ def test_native_call_does_not_reuse_video_qr_permission( def end_call(self, diagnosis_id: int) -> None: pass - page = ConsultationsPage(VideoRepository(), permissions=PermissionSet([])) - emitted: list[dict[str, Any]] = [] - page.video_requested.connect(emitted.append) - page.table.set_rows([_row()]) + live_row = _row( + video_call_hint={ + "state": "live", + "label": "视频通话进行中", + "start_time": 1787102100, + } + ) + page = ConsultationsPage(VideoRepository(), permissions=PermissionSet([])) + emitted: list[dict[str, Any]] = [] + page.video_requested.connect(emitted.append) + page.table.set_rows([live_row]) page.table.selectRow(0) application.processEvents() @@ -638,12 +701,55 @@ def test_native_call_does_not_reuse_video_qr_permission( assert page.video_button.isEnabled() video_cell = page.table_host.fixed.indexWidget(page.table_host.model.index(0, 10)) video_action = next(button for button in video_cell.findChildren(QToolButton)) - assert video_action.text() == "进入视频问诊" - assert "摄像头和麦克风" in video_action.toolTip() - page._request_video() - assert emitted == [_video_payload(_row())] - page.close() - application.processEvents() + assert video_action.text() == "进入视频问诊" + assert emitted == [] + assert "摄像头和麦克风" in video_action.toolTip() + page._request_video() + assert emitted == [_video_payload(live_row)] + assert emitted[0]["mode"] == "im" + page.close() + application.processEvents() + + +@pytest.mark.parametrize( + ("hint", "status_text"), + [ + ({"state": "none", "label": ""}, "暂无通话"), + ({"state": "pending_room", "label": "通话发起中,待同步房间"}, "等待接通"), + ], +) +def test_video_join_action_is_hidden_until_doctor_session_is_live( + application: QApplication, + hint: dict[str, Any], + status_text: str, +) -> None: + class VideoRepository: + def get_call_ticket(self, patient_id: int, diagnosis_id: int) -> None: + pass + + def start_call(self, diagnosis_id: int, patient_id: int, *, call_type: int = 2) -> None: + pass + + def bind_call_room(self, diagnosis_id: int, room_id: str) -> None: + pass + + def end_call(self, diagnosis_id: int) -> None: + pass + + page = ConsultationsPage(VideoRepository(), permissions=PermissionSet([])) + emitted: list[dict[str, Any]] = [] + page.video_requested.connect(emitted.append) + page.table.set_rows([_row(video_call_hint=hint)]) + page.table.selectRow(0) + application.processEvents() + + video_cell = page.table_host.fixed.indexWidget(page.table_host.model.index(0, 10)) + assert video_cell.findChildren(QToolButton) == [] + assert status_text in " ".join(label.text() for label in video_cell.findChildren(QLabel)) + page._request_video() + assert emitted == [] + page.close() + application.processEvents() @pytest.mark.parametrize( diff --git a/app/tests/test_diagnosis_index_visual.py b/app/tests/test_diagnosis_index_visual.py index 5b5c23079..07e30b01d 100644 --- a/app/tests/test_diagnosis_index_visual.py +++ b/app/tests/test_diagnosis_index_visual.py @@ -146,6 +146,8 @@ def _row(identifier: int, **changes: Any) -> dict[str, Any]: "assistant_name": "赵医助", "assign_read_at": None, "has_prescription": 1, + "current_has_prescription": 0, + "current_prescription_id": 0, "followup_time_text": "2026-08-17 09:00", "followup_doctor_name": "陈医生", "unserved_days": 2, diff --git a/app/tests/test_diagnosis_order_video_visual.py b/app/tests/test_diagnosis_order_video_visual.py index 2a65fc3c5..ef36eccef 100644 --- a/app/tests/test_diagnosis_order_video_visual.py +++ b/app/tests/test_diagnosis_order_video_visual.py @@ -1,12 +1,14 @@ from __future__ import annotations import os +import threading +from types import SimpleNamespace from typing import Any os.environ.setdefault("QT_QPA_PLATFORM", "offscreen") import pytest -from PySide6.QtWidgets import QApplication, QFrame, QLabel, QPushButton, QVBoxLayout +from PySide6.QtWidgets import QApplication, QDialog, QFrame, QLabel, QPushButton, QVBoxLayout from doctor_workstation.ui import diagnosis_media from doctor_workstation.ui.diagnosis_drawer import RecordTable @@ -378,6 +380,7 @@ def test_video_table_embeds_player_and_preserves_row_bound_upload( [ { "id": 48, + "room_id": "doctor-501-20260819-143247", "recording_urls_list": [ "https://media.example.invalid/replay.mp4", "https://media.example.invalid/replay-backup.m3u8", @@ -407,6 +410,12 @@ def test_video_table_embeds_player_and_preserves_row_bound_upload( application.processEvents() table = dialog._table_registry["video"][1] + assert table.horizontalHeaderItem(1).text() == "房间号" + assert table.item(0, 1).text() == "doctor-501-20260819-143247" + assert table.item(1, 1).text() == "历史记录未保存" + room_rect = table.visualItemRect(table.item(0, 1)) + assert room_rect.left() >= 0 + assert room_rect.right() < table.viewport().width() playback = table.cellWidget(0, 0) assert isinstance(playback, RecordingPlaybackCell) assert playback.property("callRecordId") == 48 @@ -465,6 +474,132 @@ def test_video_table_embeds_player_and_preserves_row_bound_upload( application.processEvents() +def test_video_table_exposes_local_audio_separately_from_cloud_video_and_text( + application: QApplication, +) -> None: + dialog = DiagnosisDialog(_Repository(), permissions=["*"]) + dialog._editable = False + dialog._can_video_upload = False + dialog._diagnosis_id = 501 + opened: list[str] = [] + dialog._open_recording_player = lambda target: opened.append(target) # type: ignore[method-assign] + audio_url = "https://cos.example.invalid/calls/local-audio.webm" + dialog._fill_video( + [ + { + "id": 49, + "recording_urls_list": [ + "https://cos.example.invalid/calls/cloud-mixed-video.mp4" + ], + "local_audio_urls_list": [audio_url], + "local_audio_status_text": "已保存", + "transcript_text": "医生:请描述症状。\n患者:最近口渴。", + "transcription_status_text": "已完成", + "call_type": 2, + "status": 2, + "recording_status_text": "已生成", + } + ] + ) + table = dialog._table_registry["video"][1] + action_host = table.cellWidget(0, 8) + assert action_host is not None + audio = action_host.findChild(QPushButton, "DiagnosisLocalAudioPlayback") + transcript = action_host.findChild(QPushButton, "DiagnosisVideoTranscriptView") + assert audio is not None and audio.property("callRecordId") == 49 + assert transcript is not None and transcript.property("callRecordId") == 49 + status = table.item(0, 7).text() + assert "云端视频:已生成" in status + assert "本机录音:已保存" in status + assert "转写文字:已完成" in status + + audio.click() + assert opened == [audio_url] + dialog.close() + application.processEvents() + + +def test_local_audio_upload_and_queue_close_refresh_server_backed_video_rows( + application: QApplication, + monkeypatch: pytest.MonkeyPatch, +) -> None: + created: list[QDialog] = [] + + class _UploadManager: + def __init__(self) -> None: + self.listeners: set[Any] = set() + + def add_upload_listener(self, listener: Any) -> None: + self.listeners.add(listener) + + def remove_upload_listener(self, listener: Any) -> None: + self.listeners.discard(listener) + + def complete(self, diagnosis_id: int, call_record_id: int) -> None: + record = SimpleNamespace( + diagnosis_id=diagnosis_id, + call_record_id=call_record_id, + ) + for listener in tuple(self.listeners): + listener(record) + + manager = _UploadManager() + + class _QueueDialog(QDialog): + def __init__( + self, + _repository: Any, + _diagnosis_id: int, + parent: QDialog, + ) -> None: + super().__init__(parent) + self.manager = manager + created.append(self) + + monkeypatch.setattr(diagnosis_module, "LocalAudioQueueDialog", _QueueDialog) + dialog = DiagnosisDialog(_Repository(), permissions=["*"]) + dialog._diagnosis_id = 501 + dialog._can_video_upload = True + reloads: list[tuple[str, bool]] = [] + dialog._ensure_tab_loaded = ( # type: ignore[method-assign] + lambda key, force=False: reloads.append((key, force)) + ) + + dialog._open_local_audio_queue() + assert len(created) == 1 + queue_dialog = created[0] + assert reloads == [("video", True)] + + dialog._loading_tabs.add("video") + manager.complete(501, 49) + manager.complete(501, 50) + manager.complete(999, 51) + application.processEvents() + assert reloads == [("video", True)] + assert dialog._video_reload_pending is True + + dialog._loading_tabs.discard("video") + dialog._flush_video_reload_if_pending(501) + application.processEvents() + assert reloads == [("video", True), ("video", True)] + + queue_dialog.accept() + application.processEvents() + assert reloads == [("video", True), ("video", True)] + assert manager.listeners + + worker = threading.Thread(target=lambda: manager.complete(501, 52)) + worker.start() + worker.join(timeout=5) + assert worker.is_alive() is False + application.processEvents() + assert reloads == [("video", True), ("video", True), ("video", True)] + + dialog.reject() + application.processEvents() + assert manager.listeners == set() + + def test_inline_player_rejects_stale_owner_generation(application: QApplication) -> None: class _Owner: _tab_generations = {"video": 4} diff --git a/app/tests/test_local_audio_queue.py b/app/tests/test_local_audio_queue.py new file mode 100644 index 000000000..63119aee4 --- /dev/null +++ b/app/tests/test_local_audio_queue.py @@ -0,0 +1,482 @@ +from __future__ import annotations + +import sqlite3 +import threading +from pathlib import Path +from typing import Any + +import pytest +from PySide6.QtTest import QTest +from PySide6.QtWidgets import QApplication + +from doctor_workstation.services.local_audio_queue import ( + LocalAudioQueueStore, + LocalAudioUploadManager, +) +from doctor_workstation.ui.dialogs.local_audio_queue import ( + LocalAudioQueueDialog, + _display_time, +) + + +def _application() -> QApplication: + return QApplication.instance() or QApplication([]) + + +def _ready_record( + store: LocalAudioQueueStore, + *, + diagnosis_id: int, + call_record_id: int, + session_id: str, + room_id: str = "", +) -> int: + record = store.begin_recording( + session_id=session_id, + diagnosis_id=diagnosis_id, + mime_type="audio/webm", + call_record_id=call_record_id, + room_id=room_id, + ) + payload = b"\x1aE\xdf\xa3" + (b"local-call-audio" * 128) + record.file_path.write_bytes(payload) + finalized = store.finalize_recording(record.id, size_bytes=len(payload)) + return finalized.id + + +class _ConcurrentRepository: + def __init__(self, expected: int) -> None: + self.expected = expected + self.lock = threading.Lock() + self.release = threading.Event() + self.all_started = threading.Event() + self.active = 0 + self.maximum_active = 0 + self.calls: list[dict[str, Any]] = [] + + def upload_call_recording(self, **payload: Any) -> dict[str, str]: + path = Path(payload["path"]) + assert path.is_file() + with self.lock: + self.active += 1 + self.maximum_active = max(self.maximum_active, self.active) + self.calls.append(payload) + if self.active >= self.expected: + self.all_started.set() + try: + assert self.release.wait(5), "concurrent uploads did not receive release" + return {"file_url": f"cos://recordings/{path.name}"} + finally: + with self.lock: + self.active -= 1 + + +class _RetryRepository: + def __init__(self) -> None: + self.calls = 0 + self.call_records: dict[int, list[dict[str, Any]]] = {} + self.list_calls: list[int] = [] + + def upload_call_recording(self, **payload: Any) -> dict[str, str]: + self.calls += 1 + if self.calls == 1: + raise RuntimeError("COS 暂时不可用") + return {"file_url": f"cos://recordings/{Path(payload['path']).name}"} + + def list_call_records(self, diagnosis_id: int) -> list[dict[str, Any]]: + self.list_calls.append(int(diagnosis_id)) + return list(self.call_records.get(int(diagnosis_id), [])) + + +def test_existing_queue_schema_adds_room_id_without_losing_rows( + tmp_path: Path, +) -> None: + root = tmp_path / "old-audio-queue" + root.mkdir() + database = root / "queue.sqlite3" + with sqlite3.connect(database) as connection: + connection.execute( + """ + CREATE TABLE local_audio_uploads ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + session_id TEXT NOT NULL UNIQUE, + diagnosis_id INTEGER NOT NULL, + call_record_id INTEGER, + mime_type TEXT NOT NULL, + file_path TEXT NOT NULL, + size_bytes INTEGER NOT NULL DEFAULT 0, + status TEXT NOT NULL, + error_text TEXT NOT NULL DEFAULT '', + uploaded_url TEXT NOT NULL DEFAULT '', + attempts INTEGER NOT NULL DEFAULT 0, + created_at TEXT NOT NULL, + updated_at TEXT NOT NULL, + uploaded_at TEXT NOT NULL DEFAULT '' + ) + """ + ) + connection.execute( + """ + INSERT INTO local_audio_uploads ( + session_id, diagnosis_id, call_record_id, mime_type, file_path, + size_bytes, status, error_text, uploaded_url, attempts, + created_at, updated_at, uploaded_at + ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + """, + ( + "legacy-uploaded-session", + 8169, + 901, + "audio/webm", + str(root / "legacy.webm"), + 2048, + "uploaded", + "", + "cos://recordings/legacy.webm", + 2, + "2026-08-20T01:00:00+00:00", + "2026-08-20T01:02:00+00:00", + "2026-08-20T01:02:00+00:00", + ), + ) + + store = LocalAudioQueueStore(root) + record = store.list_records()[0] + with sqlite3.connect(database) as connection: + columns = { + str(row[1]) + for row in connection.execute( + "PRAGMA table_info(local_audio_uploads)" + ).fetchall() + } + + assert "room_id" in columns + assert record.room_id == "" + assert record.status == "uploaded" + assert record.uploaded_url == "cos://recordings/legacy.webm" + assert record.attempts == 2 + assert LocalAudioQueueStore(root).require(record.id).room_id == "" + + +def test_local_audio_identity_binding_is_idempotent_and_rejects_conflicts( + tmp_path: Path, +) -> None: + store = LocalAudioQueueStore(tmp_path / "audio-queue") + record = store.begin_recording( + session_id="identity-binding-session", + diagnosis_id=8169, + mime_type="audio/webm", + call_record_id=901, + room_id="00123456", + ) + + assert record.call_record_id == 901 + assert record.room_id == "00123456" + assert store.bind_identity( + record.id, + call_record_id=901, + room_id="00123456", + ).room_id == "00123456" + assert store.bind_identity(record.id, call_record_id=901).room_id == "00123456" + + with pytest.raises(RuntimeError, match="房间号发生冲突"): + store.bind_identity(record.id, call_record_id=901, room_id="99887766") + with pytest.raises(RuntimeError, match="通话记录 ID 或房间号发生冲突"): + store.bind_identity(record.id, call_record_id=902, room_id="00123456") + assert store.require(record.id).call_record_id == 901 + assert store.require(record.id).room_id == "00123456" + + +def test_local_audio_queue_uploads_three_files_concurrently(tmp_path: Path) -> None: + store = LocalAudioQueueStore(tmp_path / "audio-queue") + record_ids = [ + _ready_record( + store, + diagnosis_id=8169, + call_record_id=900 + index, + session_id=f"session-{index}", + ) + for index in range(3) + ] + repository = _ConcurrentRepository(expected=3) + manager = LocalAudioUploadManager(repository, store, max_workers=3) + futures = [manager.submit(record_id) for record_id in record_ids] + + try: + assert repository.all_started.wait(5) + assert repository.maximum_active == 3 + finally: + repository.release.set() + + assert [future.result(timeout=5) for future in futures] == [True, True, True] + records = [store.require(record_id) for record_id in record_ids] + assert all(record.status == "uploaded" for record in records) + assert all(record.exists for record in records) + assert all(record.uploaded_url.startswith("cos://recordings/") for record in records) + assert {call["call_record_id"] for call in repository.calls} == {900, 901, 902} + + +def test_failed_local_audio_is_kept_and_can_be_retried(tmp_path: Path) -> None: + store = LocalAudioQueueStore(tmp_path / "audio-queue") + record_id = _ready_record( + store, + diagnosis_id=8169, + call_record_id=901, + session_id="retry-session", + ) + repository = _RetryRepository() + manager = LocalAudioUploadManager(repository, store, max_workers=1) + + assert manager.submit(record_id).result(timeout=5) is False + failed = store.require(record_id) + assert failed.status == "failed" + assert failed.exists + assert failed.attempts == 1 + assert "COS 暂时不可用" in failed.error_text + + store.retry(record_id) + assert manager.submit(record_id).result(timeout=5) is True + uploaded = store.require(record_id) + assert uploaded.status == "uploaded" + assert uploaded.exists + assert uploaded.attempts == 2 + assert uploaded.uploaded_url.startswith("cos://recordings/") + + +def test_local_audio_manager_notifies_when_an_upload_reaches_uploaded( + tmp_path: Path, +) -> None: + store = LocalAudioQueueStore(tmp_path / "audio-queue") + repository = _RetryRepository() + repository.calls = 1 + manager = LocalAudioUploadManager(repository, store, max_workers=1) + record_id = _ready_record( + store, + diagnosis_id=8169, + call_record_id=901, + session_id="upload-notification-session", + ) + uploads: list[tuple[int, int, str]] = [] + + def record_upload(record: Any) -> None: + uploads.append( + (record.diagnosis_id, int(record.call_record_id or 0), record.uploaded_url) + ) + + manager.add_upload_listener(record_upload) + assert manager.submit(record_id).result(timeout=5) is True + assert manager.submit(record_id).result(timeout=5) is True + manager.remove_upload_listener(record_upload) + + assert uploads == [ + ( + 8169, + 901, + store.require(record_id).uploaded_url, + ) + ] + + +def test_local_audio_manager_does_not_report_success_without_uploaded_url( + tmp_path: Path, +) -> None: + class _IncompleteRepository: + @staticmethod + def upload_call_recording(**_payload: Any) -> dict[str, bool]: + return {"completed": True} + + store = LocalAudioQueueStore(tmp_path / "audio-queue") + record_id = _ready_record( + store, + diagnosis_id=8169, + call_record_id=901, + session_id="missing-url-session", + ) + manager = LocalAudioUploadManager(_IncompleteRepository(), store, max_workers=1) + uploads: list[Any] = [] + manager.add_upload_listener(uploads.append) + + assert manager.submit(record_id).result(timeout=5) is False + record = store.require(record_id) + assert record.status == "failed" + assert "文件地址" in record.error_text + assert uploads == [] + + +def test_local_audio_dialog_displays_utc_recording_time_in_business_timezone() -> None: + assert _display_time("2026-08-20T01:51:00+00:00") == ( + "2026-08-20 09:51:00" + ) + + +def test_local_audio_dialog_lists_status_and_retry_controls(tmp_path: Path) -> None: + application = _application() + store = LocalAudioQueueStore(tmp_path / "audio-queue") + repository = _RetryRepository() + manager = LocalAudioUploadManager(repository, store, max_workers=1) + + failed_id = _ready_record( + store, + diagnosis_id=8169, + call_record_id=901, + session_id="failed-session", + room_id="67534825", + ) + store.update_status(failed_id, "failed", "等待医生重试") + uploaded_id = _ready_record( + store, + diagnosis_id=8169, + call_record_id=902, + session_id="uploaded-session", + room_id="1692231119", + ) + store.mark_uploaded(uploaded_id, "cos://recordings/uploaded.webm") + + dialog = LocalAudioQueueDialog( + repository, + 8169, + store=store, + manager=manager, + ) + dialog.show() + application.processEvents() + try: + assert dialog.objectName() == "LocalAudioQueueDialog" + assert dialog.table.columnCount() == 8 + assert dialog.table.rowCount() == 2 + assert dialog.summary_failed.text() == "失败 1" + assert dialog.summary_uploaded.text() == "已上传 1" + assert dialog.retry_failed_button.isEnabled() + assert dialog.table.horizontalHeaderItem(1).text() == "通话记录 ID" + assert dialog.table.horizontalHeaderItem(2).text() == "房间号" + assert dialog.table.horizontalHeaderItem(5).text() == "上传状态" + assert dialog.table.horizontalHeaderItem(6).text() == "失败原因" + assert dialog.table.columnWidth(dialog._room_column) == 180 + rooms = { + dialog.table.item(row, 2).text() for row in range(dialog.table.rowCount()) + } + assert rooms == {"67534825", "1692231119"} + statuses = { + dialog.table.item(row, 5).text() for row in range(dialog.table.rowCount()) + } + assert statuses == {"上传失败", "已上传"} + finally: + dialog.close() + application.processEvents() + + +def test_global_local_audio_dialog_lists_all_diagnoses_and_outcomes( + tmp_path: Path, +) -> None: + application = _application() + store = LocalAudioQueueStore(tmp_path / "audio-queue") + repository = _RetryRepository() + manager = LocalAudioUploadManager(repository, store, max_workers=1) + + failed_id = _ready_record( + store, + diagnosis_id=8169, + call_record_id=901, + session_id="global-failed-session", + room_id="67534825", + ) + store.update_status(failed_id, "failed", "等待医生重试") + uploaded_id = _ready_record( + store, + diagnosis_id=9001, + call_record_id=902, + session_id="global-uploaded-session", + room_id="407179477", + ) + store.mark_uploaded(uploaded_id, "cos://recordings/global-uploaded.webm") + + dialog = LocalAudioQueueDialog( + repository, + None, + store=store, + manager=manager, + ) + dialog.show() + application.processEvents() + try: + assert dialog.title_label.text() == "本机录音上传管理" + assert dialog.table.columnCount() == 9 + assert dialog.table.rowCount() == 2 + assert dialog.table.horizontalHeaderItem(1).text() == "诊单 ID" + assert dialog.table.horizontalHeaderItem(2).text() == "通话记录 ID" + assert dialog.table.horizontalHeaderItem(3).text() == "房间号" + assert dialog.table.horizontalHeaderItem(6).text() == "上传状态" + diagnosis_ids = { + dialog.table.item(row, 1).text() + for row in range(dialog.table.rowCount()) + } + assert diagnosis_ids == {"8169", "9001"} + statuses = { + dialog.table.item(row, 6).text() + for row in range(dialog.table.rowCount()) + } + assert statuses == {"上传失败", "已上传"} + rooms = { + dialog.table.item(row, 3).text() + for row in range(dialog.table.rowCount()) + } + assert rooms == {"67534825", "407179477"} + assert dialog.summary_failed.text() == "失败 1" + assert dialog.summary_uploaded.text() == "已上传 1" + finally: + dialog.close() + application.processEvents() + + +def test_dialog_fetches_and_persists_historical_room_ids_once_per_diagnosis( + tmp_path: Path, +) -> None: + application = _application() + store = LocalAudioQueueStore(tmp_path / "audio-queue") + repository = _RetryRepository() + repository.call_records[8169] = [ + {"id": 902, "room_id": "1692231119"}, + {"id": 901, "room_id": "67534825"}, + ] + manager = LocalAudioUploadManager(repository, store, max_workers=1) + first_id = _ready_record( + store, + diagnosis_id=8169, + call_record_id=901, + session_id="legacy-room-first", + ) + second_id = _ready_record( + store, + diagnosis_id=8169, + call_record_id=902, + session_id="legacy-room-second", + ) + + dialog = LocalAudioQueueDialog( + repository, + 8169, + store=store, + manager=manager, + ) + dialog.show() + try: + for _ in range(200): + application.processEvents() + if store.require(first_id).room_id and store.require(second_id).room_id: + break + QTest.qWait(10) + + assert store.require(first_id).room_id == "67534825" + assert store.require(second_id).room_id == "1692231119" + assert repository.list_calls == [8169] + for _ in range(3): + dialog.refresh_records() + application.processEvents() + assert repository.list_calls == [8169] + assert { + dialog.table.item(row, 2).text() + for row in range(dialog.table.rowCount()) + } == {"67534825", "1692231119"} + finally: + dialog.close() + application.processEvents() diff --git a/app/tests/test_mock_repository.py b/app/tests/test_mock_repository.py index 093160694..e0ee8f6f6 100644 --- a/app/tests/test_mock_repository.py +++ b/app/tests/test_mock_repository.py @@ -295,6 +295,34 @@ def test_demo_transcript_upsert_and_finish_round_trip_in_call_records( assert "final words" in record["transcript_text"] +def test_demo_local_audio_is_preserved_separately_from_cloud_video_and_text( + repository: DemoDoctorRepository, + tmp_path: Path, +) -> None: + started = repository.start_call(501, 301) + call_record_id = int(started["id"]) + audio = tmp_path / "local-call.webm" + audio.write_bytes(b"webm-opus-audio") + + result = repository.upload_call_recording( + audio, + 501, + call_record_id=call_record_id, + mime_type="audio/webm;codecs=opus", + ) + record = next( + row for row in repository.list_call_records(501) if row["id"] == call_record_id + ) + + assert result["media_kind"] == "local_audio" + assert result["call_record_id"] == call_record_id + assert record["local_audio_status"] == 2 + assert record["local_audio_status_text"] == "已保存" + assert record["local_audio_urls_list"] == [result["file_url"]] + assert record["recording_urls_list"] == [] + assert record["transcript_text"] == "" + + def test_tolerant_page_parsing_accepts_aliases_and_bad_rows() -> None: """List parsing handles nullable fields, aliases and non-object rows safely.""" diff --git a/app/tests/test_patient_ai_report_desktop.py b/app/tests/test_patient_ai_report_desktop.py index 35c6fdeee..e37eab2e6 100644 --- a/app/tests/test_patient_ai_report_desktop.py +++ b/app/tests/test_patient_ai_report_desktop.py @@ -3,6 +3,7 @@ from __future__ import annotations import os +from concurrent.futures import ThreadPoolExecutor from copy import deepcopy from datetime import date from typing import Any @@ -40,8 +41,11 @@ def immediate_async(monkeypatch: pytest.MonkeyPatch) -> None: on_success: Any = None, on_error: Any = None, on_finished: Any = None, + pool: Any = None, + priority: int = 0, **kwargs: Any, ) -> object: + del pool, priority try: result = function(*args, **kwargs) except Exception as error: @@ -305,6 +309,64 @@ def test_openai_failure_keeps_new_qwen_snapshot( page.close() +def test_finished_only_cached_regeneration_unlocks_retry_and_keeps_snapshot( + application: QApplication, + monkeypatch: pytest.MonkeyPatch, +) -> None: + detail = _detail(109, 301, 509) + saved = _snapshot("qwen", 1, "2026-08-14 10:45:00") + jobs: list[dict[str, Any]] = [] + + def queue(function: Any, *args: Any, **options: Any) -> object: + jobs.append({"function": function, "args": args, **options}) + return object() + + monkeypatch.setattr(reception_module, "run_async", queue) + + class Repository: + def list_patient_ai_reports(self, patient_id: int) -> dict[str, Any]: + return {"patient_id": patient_id, "reports": [saved]} + + def generate_patient_ai_report( + self, + patient_id: int, + *, + model: str, + ) -> dict[str, Any]: + raise AssertionError(f"queued worker must not run inline: {patient_id}/{model}") + + page = ReceptionPage( + Repository(), + PermissionSet( + [ + "tcm.diagnosis/patientAiReports", + "tcm.diagnosis/generatePatientAiReport", + ] + ), + ) + page._select_record(detail["appointment"]) + jobs[0]["on_success"]({"detail": detail, "warnings": []}) + jobs[1]["on_success"]({"patient_id": 301, "reports": [saved]}) + jobs[1]["on_finished"]() + assert page._ai_analysis_model_states["qwen"] == "success" + assert page.ai_analysis_regenerate_button.isEnabled() + + page.ai_analysis_regenerate_button.click() + assert len(jobs) == 3 + assert page._ai_analysis_regenerating + assert not page.ai_analysis_regenerate_button.isEnabled() + + jobs[2]["on_finished"]() + + assert not page._ai_analysis_regenerating + assert page._ai_analysis_regeneration_model is None + assert page._ai_analysis_model_states["qwen"] == "success" + assert page.ai_summary_label.text() == "千问第 1 版诊断建议" + assert page.ai_analysis_regenerate_button.isEnabled() + assert "未返回有效结果" in page.ai_analysis_secondary_status.text() + page.close() + + def test_late_patient_history_response_is_discarded_after_switch( application: QApplication, monkeypatch: pytest.MonkeyPatch, @@ -353,6 +415,7 @@ def test_late_patient_history_response_is_discarded_after_switch( first_history_job = jobs[1] page._select_record(second["appointment"]) + assert first_history_job["function"]() is reception_module._ASYNC_REQUEST_CANCELLED finish(jobs[2]) second_history_job = jobs[3] finish(second_history_job) @@ -364,6 +427,563 @@ def test_late_patient_history_response_is_discarded_after_switch( page.close() +def test_aba_switch_attaches_to_inflight_patient_generation_without_duplicate_post( + application: QApplication, + monkeypatch: pytest.MonkeyPatch, +) -> None: + first = _detail(110, 301, 510) + second = _detail(111, 302, 511) + jobs: list[dict[str, Any]] = [] + + def queue(function: Any, *args: Any, **options: Any) -> object: + jobs.append({"function": function, "args": args, **options}) + return object() + + monkeypatch.setattr(reception_module, "run_async", queue) + + class Repository: + def __init__(self) -> None: + self.generate_calls: list[tuple[int, str]] = [] + + def list_patient_ai_reports(self, patient_id: int) -> dict[str, Any]: + return {"patient_id": patient_id, "reports": []} + + def generate_patient_ai_report( + self, + patient_id: int, + *, + model: str, + ) -> dict[str, Any]: + self.generate_calls.append((patient_id, model)) + generated = _snapshot(model, 1, "2026-08-14 12:00:00") + generated["patient_id"] = patient_id + return { + "patient_id": patient_id, + "generated_report": generated, + "report": generated, + } + + repository = Repository() + page = ReceptionPage( + repository, + PermissionSet( + [ + "tcm.diagnosis/patientAiReports", + "tcm.diagnosis/generatePatientAiReport", + ] + ), + ) + page._select_record(first["appointment"]) + jobs[0]["on_success"]({"detail": first, "warnings": []}) + jobs[1]["on_success"]({"patient_id": 301, "reports": []}) + first_qwen_job = jobs[2] + qwen_result = first_qwen_job["function"]() + + page._select_record(second["appointment"]) + page._select_record(first["appointment"]) + jobs[4]["on_success"]({"detail": first, "warnings": []}) + + assert len(jobs) == 5 + first_qwen_job["on_success"](qwen_result) + first_qwen_job["on_finished"]() + + assert repository.generate_calls == [(301, "qwen")] + assert len(jobs) == 6 + assert page._ai_analysis_model_states["qwen"] == "success" + assert page.ai_summary_label.text() == "千问第 1 版诊断建议" + page.close() + application.processEvents() + + +def test_patient_history_get_is_singleflight_across_aba_switch( + application: QApplication, + monkeypatch: pytest.MonkeyPatch, +) -> None: + first = _detail(112, 301, 512) + second = _detail(113, 302, 513) + saved = _snapshot("qwen", 1, "2026-08-14 12:10:00") + jobs: list[dict[str, Any]] = [] + + def queue(function: Any, *args: Any, **options: Any) -> object: + jobs.append({"function": function, "args": args, **options}) + return object() + + monkeypatch.setattr(reception_module, "run_async", queue) + + class Repository: + def __init__(self) -> None: + self.list_calls: list[int] = [] + + def list_patient_ai_reports(self, patient_id: int) -> dict[str, Any]: + self.list_calls.append(patient_id) + return {"patient_id": patient_id, "reports": [saved]} + + def generate_patient_ai_report(self, patient_id: int, *, model: str) -> Any: + raise AssertionError(f"history exists: {patient_id}/{model}") + + repository = Repository() + page = ReceptionPage( + repository, + PermissionSet( + [ + "tcm.diagnosis/patientAiReports", + "tcm.diagnosis/generatePatientAiReport", + ] + ), + ) + page._select_record(first["appointment"]) + jobs[0]["on_success"]({"detail": first, "warnings": []}) + first_list_job = jobs[1] + list_result = first_list_job["function"]() + + page._select_record(second["appointment"]) + page._select_record(first["appointment"]) + jobs[3]["on_success"]({"detail": first, "warnings": []}) + + assert len(jobs) == 4 + assert repository.list_calls == [301] + + first_list_job["on_success"](list_result) + first_list_job["on_finished"]() + + assert page._ai_analysis_model_states["qwen"] == "success" + assert page.ai_summary_label.text() == "千问第 1 版诊断建议" + page.close() + application.processEvents() + + +def test_patient_ai_finished_only_tracks_qwen_workers_not_unrelated_openai( + application: QApplication, + monkeypatch: pytest.MonkeyPatch, +) -> None: + detail = _detail(114, 301, 514) + jobs: list[dict[str, Any]] = [] + + def queue(function: Any, *args: Any, **options: Any) -> object: + jobs.append({"function": function, "args": args, **options}) + return object() + + monkeypatch.setattr(reception_module, "run_async", queue) + + class Repository: + def list_patient_ai_reports(self, patient_id: int) -> dict[str, Any]: + return {"patient_id": patient_id, "reports": []} + + def generate_patient_ai_report(self, patient_id: int, *, model: str) -> Any: + raise AssertionError(f"worker must remain queued: {patient_id}/{model}") + + page = ReceptionPage( + Repository(), + PermissionSet( + [ + "tcm.diagnosis/patientAiReports", + "tcm.diagnosis/generatePatientAiReport", + ] + ), + ) + page._select_record(detail["appointment"]) + jobs[0]["on_success"]({"detail": detail, "warnings": []}) + current_list_job = jobs[1] + stale_qwen = (page._ai_analysis_generation - 2, 114, 301, "qwen") + stale_openai = (page._ai_analysis_generation - 1, 114, 301, "openai") + + page._patient_ai_generation_requests.add(stale_qwen) + page._patient_ai_generation_finished(*stale_qwen) + assert page._ai_analysis_model_states["qwen"] == "loading" + + page._patient_ai_generation_requests.add(stale_openai) + current_list_job["on_finished"]() + page._patient_ai_generation_finished(*stale_openai) + + assert not page._patient_ai_list_requests + assert not page._patient_ai_generation_requests + assert page._ai_analysis_model_states["qwen"] == "error" + assert not page._ai_analysis_loading + assert "未返回有效结果" in page.ai_analysis_state_label.text() + page.close() + application.processEvents() + + +def test_aba_cancelled_generation_is_replaced_instead_of_becoming_false_error( + application: QApplication, + monkeypatch: pytest.MonkeyPatch, +) -> None: + first = _detail(115, 301, 515) + second = _detail(116, 302, 516) + jobs: list[dict[str, Any]] = [] + + def queue(function: Any, *args: Any, **options: Any) -> object: + jobs.append({"function": function, "args": args, **options}) + return object() + + monkeypatch.setattr(reception_module, "run_async", queue) + monkeypatch.setattr( + reception_module, + "_AI_AUTOMATIC_GENERATION_SETTLE_SECONDS", + 5.0, + ) + + class Repository: + def __init__(self) -> None: + self.generate_calls: list[tuple[int, str]] = [] + + def list_patient_ai_reports(self, patient_id: int) -> dict[str, Any]: + return {"patient_id": patient_id, "reports": []} + + def generate_patient_ai_report( + self, + patient_id: int, + *, + model: str, + ) -> dict[str, Any]: + self.generate_calls.append((patient_id, model)) + generated = _snapshot(model, 1, "2026-08-14 12:20:00") + generated["patient_id"] = patient_id + return { + "patient_id": patient_id, + "generated_report": generated, + "report": generated, + } + + repository = Repository() + page = ReceptionPage( + repository, + PermissionSet( + [ + "tcm.diagnosis/patientAiReports", + "tcm.diagnosis/generatePatientAiReport", + ] + ), + ) + page._select_record(first["appointment"]) + jobs[0]["on_success"]({"detail": first, "warnings": []}) + jobs[1]["on_success"]({"patient_id": 301, "reports": []}) + old_qwen_job = jobs[2] + + with ThreadPoolExecutor(max_workers=1) as executor: + cancelled_future = executor.submit(old_qwen_job["function"]) + page._select_record(second["appointment"]) + cancelled = cancelled_future.result(timeout=1.0) + monkeypatch.setattr( + reception_module, + "_AI_AUTOMATIC_GENERATION_SETTLE_SECONDS", + 0.0, + ) + assert cancelled is reception_module._ASYNC_REQUEST_CANCELLED + assert repository.generate_calls == [] + + page._select_record(first["appointment"]) + jobs[4]["on_success"]({"detail": first, "warnings": []}) + assert len(jobs) == 6 + current_list_job = jobs[5] + current_list_job["on_success"]({"patient_id": 301, "reports": []}) + assert len(jobs) == 7 + replacement_qwen_job = jobs[6] + + current_list_job["on_finished"]() + assert len(jobs) == 7 + qwen_result = replacement_qwen_job["function"]() + replacement_qwen_job["on_success"](qwen_result) + replacement_qwen_job["on_finished"]() + jobs_after_replacement = len(jobs) + + old_qwen_job["on_success"](cancelled) + old_qwen_job["on_finished"]() + + assert repository.generate_calls == [(301, "qwen")] + assert len(jobs) == jobs_after_replacement + assert page._ai_analysis_model_states["qwen"] == "success" + assert page.ai_summary_label.text() == "千问第 1 版诊断建议" + page.close() + application.processEvents() + + +@pytest.mark.parametrize("late_completion", ["cancelled", "error"]) +def test_late_history_completion_cannot_clear_newer_generated_snapshot( + application: QApplication, + monkeypatch: pytest.MonkeyPatch, + late_completion: str, +) -> None: + detail = _detail(117, 301, 517) + jobs: list[dict[str, Any]] = [] + + def queue(function: Any, *args: Any, **options: Any) -> object: + jobs.append({"function": function, "args": args, **options}) + return object() + + monkeypatch.setattr(reception_module, "run_async", queue) + + class Repository: + def __init__(self) -> None: + self.generate_calls: list[tuple[int, str]] = [] + + def list_patient_ai_reports(self, patient_id: int) -> dict[str, Any]: + raise AssertionError(f"history worker remains pending: {patient_id}") + + def generate_patient_ai_report( + self, + patient_id: int, + *, + model: str, + ) -> dict[str, Any]: + self.generate_calls.append((patient_id, model)) + generated = _snapshot(model, 9, "2026-08-14 12:30:00") + generated["id"] = 901 if model == "qwen" else 902 + generated["patient_id"] = patient_id + return { + "patient_id": patient_id, + "generated_report": generated, + "report": generated, + } + + repository = Repository() + page = ReceptionPage( + repository, + PermissionSet( + [ + "tcm.diagnosis/patientAiReports", + "tcm.diagnosis/generatePatientAiReport", + ] + ), + ) + page._select_record(detail["appointment"]) + jobs[0]["on_success"]({"detail": detail, "warnings": []}) + history_job = jobs[1] + current_context = page._current_patient_ai_context(301) + assert current_context is not None + generation, appointment_id, _patient_id = current_context + page._request_patient_ai_generation("qwen", generation, appointment_id, 301) + qwen_job = jobs[2] + qwen_result = qwen_job["function"]() + qwen_job["on_success"](qwen_result) + qwen_job["on_finished"]() + jobs_after_generation = len(jobs) + + if late_completion == "cancelled": + history_job["on_success"](reception_module._ASYNC_REQUEST_CANCELLED) + else: + history_job["on_error"](RuntimeError("late history failure")) + history_job["on_finished"]() + + assert repository.generate_calls == [(301, "qwen")] + assert len(jobs) == jobs_after_generation + assert page._ai_analysis_model_states["qwen"] == "success" + assert page._ai_analysis_payloads["qwen"]["id"] == 901 + assert page.ai_summary_label.text() == "千问第 9 版诊断建议" + page.close() + application.processEvents() + + +def test_cancelled_queued_generation_does_not_invalidate_valid_history_get( + application: QApplication, + monkeypatch: pytest.MonkeyPatch, +) -> None: + first = _detail(118, 301, 518) + second = _detail(119, 302, 519) + saved = _snapshot("qwen", 10, "2026-08-14 12:40:00") + jobs: list[dict[str, Any]] = [] + + def queue(function: Any, *args: Any, **options: Any) -> object: + jobs.append({"function": function, "args": args, **options}) + return object() + + monkeypatch.setattr(reception_module, "run_async", queue) + + class Repository: + def __init__(self) -> None: + self.list_calls: list[int] = [] + self.generate_calls: list[tuple[int, str]] = [] + + def list_patient_ai_reports(self, patient_id: int) -> dict[str, Any]: + self.list_calls.append(patient_id) + return {"patient_id": patient_id, "reports": [saved]} + + def generate_patient_ai_report(self, patient_id: int, *, model: str) -> Any: + self.generate_calls.append((patient_id, model)) + raise AssertionError("cancelled queued POST must not enter repository") + + repository = Repository() + page = ReceptionPage( + repository, + PermissionSet( + [ + "tcm.diagnosis/patientAiReports", + "tcm.diagnosis/generatePatientAiReport", + ] + ), + ) + page._select_record(first["appointment"]) + jobs[0]["on_success"]({"detail": first, "warnings": []}) + history_job = jobs[1] + history_result = history_job["function"]() + current_context = page._current_patient_ai_context(301) + assert current_context is not None + generation, appointment_id, _patient_id = current_context + page._request_patient_ai_generation("qwen", generation, appointment_id, 301) + queued_qwen_job = jobs[2] + + page._select_record(second["appointment"]) + cancelled = queued_qwen_job["function"]() + page._select_record(first["appointment"]) + jobs[4]["on_success"]({"detail": first, "warnings": []}) + queued_qwen_job["on_success"](cancelled) + queued_qwen_job["on_finished"]() + history_job["on_success"](history_result) + history_job["on_finished"]() + + assert repository.list_calls == [301] + assert repository.generate_calls == [] + assert len(jobs) == 5 + assert page._ai_analysis_model_states["qwen"] == "success" + assert page.ai_summary_label.text() == "千问第 10 版诊断建议" + page.close() + application.processEvents() + + +def test_saturated_automatic_ai_slots_end_in_retryable_state_without_post( + application: QApplication, + monkeypatch: pytest.MonkeyPatch, +) -> None: + detail = _detail(120, 301, 520) + jobs: list[dict[str, Any]] = [] + + def queue(function: Any, *args: Any, **options: Any) -> object: + jobs.append({"function": function, "args": args, **options}) + return object() + + class BusyAutomaticSlots: + @staticmethod + def acquire(*, blocking: bool) -> bool: + assert not blocking + return False + + @staticmethod + def release() -> None: + raise AssertionError("an unacquired slot must not be released") + + monkeypatch.setattr(reception_module, "run_async", queue) + monkeypatch.setattr( + reception_module, + "_AI_AUTOMATIC_GENERATION_SETTLE_SECONDS", + 0.0, + ) + monkeypatch.setattr( + reception_module, + "_AI_AUTOMATIC_REQUEST_SLOTS", + BusyAutomaticSlots(), + ) + + class Repository: + def __init__(self) -> None: + self.generate_calls: list[tuple[int, str]] = [] + + def list_patient_ai_reports(self, patient_id: int) -> dict[str, Any]: + return {"patient_id": patient_id, "reports": []} + + def generate_patient_ai_report(self, patient_id: int, *, model: str) -> Any: + self.generate_calls.append((patient_id, model)) + raise AssertionError("busy automatic work must not submit a POST") + + repository = Repository() + page = ReceptionPage( + repository, + PermissionSet( + [ + "tcm.diagnosis/patientAiReports", + "tcm.diagnosis/generatePatientAiReport", + ] + ), + ) + page._select_record(detail["appointment"]) + jobs[0]["on_success"]({"detail": detail, "warnings": []}) + jobs[1]["on_success"]({"patient_id": 301, "reports": []}) + automatic_qwen_job = jobs[2] + deferred = automatic_qwen_job["function"]() + automatic_qwen_job["on_success"](deferred) + automatic_qwen_job["on_finished"]() + + assert deferred is reception_module._ASYNC_REQUEST_DEFERRED + assert repository.generate_calls == [] + assert page._ai_analysis_model_states["qwen"] == "error" + assert not page._ai_analysis_loading + assert not page._ai_analysis_regenerating + assert page.ai_analysis_regenerate_button.isEnabled() + assert "后台分析任务较多" in page.ai_analysis_state_label.text() + page.close() + application.processEvents() + + +def test_saturated_history_slots_end_in_retryable_state_without_get( + application: QApplication, + monkeypatch: pytest.MonkeyPatch, +) -> None: + detail = _detail(121, 301, 521) + jobs: list[dict[str, Any]] = [] + + def queue(function: Any, *args: Any, **options: Any) -> object: + jobs.append({"function": function, "args": args, **options}) + return object() + + class BusyAutomaticSlots: + @staticmethod + def acquire(*, blocking: bool) -> bool: + assert not blocking + return False + + @staticmethod + def release() -> None: + raise AssertionError("an unacquired slot must not be released") + + monkeypatch.setattr(reception_module, "run_async", queue) + monkeypatch.setattr( + reception_module, + "_AI_AUTOMATIC_GENERATION_SETTLE_SECONDS", + 0.0, + ) + monkeypatch.setattr( + reception_module, + "_AI_AUTOMATIC_REQUEST_SLOTS", + BusyAutomaticSlots(), + ) + + class Repository: + def __init__(self) -> None: + self.list_calls: list[int] = [] + + def list_patient_ai_reports(self, patient_id: int) -> dict[str, Any]: + self.list_calls.append(patient_id) + raise AssertionError("busy automatic read must not enter repository") + + def generate_patient_ai_report(self, patient_id: int, *, model: str) -> Any: + raise AssertionError(f"history did not complete: {patient_id}/{model}") + + repository = Repository() + page = ReceptionPage( + repository, + PermissionSet( + [ + "tcm.diagnosis/patientAiReports", + "tcm.diagnosis/generatePatientAiReport", + ] + ), + ) + page._select_record(detail["appointment"]) + jobs[0]["on_success"]({"detail": detail, "warnings": []}) + history_job = jobs[1] + deferred = history_job["function"]() + history_job["on_success"](deferred) + history_job["on_finished"]() + + assert deferred is reception_module._ASYNC_REQUEST_DEFERRED + assert repository.list_calls == [] + assert page._ai_analysis_model_states["qwen"] == "error" + assert not page._ai_analysis_loading + assert page.ai_analysis_retry_button.isEnabled() + assert "查询任务较多" in page.ai_analysis_state_label.text() + page.close() + application.processEvents() + + def test_get_history_requires_exact_top_level_and_row_patient_ids() -> None: row = _snapshot("qwen", 1, "2026-08-14 11:00:00") valid = {"patient_id": 301, "reports": [row]} diff --git a/app/tests/test_patients_ui.py b/app/tests/test_patients_ui.py index 21ef87ce3..2ab66a416 100644 --- a/app/tests/test_patients_ui.py +++ b/app/tests/test_patients_ui.py @@ -7,7 +7,7 @@ from typing import Any os.environ.setdefault("QT_QPA_PLATFORM", "offscreen") import pytest -from PySide6.QtCore import QDate +from PySide6.QtCore import QDate, QPoint from PySide6.QtWidgets import QApplication, QDialogButtonBox, QInputDialog, QLabel from doctor_workstation.core import PermissionSet @@ -636,15 +636,35 @@ def test_patient_list_reference_geometry_and_row_actions( button.minimumHeight() == 44 and button.maximumHeight() == 44 for button in workspace.summary_buttons.values() ) - assert all( - widget.minimumWidth() == 0 and widget.maximumWidth() > 1000 + assert workspace.keyword_edit.objectName() == "PatientKeywordInput" + assert workspace.status_host.objectName() == "PatientStatusFilterHost" + assert workspace.quick_host.objectName() == "PatientQuickDateHost" + assert workspace.date_host.objectName() == "PatientDateRangeHost" + assert ( + workspace.keyword_edit.maximumWidth(), + workspace.status_host.maximumWidth(), + workspace.quick_host.maximumWidth(), + workspace.date_host.maximumWidth(), + ) == (620, 440, 620, 420) + assert workspace.search_button.objectName() == "PatientSearchButton" + assert workspace.reset_button.objectName() == "PatientResetButton" + assert workspace.custom_date_button.objectName() == "PatientCustomDateButton" + for width in (1170, 1290, 1514): + page.resize(width, 680) + application.processEvents() for widget in ( workspace.keyword_edit, workspace.status_host, + workspace.search_button, + workspace.reset_button, workspace.quick_host, workspace.date_host, - ) - ) + workspace.custom_date_button, + ): + top_left = widget.mapTo(workspace.filter_card, QPoint(0, 0)) + assert top_left.x() >= 0 + assert top_left.x() + widget.width() <= workspace.filter_card.width() + assert all(button.maximumWidth() == 420 for button in workspace.summary_buttons.values()) assert page.tabs.minimumHeight() == 0 assert workspace.content_stack.minimumHeight() == 0 assert workspace.table.minimumHeight() == 0 diff --git a/app/tests/test_reception_parity_ui.py b/app/tests/test_reception_parity_ui.py index 8f2dff64e..7d942d23c 100644 --- a/app/tests/test_reception_parity_ui.py +++ b/app/tests/test_reception_parity_ui.py @@ -10,14 +10,32 @@ os.environ.setdefault("QT_QPA_PLATFORM", "offscreen") import httpx import pytest -from PySide6.QtCore import QDate, QPoint, Qt +from PySide6.QtCore import ( + QDate, + QEvent, + QEventLoop, + QObject, + QPoint, + Qt, + QThreadPool, + QTimer, +) from PySide6.QtGui import QPalette -from PySide6.QtWidgets import QApplication, QLabel, QPushButton, QScrollArea, QWidget +from PySide6.QtWidgets import ( + QApplication, + QLabel, + QPushButton, + QScrollArea, + QVBoxLayout, + QWidget, +) from doctor_workstation.core import PermissionSet +from doctor_workstation.services import api_client as api_client_module from doctor_workstation.services.api_client import ApiClient from doctor_workstation.services.mock_repository import DemoDoctorRepository from doctor_workstation.services.repository import RemoteDoctorRepository +from doctor_workstation.ui import widgets as widgets_module from doctor_workstation.ui.pages import reception as reception_module from doctor_workstation.ui.pages.reception import ( NOTE_LIMIT, @@ -41,8 +59,11 @@ def immediate_async(monkeypatch: pytest.MonkeyPatch) -> None: on_success: Any = None, on_error: Any = None, on_finished: Any = None, + pool: Any = None, + priority: int = 0, **kwargs: Any, ) -> object: + del pool, priority try: result = function(*args, **kwargs) except Exception as error: @@ -79,6 +100,135 @@ def queued_async(monkeypatch: pytest.MonkeyPatch) -> list[dict[str, Any]]: return jobs +def test_api_client_reuses_a_bounded_transport_across_qt_runnables( + application: QApplication, + monkeypatch: pytest.MonkeyPatch, +) -> None: + created: list[Any] = [] + + class PooledClient: + def __init__(self, **_options: Any) -> None: + self.closed = False + created.append(self) + + def request(self, _method: str, url: str, **_options: Any) -> httpx.Response: + return httpx.Response(200, json={"code": 1, "data": url}) + + def close(self) -> None: + self.closed = True + + monkeypatch.setattr(api_client_module.httpx, "Client", PooledClient) + client = ApiClient("https://example.test", max_parallel_requests=2) + pool = QThreadPool() + pool.setMaxThreadCount(1) + pool.setExpiryTimeout(-1) + remaining = 40 + results: list[str] = [] + loop = QEventLoop() + + def finished() -> None: + nonlocal remaining + remaining -= 1 + if remaining == 0: + loop.quit() + + for index in range(remaining): + widgets_module.run_async( + lambda index=index: client.get(f"patient/{index}"), + on_success=results.append, + on_finished=finished, + pool=pool, + ) + QTimer.singleShot(5_000, loop.quit) + loop.exec() + assert pool.waitForDone(2_000) + client.close() + + assert remaining == 0 + assert len(results) == 40 + assert len(created) == 1 + assert created[0].closed + application.processEvents() + + +def test_clearing_ai_layout_does_not_promote_children_to_windows( + application: QApplication, +) -> None: + host = QWidget() + layout = QVBoxLayout(host) + dynamic_label = QLabel("正在加载患者 AI 分析", host) + layout.addWidget(dynamic_label) + host.show() + application.processEvents() + destroyed: list[bool] = [] + dynamic_label.destroyed.connect(lambda: destroyed.append(True)) + + reception_module._clear_ai_layout(layout) + + assert layout.count() == 0 + assert destroyed == [True] + assert dynamic_label not in application.topLevelWidgets() + + host.close() + host.deleteLater() + + +def test_queue_row_never_shows_loading_fields_as_parentless_windows( + application: QApplication, +) -> None: + tracked_names = { + "StatusBadge", + "ReceptionQueueTime", + "ReceptionQueueMetric", + } + + class OrphanShowRecorder(QObject): + def __init__(self) -> None: + super().__init__() + self.object_names: list[str] = [] + + def eventFilter(self, watched: QObject, event: QEvent) -> bool: # noqa: N802 + if ( + event.type() == QEvent.Type.Show + and isinstance(watched, QWidget) + and watched.objectName() in tracked_names + and watched.parentWidget() is None + and watched.isWindow() + ): + self.object_names.append(watched.objectName()) + return False + + recorder = OrphanShowRecorder() + application.installEventFilter(recorder) + try: + active_row = QueueRow( + { + "patient_name": "问诊患者", + "status": 2, + "status_desc": "问诊中", + "fasting_blood_sugar": 8.6, + } + ) + waiting_row = QueueRow( + { + "patient_name": "待接诊患者", + "status": 1, + "appointment_time": "14:30", + } + ) + finally: + application.removeEventFilter(recorder) + + assert recorder.object_names == [] + for row in (active_row, waiting_row): + for object_name in tracked_names: + widget = row.findChild(QWidget, object_name) + assert widget is not None + assert widget.parentWidget() is row + assert not widget.isWindow() + row.deleteLater() + + @pytest.mark.parametrize( ("path", "expected"), [ @@ -714,6 +864,101 @@ def test_fast_patient_switch_rejects_late_detail( application.processEvents() +def test_rapid_aba_switch_prioritizes_current_detail_and_skips_stale_bundles( + application: QApplication, + queued_async: list[dict[str, Any]], +) -> None: + first = _detail(73, name="甲患者") + second = _detail(74, name="乙患者") + + class Repository: + def __init__(self) -> None: + self.calls: list[int] = [] + + def get_reception(self, appointment_id: int) -> dict[str, Any]: + self.calls.append(appointment_id) + return first if appointment_id == 73 else second + + repository = Repository() + page = ReceptionPage(repository, PermissionSet([])) + + page._select_record(first["appointment"]) + page._select_record(second["appointment"]) + page._select_record(first["appointment"]) + + assert [job["priority"] for job in queued_async] == [1, 2, 3] + for stale_job in queued_async[:2]: + assert stale_job["function"]() == {"cancelled": True} + stale_job["on_finished"]() + assert repository.calls == [] + + current_job = queued_async[2] + current_job["on_success"](current_job["function"]()) + current_job["on_finished"]() + + assert repository.calls == [73] + assert page._selected_appointment_id == 73 + assert page.patient_name_label.text() == "甲患者" + assert not page._detail_loading + + page.close() + application.processEvents() + + +def test_switching_patient_resets_stale_daily_panel_loading( + application: QApplication, +) -> None: + page = ReceptionPage(object(), PermissionSet([])) + page.daily_panel.set_loading(True) + assert page.daily_panel._loading + assert not page.daily_panel.refresh_button.isEnabled() + + page._reset_detail_content( + seed={"id": 75, "patient_name": "新患者", "diagnosis_id": 275} + ) + + assert not page.daily_panel._loading + assert page.daily_panel.refresh_button.isEnabled() + assert all(button.isEnabled() for button in page.daily_panel.range_buttons.values()) + assert page.daily_panel.start_date.isEnabled() + assert page.daily_panel.end_date.isEnabled() + + page.close() + application.processEvents() + + +def test_stale_daily_worker_skips_repository_after_patient_switch( + application: QApplication, + queued_async: list[dict[str, Any]], +) -> None: + first = _detail(76, name="日常甲患者") + second = _detail(77, name="日常乙患者") + + class Repository: + def __init__(self) -> None: + self.tracking_calls: list[int] = [] + + def get_tracking_window(self, diagnosis_id: int, **_options: Any) -> dict[str, Any]: + self.tracking_calls.append(diagnosis_id) + return {} + + repository = Repository() + page = ReceptionPage(repository, PermissionSet([])) + page._select_record(first["appointment"]) + queued_async[0]["on_success"]({"detail": first, "warnings": []}) + page._request_daily_range("2026-08-13", "2026-08-19") + stale_daily_job = queued_async[1] + page._select_record(second["appointment"]) + + assert stale_daily_job["function"]() == {"cancelled": True} + assert repository.tracking_calls == [] + assert not page.daily_panel._loading + assert page.daily_panel.refresh_button.isEnabled() + + page.close() + application.processEvents() + + def test_medication_case_prioritizes_clinical_information_and_keeps_plain_summary( application: QApplication, ) -> None: @@ -1169,6 +1414,28 @@ def test_phone_permission_and_ungated_notify_video_actions( application.processEvents() +def test_im_consult_is_visible_immediately_after_history( + application: QApplication, +) -> None: + page = ReceptionPage(DemoDoctorRepository(), PermissionSet([])) + page.resize(1280, 760) + page.detail_stack.setCurrentIndex(1) + page.show() + application.processEvents() + + assert page.video_button.text() == "IM 问诊" + assert page.video_button.objectName() == "ReceptionImButton" + assert not page.video_button.isHidden() + assert page.history_button.geometry().right() < page.video_button.geometry().left() + assert page.video_button.geometry().right() < page.more_button.geometry().left() + assert "IM 问诊" not in [ + action.text() for action in page.more_button.menu().actions() + ] + + page.close() + application.processEvents() + + def test_reception_ai_report_button_follows_permission( application: QApplication, immediate_async: None, @@ -1423,6 +1690,65 @@ def test_reception_dual_ai_queues_openai_only_after_qwen_is_visible( application.processEvents() +def test_saturated_fallback_ai_slots_do_not_leave_current_analysis_loading( + application: QApplication, + queued_async: list[dict[str, Any]], + monkeypatch: pytest.MonkeyPatch, +) -> None: + detail = _detail(86, name="后台分析繁忙患者") + calls: list[tuple[int, str]] = [] + + class BusyAutomaticSlots: + @staticmethod + def acquire(*, blocking: bool) -> bool: + assert not blocking + return False + + @staticmethod + def release() -> None: + raise AssertionError("an unacquired slot must not be released") + + monkeypatch.setattr( + reception_module, + "_AI_AUTOMATIC_GENERATION_SETTLE_SECONDS", + 0.0, + ) + monkeypatch.setattr( + reception_module, + "_AI_AUTOMATIC_REQUEST_SLOTS", + BusyAutomaticSlots(), + ) + + class Repository: + def get_diagnosis_ai_analysis( + self, + diagnosis_id: int, + model: str, + ) -> dict[str, Any]: + calls.append((diagnosis_id, model)) + raise AssertionError("busy automatic work must not enter repository") + + page = ReceptionPage( + Repository(), + PermissionSet(["tcm.diagnosis/aiAnalysis"]), + ) + page._select_record(detail["appointment"]) + queued_async[0]["on_success"]({"detail": detail, "warnings": []}) + automatic_qwen_job = queued_async[1] + deferred = automatic_qwen_job["function"](*automatic_qwen_job["args"]) + automatic_qwen_job["on_success"](deferred) + automatic_qwen_job["on_finished"]() + + assert deferred is reception_module._ASYNC_REQUEST_DEFERRED + assert calls == [] + assert page._ai_analysis_model_states["qwen"] == "error" + assert not page._ai_analysis_loading + assert page.ai_analysis_retry_button.isEnabled() + assert "后台分析任务较多" in page.ai_analysis_state_label.text() + page.close() + application.processEvents() + + def test_reception_openai_failure_keeps_qwen_success_visible( application: QApplication, queued_async: list[dict[str, Any]], @@ -1886,6 +2212,89 @@ def test_detail_failure_stops_ai_loading_and_keeps_retry_available( jobs[0]["on_finished"]() assert not page._detail_loading + assert "正在" not in page.patient_meta_label.text() + assert "正在" not in page.diagnosis_text.text() + assert "正在" not in page.health_summary_label.text() + assert "正在" not in page.followup_text.text() + assert not page.daily_panel._loading + assert page.daily_panel.refresh_button.isEnabled() + + page.close() + application.processEvents() + + +def test_finished_only_detail_request_cannot_leave_loading_placeholders( + application: QApplication, + queued_async: list[dict[str, Any]], +) -> None: + page = ReceptionPage(object(), PermissionSet(["*"])) + record = { + "id": 86, + "patient_id": 186, + "diagnosis_id": 286, + "patient_name": "无结果患者", + } + + page._select_record(record) + queued_async[0]["on_finished"]() + + assert not page._detail_loading + assert page._selected_detail is None + assert page.detail_banner.property("kind") == "danger" + assert "正在" not in page.patient_meta_label.text() + assert "正在" not in page.diagnosis_text.text() + assert "正在" not in page.health_summary_label.text() + assert "正在" not in page.followup_text.text() + assert not page.daily_panel._loading + assert page.daily_panel.refresh_button.isEnabled() + assert page._ai_analysis_state == "error" + + page.close() + application.processEvents() + + +def test_finished_only_patient_ai_query_becomes_retryable( + application: QApplication, + queued_async: list[dict[str, Any]], +) -> None: + detail = _detail(87, name="AI 无结果患者") + + class Repository: + def list_patient_ai_reports(self, patient_id: int) -> dict[str, Any]: + raise AssertionError(f"queued worker must not run inline: {patient_id}") + + def generate_patient_ai_report( + self, + patient_id: int, + *, + model: str, + ) -> dict[str, Any]: + raise AssertionError(f"queued worker must not run inline: {patient_id}/{model}") + + page = ReceptionPage( + Repository(), + PermissionSet( + [ + "tcm.diagnosis/patientAiReports", + "tcm.diagnosis/generatePatientAiReport", + ] + ), + ) + page._select_record(detail["appointment"]) + queued_async[0]["on_success"]({"detail": detail, "warnings": []}) + assert len(queued_async) == 2 + assert page._ai_analysis_state == "loading" + + queued_async[1]["on_finished"]() + + assert page._ai_analysis_state == "error" + assert not page._ai_analysis_loading + assert "请重试" in page.ai_analysis_state_label.text() + assert not page.ai_analysis_retry_button.isHidden() + + page.ai_analysis_retry_button.click() + assert len(queued_async) == 3 + assert page._ai_analysis_state == "loading" page.close() application.processEvents() @@ -1960,6 +2369,7 @@ def test_reception_ai_analysis_discards_late_qwen_and_openai_results( assert len(queued_async) == 2 page._select_record(second["appointment"]) + assert queued_async[1]["function"]() is reception_module._ASYNC_REQUEST_CANCELLED queued_async[2]["on_success"]({"detail": second, "warnings": []}) assert len(queued_async) == 4 second_qwen = _analysis_payload("第二位千问风险") @@ -1968,6 +2378,7 @@ def test_reception_ai_analysis_discards_late_qwen_and_openai_results( assert len(queued_async) == 5 page._select_record(third["appointment"]) + assert queued_async[4]["function"]() is reception_module._ASYNC_REQUEST_CANCELLED queued_async[5]["on_success"]({"detail": third, "warnings": []}) assert len(queued_async) == 7 third_qwen = _analysis_payload("第三位千问风险") diff --git a/app/tests/test_repository_parity.py b/app/tests/test_repository_parity.py index a3620eba0..8b3285c37 100644 --- a/app/tests/test_repository_parity.py +++ b/app/tests/test_repository_parity.py @@ -3,6 +3,7 @@ from __future__ import annotations from datetime import date +from pathlib import Path from typing import Any import pytest @@ -480,6 +481,81 @@ def test_remote_start_call_requires_and_normalizes_current_record_id() -> None: ] +def test_remote_call_record_identity_is_reused_for_room_recording_and_end() -> None: + """Room binding and COS finalization must never select a different latest call.""" + + client = RecordingClient() + repository = RemoteDoctorRepository(client) # type: ignore[arg-type] + + repository.bind_call_room(501, " room-901 ", call_record_id=901) + repository.end_call(501, call_record_id=901) + + assert client.post_calls == [ + ( + "tcm.diagnosis/bindCallRoom", + {"diagnosis_id": 501, "room_id": "room-901", "call_record_id": 901}, + ), + ( + "tcm.diagnosis/endCall", + {"diagnosis_id": 501, "call_record_id": 901}, + ), + ] + + +def test_remote_local_audio_upload_keeps_exact_call_identity_and_mime( + tmp_path: Path, +) -> None: + class MultipartClient(RecordingClient): + def __init__(self) -> None: + super().__init__() + self.multipart_calls: list[ + tuple[str, dict[str, tuple[str, bytes, str]], dict[str, Any]] + ] = [] + + def post_multipart( + self, + endpoint: str, + *, + files: dict[str, tuple[str, bytes, str]], + data: dict[str, Any], + ) -> dict[str, Any]: + self.multipart_calls.append((endpoint, files, data)) + completed = int(data["chunk_index"]) == int(data["chunk_total"]) - 1 + return { + "call_record_id": 901, + "completed": completed, + "file_url": "https://cos.example.test/calls/local-audio.webm" + if completed + else "", + "media_kind": "local_audio", + } + + recording = tmp_path / "local-audio.webm" + recording.write_bytes(b"a" * (4 * 1024 * 1024 + 3)) + client = MultipartClient() + repository = RemoteDoctorRepository(client) # type: ignore[arg-type] + + result = repository.upload_call_recording( + recording, + 501, + call_record_id=901, + mime_type="audio/webm;codecs=opus", + ) + + assert result["completed"] is True + assert result["call_record_id"] == 901 + assert result["media_kind"] == "local_audio" + assert len(client.multipart_calls) == 2 + assert all(call[0] == "tcm.diagnosis/uploadCallRecording" for call in client.multipart_calls) + for _endpoint, files, data in client.multipart_calls: + assert data["diagnosis_id"] == 501 + assert data["call_record_id"] == 901 + assert data["mime_type"] == "audio/webm;codecs=opus" + assert str(data["upload_id"]).startswith("local_audio_") + assert files["file"][0] == "local-audio.webm" + assert files["file"][2] == "audio/webm;codecs=opus" + + @pytest.mark.parametrize( "response", [None, {}, {"ok": True}, {"call_record_id": 0}, {"callRecordId": -1}, {"id": True}], @@ -645,6 +721,34 @@ def test_remote_diagnosis_ai_assistant_uses_first_party_endpoint_only() -> None: assert client.timeouts == [105.0] +def test_ai_post_type_error_after_dispatch_is_never_retried() -> None: + class FailingAfterDispatchClient: + token = "token" + + def __init__(self) -> None: + self.calls = 0 + + def post( + self, + endpoint: str, + payload: dict[str, Any] | None = None, + *, + timeout: float | None = None, + ) -> Any: + assert endpoint == "tcm.diagnosis/generatePatientAiReport" + assert payload == {"patient_id": 301, "model": "qwen"} + assert timeout == 105.0 + self.calls += 1 + raise TypeError("transport failed after dispatch") + + client = FailingAfterDispatchClient() + + with pytest.raises(TypeError, match="after dispatch"): + RemoteDoctorRepository(client).generate_patient_ai_report(301, model="qwen") + + assert client.calls == 1 + + def test_remote_diagnosis_ai_stream_normalises_chunks_in_order() -> None: class StreamingClient(RecordingClient): def post_event_stream(self, endpoint: str, payload: dict[str, Any], **kwargs: Any): diff --git a/app/tests/test_shell_contract.py b/app/tests/test_shell_contract.py index 7b1b8e6f4..d35d2792a 100644 --- a/app/tests/test_shell_contract.py +++ b/app/tests/test_shell_contract.py @@ -6,11 +6,17 @@ from typing import Any os.environ.setdefault("QT_QPA_PLATFORM", "offscreen") import pytest -from PySide6.QtCore import Qt -from PySide6.QtWidgets import QApplication, QWidget +from PySide6.QtCore import QSize, Qt +from PySide6.QtWidgets import QApplication, QDialog, QFrame, QToolButton, QWidget from doctor_workstation.ui import shell as shell_module from doctor_workstation.ui.shell import NavigationItem, ShellWindow +from doctor_workstation.ui.theme import apply_theme + + +def _logical_pixel(image: Any, x: int, y: int): + device_scale = image.devicePixelRatio() + return image.pixelColor(round(x * device_scale), round(y * device_scale)) class _ShellPageDouble(QWidget): @@ -39,7 +45,26 @@ class _ShellPageDouble(QWidget): @pytest.fixture(scope="module") def application() -> QApplication: - return QApplication.instance() or QApplication([]) + app = QApplication.instance() or QApplication([]) + apply_theme(app) + return app + + +@pytest.mark.parametrize( + ("available_size", "expected_size"), + [ + (QSize(1920, 1080), QSize(1710, 920)), + (QSize(1486, 1000), QSize(1486, 920)), + (QSize(1600, 800), QSize(1600, 800)), + (QSize(800, 600), QSize(1024, 640)), + (None, QSize(1710, 920)), + ], +) +def test_shell_initial_size_is_bounded_by_logical_available_geometry( + available_size: QSize | None, + expected_size: QSize, +) -> None: + assert shell_module._bounded_initial_window_size(available_size) == expected_size def test_patients_navigation_keeps_the_product_menu_title() -> None: @@ -145,14 +170,60 @@ def test_shell_matches_reference_geometry_at_both_acceptance_sizes( assert shell_window.stack.geometry().bottom() < shell_window.workspace.height() image = shell_window.grab().toImage() - assert image.pixelColor(20, 300).name().lower() in { + assert _logical_pixel(image, 20, 300).name().lower() in { "#f2f5fd", "#f3f6fd", "#f2f6fe", "#f3f6fe", } - assert image.pixelColor(610, 20).name().lower() == "#ffffff" - assert image.pixelColor(220, 90).name().lower() == "#fcfdfe" + assert _logical_pixel(image, 610, 20).name().lower() == "#ffffff" + assert _logical_pixel(image, 220, 90).name().lower() == "#fcfdfe" + + +def test_topbar_search_actions_and_navigation_controls_stay_aligned( + application: QApplication, + shell_window: ShellWindow, +) -> None: + for width, height in ((1024, 640), (1366, 768)): + shell_window.resize(width, height) + application.processEvents() + + search_host = shell_window.topbar.findChild(QFrame, "ShellGlobalSearch") + shortcut_hint = search_host.findChild(QWidget, "ShellShortcutHint") + assert search_host.size().toTuple() == (265, 36) + assert shell_window.fold_button.size().toTuple() == (38, 38) + assert shortcut_hint.size() == shortcut_hint.sizeHint() + assert ( + abs(search_host.geometry().center().y() - shell_window.fold_button.geometry().center().y()) + <= 1 + ) + assert ( + abs( + shortcut_hint.mapTo(search_host, shortcut_hint.rect().center()).y() + - search_host.rect().center().y() + ) + <= 1 + ) + + shell_window.global_search.setText("患者") + application.processEvents() + action_buttons = shell_window.global_search.findChildren(QToolButton) + assert len(action_buttons) == 2 + for button in action_buttons: + assert button.size().toTuple() == (22, 18) + assert shell_window.global_search.rect().contains(button.geometry()) + assert ( + abs( + button.geometry().center().y() + - shell_window.global_search.rect().center().y() + ) + <= 1 + ) + + clear_button = max(action_buttons, key=lambda button: button.x()) + clear_right = clear_button.mapTo(search_host, clear_button.rect().topRight()).x() + assert clear_right < shortcut_hint.x() + shell_window.global_search.clear() def test_registered_pages_are_not_top_level_windows(shell_window: ShellWindow) -> None: @@ -170,7 +241,11 @@ def test_reference_shell_has_integrated_search_ai_card_and_window_controls( ) assert shell_window.assistant_card.isVisible() assert shell_window.assistant_button.text() == "开始对话" - assert "GPT-4o 医疗版" in shell_window.model_label.text() + assert shell_window.upload_settings_button.text().strip().startswith("设置") + assert ( + shell_window.upload_settings_button.accessibleName() == "本机录音上传设置" + ) + assert shell_window.model_label is shell_window.upload_settings_button assert shell_window.minimize_button.text() == "" assert shell_window.close_button.text() == "" @@ -180,6 +255,42 @@ def test_reference_shell_has_integrated_search_ai_card_and_window_controls( assert "在线" in shell_window.assistant_status.text() +def test_shell_settings_opens_global_local_audio_upload_manager( + application: QApplication, + shell_window: ShellWindow, + monkeypatch: pytest.MonkeyPatch, +) -> None: + captured: dict[str, Any] = {} + + def dialog_factory( + repository: Any, + diagnosis_id: int | None, + parent: QWidget, + ) -> QDialog: + dialog = QDialog(parent) + dialog.setObjectName("LocalAudioQueueDialog") + captured.update( + repository=repository, + diagnosis_id=diagnosis_id, + parent=parent, + dialog=dialog, + ) + return dialog + + monkeypatch.setattr(shell_module, "LocalAudioQueueDialog", dialog_factory) + shell_window.upload_settings_button.click() + application.processEvents() + + assert captured["repository"] is shell_window.repository + assert captured["diagnosis_id"] is None + assert captured["parent"] is shell_window + assert captured["dialog"].isVisible() + + captured["dialog"].reject() + application.processEvents() + assert shell_window._local_audio_settings_dialog is None + + def test_every_visible_page_navigates_and_visited_tabs_track_active_page( shell_window: ShellWindow, ) -> None: diff --git a/app/tests/test_video_contract.py b/app/tests/test_video_contract.py index a9ed2b647..a5cf70ed9 100644 --- a/app/tests/test_video_contract.py +++ b/app/tests/test_video_contract.py @@ -28,6 +28,233 @@ from doctor_workstation.video.security import ( # noqa: E402 ) +def test_companion_uses_legacy_safe_transcription_session_identity() -> None: + """Generated session IDs stay below 32 chars so upgraded databases cannot truncate.""" + + source = (PROJECT_ROOT / "video_companion" / "src" / "main.ts").read_text( + encoding="utf-8" + ) + function_source = source.split("function newTranscriptionSessionId", 1)[1].split( + "function requestTranscriptionStart", 1 + )[0] + + assert "replaceAll('-', '')" in function_source + assert ".slice(0, 28)" in function_source + assert "return `tr-${" in function_source + + +def test_companion_archives_cloud_video_local_mixed_audio_and_transcript() -> None: + """A connected call starts three independent artifacts before hangup.""" + + source = (PROJECT_ROOT / "video_companion" / "src" / "main.ts").read_text( + encoding="utf-8" + ) + + assert "context.createMediaStreamDestination()" in source + assert "cloud.getAudioTrack({ processed: true })" in source + assert "userId: activeConfig.targetUserId" in source + assert "new MediaRecorder(destination.stream" in source + assert "recorder.start(1000)" in source + assert "bridge.startLocalAudioRecording(sessionId, mimeType)" in source + assert "bridge.appendLocalAudioChunk(" in source + assert "bridge.finishLocalAudioRecording(sessionId, totalBytes)" in source + assert "operations.push(stopLocalRecording())" in source + assert "operations.push(stopTranscription('completed'))" in source + assert "Promise.allSettled(operations)" in source + assert "腾讯云混流视频、本机语音录音和实时转写均已启动" in source + + +def test_companion_watches_room_id_for_the_entire_call_cycle() -> None: + """A slowly-created TRTC room must still bind to the exact call record.""" + + source = (PROJECT_ROOT / "video_companion" / "src" / "main.ts").read_text( + encoding="utf-8" + ) + room_source = source.split("function readRoomId", 1)[1].split( + "function handleStatusChanged", 1 + )[0] + + assert "TUIStore.watch(StoreName.CALL, roomIdWatchOptions)" in room_source + assert "[NAME.ROOM_ID]: handleRoomIdChanged" in room_source + assert "cycle === callCycleGeneration" in room_source + assert "while (activeConfig && !endNotified" in room_source + assert "attempt < 40" not in room_source + assert "diagnosisId: activeConfig.diagnosisId" in room_source + + +def test_room_binding_is_acknowledged_and_transcriber_room_is_a_fallback() -> None: + companion_source = ( + PROJECT_ROOT / "video_companion" / "src" / "main.ts" + ).read_text(encoding="utf-8") + window_source = ( + PROJECT_ROOT / "src" / "doctor_workstation" / "video" / "window.py" + ).read_text(encoding="utf-8") + + assert "observeRoomId(roomId)" in companion_source + assert "onRealtimeTranscriberStarted: (roomId)" in companion_source + assert "function roomBindingResult(" in companion_source + assert "if (boundRoomId) return" in companion_source + assert "roomBindingResult?.(" in window_source + + +def test_im_conversation_renders_deduplicated_video_call_status_timeline() -> None: + """Video lifecycle feedback belongs in the IM timeline as local status events.""" + + companion_root = PROJECT_ROOT / "video_companion" / "src" + source = (companion_root / "main.ts").read_text(encoding="utf-8") + app_source = (companion_root / "App.vue").read_text(encoding="utf-8") + styles = (companion_root / "style.css").read_text(encoding="utf-8") + + timeline_source = source.split("function appendVideoCallStatus", 1)[1].split( + "function onMessageReceived", 1 + )[0] + assert "activeConfig.mode !== 'chat'" in timeline_source + assert "local-video-call-${callCycleGeneration}-${callStatus}" in timeline_source + assert "findIndex((item) => item.id === id)" in timeline_source + assert "appendVideoCallStatus('starting', '正在创建安全视频通话')" in source + assert "appendVideoCallStatus('dialing', '正在呼叫患者')" in source + assert "appendVideoCallStatus('connected', '视频通话已接通')" in source + assert "appendVideoCallStatus('ended', '视频通话已结束')" in source + assert "appendVideoCallStatus('failed', `视频通话发起失败:${message}`)" in source + assert "message.type === 'call-status'" in app_source + assert 'class="call-status-event"' in app_source + assert 'role="status"' in app_source + assert "IM 已连接 · ${props.statusText.value}" in app_source + assert ".message-row--call-status" in styles + assert ".call-status-event--connected" in styles + assert ".call-status-event--failed" in styles + + +def test_companion_local_recording_waits_for_real_audio_and_has_runtime_fallbacks() -> None: + source = (PROJECT_ROOT / "video_companion" / "src" / "main.ts").read_text( + encoding="utf-8" + ) + + assert "querySelectorAll('video, audio')" in source + assert "stream.getAudioTracks()" in source + assert "navigator.mediaDevices.getUserMedia" in source + assert "await waitForCallAudioTracks(cloud, sessionId)" in source + assert "localRecordingAttachedSourceCount <= 0" in source + assert "localRecordingBytes < 1024" in source + assert "已阻止上传空文件" in source + + +def test_qt_close_waits_for_local_audio_finish_before_destroying_webengine() -> None: + """A title-bar/desktop hangup must keep accepting bridge chunks until COS ack.""" + + source = ( + PROJECT_ROOT / "src" / "doctor_workstation" / "video" / "window.py" + ).read_text(encoding="utf-8") + request_shutdown = source.split( + "def _request_companion_shutdown", 1 + )[1].split("def _force_requested_shutdown", 1)[0] + begin_shutdown = source.split("def _begin_shutdown", 1)[1].split( + "def wait_for_lifecycles", 1 + )[0] + close_event = source.split("def closeEvent", 1)[1].split( + "else:", 1 + )[0] + + assert "window.doctorConsultation?.close?.()" in request_shutdown + assert "self._shutdown_requested = True" in request_shutdown + assert "self._closing = True" not in request_shutdown + assert "event.ignore()" in close_event + assert "self._request_companion_shutdown" in close_event + assert "self._shutdown_timer.stop()" in begin_shutdown + assert "window.doctorConsultation?.close?.()" not in begin_shutdown + assert "if not self.open_im or self._shutdown_requested" in source + + +def test_local_audio_capture_keeps_and_persists_its_own_call_room_identity() -> None: + """A later IM call cycle must not relabel an earlier recording.""" + + source = ( + PROJECT_ROOT / "src" / "doctor_workstation" / "video" / "window.py" + ).read_text(encoding="utf-8") + + assert "lifecycle: OrderedCallLifecycle" in source + assert "lifecycle = capture.lifecycle" in source + assert "call_record_id=call_record_id" in source + assert 'room_id=lifecycle.current_room_id or ""' in source + assert "store.bind_identity(" in source + + +def test_companion_shows_incremental_subtitles_but_only_persists_final_segments() -> None: + main_source = ( + PROJECT_ROOT / "video_companion" / "src" / "main.ts" + ).read_text(encoding="utf-8") + component_source = ( + PROJECT_ROOT / "video_companion" / "src" / "App.vue" + ).read_text(encoding="utf-8") + handler = main_source.split("function handleTranscriberMessage", 1)[1].split( + "function subscribeTranscriber", 1 + )[0] + + assert "showLiveCaption(message)" in handler + assert "if (message.isCompleted !== true) return" in handler + assert handler.index("showLiveCaption(message)") < handler.index( + "if (message.isCompleted !== true) return" + ) + assert 'aria-label="实时语音字幕"' in component_source + assert "liveCaptions.value" in component_source + assert "caption.speaker" in component_source + assert "caption.text" in component_source + + +def test_companion_screenshot_requires_doctor_confirmation_before_upload() -> None: + source = (PROJECT_ROOT / "video_companion" / "src" / "App.vue").read_text( + encoding="utf-8" + ) + capture = source.split("async function captureScreenshot", 1)[1].split( + "function discardScreenshot", 1 + )[0] + confirm = source.split("async function confirmScreenshot", 1)[1].split( + "watch(", 1 + )[0] + + assert "screenshotPreview.value = canvas.toDataURL" in capture + assert "onSaveScreenshot" not in capture + assert "await props.onSaveScreenshot(screenshotPreview.value)" in confirm + assert "确认画面后再保存到患者资料" in source + assert "确认并上传" in source + assert "取消" in source + + +def test_companion_loads_im_history_without_an_empty_first_page_cursor() -> None: + source = (PROJECT_ROOT / "video_companion" / "src" / "main.ts").read_text( + encoding="utf-8" + ) + load_messages = source.split("async function loadMessages", 1)[1].split( + "async function sendText", 1 + )[0] + + assert "nextReqMessageID: prepend ? nextReqMessageID : ''" not in load_messages + assert "nextReqMessageID?: string" in load_messages + assert ( + "if (prepend && nextReqMessageID) request.nextReqMessageID = nextReqMessageID" + in load_messages + ) + assert "chat.getMessageList(request)" in load_messages + + +def test_companion_preserves_im_scroll_position_for_live_and_older_messages() -> None: + source = (PROJECT_ROOT / "video_companion" / "src" / "App.vue").read_text( + encoding="utf-8" + ) + watcher = source.split("() => props.messages.value.length", 1)[1].split( + "watch(", 1 + )[0] + load_earlier = source.split("async function loadEarlierMessages", 1)[1].split( + "async function runAction", 1 + )[0] + + assert "if (!stickToMessageBottom.value) return" in watcher + assert "stickToMessageBottom.value = false" in load_earlier + assert "container.scrollHeight - previousHeight" in load_earlier + assert '@scroll="handleMessageScroll"' in source + assert '@click="loadEarlierMessages"' in source + + def test_normalizes_admin_ticket_aliases_to_companion_contract() -> None: request = normalize_backend_ticket( { @@ -196,11 +423,13 @@ def test_call_lifecycle_is_fifo_daemon_and_never_blocks_caller() -> None: events.append(("start", diagnosis_id, patient_id, call_type)) return {"call_record_id": 900} - def bind_call_room(self, diagnosis_id: int, room_id: str) -> None: - events.append(("bind", diagnosis_id, room_id)) + def bind_call_room( + self, diagnosis_id: int, room_id: str, *, call_record_id: int + ) -> None: + events.append(("bind", diagnosis_id, room_id, call_record_id)) - def end_call(self, diagnosis_id: int) -> None: - events.append(("end", diagnosis_id)) + def end_call(self, diagnosis_id: int, *, call_record_id: int) -> None: + events.append(("end", diagnosis_id, call_record_id)) request = VideoCallRequest( sdk_app_id=1400123456, @@ -226,17 +455,19 @@ def test_call_lifecycle_is_fifo_daemon_and_never_blocks_caller() -> None: assert lifecycle.wait(0.01) is False assert duplicate_bind is bind_future assert changed_bind.result(timeout=0) is False + assert lifecycle.current_room_id == "456789" release_start.set() assert start_future.result(timeout=2) is True assert bind_future.result(timeout=2) is True assert end_future.result(timeout=2) is True assert lifecycle.wait(1) is True + assert lifecycle.current_room_id == "456789" assert events == [ ("start", 123, 8, 2), - ("bind", 123, "456789"), - ("end", 123), + ("bind", 123, "456789", 900), + ("end", 123, 900), ] @@ -479,6 +710,155 @@ def test_failed_start_prevents_bind_and_end_writes() -> None: assert events == ["start"] +def test_explicit_cos_recording_failure_fails_room_binding_without_losing_call_identity() -> None: + class Repository: + def start_call( + self, diagnosis_id: int, patient_id: int, *, call_type: int + ) -> dict[str, int]: + del diagnosis_id, patient_id, call_type + return {"call_record_id": 904} + + def bind_call_room( + self, diagnosis_id: int, room_id: str, *, call_record_id: int + ) -> dict[str, object]: + assert (diagnosis_id, room_id, call_record_id) == (123, "456789", 904) + return { + "call_record_id": 904, + "cloud_recording": { + "started": False, + "message": "COS bucket is unavailable", + }, + } + + request = VideoCallRequest( + sdk_app_id=1400123456, + user_id="doctor_42", + user_sig="short-lived-ticket", + target_user_id="patient_8", + diagnosis_id=123, + patient_id=8, + ) + lifecycle = OrderedCallLifecycle(request, Repository(), logging.getLogger(__name__)) + + with pytest.raises(RuntimeError, match="COS bucket is unavailable"): + lifecycle.bind_room("456789").result(timeout=2) + + assert lifecycle.call_record_id == 904 + assert lifecycle.bound_room_id is None + assert lifecycle.wait(1) is True + + +def test_failed_room_binding_releases_claim_and_can_retry_same_room() -> None: + bind_attempts = 0 + + class Repository: + def start_call( + self, diagnosis_id: int, patient_id: int, *, call_type: int + ) -> dict[str, int]: + del diagnosis_id, patient_id, call_type + return {"call_record_id": 906} + + def bind_call_room( + self, diagnosis_id: int, room_id: str, *, call_record_id: int + ) -> dict[str, object]: + nonlocal bind_attempts + assert (diagnosis_id, room_id, call_record_id) == (123, "456789", 906) + bind_attempts += 1 + if bind_attempts == 1: + raise RuntimeError("temporary bind failure") + return { + "call_record_id": 906, + "cloud_recording": {"started": True}, + } + + request = VideoCallRequest( + sdk_app_id=1400123456, + user_id="doctor_42", + user_sig="short-lived-ticket", + target_user_id="patient_8", + diagnosis_id=123, + patient_id=8, + ) + lifecycle = OrderedCallLifecycle(request, Repository(), logging.getLogger(__name__)) + + with pytest.raises(RuntimeError, match="temporary bind failure"): + lifecycle.bind_room("456789").result(timeout=2) + + assert lifecycle.current_room_id is None + assert lifecycle.bind_room("456789").result(timeout=2) is True + assert lifecycle.bound_room_id == "456789" + assert lifecycle.current_room_id == "456789" + assert bind_attempts == 2 + assert lifecycle.wait(1) is True + + +def test_local_audio_upload_uses_exact_started_record_and_precedes_end( + tmp_path: Path, +) -> None: + events: list[tuple[object, ...]] = [] + + class Repository: + def start_call( + self, diagnosis_id: int, patient_id: int, *, call_type: int + ) -> dict[str, int]: + events.append(("start", diagnosis_id, patient_id, call_type)) + return {"call_record_id": 905} + + def upload_call_recording( + self, + path: Path, + diagnosis_id: int, + *, + call_record_id: int, + mime_type: str, + ) -> dict[str, object]: + events.append( + ( + "local-audio", + path.read_bytes(), + diagnosis_id, + call_record_id, + mime_type, + ) + ) + return { + "completed": True, + "call_record_id": call_record_id, + "media_kind": "local_audio", + } + + def end_call(self, diagnosis_id: int, *, call_record_id: int) -> None: + events.append(("end", diagnosis_id, call_record_id)) + + recording = tmp_path / "call-audio.webm" + recording.write_bytes(b"opus-webm-audio") + request = VideoCallRequest( + sdk_app_id=1400123456, + user_id="doctor_42", + user_sig="short-lived-ticket", + target_user_id="patient_8", + diagnosis_id=123, + patient_id=8, + ) + lifecycle = OrderedCallLifecycle(request, Repository(), logging.getLogger(__name__)) + + lifecycle.start() + uploaded = lifecycle.save_local_audio_recording( + recording, + mime_type="audio/webm;codecs=opus", + ) + ended = lifecycle.end("doctor-hangup") + + assert uploaded.result(timeout=2) is True + assert ended.result(timeout=2) is True + assert lifecycle.wait(1) is True + assert events == [ + ("start", 123, 8, 2), + ("local-audio", b"opus-webm-audio", 123, 905, "audio/webm;codecs=opus"), + ("end", 123, 905), + ] + + def test_video_screenshot_is_uploaded_and_appended_to_patient_tongue_images() -> None: events: list[tuple[object, ...]] = [] diff --git a/app/video_companion/dist/assets/index-BsDbRyxy.css b/app/video_companion/dist/assets/index-BsDbRyxy.css new file mode 100644 index 000000000..bc69ebe5c --- /dev/null +++ b/app/video_companion/dist/assets/index-BsDbRyxy.css @@ -0,0 +1 @@ +:root{font-family:Microsoft YaHei UI,PingFang SC,Noto Sans CJK SC,system-ui,sans-serif;color:#132238;background:#eef3fb;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}html,body,#app{width:100%;height:100%;margin:0;overflow:hidden}button,textarea,input{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}.consultation-shell{width:100%;height:100%;min-width:760px;min-height:540px;background:#eef3fb}.chat-panel{display:grid;grid-template-rows:74px minmax(0,1fr) auto;width:100%;height:100%;background:#f7f9fd}.chat-header{display:flex;align-items:center;gap:14px;padding:12px 20px;border-bottom:1px solid #d7dfef;background:#fffffff5}.patient-avatar{display:grid;place-items:center;width:44px;height:44px;border-radius:14px;color:#fff;background:#5267df;font-size:18px;font-weight:700}.chat-heading{min-width:0;flex:1}.chat-heading h1{margin:0;font-size:18px;line-height:1.4}.chat-heading p{display:flex;align-items:center;gap:7px;margin:3px 0 0;color:#71809a;font-size:12px}.connection-dot{width:7px;height:7px;border-radius:50%;background:#a3adbd}.connection-dot--online{background:#24a77c;box-shadow:0 0 0 3px #24a77c1f}.primary-action,.send-button,.capture-button{border:1px solid #5166df;border-radius:9px;color:#fff;background:#5267df;font-weight:600}.secondary-action{padding:9px 13px;border:1px solid #c8d2e7;border-radius:9px;color:#43526b;background:#fff;font-weight:600}.secondary-action:hover{border-color:#7385e9;color:#4055ca;background:#f5f7ff}.primary-action{display:flex;gap:8px;align-items:center;padding:10px 16px}.primary-action:hover,.send-button:hover,.capture-button:hover{background:#4055ca}.message-list{overflow-y:auto;padding:18px max(24px,calc((100% - 920px)/2));background:radial-gradient(circle at 12% 16%,rgba(82,103,223,.055),transparent 25%),#f3f6fb}.load-more{display:block;margin:0 auto 18px;padding:6px 12px;border:1px solid #d6deed;border-radius:999px;color:#66758e;background:#fff;font-size:12px}.empty-chat{display:grid;justify-items:center;margin-top:min(16vh,110px);color:#7c89a0;text-align:center}.empty-chat__icon{display:grid;place-items:center;width:62px;height:62px;margin-bottom:12px;border:1px solid #d2daeb;border-radius:20px;color:#5267df;background:#fff;font-weight:800}.empty-chat h2{margin:0;color:#34425a;font-size:17px}.empty-chat p{margin:7px 0;font-size:13px}.message-row{display:flex;flex-direction:column;align-items:flex-start;margin:12px 0}.message-row--mine{align-items:flex-end}.message-row--call-status{align-items:center;margin:16px 0}.call-status-event{display:inline-flex;align-items:center;gap:8px;min-height:32px;padding:0 12px;border:1px solid #dce2f2;border-radius:999px;color:#617092;background:#ffffffeb;font-size:12px;box-shadow:0 4px 14px #111f460a}.call-status-event__icon{display:grid;place-items:center;width:20px;height:20px;border-radius:7px;color:#5761f4;background:#eef0ff;font-size:11px}.call-status-event strong{color:#34425f;font-weight:700}.call-status-event time{color:#8b97b2;font-variant-numeric:tabular-nums}.call-status-event--connected{border-color:#bdebdc;background:#f2fbf7}.call-status-event--connected .call-status-event__icon{color:#11986f;background:#dff7ee}.call-status-event--failed{border-color:#f3c8cf;background:#fff5f6}.call-status-event--failed .call-status-event__icon{color:#c43f50;background:#ffe6e9}.message-meta{margin:0 8px 5px;color:#8995a9;font-size:11px}.message-bubble{max-width:min(72%,620px);padding:10px 13px;border:1px solid #d8e0ed;border-radius:5px 15px 15px;background:#fff;box-shadow:0 4px 14px #1d2f500d;line-height:1.6;word-break:break-word}.message-row--mine .message-bubble{border-color:#5267df;border-radius:15px 5px 15px 15px;color:#fff;background:#5267df}.message-bubble p{margin:0;white-space:pre-wrap}.message-image,.message-video{display:block;max-width:360px;max-height:280px;border-radius:9px}.message-file{display:flex;align-items:center;gap:8px;color:inherit;text-decoration:none}.message-bubble audio{max-width:320px}.composer{padding:10px 18px 14px;border-top:1px solid #d7dfef;background:#fff}.composer-toolbar{display:flex;align-items:center;justify-content:space-between;min-height:30px;color:#8a96a9;font-size:11px}.composer-toolbar button{padding:5px 9px;border:0;border-radius:7px;color:#5267df;background:#eef1ff;font-size:12px}.composer-row{display:grid;grid-template-columns:minmax(0,1fr) 86px;gap:12px}.composer textarea{width:100%;min-height:68px;max-height:150px;padding:10px 12px;resize:vertical;border:1px solid #ced8ea;border-radius:10px;outline:none;color:#15233a;background:#fbfcff;line-height:1.5}.composer textarea:focus{border-color:#6678ed;box-shadow:0 0 0 3px #5267df1c}.send-button{align-self:end;height:40px}.inline-notice{margin-bottom:7px;color:#3f6f62;font-size:12px}.inline-notice--error{color:#c14455}.video-layer{position:relative;width:100%;height:100%;min-height:420px;overflow:hidden;color:#f7f8fa;background:radial-gradient(circle at 50% 35%,rgba(60,86,130,.28),transparent 38%),#090d14}.video-layer--overlay{position:fixed;z-index:1000;inset:0}.call-kit,.video-layer :is(.TUICallKit-desktop,.TUICallKit-mobile,#tuicallkit-id){width:100%!important;height:100%!important;max-width:none!important;max-height:none!important}.status-card{position:absolute;inset:50% auto auto 50%;display:grid;grid-template-columns:12px minmax(0,1fr);gap:18px;width:min(520px,calc(100% - 48px));padding:30px 32px;transform:translate(-50%,-50%);border:1px solid rgba(255,255,255,.1);border-radius:20px;background:#131920eb;box-shadow:0 24px 70px #00000052}.eyebrow{margin:0 0 12px;color:#a3afbf;font-size:12px;font-weight:700;letter-spacing:.12em}.status-card h2{margin:0;font-size:clamp(22px,3.2vw,34px);font-weight:600;line-height:1.25}.status-hint{margin:14px 0 0;color:#9aa5b1;font-size:14px}.status-dot{width:10px;height:10px;margin-top:5px;border-radius:50%;background:#77818c;box-shadow:0 0 0 5px #77818c1f}.status-dot--starting,.status-dot--live{background:#52c99a;box-shadow:0 0 0 5px #52c99a24}.status-dot--error{background:#f26d6d;box-shadow:0 0 0 5px #f26d6d24}.live-status{position:absolute;z-index:20;top:18px;left:50%;display:flex;align-items:center;gap:10px;padding:9px 14px;transform:translate(-50%);border:1px solid rgba(255,255,255,.1);border-radius:999px;background:#0b0f14cc;font-size:13px}.live-status .status-dot{width:7px;height:7px;margin:0;box-shadow:none}.live-captions{position:absolute;z-index:38;left:50%;bottom:92px;display:grid;gap:7px;width:min(820px,calc(100% - 360px));transform:translate(-50%);pointer-events:none}.live-captions p{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px;align-items:start;width:fit-content;max-width:100%;margin:0 auto;padding:8px 14px;border:1px solid rgba(255,255,255,.2);border-radius:10px;color:#fff;background:#090d14c7;box-shadow:0 6px 24px #0003;font-size:16px;line-height:1.55;backdrop-filter:blur(8px)}.live-captions strong{color:#aeb8ff;white-space:nowrap}.live-captions span{min-width:0;word-break:break-word}.video-actions{position:absolute;z-index:40;right:22px;bottom:24px;display:flex;gap:10px}.video-actions button{padding:10px 15px;border-radius:10px;font-weight:600}.recording-status{display:inline-flex;align-items:center;gap:8px;padding:10px 15px;border:1px solid rgba(255,255,255,.24);border-radius:10px;color:#fff;background:#161d27e0;font-size:13px;font-weight:600}.recording-status--active{border-color:#f46373a3;background:#7e2332e6}.recording-status--error{border-color:#f26d6d8f;color:#ffe4e7;background:#641f28e0}.recording-indicator{width:9px;height:9px;border-radius:50%;background:#f46373;box-shadow:0 0 0 4px #f4637329}.recording-status--active .recording-indicator{animation:recording-pulse 1.25s ease-in-out infinite}@keyframes recording-pulse{50%{box-shadow:0 0 0 8px #f463730a;opacity:.72}}.hangup-button{border:1px solid #b44755;color:#fff;background:#a12f3de6}.hangup-button:hover{background:#be394d}.video-notice{position:absolute;z-index:40;left:22px;bottom:26px;max-width:calc(100% - 420px);padding:9px 12px;border:1px solid rgba(82,201,154,.35);border-radius:9px;color:#d9f8eb;background:#144e3ed6;font-size:13px}.video-notice--error{border-color:#f26d6d66;color:#ffe4e7;background:#641f28e0}.screenshot-dialog-backdrop{position:absolute;z-index:120;inset:0;display:grid;place-items:center;padding:24px;background:#070b13c2;backdrop-filter:blur(5px)}.screenshot-dialog{display:grid;grid-template-rows:auto minmax(0,1fr) auto auto;gap:14px;width:min(920px,92vw);max-height:calc(100vh - 48px);padding:20px;overflow:hidden;border:1px solid #e2e7f4;border-radius:18px;color:#111f46;background:#fff;box-shadow:0 28px 90px #040a1b57}.screenshot-dialog>header,.screenshot-dialog>footer{display:flex;align-items:center;justify-content:space-between;gap:16px}.screenshot-dialog h2{margin:2px 0 0;font-size:20px;line-height:1.35}.screenshot-dialog .eyebrow{margin:0;color:#5761f4}.screenshot-dialog>header>button{width:36px;height:36px;border:0;border-radius:9px;color:#7886aa;background:#f2f4fb;font-size:24px}.screenshot-preview-frame{display:grid;place-items:center;min-height:260px;overflow:hidden;border-radius:12px;background:#0b0f16}.screenshot-preview-frame img{display:block;max-width:100%;max-height:min(62vh,650px);object-fit:contain}.screenshot-dialog__hint{margin:0;color:#617092;font-size:13px}.screenshot-dialog>footer{justify-content:flex-end}.screenshot-dialog>footer button{min-width:112px;padding:10px 18px;border-radius:9px;font-weight:700}.screenshot-cancel{border:1px solid #dfe4f1;color:#3f4e75;background:#fff}.screenshot-confirm{border:1px solid #5761f4;color:#fff;background:#5761f4}.screenshot-confirm:hover{background:#4c57e9}@media (max-width: 820px){.consultation-shell{min-width:620px}.message-list{padding-inline:18px}.message-bubble{max-width:82%}.live-captions{width:calc(100% - 36px);bottom:88px}.live-captions p{font-size:14px}}:root{color:#111f46;background:#eef3fd}.consultation-shell{background:#eef3fd}.chat-panel{background:#f7f9fe}.chat-header,.composer{border-color:#e6eaf5;background:#fffffffa}.patient-avatar{background:linear-gradient(135deg,#5761f4,#7769f7)}.chat-heading p,.empty-chat,.message-meta,.composer-toolbar{color:#7886aa}.connection-dot--online{background:#17a77d;box-shadow:0 0 0 3px #17a77d1f}.primary-action,.send-button,.capture-button{border-color:#5761f4;background:linear-gradient(90deg,#5761f4,#7769f7)}.primary-action:hover,.send-button:hover,.capture-button:hover{background:#4c57e9}.secondary-action{border-color:#e6eaf5;color:#3f4e75}.secondary-action:hover{border-color:#5761f4;color:#4451e2;background:#f0f2ff}.message-list{background:radial-gradient(circle at 12% 16%,rgba(87,97,244,.055),transparent 25%),#f7f9fe}.load-more,.empty-chat__icon,.message-bubble{border-color:#e6eaf5}.load-more{color:#7886aa}.empty-chat__icon{color:#5761f4}.empty-chat h2{color:#111f46}.message-bubble{box-shadow:0 4px 14px #111f460d}.message-row--mine .message-bubble{border-color:#5761f4;background:#5761f4}.composer-toolbar button{color:#4451e2;background:#f0f2ff}.composer textarea{border-color:#e6eaf5;color:#111f46;background:#fafbfe}.composer textarea:focus{border-color:#8d9bff;box-shadow:0 0 0 3px #5761f41c}.video-actions button{border-radius:9px}.recording-status{border-color:#e6eaf5e0;border-radius:9px;color:#3f4e75;background:#fffffff2}.recording-status--active,.recording-status--error{border-color:#f15b6773;color:#b63849;background:#fff1f3f5}.recording-indicator{background:#f15b67;box-shadow:0 0 0 4px #f15b6729}@keyframes recording-pulse{50%{box-shadow:0 0 0 8px #f15b670a;opacity:.72}}.hangup-button{border-color:#f15b67;background:#f15b67}.hangup-button:hover{background:#d94857}.video-notice{border-color:#17a77d59;color:#12765b;background:#eaf9f3f2}.video-notice--error{border-color:#f15b6766;color:#b63849;background:#fff1f3f5} diff --git a/app/video_companion/dist/assets/index-DXNYj41g.js b/app/video_companion/dist/assets/index-DhmAWjut.js similarity index 66% rename from app/video_companion/dist/assets/index-DXNYj41g.js rename to app/video_companion/dist/assets/index-DhmAWjut.js index 6cf09de1b..9e92d0ff6 100644 --- a/app/video_companion/dist/assets/index-DXNYj41g.js +++ b/app/video_companion/dist/assets/index-DhmAWjut.js @@ -1,4 +1,4 @@ -(function(){const i=document.createElement("link").relList;if(i&&i.supports&&i.supports("modulepreload"))return;for(const u of document.querySelectorAll('link[rel="modulepreload"]'))l(u);new MutationObserver(u=>{for(const B of u)if(B.type==="childList")for(const f of B.addedNodes)f.tagName==="LINK"&&f.rel==="modulepreload"&&l(f)}).observe(document,{childList:!0,subtree:!0});function r(u){const B={};return u.integrity&&(B.integrity=u.integrity),u.referrerPolicy&&(B.referrerPolicy=u.referrerPolicy),u.crossOrigin==="use-credentials"?B.credentials="include":u.crossOrigin==="anonymous"?B.credentials="omit":B.credentials="same-origin",B}function l(u){if(u.ep)return;u.ep=!0;const B=r(u);fetch(u.href,B)}})();var mg=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function F3(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function gU(t){if(t.__esModule)return t;var i=t.default;if(typeof i=="function"){var r=function l(){return this instanceof l?Reflect.construct(i,arguments,this.constructor):i.apply(this,arguments)};r.prototype=i.prototype}else r={};return Object.defineProperty(r,"__esModule",{value:!0}),Object.keys(t).forEach(function(l){var u=Object.getOwnPropertyDescriptor(t,l);Object.defineProperty(r,l,u.get?u:{enumerable:!0,get:function(){return t[l]}})}),r}var S1={exports:{}},ziA=S1.exports,Bz;function ZiA(){return Bz||(Bz=1,function(t,i){(function(r,l){t.exports=l()})(ziA,function(){const r=s=>s===void 0,l=s=>typeof s=="string",u=s=>{var n;return(n=Object.prototype.toString.call(s).match(/^\[object (.*)\]$/))===null||n===void 0?void 0:n[1].toLowerCase()},B=s=>typeof Array.isArray=="function"?Array.isArray(s):u(s)==="array",f=s=>s!==null&&typeof s=="object",w=s=>B(s)||f(s),_=s=>{if(typeof s!="string")return!1;const n=s[0];return!/[^a-zA-Z0-9]/.test(n)},k=s=>{if(typeof s!="object"||s===null)return!1;const n=Object.getPrototypeOf(s);if(n===null)return!0;let g=n;for(;Object.getPrototypeOf(g)!==null;)g=Object.getPrototypeOf(g);return n===g};function F(s=99999999){return Math.round(Math.random()*s)}const j=(s,n,g,I)=>{if(!w(s)||!w(n))return 0;let E=0;const m=Object.keys(n);let D;for(let M=0,T=m.length;M"u"&&typeof uni.requireNativePlugin=="function",to=It&&typeof wx.miniapp=="object",uo=typeof uni<"u",Vs=ft&&typeof tt.enterChat=="function",ki=It||qe||ft||Vt||gi||_o||Fi,ns=typeof window>"u"&&!ki&&typeof mg<"u"&&mg.NativeScriptGlobals!==void 0,Ko=typeof mg<"u"&&(mg.nativeModuleProxy!==void 0||mg.ReactNative!==void 0),$i=typeof wx<"u"&&typeof wx.getAccountInfoSync=="function"&&!!wx.getAccountInfoSync().plugin,jt=typeof uni<"u"?!ki:typeof window<"u"&&!ki&&!Ko,io=qe?qq:ft?tt:Vt?swan:gi?my:It?wx:_o?uni:Fi?jd:{},bi=jt&&window&&window.navigator&&window.navigator.userAgent||"",vs=/(micromessenger|webbrowser)/i.test(bi),HA=function(){let s="WEB";return vs?s="WEB":qe?s="QQ_MP":ft?s="TT_MP":Vt?s="BAIDU_MP":gi?s="ALI_MP":It?s=to?"DONUT_NATIVE_APP":"WX_MP":_o?s="UNI_NATIVE_APP":ns?s="NS_NATIVE_APP":Ko&&(s="RN_NATIVE_APP"),rA[s]}(),le=/iPad/i.test(bi),xe=/iPhone/i.test(bi)&&!le,Lt=/iPod/i.test(bi),it=xe||le||Lt,gt=function(){const s=bi.match(/OS (\d+)_/i);return s&&s[1]?s[1]:null}(),Xt=/Android/i.test(bi),$t=function(){const s=bi.match(/Android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i);if(!s)return null;const n=s[1]&&parseFloat(s[1]),g=s[2]&&parseFloat(s[2]);return n&&g?parseFloat(`${s[1]}.${s[2]}`):n||null}(),be=/Firefox/i.test(bi),je=/Edge/i.test(bi),Mt=!je&&/Chrome/i.test(bi),Rt=/MSIE/.test(bi)||bi.indexOf("Trident")>-1&&bi.indexOf("rv:11.0")>-1,Oi=function(){const s=/MSIE\s(\d+)\.\d/.exec(bi);let n=s&&parseFloat(s[1]);return!n&&/Trident\/7.0/i.test(bi)&&/rv:11.0/.test(bi)&&(n=11),n}(),Qo=/Safari/i.test(bi)&&!Mt&&!Xt&&!je,To=/Windows/i.test(bi),oo=/MAC OS X/i.test(bi),No=jt&&typeof Worker<"u"&&!Rt,An=Xt||it,rn=function(){if(typeof window>"u"||window.navigator===void 0)return!1;const{standalone:s}=window.navigator;return!(!it||s||Qo)}();function Es(){let s="unknown";if(oo&&(s="mac"),To&&(s="windows"),it&&(s="ios"),Xt&&(s="android"),ki)try{const{platform:n}=io.getSystemInfoSync();n!==void 0&&(s=n)}catch(n){console.error(n)}return s}const an=typeof process<"u"&&process.versions!==void 0&&process.versions.node!==void 0&&typeof window>"u";function yo(s,n){var g={};for(var I in s)Object.prototype.hasOwnProperty.call(s,I)&&n.indexOf(I)<0&&(g[I]=s[I]);if(s!=null&&typeof Object.getOwnPropertySymbols=="function"){var E=0;for(I=Object.getOwnPropertySymbols(s);E{io.request({url:g,data:I,method:n,timeout:E,header:{"content-type":jr},success:M=>m(M.data),fail:()=>D(new Error(`{"message":"Network error","code":${Jn}}`))})}):an?void 0:new Promise((m,D)=>{const M=new XMLHttpRequest,T=setTimeout(()=>{M.abort(),D(new Error(`{"message":"Request timeout","code":${Br}}`))},E);M.onreadystatechange=function(){if(M.readyState===4)if(clearTimeout(T),M.status===200||M.status===304)try{m(M.responseText?JSON.parse(M.responseText):null)}catch{m(M.responseText)}else D(new Error(`{"message":"Network error","code":${Jn}}`))},M.open(n,g,!0),M.setRequestHeader("Content-type",jr),M.send(I||null)})})}function Rs(s){if(s==null)return!0;if(typeof s=="boolean")return!1;if(typeof s=="number")return s===0;if(typeof s=="string"||typeof s=="function"||Array.isArray(s))return s.length===0;if(s instanceof Error)return s.message==="";if(k(s)){for(const n in s)if(Object.prototype.hasOwnProperty.call(s,n))return!1;return!0}return(Object.prototype.toString.call(s)==="[object Map]"||Object.prototype.toString.call(s)==="[object Set]"||Object.prototype.toString.call(s)==="[object File]")&&s.size===0}function ir(s,n){if(s===null||typeof s!="object")return s;const g=n||new WeakMap;if(g.has(s))return g.get(s);if(s instanceof Date)return new Date(s.getTime());if(s instanceof RegExp)return new RegExp(s.source,s.flags);if(s instanceof Map){const m=new Map;return g.set(s,m),s.forEach((D,M)=>{m.set(ir(M,g),ir(D,g))}),m}if(s instanceof Set){const m=new Set;return g.set(s,m),s.forEach(D=>{m.add(ir(D,g))}),m}if(Array.isArray(s)){const m=[];return g.set(s,m),s.forEach(D=>{m.push(ir(D,g))}),m}const I=Object.getPrototypeOf(s),E=Object.create(I);return g.set(s,E),[...Object.getOwnPropertyNames(s),...Object.getOwnPropertySymbols(s)].forEach(m=>{if(m==="__ob__"||m==="__v_skip"||m==="__v_isRef"||m==="__v_isReadonly")return;const D=Object.getOwnPropertyDescriptor(s,m);D&&(D.get||D.set?Object.defineProperty(E,m,D):E[m]=ir(s[m],g))}),E}function en(s,n,g){const I=new WeakSet,E=(m,D)=>{if(n&&(D=n(m,D)),D===void 0)return"undefined";if(D===null)return null;if(Number.isNaN(D))return"NaN";if(D===1/0)return"Infinity";if(D===-1/0)return"-Infinity";if(typeof D=="function")return`[Function: ${D.name||"anonymous"}]`;if(typeof D=="symbol")return D.toString();if(typeof D=="bigint")return`${D.toString()}n`;if(typeof D=="object"&&D!==null){if(I.has(D))return"[Circular]";I.add(D)}return D instanceof Date?D.toISOString():D instanceof Error?{name:D.name,message:D.message}:D instanceof Map?{dataType:"Map",value:Array.from(D.entries())}:D instanceof Set?{dataType:"Set",value:Array.from(D.values())}:D};try{return JSON.stringify(s,E,g)}catch(m){return console.error("Failed to stringify:",m),""}}function wn(){let s,n;return{promise:new Promise((g,I)=>{s=g,n=I}),resolve:s,reject:n}}var Jt,yg=Object.freeze({__proto__:null,ANDROID_VERSION:$t,IE_VERSION:Oi,IN_ALIPAY_MINI_APP:gi,IN_BAIDU_MINI_APP:Vt,IN_BROWSER:jt,IN_DONUT_NATIVE_APP:to,IN_FEISHU_MINI_APP:Vs,IN_JD_MINI_APP:Fi,IN_MINI_APP:ki,IN_NODE:an,IN_NS_NATIVE_APP:ns,IN_QQ_MINI_APP:qe,IN_RN_APP:Ko,IN_TT_MINI_APP:ft,IN_TT_MINI_GAME:ni,IN_UNI_APP:uo,IN_UNI_NATIVE_APP:_o,IN_WX_MINI_APP:It,IN_WX_MINI_APP_DESK:qt,IN_WX_MINI_GAME:ge,IN_WX_MINI_PLUGIN:$i,IOS_VERSION:gt,IS_ANDROID:Xt,IS_CHROME:Mt,IS_EDGE:je,IS_FIREFOX:be,IS_IE:Rt,IS_IOS:it,IS_IPAD:le,IS_IPHONE:xe,IS_IPOD:Lt,IS_MAC:oo,IS_SAFARI:Qo,IS_WECHAT:vs,IS_WIN:To,IS_WORKER_AVAILABLE:No,MINI_APP_NAMESPACE:io,USER_AGENT:bi,base16EncodeBinaryString:IA,deepCopyWithMethods:ir,deepMerge:j,generatePromise:wn,getPlatformType:Es,getType:u,httpRequest:Pi,isArray:B,isArrayOrObject:w,isEmpty:Rs,isH5:An,isIOSWebView:rn,isNumber:s=>s!==null&&(typeof s=="number"&&!Number.isNaN(s-0)||typeof s=="object"&&s.constructor===Number),isObject:f,isPlainObject:k,isString:l,isUndefined:r,isUniIOSApp:function(){return _o&&uni.getDeviceInfo().platform.toLocaleLowerCase()==="ios"},isValidRequestKey:_,platform:HA,randomInt:F,randomString:function(){const s="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";let n="";for(let g=32;g>0;--g)n+=s[Math.floor(62*Math.random())];return n},safeStringify:en});class On{constructor(){this.listeners={}}on(n,g,I){this.listeners[n]||(this.listeners[n]=[]),this.listeners[n].push({fn:g,context:I})}off(n,g,I){var E;g&&(this.listeners[n]=(E=this.listeners[n])===null||E===void 0?void 0:E.filter(m=>{const D=m.fn===g,M=!I||m.context===I;return!(D&&M)}))}emit(n,...g){const I=this.listeners[n];I&&I.forEach(E=>{const{fn:m,context:D}=E;try{m.apply(D,g)}catch(M){console.warn(`Error in event handler for ${n} error: ${en(M)}`)}})}once(n,g,I){const E=(...m)=>{g.apply(I,m),this.off(n,E)};this.on(n,E)}}(function(s){s.BUSINESS_COMMAND="business_command",s.C2C_REALTIME_MESSAGE="c2c_realtime_message",s.C2C_MESSAGE_MODIFIED="c2c_message_modified",s.C2C_REVOKED_MESSAGE="c2c_message_revoked",s.GROUP_REALTIME_MESSAGE="group_realtime_message",s.GROUP_MESSAGE_MODIFIED="group_message_modified",s.GROUP_MESSAGE_REVOKED="group_message_revoked",s.C2C_MESSAGE_READ_RECEIPT="c2c_message_read_receipt",s.MESSAGE_REACTION_UPDATED="message_reaction_updated",s.MESSAGE_REACTION_UPDATED_SYNC="message_reaction_updated_sync",s.GROUP_AT_TIPS="group_at_tips",s.USER_STATUS_UPDATE="user_status_update",s.FRIEND_LIST_MODIFIED="friend_list_modified",s.PROFILE_MODIFIED="profile_modified",s.CONV_MODIFIED="conversation_modified",s.GROUP_TIPS_NOTIFICATION="group_tips_notification",s.GROUP_MESSAGE_READ_RECEIPT="group_message_read_receipt",s.GROUP_MESSAGE_READ_SYNC="group_message_read_sync",s.GROUP_SYSTEM_NOTIFICATION="group_system_notification",s.C2C_MESSAGE_PEER_READ="c2c_message_peer_read",s.C2C_MESSAGE_READ_SYNC="c2c_message_read_sync",s.C2C_REMIND_TYPE_SYNC="c2c_remind_type_sync",s.FOLLOW_LIST_UPDATED="follow_list_updated",s.MESSAGE_EXTENSIONS_UPDATED="message_extensions_updated",s.ALL_MESSAGE_READ="all_message_read",s.CONVERSATION_MARK_UPDATED="conversation_mark_updated",s.CONVERSATION_GROUP_ADD="conversation_group_add",s.CONVERSATION_GROUP_DELETED="conversation_group_deleted",s.CONVERSATION_GROUP_UPDATED="conversation_group_updated",s.ALL_RECEIVE_MESSAGE_OPTION="all_receive_message_option",s.TOPIC_AT_TIPS="topic_at_tips",s.TOPIC_TIPS_NOTIFICATION="topic_tips_notification",s.TOPIC_SYSTEM_NOTIFICATION="topic_system_notification",s.TOPIC_MESSAGE_READ_SYNC="topic_message_read_sync",s.TOPIC_LATEST_MESSAGE="topic_latest_message",s.GROUP_MESSAGE_PINNED="group_message_pinned"})(Jt||(Jt={}));const Gn=[16,17];function Js(s){var n;const g=[];return(n=s?.GroupTips)===null||n===void 0||n.forEach(I=>{var E;I.GroupInfo.MillionGroupFlag===2?g.push(Jt.TOPIC_TIPS_NOTIFICATION):Gn.includes((E=I?.MsgBody)===null||E===void 0?void 0:E.OpType)?g.push(Jt.GROUP_MESSAGE_PINNED):g.push(Jt.GROUP_TIPS_NOTIFICATION)}),g}const Qr=[{conditions:[{type:"event",value:100}],subType:Jt.BUSINESS_COMMAND},{conditions:[{type:"event",value:24}],subType:Jt.ALL_RECEIVE_MESSAGE_OPTION},{conditions:[{type:"event",value:26}],subType:Jt.TOPIC_LATEST_MESSAGE},{conditions:[{type:"hasKey",value:"C2cMsgArray"}],subType:Jt.C2C_REALTIME_MESSAGE},{conditions:[{type:"hasKey",value:"C2cMsgModNotifys"}],subType:Jt.C2C_MESSAGE_MODIFIED},{conditions:[{type:"hasKey",value:"ProfileDataMod"}],subType:Jt.PROFILE_MODIFIED},{conditions:[{type:"hasKey",value:"UserStatusList"}],subType:Jt.USER_STATUS_UPDATE},{conditions:[{type:"hasKey",value:"FriendListMod"}],subType:Jt.FRIEND_LIST_MODIFIED},{conditions:[{type:"hasKey",value:"GroupMsgArray"}],subType:Jt.GROUP_REALTIME_MESSAGE},{conditions:[{type:"hasKey",value:"GroupMsgModNotifys"}],subType:Jt.GROUP_MESSAGE_MODIFIED},{conditions:[{type:"hasKey",value:"C2cNotifyMsgArray"}],subTypeParser:function(s){var n;const g=[];return(n=s?.C2cNotifyMsgArray)===null||n===void 0||n.forEach(I=>{I.WithdrawC2cMsgNotify&&g.push(Jt.C2C_REVOKED_MESSAGE),I.C2cReadedReceipt&&g.push(Jt.C2C_MESSAGE_PEER_READ),I.ReadC2cMsgNotify&&g.push(Jt.C2C_MESSAGE_READ_SYNC),I.MuteNotificationsSync&&g.push(Jt.C2C_REMIND_TYPE_SYNC)}),g}},{conditions:[{type:"hasKey",value:"GroupTips"},{type:"event",value:4}],subTypeParser:Js},{conditions:[{type:"hasKey",value:"GroupTips"},{type:"event",value:5}],subTypeParser:function(s){var n;const g=[];return(n=s?.GroupTips)===null||n===void 0||n.forEach(I=>{Array.isArray(I.MsgBody.GroupWithdrawInfoArray)?g.push(Jt.GROUP_MESSAGE_REVOKED):Array.isArray(I.MsgBody.GroupMsgReceiptList)?g.push(Jt.GROUP_MESSAGE_READ_RECEIPT):Array.isArray(I.MsgBody.GroupReadInfoArray)?I.MsgBody.GroupReadInfoArray[0].TopicId?g.push(Jt.TOPIC_MESSAGE_READ_SYNC):g.push(Jt.GROUP_MESSAGE_READ_SYNC):I.GroupInfo.MillionGroupFlag===2?g.push(Jt.TOPIC_SYSTEM_NOTIFICATION):g.push(Jt.GROUP_SYSTEM_NOTIFICATION)}),g}},{conditions:[{type:"hasKey",value:"GroupTips"},{type:"event",value:6}],subTypeParser:Js},{conditions:[{type:"hasKey",value:"GroupTips"},{type:"event",value:12}],subTypeParser:function(s){var n;const g=[];return(n=s?.GroupTips)===null||n===void 0||n.forEach(I=>{const{GroupAtTips:{TopicId:E}}=I;E?g.push(Jt.TOPIC_AT_TIPS):g.push(Jt.GROUP_AT_TIPS)}),g}},{conditions:[{type:"hasKey",value:"RecentContactMod"}],subTypeParser:function(s){var n;const g=[];return(n=s?.RecentContactMod)===null||n===void 0||n.forEach(I=>{switch(I.PushType){case Ke.CONV_MARK_UPDATED:g.push(Jt.CONVERSATION_MARK_UPDATED);break;case Ke.CONV_GROUP_ADDED:g.push(Jt.CONVERSATION_GROUP_ADD);break;case Ke.CONV_GROUP_DELETED:g.push(Jt.CONVERSATION_GROUP_DELETED);break;case Ke.CONV_GROUP_UPDATED:g.push(Jt.CONVERSATION_GROUP_UPDATED);break;default:g.push(Jt.CONV_MODIFIED)}}),g}},{conditions:[{type:"hasKey",value:"MsgReactionNotifyList"}],subType:Jt.MESSAGE_REACTION_UPDATED},{conditions:[{type:"hasKey",value:"MsgReactionNotify"}],subType:Jt.MESSAGE_REACTION_UPDATED_SYNC},{conditions:[{type:"hasKey",value:"C2cMsgInfo"}],subType:Jt.C2C_MESSAGE_READ_RECEIPT},{conditions:[{type:"hasKey",value:"FollowChangeList"}],subType:Jt.FOLLOW_LIST_UPDATED},{conditions:[{type:"hasKey",value:"MsgExtensionNotify"}],subType:Jt.MESSAGE_EXTENSIONS_UPDATED},{conditions:[{type:"hasKey",value:"C2CReadAllMsg"}],subType:Jt.ALL_MESSAGE_READ}];var Pn;function pr(s){var n;const g=Array.isArray((n=s?.body)===null||n===void 0?void 0:n.EventArray)?s.body.EventArray:[],I=[];return g.forEach(E=>{E.Flag=s.body.Flag;const m=Qr.find(M=>M.conditions.every(T=>{switch(T.type){case"event":return E.Event===T.value;case"hasKey":return Object.prototype.hasOwnProperty.call(E,T.value);default:return!1}}));if(!m)return null;let D=[];typeof m.subTypeParser=="function"?D=m.subTypeParser(E):m.subType&&(D=m.subType),Array.isArray(D)?D.forEach(M=>{I.push({type:`${Pn.SERVER_PUSH_MESSAGE}:${M}`,data:E})}):I.push({type:`${Pn.SERVER_PUSH_MESSAGE}:${D}`,data:E})}),I}(function(s){s.SERVER_PUSH_MESSAGE="im_open_push.msg_push",s.SERVER_PUSH_MESSAGE_MULTIPLE="im_open_push.multi_msg_push_ws",s.ERROR="error"})(Pn||(Pn={}));const po={[Pn.SERVER_PUSH_MESSAGE]:pr,[Pn.SERVER_PUSH_MESSAGE_MULTIPLE]:pr,[Pn.ERROR]:function(s){const{errorCode:n}=s;return[{type:`error:${n}`,data:s}]}},gn=new class{constructor(){this._outerEventEmitter=null,this._innerEventEmitter=null,this._filteredCallbackMap=new Map,this._outerEventEmitter=new On,this._innerEventEmitter=new On,this.InnerEventSubType=Jt}subscribeInnerEvent(s,n,g,I,E){var m;let D,M,T,P;["string","number"].includes(typeof n)?(T=`${s}:${n}`,P=g,M=I,D=E):(T=s,P=n,M=g,D=typeof I=="function"?I:void 0),D?this._subscribeWithFilter(T,P,M,D):(m=this._innerEventEmitter)===null||m===void 0||m.on(T,P,M)}emitInnerEvent(s,n){var g,I;if((g=this._innerEventEmitter)===null||g===void 0||g.emit(s,n),Object.keys(po).includes(s)){const E=(I=po[s])===null||I===void 0?void 0:I.call(po,n);E?.forEach(m=>{var D;m&&((D=this._innerEventEmitter)===null||D===void 0||D.emit(m.type,m.data))})}}subscribeOuterEvent(s,n,g){var I;(I=this._outerEventEmitter)===null||I===void 0||I.on(s,n,g)}unSubscribeOuterEvent(s,n,g){var I;(I=this._outerEventEmitter)===null||I===void 0||I.off(s,n,g)}unSubscribeInnerEvent(s,n,g,I){if(["string","number"].includes(typeof n)){const E=g,m=`${s}:${n}`;this._unsubscribeEvent(m,E,I)}else{const E=n;this._unsubscribeEvent(s,E,g)}}emitOuterEvent(s,n){var g;(g=this._outerEventEmitter)===null||g===void 0||g.emit(s,n)}getOuterEventEmitter(){return this._outerEventEmitter}rest(){this._outerEventEmitter=null,this._innerEventEmitter=null}_subscribeWithFilter(s,n,g,I){var E;const m=D=>{I.call(g,D)&&n.call(g,D)};this._filteredCallbackMap.has(s)||this._filteredCallbackMap.set(s,[]),this._filteredCallbackMap.get(s).push({originalCallback:n,filteredCallback:m,filter:I,context:g}),(E=this._innerEventEmitter)===null||E===void 0||E.on(s,m,g)}_unsubscribeEvent(s,n,g){var I,E;const m=this._filteredCallbackMap.get(s);if(m){const D=m.findIndex(M=>M.originalCallback===n&&M.context===g);if(D!==-1){const{filteredCallback:M}=m[D];return(I=this._innerEventEmitter)===null||I===void 0||I.off(s,M,g),m.splice(D,1),void(m.length===0&&this._filteredCallbackMap.delete(s))}}(E=this._innerEventEmitter)===null||E===void 0||E.off(s,n,g)}};class yl{constructor(){this._socket=null}connectSocket(n){return this._socket=new WebSocket(n),this._socket}send(n){var g,I;try{(g=this._socket)===null||g===void 0||g.send(n)}catch(E){(I=this._onSendFail)===null||I===void 0||I.call(this,E)}}bindSocketHandlers(n){const{onOpen:g,onMessage:I,onClose:E,onError:m,onSendFail:D}=n;this._socket&&(this._socket.binaryType="arraybuffer",this._socket.onopen=g,this._socket.onmessage=I,this._socket.onclose=E,this._socket.onerror=m,this._onSendFail=D)}unbindSocketHandlers(){this._socket&&(this._socket.onopen=null,this._socket.onmessage=null,this._socket.onclose=null,this._socket.onerror=null)}disconnect(){this._socket&&(this._socket.close(),this._socket=null)}}class cn{constructor(n){this._onError=n.onError}connectSocket(n){const g=this;return this._socket=io.connectSocket({url:n,header:{"content-type":"application/json"},complete:()=>{},fail:I=>g._onError(I)}),this._socket}send(n){var g;(g=this._socket)===null||g===void 0||g.send({data:n,fail:this._onSendFail})}bindSocketHandlers(n){const{onOpen:g,onMessage:I,onClose:E,onError:m,onSendFail:D}=n;this._socket&&(this._socket.onClose(E),this._socket.onOpen(g),this._socket.onMessage(I),this._socket.onError(m),this._onSendFail=D)}unbindSocketHandlers(){this._socket&&(this._socket.onClose(()=>{}),this._socket.onOpen(()=>{}),this._socket.onMessage(()=>{}),this._socket.onError(()=>{}))}disconnect(){this._socket&&(this._socket.close(),this._socket=null)}}const mr="CONNECT",Ls="SEND",Vc="DISCONNECT",ms="OPEN",as="MESSAGE",mu="CLOSE",ja="ERROR",Cs="SEND_FAIL";class sg{constructor(){this._worker=null,this._blobUrl=null}connectSocket(n){const g=new Blob([` +(function(){const i=document.createElement("link").relList;if(i&&i.supports&&i.supports("modulepreload"))return;for(const I of document.querySelectorAll('link[rel="modulepreload"]'))l(I);new MutationObserver(I=>{for(const h of I)if(h.type==="childList")for(const f of h.addedNodes)f.tagName==="LINK"&&f.rel==="modulepreload"&&l(f)}).observe(document,{childList:!0,subtree:!0});function r(I){const h={};return I.integrity&&(h.integrity=I.integrity),I.referrerPolicy&&(h.referrerPolicy=I.referrerPolicy),I.crossOrigin==="use-credentials"?h.credentials="include":I.crossOrigin==="anonymous"?h.credentials="omit":h.credentials="same-origin",h}function l(I){if(I.ep)return;I.ep=!0;const h=r(I);fetch(I.href,h)}})();var mg=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function BW(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function GU(t){if(t.__esModule)return t;var i=t.default;if(typeof i=="function"){var r=function l(){return this instanceof l?Reflect.construct(i,arguments,this.constructor):i.apply(this,arguments)};r.prototype=i.prototype}else r={};return Object.defineProperty(r,"__esModule",{value:!0}),Object.keys(t).forEach(function(l){var I=Object.getOwnPropertyDescriptor(t,l);Object.defineProperty(r,l,I.get?I:{enumerable:!0,get:function(){return t[l]}})}),r}var W1={exports:{}},LoA=W1.exports,e8;function UoA(){return e8||(e8=1,function(t,i){(function(r,l){t.exports=l()})(LoA,function(){const r=s=>s===void 0,l=s=>typeof s=="string",I=s=>{var n;return(n=Object.prototype.toString.call(s).match(/^\[object (.*)\]$/))===null||n===void 0?void 0:n[1].toLowerCase()},h=s=>typeof Array.isArray=="function"?Array.isArray(s):I(s)==="array",f=s=>s!==null&&typeof s=="object",w=s=>h(s)||f(s),_=s=>{if(typeof s!="string")return!1;const n=s[0];return!/[^a-zA-Z0-9]/.test(n)},k=s=>{if(typeof s!="object"||s===null)return!1;const n=Object.getPrototypeOf(s);if(n===null)return!0;let g=n;for(;Object.getPrototypeOf(g)!==null;)g=Object.getPrototypeOf(g);return n===g};function U(s=99999999){return Math.round(Math.random()*s)}const j=(s,n,g,u)=>{if(!w(s)||!w(n))return 0;let E=0;const m=Object.keys(n);let D;for(let M=0,T=m.length;M"u"&&typeof uni.requireNativePlugin=="function",to=Le&&typeof wx.miniapp=="object",uo=typeof uni<"u",Vs=Dt&&typeof tt.enterChat=="function",ki=Le||je||Dt||Jt||gi||To||Fi,ns=typeof window>"u"&&!ki&&typeof mg<"u"&&mg.NativeScriptGlobals!==void 0,jo=typeof mg<"u"&&(mg.nativeModuleProxy!==void 0||mg.ReactNative!==void 0),$i=typeof wx<"u"&&typeof wx.getAccountInfoSync=="function"&&!!wx.getAccountInfoSync().plugin,jt=typeof uni<"u"?!ki:typeof window<"u"&&!ki&&!jo,io=je?qq:Dt?tt:Jt?swan:gi?my:Le?wx:To?uni:Fi?jd:{},bi=jt&&window&&window.navigator&&window.navigator.userAgent||"",vs=/(micromessenger|webbrowser)/i.test(bi),HA=function(){let s="WEB";return vs?s="WEB":je?s="QQ_MP":Dt?s="TT_MP":Jt?s="BAIDU_MP":gi?s="ALI_MP":Le?s=to?"DONUT_NATIVE_APP":"WX_MP":To?s="UNI_NATIVE_APP":ns?s="NS_NATIVE_APP":jo&&(s="RN_NATIVE_APP"),rA[s]}(),ce=/iPad/i.test(bi),Ve=/iPhone/i.test(bi)&&!ce,Ut=/iPod/i.test(bi),nt=Ve||ce||Ut,It=function(){const s=bi.match(/OS (\d+)_/i);return s&&s[1]?s[1]:null}(),Xt=/Android/i.test(bi),$t=function(){const s=bi.match(/Android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i);if(!s)return null;const n=s[1]&&parseFloat(s[1]),g=s[2]&&parseFloat(s[2]);return n&&g?parseFloat(`${s[1]}.${s[2]}`):n||null}(),be=/Firefox/i.test(bi),Xe=/Edge/i.test(bi),vt=!Xe&&/Chrome/i.test(bi),wt=/MSIE/.test(bi)||bi.indexOf("Trident")>-1&&bi.indexOf("rv:11.0")>-1,Oi=function(){const s=/MSIE\s(\d+)\.\d/.exec(bi);let n=s&&parseFloat(s[1]);return!n&&/Trident\/7.0/i.test(bi)&&/rv:11.0/.test(bi)&&(n=11),n}(),po=/Safari/i.test(bi)&&!vt&&!Xt&&!Xe,No=/Windows/i.test(bi),oo=/MAC OS X/i.test(bi),Go=jt&&typeof Worker<"u"&&!wt,An=Xt||nt,rn=function(){if(typeof window>"u"||window.navigator===void 0)return!1;const{standalone:s}=window.navigator;return!(!nt||s||po)}();function Es(){let s="unknown";if(oo&&(s="mac"),No&&(s="windows"),nt&&(s="ios"),Xt&&(s="android"),ki)try{const{platform:n}=io.getSystemInfoSync();n!==void 0&&(s=n)}catch(n){console.error(n)}return s}const an=typeof process<"u"&&process.versions!==void 0&&process.versions.node!==void 0&&typeof window>"u";function Do(s,n){var g={};for(var u in s)Object.prototype.hasOwnProperty.call(s,u)&&n.indexOf(u)<0&&(g[u]=s[u]);if(s!=null&&typeof Object.getOwnPropertySymbols=="function"){var E=0;for(u=Object.getOwnPropertySymbols(s);E{io.request({url:g,data:u,method:n,timeout:E,header:{"content-type":zr},success:M=>m(M.data),fail:()=>D(new Error(`{"message":"Network error","code":${Jn}}`))})}):an?void 0:new Promise((m,D)=>{const M=new XMLHttpRequest,T=setTimeout(()=>{M.abort(),D(new Error(`{"message":"Request timeout","code":${Qr}}`))},E);M.onreadystatechange=function(){if(M.readyState===4)if(clearTimeout(T),M.status===200||M.status===304)try{m(M.responseText?JSON.parse(M.responseText):null)}catch{m(M.responseText)}else D(new Error(`{"message":"Network error","code":${Jn}}`))},M.open(n,g,!0),M.setRequestHeader("Content-type",zr),M.send(u||null)})})}function Rs(s){if(s==null)return!0;if(typeof s=="boolean")return!1;if(typeof s=="number")return s===0;if(typeof s=="string"||typeof s=="function"||Array.isArray(s))return s.length===0;if(s instanceof Error)return s.message==="";if(k(s)){for(const n in s)if(Object.prototype.hasOwnProperty.call(s,n))return!1;return!0}return(Object.prototype.toString.call(s)==="[object Map]"||Object.prototype.toString.call(s)==="[object Set]"||Object.prototype.toString.call(s)==="[object File]")&&s.size===0}function or(s,n){if(s===null||typeof s!="object")return s;const g=n||new WeakMap;if(g.has(s))return g.get(s);if(s instanceof Date)return new Date(s.getTime());if(s instanceof RegExp)return new RegExp(s.source,s.flags);if(s instanceof Map){const m=new Map;return g.set(s,m),s.forEach((D,M)=>{m.set(or(M,g),or(D,g))}),m}if(s instanceof Set){const m=new Set;return g.set(s,m),s.forEach(D=>{m.add(or(D,g))}),m}if(Array.isArray(s)){const m=[];return g.set(s,m),s.forEach(D=>{m.push(or(D,g))}),m}const u=Object.getPrototypeOf(s),E=Object.create(u);return g.set(s,E),[...Object.getOwnPropertyNames(s),...Object.getOwnPropertySymbols(s)].forEach(m=>{if(m==="__ob__"||m==="__v_skip"||m==="__v_isRef"||m==="__v_isReadonly")return;const D=Object.getOwnPropertyDescriptor(s,m);D&&(D.get||D.set?Object.defineProperty(E,m,D):E[m]=or(s[m],g))}),E}function en(s,n,g){const u=new WeakSet,E=(m,D)=>{if(n&&(D=n(m,D)),D===void 0)return"undefined";if(D===null)return null;if(Number.isNaN(D))return"NaN";if(D===1/0)return"Infinity";if(D===-1/0)return"-Infinity";if(typeof D=="function")return`[Function: ${D.name||"anonymous"}]`;if(typeof D=="symbol")return D.toString();if(typeof D=="bigint")return`${D.toString()}n`;if(typeof D=="object"&&D!==null){if(u.has(D))return"[Circular]";u.add(D)}return D instanceof Date?D.toISOString():D instanceof Error?{name:D.name,message:D.message}:D instanceof Map?{dataType:"Map",value:Array.from(D.entries())}:D instanceof Set?{dataType:"Set",value:Array.from(D.values())}:D};try{return JSON.stringify(s,E,g)}catch(m){return console.error("Failed to stringify:",m),""}}function wn(){let s,n;return{promise:new Promise((g,u)=>{s=g,n=u}),resolve:s,reject:n}}var Ht,yg=Object.freeze({__proto__:null,ANDROID_VERSION:$t,IE_VERSION:Oi,IN_ALIPAY_MINI_APP:gi,IN_BAIDU_MINI_APP:Jt,IN_BROWSER:jt,IN_DONUT_NATIVE_APP:to,IN_FEISHU_MINI_APP:Vs,IN_JD_MINI_APP:Fi,IN_MINI_APP:ki,IN_NODE:an,IN_NS_NATIVE_APP:ns,IN_QQ_MINI_APP:je,IN_RN_APP:jo,IN_TT_MINI_APP:Dt,IN_TT_MINI_GAME:ni,IN_UNI_APP:uo,IN_UNI_NATIVE_APP:To,IN_WX_MINI_APP:Le,IN_WX_MINI_APP_DESK:We,IN_WX_MINI_GAME:oe,IN_WX_MINI_PLUGIN:$i,IOS_VERSION:It,IS_ANDROID:Xt,IS_CHROME:vt,IS_EDGE:Xe,IS_FIREFOX:be,IS_IE:wt,IS_IOS:nt,IS_IPAD:ce,IS_IPHONE:Ve,IS_IPOD:Ut,IS_MAC:oo,IS_SAFARI:po,IS_WECHAT:vs,IS_WIN:No,IS_WORKER_AVAILABLE:Go,MINI_APP_NAMESPACE:io,USER_AGENT:bi,base16EncodeBinaryString:lA,deepCopyWithMethods:or,deepMerge:j,generatePromise:wn,getPlatformType:Es,getType:I,httpRequest:Pi,isArray:h,isArrayOrObject:w,isEmpty:Rs,isH5:An,isIOSWebView:rn,isNumber:s=>s!==null&&(typeof s=="number"&&!Number.isNaN(s-0)||typeof s=="object"&&s.constructor===Number),isObject:f,isPlainObject:k,isString:l,isUndefined:r,isUniIOSApp:function(){return To&&uni.getDeviceInfo().platform.toLocaleLowerCase()==="ios"},isValidRequestKey:_,platform:HA,randomInt:U,randomString:function(){const s="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";let n="";for(let g=32;g>0;--g)n+=s[Math.floor(62*Math.random())];return n},safeStringify:en});class On{constructor(){this.listeners={}}on(n,g,u){this.listeners[n]||(this.listeners[n]=[]),this.listeners[n].push({fn:g,context:u})}off(n,g,u){var E;g&&(this.listeners[n]=(E=this.listeners[n])===null||E===void 0?void 0:E.filter(m=>{const D=m.fn===g,M=!u||m.context===u;return!(D&&M)}))}emit(n,...g){const u=this.listeners[n];u&&u.forEach(E=>{const{fn:m,context:D}=E;try{m.apply(D,g)}catch(M){console.warn(`Error in event handler for ${n} error: ${en(M)}`)}})}once(n,g,u){const E=(...m)=>{g.apply(u,m),this.off(n,E)};this.on(n,E)}}(function(s){s.BUSINESS_COMMAND="business_command",s.C2C_REALTIME_MESSAGE="c2c_realtime_message",s.C2C_MESSAGE_MODIFIED="c2c_message_modified",s.C2C_REVOKED_MESSAGE="c2c_message_revoked",s.GROUP_REALTIME_MESSAGE="group_realtime_message",s.GROUP_MESSAGE_MODIFIED="group_message_modified",s.GROUP_MESSAGE_REVOKED="group_message_revoked",s.C2C_MESSAGE_READ_RECEIPT="c2c_message_read_receipt",s.MESSAGE_REACTION_UPDATED="message_reaction_updated",s.MESSAGE_REACTION_UPDATED_SYNC="message_reaction_updated_sync",s.GROUP_AT_TIPS="group_at_tips",s.USER_STATUS_UPDATE="user_status_update",s.FRIEND_LIST_MODIFIED="friend_list_modified",s.PROFILE_MODIFIED="profile_modified",s.CONV_MODIFIED="conversation_modified",s.GROUP_TIPS_NOTIFICATION="group_tips_notification",s.GROUP_MESSAGE_READ_RECEIPT="group_message_read_receipt",s.GROUP_MESSAGE_READ_SYNC="group_message_read_sync",s.GROUP_SYSTEM_NOTIFICATION="group_system_notification",s.C2C_MESSAGE_PEER_READ="c2c_message_peer_read",s.C2C_MESSAGE_READ_SYNC="c2c_message_read_sync",s.C2C_REMIND_TYPE_SYNC="c2c_remind_type_sync",s.FOLLOW_LIST_UPDATED="follow_list_updated",s.MESSAGE_EXTENSIONS_UPDATED="message_extensions_updated",s.ALL_MESSAGE_READ="all_message_read",s.CONVERSATION_MARK_UPDATED="conversation_mark_updated",s.CONVERSATION_GROUP_ADD="conversation_group_add",s.CONVERSATION_GROUP_DELETED="conversation_group_deleted",s.CONVERSATION_GROUP_UPDATED="conversation_group_updated",s.ALL_RECEIVE_MESSAGE_OPTION="all_receive_message_option",s.TOPIC_AT_TIPS="topic_at_tips",s.TOPIC_TIPS_NOTIFICATION="topic_tips_notification",s.TOPIC_SYSTEM_NOTIFICATION="topic_system_notification",s.TOPIC_MESSAGE_READ_SYNC="topic_message_read_sync",s.TOPIC_LATEST_MESSAGE="topic_latest_message",s.GROUP_MESSAGE_PINNED="group_message_pinned"})(Ht||(Ht={}));const Gn=[16,17];function Js(s){var n;const g=[];return(n=s?.GroupTips)===null||n===void 0||n.forEach(u=>{var E;u.GroupInfo.MillionGroupFlag===2?g.push(Ht.TOPIC_TIPS_NOTIFICATION):Gn.includes((E=u?.MsgBody)===null||E===void 0?void 0:E.OpType)?g.push(Ht.GROUP_MESSAGE_PINNED):g.push(Ht.GROUP_TIPS_NOTIFICATION)}),g}const pr=[{conditions:[{type:"event",value:100}],subType:Ht.BUSINESS_COMMAND},{conditions:[{type:"event",value:24}],subType:Ht.ALL_RECEIVE_MESSAGE_OPTION},{conditions:[{type:"event",value:26}],subType:Ht.TOPIC_LATEST_MESSAGE},{conditions:[{type:"hasKey",value:"C2cMsgArray"}],subType:Ht.C2C_REALTIME_MESSAGE},{conditions:[{type:"hasKey",value:"C2cMsgModNotifys"}],subType:Ht.C2C_MESSAGE_MODIFIED},{conditions:[{type:"hasKey",value:"ProfileDataMod"}],subType:Ht.PROFILE_MODIFIED},{conditions:[{type:"hasKey",value:"UserStatusList"}],subType:Ht.USER_STATUS_UPDATE},{conditions:[{type:"hasKey",value:"FriendListMod"}],subType:Ht.FRIEND_LIST_MODIFIED},{conditions:[{type:"hasKey",value:"GroupMsgArray"}],subType:Ht.GROUP_REALTIME_MESSAGE},{conditions:[{type:"hasKey",value:"GroupMsgModNotifys"}],subType:Ht.GROUP_MESSAGE_MODIFIED},{conditions:[{type:"hasKey",value:"C2cNotifyMsgArray"}],subTypeParser:function(s){var n;const g=[];return(n=s?.C2cNotifyMsgArray)===null||n===void 0||n.forEach(u=>{u.WithdrawC2cMsgNotify&&g.push(Ht.C2C_REVOKED_MESSAGE),u.C2cReadedReceipt&&g.push(Ht.C2C_MESSAGE_PEER_READ),u.ReadC2cMsgNotify&&g.push(Ht.C2C_MESSAGE_READ_SYNC),u.MuteNotificationsSync&&g.push(Ht.C2C_REMIND_TYPE_SYNC)}),g}},{conditions:[{type:"hasKey",value:"GroupTips"},{type:"event",value:4}],subTypeParser:Js},{conditions:[{type:"hasKey",value:"GroupTips"},{type:"event",value:5}],subTypeParser:function(s){var n;const g=[];return(n=s?.GroupTips)===null||n===void 0||n.forEach(u=>{Array.isArray(u.MsgBody.GroupWithdrawInfoArray)?g.push(Ht.GROUP_MESSAGE_REVOKED):Array.isArray(u.MsgBody.GroupMsgReceiptList)?g.push(Ht.GROUP_MESSAGE_READ_RECEIPT):Array.isArray(u.MsgBody.GroupReadInfoArray)?u.MsgBody.GroupReadInfoArray[0].TopicId?g.push(Ht.TOPIC_MESSAGE_READ_SYNC):g.push(Ht.GROUP_MESSAGE_READ_SYNC):u.GroupInfo.MillionGroupFlag===2?g.push(Ht.TOPIC_SYSTEM_NOTIFICATION):g.push(Ht.GROUP_SYSTEM_NOTIFICATION)}),g}},{conditions:[{type:"hasKey",value:"GroupTips"},{type:"event",value:6}],subTypeParser:Js},{conditions:[{type:"hasKey",value:"GroupTips"},{type:"event",value:12}],subTypeParser:function(s){var n;const g=[];return(n=s?.GroupTips)===null||n===void 0||n.forEach(u=>{const{GroupAtTips:{TopicId:E}}=u;E?g.push(Ht.TOPIC_AT_TIPS):g.push(Ht.GROUP_AT_TIPS)}),g}},{conditions:[{type:"hasKey",value:"RecentContactMod"}],subTypeParser:function(s){var n;const g=[];return(n=s?.RecentContactMod)===null||n===void 0||n.forEach(u=>{switch(u.PushType){case ze.CONV_MARK_UPDATED:g.push(Ht.CONVERSATION_MARK_UPDATED);break;case ze.CONV_GROUP_ADDED:g.push(Ht.CONVERSATION_GROUP_ADD);break;case ze.CONV_GROUP_DELETED:g.push(Ht.CONVERSATION_GROUP_DELETED);break;case ze.CONV_GROUP_UPDATED:g.push(Ht.CONVERSATION_GROUP_UPDATED);break;default:g.push(Ht.CONV_MODIFIED)}}),g}},{conditions:[{type:"hasKey",value:"MsgReactionNotifyList"}],subType:Ht.MESSAGE_REACTION_UPDATED},{conditions:[{type:"hasKey",value:"MsgReactionNotify"}],subType:Ht.MESSAGE_REACTION_UPDATED_SYNC},{conditions:[{type:"hasKey",value:"C2cMsgInfo"}],subType:Ht.C2C_MESSAGE_READ_RECEIPT},{conditions:[{type:"hasKey",value:"FollowChangeList"}],subType:Ht.FOLLOW_LIST_UPDATED},{conditions:[{type:"hasKey",value:"MsgExtensionNotify"}],subType:Ht.MESSAGE_EXTENSIONS_UPDATED},{conditions:[{type:"hasKey",value:"C2CReadAllMsg"}],subType:Ht.ALL_MESSAGE_READ}];var Pn;function mr(s){var n;const g=Array.isArray((n=s?.body)===null||n===void 0?void 0:n.EventArray)?s.body.EventArray:[],u=[];return g.forEach(E=>{E.Flag=s.body.Flag;const m=pr.find(M=>M.conditions.every(T=>{switch(T.type){case"event":return E.Event===T.value;case"hasKey":return Object.prototype.hasOwnProperty.call(E,T.value);default:return!1}}));if(!m)return null;let D=[];typeof m.subTypeParser=="function"?D=m.subTypeParser(E):m.subType&&(D=m.subType),Array.isArray(D)?D.forEach(M=>{u.push({type:`${Pn.SERVER_PUSH_MESSAGE}:${M}`,data:E})}):u.push({type:`${Pn.SERVER_PUSH_MESSAGE}:${D}`,data:E})}),u}(function(s){s.SERVER_PUSH_MESSAGE="im_open_push.msg_push",s.SERVER_PUSH_MESSAGE_MULTIPLE="im_open_push.multi_msg_push_ws",s.ERROR="error"})(Pn||(Pn={}));const mo={[Pn.SERVER_PUSH_MESSAGE]:mr,[Pn.SERVER_PUSH_MESSAGE_MULTIPLE]:mr,[Pn.ERROR]:function(s){const{errorCode:n}=s;return[{type:`error:${n}`,data:s}]}},gn=new class{constructor(){this._outerEventEmitter=null,this._innerEventEmitter=null,this._filteredCallbackMap=new Map,this._outerEventEmitter=new On,this._innerEventEmitter=new On,this.InnerEventSubType=Ht}subscribeInnerEvent(s,n,g,u,E){var m;let D,M,T,P;["string","number"].includes(typeof n)?(T=`${s}:${n}`,P=g,M=u,D=E):(T=s,P=n,M=g,D=typeof u=="function"?u:void 0),D?this._subscribeWithFilter(T,P,M,D):(m=this._innerEventEmitter)===null||m===void 0||m.on(T,P,M)}emitInnerEvent(s,n){var g,u;if((g=this._innerEventEmitter)===null||g===void 0||g.emit(s,n),Object.keys(mo).includes(s)){const E=(u=mo[s])===null||u===void 0?void 0:u.call(mo,n);E?.forEach(m=>{var D;m&&((D=this._innerEventEmitter)===null||D===void 0||D.emit(m.type,m.data))})}}subscribeOuterEvent(s,n,g){var u;(u=this._outerEventEmitter)===null||u===void 0||u.on(s,n,g)}unSubscribeOuterEvent(s,n,g){var u;(u=this._outerEventEmitter)===null||u===void 0||u.off(s,n,g)}unSubscribeInnerEvent(s,n,g,u){if(["string","number"].includes(typeof n)){const E=g,m=`${s}:${n}`;this._unsubscribeEvent(m,E,u)}else{const E=n;this._unsubscribeEvent(s,E,g)}}emitOuterEvent(s,n){var g;(g=this._outerEventEmitter)===null||g===void 0||g.emit(s,n)}getOuterEventEmitter(){return this._outerEventEmitter}rest(){this._outerEventEmitter=null,this._innerEventEmitter=null}_subscribeWithFilter(s,n,g,u){var E;const m=D=>{u.call(g,D)&&n.call(g,D)};this._filteredCallbackMap.has(s)||this._filteredCallbackMap.set(s,[]),this._filteredCallbackMap.get(s).push({originalCallback:n,filteredCallback:m,filter:u,context:g}),(E=this._innerEventEmitter)===null||E===void 0||E.on(s,m,g)}_unsubscribeEvent(s,n,g){var u,E;const m=this._filteredCallbackMap.get(s);if(m){const D=m.findIndex(M=>M.originalCallback===n&&M.context===g);if(D!==-1){const{filteredCallback:M}=m[D];return(u=this._innerEventEmitter)===null||u===void 0||u.off(s,M,g),m.splice(D,1),void(m.length===0&&this._filteredCallbackMap.delete(s))}}(E=this._innerEventEmitter)===null||E===void 0||E.off(s,n,g)}};class Dl{constructor(){this._socket=null}connectSocket(n){return this._socket=new WebSocket(n),this._socket}send(n){var g,u;try{(g=this._socket)===null||g===void 0||g.send(n)}catch(E){(u=this._onSendFail)===null||u===void 0||u.call(this,E)}}bindSocketHandlers(n){const{onOpen:g,onMessage:u,onClose:E,onError:m,onSendFail:D}=n;this._socket&&(this._socket.binaryType="arraybuffer",this._socket.onopen=g,this._socket.onmessage=u,this._socket.onclose=E,this._socket.onerror=m,this._onSendFail=D)}unbindSocketHandlers(){this._socket&&(this._socket.onopen=null,this._socket.onmessage=null,this._socket.onclose=null,this._socket.onerror=null)}disconnect(){this._socket&&(this._socket.close(),this._socket=null)}}class cn{constructor(n){this._onError=n.onError}connectSocket(n){const g=this;return this._socket=io.connectSocket({url:n,header:{"content-type":"application/json"},complete:()=>{},fail:u=>g._onError(u)}),this._socket}send(n){var g;(g=this._socket)===null||g===void 0||g.send({data:n,fail:this._onSendFail})}bindSocketHandlers(n){const{onOpen:g,onMessage:u,onClose:E,onError:m,onSendFail:D}=n;this._socket&&(this._socket.onClose(E),this._socket.onOpen(g),this._socket.onMessage(u),this._socket.onError(m),this._onSendFail=D)}unbindSocketHandlers(){this._socket&&(this._socket.onClose(()=>{}),this._socket.onOpen(()=>{}),this._socket.onMessage(()=>{}),this._socket.onError(()=>{}))}disconnect(){this._socket&&(this._socket.close(),this._socket=null)}}const fr="CONNECT",Ls="SEND",Vc="DISCONNECT",ms="OPEN",as="MESSAGE",Su="CLOSE",Wa="ERROR",Cs="SEND_FAIL";class sg{constructor(){this._worker=null,this._blobUrl=null}connectSocket(n){const g=new Blob([` let _socket = null; self.onmessage = (event) => { @@ -95,26 +95,26 @@ _socket = null; } } -`],{type:"application/javascript"});this._worker=new Worker(URL.createObjectURL(g)),this._worker.postMessage({type:mr,url:n})}send(n){var g,I;try{(g=this._worker)===null||g===void 0||g.postMessage({type:Ls,data:n})}catch(E){(I=this._onSendFail)===null||I===void 0||I.call(this,E)}}bindSocketHandlers(n){const{onOpen:g,onMessage:I,onClose:E,onError:m,onSendFail:D}=n;if(this._worker){const M={[ms]:g,[as]:I,[mu]:E,[ja]:m,[Cs]:D};this._onSendFail=D,this._worker.onmessage=T=>{var P;const{type:W}=T?.data||{};typeof M[W]=="function"&&((P=M[W])===null||P===void 0||P.call(M,T?.data))}}}unbindSocketHandlers(){this._worker&&(this._worker.onmessage=null)}disconnect(){this._worker&&(this._worker.postMessage({type:Vc}),this._worker.terminate(),this._worker=null),this._blobUrl&&(URL.revokeObjectURL(this._blobUrl),this._blobUrl=null)}}class OI{}var Xo,Zi=new class{constructor(){this._store=new Map}get(s){return this._store.get(s)}getStorage(s){return ki?gi?my.getStorageSync({key:s}).data:io.getStorageSync(s):this._canUseLocalStorage()?localStorage.getItem(s):{}}set(s,n){const g=this._store.get(s)||{};n instanceof Map?this._store.set(s,n):this._store.set(s,Object.assign(Object.assign({},g),n))}setStorage(s,n){ki?gi?my.setStorageSync({key:s,data:JSON.stringify(n)}):io.setStorageSync(s,JSON.stringify(n)):this._canUseLocalStorage()&&localStorage.setItem(s,JSON.stringify(n))}clear(s){typeof s=="string"?this._store.set(s,{}):this._store.clear()}clearLocalStorage(s){this._canUseLocalStorage()&&(typeof s=="string"?localStorage.setItem(s,""):localStorage.clear())}reset(){this.clear()}_canUseLocalStorage(){return typeof window<"u"&&navigator&&navigator.cookieEnabled&&localStorage}};class pc{connectSocket(n){return this._socket=io.connectSocket({url:n,header:{"content-type":"application/json"},multiple:!0,complete:()=>{}}),this._socket}send(n){var g;(g=this._socket)===null||g===void 0||g.send({data:n,fail:this._onSendFail})}bindSocketHandlers(n){const{onOpen:g,onMessage:I,onClose:E,onError:m,onSendFail:D}=n;this._socket&&(this._socket.onClose(E),this._socket.onOpen(g),this._socket.onMessage(M=>I(M?.data)),this._socket.onError(()=>m),this._onSendFail=D)}unbindSocketHandlers(){this._socket&&(this._socket.onClose(()=>{}),this._socket.onOpen(()=>{}),this._socket.onMessage(()=>{}),this._socket.onError(()=>{}))}disconnect(){this._socket&&(this._socket.close(),this._socket=null)}}(function(s){s[s.CONNECTED=0]="CONNECTED",s[s.CONNECTING=1]="CONNECTING",s[s.DISCONNECTED=2]="DISCONNECTED"})(Xo||(Xo={}));class ng{constructor(n){this._url="",this._readyState=Xo.DISCONNECTED,this._url=n,this._id=F(),this._emitter=new On,gi?this._socket=new pc:It||_o||ft||qe||Fi||Vt?this._socket=new cn({onError:this._onError.bind(this)}):an?this._socket=new OI:this._canUseWebWorker()?this._socket=new sg:this._socket=new yl,this.connect()}connect(){this.doOpen(),this._bindSocketHandlers()}doOpen(){[Xo.CONNECTED,Xo.CONNECTING].includes(this._readyState)||(this._readyState=Xo.CONNECTING,this._ws=this._socket.connectSocket(this._url))}send(n){this._readyState!==Xo.CONNECTED?this.reconnect():this._socket.send(n)}reconnect(){[Xo.CONNECTED,Xo.CONNECTING].includes(this._readyState)||(this.disconnect(),this.doOpen())}getId(){return this._id}on(n,g,I){this._emitter.on(n,g,I)}off(n,g,I){this._emitter.off(n,g,I)}isConnected(){return this._readyState===Xo.CONNECTED}disconnect(){this._readyState=Xo.DISCONNECTED,this._unbindSocketHandlers(),this._socket.disconnect()}_onOpen(n){this._readyState===Xo.CONNECTING&&(this._readyState=Xo.CONNECTED,this._emitter.emit("connect",{socketId:this._id,event:n}))}_onMessage(n){this._emitter.emit("message",n)}_onClose(n){this._readyState=Xo.DISCONNECTED,this._emitter.emit("close",{socketId:this._id,event:n})}_onError(n){this._readyState=Xo.DISCONNECTED,this._emitter.emit("error",{socketId:this._id,error:n})}_onSendFail(n){this._readyState=Xo.DISCONNECTED,this._emitter.emit("sendFail",{socketId:this._id,error:n})}_bindSocketHandlers(){this._socket.bindSocketHandlers({onOpen:this._onOpen.bind(this),onMessage:this._onMessage.bind(this),onClose:this._onClose.bind(this),onError:this._onError.bind(this),onSendFail:this._onSendFail.bind(this)})}_unbindSocketHandlers(){this._socket.unbindSocketHandlers()}_canUseWebWorker(){const n=Zi.get("cloudConfig")||{};return(r(n.isWorkerEnabled)||n.isWorkerEnabled==="1")&&No}}const Dg={[ct.SINGAPORE]:[[2e7,3e7],[172e7,173e7]],[ct.KOREA]:[[3e7,4e7],[173e7,174e7]],[ct.GERMANY]:[[4e7,5e7],[174e7,175e7]],[ct.IND]:[[5e7,6e7],[175e7,176e7]],[ct.JPN]:[[6e7,7e7],[176e7,177e7]],[ct.USA]:[[7e7,8e7],[177e7,178e7]],[ct.INDONESIA]:[[8e7,9e7],[178e7,179e7]],[ct.KSA]:[[9e7,1e8],[179e7,18e8]]};function la(s){var n;if(!((n=Zi.get("instance"))===null||n===void 0)&&n.oversea)return ct.OVERSEA;for(const g of Object.keys(Dg))for(const[I,E]of Dg[g])if(s>=I&&s`${iA}=${W[iA]}`).join("&"));var W;return g?`${s}/binfo?${P}&compress=gzip`:`${s}/info?${P}`}function Hs(s){const n=Zi.get("instance"),{sdkAppId:g,testEnv:I,proxyServer:E}=n,m=la(g);if(I)return Hn(mt.TEST[m].DEFAULT,{isBinary:s});if(!Rs(E))return Hn(E,{isBinary:s});const D=mt.PRODUCTION[m],M=jt&&D.ANYCAST,T=jt,P=!!D.BACKUP_CN;return Hn({[Go.INITIAL]:()=>(wo=Go.DEFAULT,D.DEFAULT),[Go.DEFAULT]:()=>(wo=Go.IPV6,D.IPV6),[Go.IPV6]:()=>(wo=Go.BACKUP,D.BACKUP),[Go.BACKUP]:()=>T?(wo=Go.BACKUP_WEB_ONLY,function(W){const iA=Math.floor(10001*Math.random())+1e4;return W.replace("*",String(iA))}(D.BACKUP_WEB_ONLY)):P?(wo=Go.BACKUP_CN,D.BACKUP_CN):M?(wo=Go.ANYCAST,D.ANYCAST):D.DEFAULT,[Go.BACKUP_WEB_ONLY]:()=>P?(wo=Go.BACKUP_CN,D.BACKUP_CN):M?(wo=Go.ANYCAST,D.ANYCAST):D.DEFAULT,[Go.BACKUP_CN]:()=>(wo=M?Go.ANYCAST:Go.DEFAULT,D[wo]),[Go.ANYCAST]:()=>(wo=Go.DEFAULT,D.ANYCAST="",D.DEFAULT)}[wo](),{isBinary:s})}var Sg=new class{constructor(){this._timeOffsetWithServer=0}getServerTimeMs(){return Date.now()+this._timeOffsetWithServer}getServerTimeSeconds(){return Math.floor(this.getServerTimeMs()/1e3)}getTimeOffsetWithServer(){return this._timeOffsetWithServer}calculateTimeOffsetWithServer(s,n){const g=Date.now(),I=g-s;this._timeOffsetWithServer=n+I-g}};const mc=16;var fn=new class{constructor(){this._tasks=[],this._timer=null,this._taskMap=new Map}_addTaskToScheduler(s){const{id:n}=s;this.removeTask(n),this._tasks.push(s),this._taskMap.set(n,s),this._sort(),this._scheduleNextTask()}_createTask(s){const{id:n,callback:g,context:I,isOnce:E=!1,intervalMs:m=mc}=s,D=Math.max(m,mc);return{id:n,nextExecuteTime:Date.now()+D,intervalMs:m,callback:g,context:I,isOnce:E}}addTask(s){const n=this._createTask(s);this._addTaskToScheduler(n)}addOnceTask(s){const n=this._createTask(Object.assign(Object.assign({},s),{isOnce:!0}));this._addTaskToScheduler(n)}removeTask(s){const n=this._tasks.findIndex(g=>g.id===s);n>-1&&(this._tasks.splice(n,1),this._taskMap.delete(s),this._scheduleNextTask())}updateTaskInterval(s,n){const g=this._taskMap.get(s);g&&(g.intervalMs=n,g.nextExecuteTime=Date.now()+n,this._sort(),this._scheduleNextTask())}clearAllTasks(){this._tasks=[],this._taskMap.clear(),this._timer&&(clearTimeout(this._timer),this._timer=null)}dispose(){this.clearAllTasks()}_sort(){this._tasks.sort((s,n)=>s.nextExecuteTime-n.nextExecuteTime)}_scheduleNextTask(){this._timer&&(clearTimeout(this._timer),this._timer=null);const s=this._tasks[0];if(s){const n=Math.max(0,s.nextExecuteTime-Date.now());this._timer=setTimeout(()=>this._execute(),n)}}_execute(){const s=Date.now();for(;this._tasks.length&&this._tasks[0].nextExecuteTime<=s;){const n=this._tasks[0];try{n.context?n.callback.call(n.context):n.callback(),n.isOnce?this.removeTask(n.id):(n.nextExecuteTime=s+n.intervalMs,this._sort())}catch(g){console.warn(`Task ${n.id} execution failed:`,g),n.isOnce&&this.removeTask(n.id)}}this._scheduleNextTask()}};function Na(s){const n=[];for(let g=0;g=55296&&I<=56319){const E=s.charCodeAt(++g)-56320+(I-55296<<10)+65536;n.push(240|E>>18,128|E>>12&63,128|E>>6&63,128|63&E)}else I<=127?n.push(I):I<=2047?n.push(192|I>>6,128|63&I):n.push(224|I>>12,128|I>>6&63,128|63&I)}return new Uint8Array(n)}function In(s){const n=Array.isArray(s)?[]:Object.create(null);for(const g in s)Object.prototype.hasOwnProperty.call(s,g)&&_(g)&&s[g]!=null&&(s[g]===null||typeof s[g]!="object"?n[g]=s[g]:n[g]=In(s[g]));return n}function fs(s,n){if(pA.includes(s))return 0;const g=Na(JSON.stringify(n));let I=4294967295;const{length:E}=g;for(let m=0;m>>=1:I=I>>>1^3988292384}return(4294967295^I)>>>0}function Ia(s){const{servcmd:n,data:g}=s,I=function(m){const D=Zi.get("login")||{},M=Zi.get("instance")||{};return{servcmd:m,ver:"v4",platform:HA,websdkappid:537048168,websdkversion:"1.7.3",a2:D.a2Key||void 0,tinyid:D.tinyID||void 0,status_instid:D.statusInstanceId||0,sdkappid:M.sdkAppId,contenttype:"json",reqtime:Math.floor(Date.now()/1e3),identifier:D.a2Key?void 0:D.userId,usersig:D.a2Key?void 0:D.userSig,sdkability:478343027,sdkability_ext:IA(""),cappid:M.applicationID||0,tjgID:"",seq:Da(),cs:0}}(n),E=In(g);return I.cs=fs(n,E),{head:I,body:E}}function yn(s){const{servcmd:n,data:g}=s,I=function(m){const D=Zi.get("login")||{},M=Zi.get("instance")||{};return{servcmd:m,ver:"v4",platform:HA,websdkappid:537048168,websdkversion:"1.7.3",sdkappid:M.sdkAppId,contenttype:"",reqtime:Math.floor(Date.now()/1e3),identifier:"",usersig:"",status_instid:D.statusInstanceId||0,sdkability:478343027,sdkability_ext:IA(""),cappid:M.applicationID||0,seq:Da(),cs:0}}(n),E=In(g);return I.cs=fs(n,E),{head:I,body:E}}let Ga=F();function Da(){return Ga=Ga<2415919103?Ga+1:F(),Ga}function $(){var s;const n=Zi.get("login")||{},g=Zi.get("instance")||{};return{sdk_type:30,sdk_app_id:g.sdkAppId,sdk_version:"1.6.18",tiny_id:Number(n.tinyID),user_id:n.userId||((s=Zi.get("webPush"))===null||s===void 0?void 0:s.userId),platform:HA,instance_id:g.instanceId,trace_id:new Date().getTime()}}var K,vA=Object.freeze({__proto__:null,calcBodyCRC:fs,filterProtocolDataInvalidFields:In,generateCosSpecifiedData:function(s){const{servcmd:n,data:g}=s,I=function(m){const D=Zi.get("login")||{},M=Zi.get("instance")||{};return{servcmd:m,ver:"v4",platform:HA,websdkappid:537048168,websdkversion:"1.7.3",sdkappid:M.sdkAppId,contenttype:"json",reqtime:Math.floor(Date.now()/1e3),identifier:D.userId,usersig:D.userSig,status_instid:D.statusInstanceId||0,sdkability:478343027,sdkability_ext:IA(""),cappid:M.applicationID||0,seq:Da(),cs:0}}(n),E=In(g);return I.cs=fs(n,E),{head:I,body:E}},generateProtocolData:Ia,generateSSOLogProtocolData:yn,generateSequence:Da,getCommonHead:$,getHostSite:la,taskScheduler:fn,timeManager:Sg});(function(s){s[s.info=4]="info",s[s.warning=5]="warning",s[s.error=6]="error"})(K||(K={}));const qA={method:"extension",networkType:"network_type",eventType:"event_type",code:"error_code",message:"error_message",moreMessage:"more_message",duplicate:"duplicate",costTime:"cost_time",level:"level",uiPlatform:"ui_platform",timestamp:"timestamp"};class te{constructor(n){this.level=K.info,this._canSendLog=!0,this._logCreatedAt=Sg.getServerTimeMs(),this.timestamp=0,this.networkType=8,this.code=0,this.moreMessage="",this.method="",this.message="",this.costTime=0,this.duplicate=!1,this.eventType=0,this.uiPlatform=this._getUiPlatform(),this._sdkEdition=this._getSDKEdition();const{method:g,eventType:I=0,message:E="",costTime:m=0,error:D,uiPlatform:M,moreMessage:T="",code:P=0,startTime:W=0}=n||{};this.eventType=I,this.method=g,this.message=E,this.costTime=m,this.moreMessage=`${T} startTime:${W}`,this.code=P,D&&this.setError(D),Rs(M)||(this.uiPlatform=M)}setMoreMessage(n){this.moreMessage=`${this.moreMessage} ${n}`}updateLogCreatedAtByTimeOffset(){this._logCreatedAt+=Sg.getTimeOffsetWithServer()}end(n=!1){this._canSendLog&&(this._canSendLog=!1,this.timestamp=Sg.getServerTimeMs(),this._ssoLogModule.pushToLogQueue(this._convertSSOLogDataKeyToServe()),n&&this._ssoLogModule.uploadSSOLogData())}setError(n){var g;return n instanceof Error?this._canSendLog?(!((g=Zi.get("netWorkMonitor"))===null||g===void 0)&&g.isNetworkOnline&&(n.errorCode&&(this.code=n.errorCode),n.errorMessage&&this.setMoreMessage(n.errorMessage)),this.level=K.error,this):this:(console.warn("SSOLogData.setError value not instanceof Error, please check!"),this)}setLogInfo(n){return Object.keys(n).forEach(g=>{Object.keys(qA).includes(g)&&(this[g]=n[g])}),this}setSSOLogModule(n){this._ssoLogModule=n}_convertSSOLogDataKeyToServe(){const n={};return Object.keys(this).forEach(g=>{const I=g;qA[I]&&(n[qA[I]]=this[I])}),n}_getUiPlatform(){var n;const g=(n=Zi.get("instance"))===null||n===void 0?void 0:n.scene;if(typeof g=="string"){const I=Number(g);return isNaN(I)?void 0:I}}_getSDKEdition(){var n;return(n=Zi.get("instance"))===null||n===void 0?void 0:n.sdkEdition}}var pe;(function(s){s.RECONNECTED="reconnected",s.CLOUD_CONFIG_UPDATE="cloud_config_update",s.SOCKET_DISCONNECTED="socket_disconnected"})(pe||(pe={}));var Oe=pe;const Fe=20,ot=6e4,ut=[4,5,6],St="report-logger";var Ot=new class{constructor(){this._sdkAppIdBlackList=[],this._tinyIdWhiteList=[],this._reportLevel=[4,5,6],this._minThreshold=Fe,this._maxThreshold=100,this._waitingTime=ot,this._lastReportAt=Date.now(),this._ssoLogMap=new Map,this._logLevel=lA.DEBUG,this._throttleConfig={global:{throttleTime:De,maxCount:Ce},single:{throttleTime:zA,maxCount:$A}},this._globalThrottle={count:0,startTime:Date.now()},this._singleThrottleMap=new Map,gn.subscribeInnerEvent(Oe.CLOUD_CONFIG_UPDATE,this._handleCloudConfigUpdate,this),fn.addTask({id:St,intervalMs:1e3,callback:this._checkAndReportIfDue,context:this}),this._logQueue=[],this._savePlatFormInfo()}_handleCloudConfigUpdate(s){const{evt_rpt_threshold:n=Fe,evt_rpt_waiting:g=ot,evt_rpt_level:I=ut,evt_rpt_sdkappid_bl:E="",evt_rpt_tinyid_wl:m="",evt_rpt_global_throttle_time:D=De,evt_rpt_global_throttle_count:M=Ce,evt_rpt_single_throttle_time:T=zA,evt_rpt_single_throttle_count:P=$A}=s||{};this._sdkAppIdBlackList=E.split(",").map(W=>Number(W)),this._waitingTime=Number(g),this._minThreshold=n,this._reportLevel=I,this._tinyIdWhiteList=m.split(","),this._throttleConfig={global:{throttleTime:D,maxCount:M},single:{throttleTime:T,maxCount:P}}}createSSOLogData(s){const n=new te(s);return n.setSSOLogModule(this),this._ssoLogMap.set(s.method,n),n}getSSOLogData(s){return this._ssoLogMap.get(s)||{}}pushToLogQueue(s){s&&(this._logQueue.push(s),this._shouldUploadImmediately()&&this.uploadSSOLogData())}setLogLevel(s){[lA.DEBUG,lA.ERROR,lA.INFO,lA.NONE,lA.WARN].includes(s)&&(this._logLevel=s)}debug(s,n="",g){this._log(lA.DEBUG,s,n,g)}info(s,n="",g){this._log(lA.INFO,s,n,g)}warn(s,n="",g){this._log(lA.WARN,s,n,g)}error(s,n="",g){this._log(lA.ERROR,s,n,g)}_shouldUploadImmediately(){return this._logQueue.length>=this._minThreshold}_isReportDue(){return Date.now()>=this._lastReportAt+this._waitingTime}_checkAndReportIfDue(){this._isReportDue()&&this._logQueue.length>0&&this.uploadSSOLogData()}uploadSSOLogData(){return mA(this,void 0,void 0,function*(){if(this._logQueue.length===0)return;const s=this._logQueue.slice();this._logQueue=[];try{const n=this._filterLogs(s);if(n.length===0)return void(this._lastReportAt=Date.now());const g={Header:$(),Event:n};Rs(g.Header.user_id)||(yield function(I){const E="imopenstat.tim_web_report_v2",m=yn({servcmd:E,data:I}),D=`${m.head.seq}${E}`;return fe.sendPacket(m,{requestId:D})}(g))}catch(n){this._requeueFailedLogs(s),this.debug("uploadSSOLogData",en(n))}finally{this._lastReportAt=Date.now()}})}_requeueFailedLogs(s){this._logQueue=s.concat(this._logQueue);const n=this._logQueue.length-200;n>0&&(this._logQueue.splice(0,n),this.debug("uploadSSOLogData",`log queue overflow, dropped ${n} oldest logs`))}_savePlatFormInfo(){var s,n;if(It){const g=(n=(s=wx.getAccountInfoSync)===null||s===void 0?void 0:s.call(wx))===null||n===void 0?void 0:n.miniProgram;if(g){const{appId:I,envVersion:E}=g;Zi.set("instance",{appId:I,envVersion:E})}}else jt&&Zi.set("instance",{href:window.location.href})}_filterLogs(s){const{tinyID:n}=Zi.get("login")||{},{sdkAppId:g}=Zi.get("instance")||{};return this._sdkAppIdBlackList.includes(g)&&!this._tinyIdWhiteList.includes(n)?[]:s.filter(I=>this._reportLevel.includes(I.level))}_checkThrottle(s){return!!this._checkGlobalThrottle()||this._checkSingleThrottle(s)}_checkGlobalThrottle(){const s=Date.now();if(s-this._globalThrottle.startTime>=this._throttleConfig.global.throttleTime)this._globalThrottle.count=1,this._globalThrottle.startTime=s;else if(this._globalThrottle.count++,this._globalThrottle.count>this._throttleConfig.global.maxCount)return!0;return!1}_checkSingleThrottle(s){const n=Date.now(),g=this._singleThrottleMap.get(s);return g?n-g.startTime>=this._throttleConfig.single.throttleTime?(g.count=1,g.startTime=n,!1):g.count>=this._throttleConfig.single.maxCount||(g.count++,!1):(this._singleThrottleMap.set(s,{count:1,startTime:n}),!1)}_shouldLog(s){return s>=this._logLevel&&this._logLevel!==lA.NONE}_shouldReport(s){return this._reportLevel.includes(WA[s])}_formatLog(s,n,g,I){const E=new Date,m=`${E.getHours()}:${E.getMinutes()}:${E.getSeconds()}:${E.getMilliseconds()}`,D=`<${lA[s]}>`;return Rt||ki?[`${cA} [${m}] ${D} [${n}] ${g}`]:["%c%s%c%s","background:#0abf5b; padding:1px; border-radius:3px; color: #fff",cA,"",`[${m}] ${D} [${n}] ${g} params: ${en(I)}`]}_log(s,n,g,I){if(this._shouldLog(s)){const E=this._formatLog(s,n,g,I);TA[s].apply(console,E)}if(this._shouldReport(s)){const E=this._getThrottleKey(n,g,I);this._checkThrottle(E)||this.createSSOLogData(Object.assign(Object.assign({message:g},I),{method:n})).end()}}_getThrottleKey(s,n,g){const I=`${s}${n}${en(Object.assign(Object.assign({},g),{costTime:""}))}`,E=Na(JSON.stringify(I));let m=4294967295;const{length:D}=E;for(let M=0;M>>=1:m=m>>>1^3988292384}return`${(4294967295^m)>>>0}`}reset(){console.log("SSO_LOG_MODULE.reset"),fn.removeTask(St),gn.unSubscribeInnerEvent(Oe.CLOUD_CONFIG_UPDATE,this._handleCloudConfigUpdate,this),this._lastReportAt=0,this.uploadSSOLogData(),this._sdkAppIdBlackList=[],this._tinyIdWhiteList=[],this._minThreshold=Fe,this._maxThreshold=100,this._waitingTime=ot,this._logQueue=[],this._logLevel=lA.DEBUG,this._globalThrottle={count:0,startTime:Date.now()},this._singleThrottleMap.clear()}};const li=15e3,nt="Channel",Ft="channel_schedule_task",Ji="channel_reconnect_task",qi="connected",qs="connecting",Mi="disconnected",Wo=1e3,Mg="network_status_change",or="activity_status_change",fr="send_fail",xn="reconnect_failed",Dl="socket_error",Ks="socket_close";function oI(s){return s&&s.__esModule&&Object.prototype.hasOwnProperty.call(s,"default")?s.default:s}function Wg(s){return Wg=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(n){return typeof n}:function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},Wg(s)}function fc(s){throw new Error('Could not dynamically require "'+s+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var fu,Sa={exports:{}},Sl=(fu||(fu=1,function(s){s.exports=function n(g,I,E){function m(T,P){if(!I[T]){if(!g[T]){if(!P&&fc)return fc(T);if(D)return D(T,!0);var W=new Error("Cannot find module '"+T+"'");throw W.code="MODULE_NOT_FOUND",W}var iA=I[T]={exports:{}};g[T][0].call(iA.exports,function(EA){return m(g[T][1][EA]||EA)},iA,iA.exports,n,g,I,E)}return I[T].exports}for(var D=fc,M=0;M>>6:(EA<65536?iA[xA++]=224|EA>>>12:(iA[xA++]=240|EA>>>18,iA[xA++]=128|EA>>>12&63),iA[xA++]=128|EA>>>6&63),iA[xA++]=128|63&EA);return iA},I.buf2binstring=function(W){return P(W,W.length)},I.binstring2buf=function(W){for(var iA=new E.Buf8(W.length),EA=0,RA=iA.length;EA>10&1023,SA[RA++]=56320|1023&kA)}return P(SA,RA)},I.utf8border=function(W,iA){var EA;for((iA=iA||W.length)>W.length&&(iA=W.length),EA=iA-1;0<=EA&&(192&W[EA])==128;)EA--;return EA<0||EA===0?iA:EA+M[W[EA]]>iA?EA:iA}},{"./common":1}],3:[function(n,g,I){g.exports=function(E,m,D,M){for(var T=65535&E,P=E>>>16&65535,W=0;D!==0;){for(D-=W=2e3>>1:m>>>1;D[M]=m}return D}();g.exports=function(m,D,M,T){var P=E,W=T+M;m^=-1;for(var iA=T;iA>>8^P[255&(m^D[iA])];return-1^m}},{}],6:[function(n,g,I){g.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}},{}],7:[function(n,g,I){g.exports=function(E,m){var D,M,T,P,W,iA,EA,RA,kA,xA,LA,SA,OA,JA,re,ne,_i,Ti,kt,Ni,cs,Se,Bt,UA,ii;D=E.state,M=E.next_in,UA=E.input,T=M+(E.avail_in-5),P=E.next_out,ii=E.output,W=P-(m-E.avail_out),iA=P+(E.avail_out-257),EA=D.dmax,RA=D.wsize,kA=D.whave,xA=D.wnext,LA=D.window,SA=D.hold,OA=D.bits,JA=D.lencode,re=D.distcode,ne=(1<>>=kt=Ti>>>24,OA-=kt,(kt=Ti>>>16&255)==0)ii[P++]=65535&Ti;else{if(!(16&kt)){if(!(64&kt)){Ti=JA[(65535&Ti)+(SA&(1<>>=kt,OA-=kt),OA<15&&(SA+=UA[M++]<>>=kt=Ti>>>24,OA-=kt,!(16&(kt=Ti>>>16&255))){if(!(64&kt)){Ti=re[(65535&Ti)+(SA&(1<>>=kt,OA-=kt,(kt=P-W)>3,SA&=(1<<(OA-=Ni<<3))-1,E.next_in=M,E.next_out=P,E.avail_in=M>>24&255)+(Se>>>8&65280)+((65280&Se)<<8)+((255&Se)<<24)}function SA(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new E.Buf16(320),this.work=new E.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function OA(Se){var Bt;return Se&&Se.state?(Bt=Se.state,Se.total_in=Se.total_out=Bt.total=0,Se.msg="",Bt.wrap&&(Se.adler=1&Bt.wrap),Bt.mode=RA,Bt.last=0,Bt.havedict=0,Bt.dmax=32768,Bt.head=null,Bt.hold=0,Bt.bits=0,Bt.lencode=Bt.lendyn=new E.Buf32(kA),Bt.distcode=Bt.distdyn=new E.Buf32(xA),Bt.sane=1,Bt.back=-1,iA):EA}function JA(Se){var Bt;return Se&&Se.state?((Bt=Se.state).wsize=0,Bt.whave=0,Bt.wnext=0,OA(Se)):EA}function re(Se,Bt){var UA,ii;return Se&&Se.state?(ii=Se.state,Bt<0?(UA=0,Bt=-Bt):(UA=1+(Bt>>4),Bt<48&&(Bt&=15)),Bt&&(Bt<8||15=Gi.wsize?(E.arraySet(Gi.window,Bt,UA-Gi.wsize,Gi.wsize,0),Gi.wnext=0,Gi.whave=Gi.wsize):(ii<(_s=Gi.wsize-Gi.wnext)&&(_s=ii),E.arraySet(Gi.window,Bt,UA-ii,_s,Gi.wnext),(ii-=_s)?(E.arraySet(Gi.window,Bt,UA-ii,ii,0),Gi.wnext=ii,Gi.whave=Gi.wsize):(Gi.wnext+=_s,Gi.wnext===Gi.wsize&&(Gi.wnext=0),Gi.whave>>8&255,UA.check=D(UA.check,dg,2,0),_t=wt=0,UA.mode=2;break}if(UA.flags=0,UA.head&&(UA.head.done=!1),!(1&UA.wrap)||(((255&wt)<<8)+(wt>>8))%31){Se.msg="incorrect header check",UA.mode=30;break}if((15&wt)!=8){Se.msg="unknown compression method",UA.mode=30;break}if(_t-=4,Ya=8+(15&(wt>>>=4)),UA.wbits===0)UA.wbits=Ya;else if(Ya>UA.wbits){Se.msg="invalid window size",UA.mode=30;break}UA.dmax=1<>8&1),512&UA.flags&&(dg[0]=255&wt,dg[1]=wt>>>8&255,UA.check=D(UA.check,dg,2,0)),_t=wt=0,UA.mode=3;case 3:for(;_t<32;){if(xi===0)break A;xi--,wt+=ii[Gi++]<<_t,_t+=8}UA.head&&(UA.head.time=wt),512&UA.flags&&(dg[0]=255&wt,dg[1]=wt>>>8&255,dg[2]=wt>>>16&255,dg[3]=wt>>>24&255,UA.check=D(UA.check,dg,4,0)),_t=wt=0,UA.mode=4;case 4:for(;_t<16;){if(xi===0)break A;xi--,wt+=ii[Gi++]<<_t,_t+=8}UA.head&&(UA.head.xflags=255&wt,UA.head.os=wt>>8),512&UA.flags&&(dg[0]=255&wt,dg[1]=wt>>>8&255,UA.check=D(UA.check,dg,2,0)),_t=wt=0,UA.mode=5;case 5:if(1024&UA.flags){for(;_t<16;){if(xi===0)break A;xi--,wt+=ii[Gi++]<<_t,_t+=8}UA.length=wt,UA.head&&(UA.head.extra_len=wt),512&UA.flags&&(dg[0]=255&wt,dg[1]=wt>>>8&255,UA.check=D(UA.check,dg,2,0)),_t=wt=0}else UA.head&&(UA.head.extra=null);UA.mode=6;case 6:if(1024&UA.flags&&(xi<(ho=UA.length)&&(ho=xi),ho&&(UA.head&&(Ya=UA.head.extra_len-UA.length,UA.head.extra||(UA.head.extra=new Array(UA.head.extra_len)),E.arraySet(UA.head.extra,ii,Gi,ho,Ya)),512&UA.flags&&(UA.check=D(UA.check,ii,ho,Gi)),xi-=ho,Gi+=ho,UA.length-=ho),UA.length))break A;UA.length=0,UA.mode=7;case 7:if(2048&UA.flags){if(xi===0)break A;for(ho=0;Ya=ii[Gi+ho++],UA.head&&Ya&&UA.length<65536&&(UA.head.name+=String.fromCharCode(Ya)),Ya&&ho>9&1,UA.head.done=!0),Se.adler=UA.check=0,UA.mode=12;break;case 10:for(;_t<32;){if(xi===0)break A;xi--,wt+=ii[Gi++]<<_t,_t+=8}Se.adler=UA.check=LA(wt),_t=wt=0,UA.mode=11;case 11:if(UA.havedict===0)return Se.next_out=Lr,Se.avail_out=ar,Se.next_in=Gi,Se.avail_in=xi,UA.hold=wt,UA.bits=_t,2;Se.adler=UA.check=1,UA.mode=12;case 12:if(Bt===5||Bt===6)break A;case 13:if(UA.last){wt>>>=7&_t,_t-=7&_t,UA.mode=27;break}for(;_t<3;){if(xi===0)break A;xi--,wt+=ii[Gi++]<<_t,_t+=8}switch(UA.last=1&wt,_t-=1,3&(wt>>>=1)){case 0:UA.mode=14;break;case 1:if(Ni(UA),UA.mode=20,Bt!==6)break;wt>>>=2,_t-=2;break A;case 2:UA.mode=17;break;case 3:Se.msg="invalid block type",UA.mode=30}wt>>>=2,_t-=2;break;case 14:for(wt>>>=7&_t,_t-=7&_t;_t<32;){if(xi===0)break A;xi--,wt+=ii[Gi++]<<_t,_t+=8}if((65535&wt)!=(wt>>>16^65535)){Se.msg="invalid stored block lengths",UA.mode=30;break}if(UA.length=65535&wt,_t=wt=0,UA.mode=15,Bt===6)break A;case 15:UA.mode=16;case 16:if(ho=UA.length){if(xi>>=5,_t-=5,UA.ndist=1+(31&wt),wt>>>=5,_t-=5,UA.ncode=4+(15&wt),wt>>>=4,_t-=4,286>>=3,_t-=3}for(;UA.have<19;)UA.lens[WD[UA.have++]]=0;if(UA.lencode=UA.lendyn,UA.lenbits=7,MI={bits:UA.lenbits},Pl=T(0,UA.lens,0,19,UA.lencode,0,UA.work,MI),UA.lenbits=MI.bits,Pl){Se.msg="invalid code lengths set",UA.mode=30;break}UA.have=0,UA.mode=19;case 19:for(;UA.have>>16&255,SI=65535&Yg,!((Rr=Yg>>>24)<=_t);){if(xi===0)break A;xi--,wt+=ii[Gi++]<<_t,_t+=8}if(SI<16)wt>>>=Rr,_t-=Rr,UA.lens[UA.have++]=SI;else{if(SI===16){for(zu=Rr+2;_t>>=Rr,_t-=Rr,UA.have===0){Se.msg="invalid bit length repeat",UA.mode=30;break}Ya=UA.lens[UA.have-1],ho=3+(3&wt),wt>>>=2,_t-=2}else if(SI===17){for(zu=Rr+3;_t>>=Rr)),wt>>>=3,_t-=3}else{for(zu=Rr+7;_t>>=Rr)),wt>>>=7,_t-=7}if(UA.have+ho>UA.nlen+UA.ndist){Se.msg="invalid bit length repeat",UA.mode=30;break}for(;ho--;)UA.lens[UA.have++]=Ya}}if(UA.mode===30)break;if(UA.lens[256]===0){Se.msg="invalid code -- missing end-of-block",UA.mode=30;break}if(UA.lenbits=9,MI={bits:UA.lenbits},Pl=T(P,UA.lens,0,UA.nlen,UA.lencode,0,UA.work,MI),UA.lenbits=MI.bits,Pl){Se.msg="invalid literal/lengths set",UA.mode=30;break}if(UA.distbits=6,UA.distcode=UA.distdyn,MI={bits:UA.distbits},Pl=T(W,UA.lens,UA.nlen,UA.ndist,UA.distcode,0,UA.work,MI),UA.distbits=MI.bits,Pl){Se.msg="invalid distances set",UA.mode=30;break}if(UA.mode=20,Bt===6)break A;case 20:UA.mode=21;case 21:if(6<=xi&&258<=ar){Se.next_out=Lr,Se.avail_out=ar,Se.next_in=Gi,Se.avail_in=xi,UA.hold=wt,UA.bits=_t,M(Se,ln),Lr=Se.next_out,_s=Se.output,ar=Se.avail_out,Gi=Se.next_in,ii=Se.input,xi=Se.avail_in,wt=UA.hold,_t=UA.bits,UA.mode===12&&(UA.back=-1);break}for(UA.back=0;xg=(Yg=UA.lencode[wt&(1<>>16&255,SI=65535&Yg,!((Rr=Yg>>>24)<=_t);){if(xi===0)break A;xi--,wt+=ii[Gi++]<<_t,_t+=8}if(xg&&!(240&xg)){for(ac=Rr,Af=xg,ip=SI;xg=(Yg=UA.lencode[ip+((wt&(1<>ac)])>>>16&255,SI=65535&Yg,!(ac+(Rr=Yg>>>24)<=_t);){if(xi===0)break A;xi--,wt+=ii[Gi++]<<_t,_t+=8}wt>>>=ac,_t-=ac,UA.back+=ac}if(wt>>>=Rr,_t-=Rr,UA.back+=Rr,UA.length=SI,xg===0){UA.mode=26;break}if(32&xg){UA.back=-1,UA.mode=12;break}if(64&xg){Se.msg="invalid literal/length code",UA.mode=30;break}UA.extra=15&xg,UA.mode=22;case 22:if(UA.extra){for(zu=UA.extra;_t>>=UA.extra,_t-=UA.extra,UA.back+=UA.extra}UA.was=UA.length,UA.mode=23;case 23:for(;xg=(Yg=UA.distcode[wt&(1<>>16&255,SI=65535&Yg,!((Rr=Yg>>>24)<=_t);){if(xi===0)break A;xi--,wt+=ii[Gi++]<<_t,_t+=8}if(!(240&xg)){for(ac=Rr,Af=xg,ip=SI;xg=(Yg=UA.distcode[ip+((wt&(1<>ac)])>>>16&255,SI=65535&Yg,!(ac+(Rr=Yg>>>24)<=_t);){if(xi===0)break A;xi--,wt+=ii[Gi++]<<_t,_t+=8}wt>>>=ac,_t-=ac,UA.back+=ac}if(wt>>>=Rr,_t-=Rr,UA.back+=Rr,64&xg){Se.msg="invalid distance code",UA.mode=30;break}UA.offset=SI,UA.extra=15&xg,UA.mode=24;case 24:if(UA.extra){for(zu=UA.extra;_t>>=UA.extra,_t-=UA.extra,UA.back+=UA.extra}if(UA.offset>UA.dmax){Se.msg="invalid distance too far back",UA.mode=30;break}UA.mode=25;case 25:if(ar===0)break A;if(ho=ln-ar,UA.offset>ho){if((ho=UA.offset-ho)>UA.whave&&UA.sane){Se.msg="invalid distance too far back",UA.mode=30;break}ho>UA.wnext?(ho-=UA.wnext,ll=UA.wsize-ho):ll=UA.wnext-ho,ho>UA.length&&(ho=UA.length),DC=UA.window}else DC=_s,ll=Lr-UA.offset,ho=UA.length;for(ar_i?(kt=ll[DC+xA[Bt]],Ni=_t[Wu+xA[Bt]]):(kt=96,Ni=0),SA=1<>Lr)+(OA-=SA)]=Ti<<24|kt<<16|Ni,OA!==0;);for(SA=1<>=1;if(SA!==0?(wt&=SA-1,wt+=SA):wt=0,Bt++,--ln[Se]==0){if(Se===ii)break;Se=W[iA+xA[Bt]]}if(_s{const M=new Uint8Array(D).slice(4);let T;try{T=Sl.inflate(M,{to:"string"})}catch(P){console.error("inflate error",P)}return T})(s.data):function(D){const M=new Uint8Array(D);let T="",P=0;const{length:W}=M;for(;P0)for(let kA=0;kA{var I;const{uplinkData:E,canResend:m,resolve:D,reject:M,timeout:T}=n;if(m){this._pendingRequests.set(g,{resolve:D,reject:M,timestamp:Date.now(),uplinkData:E,timeout:T,canResend:m});const P=this._isBinarySupported?Na(E).buffer:E;(I=this._socketAdapter)===null||I===void 0||I.send(P)}else this._pendingRequests.delete(g)})}_onConnect(s){const{socketId:n,event:g={}}=s||{};this._connectionId=n,this._connectionEstablishedTime=Date.now();const I=Date.now()-this._connectionStartTime,E=`${nt}.onConnect cost:${I} ms. socketID:${n} res:${JSON.stringify(g)}`;if(this._ssoLog({method:"onConnect",message:E}),this._checkPendingRequestsAndResend(),this._sendHeartbeatIfReady(),this._isReconnecting){const m=`${nt}.reconnect success`;this._ssoLog({method:"reconnectSuccess",message:m}),gn.emitInnerEvent(Oe.RECONNECTED),this._isReconnecting=!1}this._resetReconnectDelay(),this._handleConnectStateChange({state:qi,shouldEmitEvent:!0,shouldAttemptReconnect:!1})}_sendAck(s){const n=Ia({servcmd:"openim.ws_msg_push_ack",data:{SessionData:s}});this.sendPacket(n)}_executeScheduledTaskIfReady(){return mA(this,void 0,void 0,function*(){this._clearTimeoutRequest(),this._sendHeartbeatIfReady()})}_canSendHeartbeat(){var s;return((s=this._socketAdapter)===null||s===void 0?void 0:s.isConnected())&&Date.now()>=this._nextHeartbeatAt&&!this._isHeartbeatInProgress}_sendHeartbeat(){return mA(this,void 0,void 0,function*(){var s;const n=Ia({servcmd:"heartbeat.alive",data:{}});try{const g=`${n.head.seq}${n.head.servcmd}`;yield this.sendPacket(n,{requestId:g,timeout:3e3})}catch(g){const I=(s=Zi.get("netWorkMonitor"))===null||s===void 0?void 0:s.isNetworkOnline,E=`${nt}.sendHeartbeat failed. isNetWorkOnline:${I} error: ${en(g)}`;this._ssoLog({method:"sendHeartbeatError",message:E}),this._handleConnectStateChange({state:Mi,shouldEmitEvent:!0,shouldAttemptReconnect:!0})}})}_sendHeartbeatIfReady(){return mA(this,void 0,void 0,function*(){this._canSendHeartbeat()&&(this._isHeartbeatInProgress=!0,yield this._sendHeartbeat(),this._isHeartbeatInProgress=!1)})}_updateHeartbeatTime(){this._nextHeartbeatAt=_o?Date.now()+5e3:Date.now()+1e4}_handleNetworkStatusChange(s){const n=`${nt}.networkStatusChange ${JSON.stringify(s)}`;this._ssoLog({method:"networkStatusChange",message:n});const{isNetworkOnline:g,networkType:I}=s;g&&I!=="none"?this._handleConnectStateChange({state:qi,shouldEmitEvent:!1,shouldAttemptReconnect:!0,reason:Mg}):this._handleConnectStateChange({state:Mi,shouldEmitEvent:!1,shouldAttemptReconnect:!0,reason:Mg})}isPrivateNetWork(){const s=Zi.get("instance")||{};return s.proxyServer&&!s.fileDownloadProxy}_handleConnectStateChange(s){const{state:n,shouldAttemptReconnect:g,shouldEmitEvent:I,reason:E}=s,m=`${nt}._handleConnectStateChange currentConnectState: ${this._currentConnectState} shouldAttemptReconnect: ${g} shouldEmitEvent: ${I} reason: ${E}`;this._currentConnectState!==n&&(this._ssoLog({method:"handleConnectStateChange",message:m}),I&&(Ot.info("_handleConnectStateChange",` from ${this._currentConnectState} to ${n}`),gn.emitOuterEvent("netStateChange",{name:"netStateChange",data:{state:n}}),this._currentConnectState=n,n===Mi&&gn.emitInnerEvent(Oe.SOCKET_DISCONNECTED)),g&&(this._resetReconnectDelay(),fn.addTask({id:Ji,intervalMs:this._intendedDelay,callback:this._scheduleReconnectWithBackoff,context:this})))}_handleActivityStatusChange(s){var n,g;const I=(g=(n=this._socketAdapter)===null||n===void 0?void 0:n._ws)===null||g===void 0?void 0:g.readyState,E=`${nt}.activityStatusChange ${JSON.stringify(s)} readyState: ${I}`;Ot.debug("activityStatusChange",E),I===3&&this._handleConnectStateChange({state:Mi,shouldEmitEvent:!0,shouldAttemptReconnect:!0,reason:or})}_resetReconnectDelay(){var s;Ot.debug(`${nt}._resetReconnectDelay`),fn.removeTask(Ji);const n=(s=Zi.get("activityMonitor"))===null||s===void 0?void 0:s.isActive;this._intendedDelay=n?Wo:1e3}_scheduleReconnectWithBackoff(){var s;const n=(s=Zi.get("activityMonitor"))===null||s===void 0?void 0:s.isActive;this._intendedDelay=n?Math.min(5e3,Math.max(Wo,1.5*this._intendedDelay)):Math.min(3e5,Math.max(1e3,1.5*this._intendedDelay));const g=new Date().toTimeString().slice(0,8),I=`${nt}.scheduleReconnectWithBackoff timeStr: ${g} intendedDelay: ${this._intendedDelay}`;Ot.debug(I),this.reconnect(),fn.updateTaskInterval(Ji,this._intendedDelay)}_ssoLog(s){const{method:n,message:g}=s;Ot.info(n,g)}_diagnose(){this.isPrivateNetWork()||(this._lastDiagnoseAt=Date.now(),function(s){mA(this,void 0,void 0,function*(){const n=s.split("/")[2];if(!n.startsWith("ws"))return;const g=`https://${n}/v3/netcheck/getconninfo?${s.slice(s.indexOf("info?")+5)}&reqtime=${Date.now()}`;try{yield Pi({method:"GET",url:g,data:{}})}catch(I){Ot.warn("diagnoseBySSO",`diagnoseBySSO failed. error:${I.message}`)}})}(this._url),function(s){mA(this,void 0,void 0,function*(){const n=`https://boce-cdn.my-imcloud.com/v3/netcheck/getconninfo?${s.slice(s.indexOf("info?")+5)}&reqtime=${Date.now()}`;try{yield Pi({method:"GET",url:n,data:{}})}catch(g){Ot.warn(`diagnoseByCDN', 'diagnoseByCDN failed. error:${g.message}`)}})}(this._url),this._beforeSendInterceptors=[])}_clearTimeoutRequest(){for(const[s,n]of this._pendingRequests.entries()){const{reject:g,timestamp:I,timeout:E}=n;Date.now()-I>=E&&(this._pendingRequests.delete(s),Date.now()-this._lastDiagnoseAt>=3e4&&this._diagnose(),g({errorCode:Br,errorInfo:"NETWORK_TIMEOUT",data:{requestId:s}}))}}_updateIsBinarySupported(){var s;if(!((s=Zi.get("instance"))===null||s===void 0)&&s.devMode)return void(this._isBinarySupported=!1);const n=Es();if((gi||It&&n==="windows"||Vs)&&(this._isBinarySupported=!1),_o){const{uniRuntimeVersion:g=""}=io.getSystemInfoSync();(function(I){const E=I.split(".").map(Number),[m=0,D=0,M=0]=E;return m>2||!(m<2)&&(D>2||!(D<2)&&M>=6)})(g)||(this._isBinarySupported=!1)}}_isCompressedData(s){const n=new Uint8Array(s);return n[0]===67&&n[1]===79&&n[2]===77&&n[3]===80}};const me={init:function(s){Zi.set("instance",s),fe.init()},destroy:function(){fe.dispose(),Zi.clear(),fn.dispose()},notificationCenter:gn,channel:fe,store:Zi,ssoLog:Ot,utils:yg,common:vA,constants:Dt},vg=s=>typeof s=="function";function rg(s,n,g){const I=g||[];if(!s||!n)return!1;const E=Object.keys(s).filter(D=>!I.includes(D)),m=Object.keys(n).filter(D=>!I.includes(D));return E.length===m.length&&E.every(D=>!!n.hasOwnProperty(D)&&(typeof s[D]=="object"&&s[D]!==null?rg(s[D],n[D],g):s[D]===n[D]))}var Rg;(function(s){s.SDK_READY="sdkStateReady",s.SDK_NOT_READY="sdkStateNotReady",s.SDK_DESTROY="sdkDestroy",s.MESSAGE_RECEIVED="onMessageReceived",s.ROOM_CUSTOM_DATA_RECEIVED="onRoomCustomDataReceived",s.MESSAGE_MODIFIED="onMessageModified",s.MESSAGE_REVOKED="onMessageRevoked",s.MESSAGE_READ_BY_PEER="onMessageReadByPeer",s.MESSAGE_READ_RECEIPT_RECEIVED="onMessageReadReceiptReceived",s.MESSAGE_EXTENSIONS_UPDATED="onMessageExtensionsUpdated",s.MESSAGE_EXTENSIONS_DELETED="onMessageExtensionsDeleted",s.MESSAGE_REACTIONS_UPDATED="onMessageReactionsUpdated",s.CONVERSATION_LIST_UPDATED="onConversationListUpdated",s.TOTAL_UNREAD_MESSAGE_COUNT_UPDATED="onTotalUnreadMessageCountUpdated",s.CONVERSATION_GROUP_LIST_UPDATED="onConversationGroupListUpdated",s.CONVERSATION_IN_GROUP_UPDATED="onConversationInGroupUpdated",s.GROUP_LIST_UPDATED="onGroupListUpdated",s.GROUP_ATTRIBUTES_UPDATED="groupAttributesUpdated",s.GROUP_COUNTER_UPDATED="onGroupCounterUpdated",s.TOPIC_CREATED="onTopicCreated",s.TOPIC_DELETED="onTopicDeleted",s.TOPIC_UPDATED="onTopicUpdated",s.PROFILE_UPDATED="onProfileUpdated",s.USER_STATUS_UPDATED="onUserStatusUpdated",s.BLACKLIST_UPDATED="blacklistUpdated",s.FRIEND_LIST_UPDATED="onFriendListUpdated",s.FRIEND_GROUP_LIST_UPDATED="onFriendGroupListUpdated",s.FRIEND_APPLICATION_LIST_UPDATED="onFriendApplicationListUpdated",s.MY_FOLLOWERS_LIST_UPDATED="onMyFollowersListUpdated",s.MY_FOLLOWING_LIST_UPDATED="onMyFollowingListUpdated",s.MUTUAL_FOLLOWERS_LIST_UPDATED="onMutualFollowersListUpdated",s.KICKED_OUT="kickedOut",s.ERROR="error",s.NET_STATE_CHANGE="netStateChange",s.ALL_RECEIVE_MESSAGE_OPT_UPDATED="onAllReceiveMessageOptUpdated",s.SERVER_CONFIG_UPDATED="onServerConfigUpdated",s.PINNED_GROUP_MESSAGE_UPDATED="onPinnedGroupMessageUpdated",s.WEB_PUSH_MESSAGE_RECEIVED="onWebPushMessageReceived",s.GROUP_ONLINE_MEMBER_COUNT_CHANGED="onGroupOnlineMemberCountChanged",s.RICH_STATUS_CHANGED="onRichStatusChanged"})(Rg||(Rg={}));var Dn,yr=Rg;(function(s){s.LOGOUT="logout",s.DESTROY="destroy",s.CLOUD_CONFIG_UPDATE="cloud_config_update",s.PROFILE_UPDATE="profile_updated",s.ERROR="error",s.RECONNECTED="reconnected",s.FORCE_OFFLINE="im_open_status.stat_forceoffline",s.COMMERCIAL_CONFIG_PUSH="im_sdk_config_mgr.push_imsdk_purchase_bitsv2",s.OVERLOAD_PUSH="OverLoadPush.notify2",s.NEW_MESSAGE="new_message",s.MESSAGE_PUSH="im_open_push.msg_push",s.MESSAGE_DELETED="message_deleted",s.MESSAGE_REVOKED="message_revoked",s.MESSAGE_MODIFIED="message_modified",s.SOCKET_DISCONNECTED="socket_disconnected",s.CONVERSATION_UPDATED="conversation_updated",s.TOPIC_MESSAGE_DELETED="topic_message_deleted",s.TOPIC_MESSAGE_REVOKED="topic_message_revoked",s.TOPIC_MESSAGE_MODIFIED="topic_message_modified",s.TOPIC_NEW_MESSAGE="topic_new_message",s.QUALITY_STAT="quality_stat",s.SYNC_CONVERSATION_LIST="sync_conversation_list",s.HISTORY_MESSAGE_FETCHED="history_message_fetched"})(Dn||(Dn={}));var Ii,so=Dn;(function(s){s.NEW_INVITATION_RECEIVED="newInvitationReceived",s.INVITEE_ACCEPTED="ts_invitee_accepted",s.INVITEE_REJECTED="ts_invitee_rejected",s.INVITATION_CANCELLED="ts_invitation_cancelled",s.INVITATION_TIMEOUT="ts_invitation_timeout",s.INVITATION_MODIFIED="ts_invitation_modified"})(Ii||(Ii={}));var Hc=Ii;const zg=Object.assign({},{KICKED_OUT_MULT_ACCOUNT:"multipleAccount",KICKED_OUT_MULT_DEVICE:"multipleDevice",KICKED_OUT_USERSIG_EXPIRED:"userSigExpired",KICKED_OUT_REST_API:"REST_API_Kick"}),wg={MSG_TEXT:"TIMTextElem",MSG_IMAGE:"TIMImageElem",MSG_AUDIO:"TIMSoundElem",MSG_FILE:"TIMFileElem",MSG_FACE:"TIMFaceElem",MSG_VIDEO:"TIMVideoFileElem",MSG_LOCATION:"TIMLocationElem",MSG_GRP_TIP:"TIMGroupTipElem",MSG_GRP_SYS_NOTICE:"TIMGroupSystemNoticeElem",MSG_CUSTOM:"TIMCustomElem",MSG_MERGER:"TIMRelayElem",MSG_STREAM:"TIMStreamElem"};var Or;(function(s){s.UNSENT="unSend",s.SUCCESS="success",s.FAIL="fail"})(Or||(Or={}));const yc={modify:so.MESSAGE_MODIFIED,delete:so.MESSAGE_DELETED,revoke:so.MESSAGE_REVOKED};var qc;(function(s){s[s.FORWARD=0]="FORWARD",s[s.BACKWARD=1]="BACKWARD"})(qc||(qc={}));const ag=Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},wg),{MSG_PRIORITY_HIGH:"High",MSG_PRIORITY_NORMAL:"Normal",MSG_PRIORITY_LOW:"Low",MSG_PRIORITY_LOWEST:"Lowest"}),{RECEIVE_WITH_OFFLINE_PUSH_EXCEPT_AT:"AcceptNotNotifyExceptAt",NOT_RECEIVE_OFFLINE_PUSH_EXCEPT_AT:"AcceptNotNotifyExceptAt",NOT_RECEIVE_MSG_EXCEPT_AT:"NotReceiveMsgExceptAt",MSG_AT_ALL:"__kImSDK_MesssageAtALL__"}),{MSG_REMIND_ACPT_AND_NOTE:"AcceptAndNotify",MSG_REMIND_ACPT_NOT_NOTE:"AcceptNotNotify",MSG_REMIND_DISCARD:"Discard"}),{MessageStatus:Or,Direction:qc}),yu={[yc.modify]:so.TOPIC_MESSAGE_MODIFIED,[yc.delete]:so.TOPIC_MESSAGE_DELETED,[yc.revoke]:so.TOPIC_MESSAGE_REVOKED},CE={GENDER_UNKNOWN:"Gender_Type_Unknown",GENDER_FEMALE:"Gender_Type_Female",GENDER_MALE:"Gender_Type_Male",USER_STATUS_UNKNOWN:0,USER_STATUS_ONLINE:1,USER_STATUS_OFFLINE:2,USER_STATUS_UNLOGINED:3,USER_NOT_FOUND:"@TLS#NOT_FOUND"},_g=Object.assign({},CE),ba={CONV_C2C:"C2C",CONV_GROUP:"GROUP",CONV_TOPIC:"TOPIC",CONV_SYSTEM:"@TIM#SYSTEM"},Dc=Object.assign(Object.assign(Object.assign(Object.assign({},ba),{CONV_AT_ME:1,CONV_AT_ALL:2,CONV_AT_ALL_AT_ME:3}),{CONV_MARK_TYPE_STAR:1,CONV_MARK_TYPE_UNREAD:2,CONV_MARK_TYPE_FOLD:4,CONV_MARK_TYPE_HIDE:8}),{READ_ALL_C2C_MSG:"readAllC2CMessage",READ_ALL_GROUP_MSG:"readAllGroupMessage",READ_ALL_MSG:"readAllMessage"}),hE=Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},{SNS_TYPE_NO_RELATION:"CheckResult_Type_NoRelation",SNS_TYPE_A_WITH_B:"CheckResult_Type_AWithB",SNS_TYPE_B_WITH_A:"CheckResult_Type_BWithA",SNS_TYPE_BOTH_WAY:"CheckResult_Type_BothWay"}),{ALLOW_TYPE_ALLOW_ANY:"AllowType_Type_AllowAny",ALLOW_TYPE_NEED_CONFIRM:"AllowType_Type_NeedConfirm",ALLOW_TYPE_DENY_ANY:"AllowType_Type_DenyAny"}),{SNS_ADD_TYPE_SINGLE:"Add_Type_Single",SNS_ADD_TYPE_BOTH:"Add_Type_Both"}),{SNS_DELETE_TYPE_SINGLE:"Delete_Type_Single",SNS_DELETE_TYPE_BOTH:"Delete_Type_Both"}),{SNS_APPLICATION_TYPE_BOTH:"Pendency_Type_Both",SNS_APPLICATION_SENT_TO_ME:"Pendency_Type_ComeIn",SNS_APPLICATION_SENT_BY_ME:"Pendency_Type_SendOut",SNS_APPLICATION_AGREE:"Response_Action_Agree",SNS_APPLICATION_AGREE_AND_ADD:"Response_Action_AgreeAndAdd"}),{SNS_CHECK_TYPE_BOTH:"CheckResult_Type_Both",SNS_CHECK_TYPE_SINGLE:"CheckResult_Type_Single"}),{FORBID_TYPE_NONE:"AdminForbid_Type_None",FORBID_TYPE_SEND_OUT:"AdminForbid_Type_SendOut"}),ka={GRP_WORK:"Private",GRP_PUBLIC:"Public",GRP_MEETING:"ChatRoom",GRP_AVCHATROOM:"AVChatRoom",GRP_COMMUNITY:"Community",GRP_ROOM:"Room",GRP_LIVE:"Live"},oa={COMMUNITY:"@TGS#_",TOPIC:"@TOPIC#_"},Tg={JOINED:1,QUITTED:2,KICKED:3,ADMIN_SET:4,ADMIN_CANCELED:5,GROUP_PROFILE_UPDATED:6,GROUP_MEMBER_PROFILE_UPDATED:7,TOPIC_PROFILE_UPDATED:8},sI=Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},ka),{GRP_MBR_ROLE_OWNER:"Owner",GRP_MBR_ROLE_ADMIN:"Admin",GRP_MBR_ROLE_MEMBER:"Member",GRP_MBR_ROLE_CUSTOM:"Custom"}),{GRP_TIP_MBR_JOIN:1,GRP_TIP_MBR_QUIT:2,GRP_TIP_MBR_KICKED_OUT:3,GRP_TIP_MBR_SET_ADMIN:4,GRP_TIP_MBR_CANCELED_ADMIN:5,GRP_TIP_GRP_PROFILE_UPDATED:6,GRP_TIP_MBR_PROFILE_UPDATED:7,GRP_TIP_BAN_AVCHATROOM_MEMBER:10,GRP_TIP_UNBAN_AVCHATROOM_MEMBER:11}),{JOIN_OPTIONS_FREE_ACCESS:"FreeAccess",JOIN_OPTIONS_NEED_PERMISSION:"NeedPermission",JOIN_OPTIONS_DISABLE_APPLY:"DisableApply",JOIN_STATUS_SUCCESS:"JoinedSuccess",JOIN_STATUS_ALREADY_IN_GROUP:"AlreadyInGroup",JOIN_STATUS_WAIT_APPROVAL:"WaitAdminApproval"}),{INVITE_OPTIONS_DISABLE_INVITE:"DisableInvite",INVITE_OPTIONS_NEED_PERMISSION:"NeedPermission",INVITE_OPTIONS_FREE_ACCESS:"FreeAccess"}),{GRP_PROFILE_OWNER_ID:"ownerID",GRP_PROFILE_CREATE_TIME:"createTime",GRP_PROFILE_LAST_INFO_TIME:"lastInfoTime",GRP_PROFILE_MEMBER_NUM:"memberNum",GRP_PROFILE_MAX_MEMBER_NUM:"maxMemberNum",GRP_PROFILE_JOIN_OPTION:"joinOption",GRP_PROFILE_INVITE_OPTION:"inviteOption",GRP_PROFILE_INTRODUCTION:"introduction",GRP_PROFILE_NOTIFICATION:"notification",GRP_PROFILE_MUTE_ALL_MBRS:"muteAllMembers"}),{GROUP_ID_PREFIX:oa,GROUP_TIPS_OPERATION_TYPE:Tg}),hs={IOS_OFFLINE_PUSH_NO_SOUND:"push.no_sound",IOS_OFFLINE_PUSH_DEFAULT_SOUND:"default"},ko=Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},zg),ag),_g),Dc),hE),sI),hs),{NET_STATE_CONNECTING:"connecting",NET_STATE_DISCONNECTED:"disconnected",NET_STATE_CONNECTED:"connected"}),ua={NO_SDKAPPID:2e3,NO_TINYID:2022,NO_A2KEY:2023,USER_NOT_LOGGED_IN:2024,REPEAT_LOGIN:2025,MSG_SEND_FAIL:2100,MSG_SEND_FAIL_NOT_IN_AV:2101,MSG_SEND_GRP_WITH_TOPIC_FAIL:2115,MSG_INSTANCE_REQUIRED:2105,MSG_INVALID_CONV_TYPE:2106,MSG_REVOKE_FAIL:2110,MSG_DELETE_FAIL:2111,MSG_UNREAD_ALL_FAIL:2112,READ_RECEIPT_MSG_LIST_EMPTY:2114,CANNOT_DELETE_GRP_SYSTEM_NOTICE:2116,NOT_MY_FRIEND:2700,NETWORK_ERROR:2800,NETWORK_TIMEOUT:2801,NO_NETWORK:2805,UNCAUGHT_ERROR:2903,INVALID_OPERATION:2905,SDK_IS_NOT_READY:2999,LOGGING_IN:3e3,LOGIN_FAILED:3001,KICKED_OUT_MULT_DEVICE:3002,KICKED_OUT_MULT_ACCOUNT:3003,KICKED_OUT_USERSIG_EXPIRED:3004,LOGGED_OUT:3005,KICKED_OUT_REST_API:3006,NO_USE:3122,OPTIONS_IS_EMPTY:3153,MSG_A2KEY_EXPIRED:20002,ACCOUNT_A2KEY_EXPIRED:70001,HELLO_ANSWER_KICKED_OUT:1002,OPEN_SERVICE_OVERLOAD_ERROR:60022},sr={BASIC:"1",STANDARD:"2",PROFESSIONAL:"3",NODE:"4"},Pt={SYNC_SERVER_INFO_AFTER_RE_ONLINE:"sync-server-info-after-re-online",SYNC_SERVER_INFO_AFTER_LOGIN:"sync-server-info-after-login",RECEIVE_C2C_NEW_MESSAGE:"receive-c2c-new-message",RECEIVE_GROUP_NEW_MESSAGE:"receive-group-new-message",RECEIVE_GROUP_TIPS_NOTIFICATION:"receive-group-tips-notification"},Ht={USER_STATUS_UPDATE:"user-status-update",CONVERSATION_RECOVER:"conversation-recover",HISTORY_MESSAGE_RECOVER:"history-message-recover",BLACKLIST_RECOVER:"blacklist-recover",FRIEND_RECOVER:"friend-recover",GROUP_ATTRIBUTE_CACHE_CLEAR:"group-attribute-cache-clear",UNREAD_MESSAGE_RECOVER:"unread-message-recover",HANDLE_NEW_MESSAGE:"handle-new-message",HANDLE_CONVERSATION_PROFILE_UPDATED:"handle-conversation-profile-updated",COMMERCIAL_CONFIG_UPDATE:"commercial-config-update",UNREAD_MESSAGE_SYNC:"unread-message-sync",FRIEND_AND_BLACKLIST_SYNC:"friend-and-blacklist-sync",SIGNALING_MESSAGE_RECOVER:"signaling-message-recover",GROUP_LIST_SYNC:"group-list-sync",CONVERSATION_LIST_SYNC:"conversation-list-sync",USER_PROFILE_SYNC:"user-profile-sync",CONVERSATION_UPDATE_AFTER_UNREAD_SYNC_FINISHED:"conversation-update-after-unread-sync-finished",CONVERSATION_UPDATE_AFTER_GROUP_LIST_SYNC_FINISHED:"conversation-update-after-group-list-sync-finished",HANDLE_C2C_NEW_MESSAGE:"handle-c2c-new-message",HANDLE_GROUP_NEW_MESSAGE:"handle-group-new-message",CREATE_OR_UPDATE_CONVERSATION_BY_RECEIVE_NEW_MESSAGE:"create-or-update-conversation-by-receive-new-message",HANDLE_GROUP_TIPS_FROM_SYNC_UNREAD:"handle-group-tips-from-sync-unread",HANDLE_C2C_REVOKED_MESSAGE_FROM_SYNC_UNREAD:"handle-c2c-revoked-message-from-sync-unread",GROUP_REVOKED_NOTICE_RECOVER:"group-revoked-notice-recover",CLOUD_CONFIG_SYNC:"cloud-config-sync",UPDATE_GROUP_NEXT_SEQUENCE:"update-group-next-sequence",EMIT_C2C_MESSAGE_EVENT:"emit-c2c-message-event",EMIT_GROUP_MESSAGE_EVENT:"emit-group-message-event",CONVERSATION_GROUP_LIST_SYNC:"conversation-group-list-sync",CONVERSATION_GROUP_UPDATE:"conversation-group-update",UPDATE_TOPIC_AFTER_UNREAD_SYNC_FINISHED:"update-topic-after-unread-sync-finished",UPDATE_TOPIC_BY_RECEIVE_NEW_MESSAGE:"update-topic-by-received-new-message",TOPIC_REQUEST_INFO_RESET:"topic-request-info-reset",QUALITY_REPORT:"quality-report",GROUP_TIPS_RECOVER:"group-tips-recover",HANDLE_GROUP_TIPS_NOTIFICATION:"handle-group-tips-notification",C2C_HISTORY_MESSAGE_RECOVER:"c2c-history-message-recover",FRIEND_APPLICATION_LIST_RECOVER:"friend-application-list-recover",EMIT_GROUP_TIPS_EVENT:"emit-group-tips-event",STREAM_MESSAGE_RECOVER:"stream-message-recover"},Ng={[Pt.SYNC_SERVER_INFO_AFTER_RE_ONLINE]:[{stepId:Ht.USER_STATUS_UPDATE},{stepId:Ht.GROUP_ATTRIBUTE_CACHE_CLEAR},{stepId:Ht.UNREAD_MESSAGE_SYNC,dependency:Ht.C2C_HISTORY_MESSAGE_RECOVER},{stepId:Ht.CONVERSATION_RECOVER},{stepId:Ht.HISTORY_MESSAGE_RECOVER,dependency:Ht.CONVERSATION_RECOVER},{stepId:Ht.BLACKLIST_RECOVER},{stepId:Ht.FRIEND_RECOVER},{stepId:Ht.FRIEND_APPLICATION_LIST_RECOVER},{stepId:Ht.GROUP_REVOKED_NOTICE_RECOVER,dependency:Ht.HISTORY_MESSAGE_RECOVER},{stepId:Ht.GROUP_TIPS_RECOVER,dependency:Ht.HISTORY_MESSAGE_RECOVER},{stepId:Ht.TOPIC_REQUEST_INFO_RESET},{stepId:Ht.HANDLE_C2C_REVOKED_MESSAGE_FROM_SYNC_UNREAD,dependency:Ht.UNREAD_MESSAGE_SYNC},{stepId:Ht.HANDLE_GROUP_TIPS_FROM_SYNC_UNREAD,dependency:Ht.UNREAD_MESSAGE_SYNC},{stepId:Ht.CONVERSATION_UPDATE_AFTER_UNREAD_SYNC_FINISHED,dependency:[Ht.UNREAD_MESSAGE_SYNC,Ht.CONVERSATION_RECOVER]},{stepId:Ht.EMIT_C2C_MESSAGE_EVENT,dependency:[Ht.UNREAD_MESSAGE_SYNC,Ht.CONVERSATION_UPDATE_AFTER_UNREAD_SYNC_FINISHED],skipIfDependencyMissing:!1},{stepId:Ht.C2C_HISTORY_MESSAGE_RECOVER,dependency:Ht.CONVERSATION_RECOVER},{stepId:Ht.STREAM_MESSAGE_RECOVER}],[Pt.SYNC_SERVER_INFO_AFTER_LOGIN]:[{stepId:Ht.COMMERCIAL_CONFIG_UPDATE},{stepId:Ht.CLOUD_CONFIG_SYNC},{stepId:Ht.USER_PROFILE_SYNC},{stepId:Ht.UNREAD_MESSAGE_SYNC},{stepId:Ht.FRIEND_AND_BLACKLIST_SYNC},{stepId:Ht.GROUP_LIST_SYNC},{stepId:Ht.CONVERSATION_LIST_SYNC},{stepId:Ht.SIGNALING_MESSAGE_RECOVER,dependency:Ht.UNREAD_MESSAGE_SYNC},{stepId:Ht.UPDATE_TOPIC_AFTER_UNREAD_SYNC_FINISHED,dependency:[Ht.UNREAD_MESSAGE_SYNC]},{stepId:Ht.CONVERSATION_UPDATE_AFTER_UNREAD_SYNC_FINISHED,dependency:[Ht.UNREAD_MESSAGE_SYNC,Ht.CONVERSATION_LIST_SYNC]},{stepId:Ht.CONVERSATION_UPDATE_AFTER_GROUP_LIST_SYNC_FINISHED,dependency:[Ht.GROUP_LIST_SYNC,Ht.CONVERSATION_LIST_SYNC]},{stepId:Ht.CONVERSATION_GROUP_LIST_SYNC},{stepId:Ht.CONVERSATION_GROUP_UPDATE,dependency:[Ht.CONVERSATION_LIST_SYNC,Ht.CONVERSATION_GROUP_LIST_SYNC]},{stepId:Ht.QUALITY_REPORT}],[Pt.RECEIVE_C2C_NEW_MESSAGE]:[{stepId:Ht.HANDLE_C2C_NEW_MESSAGE},{stepId:Ht.UNREAD_MESSAGE_SYNC},{stepId:Ht.CREATE_OR_UPDATE_CONVERSATION_BY_RECEIVE_NEW_MESSAGE,dependency:Ht.HANDLE_C2C_NEW_MESSAGE},{stepId:Ht.EMIT_C2C_MESSAGE_EVENT,dependency:[Ht.HANDLE_C2C_NEW_MESSAGE,Ht.CREATE_OR_UPDATE_CONVERSATION_BY_RECEIVE_NEW_MESSAGE],skipIfDependencyMissing:!1},{stepId:Ht.CONVERSATION_UPDATE_AFTER_UNREAD_SYNC_FINISHED,dependency:[Ht.UNREAD_MESSAGE_SYNC]}],[Pt.RECEIVE_GROUP_NEW_MESSAGE]:[{stepId:Ht.HANDLE_GROUP_NEW_MESSAGE},{stepId:Ht.CREATE_OR_UPDATE_CONVERSATION_BY_RECEIVE_NEW_MESSAGE,dependency:Ht.HANDLE_GROUP_NEW_MESSAGE},{stepId:Ht.UPDATE_GROUP_NEXT_SEQUENCE,dependency:Ht.HANDLE_GROUP_NEW_MESSAGE},{stepId:Ht.UPDATE_TOPIC_BY_RECEIVE_NEW_MESSAGE,dependency:Ht.HANDLE_GROUP_NEW_MESSAGE},{stepId:Ht.EMIT_GROUP_MESSAGE_EVENT,dependency:[Ht.HANDLE_GROUP_NEW_MESSAGE,Ht.CREATE_OR_UPDATE_CONVERSATION_BY_RECEIVE_NEW_MESSAGE],skipIfDependencyMissing:!1}],[Pt.RECEIVE_GROUP_TIPS_NOTIFICATION]:[{stepId:Ht.HANDLE_GROUP_TIPS_NOTIFICATION},{stepId:Ht.CREATE_OR_UPDATE_CONVERSATION_BY_RECEIVE_NEW_MESSAGE,dependency:Ht.HANDLE_GROUP_TIPS_NOTIFICATION},{stepId:Ht.EMIT_GROUP_TIPS_EVENT,dependency:[Ht.CREATE_OR_UPDATE_CONVERSATION_BY_RECEIVE_NEW_MESSAGE,Ht.HANDLE_GROUP_TIPS_NOTIFICATION],skipIfDependencyMissing:!1}]},nI={MESSAGE_SEND_SUCCESS_RATE:"messageSendSuccessRate"},nr={TOTAL_COUNT:"sendMessageTotalCount",SUCCESS_COUNT:"sendMessageSuccessCount",FAILED_COUNT:"sendMessageFailedCount",SEND_COST:"sendMessageCost"},PI=["login","getMyProfile","getUserProfile","updateMyProfile","setSelfStatus","getUserStatus","subscribeUserStatus","unsubscribeUserStatus","modifyMessage","deleteGroupMember","dismissGroup","getGroupMemberList","getGroupOnlineMemberCount","joinGroup","markGroupMemberList","quitGroup","searchCloudMessages","searchCloudGroups","searchCloudGroupMembers","searchCloudUsers","getMyFollowingList","getMyFollowersList","getMutualFollowersList","followUser","unfollowUser","getUserFollowInfo","checkFollowType","getFriendProfile","addFriend","deleteFriend","updateFriend","checkFriend","setFriendApplicationRead","createFriendGroup","deleteFriendGroup","addToFriendGroup","removeFromFriendGroup","renameFriendGroup","changeGroupOwner","createGroup","dismissGroup","getGroupList","getGroupOnlineMemberCount","getGroupProfile","searchGroupByID","updateGroupProfile","handleGroupApplication","deleteGroupAttributes","getGroupAttributes","initGroupAttributes","setGroupAttributes","addGroupMember","deleteGroupMember","getGroupMemberList","getGroupMemberProfile","setGroupMemberMuteTime","setGroupMemberNameCard","setGroupMemberRole","deleteMessage","revokeMessage","setMessageExtensions","getMessageExtensions","deleteMessageExtensions","getMessageList","addMessageReaction","removeMessageReaction","clearHistoryMessage","sendMessageReadReceipt","getMessageReadReceiptList","getGroupMessageReadMemberList","createMergerMessage","invite","accept","cancel","reject","modifyInvitation","deleteConversation","pinConversation","setMessageRead","setAllMessageRead","getConversationList","getTotalUnreadMessageCount","renameConversationGroup","deleteConversationGroup","markConversation","setConversationCustomData","deleteConversationsFromGroup","addConversationsToGroup","createConversationGroup"];var Wa=Object.freeze({__proto__:null,ERROR_CODE:ua,InnerEvent:so,NEED_LOG_API:PI,OuterConstant:ko,OuterEvent:yr,PUSH:hs,QUALITY_METRICS:nI,SDK_EDITION:sr,SDK_INFO:{VERSION:"1.7.3",APPID:537048168},SEND_MESSAGE_STAT:nr,SignalingEvent:Hc,WEB_PUSH_ACCOUNT_TYPE:1,WORKFLOW_DEFINITIONS:Ng,WORKFLOW_NAME:Pt,WORKFLOW_STEP:Ht}),sa,un,Sn;(function(s){s[s.USER_INITIATED=0]="USER_INITIATED",s[s.KICKED_OUT=1]="KICKED_OUT"})(sa||(sa={})),function(s){s[s.multipleAccount=1]="multipleAccount",s[s.multipleDevice=2]="multipleDevice",s[s.restApi=3]="restApi"}(un||(un={})),function(s){s[s.multipleDevice=3002]="multipleDevice",s[s.multipleAccount=3003]="multipleAccount",s[s.usersigExpired=70001]="usersigExpired",s[s.restApi=20002]="restApi"}(Sn||(Sn={}));const Du={[un.multipleAccount]:"multipleAccount",[un.multipleDevice]:"multipleDevice",[un.restApi]:"REST_API_Kick",[Sn.multipleAccount]:"multipleAccount",[Sn.multipleDevice]:"multipleDevice",[Sn.restApi]:"REST_API_Kick",[Sn.usersigExpired]:"userSigExpired"},Gg="login_online_presence_task",{ERROR:La,DESTROY:Kc,FORCE_OFFLINE:xI}=so,{KICKED_OUT_MULT_ACCOUNT:BE,KICKED_OUT_MULT_DEVICE:rI,KICKED_OUT_REST_API:Su,ACCOUNT_A2KEY_EXPIRED:Ml,MSG_A2KEY_EXPIRED:Sc}=ua;class Mu{init(){const{notificationCenter:n}=me;n.subscribeInnerEvent(xI,this._handleForceOfflineFromServerPush,this),n.subscribeInnerEvent(La,Sc,this._handleForceOfflineFromResponse,this,this._isChatLoginEvent),n.subscribeInnerEvent(La,Ml,this._handleForceOfflineFromResponse,this,this._isChatLoginEvent),n.subscribeInnerEvent(La,BE,this._handleForceOfflineFromResponse,this),n.subscribeInnerEvent(La,rI,this._handleForceOfflineFromResponse,this),n.subscribeInnerEvent(La,Su,this._handleForceOfflineFromResponse,this),n.subscribeInnerEvent(Kc,this._dispose,this)}_handleForceOfflineFromServerPush(n){var g;if(((g=me.store.get("login"))===null||g===void 0?void 0:g.isLoggedIn)===!0){const{EventArray:I=[]}=n?.body||{};this._extractKickedOutMessages(I).forEach(E=>{const{KickoutMsgNotify:{KickType:m,NewInstInfo:D,Instid:M}}=E;this._isCurrentInstanceKickedOut(M)&&this._processKickedOutReasonInfo({kickedOutReasonCode:m,newInstanceInfo:D})})}}_extractKickedOutMessages(n){return n.reduce((g,I)=>[...g,...I.C2cNotifyMsgArray||[]],[]).filter(g=>{var I;return this._isKickedOut((I=g?.KickoutMsgNotify)===null||I===void 0?void 0:I.KickType)})}_handleForceOfflineFromResponse(n){const{errorCode:g}=n;this._processKickedOutReasonInfo({kickedOutReasonCode:g})}_processKickedOutReasonInfo(n){return mA(this,void 0,void 0,function*(){const{kickedOutReasonCode:g}=n,{ssoLog:I,utils:{safeStringify:E}}=me;try{this._logKickedOutEvent(n),this._shouldLogoutAfterKickedOut(g)?yield me.login.loginAction.logout(sa.KICKED_OUT):me.login.loginAction.handleLogoutCompleted()}catch(m){I.debug("_processKickedOutReasonInfo",` fail ${E(m)}`)}finally{me.notificationCenter.emitOuterEvent(yr.KICKED_OUT,{data:{type:Du[g]},name:yr.KICKED_OUT})}})}_logKickedOutEvent(n){const{kickedOutReasonCode:g,newInstanceInfo:I={}}=n,E=`type:${Du[g]} newInstanceInfo: ${JSON.stringify(I)}`;me.ssoLog.warn("kickedOut",E)}_isKickedOut(n){return[un.multipleAccount,un.multipleDevice,un.restApi].includes(n)}_isChatLoginEvent(n){const{requestHead:g}=n||{};return g?.idtype!==1}_shouldLogoutAfterKickedOut(n){return![Sn.usersigExpired,un.restApi].includes(n)}_isCurrentInstanceKickedOut(n){const{isLoggedIn:g,statusInstanceId:I}=me.store.get("login")||{};return g===!0&&n===I}_dispose(){const{notificationCenter:n}=me;n.unSubscribeInnerEvent(xI,this._handleForceOfflineFromServerPush,this),n.unSubscribeInnerEvent(La,Ml,this._handleForceOfflineFromResponse,this),n.unSubscribeInnerEvent(La,Sc,this._handleForceOfflineFromResponse,this),n.unSubscribeInnerEvent(La,BE,this._handleForceOfflineFromResponse,this),n.unSubscribeInnerEvent(La,rI,this._handleForceOfflineFromResponse,this),n.unSubscribeInnerEvent(La,Su,this._handleForceOfflineFromResponse,this),n.unSubscribeInnerEvent(Kc,this._dispose,this)}}function vu(s){return mA(this,void 0,void 0,function*(){const n="im_open_status.wslogin",g=me.common.generateProtocolData({servcmd:n,data:{State:"Online",is_web_uniapp:0,InstType:0,CustomInfo:s}}),I=`${g.head.seq}${n}`,E=yield me.channel.sendPacket(g,{timeout:9e4,requestId:I});if(E){const{HelloInterval:m,InstId:D,TinyId:M,TimeStamp:T,CustomStatus:P,PurchaseBits:W,A2Key:iA,RichMsgAuthKey:EA,ErrorCode:RA,ErrorInfo:kA,ActionStatus:xA}=E;return{helloInterval:m,instanceID:D,tinyID:M,timeStamp:T,customStatus:P,purchaseBits:W,a2Key:iA,authKey:EA,errorCode:RA,errorInfo:kA,actionStatus:xA}}})}function vl(){const{store:s}=me;return la(s.get("instance").sdkAppId)!==ct.CHINA}function rs(s){var n;try{const g=Zi.getStorage("errorMessage");if(!s||!g)return"";const I=((n=JSON.parse(g))===null||n===void 0?void 0:n.errorMessage)||{},{code:E,replacement1:m="",replacement2:D=""}=s;if(!E)return"";const M=vl()?`${E}_en`:`${E}_cn`;let T=I[I[M]?M:E]||"";return T&&(m&&(T=T.replace("$replacement1",m)),D&&(T=T.replace("$replacement2",D))),T}catch(g){return console.warn("Error parsing stored error messages:",g),""}}class gs extends Error{constructor(n={}){n.code=n.code||n.errorCode;let{functionName:g="Unknown",code:I,message:E="",data:m="",moreMessage:D="",errorMessage:M=""}=n;M=(I?rs(n):"")||M||E;let T=I?`${g} failed. error: {"message": ${M}, "code": ${I}}`:`${g} failed. error: {"message": ${M}}`;T=`${T} ${D}`,super(),this.code=I,this.errorCode=I,this.errorMessage=M,this.message=T,this.data=m}}function rd(s,n){var g;if(s&&((g=me.store.get("login"))===null||g===void 0?void 0:g.isLoggedIn)!==!0)throw new gs({code:ua.USER_NOT_LOGGED_IN,functionName:n})}function aI(s,n,g){if(Array.isArray(s))for(let I=0;I{return P===(W=I,Object.prototype.toString.call(W).match(/^\[object (.*)\]$/)[1].toLowerCase());var W})){for(let W=0;W{const{interceptor:E,context:m}=I;E.apply(m,[g])})}(s)}function Mc(s,n){QE.push({interceptor:s,context:n})}function jc(s){const{params:n,auth:g}=s;n&&typeof n=="object"&&Object.assign(Rl,n),g&&typeof g=="object"&&Object.assign(ad,g)}function tn(s){return me.store.get("commercialConfig").get(s)}class ws{constructor(){this._handlers=new Map,this._activeWorkflows=new Map,this._stepStartTimes=new Map,this._logHandlers={start:(n,g)=>{const I=Date.now();g?(this._stepStartTimes.set(`${n}-${g}`,I),me.ssoLog.debug("_executeWorkflowStep",`[Workflow ${n}] Step ${g} started at ${new Date(I).toISOString()}`)):(this._workflowStartTimes.set(n,I),me.ssoLog.debug("_executeWorkflowStep",`[Workflow ${n}] started at ${new Date(I).toISOString()}`))},success:(n,g)=>{const I=Date.now();if(g){const E=this._stepStartTimes.get(`${n}-${g}`),m=E?I-E:0;this._stepStartTimes.delete(`${n}-${g}`),me.ssoLog.debug("_executeWorkflowStep",`[Workflow ${n}] Step ${g} completed successfully at ${new Date(I).toISOString()} (${m}ms)`)}else{const E=this._workflowStartTimes.get(n),m=E?I-E:0;this._workflowStartTimes.delete(n),me.ssoLog.debug("_executeWorkflowStep",`[Workflow ${n}] completed successfully at ${new Date(I).toISOString()} (${m}ms)`)}},error:(n,g,I)=>{const{ssoLog:E,utils:{safeStringify:m}}=me,D=Date.now();if(g){const M=this._stepStartTimes.get(`${n}-${g}`),T=M?D-M:0;this._stepStartTimes.delete(`${n}-${g}`),E.error("_executeWorkflowStep",`[Workflow ${n}] Step ${g} failed at ${new Date(D).toISOString()} (${T}ms) ${m(I)}`,{error:I})}else{const M=this._workflowStartTimes.get(n),T=M?D-M:0;this._workflowStartTimes.delete(n),E.error("_executeWorkflowStep",`[Workflow ${n}] failed at ${new Date(D).toISOString()} (${T}ms) ${m(I)}`,{error:I})}}}}static getInstance(){return ws._instance||(ws._instance=new ws),ws._instance}static setInstance(n){ws._instance=n}init(){this._initializeWorkflows()}registerWorkflowStep(n,g,I,E){if(!this._handlers.has(n))return void me.ssoLog.debug("registerWorkflowStep",`Workflow '${n}' not defined in core`);if(!Ng[n].find(D=>D.stepId===g))return void me.ssoLog.debug("registerWorkflowStep",`Step '${g}' not defined in workflow '${n}'`);const m=this._handlers.get(n);m.has(g)||m.set(g,E?I.bind(E):I)}executeWorkflow(n,g){return mA(this,void 0,void 0,function*(){if(!this._validateWorkflow(n))return;me.ssoLog.debug("executeWorkflow",`[Workflow ${n}] Started execution at ${new Date().toISOString()}`);const I=Ng[n],E={},m={cancelled:!1};this._activeWorkflows.set(n,{cancelToken:m});try{const D=new Map;I.forEach(T=>{D.set(T.stepId,T)});const M={workflowName:n,pendingSteps:new Set(I.map(T=>T.stepId)),completedSteps:new Set,runningSteps:new Set,stepMap:D,stepResults:E,data:g,cancelToken:m};yield new Promise((T,P)=>{const W=()=>{if(m.cancelled)return void T();this._getExecutableSteps({pendingSteps:M.pendingSteps,completedSteps:M.completedSteps,stepMap:M.stepMap,workflowName:n}).filter(iA=>!M.runningSteps.has(iA)).forEach(iA=>{M.completedSteps.has(iA)||M.runningSteps.has(iA)||this._executeWorkflowStep(iA,M,{onComplete:()=>{if(M.pendingSteps.size===0)return void T();this._getExecutableSteps({pendingSteps:M.pendingSteps,completedSteps:M.completedSteps,stepMap:M.stepMap,workflowName:n}).filter(EA=>!M.runningSteps.has(EA)).length===0&&M.runningSteps.size===0&&(me.ssoLog.debug("executeWorkflow",`Workflow ${n} completed with some steps skipped due to dependency failures`),T())},onError:P,onStepComplete:W})})};W()}),me.ssoLog.debug("executeWorkflow",`[Workflow ${n}] Completed execution at ${new Date().toISOString()}`)}catch(D){me.ssoLog.error("executeWorkflow",`[Workflow ${n}] Failed execution at ${new Date().toISOString()}`,{error:D})}finally{this._activeWorkflows.delete(n)}})}_executeWorkflowStep(n,g,I){return mA(this,void 0,void 0,function*(){const{workflowName:E,runningSteps:m,stepMap:D,stepResults:M,data:T}=g;m.add(n),this._logWorkflowExecution(E,n,"start");try{const P=D.get(n);let W=null;P?.dependency&&(l(P.dependency)?W=M[P.dependency]:Array.isArray(P.dependency)&&(W={},P.dependency.forEach(EA=>{W[EA]=M[EA]})));const iA=this._handlers.get(E).get(n);if(iA){const EA=yield Promise.resolve(iA({data:T,result:W}));M[n]=EA,this._logWorkflowExecution(E,n,"success")}g.completedSteps.add(n)}catch(P){const W=`[Workflow].${E}.${n}`,{errorCode:iA,errorInfo:EA=`${W} failed`}=P||{},RA=new gs({functionName:W,code:iA,message:EA});me.ssoLog.error(W,EA,{error:RA}),this._logWorkflowExecution(E,n,"error",P),I.onError(P)}finally{m.delete(n),g.pendingSteps.delete(n),I.onStepComplete(),I.onComplete()}})}reset(){this._cancelAllWorkflows()}destroy(){this.reset(),this._handlers.clear()}_initializeWorkflows(){Object.keys(Ng).forEach(n=>{this._handlers.has(n)||this._handlers.set(n,new Map)})}_cancelWorkFlow(n){const g=this._activeWorkflows.get(n);if(!g)return;const{cancelToken:I}=g;I.cancelled=!0,this._activeWorkflows.delete(n)}_cancelAllWorkflows(){Object.keys(Ng).forEach(n=>{this._cancelWorkFlow(n)})}_validateWorkflow(n){return Ng[n]?!!this._handlers.get(n):!1}_getExecutableSteps(n){const{pendingSteps:g,completedSteps:I,stepMap:E,workflowName:m}=n;return Array.from(g).filter(D=>{const M=E.get(D)||{},{dependency:T,skipIfDependencyMissing:P=!0}=M;if(!T)return!0;if(l(T))return this._isStepRegistered({workflowName:m,stepId:T})?I.has(T):!P;if(B(T)){if(T.filter(W=>!this._isStepRegistered({workflowName:m,stepId:W})).length>0&&P)return!1;for(const W of T)if(!I.has(W))return!1;return!0}return!1})}_isStepRegistered(n){var g;const{workflowName:I,stepId:E}=n;return(g=this._handlers.get(I))===null||g===void 0?void 0:g.has(E)}_logWorkflowExecution(n,g,I,E){this._logHandlers[I](n,g)}}const Ea=new Map,zr=({type:s,groupID:n})=>s===ko.GRP_COMMUNITY||`${n}`.startsWith(oa.COMMUNITY)&&!`${n}`.includes(oa.TOPIC),Wc=(s="")=>{const n=s.startsWith("GROUP")?s.replace("GROUP",""):s;return n.startsWith(oa.COMMUNITY)&&`${n}`.includes(oa.TOPIC)},gd="openim",Zg="million_group_open_http_svc";function gg(s){return mA(this,void 0,void 0,function*(){const{servcmd:n,data:g}=function(m){const{data:D}=m;return pE(D)||Xg(D)}(s)?function(m){let{servcmd:D,data:M}=m;return Xg(M)?function(T){const{servcmd:P,data:W}=T;let{GroupId:iA=""}=W;const EA=iA;return[iA]=EA.split(oa.TOPIC),{servcmd:qn(P),data:Object.assign(Object.assign({},W),{GroupId:iA,TopicId:EA})}}(m):(pE(M)&&(D=qn(D)),{servcmd:D,data:M})}(s):s,I=me.common.generateProtocolData({servcmd:n,data:g}),E=`${I.head.seq}${n}`;return me.channel.sendPacket(I,{requestId:E,timeout:s.timeout})})}function pE(s){const{Type:n,GroupId:g,GroupIdList:I=[]}=s,E=g||I[0]||"";return zr({type:n,groupID:E})}function Xg(s){const{GroupId:n=""}=s;return Wc(n)}function qn(s){if(s.includes(gd))return s;const n=s.split(".")[1];return`${Zg}.${n}`}function Ar(){var s;return(s=me.store.get("login"))===null||s===void 0?void 0:s.userId}const Ua=s=>B(s)||f(s),cd=(s,n,g,I)=>{if(!Ua(s)||!Ua(n))return 0;let E=0;const m=Object.keys(n);let D;for(let M=0,T=m.length;M{if(r(n))return"";if(s===ko.MSG_TEXT)return n.text||"";const g=YI[s];return g?Ru(g):""},Zc=[{cmd:"ws_get_user_status",interval:5,count:20},{cmd:"ws_status_subscribe",interval:5,count:20},{cmd:"ws_status_unsubscribe",interval:5,count:20},{cmd:"get_group_self_member_info",interval:5,count:20},{cmd:"modify_group_base_info",interval:1,count:8},{cmd:"get_pendency",interval:1,count:15},{cmd:"set_group_attr",interval:5,count:10},{cmd:"modify_group_attr",interval:5,count:10},{cmd:"delete_group_attr",interval:5,count:10},{cmd:"clear_group_attr",interval:5,count:10},{cmd:"get_group_attr",interval:5,count:20},{cmd:"update_group_counter",interval:5,count:20},{cmd:"get_group_counter",interval:5,count:20},{cmd:"get_topic",interval:1,count:10},{cmd:"read_all_unread_msg",interval:1,count:1},{cmd:"query",interval:5,count:20}],VI="im_sdk_config_mgr.fetch_config",cI="im_sdk_config_mgr.push_configv2",Xc="cloud-config",$c=2996,Ma=new class{init(s){this.core=s}};function bg(s){return mA(this,void 0,void 0,function*(){const{sdkAppId:n}=Ma.core.store.get("instance")||{},g=Ma.core.helper.generateProtocolData({servcmd:VI,data:{uint32_sdkappid:n,uint64_version:s}}),I=`${g.head.seq}${VI}`;return Ma.core.channel.sendPacket(g,{requestId:I})})}var ys=new class{constructor(){this._core=null,this._expirationTime=0,this._version=0,this._isFetching=!1,this._cmdFrequencyLimitMap=new Map,this._methodCallFrequencyMap=new Map}install(s){this._core=s;const{notificationCenter:n,InnerEvent:g,helper:I,constants:{WORKFLOW_NAME:E,WORKFLOW_STEP:m},channel:D}=s;n.subscribeInnerEvent(cI,this._handlePushedConfig,this),I.registerWorkflowStep(E.SYNC_SERVER_INFO_AFTER_LOGIN,m.CLOUD_CONFIG_SYNC,this._handleLoginSuccess,this),n.subscribeInnerEvent(g.LOGOUT,this._reset,this),n.subscribeInnerEvent(g.DESTROY,this._dispose,this),I.registerExperimentalAPI("getServerConfig",this),this._updateCmdFreqLimitMap(Zc),D.registerBeforeSendInterceptor(this.checkMethodCallOverLimit,this)}getServerConfig(s){return mA(this,void 0,void 0,function*(){var n;const g={code:0,data:""};return s&&(g.data=((n=this._core.store.get("cloudConfig"))===null||n===void 0?void 0:n[s])||""),g})}checkMethodCallOverLimit(s){if(!this._cmdFrequencyLimitMap.has(s))return;if(!this._methodCallFrequencyMap.has(s))return void this._methodCallFrequencyMap.set(s,{startTime:Date.now(),methodCallCounter:1});const{count:n,interval:g}=this._cmdFrequencyLimitMap.get(s);let{startTime:I,methodCallCounter:E}=this._methodCallFrequencyMap.get(s);if(Date.now()-I>1e3*g)this._methodCallFrequencyMap.set(s,{startTime:Date.now(),methodCallCounter:1});else if(E+=1,this._methodCallFrequencyMap.set(s,{startTime:I,methodCallCounter:E}),E>n)throw new this._core.helper.ChatError({code:$c,replacement1:s})}_handlePushedConfig(s){return mA(this,void 0,void 0,function*(){const{ssoLog:n,utils:{safeStringify:g}}=this._core;n.info("_handlePushedConfig",g(s)),yield this._updateCloudConfig(s)})}_handleLoginSuccess(){return mA(this,void 0,void 0,function*(){const{ssoLog:s,utils:{safeStringify:n}}=this._core;try{if(this._canFetch()){const g=yield bg(this._version);s.info("_fetchCloudConfigIfLogin",n(g)),yield this._updateCloudConfig(g)}this._core.helper.taskScheduler.addTask({id:Xc,intervalMs:1e3,callback:this._fetchCloudConfigIfReady,context:this})}catch(g){s.debug("_fetchCloudConfigIfLogin",n(g))}})}_fetchCloudConfigIfReady(){return mA(this,void 0,void 0,function*(){const{ssoLog:s,utils:{safeStringify:n}}=this._core;if(this._canFetch())try{const g=yield bg(this._version);s.info("_fetchCloudConfigIfReady",n(g)),yield this._updateCloudConfig(g)}catch(g){s.error("_fetchCloudConfigIfReady",n(g))}})}_updateCloudConfig(s){return mA(this,void 0,void 0,function*(){const n=this._parseCloudConfig(s);n&&(this._core.store.set("cloudConfig",n),yield this._parseCmdFreqLimit(),this._core.notificationCenter.emitInnerEvent(this._core.InnerEvent.CLOUD_CONFIG_UPDATE,n),this._core.notificationCenter.emitOuterEvent(this._core.OuterEvent.SERVER_CONFIG_UPDATED,{name:this._core.OuterEvent.SERVER_CONFIG_UPDATED,data:{config:n}}))})}_canFetch(){const{isLoggedIn:s}=this._core.store.get("login")||{};return s&&!this._isFetching&&Date.now()>=this._expirationTime}_parseCloudConfig(s){const{int32_error_code:n,str_error_message:g,str_json_config:I,uint32_expired_time:E,uint32_sdkappid:m,uint64_version:D}=s;let M=null;if(n===0){if(this._version!==D)try{M=JSON.parse(I),this._version=D}catch{}this._expirationTime=Date.now()+1e3*E}else this._expirationTime=n===void 0?Date.now()+36e5:Date.now()+12e4;return M}_parseCmdFreqLimit(){return mA(this,void 0,void 0,function*(){var s;let n=(s=yield this.getServerConfig("cmd_frequency_limit"))===null||s===void 0?void 0:s.data;const{isEmpty:g}=this._core.utils;if(!g(n))try{n=JSON.parse(n),this._updateCmdFreqLimitMap(n)}catch(I){console.warn(I)}})}_updateCmdFreqLimitMap(s){s.forEach(n=>{this._cmdFrequencyLimitMap.set(n.cmd,{interval:n.interval,count:n.count})})}_reset(){this._core.helper.taskScheduler.removeTask(Xc),this._core.store.clear("cloudConfig"),this._updateCmdFreqLimitMap(Zc),this._methodCallFrequencyMap.clear(),this._expirationTime=0,this._version=0,this._isFetching=!1}_dispose(){const{notificationCenter:s,InnerEvent:n}=this._core;s.unSubscribeInnerEvent(cI,this._handlePushedConfig,this),s.unSubscribeInnerEvent(n.LOGOUT,this._reset,this),s.unSubscribeInnerEvent(n.DESTROY,this._dispose,this),this._reset()}};class Kn{constructor(n=0,g=0){this.high=n,this.low=g}equal(n){return n!==null&&this.low===n.low&&this.high===n.high}toString(){const n=Number(this.high).toString(16);let g=Number(this.low).toString(16);if(g.length<8){let I=8-g.length;for(;I;)g=`0${g}`,I--}return n+g}}const vc={SEARCH_GRP_SNS:new Kn(0,Math.pow(2,1)).toString(),AV_HISTORY_MSG:new Kn(0,Math.pow(2,2)).toString(),GRP_COMMUNITY:new Kn(0,Math.pow(2,3)).toString(),MSG_TO_SPECIFIED_GRP_MBR:new Kn(0,Math.pow(2,4)).toString(),AV_MBR_LIST:new Kn(0,Math.pow(2,6)).toString(),USER_STATUS:new Kn(0,Math.pow(2,7)).toString(),CONV_MARK:new Kn(0,Math.pow(2,9)).toString(),CONV_GROUP:new Kn(0,Math.pow(2,10)).toString(),AV_BAN_MBR:new Kn(0,Math.pow(2,11)).toString(),MSG_EXT:new Kn(0,Math.pow(2,13)).toString(),GRP_COUNTER:new Kn(0,Math.pow(2,15)).toString(),PLUGIN_TRANSLATE:new Kn(Math.pow(2,6)).toString(),PLUGIN_VOICE_TO_TEXT:new Kn(Math.pow(2,7)).toString(),PLUGIN_CS:new Kn(Math.pow(2,8)).toString(),PLUGIN_PUSH:new Kn(Math.pow(2,9)).toString(),PLUGIN_BOT:new Kn(Math.pow(2,10)).toString(),MSG_REACTION:new Kn(Math.pow(2,16)).toString(),FOLLOW:new Kn(Math.pow(2,20)).toString()},JI="CommercialConfig",HI="commercial-config";var mE=new class{constructor(){this._core=null,this._expirationTime=0,this._isFetching=!1,this._featureMap=new Map,this._methodKeyMap=new Map,this._purchaseBits="0"}install(s){this._core=s;const{helper:n,notificationCenter:g,constants:{WORKFLOW_NAME:I,WORKFLOW_STEP:E,InnerEvent:m}}=s;g.subscribeInnerEvent(m.COMMERCIAL_CONFIG_PUSH,this._handlePushedConfig,this),g.subscribeInnerEvent(m.LOGOUT,this._handleLogout,this),g.subscribeInnerEvent(m.DESTROY,this._dispose,this),n.registerWorkflowStep(I.SYNC_SERVER_INFO_AFTER_LOGIN,E.COMMERCIAL_CONFIG_UPDATE,this._syncCommercialConfig,this),s.helper.registerExperimentalAPI("isCommercialAbilityEnabled",this),s.helper.registerExperimentalAPI("queryCommercialAbility",this)}isCommercialAbilityEnabled(s){return mA(this,void 0,void 0,function*(){const n=parseInt(s,10).toString(2),{length:g}=n;let I,E=!0;for(let m=g-1,D=0;m>=0;m--,D++)if(n.charAt(m)==="1"&&(I=D<32?new Kn(0,2**D).toString():new Kn(2**(D-32),0).toString(),!this._featureMap.get(I))){E=!1;break}return this._core.ssoLog.debug("isFeatureEnabled",`${JI}.isFeatureEnabled decimalNumber:${s} key:${I} ret:${E}`),{code:0,data:{enabled:E}}})}queryCommercialAbility(){return this._purchaseBits}_fetchAndParseCommercialConfig(){return mA(this,void 0,void 0,function*(){var s;const{ssoLog:n,utils:{safeStringify:g},common:{buildAndSendPacket:I}}=this._core;try{this._isFetching=!0;const E=yield I({servcmd:"im_sdk_config_mgr.fetch_imsdk_purchase_bitsv2",data:{uint32_sdkappid:(s=this._core.store.get("instance"))===null||s===void 0?void 0:s.sdkAppId}});E&&(this._parseCommercialConfig(E),this._core.store.set("commercialConfig",this._methodKeyMap))}catch(E){n.error("_fetchAndParseCommercialConfig",g(E))}finally{this._isFetching=!1}})}_syncCommercialConfig(s){return mA(this,void 0,void 0,function*(){const{purchaseBits:n}=s?.data||{};n&&(this._parsePurchaseBits(n),this._core.store.set("commercialConfig",this._methodKeyMap)),this._canFetch()&&(yield this._fetchAndParseCommercialConfig()),this._core.helper.taskScheduler.addTask({id:HI,intervalMs:1e3,callback:this._fetchCommercialConfigIfReady,context:this})})}_canFetch(){var s;const n=(s=this._core.store.get("login"))===null||s===void 0?void 0:s.isLoggedIn,g=Date.now()>=this._expirationTime;return n&&!this._isFetching&&g}_handlePushedConfig(s){s?.body&&(this._parseCommercialConfig(s.body),this._core.store.set("commercialConfig",this._methodKeyMap))}_fetchCommercialConfigIfReady(){return mA(this,void 0,void 0,function*(){this._canFetch()&&(yield this._fetchAndParseCommercialConfig())})}_parseCommercialConfig(s){const{ssoLog:n}=this._core;if(typeof s!="object")return;const{int32_error_code:g,str_error_message:I,str_purchase_bits:E,uint32_expired_time:m}=s;g===0?(this._parsePurchaseBits(E),this._expirationTime=Date.now()+1e3*m):g===void 0?(n.warn("_parseCommercialConfig",`${JI}._parseCommercialConfig failed. Invalid message format:`,s),this._expirationTime=Date.now()+36e5):(n.warn("_parseCommercialConfig",`${JI}._parseCommercialConfig errorCode:${g} errorMessage:${I}`),this._expirationTime=Date.now()+12e4)}_isValidPurchaseBits(s){return s&&typeof s=="string"&&s.length>=1&&s.length<=64&&/[01]{1,64}/.test(s)}_parsePurchaseBits(s){const{ssoLog:n,utils:{safeStringify:g}}=this._core;if(this._isValidPurchaseBits(s)){this._purchaseBits=s,this._featureMap.clear(),this._methodKeyMap.clear();let I=null;for(let E=s.length-1,m=0;E>=0;E--,m++)if(I=m<32?new Kn(0,2**m).toString():new Kn(2**(m-32),0).toString(),s[E]==="1"){this._featureMap.set(I,!0);const D=this._getKeyByValue(vc,I);D&&this._methodKeyMap.set(D,!0)}else{this._featureMap.set(I,!1);const D=this._getKeyByValue(vc,I);D&&this._methodKeyMap.set(D,!1)}}else n.warn("_parsePurchaseBits",`${JI}.parsePurchaseBits invalid purchases:${g(s)}`)}_getKeyByValue(s,n){const g=Object.entries(s).find(([I,E])=>E===n);return g?g[0]:void 0}_handleLogout(){this._reset()}_dispose(){this._reset(),this._core.notificationCenter.unSubscribeInnerEvent(this._core.InnerEvent.COMMERCIAL_CONFIG_PUSH,this._handlePushedConfig,this),this._core.notificationCenter.unSubscribeInnerEvent(this._core.InnerEvent.LOGOUT,this._reset,this),this._core.notificationCenter.unSubscribeInnerEvent(this._core.InnerEvent.DESTROY,this._dispose,this)}_reset(){this._core.helper.taskScheduler.removeTask(HI),this._core.store.set("commercialConfig",{}),this._expirationTime=0,this._isFetching=!1,this._featureMap.clear(),this._purchaseBits="0"}},oh=new class{constructor(){this._core=null,this._serverOverloadInfoMap=new Map}install(s){this._core=s;const{notificationCenter:n,InnerEvent:g,channel:I}=this._core;n.subscribeInnerEvent(g.OVERLOAD_PUSH,this._handleOverLoadPush,this),n.subscribeInnerEvent(g.LOGOUT,this._reset,this),n.subscribeInnerEvent(g.DESTROY,this._dispose,this),I.registerBeforeSendInterceptor(this.checkServerOverload,this)}checkServerOverload(s){if(!this._serverOverloadInfoMap.has(s))return;const{overloadStartTimestamp:n,delaySeconds:g}=this._serverOverloadInfoMap.get(s);if(Date.now()-n<=1e3*g)throw new this._core.helper.ChatError({functionName:s,message:"service is busy, please try again later"});this._serverOverloadInfoMap.delete(s)}_handleOverLoadPush(s){const{OverLoadServCmd:n,DelaySecs:g}=s;this._serverOverloadInfoMap.set(n,{overloadStartTimestamp:Date.now(),delaySeconds:g})}_reset(){this._serverOverloadInfoMap.clear()}_dispose(){this._reset();const{notificationCenter:s,InnerEvent:n}=this._core;s.unSubscribeInnerEvent(n.OVERLOAD_PUSH,this._handleOverLoadPush,this),s.unSubscribeInnerEvent(n.LOGOUT,this._reset,this),s.unSubscribeInnerEvent(n.DESTROY,this._dispose,this)}},nC=new class{constructor(){this.name="ConfigCenter"}install(s){Ma.init(s),ys.install(s),mE.install(s),oh.install(s)}},sh=new class{constructor(){this.name="ErrorMessage",this._core=null}install(s){return mA(this,void 0,void 0,function*(){if(this._core=s,this._canFetch()){const n=yield this._fetchErrorMessage();if(!n)return;const g=this._parseResponse(n);this._saveErrorMessage(g)}})}_canFetch(){const s=this._core.store.getStorage("errorMessage");return!s||this._isExpired(s)}_saveErrorMessage(s){this._core.store.setStorage("errorMessage",{errorMessage:s,errorMessageSavedTime:new Date().getTime()})}_fetchErrorMessage(){return mA(this,void 0,void 0,function*(){try{return yield this._core.helper.httpRequest({method:"GET",url:"https://web.sdk.qcloud.com/im/download/error-message/v3/0.0.6/tim-error-message.txt"})}catch(s){console.error(s)}})}_isExpired(s){if(!s)return!0;const{errorMessageSavedTime:n}=s;return n&&new Date().getTime()-n>=6048e5}_parseResponse(s){if(typeof s=="string"){const n=s.split(`; -`),g={},I=new RegExp(/'/g);for(let E=0;E{var JA,re,ne;const _i=function(Ti,kt){const{From_Account:Ni,From_AccountHeadurl:cs,From_AccountNick:Se,IsNeedReadReceipt:Bt,MsgBody:UA,MsgClientTime:ii,MsgRandom:_s,MsgSeq:Gi,MsgTimeStamp:Lr,SendMsgControl:xi,SupportMessageExtension:ar,To_Account:wt,TinyId:_t,MsgCheckResult:Wu,CloudCustomData:ln,IsPeerRead:ho,MsgFlagBits:ll,MsgVersion:DC,EventArray:Rr}=Ti;return{from:Ni,avatar:cs,nick:Se,needReadReceipt:Bt===1,readReceiptSentByPeer:ho,clientTime:ii,messageFlagBits:ll,random:_s,sequence:Gi,time:Lr,messageControlInfo:xi,isSupportExtension:ar,to:wt,tinyID:_t,checkResult:Wu,cloudCustomData:ln,messageVersion:DC,eventArray:Rr,elements:kt.message.messageHelper.parseServerPushMessageElement(UA)}}(OA,xA);if(!((ne=(re=(JA=OA?.EventArray)===null||JA===void 0?void 0:JA[0])===null||re===void 0?void 0:re.hasOwnProperty)===null||ne===void 0)&&ne.call(re,"C2cNotifyMsgArray"))SA.push(...function(Ti){var kt;const Ni=[];return(kt=Ti.EventArray)===null||kt===void 0||kt.forEach(cs=>{var Se,Bt;const{C2cNotifyMsgArray:UA}=cs,ii=(Bt=(Se=UA?.[0])===null||Se===void 0?void 0:Se.WithdrawC2cMsgNotify)===null||Bt===void 0?void 0:Bt.C2cWithdrawInfoArray;Array.isArray(ii)&&Ni.push(...ii)}),Ni}(OA));else{const Ti=xA.message.messageFactory.createMessage(Object.assign(Object.assign({},_i),{conversationType:"C2C",flow:"in"})),{elements:kt}=_i;Ti.setElement(kt),LA.push(Ti)}}),{unreadMessageList:LA,revokedMessageList:SA}}(T.MsgList,n);return{syncFlag:T?.SyncFlag,unreadMessageList:EA,revokedMessageList:RA,unreadCountList:P,overflowUnreadCountList:W,cookie:T?.Cookie,groupTipList:iA}}catch(T){console.warn(T)}})}var kg,no;(function(s){s[s.START_SYNC=0]="START_SYNC",s[s.SYNCING=1]="SYNCING",s[s.SYNC_COMPLETE=2]="SYNC_COMPLETE"})(kg||(kg={})),function(s){s[s.LOGIN_SUCCESS=0]="LOGIN_SUCCESS",s[s.NEW_MESSAGE_RECEIVED=1]="NEW_MESSAGE_RECEIVED"}(no||(no={}));var rC=new class{constructor(){this.name="UnreadMessageSynchronizer",this._unreadDBMessageMap=new Map,this._cookie="",this._localConversationIDListBeforeDisconnect=[]}install(s){this._core=s;const{constants:n}=s;s.helper.registerWorkflowStep(n.WORKFLOW_NAME.SYNC_SERVER_INFO_AFTER_RE_ONLINE,n.WORKFLOW_STEP.UNREAD_MESSAGE_SYNC,this._syncUnreadDBMessageAfterReOnline,this),s.helper.registerWorkflowStep(n.WORKFLOW_NAME.RECEIVE_C2C_NEW_MESSAGE,n.WORKFLOW_STEP.UNREAD_MESSAGE_SYNC,this._syncUnreadDBMessageAfterNewMessageReceived,this),s.helper.registerWorkflowStep(n.WORKFLOW_NAME.SYNC_SERVER_INFO_AFTER_LOGIN,n.WORKFLOW_STEP.UNREAD_MESSAGE_SYNC,this._syncUnreadDBMessageAfterLogin,this),s.notificationCenter.subscribeInnerEvent(s.InnerEvent.SOCKET_DISCONNECTED,this._handleDisconnect,this),s.notificationCenter.subscribeInnerEvent(s.InnerEvent.LOGOUT,this._reset,this),s.notificationCenter.subscribeInnerEvent(s.InnerEvent.DESTROY,this._dispose,this)}_syncUnreadMessage(s){return mA(this,void 0,void 0,function*(){const{isAfterReOnline:n=!1,isAfterNewMessageReceived:g=!1,isAfterLogin:I=!1}=s||{};let E=kg.START_SYNC;const m=[],D=[],M=[],T=[];for(;this._canContinueSync({cookie:this._cookie,syncFlag:E});){const P=yield this._fetchUnreadDBMessage({cookie:this._cookie,syncFlag:E,syncTriggerEvent:g?no.NEW_MESSAGE_RECEIVED:no.LOGIN_SUCCESS});if(!P)break;const{unreadMessageList:W=[],revokedMessageList:iA=[],overflowUnreadCountList:EA,unreadCountList:RA,groupTipList:kA}=P;if(this._cookie=P?.cookie||"",E=P?.syncFlag,this._parseAndSaveUnreadMessageList(W),M.push(...iA),this._updateConversationUnreadOptions({unreadCountList:RA,overflowUnreadCountList:EA,conversationUpdateFieldList:m}),Array.isArray(kA)&&D.push(...kA),n){const{messages:xA}=this._handleNewMessageList(W);T.push(...xA)}}return n?{conversationUpdateFieldList:m,revokedMessageList:M,unreadMessageMap:this._unreadDBMessageMap,groupTipList:D,messages:T,isUnreadC2CMessage:!0}:{conversationUpdateFieldList:m,isInstantMessage:!I,isUnreadC2CMessage:!0,revokedMessageList:M,unreadMessageMap:this._unreadDBMessageMap,groupTipList:D}})}_syncUnreadDBMessageAfterLogin(){return mA(this,void 0,void 0,function*(){return this._cookie="",this._syncUnreadMessage({isAfterLogin:!0})})}_syncUnreadDBMessageAfterNewMessageReceived(s){return mA(this,void 0,void 0,function*(){if(s.data.Flag===1)return this._syncUnreadMessage({isAfterNewMessageReceived:!0})})}_updateConversationUnreadOptions(s){const{unreadCountList:n,overflowUnreadCountList:g,conversationUpdateFieldList:I}=s,{constants:{OuterConstant:{CONV_C2C:E,CONV_SYSTEM:m}}}=this._core;n?.forEach(D=>{const{From_Account:M,UnreadCount:T}=D;if(M!==m){const P=I.find(({conversationID:W})=>W===`${E}${M}`);P?P.unreadCount=T:I.push({conversationID:`${E}${M}`,unreadCount:T,type:E})}}),g?.forEach(D=>{const{From_Account:M,LastMsgTime:T}=D;M!==m&&(I.find(({conversationID:P})=>P===`${E}${M}`)||I.push({conversationID:`${E}${M}`,type:E,lastMsgTime:T}))})}_syncUnreadDBMessageAfterReOnline(){return mA(this,void 0,void 0,function*(){return this._syncUnreadMessage({isAfterReOnline:!0})})}_updateMessageProfile(s){var n;const{messageDataHandler:g}=this._core.message||{},I=(n=this._core.store.get("login"))===null||n===void 0?void 0:n.userId,{from:E,nick:m,avatar:D,conversationID:M=""}=s;if(E!==I){const T=g.getLatestMsgSentByPeer(M);if(T){const{nick:P,avatar:W}=T;m&&D?m===P&&D===W||g.updateNickAndAvatarOfSentMessage({conversationID:M,latestNick:m,latestAvatar:D,isSentByMe:!1}):(s.nick=P,s.avatar=W)}}else{const T=g.getLatestMsgSentByMe(M);!T||m===T.nick&&D===T.avatar||g.updateNickAndAvatarOfSentMessage({conversationID:M,latestNick:m,latestAvatar:D,isSentByMe:!0})}}_handleNewMessageList(s){const{messageDataHandler:n}=this._core.message||{},g=new Map,I=[];return s.forEach(E=>{this._updateMessageProfile(E);let m=E.isModified===1;if(n.isMessageSentByCurrentInstance(E)?E.isModified=m:m=!1,E.isOnlineMessage())E._onlineOnlyFlag=!0,n.isMessageSentByCurrentInstance(E)||I.push(E);else if(this._shouldStoreUnreadMessage(E)){if(n.storeConversationMessage(E)){const{conversationID:D,conversationType:M,conversationSubType:T,flow:P,_isExcludedFromUnreadCount:W,_isExcludedFromLastMessage:iA}=E,EA=iA?"":E;g.has(D)?(g.get(D).lastMessage=EA,P==="in"&&(W||g.get(D).unreadCount++)):g.set(D,{conversationID:D,type:M,subType:T,unreadCount:W||P!=="in"?0:1,lastMessage:EA})}n.isMessageSentByCurrentInstance(E)&&!m||I.push(E)}}),{messages:I,conversationOptions:g}}_shouldStoreUnreadMessage(s){var n;const{conversationID:g}=s,{message:I,appStore:E,utils:{isEmpty:m}}=this._core||{},D=Array.from(((n=E.conversationStore.getConversationMap())===null||n===void 0?void 0:n.keys())||[]),M=this._getLocalLastMessageTime(g);return!I.messageDataHandler.isInMessageList(s)&&D.includes(g)&&this._localConversationIDListBeforeDisconnect.includes(g)&&!m(M)}_fetchUnreadDBMessage(s){return mA(this,void 0,void 0,function*(){const{ssoLog:n,utils:{safeStringify:g}}=this._core;try{n.debug("_fetchUnreadDBMessage",`unread-message-synchronizer._fetchUnreadDBMessage options:${g(s)}`);const E=yield Al(s,this._core);if(!E)return null;const{syncFlag:m,unreadMessageList:D,revokedMessageList:M,cookie:T,unreadCountList:P,overflowUnreadCountList:W,groupTipList:iA}=E;return this._parseAndSaveUnreadMessageList(D),{syncFlag:m,cookie:T,unreadMessageList:D,revokedMessageList:M,unreadCountList:P,overflowUnreadCountList:W,groupTipList:iA}}catch(I){console.log(I)}})}_canContinueSync({cookie:s,syncFlag:n}){var g;return n===kg.START_SYNC||n===kg.SYNCING&&!(!((g=this._core)===null||g===void 0)&&g.helper.isEmpty(s))}_parseAndSaveUnreadMessageList(s){s.forEach(n=>{const{ID:g}=n;this._unreadDBMessageMap.set(g,n)})}_handleDisconnect(){var s;const{appStore:n}=this._core;this._localConversationIDListBeforeDisconnect=Array.from(((s=n.conversationStore.getConversationMap())===null||s===void 0?void 0:s.keys())||[])}_getLocalLastMessageTime(s){const{message:n}=this._core,g=n.messageDataHandler.getLocalMessageList(s),I=g[g.length-1];return I?.time}_reset(){this._cookie="",this._unreadDBMessageMap.clear()}_dispose(){var s,n;(s=this._core)===null||s===void 0||s.notificationCenter.unSubscribeInnerEvent(this._core.InnerEvent.LOGOUT,this._reset,this),(n=this._core)===null||n===void 0||n.notificationCenter.unSubscribeInnerEvent(this._core.InnerEvent.DESTROY,this._dispose,this),this._reset()}},fE=new class{init(s){var n;this._core=s,this._visibilityChangeHandler=this._handleVisibilityChange.bind(this),s.notificationCenter.subscribeInnerEvent(s.InnerEvent.DESTROY,this._dispose,this),document?.addEventListener("visibilitychange",this._visibilityChangeHandler),(n=this._core)===null||n===void 0||n.store.set("activityMonitor",{isActive:!0})}_handleVisibilityChange(){var s,n;const g=document?.visibilityState==="visible";(s=this._core)===null||s===void 0||s.store.set("activityMonitor",{isActive:g}),(n=this._core)===null||n===void 0||n.notificationCenter.emitInnerEvent("activityStatusChange",{isActive:g})}_reset(){var s;(s=this._core)===null||s===void 0||s.store.clear("activityMonitor")}_dispose(){document?.removeEventListener("visibilitychange",this._visibilityChangeHandler);const{notificationCenter:s,InnerEvent:n}=this._core;s.unSubscribeInnerEvent(n.DESTROY,this._dispose,this),this._reset()}},yE=new class{init(s){var n;this._core=s,this._bindAppActivityEvent(),s.notificationCenter.subscribeInnerEvent(s.InnerEvent.DESTROY,this._dispose,this),(n=this._core)===null||n===void 0||n.store.set("activityMonitor",{isActive:!0})}_bindAppActivityEvent(){var s,n,g,I,E;const{MINI_APP_NAMESPACE:m,IN_TT_MINI_GAME:D,IN_WX_MINI_GAME:M}=((s=this._core)===null||s===void 0?void 0:s.utils)||{};D||M?((n=m?.onShow)===null||n===void 0||n.call(m,()=>{var T,P;(T=this._core)===null||T===void 0||T.store.set("activityMonitor",{isActive:!0}),(P=this._core)===null||P===void 0||P.notificationCenter.emitInnerEvent("activityStatusChange",{isActive:!0})}),(g=m?.onHide)===null||g===void 0||g.call(m,()=>{var T,P;(T=this._core)===null||T===void 0||T.store.set("activityMonitor",{isActive:!1}),(P=this._core)===null||P===void 0||P.notificationCenter.emitInnerEvent("activityStatusChange",{isActive:!1})})):((I=m?.onAppShow)===null||I===void 0||I.call(m,()=>{var T,P;(T=this._core)===null||T===void 0||T.store.set("activityMonitor",{isActive:!0}),(P=this._core)===null||P===void 0||P.notificationCenter.emitInnerEvent("activityStatusChange",{isActive:!0})}),(E=m?.onAppHide)===null||E===void 0||E.call(m,()=>{var T,P;(T=this._core)===null||T===void 0||T.store.set("activityMonitor",{isActive:!1}),(P=this._core)===null||P===void 0||P.notificationCenter.emitInnerEvent("activityStatusChange",{isActive:!1})}))}_reset(){var s;(s=this._core)===null||s===void 0||s.store.clear("activityMonitor")}_dispose(){const{notificationCenter:s,InnerEvent:n}=this._core;s.unSubscribeInnerEvent(n.DESTROY,this._dispose,this),this._reset()}},ld=new class{init(s){const{IN_MINI_APP:n,IN_WX_MINI_PLUGIN:g}=s.helper;g||(n?yE.init(s):fE.init(s))}};const DE="none",el="online";var lI=new class{init(s){this._core=s,this._activateNetworkMonitoring(),s.notificationCenter.subscribeInnerEvent(s.InnerEvent.DESTROY,this._dispose,this)}_activateNetworkMonitoring(){return mA(this,void 0,void 0,function*(){navigator.onLine?this._onOnline():this._onOffline(),this._onOnlineCallback=this._onOnline.bind(this),this._onOfflineCallback=this._onOffline.bind(this),window.addEventListener("online",this._onOnlineCallback),window.addEventListener("offline",this._onOfflineCallback)})}_deactivateNetworkMonitoring(){this._onOnlineCallback!==null&&(window.removeEventListener("online",this._onOnlineCallback),this._onOnlineCallback=null),this._onOfflineCallback!==null&&(window.removeEventListener("offline",this._onOfflineCallback),this._onOfflineCallback=null)}_onNetworkStatusChange(s){var n,g;const{isConnected:I,networkType:E}=s;(n=this._core)===null||n===void 0||n.store.set("netWorkMonitor",{isNetworkOnline:I,networkType:E}),(g=this._core)===null||g===void 0||g.notificationCenter.emitInnerEvent("networkStatusChange",{isNetworkOnline:I,networkType:E})}_onOnline(){this._onNetworkStatusChange({isConnected:!0,networkType:el})}_onOffline(){this._onNetworkStatusChange({isConnected:!1,networkType:DE})}_reset(){var s;this._deactivateNetworkMonitoring(),(s=this._core)===null||s===void 0||s.store.clear("netWorkMonitor")}_dispose(){var s,n;(s=this._core)===null||s===void 0||s.notificationCenter.unSubscribeInnerEvent((n=this._core)===null||n===void 0?void 0:n.InnerEvent.DESTROY,this._dispose,this),this._reset()}},wu=new class{init(s){this._core=s,this._activateNetworkMonitoring(),s.notificationCenter.subscribeInnerEvent(s.InnerEvent.DESTROY,this._dispose,this)}_activateNetworkMonitoring(){return mA(this,void 0,void 0,function*(){try{const{utils:{MINI_APP_NAMESPACE:s}}=this._core;this._mpNetworkStatusCallback=this._onNetworkStatusChange.bind(this),s.onNetworkStatusChange(this._onNetworkStatusChange.bind(this))}catch(s){console.error(s)}})}_deactivateNetworkMonitoring(){if(this._mpNetworkStatusCallback!==null){const{utils:{MINI_APP_NAMESPACE:s}}=this._core;s.offNetworkStatusChange&&s.offNetworkStatusChange(this._mpNetworkStatusCallback),this._mpNetworkStatusCallback=null}}_onNetworkStatusChange(s){var n,g;const{isConnected:I,networkType:E}=s;(n=this._core)===null||n===void 0||n.store.set("netWorkMonitor",{isNetworkOnline:I,networkType:E}),(g=this._core)===null||g===void 0||g.notificationCenter.emitInnerEvent("networkStatusChange",{isNetworkOnline:I,networkType:E})}_reset(){var s;this._deactivateNetworkMonitoring(),(s=this._core)===null||s===void 0||s.store.clear("netWorkMonitor")}_dispose(){var s,n;(s=this._core)===null||s===void 0||s.notificationCenter.unSubscribeInnerEvent((n=this._core)===null||n===void 0?void 0:n.InnerEvent.DESTROY,this._dispose,this),this._reset()}},_u=new class{init(s){const{IN_MINI_APP:n}=s.utils;n?wu.init(s):lI.init(s)}},aC=new class{constructor(){this.name="SystemStateMonitor"}install(s){ld.init(s),_u.init(s)}};const Mr=new Set(["tui_room_svr.*","callkit_records_svr.*","room_engine_srv.*","room_engine_http_srv.*","room_engine_mic.*","live_engine_srv.*","live_engine_http_srv.*","live_engine_pk.*","trtc_ai_service.*","call_engine_srv.*"]),cg="tui_room_svr.*";var Rc=new class{constructor(){this.name="BusinessCommandTransfer",this._transferredCommands=Mr}install(s){this._core=s;const{notificationCenter:n,InnerEvent:g,helper:I}=s;n.subscribeInnerEvent(g.CLOUD_CONFIG_UPDATE,this._onCloudConfigUpdate,this),n.subscribeInnerEvent(g.LOGOUT,this._reset,this),n.subscribeInnerEvent(g.DESTROY,this._dispose,this),n.subscribeInnerEvent("im_open_push.msg_push",n.InnerEventSubType.BUSINESS_COMMAND,this._onServerPushBusinessCommand,this),I.registerExperimentalAPI("sendTRTCCustomData",this,"transferBusinessCommand"),I.registerExperimentalAPI("sendRoomCustomData",this,"transferBusinessCommand")}transferBusinessCommand(s){return mA(this,void 0,void 0,function*(){const n="transferBusinessCommand";try{const{serviceCommand:g=cg}=s||{};if(!this._isValidTransferredCommand(g))throw new this._core.helper.ChatError({code:2995,functionName:n});return{code:0,data:(yield function(E,m){return mA(this,void 0,void 0,function*(){const{helper:D,channel:M}=m,{serviceCommand:T=cg,data:P}=E||{};let W={};try{W=typeof P=="string"?JSON.parse(P):P}catch(RA){console.warn(RA)}const iA=D.generateProtocolData({servcmd:T,data:W}),EA=`${iA.head.seq}${T}`;return M.sendPacket(iA,{requestId:EA,shouldRejectOnError:!1})})}(s,this._core))||{}}}catch(g){throw console.warn(g),new this._core.helper.ChatError({code:g?.errorCode,message:g?.errorInfo,data:{},functionName:n})}})}_onCloudConfigUpdate(s={}){try{if(typeof s.rtc_cmd!="string")return;const n=JSON.parse(s.rtc_cmd);Array.isArray(n)&&(this._transferredCommands=new Set([...this._transferredCommands,...n]))}catch(n){console.log(n)}}_isValidTransferredCommand(s=""){const n=`${s?.split(".")[0]}.*`;return this._transferredCommands.has(n)}_onServerPushBusinessCommand(s){const{OuterEvent:n,notificationCenter:g}=this._core,{MsgContent:I}=s||{},{ROOM_CUSTOM_DATA_RECEIVED:E}=n;g.emitOuterEvent(E,{name:E,data:I})}_reset(){this._transferredCommands=Mr}_dispose(){const{notificationCenter:s,InnerEvent:n}=this._core;this._reset(),s.unSubscribeInnerEvent(n.CLOUD_CONFIG_UPDATE,this._onCloudConfigUpdate,this),s.unSubscribeInnerEvent(n.LOGOUT,this._reset,this),s.unSubscribeInnerEvent(n.DESTROY,this._dispose,this),s.unSubscribeInnerEvent("im_open_push.msg_push",s.InnerEventSubType.BUSINESS_COMMAND,this._onServerPushBusinessCommand,this)}};const Tu=1,wl=2,Id=3,Zr=4,II=5,_n="TIMCustomElem",gC="C2C",tl="GROUP",ud="invite",uI="accept",Fa="cancel",cC="reject",Oa="modifyInvitation",Ir="signaling",Ed=8010,Nu="signaling-timeout";function ur(s){return s.filter(n=>{if(n.type===_n){const{cloudCustomData:g="",payload:{data:I=""}={}}=n,E=g.match(/"type":"tsignaling"/),m=I.match(/inviteID/),D=I.match(/actionType/);return E||m&&D}return!1})}function wc(s){const{data:n}=s.payload;try{return JSON.parse(n)}catch(g){return console.error(g),null}}function il(s,n){return s.toString(16).padStart(n,"0")}function Lg(s){if(s<0||s>53)throw new Error("Number of digits must be between 0 and 53");if(s<=30)return Math.floor(Math.random()*(1<0;const M=this._core.common.getCurrentUserID();return D.includes(M)}return!0}updateSignaling(s){const n=`${Ir}.updateSignaling`,{inviteID:g,inviter:I,inviteeList:E,groupID:m}=s;if(console.log(`${n} inviteID:${g} inviter:${I} groupID:${m}`),m&&this.hasSignaling(g)){const D=E[0],{inviteeList:M}=this._onlineSignalingMap.get(g);M.includes(D)&&(M.splice(M.indexOf(D),1),console.log(`${n} remove ${D}. localInviteeList.length:${M.length}`)),M.length===0&&this.removeSignaling(g)}else this.removeSignaling(g)}setSignalingListenStatus(s){this._isSignalingListening=s}getSignalingListenStatus(){return this._isSignalingListening}_dispose(){var s,n;this._reset(),(s=this._core)===null||s===void 0||s.notificationCenter.unSubscribeInnerEvent(this._core.InnerEvent.DESTROY,this._dispose,this),(n=this._core)===null||n===void 0||n.notificationCenter.unSubscribeInnerEvent(this._core.InnerEvent.LOGOUT,this._reset,this),this._isSignalingListening=!1}_reset(){this._onlineSignalingMap.clear()}},$g=new class{init(s){this._core=s}createInviteSignaling(s){const n=this._generateInviteID(),g=this._createInviteSignalingData(Object.assign(Object.assign({},s),{inviteID:n})),{groupID:I,inviteeList:E}=g,m=I||E[0];return{signaling:this._createSignaling(g,m),signalingData:g,signalingExtensionOptions:this._createSignalingExtensionOptions(s)}}createAcceptSignaling(s){const n=this._createAcceptSignalingData(s),{groupID:g,inviter:I}=n,E=g||I;return{signaling:this._createSignaling(n,E),signalingData:n,signalingExtensionOptions:this._createSignalingExtensionOptions(s)}}createCancelSignaling(s){const n=this._createCancelSignalingData(s),{groupID:g,inviteeList:I}=n,E=g||I[0];return{signaling:this._createSignaling(n,E),signalingData:n,signalingExtensionOptions:this._createSignalingExtensionOptions(s)}}createRejectSignaling(s){const n=this._createRejectSignalingData(s),{groupID:g,inviter:I}=n,E=g||I;return{signaling:this._createSignaling(n,E),signalingData:n,signalingExtensionOptions:this._createSignalingExtensionOptions(s)}}createTimeoutSignaling(s){const{isInviter:n=!1}=s,g=this._createTimeoutSignalingData(s),{groupID:I,inviteeList:E,inviter:m}=g,D=I||(n?E[0]:m);return{signaling:this._createSignaling(g,D),signalingData:g,signalingExtensionOptions:this._createSignalingExtensionOptions(g)}}_createSignalingExtensionOptions(s){var n,g;const{data:I="",onlineUserOnly:E,inviteID:m="",offlinePushInfo:D,actionType:M}=s,T=((g=(n=Fo.getSignaling(m))===null||n===void 0?void 0:n.signaling)===null||g===void 0?void 0:g._onlineOnlyFlag)||!1;return{onlineUserOnly:E||T,offlinePushInfo:D,messageControlInfo:this._createMessageControlInfo(I,M)}}_createMessageControlInfo(s,n){const g=n===II&&!!s.match(/excludeTimeoutSignalingFromHistoryMessage/),I=!!s.match(/excludeFromHistoryMessage/)||!!s.match(/excludeOriginalSignalingFromHistoryMessage/);return{excludedFromContentModeration:!0,excludedFromUnreadCount:g||I,excludedFromLastMessage:g||I}}_createInviteSignalingData(s){const n=`${Ir}._createInviteSignalingData`,{userID:g,timeout:I=0,groupID:E="",inviteeList:m=[]}=s,D=this._core.common.getCurrentUserID(),M=Object.assign(Object.assign({},this._generateBaseSignalData(s)),{actionType:Tu,inviter:D,inviteeList:E?m:[g],timeout:I});return console.log(`${n} signalingData:`,M),M}_createAcceptSignalingData(s){const n=`${Ir}._createAcceptSignalingData`,{inviteID:g}=s,I=this._core.common.getCurrentUserID(),{inviter:E,groupID:m}=Fo.getSignaling(g),D=Object.assign(Object.assign({},this._generateBaseSignalData(s)),{actionType:Id,groupID:m,inviter:E,inviteeList:[I]});return console.log(`${n} signalingData:`,D),D}_createCancelSignalingData(s){const n=`${Ir}._createCancelSignalingData`,{inviteID:g}=s,I=this._core.common.getCurrentUserID(),{inviteeList:E,groupID:m}=Fo.getSignaling(g),D=Object.assign(Object.assign({},this._generateBaseSignalData(s)),{actionType:wl,groupID:m,inviter:I,inviteeList:E});return console.log(`${n} signalingData:`,D),D}_createRejectSignalingData(s){const n=`${Ir}._createRejectSignalingData`,{inviteID:g}=s,I=this._core.common.getCurrentUserID(),{inviter:E,groupID:m}=Fo.getSignaling(g),D=Object.assign(Object.assign({},this._generateBaseSignalData(s)),{actionType:Zr,groupID:m,inviter:E,inviteeList:[I]});return console.log(`${n} signalingData:`,D),D}_createTimeoutSignalingData(s){const n=`${Ir}._createTimeoutSignalingData`,{isInviter:g=!1,inviteID:I}=s,{inviteeList:E,inviter:m}=Fo.getSignaling(I),D=this._core.common.getCurrentUserID(),M=Object.assign(Object.assign({},this._generateBaseSignalData(s)),{actionType:II,inviter:m,inviteeList:g?E:[D]});return console.log(`${n} signalingData:`,M),M}_createSignaling(s,n){var g,I,E;const{groupID:m=""}=s,D={to:n,conversationType:m?tl:gC,priority:"High",payload:{data:JSON.stringify(s)}};return(E=(I=(g=this._core)===null||g===void 0?void 0:g.message)===null||I===void 0?void 0:I.messageFactory)===null||E===void 0?void 0:E.createCustomMessage(D)}_generateInviteID(){return[il(Lg(32),8),il(Lg(16),4),il(16384|Lg(12),4),il(32768|Lg(14),4),il(Lg(48),12)].join("-")}_generateBaseSignalData(s){const{data:n="",inviteID:g="",groupID:I=""}=s;return{businessID:1,timeout:0,data:n,inviteID:g,groupID:I}}},za=new class{constructor(){this._isProcessingSignaling=!1}init(s){this._core=s,s.helper.registerApi({apiName:"invite",context:this}),s.helper.registerApi({apiName:"accept",context:this}),s.helper.registerApi({apiName:"cancel",context:this}),s.helper.registerApi({apiName:"reject",context:this}),s.helper.registerApi({apiName:"modifyInvitation",context:this}),s.helper.registerApi({apiName:"getSignalingInfo",context:this}),s.helper.registerApi({apiName:"addSignalingListener",context:this}),s.helper.registerApi({apiName:"removeSignalingListener",context:this}),s.notificationCenter.subscribeInnerEvent(s.InnerEvent.DESTROY,this._dispose,this),s.notificationCenter.subscribeInnerEvent(s.InnerEvent.LOGOUT,this._reset,this)}invite(s){return mA(this,void 0,void 0,function*(){var n;try{this._validateBeforeInvite(s);const{signaling:g,signalingData:I,signalingExtensionOptions:E}=$g.createInviteSignaling(s),m=yield this._sendSignaling(g,E);if(m?.code===0){const{inviteID:D,timeout:M}=I;return Fo.saveSignaling(D,Object.assign(Object.assign({},I),{signaling:g})),M>0&&((n=this._core)===null||n===void 0||n.helper.taskScheduler.addOnceTask({id:`${Nu}-${D}`,intervalMs:1e3*(M+5),callback:this.handleInvitationExpiryTimer.bind(this,D)})),Object.assign(Object.assign({},m),{inviteID:D})}return m}catch(g){throw g}})}accept(s){return mA(this,void 0,void 0,function*(){try{const{inviteID:n}=s;this._validateBeforeAccept(n),this._isProcessingSignaling=!0;const{signaling:g,signalingData:I,signalingExtensionOptions:E}=$g.createAcceptSignaling(s),m=yield this._sendSignaling(g,E);return m?.code===0?(Fo.updateSignaling(I),Object.assign(Object.assign({},m),{inviteID:n})):m}catch(n){throw n}finally{this._isProcessingSignaling=!1}})}cancel(s){return mA(this,void 0,void 0,function*(){try{const{inviteID:n}=s;this._validateBeforeCancel(n),this._isProcessingSignaling=!0;const{signaling:g,signalingExtensionOptions:I}=$g.createCancelSignaling(s),E=yield this._sendSignaling(g,I);return E?.code===0?(Fo.removeSignaling(n),Object.assign(Object.assign({},E),{inviteID:n})):E}catch(n){throw n}finally{this._isProcessingSignaling=!1}})}reject(s){return mA(this,void 0,void 0,function*(){try{const{inviteID:n}=s;this._validateBeforeReject(n),this._isProcessingSignaling=!0;const{signaling:g,signalingExtensionOptions:I}=$g.createRejectSignaling(s),E=yield this._sendSignaling(g,I);return E?.code===0?(Fo.removeSignaling(n),Object.assign(Object.assign({},E),{inviteID:n})):E}catch(n){throw n}finally{this._isProcessingSignaling=!1}})}modifyInvitation(s){return mA(this,void 0,void 0,function*(){var n,g;const{inviteID:I,data:E}=s;let m="";try{this._validateBeforeModifyInvitation(I);const D=Fo.getSignaling(I),{signaling:M}=D,T=yo(D,["signaling"]);m=M.payload.data,T.data=E,M.payload.data=JSON.stringify(T);const P=yield(g=(n=this._core)===null||n===void 0?void 0:n.message.messageAction)===null||g===void 0?void 0:g.modifyMessage(M);return Fo.hasSignaling(I)&&Fo.saveSignaling(I,Object.assign(Object.assign({},T),{signaling:M})),P}catch(D){if(m){const{signaling:M}=Fo.getSignaling(I);M.payload.data=m}throw D}})}getSignalingInfo(s){const{ssoLog:n,utils:{safeStringify:g}}=this._core;if(ur([s]).length===0)return;const I=wc(s),E={businessID:I.businessID||1,inviteID:I.inviteID,groupID:I.groupID||"",inviter:I.inviter||"",inviteeList:I.inviteeList||[],data:I.data||"",actionType:I.actionType||Tu,timeout:I.timeout||0};return n.debug(`${Ir} getSignalingInfo ${g(E)}`),E}addSignalingListener(s,n,g){var I,E;s===((I=this._core)===null||I===void 0?void 0:I.SignalingEvent.NEW_INVITATION_RECEIVED)&&Fo.setSignalingListenStatus(!0),(E=this._core)===null||E===void 0||E.notificationCenter.subscribeOuterEvent(s,n,g)}removeSignalingListener(s,n,g){var I,E;s===((I=this._core)===null||I===void 0?void 0:I.SignalingEvent.NEW_INVITATION_RECEIVED)&&Fo.setSignalingListenStatus(!1),(E=this._core)===null||E===void 0||E.notificationCenter.unSubscribeOuterEvent(s,n,g)}handleInvitationExpiryTimer(s){const n=Fo.getOnlineSignalingMap(),g=this._core.common.getCurrentUserID();if(!n.has(s))return;const I=n.get(s).inviter===g;this._sendTimeoutNotice({inviteID:s,isInviter:I})}_sendSignaling(s,n){return mA(this,void 0,void 0,function*(){var g,I,E;return(E=(I=(g=this._core)===null||g===void 0?void 0:g.message)===null||I===void 0?void 0:I.messageSender)===null||E===void 0?void 0:E.sendMessage(s,n)})}_sendTimeoutNotice(s){return mA(this,void 0,void 0,function*(){var n,g,I;this._core.ssoLog.debug("_sendTimeoutNotice",`${Ir}._sendTimeoutNotice params:${JSON.stringify(s)}`);const{isInviter:E,inviteID:m}=s,{signaling:D,signalingData:M,signalingExtensionOptions:T}=$g.createTimeoutSignaling(s),P=yield this._sendSignaling(D,T);if(P?.code===0){const{data:W,groupID:iA,inviteeList:EA,inviter:RA}=M;(n=this._core)===null||n===void 0||n.notificationCenter.emitOuterEvent((g=this._core)===null||g===void 0?void 0:g.SignalingEvent.INVITATION_TIMEOUT,{name:(I=this._core)===null||I===void 0?void 0:I.SignalingEvent.INVITATION_TIMEOUT,data:{data:W,groupID:iA,inviteID:m,inviteeList:EA,inviter:RA,isSelfTimeout:!0,message:D}}),E?Fo.removeSignaling(m):Fo.updateSignaling(M)}})}_validateInviteId(s,n){if(!Fo.hasSignaling(n))throw new this._core.helper.ChatError({functionName:s,code:Ed})}_validateProcessStatus(s){if(this._isProcessingSignaling)throw new this._core.helper.ChatError({functionName:s,message:"processing other signaling operations"})}_validateBeforeInvite(s){const n=ud,{userID:g}=s,I=this._core.common.getCurrentUserID();if(g===I)throw new this._core.helper.ChatError({functionName:n,message:`cannot invite yourself, currentUserId:${I}, inviteeId:${g}`})}_validateBeforeAccept(s){const n=uI;this._validateInviteId(n,s),this._validateProcessStatus(n);const g=this._core.common.getCurrentUserID(),{inviteeList:I}=Fo.getSignaling(s);if(!I.includes(g)){const E=`userID:${g} not in inviteeList. inviteID:${s}`;throw new this._core.helper.ChatError({functionName:n,message:E})}}_validateBeforeCancel(s){const n=Fa;this._validateInviteId(n,s),this._validateProcessStatus(n);const g=this._core.common.getCurrentUserID(),{inviter:I}=Fo.getSignaling(s);if(I!==g){const E=`unmatched inviter:${I} and my userID:${g}`;throw new this._core.helper.ChatError({functionName:n,message:E})}}_validateBeforeReject(s){const n=cC;this._validateInviteId(n,s),this._validateProcessStatus(n);const g=this._core.common.getCurrentUserID(),{inviteeList:I}=Fo.getSignaling(s);if(!I.includes(g)){const E=`userID:${g} not in inviteeList. inviteID:${s}`;throw new this._core.helper.ChatError({functionName:n,message:E})}}_validateBeforeModifyInvitation(s){const n=Oa;this._validateInviteId(n,s)}_dispose(){var s,n;this._reset(),(s=this._core)===null||s===void 0||s.notificationCenter.unSubscribeInnerEvent(this._core.InnerEvent.DESTROY,this._dispose,this),(n=this._core)===null||n===void 0||n.notificationCenter.unSubscribeInnerEvent(this._core.InnerEvent.LOGOUT,this._reset,this)}_reset(){this._isProcessingSignaling=!1}},_l=new class{constructor(){this._actionProcessor=new Map([[Tu,this._onNewInvitationReceived.bind(this)],[Zr,this._onInviteeRejected.bind(this)],[Id,this._onInviteeAccepted.bind(this)],[wl,this._onInvitationCancelled.bind(this)],[II,this._onInvitationTimeout.bind(this)]])}init(s){this._core=s,s.notificationCenter.subscribeOuterEvent(s.OuterEvent.MESSAGE_RECEIVED,this._handleMessageReceived,this),s.notificationCenter.subscribeOuterEvent(s.OuterEvent.MESSAGE_MODIFIED,this._handleMessageModified,this),s.notificationCenter.subscribeInnerEvent(s.InnerEvent.DESTROY,this._dispose,this)}handleActionSignaling(s){s.forEach(n=>{const g=wc(n);if(g){const I=this._actionProcessor.get(g.actionType);I?.(g,n)}})}_handleMessageReceived(s){if(!Fo.getSignalingListenStatus())return;const n=ur(s.data);n.length!==0&&this.handleActionSignaling(n)}_handleMessageModified(s){if(!Fo.getSignalingListenStatus())return;const n=ur(s.data);n.length>0&&n.forEach(g=>{const I=wc(g);I&&this._onInvitationModified(I,g)})}_onNewInvitationReceived(s,n){var g,I;const E=`${Ir}._onNewInvitationReceived`,{inviteID:m,inviteeList:D,groupID:M}=s,T=this._core.common.getCurrentUserID();if(this._core.ssoLog.debug("_onNewInvitationReceived",`${E} signalingData:${JSON.stringify(s)}}`),M&&!D.includes(T))return;let{timeout:P}=s;const W=Date.now()/1e3-n.time;P>0&&W>0&&P>W&&(P-=W);const iA=Fo.getSignaling(m);iA!==s&&(iA||Fo.saveSignaling(m,Object.assign(Object.assign({},s),{signaling:n})),P>0&&((g=this._core)===null||g===void 0||g.helper.taskScheduler.addOnceTask({id:`${Nu}-${m}`,intervalMs:1e3*P,callback:za.handleInvitationExpiryTimer.bind(za,m)})),this._emitEvent({name:(I=this._core)===null||I===void 0?void 0:I.SignalingEvent.NEW_INVITATION_RECEIVED,data:Object.assign(Object.assign({},this._generateBaseEmitData(s)),{inviteeList:D})}))}_onInviteeRejected(s){var n;const g=`${Ir}._onInviteeRejected`,{inviteID:I,inviter:E,groupID:m,inviteeList:D}=s,M=Fo.hasSignaling(I);this._core.ssoLog.debug("_onInviteeRejected",`${g} inviteID:${I} hasInviteID:${M} inviter:${E} groupID:${m}`),M&&(Fo.updateSignaling(s),this._emitEvent({name:(n=this._core)===null||n===void 0?void 0:n.SignalingEvent.INVITEE_REJECTED,data:Object.assign(Object.assign({},this._generateBaseEmitData(s)),{invitee:D[0]})}))}_onInviteeAccepted(s){var n;const g=`${Ir}._onInviteeAccepted`,{inviteID:I,inviter:E,groupID:m,inviteeList:D}=s,M=Fo.hasSignaling(I);this._core.ssoLog.debug("_onInviteeAccepted",`${g} inviteID:${I} hasInviteID:${M} inviter:${E} groupID:${m}`),M&&(Fo.updateSignaling(s),this._emitEvent({name:(n=this._core)===null||n===void 0?void 0:n.SignalingEvent.INVITEE_ACCEPTED,data:Object.assign(Object.assign({},this._generateBaseEmitData(s)),{invitee:D[0]})}))}_onInvitationCancelled(s){var n;const g=`${Ir}._onInvitationCancelled`,{inviteID:I,inviter:E,groupID:m}=s,D=Fo.hasSignaling(I);this._core.ssoLog.debug("_onInvitationCancelled",`${g} inviteID:${I} hasInviteID:${D} inviter:${E} groupID:${m}`),D&&(Fo.removeSignaling(I),this._emitEvent({name:(n=this._core)===null||n===void 0?void 0:n.SignalingEvent.INVITATION_CANCELLED,data:this._generateBaseEmitData(s)}))}_onInvitationTimeout(s){var n;const g=`${Ir}._onInvitationTimeout`,{inviteID:I,inviteeList:E}=s,m=Fo.hasSignaling(I);this._core.ssoLog.debug("_onInvitationTimeout",`${g} inviteID:${I} hasInviteID:${m} data:${s.data}`),m&&(Fo.updateSignaling(s),this._emitEvent({name:(n=this._core)===null||n===void 0?void 0:n.SignalingEvent.INVITATION_TIMEOUT,data:Object.assign(Object.assign({},this._generateBaseEmitData(s)),{inviteeList:E,isSelfTimeout:!1})}))}_onInvitationModified(s,n){var g;const I=`${Ir}._onInvitationModified`,{inviteID:E,data:m}=s,D=Fo.hasSignaling(E);this._core.ssoLog.debug("_onInvitationModified",`${I} inviteID:${E} data:${m}`),D&&(Fo.saveSignaling(E,Object.assign(Object.assign({},s),{signaling:n})),this._emitEvent({name:(g=this._core)===null||g===void 0?void 0:g.SignalingEvent.INVITATION_MODIFIED,data:{inviteID:E,data:m}}))}_emitEvent(s){var n;(n=this._core)===null||n===void 0||n.notificationCenter.emitOuterEvent(s.name,s)}_generateBaseEmitData(s){const{inviteID:n,inviter:g,groupID:I,data:E}=s;return{inviteID:n,inviter:g,groupID:I,data:E||""}}_dispose(){var s,n,g;(s=this._core)===null||s===void 0||s.notificationCenter.unSubscribeOuterEvent(this._core.OuterEvent.MESSAGE_RECEIVED,this._handleMessageReceived,this),(n=this._core)===null||n===void 0||n.notificationCenter.unSubscribeOuterEvent(this._core.OuterEvent.MESSAGE_MODIFIED,this._handleMessageModified,this),(g=this._core)===null||g===void 0||g.notificationCenter.unSubscribeOuterEvent(this._core.InnerEvent.DESTROY,this._dispose,this)}},Xr=new class{constructor(){this._offlineSignalingMap=new Map}init(s){this._core=s;const{notificationCenter:n,helper:g,constants:{InnerEvent:I,WORKFLOW_STEP:E,WORKFLOW_NAME:m}}=s;n.subscribeInnerEvent(I.DESTROY,this._dispose,this),n.subscribeInnerEvent(I.LOGOUT,this._reset,this),g.registerWorkflowStep(m.SYNC_SERVER_INFO_AFTER_LOGIN,E.SIGNALING_MESSAGE_RECOVER,this._handleC2COfflineMessage,this)}_handleC2COfflineMessage(s){const{result:{unreadMessageMap:n}={}}=s||{};if(!(n?.size!==0&&Fo.getSignalingListenStatus()))return;const g=ur([...n.values()]);if(g.length!==0&&(g.forEach(I=>{this._handleC2CActionType(I)}),this._offlineSignalingMap.size>0)){const I=this._sortOfflineSignalingByTime();_l.handleActionSignaling(I)}}_handleC2CActionType(s){const n=wc(s);if(!n)return;const{actionType:g}=n;g===Tu?this._saveValidOfflineInvite(n,s):this._removeOfflineInvite(n)}_saveValidOfflineInvite(s,n){const{inviteID:g,inviteeList:I=[],timeout:E=0}=s,m=this._core.common.getCurrentUserID();if(!I.includes(m))return;const D=Date.now()/1e3-n.time;E>0&&D>E&&E!==0||this._offlineSignalingMap.set(g,Object.assign(Object.assign({},s),{signalingList:[n]}))}_removeOfflineInvite(s){const{inviteID:n=""}=s;this._offlineSignalingMap.has(n)&&this._offlineSignalingMap.delete(n)}_sortOfflineSignalingByTime(){let s=[];return this._offlineSignalingMap.forEach(n=>{s=[...s,...n.signalingList]}),s.sort((n,g)=>n.time-g.time)}_dispose(){var s,n;this._reset(),(s=this._core)===null||s===void 0||s.notificationCenter.unSubscribeInnerEvent(this._core.InnerEvent.LOGOUT,this._reset,this),(n=this._core)===null||n===void 0||n.notificationCenter.unSubscribeInnerEvent(this._core.InnerEvent.DESTROY,this._dispose,this)}_reset(){this._offlineSignalingMap.clear()}};const nh={invite:{userID:{required:!0,rules:["string"],allowEmpty:!1},data:{required:!1,rules:["string"],allowEmpty:!0},timeout:{required:!1,rules:["number"],allowEmpty:!1},onlineUserOnly:{required:!1,rules:["boolean"],allowEmpty:!1},offlinePushInfo:{required:!1,rules:["object"],allowEmpty:!1}},cancel:{inviteID:{required:!0,rules:["string"],allowEmpty:!1},data:{required:!1,rules:["string"],allowEmpty:!0}},accept:{inviteID:{required:!0,rules:["string"],allowEmpty:!1},data:{required:!1,rules:["string"],allowEmpty:!0}},reject:{inviteID:{required:!0,rules:["string"],allowEmpty:!1},data:{required:!1,rules:["string"],allowEmpty:!0}},modifyInvitation:{inviteID:{required:!0,rules:["string"],allowEmpty:!1},data:{required:!1,rules:["string"],allowEmpty:!0}}},js={invite:!0,cancel:!0,accept:!0,reject:!0,modifyInvitation:!0};var qI=new class{constructor(){this.name="Signaling"}install(s){za.init(s),_l.init(s),$g.init(s),Fo.init(s),Xr.init(s),s.helper.registerValidateConfig({auth:js,params:nh})}};const Us=new class{init(s){this.core=s}};function _c(s){let n;const{message:g}=Us.core,{conversationID:I,messageID:E}=s;return n=g.messageDataHandler.getLocalMessageList(I).find(m=>m.ID===E),!n&&(n=g.messageDataHandler.getSparseMessageList(I).find(m=>m.ID===E)),n}function Ac(s){return s.map(n=>{const{from:g,to:I,cloudCustomData:E,avatar:m,nick:D,ID:M,clientSequence:T,clientTime:P,messageRandom:W,messageSequence:iA,time:EA}=n;return{ClientSeq:T,CloudCustomData:E,From_Account:g,From_AccountHeadurl:m,From_AccountNick:D,Id:M,MsgBody:JSON.parse(JSON.stringify(n.transformElementsToServerFormat())),MsgClientTime:P,MsgRandom:W,Random:W,MsgSeq:iA,MsgTimeStamp:EA,ReceiverId:I,SenderId:g,To_Account:I}})}function Er(s){var n;const{From_Account:g,From_AccountHeadurl:I,From_AccountNick:E,GroupId:m,MsgClientTime:D,ClientSeq:M,To_Account:T,MsgTimeStamp:P,TinyId:W,MsgRandom:iA,MsgSeq:EA}=s;return{from:g,avatar:I,nick:E,clientTime:D,time:P,tinyID:W,random:iA,sequence:EA,to:T,groupID:m,clientSequence:M,_elements:(n=s.MsgBody)===null||n===void 0?void 0:n.map(RA=>{const{MsgType:kA}=RA;return Us.core.message.messageFactory.getElementClass(kA).parseServerPushElement(RA)})}}var Pr,Za;(function(s){s.MSG_TEXT="TIMTextElem",s.MSG_CUSTOM="TIMCustomElem",s.MSG_LOCATION="TIMLocationElem",s.MSG_FACE="TIMFaceElem",s.MSG_STREAM="TIMStreamElem"})(Pr||(Pr={})),function(s){s[s.FORWARD=0]="FORWARD",s[s.BACKWARD=1]="BACKWARD"}(Za||(Za={}));const SE="MSG_REACTION",lC="MSG_EXT",rh=0,ro=1,Tc={ZH_CN:"zh (cmn-Hans-CN)",EN_US:"en-US",YUE_HK:"yue-Hant-HK",JA_JP:"ja-JP",ZH_PY:"zh-PY"},Tl="16k_zh",IC="16k_en",uC="16k_yue",Nl="16k_ja",KI="16k_zh-PY",EI={[Tc.ZH_CN]:Tl,[Tc.EN_US]:IC,[Tc.YUE_HK]:uC,[Tc.JA_JP]:Nl,[Tc.ZH_PY]:KI},dI=/\.(wav|pcm|ogg-opus|speex|silk|mp3|m4a|aac|amr)/,ME={READ:0,UNREAD:1},Gl=1,bl=2,Ug=3;var ec;(function(s){s.IN="in",s.OUT="out"})(ec||(ec={}));const dd=16,vE=17;var Nc;(function(s){s[s.DATA=0]="DATA",s[s.REVOKED=1]="REVOKED"})(Nc||(Nc={}));var jI;(function(s){s[s.NORMAL=0]="NORMAL",s[s.TIMEOUT=1]="TIMEOUT"})(jI||(jI={}));const co="StreamMsg.PushStreamHttp";var RE=new class{constructor(){this._reactionsMap=new Map}init(s){this._core=s;const{helper:n,notificationCenter:g,InnerEvent:{MESSAGE_PUSH:I},InnerEventSubType:{MESSAGE_REACTION_UPDATED:E,MESSAGE_REACTION_UPDATED_SYNC:m}}=s;n.registerApi({apiName:"addMessageReaction",context:this}),n.registerApi({apiName:"removeMessageReaction",context:this}),n.registerApi({apiName:"getMessageReactions",context:this}),n.registerApi({apiName:"getAllUserListOfMessageReaction",context:this}),g.subscribeInnerEvent(I,E,this._handleReactionUpdated,this),g.subscribeInnerEvent(I,m,this._handleReactionSync,this)}addMessageReaction(s,n){return mA(this,void 0,void 0,function*(){const{OuterConstant:g,ssoLog:I,helper:E}=this._core;this._validateMessageReactionBusinessCapability();const{conversationID:m,ID:D,conversationType:M,from:T,to:P,clientSequence:W,random:iA,time:EA,sequence:RA}=s,kA=`conversationID:${m} messageID:${D} reactionID:${n}`;try{return this._recordMessageReactedByMe(D,n),M===g.CONV_C2C?yield function(xA,LA){return mA(this,void 0,void 0,function*(){var SA;const{from:OA,to:JA,clientSequence:re,random:ne,time:_i,reactionID:Ti}=xA,kt={From_Account:OA,To_Account:JA,MsgKey:`${re}_${ne}_${_i}`,Reaction:Ti,Add_Account:[(SA=LA.store.get("login"))===null||SA===void 0?void 0:SA.userId]};return Us.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.reaction_add",data:kt})})}({from:T,to:P,clientSequence:W,random:iA,time:EA,reactionID:n},this._core):M===g.CONV_GROUP&&(yield function(xA,LA){return mA(this,void 0,void 0,function*(){var SA;const{to:OA,reactionID:JA,sequence:re}=xA,ne={GroupId:OA,MsgSeq:re,Reaction:JA,Add_Account:[(SA=LA.store.get("login"))===null||SA===void 0?void 0:SA.userId]};return Us.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.group_reaction_add",data:ne})})}({to:P,reactionID:n,sequence:RA},this._core)),{code:0,successLog:{message:kA}}}catch(xA){this._removeMyReactionRecord(D,n);const{errorCode:LA}=xA||{};throw new E.ChatError({functionName:"addMessageReaction",code:LA,moreMessage:kA})}})}removeMessageReaction(s,n){return mA(this,void 0,void 0,function*(){const{OuterConstant:g,helper:I}=this._core;this._validateMessageReactionBusinessCapability();const{conversationID:E,ID:m,conversationType:D,from:M,to:T,clientSequence:P,random:W,time:iA,sequence:EA}=s,RA=`conversationID:${E} messageID:${m} reactionID:${n}`;try{return this._removeMyReactionRecord(m,n),D===g.CONV_C2C?yield function(kA,xA){return mA(this,void 0,void 0,function*(){var LA;const{from:SA,to:OA,clientSequence:JA,random:re,time:ne,reactionID:_i}=kA,Ti={From_Account:SA,To_Account:OA,MsgKey:`${JA}_${re}_${ne}`,Reaction:_i,Del_Account:[(LA=xA.store.get("login"))===null||LA===void 0?void 0:LA.userId]};return Us.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.reaction_del",data:Ti})})}({from:M,to:T,clientSequence:P,random:W,time:iA,reactionID:n},this._core):D===g.CONV_GROUP&&(yield function(kA,xA){return mA(this,void 0,void 0,function*(){var LA;const{to:SA,reactionID:OA,sequence:JA}=kA,re={GroupId:SA,MsgSeq:JA,Reaction:OA,Del_Account:[(LA=xA.store.get("login"))===null||LA===void 0?void 0:LA.userId]};return Us.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.group_reaction_del",data:re},xA)})}({to:T,reactionID:n,sequence:EA},this._core)),{code:0,successLog:{message:RA}}}catch(kA){const{errorCode:xA}=kA||{};throw new I.ChatError({functionName:"removeMessageReaction",code:xA,moreMessage:RA})}})}getAllUserListOfMessageReaction(s){return mA(this,void 0,void 0,function*(){this._validateMessageReactionBusinessCapability();const{message:n,reactionID:g,nextSeq:I=0}=s,E=s.count>100?100:s.count,{conversationID:m}=n,{ssoLog:D,helper:M,constants:T}=this._core;try{let P=null;if(P=m.startsWith(T.OuterConstant.CONV_C2C)?yield function(W){return mA(this,void 0,void 0,function*(){const{message:iA,nextSeq:EA,reactionID:RA,count:kA}=W,{from:xA,to:LA,clientSequence:SA,random:OA,time:JA}=iA,re={Reaction:RA,NextSeq:EA,Count:kA,From_Account:xA,To_Account:LA,MsgKey:`${SA}_${OA}_${JA}`};return Us.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.reaction_iterate",data:re})})}({message:n,reactionID:g,nextSeq:I,count:E}):yield function(W){return mA(this,void 0,void 0,function*(){const{message:iA,nextSeq:EA,reactionID:RA,count:kA}=W,{sequence:xA,to:LA}=iA,SA={Reaction:RA,NextSeq:EA,GroupId:LA,Count:kA,MsgSeq:xA};return Us.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.group_reaction_iterate",data:SA})})}({message:n,reactionID:g,nextSeq:I,count:E}),P){const{Reaction_Account:W,NextSeq:iA}=P,EA=yield this._getUserProfileList(W);return{code:0,data:{nextSeq:iA,isCompleted:I===0,userList:EA}}}}catch(P){const{errorCode:W}=P||{};throw new M.ChatError({functionName:"getAllUserListOfMessageReaction",code:W})}})}getMessageReactions(s){return mA(this,void 0,void 0,function*(){const{constants:n}=this._core;this._validateMessageReactionBusinessCapability();const{messageList:g,maxUserCountPerReaction:I=10}=s,E=g[0];let m=null;const D=new Map,{from:M,to:T,conversationType:P}=E,W=this._generateMessageKeyList(g,D);P===n.OuterConstant.CONV_C2C?m=yield function(kA){return mA(this,void 0,void 0,function*(){const{from:xA,to:LA,messageKeyList:SA,maxUserCountPerReaction:OA}=kA,JA={From_Account:xA,To_Account:LA,MsgKeyList:SA,Count:OA};return Us.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.reaction_multi_stat",data:JA})})}({from:M,to:T,messageKeyList:W,maxUserCountPerReaction:I}):P===n.OuterConstant.CONV_GROUP&&(m=yield function(kA){return mA(this,void 0,void 0,function*(){const{groupId:xA,messageSequenceList:LA,maxUserCountPerReaction:SA}=kA,OA={GroupId:xA,MsgSeqList:LA,Count:SA};return Us.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.group_reaction_multi_stat",data:OA})})}({groupId:T,messageSequenceList:W,maxUserCountPerReaction:I}));const{Results:iA=[]}=m||{},EA=this._extractUserIDsFromReactionResults(iA),RA=yield this._getUserProfileMap(EA);return{code:0,data:{resultList:iA.map(kA=>{const{ReactionList:xA,MsgSeq:LA,MsgKey:SA}=kA;return{messageID:this._generateMessageID({messageSequence:LA,messageKey:SA,messageIDMap:D}),reactionList:xA.map(OA=>{const{Reaction:JA,Count:re,Reaction_Account:ne,ReactedByMe:_i}=OA;return{reactionID:JA,totalUserCount:re,partialUserList:this._generatePartialUserInfo({userIDList:ne,userProfileMap:RA}),reactedByMyself:_i===1}})}})}}})}dispose(){this._reactionsMap.clear()}_extractUserIDsFromReactionResults(s){const n=[];return s?.forEach(g=>{const{ReactionList:I=[]}=g;I.forEach(E=>{E.Reaction_Account&&n.push(...E.Reaction_Account)})}),n}_getUserProfileList(s){return mA(this,void 0,void 0,function*(){var n;try{const g=yield(n=this._core.user.userProfile)===null||n===void 0?void 0:n.getUserProfile({userIDList:s});return g?g.data:[]}catch{return[]}})}_getUserProfileMap(s){return mA(this,void 0,void 0,function*(){const n=new Map;return(yield this._getUserProfileList(s)).forEach(g=>{const{nick:I,avatar:E,userID:m}=g;n.set(m,{nick:I,avatar:E,userID:m})}),n})}_recordMessageReactedByMe(s,n){const g=`${s}-${n}`;this._reactionsMap.has(g)?this._reactionsMap.get(g).reactedByMe=!0:this._reactionsMap.set(g,{reactedByMe:!0})}_removeMyReactionRecord(s,n){const g=`${s}-${n}`;this._reactionsMap.has(g)&&(this._reactionsMap.get(g).reactedByMe=!1)}_recordMessageReactionInfo(s){const{messageID:n,reactionID:g,reactionInfo:I}=s,E=`${n}-${g}`,m=this._reactionsMap.get(E)||{};this._reactionsMap.set(E,Object.assign(Object.assign({},m),I))}_validateMessageReactionBusinessCapability(){const{helper:s,constants:n}=this._core;if(!s.checkBusinessCapabilityBits(SE))throw new s.ChatError({functionName:"addMessageReaction",code:n.ERROR_CODE.NO_USE,replacement1:"addMessageReaction"})}_handleReactionUpdated(s){const{MsgReactionNotifyList:n}=s,{notificationCenter:g,constants:I}=this._core;n.forEach(E=>mA(this,void 0,void 0,function*(){const{C2CMsgInfo:m,GroupMsgInfo:D,MsgReactionSummary:M}=E,{TinyId:T,MsgClientTime:P,MsgRandom:W}=Object.assign(Object.assign({},m),D),iA=`${T}-${P}-${W}`,EA=this._extractUserIDsFromReactionResults([{ReactionList:M}]),RA=yield this._getUserProfileMap(EA),kA=M.map(xA=>{var LA;const{Reaction:SA,Reaction_Account:OA}=xA,JA=this._generatePartialUserInfo({userIDList:OA,userProfileMap:RA}),re=OA?xA.Count:0,ne=((LA=this._reactionsMap.get(`${iA}-${SA}`))===null||LA===void 0?void 0:LA.reactedByMe)||!1;return this._recordMessageReactionInfo({messageID:iA,reactionID:SA,reactionInfo:{reactionID:SA,totalUserCount:re,partialUserList:JA}}),{reactionID:SA,totalUserCount:re,partialUserList:JA,reactedByMyself:ne}});g.emitOuterEvent(I.OuterEvent.MESSAGE_REACTIONS_UPDATED,{name:I.OuterEvent.MESSAGE_REACTIONS_UPDATED,data:{messageID:iA,reactionList:kA}})}))}_handleReactionSync(s){var n;const{notificationCenter:g,constants:I}=this._core,{C2CMsgInfo:E={},GroupMsgInfo:m={},Reaction:D,OperateType:M}=s.MsgReactionNotify,{TinyId:T="",MsgClientTime:P=0,MsgRandom:W=0}=Object.assign(Object.assign({},E),m),iA=`${T}-${P}-${W}`,EA=`${iA}-${D}`;if(M===1?this._recordMessageReactedByMe(iA,D):this._removeMyReactionRecord(iA,D),(n=this._reactionsMap.get(EA))===null||n===void 0?void 0:n.reactionID){const RA=this._reactionsMap.get(EA);RA.reactedByMyself=M===1,g.emitOuterEvent(I.OuterEvent.MESSAGE_REACTIONS_UPDATED,{name:I.OuterEvent.MESSAGE_REACTIONS_UPDATED,data:{messageID:iA,reactionList:[RA]}})}}_generatePartialUserInfo({userIDList:s,userProfileMap:n}){const g=[];return s?.forEach(I=>{n.has(I)&&g.push(n.get(I))}),g}_generateMessageID(s){const{messageSequence:n,messageKey:g,messageIDMap:I}=s;return g?I.get(g):I.get(n)}_generateMessageKeyList(s,n){const{constants:g}=this._core,I=s[0],{conversationType:E}=I;let m=[];return E===g.OuterConstant.CONV_C2C?m=s.map(D=>{const{clientSequence:M,random:T,time:P,ID:W}=D,iA=`${M}_${T}_${P}`;return n.set(iA,W),iA}):E===g.OuterConstant.CONV_GROUP&&(m=s.map(D=>{const{ID:M,sequence:T}=D;return n.set(T,M),T})),m}},Xa=new class{init(s){this._core=s;const{helper:n,InnerEvent:{MESSAGE_PUSH:g},InnerEventSubType:{C2C_MESSAGE_READ_RECEIPT:I,GROUP_MESSAGE_READ_RECEIPT:E},notificationCenter:m}=s;n.registerApi({apiName:"sendMessageReadReceipt",context:this}),n.registerApi({apiName:"getMessageReadReceiptList",context:this}),n.registerApi({apiName:"getGroupMessageReadMemberList",context:this}),m.subscribeInnerEvent(g,I,this._handleC2CMessageReadReceipt,this),m.subscribeInnerEvent(g,E,this._handleGroupMessageReadReceipt,this)}sendMessageReadReceipt(s){return mA(this,void 0,void 0,function*(){var n;const{common:g,constants:I}=this._core,E=this._filterValidMessageSendByOther(s);if(E.length===0)throw new g.ChatError({code:I.ERROR_CODE.READ_RECEIPT_MSG_LIST_EMPTY});try{const{conversationType:m}=E[0];return m===I.OuterConstant.CONV_C2C?yield function(D){return mA(this,void 0,void 0,function*(){const{common:M,constants:T}=Us.core,P=D[0].conversationID.replace(T.OuterConstant.CONV_C2C,""),W=D.map(EA=>{const{from:RA,to:kA,sequence:xA,random:LA,time:SA,clientTime:OA}=EA;return{From_Account:RA,To_Account:kA,MsgSeq:xA,MsgRandom:LA,MsgTime:SA,MsgClientTime:OA}}),iA={Peer_Account:P,C2CMsgInfo:W};return M.buildAndSendPacket({servcmd:"openim.c2c_msg_read_receipt",data:iA})})}(E):yield function(D){return mA(this,void 0,void 0,function*(){const{common:M,constants:T}=Us.core,P={GroupId:D[0].conversationID.replace(T.OuterConstant.CONV_GROUP,""),MsgSeqList:D.map(W=>({MsgSeq:W.sequence}))};return M.buildAndSendPacket({servcmd:"group_open_http_svc.group_msg_receipt",data:P})})}(E),{code:0,data:{}}}catch(m){const{errorCode:D,errorInfo:M}=m;throw new g.ChatError({code:D,message:M,moreMessage:`peerAccount:${(n=E?.[0])===null||n===void 0?void 0:n.conversationID}`})}})}getMessageReadReceiptList(s){return mA(this,void 0,void 0,function*(){const{common:n,constants:g}=this._core;try{const{conversationType:I}=s[0];if(I===g.OuterConstant.CONV_GROUP){const E=this._filterValidMessageSendByMe(s);if(E?.length>0){const m=yield function(M){return mA(this,void 0,void 0,function*(){const{common:T,constants:P}=Us.core,W={GroupId:M[0].conversationID.replace(P.OuterConstant.CONV_GROUP,""),MsgSeqList:M.map(iA=>({MsgSeq:iA.sequence}))};return T.buildAndSendPacket({servcmd:"group_open_http_svc.get_group_msg_receipt",data:W})})}(E),{GroupMsgReceiptList:D}=m||{};this._updateGroupMessagesReadReceiptInfo({messageList:s,readReceiptList:D})}}return{code:0,data:{messageList:s}}}catch(I){const{errorCode:E,errorInfo:m}=I;throw new n.ChatError({code:E,message:m})}})}getGroupMessageReadMemberList(s){return mA(this,void 0,void 0,function*(){const{constants:n,common:g}=this._core,{message:I,filter:E=ME.READ,cursor:m=""}=s,{conversationID:D,sequence:M,ID:T}=I,P=D.replace(n.OuterConstant.CONV_GROUP,""),W=s.count>=100?100:s.count;try{const iA=yield function(EA){return mA(this,void 0,void 0,function*(){const{sequence:RA,groupID:kA,filter:xA,cursor:LA,count:SA}=EA,OA={MsgSeq:RA,GroupId:kA,Filter:xA,Cursor:LA,Num:SA};return Us.core.common.buildAndSendPacket({servcmd:"group_open_http_svc.get_group_msg_receipt_detail",data:OA})})}({groupID:P,sequence:M,filter:E,cursor:m,count:W});if(iA){const{Cursor:EA,IsFinish:RA,UnreadList:kA,ReadList:xA}=iA,LA={cursor:EA,isCompleted:RA===1,messageID:T,unreadUserIDList:[],readUserIDList:[]};return E===ME.READ?LA.readUserIDList=xA.map(SA=>SA.Read_Account):E===ME.UNREAD&&(LA.unreadUserIDList=kA.map(SA=>SA.Unread_Account)),{code:0,data:LA}}}catch(iA){const{errorCode:EA,errorInfo:RA}=iA;throw new g.ChatError({code:EA,message:RA})}})}_handleC2CMessageReadReceipt(s){const n=[],{constants:g,helper:I}=this._core,{C2cMsgInfo:E,PeerReadTime:m,Peer_Account:D}=s;if(I.isEmpty(E))return;const M=`${g.OuterConstant.CONV_C2C}${D}`;E?.forEach(T=>{const{TinyId:P,MsgClientTime:W,MsgRandom:iA}=T,EA=`${P}-${W}-${iA}`,RA=_c({conversationID:M,messageID:EA});RA&&!RA.readReceiptInfo.isPeerRead&&(RA.readReceiptInfo.isPeerRead=!0,RA.readReceiptInfo.timestamp=m,n.push({userID:D,messageID:EA,isPeerRead:!0,timestamp:m}))}),this._emitReadReceiptEventIfNeed(n)}_updateGroupMessagesReadReceiptInfo(s){const{messageList:n,readReceiptList:g}=s,I=new Map;n.forEach(E=>{I.set(E.sequence,E)}),g?.forEach(E=>{if(E.Code===0){const{MsgSeq:m,ReadNum:D,UnreadNum:M}=E,T=I.get(m);T&&(T.readReceiptInfo.readCount=D,T.readReceiptInfo.unreadCount=M)}})}_handleGroupMessageReadReceipt(s){const n=[],{constants:g}=this._core,{GroupTips:I}=s;I.forEach(E=>{const{MsgBody:{GroupMsgReceiptList:m},GroupInfo:{GroupId:D}}=E,M=`${g.OuterConstant.CONV_GROUP}${D}`;m?.forEach(T=>{const{TinyId:P,MsgClientTime:W,MsgRandom:iA,ReadNum:EA,UnreadNum:RA}=T,kA=`${P}-${W}-${iA}`,xA=_c({conversationID:M,messageID:kA}),LA={groupID:D,messageID:kA,readCount:0,unreadCount:0};xA&&(typeof EA=="number"&&(xA.readReceiptInfo.readCount=EA,LA.readCount=EA),typeof RA=="number"&&(xA.readReceiptInfo.unreadCount=RA,LA.unreadCount=RA),n.push(LA))})}),this._emitReadReceiptEventIfNeed(n)}_emitReadReceiptEventIfNeed(s){const{notificationCenter:n,OuterEvent:g}=this._core;s.length>0&&n.emitOuterEvent(g.MESSAGE_READ_RECEIPT_RECEIVED,{name:g.MESSAGE_READ_RECEIPT_RECEIVED,data:s})}_filterValidMessageSendByOther(s){return this._filterNeedReadReceiptMessages(s).filter(n=>{const{from:g}=n;return g!==this._core.common.getCurrentUserID()})}_filterValidMessageSendByMe(s){const{OuterConstant:n}=this._core.constants;return this._filterNeedReadReceiptMessages(s).filter(g=>{const{from:I,status:E}=g;return I===this._core.common.getCurrentUserID()&&E===n.MessageStatus.SUCCESS})}_filterNeedReadReceiptMessages(s){return s.filter(n=>n.needReadReceipt===!0)}dispose(){const{InnerEvent:{MESSAGE_PUSH:s},InnerEventSubType:{C2C_MESSAGE_READ_RECEIPT:n,GROUP_MESSAGE_READ_RECEIPT:g},notificationCenter:I}=this._core;I.unSubscribeInnerEvent(s,n,this._handleC2CMessageReadReceipt,this),I.unSubscribeInnerEvent(s,g,this._handleGroupMessageReadReceipt,this)}};function WI(s,n,g){return mA(this,void 0,void 0,function*(){const{common:{buildAndSendPacket:I}}=Us.core,{from:E,to:m,clientSequence:D,random:M,time:T}=s;return I({servcmd:"openim_msg_ext_http_svc.set_key_values",data:{From_Account:E,To_Account:m,MsgKey:`${D}_${M}_${T}`,OperateType:g,ExtensionList:n}})})}function Gu(s,n,g){return mA(this,void 0,void 0,function*(){const{common:{buildAndSendPacket:I}}=Us.core,{to:E,sequence:m}=s;return I({servcmd:"openim_msg_ext_http_svc.group_set_key_values",data:{GroupId:E,MsgSeq:m,OperateType:g,ExtensionList:n}})})}var Gc=new class{constructor(){this._messageExtensionsMap=new Map,this._extensionsLatestSequenceMap=new Map,this._completedFetchExtensions=new Set}init(s){this._core=s;const{notificationCenter:n,helper:{registerApi:g},InnerEvent:{MESSAGE_PUSH:I,LOGOUT:E},InnerEventSubType:{MESSAGE_EXTENSIONS_UPDATED:m}}=s;g({apiName:"setMessageExtensions",context:this}),g({apiName:"getMessageExtensions",context:this}),g({apiName:"deleteMessageExtensions",context:this}),n.subscribeInnerEvent(I,m,this._handleMessageExtensionsNotify,this),n.subscribeInnerEvent(E,this.reset,this)}setMessageExtensions(s,n){return mA(this,void 0,void 0,function*(){this._validateMessageExtensionBusinessCapability("setMessageExtensions");const{constants:{OuterConstant:g},ssoLog:I}=this._core,{ID:E,conversationID:m,sequence:D,time:M,conversationType:T}=s;let P=n;n.length>20&&(P=n.slice(0,20),I.warn("setMessageExtensions","the length of extensions cannot exceed 20"));const W=this._generateServerExtensions(s,P),iA=`convID:${m} messageID:${E} sequence:${D} time:${M} count:${P.length}`;try{let EA;if(T===g.CONV_C2C?EA=yield WI(s,W,Gl):T===g.CONV_GROUP&&(EA=yield Gu(s,W,Gl)),EA){const{resultList:RA,successCount:kA,failureCount:xA}=this._handleModifyMessageExtensions(s,EA);return{code:0,data:{extensions:RA},successLog:{message:`${iA} successCount:${kA} failCount:${xA}`}}}return{code:0,data:{extensions:[]}}}catch(EA){const{errorCode:RA}=EA;throw new this._core.helper.ChatError({functionName:"setMessageExtensions",code:RA,moreMessage:iA})}})}getMessageExtensions(s){return mA(this,void 0,void 0,function*(){const{utils:{isUndefined:n}}=this._core;this._validateMessageExtensionBusinessCapability("getMessageExtensions");const{conversationID:g,ID:I,sequence:E,time:m}=s,D=`convID:${g} messageID:${I} sequence:${E} time:${m}`;try{let M;this._completedFetchExtensions.has(I)&&(M=this._extensionsLatestSequenceMap.get(I));const T=yield this._fetchMessageExtensions(s,M);return n(M)&&T.length>1&&this._completedFetchExtensions.add(I),{code:0,data:{extensions:T},successLog:{message:D}}}catch(M){const{errorCode:T,errorInfo:P=""}=M||{};throw new this._core.common.ChatError({code:T,message:P,moreMessage:D})}})}deleteMessageExtensions(s,n){return mA(this,void 0,void 0,function*(){this._validateMessageExtensionBusinessCapability("deleteMessageExtensions");const{utils:{isEmpty:g},constants:{OuterConstant:I}}=this._core,{conversationType:E,conversationID:m,sequence:D,ID:M,time:T}=s;let P=Ug;const W=[];g(n)||(P=bl,n?.forEach(RA=>{W.push({key:RA,value:"",seq:0})}));const iA=`convID:${m} messageID:${M} sequence:${D} time:${T} operateType:${P}`,EA=this._generateServerExtensions(s,W);try{let RA;if(E===I.CONV_C2C?RA=yield WI(s,EA,P):E===I.CONV_GROUP&&(RA=yield Gu(s,EA,P)),RA){const{resultList:kA,successCount:xA,failureCount:LA}=this._handleModifyMessageExtensions(s,RA);return{code:0,data:{extensions:kA},successLog:{message:`${iA}successCount:${xA} failCount:${LA}`}}}return{code:0,data:{extensions:[]}}}catch(RA){const{errorCode:kA}=RA;throw new this._core.helper.ChatError({functionName:"deleteMessageExtensions",code:kA,moreMessage:iA})}})}reset(){this._messageExtensionsMap.clear(),this._extensionsLatestSequenceMap.clear(),this._completedFetchExtensions.clear()}dispose(){this.reset();const{notificationCenter:s,InnerEvent:{MESSAGE_PUSH:n,LOGOUT:g},InnerEventSubType:{MESSAGE_EXTENSIONS_UPDATED:I}}=this._core;s.unSubscribeInnerEvent(n,I,this._handleMessageExtensionsNotify,this),s.subscribeInnerEvent(g,this.reset,this)}_handleModifyMessageExtensions(s,n){const{ID:g}=s,{Seq:I}=n,E=n.ExtensionList||[],m=[];let D=0,M=0,T=[];return E.forEach(P=>{const{ErrorCode:W,Extension:iA}=P,{Key:EA,Value:RA,Seq:kA}=iA;m.push({code:W,key:EA,value:RA}),W===0?D++:M++,T.push({key:EA,value:RA,seq:kA})}),this._extensionsLatestSequenceMap.set(g,I),T.length>0&&this._updateLocalExtensions(s.ID,T),{resultList:m,successCount:D,failureCount:M}}_updateLocalExtensions(s,n){this._messageExtensionsMap.has(s)||this._messageExtensionsMap.set(s,new Map);const g=this._messageExtensionsMap.get(s);n?.forEach(I=>{const{key:E,seq:m,value:D=""}=I;g?.set(E,{value:D,seq:m})})}_fetchMessageExtensions(s,n){return mA(this,void 0,void 0,function*(){const{constants:{OuterConstant:g},utils:{isEmpty:I}}=this._core;try{let E;const{conversationType:m,ID:D}=s;if(m===g.CONV_C2C?E=yield function(M,T){const{common:{buildAndSendPacket:P}}=Us.core,{from:W,to:iA,clientSequence:EA,random:RA,time:kA}=M;return P({servcmd:"openim_msg_ext_http_svc.get_key_values",data:{From_Account:W,To_Account:iA,MsgKey:`${EA}_${RA}_${kA}`,StartSeq:T}})}(s,n):m===g.CONV_GROUP&&(E=yield function(M,T){const{common:{buildAndSendPacket:P}}=Us.core,{to:W,sequence:iA}=M;return P({servcmd:"openim_msg_ext_http_svc.group_get_key_values",data:{GroupId:W,MsgSeq:iA,StartSeq:T}})}(s,n)),E){const{LatestSeq:M,ClearSeq:T,CompleteFlag:P}=E,W=(E.ExtensionList||[]).map(EA=>({key:EA.Key,value:EA.Value,seq:EA.Seq}));if(this._updateLocalExtensions(D,W),this._clearLocationExtensions(D,T),this._extensionsLatestSequenceMap.set(D,M),P!==1){const EA=W[W.length-1].seq+1;return this._fetchMessageExtensions(s,EA)}const iA=[];if(this._messageExtensionsMap.has(D)){const EA=this._messageExtensionsMap.get(D);EA?.forEach((RA,kA)=>{const{value:xA}=RA;I(xA)||iA.push({key:kA,value:xA})})}return iA}}catch(E){throw E}})}_clearLocationExtensions(s,n){if(!(n<=0)&&this._messageExtensionsMap.has(s)){const g=this._messageExtensionsMap.get(s);g?.forEach((I,E)=>{I.seq<=n&&g.delete(E)})}}_generateServerExtensions(s,n){const{ID:g}=s;if(this._messageExtensionsMap.has(g)){const I=this._messageExtensionsMap.get(g);return n.map(E=>{var m;const{key:D,value:M}=E;let T=0;return I?.has(D)&&(T=(m=I.get(D))===null||m===void 0?void 0:m.seq),{Key:D,Value:M,Seq:T}})}return n.map(I=>({Key:I.key,Value:I.value,Seq:0}))}_validateMessageExtensionBusinessCapability(s){const{helper:n,constants:g}=this._core;if(!n.checkBusinessCapabilityBits(lC))throw new n.ChatError({functionName:s,code:g.ERROR_CODE.NO_USE,replacement1:s})}_handleMessageExtensionsNotify(s){const{SetKVInfo:n,DeleteKVInfo:g,ClearKVInfo:I,MsgOptType:E,TinyId:m,MsgLastSeq:D,ExtensionC2cMsgInfo:M,ExtensionGroupMsgInfo:T}=s?.MsgExtensionNotify||{},P=M||T||{},{MsgClientTime:W,MsgRandom:iA}=P,EA=`${m}-${W}-${iA}`;this._extensionsLatestSequenceMap.set(EA,D),E===Gl?this._handleMessageExtensionsUpdated({messageID:EA,updateMessageExtensionsInfo:n}):E===bl?this._handleMessageExtensionsDeleted({messageID:EA,deleteMessageExtensionsInfo:g}):E===Ug&&this._handleMessageExtensionsCleared({messageID:EA,clearMessageExtensionsInfo:I})}_handleMessageExtensionsUpdated(s){const{notificationCenter:n,OuterEvent:g}=this._core,{messageID:I,updateMessageExtensionsInfo:E=[]}=s,m=[];E.forEach(D=>{const{MsgKeyValue:M=[]}=D,T=M.map(P=>(m.push({key:P.Key,value:P.Value}),{key:P.Key,value:P.Value,seq:P.Seq}));this._updateLocalExtensions(I,T)}),n.emitOuterEvent(g.MESSAGE_EXTENSIONS_UPDATED,{name:g.MESSAGE_EXTENSIONS_UPDATED,data:{messageID:I,extensions:m}})}_handleMessageExtensionsDeleted(s){const{notificationCenter:n,OuterEvent:g}=this._core,{messageID:I,deleteMessageExtensionsInfo:E=[]}=s,m=[];E.forEach(D=>{const{MsgKeyValue:M=[]}=D,T=M.map(P=>(m.push(P.Key),{key:P.Key,seq:P.Seq}));this._updateLocalExtensions(I,T)}),n.emitOuterEvent(g.MESSAGE_EXTENSIONS_DELETED,{name:g.MESSAGE_EXTENSIONS_DELETED,data:{messageID:I,keyList:m}})}_handleMessageExtensionsCleared(s){const{notificationCenter:n,OuterEvent:{MESSAGE_EXTENSIONS_DELETED:g},utils:{isEmpty:I}}=this._core,{messageID:E,clearMessageExtensionsInfo:m=[]}=s,D=[];m.forEach(M=>{const{ClearMsgSeq:T}=M;this._messageExtensionsMap.has(E)&&(this._messageExtensionsMap.get(E)||[]).forEach((P,W)=>{P.seq<=T&&!I(P.value)&&D.push(W)}),this._clearLocationExtensions(E,T)}),n.emitOuterEvent(g,{name:g,data:{messageID:E,keyList:D}})}};const CI={key:"message",required:!0,rules:["object"],allowEmpty:!1,customValidator:s=>{const{constants:{OuterConstant:n}}=Us.core;return s.status!==n.MessageStatus.SUCCESS?"message is not success":s.isSupportExtension===!0||"message is not support extension"}},ol={setMessageExtensions:[CI,{key:"extensions",required:!0,rules:["array"],allowEmpty:!1}],getMessageExtensions:[CI],deleteMessageExtensions:[CI]},sl=Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({deleteMessage:[{required:!0,rules:["array"],allowEmpty:!1}],revokeMessage:[{required:!0,rules:["object"],allowEmpty:!1}],resendMessage:[{key:"message",required:!0,rules:["object"],allowEmpty:!1},{key:"options",required:!1,rules:["object"],allowEmpty:!1}],getMessageList:{conversationID:{required:!0,rules:["string"],allowEmpty:!1},nextReqMessageID:{required:!1,rules:["string"],allowEmpty:!0},count:{required:!1,rules:["number"],allowEmpty:!0}},getMessageListHopping:{conversationID:{required:!0,rules:["string"],allowEmpty:!1},sequence:{required:!1,rules:["number"],allowEmpty:!0},direction:{required:!1,rules:["number"],allowEmpty:!0},count:{required:!1,rules:["number"],allowEmpty:!0}},createTextAtMessage:{to:{required:!0,rules:["string"],allowEmpty:!1},conversationType:{required:!0,rules:["string"],allowEmpty:!1},payload:{required:!0,rules:["object"],allowEmpty:!1,customValidator:s=>{const n=function(g){var I;return typeof g?.text!="string"||typeof g.text=="string"&&((I=g?.text)===null||I===void 0?void 0:I.length)===0?"payload.text is invalid.":!0}(s);return n!==!0?n:!(s?.atUserList&&!Array.isArray(s.atUserList))||"atUserList should be an array or undefind."}}},findMessage:[{required:!0,rules:["string"],allowEmpty:!1}],translateText:{sourceTextList:{required:!0,rules:["array"],allowEmpty:!1},sourceLanguage:{required:!0,rules:["string"],allowEmpty:!1},targetLanguage:{required:!0,rules:["string"],allowEmpty:!1}},createForwardMessage:{to:{required:!0,rules:["string"],allowEmpty:!1},conversationType:{required:!0,rules:["string"],allowEmpty:!1,customValidator:s=>!(!s.startsWith("C2C")&&!s.startsWith("GROUP"))||"conversationType is invalid."},payload:{required:!0,rules:["object"],allowEmpty:!1}},createLocationMessage:{to:{required:!0,rules:["string"],allowEmpty:!1},conversationType:{required:!0,rules:["string"],allowEmpty:!1},payload:{required:!0,rules:["object"],allowEmpty:!1,customValidator:s=>{const{utils:{isString:n,isNumber:g}}=Us.core;return n(s?.description)?g(s?.longitude)?!!g(s?.latitude)||"payload.latitude must be a number.":"payload.longitude must be a number.":"payload.description must be a string."}}}},{addMessageReaction:[{key:"message",required:!0,rules:["object"],allowEmpty:!1},{key:"reactionID",required:!0,rules:["string"],allowEmpty:!1}],removeMessageReaction:[{key:"message",required:!0,rules:["object"],allowEmpty:!1},{key:"reactionID",required:!0,rules:["string"],allowEmpty:!1}],getMessageReactions:{messageList:{required:!0,rules:["array"],allowEmpty:!1},maxUserCountPerReaction:{required:!1,rules:["number"],allowEmpty:!0,customValidator:s=>typeof s!="number"?"maxUserCountPerReaction is invalid.":!(s<0||s>10)||"maxUserCountPerReaction should between [0, 10]."}},getAllUserListOfMessageReaction:{message:{required:!0,rules:["object"],allowEmpty:!1,customValidator:s=>s.status==="success"||"message is invalid."},reactionID:{required:!0,rules:["string"],allowEmpty:!1},nextSeq:{required:!1,rules:["number"],allowEmpty:!0},count:{required:!1,rules:["number"],allowEmpty:!0}}}),{sendMessageReadReceipt:[{required:!0,rules:["array"],allowEmpty:!1}],getMessageReadReceiptList:[{required:!0,rules:["array"],allowEmpty:!1}],getGroupMessageReadMemberList:{message:{required:!0,rules:["object"],allowEmpty:!1},filter:{required:!1,rules:["number"],allowEmpty:!0},count:{required:!1,rules:["number"],allowEmpty:!0},cursor:{required:!1,rules:["string"],allowEmpty:!0}}}),ol),{pinGroupMessage:{groupID:{required:!0,rules:["string"],allowEmpty:!1},message:{required:!0,rules:["object"],allowEmpty:!1},isPinned:{required:!0,rules:["boolean"],allowEmpty:!1}},getPinnedGroupMessageList:[{key:"groupID",required:!0,rules:["string"],allowEmpty:!1}]}),{createQuoteMessage:[{key:"message",required:!0,rules:["object"],allowEmpty:!1},{key:"quotedMessage",required:!0,rules:["object"],allowEmpty:!1}]}),Pa=Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({deleteMessage:!0,revokeMessage:!0,resendMessage:!0,getMessageList:!0,getMessageListHopping:!0,createTextAtMessage:!0,findMessage:!0,translateText:!0,createForwardMessage:!0,createLocationMessage:!0},{addMessageReaction:!0,removeMessageReaction:!0,getMessageReactions:!0,getAllUserListOfMessageReaction:!0}),{sendMessageReadReceipt:!0,getMessageReadReceiptList:!0,getGroupMessageReadMemberList:!0}),{setMessageExtensions:!0,getMessageExtensions:!0,deleteMessageExtensions:!0}),{pinGroupMessage:!0,getPinnedGroupMessageList:!0}),{createQuoteMessage:!0});class wE{constructor(n){this._core=n}deleteMessage(n){return mA(this,void 0,void 0,function*(){const{to:g,messageIdentifiers:I}=n,E={From_Account:this._core.common.getCurrentUserID(),To_Account:g,MsgKeyList:I};return this._core.common.buildAndSendPacket({servcmd:"openim.delete_c2c_msg_ramble",data:E})})}revokeMessage(n){return mA(this,void 0,void 0,function*(){const{to:g,from:I,sequence:E,time:m,random:D}=n,M={MsgInfo:{From_Account:I,To_Account:g,MsgSeq:E,MsgRandom:D,MsgTimeStamp:m}};return this._core.common.buildAndSendPacket({servcmd:"openim.msgwithdraw",data:M})})}}class na{constructor(n){this._core=n}deleteMessage(n){return mA(this,void 0,void 0,function*(){const{to:g,messageIdentifiers:I}=n,E={GroupId:g,Deleter_Account:this._core.common.getCurrentUserID(),Seqs:I};return this._core.common.buildAndSendPacket({servcmd:"group_open_http_svc.delete_group_ramble_msg_by_seq",data:E})})}revokeMessage(n){return mA(this,void 0,void 0,function*(){const{to:g,sequence:I}=n,E={GroupId:g,MsgSeqList:[{MsgSeq:I}]};return this._core.common.buildAndSendPacket({servcmd:"group_open_http_svc.group_msg_recall",data:E})})}}const Mn=2116;class Nr{constructor(n){this._core=n}generateRevokeMessage(n){const{conversationID:g,sequence:I,random:E,tinyID:m,clientTime:D,revokeReason:M,revoker:T}=n;let P={};const{messageDataHandler:W}=this._core.message;return P=W.revokeMessage({conversationID:g,sequence:I,random:E,revoker:T}),P||(P={conversationID:g,sequence:I},m&&D&&E&&(P.ID=`${m}-${D}-${E}`)),P.revoker=T,P.revokeReason=M,P.revokerInfo={userID:T,nick:"",avatar:""},P}updateRevokerInfo(n){return mA(this,void 0,void 0,function*(){const g=n.map(I=>I.revoker);try{const I=yield this._fetchUserInfos(g);I&&n.forEach(E=>{const{revoker:m}=E;I[m]&&(E.revokerInfo.nick=I[m].nick||"",E.revokerInfo.avatar=I[m].avatar||"",E.revokerInfo.userID=m)})}catch(I){console.debug(I)}})}_fetchUserInfos(n){return mA(this,void 0,void 0,function*(){var g,I;const E=yield(g=this._core.user.userProfile)===null||g===void 0?void 0:g.getUserProfile({userIDList:n});return E?.data?(I=E.data)===null||I===void 0?void 0:I.reduce((m,{userID:D,nick:M,avatar:T})=>(m[D]={nick:M||"",avatar:T||""},m),{}):null})}}var nl=new class{constructor(){this._core=null,this._c2cMessageAction=null,this._groupMessageAction=null}init(s){this._core=s,this._groupMessageAction=new na(s),this._c2cMessageAction=new wE(s),this._messageHelper=new Nr(s);const{helper:n}=s;n.registerApi({apiName:"deleteMessage",context:this}),n.registerApi({apiName:"revokeMessage",context:this}),n.registerApi({apiName:"resendMessage",context:this}),n.registerApi({apiName:"findMessage",context:this}),n.registerApi({apiName:"createQuoteMessage",context:this})}deleteMessage(s){return mA(this,void 0,void 0,function*(){let n=[],g=[];const{conversationID:I,conversationType:E}=s[0],m=I.replace(E,"");if(E==="@TIM#SYSTEM")throw new this._core.helper.ChatError({code:Mn});if(s.forEach(D=>{const{conversationID:M,conversationType:T,status:P,_onlineOnlyFlag:W,sequence:iA,random:EA,time:RA}=D||{};if(P==="success"&&M===I&&T===E){if(!W){const kA=T==="C2C"?`${iA}_${EA}_${RA}`:String(iA);n.push(kA)}g.push(D)}}),n.length===0)return this._handleDeleteMessageSuccess(g),{code:0,data:{messageList:g}};n.length>30&&(n=n.slice(0,30),g=g.slice(0,30));try{return E==="C2C"?yield this._c2cMessageAction.deleteMessage({to:m,messageIdentifiers:n}):yield this._groupMessageAction.deleteMessage({to:m,messageIdentifiers:n}),this._handleDeleteMessageSuccess(g),{code:0,data:{messageList:g}}}catch(D){const{utils:{safeStringify:M}}=this._core,{errorCode:T,errorInfo:P}=D;throw new this._core.helper.ChatError({functionName:"deleteMessage",code:T,message:P,moreMessage:`messageIdentifiers: ${M(n)}`})}})}revokeMessage(s){return mA(this,void 0,void 0,function*(){var n;const{conversationType:g,isRevoked:I,ID:E,type:m,from:D,to:M}=s;let T=null;const P=`type:${m} from:${D} to:${M} ID:${E}`;if(g==="@TIM#SYSTEM")throw new this._core.helper.ChatError({message:"system message cannot be revoked"});if(I)throw new this._core.helper.ChatError({message:"message has been revoked",moreMessage:P});try{if(T=g==="C2C"?yield this._c2cMessageAction.revokeMessage(s):yield this._groupMessageAction.revokeMessage(s),T){const{RecallRetList:W}=T,iA=((n=W?.[0])===null||n===void 0?void 0:n.RetCode)||0;if(iA!==0)throw new this._core.helper.ChatError({code:iA,moreMessage:P});return s.isRevoked=!0,yield this._handleRevokeMessageSuccess(s),{code:0,data:{message:s},successLog:{message:P}}}}catch(W){const{errorCode:iA}=W;throw new this._core.helper.ChatError({functionName:"revokeMessage",code:iA,moreMessage:P})}})}resendMessage(s,n){return mA(this,void 0,void 0,function*(){var g,I;return s.isResend=!0,s.status="unSend",(I=(g=this._core)===null||g===void 0?void 0:g.apiMap)===null||I===void 0?void 0:I.sendMessage(s,n)})}findMessage(s){return this._core.message.messageDataHandler.findMessage(s)}createQuoteMessage(s,n){const{ID:g,time:I,sequence:E}=n;return s.quoteInfo={msgID:g,messageTime:I,messageSequence:E},s}_handleDeleteMessageSuccess(s){if(s.length===0)return;const{message:{messageDataHandler:n},common:{isTopic:g},notificationCenter:I,InnerEvent:E}=this._core;s.forEach(D=>{D.isDeleted=!0;const M=n.getLocalMessageList(D.conversationID);M?.forEach(T=>{T.ID===D.ID&&(T.isDeleted=!0)})});const{conversationID:m=""}=s[0];g(m)?I.emitInnerEvent(E.TOPIC_MESSAGE_DELETED,m):I.emitInnerEvent(E.MESSAGE_DELETED,m)}_handleRevokeMessageSuccess(s){return mA(this,void 0,void 0,function*(){var n;const g=(n=this._core.store.get("login"))===null||n===void 0?void 0:n.userId,{conversationID:I,sequence:E,random:m}=s;this._core.message.messageDataHandler.revokeMessage({conversationID:I,sequence:E,random:m,revoker:g}),yield this._messageHelper.updateRevokerInfo([s])})}};class kl{static parseServerPushElement(n){const{MsgContent:g={}}=n,{Index:I,Data:E}=g;return new kl({index:I,data:E})}constructor(n){this.type=Pr.MSG_FACE;const{index:g,data:I}=n;this.content={index:g,data:I}}validateBeforeSend(){var n,g;return typeof((n=this.content)===null||n===void 0?void 0:n.index)=="number"&&typeof((g=this.content)===null||g===void 0?void 0:g.data)=="string"?{isValid:!0}:{isValid:!1,error:{message:"content is invalid"}}}transformToServerFormat(n){const{isMergerMessage:g=!1}=n||{},I=g?this.payload:this.content,{index:E,data:m}=I;return{MsgType:this.type,MsgContent:{Index:E,Data:m}}}}class bc{static parseServerPushElement(n){const{MsgContent:g={}}=n,{Desc:I,Longitude:E,Latitude:m}=g;return new bc({description:I,longitude:E,latitude:m})}constructor(n){this.type=Pr.MSG_LOCATION;const{description:g,longitude:I,latitude:E}=n;this.content={description:g,longitude:I,latitude:E}}validateBeforeSend(){return{isValid:!0}}transformToServerFormat(n){const{isMergerMessage:g=!1}=n||{},I=g?this.payload:this.content,{description:E,longitude:m,latitude:D}=I;return{MsgType:this.type,MsgContent:{Desc:E,Longitude:m,Latitude:D}}}}class _E{static parseServerPushElement(n){const{MsgContent:g={}}=n,{StreamMsgID:I,CompatibleText:E,Markdown:m,BinaryData:D,ErrorCode:M,ErrorMsg:T}=g;return new _E({streamMessageID:I,compatibleText:E,markdown:m,binaryData:D,errorCode:M,errorMessage:T})}constructor(n){this.type=Pr.MSG_STREAM,this.content={streamMessageID:"",compatibleText:"",errorCode:0,errorMessage:"",isStreamEnded:!1},this._chunks=[],this._latestIndex=0;const{streamMessageID:g,compatibleText:I,markdown:E,binaryData:m,errorCode:D=0,errorMessage:M="",isStreamEnded:T=!1,chunks:P=[],latestIndex:W=0}=n;this.content.streamMessageID=g,this.content.compatibleText=I,this.content.markdown=E,this.content.binaryData=m,this.content.errorCode=D,this.content.errorMessage=M,this.content.isStreamEnded=T,this.content.chunks=P,this.content.latestIndex=W}updateChunks(n){if(!n||n.length===0)return;const g=n.sort((m,D)=>m.index-D.index),I=this._getMaxRevokedChunkIndex(g);I>=0&&(this._chunks=[],this._latestIndex=I,this._updateContent());const E=this._getValidChunks(g);if(E.length!==0&&(this._mergeAndSortChunks(E),this._chunks.length>0)){const m=this._chunks[this._chunks.length-1];this._latestIndex=m.index,this._updateContent(),this.content.isStreamEnded=m.isLast}}getLatestIndex(){return this._latestIndex}transformToServerFormat(n){const{isMergerMessage:g=!1}=n||{},I=g?this.payload:this.content,{streamMessageID:E,chunks:m}=I,D=m?.map(M=>({EventType:M.eventType||"data",Index:M.index,Markdown:M.markdown,IsLast:M.isLast}));return{MsgType:this.type,MsgContent:{StreamMsgID:E,Chunks:D}}}validateBeforeSend(){var n,g;return((g=(n=this.content)===null||n===void 0?void 0:n.chunks)===null||g===void 0?void 0:g.length)>0?{isValid:!0}:{isValid:!1,error:{message:"content is invalid"}}}_filterContinuousChunks(n,g){if(n.length===0)return[];const I=[];let E=g;for(const m of n){if(m.index>E)break;m.index===E&&(I.push(m),E++)}return I}_mergeAndSortChunks(n){const g=new Map;this._chunks.forEach(I=>{g.set(I.index,I)}),n.forEach(I=>{g.set(I.index,I)}),this._chunks=Array.from(g.values()).sort((I,E)=>I.index-E.index)}_updateContent(){this.content.markdown=this._chunks.map(g=>g.markdown).join("");const n=this._chunks.map(g=>g.binaryData).filter(g=>g?.length>0);if(n.length===0)this.content.binaryData=new Uint8Array(0);else if(n.length===1)this.content.binaryData=n[0];else{const g=n.reduce((m,D)=>m+D.length,0),I=new Uint8Array(g);let E=0;for(const m of n)I.set(m,E),E+=m.length;this.content.binaryData=I}}_getMaxRevokedChunkIndex(n){let g=-1;for(let I=0;Ig&&(g=E.index)}return g}_getValidChunks(n){const g=n.filter(I=>I.eventType===Nc.DATA&&I.index>this._latestIndex);return this._filterContinuousChunks(g,this._latestIndex+1)}}var kc=new class{init(s){this._core=s,s.message.messageFactory.registerElementClass(Pr.MSG_FACE,kl),s.message.messageFactory.registerElementClass(Pr.MSG_LOCATION,bc),s.message.messageFactory.registerElementClass(Pr.MSG_STREAM,_E),s.helper.registerApi({apiName:"createFaceMessage",context:this}),s.helper.registerApi({apiName:"createTextAtMessage",context:this}),s.helper.registerApi({apiName:"createForwardMessage",context:this}),s.helper.registerApi({apiName:"createLocationMessage",context:this})}createFaceMessage(s){if(!s)return null;const{index:n,data:g}=s?.payload||{},I=new kl({index:n,data:g}),E=this._core.common.getCurrentUserID(),m=this._core.message.messageFactory.createMessage(Object.assign(Object.assign({},s),{from:E}));return m.setElement(I),m}createTextAtMessage(s){const{atUserList:n}=s?.payload||{},g=this._core.apiMap.createTextMessage(s),{OuterConstant:I}=this._core;if(!g)return null;if(Array.isArray(n)){const E=[],m=[];n.forEach(D=>{D!==I.MSG_AT_ALL?(E.push({GroupAtAllFlag:rh,GroupAt_Account:D}),m.push(D)):(E.push({GroupAtAllFlag:ro}),m.push(I.MSG_AT_ALL))}),g._groupAtInfoList=E,g.atUserList=m}return g}createForwardMessage(s){const{helper:n,OuterConstant:g}=this._core,{to:I,conversationType:E,priority:m,payload:D,needReadReceipt:M,receiverList:T,cloudCustomData:P="",isSupportExtension:W=!1}=s;if(!Array.isArray(D._elements))throw new n.ChatError({functionName:"createForwardMessage",code:2454});if(D.type===g.MSG_GRP_TIP)throw new n.ChatError({functionName:"createForwardMessage",code:2453});const iA=this._core.common.getCurrentUserID(),EA=this._core.message.messageFactory.createMessage({to:I,from:iA,conversationType:E,isPlaceMessage:0,priority:m,payload:D,needReadReceipt:M,isSupportExtension:W,cloudCustomData:P,receiverList:T});return EA.setRelayFlag(!0),EA.setElement(D._elements[0]),EA}createLocationMessage(s){if(!s)return null;const{description:n,longitude:g,latitude:I}=s?.payload||{},E=new bc({description:n,longitude:g,latitude:I}),m=this._core.common.getCurrentUserID(),D=this._core.message.messageFactory.createMessage(Object.assign(Object.assign({},s),{from:m}));return D.setElement(E),D}};let bu=class{init(s){this._messageHelper=new Nr(s),this._core=s;const{notificationCenter:n,InnerEvent:{MESSAGE_PUSH:g},InnerEventSubType:{C2C_REVOKED_MESSAGE:I},helper:{registerWorkflowStep:E},constants:{WORKFLOW_NAME:m,WORKFLOW_STEP:D}}=s;n.subscribeInnerEvent(g,I,this._handleC2CNotifyMessage,this),E(m.SYNC_SERVER_INFO_AFTER_RE_ONLINE,D.HANDLE_C2C_REVOKED_MESSAGE_FROM_SYNC_UNREAD,this._handleC2CRevokeMessagesFromUnreadMessageSync,this)}_handleC2CNotifyMessage(s){const{C2cNotifyMsgArray:n}=s;n?.forEach(g=>{Object.keys(g).includes("WithdrawC2cMsgNotify")&&this._handleC2CRevokeMessage(g)})}_handleC2CRevokeMessage(s){return mA(this,void 0,void 0,function*(){try{const{WithdrawC2cMsgNotify:{C2cWithdrawInfoArray:n}}=s;yield this._parseAndEmitC2CRevokedMessages(n)}catch(n){console.debug(n)}})}_parseAndEmitC2CRevokedMessages(s){return mA(this,void 0,void 0,function*(){const n=[],{notificationCenter:g,OuterEvent:I,common:{getCurrentUserID:E}}=this._core;s.forEach(m=>{var D;const{MsgRand:M,MsgSeq:T,To_Account:P,From_Account:W,RevokerInfo:{Revoker_Account:iA,Revoke_Reason:EA}}=m,RA=E()===W?`C2C${P}`:`C2C${W}`,kA=((D=m?.RevokerInfo)===null||D===void 0?void 0:D.Reason)||EA,xA=this._messageHelper.generateRevokeMessage({conversationID:RA,sequence:T,random:M,revoker:iA,revokeReason:kA});n.push(xA)}),n.length>0&&(yield this._messageHelper.updateRevokerInfo(n),g.emitOuterEvent(I.MESSAGE_REVOKED,{name:I.MESSAGE_REVOKED,data:n}))})}_handleC2CRevokeMessagesFromUnreadMessageSync(s){return mA(this,void 0,void 0,function*(){const{revokedMessageList:n}=s.result;yield this._parseAndEmitC2CRevokedMessages(n)})}dispose(){const{notificationCenter:s,InnerEvent:{MESSAGE_PUSH:n},InnerEventSubType:{C2C_REVOKED_MESSAGE:g}}=this._core;s.unSubscribeInnerEvent(n,g,this._handleC2CNotifyMessage,this)}},EC=class{init(s){this._messageHelper=new Nr(s),this._core=s;const{notificationCenter:n,InnerEvent:{MESSAGE_PUSH:g},InnerEventSubType:{GROUP_MESSAGE_REVOKED:I}}=s;n.subscribeInnerEvent(g,I,this._handleGroupNotifyMessage,this)}_handleGroupNotifyMessage(s){const{GroupTips:n}=s;n?.forEach(g=>{var I;Array.isArray((I=g?.MsgBody)===null||I===void 0?void 0:I.GroupWithdrawInfoArray)&&this._handleGroupRevokeMessage(g)})}_handleGroupRevokeMessage(s){return mA(this,void 0,void 0,function*(){try{const{RevokerInfo:n,MsgBody:{GroupWithdrawInfoArray:g},GroupInfo:I}=s,E=[],m=[],{notificationCenter:D,OuterEvent:M,utils:{isEmpty:T},common:{isCommunity:P}}=this._core;let W=!1;I&&(W=P({groupID:I.GroupId})||!T(I.TopicId)),g.forEach(iA=>{const{Random:EA,MsgSeq:RA,GroupId:kA,MsgClientTime:xA,TinyId:LA,TopicId:SA,RevokerInfo:{Revoker_Account:OA=n?.Revoker_Account||"",Reason:JA=n?.Reason||""}}=iA,re=SA?`GROUP${SA}`:`GROUP${kA}`,ne=this._messageHelper.generateRevokeMessage({conversationID:re,sequence:RA,random:EA,tinyID:LA,clientTime:xA,revoker:OA,revokeReason:JA});W?(ne.revokerInfo.nick=I.From_AccountNick,ne.revokerInfo.avatar=I.From_AccountHeadurl,E.push(ne)):m.push(ne)}),m.length>0&&(yield this._messageHelper.updateRevokerInfo(m),E.push(...m)),E.length!==0&&D.emitOuterEvent(M.MESSAGE_REVOKED,{name:M.MESSAGE_REVOKED,data:E})}catch(n){console.debug(n)}})}dispose(){const{notificationCenter:s,InnerEvent:{MESSAGE_PUSH:n},InnerEventSubType:{GROUP_MESSAGE_REVOKED:g}}=this._core;s.unSubscribeInnerEvent(n,g,this._handleGroupNotifyMessage,this)}};var zI=new class{constructor(){this._c2cMessageReceiver=new bu,this._groupMessageReceiver=new EC}init(s){this._c2cMessageReceiver.init(s),this._groupMessageReceiver.init(s)}dispose(){this._c2cMessageReceiver.dispose(),this._groupMessageReceiver.dispose()}},ah=new class{constructor(){this._core=null}init(s){this._core=s;const{helper:n}=s;n.registerApi({apiName:"translateText",context:this})}translateText(s){return mA(this,void 0,void 0,function*(){try{const{sourceLanguage:n,sourceTextList:g,targetLanguage:I}=s,E=yield function(m,D){return mA(this,void 0,void 0,function*(){var M,T;const{sourceTextList:P,sourceLanguage:W,targetLanguage:iA}=m,{store:EA,common:RA}=D,kA={SourceText:P,Source:W,Target:iA,FromAccount:(M=EA.get("login"))===null||M===void 0?void 0:M.tinyID,SDKAppID:(T=EA.get("instance"))===null||T===void 0?void 0:T.sdkAppId},xA=yield RA.buildAndSendPacket({servcmd:"im_open_translate.ws_batch_trans_text",data:kA});if(xA){const{CmdErrorCode:LA,TargetText:SA}=xA;return{cmdErrorCode:LA,translatedTextList:SA}}})}({sourceLanguage:n,sourceTextList:g,targetLanguage:I},this._core);if(E){const{cmdErrorCode:{ErrorCode:m,ErrorInfo:D},translatedTextList:M}=E;if(m===0)return{code:0,data:{translatedTextList:M}};throw{errorCode:m,errorInfo:D,message:D}}}catch(n){const{errorCode:g,errorInfo:I}=n||{};throw new this._core.helper.ChatError({functionName:"translateText",code:g,message:I})}})}},ku=new class{init(s){this._core=s,s.helper.registerApi({apiName:"convertVoiceToText",context:this})}convertVoiceToText(s){return mA(this,void 0,void 0,function*(){var n;const{message:g,language:I=Tc.ZH_PY}=s;let{url:E}=g.payload||{};const m=this._core.common.getCurrentUserID();g.from===m&&g.flow==="out"&&(E=g.payload.remoteAudioUrl),this._validateVoiceFormat(E);const D=((n=dI.exec(E))===null||n===void 0?void 0:n[1])||"mp3",M=EI[I]||KI;try{const T=yield function(P){var W;const{store:iA,common:EA}=Us.core,{url:RA,format:kA,serverLanguageType:xA}=P,LA={BytesUrl:RA,BytesEngServiceType:xA,BytesVoiceFormat:kA,Uint32Sdkappid:(W=iA.get("instance"))===null||W===void 0?void 0:W.sdkAppId,Uint64SourceType:0};return EA.buildAndSendPacket({servcmd:"im_open_speech.ws_sentence_recognition",data:LA})}({url:E,format:D,serverLanguageType:M});if(T){const{CmdErrorCode:P,BytesResult:W}=T;if(P.ErrorCode===0)return{code:0,data:{result:W}};throw{code:P.ErrorCode,message:P.ErrorInfo}}}catch(T){const{code:P,message:W}=T||{};throw new this._core.common.ChatError({functionName:"convertVoiceToText",code:P,message:W})}})}_validateVoiceFormat(s){if(!dI.test(s))throw new this._core.common.ChatError({code:2119})}};class hI{constructor(n){const{constants:g,common:I,utils:E}=Us.core,{CONV_C2C:m,CONV_GROUP:D}=g.OuterConstant,{ID:M,tinyID:T,from:P,to:W,clientTime:iA=I.timeManager.getServerTimeSeconds()||0,random:EA,sequence:RA,cloudCustomData:kA="",nick:xA="",avatar:LA="",clientSequence:SA,conversationType:OA,groupID:JA,_elements:re,time:ne}=n;this.ID=M||`${T}-${iA}-${EA}`,this.messageRandom=EA,this.from=P,this.messageSender=P,this.time=ne,this.messageSequence=RA,this.clientSequence=SA||RA,this.clientTime=iA,this.cloudCustomData=kA,this.messageReceiver=W,this.avatar=LA,this.nick=xA;const _i=E.deepCopyWithMethods(re);_i.forEach(Ti=>{Ti.payload=Ti.content,delete Ti.content}),this.messageBody=_i,M?OA.startsWith(m)?this.receiverUserID=W:OA.startsWith(D)&&(this.receiverGroupID=W):JA?(this.receiverGroupID=JA,this.messageReceiver=JA):W&&(this.receiverUserID=W,this.messageReceiver=W)}transformElementsToServerFormat(){return this.messageBody?Array.isArray(this.messageBody)?this.messageBody.map(n=>n.transformToServerFormat({isMergerMessage:!0})):this.messageBody.transformToServerFormat({isMergerMessage:!0}):null}}class rl{static parseServerPushElement(n){const{MsgContent:g}=n,{MsgList:I=[],CompatibleText:E,AbstractList:m,Title:D,PbMsgKey:M,JsonMsgKey:T}=g||{},P=I.map(W=>Er(W));return new rl({messageList:P,title:D,abstractList:m,compatibleText:E,pbDownloadKey:M,downloadKey:T})}constructor(n){this.type=Us.core.constants.OuterConstant.MSG_MERGER;const{messageList:g,title:I,abstractList:E,compatibleText:m,pbDownloadKey:D="",downloadKey:M="",version:T=0,layersOverLimit:P=!1}=n,W=[];g.forEach(iA=>{if(iA){const EA=new hI(iA);W.push(EA)}}),this.content={messageList:W,title:I,abstractList:E,compatibleText:m,version:T,downloadKey:M,pbDownloadKey:D,layersOverLimit:P}}validateBeforeSend(){const{isEmpty:n}=Us.core.helper;return n(this.content.messageList)?{isValid:!1,error:{message:"content is invalid"}}:{isValid:!0}}transformToServerFormat(n){const{isMergerMessage:g=!1}=n||{},I=g?this.payload:this.content,{abstractList:E,compatibleText:m,downloadKey:D,layersOverLimit:M,pbDownloadKey:T,title:P,version:W,messageList:iA}=I;return{MsgType:this.type,MsgContent:{AbstractList:E,CompatibleText:m,JsonMsgKey:D,LayersOverLimit:M,PbMsgKey:T,Title:P,Version:W,MsgList:Ac(iA)}}}}var dC=new class{init(s){this._core=s;const{message:n,helper:g,constants:{OuterConstant:I}}=s;n.messageFactory.registerElementClass(I.MSG_MERGER,rl),g.registerApi({apiName:"createMergerMessage",context:this}),g.registerApi({apiName:"sendMessage",context:this,matcher:E=>E[0].type===I.MSG_MERGER}),g.registerApi({apiName:"downloadMergerMessage",context:this})}createMergerMessage(s){const{common:n}=this._core;if(!s)return null;const g=new rl(s.payload),I=n.getCurrentUserID(),E=this._core.message.messageFactory.createMessage(Object.assign(Object.assign({},s),{from:I}));return E.setRelayFlag(!0),E.setElement(g),E}sendMessage(s,n){return mA(this,void 0,void 0,function*(){var g,I,E;try{const m=function(P){let W="utf-8";Us.core.helper.IN_BROWSER&&document&&(W=document.charset.toLowerCase());let iA,EA=0,RA=0;if(RA=P.length,W==="utf-8"||W==="utf8")for(let kA=0;kA11264){D=this._core.utils.deepCopyWithMethods(s);try{const{JsonMsgKey:P,PbMsgKey:W}=yield function(EA){return mA(this,void 0,void 0,function*(){const{payload:{messageList:RA}}=EA,kA={MsgList:Ac(RA)};return Us.core.common.buildAndSendPacket({servcmd:"im_long_msg.save_relay_json_msg",data:kA})})}(D),{payload:iA}=D;M=new rl(Object.assign(Object.assign({},iA),{messageList:[],downloadKey:P,pbDownloadKey:W})),D.setElement(M)}catch(P){console.error(P)}}const{data:{message:T}}=yield(E=(I=(g=this._core)===null||g===void 0?void 0:g.message)===null||I===void 0?void 0:I.messageSender)===null||E===void 0?void 0:E.sendMessage(D,n);return M&&T.setElement(s._elements),{code:0,data:{message:T}}}catch(m){const{errorCode:D}=m;throw new this._core.helper.ChatError({code:D})}})}downloadMergerMessage(s){return mA(this,void 0,void 0,function*(){const{ssoLog:n}=this._core,g=s.payload,{downloadKey:I,pbDownload:E,type:m,messageList:D}=g,M=yo(g,["downloadKey","pbDownload","type","messageList"]);try{const T=yield function(iA){return mA(this,void 0,void 0,function*(){return Us.core.common.buildAndSendPacket({servcmd:"im_long_msg.get_relay_json_msg",data:{JsonMsgKey:iA}})})}(I),{MsgList:P}=T||{},W=P?.map(iA=>{const EA=Er(iA);return new hI(EA)});return typeof s.isOnlineMessage=="function"?s.setElement({type:s.type,content:Object.assign({messageList:W},M)}):(s.payload.messageList=W,s.payload.downloadKey="",s.payload.pbDownloadKey=""),n.info("downloadMergerMessage",` success downloadKey:${I}`),s}catch(T){const{errorCode:P}=T;throw new this._core.helper.ChatError({functionName:"downloadMergerMessage",code:P,moreMessage:I})}})}},ra=new class{init(s){this._core=s,this._core.helper.registerExperimentalAPI("sendComboMessage",this)}sendComboMessage(s){return mA(this,void 0,void 0,function*(){const{appStore:n,message:g,common:{getCurrentUserID:I},utils:{isArray:E}}=this._core,{GroupId:m,To_Account:D}=s;s.From_Account=s.From_Account||I();let M=null;if(m){M=this._generateGroupMessage(Object.assign(Object.assign({},s),{ToGroupId:m}));const T=n.userStore.getUserProfile(I());M.level=T?.level||0,E(D)&&D.length>0&&(M._receiverList=D)}else D&&(M=this._generateC2CMessage(s));return g.messageSender.sendMessage(M,s)})}_generateC2CMessage(s){const{message:n,OuterConstant:{CONV_C2C:g}}=this._core,I=g,E=n.messageHelper.parseServerPushMessage(s),m=n.messageFactory.createMessage(Object.assign(Object.assign({},E),{conversationType:I,flow:ec.OUT})),{elements:D}=E;return m.setElement(D),m}_generateGroupMessage(s){const{message:n,OuterConstant:{CONV_GROUP:g}}=this._core,I=g,E=n.messageHelper.parseServerGroupMessage(s),m=n.messageFactory.createMessage(Object.assign(Object.assign({},E),{conversationType:I,flow:ec.OUT})),{elements:D}=E;return m.setElement(D),m}},tc=new class{init(s){this._core=s;const{helper:n,notificationCenter:g,InnerEvent:{MESSAGE_PUSH:I},InnerEventSubType:{GROUP_MESSAGE_PINNED:E}}=s;g.subscribeInnerEvent(I,E,this._handleGroupMessagePinned,this),n.registerApi({apiName:"pinGroupMessage",context:this}),n.registerApi({apiName:"getPinnedGroupMessageList",context:this})}pinGroupMessage(s){return mA(this,void 0,void 0,function*(){const{ssoLog:n,common:{isTopic:g},OuterConstant:{GROUP_ID_PREFIX:I},helper:{ChatError:E}}=this._core;let{groupID:m,message:D,isPinned:M}=s;const{sequence:T}=D;try{return yield function(P){return mA(this,void 0,void 0,function*(){const{common:{buildAndSendPacket:W,getCurrentUserID:iA}}=Us.core,{groupID:EA,sequence:RA,isPinned:kA}=P,xA=iA(),LA=kA?"group_open_http_svc.pin_message":"group_open_http_svc.unpin_message",SA={GroupId:EA,MsgSeq:RA};return kA?SA.Pinner_Account=xA:SA.UnPinner_Account=xA,W({servcmd:LA,data:SA})})}({groupID:m,sequence:T,isPinned:M}),{code:0,data:{}}}catch(P){const{errorCode:W,errorInfo:iA}=P||{};throw new E({code:W,message:iA})}})}getPinnedGroupMessageList(s){return mA(this,void 0,void 0,function*(){let n=[];try{const g=yield function(I){return mA(this,void 0,void 0,function*(){const{groupID:E}=I,{common:{buildAndSendPacket:m}}=Us.core;return m({servcmd:"group_open_http_svc.get_pinned_messages",data:{GroupId:E}})})}({groupID:s});if(g){const{PinnedMsgList:I=[]}=g;n=yield this._updatePinnedMessageInfo({serverPinnedMessageList:I,groupID:s})}return{code:0,data:{messageList:n}}}catch(g){throw g}})}_handleGroupMessagePinned(s){const{message:{messageHelper:n,messageFactory:g},notificationCenter:I,OuterEvent:E,OuterConstant:m}=this._core;s.GroupTips.forEach(D=>{const{ToGroupId:M,MsgBody:{PinnedMsg:T,OpType:P,MsgOperatorMemberExtraInfo:W,SdkGroupMessageId:iA}}=D,{UserId:EA,NickName:RA="",ImageUrl:kA=""}=W;let xA=null,LA=!1;if(P===dd){LA=!0;const SA=n.parseServerGroupMessage(T);xA=g.createMessage(Object.assign(Object.assign({},SA),{conversationType:m.CONV_GROUP,flow:"in"})),xA.setElement(SA.elements),xA.pinnerInfo={userID:EA,nick:RA,avatar:kA}}else if(P===vE){const{ClientTime:SA,Random:OA,SenderTinyId:JA,ServerTime:re,MsgSeq:ne}=iA;xA={ID:`${JA}-${SA}-${OA}`,sequence:ne,random:OA,time:re,clientTime:SA}}xA&&I.emitOuterEvent(E.PINNED_GROUP_MESSAGE_UPDATED,{name:E.PINNED_GROUP_MESSAGE_UPDATED,data:{groupID:M,message:xA,isPinned:LA,operatorInfo:{userID:EA,nick:RA,avatar:kA}}})})}_findMessageBySequence(s,n){const{message:{messageDataHandler:g}}=this._core;return[...g.getLocalMessageList(s),...g.getSparseMessageList(s)].find(I=>I.sequence===n)}_updatePinnedMessageInfo(s){return mA(this,arguments,void 0,function*({serverPinnedMessageList:n,groupID:g}){const{OuterConstant:{CONV_GROUP:I},utils:{isEmpty:E}}=this._core,m=[],D=[],M=[],T=new Map,P=`${I}${g}`;for(let iA=0;iA{const{sequence:kA}=RA,xA=T.get(kA),LA=iA[xA]||{userID:xA,nick:"",avatar:""};RA.pinnerInfo=LA}),m.sort((RA,kA)=>RA.sequence-kA.sequence),m}return[]})}_fetchPinnedMessageInfo(s){return mA(this,void 0,void 0,function*(){var n,g;const{message:{messageHistory:I},user:{userProfile:E},utils:{isArray:m}}=this._core,{conversationID:D,messageSequenceList:M,pinnerIDList:T}=s,P=yield Promise.all([this._fetchMessageBySequence({conversationID:D,messageSequenceList:M}),E?.getUserProfile({userIDList:T})]);if(m(P)){const W={};return(((n=P[1])===null||n===void 0?void 0:n.data)||[]).forEach(iA=>{const{userID:EA,nick:RA="",avatar:kA=""}=iA;W[EA]={userID:EA,nick:RA,avatar:kA}}),{messageList:((g=P[0])===null||g===void 0?void 0:g.messageList)||[],pinnerInfoMap:W}}})}_fetchMessageBySequence(s){return mA(this,void 0,void 0,function*(){const{utils:{isEmpty:n},message:{messageHistory:g}}=this._core,{conversationID:I,messageSequenceList:E}=s;return n(E)?[]:g.getGroupRoamingMessagesByAnchor({conversationID:I,messageSequenceList:E,getType:3})})}};class lg{constructor(n){this.eventType=Nc.DATA,this.index=0,this.markdown="",this.isLast=!1,this.binaryData=null;const{EventType:g,Index:I,Markdown:E,IsLast:m,BinaryData:D}=n;this.eventType=g,this.index=I,this.markdown=E,this.isLast=m,this.binaryData=D}}var BI=new class{constructor(){this._messageMap=new Map,this._retryCountMap=new Map}init(s){this._core=s;const{notificationCenter:n,OuterEvent:{MESSAGE_RECEIVED:g},InnerEvent:{HISTORY_MESSAGE_FETCHED:I},common:{workflowManager:E},constants:{WORKFLOW_NAME:m,WORKFLOW_STEP:D}}=s;n.subscribeInnerEvent(co,this._handleStreamMessageChunkPush,this),n.subscribeOuterEvent(g,this._handleMessageReceived,this),n.subscribeInnerEvent(I,this.processHistoryMessage,this),E.registerWorkflowStep(m.SYNC_SERVER_INFO_AFTER_RE_ONLINE,D.STREAM_MESSAGE_RECOVER,this._recoverStreamMessage,this)}processHistoryMessage(s){const{utils:{isEmpty:n,safeStringify:g},ssoLog:I}=this._core;try{s?.forEach(E=>{var m;if(this._isValidStreamMessage(E)){const D=(m=E?._elements)===null||m===void 0?void 0:m[0],{streamMessageID:M,markdown:T,binaryData:P}=D?.content||{};n(T)&&n(P)?(this._messageMap.set(M,E),this._fetchStreamMessageChunks(E)):D.content.isStreamEnded=!0}})}catch(E){I.error("processHistoryMessage.error",g(E))}}_handleMessageReceived(s){const n=s.data;n?.forEach(g=>{var I,E;if(this._isValidStreamMessage(g)){const{streamMessageID:m}=((E=(I=g?._elements)===null||I===void 0?void 0:I[0])===null||E===void 0?void 0:E.content)||{};m&&(this._messageMap.set(m,g),this._fetchStreamMessageChunks(g))}})}_isValidStreamMessage(s){var n,g;const{utils:{isEmpty:I}}=this._core,{streamMessageID:E}=((g=(n=s?._elements)===null||n===void 0?void 0:n[0])===null||g===void 0?void 0:g.content)||{};return s.type===Pr.MSG_STREAM&&!I(E)}_fetchStreamMessageChunks(s){return mA(this,void 0,void 0,function*(){var n,g;const{constants:{ERROR_CODE:I},ssoLog:E,utils:{safeStringify:m}}=this._core,D=(n=s._elements)===null||n===void 0?void 0:n[0],M=(g=D?.content)===null||g===void 0?void 0:g.streamMessageID;try{const{from:T,to:P}=s,W=D.getLatestIndex();if(D.content.isStreamEnded)return;const iA=yield function(EA){return mA(this,void 0,void 0,function*(){const{from:RA,to:kA,streamMessageID:xA,index:LA}=EA,SA={From_Account:RA,To_Account:kA,StreamMsgID:xA,AckIndex:LA};return Us.core.common.buildAndSendPacket({servcmd:"StreamMsg.GetStreamHttp",data:SA,timeout:5e3})})}({from:T,to:P,streamMessageID:M,index:W});if(iA){const{ErrorCode:EA,ErrorInfo:RA}=iA;if(EA!==0)throw D.content.errorCode=EA,D.content.errorMessage=RA,{errorCode:EA,errorMessage:RA}}}catch(T){if(T.errorCode===I.NETWORK_TIMEOUT&&this._shouldRetryFetch(M)){const P=this._retryCountMap.get(M)||0;E.debug("_fetchStreamMessageChunks.timeout",`error: ${m(T)} retried: ${P}`),this._retryCountMap.set(M,P+1),this._fetchStreamMessageChunks(s)}else E.error("_fetchStreamMessageChunks.error",m(T))}})}_shouldRetryFetch(s){const{utils:{isNumber:n}}=this._core;if(!this._retryCountMap.has(s))return this._retryCountMap.set(s,1),!0;const g=this._retryCountMap.get(s);return!!(n(g)&&g<=3)}_onStreamEnded(s,n,g){const{ssoLog:I}=this._core;g.content.isStreamEnded=!0,g.stopReason=n,this._messageMap.delete(s),I.debug("_onStreamEnded",`streamMessage end, StopReason: ${n}`)}_handleStreamMessageChunkPush(s){var n;const{ssoLog:g}=this._core,{StopReason:I,Chunks:E,StreamID:m}=s?.body||{},D=this._messageMap.get(m);if(!D)return void g.warn(`_handleStreamMessageChunkPush, unfounded message: ${m}`);const M=(n=D._elements)===null||n===void 0?void 0:n[0];if(M&&this._validateExpectedChunk(M,E)){if(E.length>0){const T=E.map(P=>new lg(P));M.updateChunks(T)}this._emitMessageModify(D),function(T,P){mA(this,void 0,void 0,function*(){const{common:{generateProtocolData:W},utils:{safeStringify:iA},ssoLog:EA,channel:RA}=Us.core,kA={StreamMsgID:T,AckIndex:P};try{const xA=W({servcmd:"StreamMsg.AckHttp",data:kA});RA.sendPacket(xA)}catch(xA){EA.debug("sendStreamChunkAck",iA(xA))}})}(m,M.getLatestIndex()),M.content.isStreamEnded&&this._onStreamEnded(m,I,M)}}_emitMessageModify(s){const{notificationCenter:n,OuterEvent:{MESSAGE_MODIFIED:g}}=this._core;n.emitOuterEvent(g,{name:g,data:[s]})}_validateExpectedChunk(s,n){const g=s.getLatestIndex()+1;let I=!1;for(let E=0;Em.Index).join(", ")}]`),!1}return!0}_recoverStreamMessage(){this._retryCountMap.clear();const{ssoLog:s,utils:{safeStringify:n}}=this._core;try{const g=Array.from(this._messageMap.entries());for(let I=Math.max(0,g.length-300);I{const LA=this._getResponseBody(kA,E,iA&&EA),SA=this._buildResponse(kA,LA);if(kA.status===200)n(null,SA);else{if(EA&&!RA.includes(EA))return s.url=this._domainName2IP(RA,EA),s.uploadByIP=!0,this.request(s,n);n({code:kA.status,message:JSON.stringify(kA.responseText)},SA)}},kA.onerror=()=>{const LA=this._getResponseBody(kA,E,iA&&EA),SA=this._buildResponse(kA,LA),OA={code:kA.status,message:kA.status===0?"CORS blocked or network error":JSON.stringify(kA.responseText)};n(OA,SA)},s.onProgress&&kA.upload&&(kA.upload.onprogress=LA=>{const{total:SA,loaded:OA}=LA,JA=Math.min(Math.floor(100*OA/SA),100);s.onProgress({total:SA,loaded:OA,percent:JA/100})}),kA.send(P),kA})}_buildResponse(s,n){const g={};return s.getAllResponseHeaders().trim().split(` -`).forEach(I=>{if(I){const[E,m]=I.split(":").map(D=>D.trim());g[E.toLowerCase()]=m}}),{statusCode:s.status,statusMessage:s.statusText,headers:g,data:n}}_getResponseBody(s,n,g){return s.status===200&&n?{location:n,uploadIP:g}:{response:s.responseText,uploadIP:g}}_queryString(s,n="&",g="="){var I;const{isEmpty:E,isPlainObject:m}=(I=this._core)===null||I===void 0?void 0:I.utils;return E(s)?"":m(s)?Object.keys(s).map(D=>{const M=encodeURIComponent(D)+g;return Array.isArray(s[D])?s[D].map(T=>M+encodeURIComponent(T)).join(n):M+encodeURIComponent(s[D])}).filter(Boolean).join(n):void 0}_domainName2IP(s,n){return s.replace(/^http(s)?:\/\/(.*?)\//,`https://${n}/`)}};const Uu=["unknown","image","video","audio","log"];var QI=new class{init(s){this._core=s}request(s,n){var g;const{MINI_APP_NAMESPACE:I,IN_ALIPAY_MINI_APP:E,isUniIOSApp:m}=(g=this._core)===null||g===void 0?void 0:g.utils,{resources:D="",headers:M={},url:T,downloadUrl:P=""}=s;let W=T,iA=null;const EA=P?P.match(/^(https?:\/\/[^/]+\/)([^/]*\/?)(.*)$/):null;if(!EA)return void console.warn("message Invalid download URL format");const RA=decodeURIComponent(EA[3]),kA=RA.includes("?")?RA.split("?")[0]:RA||"",xA={key:s.fileKey||kA,success_action_status:200,"Content-Type":""},LA={};if(m()){const[OA,JA]=T.split("?sign=");JA&&(W=`${OA}?sign=${encodeURIComponent(JA)}`,LA.sign=decodeURIComponent(JA),LA.signature=decodeURIComponent(JA))}let SA={url:W,header:M,name:"file",filePath:D,formData:Object.assign(Object.assign({},xA),LA),timeout:s.timeout||3e5};if(E){const{name:OA}=SA,JA=yo(SA,["name"]);SA=Object.assign(Object.assign({},JA),{fileName:"file",fileType:s.fileType?Uu[s.fileType]:"image"})}return iA=I.uploadFile(Object.assign(Object.assign({},SA),{success:OA=>{this._handleResponse({response:OA,downloadUrl:P,callback:n})},fail:OA=>{this._handleResponse({response:OA,downloadUrl:P,callback:n})}})),iA.onProgressUpdate&&iA.onProgressUpdate(OA=>{s.onProgress&&s.onProgress({total:OA.totalBytesExpectedToSend||0,loaded:OA.totalBytesSent||0,percent:OA.progress?Math.floor(OA.progress)/100:0})}),iA}_handleResponse(s){const{downloadUrl:n,response:g,callback:I}=s,E={};if(g.header)for(const D in g.header)g.header.hasOwnProperty(D)&&(E[D.toLowerCase()]=g.header[D]);const m=+g.statusCode;m===200?I(null,{statusCode:m,headers:E,data:Object.assign(Object.assign({},g.data),{location:n})}):I({code:m,message:JSON.stringify(g.data)},{statusCode:m,headers:E,data:void 0})}};function al(s){return function(n){return Object.prototype.toString.call(n).match(/^\[object (.*)\]$/)[1].toLowerCase()}(s)==="file"}function Gr(s){const n=s||99999999;return Math.round(Math.random()*n)}function br(s,n=!0,g=!0){const I=Date.now();return n?g?I-s+" ms":`${Math.round((I-s)/1e3)} s`:g?I-s:Math.round((I-s)/1e3)}function Ig(s){return`${Array.from({length:8},()=>Math.floor(65536*(1+Math.random())).toString(16).substring(1)).join("")}-${s}`}function rr(s,n){return Math.round(Number(s)*10**n)/10**n}function vr(s){return s<=1048576?`${rr(s/1024,1)}KB/s`:`${rr(s/1048576,1)}MB/s`}const ic="TIMImageElem",Fg="TIMSoundElem",xa="TIMFileElem",Ll="TIMVideoFileElem",da="RichMediaMessagePlugin",pI=["rich.my-imcloud.com","imrich.qcloud.com"],ZI=1,Ca=2,gl=3,NE=255;var XI;(function(s){s.UNSENT="unSend",s.SUCCESS="success",s.FAIL="fail"})(XI||(XI={}));const GE={wechat:/^(wxfile:\/\/tmp_|http:\/\/temp\/|cloud:\/\/temp-)/,alipay:/^(https:\/\/resource\/|alipayfile:\/\/tmp\/)/,baidu:/^(http:\/\/tmp\/|swanfile:\/\/tmp_)/,bytedance:/^(ttfile:\/\/tmp_|\/(var|tmp)\/|tttemp:\/\/)/,qq:/^(qqfile:\/\/tmp_|http:\/\/qtemp\/)/},xr=Symbol("isCustomUpload");var $I,Ut=new class{init(s){this._core=s}addAuthToUrl(s=""){if(this._isMiniProgramTempFile(s))return s;const n=function(g){return g?g.startsWith("https://")?g:g.startsWith("http://")?g.replace("http://","https://"):g:""}(s);return this.processResourceUrl(n)}removeAuthToUrl(s){return function(n,g){const[I,E]=n.split("?");if(!E)return I;const m=E.split("&").reduce((M,T)=>{const[P,W]=T.split("=");return P&&P!==g&&(M[P]=W||""),M},{}),D=Object.keys(m).map(M=>`${M}${m[M]?`=${m[M]}`:""}`).join("&");return D?`${I}?${D}`:I}(s,"authKey")}_isMiniProgramTempFile(s){return!!this.getPlatformFlags().IN_MINI_APP&&Object.values(GE).some(n=>n.test(s))}extractFileFromInput(s){const{utils:{isArray:n}}=this._core;return al(s)?s:function(g){if(typeof g!="object"||g===null)return!1;const I=Object.getPrototypeOf(g);if(I===null)return!0;let E=I;for(;Object.getPrototypeOf(E)!==null;)E=Object.getPrototypeOf(E);return I===E}(s)&&typeof uni<"u"?n(s.tempFiles)&&s.tempFiles.length>0?s.tempFiles[0]:n(s.files)?s.files[0]:s.tempFile?s.tempFile:null:s instanceof HTMLInputElement&&s.files&&s.files.length>0?s.files[0]:null}probeImageWidthHeight(s){return mA(this,void 0,void 0,function*(){var n;const{IN_MINI_APP:g,IN_BROWSER:I}=((n=this._core)===null||n===void 0?void 0:n.utils)||{};return this._shouldSkipProbing()?{width:0,height:0}:I?this._probeImageDimensionsWeb(s):g?this._probeImageDimensionsMiniApp(s):void 0})}isSimpleCos(){var s;const n=((s=this._core)===null||s===void 0?void 0:s.store.get("cloudConfig"))||{},{simple_cos:g}=n;return g!=="0"}getFileDNList(){var s;let n=pI;const g=((s=this._core)===null||s===void 0?void 0:s.store.get("cloudConfig"))||{},{file_dn_list:I}=g;if(I===void 0)return n;try{JSON.parse(I).forEach(E=>{n.includes(E)||n.push(E)})}catch(E){console.warn(E),n=pI}return n}getPlatform(){var s;return(s=this._core)===null||s===void 0?void 0:s.utils.platform}generateUUID(s,n){var g;let I=`${this.getSDKAppID()}-${this.getCurrentUserID()}-${(g=this._core)===null||g===void 0?void 0:g.utils.randomString()}`;if(n)return`${I}.${n}`;const E=s.name||s.value||s.url||s.tempFilePath,m=E&&E.slice(E.lastIndexOf(".")+1);return m&&(I=`${I}.${m}`),I}processResourceUrl(s){if(!s)return"";let n=s;const g=this.getFileDownloadProxy(),I=this.getAuthKey(),E=this.getFileDNList();return g&&(s.startsWith("http://")?n=s.replace(/^http:\/\/[^/]+/,g):s.startsWith("https://")&&(n=s.replace(/^https:\/\/[^/]+/,g))),I&&n.indexOf("authKey=")===-1&&function(D,M){let T=!1;if(D){const P=D.match(/:\/\/([0-9]?\.)?(.[^/:]+)/),W=P&&P[2]||"";if(W.includes("rich-dev"))return!0;for(let iA=0;iA-1?`${n}&authKey=${I}`:`${n}?authKey=${I}`),n}getCurrentUserID(){var s,n;return(n=(s=this._core)===null||s===void 0?void 0:s.store.get("login"))===null||n===void 0?void 0:n.userId}getSDKAppID(){var s,n;return(n=(s=this._core)===null||s===void 0?void 0:s.store.get("instance"))===null||n===void 0?void 0:n.sdkAppId}getFileDownloadProxy(){var s,n;return((n=(s=this._core)===null||s===void 0?void 0:s.store.get("instance"))===null||n===void 0?void 0:n.fileDownloadProxy)||""}getFileUploadProxy(){var s,n;return((n=(s=this._core)===null||s===void 0?void 0:s.store.get("instance"))===null||n===void 0?void 0:n.fileUploadProxy)||""}getAuthKey(){var s,n;return((n=(s=this._core)===null||s===void 0?void 0:s.store.get("login"))===null||n===void 0?void 0:n.authKey)||""}isPrivateNetWork(){var s,n;return(n=(s=this._core)===null||s===void 0?void 0:s.store.get("instance"))===null||n===void 0?void 0:n.proxyServer}getPlatformFlags(){var s;const{IN_BROWSER:n,IN_MINI_APP:g,IN_RN_APP:I,IN_UNI_NATIVE_APP:E}=(s=this._core)===null||s===void 0?void 0:s.utils;return{IN_BROWSER:n,IN_MINI_APP:g,IN_RN_APP:I,IN_UNI_NATIVE_APP:E}}isEmpty(s){var n;const{isEmpty:g}=(n=this._core)===null||n===void 0?void 0:n.utils;return g(s)}generateURL(s,n){const{needAddAuthToUrl:g=!0}=n||{};return g?this.addAuthToUrl(s):s}_probeImageDimensionsMiniApp(s){var n;const{MINI_APP_NAMESPACE:g}=((n=this._core)===null||n===void 0?void 0:n.utils)||{};return new Promise(I=>{g.getImageInfo({src:s,success:E=>I({width:E.width,height:E.height}),fail:()=>I({width:0,height:0})})})}_shouldSkipProbing(){var s;const{IN_RN_APP:n,IS_IE:g,IE_VERSION:I,IN_WX_MINI_GAME:E}=((s=this._core)===null||s===void 0?void 0:s.utils)||{};return n||g&&I===9||E}_probeImageDimensionsWeb(s){return new Promise(n=>{const g=new Image,I=()=>{g.onload=null,g.onerror=null,g.src=""};g.onload=()=>{n({width:g.width,height:g.height}),I()},g.onerror=()=>{n({width:0,height:0}),I()},g.src=s})}},Fu={exports:{}},Ou=($I||($I=1,function(s){s.exports=function(n){var g=["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"];function I(LA,SA){var OA=LA[0],JA=LA[1],re=LA[2],ne=LA[3];JA=((JA+=((re=((re+=((ne=((ne+=((OA=((OA+=(JA&re|~JA&ne)+SA[0]-680876936|0)<<7|OA>>>25)+JA|0)&JA|~OA&re)+SA[1]-389564586|0)<<12|ne>>>20)+OA|0)&OA|~ne&JA)+SA[2]+606105819|0)<<17|re>>>15)+ne|0)&ne|~re&OA)+SA[3]-1044525330|0)<<22|JA>>>10)+re|0,JA=((JA+=((re=((re+=((ne=((ne+=((OA=((OA+=(JA&re|~JA&ne)+SA[4]-176418897|0)<<7|OA>>>25)+JA|0)&JA|~OA&re)+SA[5]+1200080426|0)<<12|ne>>>20)+OA|0)&OA|~ne&JA)+SA[6]-1473231341|0)<<17|re>>>15)+ne|0)&ne|~re&OA)+SA[7]-45705983|0)<<22|JA>>>10)+re|0,JA=((JA+=((re=((re+=((ne=((ne+=((OA=((OA+=(JA&re|~JA&ne)+SA[8]+1770035416|0)<<7|OA>>>25)+JA|0)&JA|~OA&re)+SA[9]-1958414417|0)<<12|ne>>>20)+OA|0)&OA|~ne&JA)+SA[10]-42063|0)<<17|re>>>15)+ne|0)&ne|~re&OA)+SA[11]-1990404162|0)<<22|JA>>>10)+re|0,JA=((JA+=((re=((re+=((ne=((ne+=((OA=((OA+=(JA&re|~JA&ne)+SA[12]+1804603682|0)<<7|OA>>>25)+JA|0)&JA|~OA&re)+SA[13]-40341101|0)<<12|ne>>>20)+OA|0)&OA|~ne&JA)+SA[14]-1502002290|0)<<17|re>>>15)+ne|0)&ne|~re&OA)+SA[15]+1236535329|0)<<22|JA>>>10)+re|0,JA=((JA+=((re=((re+=((ne=((ne+=((OA=((OA+=(JA&ne|re&~ne)+SA[1]-165796510|0)<<5|OA>>>27)+JA|0)&re|JA&~re)+SA[6]-1069501632|0)<<9|ne>>>23)+OA|0)&JA|OA&~JA)+SA[11]+643717713|0)<<14|re>>>18)+ne|0)&OA|ne&~OA)+SA[0]-373897302|0)<<20|JA>>>12)+re|0,JA=((JA+=((re=((re+=((ne=((ne+=((OA=((OA+=(JA&ne|re&~ne)+SA[5]-701558691|0)<<5|OA>>>27)+JA|0)&re|JA&~re)+SA[10]+38016083|0)<<9|ne>>>23)+OA|0)&JA|OA&~JA)+SA[15]-660478335|0)<<14|re>>>18)+ne|0)&OA|ne&~OA)+SA[4]-405537848|0)<<20|JA>>>12)+re|0,JA=((JA+=((re=((re+=((ne=((ne+=((OA=((OA+=(JA&ne|re&~ne)+SA[9]+568446438|0)<<5|OA>>>27)+JA|0)&re|JA&~re)+SA[14]-1019803690|0)<<9|ne>>>23)+OA|0)&JA|OA&~JA)+SA[3]-187363961|0)<<14|re>>>18)+ne|0)&OA|ne&~OA)+SA[8]+1163531501|0)<<20|JA>>>12)+re|0,JA=((JA+=((re=((re+=((ne=((ne+=((OA=((OA+=(JA&ne|re&~ne)+SA[13]-1444681467|0)<<5|OA>>>27)+JA|0)&re|JA&~re)+SA[2]-51403784|0)<<9|ne>>>23)+OA|0)&JA|OA&~JA)+SA[7]+1735328473|0)<<14|re>>>18)+ne|0)&OA|ne&~OA)+SA[12]-1926607734|0)<<20|JA>>>12)+re|0,JA=((JA+=((re=((re+=((ne=((ne+=((OA=((OA+=(JA^re^ne)+SA[5]-378558|0)<<4|OA>>>28)+JA|0)^JA^re)+SA[8]-2022574463|0)<<11|ne>>>21)+OA|0)^OA^JA)+SA[11]+1839030562|0)<<16|re>>>16)+ne|0)^ne^OA)+SA[14]-35309556|0)<<23|JA>>>9)+re|0,JA=((JA+=((re=((re+=((ne=((ne+=((OA=((OA+=(JA^re^ne)+SA[1]-1530992060|0)<<4|OA>>>28)+JA|0)^JA^re)+SA[4]+1272893353|0)<<11|ne>>>21)+OA|0)^OA^JA)+SA[7]-155497632|0)<<16|re>>>16)+ne|0)^ne^OA)+SA[10]-1094730640|0)<<23|JA>>>9)+re|0,JA=((JA+=((re=((re+=((ne=((ne+=((OA=((OA+=(JA^re^ne)+SA[13]+681279174|0)<<4|OA>>>28)+JA|0)^JA^re)+SA[0]-358537222|0)<<11|ne>>>21)+OA|0)^OA^JA)+SA[3]-722521979|0)<<16|re>>>16)+ne|0)^ne^OA)+SA[6]+76029189|0)<<23|JA>>>9)+re|0,JA=((JA+=((re=((re+=((ne=((ne+=((OA=((OA+=(JA^re^ne)+SA[9]-640364487|0)<<4|OA>>>28)+JA|0)^JA^re)+SA[12]-421815835|0)<<11|ne>>>21)+OA|0)^OA^JA)+SA[15]+530742520|0)<<16|re>>>16)+ne|0)^ne^OA)+SA[2]-995338651|0)<<23|JA>>>9)+re|0,JA=((JA+=((ne=((ne+=(JA^((OA=((OA+=(re^(JA|~ne))+SA[0]-198630844|0)<<6|OA>>>26)+JA|0)|~re))+SA[7]+1126891415|0)<<10|ne>>>22)+OA|0)^((re=((re+=(OA^(ne|~JA))+SA[14]-1416354905|0)<<15|re>>>17)+ne|0)|~OA))+SA[5]-57434055|0)<<21|JA>>>11)+re|0,JA=((JA+=((ne=((ne+=(JA^((OA=((OA+=(re^(JA|~ne))+SA[12]+1700485571|0)<<6|OA>>>26)+JA|0)|~re))+SA[3]-1894986606|0)<<10|ne>>>22)+OA|0)^((re=((re+=(OA^(ne|~JA))+SA[10]-1051523|0)<<15|re>>>17)+ne|0)|~OA))+SA[1]-2054922799|0)<<21|JA>>>11)+re|0,JA=((JA+=((ne=((ne+=(JA^((OA=((OA+=(re^(JA|~ne))+SA[8]+1873313359|0)<<6|OA>>>26)+JA|0)|~re))+SA[15]-30611744|0)<<10|ne>>>22)+OA|0)^((re=((re+=(OA^(ne|~JA))+SA[6]-1560198380|0)<<15|re>>>17)+ne|0)|~OA))+SA[13]+1309151649|0)<<21|JA>>>11)+re|0,JA=((JA+=((ne=((ne+=(JA^((OA=((OA+=(re^(JA|~ne))+SA[4]-145523070|0)<<6|OA>>>26)+JA|0)|~re))+SA[11]-1120210379|0)<<10|ne>>>22)+OA|0)^((re=((re+=(OA^(ne|~JA))+SA[2]+718787259|0)<<15|re>>>17)+ne|0)|~OA))+SA[9]-343485551|0)<<21|JA>>>11)+re|0,LA[0]=OA+LA[0]|0,LA[1]=JA+LA[1]|0,LA[2]=re+LA[2]|0,LA[3]=ne+LA[3]|0}function E(LA){var SA,OA=[];for(SA=0;SA<64;SA+=4)OA[SA>>2]=LA.charCodeAt(SA)+(LA.charCodeAt(SA+1)<<8)+(LA.charCodeAt(SA+2)<<16)+(LA.charCodeAt(SA+3)<<24);return OA}function m(LA){var SA,OA=[];for(SA=0;SA<64;SA+=4)OA[SA>>2]=LA[SA]+(LA[SA+1]<<8)+(LA[SA+2]<<16)+(LA[SA+3]<<24);return OA}function D(LA){var SA,OA,JA,re,ne,_i,Ti=LA.length,kt=[1732584193,-271733879,-1732584194,271733878];for(SA=64;SA<=Ti;SA+=64)I(kt,E(LA.substring(SA-64,SA)));for(OA=(LA=LA.substring(SA-64)).length,JA=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],SA=0;SA>2]|=LA.charCodeAt(SA)<<(SA%4<<3);if(JA[SA>>2]|=128<<(SA%4<<3),SA>55)for(I(kt,JA),SA=0;SA<16;SA+=1)JA[SA]=0;return re=(re=8*Ti).toString(16).match(/(.*?)(.{0,8})$/),ne=parseInt(re[2],16),_i=parseInt(re[1],16)||0,JA[14]=ne,JA[15]=_i,I(kt,JA),kt}function M(LA){var SA,OA,JA,re,ne,_i,Ti=LA.length,kt=[1732584193,-271733879,-1732584194,271733878];for(SA=64;SA<=Ti;SA+=64)I(kt,m(LA.subarray(SA-64,SA)));for(OA=(LA=SA-64>2]|=LA[SA]<<(SA%4<<3);if(JA[SA>>2]|=128<<(SA%4<<3),SA>55)for(I(kt,JA),SA=0;SA<16;SA+=1)JA[SA]=0;return re=(re=8*Ti).toString(16).match(/(.*?)(.{0,8})$/),ne=parseInt(re[2],16),_i=parseInt(re[1],16)||0,JA[14]=ne,JA[15]=_i,I(kt,JA),kt}function T(LA){var SA,OA="";for(SA=0;SA<4;SA+=1)OA+=g[LA>>8*SA+4&15]+g[LA>>8*SA&15];return OA}function P(LA){var SA;for(SA=0;SA"u"||ArrayBuffer.prototype.slice||function(){function LA(SA,OA){return(SA=0|SA||0)<0?Math.max(SA+OA,0):Math.min(SA,OA)}ArrayBuffer.prototype.slice=function(SA,OA){var JA,re,ne,_i,Ti=this.byteLength,kt=LA(SA,Ti),Ni=Ti;return OA!==n&&(Ni=LA(OA,Ti)),kt>Ni?new ArrayBuffer(0):(JA=Ni-kt,re=new ArrayBuffer(JA),ne=new Uint8Array(re),_i=new Uint8Array(this,kt,JA),ne.set(_i),re)}}(),xA.prototype.append=function(LA){return this.appendBinary(W(LA)),this},xA.prototype.appendBinary=function(LA){this._buff+=LA,this._length+=LA.length;var SA,OA=this._buff.length;for(SA=64;SA<=OA;SA+=64)I(this._hash,E(this._buff.substring(SA-64,SA)));return this._buff=this._buff.substring(SA-64),this},xA.prototype.end=function(LA){var SA,OA,JA=this._buff,re=JA.length,ne=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];for(SA=0;SA>2]|=JA.charCodeAt(SA)<<(SA%4<<3);return this._finish(ne,re),OA=P(this._hash),LA&&(OA=kA(OA)),this.reset(),OA},xA.prototype.reset=function(){return this._buff="",this._length=0,this._hash=[1732584193,-271733879,-1732584194,271733878],this},xA.prototype.getState=function(){return{buff:this._buff,length:this._length,hash:this._hash.slice()}},xA.prototype.setState=function(LA){return this._buff=LA.buff,this._length=LA.length,this._hash=LA.hash,this},xA.prototype.destroy=function(){delete this._hash,delete this._buff,delete this._length},xA.prototype._finish=function(LA,SA){var OA,JA,re,ne=SA;if(LA[ne>>2]|=128<<(ne%4<<3),ne>55)for(I(this._hash,LA),ne=0;ne<16;ne+=1)LA[ne]=0;OA=(OA=8*this._length).toString(16).match(/(.*?)(.{0,8})$/),JA=parseInt(OA[2],16),re=parseInt(OA[1],16)||0,LA[14]=JA,LA[15]=re,I(this._hash,LA)},xA.hash=function(LA,SA){return xA.hashBinary(W(LA),SA)},xA.hashBinary=function(LA,SA){var OA=P(D(LA));return SA?kA(OA):OA},xA.ArrayBuffer=function(){this.reset()},xA.ArrayBuffer.prototype.append=function(LA){var SA,OA=RA(this._buff.buffer,LA),JA=OA.length;for(this._length+=LA.byteLength,SA=64;SA<=JA;SA+=64)I(this._hash,m(OA.subarray(SA-64,SA)));return this._buff=SA-64>2]|=JA[SA]<<(SA%4<<3);return this._finish(ne,re),OA=P(this._hash),LA&&(OA=kA(OA)),this.reset(),OA},xA.ArrayBuffer.prototype.reset=function(){return this._buff=new Uint8Array(0),this._length=0,this._hash=[1732584193,-271733879,-1732584194,271733878],this},xA.ArrayBuffer.prototype.getState=function(){var LA=xA.prototype.getState.call(this);return LA.buff=EA(LA.buff),LA},xA.ArrayBuffer.prototype.setState=function(LA){return LA.buff=iA(LA.buff,!0),xA.prototype.setState.call(this,LA)},xA.ArrayBuffer.prototype.destroy=xA.prototype.destroy,xA.ArrayBuffer.prototype._finish=xA.prototype._finish,xA.ArrayBuffer.hash=function(LA,SA){var OA=P(M(new Uint8Array(LA)));return SA?kA(OA):OA},xA}()}(Fu)),Fu.exports),CC=oI(Ou),q=new class{constructor(){this.uploadFileTryCount=0,this.maxRetries=1,this.systemClockOffset=0,this.httpRequest=null,this.uploadFileType="",this.duration=900,this.fetchCosTryCount=0}init(s){var n;this._core=s;const{IN_MINI_APP:g}=s.utils;this.httpRequest=g?QI:Lu,(n=this.httpRequest)===null||n===void 0||n.init(s)}uploadToCOS(s){return mA(this,void 0,void 0,function*(){const n=`${da} uploadToCOS`,{ssoLog:g,utils:{safeStringify:I}}=this._core,{file:E}=s;this.uploadFileType=s.uploadFileType,g.debug("uploadToCOS",`${n} options:${I(s)}`);try{const m=Date.now(),D=yield this._createCosOptions(s),M=D.fileExistsInCOS?{data:{location:D.downloadUrl}}:yield this._uploadFile(D);this._handleUploadError(M,s);const T=this._createUploadResult(E,M),P=Date.now()-m,W=function(EA){return EA<1024?`${EA}B`:EA<1048576?`${Math.floor(EA/1024)}KB`:`${Math.floor(EA/1048576)}MB`}(E.size),iA=`size:${W} time:${P}ms speed:${vr(1e3*E.size/P)}`;return g.debug("uploadToCOS",`${n} ok. name:${E.name} ${iA}`),{uploadOptions:D,response:T}}catch(m){throw g.warn("uploadToCOS",`${n} failed, error:${I(m)}`),m}})}_handleUploadError(s,n){var g,I;const{ChatError:E}=(g=this._core)===null||g===void 0?void 0:g.helper;if(s.statusCode===403)throw n.url,!((I=s?.data)===null||I===void 0)&&I.uploadIP&&s.data.uploadIP,new E({message:"Upload failed with status 403"})}_createUploadResult(s,n){return{fileName:s.name,fileSize:s.size,fileType:s.type.slice(s.type.indexOf("/")+1).toLowerCase(),location:n.data.location||"",uploadTime:br(Date.now(),!1),uploadSpeed:vr(1e3*s.size/br(Date.now(),!1))}}_createCosOptions(s){return mA(this,void 0,void 0,function*(){const{fileName:n,resources:g,uploadMethod:I}=yield this._prepareUploadParams(s),E=this._isC2CConversation(s.message.conversationID)?1:2;try{const m=yield this._fetchCosSignatureUrl({fileType:this.uploadFileType,fileName:n,uploadMethod:I,duration:this.duration,userID:s.message.from,conversationType:E}),{uploadUrl:D,downloadUrl:M,requestSnapshotUrl:T,thumbUrl:P,largeUrl:W,fileKey:iA,existFlag:EA}=m,RA=!Ut.isPrivateNetWork()&&m.uploadIP;return{url:this._getRawOrUploadProxyUrl(D),fileType:this.uploadFileType,fileName:n,resources:g,downloadUrl:M,requestSnapshotUrl:T,thumbUrl:P,largeUrl:W,fileKey:iA,uploadIP:RA||"",fileExistsInCOS:EA===1,onProgress:kA=>this._handleUploadProgress(kA,s)}}catch(m){throw console.error("Failed to create COS pre-signed URL options:",m),m}})}_prepareUploadParams(s){return mA(this,void 0,void 0,function*(){const{ssoLog:n,utils:{safeStringify:g,isEmpty:I}}=this._core;n.debug("_prepareUploadParams",` prepareUploadParams:${g(s)}`);const{file:E}=s,{IN_MINI_APP:m,IN_RN_APP:D}=Ut.getPlatformFlags(),M=m||D,T=M&&s.message.type!==xa,{name:P}=E,W=P.slice(P.lastIndexOf(".")),iA=`${Gr(999999)}${W}`,EA=T?E.name:iA,RA=yield this._generateHashFileName(E);return{fileName:I(RA)?Ig(EA):`${RA}${W}`,resources:M?E.url:E,uploadMethod:M?1:0}})}_generateHashFileName(s){return mA(this,void 0,void 0,function*(){const{utils:{IN_MINI_APP:n,IN_BROWSER:g,IN_UNI_NATIVE_APP:I,isArray:E},ssoLog:m}=this._core,D=Date.now();let M="";return g&&(M=yield this._generateHashFileNameInWeb(s)),n&&(E(s.tempFiles)&&(s=s.tempFiles[0]),I||(M=yield this._generateFileNameInMiniProgram(s)),I&&(M=yield this._generateFileNameInUNINativeApp(s))),m.info("_generateHashFileName",`hashFileName:${M} costTime:${Date.now()-D}`),M})}_generateHashFileNameInWeb(s){return mA(this,void 0,void 0,function*(){const{ssoLog:n,utils:{safeStringify:g}}=this._core;let I="";try{I=yield new Promise((E,m)=>{const D=File.prototype.slice||File.prototype.mozSlice||File.prototype.webkitSlice;D||(n.warn("_generateHashFileNameInWeb","Browser does not support file slicing"),E(""));const M=10485760,T=Math.ceil(s.size/M);let P=0;const W=new CC.ArrayBuffer,iA=new FileReader,EA=setTimeout(()=>{iA.abort(),n.warn("_generateHashFileNameInWeb","File hash generation timeout"),E("")},2e3);function RA(){const kA=P*M,xA=kA+M>=s.size?s.size:kA+M;iA.readAsArrayBuffer(D.call(s,kA,xA))}iA.onload=kA=>{n.debug("_generateHashFileNameInWeb",`read chunk nr ${P+1} of ${T}`),W.append(kA.target.result),P++,P{clearTimeout(EA),m(kA)},RA()})}catch(E){n.warn("_generateHashFileNameInWeb",g(E))}return I})}_generateFileNameInMiniProgram(s){return mA(this,void 0,void 0,function*(){const{utils:{MINI_APP_NAMESPACE:n,safeStringify:g,isEmpty:I},ssoLog:E}=this._core;let m="";if(I(s.url))return E.warn("_generateFileNameInMiniProgram","file.url is empty"),m;if(typeof n?.getFileSystemManager!="function")return E.warn("_generateFileNameInUNINativeApp","getFileSystemManager is not a function"),m;try{m=yield new Promise((D,M)=>{n.getFileSystemManager().getFileInfo({filePath:s.url,success:T=>{D(T.digest)},fail:T=>{M(T)}})})}catch(D){E.warn("_generateFileNameInMiniProgram",g(D))}return m})}_generateFileNameInUNINativeApp(s){return mA(this,void 0,void 0,function*(){var n;const{utils:{safeStringify:g,isEmpty:I},ssoLog:E}=this._core;let m="";if(I(s.url))return E.warn("_generateFileNameInUNINativeApp","file.url is empty"),m;if(typeof((n=plus==null?void 0:plus.io)===null||n===void 0?void 0:n.getFileInfo)!="function")return E.warn("_generateFileNameInUNINativeApp","plus.io.getFileInfo is not a function"),m;try{m=yield new Promise((D,M)=>{plus.io.getFileInfo({filePath:s.url,success:T=>{D(T.digest)},fail:T=>{M(T)}})})}catch(D){E.warn("_generateFileNameInMiniProgram",g(D))}return m})}_handleUploadProgress(s,n){if(typeof n.onProgress=="function")try{n.onProgress(s.percent)}catch(g){throw console.warn("Upload progress callback error:",g),g}}_fetchCosSignatureUrl(s){return mA(this,void 0,void 0,function*(){const{ssoLog:n,utils:{safeStringify:g}}=this._core,I=Ut.isSimpleCos(),E=this._prepareCosRequestData(s),m=I?"im_cos_msg.simple_sig":"im_cos_msg.pre_sig";try{const D=yield function(T,P,W){return mA(this,void 0,void 0,function*(){try{const{helper:iA,channel:EA}=W,RA=iA.generateCosSpecifiedData({servcmd:T,data:P}),kA=`${RA.head.seq}${T}`;return yield EA.sendPacket(RA,{requestId:kA})}catch(iA){throw console.warn("getCosSig error:",iA),iA}})}(m,E,this._core);this.fetchCosTryCount=0;const M=this._processResponse(D);return n.debug("_fetchCosSignatureUrl",` ok. isSimpleCos:${I} data:${g(M)}`),M||{}}catch(D){if(this.fetchCosTryCount<1)return this.fetchCosTryCount++,this._fetchCosSignatureUrl(s);throw this.fetchCosTryCount=0,D}})}_processResponse(s){var n;const g=Ut.isSimpleCos(),I=g?(n=s?.rpt_pre_sig)===null||n===void 0?void 0:n[0]:s;if(!I)return{};if(g){const{str_final_ip:W,rpt_pre_sig:iA,uint32_file_id:EA,uint32_exist_flag:RA,str_download_url:kA,str_upload_url:xA,str_snapshot_url:LA,str_file_key:SA}=I;return{uploadIP:W,preSig:iA,fileID:EA,existFlag:RA,downloadUrl:kA,uploadUrl:xA,requestSnapshotUrl:LA,fileKey:SA}}const{upload_url:E,download_url:m,snapshot_url:D,thumb_url:M,large_url:T,file_key:P}=I;return{uploadUrl:E,downloadUrl:m,requestSnapshotUrl:D,thumbUrl:M,largeUrl:T,fileKey:P}}_prepareCosRequestData(s){return Ut.isSimpleCos()?{uint32_upload_method:s.uploadMethod,uint32_platform:Ut.getPlatform(),uint32_sdkappid:Ut.getSDKAppID(),str_user_id:s.userID,uint32_scene:s.conversationType,rpt_upload_object:[{uint32_file_id:1,uint32_file_type:s.fileType,str_file_name:s.fileName}]}:{file_type:s.fileType,file_name:s.fileName,upload_method:s.uploadMethod,Duration:s.duration}}_uploadFile(s){return mA(this,void 0,void 0,function*(){return new Promise((n,g)=>{this.httpRequest.request(s,(I,E)=>{I&&this.uploadFileTryCount=3e4}_syncSystemClock(s){var n,g,I;const E=((n=s.headers)===null||n===void 0?void 0:n.date)||((g=s.headers)===null||g===void 0?void 0:g.Date)||((I=s.error)===null||I===void 0?void 0:I.ServerTime);if(E){const m=Date.now(),D=Date.parse(E);this.systemClockOffset=D-m}}_getRawOrUploadProxyUrl(s){const n=Ut.getFileUploadProxy();let g=s;return n&&(g=s.replace(/^https:\/\/[^/]+/,n)),g}_isC2CConversation(s){return s.slice(0,3)==="C2C"}};const L=2108,oA=2251,G=2252,x=2253,tA=["jpg","jpeg","gif","png","bmp","image","webp"],uA={JPG:1,JPEG:1,GIF:2,PNG:3,BMP:4,UNKNOWN:255},wA=1,Ae=2;class Qe{constructor(n,g){this.instanceID=Gr(9999999),this.sizeType=n.type||0,this.type=0,this.size=n.size||0,this.width=n.width||0,this.height=n.height||0,this.imageUrl=Ut.addAuthToUrl(n.imageUrl||n.url||""),this.url=Ut.addAuthToUrl(n.url||g)}setSizeType(n){this.sizeType=n}setType(n){this.type=n}setImageUrl(n){n&&(this.imageUrl=Ut.addAuthToUrl(n))}getImageUrl(){return this.imageUrl}}function p(s){const{originUrl:n,originWidth:g,originHeight:I,min:E=198}=s,m=parseInt(g)||0,D=parseInt(I)||0,M={url:void 0,width:0,height:0};if((m<=D?m:D)<=E)M.url=n,M.width=m,M.height=D;else{D<=m?(M.width=Math.ceil(m*E/D),M.height=E):(M.width=E,M.height=Math.ceil(D*E/m));const T=n&&n.indexOf("?")>-1?`${n}&`:`${n}?`;M.url=E===198?`${T}imageView2/3/w/198/h/198`:`${T}imageView2/3/w/720/h/720`}if(n===void 0){const{url:T}=M;return yo(M,["url"])}return M}class h{constructor(n){this._imageMemoryURL="",this._percent=0,this.type=ic;const{uuid:g,file:I,imageFormat:E,imageInfoArray:m=[],isCustomUpload:D=!1}=n;this._imageMemoryURL=this.createImageDataAsURL(I),this.content={imageFormat:E,uuid:g,imageInfoArray:[]},this[xr]=D,this.initImageInfoArray(m),this.autoFixUrl()}static parseServerPushElement(n){const{MsgContent:g}=n,{ImageFormat:I,ImageInfoArray:E,UUID:m}=g,D=function(M){return M.map(T=>({size:T.Size,type:T.Type,width:T.Width,height:T.Height,url:T.URL}))}(E);return new h({imageFormat:I,imageInfoArray:D,uuid:m})}createImageDataAsURL(n){let g="";const{IN_MINI_APP:I,IN_RN_APP:E,IN_BROWSER:m}=Ut.getPlatformFlags();return n&&((I||E)&&(g=n.url),m&&(g=window.URL.createObjectURL(n))),g}initImageInfoArray(n=[]){const g={type:0,size:0,width:0,height:0,url:""};for(let I=0;I<3;I++){const E=n[I]||Object.assign({},g),m=new Qe(E,this._imageMemoryURL);m.setSizeType(I+1),m.setType(I),this.addImageInfo(m)}this.updateAccessSideImageInfoArray()}autoFixUrl(){const n=["http","https"];this.content.imageInfoArray.forEach(g=>{if(!g.url||g.imageUrl==="")return;const[I,...E]=g.imageUrl.split("://"),m=E.join("://");n.includes(I)||g.setImageUrl(`https://${m}`)})}updatePercent(n){this._percent=Math.min(n,1)}updateImageFormat(n){this.content.imageFormat=uA[n.toUpperCase()]||uA.UNKNOWN}addImageInfo(n){this.content.imageInfoArray.length>=3||this.content.imageInfoArray.push(n)}updateImageInfoArray(n){const g=this.content.imageInfoArray.length;let I;for(let E=0;E({InstanceId:g.instanceID,Type:g.sizeType,MsgType:g.type,Size:g.size,Width:g.width,Height:g.height,URL:Ut.removeAuthToUrl(g.imageUrl)}))}}const v=new class{init(s){this.core=s}},N={[ZI]:"i",[gl]:"a",[Ca]:"v",[NE]:"f"};let O=null,z=null;function X(s){var n;const{store:g,utils:{isNumber:I,safeStringify:E},ssoLog:m}=v.core;try{const D=((n=g.get("cloudConfig"))===null||n===void 0?void 0:n.upload_size_limit)||"";D!==z&&(z=D,O=JSON.parse(D)||{});const M=O?.[N[s]];if(I(M))return 1024*M*1024}catch(D){m.debug("getCloudControlUploadSizeLimit",E(D))}return null}var nA=new class{constructor(){this._messageOptionsMap=new Map}init(s){var n;this._core=s;const{notificationCenter:g,helper:I,InnerEvent:E,message:m}=s;I.registerApi({apiName:"createImageMessage",context:this}),I.registerExperimentalAPI("createImageMessage",this,"createCustomUploadImageMessage"),(n=m?.messageFactory)===null||n===void 0||n.registerElementClass(ic,h),g.subscribeInnerEvent(E.DESTROY,this._dispose,this)}createImageMessage(s){var n,g,I;try{const E=(n=this._core.store.get("login"))===null||n===void 0?void 0:n.userId,m=(I=(g=this._core)===null||g===void 0?void 0:g.message.messageFactory)===null||I===void 0?void 0:I.createMessage(Object.assign(Object.assign({},s),{from:E})),D=this._processImage(s);s.payload.file=D;const M={imageFormat:uA.UNKNOWN,uuid:Ut.generateUUID(D),file:D,imageInfoArray:[]},T=new h(M);return m.setElement(T),this._messageOptionsMap.set(m.clientSequence,s),m}catch(E){throw E}}createCustomUploadImageMessage(s){var n,g,I,E;const{store:m,utils:{isEmpty:D}}=this._core,M=(n=m.get("login"))===null||n===void 0?void 0:n.userId,T=(I=(g=this._core)===null||g===void 0?void 0:g.message.messageFactory)===null||I===void 0?void 0:I.createMessage(Object.assign(Object.assign({},s),{from:M})),{largeImageUuid:P,largeFileSize:W,largeImageWidth:iA,largeImageHeight:EA,largeImageUrl:RA,originImageUuid:kA,originFileSize:xA,originImageWidth:LA,originImageHeight:SA,originImageUrl:OA,thumbImageUuid:JA,thumbFileSize:re,thumbImageWidth:ne,thumbImageHeight:_i,thumbImageUrl:Ti}=((E=s?.payload)===null||E===void 0?void 0:E.file)||{};if(D(OA)||D(kA))throw new Error("createImageMessageExperimental originImageUrl or originImageUuid is empty");const kt=new h({imageFormat:uA.UNKNOWN,uuid:kA,imageInfoArray:[{instanceID:kA,size:xA,width:LA,height:SA,imageUrl:OA,url:OA},{instanceID:P,size:W,width:iA,height:EA,imageUrl:RA,url:RA},{instanceID:JA,size:re,width:ne,height:_i,imageUrl:Ti,url:Ti}],isCustomUpload:!0});return T.setElement(kt),this._messageOptionsMap.set(T.clientSequence,s),T._skipUpload=!0,T}upload(s){return mA(this,void 0,void 0,function*(){const n=s.getElements()[0],{file:g}=this._messageOptionsMap.get(s.clientSequence).payload;this._validateBeforeUploadImage(g);const I=yield this._performImageUpload(n,s,g),E=this._generateImageInfo(I);return n.updateImageFormat(I?.fileType),n.updateImageInfoArray(E),this._updateImageType(n.content.imageInfoArray),s})}_performImageUpload(s,n,g){return mA(this,void 0,void 0,function*(){const{to:I}=n,E={uploadFileType:ZI,file:g,to:I,message:n,onProgress:M=>{var T,P;s.updatePercent(M),(P=(T=this._messageOptionsMap.get(n.clientSequence))===null||T===void 0?void 0:T.onProgress)===null||P===void 0||P.call(T,M)}},{uploadOptions:m,response:D}=yield q.uploadToCOS(E);return this._parseResponse(m,D)})}_generateImageInfo(s){const{location:n,fileSize:g,width:I,height:E,smallImageUrl:m,smallImageWidth:D,smallImageHeight:M,largeImageUrl:T,largeImageWidth:P,largeImageHeight:W,imageInfoArray:iA}=s,EA=Ut.addAuthToUrl(n),RA={size:g,url:EA,width:I,height:E};return iA?.length>0?this._processImageInfoArray(iA,g):m&&T?[Object.assign({},RA),{largeImageUrl:T,largeImageWidth:P,largeImageHeight:W},{smallImageUrl:m,smallImageWidth:D,smallImageHeight:M}]:[Object.assign({},RA),this._generateThumbInfo(EA,I,E,720),this._generateThumbInfo(EA,I,E,198)]}_generateThumbInfo(s,n,g,I){return p({originUrl:s,originWidth:n,originHeight:g,min:I})}_processImageInfoArray(s,n){let g,I,E;for(const m of s)m.type===1?(I=m,I.size=n):m.type===2?(E=m,E.size=n):(g=m,g.size=n);return[Object.assign({},g),Object.assign({},E),Object.assign({},I)]}_parseResponse(s,n){return mA(this,void 0,void 0,function*(){try{const{thumbUrl:g,largeUrl:I,downloadUrl:E}=s;if(g&&I&&(yield this._getImageInfoByUrl(g,n,"thumb"),yield this._getImageInfoByUrl(I,n,"large")),Ut.isSimpleCos()&&!Ut.isPrivateNetWork()&&(yield this._getImageInfoArray(E,n),n?.uploadIP)){const m=this._extractDomainFromUrl(E);m&&(yield this._getDownloadIP(m,n))}return n}catch(g){throw g}})}_extractDomainFromUrl(s){var n;try{const g=s.match(/:\/\/([^\/]+)/);return g?g[1]:null}catch(g){return(n=this._core)===null||n===void 0||n.ssoLog.warn("_extractDomainFromUrl",`Failed to extract domain from URL:${g.message}`),null}}_getImageInfoByUrl(s,n,g){return mA(this,void 0,void 0,function*(){var I;try{const E=Ut.addAuthToUrl(s),{width:m=0,height:D=0}=yield Ut.probeImageWidthHeight(E);n.width=m,n.height=D,g==="thumb"?(n.smallImageUrl=s,n.smallImageWidth=m,n.smallImageHeight=D):(n.largeImageUrl=s,n.largeImageWidth=m,n.largeImageHeight=D)}catch(E){(I=this._core)===null||I===void 0||I.ssoLog.warn("_getImageInfoByUrl",`Failed to get ${g} image info:${E.message}`)}})}_validateBeforeUploadImage(s){var n;const{ChatError:g}=(n=this._core)===null||n===void 0?void 0:n.helper;if(!s)throw new g({code:oA});this._checkImageType(s),this._checkImageSize(s)}_processImage(s){var n;try{const{IN_MINI_APP:g}=(n=this._core)===null||n===void 0?void 0:n.utils;let{file:I}=s.payload;return I=g?this._processMiniAppImageFile(I):this._processWebImageFile(I),I}catch(g){throw g}}_processMiniAppImageFile(s){al(s)&&console.warn("FileUnsupportedInMiniApp","createImageMessage");const n=s.tempFiles[0].path||s.tempFiles[0].tempFilePath;return{url:n,name:n.slice(n.lastIndexOf("/")+1),size:s.tempFiles&&s.tempFiles[0].size||1,type:n.slice(n.lastIndexOf(".")+1).toLowerCase()}}_processWebImageFile(s){var n;const{ChatError:g}=(n=this._core)===null||n===void 0?void 0:n.helper,I=Ut.extractFileFromInput(s);if(!I)throw new g({message:"Invalid file. Pass either `e.target` (from file input) or a File object"});return I}_getDownloadIP(s,n){return mA(this,void 0,void 0,function*(){const g=`${da} getDownloadIP domainName: ${s}`;try{const I=yield function(m,D){return mA(this,void 0,void 0,function*(){try{const{helper:M,channel:T}=D,P="im_cos_msg.get_final_ip",W={str_domain:m},iA=M.generateProtocolData({servcmd:P,data:W}),EA=`${iA.head.seq}${P}`;return yield T.sendPacket(iA,{requestId:EA})}catch(M){throw console.warn("getFinalIP error:",M),M}})}(s,this._core);if(!I||!I.str_final_ip)return;console.log(`${g} ok. downloadIP:${I}`);const E=n.location.split("/");E[0]=I.str_final_ip,n.location=E.join("/")}catch(I){console.warn(I)}})}_getImageInfoArray(s,n){return mA(this,void 0,void 0,function*(){try{const g=yield function(I,E){return mA(this,void 0,void 0,function*(){try{const{helper:m,channel:D}=E,M="im_cos_msg.get_imageinfo",T={str_image_url:I},P=m.generateProtocolData({servcmd:M,data:T}),W=`${P.head.seq}${M}`;return yield D.sendPacket(P,{requestId:W})}catch(m){throw console.warn("getImageInfo error:",m),m}})}(s,this._core);return n.imageInfoArray=this._processImageInfoResponse(g),n}catch(g){throw n.imageInfoArray=void 0,g}})}_processImageInfoResponse(s){if(!s)return[];const{rpt_msg_image_info:n}=s;return n.map(g=>({type:g.uint32_image_type,url:g.str_url,width:g.uint32_width,height:g.uint32_height,imageFormat:g.str_image_format}))}_checkImageType(s){const{utils:n,helper:g}=this._core;let I="";if(n.IN_MINI_APP&&(I=s.url.slice(s.url.lastIndexOf(".")+1)),n.IN_BROWSER&&(I=s.name.slice(s.name.lastIndexOf(".")+1)),tA.indexOf(I.toLowerCase())<0)throw new g.ChatError({code:G})}_checkImageSize(s){const{utils:n,helper:g,store:I}=this._core;let E=0;if(E=(n.IN_MINI_APP,s.size),E===0)throw new g.ChatError({code:L});if(E>=(X(ZI)||20971520))throw new g.ChatError({code:x})}_updateImageType(s){s[1].type=Ae,s[2].type=wA}_reset(){this._messageOptionsMap.clear()}_dispose(){this._reset();const{notificationCenter:s,InnerEvent:n}=this._core;s.unSubscribeInnerEvent(n.DESTROY,this._dispose,this)}};const DA=2108,GA=2401,VA=2402,ie="2.5.0",Ee="1.18.0";function He(s,n){const g=s.split("."),I=n.split("."),E=Math.max(g.length,I.length);for(;g.lengthM)return 1;if(D0;return{isValid:n,error:n?null:{message:"content can not be empty"}}}transformToServerFormat(n){const{isMergerMessage:g=!1}=n||{},I=g?this.payload:this.content,{uuid:E,downloadFlag:m,fileUrl:D,fileName:M,fileSize:T}=I;return{MsgType:this.type,MsgContent:{Download_Flag:m,Url:Ut.removeAuthToUrl(D),FileName:M,FileSize:T,UUID:E}}}_getFileInfo(n){const{utils:{IN_UNI_NATIVE_APP:g}}=v.core;if(n.fileName&&n.fileSize)return{size:n.fileSize,name:n.fileName};const{file:I}=n;return I?(g&&this._processNativeAppFile(I),{size:I.size,name:I.name}):{size:0,name:""}}_processNativeAppFile(n){if(n.path&&n.path.includes(".")){const g=n.path.slice(n.path.lastIndexOf(".")+1).toLowerCase();n.type=g,n.name||(n.name=`${Gr(999999)}.${g}`)}n.name||(n.type="",n.name=n.path.slice(n.path.lastIndexOf("/")+1).toLowerCase()),n.suffix&&(n.type=n.suffix),n.url||(n.url=n.path)}}At=xr;var bt=new class{constructor(){this._messageOptionsMap=new Map}init(s){var n;this._core=s;const{notificationCenter:g,helper:I,InnerEvent:E,message:m}=s;I.registerApi({apiName:"createFileMessage",context:this}),I.registerExperimentalAPI("createFileMessage",this,"createCustomUploadFileMessage"),(n=m?.messageFactory)===null||n===void 0||n.registerElementClass(xa,st),g.subscribeInnerEvent(E.DESTROY,this._dispose,this)}createFileMessage(s){var n,g,I;try{this._checkVersion();const E=this._processFile(s.payload.file);s.payload.file=E;const m=(n=this._core.store.get("login"))===null||n===void 0?void 0:n.userId,D=(I=(g=this._core)===null||g===void 0?void 0:g.message.messageFactory)===null||I===void 0?void 0:I.createMessage(Object.assign(Object.assign({},s),{from:m})),M={uuid:Ut.generateUUID(E),file:E},T=new st(M);return D.setElement(T),this._messageOptionsMap.set(D.clientSequence,s),D}catch(E){throw E}}createCustomUploadFileMessage(s){var n,g,I;try{const{store:E,message:m,utils:{isEmpty:D}}=this._core,M=(n=E.get("login"))===null||n===void 0?void 0:n.userId,{url:T,uuid:P,fileSize:W,fileName:iA=""}=((g=s?.payload)===null||g===void 0?void 0:g.file)||{};if(D(T))throw new Error("url is required");const EA=(I=m.messageFactory)===null||I===void 0?void 0:I.createMessage(Object.assign(Object.assign({},s),{from:M})),RA=new st({url:T,uuid:P,file:{size:W,name:iA},isCustomUpload:!0});return EA.setElement(RA),EA}catch(E){throw E}}upload(s){return mA(this,void 0,void 0,function*(){const{file:n}=this._messageOptionsMap.get(s.clientSequence).payload;this._validateBeforeUploadFile(n);const g=s.getElements()[0],I=yield this._performFileUpload(g,s,n),E=Ut.addAuthToUrl(I?.location);return g.updateFileUrl(E),s})}_validateBeforeUploadFile(s){const{helper:{ChatError:n}}=this._core;if(!s)throw new n({code:GA});const g=X(NE)||104857600;if(s.size>g)throw new n({code:VA});if(s.size===0)throw new n({code:DA})}_performFileUpload(s,n,g){return mA(this,void 0,void 0,function*(){const{to:I}=n,E={uploadFileType:NE,file:g,to:I,message:n,onProgress:D=>{var M,T;s.updatePercent(D),(T=(M=this._messageOptionsMap.get(n.clientSequence))===null||M===void 0?void 0:M.onProgress)===null||T===void 0||T.call(M,D)}},{response:m}=yield q.uploadToCOS(E);return m})}_processFile(s){var n,g;const{IN_BROWSER:I,IN_RN_APP:E,IN_WX_MINI_APP:m,IN_QQ_MINI_APP:D,IN_UNI_NATIVE_APP:M}=(n=this._core)===null||n===void 0?void 0:n.utils,{ChatError:T}=(g=this._core)===null||g===void 0?void 0:g.helper;if(I||M){const P=Ut.extractFileFromInput(s);if(!P)throw new T({message:"Invalid file. Pass either `e.target` (from file input) or a File object"});return P}if(m||D){const{tempFiles:P}=s;return Object.assign(Object.assign({},P[0]),{url:P[0].path})}return E?Object.assign(Object.assign({},s),{url:s.uri}):s}_checkVersion(){var s,n;const{MINI_APP_NAMESPACE:g,IN_MINI_APP:I,IN_WX_MINI_APP:E,IN_QQ_MINI_APP:m,IN_UNI_NATIVE_APP:D}=(s=this._core)===null||s===void 0?void 0:s.utils,{ChatError:M}=(n=this._core)===null||n===void 0?void 0:n.helper;if(I){if(!(E||m||D))throw new M({message:"Unsupported mini app environment"});const T=g.getSystemInfoSync().SDKVersion;if(E&&He(T,ie)<0)throw new M({message:`WXChooseMessageFile requires SDK version ${ie} or higher`});if(m&&He(T,Ee)<0)throw new M({message:`QQChooseMessageFile requires SDK version ${Ee} or higher`})}}_reset(){this._messageOptionsMap.clear()}_dispose(){this._reset();const{notificationCenter:s,InnerEvent:n}=this._core;s.unSubscribeInnerEvent(n.DESTROY,this._dispose,this)}};const xt=2108,Ui=2351,ao=2352,zi=["mp4","quicktime","mov","video"];var ui;class Oo{constructor(n){this.type=Ll,this.uploadProgress=0,this[ui]=!1;const g=typeof n?.videoSecond=="number"?n?.videoSecond:0;this[xr]=n.isCustomUpload||!1,this.content={remoteVideoUrl:Ut.addAuthToUrl(n.remoteVideoUrl||n.videoUrl||""),videoFormat:n.videoFormat,videoSecond:parseInt(g?.toString(),10),videoSize:n.videoSize,videoUrl:Ut.addAuthToUrl(n.videoUrl),videoDownloadFlag:2,videoUUID:n.videoUUID,thumbUUID:n.thumbUUID,thumbFormat:n.thumbFormat,thumbWidth:n.thumbWidth,snapshotWidth:n.thumbWidth,thumbHeight:n.thumbHeight,snapshotHeight:n.thumbHeight,thumbSize:n.thumbSize,snapshotSize:n.thumbSize,thumbDownloadFlag:2,thumbUrl:Ut.addAuthToUrl(n.thumbUrl),snapshotUrl:Ut.addAuthToUrl(n.thumbUrl)}}static parseServerPushElement(n){const{MsgContent:g}=n,{VideoUrl:I,VideoFormat:E,VideoSecond:m,VideoSize:D,VideoDownloadFlag:M,VideoUUID:T,ThumbUUID:P,ThumbFormat:W,ThumbWidth:iA,SnapshotWidth:EA,ThumbHeight:RA,SnapshotHeight:kA,ThumbSize:xA,SnapshotSize:LA,ThumbDownloadFlag:SA,ThumbUrl:OA,SnapshotUrl:JA}=g;return new Oo({videoUrl:I,videoFormat:E,videoSecond:m,videoSize:D,videoDownloadFlag:M,videoUUID:T,thumbUUID:P,thumbFormat:W,thumbWidth:iA,snapshotWidth:EA,thumbHeight:RA,snapshotHeight:kA,thumbSize:xA,snapshotSize:LA,thumbDownloadFlag:SA,thumbUrl:OA,snapshotUrl:JA})}updatePercent(n){this.uploadProgress=Math.min(n,1)}updateVideoUrl(n){n&&(this.content.remoteVideoUrl=n)}updateSnapshotInfo(n){const{snapshotUrl:g,snapshotWidth:I,snapshotHeight:E}=n;Ut.isEmpty(g)||(this.content.thumbUrl=this.content.snapshotUrl=g),Ut.isEmpty(I)||(this.content.thumbWidth=this.content.snapshotWidth=Number(I)),Ut.isEmpty(E)||(this.content.thumbHeight=this.content.snapshotHeight=Number(E))}validateBeforeSend(){if(this[xr])return{isValid:!0};const n=this.content.remoteVideoUrl!=="";return{isValid:n,error:n?null:{message:"content can not be empty"}}}transformToServerFormat(n){const{isMergerMessage:g=!1}=n||{},I=g?this.payload:this.content,{remoteVideoUrl:E,videoFormat:m,videoSecond:D,videoSize:M,videoDownloadFlag:T,videoUUID:P,thumbUUID:W,thumbFormat:iA,thumbWidth:EA,snapshotWidth:RA,thumbHeight:kA,snapshotHeight:xA,thumbSize:LA,snapshotSize:SA,thumbDownloadFlag:OA,thumbUrl:JA,snapshotUrl:re}=I;return{MsgType:this.type,MsgContent:{VideoUrl:Ut.removeAuthToUrl(E),VideoFormat:m,VideoSecond:D,VideoSize:M,VideoDownloadFlag:T,VideoUUID:P,ThumbUUID:W,ThumbFormat:iA,ThumbWidth:EA,SnapshotWidth:RA,ThumbHeight:kA,SnapshotHeight:xA,ThumbSize:LA,SnapshotSize:SA,ThumbDownloadFlag:OA,ThumbUrl:Ut.removeAuthToUrl(JA),SnapshotUrl:Ut.removeAuthToUrl(re)}}}}ui=xr;var $o,Qi=new class{constructor(){this._messageOptionsMap=new Map}init(s){var n;this._core=s;const{notificationCenter:g,helper:I,InnerEvent:E,message:m}=s;I.registerApi({apiName:"createVideoMessage",context:this}),I.registerExperimentalAPI("createVideoMessage",this,"createCustomUploadVideoMessage"),(n=m?.messageFactory)===null||n===void 0||n.registerElementClass(Ll,Oo),g.subscribeInnerEvent(E.DESTROY,this._dispose,this)}createVideoMessage(s){var n,g,I;try{const E=this._processVideo(s);s.payload.file=E;const m=(n=this._core.store.get("login"))===null||n===void 0?void 0:n.userId,D=(I=(g=this._core)===null||g===void 0?void 0:g.message.messageFactory)===null||I===void 0?void 0:I.createMessage(Object.assign(Object.assign({},s),{from:m})),M={videoFormat:E.videoFile.type,videoSecond:rr(E.videoFile.second,0),videoSize:E.videoFile.size,remoteVideoUrl:"",videoUrl:E.videoFile.url,videoUUID:Ut.generateUUID(E.videoFile),thumbUUID:Ut.generateUUID(E.videoFile,"jpg"),thumbWidth:E.width||200,thumbHeight:E.height||200,thumbUrl:E.thumbUrl,thumbSize:E.thumbSize,thumbFormat:"jpg"},T=new Oo(M);return D.setElement(T),this._messageOptionsMap.set(D.clientSequence,s),D}catch(E){throw E}}createCustomUploadVideoMessage(s){var n,g,I;try{const{store:E,message:m}=this._core;this._validateCustomUploadVideoMessage(s);const D=(n=E.get("login"))===null||n===void 0?void 0:n.userId,{videoUrl:M,videoUuid:T,duration:P,snapshotUrl:W,snapshotUuid:iA,videoFileSize:EA,videoType:RA,snapshotWidth:kA,snapshotHeight:xA,snapshotFileSize:LA,snapshotType:SA="jpg"}=((g=s?.payload)===null||g===void 0?void 0:g.file)||{},OA=(I=m.messageFactory)===null||I===void 0?void 0:I.createMessage(Object.assign(Object.assign({},s),{from:D})),JA=new Oo({videoFormat:RA,videoSecond:P||0,videoSize:EA,remoteVideoUrl:M,videoUrl:M,videoUUID:T,thumbUUID:iA,thumbWidth:kA||200,thumbHeight:xA||200,thumbUrl:W,thumbSize:LA,thumbFormat:SA,isCustomUpload:!0});return OA.setElement(JA),this._messageOptionsMap.set(OA.clientSequence,s),OA}catch(E){throw E}}upload(s){return mA(this,void 0,void 0,function*(){const n=s.getElements()[0],{file:g}=this._messageOptionsMap.get(s.clientSequence).payload;this._validateBeforeUploadVideo(g);const I=yield this._performVideoUpload(n,s,g),{location:E,snapshotInfo:m}=I,D=Ut.addAuthToUrl(E);return n.updateVideoUrl(D),Ut.isEmpty(m)||n.updateSnapshotInfo(m),s})}_validateBeforeUploadVideo(s){const{helper:{ChatError:n}}=this._core,g=X(Ca)||104857600;if(s.videoFile.size>g)throw new n({code:Ui});if(s.videoFile.size===0)throw new n({code:xt});if(zi.indexOf(s.videoFile.type)===-1)throw new n({code:ao})}_validateCustomUploadVideoMessage(s){var n;const{utils:{isEmpty:g,isNumber:I}}=this._core,{videoUrl:E,videoUuid:m,duration:D,snapshotUrl:M,snapshotUuid:T}=((n=s?.payload)===null||n===void 0?void 0:n.file)||{};if(g(E)||g(m)||!I(D)||g(M)||g(T))throw new Error("Invalid video message options: missing required fields (videoUrl, videoUuid, duration, snapshotUrl, snapshotUuid)")}_performVideoUpload(s,n,g){return mA(this,void 0,void 0,function*(){const{to:I}=n,E={uploadFileType:Ca,file:g,to:I,message:n,onProgress:M=>{var T,P;s.updatePercent(M),(P=(T=this._messageOptionsMap.get(n.clientSequence))===null||T===void 0?void 0:T.onProgress)===null||P===void 0||P.call(T,M)}},{response:m,uploadOptions:D}=yield q.uploadToCOS(E);return{snapshotInfo:yield this._getSnapshotInfoByUrl(D.requestSnapshotUrl),location:m.location}})}_processVideo(s){var n,g;try{const{ChatError:I}=(n=this._core)===null||n===void 0?void 0:n.helper,{IN_MINI_APP:E,IN_BROWSER:m}=(g=this._core)===null||g===void 0?void 0:g.utils;let{file:D}=s.payload,M={};if(E&&(M=this._processMiniVideoFile(D),D.name=M.name,D.url=M.url,D.type=M.type),m){const T=Ut.extractFileFromInput(D);if(!T)throw new I({message:"Invalid file. Pass either `e.target` (from file input) or a File object"});D=T,M=this._processWebVideoFile(D)}return D.videoFile=M,D.thumbUrl="",D.thumbSize=0,D}catch(I){throw console.warn(`${da} _processFile error:`,I),I}}_processMiniVideoFile(s){const{utils:{IN_UNI_NATIVE_APP:n},helper:{ChatError:g}}=this._core;if(al(s))throw new g({message:"FileUnsupportedInMiniApp"});Array.isArray(s.tempFiles)&&(s=s.tempFiles[0]);let I=s.tempFilePath.slice(s.tempFilePath.lastIndexOf(".")+1).toLowerCase();return n&&(I=s.fileType||I),{url:s.tempFilePath,name:s.tempFilePath.slice(s.tempFilePath.lastIndexOf("/")+1),size:s.size||1,second:s.duration||0,type:I}}_processWebVideoFile(s){const{name:n,size:g=1,duration:I=0,type:E}=s,m=E.split("/")[1];return{url:window.URL.createObjectURL(s),name:n,size:g,second:I,type:m}}_getSnapshotInfoByUrl(s){return mA(this,void 0,void 0,function*(){const{ssoLog:n}=this._core;try{n.debug("_getSnapshotInfoByUrl",`${da} _getSnapshotInfoByUrl url:${s}`);const g={version:1,platform:Ut.getPlatform(),cover_name:Ig(Gr(99999)),snapshot_url:s},I=yield function(T,P){return mA(this,void 0,void 0,function*(){try{const W="im_cos_msg.video_cover",{helper:iA,channel:EA}=P,RA=iA.generateCosSpecifiedData({servcmd:W,data:T}),kA=`${RA.head.seq}${W}`;return yield EA.sendPacket(RA,{requestId:kA})}catch(W){throw console.warn("getSnapshotInfo error:",W),W}})}(g,this._core),{download_url:E}=I||{};if(n.debug("_getSnapshotInfoByUrl",`${da} _getSnapshotInfoByUrl OK snapshotUrl:${E}`),Ut.isEmpty(E))return{};const m=Ut.addAuthToUrl(E),{width:D=0,height:M=0}=yield Ut.probeImageWidthHeight(m);return{snapshotUrl:m,snapshotWidth:D,snapshotHeight:M}}catch(g){throw g}})}_reset(){this._messageOptionsMap.clear()}_dispose(){this._reset();const{notificationCenter:s,InnerEvent:n}=this._core;s.unSubscribeInnerEvent(n.DESTROY,this._dispose,this)}};class Ki{constructor(n){this.uploadProgress=0,this.type=Fg,this[$o]=!1,this[xr]=n.isCustomUpload||!1,this.content={downloadFlag:2,second:n.second,size:n.size,url:Ut.generateURL(n.url,{needAddAuthToUrl:!this[xr]}),remoteAudioUrl:Ut.addAuthToUrl(n.url||""),uuid:n.uuid}}static parseServerPushElement(n){const{MsgContent:g}=n,{Url:I,Download_Flag:E,Second:m,Size:D,UUID:M}=g;return new Ki({url:I,downloadFlag:E,second:m,size:D,uuid:M})}updatePercent(n){this.uploadProgress=Math.min(n,1)}updateAudioUrl(n){this.content.remoteAudioUrl=n}validateBeforeSend(){if(this[xr])return{isValid:!0};const n=this.content.remoteAudioUrl!=="";return{isValid:n,error:n?null:{message:"content can not be empty"}}}transformToServerFormat(n){const{isMergerMessage:g=!1}=n||{},I=g?this.payload:this.content,{uuid:E,downloadFlag:m,remoteAudioUrl:D,size:M,second:T}=I;return{MsgType:this.type,MsgContent:{Url:Ut.removeAuthToUrl(D),Download_Flag:m,Second:T,Size:M,UUID:E}}}}$o=xr;const Ws=2108,_e=2300,vt=2301;var FA=new class{constructor(){this._messageOptionsMap=new Map}init(s){var n;this._core=s;const{notificationCenter:g,helper:I,InnerEvent:E,message:m}=s;I.registerApi({apiName:"createAudioMessage",context:this}),I.registerExperimentalAPI("createAudioMessage",this,"createCustomUploadAudioMessage"),(n=m?.messageFactory)===null||n===void 0||n.registerElementClass(Fg,Ki),g.subscribeInnerEvent(E.DESTROY,this._dispose,this)}createAudioMessage(s){var n,g,I;try{let{file:E}=s.payload;E=this._processAudioFile(s.payload.file),s.payload.file=E;const m=(n=this._core.store.get("login"))===null||n===void 0?void 0:n.userId,D=(I=(g=this._core)===null||g===void 0?void 0:g.message.messageFactory)===null||I===void 0?void 0:I.createMessage(Object.assign(Object.assign({},s),{from:m})),M={second:Math.max(1,Math.round((E.duration||E.second)/1e3)),size:E.fileSize||E.size||1,url:E.tempFilePath||E.uri||E.url,uuid:Ut.generateUUID(E)},T=new Ki(M);return D.setElement(T),this._messageOptionsMap.set(D.clientSequence,s),D}catch(E){throw E}}createCustomUploadAudioMessage(s){var n,g,I;try{this._validateCustomUploadOptions(s);const{store:E,message:m}=this._core,D=(n=E.get("login"))===null||n===void 0?void 0:n.userId,{url:M,uuid:T,duration:P,fileSize:W}=((g=s?.payload)===null||g===void 0?void 0:g.file)||{},iA=(I=m.messageFactory)===null||I===void 0?void 0:I.createMessage(Object.assign(Object.assign({},s),{from:D})),EA=new Ki({second:P,size:W||1,url:M,uuid:T,isCustomUpload:!0});return iA.setElement(EA),this._messageOptionsMap.set(iA.clientSequence,s),iA}catch(E){throw E}}upload(s){return mA(this,void 0,void 0,function*(){const{ssoLog:n,utils:{safeStringify:g}}=this._core;n.debug("upload",`${da} uploadAudio message:${g(s)}`);const{file:I}=this._messageOptionsMap.get(s.clientSequence).payload;this._validateBeforeUploadAudio(I);const E=s.getElements()[0],m=yield this._performAudioUpload(E,s,I),D=Ut.addAuthToUrl(m?.location);return E.updateAudioUrl(D),s})}_validateBeforeUploadAudio(s){const{helper:{ChatError:n},store:g}=this._core;if(!s)throw new n({code:_e});const I=X(gl)||20971520;if(s.size>I)throw new n({code:vt});if(s.size===0)throw new n({code:Ws})}_performAudioUpload(s,n,g){return mA(this,void 0,void 0,function*(){const{to:I}=n,E={uploadFileType:gl,file:g,to:I,message:n,onProgress:D=>{var M,T;s.updatePercent(D),(T=(M=this._messageOptionsMap.get(n.clientSequence))===null||M===void 0?void 0:M.onProgress)===null||T===void 0||T.call(M,D)}},{response:m}=yield q.uploadToCOS(E);return m})}_processAudioFile(s){var n;const{IN_MINI_APP:g,IN_BROWSER:I}=(n=this._core)===null||n===void 0?void 0:n.utils;return g?this._processMiniFile(s):I?this._processWebFile(s):void 0}_processMiniFile(s){return{url:s.tempFilePath,name:s.tempFilePath.slice(s.tempFilePath.lastIndexOf("/")+1),size:s.fileSize,second:s.duration,type:s.tempFilePath.slice(s.tempFilePath.lastIndexOf(".")+1).toLowerCase()}}_processWebFile(s){if(s.tempFilePath||s.uri)return s;const n=URL.createObjectURL(s);return s.tempFilePath=n,s}_validateCustomUploadOptions(s){var n;const{utils:{isEmpty:g}}=this._core,{url:I,uuid:E,duration:m}=((n=s?.payload)===null||n===void 0?void 0:n.file)||{};if(g(I)||g(E)||g(m))throw new Error("Invalid audio message options")}_reset(){this._messageOptionsMap.clear()}_dispose(){this._reset();const{notificationCenter:s,InnerEvent:n}=this._core;s.unSubscribeInnerEvent(n.DESTROY,this._dispose,this)}};const Wt={to:{required:!0,rules:["string"],allowEmpty:!1},conversationType:{required:!0,rules:["string"],allowEmpty:!1},payload:{required:!0,rules:["object"],allowEmpty:!1},cloudCustomData:{required:!1,rules:["string"],allowEmpty:!1},priority:{required:!1,rules:["string"],allowEmpty:!1},customModerationConfigurationID:{required:!1,rules:["string"],allowEmpty:!1},onProgress:{required:!1,rules:["function"],allowEmpty:!1}},En={createImageMessage:Wt,createAudioMessage:Wt,createVideoMessage:Wt,createFileMessage:Wt},Zt={createImageMessage:!0,createAudioMessage:!0,createVideoMessage:!0,createFileMessage:!0},us={[ic]:nA,[xa]:bt,[Ll]:Qi,[Fg]:FA};var vi=new class{constructor(){this.name="RichMediaMessage"}install(s){this._core=s;const{constants:{OuterConstant:{MSG_AUDIO:n,MSG_FILE:g,MSG_IMAGE:I,MSG_VIDEO:E}}}=s;v.init(s),nA.init(s),bt.init(s),Qi.init(s),FA.init(s),q.init(s),Ut.init(s),s.helper.registerApi({apiName:"sendMessage",context:this,matcher:m=>[n,g,I,E].includes(m[0].type)}),s.helper.registerValidateConfig({auth:Zt,params:En})}sendMessage(s,n){return mA(this,void 0,void 0,function*(){var g,I,E;try{return this._isCustomUpload(s)||(yield this._upload(s)),yield(E=(I=(g=this._core)===null||g===void 0?void 0:g.message)===null||I===void 0?void 0:I.messageSender)===null||E===void 0?void 0:E.sendMessage(s,n)}catch(m){throw m}})}_upload(s){return mA(this,void 0,void 0,function*(){const{ssoLog:n,utils:{safeStringify:g}}=this._core;if(n.debug("_upload",` uploadFile message:${g(s)}`),s._relayFlag!==!0)try{const I=us[s.type];I&&(yield I.upload(s),n.info("_upload",` type:${s.type}`))}catch(I){throw s.status=XI.FAIL,I instanceof Error&&(I.data={message:s}),this._core.message.messageDataHandler.storeConversationMessage(s),I}})}_isCustomUpload(s){var n,g;return((g=(n=s._elements)===null||n===void 0?void 0:n[0])===null||g===void 0?void 0:g[xr])===!0}};const Co=new class{init(s){this.core=s}};class Et{constructor(n){this.conversationID=n.conversationID||"",this.unreadCount=n.unreadCount||0,this.type=n.type||"",this.lastMessage=Co.core.common.buildLastMessage(n.lastMessage),this.peerReadTime=n.peerReadTime||0,this.groupAtInfoList=[],this.remark=n.remark||"",this.isPinned=n.isPinned||!1,this.messageRemindType=n.messageRemindType,this.markList=n.markList||[],this.customData=n.customData||"",this.conversationGroupList=n.conversationGroupList||[],this.draftText=n.draftText||"",this.userProfile=n.userProfile,this.groupProfile=n.groupProfile,this.subType=n.subType||"",this._isInfoCompleted=!1,this._init()}_init(){var n;const{core:{OuterConstant:g,utils:{isUndefined:I}}}=Co;I(this.userProfile)&&this.type===g.CONV_C2C?this.userProfile={userID:this.conversationID.replace(g.CONV_C2C,"")}:this.type===g.CONV_GROUP&&(!this.subType&&(!((n=this.groupProfile)===null||n===void 0)&&n.type)&&(this.subType=this.groupProfile.type),I(this.groupProfile)&&(this.groupProfile={groupID:this.conversationID.replace(g.CONV_GROUP,""),selfInfo:{},lastMessage:{},type:this.subType}))}updateUnreadCount(n){var g;const{core:{OuterConstant:I,utils:{isUndefined:E},store:m}}=Co,{nextUnreadCount:D,isFromGetConversations:M,isUnreadC2CMessage:T}=n;if(E(D))return;if(this.subType===I.GRP_AVCHATROOM)return void(this.unreadCount=0);if(M&&this.type===I.CONV_GROUP)return void(this.unreadCount=D);if(T&&this.type===I.CONV_C2C)return void(this.unreadCount=D);const P=((g=m.get("cloudConfig"))===null||g===void 0?void 0:g.support_unread_count_for_meeting)==="1";this.subType!==I.GRP_MEETING||P?this.unreadCount+=D:this.unreadCount=0}updateLastMessage(n){this.lastMessage=Co.core.common.buildLastMessage(n)}reduceUnreadCount(){return this.unreadCount>=1&&(this.unreadCount-=1,!0)}isLastMessageRevoked(n){const{core:{OuterConstant:g}}=Co,{sequence:I,time:E}=n;return this.type===g.CONV_C2C&&I===this.lastMessage.lastSequence&&E===this.lastMessage.lastTime||this.type===g.CONV_GROUP&&I===this.lastMessage.lastSequence}setLastMessageRevoked(n){this.lastMessage.isRevoked=n}setLastMessageRevoker(n){this.lastMessage.revoker=n}setDraftText(n){this.draftText=n}updateGroupAtInfoList(n){const{core:{common:{updateGroupAtInfo:g}}}=Co;g(n,this.groupAtInfoList)}clearGroupAtInfoList(){this.groupAtInfoList.length=0}getProfileCompleted(){return this._isInfoCompleted}setProfileCompleted(){this._isInfoCompleted=!0}}const Ct=s=>{const{core:{OuterConstant:n,utils:{isString:g}}}=Co;return g(s)&&s.slice(0,3)===n.CONV_C2C},ug=s=>{const{core:{OuterConstant:n,utils:{isString:g}}}=Co;return g(s)&&s.slice(0,5)===n.CONV_GROUP},ks=s=>{const{core:{OuterConstant:n,utils:{isString:g}}}=Co;return g(s)&&s===n.CONV_SYSTEM};function ji(s){const{OuterConstant:n}=Co.core;let g="";return s===0?g=n.MSG_REMIND_ACPT_AND_NOTE:s===1?g=n.MSG_REMIND_DISCARD:s===2?g=n.MSG_REMIND_ACPT_NOT_NOTE:s===3&&(g=n.NOT_RECEIVE_OFFLINE_PUSH_EXCEPT_AT),g}function Yr(s){const{OuterConstant:n}=Co.core;let g;return s.startsWith(n.CONV_C2C)&&(g=s.replace(n.CONV_C2C,"")),g==="@TLS#ERROR"||g==="@TLS#NOT_FOUND"}function oc(s,n){const{helper:g}=Co.core,I=new g.ChatError({functionName:s,code:n?.errorCode||n?.code,message:n?.errorInfo||n?.message});throw console.error(`${s} fail:`,I),I}var ts,aa;(function(s){s[s.OFF=0]="OFF",s[s.ON=1]="ON"})(ts||(ts={})),function(s){s[s.ONLY_CONVERSATIONID=1]="ONLY_CONVERSATIONID"}(aa||(aa={}));var ha;(function(s){s[s.CONV_NOT_FOUND=2500]="CONV_NOT_FOUND",s[s.USER_OR_GRP_NOT_FOUND=2501]="USER_OR_GRP_NOT_FOUND",s[s.CONV_UN_RECORDED_TYPE=2502]="CONV_UN_RECORDED_TYPE"})(ha||(ha={}));const $r=0,H=1;var BA=new class{constructor(){this._name="GetC2CMessageRemindType"}init(s){this._core=s}get(s){return mA(this,void 0,void 0,function*(){try{const{common:n}=this._core,g=yield function(E,m){return mA(this,void 0,void 0,function*(){const{toAccount:D,userIDList:M}=E,T={To_Account:D,Peer_Account:M};return m.common.buildAndSendPacket({servcmd:"openim.get_c2c_peer_mute_notifications",data:T})})}({toAccount:n.getCurrentUserID(),userIDList:s},this._core),{MuteNotificationsList:I=[]}=g||{};I.forEach(E=>{const{Peer_Account:m,MuteNotifications:D}=E,M=`${this._core.OuterConstant.CONV_C2C}${m}`,T=ji(D);NA.patchMessageRemindType([M],T)})}catch(n){console.error(`${this._name}.get fail:`,n)}})}},yA=new class{constructor(){this._name="GetGroupMessageRemindType"}init(s){this._core=s}get(s){return mA(this,void 0,void 0,function*(){if(s.length!==0)try{const n=yield function(I,E){return mA(this,void 0,void 0,function*(){const{groupIDList:m,responseFilter:D}=I,M={GroupIdList:m,ResponseFilter:D};return E.common.buildAndSendPacket({servcmd:"group_open_http_svc.get_group_self_member_info",data:M})})}({groupIDList:s,responseFilter:{MemberInfoFilter:["MsgFlag"]}},this._core),{GroupInfo:g=[]}=n||{};g.forEach(I=>{var E;const{GroupId:m,MemberList:D}=I,M=((E=D[0])===null||E===void 0?void 0:E.MsgFlag)||"",T=`${this._core.OuterConstant.CONV_GROUP}${m}`;NA.patchMessageRemindType([T],M)})}catch(n){console.error(`${this._name}.get fail:`,n)}})}},NA=new class{constructor(){this._name="ConversationDataHandler",this._totalUnreadCount=0,this._groupAtTipsList=[]}init(s){this._core=s;const{helper:n,notificationCenter:g,appStore:{conversationStore:I},constants:{WORKFLOW_NAME:E,WORKFLOW_STEP:m},InnerEvent:{SYNC_CONVERSATION_LIST:D,MESSAGE_PUSH:M,NEW_MESSAGE:T,MESSAGE_DELETED:P,MESSAGE_REVOKED:W,MESSAGE_MODIFIED:iA,CONVERSATION_UPDATED:EA,LOGOUT:RA,DESTROY:kA},InnerEventSubType:{C2C_MESSAGE_PEER_READ:xA}}=s;this._conversationStore=I,n.registerWorkflowStep(E.SYNC_SERVER_INFO_AFTER_LOGIN,m.CONVERSATION_UPDATE_AFTER_UNREAD_SYNC_FINISHED,this._handleUnreadSyncFinished,this),n.registerWorkflowStep(E.SYNC_SERVER_INFO_AFTER_LOGIN,m.CONVERSATION_UPDATE_AFTER_GROUP_LIST_SYNC_FINISHED,this._handleGroupListSyncFinished,this),n.registerWorkflowStep(E.RECEIVE_C2C_NEW_MESSAGE,m.CREATE_OR_UPDATE_CONVERSATION_BY_RECEIVE_NEW_MESSAGE,this._handleNewMessage,this),n.registerWorkflowStep(E.RECEIVE_C2C_NEW_MESSAGE,m.CONVERSATION_UPDATE_AFTER_UNREAD_SYNC_FINISHED,this._handleUnreadSyncFinished,this),n.registerWorkflowStep(E.RECEIVE_GROUP_NEW_MESSAGE,m.CREATE_OR_UPDATE_CONVERSATION_BY_RECEIVE_NEW_MESSAGE,this._handleNewMessage,this),n.registerWorkflowStep(E.SYNC_SERVER_INFO_AFTER_RE_ONLINE,m.CONVERSATION_UPDATE_AFTER_UNREAD_SYNC_FINISHED,this._handleUnreadSyncFinished,this),n.registerWorkflowStep(E.RECEIVE_GROUP_TIPS_NOTIFICATION,m.CREATE_OR_UPDATE_CONVERSATION_BY_RECEIVE_NEW_MESSAGE,this._handleNewMessage,this);const{InnerEventSubType:{GROUP_AT_TIPS:LA}}=g;g.subscribeInnerEvent(D,this._handleConversationSynced,this),g.subscribeInnerEvent(T,this._handleNewMessage,this),g.subscribeInnerEvent(M,LA,this._handleNewGroupAtTips,this),g.subscribeInnerEvent(P,this._handleMessageDeleted,this),g.subscribeInnerEvent(W,this._handleMessageRevoked,this),g.subscribeInnerEvent(iA,this._handleMessageModified,this),g.subscribeInnerEvent(EA,this._handleConversationUpdated,this),g.subscribeInnerEvent(M,xA,this._handleMessageRead,this),g.subscribeInnerEvent(RA,this._reset,this),g.subscribeInnerEvent(kA,this._dispose,this),s.ssoLog.debug(`${this._name}.init`)}_handleConversationSynced(s){this.updateLocalConversationList({conversationUpdateFieldList:s.conversationUpdateFieldList||[],isFromGetConversations:!0,updateUnreadCount:!0}),this.emitConversationListUpdate()}_handleUnreadSyncFinished(s){const{constants:{WORKFLOW_STEP:n}}=this._core,{conversationUpdateFieldList:g=[],groupTipList:I=[],isUnreadC2CMessage:E}=s.result[n.UNREAD_MESSAGE_SYNC]||{};let m=!1;g.forEach(D=>{const{conversationID:M,unreadCount:T}=D,P=this.getLocalConversation(M);P&&P.unreadCount!==T&&(P.updateUnreadCount({nextUnreadCount:T,isUnreadC2CMessage:E}),m=!0)}),m&&this.emitConversationListUpdate(),this._handleGroupAtTipsSynced(I)}_handleGroupAtTipsSynced(s){var n;for(let g=0;g0&&this._handleNewGroupAtTips({GroupTips:M._groupAtInfoList}),m=!0}m&&this.emitConversationListUpdate()}_handleNewMessage(s){const{conversationUpdateFieldList:n=[],isInstantMessage:g=!0,isUnreadC2CMessage:I=!1,updateUnreadCount:E=!0}=s.result||{};if(n.length===0)return;const{common:{isTopic:m}}=this._core;m(n[0].conversationID)||(this.updateLocalConversationList({conversationUpdateFieldList:n,isInstantMessage:g,isUnreadC2CMessage:I,isFromGetConversations:!1,updateUnreadCount:E}),n.filter(D=>this._isConversationNeedShow(D.conversationID)).length>0&&this.emitConversationListUpdate())}_handleNewGroupAtTips(s){const{GroupTips:n=[]}=s;n.forEach(g=>{const{GroupAtTips:I,MsgBody:E,MsgRandom:m,ClientSeq:D}=g;let M={};I?M=this._convertGroupAtTipsKey(I):E?M=Object.assign({},this._convertGroupAtTipsKey(E)):g.groupAtType&&(M=Object.assign({},g)),M.__random=m,M.__sequence=D,this._groupAtTipsList.push(M)}),console.log(`${this._name}._handleNewGroupAtTips groupAtTipsList: ${JSON.stringify(this._groupAtTipsList)}`),this._updateGroupAtInfoList()}_convertGroupAtTipsKey(s){const{From_Account:n,GroupId:g,MsgSeq:I,GroupAtType:E}=s;return{from:n,groupID:g,sequence:I,groupAtType:E}}_updateGroupAtInfoList(){if(this._groupAtTipsList.length===0)return;const{common:s,OuterConstant:n}=this._core,g=s.getCurrentUserID();let I=!1;this._groupAtTipsList.forEach(E=>{const{groupID:m,from:D}=E;if(D!==g){const M=this.getLocalConversation(`${n.CONV_GROUP}${m}`);M&&(M.updateGroupAtInfoList(E),I=!0)}}),I&&this.emitConversationListUpdate(),this._groupAtTipsList.length=0}_handleMessageDeleted(s){var n,g;console.log(`${this._name}._handleMessageDeleted, conversationID:`,s);const{message:{messageDataHandler:I},OuterConstant:E}=this._core,m=I?.getLocalMessageList(s)||[];let D={};for(let P=(m.length||0)-1;P>=0;P--)if(!m[P].isDeleted&&m[P]._isExcludedFromLastMessage!==!0){D=m[P];break}const M=this.getLocalConversation(s);if(!M)return;let T=!1;M.lastMessage.lastSequence===D.sequence&&M.lastMessage.lastTime===D.time||(!((g=(n=this._core)===null||n===void 0?void 0:n.helper)===null||g===void 0)&&g.isEmpty(D)&&(D=void 0),M.updateLastMessage(D),T=!0),s.startsWith(E.CONV_C2C)&&this.updateUnreadCount(s),T&&(this.emitConversationListUpdate(),console.log(`${this._name}._handleMessageDeleted. update conversationID:${s} with lastMessage:`,M.lastMessage))}_handleMessageRevoked(s){const{messageList:n=[],updateUnreadCount:g=!0}=s;if(console.log(`${this._name}._handleMessageRevoked messageList:${n.length}`),n.length===0)return;let I=null,E=!1;n.forEach(m=>{I=this.getLocalConversation(m.conversationID),I&&(g&&I.reduceUnreadCount()&&(E=!0),I.isLastMessageRevoked({sequence:m.sequence,time:m.time})&&(I.setLastMessageRevoked(!0),I.setLastMessageRevoker(m.revoker),E=!0))}),E&&this.emitConversationListUpdate()}_handleMessageModified(s){const{utils:{isEmpty:n},common:{getMessagePreviewText:g},ssoLog:I}=this._core;I.debug(`${this._name}._handleMessageModified`,JSON.stringify(s));const{conversationID:E,messageList:m}=s,D=this.getLocalConversation(E);if(n(D))return;const{lastMessage:M}=D;if(M){const T=m?.[0]||{};M.lastTime===T.time&&M.lastSequence===T.sequence&&M.version!==T.version&&(M.type=T.type,M.payload=T.payload,M.messageForShow=g(T.type,T.payload),M.cloudCustomData=T.cloudCustomData,M.version=T.version,this.emitConversationListUpdate(),console.log(`${this._name} conversationID:${E} lastMessage updated`))}}_handleConversationUpdated(s){this.emitConversationListUpdate(s?.needSort)}updateLocalConversationList(s){const{isFromGetConversations:n}=s,{newConversationList:g}=this._getTmpConversationListMapping(s);this._sortConversationList(),n||this._updateNewConversationProfile(g),this._core.ssoLog.debug("updateLocalConversationList",` newConversationList: ${g.length}`)}_getTmpConversationListMapping(s){const{OuterConstant:n}=this._core,{conversationUpdateFieldList:g,isFromGetConversations:I,isInstantMessage:E,isUnreadC2CMessage:m=!1,updateUnreadCount:D}=s,M=[],T=g?.length;for(let P=0;P{M[1].isPinned===!0?s(M[1].lastMessage.lastTime)?I.push(M):g.push(M):s(M[1].lastMessage.lastTime)?m.push(M):E.push(M)});const D=g.sort((M,T)=>T[1].lastMessage.lastTime-M[1].lastMessage.lastTime).concat(I).concat(E.sort((M,T)=>T[1].lastMessage.lastTime-M[1].lastMessage.lastTime)).concat(m);this._updateConversationMapFromList(D)}_updateNewConversationProfile(s){if(s.length===0)return;const n=[],g=[],{OuterConstant:{CONV_GROUP:I,CONV_C2C:E}}=this._core;s.forEach(m=>{const{conversationID:D,type:M}=m;if(M===E){const T=D.replace(E,"");n.push(T)}else if(M===I){const T=D.replace(I,"");g.push(T)}}),n.length>0&&this._updateC2CConversation(n),g.length>0&&this._updateGroupConversation(g)}_updateC2CConversation(s){var n;const{OuterConstant:{CONV_C2C:g},appStore:{userStore:I},user:E}=this._core;let m=!1;(n=E.userProfile)===null||n===void 0||n.getUserProfile({userIDList:s}).then(D=>{(D?.data||[]).forEach(M=>{var T;const{userID:P}=M,W=this.getLocalConversation(`${g}${P}`);if(W){const iA=((T=I.getFriend(P))===null||T===void 0?void 0:T.remark)||"";W.remark=iA,W.userProfile=M,m=!0}}),m&&this.emitConversationListUpdate()}).catch(D=>{}),BA.get(s)}_updateGroupConversation(s){return mA(this,void 0,void 0,function*(){const{OuterConstant:{CONV_GROUP:n},appStore:{groupStore:g},utils:{safeStringify:I},ssoLog:E,apiMap:{getGroupProfile:m}}=this._core;let D=!1;try{yield Promise.all(s.map(M=>mA(this,void 0,void 0,function*(){const T=g.getGroup(M),P=this.getLocalConversation(`${n}${M}`);T&&P&&(P.groupProfile=T,D=!0),P&&!P.getProfileCompleted()&&typeof m=="function"&&(yield m({groupID:M}))}))),yA.get(s),D&&this.emitConversationListUpdate()}catch(M){E.debug("_updateGroupConversation",I(M))}})}_handleMessageRead(s){const{OuterConstant:{CONV_C2C:n}}=this._core,{C2cNotifyMsgArray:g=[]}=s||{};g.forEach(I=>{const{To_Account:E,UinPairReadArray:m=[]}=I?.C2cReadedReceipt||{};m?.forEach(D=>{const{LastReadTime:M}=D,T=`${n}${E}`;this._updateConversationReadInfo({conversationID:T,peerReadTime:M}),this._updateMessageListPeerRead({conversationID:T,peerReadTime:M})})})}_updateConversationReadInfo(s){const{appStore:n,utils:{isEmpty:g},common:{getCurrentUserID:I}}=this._core,{conversationID:E,peerReadTime:m}=s,D=n.conversationStore.getConversationMap();if(D.has(E)){const M=D.get(E);M.peerReadTime=m;const T=M?.lastMessage;g(T)||T.fromAccount===I()&&T.lastTime<=m&&!T.isPeerRead&&(T.isPeerRead=!0,n.conversationStore.updateConversation(E,{lastMessage:T}))}}_updateMessageListPeerRead(s){const{notificationCenter:n,OuterEvent:g,message:I}=this._core,{conversationID:E,peerReadTime:m}=s,D=I.messageDataHandler.getLocalMessageList(E),M=I.messageDataHandler.getSparseMessageList(E),T=[];D.forEach(P=>{P.time<=m&&!P.isPeerRead&&P.flow==="out"&&(P.isPeerRead=!0,T.push(P))}),M.forEach(P=>{P.time<=m&&!P.isPeerRead&&P.flow==="out"&&(P.isPeerRead=!0,T.push(P))}),n.emitOuterEvent(g.MESSAGE_READ_BY_PEER,{name:g.MESSAGE_READ_BY_PEER,data:T})}_isConversationNeedShow(s){var n,g;const{OuterConstant:{CONV_GROUP:I,GRP_ROOM:E,GRP_LIVE:m},utils:{isUndefined:D}}=this._core,M=this.getLocalConversation(s);if(D(M))return!0;const T=M.type===I&&((n=M.groupProfile)===null||n===void 0?void 0:n.type)===E,P=M.type===I&&((g=M.groupProfile)===null||g===void 0?void 0:g.type)===m;return!(T||P)}updateUnreadCount(s,n=!0){var g,I;let E=!1;const m=this.getLocalConversation(s),D=(I=(g=this._core)===null||g===void 0?void 0:g.message.messageDataHandler)===null||I===void 0?void 0:I.getLocalMessageList(s);if(!m)return E;const M=m.unreadCount,T=D?.filter(P=>!P.isRead&&!P._onlineOnlyFlag&&!P.isDeleted).length;return console.log(`${this._name}._updateUnreadCount conversationID:${s} currentUnreadCount:${M} newUnreadCount:${T}`),M!==T&&(m.unreadCount=T,E=!0,n===!0&&this.emitConversationListUpdate()),E}emitConversationListUpdate(s=!1){var n,g;s&&this._sortConversationList();const{OuterEvent:{CONVERSATION_LIST_UPDATED:I},conversation:E}=this._core,m=this.getLocalConversationList();this._emitEvent({name:I,data:m,isSyncCompleted:(g=(n=E?.syncConversationHandler)===null||n===void 0?void 0:n.isSyncCompleted)===null||g===void 0?void 0:g.call(n)}),this._emitTotalUnreadCountUpdate()}_emitTotalUnreadCountUpdate(){var s;const n=this.getTotalUnreadMessageCount();this._totalUnreadCount!==n&&(this._core.ssoLog.debug("_emitTotalUnreadCountUpdate",` from ${this._totalUnreadCount} to ${n}`),this._totalUnreadCount=n,this._emitEvent({name:(s=this._core)===null||s===void 0?void 0:s.OuterEvent.TOTAL_UNREAD_MESSAGE_COUNT_UPDATED,data:n}))}_emitEvent(s){var n;(n=this._core)===null||n===void 0||n.notificationCenter.emitOuterEvent(s.name,s)}getTotalUnreadMessageCount(){const{OuterConstant:s,utils:{isEmpty:n}}=this._core,g=this.getLocalConversationList();let I=0;return g.forEach(E=>{E.type!==s.CONV_SYSTEM&&(n(E.messageRemindType)||E.messageRemindType===s.MSG_REMIND_ACPT_AND_NOTE)&&(I+=E.unreadCount)}),I}getLocalConversationList(){return[...this._conversationStore.getConversationMap().values()].filter(s=>this._isConversationNeedShow(s.conversationID))}hasLocalConversation(s){return this._conversationStore.getConversationMap().has(s)}getLocalConversation(s){return this._conversationStore.getConversationMap().get(s)}setLocalConversation(s,n){return this._conversationStore.getConversationMap().set(s,n)}deleteLocalConversation(s){this._conversationStore.getConversationMap().delete(s)}_updateConversationMapFromList(s){this._clearConversationMap();for(const[n,g]of s)this.setLocalConversation(n,g)}_clearConversationMap(){this._conversationStore.getConversationMap().clear()}patchMessageRemindType(s,n){let g=!1;s.forEach(I=>{const E=this.getLocalConversation(I);E?.messageRemindType!==n&&(E.messageRemindType=n,g=!0)}),console.log(`${this._name}.patchMessageRemindType conversationIDList:${s} messageRemindType:${n} hasUpdated:${g}`),g&&this.emitConversationListUpdate()}markMessageAsRead(s){const{message:{messageDataHandler:n}}=this._core,{conversationID:g,lastReadTime:I=0,lastReadSequence:E=0}=s,m=n?.getLocalMessageList(g);if(m.length===0)return;const{length:D}=m;for(let M=D-1;M>=0;M--){const T=m[M],P=I&&T.time>I,W=E&&T.sequence>E;if(!P&&!W){if(T.flow==="in"&&T.isRead)break;T.setIsRead(!0)}}}appendToPinnedConversation(s){const n=[...this._conversationStore.getConversationMap().entries()],g=n.findIndex(I=>I[1].isPinned===!1);n.splice(g,0,[s.conversationID,s]),this._updateConversationMapFromList(n),this.emitConversationListUpdate()}_reset(){this._clearConversationMap(),this._totalUnreadCount=0,this._groupAtTipsList=[]}_dispose(){const{notificationCenter:s,InnerEvent:{NEW_MESSAGE:n,MESSAGE_DELETED:g,MESSAGE_REVOKED:I,MESSAGE_MODIFIED:E,CONVERSATION_UPDATED:m,LOGOUT:D,DESTROY:M,SYNC_CONVERSATION_LIST:T}}=this._core,{InnerEventSubType:{GROUP_AT_TIPS:P}}=s;s.unSubscribeInnerEvent(n,this._handleNewMessage,this),s.unSubscribeInnerEvent(n,P,this._handleNewGroupAtTips,this),s.unSubscribeInnerEvent(g,this._handleMessageDeleted,this),s.unSubscribeInnerEvent(I,this._handleMessageRevoked,this),s.unSubscribeInnerEvent(E,this._handleMessageModified,this),s.unSubscribeInnerEvent(m,this._handleConversationUpdated,this),s.unSubscribeInnerEvent(T,this._handleConversationSynced,this),s.unSubscribeInnerEvent(D,this._reset,this),s.unSubscribeInnerEvent(M,this._dispose,this)}},ZA=new class{constructor(){this._name="GetConversationList"}init(s){this._core=s;const{helper:n}=s;n.registerApi({apiName:"getConversationList",context:this})}getConversationList(s){return mA(this,void 0,void 0,function*(){return{code:0,data:{conversationList:this._getConversationList(s),isSyncCompleted:this._core.conversation.syncConversationHandler.isSyncCompleted()}}})}_getConversationList(s){const{utils:{isUndefined:n,isArray:g,isPlainObject:I}}=this._core;if(n(s))return NA.getLocalConversationList();if(g(s))return s.length===0?[]:NA.getLocalConversationList().filter(E=>s.includes(E.conversationID));if(I(s)){const{type:E,markType:m,groupName:D,hasUnreadCount:M,hasGroupAtInfo:T}=s;return NA.getLocalConversationList().filter(P=>this._filterType(P,E)&&this._filterMarkType(P,m)&&this._filterGroupName(P,D)&&this._filterUnreadCount(P,M)&&this._filterGroupAtInfo(P,T))}return[]}_filterType(s,n){const{OuterConstant:g}=this._core;return n!==g.CONV_C2C&&n!==g.CONV_GROUP||s.type===n}_filterGroupName(s,n){const{utils:{isString:g}}=this._core;return!g(n)||(n===""?s.conversationGroupList.length===0:s.conversationGroupList.includes(n))}_filterMarkType(s,n){const{utils:{isNumber:g}}=this._core;return!g(n)||(n===0?s.markList.length===0:s.markList.includes(n))}_filterUnreadCount(s,n){let g=!0;return n===!0?g=s.unreadCount>=1:n===!1&&(g=s.unreadCount===0),g}_filterGroupAtInfo(s,n){let g=!0;return n===!0?g=s.groupAtInfoList.length>=1:n===!1&&(g=s.groupAtInfoList.length===0),g}},Re=new class{constructor(){this._name="GetConversationProfile"}init(s){this._core=s;const{helper:n}=s;n.registerApi({apiName:"getConversationProfile",context:this})}getConversationProfile(s){return mA(this,void 0,void 0,function*(){const{OuterConstant:{CONV_C2C:n,CONV_GROUP:g,GRP_AVCHATROOM:I},appStore:{groupStore:E},utils:{isEmpty:m}}=this._core,D={code:0,data:{}};let M=NA.getLocalConversation(s);if(ks(s))return D.data.conversation=M,D;let T=!1;const P=Ct(s)?n:g;if(m(M)&&(T=!0,M=new Et({conversationID:s,type:P})),console.log(`${this._name}.getConversationProfile conversationID:${s} isNewConversation:${T}`),D.data.conversation=M,M?.getProfileCompleted())return D;if(P===n){const W=s.replace(n,"");yield this._handleC2CConversation(M,W),T&&(yield BA.get([W]))}if(P===g){const W=s.replace(g,"");if(!E.getGroup(W))return D;yield this._handleGroupConversation(M,W),T&&M.groupProfile.type!==I&&(yield yA.get([W]))}return D})}_handleC2CConversation(s,n){return mA(this,void 0,void 0,function*(){var g,I;const{user:E,helper:m,utils:{isEmpty:D},appStore:{conversationStore:M,userStore:T}}=this._core,{conversationID:P}=s,W=yield(g=E.userProfile)===null||g===void 0?void 0:g.getUserProfile({userIDList:[n]});if(W?.data.length===0)throw new m.ChatError({code:ha.USER_OR_GRP_NOT_FOUND});s.userProfile=W?.data[0];const iA=(I=T.getFriend(n))===null||I===void 0?void 0:I.remark;D(iA)||s.remark===iA||(s.remark=iA),s.setProfileCompleted();const EA=NA.hasLocalConversation(P);console.log(`${this._name}._handleC2CConversation conversationID:${P} hasLocalConversation: ${EA}`),EA?M.updateConversation(P,s):NA.appendToPinnedConversation(s)})}_handleGroupConversation(s,n){return mA(this,void 0,void 0,function*(){const{apiMap:{getGroupProfile:g},appStore:{conversationStore:I}}=this._core,{conversationID:E}=s,m=yield g({groupID:n});s.groupProfile=m?.data.group,s.setProfileCompleted();const D=NA.hasLocalConversation(E);console.log(`${this._name}._handleGroupConversation conversationID:${E} hasLocalConversation: ${D}`),D?I.updateConversation(E,s):NA.appendToPinnedConversation(s)})}},Ie=new class{init(s){const{helper:n}=s;n.registerApi({apiName:"getTotalUnreadMessageCount",context:this})}getTotalUnreadMessageCount(){return NA.getTotalUnreadMessageCount()}},Ne=new class{constructor(){this._serverGroupConversationLastReadSeqMap=new Map,this._name="SetMessageRead"}init(s){this._core=s;const{helper:n,common:{isTopic:g},notificationCenter:I,InnerEvent:{MESSAGE_PUSH:E},InnerEventSubType:{ALL_MESSAGE_READ:m}}=s;n.registerApi({apiName:"setMessageRead",context:this,matcher:D=>!g(D[0].conversationID)}),n.registerApi({apiName:"setAllMessageRead",context:this}),I.subscribeInnerEvent(E,m,this._handleAllMessageRead,this)}handleC2CMessageReadSync(s){const{helper:{isEmpty:n},OuterConstant:g}=this._core;s.forEach(I=>{const{ReadC2cMsgNotify:E}=I;if(!n(E)){const{UinPairReadArray:m=[]}=E;m.forEach(D=>{const{From_Account:M,LastReadTime:T}=D,P=`${g.CONV_C2C}${M}`;console.log(`${this._name}.handleC2CMessageReadSync conversationID:${P} lastReadTime:${T}`),NA.markMessageAsRead({conversationID:P,lastReadTime:T}),NA.updateUnreadCount(P)})}})}handleGroupMessageReadSync(s){const{OuterConstant:n,utils:{isUndefined:g}}=this._core;s.forEach(I=>{const{GroupReadInfoArray:E}=I.MsgBody;g(E)||E.forEach(m=>{const{GroupId:D,LastReadMsgSeq:M}=m,T=`${n.CONV_GROUP}${D}`;console.log(`${this._name}.handleGroupMessageReadSync conversationID:${T} lastReadSequence:${M}`),NA.markMessageAsRead({conversationID:T,lastReadSequence:M}),NA.updateUnreadCount(T),this._clearGroupAtInfoList(T)})})}setMessageRead(s){return mA(this,void 0,void 0,function*(){var n,g;const{OuterConstant:I}=this._core,{conversationID:E}=s,m={code:0,data:{}},D=NA.getLocalConversation(E);let M=`${this._name}.setMessageRead conversationID:${E} unreadCount:${D?.unreadCount||0}`;if(m.successLog={message:M},!D)return m;const T=!(!((g=(n=this._core)===null||n===void 0?void 0:n.helper)===null||g===void 0)&&g.isEmpty(D.groupAtInfoList));if(D.type===I.CONV_GROUP&&T&&this._deleteGroupAtTips(E),D.unreadCount===0)return m;const{helper:{ChatError:P}}=this._core;try{if(D.type===I.CONV_C2C){const W=this._getLocalMessageMaxTime(D);M+=`lastMessageTime:${W}`,yield this._setC2CMessageRead(E,W)}if(D.type===I.CONV_GROUP){const W=this._getLocalMessageMaxSequence(D);M+=`lastMessageSequence:${W}`,yield this._setGroupMessageRead(E,W)}}catch(W){const{errorCode:iA,errorInfo:EA}=W;throw new P({functionName:"setMessageRead",code:iA,message:EA,moreMessage:M})}return D.type===I.CONV_SYSTEM&&(D.unreadCount=0),NA.emitConversationListUpdate(),Object.assign(Object.assign({},m),{successLog:{message:M}})})}setAllMessageRead(){return mA(this,arguments,void 0,function*(s={}){const{OuterConstant:{READ_ALL_MSG:n},utils:{safeStringify:g}}=this._core;let I=`scope:${s.scope}`;s.scope||(s.scope=n);const{scope:E}=s,m=this._generateSetAllMessageReadRequestData(E);if(m.allC2CMessageReadStatus===$r&&m.groupMessageReadInfoList.length===0)return{code:0};try{const D=yield function(M){return mA(this,void 0,void 0,function*(){const{allC2CMessageReadStatus:T,groupMessageReadInfoList:P}=M,W={C2CReadAllMsg:T,GroupReadInfo:P};return Co.core.common.buildAndSendPacket({servcmd:"openim.read_all_unread_msg",data:W})})}(m);if(D){const{GroupReadInfoArray:M,C2CReadAllMsg:T}=D,P=this._parseGroupReadInfo(M);this._updateAllConversationReadStatus({allC2CMessageReadStatus:T})>0&&NA.emitConversationListUpdate(),I+=`failureGroupInfoList:${g(P)}`}return{code:0,successLog:{message:I}}}catch(D){const{errorCode:M}=D;throw new this._core.helper.ChatError({functionName:"setAllMessageRead",code:M,moreMessage:I})}})}_handleAllMessageRead(s){const{GroupReadInfoArray:n,C2CReadAllMsg:g}=s;this._parseGroupReadInfo(n),this._updateAllConversationReadStatus({allC2CMessageReadStatus:g})>0&&NA.emitConversationListUpdate()}_updateAllConversationReadStatus(s){const{OuterConstant:{CONV_C2C:n,CONV_GROUP:g},appStore:I}=this._core,E=I.conversationStore.getConversationMap(),{allC2CMessageReadStatus:m}=s;let D=0;for(const[M,T]of E)if(T.unreadCount>=1){if(m===H&&T.type===n){const P=this._getLocalMessageMaxTime(T);NA.markMessageAsRead({conversationID:M,lastReadTime:P})}else if(T.type===g){const P=M.replace(g,"");if(this._serverGroupConversationLastReadSeqMap.has(P)){const W=this._serverGroupConversationLastReadSeqMap.get(P);NA.markMessageAsRead({conversationID:M,lastReadSequence:W})}}NA.updateUnreadCount(M,!1)&&(D+=1)}return D}_generateSetAllMessageReadRequestData(s){const{OuterConstant:{CONV_C2C:n,CONV_GROUP:g,READ_ALL_C2C_MSG:I},appStore:E}=this._core,m={allC2CMessageReadStatus:$r,groupMessageReadInfoList:[]},D=E.conversationStore.getConversationMap();for(const[,M]of D){const{type:T,unreadCount:P}=M;if(this._shouldSetAllMessageRead({scope:s,type:T,unreadCount:P})){if(T===n&&m.allC2CMessageReadStatus===$r){if(m.allC2CMessageReadStatus=H,s===I)break}else if(T===g){const W=this._getLocalMessageMaxSequence(M),{groupID:iA}=M.groupProfile;m.groupMessageReadInfoList.push({GroupId:iA,MsgSeq:W})}}}return m}_parseGroupReadInfo(s){const{utils:{isUndefined:n}}=this._core,g=[];return s?.forEach(I=>{const{GroupId:E,MsgSeq:m,RetCode:D,LastReadMsgSeq:M}=I;n(D)?this._serverGroupConversationLastReadSeqMap.set(E,M):(this._serverGroupConversationLastReadSeqMap.set(E,m),D!==0&&g.push(`${E}-${m}-${D}`))}),g}_deleteGroupAtTips(s){return mA(this,void 0,void 0,function*(){console.log(`${this._name}._deleteGroupAtTips conversationID:${s}`);const n=NA.getLocalConversation(s);if(!n)return;const g=n?.groupAtInfoList||[];if(g.length!==0)try{const{common:{getCurrentUserID:I,isCommunity:E},OuterConstant:{CONV_GROUP:m,CONV_AT_ALL:D}}=this._core;let M=[...g];if(E({groupID:s.replace(m,"")})&&(M=g.filter(P=>!P.atTypeArray.includes(D)),M.length===0))return void this._clearGroupAtInfoList(s,!1);const T=M.map(P=>({From_Account:P.from,To_Account:I(),MsgSeq:P.__sequence,MsgRandom:P.__random,GroupId:P.groupID}));yield function(P,W){return mA(this,void 0,void 0,function*(){const{messageListToDelete:iA}=P,EA={DelMsgList:iA};return W.common.buildAndSendPacket({servcmd:"openim.deletemsg",data:EA})})}({messageListToDelete:T},this._core),console.log(`${this._name}._deleteGroupAtTips ok. count:${g.length}`),this._clearGroupAtInfoList(s)}catch(I){console.error(`${this._name}._deleteGroupAtTips fail:`,I)}})}_clearGroupAtInfoList(s,n=!0){const g=NA.getLocalConversation(s);g&&(g.groupAtInfoList.length>0&&(g.clearGroupAtInfoList(),console.log(`${this._name}._clearGroupAtInfoList conversationID:${s} needEmitConversationUpdate:${n}`)),n&&NA.emitConversationListUpdate())}_getLocalMessageMaxTime(s){var n;const{conversationID:g}=s,I=this._core.message.messageDataHandler.getLocalMessageList(g),E=Math.max(...I.map(D=>D.time));let m=((n=s?.lastMessage)===null||n===void 0?void 0:n.lastTime)||0;return E>m&&(console.log(`${this._name}._getLocalMessageMaxTime update lastMessageTime from ${m} to ${E}`),m=E),m}_getLocalMessageMaxSequence(s){var n;const{conversationID:g}=s,I=this._core.message.messageDataHandler.getLocalMessageList(g),E=Math.max(...I.map(D=>D.sequence));let m=((n=s?.lastMessage)===null||n===void 0?void 0:n.lastSequence)||0;return E>m&&(console.log(`${this._name}._getLocalMessageMaxSequence update lastMessageSequence from ${m} to ${E}`),m=E),m}_setC2CMessageRead(s,n){return mA(this,void 0,void 0,function*(){try{yield function(g,I){return mA(this,void 0,void 0,function*(){return I.common.buildAndSendPacket({servcmd:"openim.msgreaded",data:g})})}({C2CMsgReaded:{Cookie:"",C2CMsgReadedItem:[{To_Account:s.replace("C2C",""),LastedMsgTime:n,Receipt:1}]}},this._core),console.log(`${this._name}._setC2CMessageRead ok, lastReadTime:${n}`),NA.markMessageAsRead({conversationID:s,lastReadTime:n}),NA.updateUnreadCount(s)}catch(g){throw console.warn(`${this._name}._setC2CMessageRead fail:`,g),g}})}_setGroupMessageRead(s,n){return mA(this,void 0,void 0,function*(){try{yield function(g,I){return mA(this,void 0,void 0,function*(){const{groupID:E,lastMessageSequence:m}=g,D={GroupId:E,MsgReadedSeq:m};return I.common.buildAndSendPacket({servcmd:"group_open_http_svc.msg_read_report",data:D})})}({groupID:s.replace("GROUP",""),lastMessageSequence:n},this._core),console.log(`${this._name}._setGroupMessageRead ok, lastReadSequence:${n}`),NA.markMessageAsRead({conversationID:s,lastReadSequence:n}),NA.updateUnreadCount(s)}catch(g){throw console.warn(`${this._name}._setGroupMessageRead fail:`,g),g}})}_shouldSetAllMessageRead(s){const{OuterConstant:{CONV_C2C:n,CONV_GROUP:g,READ_ALL_MSG:I,READ_ALL_C2C_MSG:E,READ_ALL_GROUP_MSG:m}}=this._core,{type:D,scope:M,unreadCount:T}=s;return!(T<=0)&&(!(D!==n||![I,E].includes(M))||!(D!==g||![I,m].includes(M)))}},ae=new class{constructor(){this._name="PinConversation"}init(s){this._core=s;const{helper:n}=s;n.registerApi({apiName:"pinConversation",context:this})}handleConversationPinned(s,n){const{utils:{isArray:g}}=this._core;if(!g(s))return;const{OuterConstant:I}=this._core;let E=!1;s.forEach(m=>{const{Type:D,Peer_Account:M,GroupId:T}=m;let P;D===1?P=NA.getLocalConversation(`${I.CONV_C2C}${M}`):D===2&&(P=NA.getLocalConversation(`${I.CONV_GROUP}${T}`)),P&&(console.log(`${this._name}.handleConversationPinned conversationID:${P.conversationID} localPinned:${P.isPinned} remotePinned:${n}`),n&&!P.isPinned&&(P.isPinned=!0,E=!0),!n&&P.isPinned&&(P.isPinned=!1,E=!0))}),E&&NA.emitConversationListUpdate(!0)}pinConversation(s){return mA(this,void 0,void 0,function*(){const{OuterConstant:n,common:g,helper:{ChatError:I}}=this._core,{conversationID:E,isPinned:m}=s,D={code:0,data:{conversationID:E}},M=NA.getLocalConversation(E);if(M&&M.isPinned===m)return D;if(ks(E))return M&&(M.isPinned=m),NA.emitConversationListUpdate(!0),D;const T=`conversationID:${E} isPinned:${m}`;try{let P=null;if(Ct(E)?P={Type:1,To_Account:E.replace(n.CONV_C2C,"")}:ug(E)&&(P={Type:2,GroupId:E.replace(n.CONV_GROUP,"")}),yield function(iA,EA){return mA(this,void 0,void 0,function*(){const{fromAccount:RA,operationType:kA,itemList:xA}=iA,LA={From_Account:RA,OperationType:kA,RecentContactItem:xA};return EA.common.buildAndSendPacket({servcmd:"recentcontact.top",data:LA})})}({fromAccount:g.getCurrentUserID(),operationType:m===!0?1:2,itemList:[P]},this._core)){if(M)M.isPinned!==m&&(M.isPinned=m);else{const iA=new Et({conversationID:E,type:Ct(E)?n.CONV_C2C:n.CONV_GROUP,isPinned:m});NA.setLocalConversation(E,iA)}NA.emitConversationListUpdate(!0)}return Object.assign(Object.assign({},D),{successLog:{message:T}})}catch(P){const{errorCode:W,errorInfo:iA}=P;throw new I({functionName:"pinConversation",code:W,message:iA,moreMessage:T})}})}},Ue=new class{constructor(){this._name="DeleteConversation"}init(s){this._core=s;const{helper:n}=s;n.registerApi({apiName:"deleteConversation",context:this})}handleConversationDeleted(s){const{utils:{isArray:n}}=this._core;if(!n(s))return;const{OuterConstant:g}=this._core,I=[];s.forEach(E=>{const{Type:m,Peer_Account:D,GroupId:M}=E;m===1&&I.push(`${g.CONV_C2C}${D}`),m===2&&I.push(`${g.CONV_GROUP}${M}`)}),console.log(`${this._name}.handleConversationDeleted conversationIDList:${I}`),this._deleteLocalConversationList(I)}deleteConversation(s){return mA(this,void 0,void 0,function*(){const{utils:{isString:n}}=this._core;if(n(s))return this._deleteConversation({conversationIDList:[s],flag:aa.ONLY_CONVERSATIONID});const g=Object.assign({},s);return g.conversationIDList.length>100&&(g.conversationIDList=g.conversationIDList.slice(0,100)),this._deleteConversation(g)})}_deleteConversation(s){return mA(this,void 0,void 0,function*(){const{conversationIDList:n,clearHistoryMessage:g=!0,flag:I=0}=s,{helper:{ChatError:E}}=this._core,m=`conversationIDList:${n} clearHistoryMessage:${g}`;try{const D=yield Promise.all([this._deleteConversationFromLocal(n),this._deleteConversationFromServer(n,g)]),M=[...D[0],...D[1]];if(M.length===0)throw new this._core.helper.ChatError({code:ha.CONV_NOT_FOUND});return{code:0,data:I===aa.ONLY_CONVERSATIONID?{conversationID:M[0]}:{conversationIDList:M},successLog:{message:m}}}catch(D){const{errorCode:M,errorInfo:T}=D;throw new E({code:M,message:T,moreMessage:m})}})}_deleteConversationFromLocal(s){const{OuterConstant:n}=this._core;return s.filter(g=>{var I;if(!NA.hasLocalConversation(g))return!1;const E=(I=NA.getLocalConversation(g))===null||I===void 0?void 0:I.type;return E!==n.CONV_GROUP||this._hasLocalGroup(g)?E===n.CONV_SYSTEM&&(this._deleteLocalConversation(g),!0):(this._deleteLocalConversation(g),!0)})}_deleteConversationFromServer(s,n){return mA(this,void 0,void 0,function*(){const{OuterConstant:g,common:I}=this._core,E={fromAccount:I.getCurrentUserID(),conversationList:[],clearHistoryMessage:n?1:0};if(s.forEach(D=>{var M;if(NA.hasLocalConversation(D)){const T=((M=NA.getLocalConversation(D))===null||M===void 0?void 0:M.type)||"",P=D.replace(T,"");T===g.CONV_C2C?E.conversationList.push({To_Account:P,Type:1}):T===g.CONV_GROUP&&this._hasLocalGroup(D)&&E.conversationList.push({ToGroupid:P,Type:2})}}),E.conversationList.length===0)return[];const m=yield function(D,M){return mA(this,void 0,void 0,function*(){const{fromAccount:T,conversationList:P,clearHistoryMessage:W}=D,iA={From_Account:T,ContactItem:P,ClearRamble:W};return M.common.buildAndSendPacket({servcmd:"recentcontact.batch_delete",data:iA})})}(E,this._core);if(m){const{ResultItem:D=[]}=m,M=[];return D.length>0&&D.forEach(T=>{if(T.ResultCode===0){const P=T.Type===1?`${g.CONV_C2C}${T.To_Account}`:`${g.CONV_GROUP}${T.ToGroupid}`;M.push(P)}}),this._deleteLocalConversationList(M),M}return[]})}_deleteLocalConversationList(s){let n=!1;s.forEach(g=>{NA.hasLocalConversation(g)&&(this._deleteLocalConversation(g,!1),n=!0)}),console.log(`${this._name}._deleteLocalConversationList isUpdate:${n}`),n&&NA.emitConversationListUpdate()}_deleteLocalConversation(s,n=!0){const g=NA.hasLocalConversation(s);console.log(`${this._name}._deleteLocalConversation conversationID:${s} has:${g}`),g&&(NA.deleteLocalConversation(s),this._deleteConversationLocalMessage(s),n&&NA.emitConversationListUpdate())}_hasLocalGroup(s){const{OuterConstant:{CONV_GROUP:n},appStore:{groupStore:g}}=this._core,I=s.replace(n,"");return!!g.getGroup(I)}_deleteConversationLocalMessage(s){console.log(`${this._name}._deleteConversationLocalMessage conversationID:${s}`),this._core.message.messageDataHandler.deleteConversationMessageList(s),this._core.message.messageHistory.completedHistoryConversations.delete(s)}},yt=new class{constructor(){this._name="SetConversationDraft"}init(s){this._core=s;const{helper:n}=s;n.registerApi({apiName:"setConversationDraft",context:this})}setConversationDraft(s){return mA(this,void 0,void 0,function*(){const{conversationID:n,draftText:g}=s;if(console.log(`${this._name} conversationID:${n} draftText:${g}`),!NA.hasLocalConversation(n))throw new this._core.helper.ChatError({code:ha.CONV_NOT_FOUND});const I=NA.getLocalConversation(n);return I?.setDraftText(g),NA.emitConversationListUpdate(),{code:0,data:{conversation:I}}})}},Kt=new class{constructor(){this._name="SetC2CMessageRemindType"}init(s){this._core=s}set(s,n){return mA(this,void 0,void 0,function*(){s.length>30&&(console.warn(`${this._name}.set userIDList length:${s.length} exceeds limit 30`),s.splice(30));const g=function(){const{MSG_REMIND_ACPT_AND_NOTE:P,MSG_REMIND_DISCARD:W,MSG_REMIND_ACPT_NOT_NOTE:iA}=Co.core.OuterConstant;return{[P]:0,[W]:1,[iA]:2}}()[n],I=yield function(P,W){return mA(this,void 0,void 0,function*(){const{userIDList:iA,receiveMessageOption:EA}=P,RA={Peer_Account:iA,Mute_Notifications:EA};return W.common.buildAndSendPacket({servcmd:"openim.set_c2c_peer_mute_notifications",data:RA})})}({userIDList:s,receiveMessageOption:g},this._core),{ErrorList:E=[]}=I||{},m=[];E.forEach(P=>{const{Peer_Account:W,ErrorCode:iA}=P;m.push({userID:W,code:iA});const EA=s.indexOf(W);EA>-1&&s.splice(EA,1)});const D=[],M=[],{OuterConstant:T}=this._core;return s.forEach(P=>{M.push(`${T.CONV_C2C}${P}`),D.push({userID:P})}),NA.patchMessageRemindType(M,n),{code:0,data:{successUserIDList:D,failureUserIDList:m}}})}},ai=new class{constructor(){this._name="SetGroupMessageRemindType"}init(s){this._core=s}set(s,n){return mA(this,void 0,void 0,function*(){const{common:{getCurrentUserID:g,isTopic:I},OuterConstant:E}=this._core;if(yield function(m,D){return mA(this,void 0,void 0,function*(){const{groupID:M,userID:T,receiveMessageOption:P}=m,W={GroupId:M,Member_Account:T,MsgFlag:P};return D.common.buildAndSendPacket({servcmd:"group_open_http_svc.modify_group_member_info",data:W})})}({groupID:s,userID:g(),receiveMessageOption:n},this._core),!I(s)){const m=`${E.CONV_GROUP}${s}`;NA.patchMessageRemindType([m],n)}return{code:0,data:{groupID:s,messageRemindType:n}}})}},Qt=new class{constructor(){this._name="SetMessageRemindType"}init(s){this._core=s;const{helper:n}=s;n.registerApi({apiName:"setMessageRemindType",context:this})}handleC2CMessageRemindTypeSync(s){const{helper:{isEmpty:n},OuterConstant:g,ssoLog:I}=this._core;s.forEach(E=>{const{MuteNotificationsSync:m}=E;if(!n(m)){const{To_Account:D,MuteNotifications:M}=m,T=D.map(W=>`${g.CONV_C2C}${W}`),P=ji(M);I.debug(`${this._name}.handleC2CMessageRemindTypeSync conversationIDList:${T} messageRemindType:${P}`),NA.patchMessageRemindType(T,P)}})}setMessageRemindType(s){return mA(this,void 0,void 0,function*(){const n="setMessageRemindType",{groupID:g,userIDList:I,messageRemindType:E}=s,{helper:m,utils:{isUndefined:D},ssoLog:M}=this._core;try{if(!D(g))return M.debug(`${this._name}.${n} groupID:${g} messageRemindType:${E}`),yield ai.set(g,E);if(!D(I))return M.debug(`${this._name}.${n} userIDList:${I} messageRemindType:${E}`),yield Kt.set(I,E);throw new m.ChatError({functionName:n,message:"userIDList or groupID is required"})}catch(T){throw new m.ChatError({functionName:n,code:T?.errorCode,message:T?.errorInfo,moreMessage:`groupID:${g} userIDList:${I} messageRemindType:${E}`})}})}},hi=new class{init(s){s.ssoLog.debug("ConversationAction.init"),this._core=s,ZA.init(s),Re.init(s),Ie.init(s),Ne.init(s),ae.init(s),Ue.init(s),yt.init(s),Qt.init(s);const{notificationCenter:n,InnerEvent:{MESSAGE_PUSH:g,DESTROY:I}}=this._core,{InnerEventSubType:{CONV_MODIFIED:E,C2C_MESSAGE_READ_SYNC:m,GROUP_MESSAGE_READ_SYNC:D,C2C_REMIND_TYPE_SYNC:M}}=n;n.subscribeInnerEvent(g,E,this._onConversationModified,this),n.subscribeInnerEvent(g,m,this._onC2CMessageReadSync,this),n.subscribeInnerEvent(g,M,this._onC2CMessageRemindTypeSync,this),n.subscribeInnerEvent(g,D,this._onGroupMessageReadSync,this),n.subscribeInnerEvent(I,this._dispose,this)}_onConversationModified(s){const{constants:{ConvModifyPushType:n}}=this._core,{RecentContactMod:g=[]}=s;g.forEach(I=>{const{PushType:E}=I;if(E===n.CONV_DELETED){const{RecentContactList:m}=I.RecentContactDeleteItem;Ue.handleConversationDeleted(m)}if(E===n.CONV_PINED){const{RecentContactList:m}=I.RecentContactTopItem;ae.handleConversationPinned(m,!0)}if(E===n.CONV_UNPINED){const{RecentContactList:m}=I.RecentContactTopItem;ae.handleConversationPinned(m,!1)}})}_onC2CMessageReadSync(s){const{C2cNotifyMsgArray:n=[]}=s;Ne.handleC2CMessageReadSync(n)}_onC2CMessageRemindTypeSync(s){const{C2cNotifyMsgArray:n=[]}=s;Qt.handleC2CMessageRemindTypeSync(n)}_onGroupMessageReadSync(s){const{GroupTips:n=[]}=s;Ne.handleGroupMessageReadSync(n)}_dispose(){const{notificationCenter:s,InnerEvent:{MESSAGE_PUSH:n,DESTROY:g}}=this._core,{InnerEventSubType:{CONV_MODIFIED:I,C2C_MESSAGE_READ_SYNC:E,GROUP_MESSAGE_READ_SYNC:m,C2C_REMIND_TYPE_SYNC:D}}=s;s.unSubscribeInnerEvent(n,I,this._onConversationModified,this),s.unSubscribeInnerEvent(n,E,this._onC2CMessageReadSync,this),s.unSubscribeInnerEvent(n,D,this._onC2CMessageRemindTypeSync,this),s.unSubscribeInnerEvent(n,m,this._onGroupMessageReadSync,this),s.unSubscribeInnerEvent(g,this._dispose,this)}},Ao=new class{init(s){this._core=s;const{helper:n}=s;n.registerApi({apiName:"setAllReceiveMessageOpt",context:this})}setAllReceiveMessageOpt(s){return mA(this,void 0,void 0,function*(){try{const{OuterConstant:{MSG_REMIND_ACPT_NOT_NOTE:n}}=this._core,{messageRemindType:g=n,isRepeated:I=!0}=s,{startTime:E=0,endTime:m=0}=this._calcStartAndEndTime(s),D=yield function(M){return mA(this,void 0,void 0,function*(){const{common:T}=Co.core,{startTime:P,endTime:W,isRepeated:iA,messageRemindType:EA}=M,RA={StartTime:P,EndTime:W,IsRepeated:iA,Level:EA};return T.buildAndSendPacket({servcmd:"im_msg_db_logic.ws_set_do_not_disturb",data:RA})})}({messageRemindType:this._getType(g),startTime:E,endTime:m,isRepeated:I?ts.ON:ts.OFF});return{code:0,data:{errorCode:D.ErrorCode,errorInfo:D.ErrorInfo}}}catch(n){oc("setAllReceiveMessageOpt",n)}})}_calcStartAndEndTime(s){const{startHour:n=0,startMinute:g=0,startSecond:I=0,duration:E=0,isRepeated:m=!0}=s,D=new Date,M=new Date(D.getFullYear(),D.getMonth(),D.getDate(),n,g,I),T=Math.round(M.getTime()/1e3);let P=T+E;return m&&E>=86400&&(P=T+86400),{startTime:T,endTime:P}}_getType(s){const{OuterConstant:n}=this._core;return{[n.MSG_REMIND_ACPT_AND_NOTE]:0,[n.MSG_REMIND_DISCARD]:1,[n.MSG_REMIND_ACPT_NOT_NOTE]:2}[s]}},Is=new class{init(s){this._core=s;const{helper:n,notificationCenter:g,InnerEvent:I}=s;n.registerApi({apiName:"getAllReceiveMessageOpt",context:this}),g.subscribeInnerEvent(I.MESSAGE_PUSH,g.InnerEventSubType.ALL_RECEIVE_MESSAGE_OPTION,this.onAllReceiveMsgOptionNotify,this)}onAllReceiveMsgOptionNotify(s){const n=this._handleResult(s),{notificationCenter:g,OuterEvent:{ALL_RECEIVE_MESSAGE_OPT_UPDATED:I}}=this._core;g.emitOuterEvent(I,{name:I,data:n})}getAllReceiveMessageOpt(){return mA(this,void 0,void 0,function*(){try{const s=yield function(){return mA(this,void 0,void 0,function*(){const{common:n}=Co.core,g={To_Account:n.getCurrentUserID()};return n.buildAndSendPacket({servcmd:"im_msg_db_logic.ws_get_do_not_disturb",data:g})})}();return{code:0,data:this._handleResult(s)}}catch(s){oc("getAllReceiveMessageOpt",s)}})}_handleResult(s){const{OuterConstant:n}=this._core,{MSG_REMIND_ACPT_AND_NOTE:g,MSG_REMIND_DISCARD:I,MSG_REMIND_ACPT_NOT_NOTE:E}=n,m={0:g,1:I,2:E},{Level:D,StartTime:M,EndTime:T,IsRepeated:P}=s;return{messageRemindType:m[D]||g,startTime:M,endTime:T,isRepeated:P===ts.ON}}},Lo=new class{init(s){s.ssoLog.debug("ReceiveMessageOptions.init"),this._core=s,Kt.init(s),ai.init(s),BA.init(s),yA.init(s),Ao.init(s),Is.init(s)}};const ei=s=>!Ct(s)&&!ug(s)&&!ks(s),kr={getConversationProfile:[{key:"conversationID",required:!0,rules:["string"],allowEmpty:!1,customValidator:s=>!ei(s)||"conversationID is invalid."}],setMessageRead:{conversationID:{required:!0,rules:["string"],allowEmpty:!1,customValidator:s=>!ei(s)||"conversationID is invalid."}},pinConversation:{conversationID:{required:!0,rules:["string"],allowEmpty:!1,customValidator:s=>!ei(s)||"conversationID is invalid."},isPinned:{required:!0,rules:["boolean"],allowEmpty:!1}},deleteConversation:[{key:"options",required:!0,rules:["string","object"],allowEmpty:!1,customValidator:s=>{const{core:{utils:{isArray:n,isObject:g,isString:I}}}=Co;if(!I(s)&&!g(s))return"options is String or Object.";if(I(s)&&ei(s))return"conversationID is invalid.";if(g(s)){if(!n(s.conversationIDList))return"conversationIDList is not Array.";if(s.conversationIDList.length===0)return"conversationIDList is empty.";if(s.conversationIDList.some(E=>{if(ei(E))return!0}))return"conversationIDList includes invalid conversationID.";if(s.clearHistoryMessage&&typeof s.clearHistoryMessage!="boolean")return"clearHistoryMessage is not Boolean."}return!0}}],setConversationDraft:{conversationID:{required:!0,rules:["string"],allowEmpty:!1,customValidator:s=>!(!Ct(s)&&!ug(s))||"conversationID is invalid."},draftText:{required:!0,rules:["string"],allowEmpty:!0}},setAllReceiveMessageOpt:{messageRemindType:{required:!1,rules:["string"],allowEmpty:!0},startHour:{required:!1,rules:["number"],allowEmpty:!0},startMinute:{required:!1,rules:["number"],allowEmpty:!0},startSecond:{required:!1,rules:["number"],allowEmpty:!0},duration:{required:!1,rules:["number"],allowEmpty:!0},isRepeated:{required:!1,rules:["boolean"],allowEmpty:!0}}},zo={getConversationList:!0,getConversationProfile:!0,getTotalUnreadCount:!0,setMessageRead:!0,pinConversation:!0,deleteConversation:!0,setConversationDraft:!0,setMessageRemindType:!0,getAllReceiveMessageOpt:!0,setAllReceiveMessageOpt:!0};var jn=new class{constructor(){this.name="Conversation"}install(s){Co.init(s),hi.init(s),Lo.init(s),NA.init(s),s.helper.registerValidateConfig({auth:zo,params:kr})}};const Wn=new class{init(s){this.core=s}},Aa="AVChatRoom",Vr="AV_HISTORY_MSG",sc="GRP_COUNTER",Pu="Set",Cm="Increase",Ri="Decrease",ti=0,fo=1,on=2,is=["Type","Name","Introduction","Notification","FaceUrl","Owner_Account","CreateTime","InfoSeq","LastInfoTime","LastMsgTime","MemberNum","MaxMemberNum","ApplyJoinOption","NextMsgSeq","ShutUpAllMember","InviteJoinOption","LastRecallTime"],Eg=["Type","Name","Introduction","Notification","FaceUrl","CreateTime","Owner_Account","LastInfoTime","LastMsgTime","NextMsgSeq","MemberNum","MaxMemberNum","ApplyJoinOption","InviteJoinOption"],Ul=["Role","JoinTime","MsgFlag","MsgSeq"],Cd=["Role","JoinTime","MsgSeq","MsgFlag","NameCard"],Lc=0,Sr=1,mI="notStart",Au="resolved",Og="rejected",eu=10018,fI=11e3,Uc=2,xu=["Owner","Admin","Member"],hm=["Role","JoinTime","NameCard","ShutUpUntil","OnlineStatus"],Bm=0,Qm=1,pm=2,Xy=4,$y=1,Dv=2,AD=3,eD=4,Sv=5,X_=1,hd=0,$_=4,tD=6,AT=400,iD=300,eT={from:!0,groupID:!0,groupName:!0,to:!0},Mv={from:!0,groupID:!0,groupName:!0,to:!0,type:!0},tT=2,vv=4,iT=5,oT=7,oD=8,sD=15,MQ=20,mm=21,fm=2600,Bd=2602,sT=2603,nT=2620,ym=2621,nD=2623,gh=2660,rT=2661,aT=2681,Dm=2683,Rv=2684,rD=2685,Sm=2687,wv=3122,gT=10018,cT={0:"DisableInvite",1:"NeedPermission",2:"FreeAccess"},_v=s=>s===Wn.core.OuterConstant.GRP_PUBLIC,Qd=s=>s===Wn.core.OuterConstant.GRP_AVCHATROOM,Mm=(s,n)=>{const{isArray:g}=Wn.core.utils;if(!g(s)||!g(n))return!1;let I=!1;return n.forEach(({key:E,value:m})=>{const D=s.find(M=>M.key===E);D?D.value!==m&&(D.value=m,I=!0):(s.push({key:E,value:m}),I=!0)}),I},pd=s=>{const n=[];if(!s)return n;for(let g=0,I=s.length;g{const n=[];for(let g=0,I=s.length;g0&&M.members.forEach(T=>{T.userID===this.selfInfo.userID&&D(this.selfInfo,T,["sequence"])})}updateSelfInfo(n){const{nameCard:g,joinTime:I,role:E,messageRemindType:m,readedSequence:D,excludedUnreadSequenceList:M}=n,{common:{deepMerge:T}}=Wn.core;T(this.selfInfo,{nameCard:g,joinTime:I,role:E,messageRemindType:m,readedSequence:D,excludedUnreadSequenceList:M},[],["",null,void 0,0,NaN])}setSelfNameCard(n){this.selfInfo.nameCard=n}}var Yi=new class{constructor(){this._name="GroupDataHandler"}init(s){this._core=s;const{appStore:{groupStore:n}}=s;this._groupMap=n.getGroupMap()}hasLocalGroup(s){return this._groupMap.has(s)}getLocalGroup(s){return this._groupMap.get(s)}updateLocalGroup(s){const{common:{getCurrentUserID:n}}=this._core;let g;s.forEach(E=>{var m;g=E.groupID,this.hasLocalGroup(g)?(m=this.getLocalGroup(g))===null||m===void 0||m.updateGroup(E):(this._groupMap.set(g,new Yu(E)),this._clearGroupLocalMessage(g))});const I=n();for(const[,E]of this._groupMap)E.selfInfo.userID=I,E.selfInfo.role==="Owner"&&(E.ownerID=I)}deleteLocalGroup(s){this._groupMap.delete(s)}getLocalGroupList(){const{OuterConstant:{GRP_ROOM:s,GRP_LIVE:n}}=this._core;return[...this._groupMap.values()].filter(g=>{const{type:I}=g;return I!==s&&I!==n})}clearLocalGroup(){this._groupMap.clear()}emitGroupListUpdate(){const s=this.getLocalGroupList(),{OuterEvent:{GROUP_LIST_UPDATED:n},notificationCenter:g}=this._core;g.emitOuterEvent(n,{name:n,data:s})}updateConversationGroupProfile(s){const{appStore:{conversationStore:n},OuterConstant:{CONV_GROUP:g}}=this._core,I=`${g}${s}`,E=n.getConversation(I);if(E){const m=this.getLocalGroup(s);E.setProfileCompleted(),n.updateConversation(I,{groupProfile:m})}}reset(){this.clearLocalGroup()}_clearGroupLocalMessage(s){const{message:{messageHistory:n,messageDataHandler:g},OuterConstant:{CONV_GROUP:I},ssoLog:E}=this._core;E.debug("_clearGroupLocalMessage",`groupID:${s}`);const m=`${I}${s}`;n.completedHistoryConversations.delete(m),g.deleteConversationMessageList(m)}};function Rm(s,n){return mA(this,void 0,void 0,function*(){const{type:g,limit:I,offset:E,supportTopic:m=0,memberAccount:D,responseFilter:M}=s,T={Type:g,Limit:I,Offset:E,Member_Account:D,ResponseFilter:M,SupportTopic:m,NeedAppDefineData:1};return n.common.buildAndSendPacket({servcmd:"group_open_http_svc.get_joined_group_list",data:T})})}const dn=function(s,n){return{code:0,data:s||{},successLog:n}};var Tv=new class{constructor(){this._name="GetGroupList",this._pagingStatus=mI,this.PAGING_GRP_COUNT_LIMIT=200}init(s){this._core=s;const{helper:n,constants:{WORKFLOW_NAME:g,WORKFLOW_STEP:I}}=s;n.registerApi({apiName:"getGroupList",context:this}),n.registerWorkflowStep(g.SYNC_SERVER_INFO_AFTER_LOGIN,I.GROUP_LIST_SYNC,this._syncGroupList,this)}getGroupList(){return mA(this,arguments,void 0,function*(s=!1){if(s){const g=[];return yield this._pagingGetJoinedCommunityList({limit:this.PAGING_GRP_COUNT_LIMIT,offset:0,groupList:g}),Yi.updateLocalGroup(g),Yi.getLocalGroupList()}if(this._core.ssoLog.debug("getGroupList",`${this._name}.getGroupList pagingStatus:${this._pagingStatus}`),this._pagingStatus===Og||this._pagingStatus===mI)return this._syncGroupList().then(()=>{const g=Yi.getLocalGroupList();return dn({groupList:g,isSyncCompleted:this._isSyncCompleted()})}).catch(g=>{throw g});const n=Yi.getLocalGroupList();return dn({groupList:n,isSyncCompleted:this._isSyncCompleted()},{message:`return group count:${n.length}`})})}_syncGroupList(){return mA(this,void 0,void 0,function*(){this._pagingStatus===mI&&Yi.clearLocalGroup();const s=this.PAGING_GRP_COUNT_LIMIT,n=[];try{yield this._pagingGetGroupList({limit:s,offset:0,groupList:n}),this._pagingStatus=Au,this._groupListTreeShaking(n),Yi.updateLocalGroup(n);const g=Yi.getLocalGroupList();return this._core.ssoLog.debug("_syncGroupList",`${this._name}._syncGroupList ok, count:${g.length}`),Yi.emitGroupListUpdate(),g}catch(g){throw this._pagingStatus=Og,g}})}_pagingGetGroupList(s){return mA(this,void 0,void 0,function*(){const{ssoLog:n}=this._core,{isCommunityRelay:g=!1,groupList:I}=s;let E,{limit:m,offset:D}=s;const M=[...is];g&&(E=this._core.OuterConstant.GRP_COMMUNITY,M.push("AtInfoList"));try{const T=yield Rm({type:E,limit:m,offset:D,memberAccount:this._core.store.get("login").userId,responseFilter:{GroupBaseInfoFilter:M,SelfInfoFilter:[...Ul]}},this._core),{GroupIdList:P=[],TotalCount:W=0}=T||{},iA=this._convertGroupKey(P);I.push(...iA);const EA=D+m,RA=!(W>EA),kA=`offset:${D} limit:${m} total:${W} isCompleted:${RA} current:${I.length} isCommunityRelay:${g}`;return n.debug("_pagingGetGroupList",`${this._name}._pagingGetGroupList ok. ${kA}`),g?RA?I:(D=EA,this._pagingGetGroupList({isCommunityRelay:!0,limit:m,offset:D,groupList:I})):RA?(n.debug("_pagingGetGroupList",`${this._name}._pagingGetGroupList start to get community list`),D=0,this._pagingGetGroupList({isCommunityRelay:!0,limit:m,offset:D,groupList:I})):(D=EA,this._pagingGetGroupList({limit:m,offset:D,groupList:I}))}catch(T){if(T.ErrorCode===eu)return n.warn("_pagingGetGroupList",`${this._name}._pagingGetGroupList response size exceeds the limit, request count:${m}`),m=50,this._pagingGetGroupList({isCommunityRelay:g,limit:m,offset:D,groupList:I});if(g)return T.code===fI&&n.debug("_pagingGetGroupList",`${this._name}._pagingGetGroupList ok. community unavailable`),I;throw T}})}_pagingGetJoinedCommunityList(s){return mA(this,void 0,void 0,function*(){const{common:{getCurrentUserID:n},OuterConstant:g,ssoLog:I}=this._core,{groupList:E}=s;let{limit:m,offset:D}=s;try{const M=yield Rm({limit:m,offset:D,type:g.GRP_COMMUNITY,memberAccount:n(),supportTopic:1,responseFilter:{GroupBaseInfoFilter:[...is],SelfInfoFilter:[...Ul]}},this._core),{GroupIdList:T=[],TotalCount:P=0}=M||{},W=this._convertGroupKey(T);E.push(...W);const iA=D+m,EA=!(P>iA),RA=`offset:${D} limit:${m} total:${P} isCompleted:${EA} current:${E.length}`;return I.debug("_pagingGetJoinedCommunityList",`${this._name}._pagingGetJoinedCommunityList ok. ${RA}`),EA?E:(D=iA,this._pagingGetJoinedCommunityList({limit:m,offset:D,groupList:E}))}catch(M){if(M.code===gT)return I.warn("_pagingGetJoinedCommunityList",`${this._name}._pagingGetJoinedCommunityList response size exceeds the limit, request count:${m}`),m=50,this._pagingGetJoinedCommunityList({limit:m,offset:D,groupList:E});throw M}})}_groupListTreeShaking(s){const n=new Map([...Yi.getLocalGroupList()]);for(let I=0,E=s.length;I{const{AtFlagList:E,AtMsgSeq:m,From_Account:D}=I;g.push({groupID:s,groupAtType:E,sequence:m,from:D})}),g}},Vu=new class{constructor(){this._name="CreateGroup"}init(s){this._core=s;const{helper:n}=s;n.registerApi({apiName:"createGroup",context:this})}createGroup(s){return mA(this,void 0,void 0,function*(){var n;this._preCheckParams(s);const{helper:{ChatError:g}}=this._core;try{const{utils:{isEmpty:I},common:{getCurrentUserID:E},OuterConstant:{GRP_AVCHATROOM:m}}=this._core,D=yield function(iA,EA){return mA(this,void 0,void 0,function*(){const{name:RA,type:kA,groupID:xA,introduction:LA,notification:SA,avatar:OA,maxMemberNum:JA,joinOption:re,inviteOption:ne,memberList:_i,groupCustomField:Ti,isSupportTopic:kt}=iA;let Ni,cs;_i&&(Ni=_i.map(Bt=>{const{userID:UA,memberCustomField:ii}=Bt;return{Member_Account:UA,AppMemberDefinedData:ii?bE(ii):void 0}})),Ti&&(cs=bE(Ti));const Se={Name:RA,Type:kA,GroupId:xA,Introduction:LA,Notification:SA,FaceUrl:OA,MaxMemberCount:JA,ApplyJoinOption:re,InviteJoinOption:ne,MemberList:Ni,AppDefinedData:cs,SupportTopic:kt,webPushFlag:1};return EA.common.buildAndSendPacket({servcmd:"group_open_http_svc.create_group",data:Se})})}(Object.assign(Object.assign({},s),{ownerID:E()}),this._core),{GroupId:M,OverJoinedGroupLimit_Account:T=[]}=D||{},P=`${this._name}.createGroup ok, type:${s.type} groupID:${M} overLimitUserIDList:${T}`;if(I(s.memberList)||I(T)||(s.memberList=(n=s.memberList)===null||n===void 0?void 0:n.filter(iA=>T.includes(iA.userID))),s.type===m)return dn({group:new Yu(Object.assign(Object.assign({},s),{groupID:M}))},{message:P});Yi.updateLocalGroup([Object.assign(Object.assign({},s),{groupID:M})]);const W=Yi.getLocalGroup(M);return this._notNeedSendCustomMessage(s)||(this._sendCustomMessage(M,s.type),Yi.emitGroupListUpdate()),dn({group:W},{message:P})}catch(I){const{errorCode:E,errorInfo:m}=I;throw new g({functionName:"createGroup",code:E,message:m,moreMessage:` groupID:${s.groupID}`})}})}_preCheckParams(s){const{type:n,groupID:g}=s,{utils:{isEmpty:I,isUndefined:E},common:{isCommunity:m}}=this._core,D=!I(g);if(!(()=>{const{GRP_PUBLIC:M,GRP_WORK:T,GRP_MEETING:P,GRP_AVCHATROOM:W,GRP_COMMUNITY:iA}=Wn.core.OuterConstant;return[M,T,P,W,iA]})().includes(n))throw new this._core.helper.ChatError({code:fm});if(!m({type:n})){if(D&&m({groupID:g}))throw new this._core.helper.ChatError({code:Bd});E(s.isSupportTopic)||(s.isSupportTopic=void 0)}if(this._canIUseMemberList(n)||E(s.memberList)||(s.memberList=void 0),this._canIUseJoinOption(n)||E(s.joinOption)||(s.joinOption=void 0),m({type:n})){if(D&&!m({groupID:g}))throw new this._core.helper.ChatError({code:Bd});s.isSupportTopic=this._canIUseTopic(s)?1:0}}_canIUseMemberList(s){return!Qd(s)}_canIUseJoinOption(s){return _v(s)||this._core.common.isCommunity({type:s})}_canIUseTopic(s){const{isSupportTopic:n}=s;return n===!0}_notNeedSendCustomMessage(s){const{type:n,isSupportTopic:g}=s,{OuterConstant:{GRP_AVCHATROOM:I,GRP_COMMUNITY:E}}=this._core;return n===I||n===E&&g===1}_sendCustomMessage(s,n){var g,I,E,m,D,M;const{OuterConstant:T,common:{t:P}}=this._core;let W=P("CREATE_GROUP"),iA=Lc;n===T.GRP_COMMUNITY&&(W=P("CREATE_COMMUNITY"),iA=Sr);const EA={to:s,conversationType:"GROUP",payload:{data:JSON.stringify({businessID:"group_create",content:W,cmd:iA,opUser:this._core.store.get("login").userId,version:4})}},RA=(E=(I=(g=this._core)===null||g===void 0?void 0:g.message)===null||I===void 0?void 0:I.messageFactory)===null||E===void 0?void 0:E.createCustomMessage(EA);(M=(D=(m=this._core)===null||m===void 0?void 0:m.message)===null||D===void 0?void 0:D.messageSender)===null||M===void 0||M.sendMessage(RA,{})}},zs=new class{constructor(){this._name="AttributesDataHandler",this._groupAttributesCache=new Map,this._groupAttributesCacheValuesCopy={}}init(s){this._core=s;const{helper:n,constants:g}=s;n.registerWorkflowStep(g.WORKFLOW_NAME.SYNC_SERVER_INFO_AFTER_RE_ONLINE,g.WORKFLOW_STEP.GROUP_ATTRIBUTE_CACHE_CLEAR,this.clearLocalMainSequence,this)}clearLocalMainSequence(){this._groupAttributesCache.forEach(s=>{s.localMainSequence=0})}isGroupAttributesUpdated(s){const{elements:{newGroupProfile:n}}=s,{utils:{isEmpty:g,isUndefined:I}}=this._core;return!I(n)&&!g(n.groupAttributeOption)}handleGroupAttributesUpdated(s){const{groupID:n,groupAttributeOption:g}=s,{serverMainSequence:I,groupAttributeList:E=[],operation:m}=g;this._core.ssoLog.debug("handleGroupAttributesUpdated",`${this._name}.handleGroupAttributesUpdated groupID:${n} operation:${m}`);const{utils:{isUndefined:D}}=this._core;D(m)||(this.refreshGroupAttributesCache({groupID:n,serverMainSequence:I,groupAttributeList:E,operation:m}),this.emitGroupAttributesUpdated(n))}initGroupAttributesCache(s){const{groupID:n,avChatRoomKey:g}=s;this._groupAttributesCache.set(n,{lastUpdateTime:0,localMainSequence:0,serverMainSequence:0,avChatRoomKey:g,values:new Map}),this._core.ssoLog.debug("initGroupAttributesCache",`${this._name}.initGroupAttributesCache. groupID:${n} avChatRoomKey:${g}`)}hasGroupAttributesCache(s){return this._groupAttributesCache.has(s)}getGroupAttributesCache(s){return this.hasGroupAttributesCache(s)||this.initGroupAttributesCache({groupID:s}),this._groupAttributesCache.get(s)}deleteGroupAttributesCache(s){this.hasGroupAttributesCache(s)&&this._groupAttributesCache.delete(s)}refreshGroupAttributesCache(s){const{groupID:n,serverMainSequence:g,groupAttributeList:I,operation:E}=s;if(this.hasGroupAttributesCache(n)){const m=this.getGroupAttributesCache(n),{localMainSequence:D}=m;E!==Sv&&g-D!==1||(m.serverMainSequence=g,m.localMainSequence=g,m.lastUpdateTime=Date.now(),this._updateGroupAttributesCacheValues({groupAttributes:m,groupAttributeList:I,operation:E})),g-D>1&&(m.serverMainSequence=g),this._groupAttributesCache.set(n,m),this._core.ssoLog.debug("refreshGroupAttributesCache",`${this._name}.refreshGroupAttributesCache. operation:${E} localMainSequence:${D} serverMainSequence:${g}`)}}_updateGroupAttributesCacheValues(s){const{groupAttributes:n,groupAttributeList:g=[],operation:I}=s;I!==AD?I!==eD?(I===$y&&n.values.clear(),g.forEach(E=>{const{key:m,value:D,sequence:M}=E;n.values.set(m,{value:D,sequence:M})})):g.forEach(E=>{n.values.delete(E.key)}):n.values.clear()}getGroupAttributesCacheValues(s){var n;const{groupID:g,keyList:I=[]}=s,E={};if(this.hasGroupAttributesCache(g)){const{values:m}=this.getGroupAttributesCache(g);if(I.length===0){for(const D of m.keys())E[D]=((n=m.get(D))===null||n===void 0?void 0:n.value)||"";return E}return I.forEach(D=>{var M;m.has(D)&&(E[D]=((M=m.get(D))===null||M===void 0?void 0:M.value)||"")}),E}return E}saveGroupAttributesCacheValuesCopy(s){this._groupAttributesCacheValuesCopy=this.getGroupAttributesCacheValues({groupID:s})}emitGroupAttributesUpdated(s){var n,g;const{OuterConstant:{GRP_ROOM:I,GRP_LIVE:E}}=this._core,m=this.getGroupAttributesCacheValues({groupID:s}),D=this._core.appStore.groupStore.getGroup(s),{updatedKeyList:M,deletedKeyList:T}=this._computeValuesChangedData(m);M.length===0&&T.length===0||([I,E].includes(D.type)?(this._core.ssoLog.debug("RICH_STATUS_CHANGED",`${this._name}.emitRichStatusChanged update count:${M.length}, delete count:${T.length}`),this._emitEvent({name:(n=this._core)===null||n===void 0?void 0:n.OuterEvent.RICH_STATUS_CHANGED,data:{groupID:s,richStatus:m,updatedKeyList:M,deletedKeyList:T}})):(this._core.ssoLog.debug("emitGroupAttributesUpdated",`${this._name}.emitGroupAttributesUpdated update count:${M.length}, delete count:${T.length}`),this._emitEvent({name:(g=this._core)===null||g===void 0?void 0:g.OuterEvent.GROUP_ATTRIBUTES_UPDATED,data:{groupID:s,groupAttributes:m,updatedKeyList:M,deletedKeyList:T}})))}_computeValuesChangedData(s){const{utils:{isUndefined:n}}=this._core,g=[],I=[];return Object.keys(s).forEach(E=>{s[E]!==this._groupAttributesCacheValuesCopy[E]&&g.push(E)}),Object.keys(this._groupAttributesCacheValuesCopy).forEach(E=>{n(s[E])&&I.push(E)}),this._groupAttributesCacheValuesCopy={},{updatedKeyList:g,deletedKeyList:I}}_emitEvent(s){var n;(n=this._core)===null||n===void 0||n.notificationCenter.emitOuterEvent(s.name,s)}convertKeyValueMapToList(s){const n=[];return Object.keys(s).forEach(g=>{n.push({key:g,value:s[g]})}),n}reset(){this._groupAttributesCache.clear(),this._groupAttributesCacheValuesCopy={}}},lh=new class{constructor(){this._name="DismissGroup"}init(s,n){this._core=s;const{helper:g}=s;g.registerApi({apiName:"dismissGroup",context:this,matcher:()=>!n.getInstalledSubPlugins().includes(Aa)})}dismissGroup(s){return mA(this,void 0,void 0,function*(){const{helper:{ChatError:n}}=this._core;try{yield function(I,E){return mA(this,void 0,void 0,function*(){const m={GroupId:I};return E.common.buildAndSendPacket({servcmd:"group_open_http_svc.destroy_group",data:m})})}(s,this._core);const{type:g}=Yi.getLocalGroup(s);return Yi.deleteLocalGroup(s),Yi.emitGroupListUpdate(),zs.deleteGroupAttributesCache(s),dn({groupID:s,type:g},{message:s})}catch(g){const{errorCode:I,errorInfo:E}=g;throw new n({functionName:"dismissGroup",code:I,message:E})}})}},Fl=new class{constructor(){this._name="GetGroupProfile"}init(s){this._core=s;const{helper:n}=s;n.registerApi({apiName:"getGroupProfile",context:this})}getGroupProfile(s){return mA(this,void 0,void 0,function*(){const{groupID:n,groupCustomFieldFilter:g}=s,I={groupIDList:[n],responseFilter:{GroupBaseInfoFilter:[...is],AppDefinedDataFilter_Group:g,MemberInfoFilter:[...Cd]}},{helper:{ChatError:E}}=this._core;try{const m=yield this.getGroupProfileAdvance(I),{successGroupList:D,failureGroupList:M}=m;if(M.length>0)throw M[0];let T;return!Yi.hasLocalGroup(n)&&Qd(D[0].type)?T=new Yu(D[0]):(Yi.updateLocalGroup(D),T=Yi.getLocalGroup(n)),T.isSupportTopic||Yi.updateConversationGroupProfile(n),dn({group:T},{message:`groupID:${n}`})}catch(m){const{code:D,message:M}=m;throw new E({functionName:"getGroupProfile",code:D,message:M})}})}getGroupProfileAdvance(s){return mA(this,void 0,void 0,function*(){const{groupIDList:n}=s,{common:{isCommunity:g}}=this._core,I=n.filter(T=>!g({groupID:T})),E=n.filter(T=>g({groupID:T}));I.length>50&&(I.length=50),E.length>50&&(E.length=50);const m=yield Promise.all([this._getGroupProfileAdvance(Object.assign(Object.assign({},s),{groupIDList:I})),this._getGroupProfileAdvance(Object.assign(Object.assign({},s),{groupIDList:E,isCommunityProfile:!0}))]),D=[],M=[];return m.forEach(T=>{D.push(...T.successGroupList),M.push(...T.failureGroupList)}),{successGroupList:D,failureGroupList:M}})}_getGroupProfileAdvance(s){return mA(this,void 0,void 0,function*(){const{ssoLog:n,utils:{isUndefined:g}}=this._core,{isCommunityProfile:I=!1}=s,E=yo(s,["isCommunityProfile"]);if(E.groupIDList.length===0)return{successGroupList:[],failureGroupList:[]};try{const m=yield function(W,iA){return mA(this,void 0,void 0,function*(){const{groupIDList:EA,responseFilter:RA}=W,kA={GroupIdList:EA,ResponseFilter:RA};return iA.common.buildAndSendPacket({servcmd:"group_open_http_svc.get_group_self_member_info",data:kA})})}(E,this._core),{GroupInfo:D=[]}=m||{},M=this._convertGroupProfileKey(D),T=M.filter(W=>g(W.errorCode)||W.errorCode===0),P=M.filter(W=>W.errorCode&&W.errorCode!==0).map(W=>({code:W.errorCode,message:W.errorInfo,data:{groupID:W.groupID}}));return n.debug("_getGroupProfileAdvance",`${this._name}._getGroupProfileAdvance ok, groupID:${E.groupIDList.join(",")}`),{successGroupList:T,failureGroupList:P}}catch(m){if(I)return{successGroupList:[],failureGroupList:[]};throw m}})}_convertGroupProfileKey(s){const n=[];for(let g=0,I=s.length;g0&&I{const{Key:T,Value:P=0}=M;E.set(T,P)}),this._groupCountersMap.set(n,{lastUpdateTime:Date.now(),groupCounterSeq:I,counters:E,avChatRoomKey:m})}}initGroupCountersCache(s){const{groupID:n,avChatRoomKey:g}=s;this._groupCountersMap.set(n,{lastUpdateTime:0,groupCounterSeq:0,counters:new Map,avChatRoomKey:g})}getLocalCounters(s,n){const g={};if(!this._hasLocalGroupCounters(s))return g;const{counters:I}=this.getLocalGroupCounters(s);if(n.length>0)n.forEach(E=>{I.has(E)&&(g[E]=I.get(E))});else for(const E of I.keys())g[E]=I.get(E);return g}deleteLocalGroupCounters(s){const{groupID:n,counterList:g=[],groupCounterSeq:I}=s;if(this._hasLocalGroupCounters(n)){const{counters:E,avChatRoomKey:m}=this.getLocalGroupCounters(n);g.forEach(D=>{E.delete(D.key)}),this._groupCountersMap.set(n,{lastUpdateTime:Date.now(),groupCounterSeq:I,counters:E,avChatRoomKey:m})}}setGroupCounters(s,n){if(!this._hasLocalGroupCounters(s))return;const g=this.getLocalGroupCounters(s),{counters:I}=g;let E=!1;Object.entries(n).forEach(([m,D])=>{I.has(m)&&I.get(m)!==D&&(I.set(m,D),E=!0)}),E&&this._groupCountersMap.set(s,Object.assign(Object.assign({},g),{lastUpdateTime:Date.now(),counters:I}))}_hasLocalGroupCounters(s){return this._groupCountersMap.has(s)}reset(){this._groupCountersMap.clear()}},kE=new class{constructor(){this._name="JoinGroup"}init(s,n){this._core=s;const{helper:g}=s;g.registerApi({apiName:"joinGroup",context:this,matcher:()=>!n.getInstalledSubPlugins().includes(Aa)})}joinGroup(s){return mA(this,void 0,void 0,function*(){const{groupID:n}=s,{helper:{ChatError:g},OuterConstant:I,ssoLog:E}=this._core;try{if(Yi.hasLocalGroup(n))try{return yield Fl.getGroupProfile({groupID:n}),dn({status:I.JOIN_STATUS_ALREADY_IN_GROUP,group:Yi.getLocalGroup(n)},{message:`groupID:${n} joinedStatus:${I.JOIN_STATUS_ALREADY_IN_GROUP}`})}catch{return E.warn("joinGroup",`${this._name}.joinGroup ${n} was unjoined, start to join!`),Yi.deleteLocalGroup(n),yield this._applyJoinGroup(s)}return yield this._applyJoinGroup(s)}catch(m){const{errorCode:D,errorInfo:M}=m;throw new g({functionName:"joinGroup",code:D,message:M,moreMessage:`groupID:${n}`})}})}_applyJoinGroup(s){return mA(this,void 0,void 0,function*(){const{OuterConstant:n,helper:g,ssoLog:I}=this._core,{groupID:E}=s,m=Object.assign({},s),D=g.checkBusinessCapabilityBits(Vr);D&&(m.historyMessageFlag=1);const M=yield function(SA,OA){return mA(this,void 0,void 0,function*(){const{groupID:JA,applyMessage:re,historyMessageFlag:ne}=SA,_i={GroupId:JA,ApplyMsg:re,HugeGroupHistoryMsgFlag:ne};return OA.common.buildAndSendPacket({servcmd:"group_open_http_svc.apply_join_group",data:_i})})}(m,this._core),{Type:T,JoinedStatus:P,LongPollingKey:W,StartSeq:iA,HugeGroupFlag:EA,AVChatRoomKey:RA,RspMsgList:kA=[]}=M||{},xA=`groupID:${E} joinedStatus:${P} longPollingKey:${W} startSeq:${iA} avChatRoomFlag:${EA} canGetAVChatRoomHistoryMsg:${D}, historyMessageCount:${kA.length}`;I.debug("_applyJoinGroup",`${this._name}._applyJoinGroup ok, ${xA}`);let LA=new Yu({groupID:E,type:T});if(P===n.JOIN_STATUS_WAIT_APPROVAL)return dn({status:n.JOIN_STATUS_WAIT_APPROVAL,group:LA});if(P===n.JOIN_STATUS_SUCCESS){try{LA=(yield Fl.getGroupProfile({groupID:E})).data.group}catch(SA){I.warn("_applyJoinGroup",`${this._name}._applyJoinGroup getGroupProfile failed, groupID: ${E}, errorCode:${SA?.code}`)}return this._handleJoinResult({group:LA,avChatRoomFlag:EA,longPollingKey:W,startSequence:iA,avChatRoomKey:RA,historyMessageList:kA})}throw new this._core.helper.ChatError({code:gh})})}_handleJoinResult(s){const{group:n,avChatRoomFlag:g,avChatRoomKey:I}=s;return g===1?(zs.initGroupAttributesCache({groupID:n.groupID,avChatRoomKey:I}),nc.initGroupCountersCache({groupID:n.groupID,avChatRoomKey:I}),dn(s)):(Yi.updateLocalGroup([n]),Yi.emitGroupListUpdate(),dn({status:this._core.OuterConstant.JOIN_STATUS_SUCCESS,group:n},{message:`groupID:${n.groupID}`}))}},vQ=new class{constructor(){this._name="QuitGroup"}init(s,n){this._core=s;const{helper:g}=s;g.registerApi({apiName:"quitGroup",context:this,matcher:()=>!n.getInstalledSubPlugins().includes(Aa)})}quitGroup(s){return mA(this,void 0,void 0,function*(){if(!Yi.hasLocalGroup(s))throw new this._core.helper.ChatError({code:nD});const{helper:{ChatError:n}}=this._core;try{yield function(I,E){return mA(this,void 0,void 0,function*(){const m={GroupId:I};return E.common.buildAndSendPacket({servcmd:"group_open_http_svc.quit_group",data:m})})}(s,this._core);const{type:g}=Yi.getLocalGroup(s);return Yi.deleteLocalGroup(s),Yi.emitGroupListUpdate(),zs.deleteGroupAttributesCache(s),dn({groupID:s,type:g},{message:`groupID:${s}`})}catch(g){const{errorCode:I,errorInfo:E}=g;throw new n({functionName:"quitGroup",code:I,message:E,moreMessage:`groupID:${s}`})}})}},rB=new class{constructor(){this._name="SearchGroup"}init(s){this._core=s;const{helper:n}=s;n.registerApi({apiName:"searchGroupByID",context:this})}searchGroupByID(s){return mA(this,void 0,void 0,function*(){try{const n=yield function(OA,JA){return mA(this,void 0,void 0,function*(){const re={GroupIdList:[OA],GroupBasePublicInfoFilter:[...Eg]};return JA.common.buildAndSendPacket({servcmd:"group_open_http_svc.get_group_public_info",data:re})})}(s,this._core),{GroupInfo:g=[]}=n||{},{AppDefinedData:I=[],ApplyJoinOption:E,CreateTime:m,FaceUrl:D,Introduction:M,InviteJoinOption:T,MaxMemberNum:P,MemberNum:W,Name:iA,Owner_Account:EA,Type:RA,ErrorCode:kA,ErrorInfo:xA}=g[0];if(kA!==0)throw new this._core.helper.ChatError({code:kA,message:xA});const LA=pd(I),SA=new Yu({groupID:s,name:iA,avatar:D,introduction:M,joinOption:E,inviteOption:T,maxMemberCount:P,memberCount:W,type:RA,ownerID:EA,createTime:m,groupCustomField:LA});return dn({group:SA})}catch(n){const{errorCode:g,errorInfo:I}=n;throw new this._core.helper.ChatError({functionName:"searchGroupByID",code:g,message:I})}})}},lT=new class{constructor(){this._name="UpdateGroupProfile"}init(s){this._core=s;const{helper:n}=s;n.registerApi({apiName:"updateGroupProfile",context:this})}updateGroupProfile(s){return mA(this,void 0,void 0,function*(){const{groupID:n}=s,{utils:{isUndefined:g,safeStringify:I},ssoLog:E,helper:m}=this._core;let D=Yi.getLocalGroup(n);if(D){const{type:M}=D;this._canIUseJoinOption(M)||g(s.joinOption)||(E.warn("updateGroupProfile",`${this._name}.updateGroupProfile groupID:${n} joinOption is unavailable for Work/Meeting/AVChatRoom`),s.joinOption=void 0)}g(s.muteAllMembers)||(s.muteAllMembers=s.muteAllMembers===!0?"On":"Off");try{return yield function(M,T){return mA(this,void 0,void 0,function*(){const{groupID:P,name:W,avatar:iA,introduction:EA,notification:RA,muteAllMembers:kA,joinOption:xA,inviteOption:LA,groupCustomField:SA}=M,OA={GroupId:P,Name:W,FaceUrl:iA,Introduction:EA,Notification:RA,ShutUpAllMember:kA,ApplyJoinOption:xA,InviteJoinOption:LA,AppDefinedData:SA?bE(SA):void 0};return T.common.buildAndSendPacket({servcmd:"group_open_http_svc.modify_group_base_info",data:OA})})}(s,this._core),D?(D.updateGroup(s),Yi.emitGroupListUpdate()):D=new Yu(s),dn({group:D},{message:`groupID:${n}`})}catch(M){const{errorCode:T,errorInfo:P}=M;throw new m.ChatError({code:T,message:P,moreMessage:`options:${I(s)}`})}})}_canIUseJoinOption(s){return _v(s)||this._core.common.isCommunity({type:s})}},IT=new class{constructor(){this._name="ChangeGroupOwner"}init(s){this._core=s;const{helper:n}=s;n.registerApi({apiName:"changeGroupOwner",context:this})}changeGroupOwner(s){return mA(this,void 0,void 0,function*(){const n="changeGroupOwner",{groupID:g,newOwnerID:I}=s,E=Yi.getLocalGroup(g),{helper:m,OuterConstant:D,common:{getCurrentUserID:M}}=this._core;if(E?.type===D.GRP_AVCHATROOM)throw new m.ChatError({functionName:n,code:nT});if(I===M())throw new m.ChatError({functionName:n,code:ym});try{return yield function(T,P){return mA(this,void 0,void 0,function*(){const{groupID:W,newOwnerID:iA}=T,EA={GroupId:W,NewOwner_Account:iA};return P.common.buildAndSendPacket({servcmd:"group_open_http_svc.change_group_owner",data:EA})})}(s,this._core),E.ownerID=I,Yi.emitGroupListUpdate(),dn({group:E})}catch(T){throw new m.ChatError({functionName:n,code:T?.errorCode,message:T?.errorInfo})}})}},RQ=new class{constructor(){this._name="GetGroupOnlineMemberCount",this._onlineMemberCountMap=new Map}init(s,n){this._core=s;const{helper:g}=s;g.registerApi({apiName:"getGroupOnlineMemberCount",context:this,matcher:()=>!n.getInstalledSubPlugins().includes(Aa)})}getGroupOnlineMemberCount(s){return mA(this,void 0,void 0,function*(){const n="getGroupOnlineMemberCount";if(!Yi.hasLocalGroup(s))return dn({memberCount:0});const g=Date.now();if(this._onlineMemberCountMap.has(s)){const I=this._onlineMemberCountMap.get(s),{lastReqTime:E=0,memberCount:m=0}=I||{};if(g-E<=6e4)return dn({memberCount:m})}try{const I=yield function(D,M){return mA(this,void 0,void 0,function*(){const T={GroupId:D};return M.common.buildAndSendPacket({servcmd:"group_open_http_svc.get_online_member_num",data:T})})}(s,this._core),{OnlineMemberNum:E=0}=I||{};this._onlineMemberCountMap.set(s,{lastReqTime:Date.now(),memberCount:E});const m=`${this._name}.${n} ok. groupID:${s} memberCount:${E}`;return dn({memberCount:E},{message:m})}catch(I){throw new this._core.helper.ChatError({functionName:n,code:I?.errorCode,message:I?.errorInfo})}})}},wQ=new class{init(s,n){s.ssoLog.debug("GroupAction.init"),Tv.init(s),Vu.init(s),lh.init(s,n),kE.init(s,n),vQ.init(s,n),rB.init(s),Fl.init(s),lT.init(s),IT.init(s),RQ.init(s,n)}dismissGroup(s){return lh.dismissGroup(s)}joinGroup(s){return kE.joinGroup(s)}quitGroup(s){return vQ.quitGroup(s)}getGroupOnlineMemberCount(s){return RQ.getGroupOnlineMemberCount(s)}},Nv=new class{constructor(){this._name="GetGroupApplicationList"}init(s){this._core=s;const{helper:n}=s;n.registerApi({apiName:"getGroupApplicationList",context:this})}getGroupApplicationList(){return mA(this,void 0,void 0,function*(){const s="getGroupApplicationList";try{const n=yield Promise.all([this._getGroupApplicationList(),this._getGroupApplicationList({type:this._core.OuterConstant.GRP_COMMUNITY})]);this._core.ssoLog.debug("getGroupApplicationList",`${this._name}.${s} ok.`);const g=this._handleGroupApplicationResult([...n[0],...n[1]]);return dn({applicationList:g})}catch(n){throw new this._core.helper.ChatError({functionName:s,code:n?.errorCode,message:n?.errorInfo})}})}_getGroupApplicationList(s){return mA(this,void 0,void 0,function*(){const{type:n,startTime:g=0,limit:I=20}=s||{},{common:E}=this._core;let m;try{m=yield function(P,W){return mA(this,void 0,void 0,function*(){const{type:iA,startTime:EA,limit:RA,handleAccount:kA}=P,xA={Type:iA,StartTime:EA,Limit:RA,Handle_Account:kA};return W.common.buildAndSendPacket({servcmd:"group_open_http_svc.get_pendency",data:xA})})}({type:n,startTime:g,limit:I,handleAccount:E.getCurrentUserID()},this._core)}catch(P){if(P?.errorCode!==11e3)throw P;m={}}const{NextStartTime:D=0,PendencyList:M=[]}=m||{};if(D===0)return M;const T=yield this._getGroupApplicationList(Object.assign(Object.assign({},s),{startTime:D}));return[...M,...T]})}_handleGroupApplicationResult(s){const n=[];return s.forEach(g=>{const I=this._convertApplicationData(g),{handled:E}=I,m=yo(I,["handled"]);E===0&&n.push(m)}),n}_convertApplicationData(s){const{Handled:n,AddTime:g,ApplyInviteMsg:I,Authentication:E,FromUserNickName:m,From_Account:D,GroupId:M,GroupName:T,PendencyType:P,To_Account:W}=s;return{handled:n,messageKey:g,applicant:D,applicantNick:m,groupID:M,groupName:T,authentication:E,applicationType:P,userID:W,note:I,addTime:g}}},Gv=new class{constructor(){this._name="HandleGroupApplication"}init(s){this._core=s;const{helper:n}=s;n.registerApi({apiName:"handleGroupApplication",context:this})}handleGroupApplication(s){return mA(this,void 0,void 0,function*(){const{application:n}=s,g=this._handleParams(s);try{n?.applicationType===Uc?yield function(E,m){return mA(this,void 0,void 0,function*(){const{groupID:D,handleAction:M,handleMessage:T,applicant:P,authentication:W,invitee:iA}=E,EA={GroupId:D,HandleMsg:M,ApprovalMsg:T,Applicant_Account:P,Authentication:W,Invited_Account:iA};return m.common.buildAndSendPacket({servcmd:"group_open_http_svc.handle_invite_join_permission_group",data:EA})})}(g,this._core):yield function(E,m){return mA(this,void 0,void 0,function*(){const{groupID:D,handleAction:M,handleMessage:T,applicant:P,authentication:W,messageKey:iA}=E,EA={GroupId:D,HandleMsg:M,ApprovalMsg:T,Applicant_Account:P,Authentication:W,MsgKey:iA};return m.common.buildAndSendPacket({servcmd:"group_open_http_svc.handle_apply_join_group",data:EA})})}(g,this._core);const I=Yi.getLocalGroup(g.groupID);return dn({group:I})}catch(I){throw new this._core.helper.ChatError({functionName:"handleGroupApplication",code:I?.errorCode,message:I?.errorInfo})}})}_handleParams(s){var n;const{handleAction:g,handleMessage:I,message:E,application:m}=s;let D,M,T,P,W;if(E){const{payload:iA}=E||{};D=iA.operatorID,M=(n=iA.groupProfile)===null||n===void 0?void 0:n.groupID,T=iA.authentication,P=iA.messageKey}else D=m?.applicant||"",M=m?.groupID||"",T=m?.authentication||"",P=m?.messageKey||0;return m?.applicationType===Uc&&(W=m.userID),{handleAction:g,handleMessage:I,applicant:D,invitee:W,groupID:M,authentication:T,messageKey:P}}},aD=new class{init(s){s.ssoLog.debug("GroupApplication.init"),Nv.init(s),Gv.init(s)}};let BC=class{constructor(s){this.userID="",this.avatar="",this.nick="",this.role="",this.joinTime="",this.nameCard="",this.muteUntil=0,this.memberCustomField=[],this.isOnline=!1,this.updateMember(s)}updateMember(s){const{core:{utils:{isUndefined:n},common:{deepMerge:g}}}=Wn;n(s.muteTime)||(this.muteUntil=Math.floor((Date.now()+1e3*s.muteTime)/1e3)),n(s.onlineStatus)||(this.isOnline=s.onlineStatus==="Online");const I=[null,void 0,"",0,NaN];s.memberCustomField&&Mm(this.memberCustomField,s.memberCustomField),g(this,s,["memberCustomField","marks","onlineStatus","muteTime"],I)}};function aB(s,n){return mA(this,void 0,void 0,function*(){const{groupID:g,userID:I,muteTime:E,role:m,nameCard:D,memberCustomField:M}=s;let T;M&&(T=bE(M));const P={GroupId:g,Member_Account:I,ShutUpTime:E,Role:m,NameCard:D,AppMemberDefinedData:T};return n.common.buildAndSendPacket({servcmd:"group_open_http_svc.modify_group_member_info",data:P})})}var gD=new class{constructor(){this._name="GetGroupMemberList"}init(s,n){this._core=s;const{helper:g}=s;g.registerApi({apiName:"getGroupMemberList",context:this,matcher:()=>!n.getInstalledSubPlugins().includes(Aa)})}getGroupMemberList(s){return mA(this,void 0,void 0,function*(){const n="getGroupMemberList",{groupID:g,offset:I=0,count:E=100,role:m="",filter:D=""}=s,M=Yi.getLocalGroup(g),T=E>100?100:E,P={groupID:g,offset:I,limit:T,memberRoleFilter:xu.includes(m)?[m]:void 0,memberInfoFilter:hm};try{const W=yield function(ne,_i){return mA(this,void 0,void 0,function*(){const{isCommunity:Ti}=_i.common,{groupID:kt,offset:Ni,limit:cs,memberRoleFilter:Se,memberInfoFilter:Bt}=ne,UA={GroupId:kt,Limit:cs,MemberRoleFilter:Se,MemberInfoFilter:Bt};return Ti({groupID:kt})?UA.Next=String(Ni):UA.Offset=Ni,_i.common.buildAndSendPacket({servcmd:"group_open_http_svc.get_group_member_info",data:UA})})}(P,this._core),{MemberList:iA,MemberNum:EA,Next:RA}=W||{},kA=`${this._name}.${n} ok, totalMemberCount:${EA} next:${RA}`,{utils:{isArray:xA,isEmpty:LA},common:{isCommunity:SA}}=this._core;if(M&&(M.memberCount=EA),!xA(iA)||iA.length===0)return dn({memberList:[],offset:0},{message:kA});let OA=I+T;SA({groupID:g})&&(OA=LA(RA)?0:RA),iA.lengthD.userID),I=yield(n=this._core.user.userProfile)===null||n===void 0?void 0:n.getUserProfile({userIDList:g}),E=I?.data||[],m=new Map(E.map(D=>[D.userID,D]));return s.forEach(D=>{if(m.has(D.userID)){const{nick:M="",avatar:T=""}=m.get(D.userID);D.nick=M,D.avatar=T}}),s})}_generateGroupMember(s){const n=[];for(let g=0,I=s.length;g50&&(T.warn("getGroupMemberProfile",`${this._name}.${n} userIDList length:${I.length} exceeds limit 50`),I.splice(50));const P=`userIDList length:${I.length} groupID:${g}`;try{const W=yield function(kA,xA){return mA(this,void 0,void 0,function*(){const{groupID:LA,userIDList:SA,memberInfoFilter:OA,memberCustomFieldFilter:JA}=kA,re={GroupId:LA,Member_List_Account:SA,MemberInfoFilter:OA,AppDefinedDataFilter_GroupMember:JA};return xA.common.buildAndSendPacket({servcmd:"group_open_http_svc.get_specified_group_member_info",data:re})})}({groupID:g,userIDList:I,memberCustomFieldFilter:E,memberInfoFilter:[...hm]},this._core),{MemberList:iA}=W||{};if(!M(iA)||iA.length===0)return dn({memberList:[]});let EA=this._convertMemberInfo(iA);EA=yield this._getMemberAvatarAndNick(EA);const RA=this._generateGroupMember(EA);return dn({memberList:RA},{message:P})}catch(W){throw new D.ChatError({functionName:n,code:W?.errorCode,message:W?.errorInfo,moreMessage:P})}})}_convertMemberInfo(s){const n=[];for(let g=0,I=s.length;gD.userID),I=yield(n=this._core.user.userProfile)===null||n===void 0?void 0:n.getUserProfile({userIDList:g}),E=I?.data||[],m=new Map(E.map(D=>[D.userID,D]));return s.forEach(D=>{if(m.has(D.userID)){const{nick:M="",avatar:T=""}=m.get(D.userID);D.nick=M,D.avatar=T}}),s})}_generateGroupMember(s){const n=[];for(let g=0,I=s.length;g({Member_Account:M}));try{const M=yield function(RA,kA){return mA(this,void 0,void 0,function*(){const{groupID:xA,userIDList:LA}=RA,SA={GroupId:xA,MemberList:LA};return kA.common.buildAndSendPacket({servcmd:"group_open_http_svc.add_group_member",data:SA})})}({groupID:g,userIDList:D},this._core),{MemberList:T=[]}=M||{},{failureUserIDList:P,successUserIDList:W,existedUserIDList:iA,overLimitUserIDList:EA}=this._handleResult(T);return dn({failureUserIDList:P,successUserIDList:W,existedUserIDList:iA,overLimitUserIDList:EA,group:E},{message:` groupID:${g} successUserIDList:${W} failureUserIDList:${P} existedUserIDList:${iA} overLimitUserIDList:${EA}`})}catch(M){throw new m.ChatError({functionName:n,code:M?.errorCode,message:M?.errorInfo})}})}_handleResult(s){const n=[],g=[],I=[],E=[];return s.forEach(m=>{const{Result:D,Member_Account:M}=m;D===Bm?n.push(M):D===Qm?g.push(M):D===pm?I.push(M):D===Xy&&E.push(M)}),{failureUserIDList:n,successUserIDList:g,existedUserIDList:I,overLimitUserIDList:E}}},fd=new class{constructor(){this._name="DeleteGroupMember"}init(s,n){this._core=s;const{helper:g}=s;g.registerApi({apiName:"deleteGroupMember",context:this,matcher:()=>!n.getInstalledSubPlugins().includes(Aa)})}deleteGroupMember(s){return mA(this,void 0,void 0,function*(){const n="deleteGroupMember",{groupID:g,userIDList:I}=s,E=Yi.getLocalGroup(g),{helper:m,utils:{isUndefined:D},ssoLog:M}=this._core;if(D(E))throw new m.ChatError({functionName:n,code:sT});I.length>20&&(M.warn("deleteGroupMember",`${this._name}.${n} userIDList length:${I.length} exceeds limit 20`),I.splice(20));try{return yield function(T,P){return mA(this,void 0,void 0,function*(){const{groupID:W,userIDList:iA,reason:EA}=T,RA={GroupId:W,MemberToDel_Account:iA,Reason:EA};return P.common.buildAndSendPacket({servcmd:"group_open_http_svc.delete_group_member",data:RA})})}({groupID:g,userIDList:I},this._core),dn({group:E,userIDList:I},{message:`groupID:${g} userIDList length:${I.length}`})}catch(T){throw new m.ChatError({functionName:n,code:T?.errorCode,message:T?.errorInfo})}})}},bv=new class{constructor(){this._name="SetGroupMemberMuteTime"}init(s){this._core=s;const{helper:n}=s;n.registerApi({apiName:"setGroupMemberMuteTime",context:this})}setGroupMemberMuteTime(s){return mA(this,void 0,void 0,function*(){const{helper:n}=this._core,{groupID:g,userID:I,muteTime:E}=s,m=` groupID:${g} userID:${I} muteTime:${E}`;this._preCheckSettingMuteParams(s);try{yield aB(s,this._core);const D=Yi.getLocalGroup(g),M=new BC({userID:I,muteTime:E});return dn({group:D,member:M},{message:m})}catch(D){throw new n.ChatError({functionName:"setGroupMemberMuteTime",code:D?.errorCode,message:D?.errorInfo,moreMessage:m})}})}_preCheckSettingMuteParams(s){const{userID:n}=s,{store:g,helper:I}=this._core;if(n===g.get("login").userId)throw new I.ChatError({functionName:"setGroupMemberMuteTime",code:rD})}},TQ=new class{constructor(){this._name="SetGroupMemberRole"}init(s){this._core=s;const{helper:n}=s;n.registerApi({apiName:"setGroupMemberRole",context:this})}setGroupMemberRole(s){return mA(this,void 0,void 0,function*(){const n="setGroupMemberRole",{helper:g}=this._core,{groupID:I,userID:E,role:m}=s,D=`${this._name}.${n} ok, groupID:${I} userID:${E} role:${m}`;this._preCheckSettingRoleParams(s);try{yield aB(s,this._core);const M=Yi.getLocalGroup(I),T=new BC({userID:E,role:m});return dn({group:M,member:T},{message:D})}catch(M){throw new g.ChatError({functionName:n,code:M?.errorCode,message:M?.errorInfo,moreMessage:D})}})}_preCheckSettingRoleParams(s){var n;const{groupID:g,userID:I,role:E}=s,{store:m,helper:D,OuterConstant:M,common:{isCommunity:T}}=this._core,P=Yi.getLocalGroup(g);if(((n=P?.selfInfo)===null||n===void 0?void 0:n.role)!==M.GRP_MBR_ROLE_OWNER)throw new D.ChatError({functionName:"setGroupMemberRole",code:aT});if(I===m.get("login").userId)throw new D.ChatError({functionName:"setGroupMemberRole",code:Rv});const W=[...xu];if(T({groupID:g})&&W.push(M.GRP_MBR_ROLE_CUSTOM),!W.includes(E))throw new D.ChatError({functionName:"setGroupMemberRole",code:Dm})}},cD=new class{constructor(){this._name="SetGroupMemberNameCard"}init(s){this._core=s;const{helper:n}=s;n.registerApi({apiName:"setGroupMemberNameCard",context:this})}setGroupMemberNameCard(s){return mA(this,void 0,void 0,function*(){var n;const g="setGroupMemberNameCard",{helper:I,common:{getCurrentUserID:E}}=this._core,{groupID:m,userID:D=E(),nameCard:M}=s,T=`${this._name}.${g} ok, groupID:${m} userID:${D} nameCard:${M}`;this._preCheckSettingNameCardParams(s);try{yield aB({groupID:m,userID:D,nameCard:M},this._core);const W=Yi.getLocalGroup(m);D===((n=W?.selfInfo)===null||n===void 0?void 0:n.userID)&&(W.updateSelfInfo({nameCard:M}),Yi.emitGroupListUpdate(),Yi.updateConversationGroupProfile(m));const iA=new BC({userID:D,nameCard:M});return dn({group:W,member:iA},{message:T})}catch(P){throw new I.ChatError({functionName:g,code:P?.errorCode,message:P?.errorInfo,moreMessage:T})}})}_preCheckSettingNameCardParams(s){const{groupID:n}=s,{helper:g}=this._core,I=Yi.getLocalGroup(n);if(Qd(I?.type))throw new g.ChatError({functionName:"setGroupMemberNameCard",code:Sm})}},wm=new class{constructor(){this._name="SetGroupMemberCustomField"}init(s){this._core=s;const{helper:n}=s;n.registerApi({apiName:"setGroupMemberCustomField",context:this})}setGroupMemberCustomField(s){return mA(this,void 0,void 0,function*(){const n="setGroupMemberCustomField",{helper:g,common:{getCurrentUserID:I}}=this._core;this._preCheckSettingCustomFiledParams(s);const{groupID:E,userID:m=I(),memberCustomField:D}=s,M=`${this._name}.${n} ok, groupID:${E}userID:${m} memberCustomField:${JSON.stringify(D)}`;try{yield aB({groupID:E,userID:m,memberCustomField:D},this._core);const P=Yi.getLocalGroup(E),W=new BC({userID:m,memberCustomField:D});return dn({group:P,member:W},{message:M})}catch(T){throw new g.ChatError({functionName:n,code:T?.errorCode,message:T?.errorInfo,moreMessage:M})}})}_preCheckSettingCustomFiledParams(s){const{groupID:n}=s,{helper:g}=this._core,I=Yi.getLocalGroup(n);if(Qd(I?.type))throw new g.ChatError({functionName:"setGroupMemberCustomField",code:Sm})}},kv=new class{init(s,n){s.ssoLog.debug("GroupMember.init"),gD.init(s,n),_Q.init(s),md.init(s),fd.init(s,n),bv.init(s),TQ.init(s),cD.init(s),wm.init(s)}getGroupMemberList(s){return gD.getGroupMemberList(s)}deleteGroupMember(s){return fd.deleteGroupMember(s)}},uT=new class{init(s){this._core=s;const{helper:n}=s;n.registerApi({apiName:"getGroupCounters",context:this})}getGroupCounters(s){return mA(this,void 0,void 0,function*(){const n="getGroupCounters";try{vm(n,sc);const{groupID:g,keyList:I=[]}=s,{avChatRoomKey:E,lastUpdateTime:m}=nc.getLocalGroupCounters(g);if(!(Date.now()-m>=this._getExpireTime()))return{code:0,data:{counters:nc.getLocalCounters(g,I)}};const D=yield function(P){return mA(this,void 0,void 0,function*(){const{groupID:W,GroupCounterKeys:iA,avChatRoomKey:EA}=P,{common:RA}=Wn.core,kA={GroupId:W,keyList:iA,BytesKey:EA};return RA.buildAndSendPacket({servcmd:"group_open_http_svc.get_group_counter",data:kA})})}({groupID:g,keyList:I,avChatRoomKey:E}),{GroupCounter:M=[],GroupCounterSeq:T}=D;return nc.updateLocalGroupCounters({groupID:g,counterList:M,groupCounterSeq:T}),{code:0,data:{counters:nc.getLocalCounters(g,I)}}}catch(g){hC(n,g)}})}_getExpireTime(){const{store:s,utils:{isUndefined:n}}=this._core,g=s.get("cloudConfig")||{},{grp_counter_expire_time:I}=g;return n(I)?3e4:Number(I)}},_m=new class{init(s){const{helper:n}=s;n.registerApi({apiName:"setGroupCounters",context:this}),n.registerApi({apiName:"increaseGroupCounter",context:this}),n.registerApi({apiName:"decreaseGroupCounter",context:this})}setGroupCounters(s){return mA(this,void 0,void 0,function*(){return this._handleCounterOperation(Pu,s)})}increaseGroupCounter(s){return mA(this,void 0,void 0,function*(){return this._handleCounterOperation(Cm,s)})}decreaseGroupCounter(s){return mA(this,void 0,void 0,function*(){return this._handleCounterOperation(Ri,s)})}_handleCounterOperation(s,n){return mA(this,void 0,void 0,function*(){const g=`${s}GroupCounter`;try{vm(g,sc);const{groupID:I,key:E,value:m=0}=n,{avChatRoomKey:D}=nc.getLocalGroupCounters(I),M=s===Pu?this._convertObjectToList(n.counters):[{Key:E,Value:m}],T=yield this._updateGroupCounters({groupID:I,counterList:M,avChatRoomKey:D,mode:s});return nc.setGroupCounters(I,T),{code:0,data:{counters:T}}}catch(I){hC(g,I)}})}_updateGroupCounters(s){return mA(this,void 0,void 0,function*(){const n=yield function(E){const{groupID:m,counterList:D,mode:M,avChatRoomKey:T}=E,{common:P}=Wn.core,W={GroupId:m,GroupCounter:D,Mode:M,BytesKey:T};return P.buildAndSendPacket({servcmd:"group_open_http_svc.update_group_counter",data:W})}(s),{GroupCounter:g=[]}=n,I={};return g.forEach(E=>{const{Key:m,Value:D=0}=E;I[m]=D}),I})}_convertObjectToList(s){return Object.entries(s).map(([n,g])=>({Key:n,Value:g||0}))}},gB=new class{init(s){this._core=s,uT.init(s),_m.init(s)}isGroupCounterUpdated(s){const{elements:{groupCounterInfo:n}}=s,{utils:{isEmpty:g}}=this._core;return!g(n)}handleGroupCounterUpdated(s){const{to:n,elements:{groupCounterInfo:g}}=s;g.forEach(I=>{const{type:E,groupCounterSeq:m,counterList:D=[]}=I;E!==ti&&E!==on||this._processAndNotifyCounterUpdate(n,m,D),E===fo&&nc.deleteLocalGroupCounters({groupID:n,groupCounterSeq:m,counterList:D})})}_processAndNotifyCounterUpdate(s,n,g){const{OuterEvent:I,notificationCenter:E}=this._core;nc.updateLocalGroupCounters({groupID:s,groupCounterSeq:n,counterList:g}),g.forEach(({Key:m,Value:D=0})=>{E.emitOuterEvent(I.GROUP_COUNTER_UPDATED,{name:I.GROUP_COUNTER_UPDATED,data:{groupID:s,key:m,value:D}})})}reset(){nc.reset()}},Tm=new class{constructor(){this._name="InitGroupAttributes"}init(s){this._core=s;const{helper:n}=s;n.registerApi({apiName:"initGroupAttributes",context:this})}initGroupAttributes(s){return mA(this,void 0,void 0,function*(){const{groupID:n,groupAttributes:g}=s,{serverMainSequence:I,avChatRoomKey:E}=zs.getGroupAttributesCache(n),m=zs.convertKeyValueMapToList(g);try{const D=yield function(W,iA){return mA(this,void 0,void 0,function*(){const{groupID:EA,mainSequence:RA,groupAttributeList:kA,avChatRoomKey:xA}=W,LA={GroupId:EA,AttrMainSeq:RA,GroupAttr:kA,BytesKey:xA,AttrControl:["RaceConflict"]};return iA.common.buildAndSendPacket({servcmd:"group_open_http_svc.set_group_attr",data:LA})})}({groupID:n,avChatRoomKey:E,groupAttributeList:m,mainSequence:I},this._core),{AttrMainSeq:M,GroupAttr:T}=D||{},P=T.map(W=>{const{Key:iA,seq:EA}=W;return{key:iA,value:g[iA],sequence:EA}});return zs.saveGroupAttributesCacheValuesCopy(n),zs.refreshGroupAttributesCache({groupID:n,serverMainSequence:M,groupAttributeList:P,operation:$y}),zs.emitGroupAttributesUpdated(n),dn({groupAttributes:g},{message:` groupID:${n} serverMainSequence:${M}`})}catch(D){throw new this._core.helper.ChatError({functionName:"initGroupAttributes",code:D?.errorCode,message:D?.errorInfo})}})}},ET=new class{constructor(){this._name="SetGroupAttributes"}init(s){this._core=s;const{helper:n}=s;n.registerApi({apiName:"setGroupAttributes",context:this}),n.registerExperimentalAPI("setRichStatus",this)}setGroupAttributes(s){return mA(this,void 0,void 0,function*(){const{groupID:n,groupAttributes:g,richStatusMode:I}=s,{serverMainSequence:E,avChatRoomKey:m,values:D}=zs.getGroupAttributesCache(n),M=zs.convertKeyValueMapToList(g).map(T=>{var P;const{key:W,value:iA}=T;return{key:W,value:iA,seq:((P=D.get(T.key))===null||P===void 0?void 0:P.sequence)||0}});try{const T=yield function(EA,RA){return mA(this,void 0,void 0,function*(){const{groupID:kA,mainSequence:xA,groupAttributeList:LA,avChatRoomKey:SA,richStatusMode:OA}=EA,JA={GroupId:kA,AttrMainSeq:xA,GroupAttr:LA,BytesKey:SA,AttrControl:["RaceConflict"],AllowRoomEngineOpt:OA};return RA.common.buildAndSendPacket({servcmd:"group_open_http_svc.modify_group_attr",data:JA})})}({groupID:n,avChatRoomKey:m,groupAttributeList:M,mainSequence:E,richStatusMode:I},this._core),{AttrMainSeq:P,GroupAttr:W}=T||{},iA=W.map(EA=>{const{Key:RA,seq:kA}=EA;return{key:RA,value:g[RA],sequence:kA}});return zs.saveGroupAttributesCacheValuesCopy(n),zs.refreshGroupAttributesCache({groupID:n,serverMainSequence:P,groupAttributeList:iA,operation:Dv}),zs.emitGroupAttributesUpdated(n),dn({groupAttributes:g},{message:` groupID:${n} serverMainSequence:${P}`})}catch(T){throw new this._core.helper.ChatError({functionName:"setGroupAttributes",code:T?.errorCode,message:T?.errorInfo})}})}setRichStatus(s){return mA(this,void 0,void 0,function*(){const{groupID:n,richStatus:g}=s;return this.setGroupAttributes({groupID:n,groupAttributes:g,richStatusMode:!0})})}},lD=new class{constructor(){this._name="DeleteGroupAttributes"}init(s){this._core=s;const{helper:n}=s;n.registerApi({apiName:"deleteGroupAttributes",context:this}),n.registerExperimentalAPI("deleteRichStatus",this)}deleteGroupAttributes(s){return mA(this,void 0,void 0,function*(){const n="deleteGroupAttributes",{groupID:g,keyList:I=[],richStatusMode:E}=s;try{let m;m=I.length===0?yield this._clearGroupAttributes(g,{richStatusMode:E}):yield this._deleteGroupAttributes(g,{keyList:I,richStatusMode:E});const{resultList:D,serverMainSequence:M,operation:T,groupAttributeList:P}=m||{},W=`${this._name}.${n} ok. groupID:${g} operation: ${T}`;return zs.saveGroupAttributesCacheValuesCopy(g),zs.refreshGroupAttributesCache({groupID:g,serverMainSequence:M,groupAttributeList:P,operation:T}),zs.emitGroupAttributesUpdated(g),dn({keyList:D},{message:W})}catch(m){throw new this._core.helper.ChatError({functionName:n,code:m?.errorCode,message:m?.errorInfo})}})}deleteRichStatus(s){return mA(this,void 0,void 0,function*(){return this.deleteGroupAttributes(Object.assign(Object.assign({},s),{richStatusMode:!0}))})}_deleteGroupAttributes(s,n){return mA(this,void 0,void 0,function*(){const{serverMainSequence:g,avChatRoomKey:I,values:E}=zs.getGroupAttributesCache(s),{keyList:m,richStatusMode:D}=n,M=[],T=[];m.forEach(iA=>{if(E.has(iA)){const{sequence:EA=0}=E.get(iA)||{};T.push({key:iA,seq:EA}),M.push(iA)}});const P=yield function(iA,EA){return mA(this,void 0,void 0,function*(){const{groupID:RA,mainSequence:kA,groupAttributeList:xA,avChatRoomKey:LA,richStatusMode:SA}=iA,OA={GroupId:RA,AttrMainSeq:kA,GroupAttr:xA,BytesKey:LA,AttrControl:["RaceConflict"],AllowRoomEngineOpt:SA};return EA.common.buildAndSendPacket({servcmd:"group_open_http_svc.delete_group_attr",data:OA})})}({groupID:s,avChatRoomKey:I,groupAttributeList:T,mainSequence:g,richStatusMode:D},this._core),{AttrMainSeq:W}=P||{};return{resultList:M,serverMainSequence:W,groupAttributeList:T,operation:eD}})}_clearGroupAttributes(s,n){return mA(this,void 0,void 0,function*(){const{serverMainSequence:g,avChatRoomKey:I,values:E}=zs.getGroupAttributesCache(s),{richStatusMode:m}=n||{},D=[...E.keys()],M=yield function(P,W){return mA(this,void 0,void 0,function*(){const{groupID:iA,mainSequence:EA,avChatRoomKey:RA,richStatusMode:kA}=P,xA={GroupId:iA,AttrMainSeq:EA,BytesKey:RA,AttrControl:["RaceConflict"],AllowRoomEngineOpt:kA};return W.common.buildAndSendPacket({servcmd:"group_open_http_svc.clear_group_attr",data:xA})})}({groupID:s,avChatRoomKey:I,mainSequence:g,richStatusMode:m},this._core),{AttrMainSeq:T}=M||{};return{resultList:D,serverMainSequence:T,operation:AD}})}},ID=new class{constructor(){this._name="GetGroupAttributes"}init(s){this._core=s;const{helper:n}=s;n.registerApi({apiName:"getGroupAttributes",context:this}),n.registerExperimentalAPI("getRichStatus",this,"getGroupAttributes")}getGroupAttributes(s){return mA(this,void 0,void 0,function*(){const{groupID:n}=s,{avChatRoomKey:g,lastUpdateTime:I,localMainSequence:E,serverMainSequence:m}=zs.getGroupAttributesCache(n),{helper:{ChatError:D}}=this._core,M=`groupID:${n} localMainSequence:${E} serverMainSequence:${m} keyList:${s.keyList}`;if(Date.now()-I>=3e4||E{const{key:iA,value:EA,seq:RA}=W;return{key:iA,value:EA,sequence:RA}});return zs.refreshGroupAttributesCache({groupID:I,serverMainSequence:M,groupAttributeList:P,operation:Sv}),{serverGroupAttributeList:T}})}},NQ=new class{init(s){s.ssoLog.debug("GroupAttribute.init"),Tm.init(s),ET.init(s),lD.init(s),ID.init(s),zs.init(s)}isGroupAttributesUpdated(s){return zs.isGroupAttributesUpdated(s)}handleGroupAttributesUpdated(s){const{to:n,elements:{newGroupProfile:g}}=s,{groupAttributeOption:I}=g,{serverMainSequence:E,withChangedAttributeInfo:m}=I,{localMainSequence:D}=zs.getGroupAttributesCache(n),M=E-D;if(console.log(`GroupAttribute.handleGroupAttributesUpdated groupID:${n} withChangedAttributeInfo:${m} diffSequence:${M}`),M!==0)if(zs.saveGroupAttributesCacheValuesCopy(n),m!==1||M!==1){if(zs.hasGroupAttributesCache(n)){const{avChatRoomKey:T}=zs.getGroupAttributesCache(n);ID.getGroupAttributesFromServer({groupID:n,avChatRoomKey:T}).then(()=>{zs.emitGroupAttributesUpdated(n)}).catch(()=>{})}}else zs.handleGroupAttributesUpdated({groupID:n,groupAttributeOption:I})}reset(){zs.reset()}};function LE(s,n="tips"){const{ClientSeq:g,From_Account:I,MsgClientTime:E,MsgPriority:m,MsgRandom:D,MsgSeq:M,MsgTimeStamp:T,TinyId:P,ToGroupId:W,GroupInfo:iA,MsgBody:EA}=s,RA=function(kA){const{GroupCode:xA,GroupId:LA,GroupName:SA,GroupType:OA,MsgFrom_AccountExtraInfo:JA,From_Account:re,To_Account:ne}=kA;return{groupCode:xA,groupID:LA,groupName:SA,type:OA,messageFromAccountExtraInformation:JA,from:re,to:ne}}(iA);return{clientSequence:g,from:I,clientTime:E,priority:m,random:D,sequence:M,time:T,tinyID:P,to:W,groupProfile:RA,elements:n==="tips"?Ju(EA):Ih(EA)}}function Ju(s){const n={};return Object.keys(s).forEach(g=>{var I,E;switch(g){case"MemberNum":n.memberCount=s[g];break;case"OpType":n.operationType=s[g];break;case"Operator_Account":n.operatorID=s[g];break;case"List_Account":n.userIDList=s[g];break;case"MsgMemberExtraInfo":n.memberInfoList=(I=s[g])===null||I===void 0?void 0:I.map(m=>uD(m));break;case"MsgOperatorMemberExtraInfo":n.operatorInfo=uD(s[g]);break;case"MsgGroupNewInfo":n.newGroupProfile=function(m){const D={};return Object.keys(m).forEach(M=>{switch(M){case"GroupIntroduction":D.introduction=m[M];break;case"GroupName":D.groupName=m[M];break;case"GroupFaceUrl":D.avatar=m[M];break;case"GroupNotification":D.notification=m[M];break;case"ApplyJoinOption":D.joinOption=m[M];break;case"InviteJoinOption":D.inviteOption=m[M];break;case"ShutupAll":D.muteAllMembers=m[M];break;case"Owner_Account":D.ownerID=m[M];break;case"GroupAttrOption":D.groupAttributeOption=function(P){const{BytesChangedKeys:W,GroupAttrSeq:iA,OpType:EA,PushChangedAttrValFlag:RA,GroupAttrInfo:kA}=P,xA=kA.map(LA=>{const{Key:SA,Val:OA,SubKeySeq:JA}=LA;return{key:SA,value:OA,sequence:JA}});return{changedKeyList:W,groupAttributeList:xA,serverMainSequence:iA,operation:EA,withChangedAttributeInfo:RA}}(m[M]);break;case"MsgAppDefinedData":D.groupCustomField=(T=m[M])==null?void 0:T.map(P=>({key:P.Key,value:P.Value}));break;case"InviteOption":D.inviteOption=cT[m[M]]||m[M]}var T}),D}(s[g]);break;case"MsgMemberInfo":n.msgMemberInfo=(E=s[g])===null||E===void 0?void 0:E.map(m=>function(D){const{ShutupTime:M,User_Account:T}=D;return{muteTime:M,userID:T}}(m));break;case"OnlineMemberInfo":n.onlineMemberInfo=function(m){const{ExpireTime:D,OnlineMemberNum:M}=m;return{expireTime:D,onlineMemberNum:M}}(s[g]);break;case"GroupCounterInfo":n.groupCounterInfo=function(m){return m.map(D=>{const{GroupCounterSeq:M,GroupCounter:T,Type:P}=D;return{type:P,groupCounterSeq:M,counterList:T}})}(s[g])}}),n}function uD(s){const{ImageUrl:n,NickName:g,Role:I,UserId:E}=s;return{avatar:n,nick:g,role:I,userID:E}}function Ih(s){const n={};return Object.keys(s).forEach(g=>{switch(g){case"MsgKey":n.messageKey=s[g];break;case"Operator_Account":n.operatorID=s[g];break;case"ReportType":n.operationType=s[g];break;case"Authentication":n.authentication=s[g];break;case"MsgFlag":n.messageRemindType=s[g];break;case"UserDefinedField":n.userDefinedField=s[g];break;case"RemarkInfo":n.remarkInfo=s[g];break;case"BanDuration":n.duration=s[g];break;case"MuteTime":n.muteTime=s[g];break;case"MsgMemberExtraInfoList":n.inviteeInfoList=(I=s[g]||[])==null?void 0:I.map(E=>{const{UserId:m,ImageUrl:D,NickName:M}=E;return{userID:m,avatar:D,nick:M}});break;case"MemberList_Account":n.inviteeList=s[g]}var I}),n}class Nm{constructor(n){this.type=Wn.core.OuterConstant.MSG_GRP_TIP,this.content={},this._initContent(n)}static parseServerPushElement(n){const g=Ju(n);return new Nm(g)}_initContent(n){Object.keys(n).forEach(g=>{switch(g){case"groupProfile":this._initGroupProfile(n[g]);break;case"operatorInfo":this._initOperatorInfo(n[g]);break;case"memberInfoList":case"msgMemberInfo":this._updateMemberList(n[g]);break;case"newGroupProfile":this._initNewGroupProfile(n[g]);break;case"memberExtraInfo":case"remarkInfo":case"onlineMemberInfo":break;default:this.content[g]=n[g]}}),this.content.userIDList||(this.content.userIDList=[this.content.operatorID])}_initGroupProfile(n){this.content.groupProfile={};const g=Object.keys(n);for(let I=0;I{n.forEach(I=>{g.userID===I.userID&&Object.assign(g,I)})}):this.content.memberList=n}_initNewGroupProfile(n){this.content.newGroupProfile={};const g=Object.keys(n);for(let I=0;I0&&this._handleGroupTipMessage(g),{conversationUpdateFieldList:I,messageList:g}}_emitGroupTipsEvent(s){var n;const{constants:{WORKFLOW_STEP:g}}=this._core,{messageList:I=[]}=((n=s?.result)===null||n===void 0?void 0:n[g.HANDLE_GROUP_TIPS_NOTIFICATION])||{};if(I.length>0){const{notificationCenter:E,OuterEvent:m}=this._core;E.emitOuterEvent(m.MESSAGE_RECEIVED,{name:m.MESSAGE_RECEIVED,data:I})}}_handleGroupTips(s,n=!0){const{Event:g,GroupTips:I}=s,E=new Map,m=[],D=[];for(let M=0,T=I.length;M{const{operationType:I}=g.payload;switch(I){case n.JOINED:this._handleNewMemberJoined(g);break;case n.QUITTED:this._handleMemberQuitted(g);break;case n.KICKED:this._handleMemberKicked(g);break;case n.GROUP_PROFILE_UPDATED:this._handleGroupProfileUpdated(g);break;case n.ADMIN_SET:this._handleMemberGrantAdmin(g);break;case n.ADMIN_CANCELED:this._handleMemberRevokeAdmin(g)}})}_handleNewMemberJoined(s){this._handleGroupMemberCountUpdated(s)}_handleMemberQuitted(s){this._handleGroupMemberCountUpdated(s)}_handleMemberKicked(s){this._handleGroupMemberCountUpdated(s)}_handleGroupProfileUpdated(s){var n;const{newGroupProfile:g,groupProfile:I,operatorInfo:E}=s.payload,{groupID:m}=I,D=Yi.getLocalGroup(m);Object.keys(g).forEach(T=>{switch(T){case"ownerID":this._handleGroupOwnerChanged(m,g);break;case"groupName":D.name=g[T];break;case"groupCustomField":Array.isArray(D[T])&&Array.isArray(g[T])?Mm(D[T],g[T]):D[T]=g[T];break;default:D[T]=g[T]}});const{utils:{isUndefined:M}}=this._core;M(E)||((n=D?.selfInfo)===null||n===void 0?void 0:n.userID)!==E.userID||Object.keys(E).forEach(T=>{T==="nameCard"&&D.updateSelfInfo({nameCard:E[T]}),T==="role"&&this._updateSelfRole(D,E[T])}),Yi.emitGroupListUpdate(),Yi.updateConversationGroupProfile(m)}_handleGroupOwnerChanged(s,n){const{common:g,OuterConstant:I}=this._core,E=Yi.getLocalGroup(s),m=g.getCurrentUserID(),{ownerID:D}=n;m===D&&E.updateGroup({ownerID:D,selfInfo:{role:I.GRP_MBR_ROLE_OWNER}})}_updateSelfRole(s,n){const{OuterConstant:g}=this._core;let I=g.GRP_MBR_ROLE_MEMBER;n===AT?I=g.GRP_MBR_ROLE_OWNER:n===iD&&(I=g.GRP_MBR_ROLE_ADMIN),s.updateSelfInfo({role:I})}_handleGroupMemberCountUpdated(s){const{memberCount:n,groupProfile:{groupID:g}}=s.payload,I=Yi.getLocalGroup(g),{utils:{isNumber:E}}=this._core;I&&E(n)&&I.memberCount!==n&&(I.memberCount=n,Yi.emitGroupListUpdate(),Yi.updateConversationGroupProfile(g))}_handleGroupTipsRecover(s){const{utils:{isArray:n}}=this._core,{groupTipList:g}=s?.result||{};n(g)&&g.forEach(I=>{const{messageList:E}=this._handleGroupTips({Event:I.Event,GroupTips:[I]},!1);this._handleGroupTipMessage(E)})}_handleMemberGrantAdmin(s){const{OuterConstant:n}=this._core,{groupProfile:g,userIDList:I}=s.payload,E=this._core.common.getCurrentUserID(),{groupID:m}=g,D=Yi.getLocalGroup(m);D&&I.includes(E)&&(D.updateSelfInfo({role:n.GRP_MBR_ROLE_ADMIN}),Yi.emitGroupListUpdate(),Yi.updateConversationGroupProfile(m))}_handleMemberRevokeAdmin(s){const{OuterConstant:n}=this._core,{groupProfile:g,userIDList:I}=s.payload,E=this._core.common.getCurrentUserID(),{groupID:m}=g,D=Yi.getLocalGroup(m);D&&I.includes(E)&&(D.updateSelfInfo({role:n.GRP_MBR_ROLE_MEMBER}),Yi.emitGroupListUpdate(),Yi.updateConversationGroupProfile(m))}};class GQ{constructor(n){this.type=Wn.core.OuterConstant.MSG_GRP_SYS_NOTICE,this.content={},this._initContent(n)}static parseServerPushElement(n){const g=Ih(n);return new GQ(g)}_initContent(n){Object.keys(n).forEach(g=>{switch(g){case"remarkInfo":this.content.handleMessage=n[g];break;case"groupProfile":this._initGroupProfile(n[g]);break;case"memberInfoList":break;default:this.content[g]=n[g]}})}_initGroupProfile(n){this.content.groupProfile={};const g=Object.keys(n);for(let I=0;I0&&this._handleGroupSysTemMessage(g,E),g===!0&&E.length>0&&m.emitOuterEvent(D.MESSAGE_RECEIVED,{name:D.MESSAGE_RECEIVED,data:E})}_handleGroupSystemNotification(s,n){const g=[];let I={};for(let E=0;E0?[I]:[],messageList:g}}_assembleMessage(s){const{message:{messageFactory:n},OuterConstant:g,utils:{randomInt:I}}=this._core;s.flow="in",s.conversationType=g.CONV_SYSTEM,s.conversationSubType=s.groupProfile.type,s.conversationID=g.CONV_SYSTEM;const E=n.createMessage(s),m=new GQ(Object.assign(Object.assign({},s.elements),{groupProfile:Object.assign({},s.groupProfile)}));E.setElement(m),E.isSystemMessage=!0;const D=E.sequence===1&&E.random===1,M=E.sequence===2&&E.random===2;return(D||M)&&(E.sequence=I(),E.random=I(),E.generateMessageID()),E}_handleConversationOptions(s,n){const{OuterConstant:g}=this._core,I={conversationID:g.CONV_SYSTEM,unreadCount:0,type:g.CONV_SYSTEM,subType:s.conversationSubType,lastMessage:null};return n&&I.unreadCount++,I}_handleGroupSysTemMessage(s,n){s&&n.forEach(g=>{const{operationType:I}=g.payload;switch(I){case tT:this._handleGroupJoinResult(g);break;case vv:this._handleMemberKicked(g);break;case iT:this._handleGroupDismissed(g);break;case oT:this._handleGroupInvitedResult(g);break;case oD:this._handleGroupQuitResult(g);break;case MQ:this._handleMessageRemindTypeSynced(g);break;case mm:this._handleAVChatRoomMemberBanned(g)}})}_handleGroupJoinResult(s){const{groupProfile:n}=s.payload,{groupID:g,type:I}=n,E=Yi.hasLocalGroup(g);this._core.ssoLog.debug("_handleGroupJoinResult",` groupID:${g} type:${I} hasLocalGroup:${E}`),E||Qd(I)||(Yi.updateLocalGroup([Object.assign({},n)]),Yi.emitGroupListUpdate())}_handleMemberKicked(s){const{groupProfile:{groupID:n,type:g}}=s.payload;Yi.hasLocalGroup(n)&&this._deleteLocalGroup(n,g),this._updateConversationProfile(n,{unreadCount:0})}_handleGroupDismissed(s){const{groupProfile:{groupID:n,type:g}}=s.payload;Yi.hasLocalGroup(n)&&this._deleteLocalGroup(n,g),this._updateConversationProfile(n,{unreadCount:0})}_handleGroupInvitedResult(s){const{groupProfile:n}=s.payload,{groupID:g}=n,I=Yi.hasLocalGroup(g);this._core.ssoLog.debug("_handleGroupInvitedResult",` groupID:${g} hasLocalGroup:${I}`),I||Fl.getGroupProfile({groupID:g}).then(E=>{const{data:{group:m}}=E;Yi.updateLocalGroup([Object.assign({},m)]),Yi.emitGroupListUpdate()})}_handleGroupQuitResult(s){const{groupProfile:{groupID:n,type:g}}=s.payload,I=Yi.hasLocalGroup(n);this._core.ssoLog.debug("_handleGroupQuitResult",` groupID:${n} type:${g} hasLocalGroup:${I}`),I&&this._deleteLocalGroup(n,g),this._updateConversationProfile(n,{unreadCount:0})}_handleMessageRemindTypeSynced(s){const{groupProfile:{groupID:n},messageRemindType:g}=s.payload;this._updateConversationProfile(n,{messageRemindType:g})}_handleAVChatRoomMemberBanned(s){const{groupProfile:{groupID:n,type:g}}=s.payload;this._deleteLocalGroup(n,g)}_deleteLocalGroup(s,n){if(Qd(n)){const{appStore:{conversationStore:g},OuterConstant:{CONV_GROUP:I}}=this._core;g.deleteConversation(`${I}${s}`)}Yi.deleteLocalGroup(s),Yi.emitGroupListUpdate()}_updateConversationProfile(s,n){const{appStore:{conversationStore:g},OuterConstant:{CONV_GROUP:I}}=this._core,E=`${I}${s}`;g.getConversation(E)&&g.updateConversation(E,n)}},ED=new class{init(s){this._core=s,s.ssoLog.debug("GroupNotificationHandler.init"),Lv.init(s),Uv.init(s);const{notificationCenter:n,InnerEvent:g}=s,{InnerEventSubType:I}=n;n.subscribeInnerEvent(g.MESSAGE_PUSH,I.GROUP_TIPS_NOTIFICATION,this._onNewGroupTipsNotification,this),n.subscribeInnerEvent(g.MESSAGE_PUSH,I.GROUP_SYSTEM_NOTIFICATION,this._onNewGroupSystemNotification,this),n.subscribeInnerEvent(g.DESTROY,this._dispose,this)}_onNewGroupTipsNotification(s){const{common:{workflowManager:n},constants:{WORKFLOW_NAME:g}}=this._core;n.executeWorkflow(g.RECEIVE_GROUP_TIPS_NOTIFICATION,s)}_onNewGroupSystemNotification(s){Uv.onNewGroupSystemNotification(s)}_dispose(){const{notificationCenter:s,InnerEvent:n}=this._core,{InnerEventSubType:g}=s;s.unSubscribeInnerEvent(n.MESSAGE_PUSH,g.GROUP_TIPS_NOTIFICATION,this._onNewGroupTipsNotification,this),s.unSubscribeInnerEvent(n.MESSAGE_PUSH,g.GROUP_SYSTEM_NOTIFICATION,this._onNewGroupSystemNotification,this)}};const vn={required:!0,rules:["string"],allowEmpty:!1},bQ={required:!0,rules:["number"],allowEmpty:!1},yd={required:!0,rules:["array"],allowEmpty:!1},dD={required:!0,rules:["object"],allowEmpty:!1},dT={createGroup:{name:vn,type:vn},dismissGroup:[Object.assign({key:"groupID"},vn)],joinGroup:{groupID:vn,applyMessage:{required:!1,rules:["string"],allowEmpty:!0}},quitGroup:[Object.assign({key:"groupID"},vn)],searchGroupByID:[Object.assign({key:"groupID"},vn)],getGroupProfile:{groupID:vn,groupCustomFieldFilter:{required:!1,rules:["array"],allowEmpty:!0}},updateGroupProfile:{groupID:vn,muteAllMembers:{required:!1,rules:["boolean"],allowEmpty:!1}},changeGroupOwner:{groupID:vn,newOwnerID:vn},getGroupOnlineMemberCount:[Object.assign({key:"groupID"},vn)],handleGroupApplication:{handleAction:vn},getGroupMemberList:{groupID:vn},getGroupMemberProfile:{groupID:vn,userIDList:yd,memberCustomFieldFilter:{required:!1,rules:["array"],allowEmpty:!0}},addGroupMember:{groupID:vn,userIDList:yd},deleteGroupMember:{groupID:vn,userIDList:yd},setGroupMemberMuteTime:{groupID:vn,userID:vn,muteTime:Object.assign(Object.assign({},bQ),{customValidator:s=>!(s<0)||"muteTime must be a non-negative number."})},setGroupMemberRole:{groupID:vn,userID:vn,role:vn},setGroupMemberNameCard:{groupID:vn,userID:{required:!1,rules:["string"],allowEmpty:!1},nameCard:vn},setGroupMemberCustomField:{groupID:vn,userID:{required:!1,rules:["string"],allowEmpty:!1},memberCustomField:yd},markGroupMemberList:{groupID:vn,markType:Object.assign(Object.assign({},bQ),{customValidator:s=>!(s<1e3)||"markType must be greater than or equal to 1000."}),enableMark:{required:!0,rules:["boolean"],allowEmpty:!1},userIDList:yd},initGroupAttributes:{groupID:vn,groupAttributes:dD},setGroupAttributes:{groupID:vn,groupAttributes:dD},deleteGroupAttributes:{groupID:vn,keyList:Object.assign(Object.assign({},yd),{allowEmpty:!0})},getGroupAttributes:{groupID:vn,keyList:Object.assign(Object.assign({},yd),{allowEmpty:!0})},getGroupCounters:{groupID:vn,keyList:{required:!1,rules:["array"],allowEmpty:!0}},setGroupCounters:{groupID:vn,counters:dD},increaseGroupCounter:{groupID:vn,key:vn,value:bQ},decreaseGroupCounter:{groupID:vn,key:vn,value:bQ}},CT={getGroupList:!0,createGroup:!0,dismissGroup:!0,joinGroup:!0,quitGroup:!0,searchGroupByID:!0,getGroupProfile:!0,updateGroupProfile:!0,changeGroupOwner:!0,getGroupOnlineMemberCount:!0,getGroupApplicationList:!0,handleGroupApplication:!0,getGroupMemberList:!0,getGroupMemberProfile:!0,addGroupMember:!0,deleteGroupMember:!0,setGroupMemberMuteTime:!0,setGroupMemberRole:!0,setGroupMemberNameCard:!0,setGroupMemberCustomField:!0,markGroupMemberList:!0,initGroupAttributes:!0,setGroupAttributes:!0,getGroupAttributes:!0,deleteGroupAttributes:!0,getGroupCounters:!0,setGroupCounters:!0,increaseGroupCounter:!0,decreaseGroupCounter:!0};var hT=new class{constructor(){this._installedSubPlugins=[],this.groupDataHandler=Yi,this.groupAction=wQ,this.groupAttribute=NQ,this.groupMember=kv,this.groupCounter=gB,this.name="Group"}install(s,n=[]){this._core=s,Wn.init(s),Yi.init(s),wQ.init(s,this),kv.init(s,this),aD.init(s),gB.init(s),NQ.init(s),ED.init(s),s.helper.registerValidateConfig({auth:CT,params:dT}),this._installSubPlugins(n);const{notificationCenter:g,InnerEvent:I}=s;g.subscribeInnerEvent(I.LOGOUT,this._reset,this),g.subscribeInnerEvent(I.DESTROY,this._dispose,this)}getInstalledSubPlugins(){return this._installedSubPlugins}_installSubPlugins(s){const{utils:{isArray:n}}=this._core;s&&n(s)&&s.forEach(g=>{var I;this._installedSubPlugins.includes(g.name)||((I=g.install)===null||I===void 0||I.call(g,this._core,this),this._installedSubPlugins.push(g.name))})}_reset(){Yi.reset(),NQ.reset(),gB.reset()}_dispose(){this._reset();const{notificationCenter:s,InnerEvent:n}=this._core;s.unSubscribeInnerEvent(n.LOGOUT,this._reset,this),s.unSubscribeInnerEvent(n.DESTROY,this._dispose,this)}};const cB=new class{init(s){this.core=s}},Fv="AV_MBR_LIST",BT="AV_BAN_MBR",UE={NORMAL_MESSAGE:3,GROUP_TIPS_HAS_ROAMING:4,GROUP_SYSTEM_MESSAGE:5,GROUP_TIPS_HAS_NO_ROAMING:6,BROADCAST_MESSAGE:17,MESSAGE_REVOKED:20,MESSAGE_REACTION:21,LIVE_CUSTOM_DATA:100},uh={GROUP_DISMISSED:5,QUIT_GROUP:8,AVCHATROOM_MEMBER_BANNED:21},CD=60,hD=2603,QT=2686,pT=2688,kQ=3122;class Ov{constructor(n){const{core:g,manager:I,groupID:E,getRequestParams:m,onSuccess:D,onFail:M}=n;this._name="Polling",this._core=g,this._manager=I,this._timeoutID=-1,this._isRunning=!1,this._groupID=E,this._getRequestParams=m,this._onSuccess=D,this._onFail=M}start(){this._isRunning=!0,this._request(),console.log(`${this._name}.start pollingInterval:${this._manager.getCurrentPollingInterval(this._groupID)}`)}isRunning(){return this._isRunning}_request(){return mA(this,void 0,void 0,function*(){try{const n=this._getRequestParams(this._groupID),g=yield function(E,m){return mA(this,void 0,void 0,function*(){const{longPollingKey:D,startSequence:M,startBroadcastSeq:T,simplifiedMessage:P}=E,W={Key:D,StartSeq:M,StartBroadcastSeq:T,DownsizeFlag:P,USP:1,HoldTime:90};return m.common.buildAndSendPacket({servcmd:"group_open_long_polling_http_svc.get_msg",data:W})})}(n,this._core);this._onSuccess(this._groupID,g);const I=this._manager.getCurrentPollingInterval(this._groupID);this._runNextPolling(I)}catch(n){this._onFail(this._groupID,n),this._runNextPolling(2e3)}})}_runNextPolling(n){this.isRunning()&&(this._timeoutID>-1&&clearTimeout(this._timeoutID),this._timeoutID=setTimeout(this._request.bind(this),n))}stop(){console.log(`${this._name}.stop timerID:${this._timeoutID}`),this._timeoutID>-1&&(clearTimeout(this._timeoutID),this._timeoutID=-1),this._isRunning=!1}}class Eh{constructor(n){this._maxLength=n,this._map=new Map}set(n){var g;if(this._map.size>=this._maxLength){const I=((g=this._map.entries().next().value)===null||g===void 0?void 0:g[0])||"";this._map.delete(I)}this._map.set(n,1)}has(n){return this._map.has(n)}delete(n){this.has(n)&&this._map.delete(n)}clear(){this._map.clear()}}const Hu=s=>s===UE.GROUP_TIPS_HAS_NO_ROAMING||s===UE.GROUP_TIPS_HAS_ROAMING,LQ=s=>s===UE.GROUP_SYSTEM_MESSAGE;function Gm(s){const n=function(g){const{E:I,MCT:E,MR:m,MP:D,MTS:M,GId:T,MS:P,CCD:W,F_Account:iA,IsSys:EA,GInf:RA,MsgBody:kA}=g,xA=yo(g,["E","MCT","MR","MP","MTS","GId","MS","CCD","F_Account","IsSys","GInf","MsgBody"]);return Object.assign({Event:I,MsgClientTime:E,MsgRandom:m,MsgPriority:D,MsgTimeStamp:M,ToGroupId:T,MsgSeq:P,CloudCustomData:W,From_Account:iA,IsSystemMsg:EA,GroupInfo:BD(RA),MsgBody:mT(kA)},xA)}(s);return function(g){const{Event:I}=g;(Hu(I)||LQ(I))&&(g.From_Account=g.From_Account||"@TIM#SYSTEM"),E=I,(E===UE.BROADCAST_MESSAGE||(m=>m===UE.NORMAL_MESSAGE)(I))&&function(m){const{core:{OuterConstant:D}}=cB;m.CloudCustomData=m.CloudCustomData||"",m.MsgBody=m.MsgBody.map(M=>{if(M.MsgType===D.MSG_CUSTOM){const{content:T={}}=M;M.content=Object.assign({Data:"",Desc:"",Ext:""},T)}return M})}(g);var E;Hu(I)&&function(m){const{GroupJoinType:D,MsgOperatorMemberExtraInfo:M={},MsgMemberExtraInfo:T,Operator_Account:P,List_Account:W,OpType:iA}=m.MsgBody||{};typeof D=="number"||iA!==1&&iA!==2||(m.MsgBody.GroupJoinType=iA===2?0:1),T||(m.MsgBody.MsgMemberExtraInfo=W?.map(EA=>({UserId:EA}))),iA!==1||T||(m.MsgBody.MsgMemberExtraInfo=[{UserId:M.UserId}]),m.MsgBody.MsgOperatorMemberExtraInfo=Object.assign({Operator_Account:P,ImageUrl:"",NickName:""},M)}(g),LQ(I)&&function(m){const{MsgOperatorMemberExtraInfo:D={},Operator_Account:M}=m.MsgBody||{};m.MsgBody.MsgMemberExtraInfo=Object.assign({UserId:M,ImageUrl:"",NickName:""},D),m.MsgBody=Object.assign({Authentication:"",RemarkInfo:"",MsgKey:1e3*m.MsgTimeStamp},m.MsgBody),m.MsgBody=Object.keys(m.MsgBody).filter(T=>T!=="MsgOperatorMemberExtraInfo").reduce((T,P)=>Object.assign(Object.assign({},T),{[P]:m.MsgBody[P]}),{})}(g)}(n),n}function BD(s){const n=s||{},{GN:g,GT:I,F_Hd:E,F_NN:m,F_Ll:D}=n,M=yo(n,["GN","GT","F_Hd","F_NN","F_Ll"]),T=Object.assign({GroupName:g,GroupType:I},M);return E&&(T.From_AccountHeadurl=E),m&&(T.From_AccountNick=m),D&&(T.From_AccountLevel=D),T}function mT(s){let n=s;Array.isArray(s)||(n=[s]);const g=n.map(I=>{const{O_Account:E,Opt:m,L_Account:D,RT:M,UDF:T,OpInf:P,OnlineInf:W,MsgMemberExtraInfo:iA}=I,EA=yo(I,["O_Account","Opt","L_Account","RT","UDF","OpInf","OnlineInf","MsgMemberExtraInfo"]),RA=Object.assign({Operator_Account:E,OpType:m,List_Account:D,ReportType:M,UserDefinedField:T},EA);return P&&(RA.MsgOperatorMemberExtraInfo=function(kA){const{Img:xA,NN:LA}=kA,SA=yo(kA,["Img","NN"]);return Object.assign({ImageUrl:xA,NickName:LA},SA)}(P)),iA&&(RA.MsgMemberExtraInfo=function(kA){return kA?.map(xA=>{const{Img:LA,NN:SA}=xA,OA=yo(xA,["Img","NN"]);return Object.assign({ImageUrl:LA,NickName:SA},OA)})}(iA)),W&&(RA.OnlineMemberInfo=function(kA){const{ET:xA,Num:LA}=kA;return{ExpireTime:xA,OnlineMemberNum:LA}}(W)),RA});return Array.isArray(s)?g:g[0]}var dh=new class{constructor(){this._name="MessageParser",this._sequenceList=new Eh(200),this._messageIDList=new Eh(100),this._broadcastMessageIDMap=new Map,this._reportMessageStackedCount=0}init(s,n){this._core=s,this._avChatRoomHandler=n}onMessageReceived(s,n,g=!1){this._sortServerMessageList({groupID:s,serverMessageList:n,isHistoryMessage:g});const I=this._handleMessageList(s,n);if(I.length===0)return;if(!g){const{appStore:{conversationStore:T},OuterConstant:{CONV_GROUP:P},common:{buildLastMessage:W}}=this._core,iA=W(I[I.length-1]);T.updateConversation(`${P}${s}`,{lastMessage:iA})}this._checkMessageStacked(I);const E=I.filter(T=>T.isModified===!0),m=I.filter(T=>T.isModified===!1),{OuterEvent:{MESSAGE_RECEIVED:D,MESSAGE_MODIFIED:M}}=this._core;E.length>0&&this._emitEvent({name:M,data:E}),m.length>0&&this._emitEvent({name:D,data:m})}_sortServerMessageList(s){const{groupID:n,serverMessageList:g,isHistoryMessage:I}=s;let E=[];this._avChatRoomHandler.isPollingSimplifiedMessage()&&!I?(g.sort((m,D)=>m.MS-D.MS),E=g.map(m=>m.MS)):(g.sort((m,D)=>m.MsgSeq-D.MsgSeq),E=g.map(m=>m.MsgSeq)),console.log(`${this._name}._sortServerMessageList groupID:${n} count:${E.length} sequenceList:${E}`),E.length=0}_handleMessageList(s,n){var g;const{message:{messageDataHandler:I,messageHelper:E}}=this._core,m=this._avChatRoomHandler.isPollingSimplifiedMessage(),D=[],M=n.length;for(let T=0;Tg===UE.MESSAGE_REVOKED)(n)?(this._handleMessageRevoked(s),null):(g=>g===UE.LIVE_CUSTOM_DATA)(n)?(this._onLiveCustomData(s),null):(g=>g===UE.MESSAGE_REACTION)(n)?null:s:(console.warn(`${this._name}.onMessageReceived unknown event:${n}`),null)}_createMessage(s){const{message:{messageFactory:n},OuterConstant:g}=this._core;let I=g.CONV_GROUP;s.elements.type===g.MSG_GRP_SYS_NOTICE&&(I=g.CONV_SYSTEM);const E=!!s.isSystemMessage,m=n.createMessage(Object.assign(Object.assign({},s),{conversationType:I,isSystemMessage:E,flow:"in"}));return m.setElement(s.elements),m}_filterDuplicateMessage(s){const{common:n}=this._core;if(!n.isUnlimitedAVChatRoom()){if(this._sequenceList.has(s.sequence))return null;this._sequenceList.set(s.sequence)}const g=this._messageIDList.has(s.ID);return g?(console.warn(`${this._name}_filterDuplicateMessageItem ID:${s.ID} has:${g}`),null):(this._messageIDList.set(s.ID),s)}_handleMessageRevoked(s){const{OuterConstant:n,OuterEvent:{MESSAGE_REVOKED:g}}=this._core,{ToGroupId:I,MsgBody:{RevokeMsgList:E},RevokerInfo:{Revoker_Account:m,Reason:D=""}}=s,M=[];E.forEach(T=>{const{TinyId:P,MsgClientTime:W,Random:iA,MsgSeq:EA}=T,RA={conversationID:`${n.CONV_GROUP}${I}`,ID:`${P}-${W}-${iA}`,revoker:m,revokeReason:D,revokerInfo:{userID:m,nick:"",avatar:""},sequence:EA};M.push(RA)}),M.length!==0&&this._emitEvent({name:g,data:M})}_onLiveCustomData(s){const{OuterEvent:{ROOM_CUSTOM_DATA_RECEIVED:n}}=this._core,{ToGroupId:g,MsgSeq:I,MsgTimeStamp:E,MsgBody:m}=s,D=m?.Content||m?.MsgContent||"";this._emitEvent({name:n,data:D}),console.log(`${this._name}._onLiveCustomData groupID:${g} sequence:${I} time:${E} data:${D}`)}_onGroupDismissed(s){this._avChatRoomHandler.reset(s)}_checkMessageStacked(s){const{length:n}=s;if(n>=100&&this._reportMessageStackedCount<5){const g=this._avChatRoomHandler.getJoinedGroups();this._core.ssoLog.info("MessageStacked",`count:${n} groupID:${g.join(",")}`),this._reportMessageStackedCount+=1}}_emitEvent(s){this._core.notificationCenter.emitOuterEvent(s.name,s)}onBroadcastMessageReceived(s){const{message:{messageHelper:n},OuterEvent:{MESSAGE_RECEIVED:g}}=this._core,I=this._avChatRoomHandler.isPollingSimplifiedMessage(),E=[],m=s.length;for(let D=0;D0&&this._emitEvent({name:g,data:E})}_updateLocalOnlineMemberCountFromTips(s){const{utils:{isEmpty:n}}=this._core,{ToGroupId:g,MsgBody:{OnlineMemberInfo:I}}=s;if(n(I))return;const{OnlineMemberNum:E=0,ExpireTime:m=CD}=I,D=Date.now();let M=this._avChatRoomHandler.getLocalOnlineMemberCount(g);n(M)?M={lastReqTime:0,lastSyncTime:0,latestUpdateTime:D,memberCount:E,expireTime:m}:(M.latestUpdateTime=D,M.memberCount=E),this._avChatRoomHandler.updateLocalOnlineMemberCount(g,M)}reset(){this._reportMessageStackedCount=0,this._sequenceList.clear(),this._messageIDList.clear(),this._broadcastMessageIDMap.clear()}};const lB=s=>{const{core:{store:n}}=cB;return(n.get("cloudConfig")||{})[s]},Ch=s=>{const{core:{utils:{isUndefined:n}}}=cB;return!n(s)},UQ=()=>{const s=lB("polling_interval");return Ch(s)?parseInt(s,10):300},IB=()=>{const s=lB("polling_simplified_msg");return Ch(s)?parseInt(s,10):0};var Pv=new class{constructor(){this._name="GetAVChatRoomOnlineMemberCount"}init(s,n){this._core=s,this._parentPlugin=n;const{helper:g}=s;g.registerApi({apiName:"getGroupOnlineMemberCount",context:this,matcher:()=>n.getInstalledSubPlugins().length>0})}getGroupOnlineMemberCount(s){return mA(this,void 0,void 0,function*(){const{appStore:{groupStore:n},OuterConstant:g}=this._core,I=n.getGroup(s);return I?I.type===g.GRP_AVCHATROOM?this._getOnlineMemberCount(s):this._parentPlugin.groupAction.getGroupOnlineMemberCount(s):{code:0,data:{memberCount:0}}})}_getOnlineMemberCount(s){return mA(this,void 0,void 0,function*(){const n="_getOnlineMemberCount",{utils:{isEmpty:g}}=this._core,I=Pg.getLocalOnlineMemberCount(s);if(g(I)||this._isExpired(s)){const{memberCount:E=0}=yield this._getOnlineMemberCountFromServer(s);return console.log(`${this._name}.${n} ok, groupID:${s} memberCount:${E} from server.`),{code:0,data:{memberCount:E}}}return console.log(`${this._name}.${n} ok, groupID:${s} memberCount:${I.memberCount} from local.`),{code:0,data:{memberCount:I.memberCount}}})}_isExpired(s){const n=Pg.getLocalOnlineMemberCount(s),g=Date.now(),I=g-n.lastSyncTime>1e3*n.expireTime,E=g-n.latestUpdateTime>1e4,m=g-n.lastReqTime>3e3;return I&&E&&m}_getOnlineMemberCountFromServer(s){return mA(this,void 0,void 0,function*(){const n="_getOnlineMemberCountFromServer";try{const g=yield function(M,T){return mA(this,void 0,void 0,function*(){const P={GroupId:M};return T.common.buildAndSendPacket({servcmd:"group_open_http_svc.get_online_member_num",data:P})})}(s,this._core),{OnlineMemberNum:I=0,ExpireTime:E=CD}=g||{},m=Date.now(),D={lastSyncTime:m,latestUpdateTime:m,lastReqTime:m,memberCount:I,expireTime:E};return Pg.updateLocalOnlineMemberCount(s,D),{memberCount:I}}catch(g){const I=new this._core.helper.ChatError({functionName:n,code:g?.errorCode,message:g?.errorInfo});throw console.error(`${this._name}.${n} fail:`,I),I}})}},Pg=new class{constructor(){this._name="AVChatRoomHandler",this._joinedGroupMap=new Map,this._pollingRequestInfoMap=new Map,this._pollingInstanceMap=new Map,this._onlineMemberCountMap=new Map,this._pollingIntervalMap=new Map,this._pollingNoMessageCountMap=new Map,this._membersReqInfoMap=new Map,this._startBroadcastSequence=1}init(s,n){this._core=s,this._parentPlugin=n,dh.init(s,this),s.ssoLog.debug("AVChatRoomHandler.init")}onAVChatRoomSystemNotification(s){const{OuterConstant:{GRP_AVCHATROOM:n}}=this._core,{GroupTips:g=[]}=s;for(let I=0;I0&&(n=[...this._joinedGroupMap.values()].filter(g=>g.type===s)),n}handleJoinGroupResult(s){return mA(this,void 0,void 0,function*(){const{utils:{isUndefined:n},OuterConstant:{CONV_GROUP:g},apiMap:{getConversationProfile:I},OuterConstant:E}=this._core,{longPollingKey:m,group:D,historyMessageList:M=[]}=s,{groupID:T}=D;return yield this._preCheck(D),this._joinedGroupMap.set(T,D),this._parentPlugin.groupDataHandler.updateLocalGroup([D]),this._parentPlugin.groupDataHandler.emitGroupListUpdate(),I(`${g}${T}`),Pv.getGroupOnlineMemberCount(T),M.length>0&&dh.onMessageReceived(T,M,!0),n(m)?{code:0,data:{status:E.JOIN_STATUS_SUCCESS,group:D}}:{code:0,data:this.startMessageLongPolling(s)}})}isGroupCounterUpdated(s){return this._parentPlugin.groupCounter.isGroupCounterUpdated(s)}handleGroupCounterUpdated(s){this._parentPlugin.groupCounter.handleGroupCounterUpdated(s)}_preCheck(s){return mA(this,void 0,void 0,function*(){const{common:n,OuterConstant:g,helper:I,apiMap:{quitGroup:E},ssoLog:m}=this._core;if(n.isUnlimitedAVChatRoom()){if(this._pollingInstanceMap.size>(()=>{const T=lB("polling_count_limit");return Ch(T)&&T>0?parseInt(T,10):20})())throw new I.ChatError({code:pT,message:"the count of longPolling exceeds the max limit"});return}if(this._joinedAVChatRoomCount()===0||s.type===g.GRP_LIVE)return;const[D,M]=this._joinedGroupMap.entries().next().value;if(M.selfInfo.role===g.GRP_MBR_ROLE_OWNER)this._parentPlugin.groupDataHandler.deleteLocalGroup(D);else try{yield E(D)}catch(T){m.debug("quitGroup",`${this._name}._preCheck quitGroup failed, groupID:${D} info:`,T)}this.reset(D)})}startMessageLongPolling(s){const{OuterConstant:n}=this._core,{longPollingKey:g,startSequence:I=1,group:E}=s,{groupID:m}=E;return this._pollingRequestInfoMap.set(m,{longPollingKey:g,startSequence:I}),this._pollingIntervalMap.set(m,UQ()),this._startPolling(m),this._reportLongPollingCount(),{status:n.JOIN_STATUS_SUCCESS,group:E}}_startPolling(s){if(this._core.ssoLog.debug("_startPolling",`${this._name}._startPolling groupID:${s}`),this._pollingInstanceMap.has(s)){const g=this._pollingInstanceMap.get(s);return void(g?.isRunning()||g==null||g.start())}const n=new Ov({core:this._core,manager:this,groupID:s,getRequestParams:this._handleRequestParams.bind(this),onSuccess:this._handleSuccess.bind(this),onFail:this._handleFailure.bind(this)});n.start(),this._pollingInstanceMap.set(s,n)}_handleRequestParams(s){const{longPollingKey:n,startSequence:g}=this._pollingRequestInfoMap.get(s)||{};return s===[...this._pollingInstanceMap.keys()][0]?{longPollingKey:n,startSequence:g,startBroadcastSeq:this._startBroadcastSequence,simplifiedMessage:IB()}:{longPollingKey:n,startSequence:g,simplifiedMessage:IB()}}_handleSuccess(s,n){const{ErrorCode:g}=n;if(g!==0){const{longPollingKey:I,startSequence:E}=this._pollingRequestInfoMap.get(s)||{};return void console.warn(`${this._name}._handleSuccess groupID:${s} key:${I} startSeq:${E} errorCode:${g}`)}this._hasJoinedAVChatRoom(s)&&this._handleResponseData(s,n)}_handleResponseData(s,n){const{Key:g,NextSeq:I,NextBroadcastSeq:E,RspMsgList:m=[],RspBroadcastMsgList:D=[]}=n;if(g&&I&&this._pollingRequestInfoMap.set(s,{longPollingKey:g,startSequence:I}),E&&E>this._startBroadcastSequence&&(this._startBroadcastSequence=E),m.length>0)this._getPollingNoMessageCount(s)!==0&&(this._updatePollingNoMessageCount(s,0),this._pollingIntervalMap.set(s,UQ())),dh.onMessageReceived(s,m);else{let M=this._getPollingNoMessageCount(s);if(M+=1,this._updatePollingNoMessageCount(s,M),M===(()=>{const T=lB("polling_no_msg_count");return Ch(T)?parseInt(T,10):20})()){const T=UQ()+(()=>{const P=lB("polling_interval_plus");return Ch(P)?parseInt(P,10):2e3})();this._pollingIntervalMap.set(s,T)}}D.length>0&&dh.onBroadcastMessageReceived(D)}_handleFailure(s,n){const{ssoLog:g,utils:{safeStringify:I}}=this._core;g.warn("polling",`${this._name}._handleFailure groupID:${s} error: ${I(n)}`)}_joinedAVChatRoomCount(){const{OuterConstant:s}=this._core;let n=[];return this._joinedGroupMap.size>0&&(n=this.getJoinedGroups().filter(g=>g.type===s.GRP_AVCHATROOM)),n.length}_hasJoinedAVChatRoom(s){return this._joinedGroupMap.has(s)}getJoinedGroups(){return[...this._joinedGroupMap.values()]}updateLocalLiveGroup(s,n){this._joinedGroupMap.set(s,n),this._parentPlugin.groupDataHandler.updateLocalGroup([n])}handleLiveHistoryMessages(s,n){dh.onMessageReceived(s,n,!0)}isOverFrequencyLimit(s){if(!this._membersReqInfoMap.has(s))return this._membersReqInfoMap.set(s,{startTime:Date.now(),requestCount:1}),!1;let{startTime:n,requestCount:g}=this._membersReqInfoMap.get(s);const{interval:I,count:E}=(()=>{const m=lB("av_members_freq_limit");if(Ch(m)){const{interval:D,count:M}=JSON.parse(m);if(M>0&&D>0)return{interval:D,count:M}}return{interval:30,count:4}})();return Date.now()-n>1e3*I?(this._membersReqInfoMap.set(s,{startTime:Date.now(),requestCount:1}),!1):(g+=1,this._membersReqInfoMap.set(s,{startTime:n,requestCount:g}),g>E)}_stopPolling(s){if(this._core.ssoLog.debug("_stopPolling",`${this._name}._stopPolling groupID:${s}`),s){const{appStore:{conversationStore:n},OuterConstant:{CONV_GROUP:g}}=this._core;n.deleteConversation(`${g}${s}`);const I=this._pollingInstanceMap.get(s);return I?.stop(),this._parentPlugin.groupDataHandler.deleteLocalGroup(s),this._pollingInstanceMap.delete(s),this._pollingRequestInfoMap.delete(s),this._joinedGroupMap.delete(s),this._onlineMemberCountMap.delete(s),this._pollingIntervalMap.delete(s),this._pollingNoMessageCountMap.delete(s),void this._membersReqInfoMap.delete(s)}for(const n of this._pollingInstanceMap.values())n?.stop();this._pollingInstanceMap.clear(),this._pollingRequestInfoMap.clear(),this._joinedGroupMap.clear(),this._onlineMemberCountMap.clear(),this._pollingIntervalMap.clear(),this._pollingNoMessageCountMap.clear(),this._membersReqInfoMap.clear()}_updatePollingNoMessageCount(s,n){this._pollingNoMessageCountMap.set(s,n)}_getPollingNoMessageCount(s){return this._pollingNoMessageCountMap.get(s)||0}_reportLongPollingCount(){const s=this._joinedGroupMap.size;if(s>1){const{common:n,OuterConstant:g,ssoLog:I}=this._core,E=n.isUnlimitedAVChatRoom()?1:0,m=[],D=[];Array.from(this._joinedGroupMap.values()).forEach(({groupID:M,type:T})=>{T===g.GRP_LIVE?D.push(M):m.push(M)}),I.info("longPollingCount",String(s),{moreMessage:`av:${m.join(",")} live:${D.join(",")} code: ${E}`,eventType:29})}}reset(s){this._stopPolling(s),this._startBroadcastSequence=1,dh.reset()}},xv=new class{init(s,n){this._core=s,this._parentPlugin=n;const{helper:g}=s;g.registerApi({apiName:"joinGroup",context:this,matcher:()=>n.getInstalledSubPlugins().length>0})}joinGroup(s){return mA(this,void 0,void 0,function*(){const{OuterConstant:n}=this._core,g=yield this._parentPlugin.groupAction.joinGroup(s),{data:{status:I,group:{type:E}}}=g;return E===n.GRP_AVCHATROOM?I===n.JOIN_STATUS_ALREADY_IN_GROUP?g:Pg.handleJoinGroupResult(g.data):g})}},fT=new class{init(s,n){this._core=s,this._parentPlugin=n;const{helper:g}=s;g.registerApi({apiName:"quitGroup",context:this,matcher:()=>n.getInstalledSubPlugins().length>0})}quitGroup(s){return mA(this,void 0,void 0,function*(){const{OuterConstant:n}=this._core,g=yield this._parentPlugin.groupAction.quitGroup(s),{data:{type:I}}=g;return I===n.GRP_AVCHATROOM&&Pg.reset(s),g})}},Yv=new class{init(s,n){this._core=s,this._parentPlugin=n;const{helper:g}=s;g.registerApi({apiName:"dismissGroup",context:this,matcher:()=>n.getInstalledSubPlugins().length>0})}dismissGroup(s){return mA(this,void 0,void 0,function*(){const{OuterConstant:n}=this._core,g=yield this._parentPlugin.groupAction.dismissGroup(s),{data:{type:I}}=g;return I===n.GRP_AVCHATROOM&&Pg.reset(s),g})}},bm=new class{constructor(){this._name="GetAVChatRoomMemberList"}init(s,n){this._core=s,this._parentPlugin=n;const{helper:g}=s;g.registerApi({apiName:"getGroupMemberList",context:this,matcher:()=>n.getInstalledSubPlugins().length>0})}getGroupMemberList(s){return mA(this,void 0,void 0,function*(){const{appStore:{groupStore:n},helper:g,OuterConstant:I}=this._core,{groupID:E}=s,m=n.getGroup(E);if(m?.type===I.GRP_AVCHATROOM&&g.checkBusinessCapabilityBits(Fv)){if(Pg.isOverFrequencyLimit(E))throw{code:2996,message:`Over frequency limit: get_members-${E}`};return this._getGroupMemberList(s)}return this._parentPlugin.groupMember.getGroupMemberList(s)})}_getGroupMemberList(s){return mA(this,void 0,void 0,function*(){const n="_getGroupMemberList",{helper:g}=this._core;try{const I=yield function(M,T){return mA(this,void 0,void 0,function*(){const{groupID:P,offset:W=0}=M,iA={GroupId:P,Timestamp:W};return T.common.buildAndSendPacket({servcmd:"group_open_avchatroom_http_svc.get_members",data:iA})})}(s,this._core),{MemberList:E=[],NextTimestamp:m=0}=I||{},D=this._handleMemberList(E);return console.log(`${this._name}.${n} ok, groupID:${s.groupID} count:${D.length} nextOffset:${m}`),{code:0,data:{memberList:D,offset:m}}}catch(I){const E=new g.ChatError({functionName:n,code:I?.errorCode,message:I?.errorInfo});throw console.error(`${this._name}.${n} fail:`,E),E}})}_handleMemberList(s){return s.map(n=>{const{Member_Account:g,NickName:I="",Avatar:E="",Remark:m="",JoinTime:D=0,Marks:M=[]}=n;return{userID:g,nick:I,avatar:E,remark:m,joinTime:D,marks:M,isOnline:!0}})}},km=new class{constructor(){this._name="DeleteAVChatRoomMember"}init(s,n){this._core=s,this._parentPlugin=n;const{helper:g}=s;g.registerApi({apiName:"deleteGroupMember",context:this,matcher:()=>n.getInstalledSubPlugins().length>0})}deleteGroupMember(s){return mA(this,void 0,void 0,function*(){const n="deleteGroupMember",{appStore:{groupStore:g},utils:{isUndefined:I},helper:E,OuterConstant:m}=this._core,{groupID:D}=s,M=g.getGroup(D);if(I(M))throw new E.ChatError({functionName:n,code:hD});if(M.type===m.GRP_AVCHATROOM){if(E.checkBusinessCapabilityBits(BT))return this._deleteGroupMember(s);throw new E.ChatError({functionName:n,code:kQ})}return this._parentPlugin.groupMember.deleteGroupMember(s)})}_deleteGroupMember(s){return mA(this,void 0,void 0,function*(){const n="_deleteGroupMember",{appStore:{groupStore:g},helper:I,ssoLog:E}=this._core,{groupID:m,duration:D=0,userIDList:M}=s;if(D===0)throw new I.ChatError({functionName:n,code:QT});try{return yield function(T,P){return mA(this,void 0,void 0,function*(){const{groupID:W,userIDList:iA,duration:EA,reason:RA}=T,kA={GroupId:W,Members_Account:iA,Duration:EA,Description:RA};return P.common.buildAndSendPacket({servcmd:"group_open_http_svc.ban_group_member",data:kA})})}(s,this._core),E.debug(n,`${this._name}.${n} ok, groupID:${m}`),{code:0,data:{group:g.getGroup(m),userIDList:M}}}catch(T){throw new I.ChatError({functionName:n,code:T?.errorCode,message:T?.errorInfo})}})}},Dd=new class{constructor(){this._name="MarkAVChatRoomMember"}init(s){this._core=s;const{helper:n}=s;n.registerApi({apiName:"markGroupMemberList",context:this})}markGroupMemberList(s){return mA(this,void 0,void 0,function*(){const n="markGroupMemberList",{groupID:g,markType:I,enableMark:E,userIDList:m=[]}=s,D=this._generateRequestData(s);try{const M=yield function(iA,EA){return mA(this,void 0,void 0,function*(){const{groupID:RA,operationType:kA,memberList:xA}=iA,LA={GroupId:RA,CommandType:kA,MemberList:xA};return EA.common.buildAndSendPacket({servcmd:"group_open_avchatroom_http_svc.modify_user_info",data:LA})})}(D,this._core),{MemberList:T=[]}=M||{},{successUserIDList:P,failureUserIDList:W}=this._handleResult(T,m);return{code:0,data:{successUserIDList:P,failureUserIDList:W},successLog:{message:`${this._name}.${n} ok, groupID:${g} markType:${I} enableMark:${E} success:${P.length} fail:${W.length}`}}}catch(M){throw new this._core.helper.ChatError({functionName:n,code:M?.errorCode,message:M?.errorInfo})}})}_generateRequestData(s){const{groupID:n,markType:g,enableMark:I,userIDList:E=[]}=s,m=I===!0?1:2,D=[...E];return D.length>500&&console.warn(`${this._name}._generateRequestData, the length of userIDList cannot exceed 500`),{groupID:n,operationType:m,memberList:D.map(M=>({Member_Account:M,Marks:[g]}))}}_handleResult(s,n){const g=[],I=[];return s.length===n.length?(g.push(...n),{successUserIDList:g,failureUserIDList:I}):(n.forEach(E=>{s.find(m=>m.Member_Account===E)?g.push(E):I.push(E)}),{successUserIDList:g,failureUserIDList:I})}},Vv=new class{init(s,n){s.ssoLog.debug("AVChatRoomAction.init"),xv.init(s,n),fT.init(s,n),Yv.init(s,n),bm.init(s,n),Pv.init(s,n),km.init(s,n),Dd.init(s)}},Jv=new class{constructor(){this._name="LiveHandler"}init(s){this._core=s;const{helper:n,ssoLog:g}=s;n.registerExperimentalAPI("startMessageLongPolling",this),n.registerExperimentalAPI("stopMessageLongPolling",this),g.debug("LiveHandler.init")}startMessageLongPolling(s){const{common:n,utils:{isEmpty:g},OuterConstant:I,ssoLog:E}=this._core,{groupID:m,longPollingKey:D,longPollingSequence:M=1}=s;if(g(D))return E.warn("startMessageLongPolling",`${this._name}.startMessageLongPolling longPollingKey is empty.`),Promise.resolve({});Pg.hasPollingInstance(m)&&this.stopMessageLongPolling({groupID:m});const T=Pg.getJoinedLiveList(),P=n.isUnlimitedAVChatRoom();!P&&T.length>0&&this.stopMessageLongPolling({groupID:T[0].groupID}),E.debug("startMessageLongPolling",`${this._name}.startMessageLongPolling isUnlimited:${P} groupID:${m} longPollingKey:${D} longPollingSequence:${M}`);const W={groupID:m,type:I.GRP_LIVE};return Pg.updateLocalLiveGroup(m,W),this._getLiveHistoryMessages({groupID:m,longPollingKey:D,startSequence:M}),Pg.startMessageLongPolling({group:W,longPollingKey:D,startSequence:M})}stopMessageLongPolling(s){const{groupID:n}=s;return Pg.reset(n),this._core.ssoLog.debug("stopMessageLongPolling",`${this._name}.stopMessageLongPolling ok, groupID:${n}`),Promise.resolve({groupID:n})}_getLiveHistoryMessages(s){return mA(this,void 0,void 0,function*(){const{ssoLog:n}=this._core,{groupID:g}=s;try{const I=yield function(m,D){return mA(this,void 0,void 0,function*(){const{groupID:M,longPollingKey:T,startSequence:P}=m,W={GroupId:M,LongPollingKey:T,PullPreSeq:P};return D.common.buildAndSendPacket({servcmd:"group_open_http_svc.get_huge_group_msg",data:W})})}(s,this._core),{RspMsgList:E=[]}=I||{};n.debug("_getLiveHistoryMessages",`${this._name}._getLiveHistoryMessages ok, groupID:${g} count:${E.length}`),E.length>0&&Pg.handleLiveHistoryMessages(g,E)}catch(I){n.debug("_getLiveHistoryMessages",`${this._name}._getLiveHistoryMessages failed, groupID:${g} info:${I.message}`)}})}},Lm=new class{constructor(){this.name="AVChatRoom"}install(s,n){this._core=s,cB.init(s),Pg.init(s,n),Vv.init(s,n),Jv.init(s);const{notificationCenter:g,InnerEvent:I}=s,{InnerEventSubType:E}=g;g.subscribeInnerEvent(I.MESSAGE_PUSH,E.GROUP_SYSTEM_NOTIFICATION,this._onAVChatRoomSystemNotification,this),g.subscribeInnerEvent(I.LOGOUT,this._reset,this),g.subscribeInnerEvent(I.DESTROY,this._dispose,this)}_onAVChatRoomSystemNotification(s){Pg.onAVChatRoomSystemNotification(s)}_reset(){Pg.reset()}_dispose(){this._reset();const{notificationCenter:s,InnerEvent:n}=this._core,{InnerEventSubType:g}=s;s.unSubscribeInnerEvent(n.MESSAGE_PUSH,g.GROUP_SYSTEM_NOTIFICATION,this._onAVChatRoomSystemNotification,this),s.unSubscribeInnerEvent(n.LOGOUT,this._reset,this),s.unSubscribeInnerEvent(n.DESTROY,this._dispose,this)}};const $a=new class{init(s){this.core=s}},Um="message",uB="user",EB={OR:"or",AND:"and"},yI=20,yT=20,Hv=20,hh={required:!1,rules:["array"],allowEmpty:!0,customValidator:s=>!s||!!(Array.isArray(s)&&s.length<=5)||"keywordList should be an array and length <= 5"},Fm={required:!1,rules:["string"],allowEmpty:!0,customValidator:s=>!s||!![EB.OR,EB.AND].includes(s)||"keywordListMatchType should be OR or AND"},QC={required:!1,rules:["number"],allowEmpty:!0,customValidator:s=>typeof s=="number"&&s>=1&&s<=100||"count must be a number between 1 and 100"},FQ={required:!1,rules:["string"],allowEmpty:!0},qv={required:!1,rules:["array"],allowEmpty:!0,customValidator:s=>{const{OuterConstant:n}=$a.core;if(!Array.isArray(s))return"groupTypeList should be an array";const g=[n.GRP_PUBLIC,n.GRP_COMMUNITY,n.GRP_WORK,n.GRP_MEETING];let I=!1;for(let E=0;E{const{OuterConstant:n}=$a.core,g=[n.MSG_TEXT,n.MSG_IMAGE,n.MSG_AUDIO,n.MSG_FILE,n.MSG_VIDEO,n.MSG_LOCATION,n.MSG_CUSTOM,n.MSG_MERGER];let I=!1;for(let E=0;E{const{OuterConstant:n}=$a.core;return!(!s?.startsWith(n.CONV_C2C)&&!s?.startsWith(n.CONV_GROUP)&&s!==n.CONV_SYSTEM)||"conversationID is invalid"}},Om=s=>({required:!1,rules:["number"],allowEmpty:!0,customValidator:n=>typeof n=="number"&&n>=0||`${s} should be a number >= 0';`}),QD={required:!1,rules:["string"],allowEmpty:!0,customValidator:s=>{const{OuterConstant:n}=$a.core;return!![n.GENDER_FEMALE,n.GENDER_MALE].includes(s)||"gender is invalid"}},Pm={searchCloudMessages:{keywordList:hh,keywordListMatchType:Fm,cursor:FQ,senderUserIDList:{required:!1,rules:["array"],allowEmpty:!0,customValidator:s=>!!(Array.isArray(s)&&s.length<=5)||"senderUserIDList should be an array and length <= 5"},messageTypeList:Kv,conversationID:jv,timePosition:Om("timePosition"),timePeriod:Om("timePeriod")},searchCloudUsers:{keywordList:hh,keywordListMatchType:Fm,cursor:FQ,count:QC,miniBirthday:Om("miniBirthday"),maxBirthday:Om("maxBirthday"),gender:QD},searchCloudGroupMembers:{keywordList:hh,keywordListMatchType:Fm,cursor:FQ,count:QC,groupTypeList:qv,groupIDList:{required:!1,rules:["array"],allowEmpty:!0}},searchCloudGroups:{keywordList:hh,keywordListMatchType:Fm,cursor:FQ,count:QC,groupTypeList:qv}},pD={searchCloudMessages:!0,searchCloudUsers:!0,searchCloudGroupMembers:!0,searchCloudGroups:!0};var mD=new class{constructor(){this.name="CloudSearch"}install(s){this._core=s,$a.init(s),s.helper.registerApi({apiName:"searchCloudMessages",context:this}),s.helper.registerApi({apiName:"searchCloudUsers",context:this}),s.helper.registerApi({apiName:"searchCloudGroupMembers",context:this}),s.helper.registerApi({apiName:"searchCloudGroups",context:this}),s.helper.registerValidateConfig({auth:pD,params:Pm})}searchCloudMessages(s){return mA(this,void 0,void 0,function*(){try{const{OuterConstant:n,helper:g}=this._core,{conversationID:I,timePeriod:E,timePosition:m}=s,D=yo(s,["conversationID","timePeriod","timePosition"]),M=Object.assign({count:100},D);I&&(I.startsWith(n.CONV_C2C)?M.account=I.replace(n.CONV_C2C,""):I.startsWith(n.CONV_GROUP)&&(M.groupID=I.replace(n.CONV_GROUP,""))),this._setTimeRangeParams(M,{timePeriod:E,timePosition:m});const T=yield function(LA){return mA(this,void 0,void 0,function*(){const{count:SA,keywordList:OA,keywordListMatchType:JA,senderUserIDList:re,messageTypeList:ne,endTime:_i,startTime:Ti,cursor:kt,account:Ni,groupID:cs}=LA,Se={Count:SA,KeywordList:OA,MatchType:JA,SendUserIDList:re,MsgTypeList:ne,EndTime:_i,StartTime:Ti,Cursor:kt,PeerAccount:Ni,GroupID:cs};return $a.core.common.buildAndSendPacket({servcmd:"message_search.query",data:Se})})}(M);if(!T)return{code:0,data:{}};const{ErrorCode:P,ErrorInfo:W,TotalCount:iA,Cursor:EA="",ConversationMsgs:RA=[]}=T;if(P!==0)throw{errorCode:P,errorInfo:W};const kA=`keywordList:${s.keywordList} keywordListMatchType:${s.keywordListMatchType} cursor:${s.cursor} res: totalCount:${iA}`;return{code:0,data:{searchResultList:RA.map(LA=>{const{MsgList:SA,Count:OA,GroupID:JA,UserID:re}=LA,ne=JA?`${n.CONV_GROUP}${JA}`:`${n.CONV_C2C}${re}`;if(this._isSearchingAllConversations(s)&&OA>1)return{conversationID:ne,messageCount:OA,messageList:[]};const _i=SA.map(Ti=>g.isEmpty(JA)?function(kt,Ni){const cs=Ni.OuterConstant.CONV_C2C,Se=Ni.message.messageHelper.parseServerPushMessage(kt),Bt=Ni.message.messageFactory.createMessage(Object.assign(Object.assign({},Se),{conversationType:cs,flow:"in"}));return Bt.setElement(Se.elements),Bt}(Ti,this._core):function(kt,Ni){const cs=Ni.OuterConstant.CONV_GROUP,Se=Ni.message.messageHelper.parseServerGroupMessage(kt),Bt=Ni.message.messageFactory.createMessage(Object.assign(Object.assign({},Se),{conversationType:cs,flow:"in"}));return Bt.setElement(Se.elements),Bt}(Ti,this._core));return{conversationID:ne,messageCount:OA,messageList:_i}}),cursor:EA,totalCount:iA},successLog:{message:kA}}}catch(n){const{errorCode:g,errorInfo:I}=n||{};this._handleError({errorCode:g,errorInfo:I,searchType:Um,functionName:"searchCloudMessages"})}})}searchCloudUsers(s){return mA(this,void 0,void 0,function*(){var n;try{const{keywordListMatchType:g,count:I=yT}=s,E=yo(s,["keywordListMatchType","count"]),m=Object.assign({count:I,keywordListMatchType:g===EB.AND?1:0},E);this._setBirthdayRangeParams(m,s);const D=yield function(kA){return mA(this,void 0,void 0,function*(){const{count:xA,keywordList:LA,keywordListMatchType:SA,miniBirthday:OA,maxBirthday:JA,cursor:re,gender:ne}=kA,_i={Count:xA,Keywords:LA,KeywordMatchType:SA,Cursor:re,UserBirthStart:OA,UserBirthEnd:JA,Gender:ne};return $a.core.common.buildAndSendPacket({servcmd:"user_search.query",data:_i})})}(m);if(!D)return{error:0,data:{}};const{ErrorCode:M,ErrorInfo:T,TotalCount:P,Cursor:W="",Users:iA=[]}=D;if(M!==0)throw{errorCode:M,errorInfo:T};const EA=`keywordList:${s.keywordList} keywordListMatchType:${s.keywordListMatchType} cursor:${s.cursor} count:${s.count} res: totalCount:${P}`,RA=[];for(let kA=0,xA=iA.length;kA({tag:re.Tag,value:re.StrValue})),JA=(n=this._core.user.userProfile)===null||n===void 0?void 0:n.createProfile(LA,OA);RA.push(JA)}return{code:0,data:{searchResultList:RA,cursor:W,totalCount:P},successLog:{message:EA}}}catch(g){const{errorCode:I,errorInfo:E}=g||{};this._handleError({errorCode:I,errorInfo:E,searchType:uB,functionName:"searchCloudUsers"})}})}searchCloudGroupMembers(s){return mA(this,void 0,void 0,function*(){try{const{count:n=Hv,keywordListMatchType:g}=s,I=yo(s,["count","keywordListMatchType"]),E=Object.assign({count:n,keywordListMatchType:g===EB.AND?1:0},I),m=yield function(RA){return mA(this,void 0,void 0,function*(){const{count:kA,keywordList:xA,keywordListMatchType:LA,groupTypeList:SA,cursor:OA,groupIDList:JA}=RA,re={Count:kA,Keywords:xA,KeywordMatchType:LA,Cursor:OA,GroupType:SA,GroupIdList:JA};return $a.core.common.buildAndSendPacket({servcmd:"group_member_search.query",data:re})})}(E);if(!m)return{code:0,data:{}};const{ErrorCode:D,ErrorInfo:M,GroupMembers:T=[],Cursor:P,TotalCount:W}=m;if(D!==0)throw{errorCode:D,errorInfo:M};const iA=`keywordList:${s.keywordList} keywordListMatchType:${s.keywordListMatchType} cursor:${s.cursor} count:${s.count} res: totalCount:${W}`,EA=new Map;return T.forEach(RA=>{const{GroupID:kA,GroupName:xA,GroupType:LA,GroupFaceUrl:SA,GroupMemberUserName:OA,GroupMemberUserID:JA,GroupMemberNameCard:re,GroupMemberAvatar:ne=""}=RA,_i={groupID:kA,name:xA,type:LA,avatar:SA},Ti={userID:JA,nick:OA,nameCard:re,avatar:ne};if(EA.has(kA)){const kt=EA.get(kA);kt.memberList.push(Ti),EA.set(kA,kt)}else EA.set(kA,{groupInfo:_i,memberList:[Ti]})}),{code:0,data:{searchResultList:[...EA.values()],cursor:P,totalCount:W},successLog:{message:iA}}}catch(n){const{errorCode:g,errorInfo:I}=n||{};this._handleError({errorCode:g,errorInfo:I,searchType:uB,functionName:"searchCloudGroupMembers"})}})}searchCloudGroups(s){return mA(this,void 0,void 0,function*(){try{const{count:n=yI,keywordListMatchType:g}=s,I=yo(s,["count","keywordListMatchType"]),E=Object.assign({count:n,keywordListMatchType:g===EB.AND?1:0},I),m=yield function(EA){return mA(this,void 0,void 0,function*(){const{count:RA,keywordList:kA,keywordListMatchType:xA,groupTypeList:LA,cursor:SA}=EA,OA={Count:RA,Keywords:kA,KeywordMatchType:xA,Cursor:SA,GroupType:LA};return $a.core.common.buildAndSendPacket({servcmd:"group_search.query",data:OA})})}(E);if(!m)return{code:0,data:{}};const{ErrorCode:D,ErrorInfo:M,Groups:T,Cursor:P,TotalCount:W}=m;if(D!==0)throw{errorCode:D,errorInfo:M};const iA=`keywordList:${s.keywordList} keywordListMatchType:${s.keywordListMatchType} cursor:${s.cursor} count:${s.count} res: totalCount:${W}`;return{code:0,data:{searchResultList:T?.map(EA=>function(RA){const{GroupFaceUrl:kA,GroupID:xA,GroupIntroduction:LA,GroupMemberNum:SA,GroupName:OA,GroupOwnerTinyID:JA,GroupOwnerUserID:re,GroupOwnerUserName:ne,GroupType:_i,GroupAddOption:Ti,GroupInviteOption:kt}=RA;return{avatar:kA,groupID:xA,introduction:LA,memberCount:SA,name:OA,ownerTinyID:JA,ownerID:re,ownerNick:ne,type:_i,joinOption:Ti,inviteOption:kt}}(EA))||[],cursor:P,totalCount:W},successLog:{message:iA}}}catch(n){const{errorCode:g,errorInfo:I}=n||{};this._handleError({errorCode:g,errorInfo:I,searchType:uB,functionName:"searchCloudGroups"})}})}_setTimeRangeParams(s,{timePeriod:n,timePosition:g}){n&&n>0&&(s.startTime=g&&g>0?g-n:this._core.helper.timeManager.getServerTimeSeconds()-n),s.startTime&&s.startTime<0&&(s.startTime=void 0),g&&g>0&&(s.endTime=g)}_handleError({errorCode:s,errorMessage:n,searchType:g}){const{helper:I}=this._core;let E=s;throw s===60020?E="SearchUnable":g!==Um&&s===27003?E="SearchParamsError":g!==Um&&s===60018&&(E="SearchOverLimit"),new I.ChatError({code:E,message:n})}_isSearchingAllConversations(s){return this._core.helper.isEmpty(s.conversationID)}_setBirthdayRangeParams(s,n){const{miniBirthday:g,maxBirthday:I}=n;g!==void 0&&(s.miniBirthday=g,I===void 0&&(s.maxBirthday=4294967295)),I!==void 0&&(s.maxBirthday=I)}};function Bh(s,n){return Math.round(Number(s)*Math.pow(10,n))/Math.pow(10,n)}const Wv="qualityStat",fD="im-ssolog-quality-stat";var yD;(function(s){s[s.ONLINE=8]="ONLINE"})(yD||(yD={}));const xm="networkRTT",Qh="messageE2EDelay",dB="sendMessageC2C",ph="sendMessageGroup",mh="sendMessageGroupAV",CB="sendMessageRichMedia",hB="cosUpload",pC="messageReceivedGroup",OQ="messageReceivedGroupAVPush",PQ="messageReceivedGroupAVPull",DT={[xm]:2,[Qh]:3,[dB]:4,[ph]:5,[mh]:6,[CB]:7,[pC]:8,[OQ]:9,[PQ]:10,[hB]:11},zv=[dB,ph,mh,CB,hB],fh=[pC,OQ,PQ],BB=[xm,Qh,dB,ph,mh,CB,hB,pC,OQ,PQ],DD={ERR_SVR_COMM_SENSITIVE_TEXT:80001,ERR_SVR_COMM_BODY_SIZE_LIMIT:80002,OPEN_SERVICE_OVERLOAD_ERROR:60022,ERR_SVR_MSG_PKG_PARSE_FAILED:20001,ERR_SVR_MSG_INTERNAL_AUTH_FAILED:20002,ERR_SVR_MSG_INVALID_ID:20003,ERR_SVR_MSG_PUSH_DENY:20006,ERR_SVR_MSG_IN_PEER_BLACKLIST:20007,ERR_SVR_MSG_BOTH_NOT_FRIEND:20009,ERR_SVR_MSG_NOT_PEER_FRIEND:20010,ERR_SVR_MSG_NOT_SELF_FRIEND:20011,ERR_SVR_MSG_SHUTUP_DENY:20012,ERR_SVR_GROUP_INVALID_PARAMETERS:10004,ERR_SVR_GROUP_PERMISSION_DENY:10007,ERR_SVR_GROUP_NOT_FOUND:10010,ERR_SVR_GROUP_INVALID_GROUPID:10015,ERR_SVR_GROUP_REJECT_FROM_THIRDPARTY:10016,ERR_SVR_GROUP_SHUTUP_DENY:10017,MSG_SEND_FAIL:2100,OVER_FREQUENCY_LIMIT:2996},Ym="quality_stat";var xQ=new class{constructor(){this._messageStatsMap=new Map,this._userSideErrorCodes=new Set(Object.values(DD))}init(s){this._core=s,Object.values(zv).forEach(n=>{this._messageStatsMap.set(n,{totalCount:0,successCount:0,failedCountOfUserSide:0,costSum:0,costCount:0,fileSizeSum:0})})}dispatchSendStats(s){const{name:n,message:g,error:I,startTs:E}=s,{SEND_MESSAGE_STAT:m}=this._core.constants;switch(n){case m.TOTAL_COUNT:this._handleTotalCount(g);break;case m.SUCCESS_COUNT:this._handleSuccessCount(g);break;case m.FAILED_COUNT:this._handleFailedCount(g,I);break;case m.SEND_COST:this._handleSendCost(g,E)}}getStatResult(s){const n=this._messageStatsMap.get(s);if(!n||n.totalCount===0)return null;const{totalCount:g,successCount:I,failedCountOfUserSide:E}=n,m=Bh(I/g*100,2),D=I+E,M=Bh(D/g*100,2),T=this._calcAverageValue(n,s);return this._resetStat(s),{total_count:g,success_count_business:I,percent_business:m,success_count_platform:D,percent_platform:M,average_value:T}}_handleTotalCount(s){const n=this._getSendMessageSpecifiedKey(s),g=n&&this._messageStatsMap.get(n);g&&g.totalCount++}_handleSuccessCount(s){const n=this._getSendMessageSpecifiedKey(s),g=n&&this._messageStatsMap.get(n);g&&g.successCount++}_handleFailedCount(s,n){var g;const I=(g=n?.code)!==null&&g!==void 0?g:n?.errorCode;if(this._isUserSideError(I)){const E=this._getSendMessageSpecifiedKey(s),m=E&&this._messageStatsMap.get(E);m&&m.failedCountOfUserSide++}}_handleSendCost(s,n){const g=this._getSendMessageSpecifiedKey(s),I=g&&this._messageStatsMap.get(g);I&&(I.costSum+=Date.now()-n,I.costCount++)}_isUserSideError(s){return this._userSideErrorCodes.has(s)||s>=120001&&s<=13e4||s>=10100&&s<=10200}_getSendMessageSpecifiedKey(s){const{MSG_IMAGE:n,MSG_AUDIO:g,MSG_VIDEO:I,MSG_FILE:E,CONV_C2C:m,CONV_GROUP:D,GRP_AVCHATROOM:M}=this._core.OuterConstant;if([n,g,I,E].includes(s.type))return CB;if(s.conversationType===m)return dB;if(s.conversationType===D){const{groupStore:T}=this._core.appStore,P=T.getGroup(s.to);if(!P)return;const{type:W}=P;return W===M?mh:ph}}_calcAverageValue(s,n){return s.costCount===0?0:Math.round(n===hB?1e3*s.fileSizeSum/s.costSum:s.costSum/s.costCount)}_resetStat(s){const n=this._messageStatsMap.get(s);n&&(n.totalCount=0,n.successCount=0,n.failedCountOfUserSide=0,n.costSum=0,n.costCount=0,n.fileSizeSum=0)}},YQ=new class{constructor(){this._lastCycleStats=new Map,this._currentCycleStats=new Map}init(s){this._core=s;const{OuterEvent:n,notificationCenter:g}=s;this._initStatsMap(),g.subscribeOuterEvent(n.MESSAGE_RECEIVED,this._onMessageReceived,this)}addMessageSequence(s){const n=this._getReceivedMessageSpecifiedKey(s),{utils:{isUndefined:g},OuterConstant:{CONV_GROUP:I},ssoLog:E}=this._core;if(g(n)||!this._currentCycleStats.has(n))return void E.debug("addMessageSequence",`${Wv}.addMessageSequence invalid key:${n}`);const{conversationID:m,sequence:D}=s,M=m.replace(I,""),T=this._lastCycleStats.get(n);if(T.size===0||!T.has(M))return void this._addToCurrentCycle(n,M,D);const P=T.get(M);D>P.minSeq&&D{const{sortedSequences:m,minSeq:D,maxSeq:M}=E;m.length>0&&(I+=m.length,g+=M-D+1)}),g===0?null:(this._transferCycleDataOptimized(s),{total_count:g,success_count_business:I,percent_business:Bh(I/g*100,2)})}reset(){this._lastCycleStats.clear(),this._currentCycleStats.clear()}dispose(){const{notificationCenter:s,OuterEvent:{MESSAGE_RECEIVED:n}}=this._core;s.unSubscribeOuterEvent(n,this._onMessageReceived,this),this.reset()}_initStatsMap(){Object.values(fh).forEach(s=>{this._lastCycleStats.set(s,new Map),this._currentCycleStats.set(s,new Map)})}_onMessageReceived(s){const{data:n=[]}=s;n.forEach(g=>{this.addMessageSequence(g)})}_transferCycleDataOptimized(s){const n=this._currentCycleStats.get(s);if(!n)return;const g=new Map;n.forEach((I,E)=>{const m=I.dirty?[...I.sortedSequences].sort((D,M)=>D-M):I.sortedSequences;g.set(E,{sortedSequences:m,minSeq:I.minSeq,maxSeq:I.maxSeq,dirty:!1})}),this._lastCycleStats.set(s,g),this._currentCycleStats.set(s,new Map)}_getReceivedMessageSpecifiedKey(s){const{OuterConstant:{CONV_GROUP:n,GRP_AVCHATROOM:g}}=this._core;if(s.conversationType===n&&s?._onlineOnlyFlag!==!0){const{groupStore:I}=this._core.appStore,E=I.getGroup(s.to);if(!E)return null;const{type:m}=E;return m===g?PQ:pC}}_insertToLastCycle(s,n){n.dirty&&(n.sortedSequences.sort((I,E)=>I-E),n.dirty=!1);const g=this._findInsertPos(n.sortedSequences,s);n.sortedSequences.splice(g,0,s),n.minSeq=Math.min(n.minSeq,s),n.maxSeq=Math.max(n.maxSeq,s)}_findInsertPos(s,n){let g=0,I=s.length-1;for(;g<=I;){const E=Math.floor((g+I)/2);if(s[E]===n)return E;s[E]0&&(this._totalDelay+=g,this._totalCount++,g<=1?this._countLessThan1s++:g<=3&&this._countLessThan3s++)}getStatResult(){if(this._totalCount===0)return null;const s={total_count:this._totalCount,success_count_business:this._countLessThan1s,success_count_platform:this._countLessThan3s,percent_business:this._calculatePercentage(this._countLessThan1s,this._totalCount),percent_platform:this._calculatePercentage(this._countLessThan3s,this._totalCount),average_value:this._calculateAverageDelay(this._totalCount)};return this.reset(),s}reset(){this._totalDelay=0,this._totalCount=0,this._countLessThan1s=0,this._countLessThan3s=0}dispose(){const{notificationCenter:s,OuterEvent:{MESSAGE_RECEIVED:n}}=this._core;s.unSubscribeOuterEvent(n,this._onMessageReceived,this),this.reset()}_onMessageReceived(s){const{data:n=[]}=s,{OuterConstant:{MSG_GRP_TIP:g,MSG_GRP_SYS_NOTICE:I}}=this._core,E=[g,I];n.forEach(m=>{!E.includes(m.type)&&m.clientTime>0&&this.addMessageDelay(m.clientTime)})}_calculateAverageDelay(s){return s===0?0:Bh(this._totalDelay/s,1)}_calculatePercentage(s,n){return Bh(s/n*100,2)}},Zv=new class{init(s){this.core=s}},ST=new class{constructor(){this.name="MessageQualityStat",this._reportIndex=0,this._wholePeriod=!1,this._pendingReports=[],this._failedLogsCache=new Map}install(s){this._core=s;const{helper:n,notificationCenter:g,InnerEvent:{QUALITY_STAT:I,LOGOUT:E,DESTROY:m},constants:{WORKFLOW_NAME:D,WORKFLOW_STEP:M}}=s;Zv.init(s),xQ.init(s),YQ.init(s),VQ.init(s),n.registerWorkflowStep(D.SYNC_SERVER_INFO_AFTER_LOGIN,M.QUALITY_REPORT,this.handleLoginSuccess,this),g.subscribeInnerEvent(I,this._handleQualityStat,this),g.subscribeInnerEvent(E,this._reset,this),g.subscribeInnerEvent(m,this._dispose,this)}handleLoginSuccess(){const{store:s,helper:n,utils:{isUndefined:g}}=this._core,I=s.get("cloudConfig")||{},{q_rpt_interval:E}=I,m=g(E)?12e4:Number(E);n.taskScheduler.addTask({id:Ym,intervalMs:m,callback:this.report,context:this})}report(){this._wholePeriod=!0;const s=[...BB.map(n=>{const g=this._buildQualityReportItem(n);return g?Object.assign(Object.assign({},g),{report_index:this._reportIndex,whole_period:this._wholePeriod}):null}).filter(Boolean),...this._pendingReports];this._pendingReports=[],this._needSkipReport()||this._uploadQualityReports(s)}_handleQualityStat(s){const{constants:{QUALITY_METRICS:n}}=this._core,{label:g,data:I}=s;g===n.MESSAGE_SEND_SUCCESS_RATE&&xQ.dispatchSendStats(I)}_needSkipReport(){return this._isSDKAppIDInBlacklist()&&!this._isTinyIDInWhitelist()}_isSDKAppIDInBlacklist(){const{store:s,utils:n}=this._core,g=s.get("cloudConfig")||{},I=s.get("instance")||{},{sdkAppId:E}=I,{q_rpt_sdkappid_bl:m=[]}=g;if(!n.isEmpty(m))return m.split(",").map(D=>Number(D)).includes(E)}_isTinyIDInWhitelist(){const{store:s,utils:n}=this._core,g=s.get("cloudConfig")||{},I=s.get("login")||{},E=Number(I.tinyID),{q_rpt_tinyid_wl:m=[]}=g;if(!n.isEmpty(m))return m.split(",").includes(E)}_buildQualityReportItem(s){const n=this._getStatResultByKey(s);if(n===null)return null;const g={quality_type:DT[s],timestamp:Date.now(),network_type:yD.ONLINE,extension:""};return Object.assign(Object.assign({},g),n)}_getStatResultByKey(s){switch(s){case Qh:return VQ.getStatResult();case dB:case ph:case mh:case CB:case hB:return xQ.getStatResult(s);case pC:case OQ:case PQ:return YQ.getStatResult(s);default:return null}}_uploadQualityReports(s){return mA(this,void 0,void 0,function*(){try{const n={header:this._core.common.getCommonHead(),quality:s};yield function(g){const{common:I,channel:E}=Zv.core,m="imopenstat.tim_web_report_v2",D=I.generateSSOLogProtocolData({servcmd:m,data:g}),M=`${D.head.seq}${m}`;return E.sendPacket(D,{requestId:M})}(n),this._reportIndex++,this._wholePeriod=!1}catch(n){console.warn("doReport failed. error:",n),this._pendingReports=this._pendingReports.concat(s),this._cacheFailedLogs()}})}_cacheFailedLogs(){const s=this._pendingReports,n=`${Wv}._cacheFailedLogs`;let g=[...this._failedLogsCache.get(fD)||[],...s];g.length>10&&(g=g.slice(g.length-10),console.log(`${n} logs overflow, keeping last 10 items`)),this._failedLogsCache.set(fD,g),console.log(`${n} count: ${g.length}`),this._pendingReports=[]}_reset(){const{helper:s}=this._core;s.taskScheduler.removeTask(Ym)}_dispose(){const{notificationCenter:s,InnerEvent:{QUALITY_STAT:n,LOGOUT:g,DESTROY:I}}=this._core;s.unSubscribeInnerEvent(n,this._handleQualityStat,this),s.unSubscribeInnerEvent(g,this._reset,this),s.unSubscribeInnerEvent(I,this._dispose,this),this._reset(),VQ.dispose(),YQ.dispose()}};const cl=new class{init(s){this.core=s}};function Xv(s){return mA(this,void 0,void 0,function*(){var n;const{message:g,user:I,appStore:E,constants:{OuterConstant:m}}=cl.core,D=E.conversationStore.getConversationMap();if(D.has(s)){const T=(n=D.get(s))===null||n===void 0?void 0:n.userProfile;if(T&&s.startsWith(m.CONV_C2C)){const{avatar:P,nick:W}=T;cl.core.message.messageDataHandler.updateNickAndAvatarOfSentMessage({conversationID:s,latestAvatar:P,latestNick:W,isSentByMe:!1})}}const{data:M}=(yield I.userProfile.getMyProfile())||{};if(M){const{avatar:T,nick:P}=M;g.messageDataHandler.updateNickAndAvatarOfSentMessage({conversationID:s,latestAvatar:T,latestNick:P,isSentByMe:!0})}})}function $v(s){return mA(this,void 0,void 0,function*(){const n=s.map(g=>g.revoker);try{const g=yield function(I){return mA(this,void 0,void 0,function*(){var E,m;const D=yield(E=cl.core.user.userProfile)===null||E===void 0?void 0:E.getUserProfile({userIDList:I});return D?.data?(m=D.data)===null||m===void 0?void 0:m.reduce((M,{userID:T,nick:P,avatar:W})=>(M[T]={nick:P||"",avatar:W||""},M),{}):null})}(n);g&&s.forEach(I=>{const{revoker:E}=I;g[E]&&(I.revokerInfo.nick=g[E].nick||"",I.revokerInfo.avatar=g[E].avatar||"",I.revokerInfo.userID=E)})}catch(g){console.debug(g)}})}const SD=1,AR=2,yh=20,JQ=2500,eR=1,Dh=300;function HQ(s){return mA(this,void 0,void 0,function*(){var n,g;const{appStore:I,utils:{isEmpty:E},common:{getCurrentUserID:m},notificationCenter:D,OuterEvent:M,OuterConstant:{CONV_C2C:T}}=cl.core,{messageList:P,conversationID:W}=s,iA=I.conversationStore.getConversationMap();let EA=(n=iA.get(W))===null||n===void 0?void 0:n.peerReadTime;if(!EA){const kA=W.replace(T,""),xA=yield function(LA){return mA(this,void 0,void 0,function*(){const SA={To_Account:LA};return cl.core.common.buildAndSendPacket({servcmd:"openim.get_peer_read_time",data:SA})})}([kA]);if(xA){const{ReadTime:LA}=xA;EA=LA?.[0],iA.has(W)&&(iA.get(W).peerReadTime=EA)}}if(iA.has(W)){const kA=(g=iA.get(W))===null||g===void 0?void 0:g.lastMessage;E(kA)||kA.fromAccount===m()&&kA.lastTime<=EA&&!kA.isPeerRead&&(kA.isPeerRead=!0,I.conversationStore.updateConversation(W,{lastMessage:kA}))}const RA=[];P.forEach(kA=>{kA.time<=EA&&!kA.isPeerRead&&kA.flow==="out"&&(kA.isPeerRead=!0,RA.push(kA))}),RA.length>0&&D.emitOuterEvent(M.MESSAGE_READ_BY_PEER,{name:M.MESSAGE_READ_BY_PEER,data:RA})})}var tR=new class{init(s){this._core=s,s.helper.registerApi({apiName:"getMessageList",context:this}),s.helper.registerApi({apiName:"getMessageListHopping",context:this}),s.helper.registerApi({apiName:"clearHistoryMessage",context:this})}getMessageList(s){return mA(this,void 0,void 0,function*(){try{const{message:n,OuterConstant:{Direction:g,CONV_C2C:I,CONV_GROUP:E},InnerEvent:{HISTORY_MESSAGE_FETCHED:m},notificationCenter:D}=this._core,{conversationID:M,nextReqMessageID:T}=s,P=yh;if(M==="@TIM#SYSTEM")return{code:0,data:{messageList:[],isCompleted:!1,nextMessageSeq:""}};const W=this._getAvailableLocalMessagesCount({conversationID:M,nextReqMessageID:T});if(this._needFetchHistoryMessageList({conversationID:M,availableLocalMessagesCount:W,targetCount:P})){let iA=null;if(M.startsWith(E)?iA=yield n.messageHistory.getGroupRoamingMessagesByAnchor({conversationID:M,sequence:Number(T),count:P,direction:g.FORWARD,shouldMarkCompleted:!0}):M.startsWith(I)&&(iA=yield n.messageHistory.getC2CRoamingMessagesByAnchor({conversationID:M,messageID:T,count:P,direction:g.FORWARD,shouldMarkCompleted:!0})),iA){const{nextReqMessageIDFromServer:EA,hasNoMoreHistoryMessage:RA,messageList:kA}=iA,xA=n.messageDataHandler.prependLocalMessageList({messageList:kA,conversationID:M});(function(re){const{appStore:ne,message:_i,OuterConstant:Ti}=cl.core,kt=ne.conversationStore.getConversation(re),Ni=_i.messageDataHandler.getLocalMessageList(re);if(!kt||Ni.length===0||re===Ti.CONV_SYSTEM)return;const cs=[];for(let Bt=0;BtUA.isRevoked).length;Se=cs.length-kt.unreadCount-Bt}else Se=cs.length-kt.unreadCount;for(let Bt=0;Btre.isRevoked);yield $v(SA),D.emitInnerEvent(m,xA);const OA={nextReqMessageID:RA?"":String(EA),messageList:LA,isCompleted:RA},JA=LA.map(re=>re.sequence);return{code:0,data:OA,successLog:{message:`conversationID: ${M} nextReqMessageID: ${T} availableLocalMessagesCount: ${W} sequenceList: ${JSON.stringify(JA)}`}}}return{code:0,data:{messageList:[],isCompleted:!1,nextReqMessageID:""}}}return{code:0,data:yield this._getMessageListFromMemory({conversationID:M,nextReqMessageID:T,count:P}),successLog:{message:`conversationID: ${M} nextReqMessageID: ${T} availableLocalMessagesCount: ${W}}`}}}catch(n){const{code:g,message:I}=n||{};throw new this._core.helper.ChatError({code:g,message:I,moreMessage:`options: ${this._core.utils.safeStringify(s)}`})}})}getMessageListHopping(s){return mA(this,void 0,void 0,function*(){var n,g;const{OuterConstant:{Direction:I,CONV_C2C:E,CONV_GROUP:m},utils:{safeStringify:D}}=this._core,{conversationID:M,sequence:T,time:P,direction:W=I.FORWARD}=s,{utils:{isEmpty:iA},message:EA,notificationCenter:RA,InnerEvent:{HISTORY_MESSAGE_FETCHED:kA}}=this._core;if(![I.BACKWARD,I.FORWARD].includes(W))throw new this._core.helper.ChatError({message:"direction must be 0 or 1",moreMessage:`options: ${D(s)}`});let{count:xA=yh}=s;xA=xA>yh?yh:xA;let LA=null;if(M.startsWith(m)){if(LA=yield EA.messageHistory.getGroupRoamingMessagesByAnchor({conversationID:M,sequence:T,count:xA,direction:W}),LA){const{nextReqMessageIDFromServer:SA,hasNoMoreHistoryMessage:OA,messageList:JA,invisibleSequenceList:re}=LA;if(this._core.message.messageDataHandler.storeSparseMessageList(JA),RA.emitInnerEvent(kA,JA),W===I.FORWARD){const ne=OA&&SA<1;return{code:0,data:{messageList:JA,isCompleted:ne,nextMessageSeq:ne?"":SA}}}if(W===I.BACKWARD){if(iA(JA)&&iA(re))return{code:0,data:{messageList:[],isCompleted:!0,nextMessageSeq:""}};const ne=((n=JA?.[JA.length-1])===null||n===void 0?void 0:n.sequence)||0,_i=((g=re?.[re.length-1])===null||g===void 0?void 0:g.sequence)||0;return{code:0,data:{messageList:JA.filter(Ti=>Ti.sequence>=T),isCompleted:!OA,nextMessageSeq:OA?Math.max(ne,_i)+1:""}}}return{code:0,data:LA}}}else if(M.startsWith(E)&&(LA=yield EA.messageHistory.getC2CRoamingMessagesByAnchor({conversationID:M,count:xA+1,time:P,direction:W}),LA)){const{messageList:SA,lastMessageTime:OA,hasNoMoreHistoryMessage:JA}=LA;return RA.emitInnerEvent(kA,SA),JA||(W===I.FORWARD?SA.shift():SA.pop()),EA.messageDataHandler.storeSparseMessageList(SA),yield HQ({messageList:SA,conversationID:M}),{code:0,data:{messageList:SA,isCompleted:JA,nextMessageTime:JA?"":OA}}}})}clearHistoryMessage(s){return mA(this,void 0,void 0,function*(){var n;const{appStore:g,common:{ChatError:I,getCurrentUserID:E},OuterConstant:{CONV_C2C:m,CONV_GROUP:D},apiMap:M,message:T}=this._core,P=g.conversationStore.getConversation(s);if(!P)throw new I({code:JQ});const W={fromAccount:E()},{type:iA}=P;iA===m?(W.type=SD,W.toAccount=s.replace(m,"")):iA===D&&(W.type=AR,W.toGroupID=s.replace(D,""));try{return yield(n=M?.setMessageRead)===null||n===void 0?void 0:n.call(M,{conversationID:s}),(yield function(RA){return mA(this,void 0,void 0,function*(){const{fromAccount:kA,type:xA,toAccount:LA,toGroupID:SA}=RA,OA={From_Account:kA,Type:xA,To_Account:LA,ToGroupid:SA};return cl.core.common.buildAndSendPacket({servcmd:"recentcontact.clear_msg",data:OA})})}(W))&&(T.messageDataHandler.deleteConversationMessageList(s),T.messageHistory.completedHistoryConversations.delete(s),T.messageHistory.clearHistoryMessageListFetchAnchors(s),this._updateConversationLastMessage(s)),{code:0,data:{conversationID:s},successLog:{message:`convID:${s}`}}}catch(EA){const{errorCode:RA}=EA;throw new this._core.helper.ChatError({functionName:"clearHistoryMessage",code:RA,moreMessage:`convID:${s}`})}})}_updateConversationLastMessage(s){const{appStore:n}=this._core;n.conversationStore.updateConversation(s,{lastMessage:this._generateLastMessage()},{needSort:!0})}_getAvailableLocalMessagesCount({conversationID:s,nextReqMessageID:n}){const{OuterConstant:{CONV_C2C:g,CONV_GROUP:I}}=this._core,E=this._core.message.messageDataHandler.getLocalMessageList(s),{length:m}=E;if(!n)return m;let D=-1;return s?.startsWith(g)?D=E.findIndex(M=>M.ID===n):s?.startsWith(I)&&(D=E.findIndex(M=>n.includes("-")?M.ID===n:String(M.sequence)===n)),D===-1?0:D}_needFetchHistoryMessageList({conversationID:s,availableLocalMessagesCount:n,targetCount:g}){const{message:I}=this._core;return nn.startsWith(E)?EA.ID===g:String(EA.sequence)===g),W=iA>I?iA-I:0,T=iA):W=M>I?M-I:0,P.messageList=D.slice(W,iA),P.isCompleted=T<=I&&m.messageHistory.completedHistoryConversations.has(n),P.isCompleted?P.nextReqMessageID="":P.nextReqMessageID=this._generateNextReqMessageID({conversationID:n,targetIndex:W}),n.startsWith(E)&&(yield Xv(n),yield HQ({messageList:P.messageList,conversationID:n})),P})}_generateNextReqMessageID({conversationID:s,targetIndex:n}){const g=this._core.message.messageDataHandler.getLocalMessageList(s);return s.startsWith("C2C")?g[n].ID:String(g[n].sequence)}_generateLastMessage(){return{lastTime:0,lastSequence:0,fromAccount:"",messageForShow:"",payload:null,type:"",isRevoked:!1,cloudCustomData:"",onlineOnlyFlag:!1,nick:"",nameCard:"",version:0,isPeerRead:!1,revoker:null}}},QB=new class{constructor(){this._lastMessageSequenceMapOnDisconnect=new Map,this._lastMessageTimeMapOnDisconnect=new Map}init(s){this._core=s;const{common:{workflowManager:n},constants:{WORKFLOW_NAME:g,WORKFLOW_STEP:I,InnerEvent:E}}=s;n.registerWorkflowStep(g.SYNC_SERVER_INFO_AFTER_RE_ONLINE,I.HISTORY_MESSAGE_RECOVER,this._syncGroupOfflineMessage,this),n.registerWorkflowStep(g.SYNC_SERVER_INFO_AFTER_RE_ONLINE,I.C2C_HISTORY_MESSAGE_RECOVER,this._syncC2COfflineMessage,this),s.notificationCenter.subscribeInnerEvent(E.SOCKET_DISCONNECTED,this._updateLastMessageSequenceMapOnDisconnect,this)}_syncGroupOfflineMessage(s){const{conversationList:n}=s?.result||{},{OuterConstant:g,utils:{isArray:I}}=this._core;if(I(n)){const E=n.filter(m=>m.type===g.CONV_GROUP&&m.groupProfile.type!==g.GRP_AVCHATROOM);return this._recoverGroupHistoryMessage(E)}}_recoverGroupHistoryMessage(s){return mA(this,void 0,void 0,function*(){const{OuterConstant:n}=this._core,g=[],I=[];return yield Promise.all(s?.map(E=>mA(this,void 0,void 0,function*(){const{groupProfile:{groupID:m}={},lastMessage:{lastSequence:D}={}}=E,M=`${n.CONV_GROUP}${m}`;let T=this._getLocalLastMessageSequence(M);this._shouldRecoverHistory({localLastMessageSequence:T,serverLastMessageSequence:D})&&(yield this._recoverGroupHistoryForConversation({conversationID:M,localLastMessageSequence:T,serverLastMessageSequence:D,groupTipList:I})),g.push(M.replace(n.CONV_GROUP,""))}))),{recoverRevokeNoticeGroupIDList:g,groupTipList:I}})}_recoverGroupHistoryForConversation(s){return mA(this,arguments,void 0,function*({conversationID:n,localLastMessageSequence:g,serverLastMessageSequence:I,groupTipList:E}){try{const{utils:{isArray:m,isObject:D,isEmpty:M},OuterEvent:T,OuterConstant:P,notificationCenter:W,message:iA,appStore:EA,common:{getMessagePreviewText:RA,buildLastMessage:kA}}=this._core,xA=I-g,LA=Math.min(20,xA),SA={},OA=yield iA.messageHistory.getGroupRoamingMessagesByAnchor({conversationID:n,sequence:g+LA,direction:P.Direction.FORWARD,count:LA}),{nextReqMessageIDFromServer:JA,hasNoMoreHistoryMessage:re,messageList:ne,serverGroupTipList:_i}=OA;m(_i)&&E.push(..._i);const Ti=re&&JA<0,kt=[];if(m(ne)&&(ne.forEach(Ni=>{iA.messageReceiver.groupMessageReceiver.updateMessageProfile(Ni),Ni.from===P.CONV_SYSTEM&&(Ni.isSystemMessage=!1),iA.messageDataHandler.storeConversationMessage(Ni)&&!M(Ni.payload)&&(kt.push(Ni),Ni._isExcludedFromLastMessage||(SA.lastMessage=kA(Ni)))}),kt.length>0&&W.emitOuterEvent(T.MESSAGE_RECEIVED,{name:T.MESSAGE_RECEIVED,data:kt})),!Ti&&ne.length>0){const Ni=ne[ne.length-1].sequence;yield this._recoverGroupHistoryForConversation({conversationID:n,localLastMessageSequence:Ni,serverLastMessageSequence:I,groupTipList:E})}D(SA.lastMessage)&&(SA.lastMessage.messageForShow=RA(SA.lastMessage.type,SA.lastMessage.payload),EA.conversationStore.updateConversation(n,SA))}catch(m){this._core.ssoLog.error("_recoverGroupHistoryForConversation",`Recovery failed for conversation:${n}`,{error:m})}})}_updateLastMessageSequenceMapOnDisconnect(){const{message:s}=this._core,n=s.messageDataHandler.getContinuousMessagesByConversation();for(const[g,I]of n){const E=Array.from(I.values());if(E?.length>0){const m=E[E.length-1];g.startsWith("C2C")?this._lastMessageTimeMapOnDisconnect.set(g,m.time):g.startsWith("GROUP")&&this._lastMessageSequenceMapOnDisconnect.set(g,m.sequence)}}}_getLocalLastMessageSequence(s){const{message:n}=this._core;if(this._lastMessageSequenceMapOnDisconnect.has(s))return this._lastMessageSequenceMapOnDisconnect.get(s);const g=n.messageDataHandler.getLocalMessageList(s),I=g[g.length-1];return I?.sequence}_shouldRecoverHistory(s){const{localLastMessageSequence:n,serverLastMessageSequence:g}=s;if(typeof n!="number"||typeof g!="number")return!1;const I=g-n;return g!==0&&n>0&&I>=eR&&I{m.type===g.CONV_C2C&&E.push(m)}),this._recoverC2CHistoryMessage(E)}}_recoverC2CHistoryMessage(s){return mA(this,void 0,void 0,function*(){yield Promise.all(s?.map(n=>mA(this,void 0,void 0,function*(){const{conversationID:g,lastMessage:{lastTime:I}={}}=n,E=this._getLocalLastMessageTime(g);this._shouldRecoverC2CHistory({localLastMessageTime:E,serverLastMessageTime:I})&&(yield this._recoverHistoryForC2CConversation({conversationID:g,localLastMessageTime:E,serverLastMessageTime:I}))})))})}_shouldRecoverC2CHistory(s){const{localLastMessageTime:n,serverLastMessageTime:g}=s,I=g-n;return n>0&&I>=1&&I<=600}_recoverHistoryForC2CConversation(s){return mA(this,void 0,void 0,function*(){var n;const{conversationID:g,localLastMessageTime:I,serverLastMessageTime:E}=s,{utils:{isArray:m,isObject:D,isEmpty:M,safeStringify:T},OuterEvent:P,OuterConstant:W,notificationCenter:iA,message:EA,appStore:RA,common:{getMessagePreviewText:kA,buildLastMessage:xA}}=this._core;try{const LA={},SA=yield EA.messageHistory.getC2CRoamingMessagesByAnchor({conversationID:g,direction:W.Direction.BACKWARD,time:I,count:20});if(M(SA))return;const{hasNoMoreHistoryMessage:OA,messageList:JA}=SA,re=[];m(JA)&&(JA.forEach(_i=>{EA.messageDataHandler.storeConversationMessage(_i)&&!M(_i.payload)&&(re.push(_i),_i._isExcludedFromLastMessage||(LA.lastMessage=xA(_i)))}),re.length>0&&iA.emitOuterEvent(P.MESSAGE_RECEIVED,{name:P.MESSAGE_RECEIVED,data:re}));const ne=(n=JA[JA.length-1])===null||n===void 0?void 0:n.time;!OA&&ne>E&&(yield this._recoverHistoryForC2CConversation({conversationID:g,localLastMessageTime:ne,serverLastMessageTime:E})),D(LA.lastMessage)&&(LA.lastMessage.messageForShow=kA(LA.lastMessage.type,LA.lastMessage.payload),RA.conversationStore.updateConversation(g,LA))}catch(LA){this._core.ssoLog.error("_recoverHistoryForC2CConversation",`Recovery failed for conversation:${g} error: ${T(LA)}`)}})}_getLocalLastMessageTime(s){const{message:n}=this._core;if(this._lastMessageTimeMapOnDisconnect.has(s))return this._lastMessageTimeMapOnDisconnect.get(s);const g=n.messageDataHandler.getLocalMessageList(s),I=g[g.length-1];return I?.time}reset(){this._lastMessageSequenceMapOnDisconnect.clear(),this._lastMessageTimeMapOnDisconnect.clear()}dispose(){this.reset()}},pB=new class{constructor(){this.name="HistoryMessage"}install(s){this._core=s,cl.init(s),tR.init(s),QB.init(s),s.notificationCenter.subscribeInnerEvent(s.InnerEvent.LOGOUT,this._reset,this),s.notificationCenter.subscribeInnerEvent(s.InnerEvent.DESTROY,this.dispose,this)}dispose(){const{notificationCenter:s,InnerEvent:n}=this._core;s.unSubscribeInnerEvent(n.LOGOUT,this._reset,this),s.unSubscribeInnerEvent(n.DESTROY,this.dispose,this),QB.dispose()}_reset(){QB.reset()}},MD=new class{init(s){this.core=s}},mC=new class{constructor(){this._reportedAtomicStoreIDs=new Set}init(s){const{helper:{registerExperimentalAPI:n}}=s;this._core=s,n("reportModalView",this),n("reportTUIFeatureUsage",this),n("reportRoomEngineEvent",this)}reportModalView(s){const{ssoLog:n,utils:{safeStringify:g,isString:I}}=this._core;try{if(!I(s))throw new Error("reportModalView data is not a string");n.createSSOLogData({method:"reportModalView",message:s,eventType:30}).end(!0)}catch(E){n.debug(`reportModalView Report failed: ${g(E)}`)}}reportTUIFeatureUsage(s){const{ssoLog:n,utils:{safeStringify:g,isEmpty:I}}=this._core,{atomicStoreID:E}=s;try{I(E)||this._reportedAtomicStoreIDs.has(E)||(this._core.ssoLog.info("reportTUIFeatureUsage",`atomicStoreID: ${s.atomicStoreID}`,{method:"reportTUIFeatureUsage",eventType:31,code:E}),this._reportedAtomicStoreIDs.add(E))}catch(m){n.debug(`reportTUIFeatureUsage Report failed: ${g(m)}`)}}reportRoomEngineEvent(s){const{utils:{safeStringify:n},ssoLog:g}=this._core;try{g.debug(`reportRoomEngineEvent Report: ${n(s)}`);const{eventId:I,eventCode:E,eventResult:m,eventMessage:D,moreMessage:M,extensionMessage:T}=s;g.createSSOLogData({method:T,code:I,message:D,eventType:30,costTime:E,uiPlatform:m,moreMessage:M}).end(!0)}catch(I){g.debug(`reportRoomEngineEvent Report failed: ${n(I)}`)}}reset(){this._reportedAtomicStoreIDs.clear()}dispose(){this.reset()}},qQ=new class{constructor(){this.name="DataReport"}install(s){this._core=s;const{notificationCenter:n,InnerEvent:{LOGOUT:g,DESTROY:I}}=s;MD.init(s),mC.init(s),n.subscribeInnerEvent(g,this._reset,this),n.subscribeInnerEvent(I,this._dispose,this)}_reset(){mC.reset()}_dispose(){const{notificationCenter:s,InnerEvent:{LOGOUT:n,DESTROY:g}}=this._core;s.unSubscribeInnerEvent(n,this._reset,this),s.unSubscribeInnerEvent(g,this._dispose,this),mC.dispose()}};let Vm=sr.STANDARD,mB=[];Vm=sr.STANDARD,mB=[sh,nC,rC,aC,Rc,ST,pB,qQ,TE,vi,jn,hT,Lm,mD,qI];function fB(s,n){const{operationType:g,memberInfoList:I,operatorInfo:E}=s||{};let m={};if(Rs(I)?Rs(E)||(m=E):g!==Tg.JOINED&&g!==Tg.KICKED&&g!==Tg.ADMIN_SET&&g!==Tg.ADMIN_CANCELED||(m=Object.assign({},I[0])),!Rs(m)){const{nick:D="",avatar:M=""}=m;n.nick=D,n.avatar=M}}const KQ=s=>({lastTime:s?.time||s?.lastTime||0,lastSequence:s?.sequence||s?.lastSequence||0,fromAccount:s?.from||s?.fromAccount||"",messageForShow:zc(s?.type,s?.payload),payload:s?.payload||null,type:s?.type||"",isRevoked:s?.isRevoked||!1,cloudCustomData:s?.cloudCustomData||"",onlineOnlyFlag:s?._onlineOnlyFlag||!1,nick:s?.nick||"",nameCard:s?.nameCard||"",version:s?.version||0,isPeerRead:s?.isPeerRead||!1,revoker:s?.revoker||null});var jQ=Object.freeze({__proto__:null,ChatError:gs,WorkflowManager:ws,buildAndSendPacket:gg,buildLastMessage:KQ,get builtInPlugins(){return mB},checkBusinessCapabilityBits:tn,deepMerge:cd,getCurrentUserID:Ar,getErrorMessage:rs,getMessagePreviewText:zc,isC2CConv:s=>l(s)&&s.slice(0,3)===ba.CONV_C2C,isCommunity:zr,isGroupConv:s=>l(s)&&s.slice(0,5)===ba.CONV_GROUP,isInternational:vl,isTopic:Wc,isUnlimitedAVChatRoom:function(){var s;return!!(!((s=me.store.get("instance"))===null||s===void 0)&&s.unlimitedAVChatRoom)},liteChatInstanceMap:Ea,registerInterceptor:Mc,registerValidateConfig:jc,requireAuth:rd,get sdkEdition(){return Vm},setGroupTipsUserInfo:fB,t:Ru,updateGroupAtInfo:(s,n)=>{const{CONV_AT_ME:g,CONV_AT_ALL:I,CONV_AT_ALL_AT_ME:E}=ko;if(function(M,T){const{CONV_AT_ME:P,CONV_AT_ALL:W,CONV_AT_ALL_AT_ME:iA}=ko,{groupID:EA,sequence:RA}=M;let kA=!1;return zr({groupID:EA})&&T.forEach(xA=>{xA.messageSequence===RA&&(xA.atTypeArray.includes(P)&&M.groupAtType.includes(W)&&(xA.atTypeArray=[iA]),xA.atTypeArray.includes(W)&&M.groupAtType.includes(P)&&(xA.atTypeArray=[iA],xA.__random=M.__random,xA.__sequence=M.__sequence),kA=!0)}),kA}(s,n))return;let m=[...s.groupAtType];m.includes(g)&&m.includes(I)&&(m=[E]);const D={from:s.from,groupID:s.groupID,topicID:s.topicID,messageSequence:s.sequence,atTypeArray:m,__random:s.__random,__sequence:s.__sequence};n.push(D)},validateAndExecute:Dr,validateParameters:aI});class tu{constructor(){this._builtInPlugins=new Set,this._externalPlugins=new Set}static getInstance(){return tu._instance||(tu._instance=new tu),tu._instance}static setInstance(n){tu._instance=n}installBuiltInPlugin(n){n&&this._installPlugin(n,this._builtInPlugins)}installExternalPlugin(n){n&&this._installPlugin(n,this._externalPlugins)}clear(){this._builtInPlugins=new Set,this._externalPlugins=new Set}_installPlugin(n,g){let I=[];I=B(n)?n:[n];const E=I.findIndex(D=>D?.name==="AVChatRoom"),m=E>-1?I.splice(E,1):[];I.forEach(D=>{this._isPluginInstalled(D.name)||(D&&vg(D.install)?(g.add(D.name),vg(D.getInstalledSubPlugins)?(m?.forEach(M=>g.add(M?.name)),D.install(dr.getInstance().exposeApiForPlugin(),m)):D.install(dr.getInstance().exposeApiForPlugin()),vg(D.handleLoginSuccess)&&this._isLoggedIn()&&D.handleLoginSuccess()):vg(D)?(g.add(D.name),D(dr.getInstance().exposeApiForPlugin()),vg(D.handleLoginSuccess)&&this._isLoggedIn()&&D.handleLoginSuccess()):console.warn('A plugin must either be a function or an object with an "install" function.'))})}_isPluginInstalled(n){return this._builtInPlugins.has(n)||this._externalPlugins.has(n)}_isLoggedIn(){var n;return((n=me.store.get("login"))===null||n===void 0?void 0:n.isLoggedIn)===!0}}var yB=new class{constructor(){this._conversationMap=new Map}getConversationMap(){return this._conversationMap}getConversation(s){return this._conversationMap.get(s)}updateConversation(s,n,g){const{emit:I=!0,needSort:E=!1}=g||{},m=this._conversationMap.get(s);m&&!Rs(n)&&(Object.keys(n).forEach(D=>{m[D]=n[D]}),I&&me.notificationCenter.emitInnerEvent(so.CONVERSATION_UPDATED,{needSort:E}))}deleteConversation(s){this._conversationMap.has(s)&&(this._conversationMap.delete(s),me.notificationCenter.emitInnerEvent(so.CONVERSATION_UPDATED))}},WQ=new class{constructor(){this._groupMap=new Map}getGroupMap(){return this._groupMap}getGroup(s){return this._groupMap.get(s)}updateGroup(s,n){const g=this._groupMap.get(s);g&&!Rs(n)&&Object.keys(n).forEach(I=>{g[I]=n[I]})}},zQ=new class{constructor(){this._messagesByConversation=new Map}updateMessage(s,n,g){var I;const{operation:E,updateUnreadCount:m=!0}=g,D=yo(g,["operation","updateUnreadCount"]),M=[];for(const T of n){const P=(I=this._messagesByConversation.get(s))===null||I===void 0?void 0:I.get(T);if(!P)return!1;Object.keys(D).forEach(W=>{P[W]=D[W]}),M.push(P)}return this._emitMessageStoreOperationEvent(E,{conversationID:s,messageList:M,updateUnreadCount:m}),M}getMessagesByConversation(s){var n;return[...((n=this._messagesByConversation.get(s))===null||n===void 0?void 0:n.values())||[]]}getMessages(){return this._messagesByConversation}_emitMessageStoreOperationEvent(s,n){const{conversationID:g}=n;Wc(g)?me.notificationCenter.emitInnerEvent(yu[s],n):me.notificationCenter.emitInnerEvent(s,n)}},rc=new class{constructor(){this.userProfileMap=new Map,this.friendMap=new Map}getUserProfileMap(){return this.userProfileMap}getFriendMap(){return this.friendMap}getUserProfile(s){return this.userProfileMap.get(s)}getFriend(s){return this.friendMap.get(s)}},vD=Object.freeze({__proto__:null,conversationStore:yB,groupStore:WQ,messageStore:zQ,userStore:rc});class dr{static getInstance(){return dr._instance||(dr._instance=new dr),dr._instance}static setInstance(n){dr._instance=n}constructor(){this._experimentalApiMap={statTUIKeyFeatures:this.statKeyFeatureUsage.bind(this),setApplicationID:this.setApplicationID.bind(this)},this._apiHandlersMap={},this._apiMap={on:me.notificationCenter.subscribeOuterEvent.bind(me.notificationCenter),off:me.notificationCenter.unSubscribeOuterEvent.bind(me.notificationCenter),destroy:this.destroy.bind(this),callExperimentalAPI:this.callExperimentalAPI.bind(this),use:tu.getInstance().installExternalPlugin.bind(tu.getInstance()),registerPlugin:this.registerPlugin.bind(this),setLogLevel:this.setLogLevel.bind(this)}}registerPlugin(n){me.ssoLog.debug("registerPlugin",n)}statKeyFeatureUsage(n){me.ssoLog.debug("statTUIKeyFeatures",n)}setLogLevel(n){me.ssoLog.debug("setLogLevel",n),me.ssoLog.setLogLevel(n)}setApplicationID(n){me.store.set("instance",{applicationID:n})}getApiMap(){return this._apiMap}setApiMap(n){this._apiMap=n}registerApi(n){const{common:{timeManager:g},utils:{safeStringify:I}}=me,{apiName:E,context:m,methodName:D=E,matcher:M}=n;this._apiHandlersMap[E]||(this._apiHandlersMap[E]=[]),this._apiHandlersMap[E].push({context:m,methodName:D,matcher:M}),this._apiMap[E]&&this._apiHandlersMap[E].length!==1||(this._apiMap[E]=(...T)=>{const P=g.getServerTimeMs();let W=0;E==="login"&&(W=4),PI.includes(E)&&me.ssoLog.debug(E,`${E} start params: ${I(T)}`),Dr(D,T);const iA=this._apiHandlersMap[E];for(const EA of iA)if(!EA.matcher||EA.matcher(T))try{const RA=EA.context[EA.methodName].bind(EA.context)(...T);return this._isPromiseLike(RA)?this._handleAsyncResult(RA,E,W,P):(this._reportApiSuccessLog({result:RA,apiName:E,eventType:W,startTime:P}),RA)}catch(RA){throw me.ssoLog.error(E,`${E} fail ${RA?.message||RA?.errorMessage})`,{error:RA,costTime:g.getServerTimeMs()-P,eventType:W,method:E}),RA}})}registerExperimentalAPI(n,g,I){const E=I||n;this._experimentalApiMap[n]=g[E].bind(g)}destroy(){return mA(this,void 0,void 0,function*(){var n,g;try{!((n=me.store.get("login"))===null||n===void 0)&&n.isLogin&&(yield this._apiMap.logout()),me.notificationCenter.emitInnerEvent(so.DESTROY)}catch(I){console.debug("destroy error: ",I)}finally{me.notificationCenter.emitOuterEvent(yr.SDK_DESTROY,{SDKAppID:(g=me.store.get("instance"))===null||g===void 0?void 0:g.sdkAppId}),Ea.clear(),tu.getInstance().clear(),ws.getInstance().destroy(),me.destroy()}})}exposeApiForClient(){return this._apiMap}exposeApiForPlugin(){return Object.assign(Object.assign({InnerEvent:so,InnerEventSubType:me.notificationCenter.InnerEventSubType,OuterEvent:yr,OuterConstant:ko,SignalingEvent:Hc,helper:Object.assign(Object.assign(Object.assign({},me.utils),me.common),{registerApi:this.registerApi.bind(this),registerExperimentalAPI:this.registerExperimentalAPI.bind(this),registerInterceptor:Mc,registerValidateConfig:jc,checkBusinessCapabilityBits:tn,registerWorkflowStep:ws.getInstance().registerWorkflowStep.bind(ws.getInstance()),ChatError:gs}),apiMap:this._apiMap},me),{constants:Object.assign(Object.assign({},Wa),me.constants),common:Object.assign(Object.assign(Object.assign({},jQ),me.common),{workflowManager:ws.getInstance()}),utils:me.utils,appStore:vD})}callExperimentalAPI(n,g){return me.ssoLog.debug(`callExperimentalAPI.${n} start params: ${me.utils.safeStringify(g)}`),this._experimentalApiMap[n]?this._experimentalApiMap[n](g):(me.ssoLog.error("callExperimentalAPI",`callExperimentalAPI.${n} not found, params: ${me.utils.safeStringify(g)}`),Promise.reject(new gs({code:ua.INVALID_OPERATION})))}_isPromiseLike(n){return n!==null&&typeof n=="object"&&typeof n.then=="function"}_handleAsyncResult(n,g,I,E){return n.then(m=>(this._reportApiSuccessLog({result:m,apiName:g,eventType:I,startTime:E}),m)).catch(m=>{throw me.ssoLog.error(g,`${g} fail ${m?.message||m?.errorMessage})`,{error:m,costTime:me.common.timeManager.getServerTimeMs()-E,eventType:I,method:g,startTime:E}),m})}_reportApiSuccessLog(n){let{result:g,apiName:I,startTime:E,eventType:m}=n;const{timeManager:D}=me.common,{successLog:{message:M,moreMessage:T}={message:"",moreMessage:""}}=g||{},P=D.getServerTimeMs();I==="login"&&(E+=D.getTimeOffsetWithServer()),PI.includes(I)&&me.ssoLog.info(I,`${I} success ${M} ${T}`,{costTime:P-E,eventType:m,message:M,moreMessage:T,startTime:E}),g?.successLog&&delete g.successLog}}class iR{constructor(){this._latestLoginAt=0,this._latestSendOnlinePresenceRequestTime=0,this._helloInterval=120,this._customLoginInfo=""}init(){const{notificationCenter:n,store:g}=me;g.set("login",{isReady:!1}),dr.getInstance().registerApi({apiName:"login",context:this}),dr.getInstance().registerApi({apiName:"logout",context:this}),dr.getInstance().registerApi({apiName:"getLoginUser",context:this}),dr.getInstance().registerApi({apiName:"isReady",context:this}),dr.getInstance().registerApi({apiName:"getServerTime",context:this}),dr.getInstance().registerExperimentalAPI("setCustomLoginInfo",this),n.subscribeInnerEvent(so.RECONNECTED,this._reLogin,this),me.notificationCenter.subscribeInnerEvent(so.DESTROY,this._dispose,this)}login(n){return mA(this,void 0,void 0,function*(){var g;const{sdkEdition:I}=me.store.get("instance")||{};try{if(this._isLoginIn())return this._createRepeatLoginResponse();if(this._isLoginFrequencyExceeded())throw new gs({functionName:"login",code:ua.REPEAT_LOGIN});const E=yield this._performLogin(n);this._validateAfterLogin(E),this._handleLoginSuccess(E),yield this._ensureAsyncComplete(),this._updateAndEmitSDKReady(),this._latestLoginAt=0;const m=(g=me.channel.getSocketAdapter())===null||g===void 0?void 0:g.getId(),{appId:D,href:M}=me.store.get("instance")||{},{instanceID:T,customStatus:P}=E||{};return{code:0,data:E,successLog:{message:I,moreMessage:`socketID:${m} instanceID:${T} customStatus:${P} href: ${M} appId: ${D}`}}}catch(E){const{errorCode:m}=E;m!==ua.REPEAT_LOGIN&&(this._latestLoginAt=0);const D=new gs({functionName:"login",code:m});throw console.error(D),D}})}_reLogin(){return mA(this,void 0,void 0,function*(){var n;try{if(!this._isLoginIn())return;const g=yield vu(this._customLoginInfo);if(g){const{instanceID:I,customStatus:E}=g;me.store.set("login",{statusInstanceId:I}),ws.getInstance().executeWorkflow(Pt.SYNC_SERVER_INFO_AFTER_RE_ONLINE,{customStatus:E,statusType:CE.USER_STATUS_ONLINE});const m=(n=me.channel.getSocketAdapter())===null||n===void 0?void 0:n.getId();me.ssoLog.info("reLogin",`socketId:${m} instanceId:${I}`)}}catch(g){console.warn(g)}})}logout(){return mA(this,arguments,void 0,function*(n=sa.USER_INITIATED){const{ssoLog:g}=me;g.debug("logout",`logout start logoutReason: ${n}`);try{yield this._performLogout(n),g.info("logout","logout success"),me.ssoLog.uploadSSOLogData()}catch(I){const{errorCode:E}=I;throw new gs({functionName:"logout",code:E})}finally{this.handleLogoutCompleted()}return{code:0,data:{}}})}getLoginUser(){return this._isLoginIn()?Ar():""}isReady(){var n;return(n=me.store.get("login"))===null||n===void 0?void 0:n.isReady}setCustomLoginInfo(n=""){this._customLoginInfo=n}handleLogoutCompleted(){this._updateAndEmitSDKNotReady(),this._reset(),ws.getInstance().reset(),me.notificationCenter.emitInnerEvent("logout")}getServerTime(){const{timeManager:n}=me.common;return n.getServerTimeMs()}_updateAndEmitSDKReady(){me.store.set("login",{isReady:!0}),setTimeout(()=>{me.notificationCenter.emitOuterEvent(yr.SDK_READY,{name:yr.SDK_READY})},1)}_updateAndEmitSDKNotReady(){me.store.set("login",{isReady:!1}),me.notificationCenter.emitOuterEvent(yr.SDK_NOT_READY,{name:yr.SDK_NOT_READY})}_validateAfterLogin(n){const g="login";if(!n)throw new gs({functionName:g,message:"login response is empty"});const{tinyID:I,a2Key:E}=n||{};if(!I)throw new gs({functionName:g,code:ua.NO_TINYID});if(!E)throw new gs({functionName:g,code:ua.NO_A2KEY})}_createRepeatLoginResponse(){var n;return{code:0,data:{actionStatus:"OK",errorCode:0,errorInfo:rs({code:"RepeatLogin",replacement1:(n=me.store.get("login"))===null||n===void 0?void 0:n.userId}),repeatLogin:!0}}}_performLogin(n){return mA(this,void 0,void 0,function*(){const{userID:g,userSig:I}=n;return me.store.set("login",{userId:g,userSig:I}),this._latestLoginAt=Date.now(),vu(this._customLoginInfo)})}_ensureAsyncComplete(){return mA(this,void 0,void 0,function*(){yield new Promise(n=>{setTimeout(()=>n(null),1)})})}_handleLoginSuccess(n){const{timeManager:g}=me.common,{helloInterval:I,timeStamp:E,customStatus:m,purchaseBits:D}=n,M=1e3*E;g.calculateTimeOffsetWithServer(this._latestLoginAt,M),this._helloInterval=I||120,this._updateLoginStore(n),me.user.userStatus.setCustomStatus(m),ws.getInstance().executeWorkflow(Pt.SYNC_SERVER_INFO_AFTER_LOGIN,{purchaseBits:D}),me.common.taskScheduler.addTask({id:Gg,intervalMs:1e3*this._helloInterval,callback:this._sendOnlinePresenceRequest,context:this})}_performLogout(n){return function(g){return mA(this,void 0,void 0,function*(){const{logoutReason:I}=g,E="im_open_status.wslogout",m=me.common.generateProtocolData({servcmd:E,data:{wslogout_type:I,isWebUniapp:0}}),D=`${m.head.seq}${E}`;return yield me.channel.sendPacket(m,{requestId:D})})}({logoutReason:n})}_updateLoginStore(n){const{a2Key:g,tinyID:I,instanceID:E,authKey:m}=n;me.store.set("login",{a2Key:g,tinyID:I,statusInstanceId:E,authKey:m,isLoggedIn:!0})}_sendOnlinePresenceRequest(){return mA(this,void 0,void 0,function*(){this._latestSendOnlinePresenceRequestTime=Date.now();try{yield function(){const n="im_open_status.wshello",g=me.common.generateProtocolData({servcmd:n,data:{isWebUniapp:0}}),I=`${g.head.seq}${n}`;return me.channel.sendPacket(g,{requestId:I})}()}catch(n){me.ssoLog.warn("_sendOnlinePresenceRequest",` error:${n.message}`)}})}_isLoginIn(){var n;return((n=me.store.get("login"))===null||n===void 0?void 0:n.isLoggedIn)===!0}_isLoginFrequencyExceeded(){return Date.now()-this._latestLoginAt<=15e3}_reset(){me.common.taskScheduler.removeTask(Gg),this._helloInterval=120,this._latestSendOnlinePresenceRequestTime=0,this._latestLoginAt=0,this._customLoginInfo="",me.store.clear("login"),me.store.set("login",{isReady:!1}),me.store.set("instance",{applicationID:0})}_dispose(){this._reset();const{notificationCenter:n}=me;n.unSubscribeInnerEvent(so.RECONNECTED,this._reLogin,this),n.unSubscribeInnerEvent(so.DESTROY,this._dispose,this)}}const oR={login:{userID:{required:!0,rules:["string"],allowEmpty:!1},userSig:{required:!0,rules:["string"],allowEmpty:!1}}},MT={logout:!0};class Sh{constructor(){this.loginAction=new iR,this.kickedOutHandler=new Mu,this.loginAction.init(),this.kickedOutHandler.init(),jc({auth:MT,params:oR})}}var Jr,qu,FE;(function(s){s.CONV_C2C="C2C",s.CONV_GROUP="GROUP",s.CONV_TOPIC="TOPIC",s.CONV_SYSTEM="@TIM#SYSTEM"})(Jr||(Jr={})),function(s){s.MSG_PRIORITY_HIGH="High",s.MSG_PRIORITY_NORMAL="Normal",s.MSG_PRIORITY_LOW="Low",s.MSG_PRIORITY_LOWEST="Lowest"}(qu||(qu={})),function(s){s.MSG_TEXT="TIMTextElem",s.MSG_CUSTOM="TIMCustomElem",s.MSG_LOCATION="TIMLocationElem",s.MSG_FACE="TIMFaceElem",s.MSG_IMAGE="TIMImageElem",s.MSG_AUDIO="TIMSoundElem",s.MSG_FILE="TIMFileElem",s.MSG_VIDEO="TIMVideoFileElem",s.MSG_GRP_TIP="TIMGroupTipElem",s.MSG_GRP_SYS_NOTICE="TIMGroupSystemNoticeElem",s.MSG_MERGER="TIMRelayElem"}(FE||(FE={}));const RD={1:qu.MSG_PRIORITY_HIGH,2:qu.MSG_PRIORITY_NORMAL,3:qu.MSG_PRIORITY_LOW,4:qu.MSG_PRIORITY_LOWEST},wD=0,sR=1;var Ku;(function(s){s.IN="in",s.OUT="out"})(Ku||(Ku={}));const nR=2,ZQ={};function iu(s){if(!s)return 0;if(ZQ[s]===void 0){const n=new Date,g=`3${n.getHours()}`.slice(-2),I=`0${n.getMinutes()}`.slice(-2),E=`0${n.getSeconds()}`.slice(-2);ZQ[s]=parseInt([g,I,E,"0001"].join(""),10),console.log(`autoIncrementIndex start index:${ZQ[s]}`)}else ZQ[s]+=1;return ZQ[s]}class OE{constructor(n){this.ID="",this.random=0,this.sequence=0,this.nameCard="",this.isRead=!1,this.isPeerRead=!1,this.isDeleted=!1,this.isResend=!1,this.hasRiskContent=!1,this._onlineOnlyFlag=!1,this.atUserList=[],this._groupAtInfoList=[],this.isBroadcastMessage=!1,this.priority=qu.MSG_PRIORITY_NORMAL,this._relayFlag=!1;const{clientTime:g=me.common.timeManager.getServerTimeSeconds()||0,senderTinyID:I,currentUser:E,needReadReceipt:m,isSupportExtension:D,customModerationConfigurationId:M,to:T,from:P,nick:W="",avatar:iA="",time:EA,messageControlInfo:RA,tinyID:kA,cloudCustomData:xA="",messageLifeTime:LA,messageVersion:SA=0,conversationType:OA,sequence:JA,checkResult:re=0,isPlaceMessage:ne=0,messageFlagBits:_i,receiverList:Ti,isSystemMessage:kt=!1,status:Ni=Or.SUCCESS,revokeReason:cs="",conversationSubType:Se,clientSequence:Bt,protocol:UA="JSON",revokerInfo:ii={userID:"",nick:"",avatar:""},readReceiptInfo:_s={readCount:void 0,unreadCount:void 0,isPeerRead:void 0,timestamp:0},random:Gi,groupProfile:Lr,atUserList:xi,flow:ar,isRead:wt=!1,priority:_t=qu.MSG_PRIORITY_NORMAL,onlineOnlyFlag:Wu=!1,nameCard:ln="",quoteInfo:ho}=n;var ll;this.clientTime=g,this.senderTinyID=I||kA,this.needReadReceipt=m===!0||m===1,this.isSupportExtension=D===!0||D===1,this._cmConfigID=M,this.to=T,this.nick=W,this.avatar=iA,this.protocol=UA,this.random=Gi===void 0?(ll=ll||99999999,Math.round(Math.random()*ll)):Gi,this.time=EA||Math.ceil(Date.now()/1e3),this._isExcludedFromLastMessage=!!RA?.excludedFromLastMessage,this._isExcludedFromUnreadCount=!!RA?.excludedFromUnreadCount,this.isModified=!!SA,this.cloudCustomData=xA,this.messageLifeTime=LA,this.from=P||null,this.sequence=JA||0,this.conversationType=OA||Jr.CONV_C2C,this.hasRiskContent=re>1,this.version=SA,this.isPlaceMessage=ne,this.isRevoked=ne===2||_i===8,this.isSystemMessage=kt,this.readReceiptInfo=_s,this.revokeReason=cs,this.revokerInfo=ii,this._receiverList=Ti,this.conversationSubType=Se,this.revoker=ii?.revoker||"",this.clientSequence=Bt||JA||0,this.status=Ni,this.atUserList=xi||[],this.flow=ar,this.isRead=wt,this.priority=_t,this._onlineOnlyFlag=Wu,this.nameCard=ln,this.quoteInfo=ho,this.reInitialize(E),this._initC2CReadReceiptInfo(n),this._extractGroupInfo(Lr)}getElements(){return this._elements}isOnlineMessage(){return this.messageLifeTime===0}setElement(n){Array.isArray(n)?this._elements=n:this._elements=[n],this._updatePayloadAndType()}transformElementsToServerFormat(){return this._elements?Array.isArray(this._elements)?this._elements.map(n=>n.transformToServerFormat()):this._elements.transformToServerFormat():null}setRelayFlag(n){this._relayFlag=n}validateBeforeSend(){var n,g,I;return this._relayFlag?{isValid:!0}:((n=this._elements)===null||n===void 0?void 0:n.length)>0?(I=(g=this._elements[0])===null||g===void 0?void 0:g.validateBeforeSend)===null||I===void 0?void 0:I.call(g):{isValid:!1}}_updatePayloadAndType(){this._elements[0]&&(this.payload=this._elements[0].content,this.type=this._elements[0].type)}_initC2CReadReceiptInfo(n){const{readReceiptSentByPeer:g,timestamp:I=0}=n;this.conversationType===Jr.CONV_C2C&&this.needReadReceipt===!0&&(this.readReceiptInfo.isPeerRead=g===1,this.readReceiptInfo.timestamp=I)}_extractGroupInfo(n){if(!n)return;const{From_AccountNick:g,From_AccountHeadurl:I,MsgFrom_AccountExtraInfo:E,GroupType:m}=n,{NameCard:D}=E||{};typeof g=="string"&&(this.nick=g),typeof I=="string"&&(this.avatar=I),typeof D=="string"&&(this.nameCard=D),this.conversationSubType=m}reInitialize(n){n===this.from&&(this.isRead=!0),this._initSequence(n),this._concatConversationID(n),this.generateMessageID()}_concatConversationID(n){let g="";const I=this.conversationType;I!==Jr.CONV_SYSTEM?(g=I===Jr.CONV_C2C?n===this.from?this.to:this.from:this.to,this.conversationID=g?`${I}${g}`:null):this.conversationID=Jr.CONV_SYSTEM}_initSequence(n){this.clientSequence===0&&n&&(this.clientSequence=iu(n)),this.sequence===0&&this.conversationType===Jr.CONV_C2C&&(this.sequence=this.clientSequence)}generateMessageID(){this.from===Jr.CONV_SYSTEM&&(this.senderTinyID="144115198244471703"),this.ID=`${this.senderTinyID}-${this.clientTime}-${this.random}`}setIsRead(n){this.isRead=n}}class Sd{static parseServerPushElement(n){const{MsgContent:g={}}=n,{Data:I,Ext:E,Desc:m}=g;return new Sd({data:I,description:m,extension:E})}constructor(n){this.type=FE.MSG_CUSTOM;const{data:g="",description:I="",extension:E=""}=n;this.content={data:g,description:I,extension:E}}transformToServerFormat(n){const{isMergerMessage:g=!1}=n||{},I=g?this.payload:this.content,{data:E,description:m,extension:D}=I;return{MsgType:this.type,MsgContent:{Data:E,Ext:D,Desc:m}}}validateBeforeSend(){const{isEmpty:n}=me.utils,g=[this.content.data,this.content.description,this.content.extension].some(I=>!n(I));return{isValid:g,error:g?null:{message:"content can not be empty"}}}}class Md{static parseServerPushElement(n){const{MsgContent:g={Text:""}}=n,{Text:I}=g;return new Md({text:I})}constructor(n){this.type=wg.MSG_TEXT,this.content={text:n.text||""}}validateBeforeSend(){var n,g;return((g=(n=this.content)===null||n===void 0?void 0:n.text)===null||g===void 0?void 0:g.length)>0?{isValid:!0}:{isValid:!1,error:{message:"content can not be empty"}}}transformToServerFormat(n){const{isMergerMessage:g=!1}=n||{},I=g?this.payload:this.content,{text:E}=I;return{MsgType:this.type,MsgContent:{Text:E}}}}var Jm=new class{constructor(){this._elementClassMap={[FE.MSG_CUSTOM]:Sd,[FE.MSG_TEXT]:Md}}init(){dr.getInstance().registerApi({apiName:"createCustomMessage",context:this}),dr.getInstance().registerApi({apiName:"createTextMessage",context:this})}registerElementClass(s,n){var g;(g=n).prototype!==void 0&&"constructor"in g.prototype&&(this._elementClassMap[s]=n)}getElementClass(s){return this._elementClassMap[s]}createMessage(s){const{from:n,flow:g=Ku.OUT}=s,{userId:I}=me.store.get("login")||{};this._isSendByCurrentInstance({from:n,flow:g,currentUser:I})?this._updateWithSenderInfo(s):this._isMultiEndpointSyncMessage({from:n,flow:g,currentUser:I})&&(s.flow=Ku.OUT);const E=Object.assign(Object.assign({},s),{currentUser:I});return new OE(E)}createCustomMessage(s){const n=Ar(),g=this.createMessage(Object.assign(Object.assign({},s),{from:n})),I=this._elementClassMap[FE.MSG_CUSTOM];if(!g)return null;if(I){const E=new I(s.payload);g.setElement(E)}return g}createTextMessage(s){var n;if(!s)return null;const g=typeof s.payload=="string"?s.payload:((n=s?.payload)===null||n===void 0?void 0:n.text)||"",I=new Md({text:g}),E=Ar(),m=me.message.messageFactory.createMessage(Object.assign(Object.assign({},s),{from:E}));return m.setElement(I),m}_updateWithSenderInfo(s){var n,g;const{nick:I,avatar:E,conversationType:m,to:D}=s,{userId:M,tinyID:T}=me.store.get("login")||{},P=rc.getUserProfile(M);return s.nick=I||P?.nick||"",s.avatar=E||P?.avatar||"",s.tinyID=s.tinyID||T||"",s.from=M,s.status=Or.UNSENT,s.flow=Ku.OUT,m===ba.CONV_GROUP&&(s.nameCard=(g=(n=WQ.getGroup(D))===null||n===void 0?void 0:n.selfInfo)===null||g===void 0?void 0:g.nameCard),s}_isMultiEndpointSyncMessage(s){const{from:n,flow:g,currentUser:I}=s;return n===I&&g===Ku.IN}_isSendByCurrentInstance(s){const{from:n,flow:g,currentUser:I}=s;return n===I&&g===Ku.OUT}};const rR={PushFlag:0,Title:"",Desc:"",Ext:"",ApnsInfo:{Sound:"",BadgeMode:0,IsVoipPush:void 0,Image:"",InterruptionLevel:"active",ContentAvailable:0},AndroidInfo:{Sound:"",XiaoMiChannelID:"",OPPOChannelID:"",GoogleChannelID:"",VIVOClassification:1,VIVOCategory:"",HuaWeiCategory:"",OPPOCategory:"",HuaWeiImage:"",HonorImage:"",GoogleImage:"",HonorImportance:"",MeizuNotifyType:void 0}},vd={HonorImportance:{range:["LOW","NORMAL"],defaultValue:void 0},MeizuNotifyType:{range:[0,1],defaultValue:void 0}},_D={enableIOSBackgroundNotification:{range:[!0,!1],defaultValue:!1},interruptionLevel:{range:["passive","active","time-sensitive","critical"],defaultValue:"active"}};function aR(s,n){return Object.keys(n).forEach(g=>{const{range:I,defaultValue:E}=n[g];s[g]=I.includes(s[g])?s[g]:E}),s}function XQ(s){const n=s.lastIndexOf(".");return n===-1?s:s.slice(0,n)}function gR(s){const{androidInfo:n={},androidOPPOChannelID:g=""}=s,I=n.OPPOChannelID||g,E=aR(n,vd),{sound:m="",FCMChannelID:D=""}=E,M=yo(E,["sound","FCMChannelID"]);return Object.assign(Object.assign({},M),{Sound:XQ(m),OPPOChannelID:I,GoogleChannelID:D})}function cR(s){const{apnsInfo:n={},ignoreIOSBadge:g=!1,disableVoipPush:I}=s,E=aR(n,_D),{ignoreIOSBadge:m,disableVoipPush:D,enableIOSBackgroundNotification:M}=E,T=yo(E,["ignoreIOSBadge","disableVoipPush","enableIOSBackgroundNotification"]),P=m===!0||g===!0?1:0;let W;return r(I)||(W=I===!1?1:0),r(D)||(W=D===!1?1:0),Object.assign(Object.assign({},T),{BadgeMode:P,IsVoipPush:W,ContentAvailable:M?1:0})}function TD(s){return me.utils.isPlainObject(s)?{PushFlag:s.disablePush===!0?1:0,Title:s.title||"",Desc:s.description||"",Ext:s.extension||"",ApnsInfo:cR(s),AndroidInfo:gR(s)}:rR}function Hm(s){const{From_AccountHeadurl:n,From_AccountNick:g,IsNeedReadReceipt:I,IsPeerRead:E,IsSyncMsg:m,MsgBody:D,MsgClientTime:M,MsgLifeTime:T,MsgRandom:P,MsgSeq:W,MsgTimeStamp:iA,SendMsgControl:EA,SupportMessageExtension:RA,TinyId:kA,MsgCheckResult:xA,CloudCustomData:LA,MsgVersion:SA,MsgFlagBits:OA,RevokerInfo:JA,InnerSdkCustomData:re}=s;let ne,{From_Account:_i,To_Account:Ti}=s;if(m===1){const kt=Ti;Ti=_i,_i=kt}if(JA){const{Reason:kt,Revoker_Account:Ni,Revoker_FromUin:cs}=JA;ne={reason:kt,revoker:Ni,revokerFromUin:cs,userID:Ni}}return{from:_i,avatar:n,nick:g,needReadReceipt:I===1,isSyncMessage:m,clientTime:M,messageLifeTime:T,random:P,sequence:W,time:iA,messageControlInfo:{excludedFromLastMessage:EA?.NoLastMsg===1,excludedFromUnreadCount:EA?.NoUnread===1},isSupportExtension:RA,to:Ti,tinyID:kA,checkResult:xA,cloudCustomData:LA,revokerInfo:ne,messageVersion:SA,messageFlagBits:OA,readReceiptSentByPeer:E,elements:fC(D),onlineOnlyFlag:T===0,quoteInfo:$Q(re)}}function qm(s){const{From_Account:n,MsgBody:g,MsgClientTime:I,MsgRandom:E,MsgSeq:m,MsgTimeStamp:D,To_Account:M,MsgVersion:T,CloudCustomData:P,MsgCheckResult:W}=s;return{from:n,clientTime:I,random:E,sequence:m,time:D,to:M,elements:fC(g),messageVersion:T,cloudCustomData:P,checkResult:W}}function ND(s){const{ClientSeq:n,From_Account:g,GroupInfo:I,MsgBody:E,MsgClientTime:m,MsgRandom:D,MsgSeq:M,MsgTimeStamp:T,SendMsgControl:P,SupportMessageExtension:W,TinyId:iA,CloudCustomData:EA,MsgVersion:RA,MsgCheckResult:kA,NeedReadReceipt:xA,IsPlaceMsg:LA,RevokerInfo:SA,GroupAtInfo:OA,OnlineOnlyFlag:JA,InnerSdkCustomData:re}=s;let ne,_i=qu.MSG_PRIORITY_NORMAL;if(Object.keys(RD).includes(String(s.MsgPriority))&&(_i=RD[s.MsgPriority]),SA){const{Reason:kt,Revoker_Account:Ni,Revoker_FromUin:cs}=SA;ne={reason:kt,revoker:Ni,revokerFromUin:cs,userID:Ni}}const Ti=function(kt){const Ni=[];return Array.isArray(kt)&&kt.forEach(cs=>{cs.GroupAtAllFlag===wD?Ni.push(cs.GroupAt_Account):cs.GroupAtAllFlag===sR&&Ni.push(ko.MSG_AT_ALL)}),Ni}(OA);return{clientSequence:n,from:g,groupProfile:I,clientTime:m,priority:_i,random:D,sequence:M,time:T,messageControlInfo:{excludedFromLastMessage:P?.NoLastMsg===1,excludedFromUnreadCount:P?.NoUnread===1},isSupportExtension:W,tinyID:iA,cloudCustomData:EA,messageVersion:RA,checkResult:kA,needReadReceipt:xA,isPlaceMessage:LA,revokerInfo:ne,atUserList:Ti,elements:fC(E),to:vT(s),onlineOnlyFlag:JA===1,quoteInfo:$Q(re)}}function vT(s){const{utils:{isEmpty:n},constants:{IS_TOPIC_MESSAGE:g}}=me,{ToGroupId:I,GroupInfo:{MillionGroupFlag:E=0,TopicId:m}={}}=s;return E!==g||n(m)?I:m}function fC(s){if(!s)return null;if(Array.isArray(s))return s.map(g=>{const I=me.message.messageFactory.getElementClass(g.MsgType);return I?.parseServerPushElement(g)});const n=me.message.messageFactory.getElementClass(s.MsgType);return n?.parseServerPushElement(s)}function GD(s){const{From_Account:n,MsgBody:g,MsgClientTime:I,MsgRandom:E,MsgSeq:m,MsgTimeStamp:D,GroupId:M,TopicId:T,MsgVersion:P,CloudCustomData:W,MsgCheckResult:iA}=s;return{from:n,clientTime:I,random:E,sequence:m,time:D,groupID:M,topicID:T,elements:fC(g),messageVersion:P,cloudCustomData:W,checkResult:iA}}function $Q(s){const{utils:{isString:n,safeStringify:g},ssoLog:I}=me;if(!n(s))return null;try{const{messageID:E,messageTime:m,messageSequence:D}=JSON.parse(s).businessQuote;return{msgID:E,messageTime:m,messageSequence:D}}catch(E){return I.debug("_parseServerQuoteInfo",g(E)),null}}function Ap({conversationUpdateFields:s,message:n}){const{conversationID:g,conversationType:I,conversationSubType:E,flow:m,_isExcludedFromUnreadCount:D,_isExcludedFromLastMessage:M}=n,T=M?"":KQ(n),P=!D&&m===Ku.IN;s.has(g)?(s.get(g).lastMessage=T,P&&s.get(g).unreadCount++):s.set(g,{conversationID:g,type:I,subType:E,unreadCount:P?1:0,lastMessage:T})}function DB(s){return s.filter(n=>{const g=!Rs(n?._elements),I=n?.isPlaceMessage===1;return g||me.ssoLog.error("emptyMessageBody",`from:${n.from} to:${n.to} sequence:${n.sequence}`),g&&!I})}function SB(s){const{messageDataHandler:n}=me.message;return!n.isInMessageList(s)&&!n.isMessageSentByCurrentInstance(s)}var lR=Object.freeze({__proto__:null,autoIncrementIndex:iu,createAndroidPushInfo:gR,createApnsPushInfo:cR,createOfflinePushInfo:TD,filterValidMessages:DB,getAndroidSoundName:XQ,parseServerGroupMessage:ND,parseServerPushC2CModifyMessage:qm,parseServerPushGroupModifyMessage:GD,parseServerPushMessage:Hm,parseServerPushMessageElement:fC,shouldStoreMessage:SB,updateConversationFields:Ap});const{isPlainObject:IR}=me.utils;function ep(s,n={}){const{onlineUserOnly:g,messageControlInfo:I}=n;let{offlinePushInfo:E}=n;s.conversationType===Jr.CONV_C2C&&g===!0&&(E?E.disablePush=!0:E={disablePush:!0});let m="";typeof s.cloudCustomData=="string"&&s.cloudCustomData.length>0&&(m=s.cloudCustomData);const D=[];if(I&&IR(I)){const{excludedFromUnreadCount:M,excludedFromLastMessage:T,excludedFromContentModeration:P}=I;M===!0&&D.push("NoUnread"),T===!0&&D.push("NoLastMsg"),P===!0&&D.push("NoMsgCheck")}return{onlineUserOnly:g,cloudCustomData:m,messageControlInfo:D,offlinePushInfo:E}}function bD(s){const{webhookInfo:{disableCloudMessagePreHook:n=!1,disableCloudMessagePostHook:g=!1}={}}=s||{};if(!n&&!g)return;const I=[];return n&&I.push("ForbidBeforeSendMsgCallback"),g&&I.push("ForbidAfterSendMsgCallback"),I}function Mh(s,n){return mA(this,void 0,void 0,function*(){const g=s.conversationType===Jr.CONV_GROUP?function(E,m){var D;const M=ep(E,m),{onlineUserOnly:T,cloudCustomData:P,messageControlInfo:W,offlinePushInfo:iA}=M,EA=JSON.parse(JSON.stringify(E.transformElementsToServerFormat()));let RA;return B(E._receiverList)&&E._receiverList.length>0&&(RA=E._receiverList,E._receiverList.length>50&&(RA=E._receiverList.slice(0,50),console.warn("ReceiverListLimit"))),{servcmd:"group_open_http_svc.send_group_msg",data:{From_Account:(D=me.store.get("login"))===null||D===void 0?void 0:D.userId,GroupId:E.to,MsgBody:EA,CloudCustomData:P,Random:E.random,MsgPriority:E.priority,ClientSeq:E.clientSequence,GroupAtInfo:E._groupAtInfoList,OnlineOnlyFlag:T?1:0,MsgClientTime:E.clientTime,OfflinePushInfo:TD(iA),SendMsgControl:T?void 0:W,NeedReadReceipt:E.needReadReceipt===!0?1:0,To_Account:RA,SupportMessageExtension:E.isSupportExtension===!0?1:0,IsRelayMsg:E._relayFlag===!0?1:0,CustomModerationConfigID:E._cmConfigID,ForbidCallbackControl:bD(m),InnerSdkCustomData:vB(E)}}}(s,n):function(E,m){var D;const M=ep(E,m),{onlineUserOnly:T,cloudCustomData:P,messageControlInfo:W,offlinePushInfo:iA}=M,EA=T===!0?0:void 0,RA=JSON.parse(JSON.stringify(E.transformElementsToServerFormat()));return{servcmd:"openim.sendmsg",data:{From_Account:(D=me.store.get("login"))===null||D===void 0?void 0:D.userId,To_Account:E.to,MsgBody:RA,CloudCustomData:P,MsgSeq:E.sequence,MsgRandom:E.random,MsgLifeTime:EA,From_AccountNick:E.nick,From_AccountHeadurl:E.avatar,SendMsgControl:EA!==0?W:void 0,MsgClientTime:E.clientTime,IsNeedReadReceipt:E.needReadReceipt===!0?1:0,SupportMessageExtension:E.isSupportExtension===!0?1:0,IsRelayMsg:E._relayFlag===!0?1:0,CustomModerationConfigID:E._cmConfigID,OfflinePushInfo:TD(iA),ForbidCallbackControl:bD(m),InnerSdkCustomData:vB(E)}}}(s,n),I=yield gg(g);return I?{time:I.MsgTime,messageDropReason:I.MsgDropReason,sequence:I.MsgSeq}:null})}function vh(s){return mA(this,void 0,void 0,function*(){const{from:n,to:g,version:I=0,sequence:E,random:m,time:D,type:M,cloudCustomData:T}=s,P={From_Account:n,To_Account:g,MsgVersion:I,MsgSeq:E,MsgRandom:m,MsgTime:D,MsgType:M,MsgBody:s.transformElementsToServerFormat(),CloudCustomData:T},W=yield gg({servcmd:"openim.modify_c2c_msg",data:P});if(W){const{MsgBody:iA,MsgVersion:EA,CloudCustomData:RA}=W;return{elements:fC(iA),messageVersion:EA,cloudCustomData:RA}}})}function MB(s){return mA(this,void 0,void 0,function*(){const{to:n,version:g=0,sequence:I,cloudCustomData:E}=s,m={GroupId:n,MsgVersion:g,MsgSeq:I,MsgBody:s.transformElementsToServerFormat(),CloudCustomData:E},D=yield gg({servcmd:"openim.modify_group_msg",data:m});if(D){const{MsgBody:M,MsgVersion:T,CloudCustomData:P}=D;return{elements:fC(M),messageVersion:T,cloudCustomData:P}}})}function Rh(s){return mA(this,void 0,void 0,function*(){const{groupID:n,count:g,messageSequence:I,messageSequenceList:E,getType:m}=s,D={GroupId:n,ReqMsgNumber:g,WithRecalledMsg:1,Version:1,GetType:m};return I&&(D.ReqMsgSeq=I),B(E)&&E.length>0&&(D.ReqMsgSeqList=E),yield gg({servcmd:"group_open_http_svc.group_msg_get",data:D})})}function Km(s){return mA(this,void 0,void 0,function*(){const{peerAccount:n,count:g,lastMessageTime:I,messageKey:E,direction:m}=s;return gg({servcmd:"openim.getroammsg",data:{Peer_Account:n,MaxCnt:g,WithRecalledMsg:1,LastMsgTime:I,MsgKey:E,GetDirection:m}})})}function vB(s){if(me.utils.isObject(s.quoteInfo)){const{msgID:n,messageSequence:g,messageTime:I}=s.quoteInfo;return JSON.stringify({businessQuote:{messageID:n,messageSequence:g,messageTime:I}})}}var kD=Object.freeze({__proto__:null,createMessagePackOptions:ep,generateForbidCallbackControl:bD,getC2CRoamingMessagesByAnchor:Km,getGroupRoamingMessagesByAnchor:Rh,getRoamingMessages:function(s){return mA(this,void 0,void 0,function*(){const{peerAccount:n,count:g,lastMessageTime:I,messageKey:E}=s;return(yield gg({servcmd:"openim.getroammsg",data:{Peer_Account:n,MaxCnt:g||15,LastMsgTime:I||0,MsgKey:E,GetDirection:0,WithRecalledMsg:1}}))||[]})},modifyC2CMessage:vh,modifyGroupMessage:MB,sendMessage:Mh});const{isPlainObject:RT}=me.utils,{MSG_AUDIO:LD,MSG_FILE:UD,MSG_IMAGE:uR,MSG_VIDEO:ER,MSG_MERGER:dR}=ko;class jm{constructor(){this._sendProtocolMap=new Map}init(){dr.getInstance().registerApi({apiName:"sendMessage",context:this,matcher:n=>![LD,UD,uR,ER,dR].includes(n[0].type)})}registerSendProtocol(n,g,I){this._sendProtocolMap.set(n,g.bind(I))}sendMessage(n,g){return mA(this,void 0,void 0,function*(){const{TOTAL_COUNT:I,SEND_COST:E,SUCCESS_COUNT:m,FAILED_COUNT:D}=nr;if(!(n instanceof OE))throw new gs({code:ua.MSG_INSTANCE_REQUIRED});const M=n.validateBeforeSend();if(!M.isValid){const{code:W,message:iA=""}=M.error||{};throw new gs({code:W,message:iA})}this._reportMessageSendQuality({name:I,message:n});let T=!1;const{messageDataHandler:P}=me.message||{};try{const{messageControlInfo:W}=g||{};let iA=null;P.addRandomOfSentMessage(n.random);const EA=Date.now(),RA=this._getSendProtocol(n);if(n.conversationType===Jr.CONV_C2C?(T=g?.onlineUserOnly===!0,iA=yield RA(n,g)):n.conversationType===Jr.CONV_GROUP&&(yield this._validateBeforeSendGroupMessage(n),iA=yield RA(n,g)),iA){const{messageDropReason:kA,sequence:xA,time:LA}=iA;if(this._updateNickAndAvatarOfSentMessageByMe(n),kA&&this._logRateLimitInfo(n,xA,kA),this._reportMessageSendQuality({name:m,message:n}),this._reportMessageSendQuality({name:E,message:n,startTs:EA}),n.isResend===!0){const SA=P.findMessage(n.ID);SA&&(me.ssoLog.debug("sendMessage",`sendMessage resend ok. ID:${SA.ID}`),P.deleteConversationMessage(SA))}return n.status=Or.SUCCESS,n.time=LA,n.conversationType===Jr.CONV_GROUP&&(n.sequence=xA),T?n._onlineOnlyFlag=!0:(P.storeConversationMessage(n),this._applySentMessageControlInfo(n,W),this._emitOnlineMessageSent(n)),n.type===wg.MSG_STREAM?{code:0,data:{message:n,streamMessageID:iA.streamMessageID}}:{code:0,data:{message:n}}}}catch(W){n.status=Or.FAIL,P.removeRandomOfSentMessage(n.random);let{errorCode:iA}=W||{},EA=W?.errorInfo||W?.message||"";throw this._hasRiskContent(iA)&&(n.hasRiskContent=!0),T||this._isRejectedByRestApi(iA)||P.storeConversationMessage(n),this._reportMessageSendQuality({name:D,message:n,error:W}),new gs({code:iA,message:EA,data:{message:n},moreMessage:`type:${n.type} from:${n.from} to:${n.to}`})}})}_hasRiskContent(n){return n===80001||n===80004}_isRejectedByRestApi(n){return n>=10100&&n<=10200||n>=120001&&n<=13e4}_emitOnlineMessageSent(n){const g=n._isExcludedFromLastMessage?"":n,{conversationID:I,conversationType:E}=n,m=Wc(I)?so.TOPIC_NEW_MESSAGE:so.NEW_MESSAGE;me.notificationCenter.emitInnerEvent(m,{result:{conversationUpdateFieldList:[{conversationID:I,type:E,message:n,lastMessage:g,unreadCount:0}]}})}_applySentMessageControlInfo(n,g){g&&RT(g)&&(g.excludedFromLastMessage===!0&&(n._isExcludedFromLastMessage=!0),g.excludedFromUnreadCount===!0&&(n._isExcludedFromUnreadCount=!0))}_logRateLimitInfo(n,g,I){const E=`from:${n.from} to:${n.to} sequence:${g} messageDropReason:${I}`;me.ssoLog.warn("messageDropReason",E)}_updateNickAndAvatarOfSentMessageByMe(n){const{messageDataHandler:g}=me.message||{};let I=!1;const{conversationID:E}=n,m=g.getLatestMsgSentByMe(E);if(m){const{nick:D,avatar:M}=m;D===n.nick&&M===n.avatar||(I=!0),I&&g.updateNickAndAvatarOfSentMessage({conversationID:E,latestNick:n.nick,latestAvatar:n.avatar,isSentByMe:!0})}}_validateBeforeSendGroupMessage(n){return mA(this,void 0,void 0,function*(){var g,I,E;const{to:m,from:D}=n;let M=m,T=WQ.getGroup(M);if(zr({groupID:M})&&T?.isSupportTopic)throw new gs({code:ua.MSG_SEND_GRP_WITH_TOPIC_FAIL});if(Wc(m)&&([M]=m.split(oa.TOPIC),T=WQ.getGroup(M)),!T&&typeof((g=dr.getInstance().getApiMap())===null||g===void 0?void 0:g.getGroupProfile)=="function"){const P=yield dr.getInstance().getApiMap().getGroupProfile({groupID:M});if(((E=(I=P?.data)===null||I===void 0?void 0:I.group)===null||E===void 0?void 0:E.type)===ko.GRP_AVCHATROOM){const W=rs({code:ua.MSG_SEND_FAIL_NOT_IN_AV,replacement1:D,replacement2:M});throw new gs({code:ua.MSG_SEND_FAIL_NOT_IN_AV,message:W})}}return!0})}_reportMessageSendQuality(n){me.notificationCenter.emitInnerEvent(so.QUALITY_STAT,{label:nI.MESSAGE_SEND_SUCCESS_RATE,data:n})}_getSendProtocol(n){return this._sendProtocolMap.get(n.type)||Mh}}var wT=new class{constructor(){this._sparseMessagesByConversation=new Map,this._latestMessageSentByPeerMap=new Map,this._latestMessageSentByMeMap=new Map,this._randomOfSentMessageList=new Set}init(){me.notificationCenter.subscribeInnerEvent(so.LOGOUT,this._reset,this),me.notificationCenter.subscribeInnerEvent(so.DESTROY,this._dispose,this)}get _messagesByConversation(){return zQ.getMessages()}storeConversationMessage(s,n=!1){if(an)return!0;const{conversationID:g}=s;if(!g||(this._messagesByConversation.has(g)||this._messagesByConversation.set(g,new Map),this._shouldSkipStoreMessage(s,n)))return!1;const I=this._getUniqueIdOfMessage(s);return this._messagesByConversation.get(g).set(I,s),this._updateLatestMessageMap(s),!0}_updateLatestMessageMap(s){const{conversationID:n}=s;s.flow==="out"?this._setLatestMsgSentByMe(n,s):n.startsWith("C2C")&&this._setLatestMsgSentByPeer(n,s)}_shouldSkipStoreMessage(s,n){const g=this._getUniqueIdOfMessage(s),I=this._messagesByConversation.get(s.conversationID);if(I?.has(g)){const E=I?.get(g);if(!n||E?.isModified===!0)return!0}return!1}deleteConversationMessage(s){var n;const{conversationID:g=""}=s,I=this._getUniqueIdOfMessage(s);this._messagesByConversation.has(g)&&((n=this._messagesByConversation.get(g))===null||n===void 0||n.delete(I))}modifyConversationMessage(s,n){var g;if(!this._messagesByConversation.has(s)&&!this._sparseMessagesByConversation.has(s))return{isUpdated:!1,message:null};const I=this._getUniqueIdOfMessage(n),E=this._getMessageFromLocalMessage(s,I);if(E){const{messageVersion:m,elements:D,cloudCustomData:M,checkResult:T=0}=n,P=T>1;if(me.ssoLog.debug("modifyConversationMessage",`conversationToMessageMap modifyConversationMessage localVersion:${E.version} remoteVersion:${m}`),E.versionE.ID===s)||null,n)break;if(!n){const I=Array.from(this._sparseMessagesByConversation.values());for(const E of I)if(n=E.get(s)||null,n)break}return n}deleteConversationMessageList(s){this._messagesByConversation.has(s)&&(this._messagesByConversation.delete(s),this._latestMessageSentByMeMap.delete(s),this._latestMessageSentByPeerMap.delete(s)),this._sparseMessagesByConversation.has(s)&&this._sparseMessagesByConversation.delete(s)}revokeMessage({conversationID:s,sequence:n,random:g,revoker:I}){const E=this._messagesByConversation.get(s);let m=null;if(E){const D=Array.from(E.values());if(m=this._findMessageBySequenceAndRandom({messageList:D,random:g,sequence:n}),m){const M=this._getUniqueIdOfMessage(m);return zQ.updateMessage(s,[M],{isRevoked:!0,revoker:I,operation:yc.revoke}),m}}if(this._sparseMessagesByConversation.has(s)){const D=Array.from(this._sparseMessagesByConversation.get(s).values());if(m=this._findMessageBySequenceAndRandom({messageList:D,random:g,sequence:n}),m)return m.isRevoked=!0,m.revoker=I,m}}_findMessageBySequenceAndRandom({messageList:s,sequence:n,random:g}){for(let I=0;I0){const D=new Map([...E,...m.entries()]);this._messagesByConversation.set(g,D),this._updateLatestMessageSentByMe(g),this._updateLatestMessageSentByPeer(g)}return I}storeSparseMessageList(s){if(s.length===0)return;const{conversationID:n}=s[0],g=s.length;this._sparseMessagesByConversation.has(n)||this._sparseMessagesByConversation.set(n,new Map);const I=this._sparseMessagesByConversation.get(n);for(let E=0;E=0;I--)if(g[I].flow==="out"){this._setLatestMsgSentByMe(s,g[I]);break}}}_updateLatestMessageSentByPeer(s){var n;const g=Array.from(((n=this._messagesByConversation.get(s))===null||n===void 0?void 0:n.values())||[]);if(g.length!==0&&s.startsWith("C2C")){for(let I=g.length-1;I>=0;I--)if(g[I].flow==="in"){this._setLatestMsgSentByPeer(s,g[I]);break}}}_getUniqueIdOfMessage(s){const{from:n,to:g,random:I,sequence:E,time:m}=s;return`${n}-${g}-${I}-${E}-${m}`}_setLatestMsgSentByPeer(s,n){this._latestMessageSentByPeerMap.set(s,n)}_setLatestMsgSentByMe(s,n){this._latestMessageSentByMeMap.set(s,n)}getLatestMsgSentByPeer(s){return this._latestMessageSentByPeerMap.get(s)}getLatestMsgSentByMe(s){return this._latestMessageSentByMeMap.get(s)}addRandomOfSentMessage(s){this._randomOfSentMessageList.add(s)}removeRandomOfSentMessage(s){this._randomOfSentMessageList.delete(s)}updateNickAndAvatarOfSentMessage(s){const{conversationID:n="",latestAvatar:g,latestNick:I,isSentByMe:E=!0}=s,m=this._messagesByConversation.get(n);if(!m)return;const D=Array.from(m.values()),M=E?"out":"in";D.forEach(T=>{const{nick:P,avatar:W,flow:iA}=T;iA===M&&(P!==I&&(T.nick=I),W!==g&&(T.avatar=g))})}isInMessageList(s){var n;const{conversationID:g}=s;if(!g||!this._messagesByConversation.has(g))return!1;const I=this._getUniqueIdOfMessage(s);return(n=this._messagesByConversation.get(g))===null||n===void 0?void 0:n.has(I)}isMessageSentByCurrentInstance(s){const{random:n}=s;return this._randomOfSentMessageList.has(n)}getContinuousMessagesByConversation(){return this._messagesByConversation}getLocalMessageList(s){const n=this._messagesByConversation.get(s);return n?[...n.values()]:[]}getSparseMessageList(s){const n=this._sparseMessagesByConversation.get(s);return n?[...n.values()]:[]}_reset(){this._messagesByConversation.clear(),this._latestMessageSentByPeerMap.clear(),this._latestMessageSentByMeMap.clear(),this._randomOfSentMessageList.clear()}_dispose(){this._reset(),me.notificationCenter.unSubscribeInnerEvent(so.LOGOUT,this._reset,this),me.notificationCenter.unSubscribeInnerEvent(so.DESTROY,this._dispose,this)}};function Wm(s,n){const g=yB.getConversation(s);if(g?.lastMessage){const{lastMessage:I}=g,{lastTime:E,lastSequence:m,version:D}=I,{time:M,sequence:T,messageVersion:P,elements:W,cloudCustomData:iA}=n;E===M&&m===T&&D!==P&&(I.type=W[0].type,I.payload=W[0].content,I.messageForShow=zc(I.type,I.payload),I.cloudCustomData=iA,I.version=P,yB.updateConversation(s,{lastMessage:I}))}}class CR{init(){dr.getInstance().registerApi({apiName:"modifyMessage",context:this})}modifyMessage(n){return mA(this,void 0,void 0,function*(){const{to:g,payload:I,sequence:E,conversationType:m,random:D,time:M,from:T,type:P}=n;if(this._canModifyMessageElement(P)){const W=n?._elements||[];W.length>=1&&(W[0].type=P,W[0].content=I)}try{let W=null,iA=null;if(m===Jr.CONV_C2C?W=yield vh(n):m===Jr.CONV_GROUP&&(W=yield MB(n)),W){let EA=`${m}${g}`;return g===Ar()&&m===Jr.CONV_C2C&&(EA=`${m}${T}`),iA={conversationType:m,from:T,to:g,time:M,random:D,sequence:E,elements:W?.elements,cloudCustomData:W?.cloudCustomData,messageVersion:W?.messageVersion,conversationID:EA},this._handleModifyMessageSuccess(iA),{code:0,data:{message:n},successLog:{message:`to:${g}`}}}}catch(W){const{errorCode:iA}=W||{};throw new gs({functionName:"modifyMessage",code:iA,moreMessage:`to:${g}`})}})}_handleModifyMessageSuccess(n){const{conversationID:g}=n,{isUpdated:I,message:E}=me.message.messageDataHandler.modifyConversationMessage(g,n);I===!0&&me.notificationCenter.emitOuterEvent(yr.MESSAGE_MODIFIED,{name:yr.MESSAGE_MODIFIED,data:[E]}),me.notificationCenter.emitInnerEvent(so.MESSAGE_MODIFIED,{conversationID:g,message:E}),Wm(g,n)}_canModifyMessageElement(n){return[FE.MSG_TEXT,FE.MSG_CUSTOM,FE.MSG_LOCATION,FE.MSG_FACE].includes(n)}}class wh{init(){const{notificationCenter:n}=me,{InnerEventSubType:g}=n;ws.getInstance().registerWorkflowStep(Pt.RECEIVE_C2C_NEW_MESSAGE,Ht.HANDLE_C2C_NEW_MESSAGE,this._handleC2CMessagePush,this),ws.getInstance().registerWorkflowStep(Pt.RECEIVE_C2C_NEW_MESSAGE,Ht.EMIT_C2C_MESSAGE_EVENT,this._emitMessageEventsAfterReceiveNewMessage,this),ws.getInstance().registerWorkflowStep(Pt.SYNC_SERVER_INFO_AFTER_RE_ONLINE,Ht.EMIT_C2C_MESSAGE_EVENT,this._emitMessageEventsAfterSyncUnreadMessage,this),n.subscribeInnerEvent(so.MESSAGE_PUSH,g.C2C_REALTIME_MESSAGE,this._executeReceiverNewMessageWorkFlow,this),n.subscribeInnerEvent(so.MESSAGE_PUSH,g.C2C_MESSAGE_MODIFIED,this._handleC2CMessageModify,this),n.subscribeInnerEvent(so.DESTROY,this._dispose,this)}_executeReceiverNewMessageWorkFlow(n){ws.getInstance().executeWorkflow(Pt.RECEIVE_C2C_NEW_MESSAGE,n)}_handleC2CMessagePush(n){const g=n.data||{},{messageDataHandler:I}=me.message||{},E=[],m=new Map;return g.C2cMsgArray.forEach(D=>{const M=this._generateC2CMessage(D);this._updateMessageProfile(M);let T=M.isModified===1;I.isMessageSentByCurrentInstance(M)?M.isModified=T:T=!1,M._onlineOnlyFlag?I.isMessageSentByCurrentInstance(M)||E.push(M):SB(M)&&(I.storeConversationMessage(M)&&Ap({conversationUpdateFields:m,message:M}),I.isMessageSentByCurrentInstance(M)&&!T||E.push(M))}),{conversationUpdateFieldList:[...m.values()],messages:E}}_emitMessageEventsAfterReceiveNewMessage(n){var g;const{messages:I=[]}=((g=n.result)===null||g===void 0?void 0:g[Ht.HANDLE_C2C_NEW_MESSAGE])||{};this._emitMessageEvents(I)}_emitMessageEventsAfterSyncUnreadMessage(n){var g;const{messages:I=[]}=((g=n.result)===null||g===void 0?void 0:g[Ht.UNREAD_MESSAGE_SYNC])||{};this._emitMessageEvents(I)}_emitMessageEvents(n){const g=n?.filter(E=>E?.isModified===!0)||[];g.length>0&&me.notificationCenter.emitOuterEvent("onMessageModified",{name:"onMessageModified",data:g});const I=n?.filter(E=>!E?.isModified);I.length>0&&me.notificationCenter.emitOuterEvent("onMessageReceived",{name:"onMessageReceived",data:I})}_generateC2CMessage(n){const g=Jr.CONV_C2C,I=Hm(n),E=me.message.messageFactory.createMessage(Object.assign(Object.assign({},I),{conversationType:g,flow:Ku.IN})),{elements:m}=I;return E.setElement(m),E}_updateMessageProfile(n){var g;const{messageDataHandler:I}=me.message||{},E=(g=me.store.get("login"))===null||g===void 0?void 0:g.userId,{from:m,nick:D,avatar:M,conversationID:T=""}=n;if(m!==E){const P=I.getLatestMsgSentByPeer(T);if(P){const{nick:W,avatar:iA}=P;r(D)||r(M)?(n.nick=l(W)?W:n.nick,n.avatar=l(iA)?iA:n.avatar):D===W&&M===iA||(I.updateNickAndAvatarOfSentMessage({conversationID:T,latestNick:D,latestAvatar:M,isSentByMe:!1}),this._updateConversationUserProfile({conversationID:T,nick:D,avatar:M}))}}else{const P=I.getLatestMsgSentByMe(T);!P||D===P.nick&&M===P.avatar||I.updateNickAndAvatarOfSentMessage({conversationID:T,latestNick:D,latestAvatar:M,isSentByMe:!0})}}_updateConversationUserProfile(n){const{conversationID:g,nick:I,avatar:E}=n,m=yB.getConversation(g),{userProfile:D={}}=m||{};D.avatar===E&&D.nick===I||yB.updateConversation(g,{userProfile:Object.assign(Object.assign({},D),{nick:I,avatar:E})})}_updateMessageListDueToModify(n){const{conversationID:g}=n,{isUpdated:I,message:E}=me.message.messageDataHandler.modifyConversationMessage(g,n);I===!0&&me.notificationCenter.emitOuterEvent("onMessageModified",{name:"onMessageModified",data:[E]}),me.notificationCenter.emitInnerEvent("ModifyMessageSuccess",n),Wm(g,n)}_handleC2CMessageModify(n){n.C2cMsgModNotifys.forEach(g=>{var I;const E=Jr.CONV_C2C;let m=qm(g);const{to:D,from:M}=m;let T=`${E}${D}`;D===((I=me.store.get("login"))===null||I===void 0?void 0:I.userId)&&(T=`${E}${M}`),m=Object.assign({conversationType:E,conversationID:T},m),this._updateMessageListDueToModify(m)})}_dispose(){const{notificationCenter:n}=me,{InnerEventSubType:g}=n;me.notificationCenter.unSubscribeInnerEvent(so.MESSAGE_PUSH,g.C2C_REALTIME_MESSAGE,this._handleC2CMessagePush,this),me.notificationCenter.unSubscribeInnerEvent(so.MESSAGE_PUSH,g.C2C_MESSAGE_MODIFIED,this._handleC2CMessageModify,this),me.notificationCenter.unSubscribeInnerEvent(so.DESTROY,this._dispose,this)}}class _h{init(){const{notificationCenter:n}=me,{InnerEventSubType:g}=n;ws.getInstance().registerWorkflowStep(Pt.RECEIVE_GROUP_NEW_MESSAGE,Ht.HANDLE_GROUP_NEW_MESSAGE,this._handleGroupMessagePush,this),ws.getInstance().registerWorkflowStep(Pt.RECEIVE_GROUP_NEW_MESSAGE,Ht.EMIT_GROUP_MESSAGE_EVENT,this._emitMessageEvents,this),n.subscribeInnerEvent(so.MESSAGE_PUSH,g.GROUP_REALTIME_MESSAGE,this._executeReceiverNewMessageWorkFlow,this),n.subscribeInnerEvent(so.MESSAGE_PUSH,g.GROUP_MESSAGE_MODIFIED,this._handleGroupMessageModify,this),n.subscribeInnerEvent(so.DESTROY,this._dispose,this)}_executeReceiverNewMessageWorkFlow(n){this._canExecuteReceiverNewMessageWorkFlow(n)&&ws.getInstance().executeWorkflow(Pt.RECEIVE_GROUP_NEW_MESSAGE,n)}_handleGroupMessagePush(n){const g=n.data||{},{messageDataHandler:I}=me.message,E=[],m=new Map,D=g?.GroupMsgArray;return D?.forEach(M=>{if(M.GroupInfo.NotVisible===1)return;const T=this._generateGroupMessage(M);this.updateMessageProfile(T);let P=T.isModified===1;I.isMessageSentByCurrentInstance(T)?T.isModified=P:P=!1,T._onlineOnlyFlag?I.isMessageSentByCurrentInstance(T)||E.push(T):SB(T)&&I.storeConversationMessage(T)&&(E.push(T),Ap({conversationUpdateFields:m,message:T}))}),{conversationUpdateFieldList:[...m.values()],messages:E}}_emitMessageEvents(n){var g;const{messages:I}=((g=n.result)===null||g===void 0?void 0:g[Ht.HANDLE_GROUP_NEW_MESSAGE])||{},E=I?.filter(D=>D?.isModified===!0)||[];E.length>0&&me.notificationCenter.emitOuterEvent("onMessageModified",{name:"onMessageModified",data:E});const m=I?.filter(D=>!D?.isModified)||[];m.length>0&&me.notificationCenter.emitOuterEvent("onMessageReceived",{name:"onMessageReceived",data:m})}_generateGroupMessage(n){const g=Jr.CONV_GROUP,I=ND(n),E=me.message.messageFactory.createMessage(Object.assign(Object.assign({},I),{conversationType:g,flow:Ku.IN})),{elements:m}=I;return E.setElement(m),E}updateMessageProfile(n){var g;const{messageDataHandler:I}=me.message||{},E=(g=me.store.get("login"))===null||g===void 0?void 0:g.userId,{from:m,nick:D,avatar:M,conversationID:T="",_elements:P}=n;if(m===E){const W=I.getLatestMsgSentByMe(T);!W||D===W.nick&&M===W.avatar||I.updateNickAndAvatarOfSentMessage({conversationID:T,latestNick:D,latestAvatar:M,isSentByMe:!0})}else if(m===ko.CONV_SYSTEM){const{operationType:W,memberInfoList:iA,operatorInfo:EA}=P;let RA={};if(Rs(iA)?Rs(EA)||(RA=EA):[Tg.JOINED,Tg.KICKED,Tg.ADMIN_SET,Tg.ADMIN_CANCELED].includes(W)&&(RA=Object.assign({},iA[0])),!Rs(RA)){const{nick:kA="",avatar:xA=""}=RA;n.nick=kA,n.avatar=xA}}}_updateMessageListDueToModify(n){const{conversationID:g}=n,{isUpdated:I,message:E}=me.message.messageDataHandler.modifyConversationMessage(g,n);I===!0&&me.notificationCenter.emitOuterEvent("onMessageModified",{name:"onMessageModified",data:[E]}),Wm(g,n)}_handleGroupMessageModify(n){n.GroupMsgModNotifys.forEach(g=>{const I=Jr.CONV_GROUP;let E=GD(g);const{topicID:m,groupID:D}=E,M=m||D,T=`${I}${M}`;E=Object.assign({conversationType:I,conversationID:T,to:M},E),this._updateMessageListDueToModify(E)})}_dispose(){const{notificationCenter:n}=me,{InnerEventSubType:{GROUP_REALTIME_MESSAGE:g,GROUP_MESSAGE_MODIFIED:I}}=n;n.unSubscribeInnerEvent(so.MESSAGE_PUSH,g,this._handleGroupMessagePush,this),n.unSubscribeInnerEvent(so.MESSAGE_PUSH,I,this._handleGroupMessageModify,this),n.unSubscribeInnerEvent(so.DESTROY,this._dispose,this)}_canExecuteReceiverNewMessageWorkFlow(n){var g,I;const{GroupId:E,GroupType:m}=((I=(g=n?.GroupMsgArray)===null||g===void 0?void 0:g[0])===null||I===void 0?void 0:I.GroupInfo)||{},D=m===ka.GRP_AVCHATROOM;return!(!WQ.getGroup(E)&&D)}}var FD=new class{constructor(){this.c2cMessageReceiver=new wh,this.groupMessageReceiver=new _h}init(){this.c2cMessageReceiver.init(),this.groupMessageReceiver.init()}};const hR={createCustomMessage:{to:{required:!0,rules:["string"],allowEmpty:!1},conversationType:{required:!0,rules:["string"],allowEmpty:!1},payload:{required:!0,rules:["object"],allowEmpty:!1},cloudCustomData:{required:!1,rules:["string"],allowEmpty:!1},priority:{required:!1,rules:["string"],allowEmpty:!1},customModerationConfigurationID:{required:!1,rules:["string"],allowEmpty:!1}},sendMessage:[{key:"message",required:!0,rules:["object"],allowEmpty:!1},{key:"options",required:!1,rules:["object"],allowEmpty:!1}],createTextMessage:{to:{required:!0,rules:["string"],allowEmpty:!1},conversationType:{required:!0,rules:["string"],allowEmpty:!1,customValidator:s=>!(!s.startsWith("C2C")&&!s.startsWith("GROUP"))||"conversationType is invalid."},payload:{required:!0,rules:["object"],allowEmpty:!1,customValidator:s=>function(n){var g;return typeof n?.text!="string"||typeof n.text=="string"&&((g=n?.text)===null||g===void 0?void 0:g.length)===0?"payload.text must be a string":!0}(s)}}},_T={createCustomMessage:!0,sendMessage:!0,modifyMessage:!0};var TT=new class{constructor(){this._historyMessageListFetchAnchors=new Map,this.completedHistoryConversations=new Set}getGroupRoamingMessagesByAnchor(s){return mA(this,void 0,void 0,function*(){try{const{conversationID:n,count:g,direction:I,sequence:E,messageSequenceList:m,shouldMarkCompleted:D=!1,getType:M}=s,T=n.replace(ba.CONV_GROUP,""),P=[];let W=E;if(I===qc.BACKWARD){if(typeof E!="number")return{messageList:[],hasNoMoreHistoryMessage:!1,nextReqMessageIDFromServer:""};W=E+g-1}const iA=yield Rh({groupID:T,count:g,messageSequence:W,messageSequenceList:m,getType:M});if(iA){const{RspMsgList:EA=[],NextReqMsgSeq:RA=0,IsFinished:kA,InvisibleMsgSeq:xA}=iA,LA=`groupID:${T} sequence:${E} reqSeq:${W} direction:${I} complete:${kA} nextSequence:${RA} remoteMsgCount:${EA.length} invisibleSequenceList:${xA}`,SA=[];for(let re=0;re=E),OA&&D&&this.completedHistoryConversations.add(n);const JA=DB(SA);return me.ssoLog.info("getGroupRoamingMessagesByAnchor",LA),{messageList:JA,invisibleSequenceList:xA,nextReqMessageIDFromServer:RA,hasNoMoreHistoryMessage:OA,serverGroupTipList:P}}}catch(n){const{errorCode:g,errorInfo:I}=n||{};throw new gs({code:g,message:I})}})}clearHistoryMessageListFetchAnchors(s){this._historyMessageListFetchAnchors.delete(s)}isHistoryMessageFetchCompleted(s){return this.completedHistoryConversations.has(s)}_parseMessage(s){var n;const g=ba.CONV_GROUP;s.Event===4&&(s.MsgBody.MsgType=ko.MSG_GRP_TIP);const I=ND(s),E=Jm.createMessage(Object.assign(Object.assign({},I),{conversationType:g,flow:"in"}));return fB(((n=I.elements)===null||n===void 0?void 0:n.content)||{},E),E.setElement(I.elements),E}getC2CRoamingMessagesByAnchor(s){return mA(this,void 0,void 0,function*(){var n;try{const{conversationID:g,count:I,messageID:E,time:m,direction:D,shouldMarkCompleted:M=!1}=s;let T=m,P="";if(!m){const EA=E?me.message.messageDataHandler.findMessage(E):null;if(T=EA?.time||0,E&&this._historyMessageListFetchAnchors.has(g)){const RA=this._historyMessageListFetchAnchors.get(g);T=RA.lastMessageTime,P=RA.messageKey}}const W=g.replace(ba.CONV_C2C,""),iA=yield Km({count:I,lastMessageTime:T,messageKey:P,peerAccount:W,direction:D});if(iA){const{MsgList:EA=[],Complete:RA,MsgKey:kA,LastMsgTime:xA}=iA;this._historyMessageListFetchAnchors.set(g,{messageKey:kA,lastMessageTime:xA});const LA=[];for(let re=0;re{const{tag:E,value:m}=I;E&&E.indexOf(PD)>-1?g.profileCustomField.push({key:E,value:m}):Rd.has(E)&&(g[Rd.get(E)]=m)}),Object.assign(Object.assign({},zm),g)}parseProfileItem(s=[]){const n=[];return s.forEach(g=>{n.push({tag:g.Tag,value:g.Value})}),n}parseProfileList(s=[]){const n=[];return s.forEach(g=>{n.push({tag:g.Tag,value:g.ValueBytes})}),n}convertParamsToProfile(s){const n=[];return Object.keys(s).forEach(g=>{g!==xD&&n.push({tag:Ol[g.toUpperCase()],value:s[g]})}),s.profileCustomField&&B(s.profileCustomField)&&s.profileCustomField.forEach(g=>{n.push({tag:g.key,value:g.value})}),n}normalizeProfileFields(s){const n={},g=[];return s.forEach(I=>{const{tag:E,value:m}=I;if(E&&E.indexOf(PD)>-1&&g.push({key:E,value:m}),Rd.has(E)&&m!==void 0){const D=Rd.get(E);n[D]=m}}),g.length>0&&(n.profileCustomField=g),n}};const{generateProtocolData:QR}=me.common;function pR(s){return mA(this,void 0,void 0,function*(){const n="profile.portrait_get_all",g={From_Account:Ar(),UserItem:[]};s.forEach(D=>{g.UserItem.push({CustomSequence:0,StandardSequence:0,To_Account:D})});const I=QR({servcmd:n,data:g}),E=`${I.head.seq}${n}`,m=yield me.channel.sendPacket(I,{requestId:E});if(m)return function(D){const{ActionStatus:M,ErrorCode:T,ErrorDisplay:P,ErrorInfo:W,UserProfileItem:iA}=D,EA=[];return iA.map(RA=>{const{To_Account:kA,CustomSequence:xA,ResultCode:LA,ResultInfo:SA,StandardSequence:OA,ProfileItem:JA}=RA,re=ju.parseProfileItem(JA);EA.push({userId:kA,customSequence:xA,resultCode:LA,resultInfo:SA,standardSequence:OA,profileItem:re})}),{actionStatus:M,errorCode:T,errorDisplay:P,errorInfo:W,userProfile:EA}}(m)})}function PE(s){return rc.getFriendMap().has(s)}const{isEmpty:YD}=me.utils;class Zm{constructor(){this._strangerProfileMap=new Map}init(){dr.getInstance().registerApi({apiName:"getMyProfile",context:this}),dr.getInstance().registerApi({apiName:"getUserProfile",context:this}),dr.getInstance().registerApi({apiName:"updateMyProfile",context:this}),this.createProfile=ju.createProfile.bind(ju);const{notificationCenter:n}=me;ws.getInstance().registerWorkflowStep(Pt.SYNC_SERVER_INFO_AFTER_LOGIN,Ht.USER_PROFILE_SYNC,this.getMyProfileCacheThenServer,this),n.subscribeInnerEvent(so.MESSAGE_PUSH,n.InnerEventSubType.PROFILE_MODIFIED,this._onProfileDataModify,this),n.subscribeInnerEvent(so.LOGOUT,this._reset,this),n.subscribeInnerEvent(so.DESTROY,this._dispose,this)}getMyProfile(){return mA(this,void 0,void 0,function*(){try{const n=Ar(),g=yield pR([n]);if(g){const I=this._handleProfileFormResponse(g)[0];return rc.getUserProfileMap().set(n,I),{code:0,data:I}}}catch(n){const{errorCode:g,errorInfo:I}=n;throw new gs({functionName:"getMyProfile",code:g,message:I})}})}getUserProfile(n){return mA(this,void 0,void 0,function*(){try{let{userIDList:g}=n;const{userIdListToRequest:I,profileFromCache:E}=this._filterRequestAndCacheUsers(g);if(I.length===0)return{code:0,data:E,successLog:{message:`userIDList.length:${g.length}`}};I.length>BR&&(me.ssoLog.warn("getUserProfile","userIdListToRequest.length > 1000"),I.length=BR);const{data:m,error:D}=yield this._batchFetchUserProfiles(I),M=I.length,T=m.length,P=M-T;if(E.length===0&&M===P&&!YD(D))throw D;if(B(m))return m.forEach(iA=>{PE(iA.userID)?rc.getUserProfileMap().set(iA.userID,iA):this._strangerProfileMap.set(iA.userID,iA)}),{code:0,data:m.concat(E),successLog:{message:`getUserProfile query:${M} success:${T} fail:${P} from cache:${E.length}`}}}catch(g){throw new gs(g)}})}getMyProfileCacheThenServer(){return mA(this,void 0,void 0,function*(){const n=Ar(),g=rc.getUserProfileMap().has(n);return g?{code:0,data:g}:this.getMyProfile()})}updateMyProfile(n){return mA(this,void 0,void 0,function*(){const g=Ar(),I={};for(const m in n)n[m]!==void 0&&(I[m]=n[m]);const E=ju.convertParamsToProfile(I);try{yield function(P){return mA(this,void 0,void 0,function*(){const W="profile.portrait_set",iA=QR({servcmd:W,data:P}),EA=`${iA.head.seq}${W}`,RA=yield me.channel.sendPacket(iA,{requestId:EA});if(RA){const{ActionStatus:kA,ErrorCode:xA,ErrorDisplay:LA,ErrorInfo:SA}=RA;return{actionStatus:kA,errorCode:xA,errorDisplay:LA,errorInfo:SA}}})}({From_Account:g,ProfileItem:E});const D=rc.getUserProfile(g);let M;M=D?Object.assign(Object.assign({},D),I):ju.createProfile(g,E);const T=!rg(D,M,["lastUpdatedTime"]);return M.lastUpdatedTime=Date.now(),rc.getUserProfileMap().set(g,M),T&&this._emitProfileUpdated(M),{code:0,data:M,successLog:{message:`profileArray: ${me.utils.safeStringify(E)}`}}}catch(m){const{errorCode:D,errorInfo:M}=m;throw new gs({functionName:"updateMyProfile",code:D,message:M,moreMessage:`params: ${me.utils.safeStringify(n)}`})}})}updateMyNickAndAvatar(n){return mA(this,void 0,void 0,function*(){const g=Ar(),I=Date.now(),E=rc.getUserProfile(g);let m={};m=E?Object.assign(E,n):ju.createProfile(g,n),m.lastUpdatedTime=I,rc.getUserProfileMap().set(g,m)})}_onProfileDataModify(n){const g=function(m){const{Profile_Account:D,PushType:M,ProfileList:T}=m;return{userId:D,pushType:M,profileList:ju.parseProfileList(T)}}(n.ProfileDataMod[0]);if(YD(g))return;const{isProfileUpdated:I,profile:E}=this._handleProfileModified(g);I&&this._emitProfileUpdated(E)}_emitProfileUpdated(n){me.notificationCenter.emitInnerEvent(so.PROFILE_UPDATE,{name:so.PROFILE_UPDATE,data:[n]}),me.notificationCenter.emitOuterEvent(yr.PROFILE_UPDATED,{name:yr.PROFILE_UPDATED,data:[n]}),yB.updateConversation(`C2C${n?.userID}`,{userProfile:n})}_dispose(){const{notificationCenter:n}=me;n.unSubscribeInnerEvent(so.LOGOUT,this._reset,this),n.unSubscribeInnerEvent(so.MESSAGE_PUSH,n.InnerEventSubType.PROFILE_MODIFIED,this._onProfileDataModify,this),n.unSubscribeInnerEvent(so.DESTROY,this._dispose,this),this._reset()}_handleProfileModified(n){const{userId:g,profileList:I}=n,E=rc.getUserProfile(g);if(!(Ar()===g||PE(g)&&E))return{isProfileUpdated:!1,profile:null};const m=ju.normalizeProfileFields(I),D=Object.keys(m).some(W=>W===xD?this._isCustomFieldChanged(E.profileCustomField,m.profileCustomField):E[W]!==m[W]);if(!D)return{isProfileUpdated:!1,profile:E};const M=Date.now(),T=Object.prototype.hasOwnProperty.call(m,xD)?this._mergeProfileCustomField(E.profileCustomField,m.profileCustomField):E.profileCustomField,P=Object.assign(Object.assign(Object.assign({},E),m),{profileCustomField:T,lastUpdatedTime:M});return rc.getUserProfileMap().set(g,P),{isProfileUpdated:D,profile:P}}_filterRequestAndCacheUsers(n){const g=[],I=[];return n.forEach(E=>{const m=rc.getUserProfileMap().has(E);PE(E)&&m?I.push(rc.getUserProfile(E)):this._isStrangerAndProfileValid(E)?I.push(this._strangerProfileMap.get(E)):g.push(E)}),{userIdListToRequest:g,profileFromCache:I}}_handleProfileFormResponse(n){const{userProfile:g}=n;if(!Array.isArray(g))return[];const I=g.filter(m=>m.userId!=="@TLS#NOT_FOUND"&&m.userId!==""&&!YD(m.profileItem)),E=Date.now();return I.map(m=>{const D=ju.createProfile(m.userId,m.profileItem);return D.lastUpdatedTime=E,D})}_isStrangerAndProfileValid(n){var g;if(!PE(n)){const{lastUpdatedTime:I=0}=this._strangerProfileMap.get(n)||{},E=((g=me.store.get("cloudConfig"))===null||g===void 0?void 0:g.stranger_profile_expiration_time)||6e5;return Date.now()-I<=E}return!1}_chunkUserIDList(n,g){return Array.from({length:Math.ceil(n.length/g)},(I,E)=>n.slice(E*g,(E+1)*g))}_batchFetchUserProfiles(n){return mA(this,void 0,void 0,function*(){const g=[],I=[];let E={};return this._chunkUserIDList(n,100).forEach(m=>{g.push(pR(m))}),(yield Promise.allSettled(g)).forEach(m=>{if(m.status==="fulfilled"){const D=m.value,M=this._handleProfileFormResponse(D);B(M)&&I.push(...M)}else if(m.status==="rejected"){const{code:D,message:M}=m.reason||{};E={errorCode:D,message:M}}}),{data:I,error:E}})}_isCustomFieldChanged(n=[],g=[]){if(!B(g)||g.length===0)return!1;if(!B(n)||n.length===0)return!0;const I=new Map(n.map(E=>[E.key,E.value]));return g.some(E=>I.get(E.key)!==E.value)}_mergeProfileCustomField(n=[],g=[]){const I=B(n)?n.map(E=>Object.assign({},E)):[];return B(g)&&g.length!==0&&g.forEach(({key:E,value:m})=>{const D=I.find(M=>M.key===E);D?D.value=m:I.push({key:E,value:m})}),I}_reset(){rc.getUserProfileMap().clear(),this._strangerProfileMap.clear()}}const Xm=new Map,VD=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"];for(let s=0,n=VD.length;s>(-2*m&6)):0)E="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(E);try{return decodeURIComponent(escape(g))}catch(I){return console.warn(I),""}}const{isEmpty:GT}=me.utils,{generateProtocolData:$m}=me.common;function mR(s){return mA(this,void 0,void 0,function*(){const n="im_open_status.ws_get_user_status",g=$m({servcmd:n,data:{To_Account:s}}),I=`${g.head.seq}${n}`,E=yield me.channel.sendPacket(g,{requestId:I});if(E)return function(m){const{ErrorCode:D,ErrorInfo:M,ErrorList:T=[],UserStatusList:P=[]}=m,W=P.map(EA=>{const{To_Account:RA,Status:kA,CustomStatus:xA,Detail:LA=[]}=EA;return{userID:RA,statusType:kA,customStatus:tp(xA),onlineDevices:bT(LA)}}),iA=T.map(EA=>{const{To_Account:RA,Invalid_Account:kA,ErrorCode:xA,ErrorInfo:LA}=EA;return{userID:GT(kA)?RA:kA,code:xA,message:LA}});return{errorCode:D,errorInfo:M,successUserList:W,failureUserList:iA}}(E)})}function bT(s){const n=[];return s?.forEach(g=>{const{Platform:I,Status:E}=g;E==="Online"&&n.push(I)}),n}class kT{constructor(){this._customStatus=""}init(){const{notificationCenter:n}=me;dr.getInstance().registerApi({apiName:"getUserStatus",context:this}),dr.getInstance().registerApi({apiName:"setSelfStatus",context:this}),dr.getInstance().registerApi({apiName:"subscribeUserStatus",context:this}),dr.getInstance().registerApi({apiName:"unsubscribeUserStatus",context:this}),ws.getInstance().registerWorkflowStep(Pt.SYNC_SERVER_INFO_AFTER_RE_ONLINE,Ht.USER_STATUS_UPDATE,this._onReOnline,this),n.subscribeInnerEvent(so.MESSAGE_PUSH,n.InnerEventSubType.USER_STATUS_UPDATE,this._onUserStatusUpdate,this),n.subscribeInnerEvent(so.LOGOUT,this._reset,this),n.subscribeInnerEvent(so.DESTROY,this._dispose,this)}setSelfStatus(n){return mA(this,void 0,void 0,function*(){const g=Ar(),{customStatus:I}=n;try{return yield function(E){return mA(this,void 0,void 0,function*(){const m="im_open_status.ws_set_custom_status",D=$m({servcmd:m,data:{CustomStatus:E}}),M=`${D.head.seq}${m}`,T=yield me.channel.sendPacket(D,{requestId:M});if(T){const{ErrorCode:P,ErrorInfo:W}=T;return{errorCode:P,errorInfo:W}}})}(I),this._customStatus=I,{code:0,data:{userID:g,statusType:Th,customStatus:I},successLog:{message:`customStatus: ${I}`}}}catch(E){const{errorCode:m,errorInfo:D}=E;throw new gs({functionName:"setSelfStatus",code:m,message:D})}})}getUserStatus(n){return mA(this,void 0,void 0,function*(){const{userIDList:g=[]}=n;if(this._isOnlyMeInArray(g))return this._getMyStatus();const I=yield this._getUserStatus(g);return Object.assign(Object.assign({},I),{successLog:{message:`userIDList length: ${g.length}`}})})}setCustomStatus(n){const g=tp(n);this._customStatus=g}subscribeUserStatus(n){return mA(this,void 0,void 0,function*(){try{const{userIDList:g=[]}=n;this._checkBusinessCapabilityBits("subscribeUserStatus");const I=this._getMaxUserCount("subscribe"),E=this._sliceUserIDList(g,I),m=yield function(M){return mA(this,void 0,void 0,function*(){const{channel:T}=me,P="im_open_status.ws_status_subscribe",W=$m({servcmd:P,data:{To_Account:M}}),iA=`${W.head.seq}${P}`;return yield T.sendPacket(W,{requestId:iA})})}(E),D=this._parseResponse(m);return{code:0,data:{failureUserList:D},successLog:{message:`userID length:${g.length} failCount: ${D.length}`}}}catch(g){const{errorCode:I}=g;throw new gs({functionName:"subscribeUserStatus",code:I})}})}unsubscribeUserStatus(n){return mA(this,void 0,void 0,function*(){try{this._checkBusinessCapabilityBits("unsubscribeUserStatus");const{userIDList:g=[]}=n,I=this._getMaxUserCount("unsubscribe"),E=this._sliceUserIDList(g,I),m=yield function(M){return mA(this,void 0,void 0,function*(){const{channel:T}=me,P="im_open_status.ws_status_unsubscribe";let W={};W=M.length===0?{UnsubscribeAll:1}:{To_Account:M};const iA=$m({servcmd:P,data:W}),EA=`${iA.head.seq}${P}`;return yield T.sendPacket(iA,{requestId:EA})})}(E),D=this._parseResponse(m);return{code:0,data:{failureUserList:D},successLog:{message:`userID length:${g.length} failCount: ${D.length}`}}}catch(g){const{errorCode:I}=g;throw new gs({functionName:"unsubscribeUserStatus",code:I})}})}_onUserStatusUpdate(n){const{UserStatusList:g=[]}=n||{},I=g.map(E=>{const{To_Account:m,Status:D,CustomStatus:M,Platform:T}=E,P={userID:m,statusType:D,customStatus:tp(M)};return T&&(P.onlineDevices=T),P});this._emitUserStatusUpdatedEvent(I)}_onReOnline(n){const g=tp(n.data.customStatus);if(this._customStatus===g)return;this._customStatus=g;const I={userID:Ar(),statusType:Th,customStatus:g};this._emitUserStatusUpdatedEvent(I)}_emitUserStatusUpdatedEvent(n){me.notificationCenter.emitOuterEvent(yr.USER_STATUS_UPDATED,{name:yr.USER_STATUS_UPDATED,data:n})}_sliceUserIDList(n,g){return n.slice(0,g)}_parseResponse(n){const{ErrorList:g=[]}=n;return g.map(I=>{const{To_Account:E,Invalid_Account:m,ErrorCode:D,ErrorInfo:M}=I;return{userID:me.utils.isEmpty(m)?E:m,code:D,message:M}})}_checkBusinessCapabilityBits(n){if(!me.store.get("commercialConfig").get(NT))throw new gs({functionName:n,code:ua.NO_USE,replacement1:n})}_getMaxUserCount(n){const g=me.store.get("cloudConfig")||{},I={query:{key:"status_query_count",default:500},subscribe:{key:"status_sub_count",default:100},unsubscribe:{key:"status_unsub_count",default:100}},{key:E,default:m}=I[n],D=g[E]||m;return parseInt(D,10)}_getMyStatus(){return{code:0,data:{successUserList:[{userID:Ar(),statusType:Th,customStatus:this._customStatus}],failureUserList:[]}}}_getUserStatus(n){return mA(this,void 0,void 0,function*(){try{this._checkBusinessCapabilityBits("getUserStatus");const g=this._getMaxUserCount("query"),I=this._sliceUserIDList(n,g),E=yield mR(I),{successUserList:m,failureUserList:D}=E||{};return{code:0,data:{successUserList:m,failureUserList:D}}}catch(g){const{errorCode:I}=g;throw new gs({functionName:"getUserStatus",code:I})}})}_isOnlyMeInArray(n){const g=Ar();return n.length===1&&n.indexOf(g)>-1}_dispose(){const{notificationCenter:n}=me;n.unSubscribeInnerEvent(so.MESSAGE_PUSH,n.InnerEventSubType.USER_STATUS_UPDATE,this._onUserStatusUpdate,this),n.unSubscribeInnerEvent(so.DESTROY,this._dispose,this),n.unSubscribeInnerEvent(so.LOGOUT,this._reset,this),this._reset()}_reset(){this._customStatus=""}}const JD={getUserProfile:{userIDList:{required:!0,rules:["array"],allowEmpty:!1}},updateMyProfile:{nick:{required:!1,rules:["string"],allowEmpty:!0},avatar:{required:!1,rules:["string"],allowEmpty:!0},gender:{required:!1,rules:["string"],allowEmpty:!0},selfSignature:{required:!1,rules:["string"],allowEmpty:!0},allowType:{required:!1,rules:["string"],allowEmpty:!0},birthday:{required:!1,rules:["number"],allowEmpty:!1},language:{required:!1,rules:["string"],allowEmpty:!0},messageSettings:{required:!1,rules:["string"],allowEmpty:!0},adminForbidType:{required:!1,rules:["string"],allowEmpty:!0},level:{required:!1,rules:["number"],allowEmpty:!1},role:{required:!1,rules:["number"],allowEmpty:!0},profileCustomField:{required:!1,rules:["array"],allowEmpty:!0,customValidator:function(s){for(const n of s){if(typeof n!="object")return"Each item in profileCustomField must be an object";if(typeof n?.key!="string")return"Each item.key in profileCustomField must be a string";if(!n?.key.startsWith(PD))return'Each item.key in profileCustomField must start with "Tag_Profile_Custom"'}return!0}}},setSelfStatus:{customStatus:{required:!0,rules:["string"],allowEmpty:!0}},getUserStatus:{userIDList:{required:!0,rules:["array"],allowEmpty:!1}},subscribeUserStatus:{userIDList:{required:!0,rules:["array"],allowEmpty:!1}},unsubscribeUserStatus:{userIDList:{required:!1,rules:["array"],allowEmpty:!0}}},LT={getMyProfile:!0,getUserProfile:!0,updateMyProfile:!0,setSelfStatus:!0,getUserStatus:!0,subscribeUserStatus:!0,unsubscribeUserStatus:!0};class UT{constructor(){this.userProfile=new Zm,this.userStatus=new kT,this.userProfile.init(),this.userStatus.init(),jc({auth:LT,params:JD})}}function HD(s){const n=[];if(!l(s))return n;const g=s.length;if(g===0)return n;for(let I=g-1;I>=0;I--)s[I]==="1"&&n.push(2**(g-I-1));return n}var wd,yC,_d;(function(s){s.NOT_START="notStart",s.PENDING="pending",s.RESOLVED="resolved",s.REJECTED="rejected"})(wd||(wd={})),function(s){s[s.C2C=1]="C2C",s[s.GROUP=2]="GROUP"}(yC||(yC={})),function(s){s[s.C2C=8]="C2C",s[s.GROUP=2]="GROUP"}(_d||(_d={}));class qD{constructor(){this._name="SyncConversationHandler",this._pagingStatus=wd.NOT_START,this._pagingTimeStamp=0,this._pagingStartIndex=0,this._pagingPinnedTimeStamp=0,this._pagingPinnedStartIndex=0}init(){const{notificationCenter:n}=me;ws.getInstance().registerWorkflowStep(Pt.SYNC_SERVER_INFO_AFTER_RE_ONLINE,Ht.CONVERSATION_RECOVER,this._syncConversationList,this),ws.getInstance().registerWorkflowStep(Pt.SYNC_SERVER_INFO_AFTER_LOGIN,Ht.CONVERSATION_LIST_SYNC,this._syncConversationListAfterLogin,this),n.subscribeInnerEvent(so.LOGOUT,this._reset,this),n.subscribeInnerEvent(so.DESTROY,this._dispose,this),me.ssoLog.debug(`${this._name}.init`)}isSyncCompleted(){return this._pagingStatus===wd.RESOLVED}_syncConversationListAfterLogin(){return mA(this,void 0,void 0,function*(){return this._pagingStatus=wd.NOT_START,this._pagingTimeStamp=0,this._pagingStartIndex=0,this._pagingPinnedTimeStamp=0,this._pagingPinnedStartIndex=0,this._syncConversationList()})}_syncConversationList(){return mA(this,void 0,void 0,function*(){const{ssoLog:n,utils:{safeStringify:g}}=me;n.debug("_syncConversationList","start");try{const I=yield this._pagingGetConversationList(!0);this._pagingStatus=wd.RESOLVED;const{conversationList:E=[]}=I||{};return n.info("_syncConversationList",`success count:${E.length}`),I}catch(I){const E=new gs(I);n.error("_syncConversationList",`fail ${g(I)}`,{error:E})}})}_pagingGetConversationList(n){return mA(this,void 0,void 0,function*(){try{const g=[];this._pagingStatus=wd.PENDING;const I=yield function(iA){return mA(this,void 0,void 0,function*(){const{fromAccount:EA,pagingTimeStamp:RA,pagingStartIndex:kA,pagingPinnedTimeStamp:xA,pagingPinnedStartIndex:LA}=iA;return gg({servcmd:"recentcontact.page_get",data:{AssistFlags:31,MsgAssistFlags:15,OrderType:1,From_Account:EA,StartIndex:kA,TimeStamp:RA,TopStartIndex:LA,TopTimeStamp:xA}})})}({fromAccount:Ar(),pagingTimeStamp:n?this._pagingTimeStamp:0,pagingStartIndex:n?this._pagingStartIndex:0,pagingPinnedTimeStamp:n?this._pagingPinnedTimeStamp:0,pagingPinnedStartIndex:n?this._pagingPinnedStartIndex:0}),{CompleteFlag:E,SessionItem:m=[],TimeStamp:D,StartIndex:M,TopTimeStamp:T,TopStartIndex:P}=I||{};let W=[];if(E===1&&(this._pagingStatus=wd.RESOLVED),m.length>0&&(W=this._getConversationOptions(m),g.push(...W)),me.notificationCenter.emitInnerEvent(so.SYNC_CONVERSATION_LIST,{conversationUpdateFieldList:W}),this._pagingTimeStamp=D,this._pagingStartIndex=M,this._pagingPinnedTimeStamp=T,this._pagingPinnedStartIndex=P,E!==1){const{conversationList:iA}=yield this._pagingGetConversationList(n);g.push(...iA)}return{conversationList:g}}catch(g){throw g}})}_getConversationOptions(n){const{utils:{isUndefined:g}}=me,I=this._convertConversationKey(n);return this._filterValidConversations(I).map(E=>(g(E.lastMsg)&&(E.lastMsg={elements:[]}),E.type===yC.C2C?this._assembleC2COption(E):this._assembleGroupOption(E)))}_filterValidConversations(n){return n.filter(({type:g,userID:I})=>g===yC.C2C&&!function(E){let m;return E.startsWith(ko.CONV_C2C)&&(m=E.replace(ko.CONV_C2C,"")),m==="@TLS#ERROR"||m==="@TLS#NOT_FOUND"}(I)||g===2)}_assembleC2COption(n){var g,I,E,m,D,M,T,P;const W=this._createUserprofile(n);return{conversationID:`${ko.CONV_C2C}${n.userID}`,type:ko.CONV_C2C,lastMessage:{lastTime:n.time,lastSequence:n.sequence,fromAccount:n.lastC2CMsgFromAccount,type:!((g=n.lastMsg)===null||g===void 0)&&g.elements[0]?(I=n.lastMsg)===null||I===void 0?void 0:I.elements[0].type:null,payload:!((E=n.lastMsg)===null||E===void 0)&&E.elements[0]?this._amendLayersOverLimitProp(n.lastMsg.elements[0].content):null,cloudCustomData:((M=(D=(m=n.lastMsg)===null||m===void 0?void 0:m.elements)===null||D===void 0?void 0:D[0])===null||M===void 0?void 0:M.cloudCustomData)||"",isRevoked:n.lastMessageFlag===_d.C2C,onlineOnlyFlag:!1,nick:"",nameCard:"",version:0,isPeerRead:this._computeIsPeerRead(n),revoker:((P=(T=n.lastMsg)===null||T===void 0?void 0:T.revokerInfo)===null||P===void 0?void 0:P.revoker)||null},unreadCount:0,userProfile:W,peerReadTime:n.peerReadTime,isPinned:n.isPinned===1,customData:n.customMark||"",markList:HD(n.standardMark),conversationGroupList:[],remark:n.friendRemark||"",messageRemindType:this._transMsgRemindType(n.messageRemindType)}}_createUserprofile(n){var g;const{userID:I,nick:E,peerAvatar:m}=n,D=[{tag:"Tag_Profile_IM_Nick",value:E},{tag:"Tag_Profile_IM_Image",value:m}];return(g=me.user.userProfile)===null||g===void 0?void 0:g.createProfile(I,D)}_computeIsPeerRead(n){const g=Ar(),{lastC2CMsgFromAccount:I,time:E,c2cPeerReadTime:m}=n;return I===g&&E<=m}_assembleGroupOption(n){var g,I,E,m,D;return{conversationID:`${ko.CONV_GROUP}${n.groupID}`,type:ko.CONV_GROUP,lastMessage:Object.assign(Object.assign({lastTime:n.time,lastSequence:n.sequence,fromAccount:n.msgGroupFromAccount},this._patchTypeAndPayload(n)),{cloudCustomData:((E=(I=(g=n.lastMsg)===null||g===void 0?void 0:g.elements)===null||I===void 0?void 0:I[0])===null||E===void 0?void 0:E.cloudCustomData)||"",isRevoked:n.lastMessageFlag===_d.GROUP,onlineOnlyFlag:!1,nick:n.msgGroupFromNickName||"",nameCard:n.msgGroupFromCardName||"",revoker:((D=(m=n.lastMsg)===null||m===void 0?void 0:m.revokerInfo)===null||D===void 0?void 0:D.revoker)||null}),groupProfile:{groupID:n.groupID,name:n.groupNick,avatar:n.groupImage,type:n.groupType,nextMessageSeq:n.nextMessageSeq},unreadCount:this._computeGroupUnreadCount(n),peerReadTime:0,isPinned:n.isPinned===1,version:0,customData:n.customMark||"",markList:HD(n.standardMark),conversationGroupList:[],messageRemindType:this._transMsgRemindType(n.messageRemindType),subType:n.groupType}}_convertConversationKey(n){return n.map(g=>({type:g.Type,userID:g.To_Account,nick:g.C2cNick,peerAvatar:g.C2cImage,time:g.MsgTimeStamp,sequence:g.MsgSeq,lastC2CMsgFromAccount:g.LastC2cMsgFrom_Account,lastMsg:this._convertLastMsgKey(g.LastMsg),lastMessageFlag:g.LastMsgFlags,c2cPeerReadTime:g.C2cPeerReadTime,peerReadTime:g.C2cPeerReadTime,friendRemark:g.C2cRemark,isPinned:g.TopFlags,standardMark:g.StandardMark,customMark:g.CustomMark,messageRemindType:g.MsgRecvOption,groupID:g.ToAccount,groupNick:g.GroupNick,groupImage:g.GroupImage,groupType:g.GroupType,nextMessageSeq:g.GroupNextMsgSeq,msgGroupFromAccount:g.MsgGroupFrom_Account,msgGroupFromNickName:g.MsgGroupFromNickName,msgGroupFromCardName:g.MsgGroupFromCardName,unreadCount:g.UnreadMsgCount,noUnreadCount:g.GroupIgnoredUnreadSeqCount}))}_convertLastMsgKey(n){var g,I,E;const{utils:{isEmpty:m}}=me;if(m(n))return null;let D="",M=null;if(!m(n.GroupTips)){const{From_Account:T,GroupName:P}=((g=n.GroupTips)===null||g===void 0?void 0:g.GroupInfo)||{};D=ko.MSG_GRP_TIP,M=Object.assign(Object.assign({},this._parseContent(D,n.GroupTips.MsgBody)),{groupProfile:{from:T,groupName:P}})}return n.MsgBody&&(D=(I=n.MsgBody[0])===null||I===void 0?void 0:I.MsgType,M=this._parseContent(D,n.MsgBody[0])),{event:n.Event,elements:[{type:D,content:M,cloudCustomData:n.CloudCustomData}],revokerInfo:{revoker:(E=n.RevokerInfo)===null||E===void 0?void 0:E.Revoker_Account}}}_parseContent(n,g){var I;if(!g)return g;const E=me.message.messageFactory.getElementClass(n);return E?(I=E.parseServerPushElement(g))===null||I===void 0?void 0:I.content:g}_amendLayersOverLimitProp(n){const{LayersOverLimit:g}=n;return yo(n,["LayersOverLimit"]).layersOverLimit=g===1,n}_transMsgRemindType(n){let g="";return n===0?g=ko.MSG_REMIND_ACPT_AND_NOTE:n===1?g=ko.MSG_REMIND_DISCARD:n===2?g=ko.MSG_REMIND_ACPT_NOT_NOTE:n===3&&(g=ko.NOT_RECEIVE_OFFLINE_PUSH_EXCEPT_AT),g}_patchTypeAndPayload(n){var g;const{utils:{isUndefined:I}}=me,{event:E,elements:m=[]}=n.lastMsg||{};return I(E)?{type:m[0]?m[0].type:null,payload:m[0]?this._amendLayersOverLimitProp(m[0].content):null}:{type:ko.MSG_GRP_TIP,payload:((g=m?.[0])===null||g===void 0?void 0:g.content)||{}}}_computeGroupUnreadCount(n){const{unreadCount:g=0,noUnreadCount:I=0}=n,E=g-I;return E>0?E:0}_reset(){this._pagingStatus=wd.NOT_START,this._pagingTimeStamp=0,this._pagingStartIndex=0,this._pagingPinnedTimeStamp=0,this._pagingPinnedStartIndex=0}_dispose(){this._reset();const{notificationCenter:n}=me;n.unSubscribeInnerEvent(so.LOGOUT,this._reset,this),n.unSubscribeInnerEvent(so.DESTROY,this._dispose,this)}}class KD{constructor(){this.syncConversationHandler=new qD,this.syncConversationHandler.init()}}console.log(`TencentCloudLiteChat.VERSION:${Wr}`);var jD={create:function(s){var n,g;const{SDKAppID:I,testEnv:E=!1,devMode:m=!1,unlimitedAVChatRoom:D=!1,scene:M="",oversea:T=!1,instance:P,disableIndependentDomain:W=!1,proxyServer:iA=""}=s;let EA=I;if(!function(kA){if(typeof kA=="number")return!0;const xA=Number(kA);return!Number.isNaN(xA)}(EA))return console.error("Create SDK instance failed. Failed to parse the SDKAppID, please check the arguments"),null;if(EA=Number(EA),Ea.has(EA))return Ea.get(EA);let RA=null;if(P)RA=P,RA._workflowManager&&ws.setInstance(RA._workflowManager),RA._pluginManager&&RA._pluginManager.installBuiltInPlugin(mB),P.isReady()&&((g=(n=ws.getInstance()).executeWorkflow)===null||g===void 0||g.call(n,Pt.SYNC_SERVER_INFO_AFTER_LOGIN));else{const kA=function(){function re(){return(65536*(1+Math.random())|0).toString(16).substring(1)}return`${re()+re()}${re()}${re()}${re()}${re()}${re()}${re()}`}();me.init({sdkAppId:EA,instanceId:kA,testEnv:E,devMode:m,unlimitedAVChatRoom:D,disableIndependentDomain:W,scene:M,oversea:T,sdkEdition:Vm,version:Wr,proxyServer:iA}),ws.getInstance().init(),me.message=new OD,me.user=new UT,me.login=new Sh,me.conversation=new KD,tu.getInstance().installBuiltInPlugin(mB),RA=dr.getInstance().exposeApiForClient(),RA._workflowManager=ws.getInstance(),RA._pluginManager=tu.getInstance();const{utils:{IS_WORKER_AVAILABLE:xA,USER_AGENT:LA,getPlatformType:SA,isIOSWebView:OA}}=me,JA=`instanceID:${kA} SDKAppID:${I} platform:${HA} host:${SA()} isIOSWebView:${OA} workerAvailable:${xA} UserAgent:${LA}`;me.ssoLog.info("sdkConstruct",JA)}return Ea.set(EA,RA),RA},TSignaling:Hc,EVENT:yr,VERSION:Wr,TYPES:ko};return jD})}(S1)),S1.exports}var XiA=ZiA();const tg=F3(XiA);var M1={exports:{}},$iA=M1.exports,Qz;function AoA(){return Qz||(Qz=1,function(t,i){(function(r,l){t.exports=l()})($iA,function(){function r(ge,qe){if(!(ge instanceof qe))throw new TypeError("Cannot call a class as a function")}function l(ge,qe){for(var ft=0;ft"u"&&typeof uni.requireNativePlugin=="function",WA=TA&&uni.getDeviceInfo().platform.toLocaleLowerCase()==="ios",zA=(TA&&uni.getDeviceInfo().platform.toLocaleLowerCase(),IA||rA||pA||lA||cA||TA),$A=F!==void 0&&(F.nativeModuleProxy!==void 0||F.ReactNative!==void 0),De=rA?qq:pA?tt:lA?swan:cA?my:IA?wx:TA?uni:{},Ce=function(ge){if(k(ge)!=="object"||ge===null)return!1;var qe=Object.getPrototypeOf(ge);if(qe===null)return!0;for(var ft=qe;Object.getPrototypeOf(ft)!==null;)ft=Object.getPrototypeOf(ft);return qe===ft};function ct(ge){if(ge==null)return!0;if(typeof ge=="boolean")return!1;if(typeof ge=="number")return ge===0;if(typeof ge=="string"||typeof ge=="function"||Array.isArray(ge))return ge.length===0;if(ge instanceof Error)return ge.message==="";if(Ce(ge)){for(var qe in ge)if(Object.prototype.hasOwnProperty.call(ge,qe))return!1;return!0}return!1}var mt=function(){return u(function ge(){r(this,ge),this._n="WebRequest"},[{key:"request",value:function(ge,qe){var ft=this,ni="".concat(this._n,".request"),Vt=ge.downloadUrl||"",gi=(ge.method||"PUT").toUpperCase(),Fi=ge.url;if(console.log("%c tim-upload-plugin %c","background:#0abf5b; padding:1px; border-radius:3px; color: #fff","background:transparent","".concat(ni," URL:").concat(Fi)),ge.qs){var _o=function(ki){var ns=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"&",Ko=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"=";return ct(ki)?"":Ce(ki)?Object.keys(ki).map(function($i){var jt=encodeURIComponent($i)+Ko;return Array.isArray(ki[$i])?ki[$i].map(function(io){return jt+encodeURIComponent(io)}).join(ns):jt+encodeURIComponent(ki[$i])}).filter(Boolean).join(ns):void 0}(ge.qs);_o&&(Fi+="".concat(Fi.indexOf("?")===-1?"?":"&").concat(_o))}var to=new XMLHttpRequest;to.open(gi,Fi,!0),to.responseType=ge.dataType||"text";var uo=ge.headers||{};if(ge.uploadByIP&&(uo=w(w({},uo),{},{host:ge.uploadIP})),!ct(uo))for(var Vs in uo)uo.hasOwnProperty(Vs)&&Vs.toLowerCase()!=="content-length"&&Vs.toLowerCase()!=="user-agent"&&Vs.toLowerCase()!=="origin"&&Vs.toLowerCase()!=="host"&&to.setRequestHeader(Vs,uo[Vs]);return to.onload=function(){if(to.status===200)qe(null,ft._xhrRes(to,ft._xhrBody(to,Vt,ge.uploadByIP&&ge.uploadIP),uo));else{if(ge.uploadIP&&ge.url.indexOf(ge.uploadIP)===-1)return ge.url=function(ns,Ko){return ns.replace(/^http(s)?:\/\/(.*?)\//,"https://".concat(Ko,"/"))}(ge.url,ge.uploadIP),ge.uploadByIP=!0,ft.request(ge,qe);var ki={code:to.status,message:JSON.stringify(to.responseText)};qe(ki,ft._xhrRes(to,ft._xhrBody(to,Vt,ge.uploadByIP&&ge.uploadIP),uo))}},to.onerror=function(ki){var ns=ft._xhrBody(to,Vt,ge.uploadByIP&&ge.uploadIP),Ko={code:to.status,message:JSON.stringify(to.responseText)};ns||to.statusText||to.status!==0||(ki.message="CORS blocked or network error"),qe(Ko,ft._xhrRes(to,ns)),Ko=null},ge.onProgress&&to.upload&&(to.upload.onprogress=function(ki){var ns=ki.total,Ko=ki.loaded,$i=Math.floor(100*Ko/ns);ge.onProgress({total:ns,loaded:Ko,percent:($i>=100?100:$i)/100})}),to.send(ge.resources),to}},{key:"_xhrRes",value:function(ge,qe){var ft={};return ge.getAllResponseHeaders().trim().split(` -`).forEach(function(ni){if(ni){var Vt=ni.indexOf(":"),gi=ni.substr(0,Vt).trim().toLowerCase(),Fi=ni.substr(Vt+1).trim();ft[gi]=Fi}}),{statusCode:ge.status,statusMessage:ge.statusText,headers:ft,data:qe}}},{key:"_xhrBody",value:function(ge,qe,ft){return ge.status===200&&qe?{location:qe,uploadIP:ft}:{response:ge.responseText,uploadIP:ft}}}])}(),Ke=["unknown","image","video","audio","log"],Dt=["name"],qt=function(){return u(function ge(){r(this,ge)},[{key:"request",value:function(ge,qe){var ft=this,ni=ge.resources,Vt=ni===void 0?"":ni,gi=ge.headers,Fi=gi===void 0?{}:gi,_o=ge.url,to=ge.downloadUrl,uo=to===void 0?"":to,Vs=_o,ki=null,ns=uo.match(/^(https?:\/\/[^/]+\/)([^/]*\/?)(.*)$/),Ko=decodeURIComponent(ns[3]),$i=Ko.indexOf("?")>-1?Ko.split("?")[0]:Ko,jt={key:ge.fileKey?ge.fileKey:$i,success_action_status:200,"Content-Type":""},io={};if(WA){var bi=_o.split("?sign=");if(bi.length>1){var vs=bi[1];Vs="".concat(bi[0],"?sign=").concat(encodeURIComponent("".concat(vs))),io.sign=decodeURIComponent(vs),io.signature=decodeURIComponent(vs)}}var HA={url:Vs,header:Fi,name:"file",filePath:Vt,formData:w(w({},jt),io),timeout:ge.timeout||3e5};if(cA){var le=HA;le.name,HA=w(w({},function(xe,Lt){if(xe==null)return{};var it,gt,Xt=function(be,je){if(be==null)return{};var Mt={};for(var Rt in be)if({}.hasOwnProperty.call(be,Rt)){if(je.includes(Rt))continue;Mt[Rt]=be[Rt]}return Mt}(xe,Lt);if(Object.getOwnPropertySymbols){var $t=Object.getOwnPropertySymbols(xe);for(gt=0;gt<$t.length;gt++)it=$t[gt],Lt.includes(it)||{}.propertyIsEnumerable.call(xe,it)&&(Xt[it]=xe[it])}return Xt}(le,Dt)),{},{fileName:"file",fileType:Ke[ge.fileType]})}return(ki=De.uploadFile(w(w({},HA),{},{success:function(xe){ft._handleResponse({response:xe,downloadUrl:uo,callback:qe})},fail:function(xe){ft._handleResponse({response:xe,downloadUrl:uo,callback:qe})}}))).onProgressUpdate&&ki.onProgressUpdate(function(xe){ge.onProgress&&ge.onProgress({total:xe.totalBytesExpectedToSend,loaded:xe.totalBytesSent,percent:Math.floor(xe.progress)/100})}),ki}},{key:"_handleResponse",value:function(ge){var qe=ge.downloadUrl,ft=ge.response,ni=ge.callback,Vt=ft.header,gi={};if(Vt)for(var Fi in Vt)Vt.hasOwnProperty(Fi)&&(gi[Fi.toLowerCase()]=Vt[Fi]);var _o=+ft.statusCode;_o===200?ni(null,{statusCode:_o,headers:gi,data:w(w({},ft.data),{},{location:qe})}):ni({code:_o,message:JSON.stringify(ft.data)},{statusCode:_o,headers:gi,data:void 0})}}])}(),It=function(){return u(function ge(){r(this,ge)},[{key:"request",value:function(ge,qe){var ft=this,ni=ge.resources,Vt=ni===void 0?"":ni,gi=ge.fileKey,Fi=gi===void 0?"":gi,_o=ge.url,to=ge.downloadUrl,uo=to===void 0?"":to,Vs=new FormData;Vs.append("key",Fi),Vs.append("success_action_status",200),Vs.append("file",{uri:Vt,type:"application/octet-stream",name:"uploaded_file"}),fetch(_o,{method:"POST",headers:{"Content-Type":"multipart/form-data"},body:Vs}).then(function(ki){ft._handleResponse({response:ki,downloadUrl:uo,callback:qe})}).catch(function(ki){ft._handleResponse({response:ki,downloadUrl:uo,callback:qe})})}},{key:"_handleResponse",value:function(ge){var qe=ge.downloadUrl,ft=ge.response,ni=ge.callback,Vt=ft.headers,gi=ft.status,Fi=Vt&&Vt.map||{};gi===200?ni(null,{statusCode:200,headers:Fi,data:{location:qe}}):ni({code:gi,message:JSON.stringify(ft)},{statusCode:gi,headers:Fi,data:void 0})}}])}();return function(){return u(function ge(){r(this,ge),this.retry=1,this.tryCount=0,this.systemClockOffset=0,this.httpRequest=zA?new qt:$A?new It:new mt,console.log("TIMUploadPlugin.VERSION: ".concat("1.4.3"))},[{key:"uploadFile",value:function(ge,qe){var ft=this;return this.httpRequest.request(ge,function(ni,Vt){ni&&ft.tryCount=3e4&&(this.systemClockOffset=_o-Fi,qe=!0)}else Math.floor(ge.statusCode/100)===5&&(qe=!0)}return qe}}],[{key:"getVersion",value:function(){return"1.4.3"}}])}()})}(M1)),M1.exports}var eoA=AoA();const toA=F3(eoA);/** +`],{type:"application/javascript"});this._worker=new Worker(URL.createObjectURL(g)),this._worker.postMessage({type:fr,url:n})}send(n){var g,u;try{(g=this._worker)===null||g===void 0||g.postMessage({type:Ls,data:n})}catch(E){(u=this._onSendFail)===null||u===void 0||u.call(this,E)}}bindSocketHandlers(n){const{onOpen:g,onMessage:u,onClose:E,onError:m,onSendFail:D}=n;if(this._worker){const M={[ms]:g,[as]:u,[Su]:E,[Wa]:m,[Cs]:D};this._onSendFail=D,this._worker.onmessage=T=>{var P;const{type:W}=T?.data||{};typeof M[W]=="function"&&((P=M[W])===null||P===void 0||P.call(M,T?.data))}}}unbindSocketHandlers(){this._worker&&(this._worker.onmessage=null)}disconnect(){this._worker&&(this._worker.postMessage({type:Vc}),this._worker.terminate(),this._worker=null),this._blobUrl&&(URL.revokeObjectURL(this._blobUrl),this._blobUrl=null)}}class VI{}var $o,Xi=new class{constructor(){this._store=new Map}get(s){return this._store.get(s)}getStorage(s){return ki?gi?my.getStorageSync({key:s}).data:io.getStorageSync(s):this._canUseLocalStorage()?localStorage.getItem(s):{}}set(s,n){const g=this._store.get(s)||{};n instanceof Map?this._store.set(s,n):this._store.set(s,Object.assign(Object.assign({},g),n))}setStorage(s,n){ki?gi?my.setStorageSync({key:s,data:JSON.stringify(n)}):io.setStorageSync(s,JSON.stringify(n)):this._canUseLocalStorage()&&localStorage.setItem(s,JSON.stringify(n))}clear(s){typeof s=="string"?this._store.set(s,{}):this._store.clear()}clearLocalStorage(s){this._canUseLocalStorage()&&(typeof s=="string"?localStorage.setItem(s,""):localStorage.clear())}reset(){this.clear()}_canUseLocalStorage(){return typeof window<"u"&&navigator&&navigator.cookieEnabled&&localStorage}};class pc{connectSocket(n){return this._socket=io.connectSocket({url:n,header:{"content-type":"application/json"},multiple:!0,complete:()=>{}}),this._socket}send(n){var g;(g=this._socket)===null||g===void 0||g.send({data:n,fail:this._onSendFail})}bindSocketHandlers(n){const{onOpen:g,onMessage:u,onClose:E,onError:m,onSendFail:D}=n;this._socket&&(this._socket.onClose(E),this._socket.onOpen(g),this._socket.onMessage(M=>u(M?.data)),this._socket.onError(()=>m),this._onSendFail=D)}unbindSocketHandlers(){this._socket&&(this._socket.onClose(()=>{}),this._socket.onOpen(()=>{}),this._socket.onMessage(()=>{}),this._socket.onError(()=>{}))}disconnect(){this._socket&&(this._socket.close(),this._socket=null)}}(function(s){s[s.CONNECTED=0]="CONNECTED",s[s.CONNECTING=1]="CONNECTING",s[s.DISCONNECTED=2]="DISCONNECTED"})($o||($o={}));class ng{constructor(n){this._url="",this._readyState=$o.DISCONNECTED,this._url=n,this._id=U(),this._emitter=new On,gi?this._socket=new pc:Le||To||Dt||je||Fi||Jt?this._socket=new cn({onError:this._onError.bind(this)}):an?this._socket=new VI:this._canUseWebWorker()?this._socket=new sg:this._socket=new Dl,this.connect()}connect(){this.doOpen(),this._bindSocketHandlers()}doOpen(){[$o.CONNECTED,$o.CONNECTING].includes(this._readyState)||(this._readyState=$o.CONNECTING,this._ws=this._socket.connectSocket(this._url))}send(n){this._readyState!==$o.CONNECTED?this.reconnect():this._socket.send(n)}reconnect(){[$o.CONNECTED,$o.CONNECTING].includes(this._readyState)||(this.disconnect(),this.doOpen())}getId(){return this._id}on(n,g,u){this._emitter.on(n,g,u)}off(n,g,u){this._emitter.off(n,g,u)}isConnected(){return this._readyState===$o.CONNECTED}disconnect(){this._readyState=$o.DISCONNECTED,this._unbindSocketHandlers(),this._socket.disconnect()}_onOpen(n){this._readyState===$o.CONNECTING&&(this._readyState=$o.CONNECTED,this._emitter.emit("connect",{socketId:this._id,event:n}))}_onMessage(n){this._emitter.emit("message",n)}_onClose(n){this._readyState=$o.DISCONNECTED,this._emitter.emit("close",{socketId:this._id,event:n})}_onError(n){this._readyState=$o.DISCONNECTED,this._emitter.emit("error",{socketId:this._id,error:n})}_onSendFail(n){this._readyState=$o.DISCONNECTED,this._emitter.emit("sendFail",{socketId:this._id,error:n})}_bindSocketHandlers(){this._socket.bindSocketHandlers({onOpen:this._onOpen.bind(this),onMessage:this._onMessage.bind(this),onClose:this._onClose.bind(this),onError:this._onError.bind(this),onSendFail:this._onSendFail.bind(this)})}_unbindSocketHandlers(){this._socket.unbindSocketHandlers()}_canUseWebWorker(){const n=Xi.get("cloudConfig")||{};return(r(n.isWorkerEnabled)||n.isWorkerEnabled==="1")&&Go}}const Dg={[ut.SINGAPORE]:[[2e7,3e7],[172e7,173e7]],[ut.KOREA]:[[3e7,4e7],[173e7,174e7]],[ut.GERMANY]:[[4e7,5e7],[174e7,175e7]],[ut.IND]:[[5e7,6e7],[175e7,176e7]],[ut.JPN]:[[6e7,7e7],[176e7,177e7]],[ut.USA]:[[7e7,8e7],[177e7,178e7]],[ut.INDONESIA]:[[8e7,9e7],[178e7,179e7]],[ut.KSA]:[[9e7,1e8],[179e7,18e8]]};function Ia(s){var n;if(!((n=Xi.get("instance"))===null||n===void 0)&&n.oversea)return ut.OVERSEA;for(const g of Object.keys(Dg))for(const[u,E]of Dg[g])if(s>=u&&s`${iA}=${W[iA]}`).join("&"));var W;return g?`${s}/binfo?${P}&compress=gzip`:`${s}/info?${P}`}function Hs(s){const n=Xi.get("instance"),{sdkAppId:g,testEnv:u,proxyServer:E}=n,m=Ia(g);if(u)return Hn(pt.TEST[m].DEFAULT,{isBinary:s});if(!Rs(E))return Hn(E,{isBinary:s});const D=pt.PRODUCTION[m],M=jt&&D.ANYCAST,T=jt,P=!!D.BACKUP_CN;return Hn({[bo.INITIAL]:()=>(_o=bo.DEFAULT,D.DEFAULT),[bo.DEFAULT]:()=>(_o=bo.IPV6,D.IPV6),[bo.IPV6]:()=>(_o=bo.BACKUP,D.BACKUP),[bo.BACKUP]:()=>T?(_o=bo.BACKUP_WEB_ONLY,function(W){const iA=Math.floor(10001*Math.random())+1e4;return W.replace("*",String(iA))}(D.BACKUP_WEB_ONLY)):P?(_o=bo.BACKUP_CN,D.BACKUP_CN):M?(_o=bo.ANYCAST,D.ANYCAST):D.DEFAULT,[bo.BACKUP_WEB_ONLY]:()=>P?(_o=bo.BACKUP_CN,D.BACKUP_CN):M?(_o=bo.ANYCAST,D.ANYCAST):D.DEFAULT,[bo.BACKUP_CN]:()=>(_o=M?bo.ANYCAST:bo.DEFAULT,D[_o]),[bo.ANYCAST]:()=>(_o=bo.DEFAULT,D.ANYCAST="",D.DEFAULT)}[_o](),{isBinary:s})}var Sg=new class{constructor(){this._timeOffsetWithServer=0}getServerTimeMs(){return Date.now()+this._timeOffsetWithServer}getServerTimeSeconds(){return Math.floor(this.getServerTimeMs()/1e3)}getTimeOffsetWithServer(){return this._timeOffsetWithServer}calculateTimeOffsetWithServer(s,n){const g=Date.now(),u=g-s;this._timeOffsetWithServer=n+u-g}};const mc=16;var fn=new class{constructor(){this._tasks=[],this._timer=null,this._taskMap=new Map}_addTaskToScheduler(s){const{id:n}=s;this.removeTask(n),this._tasks.push(s),this._taskMap.set(n,s),this._sort(),this._scheduleNextTask()}_createTask(s){const{id:n,callback:g,context:u,isOnce:E=!1,intervalMs:m=mc}=s,D=Math.max(m,mc);return{id:n,nextExecuteTime:Date.now()+D,intervalMs:m,callback:g,context:u,isOnce:E}}addTask(s){const n=this._createTask(s);this._addTaskToScheduler(n)}addOnceTask(s){const n=this._createTask(Object.assign(Object.assign({},s),{isOnce:!0}));this._addTaskToScheduler(n)}removeTask(s){const n=this._tasks.findIndex(g=>g.id===s);n>-1&&(this._tasks.splice(n,1),this._taskMap.delete(s),this._scheduleNextTask())}updateTaskInterval(s,n){const g=this._taskMap.get(s);g&&(g.intervalMs=n,g.nextExecuteTime=Date.now()+n,this._sort(),this._scheduleNextTask())}clearAllTasks(){this._tasks=[],this._taskMap.clear(),this._timer&&(clearTimeout(this._timer),this._timer=null)}dispose(){this.clearAllTasks()}_sort(){this._tasks.sort((s,n)=>s.nextExecuteTime-n.nextExecuteTime)}_scheduleNextTask(){this._timer&&(clearTimeout(this._timer),this._timer=null);const s=this._tasks[0];if(s){const n=Math.max(0,s.nextExecuteTime-Date.now());this._timer=setTimeout(()=>this._execute(),n)}}_execute(){const s=Date.now();for(;this._tasks.length&&this._tasks[0].nextExecuteTime<=s;){const n=this._tasks[0];try{n.context?n.callback.call(n.context):n.callback(),n.isOnce?this.removeTask(n.id):(n.nextExecuteTime=s+n.intervalMs,this._sort())}catch(g){console.warn(`Task ${n.id} execution failed:`,g),n.isOnce&&this.removeTask(n.id)}}this._scheduleNextTask()}};function Ga(s){const n=[];for(let g=0;g=55296&&u<=56319){const E=s.charCodeAt(++g)-56320+(u-55296<<10)+65536;n.push(240|E>>18,128|E>>12&63,128|E>>6&63,128|63&E)}else u<=127?n.push(u):u<=2047?n.push(192|u>>6,128|63&u):n.push(224|u>>12,128|u>>6&63,128|63&u)}return new Uint8Array(n)}function In(s){const n=Array.isArray(s)?[]:Object.create(null);for(const g in s)Object.prototype.hasOwnProperty.call(s,g)&&_(g)&&s[g]!=null&&(s[g]===null||typeof s[g]!="object"?n[g]=s[g]:n[g]=In(s[g]));return n}function fs(s,n){if(mA.includes(s))return 0;const g=Ga(JSON.stringify(n));let u=4294967295;const{length:E}=g;for(let m=0;m>>=1:u=u>>>1^3988292384}return(4294967295^u)>>>0}function ua(s){const{servcmd:n,data:g}=s,u=function(m){const D=Xi.get("login")||{},M=Xi.get("instance")||{};return{servcmd:m,ver:"v4",platform:HA,websdkappid:537048168,websdkversion:"1.7.3",a2:D.a2Key||void 0,tinyid:D.tinyID||void 0,status_instid:D.statusInstanceId||0,sdkappid:M.sdkAppId,contenttype:"json",reqtime:Math.floor(Date.now()/1e3),identifier:D.a2Key?void 0:D.userId,usersig:D.a2Key?void 0:D.userSig,sdkability:478343027,sdkability_ext:lA(""),cappid:M.applicationID||0,tjgID:"",seq:Sa(),cs:0}}(n),E=In(g);return u.cs=fs(n,E),{head:u,body:E}}function yn(s){const{servcmd:n,data:g}=s,u=function(m){const D=Xi.get("login")||{},M=Xi.get("instance")||{};return{servcmd:m,ver:"v4",platform:HA,websdkappid:537048168,websdkversion:"1.7.3",sdkappid:M.sdkAppId,contenttype:"",reqtime:Math.floor(Date.now()/1e3),identifier:"",usersig:"",status_instid:D.statusInstanceId||0,sdkability:478343027,sdkability_ext:lA(""),cappid:M.applicationID||0,seq:Sa(),cs:0}}(n),E=In(g);return u.cs=fs(n,E),{head:u,body:E}}let ba=U();function Sa(){return ba=ba<2415919103?ba+1:U(),ba}function $(){var s;const n=Xi.get("login")||{},g=Xi.get("instance")||{};return{sdk_type:30,sdk_app_id:g.sdkAppId,sdk_version:"1.6.18",tiny_id:Number(n.tinyID),user_id:n.userId||((s=Xi.get("webPush"))===null||s===void 0?void 0:s.userId),platform:HA,instance_id:g.instanceId,trace_id:new Date().getTime()}}var K,vA=Object.freeze({__proto__:null,calcBodyCRC:fs,filterProtocolDataInvalidFields:In,generateCosSpecifiedData:function(s){const{servcmd:n,data:g}=s,u=function(m){const D=Xi.get("login")||{},M=Xi.get("instance")||{};return{servcmd:m,ver:"v4",platform:HA,websdkappid:537048168,websdkversion:"1.7.3",sdkappid:M.sdkAppId,contenttype:"json",reqtime:Math.floor(Date.now()/1e3),identifier:D.userId,usersig:D.userSig,status_instid:D.statusInstanceId||0,sdkability:478343027,sdkability_ext:lA(""),cappid:M.applicationID||0,seq:Sa(),cs:0}}(n),E=In(g);return u.cs=fs(n,E),{head:u,body:E}},generateProtocolData:ua,generateSSOLogProtocolData:yn,generateSequence:Sa,getCommonHead:$,getHostSite:Ia,taskScheduler:fn,timeManager:Sg});(function(s){s[s.info=4]="info",s[s.warning=5]="warning",s[s.error=6]="error"})(K||(K={}));const qA={method:"extension",networkType:"network_type",eventType:"event_type",code:"error_code",message:"error_message",moreMessage:"more_message",duplicate:"duplicate",costTime:"cost_time",level:"level",uiPlatform:"ui_platform",timestamp:"timestamp"};class Ae{constructor(n){this.level=K.info,this._canSendLog=!0,this._logCreatedAt=Sg.getServerTimeMs(),this.timestamp=0,this.networkType=8,this.code=0,this.moreMessage="",this.method="",this.message="",this.costTime=0,this.duplicate=!1,this.eventType=0,this.uiPlatform=this._getUiPlatform(),this._sdkEdition=this._getSDKEdition();const{method:g,eventType:u=0,message:E="",costTime:m=0,error:D,uiPlatform:M,moreMessage:T="",code:P=0,startTime:W=0}=n||{};this.eventType=u,this.method=g,this.message=E,this.costTime=m,this.moreMessage=`${T} startTime:${W}`,this.code=P,D&&this.setError(D),Rs(M)||(this.uiPlatform=M)}setMoreMessage(n){this.moreMessage=`${this.moreMessage} ${n}`}updateLogCreatedAtByTimeOffset(){this._logCreatedAt+=Sg.getTimeOffsetWithServer()}end(n=!1){this._canSendLog&&(this._canSendLog=!1,this.timestamp=Sg.getServerTimeMs(),this._ssoLogModule.pushToLogQueue(this._convertSSOLogDataKeyToServe()),n&&this._ssoLogModule.uploadSSOLogData())}setError(n){var g;return n instanceof Error?this._canSendLog?(!((g=Xi.get("netWorkMonitor"))===null||g===void 0)&&g.isNetworkOnline&&(n.errorCode&&(this.code=n.errorCode),n.errorMessage&&this.setMoreMessage(n.errorMessage)),this.level=K.error,this):this:(console.warn("SSOLogData.setError value not instanceof Error, please check!"),this)}setLogInfo(n){return Object.keys(n).forEach(g=>{Object.keys(qA).includes(g)&&(this[g]=n[g])}),this}setSSOLogModule(n){this._ssoLogModule=n}_convertSSOLogDataKeyToServe(){const n={};return Object.keys(this).forEach(g=>{const u=g;qA[u]&&(n[qA[u]]=this[u])}),n}_getUiPlatform(){var n;const g=(n=Xi.get("instance"))===null||n===void 0?void 0:n.scene;if(typeof g=="string"){const u=Number(g);return isNaN(u)?void 0:u}}_getSDKEdition(){var n;return(n=Xi.get("instance"))===null||n===void 0?void 0:n.sdkEdition}}var pe;(function(s){s.RECONNECTED="reconnected",s.CLOUD_CONFIG_UPDATE="cloud_config_update",s.SOCKET_DISCONNECTED="socket_disconnected"})(pe||(pe={}));var Pe=pe;const Oe=20,rt=6e4,dt=[4,5,6],Mt="report-logger";var Pt=new class{constructor(){this._sdkAppIdBlackList=[],this._tinyIdWhiteList=[],this._reportLevel=[4,5,6],this._minThreshold=Oe,this._maxThreshold=100,this._waitingTime=rt,this._lastReportAt=Date.now(),this._ssoLogMap=new Map,this._logLevel=IA.DEBUG,this._throttleConfig={global:{throttleTime:xe,maxCount:Be},single:{throttleTime:ge,maxCount:ue}},this._globalThrottle={count:0,startTime:Date.now()},this._singleThrottleMap=new Map,gn.subscribeInnerEvent(Pe.CLOUD_CONFIG_UPDATE,this._handleCloudConfigUpdate,this),fn.addTask({id:Mt,intervalMs:1e3,callback:this._checkAndReportIfDue,context:this}),this._logQueue=[],this._savePlatFormInfo()}_handleCloudConfigUpdate(s){const{evt_rpt_threshold:n=Oe,evt_rpt_waiting:g=rt,evt_rpt_level:u=dt,evt_rpt_sdkappid_bl:E="",evt_rpt_tinyid_wl:m="",evt_rpt_global_throttle_time:D=xe,evt_rpt_global_throttle_count:M=Be,evt_rpt_single_throttle_time:T=ge,evt_rpt_single_throttle_count:P=ue}=s||{};this._sdkAppIdBlackList=E.split(",").map(W=>Number(W)),this._waitingTime=Number(g),this._minThreshold=n,this._reportLevel=u,this._tinyIdWhiteList=m.split(","),this._throttleConfig={global:{throttleTime:D,maxCount:M},single:{throttleTime:T,maxCount:P}}}createSSOLogData(s){const n=new Ae(s);return n.setSSOLogModule(this),this._ssoLogMap.set(s.method,n),n}getSSOLogData(s){return this._ssoLogMap.get(s)||{}}pushToLogQueue(s){s&&(this._logQueue.push(s),this._shouldUploadImmediately()&&this.uploadSSOLogData())}setLogLevel(s){[IA.DEBUG,IA.ERROR,IA.INFO,IA.NONE,IA.WARN].includes(s)&&(this._logLevel=s)}debug(s,n="",g){this._log(IA.DEBUG,s,n,g)}info(s,n="",g){this._log(IA.INFO,s,n,g)}warn(s,n="",g){this._log(IA.WARN,s,n,g)}error(s,n="",g){this._log(IA.ERROR,s,n,g)}_shouldUploadImmediately(){return this._logQueue.length>=this._minThreshold}_isReportDue(){return Date.now()>=this._lastReportAt+this._waitingTime}_checkAndReportIfDue(){this._isReportDue()&&this._logQueue.length>0&&this.uploadSSOLogData()}uploadSSOLogData(){return pA(this,void 0,void 0,function*(){if(this._logQueue.length===0)return;const s=this._logQueue.slice();this._logQueue=[];try{const n=this._filterLogs(s);if(n.length===0)return void(this._lastReportAt=Date.now());const g={Header:$(),Event:n};Rs(g.Header.user_id)||(yield function(u){const E="imopenstat.tim_web_report_v2",m=yn({servcmd:E,data:u}),D=`${m.head.seq}${E}`;return ye.sendPacket(m,{requestId:D})}(g))}catch(n){this._requeueFailedLogs(s),this.debug("uploadSSOLogData",en(n))}finally{this._lastReportAt=Date.now()}})}_requeueFailedLogs(s){this._logQueue=s.concat(this._logQueue);const n=this._logQueue.length-200;n>0&&(this._logQueue.splice(0,n),this.debug("uploadSSOLogData",`log queue overflow, dropped ${n} oldest logs`))}_savePlatFormInfo(){var s,n;if(Le){const g=(n=(s=wx.getAccountInfoSync)===null||s===void 0?void 0:s.call(wx))===null||n===void 0?void 0:n.miniProgram;if(g){const{appId:u,envVersion:E}=g;Xi.set("instance",{appId:u,envVersion:E})}}else jt&&Xi.set("instance",{href:window.location.href})}_filterLogs(s){const{tinyID:n}=Xi.get("login")||{},{sdkAppId:g}=Xi.get("instance")||{};return this._sdkAppIdBlackList.includes(g)&&!this._tinyIdWhiteList.includes(n)?[]:s.filter(u=>this._reportLevel.includes(u.level))}_checkThrottle(s){return!!this._checkGlobalThrottle()||this._checkSingleThrottle(s)}_checkGlobalThrottle(){const s=Date.now();if(s-this._globalThrottle.startTime>=this._throttleConfig.global.throttleTime)this._globalThrottle.count=1,this._globalThrottle.startTime=s;else if(this._globalThrottle.count++,this._globalThrottle.count>this._throttleConfig.global.maxCount)return!0;return!1}_checkSingleThrottle(s){const n=Date.now(),g=this._singleThrottleMap.get(s);return g?n-g.startTime>=this._throttleConfig.single.throttleTime?(g.count=1,g.startTime=n,!1):g.count>=this._throttleConfig.single.maxCount||(g.count++,!1):(this._singleThrottleMap.set(s,{count:1,startTime:n}),!1)}_shouldLog(s){return s>=this._logLevel&&this._logLevel!==IA.NONE}_shouldReport(s){return this._reportLevel.includes(WA[s])}_formatLog(s,n,g,u){const E=new Date,m=`${E.getHours()}:${E.getMinutes()}:${E.getSeconds()}:${E.getMilliseconds()}`,D=`<${IA[s]}>`;return wt||ki?[`${cA} [${m}] ${D} [${n}] ${g}`]:["%c%s%c%s","background:#0abf5b; padding:1px; border-radius:3px; color: #fff",cA,"",`[${m}] ${D} [${n}] ${g} params: ${en(u)}`]}_log(s,n,g,u){if(this._shouldLog(s)){const E=this._formatLog(s,n,g,u);TA[s].apply(console,E)}if(this._shouldReport(s)){const E=this._getThrottleKey(n,g,u);this._checkThrottle(E)||this.createSSOLogData(Object.assign(Object.assign({message:g},u),{method:n})).end()}}_getThrottleKey(s,n,g){const u=`${s}${n}${en(Object.assign(Object.assign({},g),{costTime:""}))}`,E=Ga(JSON.stringify(u));let m=4294967295;const{length:D}=E;for(let M=0;M>>=1:m=m>>>1^3988292384}return`${(4294967295^m)>>>0}`}reset(){console.log("SSO_LOG_MODULE.reset"),fn.removeTask(Mt),gn.unSubscribeInnerEvent(Pe.CLOUD_CONFIG_UPDATE,this._handleCloudConfigUpdate,this),this._lastReportAt=0,this.uploadSSOLogData(),this._sdkAppIdBlackList=[],this._tinyIdWhiteList=[],this._minThreshold=Oe,this._maxThreshold=100,this._waitingTime=rt,this._logQueue=[],this._logLevel=IA.DEBUG,this._globalThrottle={count:0,startTime:Date.now()},this._singleThrottleMap.clear()}};const li=15e3,ct="Channel",Ot="channel_schedule_task",Ji="channel_reconnect_task",qi="connected",qs="connecting",Mi="disconnected",zo=1e3,Mg="network_status_change",sr="activity_status_change",yr="send_fail",xn="reconnect_failed",Sl="socket_error",Ks="socket_close";function rI(s){return s&&s.__esModule&&Object.prototype.hasOwnProperty.call(s,"default")?s.default:s}function Wg(s){return Wg=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(n){return typeof n}:function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},Wg(s)}function fc(s){throw new Error('Could not dynamically require "'+s+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var Mu,Ma={exports:{}},Ml=(Mu||(Mu=1,function(s){s.exports=function n(g,u,E){function m(T,P){if(!u[T]){if(!g[T]){if(!P&&fc)return fc(T);if(D)return D(T,!0);var W=new Error("Cannot find module '"+T+"'");throw W.code="MODULE_NOT_FOUND",W}var iA=u[T]={exports:{}};g[T][0].call(iA.exports,function(EA){return m(g[T][1][EA]||EA)},iA,iA.exports,n,g,u,E)}return u[T].exports}for(var D=fc,M=0;M>>6:(EA<65536?iA[xA++]=224|EA>>>12:(iA[xA++]=240|EA>>>18,iA[xA++]=128|EA>>>12&63),iA[xA++]=128|EA>>>6&63),iA[xA++]=128|63&EA);return iA},u.buf2binstring=function(W){return P(W,W.length)},u.binstring2buf=function(W){for(var iA=new E.Buf8(W.length),EA=0,RA=iA.length;EA>10&1023,SA[RA++]=56320|1023&kA)}return P(SA,RA)},u.utf8border=function(W,iA){var EA;for((iA=iA||W.length)>W.length&&(iA=W.length),EA=iA-1;0<=EA&&(192&W[EA])==128;)EA--;return EA<0||EA===0?iA:EA+M[W[EA]]>iA?EA:iA}},{"./common":1}],3:[function(n,g,u){g.exports=function(E,m,D,M){for(var T=65535&E,P=E>>>16&65535,W=0;D!==0;){for(D-=W=2e3>>1:m>>>1;D[M]=m}return D}();g.exports=function(m,D,M,T){var P=E,W=T+M;m^=-1;for(var iA=T;iA>>8^P[255&(m^D[iA])];return-1^m}},{}],6:[function(n,g,u){g.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}},{}],7:[function(n,g,u){g.exports=function(E,m){var D,M,T,P,W,iA,EA,RA,kA,xA,LA,SA,OA,JA,ne,se,_i,Ti,Lt,Ni,cs,Se,mt,UA,oi;D=E.state,M=E.next_in,UA=E.input,T=M+(E.avail_in-5),P=E.next_out,oi=E.output,W=P-(m-E.avail_out),iA=P+(E.avail_out-257),EA=D.dmax,RA=D.wsize,kA=D.whave,xA=D.wnext,LA=D.window,SA=D.hold,OA=D.bits,JA=D.lencode,ne=D.distcode,se=(1<>>=Lt=Ti>>>24,OA-=Lt,(Lt=Ti>>>16&255)==0)oi[P++]=65535&Ti;else{if(!(16&Lt)){if(!(64&Lt)){Ti=JA[(65535&Ti)+(SA&(1<>>=Lt,OA-=Lt),OA<15&&(SA+=UA[M++]<>>=Lt=Ti>>>24,OA-=Lt,!(16&(Lt=Ti>>>16&255))){if(!(64&Lt)){Ti=ne[(65535&Ti)+(SA&(1<>>=Lt,OA-=Lt,(Lt=P-W)>3,SA&=(1<<(OA-=Ni<<3))-1,E.next_in=M,E.next_out=P,E.avail_in=M>>24&255)+(Se>>>8&65280)+((65280&Se)<<8)+((255&Se)<<24)}function SA(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new E.Buf16(320),this.work=new E.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function OA(Se){var mt;return Se&&Se.state?(mt=Se.state,Se.total_in=Se.total_out=mt.total=0,Se.msg="",mt.wrap&&(Se.adler=1&mt.wrap),mt.mode=RA,mt.last=0,mt.havedict=0,mt.dmax=32768,mt.head=null,mt.hold=0,mt.bits=0,mt.lencode=mt.lendyn=new E.Buf32(kA),mt.distcode=mt.distdyn=new E.Buf32(xA),mt.sane=1,mt.back=-1,iA):EA}function JA(Se){var mt;return Se&&Se.state?((mt=Se.state).wsize=0,mt.whave=0,mt.wnext=0,OA(Se)):EA}function ne(Se,mt){var UA,oi;return Se&&Se.state?(oi=Se.state,mt<0?(UA=0,mt=-mt):(UA=1+(mt>>4),mt<48&&(mt&=15)),mt&&(mt<8||15=Gi.wsize?(E.arraySet(Gi.window,mt,UA-Gi.wsize,Gi.wsize,0),Gi.wnext=0,Gi.whave=Gi.wsize):(oi<(_s=Gi.wsize-Gi.wnext)&&(_s=oi),E.arraySet(Gi.window,mt,UA-oi,_s,Gi.wnext),(oi-=_s)?(E.arraySet(Gi.window,mt,UA-oi,oi,0),Gi.wnext=oi,Gi.whave=Gi.wsize):(Gi.wnext+=_s,Gi.wnext===Gi.wsize&&(Gi.wnext=0),Gi.whave>>8&255,UA.check=D(UA.check,dg,2,0),Tt=_t=0,UA.mode=2;break}if(UA.flags=0,UA.head&&(UA.head.done=!1),!(1&UA.wrap)||(((255&_t)<<8)+(_t>>8))%31){Se.msg="incorrect header check",UA.mode=30;break}if((15&_t)!=8){Se.msg="unknown compression method",UA.mode=30;break}if(Tt-=4,Va=8+(15&(_t>>>=4)),UA.wbits===0)UA.wbits=Va;else if(Va>UA.wbits){Se.msg="invalid window size",UA.mode=30;break}UA.dmax=1<>8&1),512&UA.flags&&(dg[0]=255&_t,dg[1]=_t>>>8&255,UA.check=D(UA.check,dg,2,0)),Tt=_t=0,UA.mode=3;case 3:for(;Tt<32;){if(xi===0)break A;xi--,_t+=oi[Gi++]<>>8&255,dg[2]=_t>>>16&255,dg[3]=_t>>>24&255,UA.check=D(UA.check,dg,4,0)),Tt=_t=0,UA.mode=4;case 4:for(;Tt<16;){if(xi===0)break A;xi--,_t+=oi[Gi++]<>8),512&UA.flags&&(dg[0]=255&_t,dg[1]=_t>>>8&255,UA.check=D(UA.check,dg,2,0)),Tt=_t=0,UA.mode=5;case 5:if(1024&UA.flags){for(;Tt<16;){if(xi===0)break A;xi--,_t+=oi[Gi++]<>>8&255,UA.check=D(UA.check,dg,2,0)),Tt=_t=0}else UA.head&&(UA.head.extra=null);UA.mode=6;case 6:if(1024&UA.flags&&(xi<(Bo=UA.length)&&(Bo=xi),Bo&&(UA.head&&(Va=UA.head.extra_len-UA.length,UA.head.extra||(UA.head.extra=new Array(UA.head.extra_len)),E.arraySet(UA.head.extra,oi,Gi,Bo,Va)),512&UA.flags&&(UA.check=D(UA.check,oi,Bo,Gi)),xi-=Bo,Gi+=Bo,UA.length-=Bo),UA.length))break A;UA.length=0,UA.mode=7;case 7:if(2048&UA.flags){if(xi===0)break A;for(Bo=0;Va=oi[Gi+Bo++],UA.head&&Va&&UA.length<65536&&(UA.head.name+=String.fromCharCode(Va)),Va&&Bo>9&1,UA.head.done=!0),Se.adler=UA.check=0,UA.mode=12;break;case 10:for(;Tt<32;){if(xi===0)break A;xi--,_t+=oi[Gi++]<>>=7&Tt,Tt-=7&Tt,UA.mode=27;break}for(;Tt<3;){if(xi===0)break A;xi--,_t+=oi[Gi++]<>>=1)){case 0:UA.mode=14;break;case 1:if(Ni(UA),UA.mode=20,mt!==6)break;_t>>>=2,Tt-=2;break A;case 2:UA.mode=17;break;case 3:Se.msg="invalid block type",UA.mode=30}_t>>>=2,Tt-=2;break;case 14:for(_t>>>=7&Tt,Tt-=7&Tt;Tt<32;){if(xi===0)break A;xi--,_t+=oi[Gi++]<>>16^65535)){Se.msg="invalid stored block lengths",UA.mode=30;break}if(UA.length=65535&_t,Tt=_t=0,UA.mode=15,mt===6)break A;case 15:UA.mode=16;case 16:if(Bo=UA.length){if(xi>>=5,Tt-=5,UA.ndist=1+(31&_t),_t>>>=5,Tt-=5,UA.ncode=4+(15&_t),_t>>>=4,Tt-=4,286>>=3,Tt-=3}for(;UA.have<19;)UA.lens[tS[UA.have++]]=0;if(UA.lencode=UA.lendyn,UA.lenbits=7,wI={bits:UA.lenbits},xl=T(0,UA.lens,0,19,UA.lencode,0,UA.work,wI),UA.lenbits=wI.bits,xl){Se.msg="invalid code lengths set",UA.mode=30;break}UA.have=0,UA.mode=19;case 19:for(;UA.have>>16&255,RI=65535&Yg,!((wr=Yg>>>24)<=Tt);){if(xi===0)break A;xi--,_t+=oi[Gi++]<>>=wr,Tt-=wr,UA.lens[UA.have++]=RI;else{if(RI===16){for(AE=wr+2;Tt>>=wr,Tt-=wr,UA.have===0){Se.msg="invalid bit length repeat",UA.mode=30;break}Va=UA.lens[UA.have-1],Bo=3+(3&_t),_t>>>=2,Tt-=2}else if(RI===17){for(AE=wr+3;Tt>>=wr)),_t>>>=3,Tt-=3}else{for(AE=wr+7;Tt>>=wr)),_t>>>=7,Tt-=7}if(UA.have+Bo>UA.nlen+UA.ndist){Se.msg="invalid bit length repeat",UA.mode=30;break}for(;Bo--;)UA.lens[UA.have++]=Va}}if(UA.mode===30)break;if(UA.lens[256]===0){Se.msg="invalid code -- missing end-of-block",UA.mode=30;break}if(UA.lenbits=9,wI={bits:UA.lenbits},xl=T(P,UA.lens,0,UA.nlen,UA.lencode,0,UA.work,wI),UA.lenbits=wI.bits,xl){Se.msg="invalid literal/lengths set",UA.mode=30;break}if(UA.distbits=6,UA.distcode=UA.distdyn,wI={bits:UA.distbits},xl=T(W,UA.lens,UA.nlen,UA.ndist,UA.distcode,0,UA.work,wI),UA.distbits=wI.bits,xl){Se.msg="invalid distances set",UA.mode=30;break}if(UA.mode=20,mt===6)break A;case 20:UA.mode=21;case 21:if(6<=xi&&258<=gr){Se.next_out=Fr,Se.avail_out=gr,Se.next_in=Gi,Se.avail_in=xi,UA.hold=_t,UA.bits=Tt,M(Se,ln),Fr=Se.next_out,_s=Se.output,gr=Se.avail_out,Gi=Se.next_in,oi=Se.input,xi=Se.avail_in,_t=UA.hold,Tt=UA.bits,UA.mode===12&&(UA.back=-1);break}for(UA.back=0;xg=(Yg=UA.lencode[_t&(1<>>16&255,RI=65535&Yg,!((wr=Yg>>>24)<=Tt);){if(xi===0)break A;xi--,_t+=oi[Gi++]<>ac)])>>>16&255,RI=65535&Yg,!(ac+(wr=Yg>>>24)<=Tt);){if(xi===0)break A;xi--,_t+=oi[Gi++]<>>=ac,Tt-=ac,UA.back+=ac}if(_t>>>=wr,Tt-=wr,UA.back+=wr,UA.length=RI,xg===0){UA.mode=26;break}if(32&xg){UA.back=-1,UA.mode=12;break}if(64&xg){Se.msg="invalid literal/length code",UA.mode=30;break}UA.extra=15&xg,UA.mode=22;case 22:if(UA.extra){for(AE=UA.extra;Tt>>=UA.extra,Tt-=UA.extra,UA.back+=UA.extra}UA.was=UA.length,UA.mode=23;case 23:for(;xg=(Yg=UA.distcode[_t&(1<>>16&255,RI=65535&Yg,!((wr=Yg>>>24)<=Tt);){if(xi===0)break A;xi--,_t+=oi[Gi++]<>ac)])>>>16&255,RI=65535&Yg,!(ac+(wr=Yg>>>24)<=Tt);){if(xi===0)break A;xi--,_t+=oi[Gi++]<>>=ac,Tt-=ac,UA.back+=ac}if(_t>>>=wr,Tt-=wr,UA.back+=wr,64&xg){Se.msg="invalid distance code",UA.mode=30;break}UA.offset=RI,UA.extra=15&xg,UA.mode=24;case 24:if(UA.extra){for(AE=UA.extra;Tt>>=UA.extra,Tt-=UA.extra,UA.back+=UA.extra}if(UA.offset>UA.dmax){Se.msg="invalid distance too far back",UA.mode=30;break}UA.mode=25;case 25:if(gr===0)break A;if(Bo=ln-gr,UA.offset>Bo){if((Bo=UA.offset-Bo)>UA.whave&&UA.sane){Se.msg="invalid distance too far back",UA.mode=30;break}Bo>UA.wnext?(Bo-=UA.wnext,ll=UA.wsize-Bo):ll=UA.wnext-Bo,Bo>UA.length&&(Bo=UA.length),wC=UA.window}else wC=_s,ll=Fr-UA.offset,Bo=UA.length;for(gr_i?(Lt=ll[wC+xA[mt]],Ni=Tt[$u+xA[mt]]):(Lt=96,Ni=0),SA=1<>Fr)+(OA-=SA)]=Ti<<24|Lt<<16|Ni,OA!==0;);for(SA=1<>=1;if(SA!==0?(_t&=SA-1,_t+=SA):_t=0,mt++,--ln[Se]==0){if(Se===oi)break;Se=W[iA+xA[mt]]}if(_s{const M=new Uint8Array(D).slice(4);let T;try{T=Ml.inflate(M,{to:"string"})}catch(P){console.error("inflate error",P)}return T})(s.data):function(D){const M=new Uint8Array(D);let T="",P=0;const{length:W}=M;for(;P0)for(let kA=0;kA{var u;const{uplinkData:E,canResend:m,resolve:D,reject:M,timeout:T}=n;if(m){this._pendingRequests.set(g,{resolve:D,reject:M,timestamp:Date.now(),uplinkData:E,timeout:T,canResend:m});const P=this._isBinarySupported?Ga(E).buffer:E;(u=this._socketAdapter)===null||u===void 0||u.send(P)}else this._pendingRequests.delete(g)})}_onConnect(s){const{socketId:n,event:g={}}=s||{};this._connectionId=n,this._connectionEstablishedTime=Date.now();const u=Date.now()-this._connectionStartTime,E=`${ct}.onConnect cost:${u} ms. socketID:${n} res:${JSON.stringify(g)}`;if(this._ssoLog({method:"onConnect",message:E}),this._checkPendingRequestsAndResend(),this._sendHeartbeatIfReady(),this._isReconnecting){const m=`${ct}.reconnect success`;this._ssoLog({method:"reconnectSuccess",message:m}),gn.emitInnerEvent(Pe.RECONNECTED),this._isReconnecting=!1}this._resetReconnectDelay(),this._handleConnectStateChange({state:qi,shouldEmitEvent:!0,shouldAttemptReconnect:!1})}_sendAck(s){const n=ua({servcmd:"openim.ws_msg_push_ack",data:{SessionData:s}});this.sendPacket(n)}_executeScheduledTaskIfReady(){return pA(this,void 0,void 0,function*(){this._clearTimeoutRequest(),this._sendHeartbeatIfReady()})}_canSendHeartbeat(){var s;return((s=this._socketAdapter)===null||s===void 0?void 0:s.isConnected())&&Date.now()>=this._nextHeartbeatAt&&!this._isHeartbeatInProgress}_sendHeartbeat(){return pA(this,void 0,void 0,function*(){var s;const n=ua({servcmd:"heartbeat.alive",data:{}});try{const g=`${n.head.seq}${n.head.servcmd}`;yield this.sendPacket(n,{requestId:g,timeout:3e3})}catch(g){const u=(s=Xi.get("netWorkMonitor"))===null||s===void 0?void 0:s.isNetworkOnline,E=`${ct}.sendHeartbeat failed. isNetWorkOnline:${u} error: ${en(g)}`;this._ssoLog({method:"sendHeartbeatError",message:E}),this._handleConnectStateChange({state:Mi,shouldEmitEvent:!0,shouldAttemptReconnect:!0})}})}_sendHeartbeatIfReady(){return pA(this,void 0,void 0,function*(){this._canSendHeartbeat()&&(this._isHeartbeatInProgress=!0,yield this._sendHeartbeat(),this._isHeartbeatInProgress=!1)})}_updateHeartbeatTime(){this._nextHeartbeatAt=To?Date.now()+5e3:Date.now()+1e4}_handleNetworkStatusChange(s){const n=`${ct}.networkStatusChange ${JSON.stringify(s)}`;this._ssoLog({method:"networkStatusChange",message:n});const{isNetworkOnline:g,networkType:u}=s;g&&u!=="none"?this._handleConnectStateChange({state:qi,shouldEmitEvent:!1,shouldAttemptReconnect:!0,reason:Mg}):this._handleConnectStateChange({state:Mi,shouldEmitEvent:!1,shouldAttemptReconnect:!0,reason:Mg})}isPrivateNetWork(){const s=Xi.get("instance")||{};return s.proxyServer&&!s.fileDownloadProxy}_handleConnectStateChange(s){const{state:n,shouldAttemptReconnect:g,shouldEmitEvent:u,reason:E}=s,m=`${ct}._handleConnectStateChange currentConnectState: ${this._currentConnectState} shouldAttemptReconnect: ${g} shouldEmitEvent: ${u} reason: ${E}`;this._currentConnectState!==n&&(this._ssoLog({method:"handleConnectStateChange",message:m}),u&&(Pt.info("_handleConnectStateChange",` from ${this._currentConnectState} to ${n}`),gn.emitOuterEvent("netStateChange",{name:"netStateChange",data:{state:n}}),this._currentConnectState=n,n===Mi&&gn.emitInnerEvent(Pe.SOCKET_DISCONNECTED)),g&&(this._resetReconnectDelay(),fn.addTask({id:Ji,intervalMs:this._intendedDelay,callback:this._scheduleReconnectWithBackoff,context:this})))}_handleActivityStatusChange(s){var n,g;const u=(g=(n=this._socketAdapter)===null||n===void 0?void 0:n._ws)===null||g===void 0?void 0:g.readyState,E=`${ct}.activityStatusChange ${JSON.stringify(s)} readyState: ${u}`;Pt.debug("activityStatusChange",E),u===3&&this._handleConnectStateChange({state:Mi,shouldEmitEvent:!0,shouldAttemptReconnect:!0,reason:sr})}_resetReconnectDelay(){var s;Pt.debug(`${ct}._resetReconnectDelay`),fn.removeTask(Ji);const n=(s=Xi.get("activityMonitor"))===null||s===void 0?void 0:s.isActive;this._intendedDelay=n?zo:1e3}_scheduleReconnectWithBackoff(){var s;const n=(s=Xi.get("activityMonitor"))===null||s===void 0?void 0:s.isActive;this._intendedDelay=n?Math.min(5e3,Math.max(zo,1.5*this._intendedDelay)):Math.min(3e5,Math.max(1e3,1.5*this._intendedDelay));const g=new Date().toTimeString().slice(0,8),u=`${ct}.scheduleReconnectWithBackoff timeStr: ${g} intendedDelay: ${this._intendedDelay}`;Pt.debug(u),this.reconnect(),fn.updateTaskInterval(Ji,this._intendedDelay)}_ssoLog(s){const{method:n,message:g}=s;Pt.info(n,g)}_diagnose(){this.isPrivateNetWork()||(this._lastDiagnoseAt=Date.now(),function(s){pA(this,void 0,void 0,function*(){const n=s.split("/")[2];if(!n.startsWith("ws"))return;const g=`https://${n}/v3/netcheck/getconninfo?${s.slice(s.indexOf("info?")+5)}&reqtime=${Date.now()}`;try{yield Pi({method:"GET",url:g,data:{}})}catch(u){Pt.warn("diagnoseBySSO",`diagnoseBySSO failed. error:${u.message}`)}})}(this._url),function(s){pA(this,void 0,void 0,function*(){const n=`https://boce-cdn.my-imcloud.com/v3/netcheck/getconninfo?${s.slice(s.indexOf("info?")+5)}&reqtime=${Date.now()}`;try{yield Pi({method:"GET",url:n,data:{}})}catch(g){Pt.warn(`diagnoseByCDN', 'diagnoseByCDN failed. error:${g.message}`)}})}(this._url),this._beforeSendInterceptors=[])}_clearTimeoutRequest(){for(const[s,n]of this._pendingRequests.entries()){const{reject:g,timestamp:u,timeout:E}=n;Date.now()-u>=E&&(this._pendingRequests.delete(s),Date.now()-this._lastDiagnoseAt>=3e4&&this._diagnose(),g({errorCode:Qr,errorInfo:"NETWORK_TIMEOUT",data:{requestId:s}}))}}_updateIsBinarySupported(){var s;if(!((s=Xi.get("instance"))===null||s===void 0)&&s.devMode)return void(this._isBinarySupported=!1);const n=Es();if((gi||Le&&n==="windows"||Vs)&&(this._isBinarySupported=!1),To){const{uniRuntimeVersion:g=""}=io.getSystemInfoSync();(function(u){const E=u.split(".").map(Number),[m=0,D=0,M=0]=E;return m>2||!(m<2)&&(D>2||!(D<2)&&M>=6)})(g)||(this._isBinarySupported=!1)}}_isCompressedData(s){const n=new Uint8Array(s);return n[0]===67&&n[1]===79&&n[2]===77&&n[3]===80}};const fe={init:function(s){Xi.set("instance",s),ye.init()},destroy:function(){ye.dispose(),Xi.clear(),fn.dispose()},notificationCenter:gn,channel:ye,store:Xi,ssoLog:Pt,utils:yg,common:vA,constants:_e},vg=s=>typeof s=="function";function rg(s,n,g){const u=g||[];if(!s||!n)return!1;const E=Object.keys(s).filter(D=>!u.includes(D)),m=Object.keys(n).filter(D=>!u.includes(D));return E.length===m.length&&E.every(D=>!!n.hasOwnProperty(D)&&(typeof s[D]=="object"&&s[D]!==null?rg(s[D],n[D],g):s[D]===n[D]))}var Rg;(function(s){s.SDK_READY="sdkStateReady",s.SDK_NOT_READY="sdkStateNotReady",s.SDK_DESTROY="sdkDestroy",s.MESSAGE_RECEIVED="onMessageReceived",s.ROOM_CUSTOM_DATA_RECEIVED="onRoomCustomDataReceived",s.MESSAGE_MODIFIED="onMessageModified",s.MESSAGE_REVOKED="onMessageRevoked",s.MESSAGE_READ_BY_PEER="onMessageReadByPeer",s.MESSAGE_READ_RECEIPT_RECEIVED="onMessageReadReceiptReceived",s.MESSAGE_EXTENSIONS_UPDATED="onMessageExtensionsUpdated",s.MESSAGE_EXTENSIONS_DELETED="onMessageExtensionsDeleted",s.MESSAGE_REACTIONS_UPDATED="onMessageReactionsUpdated",s.CONVERSATION_LIST_UPDATED="onConversationListUpdated",s.TOTAL_UNREAD_MESSAGE_COUNT_UPDATED="onTotalUnreadMessageCountUpdated",s.CONVERSATION_GROUP_LIST_UPDATED="onConversationGroupListUpdated",s.CONVERSATION_IN_GROUP_UPDATED="onConversationInGroupUpdated",s.GROUP_LIST_UPDATED="onGroupListUpdated",s.GROUP_ATTRIBUTES_UPDATED="groupAttributesUpdated",s.GROUP_COUNTER_UPDATED="onGroupCounterUpdated",s.TOPIC_CREATED="onTopicCreated",s.TOPIC_DELETED="onTopicDeleted",s.TOPIC_UPDATED="onTopicUpdated",s.PROFILE_UPDATED="onProfileUpdated",s.USER_STATUS_UPDATED="onUserStatusUpdated",s.BLACKLIST_UPDATED="blacklistUpdated",s.FRIEND_LIST_UPDATED="onFriendListUpdated",s.FRIEND_GROUP_LIST_UPDATED="onFriendGroupListUpdated",s.FRIEND_APPLICATION_LIST_UPDATED="onFriendApplicationListUpdated",s.MY_FOLLOWERS_LIST_UPDATED="onMyFollowersListUpdated",s.MY_FOLLOWING_LIST_UPDATED="onMyFollowingListUpdated",s.MUTUAL_FOLLOWERS_LIST_UPDATED="onMutualFollowersListUpdated",s.KICKED_OUT="kickedOut",s.ERROR="error",s.NET_STATE_CHANGE="netStateChange",s.ALL_RECEIVE_MESSAGE_OPT_UPDATED="onAllReceiveMessageOptUpdated",s.SERVER_CONFIG_UPDATED="onServerConfigUpdated",s.PINNED_GROUP_MESSAGE_UPDATED="onPinnedGroupMessageUpdated",s.WEB_PUSH_MESSAGE_RECEIVED="onWebPushMessageReceived",s.GROUP_ONLINE_MEMBER_COUNT_CHANGED="onGroupOnlineMemberCountChanged",s.RICH_STATUS_CHANGED="onRichStatusChanged"})(Rg||(Rg={}));var Dn,Dr=Rg;(function(s){s.LOGOUT="logout",s.DESTROY="destroy",s.CLOUD_CONFIG_UPDATE="cloud_config_update",s.PROFILE_UPDATE="profile_updated",s.ERROR="error",s.RECONNECTED="reconnected",s.FORCE_OFFLINE="im_open_status.stat_forceoffline",s.COMMERCIAL_CONFIG_PUSH="im_sdk_config_mgr.push_imsdk_purchase_bitsv2",s.OVERLOAD_PUSH="OverLoadPush.notify2",s.NEW_MESSAGE="new_message",s.MESSAGE_PUSH="im_open_push.msg_push",s.MESSAGE_DELETED="message_deleted",s.MESSAGE_REVOKED="message_revoked",s.MESSAGE_MODIFIED="message_modified",s.SOCKET_DISCONNECTED="socket_disconnected",s.CONVERSATION_UPDATED="conversation_updated",s.TOPIC_MESSAGE_DELETED="topic_message_deleted",s.TOPIC_MESSAGE_REVOKED="topic_message_revoked",s.TOPIC_MESSAGE_MODIFIED="topic_message_modified",s.TOPIC_NEW_MESSAGE="topic_new_message",s.QUALITY_STAT="quality_stat",s.SYNC_CONVERSATION_LIST="sync_conversation_list",s.HISTORY_MESSAGE_FETCHED="history_message_fetched"})(Dn||(Dn={}));var Ii,so=Dn;(function(s){s.NEW_INVITATION_RECEIVED="newInvitationReceived",s.INVITEE_ACCEPTED="ts_invitee_accepted",s.INVITEE_REJECTED="ts_invitee_rejected",s.INVITATION_CANCELLED="ts_invitation_cancelled",s.INVITATION_TIMEOUT="ts_invitation_timeout",s.INVITATION_MODIFIED="ts_invitation_modified"})(Ii||(Ii={}));var Hc=Ii;const zg=Object.assign({},{KICKED_OUT_MULT_ACCOUNT:"multipleAccount",KICKED_OUT_MULT_DEVICE:"multipleDevice",KICKED_OUT_USERSIG_EXPIRED:"userSigExpired",KICKED_OUT_REST_API:"REST_API_Kick"}),wg={MSG_TEXT:"TIMTextElem",MSG_IMAGE:"TIMImageElem",MSG_AUDIO:"TIMSoundElem",MSG_FILE:"TIMFileElem",MSG_FACE:"TIMFaceElem",MSG_VIDEO:"TIMVideoFileElem",MSG_LOCATION:"TIMLocationElem",MSG_GRP_TIP:"TIMGroupTipElem",MSG_GRP_SYS_NOTICE:"TIMGroupSystemNoticeElem",MSG_CUSTOM:"TIMCustomElem",MSG_MERGER:"TIMRelayElem",MSG_STREAM:"TIMStreamElem"};var Yr;(function(s){s.UNSENT="unSend",s.SUCCESS="success",s.FAIL="fail"})(Yr||(Yr={}));const yc={modify:so.MESSAGE_MODIFIED,delete:so.MESSAGE_DELETED,revoke:so.MESSAGE_REVOKED};var qc;(function(s){s[s.FORWARD=0]="FORWARD",s[s.BACKWARD=1]="BACKWARD"})(qc||(qc={}));const ag=Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},wg),{MSG_PRIORITY_HIGH:"High",MSG_PRIORITY_NORMAL:"Normal",MSG_PRIORITY_LOW:"Low",MSG_PRIORITY_LOWEST:"Lowest"}),{RECEIVE_WITH_OFFLINE_PUSH_EXCEPT_AT:"AcceptNotNotifyExceptAt",NOT_RECEIVE_OFFLINE_PUSH_EXCEPT_AT:"AcceptNotNotifyExceptAt",NOT_RECEIVE_MSG_EXCEPT_AT:"NotReceiveMsgExceptAt",MSG_AT_ALL:"__kImSDK_MesssageAtALL__"}),{MSG_REMIND_ACPT_AND_NOTE:"AcceptAndNotify",MSG_REMIND_ACPT_NOT_NOTE:"AcceptNotNotify",MSG_REMIND_DISCARD:"Discard"}),{MessageStatus:Yr,Direction:qc}),vu={[yc.modify]:so.TOPIC_MESSAGE_MODIFIED,[yc.delete]:so.TOPIC_MESSAGE_DELETED,[yc.revoke]:so.TOPIC_MESSAGE_REVOKED},mE={GENDER_UNKNOWN:"Gender_Type_Unknown",GENDER_FEMALE:"Gender_Type_Female",GENDER_MALE:"Gender_Type_Male",USER_STATUS_UNKNOWN:0,USER_STATUS_ONLINE:1,USER_STATUS_OFFLINE:2,USER_STATUS_UNLOGINED:3,USER_NOT_FOUND:"@TLS#NOT_FOUND"},_g=Object.assign({},mE),ka={CONV_C2C:"C2C",CONV_GROUP:"GROUP",CONV_TOPIC:"TOPIC",CONV_SYSTEM:"@TIM#SYSTEM"},Dc=Object.assign(Object.assign(Object.assign(Object.assign({},ka),{CONV_AT_ME:1,CONV_AT_ALL:2,CONV_AT_ALL_AT_ME:3}),{CONV_MARK_TYPE_STAR:1,CONV_MARK_TYPE_UNREAD:2,CONV_MARK_TYPE_FOLD:4,CONV_MARK_TYPE_HIDE:8}),{READ_ALL_C2C_MSG:"readAllC2CMessage",READ_ALL_GROUP_MSG:"readAllGroupMessage",READ_ALL_MSG:"readAllMessage"}),fE=Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},{SNS_TYPE_NO_RELATION:"CheckResult_Type_NoRelation",SNS_TYPE_A_WITH_B:"CheckResult_Type_AWithB",SNS_TYPE_B_WITH_A:"CheckResult_Type_BWithA",SNS_TYPE_BOTH_WAY:"CheckResult_Type_BothWay"}),{ALLOW_TYPE_ALLOW_ANY:"AllowType_Type_AllowAny",ALLOW_TYPE_NEED_CONFIRM:"AllowType_Type_NeedConfirm",ALLOW_TYPE_DENY_ANY:"AllowType_Type_DenyAny"}),{SNS_ADD_TYPE_SINGLE:"Add_Type_Single",SNS_ADD_TYPE_BOTH:"Add_Type_Both"}),{SNS_DELETE_TYPE_SINGLE:"Delete_Type_Single",SNS_DELETE_TYPE_BOTH:"Delete_Type_Both"}),{SNS_APPLICATION_TYPE_BOTH:"Pendency_Type_Both",SNS_APPLICATION_SENT_TO_ME:"Pendency_Type_ComeIn",SNS_APPLICATION_SENT_BY_ME:"Pendency_Type_SendOut",SNS_APPLICATION_AGREE:"Response_Action_Agree",SNS_APPLICATION_AGREE_AND_ADD:"Response_Action_AgreeAndAdd"}),{SNS_CHECK_TYPE_BOTH:"CheckResult_Type_Both",SNS_CHECK_TYPE_SINGLE:"CheckResult_Type_Single"}),{FORBID_TYPE_NONE:"AdminForbid_Type_None",FORBID_TYPE_SEND_OUT:"AdminForbid_Type_SendOut"}),La={GRP_WORK:"Private",GRP_PUBLIC:"Public",GRP_MEETING:"ChatRoom",GRP_AVCHATROOM:"AVChatRoom",GRP_COMMUNITY:"Community",GRP_ROOM:"Room",GRP_LIVE:"Live"},sa={COMMUNITY:"@TGS#_",TOPIC:"@TOPIC#_"},Tg={JOINED:1,QUITTED:2,KICKED:3,ADMIN_SET:4,ADMIN_CANCELED:5,GROUP_PROFILE_UPDATED:6,GROUP_MEMBER_PROFILE_UPDATED:7,TOPIC_PROFILE_UPDATED:8},aI=Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},La),{GRP_MBR_ROLE_OWNER:"Owner",GRP_MBR_ROLE_ADMIN:"Admin",GRP_MBR_ROLE_MEMBER:"Member",GRP_MBR_ROLE_CUSTOM:"Custom"}),{GRP_TIP_MBR_JOIN:1,GRP_TIP_MBR_QUIT:2,GRP_TIP_MBR_KICKED_OUT:3,GRP_TIP_MBR_SET_ADMIN:4,GRP_TIP_MBR_CANCELED_ADMIN:5,GRP_TIP_GRP_PROFILE_UPDATED:6,GRP_TIP_MBR_PROFILE_UPDATED:7,GRP_TIP_BAN_AVCHATROOM_MEMBER:10,GRP_TIP_UNBAN_AVCHATROOM_MEMBER:11}),{JOIN_OPTIONS_FREE_ACCESS:"FreeAccess",JOIN_OPTIONS_NEED_PERMISSION:"NeedPermission",JOIN_OPTIONS_DISABLE_APPLY:"DisableApply",JOIN_STATUS_SUCCESS:"JoinedSuccess",JOIN_STATUS_ALREADY_IN_GROUP:"AlreadyInGroup",JOIN_STATUS_WAIT_APPROVAL:"WaitAdminApproval"}),{INVITE_OPTIONS_DISABLE_INVITE:"DisableInvite",INVITE_OPTIONS_NEED_PERMISSION:"NeedPermission",INVITE_OPTIONS_FREE_ACCESS:"FreeAccess"}),{GRP_PROFILE_OWNER_ID:"ownerID",GRP_PROFILE_CREATE_TIME:"createTime",GRP_PROFILE_LAST_INFO_TIME:"lastInfoTime",GRP_PROFILE_MEMBER_NUM:"memberNum",GRP_PROFILE_MAX_MEMBER_NUM:"maxMemberNum",GRP_PROFILE_JOIN_OPTION:"joinOption",GRP_PROFILE_INVITE_OPTION:"inviteOption",GRP_PROFILE_INTRODUCTION:"introduction",GRP_PROFILE_NOTIFICATION:"notification",GRP_PROFILE_MUTE_ALL_MBRS:"muteAllMembers"}),{GROUP_ID_PREFIX:sa,GROUP_TIPS_OPERATION_TYPE:Tg}),hs={IOS_OFFLINE_PUSH_NO_SOUND:"push.no_sound",IOS_OFFLINE_PUSH_DEFAULT_SOUND:"default"},Lo=Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},zg),ag),_g),Dc),fE),aI),hs),{NET_STATE_CONNECTING:"connecting",NET_STATE_DISCONNECTED:"disconnected",NET_STATE_CONNECTED:"connected"}),Ea={NO_SDKAPPID:2e3,NO_TINYID:2022,NO_A2KEY:2023,USER_NOT_LOGGED_IN:2024,REPEAT_LOGIN:2025,MSG_SEND_FAIL:2100,MSG_SEND_FAIL_NOT_IN_AV:2101,MSG_SEND_GRP_WITH_TOPIC_FAIL:2115,MSG_INSTANCE_REQUIRED:2105,MSG_INVALID_CONV_TYPE:2106,MSG_REVOKE_FAIL:2110,MSG_DELETE_FAIL:2111,MSG_UNREAD_ALL_FAIL:2112,READ_RECEIPT_MSG_LIST_EMPTY:2114,CANNOT_DELETE_GRP_SYSTEM_NOTICE:2116,NOT_MY_FRIEND:2700,NETWORK_ERROR:2800,NETWORK_TIMEOUT:2801,NO_NETWORK:2805,UNCAUGHT_ERROR:2903,INVALID_OPERATION:2905,SDK_IS_NOT_READY:2999,LOGGING_IN:3e3,LOGIN_FAILED:3001,KICKED_OUT_MULT_DEVICE:3002,KICKED_OUT_MULT_ACCOUNT:3003,KICKED_OUT_USERSIG_EXPIRED:3004,LOGGED_OUT:3005,KICKED_OUT_REST_API:3006,NO_USE:3122,OPTIONS_IS_EMPTY:3153,MSG_A2KEY_EXPIRED:20002,ACCOUNT_A2KEY_EXPIRED:70001,HELLO_ANSWER_KICKED_OUT:1002,OPEN_SERVICE_OVERLOAD_ERROR:60022},nr={BASIC:"1",STANDARD:"2",PROFESSIONAL:"3",NODE:"4"},xt={SYNC_SERVER_INFO_AFTER_RE_ONLINE:"sync-server-info-after-re-online",SYNC_SERVER_INFO_AFTER_LOGIN:"sync-server-info-after-login",RECEIVE_C2C_NEW_MESSAGE:"receive-c2c-new-message",RECEIVE_GROUP_NEW_MESSAGE:"receive-group-new-message",RECEIVE_GROUP_TIPS_NOTIFICATION:"receive-group-tips-notification"},qt={USER_STATUS_UPDATE:"user-status-update",CONVERSATION_RECOVER:"conversation-recover",HISTORY_MESSAGE_RECOVER:"history-message-recover",BLACKLIST_RECOVER:"blacklist-recover",FRIEND_RECOVER:"friend-recover",GROUP_ATTRIBUTE_CACHE_CLEAR:"group-attribute-cache-clear",UNREAD_MESSAGE_RECOVER:"unread-message-recover",HANDLE_NEW_MESSAGE:"handle-new-message",HANDLE_CONVERSATION_PROFILE_UPDATED:"handle-conversation-profile-updated",COMMERCIAL_CONFIG_UPDATE:"commercial-config-update",UNREAD_MESSAGE_SYNC:"unread-message-sync",FRIEND_AND_BLACKLIST_SYNC:"friend-and-blacklist-sync",SIGNALING_MESSAGE_RECOVER:"signaling-message-recover",GROUP_LIST_SYNC:"group-list-sync",CONVERSATION_LIST_SYNC:"conversation-list-sync",USER_PROFILE_SYNC:"user-profile-sync",CONVERSATION_UPDATE_AFTER_UNREAD_SYNC_FINISHED:"conversation-update-after-unread-sync-finished",CONVERSATION_UPDATE_AFTER_GROUP_LIST_SYNC_FINISHED:"conversation-update-after-group-list-sync-finished",HANDLE_C2C_NEW_MESSAGE:"handle-c2c-new-message",HANDLE_GROUP_NEW_MESSAGE:"handle-group-new-message",CREATE_OR_UPDATE_CONVERSATION_BY_RECEIVE_NEW_MESSAGE:"create-or-update-conversation-by-receive-new-message",HANDLE_GROUP_TIPS_FROM_SYNC_UNREAD:"handle-group-tips-from-sync-unread",HANDLE_C2C_REVOKED_MESSAGE_FROM_SYNC_UNREAD:"handle-c2c-revoked-message-from-sync-unread",GROUP_REVOKED_NOTICE_RECOVER:"group-revoked-notice-recover",CLOUD_CONFIG_SYNC:"cloud-config-sync",UPDATE_GROUP_NEXT_SEQUENCE:"update-group-next-sequence",EMIT_C2C_MESSAGE_EVENT:"emit-c2c-message-event",EMIT_GROUP_MESSAGE_EVENT:"emit-group-message-event",CONVERSATION_GROUP_LIST_SYNC:"conversation-group-list-sync",CONVERSATION_GROUP_UPDATE:"conversation-group-update",UPDATE_TOPIC_AFTER_UNREAD_SYNC_FINISHED:"update-topic-after-unread-sync-finished",UPDATE_TOPIC_BY_RECEIVE_NEW_MESSAGE:"update-topic-by-received-new-message",TOPIC_REQUEST_INFO_RESET:"topic-request-info-reset",QUALITY_REPORT:"quality-report",GROUP_TIPS_RECOVER:"group-tips-recover",HANDLE_GROUP_TIPS_NOTIFICATION:"handle-group-tips-notification",C2C_HISTORY_MESSAGE_RECOVER:"c2c-history-message-recover",FRIEND_APPLICATION_LIST_RECOVER:"friend-application-list-recover",EMIT_GROUP_TIPS_EVENT:"emit-group-tips-event",STREAM_MESSAGE_RECOVER:"stream-message-recover"},Ng={[xt.SYNC_SERVER_INFO_AFTER_RE_ONLINE]:[{stepId:qt.USER_STATUS_UPDATE},{stepId:qt.GROUP_ATTRIBUTE_CACHE_CLEAR},{stepId:qt.UNREAD_MESSAGE_SYNC,dependency:qt.C2C_HISTORY_MESSAGE_RECOVER},{stepId:qt.CONVERSATION_RECOVER},{stepId:qt.HISTORY_MESSAGE_RECOVER,dependency:qt.CONVERSATION_RECOVER},{stepId:qt.BLACKLIST_RECOVER},{stepId:qt.FRIEND_RECOVER},{stepId:qt.FRIEND_APPLICATION_LIST_RECOVER},{stepId:qt.GROUP_REVOKED_NOTICE_RECOVER,dependency:qt.HISTORY_MESSAGE_RECOVER},{stepId:qt.GROUP_TIPS_RECOVER,dependency:qt.HISTORY_MESSAGE_RECOVER},{stepId:qt.TOPIC_REQUEST_INFO_RESET},{stepId:qt.HANDLE_C2C_REVOKED_MESSAGE_FROM_SYNC_UNREAD,dependency:qt.UNREAD_MESSAGE_SYNC},{stepId:qt.HANDLE_GROUP_TIPS_FROM_SYNC_UNREAD,dependency:qt.UNREAD_MESSAGE_SYNC},{stepId:qt.CONVERSATION_UPDATE_AFTER_UNREAD_SYNC_FINISHED,dependency:[qt.UNREAD_MESSAGE_SYNC,qt.CONVERSATION_RECOVER]},{stepId:qt.EMIT_C2C_MESSAGE_EVENT,dependency:[qt.UNREAD_MESSAGE_SYNC,qt.CONVERSATION_UPDATE_AFTER_UNREAD_SYNC_FINISHED],skipIfDependencyMissing:!1},{stepId:qt.C2C_HISTORY_MESSAGE_RECOVER,dependency:qt.CONVERSATION_RECOVER},{stepId:qt.STREAM_MESSAGE_RECOVER}],[xt.SYNC_SERVER_INFO_AFTER_LOGIN]:[{stepId:qt.COMMERCIAL_CONFIG_UPDATE},{stepId:qt.CLOUD_CONFIG_SYNC},{stepId:qt.USER_PROFILE_SYNC},{stepId:qt.UNREAD_MESSAGE_SYNC},{stepId:qt.FRIEND_AND_BLACKLIST_SYNC},{stepId:qt.GROUP_LIST_SYNC},{stepId:qt.CONVERSATION_LIST_SYNC},{stepId:qt.SIGNALING_MESSAGE_RECOVER,dependency:qt.UNREAD_MESSAGE_SYNC},{stepId:qt.UPDATE_TOPIC_AFTER_UNREAD_SYNC_FINISHED,dependency:[qt.UNREAD_MESSAGE_SYNC]},{stepId:qt.CONVERSATION_UPDATE_AFTER_UNREAD_SYNC_FINISHED,dependency:[qt.UNREAD_MESSAGE_SYNC,qt.CONVERSATION_LIST_SYNC]},{stepId:qt.CONVERSATION_UPDATE_AFTER_GROUP_LIST_SYNC_FINISHED,dependency:[qt.GROUP_LIST_SYNC,qt.CONVERSATION_LIST_SYNC]},{stepId:qt.CONVERSATION_GROUP_LIST_SYNC},{stepId:qt.CONVERSATION_GROUP_UPDATE,dependency:[qt.CONVERSATION_LIST_SYNC,qt.CONVERSATION_GROUP_LIST_SYNC]},{stepId:qt.QUALITY_REPORT}],[xt.RECEIVE_C2C_NEW_MESSAGE]:[{stepId:qt.HANDLE_C2C_NEW_MESSAGE},{stepId:qt.UNREAD_MESSAGE_SYNC},{stepId:qt.CREATE_OR_UPDATE_CONVERSATION_BY_RECEIVE_NEW_MESSAGE,dependency:qt.HANDLE_C2C_NEW_MESSAGE},{stepId:qt.EMIT_C2C_MESSAGE_EVENT,dependency:[qt.HANDLE_C2C_NEW_MESSAGE,qt.CREATE_OR_UPDATE_CONVERSATION_BY_RECEIVE_NEW_MESSAGE],skipIfDependencyMissing:!1},{stepId:qt.CONVERSATION_UPDATE_AFTER_UNREAD_SYNC_FINISHED,dependency:[qt.UNREAD_MESSAGE_SYNC]}],[xt.RECEIVE_GROUP_NEW_MESSAGE]:[{stepId:qt.HANDLE_GROUP_NEW_MESSAGE},{stepId:qt.CREATE_OR_UPDATE_CONVERSATION_BY_RECEIVE_NEW_MESSAGE,dependency:qt.HANDLE_GROUP_NEW_MESSAGE},{stepId:qt.UPDATE_GROUP_NEXT_SEQUENCE,dependency:qt.HANDLE_GROUP_NEW_MESSAGE},{stepId:qt.UPDATE_TOPIC_BY_RECEIVE_NEW_MESSAGE,dependency:qt.HANDLE_GROUP_NEW_MESSAGE},{stepId:qt.EMIT_GROUP_MESSAGE_EVENT,dependency:[qt.HANDLE_GROUP_NEW_MESSAGE,qt.CREATE_OR_UPDATE_CONVERSATION_BY_RECEIVE_NEW_MESSAGE],skipIfDependencyMissing:!1}],[xt.RECEIVE_GROUP_TIPS_NOTIFICATION]:[{stepId:qt.HANDLE_GROUP_TIPS_NOTIFICATION},{stepId:qt.CREATE_OR_UPDATE_CONVERSATION_BY_RECEIVE_NEW_MESSAGE,dependency:qt.HANDLE_GROUP_TIPS_NOTIFICATION},{stepId:qt.EMIT_GROUP_TIPS_EVENT,dependency:[qt.CREATE_OR_UPDATE_CONVERSATION_BY_RECEIVE_NEW_MESSAGE,qt.HANDLE_GROUP_TIPS_NOTIFICATION],skipIfDependencyMissing:!1}]},gI={MESSAGE_SEND_SUCCESS_RATE:"messageSendSuccessRate"},rr={TOTAL_COUNT:"sendMessageTotalCount",SUCCESS_COUNT:"sendMessageSuccessCount",FAILED_COUNT:"sendMessageFailedCount",SEND_COST:"sendMessageCost"},JI=["login","getMyProfile","getUserProfile","updateMyProfile","setSelfStatus","getUserStatus","subscribeUserStatus","unsubscribeUserStatus","modifyMessage","deleteGroupMember","dismissGroup","getGroupMemberList","getGroupOnlineMemberCount","joinGroup","markGroupMemberList","quitGroup","searchCloudMessages","searchCloudGroups","searchCloudGroupMembers","searchCloudUsers","getMyFollowingList","getMyFollowersList","getMutualFollowersList","followUser","unfollowUser","getUserFollowInfo","checkFollowType","getFriendProfile","addFriend","deleteFriend","updateFriend","checkFriend","setFriendApplicationRead","createFriendGroup","deleteFriendGroup","addToFriendGroup","removeFromFriendGroup","renameFriendGroup","changeGroupOwner","createGroup","dismissGroup","getGroupList","getGroupOnlineMemberCount","getGroupProfile","searchGroupByID","updateGroupProfile","handleGroupApplication","deleteGroupAttributes","getGroupAttributes","initGroupAttributes","setGroupAttributes","addGroupMember","deleteGroupMember","getGroupMemberList","getGroupMemberProfile","setGroupMemberMuteTime","setGroupMemberNameCard","setGroupMemberRole","deleteMessage","revokeMessage","setMessageExtensions","getMessageExtensions","deleteMessageExtensions","getMessageList","addMessageReaction","removeMessageReaction","clearHistoryMessage","sendMessageReadReceipt","getMessageReadReceiptList","getGroupMessageReadMemberList","createMergerMessage","invite","accept","cancel","reject","modifyInvitation","deleteConversation","pinConversation","setMessageRead","setAllMessageRead","getConversationList","getTotalUnreadMessageCount","renameConversationGroup","deleteConversationGroup","markConversation","setConversationCustomData","deleteConversationsFromGroup","addConversationsToGroup","createConversationGroup"];var za=Object.freeze({__proto__:null,ERROR_CODE:Ea,InnerEvent:so,NEED_LOG_API:JI,OuterConstant:Lo,OuterEvent:Dr,PUSH:hs,QUALITY_METRICS:gI,SDK_EDITION:nr,SDK_INFO:{VERSION:"1.7.3",APPID:537048168},SEND_MESSAGE_STAT:rr,SignalingEvent:Hc,WEB_PUSH_ACCOUNT_TYPE:1,WORKFLOW_DEFINITIONS:Ng,WORKFLOW_NAME:xt,WORKFLOW_STEP:qt}),na,un,Sn;(function(s){s[s.USER_INITIATED=0]="USER_INITIATED",s[s.KICKED_OUT=1]="KICKED_OUT"})(na||(na={})),function(s){s[s.multipleAccount=1]="multipleAccount",s[s.multipleDevice=2]="multipleDevice",s[s.restApi=3]="restApi"}(un||(un={})),function(s){s[s.multipleDevice=3002]="multipleDevice",s[s.multipleAccount=3003]="multipleAccount",s[s.usersigExpired=70001]="usersigExpired",s[s.restApi=20002]="restApi"}(Sn||(Sn={}));const Ru={[un.multipleAccount]:"multipleAccount",[un.multipleDevice]:"multipleDevice",[un.restApi]:"REST_API_Kick",[Sn.multipleAccount]:"multipleAccount",[Sn.multipleDevice]:"multipleDevice",[Sn.restApi]:"REST_API_Kick",[Sn.usersigExpired]:"userSigExpired"},Gg="login_online_presence_task",{ERROR:Ua,DESTROY:Kc,FORCE_OFFLINE:HI}=so,{KICKED_OUT_MULT_ACCOUNT:yE,KICKED_OUT_MULT_DEVICE:cI,KICKED_OUT_REST_API:wu,ACCOUNT_A2KEY_EXPIRED:vl,MSG_A2KEY_EXPIRED:Sc}=Ea;class _u{init(){const{notificationCenter:n}=fe;n.subscribeInnerEvent(HI,this._handleForceOfflineFromServerPush,this),n.subscribeInnerEvent(Ua,Sc,this._handleForceOfflineFromResponse,this,this._isChatLoginEvent),n.subscribeInnerEvent(Ua,vl,this._handleForceOfflineFromResponse,this,this._isChatLoginEvent),n.subscribeInnerEvent(Ua,yE,this._handleForceOfflineFromResponse,this),n.subscribeInnerEvent(Ua,cI,this._handleForceOfflineFromResponse,this),n.subscribeInnerEvent(Ua,wu,this._handleForceOfflineFromResponse,this),n.subscribeInnerEvent(Kc,this._dispose,this)}_handleForceOfflineFromServerPush(n){var g;if(((g=fe.store.get("login"))===null||g===void 0?void 0:g.isLoggedIn)===!0){const{EventArray:u=[]}=n?.body||{};this._extractKickedOutMessages(u).forEach(E=>{const{KickoutMsgNotify:{KickType:m,NewInstInfo:D,Instid:M}}=E;this._isCurrentInstanceKickedOut(M)&&this._processKickedOutReasonInfo({kickedOutReasonCode:m,newInstanceInfo:D})})}}_extractKickedOutMessages(n){return n.reduce((g,u)=>[...g,...u.C2cNotifyMsgArray||[]],[]).filter(g=>{var u;return this._isKickedOut((u=g?.KickoutMsgNotify)===null||u===void 0?void 0:u.KickType)})}_handleForceOfflineFromResponse(n){const{errorCode:g}=n;this._processKickedOutReasonInfo({kickedOutReasonCode:g})}_processKickedOutReasonInfo(n){return pA(this,void 0,void 0,function*(){const{kickedOutReasonCode:g}=n,{ssoLog:u,utils:{safeStringify:E}}=fe;try{this._logKickedOutEvent(n),this._shouldLogoutAfterKickedOut(g)?yield fe.login.loginAction.logout(na.KICKED_OUT):fe.login.loginAction.handleLogoutCompleted()}catch(m){u.debug("_processKickedOutReasonInfo",` fail ${E(m)}`)}finally{fe.notificationCenter.emitOuterEvent(Dr.KICKED_OUT,{data:{type:Ru[g]},name:Dr.KICKED_OUT})}})}_logKickedOutEvent(n){const{kickedOutReasonCode:g,newInstanceInfo:u={}}=n,E=`type:${Ru[g]} newInstanceInfo: ${JSON.stringify(u)}`;fe.ssoLog.warn("kickedOut",E)}_isKickedOut(n){return[un.multipleAccount,un.multipleDevice,un.restApi].includes(n)}_isChatLoginEvent(n){const{requestHead:g}=n||{};return g?.idtype!==1}_shouldLogoutAfterKickedOut(n){return![Sn.usersigExpired,un.restApi].includes(n)}_isCurrentInstanceKickedOut(n){const{isLoggedIn:g,statusInstanceId:u}=fe.store.get("login")||{};return g===!0&&n===u}_dispose(){const{notificationCenter:n}=fe;n.unSubscribeInnerEvent(HI,this._handleForceOfflineFromServerPush,this),n.unSubscribeInnerEvent(Ua,vl,this._handleForceOfflineFromResponse,this),n.unSubscribeInnerEvent(Ua,Sc,this._handleForceOfflineFromResponse,this),n.unSubscribeInnerEvent(Ua,yE,this._handleForceOfflineFromResponse,this),n.unSubscribeInnerEvent(Ua,cI,this._handleForceOfflineFromResponse,this),n.unSubscribeInnerEvent(Ua,wu,this._handleForceOfflineFromResponse,this),n.unSubscribeInnerEvent(Kc,this._dispose,this)}}function Tu(s){return pA(this,void 0,void 0,function*(){const n="im_open_status.wslogin",g=fe.common.generateProtocolData({servcmd:n,data:{State:"Online",is_web_uniapp:0,InstType:0,CustomInfo:s}}),u=`${g.head.seq}${n}`,E=yield fe.channel.sendPacket(g,{timeout:9e4,requestId:u});if(E){const{HelloInterval:m,InstId:D,TinyId:M,TimeStamp:T,CustomStatus:P,PurchaseBits:W,A2Key:iA,RichMsgAuthKey:EA,ErrorCode:RA,ErrorInfo:kA,ActionStatus:xA}=E;return{helloInterval:m,instanceID:D,tinyID:M,timeStamp:T,customStatus:P,purchaseBits:W,a2Key:iA,authKey:EA,errorCode:RA,errorInfo:kA,actionStatus:xA}}})}function Rl(){const{store:s}=fe;return Ia(s.get("instance").sdkAppId)!==ut.CHINA}function rs(s){var n;try{const g=Xi.getStorage("errorMessage");if(!s||!g)return"";const u=((n=JSON.parse(g))===null||n===void 0?void 0:n.errorMessage)||{},{code:E,replacement1:m="",replacement2:D=""}=s;if(!E)return"";const M=Rl()?`${E}_en`:`${E}_cn`;let T=u[u[M]?M:E]||"";return T&&(m&&(T=T.replace("$replacement1",m)),D&&(T=T.replace("$replacement2",D))),T}catch(g){return console.warn("Error parsing stored error messages:",g),""}}class gs extends Error{constructor(n={}){n.code=n.code||n.errorCode;let{functionName:g="Unknown",code:u,message:E="",data:m="",moreMessage:D="",errorMessage:M=""}=n;M=(u?rs(n):"")||M||E;let T=u?`${g} failed. error: {"message": ${M}, "code": ${u}}`:`${g} failed. error: {"message": ${M}}`;T=`${T} ${D}`,super(),this.code=u,this.errorCode=u,this.errorMessage=M,this.message=T,this.data=m}}function Id(s,n){var g;if(s&&((g=fe.store.get("login"))===null||g===void 0?void 0:g.isLoggedIn)!==!0)throw new gs({code:Ea.USER_NOT_LOGGED_IN,functionName:n})}function lI(s,n,g){if(Array.isArray(s))for(let u=0;u{return P===(W=u,Object.prototype.toString.call(W).match(/^\[object (.*)\]$/)[1].toLowerCase());var W})){for(let W=0;W{const{interceptor:E,context:m}=u;E.apply(m,[g])})}(s)}function Mc(s,n){DE.push({interceptor:s,context:n})}function jc(s){const{params:n,auth:g}=s;n&&typeof n=="object"&&Object.assign(wl,n),g&&typeof g=="object"&&Object.assign(ud,g)}function tn(s){return fe.store.get("commercialConfig").get(s)}class ws{constructor(){this._handlers=new Map,this._activeWorkflows=new Map,this._stepStartTimes=new Map,this._logHandlers={start:(n,g)=>{const u=Date.now();g?(this._stepStartTimes.set(`${n}-${g}`,u),fe.ssoLog.debug("_executeWorkflowStep",`[Workflow ${n}] Step ${g} started at ${new Date(u).toISOString()}`)):(this._workflowStartTimes.set(n,u),fe.ssoLog.debug("_executeWorkflowStep",`[Workflow ${n}] started at ${new Date(u).toISOString()}`))},success:(n,g)=>{const u=Date.now();if(g){const E=this._stepStartTimes.get(`${n}-${g}`),m=E?u-E:0;this._stepStartTimes.delete(`${n}-${g}`),fe.ssoLog.debug("_executeWorkflowStep",`[Workflow ${n}] Step ${g} completed successfully at ${new Date(u).toISOString()} (${m}ms)`)}else{const E=this._workflowStartTimes.get(n),m=E?u-E:0;this._workflowStartTimes.delete(n),fe.ssoLog.debug("_executeWorkflowStep",`[Workflow ${n}] completed successfully at ${new Date(u).toISOString()} (${m}ms)`)}},error:(n,g,u)=>{const{ssoLog:E,utils:{safeStringify:m}}=fe,D=Date.now();if(g){const M=this._stepStartTimes.get(`${n}-${g}`),T=M?D-M:0;this._stepStartTimes.delete(`${n}-${g}`),E.error("_executeWorkflowStep",`[Workflow ${n}] Step ${g} failed at ${new Date(D).toISOString()} (${T}ms) ${m(u)}`,{error:u})}else{const M=this._workflowStartTimes.get(n),T=M?D-M:0;this._workflowStartTimes.delete(n),E.error("_executeWorkflowStep",`[Workflow ${n}] failed at ${new Date(D).toISOString()} (${T}ms) ${m(u)}`,{error:u})}}}}static getInstance(){return ws._instance||(ws._instance=new ws),ws._instance}static setInstance(n){ws._instance=n}init(){this._initializeWorkflows()}registerWorkflowStep(n,g,u,E){if(!this._handlers.has(n))return void fe.ssoLog.debug("registerWorkflowStep",`Workflow '${n}' not defined in core`);if(!Ng[n].find(D=>D.stepId===g))return void fe.ssoLog.debug("registerWorkflowStep",`Step '${g}' not defined in workflow '${n}'`);const m=this._handlers.get(n);m.has(g)||m.set(g,E?u.bind(E):u)}executeWorkflow(n,g){return pA(this,void 0,void 0,function*(){if(!this._validateWorkflow(n))return;fe.ssoLog.debug("executeWorkflow",`[Workflow ${n}] Started execution at ${new Date().toISOString()}`);const u=Ng[n],E={},m={cancelled:!1};this._activeWorkflows.set(n,{cancelToken:m});try{const D=new Map;u.forEach(T=>{D.set(T.stepId,T)});const M={workflowName:n,pendingSteps:new Set(u.map(T=>T.stepId)),completedSteps:new Set,runningSteps:new Set,stepMap:D,stepResults:E,data:g,cancelToken:m};yield new Promise((T,P)=>{const W=()=>{if(m.cancelled)return void T();this._getExecutableSteps({pendingSteps:M.pendingSteps,completedSteps:M.completedSteps,stepMap:M.stepMap,workflowName:n}).filter(iA=>!M.runningSteps.has(iA)).forEach(iA=>{M.completedSteps.has(iA)||M.runningSteps.has(iA)||this._executeWorkflowStep(iA,M,{onComplete:()=>{if(M.pendingSteps.size===0)return void T();this._getExecutableSteps({pendingSteps:M.pendingSteps,completedSteps:M.completedSteps,stepMap:M.stepMap,workflowName:n}).filter(EA=>!M.runningSteps.has(EA)).length===0&&M.runningSteps.size===0&&(fe.ssoLog.debug("executeWorkflow",`Workflow ${n} completed with some steps skipped due to dependency failures`),T())},onError:P,onStepComplete:W})})};W()}),fe.ssoLog.debug("executeWorkflow",`[Workflow ${n}] Completed execution at ${new Date().toISOString()}`)}catch(D){fe.ssoLog.error("executeWorkflow",`[Workflow ${n}] Failed execution at ${new Date().toISOString()}`,{error:D})}finally{this._activeWorkflows.delete(n)}})}_executeWorkflowStep(n,g,u){return pA(this,void 0,void 0,function*(){const{workflowName:E,runningSteps:m,stepMap:D,stepResults:M,data:T}=g;m.add(n),this._logWorkflowExecution(E,n,"start");try{const P=D.get(n);let W=null;P?.dependency&&(l(P.dependency)?W=M[P.dependency]:Array.isArray(P.dependency)&&(W={},P.dependency.forEach(EA=>{W[EA]=M[EA]})));const iA=this._handlers.get(E).get(n);if(iA){const EA=yield Promise.resolve(iA({data:T,result:W}));M[n]=EA,this._logWorkflowExecution(E,n,"success")}g.completedSteps.add(n)}catch(P){const W=`[Workflow].${E}.${n}`,{errorCode:iA,errorInfo:EA=`${W} failed`}=P||{},RA=new gs({functionName:W,code:iA,message:EA});fe.ssoLog.error(W,EA,{error:RA}),this._logWorkflowExecution(E,n,"error",P),u.onError(P)}finally{m.delete(n),g.pendingSteps.delete(n),u.onStepComplete(),u.onComplete()}})}reset(){this._cancelAllWorkflows()}destroy(){this.reset(),this._handlers.clear()}_initializeWorkflows(){Object.keys(Ng).forEach(n=>{this._handlers.has(n)||this._handlers.set(n,new Map)})}_cancelWorkFlow(n){const g=this._activeWorkflows.get(n);if(!g)return;const{cancelToken:u}=g;u.cancelled=!0,this._activeWorkflows.delete(n)}_cancelAllWorkflows(){Object.keys(Ng).forEach(n=>{this._cancelWorkFlow(n)})}_validateWorkflow(n){return Ng[n]?!!this._handlers.get(n):!1}_getExecutableSteps(n){const{pendingSteps:g,completedSteps:u,stepMap:E,workflowName:m}=n;return Array.from(g).filter(D=>{const M=E.get(D)||{},{dependency:T,skipIfDependencyMissing:P=!0}=M;if(!T)return!0;if(l(T))return this._isStepRegistered({workflowName:m,stepId:T})?u.has(T):!P;if(h(T)){if(T.filter(W=>!this._isStepRegistered({workflowName:m,stepId:W})).length>0&&P)return!1;for(const W of T)if(!u.has(W))return!1;return!0}return!1})}_isStepRegistered(n){var g;const{workflowName:u,stepId:E}=n;return(g=this._handlers.get(u))===null||g===void 0?void 0:g.has(E)}_logWorkflowExecution(n,g,u,E){this._logHandlers[u](n,g)}}const da=new Map,Xr=({type:s,groupID:n})=>s===Lo.GRP_COMMUNITY||`${n}`.startsWith(sa.COMMUNITY)&&!`${n}`.includes(sa.TOPIC),Wc=(s="")=>{const n=s.startsWith("GROUP")?s.replace("GROUP",""):s;return n.startsWith(sa.COMMUNITY)&&`${n}`.includes(sa.TOPIC)},Ed="openim",Zg="million_group_open_http_svc";function gg(s){return pA(this,void 0,void 0,function*(){const{servcmd:n,data:g}=function(m){const{data:D}=m;return SE(D)||Xg(D)}(s)?function(m){let{servcmd:D,data:M}=m;return Xg(M)?function(T){const{servcmd:P,data:W}=T;let{GroupId:iA=""}=W;const EA=iA;return[iA]=EA.split(sa.TOPIC),{servcmd:qn(P),data:Object.assign(Object.assign({},W),{GroupId:iA,TopicId:EA})}}(m):(SE(M)&&(D=qn(D)),{servcmd:D,data:M})}(s):s,u=fe.common.generateProtocolData({servcmd:n,data:g}),E=`${u.head.seq}${n}`;return fe.channel.sendPacket(u,{requestId:E,timeout:s.timeout})})}function SE(s){const{Type:n,GroupId:g,GroupIdList:u=[]}=s,E=g||u[0]||"";return Xr({type:n,groupID:E})}function Xg(s){const{GroupId:n=""}=s;return Wc(n)}function qn(s){if(s.includes(Ed))return s;const n=s.split(".")[1];return`${Zg}.${n}`}function Ar(){var s;return(s=fe.store.get("login"))===null||s===void 0?void 0:s.userId}const Fa=s=>h(s)||f(s),dd=(s,n,g,u)=>{if(!Fa(s)||!Fa(n))return 0;let E=0;const m=Object.keys(n);let D;for(let M=0,T=m.length;M{if(r(n))return"";if(s===Lo.MSG_TEXT)return n.text||"";const g=qI[s];return g?Nu(g):""},Zc=[{cmd:"ws_get_user_status",interval:5,count:20},{cmd:"ws_status_subscribe",interval:5,count:20},{cmd:"ws_status_unsubscribe",interval:5,count:20},{cmd:"get_group_self_member_info",interval:5,count:20},{cmd:"modify_group_base_info",interval:1,count:8},{cmd:"get_pendency",interval:1,count:15},{cmd:"set_group_attr",interval:5,count:10},{cmd:"modify_group_attr",interval:5,count:10},{cmd:"delete_group_attr",interval:5,count:10},{cmd:"clear_group_attr",interval:5,count:10},{cmd:"get_group_attr",interval:5,count:20},{cmd:"update_group_counter",interval:5,count:20},{cmd:"get_group_counter",interval:5,count:20},{cmd:"get_topic",interval:1,count:10},{cmd:"read_all_unread_msg",interval:1,count:1},{cmd:"query",interval:5,count:20}],KI="im_sdk_config_mgr.fetch_config",uI="im_sdk_config_mgr.push_configv2",Xc="cloud-config",$c=2996,va=new class{init(s){this.core=s}};function bg(s){return pA(this,void 0,void 0,function*(){const{sdkAppId:n}=va.core.store.get("instance")||{},g=va.core.helper.generateProtocolData({servcmd:KI,data:{uint32_sdkappid:n,uint64_version:s}}),u=`${g.head.seq}${KI}`;return va.core.channel.sendPacket(g,{requestId:u})})}var ys=new class{constructor(){this._core=null,this._expirationTime=0,this._version=0,this._isFetching=!1,this._cmdFrequencyLimitMap=new Map,this._methodCallFrequencyMap=new Map}install(s){this._core=s;const{notificationCenter:n,InnerEvent:g,helper:u,constants:{WORKFLOW_NAME:E,WORKFLOW_STEP:m},channel:D}=s;n.subscribeInnerEvent(uI,this._handlePushedConfig,this),u.registerWorkflowStep(E.SYNC_SERVER_INFO_AFTER_LOGIN,m.CLOUD_CONFIG_SYNC,this._handleLoginSuccess,this),n.subscribeInnerEvent(g.LOGOUT,this._reset,this),n.subscribeInnerEvent(g.DESTROY,this._dispose,this),u.registerExperimentalAPI("getServerConfig",this),this._updateCmdFreqLimitMap(Zc),D.registerBeforeSendInterceptor(this.checkMethodCallOverLimit,this)}getServerConfig(s){return pA(this,void 0,void 0,function*(){var n;const g={code:0,data:""};return s&&(g.data=((n=this._core.store.get("cloudConfig"))===null||n===void 0?void 0:n[s])||""),g})}checkMethodCallOverLimit(s){if(!this._cmdFrequencyLimitMap.has(s))return;if(!this._methodCallFrequencyMap.has(s))return void this._methodCallFrequencyMap.set(s,{startTime:Date.now(),methodCallCounter:1});const{count:n,interval:g}=this._cmdFrequencyLimitMap.get(s);let{startTime:u,methodCallCounter:E}=this._methodCallFrequencyMap.get(s);if(Date.now()-u>1e3*g)this._methodCallFrequencyMap.set(s,{startTime:Date.now(),methodCallCounter:1});else if(E+=1,this._methodCallFrequencyMap.set(s,{startTime:u,methodCallCounter:E}),E>n)throw new this._core.helper.ChatError({code:$c,replacement1:s})}_handlePushedConfig(s){return pA(this,void 0,void 0,function*(){const{ssoLog:n,utils:{safeStringify:g}}=this._core;n.info("_handlePushedConfig",g(s)),yield this._updateCloudConfig(s)})}_handleLoginSuccess(){return pA(this,void 0,void 0,function*(){const{ssoLog:s,utils:{safeStringify:n}}=this._core;try{if(this._canFetch()){const g=yield bg(this._version);s.info("_fetchCloudConfigIfLogin",n(g)),yield this._updateCloudConfig(g)}this._core.helper.taskScheduler.addTask({id:Xc,intervalMs:1e3,callback:this._fetchCloudConfigIfReady,context:this})}catch(g){s.debug("_fetchCloudConfigIfLogin",n(g))}})}_fetchCloudConfigIfReady(){return pA(this,void 0,void 0,function*(){const{ssoLog:s,utils:{safeStringify:n}}=this._core;if(this._canFetch())try{const g=yield bg(this._version);s.info("_fetchCloudConfigIfReady",n(g)),yield this._updateCloudConfig(g)}catch(g){s.error("_fetchCloudConfigIfReady",n(g))}})}_updateCloudConfig(s){return pA(this,void 0,void 0,function*(){const n=this._parseCloudConfig(s);n&&(this._core.store.set("cloudConfig",n),yield this._parseCmdFreqLimit(),this._core.notificationCenter.emitInnerEvent(this._core.InnerEvent.CLOUD_CONFIG_UPDATE,n),this._core.notificationCenter.emitOuterEvent(this._core.OuterEvent.SERVER_CONFIG_UPDATED,{name:this._core.OuterEvent.SERVER_CONFIG_UPDATED,data:{config:n}}))})}_canFetch(){const{isLoggedIn:s}=this._core.store.get("login")||{};return s&&!this._isFetching&&Date.now()>=this._expirationTime}_parseCloudConfig(s){const{int32_error_code:n,str_error_message:g,str_json_config:u,uint32_expired_time:E,uint32_sdkappid:m,uint64_version:D}=s;let M=null;if(n===0){if(this._version!==D)try{M=JSON.parse(u),this._version=D}catch{}this._expirationTime=Date.now()+1e3*E}else this._expirationTime=n===void 0?Date.now()+36e5:Date.now()+12e4;return M}_parseCmdFreqLimit(){return pA(this,void 0,void 0,function*(){var s;let n=(s=yield this.getServerConfig("cmd_frequency_limit"))===null||s===void 0?void 0:s.data;const{isEmpty:g}=this._core.utils;if(!g(n))try{n=JSON.parse(n),this._updateCmdFreqLimitMap(n)}catch(u){console.warn(u)}})}_updateCmdFreqLimitMap(s){s.forEach(n=>{this._cmdFrequencyLimitMap.set(n.cmd,{interval:n.interval,count:n.count})})}_reset(){this._core.helper.taskScheduler.removeTask(Xc),this._core.store.clear("cloudConfig"),this._updateCmdFreqLimitMap(Zc),this._methodCallFrequencyMap.clear(),this._expirationTime=0,this._version=0,this._isFetching=!1}_dispose(){const{notificationCenter:s,InnerEvent:n}=this._core;s.unSubscribeInnerEvent(uI,this._handlePushedConfig,this),s.unSubscribeInnerEvent(n.LOGOUT,this._reset,this),s.unSubscribeInnerEvent(n.DESTROY,this._dispose,this),this._reset()}};class Kn{constructor(n=0,g=0){this.high=n,this.low=g}equal(n){return n!==null&&this.low===n.low&&this.high===n.high}toString(){const n=Number(this.high).toString(16);let g=Number(this.low).toString(16);if(g.length<8){let u=8-g.length;for(;u;)g=`0${g}`,u--}return n+g}}const vc={SEARCH_GRP_SNS:new Kn(0,Math.pow(2,1)).toString(),AV_HISTORY_MSG:new Kn(0,Math.pow(2,2)).toString(),GRP_COMMUNITY:new Kn(0,Math.pow(2,3)).toString(),MSG_TO_SPECIFIED_GRP_MBR:new Kn(0,Math.pow(2,4)).toString(),AV_MBR_LIST:new Kn(0,Math.pow(2,6)).toString(),USER_STATUS:new Kn(0,Math.pow(2,7)).toString(),CONV_MARK:new Kn(0,Math.pow(2,9)).toString(),CONV_GROUP:new Kn(0,Math.pow(2,10)).toString(),AV_BAN_MBR:new Kn(0,Math.pow(2,11)).toString(),MSG_EXT:new Kn(0,Math.pow(2,13)).toString(),GRP_COUNTER:new Kn(0,Math.pow(2,15)).toString(),PLUGIN_TRANSLATE:new Kn(Math.pow(2,6)).toString(),PLUGIN_VOICE_TO_TEXT:new Kn(Math.pow(2,7)).toString(),PLUGIN_CS:new Kn(Math.pow(2,8)).toString(),PLUGIN_PUSH:new Kn(Math.pow(2,9)).toString(),PLUGIN_BOT:new Kn(Math.pow(2,10)).toString(),MSG_REACTION:new Kn(Math.pow(2,16)).toString(),FOLLOW:new Kn(Math.pow(2,20)).toString()},jI="CommercialConfig",WI="commercial-config";var ME=new class{constructor(){this._core=null,this._expirationTime=0,this._isFetching=!1,this._featureMap=new Map,this._methodKeyMap=new Map,this._purchaseBits="0"}install(s){this._core=s;const{helper:n,notificationCenter:g,constants:{WORKFLOW_NAME:u,WORKFLOW_STEP:E,InnerEvent:m}}=s;g.subscribeInnerEvent(m.COMMERCIAL_CONFIG_PUSH,this._handlePushedConfig,this),g.subscribeInnerEvent(m.LOGOUT,this._handleLogout,this),g.subscribeInnerEvent(m.DESTROY,this._dispose,this),n.registerWorkflowStep(u.SYNC_SERVER_INFO_AFTER_LOGIN,E.COMMERCIAL_CONFIG_UPDATE,this._syncCommercialConfig,this),s.helper.registerExperimentalAPI("isCommercialAbilityEnabled",this),s.helper.registerExperimentalAPI("queryCommercialAbility",this)}isCommercialAbilityEnabled(s){return pA(this,void 0,void 0,function*(){const n=parseInt(s,10).toString(2),{length:g}=n;let u,E=!0;for(let m=g-1,D=0;m>=0;m--,D++)if(n.charAt(m)==="1"&&(u=D<32?new Kn(0,2**D).toString():new Kn(2**(D-32),0).toString(),!this._featureMap.get(u))){E=!1;break}return this._core.ssoLog.debug("isFeatureEnabled",`${jI}.isFeatureEnabled decimalNumber:${s} key:${u} ret:${E}`),{code:0,data:{enabled:E}}})}queryCommercialAbility(){return this._purchaseBits}_fetchAndParseCommercialConfig(){return pA(this,void 0,void 0,function*(){var s;const{ssoLog:n,utils:{safeStringify:g},common:{buildAndSendPacket:u}}=this._core;try{this._isFetching=!0;const E=yield u({servcmd:"im_sdk_config_mgr.fetch_imsdk_purchase_bitsv2",data:{uint32_sdkappid:(s=this._core.store.get("instance"))===null||s===void 0?void 0:s.sdkAppId}});E&&(this._parseCommercialConfig(E),this._core.store.set("commercialConfig",this._methodKeyMap))}catch(E){n.error("_fetchAndParseCommercialConfig",g(E))}finally{this._isFetching=!1}})}_syncCommercialConfig(s){return pA(this,void 0,void 0,function*(){const{purchaseBits:n}=s?.data||{};n&&(this._parsePurchaseBits(n),this._core.store.set("commercialConfig",this._methodKeyMap)),this._canFetch()&&(yield this._fetchAndParseCommercialConfig()),this._core.helper.taskScheduler.addTask({id:WI,intervalMs:1e3,callback:this._fetchCommercialConfigIfReady,context:this})})}_canFetch(){var s;const n=(s=this._core.store.get("login"))===null||s===void 0?void 0:s.isLoggedIn,g=Date.now()>=this._expirationTime;return n&&!this._isFetching&&g}_handlePushedConfig(s){s?.body&&(this._parseCommercialConfig(s.body),this._core.store.set("commercialConfig",this._methodKeyMap))}_fetchCommercialConfigIfReady(){return pA(this,void 0,void 0,function*(){this._canFetch()&&(yield this._fetchAndParseCommercialConfig())})}_parseCommercialConfig(s){const{ssoLog:n}=this._core;if(typeof s!="object")return;const{int32_error_code:g,str_error_message:u,str_purchase_bits:E,uint32_expired_time:m}=s;g===0?(this._parsePurchaseBits(E),this._expirationTime=Date.now()+1e3*m):g===void 0?(n.warn("_parseCommercialConfig",`${jI}._parseCommercialConfig failed. Invalid message format:`,s),this._expirationTime=Date.now()+36e5):(n.warn("_parseCommercialConfig",`${jI}._parseCommercialConfig errorCode:${g} errorMessage:${u}`),this._expirationTime=Date.now()+12e4)}_isValidPurchaseBits(s){return s&&typeof s=="string"&&s.length>=1&&s.length<=64&&/[01]{1,64}/.test(s)}_parsePurchaseBits(s){const{ssoLog:n,utils:{safeStringify:g}}=this._core;if(this._isValidPurchaseBits(s)){this._purchaseBits=s,this._featureMap.clear(),this._methodKeyMap.clear();let u=null;for(let E=s.length-1,m=0;E>=0;E--,m++)if(u=m<32?new Kn(0,2**m).toString():new Kn(2**(m-32),0).toString(),s[E]==="1"){this._featureMap.set(u,!0);const D=this._getKeyByValue(vc,u);D&&this._methodKeyMap.set(D,!0)}else{this._featureMap.set(u,!1);const D=this._getKeyByValue(vc,u);D&&this._methodKeyMap.set(D,!1)}}else n.warn("_parsePurchaseBits",`${jI}.parsePurchaseBits invalid purchases:${g(s)}`)}_getKeyByValue(s,n){const g=Object.entries(s).find(([u,E])=>E===n);return g?g[0]:void 0}_handleLogout(){this._reset()}_dispose(){this._reset(),this._core.notificationCenter.unSubscribeInnerEvent(this._core.InnerEvent.COMMERCIAL_CONFIG_PUSH,this._handlePushedConfig,this),this._core.notificationCenter.unSubscribeInnerEvent(this._core.InnerEvent.LOGOUT,this._reset,this),this._core.notificationCenter.unSubscribeInnerEvent(this._core.InnerEvent.DESTROY,this._dispose,this)}_reset(){this._core.helper.taskScheduler.removeTask(WI),this._core.store.set("commercialConfig",{}),this._expirationTime=0,this._isFetching=!1,this._featureMap.clear(),this._purchaseBits="0"}},nh=new class{constructor(){this._core=null,this._serverOverloadInfoMap=new Map}install(s){this._core=s;const{notificationCenter:n,InnerEvent:g,channel:u}=this._core;n.subscribeInnerEvent(g.OVERLOAD_PUSH,this._handleOverLoadPush,this),n.subscribeInnerEvent(g.LOGOUT,this._reset,this),n.subscribeInnerEvent(g.DESTROY,this._dispose,this),u.registerBeforeSendInterceptor(this.checkServerOverload,this)}checkServerOverload(s){if(!this._serverOverloadInfoMap.has(s))return;const{overloadStartTimestamp:n,delaySeconds:g}=this._serverOverloadInfoMap.get(s);if(Date.now()-n<=1e3*g)throw new this._core.helper.ChatError({functionName:s,message:"service is busy, please try again later"});this._serverOverloadInfoMap.delete(s)}_handleOverLoadPush(s){const{OverLoadServCmd:n,DelaySecs:g}=s;this._serverOverloadInfoMap.set(n,{overloadStartTimestamp:Date.now(),delaySeconds:g})}_reset(){this._serverOverloadInfoMap.clear()}_dispose(){this._reset();const{notificationCenter:s,InnerEvent:n}=this._core;s.unSubscribeInnerEvent(n.OVERLOAD_PUSH,this._handleOverLoadPush,this),s.unSubscribeInnerEvent(n.LOGOUT,this._reset,this),s.unSubscribeInnerEvent(n.DESTROY,this._dispose,this)}},lC=new class{constructor(){this.name="ConfigCenter"}install(s){va.init(s),ys.install(s),ME.install(s),nh.install(s)}},rh=new class{constructor(){this.name="ErrorMessage",this._core=null}install(s){return pA(this,void 0,void 0,function*(){if(this._core=s,this._canFetch()){const n=yield this._fetchErrorMessage();if(!n)return;const g=this._parseResponse(n);this._saveErrorMessage(g)}})}_canFetch(){const s=this._core.store.getStorage("errorMessage");return!s||this._isExpired(s)}_saveErrorMessage(s){this._core.store.setStorage("errorMessage",{errorMessage:s,errorMessageSavedTime:new Date().getTime()})}_fetchErrorMessage(){return pA(this,void 0,void 0,function*(){try{return yield this._core.helper.httpRequest({method:"GET",url:"https://web.sdk.qcloud.com/im/download/error-message/v3/0.0.6/tim-error-message.txt"})}catch(s){console.error(s)}})}_isExpired(s){if(!s)return!0;const{errorMessageSavedTime:n}=s;return n&&new Date().getTime()-n>=6048e5}_parseResponse(s){if(typeof s=="string"){const n=s.split(`; +`),g={},u=new RegExp(/'/g);for(let E=0;E{var JA,ne,se;const _i=function(Ti,Lt){const{From_Account:Ni,From_AccountHeadurl:cs,From_AccountNick:Se,IsNeedReadReceipt:mt,MsgBody:UA,MsgClientTime:oi,MsgRandom:_s,MsgSeq:Gi,MsgTimeStamp:Fr,SendMsgControl:xi,SupportMessageExtension:gr,To_Account:_t,TinyId:Tt,MsgCheckResult:$u,CloudCustomData:ln,IsPeerRead:Bo,MsgFlagBits:ll,MsgVersion:wC,EventArray:wr}=Ti;return{from:Ni,avatar:cs,nick:Se,needReadReceipt:mt===1,readReceiptSentByPeer:Bo,clientTime:oi,messageFlagBits:ll,random:_s,sequence:Gi,time:Fr,messageControlInfo:xi,isSupportExtension:gr,to:_t,tinyID:Tt,checkResult:$u,cloudCustomData:ln,messageVersion:wC,eventArray:wr,elements:Lt.message.messageHelper.parseServerPushMessageElement(UA)}}(OA,xA);if(!((se=(ne=(JA=OA?.EventArray)===null||JA===void 0?void 0:JA[0])===null||ne===void 0?void 0:ne.hasOwnProperty)===null||se===void 0)&&se.call(ne,"C2cNotifyMsgArray"))SA.push(...function(Ti){var Lt;const Ni=[];return(Lt=Ti.EventArray)===null||Lt===void 0||Lt.forEach(cs=>{var Se,mt;const{C2cNotifyMsgArray:UA}=cs,oi=(mt=(Se=UA?.[0])===null||Se===void 0?void 0:Se.WithdrawC2cMsgNotify)===null||mt===void 0?void 0:mt.C2cWithdrawInfoArray;Array.isArray(oi)&&Ni.push(...oi)}),Ni}(OA));else{const Ti=xA.message.messageFactory.createMessage(Object.assign(Object.assign({},_i),{conversationType:"C2C",flow:"in"})),{elements:Lt}=_i;Ti.setElement(Lt),LA.push(Ti)}}),{unreadMessageList:LA,revokedMessageList:SA}}(T.MsgList,n);return{syncFlag:T?.SyncFlag,unreadMessageList:EA,revokedMessageList:RA,unreadCountList:P,overflowUnreadCountList:W,cookie:T?.Cookie,groupTipList:iA}}catch(T){console.warn(T)}})}var kg,no;(function(s){s[s.START_SYNC=0]="START_SYNC",s[s.SYNCING=1]="SYNCING",s[s.SYNC_COMPLETE=2]="SYNC_COMPLETE"})(kg||(kg={})),function(s){s[s.LOGIN_SUCCESS=0]="LOGIN_SUCCESS",s[s.NEW_MESSAGE_RECEIVED=1]="NEW_MESSAGE_RECEIVED"}(no||(no={}));var IC=new class{constructor(){this.name="UnreadMessageSynchronizer",this._unreadDBMessageMap=new Map,this._cookie="",this._localConversationIDListBeforeDisconnect=[]}install(s){this._core=s;const{constants:n}=s;s.helper.registerWorkflowStep(n.WORKFLOW_NAME.SYNC_SERVER_INFO_AFTER_RE_ONLINE,n.WORKFLOW_STEP.UNREAD_MESSAGE_SYNC,this._syncUnreadDBMessageAfterReOnline,this),s.helper.registerWorkflowStep(n.WORKFLOW_NAME.RECEIVE_C2C_NEW_MESSAGE,n.WORKFLOW_STEP.UNREAD_MESSAGE_SYNC,this._syncUnreadDBMessageAfterNewMessageReceived,this),s.helper.registerWorkflowStep(n.WORKFLOW_NAME.SYNC_SERVER_INFO_AFTER_LOGIN,n.WORKFLOW_STEP.UNREAD_MESSAGE_SYNC,this._syncUnreadDBMessageAfterLogin,this),s.notificationCenter.subscribeInnerEvent(s.InnerEvent.SOCKET_DISCONNECTED,this._handleDisconnect,this),s.notificationCenter.subscribeInnerEvent(s.InnerEvent.LOGOUT,this._reset,this),s.notificationCenter.subscribeInnerEvent(s.InnerEvent.DESTROY,this._dispose,this)}_syncUnreadMessage(s){return pA(this,void 0,void 0,function*(){const{isAfterReOnline:n=!1,isAfterNewMessageReceived:g=!1,isAfterLogin:u=!1}=s||{};let E=kg.START_SYNC;const m=[],D=[],M=[],T=[];for(;this._canContinueSync({cookie:this._cookie,syncFlag:E});){const P=yield this._fetchUnreadDBMessage({cookie:this._cookie,syncFlag:E,syncTriggerEvent:g?no.NEW_MESSAGE_RECEIVED:no.LOGIN_SUCCESS});if(!P)break;const{unreadMessageList:W=[],revokedMessageList:iA=[],overflowUnreadCountList:EA,unreadCountList:RA,groupTipList:kA}=P;if(this._cookie=P?.cookie||"",E=P?.syncFlag,this._parseAndSaveUnreadMessageList(W),M.push(...iA),this._updateConversationUnreadOptions({unreadCountList:RA,overflowUnreadCountList:EA,conversationUpdateFieldList:m}),Array.isArray(kA)&&D.push(...kA),n){const{messages:xA}=this._handleNewMessageList(W);T.push(...xA)}}return n?{conversationUpdateFieldList:m,revokedMessageList:M,unreadMessageMap:this._unreadDBMessageMap,groupTipList:D,messages:T,isUnreadC2CMessage:!0}:{conversationUpdateFieldList:m,isInstantMessage:!u,isUnreadC2CMessage:!0,revokedMessageList:M,unreadMessageMap:this._unreadDBMessageMap,groupTipList:D}})}_syncUnreadDBMessageAfterLogin(){return pA(this,void 0,void 0,function*(){return this._cookie="",this._syncUnreadMessage({isAfterLogin:!0})})}_syncUnreadDBMessageAfterNewMessageReceived(s){return pA(this,void 0,void 0,function*(){if(s.data.Flag===1)return this._syncUnreadMessage({isAfterNewMessageReceived:!0})})}_updateConversationUnreadOptions(s){const{unreadCountList:n,overflowUnreadCountList:g,conversationUpdateFieldList:u}=s,{constants:{OuterConstant:{CONV_C2C:E,CONV_SYSTEM:m}}}=this._core;n?.forEach(D=>{const{From_Account:M,UnreadCount:T}=D;if(M!==m){const P=u.find(({conversationID:W})=>W===`${E}${M}`);P?P.unreadCount=T:u.push({conversationID:`${E}${M}`,unreadCount:T,type:E})}}),g?.forEach(D=>{const{From_Account:M,LastMsgTime:T}=D;M!==m&&(u.find(({conversationID:P})=>P===`${E}${M}`)||u.push({conversationID:`${E}${M}`,type:E,lastMsgTime:T}))})}_syncUnreadDBMessageAfterReOnline(){return pA(this,void 0,void 0,function*(){return this._syncUnreadMessage({isAfterReOnline:!0})})}_updateMessageProfile(s){var n;const{messageDataHandler:g}=this._core.message||{},u=(n=this._core.store.get("login"))===null||n===void 0?void 0:n.userId,{from:E,nick:m,avatar:D,conversationID:M=""}=s;if(E!==u){const T=g.getLatestMsgSentByPeer(M);if(T){const{nick:P,avatar:W}=T;m&&D?m===P&&D===W||g.updateNickAndAvatarOfSentMessage({conversationID:M,latestNick:m,latestAvatar:D,isSentByMe:!1}):(s.nick=P,s.avatar=W)}}else{const T=g.getLatestMsgSentByMe(M);!T||m===T.nick&&D===T.avatar||g.updateNickAndAvatarOfSentMessage({conversationID:M,latestNick:m,latestAvatar:D,isSentByMe:!0})}}_handleNewMessageList(s){const{messageDataHandler:n}=this._core.message||{},g=new Map,u=[];return s.forEach(E=>{this._updateMessageProfile(E);let m=E.isModified===1;if(n.isMessageSentByCurrentInstance(E)?E.isModified=m:m=!1,E.isOnlineMessage())E._onlineOnlyFlag=!0,n.isMessageSentByCurrentInstance(E)||u.push(E);else if(this._shouldStoreUnreadMessage(E)){if(n.storeConversationMessage(E)){const{conversationID:D,conversationType:M,conversationSubType:T,flow:P,_isExcludedFromUnreadCount:W,_isExcludedFromLastMessage:iA}=E,EA=iA?"":E;g.has(D)?(g.get(D).lastMessage=EA,P==="in"&&(W||g.get(D).unreadCount++)):g.set(D,{conversationID:D,type:M,subType:T,unreadCount:W||P!=="in"?0:1,lastMessage:EA})}n.isMessageSentByCurrentInstance(E)&&!m||u.push(E)}}),{messages:u,conversationOptions:g}}_shouldStoreUnreadMessage(s){var n;const{conversationID:g}=s,{message:u,appStore:E,utils:{isEmpty:m}}=this._core||{},D=Array.from(((n=E.conversationStore.getConversationMap())===null||n===void 0?void 0:n.keys())||[]),M=this._getLocalLastMessageTime(g);return!u.messageDataHandler.isInMessageList(s)&&D.includes(g)&&this._localConversationIDListBeforeDisconnect.includes(g)&&!m(M)}_fetchUnreadDBMessage(s){return pA(this,void 0,void 0,function*(){const{ssoLog:n,utils:{safeStringify:g}}=this._core;try{n.debug("_fetchUnreadDBMessage",`unread-message-synchronizer._fetchUnreadDBMessage options:${g(s)}`);const E=yield Al(s,this._core);if(!E)return null;const{syncFlag:m,unreadMessageList:D,revokedMessageList:M,cookie:T,unreadCountList:P,overflowUnreadCountList:W,groupTipList:iA}=E;return this._parseAndSaveUnreadMessageList(D),{syncFlag:m,cookie:T,unreadMessageList:D,revokedMessageList:M,unreadCountList:P,overflowUnreadCountList:W,groupTipList:iA}}catch(u){console.log(u)}})}_canContinueSync({cookie:s,syncFlag:n}){var g;return n===kg.START_SYNC||n===kg.SYNCING&&!(!((g=this._core)===null||g===void 0)&&g.helper.isEmpty(s))}_parseAndSaveUnreadMessageList(s){s.forEach(n=>{const{ID:g}=n;this._unreadDBMessageMap.set(g,n)})}_handleDisconnect(){var s;const{appStore:n}=this._core;this._localConversationIDListBeforeDisconnect=Array.from(((s=n.conversationStore.getConversationMap())===null||s===void 0?void 0:s.keys())||[])}_getLocalLastMessageTime(s){const{message:n}=this._core,g=n.messageDataHandler.getLocalMessageList(s),u=g[g.length-1];return u?.time}_reset(){this._cookie="",this._unreadDBMessageMap.clear()}_dispose(){var s,n;(s=this._core)===null||s===void 0||s.notificationCenter.unSubscribeInnerEvent(this._core.InnerEvent.LOGOUT,this._reset,this),(n=this._core)===null||n===void 0||n.notificationCenter.unSubscribeInnerEvent(this._core.InnerEvent.DESTROY,this._dispose,this),this._reset()}},vE=new class{init(s){var n;this._core=s,this._visibilityChangeHandler=this._handleVisibilityChange.bind(this),s.notificationCenter.subscribeInnerEvent(s.InnerEvent.DESTROY,this._dispose,this),document?.addEventListener("visibilitychange",this._visibilityChangeHandler),(n=this._core)===null||n===void 0||n.store.set("activityMonitor",{isActive:!0})}_handleVisibilityChange(){var s,n;const g=document?.visibilityState==="visible";(s=this._core)===null||s===void 0||s.store.set("activityMonitor",{isActive:g}),(n=this._core)===null||n===void 0||n.notificationCenter.emitInnerEvent("activityStatusChange",{isActive:g})}_reset(){var s;(s=this._core)===null||s===void 0||s.store.clear("activityMonitor")}_dispose(){document?.removeEventListener("visibilitychange",this._visibilityChangeHandler);const{notificationCenter:s,InnerEvent:n}=this._core;s.unSubscribeInnerEvent(n.DESTROY,this._dispose,this),this._reset()}},RE=new class{init(s){var n;this._core=s,this._bindAppActivityEvent(),s.notificationCenter.subscribeInnerEvent(s.InnerEvent.DESTROY,this._dispose,this),(n=this._core)===null||n===void 0||n.store.set("activityMonitor",{isActive:!0})}_bindAppActivityEvent(){var s,n,g,u,E;const{MINI_APP_NAMESPACE:m,IN_TT_MINI_GAME:D,IN_WX_MINI_GAME:M}=((s=this._core)===null||s===void 0?void 0:s.utils)||{};D||M?((n=m?.onShow)===null||n===void 0||n.call(m,()=>{var T,P;(T=this._core)===null||T===void 0||T.store.set("activityMonitor",{isActive:!0}),(P=this._core)===null||P===void 0||P.notificationCenter.emitInnerEvent("activityStatusChange",{isActive:!0})}),(g=m?.onHide)===null||g===void 0||g.call(m,()=>{var T,P;(T=this._core)===null||T===void 0||T.store.set("activityMonitor",{isActive:!1}),(P=this._core)===null||P===void 0||P.notificationCenter.emitInnerEvent("activityStatusChange",{isActive:!1})})):((u=m?.onAppShow)===null||u===void 0||u.call(m,()=>{var T,P;(T=this._core)===null||T===void 0||T.store.set("activityMonitor",{isActive:!0}),(P=this._core)===null||P===void 0||P.notificationCenter.emitInnerEvent("activityStatusChange",{isActive:!0})}),(E=m?.onAppHide)===null||E===void 0||E.call(m,()=>{var T,P;(T=this._core)===null||T===void 0||T.store.set("activityMonitor",{isActive:!1}),(P=this._core)===null||P===void 0||P.notificationCenter.emitInnerEvent("activityStatusChange",{isActive:!1})}))}_reset(){var s;(s=this._core)===null||s===void 0||s.store.clear("activityMonitor")}_dispose(){const{notificationCenter:s,InnerEvent:n}=this._core;s.unSubscribeInnerEvent(n.DESTROY,this._dispose,this),this._reset()}},Cd=new class{init(s){const{IN_MINI_APP:n,IN_WX_MINI_PLUGIN:g}=s.helper;g||(n?RE.init(s):vE.init(s))}};const wE="none",el="online";var EI=new class{init(s){this._core=s,this._activateNetworkMonitoring(),s.notificationCenter.subscribeInnerEvent(s.InnerEvent.DESTROY,this._dispose,this)}_activateNetworkMonitoring(){return pA(this,void 0,void 0,function*(){navigator.onLine?this._onOnline():this._onOffline(),this._onOnlineCallback=this._onOnline.bind(this),this._onOfflineCallback=this._onOffline.bind(this),window.addEventListener("online",this._onOnlineCallback),window.addEventListener("offline",this._onOfflineCallback)})}_deactivateNetworkMonitoring(){this._onOnlineCallback!==null&&(window.removeEventListener("online",this._onOnlineCallback),this._onOnlineCallback=null),this._onOfflineCallback!==null&&(window.removeEventListener("offline",this._onOfflineCallback),this._onOfflineCallback=null)}_onNetworkStatusChange(s){var n,g;const{isConnected:u,networkType:E}=s;(n=this._core)===null||n===void 0||n.store.set("netWorkMonitor",{isNetworkOnline:u,networkType:E}),(g=this._core)===null||g===void 0||g.notificationCenter.emitInnerEvent("networkStatusChange",{isNetworkOnline:u,networkType:E})}_onOnline(){this._onNetworkStatusChange({isConnected:!0,networkType:el})}_onOffline(){this._onNetworkStatusChange({isConnected:!1,networkType:wE})}_reset(){var s;this._deactivateNetworkMonitoring(),(s=this._core)===null||s===void 0||s.store.clear("netWorkMonitor")}_dispose(){var s,n;(s=this._core)===null||s===void 0||s.notificationCenter.unSubscribeInnerEvent((n=this._core)===null||n===void 0?void 0:n.InnerEvent.DESTROY,this._dispose,this),this._reset()}},Gu=new class{init(s){this._core=s,this._activateNetworkMonitoring(),s.notificationCenter.subscribeInnerEvent(s.InnerEvent.DESTROY,this._dispose,this)}_activateNetworkMonitoring(){return pA(this,void 0,void 0,function*(){try{const{utils:{MINI_APP_NAMESPACE:s}}=this._core;this._mpNetworkStatusCallback=this._onNetworkStatusChange.bind(this),s.onNetworkStatusChange(this._onNetworkStatusChange.bind(this))}catch(s){console.error(s)}})}_deactivateNetworkMonitoring(){if(this._mpNetworkStatusCallback!==null){const{utils:{MINI_APP_NAMESPACE:s}}=this._core;s.offNetworkStatusChange&&s.offNetworkStatusChange(this._mpNetworkStatusCallback),this._mpNetworkStatusCallback=null}}_onNetworkStatusChange(s){var n,g;const{isConnected:u,networkType:E}=s;(n=this._core)===null||n===void 0||n.store.set("netWorkMonitor",{isNetworkOnline:u,networkType:E}),(g=this._core)===null||g===void 0||g.notificationCenter.emitInnerEvent("networkStatusChange",{isNetworkOnline:u,networkType:E})}_reset(){var s;this._deactivateNetworkMonitoring(),(s=this._core)===null||s===void 0||s.store.clear("netWorkMonitor")}_dispose(){var s,n;(s=this._core)===null||s===void 0||s.notificationCenter.unSubscribeInnerEvent((n=this._core)===null||n===void 0?void 0:n.InnerEvent.DESTROY,this._dispose,this),this._reset()}},bu=new class{init(s){const{IN_MINI_APP:n}=s.utils;n?Gu.init(s):EI.init(s)}},uC=new class{constructor(){this.name="SystemStateMonitor"}install(s){Cd.init(s),bu.init(s)}};const vr=new Set(["tui_room_svr.*","callkit_records_svr.*","room_engine_srv.*","room_engine_http_srv.*","room_engine_mic.*","live_engine_srv.*","live_engine_http_srv.*","live_engine_pk.*","trtc_ai_service.*","call_engine_srv.*"]),cg="tui_room_svr.*";var Rc=new class{constructor(){this.name="BusinessCommandTransfer",this._transferredCommands=vr}install(s){this._core=s;const{notificationCenter:n,InnerEvent:g,helper:u}=s;n.subscribeInnerEvent(g.CLOUD_CONFIG_UPDATE,this._onCloudConfigUpdate,this),n.subscribeInnerEvent(g.LOGOUT,this._reset,this),n.subscribeInnerEvent(g.DESTROY,this._dispose,this),n.subscribeInnerEvent("im_open_push.msg_push",n.InnerEventSubType.BUSINESS_COMMAND,this._onServerPushBusinessCommand,this),u.registerExperimentalAPI("sendTRTCCustomData",this,"transferBusinessCommand"),u.registerExperimentalAPI("sendRoomCustomData",this,"transferBusinessCommand")}transferBusinessCommand(s){return pA(this,void 0,void 0,function*(){const n="transferBusinessCommand";try{const{serviceCommand:g=cg}=s||{};if(!this._isValidTransferredCommand(g))throw new this._core.helper.ChatError({code:2995,functionName:n});return{code:0,data:(yield function(E,m){return pA(this,void 0,void 0,function*(){const{helper:D,channel:M}=m,{serviceCommand:T=cg,data:P}=E||{};let W={};try{W=typeof P=="string"?JSON.parse(P):P}catch(RA){console.warn(RA)}const iA=D.generateProtocolData({servcmd:T,data:W}),EA=`${iA.head.seq}${T}`;return M.sendPacket(iA,{requestId:EA,shouldRejectOnError:!1})})}(s,this._core))||{}}}catch(g){throw console.warn(g),new this._core.helper.ChatError({code:g?.errorCode,message:g?.errorInfo,data:{},functionName:n})}})}_onCloudConfigUpdate(s={}){try{if(typeof s.rtc_cmd!="string")return;const n=JSON.parse(s.rtc_cmd);Array.isArray(n)&&(this._transferredCommands=new Set([...this._transferredCommands,...n]))}catch(n){console.log(n)}}_isValidTransferredCommand(s=""){const n=`${s?.split(".")[0]}.*`;return this._transferredCommands.has(n)}_onServerPushBusinessCommand(s){const{OuterEvent:n,notificationCenter:g}=this._core,{MsgContent:u}=s||{},{ROOM_CUSTOM_DATA_RECEIVED:E}=n;g.emitOuterEvent(E,{name:E,data:u})}_reset(){this._transferredCommands=vr}_dispose(){const{notificationCenter:s,InnerEvent:n}=this._core;this._reset(),s.unSubscribeInnerEvent(n.CLOUD_CONFIG_UPDATE,this._onCloudConfigUpdate,this),s.unSubscribeInnerEvent(n.LOGOUT,this._reset,this),s.unSubscribeInnerEvent(n.DESTROY,this._dispose,this),s.unSubscribeInnerEvent("im_open_push.msg_push",s.InnerEventSubType.BUSINESS_COMMAND,this._onServerPushBusinessCommand,this)}};const ku=1,_l=2,hd=3,$r=4,dI=5,_n="TIMCustomElem",EC="C2C",tl="GROUP",Bd="invite",CI="accept",Oa="cancel",dC="reject",Pa="modifyInvitation",ur="signaling",Qd=8010,Lu="signaling-timeout";function Er(s){return s.filter(n=>{if(n.type===_n){const{cloudCustomData:g="",payload:{data:u=""}={}}=n,E=g.match(/"type":"tsignaling"/),m=u.match(/inviteID/),D=u.match(/actionType/);return E||m&&D}return!1})}function wc(s){const{data:n}=s.payload;try{return JSON.parse(n)}catch(g){return console.error(g),null}}function il(s,n){return s.toString(16).padStart(n,"0")}function Lg(s){if(s<0||s>53)throw new Error("Number of digits must be between 0 and 53");if(s<=30)return Math.floor(Math.random()*(1<0;const M=this._core.common.getCurrentUserID();return D.includes(M)}return!0}updateSignaling(s){const n=`${ur}.updateSignaling`,{inviteID:g,inviter:u,inviteeList:E,groupID:m}=s;if(console.log(`${n} inviteID:${g} inviter:${u} groupID:${m}`),m&&this.hasSignaling(g)){const D=E[0],{inviteeList:M}=this._onlineSignalingMap.get(g);M.includes(D)&&(M.splice(M.indexOf(D),1),console.log(`${n} remove ${D}. localInviteeList.length:${M.length}`)),M.length===0&&this.removeSignaling(g)}else this.removeSignaling(g)}setSignalingListenStatus(s){this._isSignalingListening=s}getSignalingListenStatus(){return this._isSignalingListening}_dispose(){var s,n;this._reset(),(s=this._core)===null||s===void 0||s.notificationCenter.unSubscribeInnerEvent(this._core.InnerEvent.DESTROY,this._dispose,this),(n=this._core)===null||n===void 0||n.notificationCenter.unSubscribeInnerEvent(this._core.InnerEvent.LOGOUT,this._reset,this),this._isSignalingListening=!1}_reset(){this._onlineSignalingMap.clear()}},$g=new class{init(s){this._core=s}createInviteSignaling(s){const n=this._generateInviteID(),g=this._createInviteSignalingData(Object.assign(Object.assign({},s),{inviteID:n})),{groupID:u,inviteeList:E}=g,m=u||E[0];return{signaling:this._createSignaling(g,m),signalingData:g,signalingExtensionOptions:this._createSignalingExtensionOptions(s)}}createAcceptSignaling(s){const n=this._createAcceptSignalingData(s),{groupID:g,inviter:u}=n,E=g||u;return{signaling:this._createSignaling(n,E),signalingData:n,signalingExtensionOptions:this._createSignalingExtensionOptions(s)}}createCancelSignaling(s){const n=this._createCancelSignalingData(s),{groupID:g,inviteeList:u}=n,E=g||u[0];return{signaling:this._createSignaling(n,E),signalingData:n,signalingExtensionOptions:this._createSignalingExtensionOptions(s)}}createRejectSignaling(s){const n=this._createRejectSignalingData(s),{groupID:g,inviter:u}=n,E=g||u;return{signaling:this._createSignaling(n,E),signalingData:n,signalingExtensionOptions:this._createSignalingExtensionOptions(s)}}createTimeoutSignaling(s){const{isInviter:n=!1}=s,g=this._createTimeoutSignalingData(s),{groupID:u,inviteeList:E,inviter:m}=g,D=u||(n?E[0]:m);return{signaling:this._createSignaling(g,D),signalingData:g,signalingExtensionOptions:this._createSignalingExtensionOptions(g)}}_createSignalingExtensionOptions(s){var n,g;const{data:u="",onlineUserOnly:E,inviteID:m="",offlinePushInfo:D,actionType:M}=s,T=((g=(n=Oo.getSignaling(m))===null||n===void 0?void 0:n.signaling)===null||g===void 0?void 0:g._onlineOnlyFlag)||!1;return{onlineUserOnly:E||T,offlinePushInfo:D,messageControlInfo:this._createMessageControlInfo(u,M)}}_createMessageControlInfo(s,n){const g=n===dI&&!!s.match(/excludeTimeoutSignalingFromHistoryMessage/),u=!!s.match(/excludeFromHistoryMessage/)||!!s.match(/excludeOriginalSignalingFromHistoryMessage/);return{excludedFromContentModeration:!0,excludedFromUnreadCount:g||u,excludedFromLastMessage:g||u}}_createInviteSignalingData(s){const n=`${ur}._createInviteSignalingData`,{userID:g,timeout:u=0,groupID:E="",inviteeList:m=[]}=s,D=this._core.common.getCurrentUserID(),M=Object.assign(Object.assign({},this._generateBaseSignalData(s)),{actionType:ku,inviter:D,inviteeList:E?m:[g],timeout:u});return console.log(`${n} signalingData:`,M),M}_createAcceptSignalingData(s){const n=`${ur}._createAcceptSignalingData`,{inviteID:g}=s,u=this._core.common.getCurrentUserID(),{inviter:E,groupID:m}=Oo.getSignaling(g),D=Object.assign(Object.assign({},this._generateBaseSignalData(s)),{actionType:hd,groupID:m,inviter:E,inviteeList:[u]});return console.log(`${n} signalingData:`,D),D}_createCancelSignalingData(s){const n=`${ur}._createCancelSignalingData`,{inviteID:g}=s,u=this._core.common.getCurrentUserID(),{inviteeList:E,groupID:m}=Oo.getSignaling(g),D=Object.assign(Object.assign({},this._generateBaseSignalData(s)),{actionType:_l,groupID:m,inviter:u,inviteeList:E});return console.log(`${n} signalingData:`,D),D}_createRejectSignalingData(s){const n=`${ur}._createRejectSignalingData`,{inviteID:g}=s,u=this._core.common.getCurrentUserID(),{inviter:E,groupID:m}=Oo.getSignaling(g),D=Object.assign(Object.assign({},this._generateBaseSignalData(s)),{actionType:$r,groupID:m,inviter:E,inviteeList:[u]});return console.log(`${n} signalingData:`,D),D}_createTimeoutSignalingData(s){const n=`${ur}._createTimeoutSignalingData`,{isInviter:g=!1,inviteID:u}=s,{inviteeList:E,inviter:m}=Oo.getSignaling(u),D=this._core.common.getCurrentUserID(),M=Object.assign(Object.assign({},this._generateBaseSignalData(s)),{actionType:dI,inviter:m,inviteeList:g?E:[D]});return console.log(`${n} signalingData:`,M),M}_createSignaling(s,n){var g,u,E;const{groupID:m=""}=s,D={to:n,conversationType:m?tl:EC,priority:"High",payload:{data:JSON.stringify(s)}};return(E=(u=(g=this._core)===null||g===void 0?void 0:g.message)===null||u===void 0?void 0:u.messageFactory)===null||E===void 0?void 0:E.createCustomMessage(D)}_generateInviteID(){return[il(Lg(32),8),il(Lg(16),4),il(16384|Lg(12),4),il(32768|Lg(14),4),il(Lg(48),12)].join("-")}_generateBaseSignalData(s){const{data:n="",inviteID:g="",groupID:u=""}=s;return{businessID:1,timeout:0,data:n,inviteID:g,groupID:u}}},Za=new class{constructor(){this._isProcessingSignaling=!1}init(s){this._core=s,s.helper.registerApi({apiName:"invite",context:this}),s.helper.registerApi({apiName:"accept",context:this}),s.helper.registerApi({apiName:"cancel",context:this}),s.helper.registerApi({apiName:"reject",context:this}),s.helper.registerApi({apiName:"modifyInvitation",context:this}),s.helper.registerApi({apiName:"getSignalingInfo",context:this}),s.helper.registerApi({apiName:"addSignalingListener",context:this}),s.helper.registerApi({apiName:"removeSignalingListener",context:this}),s.notificationCenter.subscribeInnerEvent(s.InnerEvent.DESTROY,this._dispose,this),s.notificationCenter.subscribeInnerEvent(s.InnerEvent.LOGOUT,this._reset,this)}invite(s){return pA(this,void 0,void 0,function*(){var n;try{this._validateBeforeInvite(s);const{signaling:g,signalingData:u,signalingExtensionOptions:E}=$g.createInviteSignaling(s),m=yield this._sendSignaling(g,E);if(m?.code===0){const{inviteID:D,timeout:M}=u;return Oo.saveSignaling(D,Object.assign(Object.assign({},u),{signaling:g})),M>0&&((n=this._core)===null||n===void 0||n.helper.taskScheduler.addOnceTask({id:`${Lu}-${D}`,intervalMs:1e3*(M+5),callback:this.handleInvitationExpiryTimer.bind(this,D)})),Object.assign(Object.assign({},m),{inviteID:D})}return m}catch(g){throw g}})}accept(s){return pA(this,void 0,void 0,function*(){try{const{inviteID:n}=s;this._validateBeforeAccept(n),this._isProcessingSignaling=!0;const{signaling:g,signalingData:u,signalingExtensionOptions:E}=$g.createAcceptSignaling(s),m=yield this._sendSignaling(g,E);return m?.code===0?(Oo.updateSignaling(u),Object.assign(Object.assign({},m),{inviteID:n})):m}catch(n){throw n}finally{this._isProcessingSignaling=!1}})}cancel(s){return pA(this,void 0,void 0,function*(){try{const{inviteID:n}=s;this._validateBeforeCancel(n),this._isProcessingSignaling=!0;const{signaling:g,signalingExtensionOptions:u}=$g.createCancelSignaling(s),E=yield this._sendSignaling(g,u);return E?.code===0?(Oo.removeSignaling(n),Object.assign(Object.assign({},E),{inviteID:n})):E}catch(n){throw n}finally{this._isProcessingSignaling=!1}})}reject(s){return pA(this,void 0,void 0,function*(){try{const{inviteID:n}=s;this._validateBeforeReject(n),this._isProcessingSignaling=!0;const{signaling:g,signalingExtensionOptions:u}=$g.createRejectSignaling(s),E=yield this._sendSignaling(g,u);return E?.code===0?(Oo.removeSignaling(n),Object.assign(Object.assign({},E),{inviteID:n})):E}catch(n){throw n}finally{this._isProcessingSignaling=!1}})}modifyInvitation(s){return pA(this,void 0,void 0,function*(){var n,g;const{inviteID:u,data:E}=s;let m="";try{this._validateBeforeModifyInvitation(u);const D=Oo.getSignaling(u),{signaling:M}=D,T=Do(D,["signaling"]);m=M.payload.data,T.data=E,M.payload.data=JSON.stringify(T);const P=yield(g=(n=this._core)===null||n===void 0?void 0:n.message.messageAction)===null||g===void 0?void 0:g.modifyMessage(M);return Oo.hasSignaling(u)&&Oo.saveSignaling(u,Object.assign(Object.assign({},T),{signaling:M})),P}catch(D){if(m){const{signaling:M}=Oo.getSignaling(u);M.payload.data=m}throw D}})}getSignalingInfo(s){const{ssoLog:n,utils:{safeStringify:g}}=this._core;if(Er([s]).length===0)return;const u=wc(s),E={businessID:u.businessID||1,inviteID:u.inviteID,groupID:u.groupID||"",inviter:u.inviter||"",inviteeList:u.inviteeList||[],data:u.data||"",actionType:u.actionType||ku,timeout:u.timeout||0};return n.debug(`${ur} getSignalingInfo ${g(E)}`),E}addSignalingListener(s,n,g){var u,E;s===((u=this._core)===null||u===void 0?void 0:u.SignalingEvent.NEW_INVITATION_RECEIVED)&&Oo.setSignalingListenStatus(!0),(E=this._core)===null||E===void 0||E.notificationCenter.subscribeOuterEvent(s,n,g)}removeSignalingListener(s,n,g){var u,E;s===((u=this._core)===null||u===void 0?void 0:u.SignalingEvent.NEW_INVITATION_RECEIVED)&&Oo.setSignalingListenStatus(!1),(E=this._core)===null||E===void 0||E.notificationCenter.unSubscribeOuterEvent(s,n,g)}handleInvitationExpiryTimer(s){const n=Oo.getOnlineSignalingMap(),g=this._core.common.getCurrentUserID();if(!n.has(s))return;const u=n.get(s).inviter===g;this._sendTimeoutNotice({inviteID:s,isInviter:u})}_sendSignaling(s,n){return pA(this,void 0,void 0,function*(){var g,u,E;return(E=(u=(g=this._core)===null||g===void 0?void 0:g.message)===null||u===void 0?void 0:u.messageSender)===null||E===void 0?void 0:E.sendMessage(s,n)})}_sendTimeoutNotice(s){return pA(this,void 0,void 0,function*(){var n,g,u;this._core.ssoLog.debug("_sendTimeoutNotice",`${ur}._sendTimeoutNotice params:${JSON.stringify(s)}`);const{isInviter:E,inviteID:m}=s,{signaling:D,signalingData:M,signalingExtensionOptions:T}=$g.createTimeoutSignaling(s),P=yield this._sendSignaling(D,T);if(P?.code===0){const{data:W,groupID:iA,inviteeList:EA,inviter:RA}=M;(n=this._core)===null||n===void 0||n.notificationCenter.emitOuterEvent((g=this._core)===null||g===void 0?void 0:g.SignalingEvent.INVITATION_TIMEOUT,{name:(u=this._core)===null||u===void 0?void 0:u.SignalingEvent.INVITATION_TIMEOUT,data:{data:W,groupID:iA,inviteID:m,inviteeList:EA,inviter:RA,isSelfTimeout:!0,message:D}}),E?Oo.removeSignaling(m):Oo.updateSignaling(M)}})}_validateInviteId(s,n){if(!Oo.hasSignaling(n))throw new this._core.helper.ChatError({functionName:s,code:Qd})}_validateProcessStatus(s){if(this._isProcessingSignaling)throw new this._core.helper.ChatError({functionName:s,message:"processing other signaling operations"})}_validateBeforeInvite(s){const n=Bd,{userID:g}=s,u=this._core.common.getCurrentUserID();if(g===u)throw new this._core.helper.ChatError({functionName:n,message:`cannot invite yourself, currentUserId:${u}, inviteeId:${g}`})}_validateBeforeAccept(s){const n=CI;this._validateInviteId(n,s),this._validateProcessStatus(n);const g=this._core.common.getCurrentUserID(),{inviteeList:u}=Oo.getSignaling(s);if(!u.includes(g)){const E=`userID:${g} not in inviteeList. inviteID:${s}`;throw new this._core.helper.ChatError({functionName:n,message:E})}}_validateBeforeCancel(s){const n=Oa;this._validateInviteId(n,s),this._validateProcessStatus(n);const g=this._core.common.getCurrentUserID(),{inviter:u}=Oo.getSignaling(s);if(u!==g){const E=`unmatched inviter:${u} and my userID:${g}`;throw new this._core.helper.ChatError({functionName:n,message:E})}}_validateBeforeReject(s){const n=dC;this._validateInviteId(n,s),this._validateProcessStatus(n);const g=this._core.common.getCurrentUserID(),{inviteeList:u}=Oo.getSignaling(s);if(!u.includes(g)){const E=`userID:${g} not in inviteeList. inviteID:${s}`;throw new this._core.helper.ChatError({functionName:n,message:E})}}_validateBeforeModifyInvitation(s){const n=Pa;this._validateInviteId(n,s)}_dispose(){var s,n;this._reset(),(s=this._core)===null||s===void 0||s.notificationCenter.unSubscribeInnerEvent(this._core.InnerEvent.DESTROY,this._dispose,this),(n=this._core)===null||n===void 0||n.notificationCenter.unSubscribeInnerEvent(this._core.InnerEvent.LOGOUT,this._reset,this)}_reset(){this._isProcessingSignaling=!1}},Tl=new class{constructor(){this._actionProcessor=new Map([[ku,this._onNewInvitationReceived.bind(this)],[$r,this._onInviteeRejected.bind(this)],[hd,this._onInviteeAccepted.bind(this)],[_l,this._onInvitationCancelled.bind(this)],[dI,this._onInvitationTimeout.bind(this)]])}init(s){this._core=s,s.notificationCenter.subscribeOuterEvent(s.OuterEvent.MESSAGE_RECEIVED,this._handleMessageReceived,this),s.notificationCenter.subscribeOuterEvent(s.OuterEvent.MESSAGE_MODIFIED,this._handleMessageModified,this),s.notificationCenter.subscribeInnerEvent(s.InnerEvent.DESTROY,this._dispose,this)}handleActionSignaling(s){s.forEach(n=>{const g=wc(n);if(g){const u=this._actionProcessor.get(g.actionType);u?.(g,n)}})}_handleMessageReceived(s){if(!Oo.getSignalingListenStatus())return;const n=Er(s.data);n.length!==0&&this.handleActionSignaling(n)}_handleMessageModified(s){if(!Oo.getSignalingListenStatus())return;const n=Er(s.data);n.length>0&&n.forEach(g=>{const u=wc(g);u&&this._onInvitationModified(u,g)})}_onNewInvitationReceived(s,n){var g,u;const E=`${ur}._onNewInvitationReceived`,{inviteID:m,inviteeList:D,groupID:M}=s,T=this._core.common.getCurrentUserID();if(this._core.ssoLog.debug("_onNewInvitationReceived",`${E} signalingData:${JSON.stringify(s)}}`),M&&!D.includes(T))return;let{timeout:P}=s;const W=Date.now()/1e3-n.time;P>0&&W>0&&P>W&&(P-=W);const iA=Oo.getSignaling(m);iA!==s&&(iA||Oo.saveSignaling(m,Object.assign(Object.assign({},s),{signaling:n})),P>0&&((g=this._core)===null||g===void 0||g.helper.taskScheduler.addOnceTask({id:`${Lu}-${m}`,intervalMs:1e3*P,callback:Za.handleInvitationExpiryTimer.bind(Za,m)})),this._emitEvent({name:(u=this._core)===null||u===void 0?void 0:u.SignalingEvent.NEW_INVITATION_RECEIVED,data:Object.assign(Object.assign({},this._generateBaseEmitData(s)),{inviteeList:D})}))}_onInviteeRejected(s){var n;const g=`${ur}._onInviteeRejected`,{inviteID:u,inviter:E,groupID:m,inviteeList:D}=s,M=Oo.hasSignaling(u);this._core.ssoLog.debug("_onInviteeRejected",`${g} inviteID:${u} hasInviteID:${M} inviter:${E} groupID:${m}`),M&&(Oo.updateSignaling(s),this._emitEvent({name:(n=this._core)===null||n===void 0?void 0:n.SignalingEvent.INVITEE_REJECTED,data:Object.assign(Object.assign({},this._generateBaseEmitData(s)),{invitee:D[0]})}))}_onInviteeAccepted(s){var n;const g=`${ur}._onInviteeAccepted`,{inviteID:u,inviter:E,groupID:m,inviteeList:D}=s,M=Oo.hasSignaling(u);this._core.ssoLog.debug("_onInviteeAccepted",`${g} inviteID:${u} hasInviteID:${M} inviter:${E} groupID:${m}`),M&&(Oo.updateSignaling(s),this._emitEvent({name:(n=this._core)===null||n===void 0?void 0:n.SignalingEvent.INVITEE_ACCEPTED,data:Object.assign(Object.assign({},this._generateBaseEmitData(s)),{invitee:D[0]})}))}_onInvitationCancelled(s){var n;const g=`${ur}._onInvitationCancelled`,{inviteID:u,inviter:E,groupID:m}=s,D=Oo.hasSignaling(u);this._core.ssoLog.debug("_onInvitationCancelled",`${g} inviteID:${u} hasInviteID:${D} inviter:${E} groupID:${m}`),D&&(Oo.removeSignaling(u),this._emitEvent({name:(n=this._core)===null||n===void 0?void 0:n.SignalingEvent.INVITATION_CANCELLED,data:this._generateBaseEmitData(s)}))}_onInvitationTimeout(s){var n;const g=`${ur}._onInvitationTimeout`,{inviteID:u,inviteeList:E}=s,m=Oo.hasSignaling(u);this._core.ssoLog.debug("_onInvitationTimeout",`${g} inviteID:${u} hasInviteID:${m} data:${s.data}`),m&&(Oo.updateSignaling(s),this._emitEvent({name:(n=this._core)===null||n===void 0?void 0:n.SignalingEvent.INVITATION_TIMEOUT,data:Object.assign(Object.assign({},this._generateBaseEmitData(s)),{inviteeList:E,isSelfTimeout:!1})}))}_onInvitationModified(s,n){var g;const u=`${ur}._onInvitationModified`,{inviteID:E,data:m}=s,D=Oo.hasSignaling(E);this._core.ssoLog.debug("_onInvitationModified",`${u} inviteID:${E} data:${m}`),D&&(Oo.saveSignaling(E,Object.assign(Object.assign({},s),{signaling:n})),this._emitEvent({name:(g=this._core)===null||g===void 0?void 0:g.SignalingEvent.INVITATION_MODIFIED,data:{inviteID:E,data:m}}))}_emitEvent(s){var n;(n=this._core)===null||n===void 0||n.notificationCenter.emitOuterEvent(s.name,s)}_generateBaseEmitData(s){const{inviteID:n,inviter:g,groupID:u,data:E}=s;return{inviteID:n,inviter:g,groupID:u,data:E||""}}_dispose(){var s,n,g;(s=this._core)===null||s===void 0||s.notificationCenter.unSubscribeOuterEvent(this._core.OuterEvent.MESSAGE_RECEIVED,this._handleMessageReceived,this),(n=this._core)===null||n===void 0||n.notificationCenter.unSubscribeOuterEvent(this._core.OuterEvent.MESSAGE_MODIFIED,this._handleMessageModified,this),(g=this._core)===null||g===void 0||g.notificationCenter.unSubscribeOuterEvent(this._core.InnerEvent.DESTROY,this._dispose,this)}},Aa=new class{constructor(){this._offlineSignalingMap=new Map}init(s){this._core=s;const{notificationCenter:n,helper:g,constants:{InnerEvent:u,WORKFLOW_STEP:E,WORKFLOW_NAME:m}}=s;n.subscribeInnerEvent(u.DESTROY,this._dispose,this),n.subscribeInnerEvent(u.LOGOUT,this._reset,this),g.registerWorkflowStep(m.SYNC_SERVER_INFO_AFTER_LOGIN,E.SIGNALING_MESSAGE_RECOVER,this._handleC2COfflineMessage,this)}_handleC2COfflineMessage(s){const{result:{unreadMessageMap:n}={}}=s||{};if(!(n?.size!==0&&Oo.getSignalingListenStatus()))return;const g=Er([...n.values()]);if(g.length!==0&&(g.forEach(u=>{this._handleC2CActionType(u)}),this._offlineSignalingMap.size>0)){const u=this._sortOfflineSignalingByTime();Tl.handleActionSignaling(u)}}_handleC2CActionType(s){const n=wc(s);if(!n)return;const{actionType:g}=n;g===ku?this._saveValidOfflineInvite(n,s):this._removeOfflineInvite(n)}_saveValidOfflineInvite(s,n){const{inviteID:g,inviteeList:u=[],timeout:E=0}=s,m=this._core.common.getCurrentUserID();if(!u.includes(m))return;const D=Date.now()/1e3-n.time;E>0&&D>E&&E!==0||this._offlineSignalingMap.set(g,Object.assign(Object.assign({},s),{signalingList:[n]}))}_removeOfflineInvite(s){const{inviteID:n=""}=s;this._offlineSignalingMap.has(n)&&this._offlineSignalingMap.delete(n)}_sortOfflineSignalingByTime(){let s=[];return this._offlineSignalingMap.forEach(n=>{s=[...s,...n.signalingList]}),s.sort((n,g)=>n.time-g.time)}_dispose(){var s,n;this._reset(),(s=this._core)===null||s===void 0||s.notificationCenter.unSubscribeInnerEvent(this._core.InnerEvent.LOGOUT,this._reset,this),(n=this._core)===null||n===void 0||n.notificationCenter.unSubscribeInnerEvent(this._core.InnerEvent.DESTROY,this._dispose,this)}_reset(){this._offlineSignalingMap.clear()}};const ah={invite:{userID:{required:!0,rules:["string"],allowEmpty:!1},data:{required:!1,rules:["string"],allowEmpty:!0},timeout:{required:!1,rules:["number"],allowEmpty:!1},onlineUserOnly:{required:!1,rules:["boolean"],allowEmpty:!1},offlinePushInfo:{required:!1,rules:["object"],allowEmpty:!1}},cancel:{inviteID:{required:!0,rules:["string"],allowEmpty:!1},data:{required:!1,rules:["string"],allowEmpty:!0}},accept:{inviteID:{required:!0,rules:["string"],allowEmpty:!1},data:{required:!1,rules:["string"],allowEmpty:!0}},reject:{inviteID:{required:!0,rules:["string"],allowEmpty:!1},data:{required:!1,rules:["string"],allowEmpty:!0}},modifyInvitation:{inviteID:{required:!0,rules:["string"],allowEmpty:!1},data:{required:!1,rules:["string"],allowEmpty:!0}}},js={invite:!0,cancel:!0,accept:!0,reject:!0,modifyInvitation:!0};var zI=new class{constructor(){this.name="Signaling"}install(s){Za.init(s),Tl.init(s),$g.init(s),Oo.init(s),Aa.init(s),s.helper.registerValidateConfig({auth:js,params:ah})}};const Us=new class{init(s){this.core=s}};function _c(s){let n;const{message:g}=Us.core,{conversationID:u,messageID:E}=s;return n=g.messageDataHandler.getLocalMessageList(u).find(m=>m.ID===E),!n&&(n=g.messageDataHandler.getSparseMessageList(u).find(m=>m.ID===E)),n}function Ac(s){return s.map(n=>{const{from:g,to:u,cloudCustomData:E,avatar:m,nick:D,ID:M,clientSequence:T,clientTime:P,messageRandom:W,messageSequence:iA,time:EA}=n;return{ClientSeq:T,CloudCustomData:E,From_Account:g,From_AccountHeadurl:m,From_AccountNick:D,Id:M,MsgBody:JSON.parse(JSON.stringify(n.transformElementsToServerFormat())),MsgClientTime:P,MsgRandom:W,Random:W,MsgSeq:iA,MsgTimeStamp:EA,ReceiverId:u,SenderId:g,To_Account:u}})}function dr(s){var n;const{From_Account:g,From_AccountHeadurl:u,From_AccountNick:E,GroupId:m,MsgClientTime:D,ClientSeq:M,To_Account:T,MsgTimeStamp:P,TinyId:W,MsgRandom:iA,MsgSeq:EA}=s;return{from:g,avatar:u,nick:E,clientTime:D,time:P,tinyID:W,random:iA,sequence:EA,to:T,groupID:m,clientSequence:M,_elements:(n=s.MsgBody)===null||n===void 0?void 0:n.map(RA=>{const{MsgType:kA}=RA;return Us.core.message.messageFactory.getElementClass(kA).parseServerPushElement(RA)})}}var Vr,Xa;(function(s){s.MSG_TEXT="TIMTextElem",s.MSG_CUSTOM="TIMCustomElem",s.MSG_LOCATION="TIMLocationElem",s.MSG_FACE="TIMFaceElem",s.MSG_STREAM="TIMStreamElem"})(Vr||(Vr={})),function(s){s[s.FORWARD=0]="FORWARD",s[s.BACKWARD=1]="BACKWARD"}(Xa||(Xa={}));const _E="MSG_REACTION",CC="MSG_EXT",gh=0,ro=1,Tc={ZH_CN:"zh (cmn-Hans-CN)",EN_US:"en-US",YUE_HK:"yue-Hant-HK",JA_JP:"ja-JP",ZH_PY:"zh-PY"},Nl="16k_zh",hC="16k_en",BC="16k_yue",Gl="16k_ja",ZI="16k_zh-PY",hI={[Tc.ZH_CN]:Nl,[Tc.EN_US]:hC,[Tc.YUE_HK]:BC,[Tc.JA_JP]:Gl,[Tc.ZH_PY]:ZI},BI=/\.(wav|pcm|ogg-opus|speex|silk|mp3|m4a|aac|amr)/,TE={READ:0,UNREAD:1},bl=1,kl=2,Ug=3;var ec;(function(s){s.IN="in",s.OUT="out"})(ec||(ec={}));const pd=16,NE=17;var Nc;(function(s){s[s.DATA=0]="DATA",s[s.REVOKED=1]="REVOKED"})(Nc||(Nc={}));var XI;(function(s){s[s.NORMAL=0]="NORMAL",s[s.TIMEOUT=1]="TIMEOUT"})(XI||(XI={}));const co="StreamMsg.PushStreamHttp";var GE=new class{constructor(){this._reactionsMap=new Map}init(s){this._core=s;const{helper:n,notificationCenter:g,InnerEvent:{MESSAGE_PUSH:u},InnerEventSubType:{MESSAGE_REACTION_UPDATED:E,MESSAGE_REACTION_UPDATED_SYNC:m}}=s;n.registerApi({apiName:"addMessageReaction",context:this}),n.registerApi({apiName:"removeMessageReaction",context:this}),n.registerApi({apiName:"getMessageReactions",context:this}),n.registerApi({apiName:"getAllUserListOfMessageReaction",context:this}),g.subscribeInnerEvent(u,E,this._handleReactionUpdated,this),g.subscribeInnerEvent(u,m,this._handleReactionSync,this)}addMessageReaction(s,n){return pA(this,void 0,void 0,function*(){const{OuterConstant:g,ssoLog:u,helper:E}=this._core;this._validateMessageReactionBusinessCapability();const{conversationID:m,ID:D,conversationType:M,from:T,to:P,clientSequence:W,random:iA,time:EA,sequence:RA}=s,kA=`conversationID:${m} messageID:${D} reactionID:${n}`;try{return this._recordMessageReactedByMe(D,n),M===g.CONV_C2C?yield function(xA,LA){return pA(this,void 0,void 0,function*(){var SA;const{from:OA,to:JA,clientSequence:ne,random:se,time:_i,reactionID:Ti}=xA,Lt={From_Account:OA,To_Account:JA,MsgKey:`${ne}_${se}_${_i}`,Reaction:Ti,Add_Account:[(SA=LA.store.get("login"))===null||SA===void 0?void 0:SA.userId]};return Us.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.reaction_add",data:Lt})})}({from:T,to:P,clientSequence:W,random:iA,time:EA,reactionID:n},this._core):M===g.CONV_GROUP&&(yield function(xA,LA){return pA(this,void 0,void 0,function*(){var SA;const{to:OA,reactionID:JA,sequence:ne}=xA,se={GroupId:OA,MsgSeq:ne,Reaction:JA,Add_Account:[(SA=LA.store.get("login"))===null||SA===void 0?void 0:SA.userId]};return Us.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.group_reaction_add",data:se})})}({to:P,reactionID:n,sequence:RA},this._core)),{code:0,successLog:{message:kA}}}catch(xA){this._removeMyReactionRecord(D,n);const{errorCode:LA}=xA||{};throw new E.ChatError({functionName:"addMessageReaction",code:LA,moreMessage:kA})}})}removeMessageReaction(s,n){return pA(this,void 0,void 0,function*(){const{OuterConstant:g,helper:u}=this._core;this._validateMessageReactionBusinessCapability();const{conversationID:E,ID:m,conversationType:D,from:M,to:T,clientSequence:P,random:W,time:iA,sequence:EA}=s,RA=`conversationID:${E} messageID:${m} reactionID:${n}`;try{return this._removeMyReactionRecord(m,n),D===g.CONV_C2C?yield function(kA,xA){return pA(this,void 0,void 0,function*(){var LA;const{from:SA,to:OA,clientSequence:JA,random:ne,time:se,reactionID:_i}=kA,Ti={From_Account:SA,To_Account:OA,MsgKey:`${JA}_${ne}_${se}`,Reaction:_i,Del_Account:[(LA=xA.store.get("login"))===null||LA===void 0?void 0:LA.userId]};return Us.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.reaction_del",data:Ti})})}({from:M,to:T,clientSequence:P,random:W,time:iA,reactionID:n},this._core):D===g.CONV_GROUP&&(yield function(kA,xA){return pA(this,void 0,void 0,function*(){var LA;const{to:SA,reactionID:OA,sequence:JA}=kA,ne={GroupId:SA,MsgSeq:JA,Reaction:OA,Del_Account:[(LA=xA.store.get("login"))===null||LA===void 0?void 0:LA.userId]};return Us.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.group_reaction_del",data:ne},xA)})}({to:T,reactionID:n,sequence:EA},this._core)),{code:0,successLog:{message:RA}}}catch(kA){const{errorCode:xA}=kA||{};throw new u.ChatError({functionName:"removeMessageReaction",code:xA,moreMessage:RA})}})}getAllUserListOfMessageReaction(s){return pA(this,void 0,void 0,function*(){this._validateMessageReactionBusinessCapability();const{message:n,reactionID:g,nextSeq:u=0}=s,E=s.count>100?100:s.count,{conversationID:m}=n,{ssoLog:D,helper:M,constants:T}=this._core;try{let P=null;if(P=m.startsWith(T.OuterConstant.CONV_C2C)?yield function(W){return pA(this,void 0,void 0,function*(){const{message:iA,nextSeq:EA,reactionID:RA,count:kA}=W,{from:xA,to:LA,clientSequence:SA,random:OA,time:JA}=iA,ne={Reaction:RA,NextSeq:EA,Count:kA,From_Account:xA,To_Account:LA,MsgKey:`${SA}_${OA}_${JA}`};return Us.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.reaction_iterate",data:ne})})}({message:n,reactionID:g,nextSeq:u,count:E}):yield function(W){return pA(this,void 0,void 0,function*(){const{message:iA,nextSeq:EA,reactionID:RA,count:kA}=W,{sequence:xA,to:LA}=iA,SA={Reaction:RA,NextSeq:EA,GroupId:LA,Count:kA,MsgSeq:xA};return Us.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.group_reaction_iterate",data:SA})})}({message:n,reactionID:g,nextSeq:u,count:E}),P){const{Reaction_Account:W,NextSeq:iA}=P,EA=yield this._getUserProfileList(W);return{code:0,data:{nextSeq:iA,isCompleted:u===0,userList:EA}}}}catch(P){const{errorCode:W}=P||{};throw new M.ChatError({functionName:"getAllUserListOfMessageReaction",code:W})}})}getMessageReactions(s){return pA(this,void 0,void 0,function*(){const{constants:n}=this._core;this._validateMessageReactionBusinessCapability();const{messageList:g,maxUserCountPerReaction:u=10}=s,E=g[0];let m=null;const D=new Map,{from:M,to:T,conversationType:P}=E,W=this._generateMessageKeyList(g,D);P===n.OuterConstant.CONV_C2C?m=yield function(kA){return pA(this,void 0,void 0,function*(){const{from:xA,to:LA,messageKeyList:SA,maxUserCountPerReaction:OA}=kA,JA={From_Account:xA,To_Account:LA,MsgKeyList:SA,Count:OA};return Us.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.reaction_multi_stat",data:JA})})}({from:M,to:T,messageKeyList:W,maxUserCountPerReaction:u}):P===n.OuterConstant.CONV_GROUP&&(m=yield function(kA){return pA(this,void 0,void 0,function*(){const{groupId:xA,messageSequenceList:LA,maxUserCountPerReaction:SA}=kA,OA={GroupId:xA,MsgSeqList:LA,Count:SA};return Us.core.common.buildAndSendPacket({servcmd:"openim_msg_ext_http_svc.group_reaction_multi_stat",data:OA})})}({groupId:T,messageSequenceList:W,maxUserCountPerReaction:u}));const{Results:iA=[]}=m||{},EA=this._extractUserIDsFromReactionResults(iA),RA=yield this._getUserProfileMap(EA);return{code:0,data:{resultList:iA.map(kA=>{const{ReactionList:xA,MsgSeq:LA,MsgKey:SA}=kA;return{messageID:this._generateMessageID({messageSequence:LA,messageKey:SA,messageIDMap:D}),reactionList:xA.map(OA=>{const{Reaction:JA,Count:ne,Reaction_Account:se,ReactedByMe:_i}=OA;return{reactionID:JA,totalUserCount:ne,partialUserList:this._generatePartialUserInfo({userIDList:se,userProfileMap:RA}),reactedByMyself:_i===1}})}})}}})}dispose(){this._reactionsMap.clear()}_extractUserIDsFromReactionResults(s){const n=[];return s?.forEach(g=>{const{ReactionList:u=[]}=g;u.forEach(E=>{E.Reaction_Account&&n.push(...E.Reaction_Account)})}),n}_getUserProfileList(s){return pA(this,void 0,void 0,function*(){var n;try{const g=yield(n=this._core.user.userProfile)===null||n===void 0?void 0:n.getUserProfile({userIDList:s});return g?g.data:[]}catch{return[]}})}_getUserProfileMap(s){return pA(this,void 0,void 0,function*(){const n=new Map;return(yield this._getUserProfileList(s)).forEach(g=>{const{nick:u,avatar:E,userID:m}=g;n.set(m,{nick:u,avatar:E,userID:m})}),n})}_recordMessageReactedByMe(s,n){const g=`${s}-${n}`;this._reactionsMap.has(g)?this._reactionsMap.get(g).reactedByMe=!0:this._reactionsMap.set(g,{reactedByMe:!0})}_removeMyReactionRecord(s,n){const g=`${s}-${n}`;this._reactionsMap.has(g)&&(this._reactionsMap.get(g).reactedByMe=!1)}_recordMessageReactionInfo(s){const{messageID:n,reactionID:g,reactionInfo:u}=s,E=`${n}-${g}`,m=this._reactionsMap.get(E)||{};this._reactionsMap.set(E,Object.assign(Object.assign({},m),u))}_validateMessageReactionBusinessCapability(){const{helper:s,constants:n}=this._core;if(!s.checkBusinessCapabilityBits(_E))throw new s.ChatError({functionName:"addMessageReaction",code:n.ERROR_CODE.NO_USE,replacement1:"addMessageReaction"})}_handleReactionUpdated(s){const{MsgReactionNotifyList:n}=s,{notificationCenter:g,constants:u}=this._core;n.forEach(E=>pA(this,void 0,void 0,function*(){const{C2CMsgInfo:m,GroupMsgInfo:D,MsgReactionSummary:M}=E,{TinyId:T,MsgClientTime:P,MsgRandom:W}=Object.assign(Object.assign({},m),D),iA=`${T}-${P}-${W}`,EA=this._extractUserIDsFromReactionResults([{ReactionList:M}]),RA=yield this._getUserProfileMap(EA),kA=M.map(xA=>{var LA;const{Reaction:SA,Reaction_Account:OA}=xA,JA=this._generatePartialUserInfo({userIDList:OA,userProfileMap:RA}),ne=OA?xA.Count:0,se=((LA=this._reactionsMap.get(`${iA}-${SA}`))===null||LA===void 0?void 0:LA.reactedByMe)||!1;return this._recordMessageReactionInfo({messageID:iA,reactionID:SA,reactionInfo:{reactionID:SA,totalUserCount:ne,partialUserList:JA}}),{reactionID:SA,totalUserCount:ne,partialUserList:JA,reactedByMyself:se}});g.emitOuterEvent(u.OuterEvent.MESSAGE_REACTIONS_UPDATED,{name:u.OuterEvent.MESSAGE_REACTIONS_UPDATED,data:{messageID:iA,reactionList:kA}})}))}_handleReactionSync(s){var n;const{notificationCenter:g,constants:u}=this._core,{C2CMsgInfo:E={},GroupMsgInfo:m={},Reaction:D,OperateType:M}=s.MsgReactionNotify,{TinyId:T="",MsgClientTime:P=0,MsgRandom:W=0}=Object.assign(Object.assign({},E),m),iA=`${T}-${P}-${W}`,EA=`${iA}-${D}`;if(M===1?this._recordMessageReactedByMe(iA,D):this._removeMyReactionRecord(iA,D),(n=this._reactionsMap.get(EA))===null||n===void 0?void 0:n.reactionID){const RA=this._reactionsMap.get(EA);RA.reactedByMyself=M===1,g.emitOuterEvent(u.OuterEvent.MESSAGE_REACTIONS_UPDATED,{name:u.OuterEvent.MESSAGE_REACTIONS_UPDATED,data:{messageID:iA,reactionList:[RA]}})}}_generatePartialUserInfo({userIDList:s,userProfileMap:n}){const g=[];return s?.forEach(u=>{n.has(u)&&g.push(n.get(u))}),g}_generateMessageID(s){const{messageSequence:n,messageKey:g,messageIDMap:u}=s;return g?u.get(g):u.get(n)}_generateMessageKeyList(s,n){const{constants:g}=this._core,u=s[0],{conversationType:E}=u;let m=[];return E===g.OuterConstant.CONV_C2C?m=s.map(D=>{const{clientSequence:M,random:T,time:P,ID:W}=D,iA=`${M}_${T}_${P}`;return n.set(iA,W),iA}):E===g.OuterConstant.CONV_GROUP&&(m=s.map(D=>{const{ID:M,sequence:T}=D;return n.set(T,M),T})),m}},$a=new class{init(s){this._core=s;const{helper:n,InnerEvent:{MESSAGE_PUSH:g},InnerEventSubType:{C2C_MESSAGE_READ_RECEIPT:u,GROUP_MESSAGE_READ_RECEIPT:E},notificationCenter:m}=s;n.registerApi({apiName:"sendMessageReadReceipt",context:this}),n.registerApi({apiName:"getMessageReadReceiptList",context:this}),n.registerApi({apiName:"getGroupMessageReadMemberList",context:this}),m.subscribeInnerEvent(g,u,this._handleC2CMessageReadReceipt,this),m.subscribeInnerEvent(g,E,this._handleGroupMessageReadReceipt,this)}sendMessageReadReceipt(s){return pA(this,void 0,void 0,function*(){var n;const{common:g,constants:u}=this._core,E=this._filterValidMessageSendByOther(s);if(E.length===0)throw new g.ChatError({code:u.ERROR_CODE.READ_RECEIPT_MSG_LIST_EMPTY});try{const{conversationType:m}=E[0];return m===u.OuterConstant.CONV_C2C?yield function(D){return pA(this,void 0,void 0,function*(){const{common:M,constants:T}=Us.core,P=D[0].conversationID.replace(T.OuterConstant.CONV_C2C,""),W=D.map(EA=>{const{from:RA,to:kA,sequence:xA,random:LA,time:SA,clientTime:OA}=EA;return{From_Account:RA,To_Account:kA,MsgSeq:xA,MsgRandom:LA,MsgTime:SA,MsgClientTime:OA}}),iA={Peer_Account:P,C2CMsgInfo:W};return M.buildAndSendPacket({servcmd:"openim.c2c_msg_read_receipt",data:iA})})}(E):yield function(D){return pA(this,void 0,void 0,function*(){const{common:M,constants:T}=Us.core,P={GroupId:D[0].conversationID.replace(T.OuterConstant.CONV_GROUP,""),MsgSeqList:D.map(W=>({MsgSeq:W.sequence}))};return M.buildAndSendPacket({servcmd:"group_open_http_svc.group_msg_receipt",data:P})})}(E),{code:0,data:{}}}catch(m){const{errorCode:D,errorInfo:M}=m;throw new g.ChatError({code:D,message:M,moreMessage:`peerAccount:${(n=E?.[0])===null||n===void 0?void 0:n.conversationID}`})}})}getMessageReadReceiptList(s){return pA(this,void 0,void 0,function*(){const{common:n,constants:g}=this._core;try{const{conversationType:u}=s[0];if(u===g.OuterConstant.CONV_GROUP){const E=this._filterValidMessageSendByMe(s);if(E?.length>0){const m=yield function(M){return pA(this,void 0,void 0,function*(){const{common:T,constants:P}=Us.core,W={GroupId:M[0].conversationID.replace(P.OuterConstant.CONV_GROUP,""),MsgSeqList:M.map(iA=>({MsgSeq:iA.sequence}))};return T.buildAndSendPacket({servcmd:"group_open_http_svc.get_group_msg_receipt",data:W})})}(E),{GroupMsgReceiptList:D}=m||{};this._updateGroupMessagesReadReceiptInfo({messageList:s,readReceiptList:D})}}return{code:0,data:{messageList:s}}}catch(u){const{errorCode:E,errorInfo:m}=u;throw new n.ChatError({code:E,message:m})}})}getGroupMessageReadMemberList(s){return pA(this,void 0,void 0,function*(){const{constants:n,common:g}=this._core,{message:u,filter:E=TE.READ,cursor:m=""}=s,{conversationID:D,sequence:M,ID:T}=u,P=D.replace(n.OuterConstant.CONV_GROUP,""),W=s.count>=100?100:s.count;try{const iA=yield function(EA){return pA(this,void 0,void 0,function*(){const{sequence:RA,groupID:kA,filter:xA,cursor:LA,count:SA}=EA,OA={MsgSeq:RA,GroupId:kA,Filter:xA,Cursor:LA,Num:SA};return Us.core.common.buildAndSendPacket({servcmd:"group_open_http_svc.get_group_msg_receipt_detail",data:OA})})}({groupID:P,sequence:M,filter:E,cursor:m,count:W});if(iA){const{Cursor:EA,IsFinish:RA,UnreadList:kA,ReadList:xA}=iA,LA={cursor:EA,isCompleted:RA===1,messageID:T,unreadUserIDList:[],readUserIDList:[]};return E===TE.READ?LA.readUserIDList=xA.map(SA=>SA.Read_Account):E===TE.UNREAD&&(LA.unreadUserIDList=kA.map(SA=>SA.Unread_Account)),{code:0,data:LA}}}catch(iA){const{errorCode:EA,errorInfo:RA}=iA;throw new g.ChatError({code:EA,message:RA})}})}_handleC2CMessageReadReceipt(s){const n=[],{constants:g,helper:u}=this._core,{C2cMsgInfo:E,PeerReadTime:m,Peer_Account:D}=s;if(u.isEmpty(E))return;const M=`${g.OuterConstant.CONV_C2C}${D}`;E?.forEach(T=>{const{TinyId:P,MsgClientTime:W,MsgRandom:iA}=T,EA=`${P}-${W}-${iA}`,RA=_c({conversationID:M,messageID:EA});RA&&!RA.readReceiptInfo.isPeerRead&&(RA.readReceiptInfo.isPeerRead=!0,RA.readReceiptInfo.timestamp=m,n.push({userID:D,messageID:EA,isPeerRead:!0,timestamp:m}))}),this._emitReadReceiptEventIfNeed(n)}_updateGroupMessagesReadReceiptInfo(s){const{messageList:n,readReceiptList:g}=s,u=new Map;n.forEach(E=>{u.set(E.sequence,E)}),g?.forEach(E=>{if(E.Code===0){const{MsgSeq:m,ReadNum:D,UnreadNum:M}=E,T=u.get(m);T&&(T.readReceiptInfo.readCount=D,T.readReceiptInfo.unreadCount=M)}})}_handleGroupMessageReadReceipt(s){const n=[],{constants:g}=this._core,{GroupTips:u}=s;u.forEach(E=>{const{MsgBody:{GroupMsgReceiptList:m},GroupInfo:{GroupId:D}}=E,M=`${g.OuterConstant.CONV_GROUP}${D}`;m?.forEach(T=>{const{TinyId:P,MsgClientTime:W,MsgRandom:iA,ReadNum:EA,UnreadNum:RA}=T,kA=`${P}-${W}-${iA}`,xA=_c({conversationID:M,messageID:kA}),LA={groupID:D,messageID:kA,readCount:0,unreadCount:0};xA&&(typeof EA=="number"&&(xA.readReceiptInfo.readCount=EA,LA.readCount=EA),typeof RA=="number"&&(xA.readReceiptInfo.unreadCount=RA,LA.unreadCount=RA),n.push(LA))})}),this._emitReadReceiptEventIfNeed(n)}_emitReadReceiptEventIfNeed(s){const{notificationCenter:n,OuterEvent:g}=this._core;s.length>0&&n.emitOuterEvent(g.MESSAGE_READ_RECEIPT_RECEIVED,{name:g.MESSAGE_READ_RECEIPT_RECEIVED,data:s})}_filterValidMessageSendByOther(s){return this._filterNeedReadReceiptMessages(s).filter(n=>{const{from:g}=n;return g!==this._core.common.getCurrentUserID()})}_filterValidMessageSendByMe(s){const{OuterConstant:n}=this._core.constants;return this._filterNeedReadReceiptMessages(s).filter(g=>{const{from:u,status:E}=g;return u===this._core.common.getCurrentUserID()&&E===n.MessageStatus.SUCCESS})}_filterNeedReadReceiptMessages(s){return s.filter(n=>n.needReadReceipt===!0)}dispose(){const{InnerEvent:{MESSAGE_PUSH:s},InnerEventSubType:{C2C_MESSAGE_READ_RECEIPT:n,GROUP_MESSAGE_READ_RECEIPT:g},notificationCenter:u}=this._core;u.unSubscribeInnerEvent(s,n,this._handleC2CMessageReadReceipt,this),u.unSubscribeInnerEvent(s,g,this._handleGroupMessageReadReceipt,this)}};function $I(s,n,g){return pA(this,void 0,void 0,function*(){const{common:{buildAndSendPacket:u}}=Us.core,{from:E,to:m,clientSequence:D,random:M,time:T}=s;return u({servcmd:"openim_msg_ext_http_svc.set_key_values",data:{From_Account:E,To_Account:m,MsgKey:`${D}_${M}_${T}`,OperateType:g,ExtensionList:n}})})}function Uu(s,n,g){return pA(this,void 0,void 0,function*(){const{common:{buildAndSendPacket:u}}=Us.core,{to:E,sequence:m}=s;return u({servcmd:"openim_msg_ext_http_svc.group_set_key_values",data:{GroupId:E,MsgSeq:m,OperateType:g,ExtensionList:n}})})}var Gc=new class{constructor(){this._messageExtensionsMap=new Map,this._extensionsLatestSequenceMap=new Map,this._completedFetchExtensions=new Set}init(s){this._core=s;const{notificationCenter:n,helper:{registerApi:g},InnerEvent:{MESSAGE_PUSH:u,LOGOUT:E},InnerEventSubType:{MESSAGE_EXTENSIONS_UPDATED:m}}=s;g({apiName:"setMessageExtensions",context:this}),g({apiName:"getMessageExtensions",context:this}),g({apiName:"deleteMessageExtensions",context:this}),n.subscribeInnerEvent(u,m,this._handleMessageExtensionsNotify,this),n.subscribeInnerEvent(E,this.reset,this)}setMessageExtensions(s,n){return pA(this,void 0,void 0,function*(){this._validateMessageExtensionBusinessCapability("setMessageExtensions");const{constants:{OuterConstant:g},ssoLog:u}=this._core,{ID:E,conversationID:m,sequence:D,time:M,conversationType:T}=s;let P=n;n.length>20&&(P=n.slice(0,20),u.warn("setMessageExtensions","the length of extensions cannot exceed 20"));const W=this._generateServerExtensions(s,P),iA=`convID:${m} messageID:${E} sequence:${D} time:${M} count:${P.length}`;try{let EA;if(T===g.CONV_C2C?EA=yield $I(s,W,bl):T===g.CONV_GROUP&&(EA=yield Uu(s,W,bl)),EA){const{resultList:RA,successCount:kA,failureCount:xA}=this._handleModifyMessageExtensions(s,EA);return{code:0,data:{extensions:RA},successLog:{message:`${iA} successCount:${kA} failCount:${xA}`}}}return{code:0,data:{extensions:[]}}}catch(EA){const{errorCode:RA}=EA;throw new this._core.helper.ChatError({functionName:"setMessageExtensions",code:RA,moreMessage:iA})}})}getMessageExtensions(s){return pA(this,void 0,void 0,function*(){const{utils:{isUndefined:n}}=this._core;this._validateMessageExtensionBusinessCapability("getMessageExtensions");const{conversationID:g,ID:u,sequence:E,time:m}=s,D=`convID:${g} messageID:${u} sequence:${E} time:${m}`;try{let M;this._completedFetchExtensions.has(u)&&(M=this._extensionsLatestSequenceMap.get(u));const T=yield this._fetchMessageExtensions(s,M);return n(M)&&T.length>1&&this._completedFetchExtensions.add(u),{code:0,data:{extensions:T},successLog:{message:D}}}catch(M){const{errorCode:T,errorInfo:P=""}=M||{};throw new this._core.common.ChatError({code:T,message:P,moreMessage:D})}})}deleteMessageExtensions(s,n){return pA(this,void 0,void 0,function*(){this._validateMessageExtensionBusinessCapability("deleteMessageExtensions");const{utils:{isEmpty:g},constants:{OuterConstant:u}}=this._core,{conversationType:E,conversationID:m,sequence:D,ID:M,time:T}=s;let P=Ug;const W=[];g(n)||(P=kl,n?.forEach(RA=>{W.push({key:RA,value:"",seq:0})}));const iA=`convID:${m} messageID:${M} sequence:${D} time:${T} operateType:${P}`,EA=this._generateServerExtensions(s,W);try{let RA;if(E===u.CONV_C2C?RA=yield $I(s,EA,P):E===u.CONV_GROUP&&(RA=yield Uu(s,EA,P)),RA){const{resultList:kA,successCount:xA,failureCount:LA}=this._handleModifyMessageExtensions(s,RA);return{code:0,data:{extensions:kA},successLog:{message:`${iA}successCount:${xA} failCount:${LA}`}}}return{code:0,data:{extensions:[]}}}catch(RA){const{errorCode:kA}=RA;throw new this._core.helper.ChatError({functionName:"deleteMessageExtensions",code:kA,moreMessage:iA})}})}reset(){this._messageExtensionsMap.clear(),this._extensionsLatestSequenceMap.clear(),this._completedFetchExtensions.clear()}dispose(){this.reset();const{notificationCenter:s,InnerEvent:{MESSAGE_PUSH:n,LOGOUT:g},InnerEventSubType:{MESSAGE_EXTENSIONS_UPDATED:u}}=this._core;s.unSubscribeInnerEvent(n,u,this._handleMessageExtensionsNotify,this),s.subscribeInnerEvent(g,this.reset,this)}_handleModifyMessageExtensions(s,n){const{ID:g}=s,{Seq:u}=n,E=n.ExtensionList||[],m=[];let D=0,M=0,T=[];return E.forEach(P=>{const{ErrorCode:W,Extension:iA}=P,{Key:EA,Value:RA,Seq:kA}=iA;m.push({code:W,key:EA,value:RA}),W===0?D++:M++,T.push({key:EA,value:RA,seq:kA})}),this._extensionsLatestSequenceMap.set(g,u),T.length>0&&this._updateLocalExtensions(s.ID,T),{resultList:m,successCount:D,failureCount:M}}_updateLocalExtensions(s,n){this._messageExtensionsMap.has(s)||this._messageExtensionsMap.set(s,new Map);const g=this._messageExtensionsMap.get(s);n?.forEach(u=>{const{key:E,seq:m,value:D=""}=u;g?.set(E,{value:D,seq:m})})}_fetchMessageExtensions(s,n){return pA(this,void 0,void 0,function*(){const{constants:{OuterConstant:g},utils:{isEmpty:u}}=this._core;try{let E;const{conversationType:m,ID:D}=s;if(m===g.CONV_C2C?E=yield function(M,T){const{common:{buildAndSendPacket:P}}=Us.core,{from:W,to:iA,clientSequence:EA,random:RA,time:kA}=M;return P({servcmd:"openim_msg_ext_http_svc.get_key_values",data:{From_Account:W,To_Account:iA,MsgKey:`${EA}_${RA}_${kA}`,StartSeq:T}})}(s,n):m===g.CONV_GROUP&&(E=yield function(M,T){const{common:{buildAndSendPacket:P}}=Us.core,{to:W,sequence:iA}=M;return P({servcmd:"openim_msg_ext_http_svc.group_get_key_values",data:{GroupId:W,MsgSeq:iA,StartSeq:T}})}(s,n)),E){const{LatestSeq:M,ClearSeq:T,CompleteFlag:P}=E,W=(E.ExtensionList||[]).map(EA=>({key:EA.Key,value:EA.Value,seq:EA.Seq}));if(this._updateLocalExtensions(D,W),this._clearLocationExtensions(D,T),this._extensionsLatestSequenceMap.set(D,M),P!==1){const EA=W[W.length-1].seq+1;return this._fetchMessageExtensions(s,EA)}const iA=[];if(this._messageExtensionsMap.has(D)){const EA=this._messageExtensionsMap.get(D);EA?.forEach((RA,kA)=>{const{value:xA}=RA;u(xA)||iA.push({key:kA,value:xA})})}return iA}}catch(E){throw E}})}_clearLocationExtensions(s,n){if(!(n<=0)&&this._messageExtensionsMap.has(s)){const g=this._messageExtensionsMap.get(s);g?.forEach((u,E)=>{u.seq<=n&&g.delete(E)})}}_generateServerExtensions(s,n){const{ID:g}=s;if(this._messageExtensionsMap.has(g)){const u=this._messageExtensionsMap.get(g);return n.map(E=>{var m;const{key:D,value:M}=E;let T=0;return u?.has(D)&&(T=(m=u.get(D))===null||m===void 0?void 0:m.seq),{Key:D,Value:M,Seq:T}})}return n.map(u=>({Key:u.key,Value:u.value,Seq:0}))}_validateMessageExtensionBusinessCapability(s){const{helper:n,constants:g}=this._core;if(!n.checkBusinessCapabilityBits(CC))throw new n.ChatError({functionName:s,code:g.ERROR_CODE.NO_USE,replacement1:s})}_handleMessageExtensionsNotify(s){const{SetKVInfo:n,DeleteKVInfo:g,ClearKVInfo:u,MsgOptType:E,TinyId:m,MsgLastSeq:D,ExtensionC2cMsgInfo:M,ExtensionGroupMsgInfo:T}=s?.MsgExtensionNotify||{},P=M||T||{},{MsgClientTime:W,MsgRandom:iA}=P,EA=`${m}-${W}-${iA}`;this._extensionsLatestSequenceMap.set(EA,D),E===bl?this._handleMessageExtensionsUpdated({messageID:EA,updateMessageExtensionsInfo:n}):E===kl?this._handleMessageExtensionsDeleted({messageID:EA,deleteMessageExtensionsInfo:g}):E===Ug&&this._handleMessageExtensionsCleared({messageID:EA,clearMessageExtensionsInfo:u})}_handleMessageExtensionsUpdated(s){const{notificationCenter:n,OuterEvent:g}=this._core,{messageID:u,updateMessageExtensionsInfo:E=[]}=s,m=[];E.forEach(D=>{const{MsgKeyValue:M=[]}=D,T=M.map(P=>(m.push({key:P.Key,value:P.Value}),{key:P.Key,value:P.Value,seq:P.Seq}));this._updateLocalExtensions(u,T)}),n.emitOuterEvent(g.MESSAGE_EXTENSIONS_UPDATED,{name:g.MESSAGE_EXTENSIONS_UPDATED,data:{messageID:u,extensions:m}})}_handleMessageExtensionsDeleted(s){const{notificationCenter:n,OuterEvent:g}=this._core,{messageID:u,deleteMessageExtensionsInfo:E=[]}=s,m=[];E.forEach(D=>{const{MsgKeyValue:M=[]}=D,T=M.map(P=>(m.push(P.Key),{key:P.Key,seq:P.Seq}));this._updateLocalExtensions(u,T)}),n.emitOuterEvent(g.MESSAGE_EXTENSIONS_DELETED,{name:g.MESSAGE_EXTENSIONS_DELETED,data:{messageID:u,keyList:m}})}_handleMessageExtensionsCleared(s){const{notificationCenter:n,OuterEvent:{MESSAGE_EXTENSIONS_DELETED:g},utils:{isEmpty:u}}=this._core,{messageID:E,clearMessageExtensionsInfo:m=[]}=s,D=[];m.forEach(M=>{const{ClearMsgSeq:T}=M;this._messageExtensionsMap.has(E)&&(this._messageExtensionsMap.get(E)||[]).forEach((P,W)=>{P.seq<=T&&!u(P.value)&&D.push(W)}),this._clearLocationExtensions(E,T)}),n.emitOuterEvent(g,{name:g,data:{messageID:E,keyList:D}})}};const QI={key:"message",required:!0,rules:["object"],allowEmpty:!1,customValidator:s=>{const{constants:{OuterConstant:n}}=Us.core;return s.status!==n.MessageStatus.SUCCESS?"message is not success":s.isSupportExtension===!0||"message is not support extension"}},ol={setMessageExtensions:[QI,{key:"extensions",required:!0,rules:["array"],allowEmpty:!1}],getMessageExtensions:[QI],deleteMessageExtensions:[QI]},sl=Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({deleteMessage:[{required:!0,rules:["array"],allowEmpty:!1}],revokeMessage:[{required:!0,rules:["object"],allowEmpty:!1}],resendMessage:[{key:"message",required:!0,rules:["object"],allowEmpty:!1},{key:"options",required:!1,rules:["object"],allowEmpty:!1}],getMessageList:{conversationID:{required:!0,rules:["string"],allowEmpty:!1},nextReqMessageID:{required:!1,rules:["string"],allowEmpty:!0},count:{required:!1,rules:["number"],allowEmpty:!0}},getMessageListHopping:{conversationID:{required:!0,rules:["string"],allowEmpty:!1},sequence:{required:!1,rules:["number"],allowEmpty:!0},direction:{required:!1,rules:["number"],allowEmpty:!0},count:{required:!1,rules:["number"],allowEmpty:!0}},createTextAtMessage:{to:{required:!0,rules:["string"],allowEmpty:!1},conversationType:{required:!0,rules:["string"],allowEmpty:!1},payload:{required:!0,rules:["object"],allowEmpty:!1,customValidator:s=>{const n=function(g){var u;return typeof g?.text!="string"||typeof g.text=="string"&&((u=g?.text)===null||u===void 0?void 0:u.length)===0?"payload.text is invalid.":!0}(s);return n!==!0?n:!(s?.atUserList&&!Array.isArray(s.atUserList))||"atUserList should be an array or undefind."}}},findMessage:[{required:!0,rules:["string"],allowEmpty:!1}],translateText:{sourceTextList:{required:!0,rules:["array"],allowEmpty:!1},sourceLanguage:{required:!0,rules:["string"],allowEmpty:!1},targetLanguage:{required:!0,rules:["string"],allowEmpty:!1}},createForwardMessage:{to:{required:!0,rules:["string"],allowEmpty:!1},conversationType:{required:!0,rules:["string"],allowEmpty:!1,customValidator:s=>!(!s.startsWith("C2C")&&!s.startsWith("GROUP"))||"conversationType is invalid."},payload:{required:!0,rules:["object"],allowEmpty:!1}},createLocationMessage:{to:{required:!0,rules:["string"],allowEmpty:!1},conversationType:{required:!0,rules:["string"],allowEmpty:!1},payload:{required:!0,rules:["object"],allowEmpty:!1,customValidator:s=>{const{utils:{isString:n,isNumber:g}}=Us.core;return n(s?.description)?g(s?.longitude)?!!g(s?.latitude)||"payload.latitude must be a number.":"payload.longitude must be a number.":"payload.description must be a string."}}}},{addMessageReaction:[{key:"message",required:!0,rules:["object"],allowEmpty:!1},{key:"reactionID",required:!0,rules:["string"],allowEmpty:!1}],removeMessageReaction:[{key:"message",required:!0,rules:["object"],allowEmpty:!1},{key:"reactionID",required:!0,rules:["string"],allowEmpty:!1}],getMessageReactions:{messageList:{required:!0,rules:["array"],allowEmpty:!1},maxUserCountPerReaction:{required:!1,rules:["number"],allowEmpty:!0,customValidator:s=>typeof s!="number"?"maxUserCountPerReaction is invalid.":!(s<0||s>10)||"maxUserCountPerReaction should between [0, 10]."}},getAllUserListOfMessageReaction:{message:{required:!0,rules:["object"],allowEmpty:!1,customValidator:s=>s.status==="success"||"message is invalid."},reactionID:{required:!0,rules:["string"],allowEmpty:!1},nextSeq:{required:!1,rules:["number"],allowEmpty:!0},count:{required:!1,rules:["number"],allowEmpty:!0}}}),{sendMessageReadReceipt:[{required:!0,rules:["array"],allowEmpty:!1}],getMessageReadReceiptList:[{required:!0,rules:["array"],allowEmpty:!1}],getGroupMessageReadMemberList:{message:{required:!0,rules:["object"],allowEmpty:!1},filter:{required:!1,rules:["number"],allowEmpty:!0},count:{required:!1,rules:["number"],allowEmpty:!0},cursor:{required:!1,rules:["string"],allowEmpty:!0}}}),ol),{pinGroupMessage:{groupID:{required:!0,rules:["string"],allowEmpty:!1},message:{required:!0,rules:["object"],allowEmpty:!1},isPinned:{required:!0,rules:["boolean"],allowEmpty:!1}},getPinnedGroupMessageList:[{key:"groupID",required:!0,rules:["string"],allowEmpty:!1}]}),{createQuoteMessage:[{key:"message",required:!0,rules:["object"],allowEmpty:!1},{key:"quotedMessage",required:!0,rules:["object"],allowEmpty:!1}]}),xa=Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({deleteMessage:!0,revokeMessage:!0,resendMessage:!0,getMessageList:!0,getMessageListHopping:!0,createTextAtMessage:!0,findMessage:!0,translateText:!0,createForwardMessage:!0,createLocationMessage:!0},{addMessageReaction:!0,removeMessageReaction:!0,getMessageReactions:!0,getAllUserListOfMessageReaction:!0}),{sendMessageReadReceipt:!0,getMessageReadReceiptList:!0,getGroupMessageReadMemberList:!0}),{setMessageExtensions:!0,getMessageExtensions:!0,deleteMessageExtensions:!0}),{pinGroupMessage:!0,getPinnedGroupMessageList:!0}),{createQuoteMessage:!0});class bE{constructor(n){this._core=n}deleteMessage(n){return pA(this,void 0,void 0,function*(){const{to:g,messageIdentifiers:u}=n,E={From_Account:this._core.common.getCurrentUserID(),To_Account:g,MsgKeyList:u};return this._core.common.buildAndSendPacket({servcmd:"openim.delete_c2c_msg_ramble",data:E})})}revokeMessage(n){return pA(this,void 0,void 0,function*(){const{to:g,from:u,sequence:E,time:m,random:D}=n,M={MsgInfo:{From_Account:u,To_Account:g,MsgSeq:E,MsgRandom:D,MsgTimeStamp:m}};return this._core.common.buildAndSendPacket({servcmd:"openim.msgwithdraw",data:M})})}}class ra{constructor(n){this._core=n}deleteMessage(n){return pA(this,void 0,void 0,function*(){const{to:g,messageIdentifiers:u}=n,E={GroupId:g,Deleter_Account:this._core.common.getCurrentUserID(),Seqs:u};return this._core.common.buildAndSendPacket({servcmd:"group_open_http_svc.delete_group_ramble_msg_by_seq",data:E})})}revokeMessage(n){return pA(this,void 0,void 0,function*(){const{to:g,sequence:u}=n,E={GroupId:g,MsgSeqList:[{MsgSeq:u}]};return this._core.common.buildAndSendPacket({servcmd:"group_open_http_svc.group_msg_recall",data:E})})}}const Mn=2116;class br{constructor(n){this._core=n}generateRevokeMessage(n){const{conversationID:g,sequence:u,random:E,tinyID:m,clientTime:D,revokeReason:M,revoker:T}=n;let P={};const{messageDataHandler:W}=this._core.message;return P=W.revokeMessage({conversationID:g,sequence:u,random:E,revoker:T}),P||(P={conversationID:g,sequence:u},m&&D&&E&&(P.ID=`${m}-${D}-${E}`)),P.revoker=T,P.revokeReason=M,P.revokerInfo={userID:T,nick:"",avatar:""},P}updateRevokerInfo(n){return pA(this,void 0,void 0,function*(){const g=n.map(u=>u.revoker);try{const u=yield this._fetchUserInfos(g);u&&n.forEach(E=>{const{revoker:m}=E;u[m]&&(E.revokerInfo.nick=u[m].nick||"",E.revokerInfo.avatar=u[m].avatar||"",E.revokerInfo.userID=m)})}catch(u){console.debug(u)}})}_fetchUserInfos(n){return pA(this,void 0,void 0,function*(){var g,u;const E=yield(g=this._core.user.userProfile)===null||g===void 0?void 0:g.getUserProfile({userIDList:n});return E?.data?(u=E.data)===null||u===void 0?void 0:u.reduce((m,{userID:D,nick:M,avatar:T})=>(m[D]={nick:M||"",avatar:T||""},m),{}):null})}}var nl=new class{constructor(){this._core=null,this._c2cMessageAction=null,this._groupMessageAction=null}init(s){this._core=s,this._groupMessageAction=new ra(s),this._c2cMessageAction=new bE(s),this._messageHelper=new br(s);const{helper:n}=s;n.registerApi({apiName:"deleteMessage",context:this}),n.registerApi({apiName:"revokeMessage",context:this}),n.registerApi({apiName:"resendMessage",context:this}),n.registerApi({apiName:"findMessage",context:this}),n.registerApi({apiName:"createQuoteMessage",context:this})}deleteMessage(s){return pA(this,void 0,void 0,function*(){let n=[],g=[];const{conversationID:u,conversationType:E}=s[0],m=u.replace(E,"");if(E==="@TIM#SYSTEM")throw new this._core.helper.ChatError({code:Mn});if(s.forEach(D=>{const{conversationID:M,conversationType:T,status:P,_onlineOnlyFlag:W,sequence:iA,random:EA,time:RA}=D||{};if(P==="success"&&M===u&&T===E){if(!W){const kA=T==="C2C"?`${iA}_${EA}_${RA}`:String(iA);n.push(kA)}g.push(D)}}),n.length===0)return this._handleDeleteMessageSuccess(g),{code:0,data:{messageList:g}};n.length>30&&(n=n.slice(0,30),g=g.slice(0,30));try{return E==="C2C"?yield this._c2cMessageAction.deleteMessage({to:m,messageIdentifiers:n}):yield this._groupMessageAction.deleteMessage({to:m,messageIdentifiers:n}),this._handleDeleteMessageSuccess(g),{code:0,data:{messageList:g}}}catch(D){const{utils:{safeStringify:M}}=this._core,{errorCode:T,errorInfo:P}=D;throw new this._core.helper.ChatError({functionName:"deleteMessage",code:T,message:P,moreMessage:`messageIdentifiers: ${M(n)}`})}})}revokeMessage(s){return pA(this,void 0,void 0,function*(){var n;const{conversationType:g,isRevoked:u,ID:E,type:m,from:D,to:M}=s;let T=null;const P=`type:${m} from:${D} to:${M} ID:${E}`;if(g==="@TIM#SYSTEM")throw new this._core.helper.ChatError({message:"system message cannot be revoked"});if(u)throw new this._core.helper.ChatError({message:"message has been revoked",moreMessage:P});try{if(T=g==="C2C"?yield this._c2cMessageAction.revokeMessage(s):yield this._groupMessageAction.revokeMessage(s),T){const{RecallRetList:W}=T,iA=((n=W?.[0])===null||n===void 0?void 0:n.RetCode)||0;if(iA!==0)throw new this._core.helper.ChatError({code:iA,moreMessage:P});return s.isRevoked=!0,yield this._handleRevokeMessageSuccess(s),{code:0,data:{message:s},successLog:{message:P}}}}catch(W){const{errorCode:iA}=W;throw new this._core.helper.ChatError({functionName:"revokeMessage",code:iA,moreMessage:P})}})}resendMessage(s,n){return pA(this,void 0,void 0,function*(){var g,u;return s.isResend=!0,s.status="unSend",(u=(g=this._core)===null||g===void 0?void 0:g.apiMap)===null||u===void 0?void 0:u.sendMessage(s,n)})}findMessage(s){return this._core.message.messageDataHandler.findMessage(s)}createQuoteMessage(s,n){const{ID:g,time:u,sequence:E}=n;return s.quoteInfo={msgID:g,messageTime:u,messageSequence:E},s}_handleDeleteMessageSuccess(s){if(s.length===0)return;const{message:{messageDataHandler:n},common:{isTopic:g},notificationCenter:u,InnerEvent:E}=this._core;s.forEach(D=>{D.isDeleted=!0;const M=n.getLocalMessageList(D.conversationID);M?.forEach(T=>{T.ID===D.ID&&(T.isDeleted=!0)})});const{conversationID:m=""}=s[0];g(m)?u.emitInnerEvent(E.TOPIC_MESSAGE_DELETED,m):u.emitInnerEvent(E.MESSAGE_DELETED,m)}_handleRevokeMessageSuccess(s){return pA(this,void 0,void 0,function*(){var n;const g=(n=this._core.store.get("login"))===null||n===void 0?void 0:n.userId,{conversationID:u,sequence:E,random:m}=s;this._core.message.messageDataHandler.revokeMessage({conversationID:u,sequence:E,random:m,revoker:g}),yield this._messageHelper.updateRevokerInfo([s])})}};class Ll{static parseServerPushElement(n){const{MsgContent:g={}}=n,{Index:u,Data:E}=g;return new Ll({index:u,data:E})}constructor(n){this.type=Vr.MSG_FACE;const{index:g,data:u}=n;this.content={index:g,data:u}}validateBeforeSend(){var n,g;return typeof((n=this.content)===null||n===void 0?void 0:n.index)=="number"&&typeof((g=this.content)===null||g===void 0?void 0:g.data)=="string"?{isValid:!0}:{isValid:!1,error:{message:"content is invalid"}}}transformToServerFormat(n){const{isMergerMessage:g=!1}=n||{},u=g?this.payload:this.content,{index:E,data:m}=u;return{MsgType:this.type,MsgContent:{Index:E,Data:m}}}}class bc{static parseServerPushElement(n){const{MsgContent:g={}}=n,{Desc:u,Longitude:E,Latitude:m}=g;return new bc({description:u,longitude:E,latitude:m})}constructor(n){this.type=Vr.MSG_LOCATION;const{description:g,longitude:u,latitude:E}=n;this.content={description:g,longitude:u,latitude:E}}validateBeforeSend(){return{isValid:!0}}transformToServerFormat(n){const{isMergerMessage:g=!1}=n||{},u=g?this.payload:this.content,{description:E,longitude:m,latitude:D}=u;return{MsgType:this.type,MsgContent:{Desc:E,Longitude:m,Latitude:D}}}}class kE{static parseServerPushElement(n){const{MsgContent:g={}}=n,{StreamMsgID:u,CompatibleText:E,Markdown:m,BinaryData:D,ErrorCode:M,ErrorMsg:T}=g;return new kE({streamMessageID:u,compatibleText:E,markdown:m,binaryData:D,errorCode:M,errorMessage:T})}constructor(n){this.type=Vr.MSG_STREAM,this.content={streamMessageID:"",compatibleText:"",errorCode:0,errorMessage:"",isStreamEnded:!1},this._chunks=[],this._latestIndex=0;const{streamMessageID:g,compatibleText:u,markdown:E,binaryData:m,errorCode:D=0,errorMessage:M="",isStreamEnded:T=!1,chunks:P=[],latestIndex:W=0}=n;this.content.streamMessageID=g,this.content.compatibleText=u,this.content.markdown=E,this.content.binaryData=m,this.content.errorCode=D,this.content.errorMessage=M,this.content.isStreamEnded=T,this.content.chunks=P,this.content.latestIndex=W}updateChunks(n){if(!n||n.length===0)return;const g=n.sort((m,D)=>m.index-D.index),u=this._getMaxRevokedChunkIndex(g);u>=0&&(this._chunks=[],this._latestIndex=u,this._updateContent());const E=this._getValidChunks(g);if(E.length!==0&&(this._mergeAndSortChunks(E),this._chunks.length>0)){const m=this._chunks[this._chunks.length-1];this._latestIndex=m.index,this._updateContent(),this.content.isStreamEnded=m.isLast}}getLatestIndex(){return this._latestIndex}transformToServerFormat(n){const{isMergerMessage:g=!1}=n||{},u=g?this.payload:this.content,{streamMessageID:E,chunks:m}=u,D=m?.map(M=>({EventType:M.eventType||"data",Index:M.index,Markdown:M.markdown,IsLast:M.isLast}));return{MsgType:this.type,MsgContent:{StreamMsgID:E,Chunks:D}}}validateBeforeSend(){var n,g;return((g=(n=this.content)===null||n===void 0?void 0:n.chunks)===null||g===void 0?void 0:g.length)>0?{isValid:!0}:{isValid:!1,error:{message:"content is invalid"}}}_filterContinuousChunks(n,g){if(n.length===0)return[];const u=[];let E=g;for(const m of n){if(m.index>E)break;m.index===E&&(u.push(m),E++)}return u}_mergeAndSortChunks(n){const g=new Map;this._chunks.forEach(u=>{g.set(u.index,u)}),n.forEach(u=>{g.set(u.index,u)}),this._chunks=Array.from(g.values()).sort((u,E)=>u.index-E.index)}_updateContent(){this.content.markdown=this._chunks.map(g=>g.markdown).join("");const n=this._chunks.map(g=>g.binaryData).filter(g=>g?.length>0);if(n.length===0)this.content.binaryData=new Uint8Array(0);else if(n.length===1)this.content.binaryData=n[0];else{const g=n.reduce((m,D)=>m+D.length,0),u=new Uint8Array(g);let E=0;for(const m of n)u.set(m,E),E+=m.length;this.content.binaryData=u}}_getMaxRevokedChunkIndex(n){let g=-1;for(let u=0;ug&&(g=E.index)}return g}_getValidChunks(n){const g=n.filter(u=>u.eventType===Nc.DATA&&u.index>this._latestIndex);return this._filterContinuousChunks(g,this._latestIndex+1)}}var kc=new class{init(s){this._core=s,s.message.messageFactory.registerElementClass(Vr.MSG_FACE,Ll),s.message.messageFactory.registerElementClass(Vr.MSG_LOCATION,bc),s.message.messageFactory.registerElementClass(Vr.MSG_STREAM,kE),s.helper.registerApi({apiName:"createFaceMessage",context:this}),s.helper.registerApi({apiName:"createTextAtMessage",context:this}),s.helper.registerApi({apiName:"createForwardMessage",context:this}),s.helper.registerApi({apiName:"createLocationMessage",context:this})}createFaceMessage(s){if(!s)return null;const{index:n,data:g}=s?.payload||{},u=new Ll({index:n,data:g}),E=this._core.common.getCurrentUserID(),m=this._core.message.messageFactory.createMessage(Object.assign(Object.assign({},s),{from:E}));return m.setElement(u),m}createTextAtMessage(s){const{atUserList:n}=s?.payload||{},g=this._core.apiMap.createTextMessage(s),{OuterConstant:u}=this._core;if(!g)return null;if(Array.isArray(n)){const E=[],m=[];n.forEach(D=>{D!==u.MSG_AT_ALL?(E.push({GroupAtAllFlag:gh,GroupAt_Account:D}),m.push(D)):(E.push({GroupAtAllFlag:ro}),m.push(u.MSG_AT_ALL))}),g._groupAtInfoList=E,g.atUserList=m}return g}createForwardMessage(s){const{helper:n,OuterConstant:g}=this._core,{to:u,conversationType:E,priority:m,payload:D,needReadReceipt:M,receiverList:T,cloudCustomData:P="",isSupportExtension:W=!1}=s;if(!Array.isArray(D._elements))throw new n.ChatError({functionName:"createForwardMessage",code:2454});if(D.type===g.MSG_GRP_TIP)throw new n.ChatError({functionName:"createForwardMessage",code:2453});const iA=this._core.common.getCurrentUserID(),EA=this._core.message.messageFactory.createMessage({to:u,from:iA,conversationType:E,isPlaceMessage:0,priority:m,payload:D,needReadReceipt:M,isSupportExtension:W,cloudCustomData:P,receiverList:T});return EA.setRelayFlag(!0),EA.setElement(D._elements[0]),EA}createLocationMessage(s){if(!s)return null;const{description:n,longitude:g,latitude:u}=s?.payload||{},E=new bc({description:n,longitude:g,latitude:u}),m=this._core.common.getCurrentUserID(),D=this._core.message.messageFactory.createMessage(Object.assign(Object.assign({},s),{from:m}));return D.setElement(E),D}};let Fu=class{init(s){this._messageHelper=new br(s),this._core=s;const{notificationCenter:n,InnerEvent:{MESSAGE_PUSH:g},InnerEventSubType:{C2C_REVOKED_MESSAGE:u},helper:{registerWorkflowStep:E},constants:{WORKFLOW_NAME:m,WORKFLOW_STEP:D}}=s;n.subscribeInnerEvent(g,u,this._handleC2CNotifyMessage,this),E(m.SYNC_SERVER_INFO_AFTER_RE_ONLINE,D.HANDLE_C2C_REVOKED_MESSAGE_FROM_SYNC_UNREAD,this._handleC2CRevokeMessagesFromUnreadMessageSync,this)}_handleC2CNotifyMessage(s){const{C2cNotifyMsgArray:n}=s;n?.forEach(g=>{Object.keys(g).includes("WithdrawC2cMsgNotify")&&this._handleC2CRevokeMessage(g)})}_handleC2CRevokeMessage(s){return pA(this,void 0,void 0,function*(){try{const{WithdrawC2cMsgNotify:{C2cWithdrawInfoArray:n}}=s;yield this._parseAndEmitC2CRevokedMessages(n)}catch(n){console.debug(n)}})}_parseAndEmitC2CRevokedMessages(s){return pA(this,void 0,void 0,function*(){const n=[],{notificationCenter:g,OuterEvent:u,common:{getCurrentUserID:E}}=this._core;s.forEach(m=>{var D;const{MsgRand:M,MsgSeq:T,To_Account:P,From_Account:W,RevokerInfo:{Revoker_Account:iA,Revoke_Reason:EA}}=m,RA=E()===W?`C2C${P}`:`C2C${W}`,kA=((D=m?.RevokerInfo)===null||D===void 0?void 0:D.Reason)||EA,xA=this._messageHelper.generateRevokeMessage({conversationID:RA,sequence:T,random:M,revoker:iA,revokeReason:kA});n.push(xA)}),n.length>0&&(yield this._messageHelper.updateRevokerInfo(n),g.emitOuterEvent(u.MESSAGE_REVOKED,{name:u.MESSAGE_REVOKED,data:n}))})}_handleC2CRevokeMessagesFromUnreadMessageSync(s){return pA(this,void 0,void 0,function*(){const{revokedMessageList:n}=s.result;yield this._parseAndEmitC2CRevokedMessages(n)})}dispose(){const{notificationCenter:s,InnerEvent:{MESSAGE_PUSH:n},InnerEventSubType:{C2C_REVOKED_MESSAGE:g}}=this._core;s.unSubscribeInnerEvent(n,g,this._handleC2CNotifyMessage,this)}},QC=class{init(s){this._messageHelper=new br(s),this._core=s;const{notificationCenter:n,InnerEvent:{MESSAGE_PUSH:g},InnerEventSubType:{GROUP_MESSAGE_REVOKED:u}}=s;n.subscribeInnerEvent(g,u,this._handleGroupNotifyMessage,this)}_handleGroupNotifyMessage(s){const{GroupTips:n}=s;n?.forEach(g=>{var u;Array.isArray((u=g?.MsgBody)===null||u===void 0?void 0:u.GroupWithdrawInfoArray)&&this._handleGroupRevokeMessage(g)})}_handleGroupRevokeMessage(s){return pA(this,void 0,void 0,function*(){try{const{RevokerInfo:n,MsgBody:{GroupWithdrawInfoArray:g},GroupInfo:u}=s,E=[],m=[],{notificationCenter:D,OuterEvent:M,utils:{isEmpty:T},common:{isCommunity:P}}=this._core;let W=!1;u&&(W=P({groupID:u.GroupId})||!T(u.TopicId)),g.forEach(iA=>{const{Random:EA,MsgSeq:RA,GroupId:kA,MsgClientTime:xA,TinyId:LA,TopicId:SA,RevokerInfo:{Revoker_Account:OA=n?.Revoker_Account||"",Reason:JA=n?.Reason||""}}=iA,ne=SA?`GROUP${SA}`:`GROUP${kA}`,se=this._messageHelper.generateRevokeMessage({conversationID:ne,sequence:RA,random:EA,tinyID:LA,clientTime:xA,revoker:OA,revokeReason:JA});W?(se.revokerInfo.nick=u.From_AccountNick,se.revokerInfo.avatar=u.From_AccountHeadurl,E.push(se)):m.push(se)}),m.length>0&&(yield this._messageHelper.updateRevokerInfo(m),E.push(...m)),E.length!==0&&D.emitOuterEvent(M.MESSAGE_REVOKED,{name:M.MESSAGE_REVOKED,data:E})}catch(n){console.debug(n)}})}dispose(){const{notificationCenter:s,InnerEvent:{MESSAGE_PUSH:n},InnerEventSubType:{GROUP_MESSAGE_REVOKED:g}}=this._core;s.unSubscribeInnerEvent(n,g,this._handleGroupNotifyMessage,this)}};var Au=new class{constructor(){this._c2cMessageReceiver=new Fu,this._groupMessageReceiver=new QC}init(s){this._c2cMessageReceiver.init(s),this._groupMessageReceiver.init(s)}dispose(){this._c2cMessageReceiver.dispose(),this._groupMessageReceiver.dispose()}},ch=new class{constructor(){this._core=null}init(s){this._core=s;const{helper:n}=s;n.registerApi({apiName:"translateText",context:this})}translateText(s){return pA(this,void 0,void 0,function*(){try{const{sourceLanguage:n,sourceTextList:g,targetLanguage:u}=s,E=yield function(m,D){return pA(this,void 0,void 0,function*(){var M,T;const{sourceTextList:P,sourceLanguage:W,targetLanguage:iA}=m,{store:EA,common:RA}=D,kA={SourceText:P,Source:W,Target:iA,FromAccount:(M=EA.get("login"))===null||M===void 0?void 0:M.tinyID,SDKAppID:(T=EA.get("instance"))===null||T===void 0?void 0:T.sdkAppId},xA=yield RA.buildAndSendPacket({servcmd:"im_open_translate.ws_batch_trans_text",data:kA});if(xA){const{CmdErrorCode:LA,TargetText:SA}=xA;return{cmdErrorCode:LA,translatedTextList:SA}}})}({sourceLanguage:n,sourceTextList:g,targetLanguage:u},this._core);if(E){const{cmdErrorCode:{ErrorCode:m,ErrorInfo:D},translatedTextList:M}=E;if(m===0)return{code:0,data:{translatedTextList:M}};throw{errorCode:m,errorInfo:D,message:D}}}catch(n){const{errorCode:g,errorInfo:u}=n||{};throw new this._core.helper.ChatError({functionName:"translateText",code:g,message:u})}})}},Ou=new class{init(s){this._core=s,s.helper.registerApi({apiName:"convertVoiceToText",context:this})}convertVoiceToText(s){return pA(this,void 0,void 0,function*(){var n;const{message:g,language:u=Tc.ZH_PY}=s;let{url:E}=g.payload||{};const m=this._core.common.getCurrentUserID();g.from===m&&g.flow==="out"&&(E=g.payload.remoteAudioUrl),this._validateVoiceFormat(E);const D=((n=BI.exec(E))===null||n===void 0?void 0:n[1])||"mp3",M=hI[u]||ZI;try{const T=yield function(P){var W;const{store:iA,common:EA}=Us.core,{url:RA,format:kA,serverLanguageType:xA}=P,LA={BytesUrl:RA,BytesEngServiceType:xA,BytesVoiceFormat:kA,Uint32Sdkappid:(W=iA.get("instance"))===null||W===void 0?void 0:W.sdkAppId,Uint64SourceType:0};return EA.buildAndSendPacket({servcmd:"im_open_speech.ws_sentence_recognition",data:LA})}({url:E,format:D,serverLanguageType:M});if(T){const{CmdErrorCode:P,BytesResult:W}=T;if(P.ErrorCode===0)return{code:0,data:{result:W}};throw{code:P.ErrorCode,message:P.ErrorInfo}}}catch(T){const{code:P,message:W}=T||{};throw new this._core.common.ChatError({functionName:"convertVoiceToText",code:P,message:W})}})}_validateVoiceFormat(s){if(!BI.test(s))throw new this._core.common.ChatError({code:2119})}};class pI{constructor(n){const{constants:g,common:u,utils:E}=Us.core,{CONV_C2C:m,CONV_GROUP:D}=g.OuterConstant,{ID:M,tinyID:T,from:P,to:W,clientTime:iA=u.timeManager.getServerTimeSeconds()||0,random:EA,sequence:RA,cloudCustomData:kA="",nick:xA="",avatar:LA="",clientSequence:SA,conversationType:OA,groupID:JA,_elements:ne,time:se}=n;this.ID=M||`${T}-${iA}-${EA}`,this.messageRandom=EA,this.from=P,this.messageSender=P,this.time=se,this.messageSequence=RA,this.clientSequence=SA||RA,this.clientTime=iA,this.cloudCustomData=kA,this.messageReceiver=W,this.avatar=LA,this.nick=xA;const _i=E.deepCopyWithMethods(ne);_i.forEach(Ti=>{Ti.payload=Ti.content,delete Ti.content}),this.messageBody=_i,M?OA.startsWith(m)?this.receiverUserID=W:OA.startsWith(D)&&(this.receiverGroupID=W):JA?(this.receiverGroupID=JA,this.messageReceiver=JA):W&&(this.receiverUserID=W,this.messageReceiver=W)}transformElementsToServerFormat(){return this.messageBody?Array.isArray(this.messageBody)?this.messageBody.map(n=>n.transformToServerFormat({isMergerMessage:!0})):this.messageBody.transformToServerFormat({isMergerMessage:!0}):null}}class rl{static parseServerPushElement(n){const{MsgContent:g}=n,{MsgList:u=[],CompatibleText:E,AbstractList:m,Title:D,PbMsgKey:M,JsonMsgKey:T}=g||{},P=u.map(W=>dr(W));return new rl({messageList:P,title:D,abstractList:m,compatibleText:E,pbDownloadKey:M,downloadKey:T})}constructor(n){this.type=Us.core.constants.OuterConstant.MSG_MERGER;const{messageList:g,title:u,abstractList:E,compatibleText:m,pbDownloadKey:D="",downloadKey:M="",version:T=0,layersOverLimit:P=!1}=n,W=[];g.forEach(iA=>{if(iA){const EA=new pI(iA);W.push(EA)}}),this.content={messageList:W,title:u,abstractList:E,compatibleText:m,version:T,downloadKey:M,pbDownloadKey:D,layersOverLimit:P}}validateBeforeSend(){const{isEmpty:n}=Us.core.helper;return n(this.content.messageList)?{isValid:!1,error:{message:"content is invalid"}}:{isValid:!0}}transformToServerFormat(n){const{isMergerMessage:g=!1}=n||{},u=g?this.payload:this.content,{abstractList:E,compatibleText:m,downloadKey:D,layersOverLimit:M,pbDownloadKey:T,title:P,version:W,messageList:iA}=u;return{MsgType:this.type,MsgContent:{AbstractList:E,CompatibleText:m,JsonMsgKey:D,LayersOverLimit:M,PbMsgKey:T,Title:P,Version:W,MsgList:Ac(iA)}}}}var pC=new class{init(s){this._core=s;const{message:n,helper:g,constants:{OuterConstant:u}}=s;n.messageFactory.registerElementClass(u.MSG_MERGER,rl),g.registerApi({apiName:"createMergerMessage",context:this}),g.registerApi({apiName:"sendMessage",context:this,matcher:E=>E[0].type===u.MSG_MERGER}),g.registerApi({apiName:"downloadMergerMessage",context:this})}createMergerMessage(s){const{common:n}=this._core;if(!s)return null;const g=new rl(s.payload),u=n.getCurrentUserID(),E=this._core.message.messageFactory.createMessage(Object.assign(Object.assign({},s),{from:u}));return E.setRelayFlag(!0),E.setElement(g),E}sendMessage(s,n){return pA(this,void 0,void 0,function*(){var g,u,E;try{const m=function(P){let W="utf-8";Us.core.helper.IN_BROWSER&&document&&(W=document.charset.toLowerCase());let iA,EA=0,RA=0;if(RA=P.length,W==="utf-8"||W==="utf8")for(let kA=0;kA11264){D=this._core.utils.deepCopyWithMethods(s);try{const{JsonMsgKey:P,PbMsgKey:W}=yield function(EA){return pA(this,void 0,void 0,function*(){const{payload:{messageList:RA}}=EA,kA={MsgList:Ac(RA)};return Us.core.common.buildAndSendPacket({servcmd:"im_long_msg.save_relay_json_msg",data:kA})})}(D),{payload:iA}=D;M=new rl(Object.assign(Object.assign({},iA),{messageList:[],downloadKey:P,pbDownloadKey:W})),D.setElement(M)}catch(P){console.error(P)}}const{data:{message:T}}=yield(E=(u=(g=this._core)===null||g===void 0?void 0:g.message)===null||u===void 0?void 0:u.messageSender)===null||E===void 0?void 0:E.sendMessage(D,n);return M&&T.setElement(s._elements),{code:0,data:{message:T}}}catch(m){const{errorCode:D}=m;throw new this._core.helper.ChatError({code:D})}})}downloadMergerMessage(s){return pA(this,void 0,void 0,function*(){const{ssoLog:n}=this._core,g=s.payload,{downloadKey:u,pbDownload:E,type:m,messageList:D}=g,M=Do(g,["downloadKey","pbDownload","type","messageList"]);try{const T=yield function(iA){return pA(this,void 0,void 0,function*(){return Us.core.common.buildAndSendPacket({servcmd:"im_long_msg.get_relay_json_msg",data:{JsonMsgKey:iA}})})}(u),{MsgList:P}=T||{},W=P?.map(iA=>{const EA=dr(iA);return new pI(EA)});return typeof s.isOnlineMessage=="function"?s.setElement({type:s.type,content:Object.assign({messageList:W},M)}):(s.payload.messageList=W,s.payload.downloadKey="",s.payload.pbDownloadKey=""),n.info("downloadMergerMessage",` success downloadKey:${u}`),s}catch(T){const{errorCode:P}=T;throw new this._core.helper.ChatError({functionName:"downloadMergerMessage",code:P,moreMessage:u})}})}},aa=new class{init(s){this._core=s,this._core.helper.registerExperimentalAPI("sendComboMessage",this)}sendComboMessage(s){return pA(this,void 0,void 0,function*(){const{appStore:n,message:g,common:{getCurrentUserID:u},utils:{isArray:E}}=this._core,{GroupId:m,To_Account:D}=s;s.From_Account=s.From_Account||u();let M=null;if(m){M=this._generateGroupMessage(Object.assign(Object.assign({},s),{ToGroupId:m}));const T=n.userStore.getUserProfile(u());M.level=T?.level||0,E(D)&&D.length>0&&(M._receiverList=D)}else D&&(M=this._generateC2CMessage(s));return g.messageSender.sendMessage(M,s)})}_generateC2CMessage(s){const{message:n,OuterConstant:{CONV_C2C:g}}=this._core,u=g,E=n.messageHelper.parseServerPushMessage(s),m=n.messageFactory.createMessage(Object.assign(Object.assign({},E),{conversationType:u,flow:ec.OUT})),{elements:D}=E;return m.setElement(D),m}_generateGroupMessage(s){const{message:n,OuterConstant:{CONV_GROUP:g}}=this._core,u=g,E=n.messageHelper.parseServerGroupMessage(s),m=n.messageFactory.createMessage(Object.assign(Object.assign({},E),{conversationType:u,flow:ec.OUT})),{elements:D}=E;return m.setElement(D),m}},tc=new class{init(s){this._core=s;const{helper:n,notificationCenter:g,InnerEvent:{MESSAGE_PUSH:u},InnerEventSubType:{GROUP_MESSAGE_PINNED:E}}=s;g.subscribeInnerEvent(u,E,this._handleGroupMessagePinned,this),n.registerApi({apiName:"pinGroupMessage",context:this}),n.registerApi({apiName:"getPinnedGroupMessageList",context:this})}pinGroupMessage(s){return pA(this,void 0,void 0,function*(){const{ssoLog:n,common:{isTopic:g},OuterConstant:{GROUP_ID_PREFIX:u},helper:{ChatError:E}}=this._core;let{groupID:m,message:D,isPinned:M}=s;const{sequence:T}=D;try{return yield function(P){return pA(this,void 0,void 0,function*(){const{common:{buildAndSendPacket:W,getCurrentUserID:iA}}=Us.core,{groupID:EA,sequence:RA,isPinned:kA}=P,xA=iA(),LA=kA?"group_open_http_svc.pin_message":"group_open_http_svc.unpin_message",SA={GroupId:EA,MsgSeq:RA};return kA?SA.Pinner_Account=xA:SA.UnPinner_Account=xA,W({servcmd:LA,data:SA})})}({groupID:m,sequence:T,isPinned:M}),{code:0,data:{}}}catch(P){const{errorCode:W,errorInfo:iA}=P||{};throw new E({code:W,message:iA})}})}getPinnedGroupMessageList(s){return pA(this,void 0,void 0,function*(){let n=[];try{const g=yield function(u){return pA(this,void 0,void 0,function*(){const{groupID:E}=u,{common:{buildAndSendPacket:m}}=Us.core;return m({servcmd:"group_open_http_svc.get_pinned_messages",data:{GroupId:E}})})}({groupID:s});if(g){const{PinnedMsgList:u=[]}=g;n=yield this._updatePinnedMessageInfo({serverPinnedMessageList:u,groupID:s})}return{code:0,data:{messageList:n}}}catch(g){throw g}})}_handleGroupMessagePinned(s){const{message:{messageHelper:n,messageFactory:g},notificationCenter:u,OuterEvent:E,OuterConstant:m}=this._core;s.GroupTips.forEach(D=>{const{ToGroupId:M,MsgBody:{PinnedMsg:T,OpType:P,MsgOperatorMemberExtraInfo:W,SdkGroupMessageId:iA}}=D,{UserId:EA,NickName:RA="",ImageUrl:kA=""}=W;let xA=null,LA=!1;if(P===pd){LA=!0;const SA=n.parseServerGroupMessage(T);xA=g.createMessage(Object.assign(Object.assign({},SA),{conversationType:m.CONV_GROUP,flow:"in"})),xA.setElement(SA.elements),xA.pinnerInfo={userID:EA,nick:RA,avatar:kA}}else if(P===NE){const{ClientTime:SA,Random:OA,SenderTinyId:JA,ServerTime:ne,MsgSeq:se}=iA;xA={ID:`${JA}-${SA}-${OA}`,sequence:se,random:OA,time:ne,clientTime:SA}}xA&&u.emitOuterEvent(E.PINNED_GROUP_MESSAGE_UPDATED,{name:E.PINNED_GROUP_MESSAGE_UPDATED,data:{groupID:M,message:xA,isPinned:LA,operatorInfo:{userID:EA,nick:RA,avatar:kA}}})})}_findMessageBySequence(s,n){const{message:{messageDataHandler:g}}=this._core;return[...g.getLocalMessageList(s),...g.getSparseMessageList(s)].find(u=>u.sequence===n)}_updatePinnedMessageInfo(s){return pA(this,arguments,void 0,function*({serverPinnedMessageList:n,groupID:g}){const{OuterConstant:{CONV_GROUP:u},utils:{isEmpty:E}}=this._core,m=[],D=[],M=[],T=new Map,P=`${u}${g}`;for(let iA=0;iA{const{sequence:kA}=RA,xA=T.get(kA),LA=iA[xA]||{userID:xA,nick:"",avatar:""};RA.pinnerInfo=LA}),m.sort((RA,kA)=>RA.sequence-kA.sequence),m}return[]})}_fetchPinnedMessageInfo(s){return pA(this,void 0,void 0,function*(){var n,g;const{message:{messageHistory:u},user:{userProfile:E},utils:{isArray:m}}=this._core,{conversationID:D,messageSequenceList:M,pinnerIDList:T}=s,P=yield Promise.all([this._fetchMessageBySequence({conversationID:D,messageSequenceList:M}),E?.getUserProfile({userIDList:T})]);if(m(P)){const W={};return(((n=P[1])===null||n===void 0?void 0:n.data)||[]).forEach(iA=>{const{userID:EA,nick:RA="",avatar:kA=""}=iA;W[EA]={userID:EA,nick:RA,avatar:kA}}),{messageList:((g=P[0])===null||g===void 0?void 0:g.messageList)||[],pinnerInfoMap:W}}})}_fetchMessageBySequence(s){return pA(this,void 0,void 0,function*(){const{utils:{isEmpty:n},message:{messageHistory:g}}=this._core,{conversationID:u,messageSequenceList:E}=s;return n(E)?[]:g.getGroupRoamingMessagesByAnchor({conversationID:u,messageSequenceList:E,getType:3})})}};class lg{constructor(n){this.eventType=Nc.DATA,this.index=0,this.markdown="",this.isLast=!1,this.binaryData=null;const{EventType:g,Index:u,Markdown:E,IsLast:m,BinaryData:D}=n;this.eventType=g,this.index=u,this.markdown=E,this.isLast=m,this.binaryData=D}}var mI=new class{constructor(){this._messageMap=new Map,this._retryCountMap=new Map}init(s){this._core=s;const{notificationCenter:n,OuterEvent:{MESSAGE_RECEIVED:g},InnerEvent:{HISTORY_MESSAGE_FETCHED:u},common:{workflowManager:E},constants:{WORKFLOW_NAME:m,WORKFLOW_STEP:D}}=s;n.subscribeInnerEvent(co,this._handleStreamMessageChunkPush,this),n.subscribeOuterEvent(g,this._handleMessageReceived,this),n.subscribeInnerEvent(u,this.processHistoryMessage,this),E.registerWorkflowStep(m.SYNC_SERVER_INFO_AFTER_RE_ONLINE,D.STREAM_MESSAGE_RECOVER,this._recoverStreamMessage,this)}processHistoryMessage(s){const{utils:{isEmpty:n,safeStringify:g},ssoLog:u}=this._core;try{s?.forEach(E=>{var m;if(this._isValidStreamMessage(E)){const D=(m=E?._elements)===null||m===void 0?void 0:m[0],{streamMessageID:M,markdown:T,binaryData:P}=D?.content||{};n(T)&&n(P)?(this._messageMap.set(M,E),this._fetchStreamMessageChunks(E)):D.content.isStreamEnded=!0}})}catch(E){u.error("processHistoryMessage.error",g(E))}}_handleMessageReceived(s){const n=s.data;n?.forEach(g=>{var u,E;if(this._isValidStreamMessage(g)){const{streamMessageID:m}=((E=(u=g?._elements)===null||u===void 0?void 0:u[0])===null||E===void 0?void 0:E.content)||{};m&&(this._messageMap.set(m,g),this._fetchStreamMessageChunks(g))}})}_isValidStreamMessage(s){var n,g;const{utils:{isEmpty:u}}=this._core,{streamMessageID:E}=((g=(n=s?._elements)===null||n===void 0?void 0:n[0])===null||g===void 0?void 0:g.content)||{};return s.type===Vr.MSG_STREAM&&!u(E)}_fetchStreamMessageChunks(s){return pA(this,void 0,void 0,function*(){var n,g;const{constants:{ERROR_CODE:u},ssoLog:E,utils:{safeStringify:m}}=this._core,D=(n=s._elements)===null||n===void 0?void 0:n[0],M=(g=D?.content)===null||g===void 0?void 0:g.streamMessageID;try{const{from:T,to:P}=s,W=D.getLatestIndex();if(D.content.isStreamEnded)return;const iA=yield function(EA){return pA(this,void 0,void 0,function*(){const{from:RA,to:kA,streamMessageID:xA,index:LA}=EA,SA={From_Account:RA,To_Account:kA,StreamMsgID:xA,AckIndex:LA};return Us.core.common.buildAndSendPacket({servcmd:"StreamMsg.GetStreamHttp",data:SA,timeout:5e3})})}({from:T,to:P,streamMessageID:M,index:W});if(iA){const{ErrorCode:EA,ErrorInfo:RA}=iA;if(EA!==0)throw D.content.errorCode=EA,D.content.errorMessage=RA,{errorCode:EA,errorMessage:RA}}}catch(T){if(T.errorCode===u.NETWORK_TIMEOUT&&this._shouldRetryFetch(M)){const P=this._retryCountMap.get(M)||0;E.debug("_fetchStreamMessageChunks.timeout",`error: ${m(T)} retried: ${P}`),this._retryCountMap.set(M,P+1),this._fetchStreamMessageChunks(s)}else E.error("_fetchStreamMessageChunks.error",m(T))}})}_shouldRetryFetch(s){const{utils:{isNumber:n}}=this._core;if(!this._retryCountMap.has(s))return this._retryCountMap.set(s,1),!0;const g=this._retryCountMap.get(s);return!!(n(g)&&g<=3)}_onStreamEnded(s,n,g){const{ssoLog:u}=this._core;g.content.isStreamEnded=!0,g.stopReason=n,this._messageMap.delete(s),u.debug("_onStreamEnded",`streamMessage end, StopReason: ${n}`)}_handleStreamMessageChunkPush(s){var n;const{ssoLog:g}=this._core,{StopReason:u,Chunks:E,StreamID:m}=s?.body||{},D=this._messageMap.get(m);if(!D)return void g.warn(`_handleStreamMessageChunkPush, unfounded message: ${m}`);const M=(n=D._elements)===null||n===void 0?void 0:n[0];if(M&&this._validateExpectedChunk(M,E)){if(E.length>0){const T=E.map(P=>new lg(P));M.updateChunks(T)}this._emitMessageModify(D),function(T,P){pA(this,void 0,void 0,function*(){const{common:{generateProtocolData:W},utils:{safeStringify:iA},ssoLog:EA,channel:RA}=Us.core,kA={StreamMsgID:T,AckIndex:P};try{const xA=W({servcmd:"StreamMsg.AckHttp",data:kA});RA.sendPacket(xA)}catch(xA){EA.debug("sendStreamChunkAck",iA(xA))}})}(m,M.getLatestIndex()),M.content.isStreamEnded&&this._onStreamEnded(m,u,M)}}_emitMessageModify(s){const{notificationCenter:n,OuterEvent:{MESSAGE_MODIFIED:g}}=this._core;n.emitOuterEvent(g,{name:g,data:[s]})}_validateExpectedChunk(s,n){const g=s.getLatestIndex()+1;let u=!1;for(let E=0;Em.Index).join(", ")}]`),!1}return!0}_recoverStreamMessage(){this._retryCountMap.clear();const{ssoLog:s,utils:{safeStringify:n}}=this._core;try{const g=Array.from(this._messageMap.entries());for(let u=Math.max(0,g.length-300);u{const LA=this._getResponseBody(kA,E,iA&&EA),SA=this._buildResponse(kA,LA);if(kA.status===200)n(null,SA);else{if(EA&&!RA.includes(EA))return s.url=this._domainName2IP(RA,EA),s.uploadByIP=!0,this.request(s,n);n({code:kA.status,message:JSON.stringify(kA.responseText)},SA)}},kA.onerror=()=>{const LA=this._getResponseBody(kA,E,iA&&EA),SA=this._buildResponse(kA,LA),OA={code:kA.status,message:kA.status===0?"CORS blocked or network error":JSON.stringify(kA.responseText)};n(OA,SA)},s.onProgress&&kA.upload&&(kA.upload.onprogress=LA=>{const{total:SA,loaded:OA}=LA,JA=Math.min(Math.floor(100*OA/SA),100);s.onProgress({total:SA,loaded:OA,percent:JA/100})}),kA.send(P),kA})}_buildResponse(s,n){const g={};return s.getAllResponseHeaders().trim().split(` +`).forEach(u=>{if(u){const[E,m]=u.split(":").map(D=>D.trim());g[E.toLowerCase()]=m}}),{statusCode:s.status,statusMessage:s.statusText,headers:g,data:n}}_getResponseBody(s,n,g){return s.status===200&&n?{location:n,uploadIP:g}:{response:s.responseText,uploadIP:g}}_queryString(s,n="&",g="="){var u;const{isEmpty:E,isPlainObject:m}=(u=this._core)===null||u===void 0?void 0:u.utils;return E(s)?"":m(s)?Object.keys(s).map(D=>{const M=encodeURIComponent(D)+g;return Array.isArray(s[D])?s[D].map(T=>M+encodeURIComponent(T)).join(n):M+encodeURIComponent(s[D])}).filter(Boolean).join(n):void 0}_domainName2IP(s,n){return s.replace(/^http(s)?:\/\/(.*?)\//,`https://${n}/`)}};const xu=["unknown","image","video","audio","log"];var fI=new class{init(s){this._core=s}request(s,n){var g;const{MINI_APP_NAMESPACE:u,IN_ALIPAY_MINI_APP:E,isUniIOSApp:m}=(g=this._core)===null||g===void 0?void 0:g.utils,{resources:D="",headers:M={},url:T,downloadUrl:P=""}=s;let W=T,iA=null;const EA=P?P.match(/^(https?:\/\/[^/]+\/)([^/]*\/?)(.*)$/):null;if(!EA)return void console.warn("message Invalid download URL format");const RA=decodeURIComponent(EA[3]),kA=RA.includes("?")?RA.split("?")[0]:RA||"",xA={key:s.fileKey||kA,success_action_status:200,"Content-Type":""},LA={};if(m()){const[OA,JA]=T.split("?sign=");JA&&(W=`${OA}?sign=${encodeURIComponent(JA)}`,LA.sign=decodeURIComponent(JA),LA.signature=decodeURIComponent(JA))}let SA={url:W,header:M,name:"file",filePath:D,formData:Object.assign(Object.assign({},xA),LA),timeout:s.timeout||3e5};if(E){const{name:OA}=SA,JA=Do(SA,["name"]);SA=Object.assign(Object.assign({},JA),{fileName:"file",fileType:s.fileType?xu[s.fileType]:"image"})}return iA=u.uploadFile(Object.assign(Object.assign({},SA),{success:OA=>{this._handleResponse({response:OA,downloadUrl:P,callback:n})},fail:OA=>{this._handleResponse({response:OA,downloadUrl:P,callback:n})}})),iA.onProgressUpdate&&iA.onProgressUpdate(OA=>{s.onProgress&&s.onProgress({total:OA.totalBytesExpectedToSend||0,loaded:OA.totalBytesSent||0,percent:OA.progress?Math.floor(OA.progress)/100:0})}),iA}_handleResponse(s){const{downloadUrl:n,response:g,callback:u}=s,E={};if(g.header)for(const D in g.header)g.header.hasOwnProperty(D)&&(E[D.toLowerCase()]=g.header[D]);const m=+g.statusCode;m===200?u(null,{statusCode:m,headers:E,data:Object.assign(Object.assign({},g.data),{location:n})}):u({code:m,message:JSON.stringify(g.data)},{statusCode:m,headers:E,data:void 0})}};function al(s){return function(n){return Object.prototype.toString.call(n).match(/^\[object (.*)\]$/)[1].toLowerCase()}(s)==="file"}function kr(s){const n=s||99999999;return Math.round(Math.random()*n)}function Lr(s,n=!0,g=!0){const u=Date.now();return n?g?u-s+" ms":`${Math.round((u-s)/1e3)} s`:g?u-s:Math.round((u-s)/1e3)}function Ig(s){return`${Array.from({length:8},()=>Math.floor(65536*(1+Math.random())).toString(16).substring(1)).join("")}-${s}`}function ar(s,n){return Math.round(Number(s)*10**n)/10**n}function Rr(s){return s<=1048576?`${ar(s/1024,1)}KB/s`:`${ar(s/1048576,1)}MB/s`}const ic="TIMImageElem",Fg="TIMSoundElem",Ya="TIMFileElem",Ul="TIMVideoFileElem",Ca="RichMediaMessagePlugin",yI=["rich.my-imcloud.com","imrich.qcloud.com"],eu=1,ha=2,gl=3,UE=255;var tu;(function(s){s.UNSENT="unSend",s.SUCCESS="success",s.FAIL="fail"})(tu||(tu={}));const FE={wechat:/^(wxfile:\/\/tmp_|http:\/\/temp\/|cloud:\/\/temp-)/,alipay:/^(https:\/\/resource\/|alipayfile:\/\/tmp\/)/,baidu:/^(http:\/\/tmp\/|swanfile:\/\/tmp_)/,bytedance:/^(ttfile:\/\/tmp_|\/(var|tmp)\/|tttemp:\/\/)/,qq:/^(qqfile:\/\/tmp_|http:\/\/qtemp\/)/},Jr=Symbol("isCustomUpload");var iu,Ft=new class{init(s){this._core=s}addAuthToUrl(s=""){if(this._isMiniProgramTempFile(s))return s;const n=function(g){return g?g.startsWith("https://")?g:g.startsWith("http://")?g.replace("http://","https://"):g:""}(s);return this.processResourceUrl(n)}removeAuthToUrl(s){return function(n,g){const[u,E]=n.split("?");if(!E)return u;const m=E.split("&").reduce((M,T)=>{const[P,W]=T.split("=");return P&&P!==g&&(M[P]=W||""),M},{}),D=Object.keys(m).map(M=>`${M}${m[M]?`=${m[M]}`:""}`).join("&");return D?`${u}?${D}`:u}(s,"authKey")}_isMiniProgramTempFile(s){return!!this.getPlatformFlags().IN_MINI_APP&&Object.values(FE).some(n=>n.test(s))}extractFileFromInput(s){const{utils:{isArray:n}}=this._core;return al(s)?s:function(g){if(typeof g!="object"||g===null)return!1;const u=Object.getPrototypeOf(g);if(u===null)return!0;let E=u;for(;Object.getPrototypeOf(E)!==null;)E=Object.getPrototypeOf(E);return u===E}(s)&&typeof uni<"u"?n(s.tempFiles)&&s.tempFiles.length>0?s.tempFiles[0]:n(s.files)?s.files[0]:s.tempFile?s.tempFile:null:s instanceof HTMLInputElement&&s.files&&s.files.length>0?s.files[0]:null}probeImageWidthHeight(s){return pA(this,void 0,void 0,function*(){var n;const{IN_MINI_APP:g,IN_BROWSER:u}=((n=this._core)===null||n===void 0?void 0:n.utils)||{};return this._shouldSkipProbing()?{width:0,height:0}:u?this._probeImageDimensionsWeb(s):g?this._probeImageDimensionsMiniApp(s):void 0})}isSimpleCos(){var s;const n=((s=this._core)===null||s===void 0?void 0:s.store.get("cloudConfig"))||{},{simple_cos:g}=n;return g!=="0"}getFileDNList(){var s;let n=yI;const g=((s=this._core)===null||s===void 0?void 0:s.store.get("cloudConfig"))||{},{file_dn_list:u}=g;if(u===void 0)return n;try{JSON.parse(u).forEach(E=>{n.includes(E)||n.push(E)})}catch(E){console.warn(E),n=yI}return n}getPlatform(){var s;return(s=this._core)===null||s===void 0?void 0:s.utils.platform}generateUUID(s,n){var g;let u=`${this.getSDKAppID()}-${this.getCurrentUserID()}-${(g=this._core)===null||g===void 0?void 0:g.utils.randomString()}`;if(n)return`${u}.${n}`;const E=s.name||s.value||s.url||s.tempFilePath,m=E&&E.slice(E.lastIndexOf(".")+1);return m&&(u=`${u}.${m}`),u}processResourceUrl(s){if(!s)return"";let n=s;const g=this.getFileDownloadProxy(),u=this.getAuthKey(),E=this.getFileDNList();return g&&(s.startsWith("http://")?n=s.replace(/^http:\/\/[^/]+/,g):s.startsWith("https://")&&(n=s.replace(/^https:\/\/[^/]+/,g))),u&&n.indexOf("authKey=")===-1&&function(D,M){let T=!1;if(D){const P=D.match(/:\/\/([0-9]?\.)?(.[^/:]+)/),W=P&&P[2]||"";if(W.includes("rich-dev"))return!0;for(let iA=0;iA-1?`${n}&authKey=${u}`:`${n}?authKey=${u}`),n}getCurrentUserID(){var s,n;return(n=(s=this._core)===null||s===void 0?void 0:s.store.get("login"))===null||n===void 0?void 0:n.userId}getSDKAppID(){var s,n;return(n=(s=this._core)===null||s===void 0?void 0:s.store.get("instance"))===null||n===void 0?void 0:n.sdkAppId}getFileDownloadProxy(){var s,n;return((n=(s=this._core)===null||s===void 0?void 0:s.store.get("instance"))===null||n===void 0?void 0:n.fileDownloadProxy)||""}getFileUploadProxy(){var s,n;return((n=(s=this._core)===null||s===void 0?void 0:s.store.get("instance"))===null||n===void 0?void 0:n.fileUploadProxy)||""}getAuthKey(){var s,n;return((n=(s=this._core)===null||s===void 0?void 0:s.store.get("login"))===null||n===void 0?void 0:n.authKey)||""}isPrivateNetWork(){var s,n;return(n=(s=this._core)===null||s===void 0?void 0:s.store.get("instance"))===null||n===void 0?void 0:n.proxyServer}getPlatformFlags(){var s;const{IN_BROWSER:n,IN_MINI_APP:g,IN_RN_APP:u,IN_UNI_NATIVE_APP:E}=(s=this._core)===null||s===void 0?void 0:s.utils;return{IN_BROWSER:n,IN_MINI_APP:g,IN_RN_APP:u,IN_UNI_NATIVE_APP:E}}isEmpty(s){var n;const{isEmpty:g}=(n=this._core)===null||n===void 0?void 0:n.utils;return g(s)}generateURL(s,n){const{needAddAuthToUrl:g=!0}=n||{};return g?this.addAuthToUrl(s):s}_probeImageDimensionsMiniApp(s){var n;const{MINI_APP_NAMESPACE:g}=((n=this._core)===null||n===void 0?void 0:n.utils)||{};return new Promise(u=>{g.getImageInfo({src:s,success:E=>u({width:E.width,height:E.height}),fail:()=>u({width:0,height:0})})})}_shouldSkipProbing(){var s;const{IN_RN_APP:n,IS_IE:g,IE_VERSION:u,IN_WX_MINI_GAME:E}=((s=this._core)===null||s===void 0?void 0:s.utils)||{};return n||g&&u===9||E}_probeImageDimensionsWeb(s){return new Promise(n=>{const g=new Image,u=()=>{g.onload=null,g.onerror=null,g.src=""};g.onload=()=>{n({width:g.width,height:g.height}),u()},g.onerror=()=>{n({width:0,height:0}),u()},g.src=s})}},Yu={exports:{}},Vu=(iu||(iu=1,function(s){s.exports=function(n){var g=["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"];function u(LA,SA){var OA=LA[0],JA=LA[1],ne=LA[2],se=LA[3];JA=((JA+=((ne=((ne+=((se=((se+=((OA=((OA+=(JA&ne|~JA&se)+SA[0]-680876936|0)<<7|OA>>>25)+JA|0)&JA|~OA&ne)+SA[1]-389564586|0)<<12|se>>>20)+OA|0)&OA|~se&JA)+SA[2]+606105819|0)<<17|ne>>>15)+se|0)&se|~ne&OA)+SA[3]-1044525330|0)<<22|JA>>>10)+ne|0,JA=((JA+=((ne=((ne+=((se=((se+=((OA=((OA+=(JA&ne|~JA&se)+SA[4]-176418897|0)<<7|OA>>>25)+JA|0)&JA|~OA&ne)+SA[5]+1200080426|0)<<12|se>>>20)+OA|0)&OA|~se&JA)+SA[6]-1473231341|0)<<17|ne>>>15)+se|0)&se|~ne&OA)+SA[7]-45705983|0)<<22|JA>>>10)+ne|0,JA=((JA+=((ne=((ne+=((se=((se+=((OA=((OA+=(JA&ne|~JA&se)+SA[8]+1770035416|0)<<7|OA>>>25)+JA|0)&JA|~OA&ne)+SA[9]-1958414417|0)<<12|se>>>20)+OA|0)&OA|~se&JA)+SA[10]-42063|0)<<17|ne>>>15)+se|0)&se|~ne&OA)+SA[11]-1990404162|0)<<22|JA>>>10)+ne|0,JA=((JA+=((ne=((ne+=((se=((se+=((OA=((OA+=(JA&ne|~JA&se)+SA[12]+1804603682|0)<<7|OA>>>25)+JA|0)&JA|~OA&ne)+SA[13]-40341101|0)<<12|se>>>20)+OA|0)&OA|~se&JA)+SA[14]-1502002290|0)<<17|ne>>>15)+se|0)&se|~ne&OA)+SA[15]+1236535329|0)<<22|JA>>>10)+ne|0,JA=((JA+=((ne=((ne+=((se=((se+=((OA=((OA+=(JA&se|ne&~se)+SA[1]-165796510|0)<<5|OA>>>27)+JA|0)&ne|JA&~ne)+SA[6]-1069501632|0)<<9|se>>>23)+OA|0)&JA|OA&~JA)+SA[11]+643717713|0)<<14|ne>>>18)+se|0)&OA|se&~OA)+SA[0]-373897302|0)<<20|JA>>>12)+ne|0,JA=((JA+=((ne=((ne+=((se=((se+=((OA=((OA+=(JA&se|ne&~se)+SA[5]-701558691|0)<<5|OA>>>27)+JA|0)&ne|JA&~ne)+SA[10]+38016083|0)<<9|se>>>23)+OA|0)&JA|OA&~JA)+SA[15]-660478335|0)<<14|ne>>>18)+se|0)&OA|se&~OA)+SA[4]-405537848|0)<<20|JA>>>12)+ne|0,JA=((JA+=((ne=((ne+=((se=((se+=((OA=((OA+=(JA&se|ne&~se)+SA[9]+568446438|0)<<5|OA>>>27)+JA|0)&ne|JA&~ne)+SA[14]-1019803690|0)<<9|se>>>23)+OA|0)&JA|OA&~JA)+SA[3]-187363961|0)<<14|ne>>>18)+se|0)&OA|se&~OA)+SA[8]+1163531501|0)<<20|JA>>>12)+ne|0,JA=((JA+=((ne=((ne+=((se=((se+=((OA=((OA+=(JA&se|ne&~se)+SA[13]-1444681467|0)<<5|OA>>>27)+JA|0)&ne|JA&~ne)+SA[2]-51403784|0)<<9|se>>>23)+OA|0)&JA|OA&~JA)+SA[7]+1735328473|0)<<14|ne>>>18)+se|0)&OA|se&~OA)+SA[12]-1926607734|0)<<20|JA>>>12)+ne|0,JA=((JA+=((ne=((ne+=((se=((se+=((OA=((OA+=(JA^ne^se)+SA[5]-378558|0)<<4|OA>>>28)+JA|0)^JA^ne)+SA[8]-2022574463|0)<<11|se>>>21)+OA|0)^OA^JA)+SA[11]+1839030562|0)<<16|ne>>>16)+se|0)^se^OA)+SA[14]-35309556|0)<<23|JA>>>9)+ne|0,JA=((JA+=((ne=((ne+=((se=((se+=((OA=((OA+=(JA^ne^se)+SA[1]-1530992060|0)<<4|OA>>>28)+JA|0)^JA^ne)+SA[4]+1272893353|0)<<11|se>>>21)+OA|0)^OA^JA)+SA[7]-155497632|0)<<16|ne>>>16)+se|0)^se^OA)+SA[10]-1094730640|0)<<23|JA>>>9)+ne|0,JA=((JA+=((ne=((ne+=((se=((se+=((OA=((OA+=(JA^ne^se)+SA[13]+681279174|0)<<4|OA>>>28)+JA|0)^JA^ne)+SA[0]-358537222|0)<<11|se>>>21)+OA|0)^OA^JA)+SA[3]-722521979|0)<<16|ne>>>16)+se|0)^se^OA)+SA[6]+76029189|0)<<23|JA>>>9)+ne|0,JA=((JA+=((ne=((ne+=((se=((se+=((OA=((OA+=(JA^ne^se)+SA[9]-640364487|0)<<4|OA>>>28)+JA|0)^JA^ne)+SA[12]-421815835|0)<<11|se>>>21)+OA|0)^OA^JA)+SA[15]+530742520|0)<<16|ne>>>16)+se|0)^se^OA)+SA[2]-995338651|0)<<23|JA>>>9)+ne|0,JA=((JA+=((se=((se+=(JA^((OA=((OA+=(ne^(JA|~se))+SA[0]-198630844|0)<<6|OA>>>26)+JA|0)|~ne))+SA[7]+1126891415|0)<<10|se>>>22)+OA|0)^((ne=((ne+=(OA^(se|~JA))+SA[14]-1416354905|0)<<15|ne>>>17)+se|0)|~OA))+SA[5]-57434055|0)<<21|JA>>>11)+ne|0,JA=((JA+=((se=((se+=(JA^((OA=((OA+=(ne^(JA|~se))+SA[12]+1700485571|0)<<6|OA>>>26)+JA|0)|~ne))+SA[3]-1894986606|0)<<10|se>>>22)+OA|0)^((ne=((ne+=(OA^(se|~JA))+SA[10]-1051523|0)<<15|ne>>>17)+se|0)|~OA))+SA[1]-2054922799|0)<<21|JA>>>11)+ne|0,JA=((JA+=((se=((se+=(JA^((OA=((OA+=(ne^(JA|~se))+SA[8]+1873313359|0)<<6|OA>>>26)+JA|0)|~ne))+SA[15]-30611744|0)<<10|se>>>22)+OA|0)^((ne=((ne+=(OA^(se|~JA))+SA[6]-1560198380|0)<<15|ne>>>17)+se|0)|~OA))+SA[13]+1309151649|0)<<21|JA>>>11)+ne|0,JA=((JA+=((se=((se+=(JA^((OA=((OA+=(ne^(JA|~se))+SA[4]-145523070|0)<<6|OA>>>26)+JA|0)|~ne))+SA[11]-1120210379|0)<<10|se>>>22)+OA|0)^((ne=((ne+=(OA^(se|~JA))+SA[2]+718787259|0)<<15|ne>>>17)+se|0)|~OA))+SA[9]-343485551|0)<<21|JA>>>11)+ne|0,LA[0]=OA+LA[0]|0,LA[1]=JA+LA[1]|0,LA[2]=ne+LA[2]|0,LA[3]=se+LA[3]|0}function E(LA){var SA,OA=[];for(SA=0;SA<64;SA+=4)OA[SA>>2]=LA.charCodeAt(SA)+(LA.charCodeAt(SA+1)<<8)+(LA.charCodeAt(SA+2)<<16)+(LA.charCodeAt(SA+3)<<24);return OA}function m(LA){var SA,OA=[];for(SA=0;SA<64;SA+=4)OA[SA>>2]=LA[SA]+(LA[SA+1]<<8)+(LA[SA+2]<<16)+(LA[SA+3]<<24);return OA}function D(LA){var SA,OA,JA,ne,se,_i,Ti=LA.length,Lt=[1732584193,-271733879,-1732584194,271733878];for(SA=64;SA<=Ti;SA+=64)u(Lt,E(LA.substring(SA-64,SA)));for(OA=(LA=LA.substring(SA-64)).length,JA=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],SA=0;SA>2]|=LA.charCodeAt(SA)<<(SA%4<<3);if(JA[SA>>2]|=128<<(SA%4<<3),SA>55)for(u(Lt,JA),SA=0;SA<16;SA+=1)JA[SA]=0;return ne=(ne=8*Ti).toString(16).match(/(.*?)(.{0,8})$/),se=parseInt(ne[2],16),_i=parseInt(ne[1],16)||0,JA[14]=se,JA[15]=_i,u(Lt,JA),Lt}function M(LA){var SA,OA,JA,ne,se,_i,Ti=LA.length,Lt=[1732584193,-271733879,-1732584194,271733878];for(SA=64;SA<=Ti;SA+=64)u(Lt,m(LA.subarray(SA-64,SA)));for(OA=(LA=SA-64>2]|=LA[SA]<<(SA%4<<3);if(JA[SA>>2]|=128<<(SA%4<<3),SA>55)for(u(Lt,JA),SA=0;SA<16;SA+=1)JA[SA]=0;return ne=(ne=8*Ti).toString(16).match(/(.*?)(.{0,8})$/),se=parseInt(ne[2],16),_i=parseInt(ne[1],16)||0,JA[14]=se,JA[15]=_i,u(Lt,JA),Lt}function T(LA){var SA,OA="";for(SA=0;SA<4;SA+=1)OA+=g[LA>>8*SA+4&15]+g[LA>>8*SA&15];return OA}function P(LA){var SA;for(SA=0;SA"u"||ArrayBuffer.prototype.slice||function(){function LA(SA,OA){return(SA=0|SA||0)<0?Math.max(SA+OA,0):Math.min(SA,OA)}ArrayBuffer.prototype.slice=function(SA,OA){var JA,ne,se,_i,Ti=this.byteLength,Lt=LA(SA,Ti),Ni=Ti;return OA!==n&&(Ni=LA(OA,Ti)),Lt>Ni?new ArrayBuffer(0):(JA=Ni-Lt,ne=new ArrayBuffer(JA),se=new Uint8Array(ne),_i=new Uint8Array(this,Lt,JA),se.set(_i),ne)}}(),xA.prototype.append=function(LA){return this.appendBinary(W(LA)),this},xA.prototype.appendBinary=function(LA){this._buff+=LA,this._length+=LA.length;var SA,OA=this._buff.length;for(SA=64;SA<=OA;SA+=64)u(this._hash,E(this._buff.substring(SA-64,SA)));return this._buff=this._buff.substring(SA-64),this},xA.prototype.end=function(LA){var SA,OA,JA=this._buff,ne=JA.length,se=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];for(SA=0;SA>2]|=JA.charCodeAt(SA)<<(SA%4<<3);return this._finish(se,ne),OA=P(this._hash),LA&&(OA=kA(OA)),this.reset(),OA},xA.prototype.reset=function(){return this._buff="",this._length=0,this._hash=[1732584193,-271733879,-1732584194,271733878],this},xA.prototype.getState=function(){return{buff:this._buff,length:this._length,hash:this._hash.slice()}},xA.prototype.setState=function(LA){return this._buff=LA.buff,this._length=LA.length,this._hash=LA.hash,this},xA.prototype.destroy=function(){delete this._hash,delete this._buff,delete this._length},xA.prototype._finish=function(LA,SA){var OA,JA,ne,se=SA;if(LA[se>>2]|=128<<(se%4<<3),se>55)for(u(this._hash,LA),se=0;se<16;se+=1)LA[se]=0;OA=(OA=8*this._length).toString(16).match(/(.*?)(.{0,8})$/),JA=parseInt(OA[2],16),ne=parseInt(OA[1],16)||0,LA[14]=JA,LA[15]=ne,u(this._hash,LA)},xA.hash=function(LA,SA){return xA.hashBinary(W(LA),SA)},xA.hashBinary=function(LA,SA){var OA=P(D(LA));return SA?kA(OA):OA},xA.ArrayBuffer=function(){this.reset()},xA.ArrayBuffer.prototype.append=function(LA){var SA,OA=RA(this._buff.buffer,LA),JA=OA.length;for(this._length+=LA.byteLength,SA=64;SA<=JA;SA+=64)u(this._hash,m(OA.subarray(SA-64,SA)));return this._buff=SA-64>2]|=JA[SA]<<(SA%4<<3);return this._finish(se,ne),OA=P(this._hash),LA&&(OA=kA(OA)),this.reset(),OA},xA.ArrayBuffer.prototype.reset=function(){return this._buff=new Uint8Array(0),this._length=0,this._hash=[1732584193,-271733879,-1732584194,271733878],this},xA.ArrayBuffer.prototype.getState=function(){var LA=xA.prototype.getState.call(this);return LA.buff=EA(LA.buff),LA},xA.ArrayBuffer.prototype.setState=function(LA){return LA.buff=iA(LA.buff,!0),xA.prototype.setState.call(this,LA)},xA.ArrayBuffer.prototype.destroy=xA.prototype.destroy,xA.ArrayBuffer.prototype._finish=xA.prototype._finish,xA.ArrayBuffer.hash=function(LA,SA){var OA=P(M(new Uint8Array(LA)));return SA?kA(OA):OA},xA}()}(Yu)),Yu.exports),mC=rI(Vu),q=new class{constructor(){this.uploadFileTryCount=0,this.maxRetries=1,this.systemClockOffset=0,this.httpRequest=null,this.uploadFileType="",this.duration=900,this.fetchCosTryCount=0}init(s){var n;this._core=s;const{IN_MINI_APP:g}=s.utils;this.httpRequest=g?fI:Pu,(n=this.httpRequest)===null||n===void 0||n.init(s)}uploadToCOS(s){return pA(this,void 0,void 0,function*(){const n=`${Ca} uploadToCOS`,{ssoLog:g,utils:{safeStringify:u}}=this._core,{file:E}=s;this.uploadFileType=s.uploadFileType,g.debug("uploadToCOS",`${n} options:${u(s)}`);try{const m=Date.now(),D=yield this._createCosOptions(s),M=D.fileExistsInCOS?{data:{location:D.downloadUrl}}:yield this._uploadFile(D);this._handleUploadError(M,s);const T=this._createUploadResult(E,M),P=Date.now()-m,W=function(EA){return EA<1024?`${EA}B`:EA<1048576?`${Math.floor(EA/1024)}KB`:`${Math.floor(EA/1048576)}MB`}(E.size),iA=`size:${W} time:${P}ms speed:${Rr(1e3*E.size/P)}`;return g.debug("uploadToCOS",`${n} ok. name:${E.name} ${iA}`),{uploadOptions:D,response:T}}catch(m){throw g.warn("uploadToCOS",`${n} failed, error:${u(m)}`),m}})}_handleUploadError(s,n){var g,u;const{ChatError:E}=(g=this._core)===null||g===void 0?void 0:g.helper;if(s.statusCode===403)throw n.url,!((u=s?.data)===null||u===void 0)&&u.uploadIP&&s.data.uploadIP,new E({message:"Upload failed with status 403"})}_createUploadResult(s,n){return{fileName:s.name,fileSize:s.size,fileType:s.type.slice(s.type.indexOf("/")+1).toLowerCase(),location:n.data.location||"",uploadTime:Lr(Date.now(),!1),uploadSpeed:Rr(1e3*s.size/Lr(Date.now(),!1))}}_createCosOptions(s){return pA(this,void 0,void 0,function*(){const{fileName:n,resources:g,uploadMethod:u}=yield this._prepareUploadParams(s),E=this._isC2CConversation(s.message.conversationID)?1:2;try{const m=yield this._fetchCosSignatureUrl({fileType:this.uploadFileType,fileName:n,uploadMethod:u,duration:this.duration,userID:s.message.from,conversationType:E}),{uploadUrl:D,downloadUrl:M,requestSnapshotUrl:T,thumbUrl:P,largeUrl:W,fileKey:iA,existFlag:EA}=m,RA=!Ft.isPrivateNetWork()&&m.uploadIP;return{url:this._getRawOrUploadProxyUrl(D),fileType:this.uploadFileType,fileName:n,resources:g,downloadUrl:M,requestSnapshotUrl:T,thumbUrl:P,largeUrl:W,fileKey:iA,uploadIP:RA||"",fileExistsInCOS:EA===1,onProgress:kA=>this._handleUploadProgress(kA,s)}}catch(m){throw console.error("Failed to create COS pre-signed URL options:",m),m}})}_prepareUploadParams(s){return pA(this,void 0,void 0,function*(){const{ssoLog:n,utils:{safeStringify:g,isEmpty:u}}=this._core;n.debug("_prepareUploadParams",` prepareUploadParams:${g(s)}`);const{file:E}=s,{IN_MINI_APP:m,IN_RN_APP:D}=Ft.getPlatformFlags(),M=m||D,T=M&&s.message.type!==Ya,{name:P}=E,W=P.slice(P.lastIndexOf(".")),iA=`${kr(999999)}${W}`,EA=T?E.name:iA,RA=yield this._generateHashFileName(E);return{fileName:u(RA)?Ig(EA):`${RA}${W}`,resources:M?E.url:E,uploadMethod:M?1:0}})}_generateHashFileName(s){return pA(this,void 0,void 0,function*(){const{utils:{IN_MINI_APP:n,IN_BROWSER:g,IN_UNI_NATIVE_APP:u,isArray:E},ssoLog:m}=this._core,D=Date.now();let M="";return g&&(M=yield this._generateHashFileNameInWeb(s)),n&&(E(s.tempFiles)&&(s=s.tempFiles[0]),u||(M=yield this._generateFileNameInMiniProgram(s)),u&&(M=yield this._generateFileNameInUNINativeApp(s))),m.info("_generateHashFileName",`hashFileName:${M} costTime:${Date.now()-D}`),M})}_generateHashFileNameInWeb(s){return pA(this,void 0,void 0,function*(){const{ssoLog:n,utils:{safeStringify:g}}=this._core;let u="";try{u=yield new Promise((E,m)=>{const D=File.prototype.slice||File.prototype.mozSlice||File.prototype.webkitSlice;D||(n.warn("_generateHashFileNameInWeb","Browser does not support file slicing"),E(""));const M=10485760,T=Math.ceil(s.size/M);let P=0;const W=new mC.ArrayBuffer,iA=new FileReader,EA=setTimeout(()=>{iA.abort(),n.warn("_generateHashFileNameInWeb","File hash generation timeout"),E("")},2e3);function RA(){const kA=P*M,xA=kA+M>=s.size?s.size:kA+M;iA.readAsArrayBuffer(D.call(s,kA,xA))}iA.onload=kA=>{n.debug("_generateHashFileNameInWeb",`read chunk nr ${P+1} of ${T}`),W.append(kA.target.result),P++,P{clearTimeout(EA),m(kA)},RA()})}catch(E){n.warn("_generateHashFileNameInWeb",g(E))}return u})}_generateFileNameInMiniProgram(s){return pA(this,void 0,void 0,function*(){const{utils:{MINI_APP_NAMESPACE:n,safeStringify:g,isEmpty:u},ssoLog:E}=this._core;let m="";if(u(s.url))return E.warn("_generateFileNameInMiniProgram","file.url is empty"),m;if(typeof n?.getFileSystemManager!="function")return E.warn("_generateFileNameInUNINativeApp","getFileSystemManager is not a function"),m;try{m=yield new Promise((D,M)=>{n.getFileSystemManager().getFileInfo({filePath:s.url,success:T=>{D(T.digest)},fail:T=>{M(T)}})})}catch(D){E.warn("_generateFileNameInMiniProgram",g(D))}return m})}_generateFileNameInUNINativeApp(s){return pA(this,void 0,void 0,function*(){var n;const{utils:{safeStringify:g,isEmpty:u},ssoLog:E}=this._core;let m="";if(u(s.url))return E.warn("_generateFileNameInUNINativeApp","file.url is empty"),m;if(typeof((n=plus==null?void 0:plus.io)===null||n===void 0?void 0:n.getFileInfo)!="function")return E.warn("_generateFileNameInUNINativeApp","plus.io.getFileInfo is not a function"),m;try{m=yield new Promise((D,M)=>{plus.io.getFileInfo({filePath:s.url,success:T=>{D(T.digest)},fail:T=>{M(T)}})})}catch(D){E.warn("_generateFileNameInMiniProgram",g(D))}return m})}_handleUploadProgress(s,n){if(typeof n.onProgress=="function")try{n.onProgress(s.percent)}catch(g){throw console.warn("Upload progress callback error:",g),g}}_fetchCosSignatureUrl(s){return pA(this,void 0,void 0,function*(){const{ssoLog:n,utils:{safeStringify:g}}=this._core,u=Ft.isSimpleCos(),E=this._prepareCosRequestData(s),m=u?"im_cos_msg.simple_sig":"im_cos_msg.pre_sig";try{const D=yield function(T,P,W){return pA(this,void 0,void 0,function*(){try{const{helper:iA,channel:EA}=W,RA=iA.generateCosSpecifiedData({servcmd:T,data:P}),kA=`${RA.head.seq}${T}`;return yield EA.sendPacket(RA,{requestId:kA})}catch(iA){throw console.warn("getCosSig error:",iA),iA}})}(m,E,this._core);this.fetchCosTryCount=0;const M=this._processResponse(D);return n.debug("_fetchCosSignatureUrl",` ok. isSimpleCos:${u} data:${g(M)}`),M||{}}catch(D){if(this.fetchCosTryCount<1)return this.fetchCosTryCount++,this._fetchCosSignatureUrl(s);throw this.fetchCosTryCount=0,D}})}_processResponse(s){var n;const g=Ft.isSimpleCos(),u=g?(n=s?.rpt_pre_sig)===null||n===void 0?void 0:n[0]:s;if(!u)return{};if(g){const{str_final_ip:W,rpt_pre_sig:iA,uint32_file_id:EA,uint32_exist_flag:RA,str_download_url:kA,str_upload_url:xA,str_snapshot_url:LA,str_file_key:SA}=u;return{uploadIP:W,preSig:iA,fileID:EA,existFlag:RA,downloadUrl:kA,uploadUrl:xA,requestSnapshotUrl:LA,fileKey:SA}}const{upload_url:E,download_url:m,snapshot_url:D,thumb_url:M,large_url:T,file_key:P}=u;return{uploadUrl:E,downloadUrl:m,requestSnapshotUrl:D,thumbUrl:M,largeUrl:T,fileKey:P}}_prepareCosRequestData(s){return Ft.isSimpleCos()?{uint32_upload_method:s.uploadMethod,uint32_platform:Ft.getPlatform(),uint32_sdkappid:Ft.getSDKAppID(),str_user_id:s.userID,uint32_scene:s.conversationType,rpt_upload_object:[{uint32_file_id:1,uint32_file_type:s.fileType,str_file_name:s.fileName}]}:{file_type:s.fileType,file_name:s.fileName,upload_method:s.uploadMethod,Duration:s.duration}}_uploadFile(s){return pA(this,void 0,void 0,function*(){return new Promise((n,g)=>{this.httpRequest.request(s,(u,E)=>{u&&this.uploadFileTryCount=3e4}_syncSystemClock(s){var n,g,u;const E=((n=s.headers)===null||n===void 0?void 0:n.date)||((g=s.headers)===null||g===void 0?void 0:g.Date)||((u=s.error)===null||u===void 0?void 0:u.ServerTime);if(E){const m=Date.now(),D=Date.parse(E);this.systemClockOffset=D-m}}_getRawOrUploadProxyUrl(s){const n=Ft.getFileUploadProxy();let g=s;return n&&(g=s.replace(/^https:\/\/[^/]+/,n)),g}_isC2CConversation(s){return s.slice(0,3)==="C2C"}};const L=2108,oA=2251,G=2252,x=2253,tA=["jpg","jpeg","gif","png","bmp","image","webp"],uA={JPG:1,JPEG:1,GIF:2,PNG:3,BMP:4,UNKNOWN:255},wA=1,XA=2;class Qe{constructor(n,g){this.instanceID=kr(9999999),this.sizeType=n.type||0,this.type=0,this.size=n.size||0,this.width=n.width||0,this.height=n.height||0,this.imageUrl=Ft.addAuthToUrl(n.imageUrl||n.url||""),this.url=Ft.addAuthToUrl(n.url||g)}setSizeType(n){this.sizeType=n}setType(n){this.type=n}setImageUrl(n){n&&(this.imageUrl=Ft.addAuthToUrl(n))}getImageUrl(){return this.imageUrl}}function p(s){const{originUrl:n,originWidth:g,originHeight:u,min:E=198}=s,m=parseInt(g)||0,D=parseInt(u)||0,M={url:void 0,width:0,height:0};if((m<=D?m:D)<=E)M.url=n,M.width=m,M.height=D;else{D<=m?(M.width=Math.ceil(m*E/D),M.height=E):(M.width=E,M.height=Math.ceil(D*E/m));const T=n&&n.indexOf("?")>-1?`${n}&`:`${n}?`;M.url=E===198?`${T}imageView2/3/w/198/h/198`:`${T}imageView2/3/w/720/h/720`}if(n===void 0){const{url:T}=M;return Do(M,["url"])}return M}class B{constructor(n){this._imageMemoryURL="",this._percent=0,this.type=ic;const{uuid:g,file:u,imageFormat:E,imageInfoArray:m=[],isCustomUpload:D=!1}=n;this._imageMemoryURL=this.createImageDataAsURL(u),this.content={imageFormat:E,uuid:g,imageInfoArray:[]},this[Jr]=D,this.initImageInfoArray(m),this.autoFixUrl()}static parseServerPushElement(n){const{MsgContent:g}=n,{ImageFormat:u,ImageInfoArray:E,UUID:m}=g,D=function(M){return M.map(T=>({size:T.Size,type:T.Type,width:T.Width,height:T.Height,url:T.URL}))}(E);return new B({imageFormat:u,imageInfoArray:D,uuid:m})}createImageDataAsURL(n){let g="";const{IN_MINI_APP:u,IN_RN_APP:E,IN_BROWSER:m}=Ft.getPlatformFlags();return n&&((u||E)&&(g=n.url),m&&(g=window.URL.createObjectURL(n))),g}initImageInfoArray(n=[]){const g={type:0,size:0,width:0,height:0,url:""};for(let u=0;u<3;u++){const E=n[u]||Object.assign({},g),m=new Qe(E,this._imageMemoryURL);m.setSizeType(u+1),m.setType(u),this.addImageInfo(m)}this.updateAccessSideImageInfoArray()}autoFixUrl(){const n=["http","https"];this.content.imageInfoArray.forEach(g=>{if(!g.url||g.imageUrl==="")return;const[u,...E]=g.imageUrl.split("://"),m=E.join("://");n.includes(u)||g.setImageUrl(`https://${m}`)})}updatePercent(n){this._percent=Math.min(n,1)}updateImageFormat(n){this.content.imageFormat=uA[n.toUpperCase()]||uA.UNKNOWN}addImageInfo(n){this.content.imageInfoArray.length>=3||this.content.imageInfoArray.push(n)}updateImageInfoArray(n){const g=this.content.imageInfoArray.length;let u;for(let E=0;E({InstanceId:g.instanceID,Type:g.sizeType,MsgType:g.type,Size:g.size,Width:g.width,Height:g.height,URL:Ft.removeAuthToUrl(g.imageUrl)}))}}const v=new class{init(s){this.core=s}},N={[eu]:"i",[gl]:"a",[ha]:"v",[UE]:"f"};let O=null,z=null;function X(s){var n;const{store:g,utils:{isNumber:u,safeStringify:E},ssoLog:m}=v.core;try{const D=((n=g.get("cloudConfig"))===null||n===void 0?void 0:n.upload_size_limit)||"";D!==z&&(z=D,O=JSON.parse(D)||{});const M=O?.[N[s]];if(u(M))return 1024*M*1024}catch(D){m.debug("getCloudControlUploadSizeLimit",E(D))}return null}var nA=new class{constructor(){this._messageOptionsMap=new Map}init(s){var n;this._core=s;const{notificationCenter:g,helper:u,InnerEvent:E,message:m}=s;u.registerApi({apiName:"createImageMessage",context:this}),u.registerExperimentalAPI("createImageMessage",this,"createCustomUploadImageMessage"),(n=m?.messageFactory)===null||n===void 0||n.registerElementClass(ic,B),g.subscribeInnerEvent(E.DESTROY,this._dispose,this)}createImageMessage(s){var n,g,u;try{const E=(n=this._core.store.get("login"))===null||n===void 0?void 0:n.userId,m=(u=(g=this._core)===null||g===void 0?void 0:g.message.messageFactory)===null||u===void 0?void 0:u.createMessage(Object.assign(Object.assign({},s),{from:E})),D=this._processImage(s);s.payload.file=D;const M={imageFormat:uA.UNKNOWN,uuid:Ft.generateUUID(D),file:D,imageInfoArray:[]},T=new B(M);return m.setElement(T),this._messageOptionsMap.set(m.clientSequence,s),m}catch(E){throw E}}createCustomUploadImageMessage(s){var n,g,u,E;const{store:m,utils:{isEmpty:D}}=this._core,M=(n=m.get("login"))===null||n===void 0?void 0:n.userId,T=(u=(g=this._core)===null||g===void 0?void 0:g.message.messageFactory)===null||u===void 0?void 0:u.createMessage(Object.assign(Object.assign({},s),{from:M})),{largeImageUuid:P,largeFileSize:W,largeImageWidth:iA,largeImageHeight:EA,largeImageUrl:RA,originImageUuid:kA,originFileSize:xA,originImageWidth:LA,originImageHeight:SA,originImageUrl:OA,thumbImageUuid:JA,thumbFileSize:ne,thumbImageWidth:se,thumbImageHeight:_i,thumbImageUrl:Ti}=((E=s?.payload)===null||E===void 0?void 0:E.file)||{};if(D(OA)||D(kA))throw new Error("createImageMessageExperimental originImageUrl or originImageUuid is empty");const Lt=new B({imageFormat:uA.UNKNOWN,uuid:kA,imageInfoArray:[{instanceID:kA,size:xA,width:LA,height:SA,imageUrl:OA,url:OA},{instanceID:P,size:W,width:iA,height:EA,imageUrl:RA,url:RA},{instanceID:JA,size:ne,width:se,height:_i,imageUrl:Ti,url:Ti}],isCustomUpload:!0});return T.setElement(Lt),this._messageOptionsMap.set(T.clientSequence,s),T._skipUpload=!0,T}upload(s){return pA(this,void 0,void 0,function*(){const n=s.getElements()[0],{file:g}=this._messageOptionsMap.get(s.clientSequence).payload;this._validateBeforeUploadImage(g);const u=yield this._performImageUpload(n,s,g),E=this._generateImageInfo(u);return n.updateImageFormat(u?.fileType),n.updateImageInfoArray(E),this._updateImageType(n.content.imageInfoArray),s})}_performImageUpload(s,n,g){return pA(this,void 0,void 0,function*(){const{to:u}=n,E={uploadFileType:eu,file:g,to:u,message:n,onProgress:M=>{var T,P;s.updatePercent(M),(P=(T=this._messageOptionsMap.get(n.clientSequence))===null||T===void 0?void 0:T.onProgress)===null||P===void 0||P.call(T,M)}},{uploadOptions:m,response:D}=yield q.uploadToCOS(E);return this._parseResponse(m,D)})}_generateImageInfo(s){const{location:n,fileSize:g,width:u,height:E,smallImageUrl:m,smallImageWidth:D,smallImageHeight:M,largeImageUrl:T,largeImageWidth:P,largeImageHeight:W,imageInfoArray:iA}=s,EA=Ft.addAuthToUrl(n),RA={size:g,url:EA,width:u,height:E};return iA?.length>0?this._processImageInfoArray(iA,g):m&&T?[Object.assign({},RA),{largeImageUrl:T,largeImageWidth:P,largeImageHeight:W},{smallImageUrl:m,smallImageWidth:D,smallImageHeight:M}]:[Object.assign({},RA),this._generateThumbInfo(EA,u,E,720),this._generateThumbInfo(EA,u,E,198)]}_generateThumbInfo(s,n,g,u){return p({originUrl:s,originWidth:n,originHeight:g,min:u})}_processImageInfoArray(s,n){let g,u,E;for(const m of s)m.type===1?(u=m,u.size=n):m.type===2?(E=m,E.size=n):(g=m,g.size=n);return[Object.assign({},g),Object.assign({},E),Object.assign({},u)]}_parseResponse(s,n){return pA(this,void 0,void 0,function*(){try{const{thumbUrl:g,largeUrl:u,downloadUrl:E}=s;if(g&&u&&(yield this._getImageInfoByUrl(g,n,"thumb"),yield this._getImageInfoByUrl(u,n,"large")),Ft.isSimpleCos()&&!Ft.isPrivateNetWork()&&(yield this._getImageInfoArray(E,n),n?.uploadIP)){const m=this._extractDomainFromUrl(E);m&&(yield this._getDownloadIP(m,n))}return n}catch(g){throw g}})}_extractDomainFromUrl(s){var n;try{const g=s.match(/:\/\/([^\/]+)/);return g?g[1]:null}catch(g){return(n=this._core)===null||n===void 0||n.ssoLog.warn("_extractDomainFromUrl",`Failed to extract domain from URL:${g.message}`),null}}_getImageInfoByUrl(s,n,g){return pA(this,void 0,void 0,function*(){var u;try{const E=Ft.addAuthToUrl(s),{width:m=0,height:D=0}=yield Ft.probeImageWidthHeight(E);n.width=m,n.height=D,g==="thumb"?(n.smallImageUrl=s,n.smallImageWidth=m,n.smallImageHeight=D):(n.largeImageUrl=s,n.largeImageWidth=m,n.largeImageHeight=D)}catch(E){(u=this._core)===null||u===void 0||u.ssoLog.warn("_getImageInfoByUrl",`Failed to get ${g} image info:${E.message}`)}})}_validateBeforeUploadImage(s){var n;const{ChatError:g}=(n=this._core)===null||n===void 0?void 0:n.helper;if(!s)throw new g({code:oA});this._checkImageType(s),this._checkImageSize(s)}_processImage(s){var n;try{const{IN_MINI_APP:g}=(n=this._core)===null||n===void 0?void 0:n.utils;let{file:u}=s.payload;return u=g?this._processMiniAppImageFile(u):this._processWebImageFile(u),u}catch(g){throw g}}_processMiniAppImageFile(s){al(s)&&console.warn("FileUnsupportedInMiniApp","createImageMessage");const n=s.tempFiles[0].path||s.tempFiles[0].tempFilePath;return{url:n,name:n.slice(n.lastIndexOf("/")+1),size:s.tempFiles&&s.tempFiles[0].size||1,type:n.slice(n.lastIndexOf(".")+1).toLowerCase()}}_processWebImageFile(s){var n;const{ChatError:g}=(n=this._core)===null||n===void 0?void 0:n.helper,u=Ft.extractFileFromInput(s);if(!u)throw new g({message:"Invalid file. Pass either `e.target` (from file input) or a File object"});return u}_getDownloadIP(s,n){return pA(this,void 0,void 0,function*(){const g=`${Ca} getDownloadIP domainName: ${s}`;try{const u=yield function(m,D){return pA(this,void 0,void 0,function*(){try{const{helper:M,channel:T}=D,P="im_cos_msg.get_final_ip",W={str_domain:m},iA=M.generateProtocolData({servcmd:P,data:W}),EA=`${iA.head.seq}${P}`;return yield T.sendPacket(iA,{requestId:EA})}catch(M){throw console.warn("getFinalIP error:",M),M}})}(s,this._core);if(!u||!u.str_final_ip)return;console.log(`${g} ok. downloadIP:${u}`);const E=n.location.split("/");E[0]=u.str_final_ip,n.location=E.join("/")}catch(u){console.warn(u)}})}_getImageInfoArray(s,n){return pA(this,void 0,void 0,function*(){try{const g=yield function(u,E){return pA(this,void 0,void 0,function*(){try{const{helper:m,channel:D}=E,M="im_cos_msg.get_imageinfo",T={str_image_url:u},P=m.generateProtocolData({servcmd:M,data:T}),W=`${P.head.seq}${M}`;return yield D.sendPacket(P,{requestId:W})}catch(m){throw console.warn("getImageInfo error:",m),m}})}(s,this._core);return n.imageInfoArray=this._processImageInfoResponse(g),n}catch(g){throw n.imageInfoArray=void 0,g}})}_processImageInfoResponse(s){if(!s)return[];const{rpt_msg_image_info:n}=s;return n.map(g=>({type:g.uint32_image_type,url:g.str_url,width:g.uint32_width,height:g.uint32_height,imageFormat:g.str_image_format}))}_checkImageType(s){const{utils:n,helper:g}=this._core;let u="";if(n.IN_MINI_APP&&(u=s.url.slice(s.url.lastIndexOf(".")+1)),n.IN_BROWSER&&(u=s.name.slice(s.name.lastIndexOf(".")+1)),tA.indexOf(u.toLowerCase())<0)throw new g.ChatError({code:G})}_checkImageSize(s){const{utils:n,helper:g,store:u}=this._core;let E=0;if(E=(n.IN_MINI_APP,s.size),E===0)throw new g.ChatError({code:L});if(E>=(X(eu)||20971520))throw new g.ChatError({code:x})}_updateImageType(s){s[1].type=XA,s[2].type=wA}_reset(){this._messageOptionsMap.clear()}_dispose(){this._reset();const{notificationCenter:s,InnerEvent:n}=this._core;s.unSubscribeInnerEvent(n.DESTROY,this._dispose,this)}};const DA=2108,GA=2401,VA=2402,ee="2.5.0",Ee="1.18.0";function Ke(s,n){const g=s.split("."),u=n.split("."),E=Math.max(g.length,u.length);for(;g.lengthM)return 1;if(D0;return{isValid:n,error:n?null:{message:"content can not be empty"}}}transformToServerFormat(n){const{isMergerMessage:g=!1}=n||{},u=g?this.payload:this.content,{uuid:E,downloadFlag:m,fileUrl:D,fileName:M,fileSize:T}=u;return{MsgType:this.type,MsgContent:{Download_Flag:m,Url:Ft.removeAuthToUrl(D),FileName:M,FileSize:T,UUID:E}}}_getFileInfo(n){const{utils:{IN_UNI_NATIVE_APP:g}}=v.core;if(n.fileName&&n.fileSize)return{size:n.fileSize,name:n.fileName};const{file:u}=n;return u?(g&&this._processNativeAppFile(u),{size:u.size,name:u.name}):{size:0,name:""}}_processNativeAppFile(n){if(n.path&&n.path.includes(".")){const g=n.path.slice(n.path.lastIndexOf(".")+1).toLowerCase();n.type=g,n.name||(n.name=`${kr(999999)}.${g}`)}n.name||(n.type="",n.name=n.path.slice(n.path.lastIndexOf("/")+1).toLowerCase()),n.suffix&&(n.type=n.suffix),n.url||(n.url=n.path)}}ot=Jr;var kt=new class{constructor(){this._messageOptionsMap=new Map}init(s){var n;this._core=s;const{notificationCenter:g,helper:u,InnerEvent:E,message:m}=s;u.registerApi({apiName:"createFileMessage",context:this}),u.registerExperimentalAPI("createFileMessage",this,"createCustomUploadFileMessage"),(n=m?.messageFactory)===null||n===void 0||n.registerElementClass(Ya,at),g.subscribeInnerEvent(E.DESTROY,this._dispose,this)}createFileMessage(s){var n,g,u;try{this._checkVersion();const E=this._processFile(s.payload.file);s.payload.file=E;const m=(n=this._core.store.get("login"))===null||n===void 0?void 0:n.userId,D=(u=(g=this._core)===null||g===void 0?void 0:g.message.messageFactory)===null||u===void 0?void 0:u.createMessage(Object.assign(Object.assign({},s),{from:m})),M={uuid:Ft.generateUUID(E),file:E},T=new at(M);return D.setElement(T),this._messageOptionsMap.set(D.clientSequence,s),D}catch(E){throw E}}createCustomUploadFileMessage(s){var n,g,u;try{const{store:E,message:m,utils:{isEmpty:D}}=this._core,M=(n=E.get("login"))===null||n===void 0?void 0:n.userId,{url:T,uuid:P,fileSize:W,fileName:iA=""}=((g=s?.payload)===null||g===void 0?void 0:g.file)||{};if(D(T))throw new Error("url is required");const EA=(u=m.messageFactory)===null||u===void 0?void 0:u.createMessage(Object.assign(Object.assign({},s),{from:M})),RA=new at({url:T,uuid:P,file:{size:W,name:iA},isCustomUpload:!0});return EA.setElement(RA),EA}catch(E){throw E}}upload(s){return pA(this,void 0,void 0,function*(){const{file:n}=this._messageOptionsMap.get(s.clientSequence).payload;this._validateBeforeUploadFile(n);const g=s.getElements()[0],u=yield this._performFileUpload(g,s,n),E=Ft.addAuthToUrl(u?.location);return g.updateFileUrl(E),s})}_validateBeforeUploadFile(s){const{helper:{ChatError:n}}=this._core;if(!s)throw new n({code:GA});const g=X(UE)||104857600;if(s.size>g)throw new n({code:VA});if(s.size===0)throw new n({code:DA})}_performFileUpload(s,n,g){return pA(this,void 0,void 0,function*(){const{to:u}=n,E={uploadFileType:UE,file:g,to:u,message:n,onProgress:D=>{var M,T;s.updatePercent(D),(T=(M=this._messageOptionsMap.get(n.clientSequence))===null||M===void 0?void 0:M.onProgress)===null||T===void 0||T.call(M,D)}},{response:m}=yield q.uploadToCOS(E);return m})}_processFile(s){var n,g;const{IN_BROWSER:u,IN_RN_APP:E,IN_WX_MINI_APP:m,IN_QQ_MINI_APP:D,IN_UNI_NATIVE_APP:M}=(n=this._core)===null||n===void 0?void 0:n.utils,{ChatError:T}=(g=this._core)===null||g===void 0?void 0:g.helper;if(u||M){const P=Ft.extractFileFromInput(s);if(!P)throw new T({message:"Invalid file. Pass either `e.target` (from file input) or a File object"});return P}if(m||D){const{tempFiles:P}=s;return Object.assign(Object.assign({},P[0]),{url:P[0].path})}return E?Object.assign(Object.assign({},s),{url:s.uri}):s}_checkVersion(){var s,n;const{MINI_APP_NAMESPACE:g,IN_MINI_APP:u,IN_WX_MINI_APP:E,IN_QQ_MINI_APP:m,IN_UNI_NATIVE_APP:D}=(s=this._core)===null||s===void 0?void 0:s.utils,{ChatError:M}=(n=this._core)===null||n===void 0?void 0:n.helper;if(u){if(!(E||m||D))throw new M({message:"Unsupported mini app environment"});const T=g.getSystemInfoSync().SDKVersion;if(E&&Ke(T,ee)<0)throw new M({message:`WXChooseMessageFile requires SDK version ${ee} or higher`});if(m&&Ke(T,Ee)<0)throw new M({message:`QQChooseMessageFile requires SDK version ${Ee} or higher`})}}_reset(){this._messageOptionsMap.clear()}_dispose(){this._reset();const{notificationCenter:s,InnerEvent:n}=this._core;s.unSubscribeInnerEvent(n.DESTROY,this._dispose,this)}};const Yt=2108,Ui=2351,ao=2352,zi=["mp4","quicktime","mov","video"];var ui;class Po{constructor(n){this.type=Ul,this.uploadProgress=0,this[ui]=!1;const g=typeof n?.videoSecond=="number"?n?.videoSecond:0;this[Jr]=n.isCustomUpload||!1,this.content={remoteVideoUrl:Ft.addAuthToUrl(n.remoteVideoUrl||n.videoUrl||""),videoFormat:n.videoFormat,videoSecond:parseInt(g?.toString(),10),videoSize:n.videoSize,videoUrl:Ft.addAuthToUrl(n.videoUrl),videoDownloadFlag:2,videoUUID:n.videoUUID,thumbUUID:n.thumbUUID,thumbFormat:n.thumbFormat,thumbWidth:n.thumbWidth,snapshotWidth:n.thumbWidth,thumbHeight:n.thumbHeight,snapshotHeight:n.thumbHeight,thumbSize:n.thumbSize,snapshotSize:n.thumbSize,thumbDownloadFlag:2,thumbUrl:Ft.addAuthToUrl(n.thumbUrl),snapshotUrl:Ft.addAuthToUrl(n.thumbUrl)}}static parseServerPushElement(n){const{MsgContent:g}=n,{VideoUrl:u,VideoFormat:E,VideoSecond:m,VideoSize:D,VideoDownloadFlag:M,VideoUUID:T,ThumbUUID:P,ThumbFormat:W,ThumbWidth:iA,SnapshotWidth:EA,ThumbHeight:RA,SnapshotHeight:kA,ThumbSize:xA,SnapshotSize:LA,ThumbDownloadFlag:SA,ThumbUrl:OA,SnapshotUrl:JA}=g;return new Po({videoUrl:u,videoFormat:E,videoSecond:m,videoSize:D,videoDownloadFlag:M,videoUUID:T,thumbUUID:P,thumbFormat:W,thumbWidth:iA,snapshotWidth:EA,thumbHeight:RA,snapshotHeight:kA,thumbSize:xA,snapshotSize:LA,thumbDownloadFlag:SA,thumbUrl:OA,snapshotUrl:JA})}updatePercent(n){this.uploadProgress=Math.min(n,1)}updateVideoUrl(n){n&&(this.content.remoteVideoUrl=n)}updateSnapshotInfo(n){const{snapshotUrl:g,snapshotWidth:u,snapshotHeight:E}=n;Ft.isEmpty(g)||(this.content.thumbUrl=this.content.snapshotUrl=g),Ft.isEmpty(u)||(this.content.thumbWidth=this.content.snapshotWidth=Number(u)),Ft.isEmpty(E)||(this.content.thumbHeight=this.content.snapshotHeight=Number(E))}validateBeforeSend(){if(this[Jr])return{isValid:!0};const n=this.content.remoteVideoUrl!=="";return{isValid:n,error:n?null:{message:"content can not be empty"}}}transformToServerFormat(n){const{isMergerMessage:g=!1}=n||{},u=g?this.payload:this.content,{remoteVideoUrl:E,videoFormat:m,videoSecond:D,videoSize:M,videoDownloadFlag:T,videoUUID:P,thumbUUID:W,thumbFormat:iA,thumbWidth:EA,snapshotWidth:RA,thumbHeight:kA,snapshotHeight:xA,thumbSize:LA,snapshotSize:SA,thumbDownloadFlag:OA,thumbUrl:JA,snapshotUrl:ne}=u;return{MsgType:this.type,MsgContent:{VideoUrl:Ft.removeAuthToUrl(E),VideoFormat:m,VideoSecond:D,VideoSize:M,VideoDownloadFlag:T,VideoUUID:P,ThumbUUID:W,ThumbFormat:iA,ThumbWidth:EA,SnapshotWidth:RA,ThumbHeight:kA,SnapshotHeight:xA,ThumbSize:LA,SnapshotSize:SA,ThumbDownloadFlag:OA,ThumbUrl:Ft.removeAuthToUrl(JA),SnapshotUrl:Ft.removeAuthToUrl(ne)}}}}ui=Jr;var As,pi=new class{constructor(){this._messageOptionsMap=new Map}init(s){var n;this._core=s;const{notificationCenter:g,helper:u,InnerEvent:E,message:m}=s;u.registerApi({apiName:"createVideoMessage",context:this}),u.registerExperimentalAPI("createVideoMessage",this,"createCustomUploadVideoMessage"),(n=m?.messageFactory)===null||n===void 0||n.registerElementClass(Ul,Po),g.subscribeInnerEvent(E.DESTROY,this._dispose,this)}createVideoMessage(s){var n,g,u;try{const E=this._processVideo(s);s.payload.file=E;const m=(n=this._core.store.get("login"))===null||n===void 0?void 0:n.userId,D=(u=(g=this._core)===null||g===void 0?void 0:g.message.messageFactory)===null||u===void 0?void 0:u.createMessage(Object.assign(Object.assign({},s),{from:m})),M={videoFormat:E.videoFile.type,videoSecond:ar(E.videoFile.second,0),videoSize:E.videoFile.size,remoteVideoUrl:"",videoUrl:E.videoFile.url,videoUUID:Ft.generateUUID(E.videoFile),thumbUUID:Ft.generateUUID(E.videoFile,"jpg"),thumbWidth:E.width||200,thumbHeight:E.height||200,thumbUrl:E.thumbUrl,thumbSize:E.thumbSize,thumbFormat:"jpg"},T=new Po(M);return D.setElement(T),this._messageOptionsMap.set(D.clientSequence,s),D}catch(E){throw E}}createCustomUploadVideoMessage(s){var n,g,u;try{const{store:E,message:m}=this._core;this._validateCustomUploadVideoMessage(s);const D=(n=E.get("login"))===null||n===void 0?void 0:n.userId,{videoUrl:M,videoUuid:T,duration:P,snapshotUrl:W,snapshotUuid:iA,videoFileSize:EA,videoType:RA,snapshotWidth:kA,snapshotHeight:xA,snapshotFileSize:LA,snapshotType:SA="jpg"}=((g=s?.payload)===null||g===void 0?void 0:g.file)||{},OA=(u=m.messageFactory)===null||u===void 0?void 0:u.createMessage(Object.assign(Object.assign({},s),{from:D})),JA=new Po({videoFormat:RA,videoSecond:P||0,videoSize:EA,remoteVideoUrl:M,videoUrl:M,videoUUID:T,thumbUUID:iA,thumbWidth:kA||200,thumbHeight:xA||200,thumbUrl:W,thumbSize:LA,thumbFormat:SA,isCustomUpload:!0});return OA.setElement(JA),this._messageOptionsMap.set(OA.clientSequence,s),OA}catch(E){throw E}}upload(s){return pA(this,void 0,void 0,function*(){const n=s.getElements()[0],{file:g}=this._messageOptionsMap.get(s.clientSequence).payload;this._validateBeforeUploadVideo(g);const u=yield this._performVideoUpload(n,s,g),{location:E,snapshotInfo:m}=u,D=Ft.addAuthToUrl(E);return n.updateVideoUrl(D),Ft.isEmpty(m)||n.updateSnapshotInfo(m),s})}_validateBeforeUploadVideo(s){const{helper:{ChatError:n}}=this._core,g=X(ha)||104857600;if(s.videoFile.size>g)throw new n({code:Ui});if(s.videoFile.size===0)throw new n({code:Yt});if(zi.indexOf(s.videoFile.type)===-1)throw new n({code:ao})}_validateCustomUploadVideoMessage(s){var n;const{utils:{isEmpty:g,isNumber:u}}=this._core,{videoUrl:E,videoUuid:m,duration:D,snapshotUrl:M,snapshotUuid:T}=((n=s?.payload)===null||n===void 0?void 0:n.file)||{};if(g(E)||g(m)||!u(D)||g(M)||g(T))throw new Error("Invalid video message options: missing required fields (videoUrl, videoUuid, duration, snapshotUrl, snapshotUuid)")}_performVideoUpload(s,n,g){return pA(this,void 0,void 0,function*(){const{to:u}=n,E={uploadFileType:ha,file:g,to:u,message:n,onProgress:M=>{var T,P;s.updatePercent(M),(P=(T=this._messageOptionsMap.get(n.clientSequence))===null||T===void 0?void 0:T.onProgress)===null||P===void 0||P.call(T,M)}},{response:m,uploadOptions:D}=yield q.uploadToCOS(E);return{snapshotInfo:yield this._getSnapshotInfoByUrl(D.requestSnapshotUrl),location:m.location}})}_processVideo(s){var n,g;try{const{ChatError:u}=(n=this._core)===null||n===void 0?void 0:n.helper,{IN_MINI_APP:E,IN_BROWSER:m}=(g=this._core)===null||g===void 0?void 0:g.utils;let{file:D}=s.payload,M={};if(E&&(M=this._processMiniVideoFile(D),D.name=M.name,D.url=M.url,D.type=M.type),m){const T=Ft.extractFileFromInput(D);if(!T)throw new u({message:"Invalid file. Pass either `e.target` (from file input) or a File object"});D=T,M=this._processWebVideoFile(D)}return D.videoFile=M,D.thumbUrl="",D.thumbSize=0,D}catch(u){throw console.warn(`${Ca} _processFile error:`,u),u}}_processMiniVideoFile(s){const{utils:{IN_UNI_NATIVE_APP:n},helper:{ChatError:g}}=this._core;if(al(s))throw new g({message:"FileUnsupportedInMiniApp"});Array.isArray(s.tempFiles)&&(s=s.tempFiles[0]);let u=s.tempFilePath.slice(s.tempFilePath.lastIndexOf(".")+1).toLowerCase();return n&&(u=s.fileType||u),{url:s.tempFilePath,name:s.tempFilePath.slice(s.tempFilePath.lastIndexOf("/")+1),size:s.size||1,second:s.duration||0,type:u}}_processWebVideoFile(s){const{name:n,size:g=1,duration:u=0,type:E}=s,m=E.split("/")[1];return{url:window.URL.createObjectURL(s),name:n,size:g,second:u,type:m}}_getSnapshotInfoByUrl(s){return pA(this,void 0,void 0,function*(){const{ssoLog:n}=this._core;try{n.debug("_getSnapshotInfoByUrl",`${Ca} _getSnapshotInfoByUrl url:${s}`);const g={version:1,platform:Ft.getPlatform(),cover_name:Ig(kr(99999)),snapshot_url:s},u=yield function(T,P){return pA(this,void 0,void 0,function*(){try{const W="im_cos_msg.video_cover",{helper:iA,channel:EA}=P,RA=iA.generateCosSpecifiedData({servcmd:W,data:T}),kA=`${RA.head.seq}${W}`;return yield EA.sendPacket(RA,{requestId:kA})}catch(W){throw console.warn("getSnapshotInfo error:",W),W}})}(g,this._core),{download_url:E}=u||{};if(n.debug("_getSnapshotInfoByUrl",`${Ca} _getSnapshotInfoByUrl OK snapshotUrl:${E}`),Ft.isEmpty(E))return{};const m=Ft.addAuthToUrl(E),{width:D=0,height:M=0}=yield Ft.probeImageWidthHeight(m);return{snapshotUrl:m,snapshotWidth:D,snapshotHeight:M}}catch(g){throw g}})}_reset(){this._messageOptionsMap.clear()}_dispose(){this._reset();const{notificationCenter:s,InnerEvent:n}=this._core;s.unSubscribeInnerEvent(n.DESTROY,this._dispose,this)}};class Ki{constructor(n){this.uploadProgress=0,this.type=Fg,this[As]=!1,this[Jr]=n.isCustomUpload||!1,this.content={downloadFlag:2,second:n.second,size:n.size,url:Ft.generateURL(n.url,{needAddAuthToUrl:!this[Jr]}),remoteAudioUrl:Ft.addAuthToUrl(n.url||""),uuid:n.uuid}}static parseServerPushElement(n){const{MsgContent:g}=n,{Url:u,Download_Flag:E,Second:m,Size:D,UUID:M}=g;return new Ki({url:u,downloadFlag:E,second:m,size:D,uuid:M})}updatePercent(n){this.uploadProgress=Math.min(n,1)}updateAudioUrl(n){this.content.remoteAudioUrl=n}validateBeforeSend(){if(this[Jr])return{isValid:!0};const n=this.content.remoteAudioUrl!=="";return{isValid:n,error:n?null:{message:"content can not be empty"}}}transformToServerFormat(n){const{isMergerMessage:g=!1}=n||{},u=g?this.payload:this.content,{uuid:E,downloadFlag:m,remoteAudioUrl:D,size:M,second:T}=u;return{MsgType:this.type,MsgContent:{Url:Ft.removeAuthToUrl(D),Download_Flag:m,Second:T,Size:M,UUID:E}}}}As=Jr;const Ws=2108,we=2300,Rt=2301;var FA=new class{constructor(){this._messageOptionsMap=new Map}init(s){var n;this._core=s;const{notificationCenter:g,helper:u,InnerEvent:E,message:m}=s;u.registerApi({apiName:"createAudioMessage",context:this}),u.registerExperimentalAPI("createAudioMessage",this,"createCustomUploadAudioMessage"),(n=m?.messageFactory)===null||n===void 0||n.registerElementClass(Fg,Ki),g.subscribeInnerEvent(E.DESTROY,this._dispose,this)}createAudioMessage(s){var n,g,u;try{let{file:E}=s.payload;E=this._processAudioFile(s.payload.file),s.payload.file=E;const m=(n=this._core.store.get("login"))===null||n===void 0?void 0:n.userId,D=(u=(g=this._core)===null||g===void 0?void 0:g.message.messageFactory)===null||u===void 0?void 0:u.createMessage(Object.assign(Object.assign({},s),{from:m})),M={second:Math.max(1,Math.round((E.duration||E.second)/1e3)),size:E.fileSize||E.size||1,url:E.tempFilePath||E.uri||E.url,uuid:Ft.generateUUID(E)},T=new Ki(M);return D.setElement(T),this._messageOptionsMap.set(D.clientSequence,s),D}catch(E){throw E}}createCustomUploadAudioMessage(s){var n,g,u;try{this._validateCustomUploadOptions(s);const{store:E,message:m}=this._core,D=(n=E.get("login"))===null||n===void 0?void 0:n.userId,{url:M,uuid:T,duration:P,fileSize:W}=((g=s?.payload)===null||g===void 0?void 0:g.file)||{},iA=(u=m.messageFactory)===null||u===void 0?void 0:u.createMessage(Object.assign(Object.assign({},s),{from:D})),EA=new Ki({second:P,size:W||1,url:M,uuid:T,isCustomUpload:!0});return iA.setElement(EA),this._messageOptionsMap.set(iA.clientSequence,s),iA}catch(E){throw E}}upload(s){return pA(this,void 0,void 0,function*(){const{ssoLog:n,utils:{safeStringify:g}}=this._core;n.debug("upload",`${Ca} uploadAudio message:${g(s)}`);const{file:u}=this._messageOptionsMap.get(s.clientSequence).payload;this._validateBeforeUploadAudio(u);const E=s.getElements()[0],m=yield this._performAudioUpload(E,s,u),D=Ft.addAuthToUrl(m?.location);return E.updateAudioUrl(D),s})}_validateBeforeUploadAudio(s){const{helper:{ChatError:n},store:g}=this._core;if(!s)throw new n({code:we});const u=X(gl)||20971520;if(s.size>u)throw new n({code:Rt});if(s.size===0)throw new n({code:Ws})}_performAudioUpload(s,n,g){return pA(this,void 0,void 0,function*(){const{to:u}=n,E={uploadFileType:gl,file:g,to:u,message:n,onProgress:D=>{var M,T;s.updatePercent(D),(T=(M=this._messageOptionsMap.get(n.clientSequence))===null||M===void 0?void 0:M.onProgress)===null||T===void 0||T.call(M,D)}},{response:m}=yield q.uploadToCOS(E);return m})}_processAudioFile(s){var n;const{IN_MINI_APP:g,IN_BROWSER:u}=(n=this._core)===null||n===void 0?void 0:n.utils;return g?this._processMiniFile(s):u?this._processWebFile(s):void 0}_processMiniFile(s){return{url:s.tempFilePath,name:s.tempFilePath.slice(s.tempFilePath.lastIndexOf("/")+1),size:s.fileSize,second:s.duration,type:s.tempFilePath.slice(s.tempFilePath.lastIndexOf(".")+1).toLowerCase()}}_processWebFile(s){if(s.tempFilePath||s.uri)return s;const n=URL.createObjectURL(s);return s.tempFilePath=n,s}_validateCustomUploadOptions(s){var n;const{utils:{isEmpty:g}}=this._core,{url:u,uuid:E,duration:m}=((n=s?.payload)===null||n===void 0?void 0:n.file)||{};if(g(u)||g(E)||g(m))throw new Error("Invalid audio message options")}_reset(){this._messageOptionsMap.clear()}_dispose(){this._reset();const{notificationCenter:s,InnerEvent:n}=this._core;s.unSubscribeInnerEvent(n.DESTROY,this._dispose,this)}};const Wt={to:{required:!0,rules:["string"],allowEmpty:!1},conversationType:{required:!0,rules:["string"],allowEmpty:!1},payload:{required:!0,rules:["object"],allowEmpty:!1},cloudCustomData:{required:!1,rules:["string"],allowEmpty:!1},priority:{required:!1,rules:["string"],allowEmpty:!1},customModerationConfigurationID:{required:!1,rules:["string"],allowEmpty:!1},onProgress:{required:!1,rules:["function"],allowEmpty:!1}},En={createImageMessage:Wt,createAudioMessage:Wt,createVideoMessage:Wt,createFileMessage:Wt},Zt={createImageMessage:!0,createAudioMessage:!0,createVideoMessage:!0,createFileMessage:!0},us={[ic]:nA,[Ya]:kt,[Ul]:pi,[Fg]:FA};var vi=new class{constructor(){this.name="RichMediaMessage"}install(s){this._core=s;const{constants:{OuterConstant:{MSG_AUDIO:n,MSG_FILE:g,MSG_IMAGE:u,MSG_VIDEO:E}}}=s;v.init(s),nA.init(s),kt.init(s),pi.init(s),FA.init(s),q.init(s),Ft.init(s),s.helper.registerApi({apiName:"sendMessage",context:this,matcher:m=>[n,g,u,E].includes(m[0].type)}),s.helper.registerValidateConfig({auth:Zt,params:En})}sendMessage(s,n){return pA(this,void 0,void 0,function*(){var g,u,E;try{return this._isCustomUpload(s)||(yield this._upload(s)),yield(E=(u=(g=this._core)===null||g===void 0?void 0:g.message)===null||u===void 0?void 0:u.messageSender)===null||E===void 0?void 0:E.sendMessage(s,n)}catch(m){throw m}})}_upload(s){return pA(this,void 0,void 0,function*(){const{ssoLog:n,utils:{safeStringify:g}}=this._core;if(n.debug("_upload",` uploadFile message:${g(s)}`),s._relayFlag!==!0)try{const u=us[s.type];u&&(yield u.upload(s),n.info("_upload",` type:${s.type}`))}catch(u){throw s.status=tu.FAIL,u instanceof Error&&(u.data={message:s}),this._core.message.messageDataHandler.storeConversationMessage(s),u}})}_isCustomUpload(s){var n,g;return((g=(n=s._elements)===null||n===void 0?void 0:n[0])===null||g===void 0?void 0:g[Jr])===!0}};const ho=new class{init(s){this.core=s}};class Ct{constructor(n){this.conversationID=n.conversationID||"",this.unreadCount=n.unreadCount||0,this.type=n.type||"",this.lastMessage=ho.core.common.buildLastMessage(n.lastMessage),this.peerReadTime=n.peerReadTime||0,this.groupAtInfoList=[],this.remark=n.remark||"",this.isPinned=n.isPinned||!1,this.messageRemindType=n.messageRemindType,this.markList=n.markList||[],this.customData=n.customData||"",this.conversationGroupList=n.conversationGroupList||[],this.draftText=n.draftText||"",this.userProfile=n.userProfile,this.groupProfile=n.groupProfile,this.subType=n.subType||"",this._isInfoCompleted=!1,this._init()}_init(){var n;const{core:{OuterConstant:g,utils:{isUndefined:u}}}=ho;u(this.userProfile)&&this.type===g.CONV_C2C?this.userProfile={userID:this.conversationID.replace(g.CONV_C2C,"")}:this.type===g.CONV_GROUP&&(!this.subType&&(!((n=this.groupProfile)===null||n===void 0)&&n.type)&&(this.subType=this.groupProfile.type),u(this.groupProfile)&&(this.groupProfile={groupID:this.conversationID.replace(g.CONV_GROUP,""),selfInfo:{},lastMessage:{},type:this.subType}))}updateUnreadCount(n){var g;const{core:{OuterConstant:u,utils:{isUndefined:E},store:m}}=ho,{nextUnreadCount:D,isFromGetConversations:M,isUnreadC2CMessage:T}=n;if(E(D))return;if(this.subType===u.GRP_AVCHATROOM)return void(this.unreadCount=0);if(M&&this.type===u.CONV_GROUP)return void(this.unreadCount=D);if(T&&this.type===u.CONV_C2C)return void(this.unreadCount=D);const P=((g=m.get("cloudConfig"))===null||g===void 0?void 0:g.support_unread_count_for_meeting)==="1";this.subType!==u.GRP_MEETING||P?this.unreadCount+=D:this.unreadCount=0}updateLastMessage(n){this.lastMessage=ho.core.common.buildLastMessage(n)}reduceUnreadCount(){return this.unreadCount>=1&&(this.unreadCount-=1,!0)}isLastMessageRevoked(n){const{core:{OuterConstant:g}}=ho,{sequence:u,time:E}=n;return this.type===g.CONV_C2C&&u===this.lastMessage.lastSequence&&E===this.lastMessage.lastTime||this.type===g.CONV_GROUP&&u===this.lastMessage.lastSequence}setLastMessageRevoked(n){this.lastMessage.isRevoked=n}setLastMessageRevoker(n){this.lastMessage.revoker=n}setDraftText(n){this.draftText=n}updateGroupAtInfoList(n){const{core:{common:{updateGroupAtInfo:g}}}=ho;g(n,this.groupAtInfoList)}clearGroupAtInfoList(){this.groupAtInfoList.length=0}getProfileCompleted(){return this._isInfoCompleted}setProfileCompleted(){this._isInfoCompleted=!0}}const Bt=s=>{const{core:{OuterConstant:n,utils:{isString:g}}}=ho;return g(s)&&s.slice(0,3)===n.CONV_C2C},ug=s=>{const{core:{OuterConstant:n,utils:{isString:g}}}=ho;return g(s)&&s.slice(0,5)===n.CONV_GROUP},ks=s=>{const{core:{OuterConstant:n,utils:{isString:g}}}=ho;return g(s)&&s===n.CONV_SYSTEM};function ji(s){const{OuterConstant:n}=ho.core;let g="";return s===0?g=n.MSG_REMIND_ACPT_AND_NOTE:s===1?g=n.MSG_REMIND_DISCARD:s===2?g=n.MSG_REMIND_ACPT_NOT_NOTE:s===3&&(g=n.NOT_RECEIVE_OFFLINE_PUSH_EXCEPT_AT),g}function Hr(s){const{OuterConstant:n}=ho.core;let g;return s.startsWith(n.CONV_C2C)&&(g=s.replace(n.CONV_C2C,"")),g==="@TLS#ERROR"||g==="@TLS#NOT_FOUND"}function oc(s,n){const{helper:g}=ho.core,u=new g.ChatError({functionName:s,code:n?.errorCode||n?.code,message:n?.errorInfo||n?.message});throw console.error(`${s} fail:`,u),u}var is,ga;(function(s){s[s.OFF=0]="OFF",s[s.ON=1]="ON"})(is||(is={})),function(s){s[s.ONLY_CONVERSATIONID=1]="ONLY_CONVERSATIONID"}(ga||(ga={}));var Ba;(function(s){s[s.CONV_NOT_FOUND=2500]="CONV_NOT_FOUND",s[s.USER_OR_GRP_NOT_FOUND=2501]="USER_OR_GRP_NOT_FOUND",s[s.CONV_UN_RECORDED_TYPE=2502]="CONV_UN_RECORDED_TYPE"})(Ba||(Ba={}));const ea=0,H=1;var BA=new class{constructor(){this._name="GetC2CMessageRemindType"}init(s){this._core=s}get(s){return pA(this,void 0,void 0,function*(){try{const{common:n}=this._core,g=yield function(E,m){return pA(this,void 0,void 0,function*(){const{toAccount:D,userIDList:M}=E,T={To_Account:D,Peer_Account:M};return m.common.buildAndSendPacket({servcmd:"openim.get_c2c_peer_mute_notifications",data:T})})}({toAccount:n.getCurrentUserID(),userIDList:s},this._core),{MuteNotificationsList:u=[]}=g||{};u.forEach(E=>{const{Peer_Account:m,MuteNotifications:D}=E,M=`${this._core.OuterConstant.CONV_C2C}${m}`,T=ji(D);NA.patchMessageRemindType([M],T)})}catch(n){console.error(`${this._name}.get fail:`,n)}})}},yA=new class{constructor(){this._name="GetGroupMessageRemindType"}init(s){this._core=s}get(s){return pA(this,void 0,void 0,function*(){if(s.length!==0)try{const n=yield function(u,E){return pA(this,void 0,void 0,function*(){const{groupIDList:m,responseFilter:D}=u,M={GroupIdList:m,ResponseFilter:D};return E.common.buildAndSendPacket({servcmd:"group_open_http_svc.get_group_self_member_info",data:M})})}({groupIDList:s,responseFilter:{MemberInfoFilter:["MsgFlag"]}},this._core),{GroupInfo:g=[]}=n||{};g.forEach(u=>{var E;const{GroupId:m,MemberList:D}=u,M=((E=D[0])===null||E===void 0?void 0:E.MsgFlag)||"",T=`${this._core.OuterConstant.CONV_GROUP}${m}`;NA.patchMessageRemindType([T],M)})}catch(n){console.error(`${this._name}.get fail:`,n)}})}},NA=new class{constructor(){this._name="ConversationDataHandler",this._totalUnreadCount=0,this._groupAtTipsList=[]}init(s){this._core=s;const{helper:n,notificationCenter:g,appStore:{conversationStore:u},constants:{WORKFLOW_NAME:E,WORKFLOW_STEP:m},InnerEvent:{SYNC_CONVERSATION_LIST:D,MESSAGE_PUSH:M,NEW_MESSAGE:T,MESSAGE_DELETED:P,MESSAGE_REVOKED:W,MESSAGE_MODIFIED:iA,CONVERSATION_UPDATED:EA,LOGOUT:RA,DESTROY:kA},InnerEventSubType:{C2C_MESSAGE_PEER_READ:xA}}=s;this._conversationStore=u,n.registerWorkflowStep(E.SYNC_SERVER_INFO_AFTER_LOGIN,m.CONVERSATION_UPDATE_AFTER_UNREAD_SYNC_FINISHED,this._handleUnreadSyncFinished,this),n.registerWorkflowStep(E.SYNC_SERVER_INFO_AFTER_LOGIN,m.CONVERSATION_UPDATE_AFTER_GROUP_LIST_SYNC_FINISHED,this._handleGroupListSyncFinished,this),n.registerWorkflowStep(E.RECEIVE_C2C_NEW_MESSAGE,m.CREATE_OR_UPDATE_CONVERSATION_BY_RECEIVE_NEW_MESSAGE,this._handleNewMessage,this),n.registerWorkflowStep(E.RECEIVE_C2C_NEW_MESSAGE,m.CONVERSATION_UPDATE_AFTER_UNREAD_SYNC_FINISHED,this._handleUnreadSyncFinished,this),n.registerWorkflowStep(E.RECEIVE_GROUP_NEW_MESSAGE,m.CREATE_OR_UPDATE_CONVERSATION_BY_RECEIVE_NEW_MESSAGE,this._handleNewMessage,this),n.registerWorkflowStep(E.SYNC_SERVER_INFO_AFTER_RE_ONLINE,m.CONVERSATION_UPDATE_AFTER_UNREAD_SYNC_FINISHED,this._handleUnreadSyncFinished,this),n.registerWorkflowStep(E.RECEIVE_GROUP_TIPS_NOTIFICATION,m.CREATE_OR_UPDATE_CONVERSATION_BY_RECEIVE_NEW_MESSAGE,this._handleNewMessage,this);const{InnerEventSubType:{GROUP_AT_TIPS:LA}}=g;g.subscribeInnerEvent(D,this._handleConversationSynced,this),g.subscribeInnerEvent(T,this._handleNewMessage,this),g.subscribeInnerEvent(M,LA,this._handleNewGroupAtTips,this),g.subscribeInnerEvent(P,this._handleMessageDeleted,this),g.subscribeInnerEvent(W,this._handleMessageRevoked,this),g.subscribeInnerEvent(iA,this._handleMessageModified,this),g.subscribeInnerEvent(EA,this._handleConversationUpdated,this),g.subscribeInnerEvent(M,xA,this._handleMessageRead,this),g.subscribeInnerEvent(RA,this._reset,this),g.subscribeInnerEvent(kA,this._dispose,this),s.ssoLog.debug(`${this._name}.init`)}_handleConversationSynced(s){this.updateLocalConversationList({conversationUpdateFieldList:s.conversationUpdateFieldList||[],isFromGetConversations:!0,updateUnreadCount:!0}),this.emitConversationListUpdate()}_handleUnreadSyncFinished(s){const{constants:{WORKFLOW_STEP:n}}=this._core,{conversationUpdateFieldList:g=[],groupTipList:u=[],isUnreadC2CMessage:E}=s.result[n.UNREAD_MESSAGE_SYNC]||{};let m=!1;g.forEach(D=>{const{conversationID:M,unreadCount:T}=D,P=this.getLocalConversation(M);P&&P.unreadCount!==T&&(P.updateUnreadCount({nextUnreadCount:T,isUnreadC2CMessage:E}),m=!0)}),m&&this.emitConversationListUpdate(),this._handleGroupAtTipsSynced(u)}_handleGroupAtTipsSynced(s){var n;for(let g=0;g0&&this._handleNewGroupAtTips({GroupTips:M._groupAtInfoList}),m=!0}m&&this.emitConversationListUpdate()}_handleNewMessage(s){const{conversationUpdateFieldList:n=[],isInstantMessage:g=!0,isUnreadC2CMessage:u=!1,updateUnreadCount:E=!0}=s.result||{};if(n.length===0)return;const{common:{isTopic:m}}=this._core;m(n[0].conversationID)||(this.updateLocalConversationList({conversationUpdateFieldList:n,isInstantMessage:g,isUnreadC2CMessage:u,isFromGetConversations:!1,updateUnreadCount:E}),n.filter(D=>this._isConversationNeedShow(D.conversationID)).length>0&&this.emitConversationListUpdate())}_handleNewGroupAtTips(s){const{GroupTips:n=[]}=s;n.forEach(g=>{const{GroupAtTips:u,MsgBody:E,MsgRandom:m,ClientSeq:D}=g;let M={};u?M=this._convertGroupAtTipsKey(u):E?M=Object.assign({},this._convertGroupAtTipsKey(E)):g.groupAtType&&(M=Object.assign({},g)),M.__random=m,M.__sequence=D,this._groupAtTipsList.push(M)}),console.log(`${this._name}._handleNewGroupAtTips groupAtTipsList: ${JSON.stringify(this._groupAtTipsList)}`),this._updateGroupAtInfoList()}_convertGroupAtTipsKey(s){const{From_Account:n,GroupId:g,MsgSeq:u,GroupAtType:E}=s;return{from:n,groupID:g,sequence:u,groupAtType:E}}_updateGroupAtInfoList(){if(this._groupAtTipsList.length===0)return;const{common:s,OuterConstant:n}=this._core,g=s.getCurrentUserID();let u=!1;this._groupAtTipsList.forEach(E=>{const{groupID:m,from:D}=E;if(D!==g){const M=this.getLocalConversation(`${n.CONV_GROUP}${m}`);M&&(M.updateGroupAtInfoList(E),u=!0)}}),u&&this.emitConversationListUpdate(),this._groupAtTipsList.length=0}_handleMessageDeleted(s){var n,g;console.log(`${this._name}._handleMessageDeleted, conversationID:`,s);const{message:{messageDataHandler:u},OuterConstant:E}=this._core,m=u?.getLocalMessageList(s)||[];let D={};for(let P=(m.length||0)-1;P>=0;P--)if(!m[P].isDeleted&&m[P]._isExcludedFromLastMessage!==!0){D=m[P];break}const M=this.getLocalConversation(s);if(!M)return;let T=!1;M.lastMessage.lastSequence===D.sequence&&M.lastMessage.lastTime===D.time||(!((g=(n=this._core)===null||n===void 0?void 0:n.helper)===null||g===void 0)&&g.isEmpty(D)&&(D=void 0),M.updateLastMessage(D),T=!0),s.startsWith(E.CONV_C2C)&&this.updateUnreadCount(s),T&&(this.emitConversationListUpdate(),console.log(`${this._name}._handleMessageDeleted. update conversationID:${s} with lastMessage:`,M.lastMessage))}_handleMessageRevoked(s){const{messageList:n=[],updateUnreadCount:g=!0}=s;if(console.log(`${this._name}._handleMessageRevoked messageList:${n.length}`),n.length===0)return;let u=null,E=!1;n.forEach(m=>{u=this.getLocalConversation(m.conversationID),u&&(g&&u.reduceUnreadCount()&&(E=!0),u.isLastMessageRevoked({sequence:m.sequence,time:m.time})&&(u.setLastMessageRevoked(!0),u.setLastMessageRevoker(m.revoker),E=!0))}),E&&this.emitConversationListUpdate()}_handleMessageModified(s){const{utils:{isEmpty:n},common:{getMessagePreviewText:g},ssoLog:u}=this._core;u.debug(`${this._name}._handleMessageModified`,JSON.stringify(s));const{conversationID:E,messageList:m}=s,D=this.getLocalConversation(E);if(n(D))return;const{lastMessage:M}=D;if(M){const T=m?.[0]||{};M.lastTime===T.time&&M.lastSequence===T.sequence&&M.version!==T.version&&(M.type=T.type,M.payload=T.payload,M.messageForShow=g(T.type,T.payload),M.cloudCustomData=T.cloudCustomData,M.version=T.version,this.emitConversationListUpdate(),console.log(`${this._name} conversationID:${E} lastMessage updated`))}}_handleConversationUpdated(s){this.emitConversationListUpdate(s?.needSort)}updateLocalConversationList(s){const{isFromGetConversations:n}=s,{newConversationList:g}=this._getTmpConversationListMapping(s);this._sortConversationList(),n||this._updateNewConversationProfile(g),this._core.ssoLog.debug("updateLocalConversationList",` newConversationList: ${g.length}`)}_getTmpConversationListMapping(s){const{OuterConstant:n}=this._core,{conversationUpdateFieldList:g,isFromGetConversations:u,isInstantMessage:E,isUnreadC2CMessage:m=!1,updateUnreadCount:D}=s,M=[],T=g?.length;for(let P=0;P{M[1].isPinned===!0?s(M[1].lastMessage.lastTime)?u.push(M):g.push(M):s(M[1].lastMessage.lastTime)?m.push(M):E.push(M)});const D=g.sort((M,T)=>T[1].lastMessage.lastTime-M[1].lastMessage.lastTime).concat(u).concat(E.sort((M,T)=>T[1].lastMessage.lastTime-M[1].lastMessage.lastTime)).concat(m);this._updateConversationMapFromList(D)}_updateNewConversationProfile(s){if(s.length===0)return;const n=[],g=[],{OuterConstant:{CONV_GROUP:u,CONV_C2C:E}}=this._core;s.forEach(m=>{const{conversationID:D,type:M}=m;if(M===E){const T=D.replace(E,"");n.push(T)}else if(M===u){const T=D.replace(u,"");g.push(T)}}),n.length>0&&this._updateC2CConversation(n),g.length>0&&this._updateGroupConversation(g)}_updateC2CConversation(s){var n;const{OuterConstant:{CONV_C2C:g},appStore:{userStore:u},user:E}=this._core;let m=!1;(n=E.userProfile)===null||n===void 0||n.getUserProfile({userIDList:s}).then(D=>{(D?.data||[]).forEach(M=>{var T;const{userID:P}=M,W=this.getLocalConversation(`${g}${P}`);if(W){const iA=((T=u.getFriend(P))===null||T===void 0?void 0:T.remark)||"";W.remark=iA,W.userProfile=M,m=!0}}),m&&this.emitConversationListUpdate()}).catch(D=>{}),BA.get(s)}_updateGroupConversation(s){return pA(this,void 0,void 0,function*(){const{OuterConstant:{CONV_GROUP:n},appStore:{groupStore:g},utils:{safeStringify:u},ssoLog:E,apiMap:{getGroupProfile:m}}=this._core;let D=!1;try{yield Promise.all(s.map(M=>pA(this,void 0,void 0,function*(){const T=g.getGroup(M),P=this.getLocalConversation(`${n}${M}`);T&&P&&(P.groupProfile=T,D=!0),P&&!P.getProfileCompleted()&&typeof m=="function"&&(yield m({groupID:M}))}))),yA.get(s),D&&this.emitConversationListUpdate()}catch(M){E.debug("_updateGroupConversation",u(M))}})}_handleMessageRead(s){const{OuterConstant:{CONV_C2C:n}}=this._core,{C2cNotifyMsgArray:g=[]}=s||{};g.forEach(u=>{const{To_Account:E,UinPairReadArray:m=[]}=u?.C2cReadedReceipt||{};m?.forEach(D=>{const{LastReadTime:M}=D,T=`${n}${E}`;this._updateConversationReadInfo({conversationID:T,peerReadTime:M}),this._updateMessageListPeerRead({conversationID:T,peerReadTime:M})})})}_updateConversationReadInfo(s){const{appStore:n,utils:{isEmpty:g},common:{getCurrentUserID:u}}=this._core,{conversationID:E,peerReadTime:m}=s,D=n.conversationStore.getConversationMap();if(D.has(E)){const M=D.get(E);M.peerReadTime=m;const T=M?.lastMessage;g(T)||T.fromAccount===u()&&T.lastTime<=m&&!T.isPeerRead&&(T.isPeerRead=!0,n.conversationStore.updateConversation(E,{lastMessage:T}))}}_updateMessageListPeerRead(s){const{notificationCenter:n,OuterEvent:g,message:u}=this._core,{conversationID:E,peerReadTime:m}=s,D=u.messageDataHandler.getLocalMessageList(E),M=u.messageDataHandler.getSparseMessageList(E),T=[];D.forEach(P=>{P.time<=m&&!P.isPeerRead&&P.flow==="out"&&(P.isPeerRead=!0,T.push(P))}),M.forEach(P=>{P.time<=m&&!P.isPeerRead&&P.flow==="out"&&(P.isPeerRead=!0,T.push(P))}),n.emitOuterEvent(g.MESSAGE_READ_BY_PEER,{name:g.MESSAGE_READ_BY_PEER,data:T})}_isConversationNeedShow(s){var n,g;const{OuterConstant:{CONV_GROUP:u,GRP_ROOM:E,GRP_LIVE:m},utils:{isUndefined:D}}=this._core,M=this.getLocalConversation(s);if(D(M))return!0;const T=M.type===u&&((n=M.groupProfile)===null||n===void 0?void 0:n.type)===E,P=M.type===u&&((g=M.groupProfile)===null||g===void 0?void 0:g.type)===m;return!(T||P)}updateUnreadCount(s,n=!0){var g,u;let E=!1;const m=this.getLocalConversation(s),D=(u=(g=this._core)===null||g===void 0?void 0:g.message.messageDataHandler)===null||u===void 0?void 0:u.getLocalMessageList(s);if(!m)return E;const M=m.unreadCount,T=D?.filter(P=>!P.isRead&&!P._onlineOnlyFlag&&!P.isDeleted).length;return console.log(`${this._name}._updateUnreadCount conversationID:${s} currentUnreadCount:${M} newUnreadCount:${T}`),M!==T&&(m.unreadCount=T,E=!0,n===!0&&this.emitConversationListUpdate()),E}emitConversationListUpdate(s=!1){var n,g;s&&this._sortConversationList();const{OuterEvent:{CONVERSATION_LIST_UPDATED:u},conversation:E}=this._core,m=this.getLocalConversationList();this._emitEvent({name:u,data:m,isSyncCompleted:(g=(n=E?.syncConversationHandler)===null||n===void 0?void 0:n.isSyncCompleted)===null||g===void 0?void 0:g.call(n)}),this._emitTotalUnreadCountUpdate()}_emitTotalUnreadCountUpdate(){var s;const n=this.getTotalUnreadMessageCount();this._totalUnreadCount!==n&&(this._core.ssoLog.debug("_emitTotalUnreadCountUpdate",` from ${this._totalUnreadCount} to ${n}`),this._totalUnreadCount=n,this._emitEvent({name:(s=this._core)===null||s===void 0?void 0:s.OuterEvent.TOTAL_UNREAD_MESSAGE_COUNT_UPDATED,data:n}))}_emitEvent(s){var n;(n=this._core)===null||n===void 0||n.notificationCenter.emitOuterEvent(s.name,s)}getTotalUnreadMessageCount(){const{OuterConstant:s,utils:{isEmpty:n}}=this._core,g=this.getLocalConversationList();let u=0;return g.forEach(E=>{E.type!==s.CONV_SYSTEM&&(n(E.messageRemindType)||E.messageRemindType===s.MSG_REMIND_ACPT_AND_NOTE)&&(u+=E.unreadCount)}),u}getLocalConversationList(){return[...this._conversationStore.getConversationMap().values()].filter(s=>this._isConversationNeedShow(s.conversationID))}hasLocalConversation(s){return this._conversationStore.getConversationMap().has(s)}getLocalConversation(s){return this._conversationStore.getConversationMap().get(s)}setLocalConversation(s,n){return this._conversationStore.getConversationMap().set(s,n)}deleteLocalConversation(s){this._conversationStore.getConversationMap().delete(s)}_updateConversationMapFromList(s){this._clearConversationMap();for(const[n,g]of s)this.setLocalConversation(n,g)}_clearConversationMap(){this._conversationStore.getConversationMap().clear()}patchMessageRemindType(s,n){let g=!1;s.forEach(u=>{const E=this.getLocalConversation(u);E?.messageRemindType!==n&&(E.messageRemindType=n,g=!0)}),console.log(`${this._name}.patchMessageRemindType conversationIDList:${s} messageRemindType:${n} hasUpdated:${g}`),g&&this.emitConversationListUpdate()}markMessageAsRead(s){const{message:{messageDataHandler:n}}=this._core,{conversationID:g,lastReadTime:u=0,lastReadSequence:E=0}=s,m=n?.getLocalMessageList(g);if(m.length===0)return;const{length:D}=m;for(let M=D-1;M>=0;M--){const T=m[M],P=u&&T.time>u,W=E&&T.sequence>E;if(!P&&!W){if(T.flow==="in"&&T.isRead)break;T.setIsRead(!0)}}}appendToPinnedConversation(s){const n=[...this._conversationStore.getConversationMap().entries()],g=n.findIndex(u=>u[1].isPinned===!1);n.splice(g,0,[s.conversationID,s]),this._updateConversationMapFromList(n),this.emitConversationListUpdate()}_reset(){this._clearConversationMap(),this._totalUnreadCount=0,this._groupAtTipsList=[]}_dispose(){const{notificationCenter:s,InnerEvent:{NEW_MESSAGE:n,MESSAGE_DELETED:g,MESSAGE_REVOKED:u,MESSAGE_MODIFIED:E,CONVERSATION_UPDATED:m,LOGOUT:D,DESTROY:M,SYNC_CONVERSATION_LIST:T}}=this._core,{InnerEventSubType:{GROUP_AT_TIPS:P}}=s;s.unSubscribeInnerEvent(n,this._handleNewMessage,this),s.unSubscribeInnerEvent(n,P,this._handleNewGroupAtTips,this),s.unSubscribeInnerEvent(g,this._handleMessageDeleted,this),s.unSubscribeInnerEvent(u,this._handleMessageRevoked,this),s.unSubscribeInnerEvent(E,this._handleMessageModified,this),s.unSubscribeInnerEvent(m,this._handleConversationUpdated,this),s.unSubscribeInnerEvent(T,this._handleConversationSynced,this),s.unSubscribeInnerEvent(D,this._reset,this),s.unSubscribeInnerEvent(M,this._dispose,this)}},zA=new class{constructor(){this._name="GetConversationList"}init(s){this._core=s;const{helper:n}=s;n.registerApi({apiName:"getConversationList",context:this})}getConversationList(s){return pA(this,void 0,void 0,function*(){return{code:0,data:{conversationList:this._getConversationList(s),isSyncCompleted:this._core.conversation.syncConversationHandler.isSyncCompleted()}}})}_getConversationList(s){const{utils:{isUndefined:n,isArray:g,isPlainObject:u}}=this._core;if(n(s))return NA.getLocalConversationList();if(g(s))return s.length===0?[]:NA.getLocalConversationList().filter(E=>s.includes(E.conversationID));if(u(s)){const{type:E,markType:m,groupName:D,hasUnreadCount:M,hasGroupAtInfo:T}=s;return NA.getLocalConversationList().filter(P=>this._filterType(P,E)&&this._filterMarkType(P,m)&&this._filterGroupName(P,D)&&this._filterUnreadCount(P,M)&&this._filterGroupAtInfo(P,T))}return[]}_filterType(s,n){const{OuterConstant:g}=this._core;return n!==g.CONV_C2C&&n!==g.CONV_GROUP||s.type===n}_filterGroupName(s,n){const{utils:{isString:g}}=this._core;return!g(n)||(n===""?s.conversationGroupList.length===0:s.conversationGroupList.includes(n))}_filterMarkType(s,n){const{utils:{isNumber:g}}=this._core;return!g(n)||(n===0?s.markList.length===0:s.markList.includes(n))}_filterUnreadCount(s,n){let g=!0;return n===!0?g=s.unreadCount>=1:n===!1&&(g=s.unreadCount===0),g}_filterGroupAtInfo(s,n){let g=!0;return n===!0?g=s.groupAtInfoList.length>=1:n===!1&&(g=s.groupAtInfoList.length===0),g}},Re=new class{constructor(){this._name="GetConversationProfile"}init(s){this._core=s;const{helper:n}=s;n.registerApi({apiName:"getConversationProfile",context:this})}getConversationProfile(s){return pA(this,void 0,void 0,function*(){const{OuterConstant:{CONV_C2C:n,CONV_GROUP:g,GRP_AVCHATROOM:u},appStore:{groupStore:E},utils:{isEmpty:m}}=this._core,D={code:0,data:{}};let M=NA.getLocalConversation(s);if(ks(s))return D.data.conversation=M,D;let T=!1;const P=Bt(s)?n:g;if(m(M)&&(T=!0,M=new Ct({conversationID:s,type:P})),console.log(`${this._name}.getConversationProfile conversationID:${s} isNewConversation:${T}`),D.data.conversation=M,M?.getProfileCompleted())return D;if(P===n){const W=s.replace(n,"");yield this._handleC2CConversation(M,W),T&&(yield BA.get([W]))}if(P===g){const W=s.replace(g,"");if(!E.getGroup(W))return D;yield this._handleGroupConversation(M,W),T&&M.groupProfile.type!==u&&(yield yA.get([W]))}return D})}_handleC2CConversation(s,n){return pA(this,void 0,void 0,function*(){var g,u;const{user:E,helper:m,utils:{isEmpty:D},appStore:{conversationStore:M,userStore:T}}=this._core,{conversationID:P}=s,W=yield(g=E.userProfile)===null||g===void 0?void 0:g.getUserProfile({userIDList:[n]});if(W?.data.length===0)throw new m.ChatError({code:Ba.USER_OR_GRP_NOT_FOUND});s.userProfile=W?.data[0];const iA=(u=T.getFriend(n))===null||u===void 0?void 0:u.remark;D(iA)||s.remark===iA||(s.remark=iA),s.setProfileCompleted();const EA=NA.hasLocalConversation(P);console.log(`${this._name}._handleC2CConversation conversationID:${P} hasLocalConversation: ${EA}`),EA?M.updateConversation(P,s):NA.appendToPinnedConversation(s)})}_handleGroupConversation(s,n){return pA(this,void 0,void 0,function*(){const{apiMap:{getGroupProfile:g},appStore:{conversationStore:u}}=this._core,{conversationID:E}=s,m=yield g({groupID:n});s.groupProfile=m?.data.group,s.setProfileCompleted();const D=NA.hasLocalConversation(E);console.log(`${this._name}._handleGroupConversation conversationID:${E} hasLocalConversation: ${D}`),D?u.updateConversation(E,s):NA.appendToPinnedConversation(s)})}},le=new class{init(s){const{helper:n}=s;n.registerApi({apiName:"getTotalUnreadMessageCount",context:this})}getTotalUnreadMessageCount(){return NA.getTotalUnreadMessageCount()}},Ne=new class{constructor(){this._serverGroupConversationLastReadSeqMap=new Map,this._name="SetMessageRead"}init(s){this._core=s;const{helper:n,common:{isTopic:g},notificationCenter:u,InnerEvent:{MESSAGE_PUSH:E},InnerEventSubType:{ALL_MESSAGE_READ:m}}=s;n.registerApi({apiName:"setMessageRead",context:this,matcher:D=>!g(D[0].conversationID)}),n.registerApi({apiName:"setAllMessageRead",context:this}),u.subscribeInnerEvent(E,m,this._handleAllMessageRead,this)}handleC2CMessageReadSync(s){const{helper:{isEmpty:n},OuterConstant:g}=this._core;s.forEach(u=>{const{ReadC2cMsgNotify:E}=u;if(!n(E)){const{UinPairReadArray:m=[]}=E;m.forEach(D=>{const{From_Account:M,LastReadTime:T}=D,P=`${g.CONV_C2C}${M}`;console.log(`${this._name}.handleC2CMessageReadSync conversationID:${P} lastReadTime:${T}`),NA.markMessageAsRead({conversationID:P,lastReadTime:T}),NA.updateUnreadCount(P)})}})}handleGroupMessageReadSync(s){const{OuterConstant:n,utils:{isUndefined:g}}=this._core;s.forEach(u=>{const{GroupReadInfoArray:E}=u.MsgBody;g(E)||E.forEach(m=>{const{GroupId:D,LastReadMsgSeq:M}=m,T=`${n.CONV_GROUP}${D}`;console.log(`${this._name}.handleGroupMessageReadSync conversationID:${T} lastReadSequence:${M}`),NA.markMessageAsRead({conversationID:T,lastReadSequence:M}),NA.updateUnreadCount(T),this._clearGroupAtInfoList(T)})})}setMessageRead(s){return pA(this,void 0,void 0,function*(){var n,g;const{OuterConstant:u}=this._core,{conversationID:E}=s,m={code:0,data:{}},D=NA.getLocalConversation(E);let M=`${this._name}.setMessageRead conversationID:${E} unreadCount:${D?.unreadCount||0}`;if(m.successLog={message:M},!D)return m;const T=!(!((g=(n=this._core)===null||n===void 0?void 0:n.helper)===null||g===void 0)&&g.isEmpty(D.groupAtInfoList));if(D.type===u.CONV_GROUP&&T&&this._deleteGroupAtTips(E),D.unreadCount===0)return m;const{helper:{ChatError:P}}=this._core;try{if(D.type===u.CONV_C2C){const W=this._getLocalMessageMaxTime(D);M+=`lastMessageTime:${W}`,yield this._setC2CMessageRead(E,W)}if(D.type===u.CONV_GROUP){const W=this._getLocalMessageMaxSequence(D);M+=`lastMessageSequence:${W}`,yield this._setGroupMessageRead(E,W)}}catch(W){const{errorCode:iA,errorInfo:EA}=W;throw new P({functionName:"setMessageRead",code:iA,message:EA,moreMessage:M})}return D.type===u.CONV_SYSTEM&&(D.unreadCount=0),NA.emitConversationListUpdate(),Object.assign(Object.assign({},m),{successLog:{message:M}})})}setAllMessageRead(){return pA(this,arguments,void 0,function*(s={}){const{OuterConstant:{READ_ALL_MSG:n},utils:{safeStringify:g}}=this._core;let u=`scope:${s.scope}`;s.scope||(s.scope=n);const{scope:E}=s,m=this._generateSetAllMessageReadRequestData(E);if(m.allC2CMessageReadStatus===ea&&m.groupMessageReadInfoList.length===0)return{code:0};try{const D=yield function(M){return pA(this,void 0,void 0,function*(){const{allC2CMessageReadStatus:T,groupMessageReadInfoList:P}=M,W={C2CReadAllMsg:T,GroupReadInfo:P};return ho.core.common.buildAndSendPacket({servcmd:"openim.read_all_unread_msg",data:W})})}(m);if(D){const{GroupReadInfoArray:M,C2CReadAllMsg:T}=D,P=this._parseGroupReadInfo(M);this._updateAllConversationReadStatus({allC2CMessageReadStatus:T})>0&&NA.emitConversationListUpdate(),u+=`failureGroupInfoList:${g(P)}`}return{code:0,successLog:{message:u}}}catch(D){const{errorCode:M}=D;throw new this._core.helper.ChatError({functionName:"setAllMessageRead",code:M,moreMessage:u})}})}_handleAllMessageRead(s){const{GroupReadInfoArray:n,C2CReadAllMsg:g}=s;this._parseGroupReadInfo(n),this._updateAllConversationReadStatus({allC2CMessageReadStatus:g})>0&&NA.emitConversationListUpdate()}_updateAllConversationReadStatus(s){const{OuterConstant:{CONV_C2C:n,CONV_GROUP:g},appStore:u}=this._core,E=u.conversationStore.getConversationMap(),{allC2CMessageReadStatus:m}=s;let D=0;for(const[M,T]of E)if(T.unreadCount>=1){if(m===H&&T.type===n){const P=this._getLocalMessageMaxTime(T);NA.markMessageAsRead({conversationID:M,lastReadTime:P})}else if(T.type===g){const P=M.replace(g,"");if(this._serverGroupConversationLastReadSeqMap.has(P)){const W=this._serverGroupConversationLastReadSeqMap.get(P);NA.markMessageAsRead({conversationID:M,lastReadSequence:W})}}NA.updateUnreadCount(M,!1)&&(D+=1)}return D}_generateSetAllMessageReadRequestData(s){const{OuterConstant:{CONV_C2C:n,CONV_GROUP:g,READ_ALL_C2C_MSG:u},appStore:E}=this._core,m={allC2CMessageReadStatus:ea,groupMessageReadInfoList:[]},D=E.conversationStore.getConversationMap();for(const[,M]of D){const{type:T,unreadCount:P}=M;if(this._shouldSetAllMessageRead({scope:s,type:T,unreadCount:P})){if(T===n&&m.allC2CMessageReadStatus===ea){if(m.allC2CMessageReadStatus=H,s===u)break}else if(T===g){const W=this._getLocalMessageMaxSequence(M),{groupID:iA}=M.groupProfile;m.groupMessageReadInfoList.push({GroupId:iA,MsgSeq:W})}}}return m}_parseGroupReadInfo(s){const{utils:{isUndefined:n}}=this._core,g=[];return s?.forEach(u=>{const{GroupId:E,MsgSeq:m,RetCode:D,LastReadMsgSeq:M}=u;n(D)?this._serverGroupConversationLastReadSeqMap.set(E,M):(this._serverGroupConversationLastReadSeqMap.set(E,m),D!==0&&g.push(`${E}-${m}-${D}`))}),g}_deleteGroupAtTips(s){return pA(this,void 0,void 0,function*(){console.log(`${this._name}._deleteGroupAtTips conversationID:${s}`);const n=NA.getLocalConversation(s);if(!n)return;const g=n?.groupAtInfoList||[];if(g.length!==0)try{const{common:{getCurrentUserID:u,isCommunity:E},OuterConstant:{CONV_GROUP:m,CONV_AT_ALL:D}}=this._core;let M=[...g];if(E({groupID:s.replace(m,"")})&&(M=g.filter(P=>!P.atTypeArray.includes(D)),M.length===0))return void this._clearGroupAtInfoList(s,!1);const T=M.map(P=>({From_Account:P.from,To_Account:u(),MsgSeq:P.__sequence,MsgRandom:P.__random,GroupId:P.groupID}));yield function(P,W){return pA(this,void 0,void 0,function*(){const{messageListToDelete:iA}=P,EA={DelMsgList:iA};return W.common.buildAndSendPacket({servcmd:"openim.deletemsg",data:EA})})}({messageListToDelete:T},this._core),console.log(`${this._name}._deleteGroupAtTips ok. count:${g.length}`),this._clearGroupAtInfoList(s)}catch(u){console.error(`${this._name}._deleteGroupAtTips fail:`,u)}})}_clearGroupAtInfoList(s,n=!0){const g=NA.getLocalConversation(s);g&&(g.groupAtInfoList.length>0&&(g.clearGroupAtInfoList(),console.log(`${this._name}._clearGroupAtInfoList conversationID:${s} needEmitConversationUpdate:${n}`)),n&&NA.emitConversationListUpdate())}_getLocalMessageMaxTime(s){var n;const{conversationID:g}=s,u=this._core.message.messageDataHandler.getLocalMessageList(g),E=Math.max(...u.map(D=>D.time));let m=((n=s?.lastMessage)===null||n===void 0?void 0:n.lastTime)||0;return E>m&&(console.log(`${this._name}._getLocalMessageMaxTime update lastMessageTime from ${m} to ${E}`),m=E),m}_getLocalMessageMaxSequence(s){var n;const{conversationID:g}=s,u=this._core.message.messageDataHandler.getLocalMessageList(g),E=Math.max(...u.map(D=>D.sequence));let m=((n=s?.lastMessage)===null||n===void 0?void 0:n.lastSequence)||0;return E>m&&(console.log(`${this._name}._getLocalMessageMaxSequence update lastMessageSequence from ${m} to ${E}`),m=E),m}_setC2CMessageRead(s,n){return pA(this,void 0,void 0,function*(){try{yield function(g,u){return pA(this,void 0,void 0,function*(){return u.common.buildAndSendPacket({servcmd:"openim.msgreaded",data:g})})}({C2CMsgReaded:{Cookie:"",C2CMsgReadedItem:[{To_Account:s.replace("C2C",""),LastedMsgTime:n,Receipt:1}]}},this._core),console.log(`${this._name}._setC2CMessageRead ok, lastReadTime:${n}`),NA.markMessageAsRead({conversationID:s,lastReadTime:n}),NA.updateUnreadCount(s)}catch(g){throw console.warn(`${this._name}._setC2CMessageRead fail:`,g),g}})}_setGroupMessageRead(s,n){return pA(this,void 0,void 0,function*(){try{yield function(g,u){return pA(this,void 0,void 0,function*(){const{groupID:E,lastMessageSequence:m}=g,D={GroupId:E,MsgReadedSeq:m};return u.common.buildAndSendPacket({servcmd:"group_open_http_svc.msg_read_report",data:D})})}({groupID:s.replace("GROUP",""),lastMessageSequence:n},this._core),console.log(`${this._name}._setGroupMessageRead ok, lastReadSequence:${n}`),NA.markMessageAsRead({conversationID:s,lastReadSequence:n}),NA.updateUnreadCount(s)}catch(g){throw console.warn(`${this._name}._setGroupMessageRead fail:`,g),g}})}_shouldSetAllMessageRead(s){const{OuterConstant:{CONV_C2C:n,CONV_GROUP:g,READ_ALL_MSG:u,READ_ALL_C2C_MSG:E,READ_ALL_GROUP_MSG:m}}=this._core,{type:D,scope:M,unreadCount:T}=s;return!(T<=0)&&(!(D!==n||![u,E].includes(M))||!(D!==g||![u,m].includes(M)))}},ae=new class{constructor(){this._name="PinConversation"}init(s){this._core=s;const{helper:n}=s;n.registerApi({apiName:"pinConversation",context:this})}handleConversationPinned(s,n){const{utils:{isArray:g}}=this._core;if(!g(s))return;const{OuterConstant:u}=this._core;let E=!1;s.forEach(m=>{const{Type:D,Peer_Account:M,GroupId:T}=m;let P;D===1?P=NA.getLocalConversation(`${u.CONV_C2C}${M}`):D===2&&(P=NA.getLocalConversation(`${u.CONV_GROUP}${T}`)),P&&(console.log(`${this._name}.handleConversationPinned conversationID:${P.conversationID} localPinned:${P.isPinned} remotePinned:${n}`),n&&!P.isPinned&&(P.isPinned=!0,E=!0),!n&&P.isPinned&&(P.isPinned=!1,E=!0))}),E&&NA.emitConversationListUpdate(!0)}pinConversation(s){return pA(this,void 0,void 0,function*(){const{OuterConstant:n,common:g,helper:{ChatError:u}}=this._core,{conversationID:E,isPinned:m}=s,D={code:0,data:{conversationID:E}},M=NA.getLocalConversation(E);if(M&&M.isPinned===m)return D;if(ks(E))return M&&(M.isPinned=m),NA.emitConversationListUpdate(!0),D;const T=`conversationID:${E} isPinned:${m}`;try{let P=null;if(Bt(E)?P={Type:1,To_Account:E.replace(n.CONV_C2C,"")}:ug(E)&&(P={Type:2,GroupId:E.replace(n.CONV_GROUP,"")}),yield function(iA,EA){return pA(this,void 0,void 0,function*(){const{fromAccount:RA,operationType:kA,itemList:xA}=iA,LA={From_Account:RA,OperationType:kA,RecentContactItem:xA};return EA.common.buildAndSendPacket({servcmd:"recentcontact.top",data:LA})})}({fromAccount:g.getCurrentUserID(),operationType:m===!0?1:2,itemList:[P]},this._core)){if(M)M.isPinned!==m&&(M.isPinned=m);else{const iA=new Ct({conversationID:E,type:Bt(E)?n.CONV_C2C:n.CONV_GROUP,isPinned:m});NA.setLocalConversation(E,iA)}NA.emitConversationListUpdate(!0)}return Object.assign(Object.assign({},D),{successLog:{message:T}})}catch(P){const{errorCode:W,errorInfo:iA}=P;throw new u({functionName:"pinConversation",code:W,message:iA,moreMessage:T})}})}},Fe=new class{constructor(){this._name="DeleteConversation"}init(s){this._core=s;const{helper:n}=s;n.registerApi({apiName:"deleteConversation",context:this})}handleConversationDeleted(s){const{utils:{isArray:n}}=this._core;if(!n(s))return;const{OuterConstant:g}=this._core,u=[];s.forEach(E=>{const{Type:m,Peer_Account:D,GroupId:M}=E;m===1&&u.push(`${g.CONV_C2C}${D}`),m===2&&u.push(`${g.CONV_GROUP}${M}`)}),console.log(`${this._name}.handleConversationDeleted conversationIDList:${u}`),this._deleteLocalConversationList(u)}deleteConversation(s){return pA(this,void 0,void 0,function*(){const{utils:{isString:n}}=this._core;if(n(s))return this._deleteConversation({conversationIDList:[s],flag:ga.ONLY_CONVERSATIONID});const g=Object.assign({},s);return g.conversationIDList.length>100&&(g.conversationIDList=g.conversationIDList.slice(0,100)),this._deleteConversation(g)})}_deleteConversation(s){return pA(this,void 0,void 0,function*(){const{conversationIDList:n,clearHistoryMessage:g=!0,flag:u=0}=s,{helper:{ChatError:E}}=this._core,m=`conversationIDList:${n} clearHistoryMessage:${g}`;try{const D=yield Promise.all([this._deleteConversationFromLocal(n),this._deleteConversationFromServer(n,g)]),M=[...D[0],...D[1]];if(M.length===0)throw new this._core.helper.ChatError({code:Ba.CONV_NOT_FOUND});return{code:0,data:u===ga.ONLY_CONVERSATIONID?{conversationID:M[0]}:{conversationIDList:M},successLog:{message:m}}}catch(D){const{errorCode:M,errorInfo:T}=D;throw new E({code:M,message:T,moreMessage:m})}})}_deleteConversationFromLocal(s){const{OuterConstant:n}=this._core;return s.filter(g=>{var u;if(!NA.hasLocalConversation(g))return!1;const E=(u=NA.getLocalConversation(g))===null||u===void 0?void 0:u.type;return E!==n.CONV_GROUP||this._hasLocalGroup(g)?E===n.CONV_SYSTEM&&(this._deleteLocalConversation(g),!0):(this._deleteLocalConversation(g),!0)})}_deleteConversationFromServer(s,n){return pA(this,void 0,void 0,function*(){const{OuterConstant:g,common:u}=this._core,E={fromAccount:u.getCurrentUserID(),conversationList:[],clearHistoryMessage:n?1:0};if(s.forEach(D=>{var M;if(NA.hasLocalConversation(D)){const T=((M=NA.getLocalConversation(D))===null||M===void 0?void 0:M.type)||"",P=D.replace(T,"");T===g.CONV_C2C?E.conversationList.push({To_Account:P,Type:1}):T===g.CONV_GROUP&&this._hasLocalGroup(D)&&E.conversationList.push({ToGroupid:P,Type:2})}}),E.conversationList.length===0)return[];const m=yield function(D,M){return pA(this,void 0,void 0,function*(){const{fromAccount:T,conversationList:P,clearHistoryMessage:W}=D,iA={From_Account:T,ContactItem:P,ClearRamble:W};return M.common.buildAndSendPacket({servcmd:"recentcontact.batch_delete",data:iA})})}(E,this._core);if(m){const{ResultItem:D=[]}=m,M=[];return D.length>0&&D.forEach(T=>{if(T.ResultCode===0){const P=T.Type===1?`${g.CONV_C2C}${T.To_Account}`:`${g.CONV_GROUP}${T.ToGroupid}`;M.push(P)}}),this._deleteLocalConversationList(M),M}return[]})}_deleteLocalConversationList(s){let n=!1;s.forEach(g=>{NA.hasLocalConversation(g)&&(this._deleteLocalConversation(g,!1),n=!0)}),console.log(`${this._name}._deleteLocalConversationList isUpdate:${n}`),n&&NA.emitConversationListUpdate()}_deleteLocalConversation(s,n=!0){const g=NA.hasLocalConversation(s);console.log(`${this._name}._deleteLocalConversation conversationID:${s} has:${g}`),g&&(NA.deleteLocalConversation(s),this._deleteConversationLocalMessage(s),n&&NA.emitConversationListUpdate())}_hasLocalGroup(s){const{OuterConstant:{CONV_GROUP:n},appStore:{groupStore:g}}=this._core,u=s.replace(n,"");return!!g.getGroup(u)}_deleteConversationLocalMessage(s){console.log(`${this._name}._deleteConversationLocalMessage conversationID:${s}`),this._core.message.messageDataHandler.deleteConversationMessageList(s),this._core.message.messageHistory.completedHistoryConversations.delete(s)}},St=new class{constructor(){this._name="SetConversationDraft"}init(s){this._core=s;const{helper:n}=s;n.registerApi({apiName:"setConversationDraft",context:this})}setConversationDraft(s){return pA(this,void 0,void 0,function*(){const{conversationID:n,draftText:g}=s;if(console.log(`${this._name} conversationID:${n} draftText:${g}`),!NA.hasLocalConversation(n))throw new this._core.helper.ChatError({code:Ba.CONV_NOT_FOUND});const u=NA.getLocalConversation(n);return u?.setDraftText(g),NA.emitConversationListUpdate(),{code:0,data:{conversation:u}}})}},Kt=new class{constructor(){this._name="SetC2CMessageRemindType"}init(s){this._core=s}set(s,n){return pA(this,void 0,void 0,function*(){s.length>30&&(console.warn(`${this._name}.set userIDList length:${s.length} exceeds limit 30`),s.splice(30));const g=function(){const{MSG_REMIND_ACPT_AND_NOTE:P,MSG_REMIND_DISCARD:W,MSG_REMIND_ACPT_NOT_NOTE:iA}=ho.core.OuterConstant;return{[P]:0,[W]:1,[iA]:2}}()[n],u=yield function(P,W){return pA(this,void 0,void 0,function*(){const{userIDList:iA,receiveMessageOption:EA}=P,RA={Peer_Account:iA,Mute_Notifications:EA};return W.common.buildAndSendPacket({servcmd:"openim.set_c2c_peer_mute_notifications",data:RA})})}({userIDList:s,receiveMessageOption:g},this._core),{ErrorList:E=[]}=u||{},m=[];E.forEach(P=>{const{Peer_Account:W,ErrorCode:iA}=P;m.push({userID:W,code:iA});const EA=s.indexOf(W);EA>-1&&s.splice(EA,1)});const D=[],M=[],{OuterConstant:T}=this._core;return s.forEach(P=>{M.push(`${T.CONV_C2C}${P}`),D.push({userID:P})}),NA.patchMessageRemindType(M,n),{code:0,data:{successUserIDList:D,failureUserIDList:m}}})}},ai=new class{constructor(){this._name="SetGroupMessageRemindType"}init(s){this._core=s}set(s,n){return pA(this,void 0,void 0,function*(){const{common:{getCurrentUserID:g,isTopic:u},OuterConstant:E}=this._core;if(yield function(m,D){return pA(this,void 0,void 0,function*(){const{groupID:M,userID:T,receiveMessageOption:P}=m,W={GroupId:M,Member_Account:T,MsgFlag:P};return D.common.buildAndSendPacket({servcmd:"group_open_http_svc.modify_group_member_info",data:W})})}({groupID:s,userID:g(),receiveMessageOption:n},this._core),!u(s)){const m=`${E.CONV_GROUP}${s}`;NA.patchMessageRemindType([m],n)}return{code:0,data:{groupID:s,messageRemindType:n}}})}},ft=new class{constructor(){this._name="SetMessageRemindType"}init(s){this._core=s;const{helper:n}=s;n.registerApi({apiName:"setMessageRemindType",context:this})}handleC2CMessageRemindTypeSync(s){const{helper:{isEmpty:n},OuterConstant:g,ssoLog:u}=this._core;s.forEach(E=>{const{MuteNotificationsSync:m}=E;if(!n(m)){const{To_Account:D,MuteNotifications:M}=m,T=D.map(W=>`${g.CONV_C2C}${W}`),P=ji(M);u.debug(`${this._name}.handleC2CMessageRemindTypeSync conversationIDList:${T} messageRemindType:${P}`),NA.patchMessageRemindType(T,P)}})}setMessageRemindType(s){return pA(this,void 0,void 0,function*(){const n="setMessageRemindType",{groupID:g,userIDList:u,messageRemindType:E}=s,{helper:m,utils:{isUndefined:D},ssoLog:M}=this._core;try{if(!D(g))return M.debug(`${this._name}.${n} groupID:${g} messageRemindType:${E}`),yield ai.set(g,E);if(!D(u))return M.debug(`${this._name}.${n} userIDList:${u} messageRemindType:${E}`),yield Kt.set(u,E);throw new m.ChatError({functionName:n,message:"userIDList or groupID is required"})}catch(T){throw new m.ChatError({functionName:n,code:T?.errorCode,message:T?.errorInfo,moreMessage:`groupID:${g} userIDList:${u} messageRemindType:${E}`})}})}},Bi=new class{init(s){s.ssoLog.debug("ConversationAction.init"),this._core=s,zA.init(s),Re.init(s),le.init(s),Ne.init(s),ae.init(s),Fe.init(s),St.init(s),ft.init(s);const{notificationCenter:n,InnerEvent:{MESSAGE_PUSH:g,DESTROY:u}}=this._core,{InnerEventSubType:{CONV_MODIFIED:E,C2C_MESSAGE_READ_SYNC:m,GROUP_MESSAGE_READ_SYNC:D,C2C_REMIND_TYPE_SYNC:M}}=n;n.subscribeInnerEvent(g,E,this._onConversationModified,this),n.subscribeInnerEvent(g,m,this._onC2CMessageReadSync,this),n.subscribeInnerEvent(g,M,this._onC2CMessageRemindTypeSync,this),n.subscribeInnerEvent(g,D,this._onGroupMessageReadSync,this),n.subscribeInnerEvent(u,this._dispose,this)}_onConversationModified(s){const{constants:{ConvModifyPushType:n}}=this._core,{RecentContactMod:g=[]}=s;g.forEach(u=>{const{PushType:E}=u;if(E===n.CONV_DELETED){const{RecentContactList:m}=u.RecentContactDeleteItem;Fe.handleConversationDeleted(m)}if(E===n.CONV_PINED){const{RecentContactList:m}=u.RecentContactTopItem;ae.handleConversationPinned(m,!0)}if(E===n.CONV_UNPINED){const{RecentContactList:m}=u.RecentContactTopItem;ae.handleConversationPinned(m,!1)}})}_onC2CMessageReadSync(s){const{C2cNotifyMsgArray:n=[]}=s;Ne.handleC2CMessageReadSync(n)}_onC2CMessageRemindTypeSync(s){const{C2cNotifyMsgArray:n=[]}=s;ft.handleC2CMessageRemindTypeSync(n)}_onGroupMessageReadSync(s){const{GroupTips:n=[]}=s;Ne.handleGroupMessageReadSync(n)}_dispose(){const{notificationCenter:s,InnerEvent:{MESSAGE_PUSH:n,DESTROY:g}}=this._core,{InnerEventSubType:{CONV_MODIFIED:u,C2C_MESSAGE_READ_SYNC:E,GROUP_MESSAGE_READ_SYNC:m,C2C_REMIND_TYPE_SYNC:D}}=s;s.unSubscribeInnerEvent(n,u,this._onConversationModified,this),s.unSubscribeInnerEvent(n,E,this._onC2CMessageReadSync,this),s.unSubscribeInnerEvent(n,D,this._onC2CMessageRemindTypeSync,this),s.unSubscribeInnerEvent(n,m,this._onGroupMessageReadSync,this),s.unSubscribeInnerEvent(g,this._dispose,this)}},Ao=new class{init(s){this._core=s;const{helper:n}=s;n.registerApi({apiName:"setAllReceiveMessageOpt",context:this})}setAllReceiveMessageOpt(s){return pA(this,void 0,void 0,function*(){try{const{OuterConstant:{MSG_REMIND_ACPT_NOT_NOTE:n}}=this._core,{messageRemindType:g=n,isRepeated:u=!0}=s,{startTime:E=0,endTime:m=0}=this._calcStartAndEndTime(s),D=yield function(M){return pA(this,void 0,void 0,function*(){const{common:T}=ho.core,{startTime:P,endTime:W,isRepeated:iA,messageRemindType:EA}=M,RA={StartTime:P,EndTime:W,IsRepeated:iA,Level:EA};return T.buildAndSendPacket({servcmd:"im_msg_db_logic.ws_set_do_not_disturb",data:RA})})}({messageRemindType:this._getType(g),startTime:E,endTime:m,isRepeated:u?is.ON:is.OFF});return{code:0,data:{errorCode:D.ErrorCode,errorInfo:D.ErrorInfo}}}catch(n){oc("setAllReceiveMessageOpt",n)}})}_calcStartAndEndTime(s){const{startHour:n=0,startMinute:g=0,startSecond:u=0,duration:E=0,isRepeated:m=!0}=s,D=new Date,M=new Date(D.getFullYear(),D.getMonth(),D.getDate(),n,g,u),T=Math.round(M.getTime()/1e3);let P=T+E;return m&&E>=86400&&(P=T+86400),{startTime:T,endTime:P}}_getType(s){const{OuterConstant:n}=this._core;return{[n.MSG_REMIND_ACPT_AND_NOTE]:0,[n.MSG_REMIND_DISCARD]:1,[n.MSG_REMIND_ACPT_NOT_NOTE]:2}[s]}},Is=new class{init(s){this._core=s;const{helper:n,notificationCenter:g,InnerEvent:u}=s;n.registerApi({apiName:"getAllReceiveMessageOpt",context:this}),g.subscribeInnerEvent(u.MESSAGE_PUSH,g.InnerEventSubType.ALL_RECEIVE_MESSAGE_OPTION,this.onAllReceiveMsgOptionNotify,this)}onAllReceiveMsgOptionNotify(s){const n=this._handleResult(s),{notificationCenter:g,OuterEvent:{ALL_RECEIVE_MESSAGE_OPT_UPDATED:u}}=this._core;g.emitOuterEvent(u,{name:u,data:n})}getAllReceiveMessageOpt(){return pA(this,void 0,void 0,function*(){try{const s=yield function(){return pA(this,void 0,void 0,function*(){const{common:n}=ho.core,g={To_Account:n.getCurrentUserID()};return n.buildAndSendPacket({servcmd:"im_msg_db_logic.ws_get_do_not_disturb",data:g})})}();return{code:0,data:this._handleResult(s)}}catch(s){oc("getAllReceiveMessageOpt",s)}})}_handleResult(s){const{OuterConstant:n}=this._core,{MSG_REMIND_ACPT_AND_NOTE:g,MSG_REMIND_DISCARD:u,MSG_REMIND_ACPT_NOT_NOTE:E}=n,m={0:g,1:u,2:E},{Level:D,StartTime:M,EndTime:T,IsRepeated:P}=s;return{messageRemindType:m[D]||g,startTime:M,endTime:T,isRepeated:P===is.ON}}},Uo=new class{init(s){s.ssoLog.debug("ReceiveMessageOptions.init"),this._core=s,Kt.init(s),ai.init(s),BA.init(s),yA.init(s),Ao.init(s),Is.init(s)}};const ti=s=>!Bt(s)&&!ug(s)&&!ks(s),Ur={getConversationProfile:[{key:"conversationID",required:!0,rules:["string"],allowEmpty:!1,customValidator:s=>!ti(s)||"conversationID is invalid."}],setMessageRead:{conversationID:{required:!0,rules:["string"],allowEmpty:!1,customValidator:s=>!ti(s)||"conversationID is invalid."}},pinConversation:{conversationID:{required:!0,rules:["string"],allowEmpty:!1,customValidator:s=>!ti(s)||"conversationID is invalid."},isPinned:{required:!0,rules:["boolean"],allowEmpty:!1}},deleteConversation:[{key:"options",required:!0,rules:["string","object"],allowEmpty:!1,customValidator:s=>{const{core:{utils:{isArray:n,isObject:g,isString:u}}}=ho;if(!u(s)&&!g(s))return"options is String or Object.";if(u(s)&&ti(s))return"conversationID is invalid.";if(g(s)){if(!n(s.conversationIDList))return"conversationIDList is not Array.";if(s.conversationIDList.length===0)return"conversationIDList is empty.";if(s.conversationIDList.some(E=>{if(ti(E))return!0}))return"conversationIDList includes invalid conversationID.";if(s.clearHistoryMessage&&typeof s.clearHistoryMessage!="boolean")return"clearHistoryMessage is not Boolean."}return!0}}],setConversationDraft:{conversationID:{required:!0,rules:["string"],allowEmpty:!1,customValidator:s=>!(!Bt(s)&&!ug(s))||"conversationID is invalid."},draftText:{required:!0,rules:["string"],allowEmpty:!0}},setAllReceiveMessageOpt:{messageRemindType:{required:!1,rules:["string"],allowEmpty:!0},startHour:{required:!1,rules:["number"],allowEmpty:!0},startMinute:{required:!1,rules:["number"],allowEmpty:!0},startSecond:{required:!1,rules:["number"],allowEmpty:!0},duration:{required:!1,rules:["number"],allowEmpty:!0},isRepeated:{required:!1,rules:["boolean"],allowEmpty:!0}}},Zo={getConversationList:!0,getConversationProfile:!0,getTotalUnreadCount:!0,setMessageRead:!0,pinConversation:!0,deleteConversation:!0,setConversationDraft:!0,setMessageRemindType:!0,getAllReceiveMessageOpt:!0,setAllReceiveMessageOpt:!0};var jn=new class{constructor(){this.name="Conversation"}install(s){ho.init(s),Bi.init(s),Uo.init(s),NA.init(s),s.helper.registerValidateConfig({auth:Zo,params:Ur})}};const Wn=new class{init(s){this.core=s}},ta="AVChatRoom",qr="AV_HISTORY_MSG",sc="GRP_COUNTER",Ju="Set",pm="Increase",Ri="Decrease",ii=0,yo=1,on=2,os=["Type","Name","Introduction","Notification","FaceUrl","Owner_Account","CreateTime","InfoSeq","LastInfoTime","LastMsgTime","MemberNum","MaxMemberNum","ApplyJoinOption","NextMsgSeq","ShutUpAllMember","InviteJoinOption","LastRecallTime"],Eg=["Type","Name","Introduction","Notification","FaceUrl","CreateTime","Owner_Account","LastInfoTime","LastMsgTime","NextMsgSeq","MemberNum","MaxMemberNum","ApplyJoinOption","InviteJoinOption"],Fl=["Role","JoinTime","MsgFlag","MsgSeq"],md=["Role","JoinTime","MsgSeq","MsgFlag","NameCard"],Lc=0,Mr=1,DI="notStart",ou="resolved",Og="rejected",su=10018,SI=11e3,Uc=2,Hu=["Owner","Admin","Member"],mm=["Role","JoinTime","NameCard","ShutUpUntil","OnlineStatus"],fm=0,ym=1,Dm=2,sD=4,nD=1,bv=2,rD=3,aD=4,kv=5,ET=1,fd=0,dT=4,gD=6,CT=400,cD=300,hT={from:!0,groupID:!0,groupName:!0,to:!0},Lv={from:!0,groupID:!0,groupName:!0,to:!0,type:!0},BT=2,Uv=4,QT=5,pT=7,lD=8,ID=15,_Q=20,Sm=21,Mm=2600,yd=2602,mT=2603,fT=2620,vm=2621,uD=2623,lh=2660,yT=2661,DT=2681,Rm=2683,Fv=2684,ED=2685,wm=2687,Ov=3122,ST=10018,MT={0:"DisableInvite",1:"NeedPermission",2:"FreeAccess"},Pv=s=>s===Wn.core.OuterConstant.GRP_PUBLIC,Dd=s=>s===Wn.core.OuterConstant.GRP_AVCHATROOM,_m=(s,n)=>{const{isArray:g}=Wn.core.utils;if(!g(s)||!g(n))return!1;let u=!1;return n.forEach(({key:E,value:m})=>{const D=s.find(M=>M.key===E);D?D.value!==m&&(D.value=m,u=!0):(s.push({key:E,value:m}),u=!0)}),u},Sd=s=>{const n=[];if(!s)return n;for(let g=0,u=s.length;g{const n=[];for(let g=0,u=s.length;g0&&M.members.forEach(T=>{T.userID===this.selfInfo.userID&&D(this.selfInfo,T,["sequence"])})}updateSelfInfo(n){const{nameCard:g,joinTime:u,role:E,messageRemindType:m,readedSequence:D,excludedUnreadSequenceList:M}=n,{common:{deepMerge:T}}=Wn.core;T(this.selfInfo,{nameCard:g,joinTime:u,role:E,messageRemindType:m,readedSequence:D,excludedUnreadSequenceList:M},[],["",null,void 0,0,NaN])}setSelfNameCard(n){this.selfInfo.nameCard=n}}var Yi=new class{constructor(){this._name="GroupDataHandler"}init(s){this._core=s;const{appStore:{groupStore:n}}=s;this._groupMap=n.getGroupMap()}hasLocalGroup(s){return this._groupMap.has(s)}getLocalGroup(s){return this._groupMap.get(s)}updateLocalGroup(s){const{common:{getCurrentUserID:n}}=this._core;let g;s.forEach(E=>{var m;g=E.groupID,this.hasLocalGroup(g)?(m=this.getLocalGroup(g))===null||m===void 0||m.updateGroup(E):(this._groupMap.set(g,new qu(E)),this._clearGroupLocalMessage(g))});const u=n();for(const[,E]of this._groupMap)E.selfInfo.userID=u,E.selfInfo.role==="Owner"&&(E.ownerID=u)}deleteLocalGroup(s){this._groupMap.delete(s)}getLocalGroupList(){const{OuterConstant:{GRP_ROOM:s,GRP_LIVE:n}}=this._core;return[...this._groupMap.values()].filter(g=>{const{type:u}=g;return u!==s&&u!==n})}clearLocalGroup(){this._groupMap.clear()}emitGroupListUpdate(){const s=this.getLocalGroupList(),{OuterEvent:{GROUP_LIST_UPDATED:n},notificationCenter:g}=this._core;g.emitOuterEvent(n,{name:n,data:s})}updateConversationGroupProfile(s){const{appStore:{conversationStore:n},OuterConstant:{CONV_GROUP:g}}=this._core,u=`${g}${s}`,E=n.getConversation(u);if(E){const m=this.getLocalGroup(s);E.setProfileCompleted(),n.updateConversation(u,{groupProfile:m})}}reset(){this.clearLocalGroup()}_clearGroupLocalMessage(s){const{message:{messageHistory:n,messageDataHandler:g},OuterConstant:{CONV_GROUP:u},ssoLog:E}=this._core;E.debug("_clearGroupLocalMessage",`groupID:${s}`);const m=`${u}${s}`;n.completedHistoryConversations.delete(m),g.deleteConversationMessageList(m)}};function Nm(s,n){return pA(this,void 0,void 0,function*(){const{type:g,limit:u,offset:E,supportTopic:m=0,memberAccount:D,responseFilter:M}=s,T={Type:g,Limit:u,Offset:E,Member_Account:D,ResponseFilter:M,SupportTopic:m,NeedAppDefineData:1};return n.common.buildAndSendPacket({servcmd:"group_open_http_svc.get_joined_group_list",data:T})})}const dn=function(s,n){return{code:0,data:s||{},successLog:n}};var xv=new class{constructor(){this._name="GetGroupList",this._pagingStatus=DI,this.PAGING_GRP_COUNT_LIMIT=200}init(s){this._core=s;const{helper:n,constants:{WORKFLOW_NAME:g,WORKFLOW_STEP:u}}=s;n.registerApi({apiName:"getGroupList",context:this}),n.registerWorkflowStep(g.SYNC_SERVER_INFO_AFTER_LOGIN,u.GROUP_LIST_SYNC,this._syncGroupList,this)}getGroupList(){return pA(this,arguments,void 0,function*(s=!1){if(s){const g=[];return yield this._pagingGetJoinedCommunityList({limit:this.PAGING_GRP_COUNT_LIMIT,offset:0,groupList:g}),Yi.updateLocalGroup(g),Yi.getLocalGroupList()}if(this._core.ssoLog.debug("getGroupList",`${this._name}.getGroupList pagingStatus:${this._pagingStatus}`),this._pagingStatus===Og||this._pagingStatus===DI)return this._syncGroupList().then(()=>{const g=Yi.getLocalGroupList();return dn({groupList:g,isSyncCompleted:this._isSyncCompleted()})}).catch(g=>{throw g});const n=Yi.getLocalGroupList();return dn({groupList:n,isSyncCompleted:this._isSyncCompleted()},{message:`return group count:${n.length}`})})}_syncGroupList(){return pA(this,void 0,void 0,function*(){this._pagingStatus===DI&&Yi.clearLocalGroup();const s=this.PAGING_GRP_COUNT_LIMIT,n=[];try{yield this._pagingGetGroupList({limit:s,offset:0,groupList:n}),this._pagingStatus=ou,this._groupListTreeShaking(n),Yi.updateLocalGroup(n);const g=Yi.getLocalGroupList();return this._core.ssoLog.debug("_syncGroupList",`${this._name}._syncGroupList ok, count:${g.length}`),Yi.emitGroupListUpdate(),g}catch(g){throw this._pagingStatus=Og,g}})}_pagingGetGroupList(s){return pA(this,void 0,void 0,function*(){const{ssoLog:n}=this._core,{isCommunityRelay:g=!1,groupList:u}=s;let E,{limit:m,offset:D}=s;const M=[...os];g&&(E=this._core.OuterConstant.GRP_COMMUNITY,M.push("AtInfoList"));try{const T=yield Nm({type:E,limit:m,offset:D,memberAccount:this._core.store.get("login").userId,responseFilter:{GroupBaseInfoFilter:M,SelfInfoFilter:[...Fl]}},this._core),{GroupIdList:P=[],TotalCount:W=0}=T||{},iA=this._convertGroupKey(P);u.push(...iA);const EA=D+m,RA=!(W>EA),kA=`offset:${D} limit:${m} total:${W} isCompleted:${RA} current:${u.length} isCommunityRelay:${g}`;return n.debug("_pagingGetGroupList",`${this._name}._pagingGetGroupList ok. ${kA}`),g?RA?u:(D=EA,this._pagingGetGroupList({isCommunityRelay:!0,limit:m,offset:D,groupList:u})):RA?(n.debug("_pagingGetGroupList",`${this._name}._pagingGetGroupList start to get community list`),D=0,this._pagingGetGroupList({isCommunityRelay:!0,limit:m,offset:D,groupList:u})):(D=EA,this._pagingGetGroupList({limit:m,offset:D,groupList:u}))}catch(T){if(T.ErrorCode===su)return n.warn("_pagingGetGroupList",`${this._name}._pagingGetGroupList response size exceeds the limit, request count:${m}`),m=50,this._pagingGetGroupList({isCommunityRelay:g,limit:m,offset:D,groupList:u});if(g)return T.code===SI&&n.debug("_pagingGetGroupList",`${this._name}._pagingGetGroupList ok. community unavailable`),u;throw T}})}_pagingGetJoinedCommunityList(s){return pA(this,void 0,void 0,function*(){const{common:{getCurrentUserID:n},OuterConstant:g,ssoLog:u}=this._core,{groupList:E}=s;let{limit:m,offset:D}=s;try{const M=yield Nm({limit:m,offset:D,type:g.GRP_COMMUNITY,memberAccount:n(),supportTopic:1,responseFilter:{GroupBaseInfoFilter:[...os],SelfInfoFilter:[...Fl]}},this._core),{GroupIdList:T=[],TotalCount:P=0}=M||{},W=this._convertGroupKey(T);E.push(...W);const iA=D+m,EA=!(P>iA),RA=`offset:${D} limit:${m} total:${P} isCompleted:${EA} current:${E.length}`;return u.debug("_pagingGetJoinedCommunityList",`${this._name}._pagingGetJoinedCommunityList ok. ${RA}`),EA?E:(D=iA,this._pagingGetJoinedCommunityList({limit:m,offset:D,groupList:E}))}catch(M){if(M.code===ST)return u.warn("_pagingGetJoinedCommunityList",`${this._name}._pagingGetJoinedCommunityList response size exceeds the limit, request count:${m}`),m=50,this._pagingGetJoinedCommunityList({limit:m,offset:D,groupList:E});throw M}})}_groupListTreeShaking(s){const n=new Map([...Yi.getLocalGroupList()]);for(let u=0,E=s.length;u{const{AtFlagList:E,AtMsgSeq:m,From_Account:D}=u;g.push({groupID:s,groupAtType:E,sequence:m,from:D})}),g}},Ku=new class{constructor(){this._name="CreateGroup"}init(s){this._core=s;const{helper:n}=s;n.registerApi({apiName:"createGroup",context:this})}createGroup(s){return pA(this,void 0,void 0,function*(){var n;this._preCheckParams(s);const{helper:{ChatError:g}}=this._core;try{const{utils:{isEmpty:u},common:{getCurrentUserID:E},OuterConstant:{GRP_AVCHATROOM:m}}=this._core,D=yield function(iA,EA){return pA(this,void 0,void 0,function*(){const{name:RA,type:kA,groupID:xA,introduction:LA,notification:SA,avatar:OA,maxMemberNum:JA,joinOption:ne,inviteOption:se,memberList:_i,groupCustomField:Ti,isSupportTopic:Lt}=iA;let Ni,cs;_i&&(Ni=_i.map(mt=>{const{userID:UA,memberCustomField:oi}=mt;return{Member_Account:UA,AppMemberDefinedData:oi?OE(oi):void 0}})),Ti&&(cs=OE(Ti));const Se={Name:RA,Type:kA,GroupId:xA,Introduction:LA,Notification:SA,FaceUrl:OA,MaxMemberCount:JA,ApplyJoinOption:ne,InviteJoinOption:se,MemberList:Ni,AppDefinedData:cs,SupportTopic:Lt,webPushFlag:1};return EA.common.buildAndSendPacket({servcmd:"group_open_http_svc.create_group",data:Se})})}(Object.assign(Object.assign({},s),{ownerID:E()}),this._core),{GroupId:M,OverJoinedGroupLimit_Account:T=[]}=D||{},P=`${this._name}.createGroup ok, type:${s.type} groupID:${M} overLimitUserIDList:${T}`;if(u(s.memberList)||u(T)||(s.memberList=(n=s.memberList)===null||n===void 0?void 0:n.filter(iA=>T.includes(iA.userID))),s.type===m)return dn({group:new qu(Object.assign(Object.assign({},s),{groupID:M}))},{message:P});Yi.updateLocalGroup([Object.assign(Object.assign({},s),{groupID:M})]);const W=Yi.getLocalGroup(M);return this._notNeedSendCustomMessage(s)||(this._sendCustomMessage(M,s.type),Yi.emitGroupListUpdate()),dn({group:W},{message:P})}catch(u){const{errorCode:E,errorInfo:m}=u;throw new g({functionName:"createGroup",code:E,message:m,moreMessage:` groupID:${s.groupID}`})}})}_preCheckParams(s){const{type:n,groupID:g}=s,{utils:{isEmpty:u,isUndefined:E},common:{isCommunity:m}}=this._core,D=!u(g);if(!(()=>{const{GRP_PUBLIC:M,GRP_WORK:T,GRP_MEETING:P,GRP_AVCHATROOM:W,GRP_COMMUNITY:iA}=Wn.core.OuterConstant;return[M,T,P,W,iA]})().includes(n))throw new this._core.helper.ChatError({code:Mm});if(!m({type:n})){if(D&&m({groupID:g}))throw new this._core.helper.ChatError({code:yd});E(s.isSupportTopic)||(s.isSupportTopic=void 0)}if(this._canIUseMemberList(n)||E(s.memberList)||(s.memberList=void 0),this._canIUseJoinOption(n)||E(s.joinOption)||(s.joinOption=void 0),m({type:n})){if(D&&!m({groupID:g}))throw new this._core.helper.ChatError({code:yd});s.isSupportTopic=this._canIUseTopic(s)?1:0}}_canIUseMemberList(s){return!Dd(s)}_canIUseJoinOption(s){return Pv(s)||this._core.common.isCommunity({type:s})}_canIUseTopic(s){const{isSupportTopic:n}=s;return n===!0}_notNeedSendCustomMessage(s){const{type:n,isSupportTopic:g}=s,{OuterConstant:{GRP_AVCHATROOM:u,GRP_COMMUNITY:E}}=this._core;return n===u||n===E&&g===1}_sendCustomMessage(s,n){var g,u,E,m,D,M;const{OuterConstant:T,common:{t:P}}=this._core;let W=P("CREATE_GROUP"),iA=Lc;n===T.GRP_COMMUNITY&&(W=P("CREATE_COMMUNITY"),iA=Mr);const EA={to:s,conversationType:"GROUP",payload:{data:JSON.stringify({businessID:"group_create",content:W,cmd:iA,opUser:this._core.store.get("login").userId,version:4})}},RA=(E=(u=(g=this._core)===null||g===void 0?void 0:g.message)===null||u===void 0?void 0:u.messageFactory)===null||E===void 0?void 0:E.createCustomMessage(EA);(M=(D=(m=this._core)===null||m===void 0?void 0:m.message)===null||D===void 0?void 0:D.messageSender)===null||M===void 0||M.sendMessage(RA,{})}},zs=new class{constructor(){this._name="AttributesDataHandler",this._groupAttributesCache=new Map,this._groupAttributesCacheValuesCopy={}}init(s){this._core=s;const{helper:n,constants:g}=s;n.registerWorkflowStep(g.WORKFLOW_NAME.SYNC_SERVER_INFO_AFTER_RE_ONLINE,g.WORKFLOW_STEP.GROUP_ATTRIBUTE_CACHE_CLEAR,this.clearLocalMainSequence,this)}clearLocalMainSequence(){this._groupAttributesCache.forEach(s=>{s.localMainSequence=0})}isGroupAttributesUpdated(s){const{elements:{newGroupProfile:n}}=s,{utils:{isEmpty:g,isUndefined:u}}=this._core;return!u(n)&&!g(n.groupAttributeOption)}handleGroupAttributesUpdated(s){const{groupID:n,groupAttributeOption:g}=s,{serverMainSequence:u,groupAttributeList:E=[],operation:m}=g;this._core.ssoLog.debug("handleGroupAttributesUpdated",`${this._name}.handleGroupAttributesUpdated groupID:${n} operation:${m}`);const{utils:{isUndefined:D}}=this._core;D(m)||(this.refreshGroupAttributesCache({groupID:n,serverMainSequence:u,groupAttributeList:E,operation:m}),this.emitGroupAttributesUpdated(n))}initGroupAttributesCache(s){const{groupID:n,avChatRoomKey:g}=s;this._groupAttributesCache.set(n,{lastUpdateTime:0,localMainSequence:0,serverMainSequence:0,avChatRoomKey:g,values:new Map}),this._core.ssoLog.debug("initGroupAttributesCache",`${this._name}.initGroupAttributesCache. groupID:${n} avChatRoomKey:${g}`)}hasGroupAttributesCache(s){return this._groupAttributesCache.has(s)}getGroupAttributesCache(s){return this.hasGroupAttributesCache(s)||this.initGroupAttributesCache({groupID:s}),this._groupAttributesCache.get(s)}deleteGroupAttributesCache(s){this.hasGroupAttributesCache(s)&&this._groupAttributesCache.delete(s)}refreshGroupAttributesCache(s){const{groupID:n,serverMainSequence:g,groupAttributeList:u,operation:E}=s;if(this.hasGroupAttributesCache(n)){const m=this.getGroupAttributesCache(n),{localMainSequence:D}=m;E!==kv&&g-D!==1||(m.serverMainSequence=g,m.localMainSequence=g,m.lastUpdateTime=Date.now(),this._updateGroupAttributesCacheValues({groupAttributes:m,groupAttributeList:u,operation:E})),g-D>1&&(m.serverMainSequence=g),this._groupAttributesCache.set(n,m),this._core.ssoLog.debug("refreshGroupAttributesCache",`${this._name}.refreshGroupAttributesCache. operation:${E} localMainSequence:${D} serverMainSequence:${g}`)}}_updateGroupAttributesCacheValues(s){const{groupAttributes:n,groupAttributeList:g=[],operation:u}=s;u!==rD?u!==aD?(u===nD&&n.values.clear(),g.forEach(E=>{const{key:m,value:D,sequence:M}=E;n.values.set(m,{value:D,sequence:M})})):g.forEach(E=>{n.values.delete(E.key)}):n.values.clear()}getGroupAttributesCacheValues(s){var n;const{groupID:g,keyList:u=[]}=s,E={};if(this.hasGroupAttributesCache(g)){const{values:m}=this.getGroupAttributesCache(g);if(u.length===0){for(const D of m.keys())E[D]=((n=m.get(D))===null||n===void 0?void 0:n.value)||"";return E}return u.forEach(D=>{var M;m.has(D)&&(E[D]=((M=m.get(D))===null||M===void 0?void 0:M.value)||"")}),E}return E}saveGroupAttributesCacheValuesCopy(s){this._groupAttributesCacheValuesCopy=this.getGroupAttributesCacheValues({groupID:s})}emitGroupAttributesUpdated(s){var n,g;const{OuterConstant:{GRP_ROOM:u,GRP_LIVE:E}}=this._core,m=this.getGroupAttributesCacheValues({groupID:s}),D=this._core.appStore.groupStore.getGroup(s),{updatedKeyList:M,deletedKeyList:T}=this._computeValuesChangedData(m);M.length===0&&T.length===0||([u,E].includes(D.type)?(this._core.ssoLog.debug("RICH_STATUS_CHANGED",`${this._name}.emitRichStatusChanged update count:${M.length}, delete count:${T.length}`),this._emitEvent({name:(n=this._core)===null||n===void 0?void 0:n.OuterEvent.RICH_STATUS_CHANGED,data:{groupID:s,richStatus:m,updatedKeyList:M,deletedKeyList:T}})):(this._core.ssoLog.debug("emitGroupAttributesUpdated",`${this._name}.emitGroupAttributesUpdated update count:${M.length}, delete count:${T.length}`),this._emitEvent({name:(g=this._core)===null||g===void 0?void 0:g.OuterEvent.GROUP_ATTRIBUTES_UPDATED,data:{groupID:s,groupAttributes:m,updatedKeyList:M,deletedKeyList:T}})))}_computeValuesChangedData(s){const{utils:{isUndefined:n}}=this._core,g=[],u=[];return Object.keys(s).forEach(E=>{s[E]!==this._groupAttributesCacheValuesCopy[E]&&g.push(E)}),Object.keys(this._groupAttributesCacheValuesCopy).forEach(E=>{n(s[E])&&u.push(E)}),this._groupAttributesCacheValuesCopy={},{updatedKeyList:g,deletedKeyList:u}}_emitEvent(s){var n;(n=this._core)===null||n===void 0||n.notificationCenter.emitOuterEvent(s.name,s)}convertKeyValueMapToList(s){const n=[];return Object.keys(s).forEach(g=>{n.push({key:g,value:s[g]})}),n}reset(){this._groupAttributesCache.clear(),this._groupAttributesCacheValuesCopy={}}},uh=new class{constructor(){this._name="DismissGroup"}init(s,n){this._core=s;const{helper:g}=s;g.registerApi({apiName:"dismissGroup",context:this,matcher:()=>!n.getInstalledSubPlugins().includes(ta)})}dismissGroup(s){return pA(this,void 0,void 0,function*(){const{helper:{ChatError:n}}=this._core;try{yield function(u,E){return pA(this,void 0,void 0,function*(){const m={GroupId:u};return E.common.buildAndSendPacket({servcmd:"group_open_http_svc.destroy_group",data:m})})}(s,this._core);const{type:g}=Yi.getLocalGroup(s);return Yi.deleteLocalGroup(s),Yi.emitGroupListUpdate(),zs.deleteGroupAttributesCache(s),dn({groupID:s,type:g},{message:s})}catch(g){const{errorCode:u,errorInfo:E}=g;throw new n({functionName:"dismissGroup",code:u,message:E})}})}},Ol=new class{constructor(){this._name="GetGroupProfile"}init(s){this._core=s;const{helper:n}=s;n.registerApi({apiName:"getGroupProfile",context:this})}getGroupProfile(s){return pA(this,void 0,void 0,function*(){const{groupID:n,groupCustomFieldFilter:g}=s,u={groupIDList:[n],responseFilter:{GroupBaseInfoFilter:[...os],AppDefinedDataFilter_Group:g,MemberInfoFilter:[...md]}},{helper:{ChatError:E}}=this._core;try{const m=yield this.getGroupProfileAdvance(u),{successGroupList:D,failureGroupList:M}=m;if(M.length>0)throw M[0];let T;return!Yi.hasLocalGroup(n)&&Dd(D[0].type)?T=new qu(D[0]):(Yi.updateLocalGroup(D),T=Yi.getLocalGroup(n)),T.isSupportTopic||Yi.updateConversationGroupProfile(n),dn({group:T},{message:`groupID:${n}`})}catch(m){const{code:D,message:M}=m;throw new E({functionName:"getGroupProfile",code:D,message:M})}})}getGroupProfileAdvance(s){return pA(this,void 0,void 0,function*(){const{groupIDList:n}=s,{common:{isCommunity:g}}=this._core,u=n.filter(T=>!g({groupID:T})),E=n.filter(T=>g({groupID:T}));u.length>50&&(u.length=50),E.length>50&&(E.length=50);const m=yield Promise.all([this._getGroupProfileAdvance(Object.assign(Object.assign({},s),{groupIDList:u})),this._getGroupProfileAdvance(Object.assign(Object.assign({},s),{groupIDList:E,isCommunityProfile:!0}))]),D=[],M=[];return m.forEach(T=>{D.push(...T.successGroupList),M.push(...T.failureGroupList)}),{successGroupList:D,failureGroupList:M}})}_getGroupProfileAdvance(s){return pA(this,void 0,void 0,function*(){const{ssoLog:n,utils:{isUndefined:g}}=this._core,{isCommunityProfile:u=!1}=s,E=Do(s,["isCommunityProfile"]);if(E.groupIDList.length===0)return{successGroupList:[],failureGroupList:[]};try{const m=yield function(W,iA){return pA(this,void 0,void 0,function*(){const{groupIDList:EA,responseFilter:RA}=W,kA={GroupIdList:EA,ResponseFilter:RA};return iA.common.buildAndSendPacket({servcmd:"group_open_http_svc.get_group_self_member_info",data:kA})})}(E,this._core),{GroupInfo:D=[]}=m||{},M=this._convertGroupProfileKey(D),T=M.filter(W=>g(W.errorCode)||W.errorCode===0),P=M.filter(W=>W.errorCode&&W.errorCode!==0).map(W=>({code:W.errorCode,message:W.errorInfo,data:{groupID:W.groupID}}));return n.debug("_getGroupProfileAdvance",`${this._name}._getGroupProfileAdvance ok, groupID:${E.groupIDList.join(",")}`),{successGroupList:T,failureGroupList:P}}catch(m){if(u)return{successGroupList:[],failureGroupList:[]};throw m}})}_convertGroupProfileKey(s){const n=[];for(let g=0,u=s.length;g0&&u{const{Key:T,Value:P=0}=M;E.set(T,P)}),this._groupCountersMap.set(n,{lastUpdateTime:Date.now(),groupCounterSeq:u,counters:E,avChatRoomKey:m})}}initGroupCountersCache(s){const{groupID:n,avChatRoomKey:g}=s;this._groupCountersMap.set(n,{lastUpdateTime:0,groupCounterSeq:0,counters:new Map,avChatRoomKey:g})}getLocalCounters(s,n){const g={};if(!this._hasLocalGroupCounters(s))return g;const{counters:u}=this.getLocalGroupCounters(s);if(n.length>0)n.forEach(E=>{u.has(E)&&(g[E]=u.get(E))});else for(const E of u.keys())g[E]=u.get(E);return g}deleteLocalGroupCounters(s){const{groupID:n,counterList:g=[],groupCounterSeq:u}=s;if(this._hasLocalGroupCounters(n)){const{counters:E,avChatRoomKey:m}=this.getLocalGroupCounters(n);g.forEach(D=>{E.delete(D.key)}),this._groupCountersMap.set(n,{lastUpdateTime:Date.now(),groupCounterSeq:u,counters:E,avChatRoomKey:m})}}setGroupCounters(s,n){if(!this._hasLocalGroupCounters(s))return;const g=this.getLocalGroupCounters(s),{counters:u}=g;let E=!1;Object.entries(n).forEach(([m,D])=>{u.has(m)&&u.get(m)!==D&&(u.set(m,D),E=!0)}),E&&this._groupCountersMap.set(s,Object.assign(Object.assign({},g),{lastUpdateTime:Date.now(),counters:u}))}_hasLocalGroupCounters(s){return this._groupCountersMap.has(s)}reset(){this._groupCountersMap.clear()}},PE=new class{constructor(){this._name="JoinGroup"}init(s,n){this._core=s;const{helper:g}=s;g.registerApi({apiName:"joinGroup",context:this,matcher:()=>!n.getInstalledSubPlugins().includes(ta)})}joinGroup(s){return pA(this,void 0,void 0,function*(){const{groupID:n}=s,{helper:{ChatError:g},OuterConstant:u,ssoLog:E}=this._core;try{if(Yi.hasLocalGroup(n))try{return yield Ol.getGroupProfile({groupID:n}),dn({status:u.JOIN_STATUS_ALREADY_IN_GROUP,group:Yi.getLocalGroup(n)},{message:`groupID:${n} joinedStatus:${u.JOIN_STATUS_ALREADY_IN_GROUP}`})}catch{return E.warn("joinGroup",`${this._name}.joinGroup ${n} was unjoined, start to join!`),Yi.deleteLocalGroup(n),yield this._applyJoinGroup(s)}return yield this._applyJoinGroup(s)}catch(m){const{errorCode:D,errorInfo:M}=m;throw new g({functionName:"joinGroup",code:D,message:M,moreMessage:`groupID:${n}`})}})}_applyJoinGroup(s){return pA(this,void 0,void 0,function*(){const{OuterConstant:n,helper:g,ssoLog:u}=this._core,{groupID:E}=s,m=Object.assign({},s),D=g.checkBusinessCapabilityBits(qr);D&&(m.historyMessageFlag=1);const M=yield function(SA,OA){return pA(this,void 0,void 0,function*(){const{groupID:JA,applyMessage:ne,historyMessageFlag:se}=SA,_i={GroupId:JA,ApplyMsg:ne,HugeGroupHistoryMsgFlag:se};return OA.common.buildAndSendPacket({servcmd:"group_open_http_svc.apply_join_group",data:_i})})}(m,this._core),{Type:T,JoinedStatus:P,LongPollingKey:W,StartSeq:iA,HugeGroupFlag:EA,AVChatRoomKey:RA,RspMsgList:kA=[]}=M||{},xA=`groupID:${E} joinedStatus:${P} longPollingKey:${W} startSeq:${iA} avChatRoomFlag:${EA} canGetAVChatRoomHistoryMsg:${D}, historyMessageCount:${kA.length}`;u.debug("_applyJoinGroup",`${this._name}._applyJoinGroup ok, ${xA}`);let LA=new qu({groupID:E,type:T});if(P===n.JOIN_STATUS_WAIT_APPROVAL)return dn({status:n.JOIN_STATUS_WAIT_APPROVAL,group:LA});if(P===n.JOIN_STATUS_SUCCESS){try{LA=(yield Ol.getGroupProfile({groupID:E})).data.group}catch(SA){u.warn("_applyJoinGroup",`${this._name}._applyJoinGroup getGroupProfile failed, groupID: ${E}, errorCode:${SA?.code}`)}return this._handleJoinResult({group:LA,avChatRoomFlag:EA,longPollingKey:W,startSequence:iA,avChatRoomKey:RA,historyMessageList:kA})}throw new this._core.helper.ChatError({code:lh})})}_handleJoinResult(s){const{group:n,avChatRoomFlag:g,avChatRoomKey:u}=s;return g===1?(zs.initGroupAttributesCache({groupID:n.groupID,avChatRoomKey:u}),nc.initGroupCountersCache({groupID:n.groupID,avChatRoomKey:u}),dn(s)):(Yi.updateLocalGroup([n]),Yi.emitGroupListUpdate(),dn({status:this._core.OuterConstant.JOIN_STATUS_SUCCESS,group:n},{message:`groupID:${n.groupID}`}))}},TQ=new class{constructor(){this._name="QuitGroup"}init(s,n){this._core=s;const{helper:g}=s;g.registerApi({apiName:"quitGroup",context:this,matcher:()=>!n.getInstalledSubPlugins().includes(ta)})}quitGroup(s){return pA(this,void 0,void 0,function*(){if(!Yi.hasLocalGroup(s))throw new this._core.helper.ChatError({code:uD});const{helper:{ChatError:n}}=this._core;try{yield function(u,E){return pA(this,void 0,void 0,function*(){const m={GroupId:u};return E.common.buildAndSendPacket({servcmd:"group_open_http_svc.quit_group",data:m})})}(s,this._core);const{type:g}=Yi.getLocalGroup(s);return Yi.deleteLocalGroup(s),Yi.emitGroupListUpdate(),zs.deleteGroupAttributesCache(s),dn({groupID:s,type:g},{message:`groupID:${s}`})}catch(g){const{errorCode:u,errorInfo:E}=g;throw new n({functionName:"quitGroup",code:u,message:E,moreMessage:`groupID:${s}`})}})}},gB=new class{constructor(){this._name="SearchGroup"}init(s){this._core=s;const{helper:n}=s;n.registerApi({apiName:"searchGroupByID",context:this})}searchGroupByID(s){return pA(this,void 0,void 0,function*(){try{const n=yield function(OA,JA){return pA(this,void 0,void 0,function*(){const ne={GroupIdList:[OA],GroupBasePublicInfoFilter:[...Eg]};return JA.common.buildAndSendPacket({servcmd:"group_open_http_svc.get_group_public_info",data:ne})})}(s,this._core),{GroupInfo:g=[]}=n||{},{AppDefinedData:u=[],ApplyJoinOption:E,CreateTime:m,FaceUrl:D,Introduction:M,InviteJoinOption:T,MaxMemberNum:P,MemberNum:W,Name:iA,Owner_Account:EA,Type:RA,ErrorCode:kA,ErrorInfo:xA}=g[0];if(kA!==0)throw new this._core.helper.ChatError({code:kA,message:xA});const LA=Sd(u),SA=new qu({groupID:s,name:iA,avatar:D,introduction:M,joinOption:E,inviteOption:T,maxMemberCount:P,memberCount:W,type:RA,ownerID:EA,createTime:m,groupCustomField:LA});return dn({group:SA})}catch(n){const{errorCode:g,errorInfo:u}=n;throw new this._core.helper.ChatError({functionName:"searchGroupByID",code:g,message:u})}})}},vT=new class{constructor(){this._name="UpdateGroupProfile"}init(s){this._core=s;const{helper:n}=s;n.registerApi({apiName:"updateGroupProfile",context:this})}updateGroupProfile(s){return pA(this,void 0,void 0,function*(){const{groupID:n}=s,{utils:{isUndefined:g,safeStringify:u},ssoLog:E,helper:m}=this._core;let D=Yi.getLocalGroup(n);if(D){const{type:M}=D;this._canIUseJoinOption(M)||g(s.joinOption)||(E.warn("updateGroupProfile",`${this._name}.updateGroupProfile groupID:${n} joinOption is unavailable for Work/Meeting/AVChatRoom`),s.joinOption=void 0)}g(s.muteAllMembers)||(s.muteAllMembers=s.muteAllMembers===!0?"On":"Off");try{return yield function(M,T){return pA(this,void 0,void 0,function*(){const{groupID:P,name:W,avatar:iA,introduction:EA,notification:RA,muteAllMembers:kA,joinOption:xA,inviteOption:LA,groupCustomField:SA}=M,OA={GroupId:P,Name:W,FaceUrl:iA,Introduction:EA,Notification:RA,ShutUpAllMember:kA,ApplyJoinOption:xA,InviteJoinOption:LA,AppDefinedData:SA?OE(SA):void 0};return T.common.buildAndSendPacket({servcmd:"group_open_http_svc.modify_group_base_info",data:OA})})}(s,this._core),D?(D.updateGroup(s),Yi.emitGroupListUpdate()):D=new qu(s),dn({group:D},{message:`groupID:${n}`})}catch(M){const{errorCode:T,errorInfo:P}=M;throw new m.ChatError({code:T,message:P,moreMessage:`options:${u(s)}`})}})}_canIUseJoinOption(s){return Pv(s)||this._core.common.isCommunity({type:s})}},RT=new class{constructor(){this._name="ChangeGroupOwner"}init(s){this._core=s;const{helper:n}=s;n.registerApi({apiName:"changeGroupOwner",context:this})}changeGroupOwner(s){return pA(this,void 0,void 0,function*(){const n="changeGroupOwner",{groupID:g,newOwnerID:u}=s,E=Yi.getLocalGroup(g),{helper:m,OuterConstant:D,common:{getCurrentUserID:M}}=this._core;if(E?.type===D.GRP_AVCHATROOM)throw new m.ChatError({functionName:n,code:fT});if(u===M())throw new m.ChatError({functionName:n,code:vm});try{return yield function(T,P){return pA(this,void 0,void 0,function*(){const{groupID:W,newOwnerID:iA}=T,EA={GroupId:W,NewOwner_Account:iA};return P.common.buildAndSendPacket({servcmd:"group_open_http_svc.change_group_owner",data:EA})})}(s,this._core),E.ownerID=u,Yi.emitGroupListUpdate(),dn({group:E})}catch(T){throw new m.ChatError({functionName:n,code:T?.errorCode,message:T?.errorInfo})}})}},NQ=new class{constructor(){this._name="GetGroupOnlineMemberCount",this._onlineMemberCountMap=new Map}init(s,n){this._core=s;const{helper:g}=s;g.registerApi({apiName:"getGroupOnlineMemberCount",context:this,matcher:()=>!n.getInstalledSubPlugins().includes(ta)})}getGroupOnlineMemberCount(s){return pA(this,void 0,void 0,function*(){const n="getGroupOnlineMemberCount";if(!Yi.hasLocalGroup(s))return dn({memberCount:0});const g=Date.now();if(this._onlineMemberCountMap.has(s)){const u=this._onlineMemberCountMap.get(s),{lastReqTime:E=0,memberCount:m=0}=u||{};if(g-E<=6e4)return dn({memberCount:m})}try{const u=yield function(D,M){return pA(this,void 0,void 0,function*(){const T={GroupId:D};return M.common.buildAndSendPacket({servcmd:"group_open_http_svc.get_online_member_num",data:T})})}(s,this._core),{OnlineMemberNum:E=0}=u||{};this._onlineMemberCountMap.set(s,{lastReqTime:Date.now(),memberCount:E});const m=`${this._name}.${n} ok. groupID:${s} memberCount:${E}`;return dn({memberCount:E},{message:m})}catch(u){throw new this._core.helper.ChatError({functionName:n,code:u?.errorCode,message:u?.errorInfo})}})}},GQ=new class{init(s,n){s.ssoLog.debug("GroupAction.init"),xv.init(s),Ku.init(s),uh.init(s,n),PE.init(s,n),TQ.init(s,n),gB.init(s),Ol.init(s),vT.init(s),RT.init(s),NQ.init(s,n)}dismissGroup(s){return uh.dismissGroup(s)}joinGroup(s){return PE.joinGroup(s)}quitGroup(s){return TQ.quitGroup(s)}getGroupOnlineMemberCount(s){return NQ.getGroupOnlineMemberCount(s)}},Yv=new class{constructor(){this._name="GetGroupApplicationList"}init(s){this._core=s;const{helper:n}=s;n.registerApi({apiName:"getGroupApplicationList",context:this})}getGroupApplicationList(){return pA(this,void 0,void 0,function*(){const s="getGroupApplicationList";try{const n=yield Promise.all([this._getGroupApplicationList(),this._getGroupApplicationList({type:this._core.OuterConstant.GRP_COMMUNITY})]);this._core.ssoLog.debug("getGroupApplicationList",`${this._name}.${s} ok.`);const g=this._handleGroupApplicationResult([...n[0],...n[1]]);return dn({applicationList:g})}catch(n){throw new this._core.helper.ChatError({functionName:s,code:n?.errorCode,message:n?.errorInfo})}})}_getGroupApplicationList(s){return pA(this,void 0,void 0,function*(){const{type:n,startTime:g=0,limit:u=20}=s||{},{common:E}=this._core;let m;try{m=yield function(P,W){return pA(this,void 0,void 0,function*(){const{type:iA,startTime:EA,limit:RA,handleAccount:kA}=P,xA={Type:iA,StartTime:EA,Limit:RA,Handle_Account:kA};return W.common.buildAndSendPacket({servcmd:"group_open_http_svc.get_pendency",data:xA})})}({type:n,startTime:g,limit:u,handleAccount:E.getCurrentUserID()},this._core)}catch(P){if(P?.errorCode!==11e3)throw P;m={}}const{NextStartTime:D=0,PendencyList:M=[]}=m||{};if(D===0)return M;const T=yield this._getGroupApplicationList(Object.assign(Object.assign({},s),{startTime:D}));return[...M,...T]})}_handleGroupApplicationResult(s){const n=[];return s.forEach(g=>{const u=this._convertApplicationData(g),{handled:E}=u,m=Do(u,["handled"]);E===0&&n.push(m)}),n}_convertApplicationData(s){const{Handled:n,AddTime:g,ApplyInviteMsg:u,Authentication:E,FromUserNickName:m,From_Account:D,GroupId:M,GroupName:T,PendencyType:P,To_Account:W}=s;return{handled:n,messageKey:g,applicant:D,applicantNick:m,groupID:M,groupName:T,authentication:E,applicationType:P,userID:W,note:u,addTime:g}}},Vv=new class{constructor(){this._name="HandleGroupApplication"}init(s){this._core=s;const{helper:n}=s;n.registerApi({apiName:"handleGroupApplication",context:this})}handleGroupApplication(s){return pA(this,void 0,void 0,function*(){const{application:n}=s,g=this._handleParams(s);try{n?.applicationType===Uc?yield function(E,m){return pA(this,void 0,void 0,function*(){const{groupID:D,handleAction:M,handleMessage:T,applicant:P,authentication:W,invitee:iA}=E,EA={GroupId:D,HandleMsg:M,ApprovalMsg:T,Applicant_Account:P,Authentication:W,Invited_Account:iA};return m.common.buildAndSendPacket({servcmd:"group_open_http_svc.handle_invite_join_permission_group",data:EA})})}(g,this._core):yield function(E,m){return pA(this,void 0,void 0,function*(){const{groupID:D,handleAction:M,handleMessage:T,applicant:P,authentication:W,messageKey:iA}=E,EA={GroupId:D,HandleMsg:M,ApprovalMsg:T,Applicant_Account:P,Authentication:W,MsgKey:iA};return m.common.buildAndSendPacket({servcmd:"group_open_http_svc.handle_apply_join_group",data:EA})})}(g,this._core);const u=Yi.getLocalGroup(g.groupID);return dn({group:u})}catch(u){throw new this._core.helper.ChatError({functionName:"handleGroupApplication",code:u?.errorCode,message:u?.errorInfo})}})}_handleParams(s){var n;const{handleAction:g,handleMessage:u,message:E,application:m}=s;let D,M,T,P,W;if(E){const{payload:iA}=E||{};D=iA.operatorID,M=(n=iA.groupProfile)===null||n===void 0?void 0:n.groupID,T=iA.authentication,P=iA.messageKey}else D=m?.applicant||"",M=m?.groupID||"",T=m?.authentication||"",P=m?.messageKey||0;return m?.applicationType===Uc&&(W=m.userID),{handleAction:g,handleMessage:u,applicant:D,invitee:W,groupID:M,authentication:T,messageKey:P}}},dD=new class{init(s){s.ssoLog.debug("GroupApplication.init"),Yv.init(s),Vv.init(s)}};let yC=class{constructor(s){this.userID="",this.avatar="",this.nick="",this.role="",this.joinTime="",this.nameCard="",this.muteUntil=0,this.memberCustomField=[],this.isOnline=!1,this.updateMember(s)}updateMember(s){const{core:{utils:{isUndefined:n},common:{deepMerge:g}}}=Wn;n(s.muteTime)||(this.muteUntil=Math.floor((Date.now()+1e3*s.muteTime)/1e3)),n(s.onlineStatus)||(this.isOnline=s.onlineStatus==="Online");const u=[null,void 0,"",0,NaN];s.memberCustomField&&_m(this.memberCustomField,s.memberCustomField),g(this,s,["memberCustomField","marks","onlineStatus","muteTime"],u)}};function cB(s,n){return pA(this,void 0,void 0,function*(){const{groupID:g,userID:u,muteTime:E,role:m,nameCard:D,memberCustomField:M}=s;let T;M&&(T=OE(M));const P={GroupId:g,Member_Account:u,ShutUpTime:E,Role:m,NameCard:D,AppMemberDefinedData:T};return n.common.buildAndSendPacket({servcmd:"group_open_http_svc.modify_group_member_info",data:P})})}var CD=new class{constructor(){this._name="GetGroupMemberList"}init(s,n){this._core=s;const{helper:g}=s;g.registerApi({apiName:"getGroupMemberList",context:this,matcher:()=>!n.getInstalledSubPlugins().includes(ta)})}getGroupMemberList(s){return pA(this,void 0,void 0,function*(){const n="getGroupMemberList",{groupID:g,offset:u=0,count:E=100,role:m="",filter:D=""}=s,M=Yi.getLocalGroup(g),T=E>100?100:E,P={groupID:g,offset:u,limit:T,memberRoleFilter:Hu.includes(m)?[m]:void 0,memberInfoFilter:mm};try{const W=yield function(se,_i){return pA(this,void 0,void 0,function*(){const{isCommunity:Ti}=_i.common,{groupID:Lt,offset:Ni,limit:cs,memberRoleFilter:Se,memberInfoFilter:mt}=se,UA={GroupId:Lt,Limit:cs,MemberRoleFilter:Se,MemberInfoFilter:mt};return Ti({groupID:Lt})?UA.Next=String(Ni):UA.Offset=Ni,_i.common.buildAndSendPacket({servcmd:"group_open_http_svc.get_group_member_info",data:UA})})}(P,this._core),{MemberList:iA,MemberNum:EA,Next:RA}=W||{},kA=`${this._name}.${n} ok, totalMemberCount:${EA} next:${RA}`,{utils:{isArray:xA,isEmpty:LA},common:{isCommunity:SA}}=this._core;if(M&&(M.memberCount=EA),!xA(iA)||iA.length===0)return dn({memberList:[],offset:0},{message:kA});let OA=u+T;SA({groupID:g})&&(OA=LA(RA)?0:RA),iA.lengthD.userID),u=yield(n=this._core.user.userProfile)===null||n===void 0?void 0:n.getUserProfile({userIDList:g}),E=u?.data||[],m=new Map(E.map(D=>[D.userID,D]));return s.forEach(D=>{if(m.has(D.userID)){const{nick:M="",avatar:T=""}=m.get(D.userID);D.nick=M,D.avatar=T}}),s})}_generateGroupMember(s){const n=[];for(let g=0,u=s.length;g50&&(T.warn("getGroupMemberProfile",`${this._name}.${n} userIDList length:${u.length} exceeds limit 50`),u.splice(50));const P=`userIDList length:${u.length} groupID:${g}`;try{const W=yield function(kA,xA){return pA(this,void 0,void 0,function*(){const{groupID:LA,userIDList:SA,memberInfoFilter:OA,memberCustomFieldFilter:JA}=kA,ne={GroupId:LA,Member_List_Account:SA,MemberInfoFilter:OA,AppDefinedDataFilter_GroupMember:JA};return xA.common.buildAndSendPacket({servcmd:"group_open_http_svc.get_specified_group_member_info",data:ne})})}({groupID:g,userIDList:u,memberCustomFieldFilter:E,memberInfoFilter:[...mm]},this._core),{MemberList:iA}=W||{};if(!M(iA)||iA.length===0)return dn({memberList:[]});let EA=this._convertMemberInfo(iA);EA=yield this._getMemberAvatarAndNick(EA);const RA=this._generateGroupMember(EA);return dn({memberList:RA},{message:P})}catch(W){throw new D.ChatError({functionName:n,code:W?.errorCode,message:W?.errorInfo,moreMessage:P})}})}_convertMemberInfo(s){const n=[];for(let g=0,u=s.length;gD.userID),u=yield(n=this._core.user.userProfile)===null||n===void 0?void 0:n.getUserProfile({userIDList:g}),E=u?.data||[],m=new Map(E.map(D=>[D.userID,D]));return s.forEach(D=>{if(m.has(D.userID)){const{nick:M="",avatar:T=""}=m.get(D.userID);D.nick=M,D.avatar=T}}),s})}_generateGroupMember(s){const n=[];for(let g=0,u=s.length;g({Member_Account:M}));try{const M=yield function(RA,kA){return pA(this,void 0,void 0,function*(){const{groupID:xA,userIDList:LA}=RA,SA={GroupId:xA,MemberList:LA};return kA.common.buildAndSendPacket({servcmd:"group_open_http_svc.add_group_member",data:SA})})}({groupID:g,userIDList:D},this._core),{MemberList:T=[]}=M||{},{failureUserIDList:P,successUserIDList:W,existedUserIDList:iA,overLimitUserIDList:EA}=this._handleResult(T);return dn({failureUserIDList:P,successUserIDList:W,existedUserIDList:iA,overLimitUserIDList:EA,group:E},{message:` groupID:${g} successUserIDList:${W} failureUserIDList:${P} existedUserIDList:${iA} overLimitUserIDList:${EA}`})}catch(M){throw new m.ChatError({functionName:n,code:M?.errorCode,message:M?.errorInfo})}})}_handleResult(s){const n=[],g=[],u=[],E=[];return s.forEach(m=>{const{Result:D,Member_Account:M}=m;D===fm?n.push(M):D===ym?g.push(M):D===Dm?u.push(M):D===sD&&E.push(M)}),{failureUserIDList:n,successUserIDList:g,existedUserIDList:u,overLimitUserIDList:E}}},vd=new class{constructor(){this._name="DeleteGroupMember"}init(s,n){this._core=s;const{helper:g}=s;g.registerApi({apiName:"deleteGroupMember",context:this,matcher:()=>!n.getInstalledSubPlugins().includes(ta)})}deleteGroupMember(s){return pA(this,void 0,void 0,function*(){const n="deleteGroupMember",{groupID:g,userIDList:u}=s,E=Yi.getLocalGroup(g),{helper:m,utils:{isUndefined:D},ssoLog:M}=this._core;if(D(E))throw new m.ChatError({functionName:n,code:mT});u.length>20&&(M.warn("deleteGroupMember",`${this._name}.${n} userIDList length:${u.length} exceeds limit 20`),u.splice(20));try{return yield function(T,P){return pA(this,void 0,void 0,function*(){const{groupID:W,userIDList:iA,reason:EA}=T,RA={GroupId:W,MemberToDel_Account:iA,Reason:EA};return P.common.buildAndSendPacket({servcmd:"group_open_http_svc.delete_group_member",data:RA})})}({groupID:g,userIDList:u},this._core),dn({group:E,userIDList:u},{message:`groupID:${g} userIDList length:${u.length}`})}catch(T){throw new m.ChatError({functionName:n,code:T?.errorCode,message:T?.errorInfo})}})}},Jv=new class{constructor(){this._name="SetGroupMemberMuteTime"}init(s){this._core=s;const{helper:n}=s;n.registerApi({apiName:"setGroupMemberMuteTime",context:this})}setGroupMemberMuteTime(s){return pA(this,void 0,void 0,function*(){const{helper:n}=this._core,{groupID:g,userID:u,muteTime:E}=s,m=` groupID:${g} userID:${u} muteTime:${E}`;this._preCheckSettingMuteParams(s);try{yield cB(s,this._core);const D=Yi.getLocalGroup(g),M=new yC({userID:u,muteTime:E});return dn({group:D,member:M},{message:m})}catch(D){throw new n.ChatError({functionName:"setGroupMemberMuteTime",code:D?.errorCode,message:D?.errorInfo,moreMessage:m})}})}_preCheckSettingMuteParams(s){const{userID:n}=s,{store:g,helper:u}=this._core;if(n===g.get("login").userId)throw new u.ChatError({functionName:"setGroupMemberMuteTime",code:ED})}},kQ=new class{constructor(){this._name="SetGroupMemberRole"}init(s){this._core=s;const{helper:n}=s;n.registerApi({apiName:"setGroupMemberRole",context:this})}setGroupMemberRole(s){return pA(this,void 0,void 0,function*(){const n="setGroupMemberRole",{helper:g}=this._core,{groupID:u,userID:E,role:m}=s,D=`${this._name}.${n} ok, groupID:${u} userID:${E} role:${m}`;this._preCheckSettingRoleParams(s);try{yield cB(s,this._core);const M=Yi.getLocalGroup(u),T=new yC({userID:E,role:m});return dn({group:M,member:T},{message:D})}catch(M){throw new g.ChatError({functionName:n,code:M?.errorCode,message:M?.errorInfo,moreMessage:D})}})}_preCheckSettingRoleParams(s){var n;const{groupID:g,userID:u,role:E}=s,{store:m,helper:D,OuterConstant:M,common:{isCommunity:T}}=this._core,P=Yi.getLocalGroup(g);if(((n=P?.selfInfo)===null||n===void 0?void 0:n.role)!==M.GRP_MBR_ROLE_OWNER)throw new D.ChatError({functionName:"setGroupMemberRole",code:DT});if(u===m.get("login").userId)throw new D.ChatError({functionName:"setGroupMemberRole",code:Fv});const W=[...Hu];if(T({groupID:g})&&W.push(M.GRP_MBR_ROLE_CUSTOM),!W.includes(E))throw new D.ChatError({functionName:"setGroupMemberRole",code:Rm})}},hD=new class{constructor(){this._name="SetGroupMemberNameCard"}init(s){this._core=s;const{helper:n}=s;n.registerApi({apiName:"setGroupMemberNameCard",context:this})}setGroupMemberNameCard(s){return pA(this,void 0,void 0,function*(){var n;const g="setGroupMemberNameCard",{helper:u,common:{getCurrentUserID:E}}=this._core,{groupID:m,userID:D=E(),nameCard:M}=s,T=`${this._name}.${g} ok, groupID:${m} userID:${D} nameCard:${M}`;this._preCheckSettingNameCardParams(s);try{yield cB({groupID:m,userID:D,nameCard:M},this._core);const W=Yi.getLocalGroup(m);D===((n=W?.selfInfo)===null||n===void 0?void 0:n.userID)&&(W.updateSelfInfo({nameCard:M}),Yi.emitGroupListUpdate(),Yi.updateConversationGroupProfile(m));const iA=new yC({userID:D,nameCard:M});return dn({group:W,member:iA},{message:T})}catch(P){throw new u.ChatError({functionName:g,code:P?.errorCode,message:P?.errorInfo,moreMessage:T})}})}_preCheckSettingNameCardParams(s){const{groupID:n}=s,{helper:g}=this._core,u=Yi.getLocalGroup(n);if(Dd(u?.type))throw new g.ChatError({functionName:"setGroupMemberNameCard",code:wm})}},Gm=new class{constructor(){this._name="SetGroupMemberCustomField"}init(s){this._core=s;const{helper:n}=s;n.registerApi({apiName:"setGroupMemberCustomField",context:this})}setGroupMemberCustomField(s){return pA(this,void 0,void 0,function*(){const n="setGroupMemberCustomField",{helper:g,common:{getCurrentUserID:u}}=this._core;this._preCheckSettingCustomFiledParams(s);const{groupID:E,userID:m=u(),memberCustomField:D}=s,M=`${this._name}.${n} ok, groupID:${E}userID:${m} memberCustomField:${JSON.stringify(D)}`;try{yield cB({groupID:E,userID:m,memberCustomField:D},this._core);const P=Yi.getLocalGroup(E),W=new yC({userID:m,memberCustomField:D});return dn({group:P,member:W},{message:M})}catch(T){throw new g.ChatError({functionName:n,code:T?.errorCode,message:T?.errorInfo,moreMessage:M})}})}_preCheckSettingCustomFiledParams(s){const{groupID:n}=s,{helper:g}=this._core,u=Yi.getLocalGroup(n);if(Dd(u?.type))throw new g.ChatError({functionName:"setGroupMemberCustomField",code:wm})}},Hv=new class{init(s,n){s.ssoLog.debug("GroupMember.init"),CD.init(s,n),bQ.init(s),Md.init(s),vd.init(s,n),Jv.init(s),kQ.init(s),hD.init(s),Gm.init(s)}getGroupMemberList(s){return CD.getGroupMemberList(s)}deleteGroupMember(s){return vd.deleteGroupMember(s)}},wT=new class{init(s){this._core=s;const{helper:n}=s;n.registerApi({apiName:"getGroupCounters",context:this})}getGroupCounters(s){return pA(this,void 0,void 0,function*(){const n="getGroupCounters";try{Tm(n,sc);const{groupID:g,keyList:u=[]}=s,{avChatRoomKey:E,lastUpdateTime:m}=nc.getLocalGroupCounters(g);if(!(Date.now()-m>=this._getExpireTime()))return{code:0,data:{counters:nc.getLocalCounters(g,u)}};const D=yield function(P){return pA(this,void 0,void 0,function*(){const{groupID:W,GroupCounterKeys:iA,avChatRoomKey:EA}=P,{common:RA}=Wn.core,kA={GroupId:W,keyList:iA,BytesKey:EA};return RA.buildAndSendPacket({servcmd:"group_open_http_svc.get_group_counter",data:kA})})}({groupID:g,keyList:u,avChatRoomKey:E}),{GroupCounter:M=[],GroupCounterSeq:T}=D;return nc.updateLocalGroupCounters({groupID:g,counterList:M,groupCounterSeq:T}),{code:0,data:{counters:nc.getLocalCounters(g,u)}}}catch(g){fC(n,g)}})}_getExpireTime(){const{store:s,utils:{isUndefined:n}}=this._core,g=s.get("cloudConfig")||{},{grp_counter_expire_time:u}=g;return n(u)?3e4:Number(u)}},bm=new class{init(s){const{helper:n}=s;n.registerApi({apiName:"setGroupCounters",context:this}),n.registerApi({apiName:"increaseGroupCounter",context:this}),n.registerApi({apiName:"decreaseGroupCounter",context:this})}setGroupCounters(s){return pA(this,void 0,void 0,function*(){return this._handleCounterOperation(Ju,s)})}increaseGroupCounter(s){return pA(this,void 0,void 0,function*(){return this._handleCounterOperation(pm,s)})}decreaseGroupCounter(s){return pA(this,void 0,void 0,function*(){return this._handleCounterOperation(Ri,s)})}_handleCounterOperation(s,n){return pA(this,void 0,void 0,function*(){const g=`${s}GroupCounter`;try{Tm(g,sc);const{groupID:u,key:E,value:m=0}=n,{avChatRoomKey:D}=nc.getLocalGroupCounters(u),M=s===Ju?this._convertObjectToList(n.counters):[{Key:E,Value:m}],T=yield this._updateGroupCounters({groupID:u,counterList:M,avChatRoomKey:D,mode:s});return nc.setGroupCounters(u,T),{code:0,data:{counters:T}}}catch(u){fC(g,u)}})}_updateGroupCounters(s){return pA(this,void 0,void 0,function*(){const n=yield function(E){const{groupID:m,counterList:D,mode:M,avChatRoomKey:T}=E,{common:P}=Wn.core,W={GroupId:m,GroupCounter:D,Mode:M,BytesKey:T};return P.buildAndSendPacket({servcmd:"group_open_http_svc.update_group_counter",data:W})}(s),{GroupCounter:g=[]}=n,u={};return g.forEach(E=>{const{Key:m,Value:D=0}=E;u[m]=D}),u})}_convertObjectToList(s){return Object.entries(s).map(([n,g])=>({Key:n,Value:g||0}))}},lB=new class{init(s){this._core=s,wT.init(s),bm.init(s)}isGroupCounterUpdated(s){const{elements:{groupCounterInfo:n}}=s,{utils:{isEmpty:g}}=this._core;return!g(n)}handleGroupCounterUpdated(s){const{to:n,elements:{groupCounterInfo:g}}=s;g.forEach(u=>{const{type:E,groupCounterSeq:m,counterList:D=[]}=u;E!==ii&&E!==on||this._processAndNotifyCounterUpdate(n,m,D),E===yo&&nc.deleteLocalGroupCounters({groupID:n,groupCounterSeq:m,counterList:D})})}_processAndNotifyCounterUpdate(s,n,g){const{OuterEvent:u,notificationCenter:E}=this._core;nc.updateLocalGroupCounters({groupID:s,groupCounterSeq:n,counterList:g}),g.forEach(({Key:m,Value:D=0})=>{E.emitOuterEvent(u.GROUP_COUNTER_UPDATED,{name:u.GROUP_COUNTER_UPDATED,data:{groupID:s,key:m,value:D}})})}reset(){nc.reset()}},km=new class{constructor(){this._name="InitGroupAttributes"}init(s){this._core=s;const{helper:n}=s;n.registerApi({apiName:"initGroupAttributes",context:this})}initGroupAttributes(s){return pA(this,void 0,void 0,function*(){const{groupID:n,groupAttributes:g}=s,{serverMainSequence:u,avChatRoomKey:E}=zs.getGroupAttributesCache(n),m=zs.convertKeyValueMapToList(g);try{const D=yield function(W,iA){return pA(this,void 0,void 0,function*(){const{groupID:EA,mainSequence:RA,groupAttributeList:kA,avChatRoomKey:xA}=W,LA={GroupId:EA,AttrMainSeq:RA,GroupAttr:kA,BytesKey:xA,AttrControl:["RaceConflict"]};return iA.common.buildAndSendPacket({servcmd:"group_open_http_svc.set_group_attr",data:LA})})}({groupID:n,avChatRoomKey:E,groupAttributeList:m,mainSequence:u},this._core),{AttrMainSeq:M,GroupAttr:T}=D||{},P=T.map(W=>{const{Key:iA,seq:EA}=W;return{key:iA,value:g[iA],sequence:EA}});return zs.saveGroupAttributesCacheValuesCopy(n),zs.refreshGroupAttributesCache({groupID:n,serverMainSequence:M,groupAttributeList:P,operation:nD}),zs.emitGroupAttributesUpdated(n),dn({groupAttributes:g},{message:` groupID:${n} serverMainSequence:${M}`})}catch(D){throw new this._core.helper.ChatError({functionName:"initGroupAttributes",code:D?.errorCode,message:D?.errorInfo})}})}},_T=new class{constructor(){this._name="SetGroupAttributes"}init(s){this._core=s;const{helper:n}=s;n.registerApi({apiName:"setGroupAttributes",context:this}),n.registerExperimentalAPI("setRichStatus",this)}setGroupAttributes(s){return pA(this,void 0,void 0,function*(){const{groupID:n,groupAttributes:g,richStatusMode:u}=s,{serverMainSequence:E,avChatRoomKey:m,values:D}=zs.getGroupAttributesCache(n),M=zs.convertKeyValueMapToList(g).map(T=>{var P;const{key:W,value:iA}=T;return{key:W,value:iA,seq:((P=D.get(T.key))===null||P===void 0?void 0:P.sequence)||0}});try{const T=yield function(EA,RA){return pA(this,void 0,void 0,function*(){const{groupID:kA,mainSequence:xA,groupAttributeList:LA,avChatRoomKey:SA,richStatusMode:OA}=EA,JA={GroupId:kA,AttrMainSeq:xA,GroupAttr:LA,BytesKey:SA,AttrControl:["RaceConflict"],AllowRoomEngineOpt:OA};return RA.common.buildAndSendPacket({servcmd:"group_open_http_svc.modify_group_attr",data:JA})})}({groupID:n,avChatRoomKey:m,groupAttributeList:M,mainSequence:E,richStatusMode:u},this._core),{AttrMainSeq:P,GroupAttr:W}=T||{},iA=W.map(EA=>{const{Key:RA,seq:kA}=EA;return{key:RA,value:g[RA],sequence:kA}});return zs.saveGroupAttributesCacheValuesCopy(n),zs.refreshGroupAttributesCache({groupID:n,serverMainSequence:P,groupAttributeList:iA,operation:bv}),zs.emitGroupAttributesUpdated(n),dn({groupAttributes:g},{message:` groupID:${n} serverMainSequence:${P}`})}catch(T){throw new this._core.helper.ChatError({functionName:"setGroupAttributes",code:T?.errorCode,message:T?.errorInfo})}})}setRichStatus(s){return pA(this,void 0,void 0,function*(){const{groupID:n,richStatus:g}=s;return this.setGroupAttributes({groupID:n,groupAttributes:g,richStatusMode:!0})})}},BD=new class{constructor(){this._name="DeleteGroupAttributes"}init(s){this._core=s;const{helper:n}=s;n.registerApi({apiName:"deleteGroupAttributes",context:this}),n.registerExperimentalAPI("deleteRichStatus",this)}deleteGroupAttributes(s){return pA(this,void 0,void 0,function*(){const n="deleteGroupAttributes",{groupID:g,keyList:u=[],richStatusMode:E}=s;try{let m;m=u.length===0?yield this._clearGroupAttributes(g,{richStatusMode:E}):yield this._deleteGroupAttributes(g,{keyList:u,richStatusMode:E});const{resultList:D,serverMainSequence:M,operation:T,groupAttributeList:P}=m||{},W=`${this._name}.${n} ok. groupID:${g} operation: ${T}`;return zs.saveGroupAttributesCacheValuesCopy(g),zs.refreshGroupAttributesCache({groupID:g,serverMainSequence:M,groupAttributeList:P,operation:T}),zs.emitGroupAttributesUpdated(g),dn({keyList:D},{message:W})}catch(m){throw new this._core.helper.ChatError({functionName:n,code:m?.errorCode,message:m?.errorInfo})}})}deleteRichStatus(s){return pA(this,void 0,void 0,function*(){return this.deleteGroupAttributes(Object.assign(Object.assign({},s),{richStatusMode:!0}))})}_deleteGroupAttributes(s,n){return pA(this,void 0,void 0,function*(){const{serverMainSequence:g,avChatRoomKey:u,values:E}=zs.getGroupAttributesCache(s),{keyList:m,richStatusMode:D}=n,M=[],T=[];m.forEach(iA=>{if(E.has(iA)){const{sequence:EA=0}=E.get(iA)||{};T.push({key:iA,seq:EA}),M.push(iA)}});const P=yield function(iA,EA){return pA(this,void 0,void 0,function*(){const{groupID:RA,mainSequence:kA,groupAttributeList:xA,avChatRoomKey:LA,richStatusMode:SA}=iA,OA={GroupId:RA,AttrMainSeq:kA,GroupAttr:xA,BytesKey:LA,AttrControl:["RaceConflict"],AllowRoomEngineOpt:SA};return EA.common.buildAndSendPacket({servcmd:"group_open_http_svc.delete_group_attr",data:OA})})}({groupID:s,avChatRoomKey:u,groupAttributeList:T,mainSequence:g,richStatusMode:D},this._core),{AttrMainSeq:W}=P||{};return{resultList:M,serverMainSequence:W,groupAttributeList:T,operation:aD}})}_clearGroupAttributes(s,n){return pA(this,void 0,void 0,function*(){const{serverMainSequence:g,avChatRoomKey:u,values:E}=zs.getGroupAttributesCache(s),{richStatusMode:m}=n||{},D=[...E.keys()],M=yield function(P,W){return pA(this,void 0,void 0,function*(){const{groupID:iA,mainSequence:EA,avChatRoomKey:RA,richStatusMode:kA}=P,xA={GroupId:iA,AttrMainSeq:EA,BytesKey:RA,AttrControl:["RaceConflict"],AllowRoomEngineOpt:kA};return W.common.buildAndSendPacket({servcmd:"group_open_http_svc.clear_group_attr",data:xA})})}({groupID:s,avChatRoomKey:u,mainSequence:g,richStatusMode:m},this._core),{AttrMainSeq:T}=M||{};return{resultList:D,serverMainSequence:T,operation:rD}})}},QD=new class{constructor(){this._name="GetGroupAttributes"}init(s){this._core=s;const{helper:n}=s;n.registerApi({apiName:"getGroupAttributes",context:this}),n.registerExperimentalAPI("getRichStatus",this,"getGroupAttributes")}getGroupAttributes(s){return pA(this,void 0,void 0,function*(){const{groupID:n}=s,{avChatRoomKey:g,lastUpdateTime:u,localMainSequence:E,serverMainSequence:m}=zs.getGroupAttributesCache(n),{helper:{ChatError:D}}=this._core,M=`groupID:${n} localMainSequence:${E} serverMainSequence:${m} keyList:${s.keyList}`;if(Date.now()-u>=3e4||E{const{key:iA,value:EA,seq:RA}=W;return{key:iA,value:EA,sequence:RA}});return zs.refreshGroupAttributesCache({groupID:u,serverMainSequence:M,groupAttributeList:P,operation:kv}),{serverGroupAttributeList:T}})}},LQ=new class{init(s){s.ssoLog.debug("GroupAttribute.init"),km.init(s),_T.init(s),BD.init(s),QD.init(s),zs.init(s)}isGroupAttributesUpdated(s){return zs.isGroupAttributesUpdated(s)}handleGroupAttributesUpdated(s){const{to:n,elements:{newGroupProfile:g}}=s,{groupAttributeOption:u}=g,{serverMainSequence:E,withChangedAttributeInfo:m}=u,{localMainSequence:D}=zs.getGroupAttributesCache(n),M=E-D;if(console.log(`GroupAttribute.handleGroupAttributesUpdated groupID:${n} withChangedAttributeInfo:${m} diffSequence:${M}`),M!==0)if(zs.saveGroupAttributesCacheValuesCopy(n),m!==1||M!==1){if(zs.hasGroupAttributesCache(n)){const{avChatRoomKey:T}=zs.getGroupAttributesCache(n);QD.getGroupAttributesFromServer({groupID:n,avChatRoomKey:T}).then(()=>{zs.emitGroupAttributesUpdated(n)}).catch(()=>{})}}else zs.handleGroupAttributesUpdated({groupID:n,groupAttributeOption:u})}reset(){zs.reset()}};function xE(s,n="tips"){const{ClientSeq:g,From_Account:u,MsgClientTime:E,MsgPriority:m,MsgRandom:D,MsgSeq:M,MsgTimeStamp:T,TinyId:P,ToGroupId:W,GroupInfo:iA,MsgBody:EA}=s,RA=function(kA){const{GroupCode:xA,GroupId:LA,GroupName:SA,GroupType:OA,MsgFrom_AccountExtraInfo:JA,From_Account:ne,To_Account:se}=kA;return{groupCode:xA,groupID:LA,groupName:SA,type:OA,messageFromAccountExtraInformation:JA,from:ne,to:se}}(iA);return{clientSequence:g,from:u,clientTime:E,priority:m,random:D,sequence:M,time:T,tinyID:P,to:W,groupProfile:RA,elements:n==="tips"?ju(EA):Eh(EA)}}function ju(s){const n={};return Object.keys(s).forEach(g=>{var u,E;switch(g){case"MemberNum":n.memberCount=s[g];break;case"OpType":n.operationType=s[g];break;case"Operator_Account":n.operatorID=s[g];break;case"List_Account":n.userIDList=s[g];break;case"MsgMemberExtraInfo":n.memberInfoList=(u=s[g])===null||u===void 0?void 0:u.map(m=>pD(m));break;case"MsgOperatorMemberExtraInfo":n.operatorInfo=pD(s[g]);break;case"MsgGroupNewInfo":n.newGroupProfile=function(m){const D={};return Object.keys(m).forEach(M=>{switch(M){case"GroupIntroduction":D.introduction=m[M];break;case"GroupName":D.groupName=m[M];break;case"GroupFaceUrl":D.avatar=m[M];break;case"GroupNotification":D.notification=m[M];break;case"ApplyJoinOption":D.joinOption=m[M];break;case"InviteJoinOption":D.inviteOption=m[M];break;case"ShutupAll":D.muteAllMembers=m[M];break;case"Owner_Account":D.ownerID=m[M];break;case"GroupAttrOption":D.groupAttributeOption=function(P){const{BytesChangedKeys:W,GroupAttrSeq:iA,OpType:EA,PushChangedAttrValFlag:RA,GroupAttrInfo:kA}=P,xA=kA.map(LA=>{const{Key:SA,Val:OA,SubKeySeq:JA}=LA;return{key:SA,value:OA,sequence:JA}});return{changedKeyList:W,groupAttributeList:xA,serverMainSequence:iA,operation:EA,withChangedAttributeInfo:RA}}(m[M]);break;case"MsgAppDefinedData":D.groupCustomField=(T=m[M])==null?void 0:T.map(P=>({key:P.Key,value:P.Value}));break;case"InviteOption":D.inviteOption=MT[m[M]]||m[M]}var T}),D}(s[g]);break;case"MsgMemberInfo":n.msgMemberInfo=(E=s[g])===null||E===void 0?void 0:E.map(m=>function(D){const{ShutupTime:M,User_Account:T}=D;return{muteTime:M,userID:T}}(m));break;case"OnlineMemberInfo":n.onlineMemberInfo=function(m){const{ExpireTime:D,OnlineMemberNum:M}=m;return{expireTime:D,onlineMemberNum:M}}(s[g]);break;case"GroupCounterInfo":n.groupCounterInfo=function(m){return m.map(D=>{const{GroupCounterSeq:M,GroupCounter:T,Type:P}=D;return{type:P,groupCounterSeq:M,counterList:T}})}(s[g])}}),n}function pD(s){const{ImageUrl:n,NickName:g,Role:u,UserId:E}=s;return{avatar:n,nick:g,role:u,userID:E}}function Eh(s){const n={};return Object.keys(s).forEach(g=>{switch(g){case"MsgKey":n.messageKey=s[g];break;case"Operator_Account":n.operatorID=s[g];break;case"ReportType":n.operationType=s[g];break;case"Authentication":n.authentication=s[g];break;case"MsgFlag":n.messageRemindType=s[g];break;case"UserDefinedField":n.userDefinedField=s[g];break;case"RemarkInfo":n.remarkInfo=s[g];break;case"BanDuration":n.duration=s[g];break;case"MuteTime":n.muteTime=s[g];break;case"MsgMemberExtraInfoList":n.inviteeInfoList=(u=s[g]||[])==null?void 0:u.map(E=>{const{UserId:m,ImageUrl:D,NickName:M}=E;return{userID:m,avatar:D,nick:M}});break;case"MemberList_Account":n.inviteeList=s[g]}var u}),n}class Lm{constructor(n){this.type=Wn.core.OuterConstant.MSG_GRP_TIP,this.content={},this._initContent(n)}static parseServerPushElement(n){const g=ju(n);return new Lm(g)}_initContent(n){Object.keys(n).forEach(g=>{switch(g){case"groupProfile":this._initGroupProfile(n[g]);break;case"operatorInfo":this._initOperatorInfo(n[g]);break;case"memberInfoList":case"msgMemberInfo":this._updateMemberList(n[g]);break;case"newGroupProfile":this._initNewGroupProfile(n[g]);break;case"memberExtraInfo":case"remarkInfo":case"onlineMemberInfo":break;default:this.content[g]=n[g]}}),this.content.userIDList||(this.content.userIDList=[this.content.operatorID])}_initGroupProfile(n){this.content.groupProfile={};const g=Object.keys(n);for(let u=0;u{n.forEach(u=>{g.userID===u.userID&&Object.assign(g,u)})}):this.content.memberList=n}_initNewGroupProfile(n){this.content.newGroupProfile={};const g=Object.keys(n);for(let u=0;u0&&this._handleGroupTipMessage(g),{conversationUpdateFieldList:u,messageList:g}}_emitGroupTipsEvent(s){var n;const{constants:{WORKFLOW_STEP:g}}=this._core,{messageList:u=[]}=((n=s?.result)===null||n===void 0?void 0:n[g.HANDLE_GROUP_TIPS_NOTIFICATION])||{};if(u.length>0){const{notificationCenter:E,OuterEvent:m}=this._core;E.emitOuterEvent(m.MESSAGE_RECEIVED,{name:m.MESSAGE_RECEIVED,data:u})}}_handleGroupTips(s,n=!0){const{Event:g,GroupTips:u}=s,E=new Map,m=[],D=[];for(let M=0,T=u.length;M{const{operationType:u}=g.payload;switch(u){case n.JOINED:this._handleNewMemberJoined(g);break;case n.QUITTED:this._handleMemberQuitted(g);break;case n.KICKED:this._handleMemberKicked(g);break;case n.GROUP_PROFILE_UPDATED:this._handleGroupProfileUpdated(g);break;case n.ADMIN_SET:this._handleMemberGrantAdmin(g);break;case n.ADMIN_CANCELED:this._handleMemberRevokeAdmin(g)}})}_handleNewMemberJoined(s){this._handleGroupMemberCountUpdated(s)}_handleMemberQuitted(s){this._handleGroupMemberCountUpdated(s)}_handleMemberKicked(s){this._handleGroupMemberCountUpdated(s)}_handleGroupProfileUpdated(s){var n;const{newGroupProfile:g,groupProfile:u,operatorInfo:E}=s.payload,{groupID:m}=u,D=Yi.getLocalGroup(m);Object.keys(g).forEach(T=>{switch(T){case"ownerID":this._handleGroupOwnerChanged(m,g);break;case"groupName":D.name=g[T];break;case"groupCustomField":Array.isArray(D[T])&&Array.isArray(g[T])?_m(D[T],g[T]):D[T]=g[T];break;default:D[T]=g[T]}});const{utils:{isUndefined:M}}=this._core;M(E)||((n=D?.selfInfo)===null||n===void 0?void 0:n.userID)!==E.userID||Object.keys(E).forEach(T=>{T==="nameCard"&&D.updateSelfInfo({nameCard:E[T]}),T==="role"&&this._updateSelfRole(D,E[T])}),Yi.emitGroupListUpdate(),Yi.updateConversationGroupProfile(m)}_handleGroupOwnerChanged(s,n){const{common:g,OuterConstant:u}=this._core,E=Yi.getLocalGroup(s),m=g.getCurrentUserID(),{ownerID:D}=n;m===D&&E.updateGroup({ownerID:D,selfInfo:{role:u.GRP_MBR_ROLE_OWNER}})}_updateSelfRole(s,n){const{OuterConstant:g}=this._core;let u=g.GRP_MBR_ROLE_MEMBER;n===CT?u=g.GRP_MBR_ROLE_OWNER:n===cD&&(u=g.GRP_MBR_ROLE_ADMIN),s.updateSelfInfo({role:u})}_handleGroupMemberCountUpdated(s){const{memberCount:n,groupProfile:{groupID:g}}=s.payload,u=Yi.getLocalGroup(g),{utils:{isNumber:E}}=this._core;u&&E(n)&&u.memberCount!==n&&(u.memberCount=n,Yi.emitGroupListUpdate(),Yi.updateConversationGroupProfile(g))}_handleGroupTipsRecover(s){const{utils:{isArray:n}}=this._core,{groupTipList:g}=s?.result||{};n(g)&&g.forEach(u=>{const{messageList:E}=this._handleGroupTips({Event:u.Event,GroupTips:[u]},!1);this._handleGroupTipMessage(E)})}_handleMemberGrantAdmin(s){const{OuterConstant:n}=this._core,{groupProfile:g,userIDList:u}=s.payload,E=this._core.common.getCurrentUserID(),{groupID:m}=g,D=Yi.getLocalGroup(m);D&&u.includes(E)&&(D.updateSelfInfo({role:n.GRP_MBR_ROLE_ADMIN}),Yi.emitGroupListUpdate(),Yi.updateConversationGroupProfile(m))}_handleMemberRevokeAdmin(s){const{OuterConstant:n}=this._core,{groupProfile:g,userIDList:u}=s.payload,E=this._core.common.getCurrentUserID(),{groupID:m}=g,D=Yi.getLocalGroup(m);D&&u.includes(E)&&(D.updateSelfInfo({role:n.GRP_MBR_ROLE_MEMBER}),Yi.emitGroupListUpdate(),Yi.updateConversationGroupProfile(m))}};class UQ{constructor(n){this.type=Wn.core.OuterConstant.MSG_GRP_SYS_NOTICE,this.content={},this._initContent(n)}static parseServerPushElement(n){const g=Eh(n);return new UQ(g)}_initContent(n){Object.keys(n).forEach(g=>{switch(g){case"remarkInfo":this.content.handleMessage=n[g];break;case"groupProfile":this._initGroupProfile(n[g]);break;case"memberInfoList":break;default:this.content[g]=n[g]}})}_initGroupProfile(n){this.content.groupProfile={};const g=Object.keys(n);for(let u=0;u0&&this._handleGroupSysTemMessage(g,E),g===!0&&E.length>0&&m.emitOuterEvent(D.MESSAGE_RECEIVED,{name:D.MESSAGE_RECEIVED,data:E})}_handleGroupSystemNotification(s,n){const g=[];let u={};for(let E=0;E0?[u]:[],messageList:g}}_assembleMessage(s){const{message:{messageFactory:n},OuterConstant:g,utils:{randomInt:u}}=this._core;s.flow="in",s.conversationType=g.CONV_SYSTEM,s.conversationSubType=s.groupProfile.type,s.conversationID=g.CONV_SYSTEM;const E=n.createMessage(s),m=new UQ(Object.assign(Object.assign({},s.elements),{groupProfile:Object.assign({},s.groupProfile)}));E.setElement(m),E.isSystemMessage=!0;const D=E.sequence===1&&E.random===1,M=E.sequence===2&&E.random===2;return(D||M)&&(E.sequence=u(),E.random=u(),E.generateMessageID()),E}_handleConversationOptions(s,n){const{OuterConstant:g}=this._core,u={conversationID:g.CONV_SYSTEM,unreadCount:0,type:g.CONV_SYSTEM,subType:s.conversationSubType,lastMessage:null};return n&&u.unreadCount++,u}_handleGroupSysTemMessage(s,n){s&&n.forEach(g=>{const{operationType:u}=g.payload;switch(u){case BT:this._handleGroupJoinResult(g);break;case Uv:this._handleMemberKicked(g);break;case QT:this._handleGroupDismissed(g);break;case pT:this._handleGroupInvitedResult(g);break;case lD:this._handleGroupQuitResult(g);break;case _Q:this._handleMessageRemindTypeSynced(g);break;case Sm:this._handleAVChatRoomMemberBanned(g)}})}_handleGroupJoinResult(s){const{groupProfile:n}=s.payload,{groupID:g,type:u}=n,E=Yi.hasLocalGroup(g);this._core.ssoLog.debug("_handleGroupJoinResult",` groupID:${g} type:${u} hasLocalGroup:${E}`),E||Dd(u)||(Yi.updateLocalGroup([Object.assign({},n)]),Yi.emitGroupListUpdate())}_handleMemberKicked(s){const{groupProfile:{groupID:n,type:g}}=s.payload;Yi.hasLocalGroup(n)&&this._deleteLocalGroup(n,g),this._updateConversationProfile(n,{unreadCount:0})}_handleGroupDismissed(s){const{groupProfile:{groupID:n,type:g}}=s.payload;Yi.hasLocalGroup(n)&&this._deleteLocalGroup(n,g),this._updateConversationProfile(n,{unreadCount:0})}_handleGroupInvitedResult(s){const{groupProfile:n}=s.payload,{groupID:g}=n,u=Yi.hasLocalGroup(g);this._core.ssoLog.debug("_handleGroupInvitedResult",` groupID:${g} hasLocalGroup:${u}`),u||Ol.getGroupProfile({groupID:g}).then(E=>{const{data:{group:m}}=E;Yi.updateLocalGroup([Object.assign({},m)]),Yi.emitGroupListUpdate()})}_handleGroupQuitResult(s){const{groupProfile:{groupID:n,type:g}}=s.payload,u=Yi.hasLocalGroup(n);this._core.ssoLog.debug("_handleGroupQuitResult",` groupID:${n} type:${g} hasLocalGroup:${u}`),u&&this._deleteLocalGroup(n,g),this._updateConversationProfile(n,{unreadCount:0})}_handleMessageRemindTypeSynced(s){const{groupProfile:{groupID:n},messageRemindType:g}=s.payload;this._updateConversationProfile(n,{messageRemindType:g})}_handleAVChatRoomMemberBanned(s){const{groupProfile:{groupID:n,type:g}}=s.payload;this._deleteLocalGroup(n,g)}_deleteLocalGroup(s,n){if(Dd(n)){const{appStore:{conversationStore:g},OuterConstant:{CONV_GROUP:u}}=this._core;g.deleteConversation(`${u}${s}`)}Yi.deleteLocalGroup(s),Yi.emitGroupListUpdate()}_updateConversationProfile(s,n){const{appStore:{conversationStore:g},OuterConstant:{CONV_GROUP:u}}=this._core,E=`${u}${s}`;g.getConversation(E)&&g.updateConversation(E,n)}},mD=new class{init(s){this._core=s,s.ssoLog.debug("GroupNotificationHandler.init"),qv.init(s),Kv.init(s);const{notificationCenter:n,InnerEvent:g}=s,{InnerEventSubType:u}=n;n.subscribeInnerEvent(g.MESSAGE_PUSH,u.GROUP_TIPS_NOTIFICATION,this._onNewGroupTipsNotification,this),n.subscribeInnerEvent(g.MESSAGE_PUSH,u.GROUP_SYSTEM_NOTIFICATION,this._onNewGroupSystemNotification,this),n.subscribeInnerEvent(g.DESTROY,this._dispose,this)}_onNewGroupTipsNotification(s){const{common:{workflowManager:n},constants:{WORKFLOW_NAME:g}}=this._core;n.executeWorkflow(g.RECEIVE_GROUP_TIPS_NOTIFICATION,s)}_onNewGroupSystemNotification(s){Kv.onNewGroupSystemNotification(s)}_dispose(){const{notificationCenter:s,InnerEvent:n}=this._core,{InnerEventSubType:g}=s;s.unSubscribeInnerEvent(n.MESSAGE_PUSH,g.GROUP_TIPS_NOTIFICATION,this._onNewGroupTipsNotification,this),s.unSubscribeInnerEvent(n.MESSAGE_PUSH,g.GROUP_SYSTEM_NOTIFICATION,this._onNewGroupSystemNotification,this)}};const vn={required:!0,rules:["string"],allowEmpty:!1},FQ={required:!0,rules:["number"],allowEmpty:!1},Rd={required:!0,rules:["array"],allowEmpty:!1},fD={required:!0,rules:["object"],allowEmpty:!1},TT={createGroup:{name:vn,type:vn},dismissGroup:[Object.assign({key:"groupID"},vn)],joinGroup:{groupID:vn,applyMessage:{required:!1,rules:["string"],allowEmpty:!0}},quitGroup:[Object.assign({key:"groupID"},vn)],searchGroupByID:[Object.assign({key:"groupID"},vn)],getGroupProfile:{groupID:vn,groupCustomFieldFilter:{required:!1,rules:["array"],allowEmpty:!0}},updateGroupProfile:{groupID:vn,muteAllMembers:{required:!1,rules:["boolean"],allowEmpty:!1}},changeGroupOwner:{groupID:vn,newOwnerID:vn},getGroupOnlineMemberCount:[Object.assign({key:"groupID"},vn)],handleGroupApplication:{handleAction:vn},getGroupMemberList:{groupID:vn},getGroupMemberProfile:{groupID:vn,userIDList:Rd,memberCustomFieldFilter:{required:!1,rules:["array"],allowEmpty:!0}},addGroupMember:{groupID:vn,userIDList:Rd},deleteGroupMember:{groupID:vn,userIDList:Rd},setGroupMemberMuteTime:{groupID:vn,userID:vn,muteTime:Object.assign(Object.assign({},FQ),{customValidator:s=>!(s<0)||"muteTime must be a non-negative number."})},setGroupMemberRole:{groupID:vn,userID:vn,role:vn},setGroupMemberNameCard:{groupID:vn,userID:{required:!1,rules:["string"],allowEmpty:!1},nameCard:vn},setGroupMemberCustomField:{groupID:vn,userID:{required:!1,rules:["string"],allowEmpty:!1},memberCustomField:Rd},markGroupMemberList:{groupID:vn,markType:Object.assign(Object.assign({},FQ),{customValidator:s=>!(s<1e3)||"markType must be greater than or equal to 1000."}),enableMark:{required:!0,rules:["boolean"],allowEmpty:!1},userIDList:Rd},initGroupAttributes:{groupID:vn,groupAttributes:fD},setGroupAttributes:{groupID:vn,groupAttributes:fD},deleteGroupAttributes:{groupID:vn,keyList:Object.assign(Object.assign({},Rd),{allowEmpty:!0})},getGroupAttributes:{groupID:vn,keyList:Object.assign(Object.assign({},Rd),{allowEmpty:!0})},getGroupCounters:{groupID:vn,keyList:{required:!1,rules:["array"],allowEmpty:!0}},setGroupCounters:{groupID:vn,counters:fD},increaseGroupCounter:{groupID:vn,key:vn,value:FQ},decreaseGroupCounter:{groupID:vn,key:vn,value:FQ}},NT={getGroupList:!0,createGroup:!0,dismissGroup:!0,joinGroup:!0,quitGroup:!0,searchGroupByID:!0,getGroupProfile:!0,updateGroupProfile:!0,changeGroupOwner:!0,getGroupOnlineMemberCount:!0,getGroupApplicationList:!0,handleGroupApplication:!0,getGroupMemberList:!0,getGroupMemberProfile:!0,addGroupMember:!0,deleteGroupMember:!0,setGroupMemberMuteTime:!0,setGroupMemberRole:!0,setGroupMemberNameCard:!0,setGroupMemberCustomField:!0,markGroupMemberList:!0,initGroupAttributes:!0,setGroupAttributes:!0,getGroupAttributes:!0,deleteGroupAttributes:!0,getGroupCounters:!0,setGroupCounters:!0,increaseGroupCounter:!0,decreaseGroupCounter:!0};var GT=new class{constructor(){this._installedSubPlugins=[],this.groupDataHandler=Yi,this.groupAction=GQ,this.groupAttribute=LQ,this.groupMember=Hv,this.groupCounter=lB,this.name="Group"}install(s,n=[]){this._core=s,Wn.init(s),Yi.init(s),GQ.init(s,this),Hv.init(s,this),dD.init(s),lB.init(s),LQ.init(s),mD.init(s),s.helper.registerValidateConfig({auth:NT,params:TT}),this._installSubPlugins(n);const{notificationCenter:g,InnerEvent:u}=s;g.subscribeInnerEvent(u.LOGOUT,this._reset,this),g.subscribeInnerEvent(u.DESTROY,this._dispose,this)}getInstalledSubPlugins(){return this._installedSubPlugins}_installSubPlugins(s){const{utils:{isArray:n}}=this._core;s&&n(s)&&s.forEach(g=>{var u;this._installedSubPlugins.includes(g.name)||((u=g.install)===null||u===void 0||u.call(g,this._core,this),this._installedSubPlugins.push(g.name))})}_reset(){Yi.reset(),LQ.reset(),lB.reset()}_dispose(){this._reset();const{notificationCenter:s,InnerEvent:n}=this._core;s.unSubscribeInnerEvent(n.LOGOUT,this._reset,this),s.unSubscribeInnerEvent(n.DESTROY,this._dispose,this)}};const IB=new class{init(s){this.core=s}},jv="AV_MBR_LIST",bT="AV_BAN_MBR",YE={NORMAL_MESSAGE:3,GROUP_TIPS_HAS_ROAMING:4,GROUP_SYSTEM_MESSAGE:5,GROUP_TIPS_HAS_NO_ROAMING:6,BROADCAST_MESSAGE:17,MESSAGE_REVOKED:20,MESSAGE_REACTION:21,LIVE_CUSTOM_DATA:100},dh={GROUP_DISMISSED:5,QUIT_GROUP:8,AVCHATROOM_MEMBER_BANNED:21},yD=60,DD=2603,kT=2686,LT=2688,OQ=3122;class Wv{constructor(n){const{core:g,manager:u,groupID:E,getRequestParams:m,onSuccess:D,onFail:M}=n;this._name="Polling",this._core=g,this._manager=u,this._timeoutID=-1,this._isRunning=!1,this._groupID=E,this._getRequestParams=m,this._onSuccess=D,this._onFail=M}start(){this._isRunning=!0,this._request(),console.log(`${this._name}.start pollingInterval:${this._manager.getCurrentPollingInterval(this._groupID)}`)}isRunning(){return this._isRunning}_request(){return pA(this,void 0,void 0,function*(){try{const n=this._getRequestParams(this._groupID),g=yield function(E,m){return pA(this,void 0,void 0,function*(){const{longPollingKey:D,startSequence:M,startBroadcastSeq:T,simplifiedMessage:P}=E,W={Key:D,StartSeq:M,StartBroadcastSeq:T,DownsizeFlag:P,USP:1,HoldTime:90};return m.common.buildAndSendPacket({servcmd:"group_open_long_polling_http_svc.get_msg",data:W})})}(n,this._core);this._onSuccess(this._groupID,g);const u=this._manager.getCurrentPollingInterval(this._groupID);this._runNextPolling(u)}catch(n){this._onFail(this._groupID,n),this._runNextPolling(2e3)}})}_runNextPolling(n){this.isRunning()&&(this._timeoutID>-1&&clearTimeout(this._timeoutID),this._timeoutID=setTimeout(this._request.bind(this),n))}stop(){console.log(`${this._name}.stop timerID:${this._timeoutID}`),this._timeoutID>-1&&(clearTimeout(this._timeoutID),this._timeoutID=-1),this._isRunning=!1}}class Ch{constructor(n){this._maxLength=n,this._map=new Map}set(n){var g;if(this._map.size>=this._maxLength){const u=((g=this._map.entries().next().value)===null||g===void 0?void 0:g[0])||"";this._map.delete(u)}this._map.set(n,1)}has(n){return this._map.has(n)}delete(n){this.has(n)&&this._map.delete(n)}clear(){this._map.clear()}}const Wu=s=>s===YE.GROUP_TIPS_HAS_NO_ROAMING||s===YE.GROUP_TIPS_HAS_ROAMING,PQ=s=>s===YE.GROUP_SYSTEM_MESSAGE;function Um(s){const n=function(g){const{E:u,MCT:E,MR:m,MP:D,MTS:M,GId:T,MS:P,CCD:W,F_Account:iA,IsSys:EA,GInf:RA,MsgBody:kA}=g,xA=Do(g,["E","MCT","MR","MP","MTS","GId","MS","CCD","F_Account","IsSys","GInf","MsgBody"]);return Object.assign({Event:u,MsgClientTime:E,MsgRandom:m,MsgPriority:D,MsgTimeStamp:M,ToGroupId:T,MsgSeq:P,CloudCustomData:W,From_Account:iA,IsSystemMsg:EA,GroupInfo:SD(RA),MsgBody:UT(kA)},xA)}(s);return function(g){const{Event:u}=g;(Wu(u)||PQ(u))&&(g.From_Account=g.From_Account||"@TIM#SYSTEM"),E=u,(E===YE.BROADCAST_MESSAGE||(m=>m===YE.NORMAL_MESSAGE)(u))&&function(m){const{core:{OuterConstant:D}}=IB;m.CloudCustomData=m.CloudCustomData||"",m.MsgBody=m.MsgBody.map(M=>{if(M.MsgType===D.MSG_CUSTOM){const{content:T={}}=M;M.content=Object.assign({Data:"",Desc:"",Ext:""},T)}return M})}(g);var E;Wu(u)&&function(m){const{GroupJoinType:D,MsgOperatorMemberExtraInfo:M={},MsgMemberExtraInfo:T,Operator_Account:P,List_Account:W,OpType:iA}=m.MsgBody||{};typeof D=="number"||iA!==1&&iA!==2||(m.MsgBody.GroupJoinType=iA===2?0:1),T||(m.MsgBody.MsgMemberExtraInfo=W?.map(EA=>({UserId:EA}))),iA!==1||T||(m.MsgBody.MsgMemberExtraInfo=[{UserId:M.UserId}]),m.MsgBody.MsgOperatorMemberExtraInfo=Object.assign({Operator_Account:P,ImageUrl:"",NickName:""},M)}(g),PQ(u)&&function(m){const{MsgOperatorMemberExtraInfo:D={},Operator_Account:M}=m.MsgBody||{};m.MsgBody.MsgMemberExtraInfo=Object.assign({UserId:M,ImageUrl:"",NickName:""},D),m.MsgBody=Object.assign({Authentication:"",RemarkInfo:"",MsgKey:1e3*m.MsgTimeStamp},m.MsgBody),m.MsgBody=Object.keys(m.MsgBody).filter(T=>T!=="MsgOperatorMemberExtraInfo").reduce((T,P)=>Object.assign(Object.assign({},T),{[P]:m.MsgBody[P]}),{})}(g)}(n),n}function SD(s){const n=s||{},{GN:g,GT:u,F_Hd:E,F_NN:m,F_Ll:D}=n,M=Do(n,["GN","GT","F_Hd","F_NN","F_Ll"]),T=Object.assign({GroupName:g,GroupType:u},M);return E&&(T.From_AccountHeadurl=E),m&&(T.From_AccountNick=m),D&&(T.From_AccountLevel=D),T}function UT(s){let n=s;Array.isArray(s)||(n=[s]);const g=n.map(u=>{const{O_Account:E,Opt:m,L_Account:D,RT:M,UDF:T,OpInf:P,OnlineInf:W,MsgMemberExtraInfo:iA}=u,EA=Do(u,["O_Account","Opt","L_Account","RT","UDF","OpInf","OnlineInf","MsgMemberExtraInfo"]),RA=Object.assign({Operator_Account:E,OpType:m,List_Account:D,ReportType:M,UserDefinedField:T},EA);return P&&(RA.MsgOperatorMemberExtraInfo=function(kA){const{Img:xA,NN:LA}=kA,SA=Do(kA,["Img","NN"]);return Object.assign({ImageUrl:xA,NickName:LA},SA)}(P)),iA&&(RA.MsgMemberExtraInfo=function(kA){return kA?.map(xA=>{const{Img:LA,NN:SA}=xA,OA=Do(xA,["Img","NN"]);return Object.assign({ImageUrl:LA,NickName:SA},OA)})}(iA)),W&&(RA.OnlineMemberInfo=function(kA){const{ET:xA,Num:LA}=kA;return{ExpireTime:xA,OnlineMemberNum:LA}}(W)),RA});return Array.isArray(s)?g:g[0]}var hh=new class{constructor(){this._name="MessageParser",this._sequenceList=new Ch(200),this._messageIDList=new Ch(100),this._broadcastMessageIDMap=new Map,this._reportMessageStackedCount=0}init(s,n){this._core=s,this._avChatRoomHandler=n}onMessageReceived(s,n,g=!1){this._sortServerMessageList({groupID:s,serverMessageList:n,isHistoryMessage:g});const u=this._handleMessageList(s,n);if(u.length===0)return;if(!g){const{appStore:{conversationStore:T},OuterConstant:{CONV_GROUP:P},common:{buildLastMessage:W}}=this._core,iA=W(u[u.length-1]);T.updateConversation(`${P}${s}`,{lastMessage:iA})}this._checkMessageStacked(u);const E=u.filter(T=>T.isModified===!0),m=u.filter(T=>T.isModified===!1),{OuterEvent:{MESSAGE_RECEIVED:D,MESSAGE_MODIFIED:M}}=this._core;E.length>0&&this._emitEvent({name:M,data:E}),m.length>0&&this._emitEvent({name:D,data:m})}_sortServerMessageList(s){const{groupID:n,serverMessageList:g,isHistoryMessage:u}=s;let E=[];this._avChatRoomHandler.isPollingSimplifiedMessage()&&!u?(g.sort((m,D)=>m.MS-D.MS),E=g.map(m=>m.MS)):(g.sort((m,D)=>m.MsgSeq-D.MsgSeq),E=g.map(m=>m.MsgSeq)),console.log(`${this._name}._sortServerMessageList groupID:${n} count:${E.length} sequenceList:${E}`),E.length=0}_handleMessageList(s,n){var g;const{message:{messageDataHandler:u,messageHelper:E}}=this._core,m=this._avChatRoomHandler.isPollingSimplifiedMessage(),D=[],M=n.length;for(let T=0;Tg===YE.MESSAGE_REVOKED)(n)?(this._handleMessageRevoked(s),null):(g=>g===YE.LIVE_CUSTOM_DATA)(n)?(this._onLiveCustomData(s),null):(g=>g===YE.MESSAGE_REACTION)(n)?null:s:(console.warn(`${this._name}.onMessageReceived unknown event:${n}`),null)}_createMessage(s){const{message:{messageFactory:n},OuterConstant:g}=this._core;let u=g.CONV_GROUP;s.elements.type===g.MSG_GRP_SYS_NOTICE&&(u=g.CONV_SYSTEM);const E=!!s.isSystemMessage,m=n.createMessage(Object.assign(Object.assign({},s),{conversationType:u,isSystemMessage:E,flow:"in"}));return m.setElement(s.elements),m}_filterDuplicateMessage(s){const{common:n}=this._core;if(!n.isUnlimitedAVChatRoom()){if(this._sequenceList.has(s.sequence))return null;this._sequenceList.set(s.sequence)}const g=this._messageIDList.has(s.ID);return g?(console.warn(`${this._name}_filterDuplicateMessageItem ID:${s.ID} has:${g}`),null):(this._messageIDList.set(s.ID),s)}_handleMessageRevoked(s){const{OuterConstant:n,OuterEvent:{MESSAGE_REVOKED:g}}=this._core,{ToGroupId:u,MsgBody:{RevokeMsgList:E},RevokerInfo:{Revoker_Account:m,Reason:D=""}}=s,M=[];E.forEach(T=>{const{TinyId:P,MsgClientTime:W,Random:iA,MsgSeq:EA}=T,RA={conversationID:`${n.CONV_GROUP}${u}`,ID:`${P}-${W}-${iA}`,revoker:m,revokeReason:D,revokerInfo:{userID:m,nick:"",avatar:""},sequence:EA};M.push(RA)}),M.length!==0&&this._emitEvent({name:g,data:M})}_onLiveCustomData(s){const{OuterEvent:{ROOM_CUSTOM_DATA_RECEIVED:n}}=this._core,{ToGroupId:g,MsgSeq:u,MsgTimeStamp:E,MsgBody:m}=s,D=m?.Content||m?.MsgContent||"";this._emitEvent({name:n,data:D}),console.log(`${this._name}._onLiveCustomData groupID:${g} sequence:${u} time:${E} data:${D}`)}_onGroupDismissed(s){this._avChatRoomHandler.reset(s)}_checkMessageStacked(s){const{length:n}=s;if(n>=100&&this._reportMessageStackedCount<5){const g=this._avChatRoomHandler.getJoinedGroups();this._core.ssoLog.info("MessageStacked",`count:${n} groupID:${g.join(",")}`),this._reportMessageStackedCount+=1}}_emitEvent(s){this._core.notificationCenter.emitOuterEvent(s.name,s)}onBroadcastMessageReceived(s){const{message:{messageHelper:n},OuterEvent:{MESSAGE_RECEIVED:g}}=this._core,u=this._avChatRoomHandler.isPollingSimplifiedMessage(),E=[],m=s.length;for(let D=0;D0&&this._emitEvent({name:g,data:E})}_updateLocalOnlineMemberCountFromTips(s){const{utils:{isEmpty:n}}=this._core,{ToGroupId:g,MsgBody:{OnlineMemberInfo:u}}=s;if(n(u))return;const{OnlineMemberNum:E=0,ExpireTime:m=yD}=u,D=Date.now();let M=this._avChatRoomHandler.getLocalOnlineMemberCount(g);n(M)?M={lastReqTime:0,lastSyncTime:0,latestUpdateTime:D,memberCount:E,expireTime:m}:(M.latestUpdateTime=D,M.memberCount=E),this._avChatRoomHandler.updateLocalOnlineMemberCount(g,M)}reset(){this._reportMessageStackedCount=0,this._sequenceList.clear(),this._messageIDList.clear(),this._broadcastMessageIDMap.clear()}};const uB=s=>{const{core:{store:n}}=IB;return(n.get("cloudConfig")||{})[s]},Bh=s=>{const{core:{utils:{isUndefined:n}}}=IB;return!n(s)},xQ=()=>{const s=uB("polling_interval");return Bh(s)?parseInt(s,10):300},EB=()=>{const s=uB("polling_simplified_msg");return Bh(s)?parseInt(s,10):0};var zv=new class{constructor(){this._name="GetAVChatRoomOnlineMemberCount"}init(s,n){this._core=s,this._parentPlugin=n;const{helper:g}=s;g.registerApi({apiName:"getGroupOnlineMemberCount",context:this,matcher:()=>n.getInstalledSubPlugins().length>0})}getGroupOnlineMemberCount(s){return pA(this,void 0,void 0,function*(){const{appStore:{groupStore:n},OuterConstant:g}=this._core,u=n.getGroup(s);return u?u.type===g.GRP_AVCHATROOM?this._getOnlineMemberCount(s):this._parentPlugin.groupAction.getGroupOnlineMemberCount(s):{code:0,data:{memberCount:0}}})}_getOnlineMemberCount(s){return pA(this,void 0,void 0,function*(){const n="_getOnlineMemberCount",{utils:{isEmpty:g}}=this._core,u=Pg.getLocalOnlineMemberCount(s);if(g(u)||this._isExpired(s)){const{memberCount:E=0}=yield this._getOnlineMemberCountFromServer(s);return console.log(`${this._name}.${n} ok, groupID:${s} memberCount:${E} from server.`),{code:0,data:{memberCount:E}}}return console.log(`${this._name}.${n} ok, groupID:${s} memberCount:${u.memberCount} from local.`),{code:0,data:{memberCount:u.memberCount}}})}_isExpired(s){const n=Pg.getLocalOnlineMemberCount(s),g=Date.now(),u=g-n.lastSyncTime>1e3*n.expireTime,E=g-n.latestUpdateTime>1e4,m=g-n.lastReqTime>3e3;return u&&E&&m}_getOnlineMemberCountFromServer(s){return pA(this,void 0,void 0,function*(){const n="_getOnlineMemberCountFromServer";try{const g=yield function(M,T){return pA(this,void 0,void 0,function*(){const P={GroupId:M};return T.common.buildAndSendPacket({servcmd:"group_open_http_svc.get_online_member_num",data:P})})}(s,this._core),{OnlineMemberNum:u=0,ExpireTime:E=yD}=g||{},m=Date.now(),D={lastSyncTime:m,latestUpdateTime:m,lastReqTime:m,memberCount:u,expireTime:E};return Pg.updateLocalOnlineMemberCount(s,D),{memberCount:u}}catch(g){const u=new this._core.helper.ChatError({functionName:n,code:g?.errorCode,message:g?.errorInfo});throw console.error(`${this._name}.${n} fail:`,u),u}})}},Pg=new class{constructor(){this._name="AVChatRoomHandler",this._joinedGroupMap=new Map,this._pollingRequestInfoMap=new Map,this._pollingInstanceMap=new Map,this._onlineMemberCountMap=new Map,this._pollingIntervalMap=new Map,this._pollingNoMessageCountMap=new Map,this._membersReqInfoMap=new Map,this._startBroadcastSequence=1}init(s,n){this._core=s,this._parentPlugin=n,hh.init(s,this),s.ssoLog.debug("AVChatRoomHandler.init")}onAVChatRoomSystemNotification(s){const{OuterConstant:{GRP_AVCHATROOM:n}}=this._core,{GroupTips:g=[]}=s;for(let u=0;u0&&(n=[...this._joinedGroupMap.values()].filter(g=>g.type===s)),n}handleJoinGroupResult(s){return pA(this,void 0,void 0,function*(){const{utils:{isUndefined:n},OuterConstant:{CONV_GROUP:g},apiMap:{getConversationProfile:u},OuterConstant:E}=this._core,{longPollingKey:m,group:D,historyMessageList:M=[]}=s,{groupID:T}=D;return yield this._preCheck(D),this._joinedGroupMap.set(T,D),this._parentPlugin.groupDataHandler.updateLocalGroup([D]),this._parentPlugin.groupDataHandler.emitGroupListUpdate(),u(`${g}${T}`),zv.getGroupOnlineMemberCount(T),M.length>0&&hh.onMessageReceived(T,M,!0),n(m)?{code:0,data:{status:E.JOIN_STATUS_SUCCESS,group:D}}:{code:0,data:this.startMessageLongPolling(s)}})}isGroupCounterUpdated(s){return this._parentPlugin.groupCounter.isGroupCounterUpdated(s)}handleGroupCounterUpdated(s){this._parentPlugin.groupCounter.handleGroupCounterUpdated(s)}_preCheck(s){return pA(this,void 0,void 0,function*(){const{common:n,OuterConstant:g,helper:u,apiMap:{quitGroup:E},ssoLog:m}=this._core;if(n.isUnlimitedAVChatRoom()){if(this._pollingInstanceMap.size>(()=>{const T=uB("polling_count_limit");return Bh(T)&&T>0?parseInt(T,10):20})())throw new u.ChatError({code:LT,message:"the count of longPolling exceeds the max limit"});return}if(this._joinedAVChatRoomCount()===0||s.type===g.GRP_LIVE)return;const[D,M]=this._joinedGroupMap.entries().next().value;if(M.selfInfo.role===g.GRP_MBR_ROLE_OWNER)this._parentPlugin.groupDataHandler.deleteLocalGroup(D);else try{yield E(D)}catch(T){m.debug("quitGroup",`${this._name}._preCheck quitGroup failed, groupID:${D} info:`,T)}this.reset(D)})}startMessageLongPolling(s){const{OuterConstant:n}=this._core,{longPollingKey:g,startSequence:u=1,group:E}=s,{groupID:m}=E;return this._pollingRequestInfoMap.set(m,{longPollingKey:g,startSequence:u}),this._pollingIntervalMap.set(m,xQ()),this._startPolling(m),this._reportLongPollingCount(),{status:n.JOIN_STATUS_SUCCESS,group:E}}_startPolling(s){if(this._core.ssoLog.debug("_startPolling",`${this._name}._startPolling groupID:${s}`),this._pollingInstanceMap.has(s)){const g=this._pollingInstanceMap.get(s);return void(g?.isRunning()||g==null||g.start())}const n=new Wv({core:this._core,manager:this,groupID:s,getRequestParams:this._handleRequestParams.bind(this),onSuccess:this._handleSuccess.bind(this),onFail:this._handleFailure.bind(this)});n.start(),this._pollingInstanceMap.set(s,n)}_handleRequestParams(s){const{longPollingKey:n,startSequence:g}=this._pollingRequestInfoMap.get(s)||{};return s===[...this._pollingInstanceMap.keys()][0]?{longPollingKey:n,startSequence:g,startBroadcastSeq:this._startBroadcastSequence,simplifiedMessage:EB()}:{longPollingKey:n,startSequence:g,simplifiedMessage:EB()}}_handleSuccess(s,n){const{ErrorCode:g}=n;if(g!==0){const{longPollingKey:u,startSequence:E}=this._pollingRequestInfoMap.get(s)||{};return void console.warn(`${this._name}._handleSuccess groupID:${s} key:${u} startSeq:${E} errorCode:${g}`)}this._hasJoinedAVChatRoom(s)&&this._handleResponseData(s,n)}_handleResponseData(s,n){const{Key:g,NextSeq:u,NextBroadcastSeq:E,RspMsgList:m=[],RspBroadcastMsgList:D=[]}=n;if(g&&u&&this._pollingRequestInfoMap.set(s,{longPollingKey:g,startSequence:u}),E&&E>this._startBroadcastSequence&&(this._startBroadcastSequence=E),m.length>0)this._getPollingNoMessageCount(s)!==0&&(this._updatePollingNoMessageCount(s,0),this._pollingIntervalMap.set(s,xQ())),hh.onMessageReceived(s,m);else{let M=this._getPollingNoMessageCount(s);if(M+=1,this._updatePollingNoMessageCount(s,M),M===(()=>{const T=uB("polling_no_msg_count");return Bh(T)?parseInt(T,10):20})()){const T=xQ()+(()=>{const P=uB("polling_interval_plus");return Bh(P)?parseInt(P,10):2e3})();this._pollingIntervalMap.set(s,T)}}D.length>0&&hh.onBroadcastMessageReceived(D)}_handleFailure(s,n){const{ssoLog:g,utils:{safeStringify:u}}=this._core;g.warn("polling",`${this._name}._handleFailure groupID:${s} error: ${u(n)}`)}_joinedAVChatRoomCount(){const{OuterConstant:s}=this._core;let n=[];return this._joinedGroupMap.size>0&&(n=this.getJoinedGroups().filter(g=>g.type===s.GRP_AVCHATROOM)),n.length}_hasJoinedAVChatRoom(s){return this._joinedGroupMap.has(s)}getJoinedGroups(){return[...this._joinedGroupMap.values()]}updateLocalLiveGroup(s,n){this._joinedGroupMap.set(s,n),this._parentPlugin.groupDataHandler.updateLocalGroup([n])}handleLiveHistoryMessages(s,n){hh.onMessageReceived(s,n,!0)}isOverFrequencyLimit(s){if(!this._membersReqInfoMap.has(s))return this._membersReqInfoMap.set(s,{startTime:Date.now(),requestCount:1}),!1;let{startTime:n,requestCount:g}=this._membersReqInfoMap.get(s);const{interval:u,count:E}=(()=>{const m=uB("av_members_freq_limit");if(Bh(m)){const{interval:D,count:M}=JSON.parse(m);if(M>0&&D>0)return{interval:D,count:M}}return{interval:30,count:4}})();return Date.now()-n>1e3*u?(this._membersReqInfoMap.set(s,{startTime:Date.now(),requestCount:1}),!1):(g+=1,this._membersReqInfoMap.set(s,{startTime:n,requestCount:g}),g>E)}_stopPolling(s){if(this._core.ssoLog.debug("_stopPolling",`${this._name}._stopPolling groupID:${s}`),s){const{appStore:{conversationStore:n},OuterConstant:{CONV_GROUP:g}}=this._core;n.deleteConversation(`${g}${s}`);const u=this._pollingInstanceMap.get(s);return u?.stop(),this._parentPlugin.groupDataHandler.deleteLocalGroup(s),this._pollingInstanceMap.delete(s),this._pollingRequestInfoMap.delete(s),this._joinedGroupMap.delete(s),this._onlineMemberCountMap.delete(s),this._pollingIntervalMap.delete(s),this._pollingNoMessageCountMap.delete(s),void this._membersReqInfoMap.delete(s)}for(const n of this._pollingInstanceMap.values())n?.stop();this._pollingInstanceMap.clear(),this._pollingRequestInfoMap.clear(),this._joinedGroupMap.clear(),this._onlineMemberCountMap.clear(),this._pollingIntervalMap.clear(),this._pollingNoMessageCountMap.clear(),this._membersReqInfoMap.clear()}_updatePollingNoMessageCount(s,n){this._pollingNoMessageCountMap.set(s,n)}_getPollingNoMessageCount(s){return this._pollingNoMessageCountMap.get(s)||0}_reportLongPollingCount(){const s=this._joinedGroupMap.size;if(s>1){const{common:n,OuterConstant:g,ssoLog:u}=this._core,E=n.isUnlimitedAVChatRoom()?1:0,m=[],D=[];Array.from(this._joinedGroupMap.values()).forEach(({groupID:M,type:T})=>{T===g.GRP_LIVE?D.push(M):m.push(M)}),u.info("longPollingCount",String(s),{moreMessage:`av:${m.join(",")} live:${D.join(",")} code: ${E}`,eventType:29})}}reset(s){this._stopPolling(s),this._startBroadcastSequence=1,hh.reset()}},Zv=new class{init(s,n){this._core=s,this._parentPlugin=n;const{helper:g}=s;g.registerApi({apiName:"joinGroup",context:this,matcher:()=>n.getInstalledSubPlugins().length>0})}joinGroup(s){return pA(this,void 0,void 0,function*(){const{OuterConstant:n}=this._core,g=yield this._parentPlugin.groupAction.joinGroup(s),{data:{status:u,group:{type:E}}}=g;return E===n.GRP_AVCHATROOM?u===n.JOIN_STATUS_ALREADY_IN_GROUP?g:Pg.handleJoinGroupResult(g.data):g})}},FT=new class{init(s,n){this._core=s,this._parentPlugin=n;const{helper:g}=s;g.registerApi({apiName:"quitGroup",context:this,matcher:()=>n.getInstalledSubPlugins().length>0})}quitGroup(s){return pA(this,void 0,void 0,function*(){const{OuterConstant:n}=this._core,g=yield this._parentPlugin.groupAction.quitGroup(s),{data:{type:u}}=g;return u===n.GRP_AVCHATROOM&&Pg.reset(s),g})}},Xv=new class{init(s,n){this._core=s,this._parentPlugin=n;const{helper:g}=s;g.registerApi({apiName:"dismissGroup",context:this,matcher:()=>n.getInstalledSubPlugins().length>0})}dismissGroup(s){return pA(this,void 0,void 0,function*(){const{OuterConstant:n}=this._core,g=yield this._parentPlugin.groupAction.dismissGroup(s),{data:{type:u}}=g;return u===n.GRP_AVCHATROOM&&Pg.reset(s),g})}},Fm=new class{constructor(){this._name="GetAVChatRoomMemberList"}init(s,n){this._core=s,this._parentPlugin=n;const{helper:g}=s;g.registerApi({apiName:"getGroupMemberList",context:this,matcher:()=>n.getInstalledSubPlugins().length>0})}getGroupMemberList(s){return pA(this,void 0,void 0,function*(){const{appStore:{groupStore:n},helper:g,OuterConstant:u}=this._core,{groupID:E}=s,m=n.getGroup(E);if(m?.type===u.GRP_AVCHATROOM&&g.checkBusinessCapabilityBits(jv)){if(Pg.isOverFrequencyLimit(E))throw{code:2996,message:`Over frequency limit: get_members-${E}`};return this._getGroupMemberList(s)}return this._parentPlugin.groupMember.getGroupMemberList(s)})}_getGroupMemberList(s){return pA(this,void 0,void 0,function*(){const n="_getGroupMemberList",{helper:g}=this._core;try{const u=yield function(M,T){return pA(this,void 0,void 0,function*(){const{groupID:P,offset:W=0}=M,iA={GroupId:P,Timestamp:W};return T.common.buildAndSendPacket({servcmd:"group_open_avchatroom_http_svc.get_members",data:iA})})}(s,this._core),{MemberList:E=[],NextTimestamp:m=0}=u||{},D=this._handleMemberList(E);return console.log(`${this._name}.${n} ok, groupID:${s.groupID} count:${D.length} nextOffset:${m}`),{code:0,data:{memberList:D,offset:m}}}catch(u){const E=new g.ChatError({functionName:n,code:u?.errorCode,message:u?.errorInfo});throw console.error(`${this._name}.${n} fail:`,E),E}})}_handleMemberList(s){return s.map(n=>{const{Member_Account:g,NickName:u="",Avatar:E="",Remark:m="",JoinTime:D=0,Marks:M=[]}=n;return{userID:g,nick:u,avatar:E,remark:m,joinTime:D,marks:M,isOnline:!0}})}},Om=new class{constructor(){this._name="DeleteAVChatRoomMember"}init(s,n){this._core=s,this._parentPlugin=n;const{helper:g}=s;g.registerApi({apiName:"deleteGroupMember",context:this,matcher:()=>n.getInstalledSubPlugins().length>0})}deleteGroupMember(s){return pA(this,void 0,void 0,function*(){const n="deleteGroupMember",{appStore:{groupStore:g},utils:{isUndefined:u},helper:E,OuterConstant:m}=this._core,{groupID:D}=s,M=g.getGroup(D);if(u(M))throw new E.ChatError({functionName:n,code:DD});if(M.type===m.GRP_AVCHATROOM){if(E.checkBusinessCapabilityBits(bT))return this._deleteGroupMember(s);throw new E.ChatError({functionName:n,code:OQ})}return this._parentPlugin.groupMember.deleteGroupMember(s)})}_deleteGroupMember(s){return pA(this,void 0,void 0,function*(){const n="_deleteGroupMember",{appStore:{groupStore:g},helper:u,ssoLog:E}=this._core,{groupID:m,duration:D=0,userIDList:M}=s;if(D===0)throw new u.ChatError({functionName:n,code:kT});try{return yield function(T,P){return pA(this,void 0,void 0,function*(){const{groupID:W,userIDList:iA,duration:EA,reason:RA}=T,kA={GroupId:W,Members_Account:iA,Duration:EA,Description:RA};return P.common.buildAndSendPacket({servcmd:"group_open_http_svc.ban_group_member",data:kA})})}(s,this._core),E.debug(n,`${this._name}.${n} ok, groupID:${m}`),{code:0,data:{group:g.getGroup(m),userIDList:M}}}catch(T){throw new u.ChatError({functionName:n,code:T?.errorCode,message:T?.errorInfo})}})}},wd=new class{constructor(){this._name="MarkAVChatRoomMember"}init(s){this._core=s;const{helper:n}=s;n.registerApi({apiName:"markGroupMemberList",context:this})}markGroupMemberList(s){return pA(this,void 0,void 0,function*(){const n="markGroupMemberList",{groupID:g,markType:u,enableMark:E,userIDList:m=[]}=s,D=this._generateRequestData(s);try{const M=yield function(iA,EA){return pA(this,void 0,void 0,function*(){const{groupID:RA,operationType:kA,memberList:xA}=iA,LA={GroupId:RA,CommandType:kA,MemberList:xA};return EA.common.buildAndSendPacket({servcmd:"group_open_avchatroom_http_svc.modify_user_info",data:LA})})}(D,this._core),{MemberList:T=[]}=M||{},{successUserIDList:P,failureUserIDList:W}=this._handleResult(T,m);return{code:0,data:{successUserIDList:P,failureUserIDList:W},successLog:{message:`${this._name}.${n} ok, groupID:${g} markType:${u} enableMark:${E} success:${P.length} fail:${W.length}`}}}catch(M){throw new this._core.helper.ChatError({functionName:n,code:M?.errorCode,message:M?.errorInfo})}})}_generateRequestData(s){const{groupID:n,markType:g,enableMark:u,userIDList:E=[]}=s,m=u===!0?1:2,D=[...E];return D.length>500&&console.warn(`${this._name}._generateRequestData, the length of userIDList cannot exceed 500`),{groupID:n,operationType:m,memberList:D.map(M=>({Member_Account:M,Marks:[g]}))}}_handleResult(s,n){const g=[],u=[];return s.length===n.length?(g.push(...n),{successUserIDList:g,failureUserIDList:u}):(n.forEach(E=>{s.find(m=>m.Member_Account===E)?g.push(E):u.push(E)}),{successUserIDList:g,failureUserIDList:u})}},$v=new class{init(s,n){s.ssoLog.debug("AVChatRoomAction.init"),Zv.init(s,n),FT.init(s,n),Xv.init(s,n),Fm.init(s,n),zv.init(s,n),Om.init(s,n),wd.init(s)}},AR=new class{constructor(){this._name="LiveHandler"}init(s){this._core=s;const{helper:n,ssoLog:g}=s;n.registerExperimentalAPI("startMessageLongPolling",this),n.registerExperimentalAPI("stopMessageLongPolling",this),g.debug("LiveHandler.init")}startMessageLongPolling(s){const{common:n,utils:{isEmpty:g},OuterConstant:u,ssoLog:E}=this._core,{groupID:m,longPollingKey:D,longPollingSequence:M=1}=s;if(g(D))return E.warn("startMessageLongPolling",`${this._name}.startMessageLongPolling longPollingKey is empty.`),Promise.resolve({});Pg.hasPollingInstance(m)&&this.stopMessageLongPolling({groupID:m});const T=Pg.getJoinedLiveList(),P=n.isUnlimitedAVChatRoom();!P&&T.length>0&&this.stopMessageLongPolling({groupID:T[0].groupID}),E.debug("startMessageLongPolling",`${this._name}.startMessageLongPolling isUnlimited:${P} groupID:${m} longPollingKey:${D} longPollingSequence:${M}`);const W={groupID:m,type:u.GRP_LIVE};return Pg.updateLocalLiveGroup(m,W),this._getLiveHistoryMessages({groupID:m,longPollingKey:D,startSequence:M}),Pg.startMessageLongPolling({group:W,longPollingKey:D,startSequence:M})}stopMessageLongPolling(s){const{groupID:n}=s;return Pg.reset(n),this._core.ssoLog.debug("stopMessageLongPolling",`${this._name}.stopMessageLongPolling ok, groupID:${n}`),Promise.resolve({groupID:n})}_getLiveHistoryMessages(s){return pA(this,void 0,void 0,function*(){const{ssoLog:n}=this._core,{groupID:g}=s;try{const u=yield function(m,D){return pA(this,void 0,void 0,function*(){const{groupID:M,longPollingKey:T,startSequence:P}=m,W={GroupId:M,LongPollingKey:T,PullPreSeq:P};return D.common.buildAndSendPacket({servcmd:"group_open_http_svc.get_huge_group_msg",data:W})})}(s,this._core),{RspMsgList:E=[]}=u||{};n.debug("_getLiveHistoryMessages",`${this._name}._getLiveHistoryMessages ok, groupID:${g} count:${E.length}`),E.length>0&&Pg.handleLiveHistoryMessages(g,E)}catch(u){n.debug("_getLiveHistoryMessages",`${this._name}._getLiveHistoryMessages failed, groupID:${g} info:${u.message}`)}})}},Pm=new class{constructor(){this.name="AVChatRoom"}install(s,n){this._core=s,IB.init(s),Pg.init(s,n),$v.init(s,n),AR.init(s);const{notificationCenter:g,InnerEvent:u}=s,{InnerEventSubType:E}=g;g.subscribeInnerEvent(u.MESSAGE_PUSH,E.GROUP_SYSTEM_NOTIFICATION,this._onAVChatRoomSystemNotification,this),g.subscribeInnerEvent(u.LOGOUT,this._reset,this),g.subscribeInnerEvent(u.DESTROY,this._dispose,this)}_onAVChatRoomSystemNotification(s){Pg.onAVChatRoomSystemNotification(s)}_reset(){Pg.reset()}_dispose(){this._reset();const{notificationCenter:s,InnerEvent:n}=this._core,{InnerEventSubType:g}=s;s.unSubscribeInnerEvent(n.MESSAGE_PUSH,g.GROUP_SYSTEM_NOTIFICATION,this._onAVChatRoomSystemNotification,this),s.unSubscribeInnerEvent(n.LOGOUT,this._reset,this),s.unSubscribeInnerEvent(n.DESTROY,this._dispose,this)}};const Ag=new class{init(s){this.core=s}},xm="message",dB="user",CB={OR:"or",AND:"and"},MI=20,OT=20,eR=20,Qh={required:!1,rules:["array"],allowEmpty:!0,customValidator:s=>!s||!!(Array.isArray(s)&&s.length<=5)||"keywordList should be an array and length <= 5"},Ym={required:!1,rules:["string"],allowEmpty:!0,customValidator:s=>!s||!![CB.OR,CB.AND].includes(s)||"keywordListMatchType should be OR or AND"},DC={required:!1,rules:["number"],allowEmpty:!0,customValidator:s=>typeof s=="number"&&s>=1&&s<=100||"count must be a number between 1 and 100"},YQ={required:!1,rules:["string"],allowEmpty:!0},tR={required:!1,rules:["array"],allowEmpty:!0,customValidator:s=>{const{OuterConstant:n}=Ag.core;if(!Array.isArray(s))return"groupTypeList should be an array";const g=[n.GRP_PUBLIC,n.GRP_COMMUNITY,n.GRP_WORK,n.GRP_MEETING];let u=!1;for(let E=0;E{const{OuterConstant:n}=Ag.core,g=[n.MSG_TEXT,n.MSG_IMAGE,n.MSG_AUDIO,n.MSG_FILE,n.MSG_VIDEO,n.MSG_LOCATION,n.MSG_CUSTOM,n.MSG_MERGER];let u=!1;for(let E=0;E{const{OuterConstant:n}=Ag.core;return!(!s?.startsWith(n.CONV_C2C)&&!s?.startsWith(n.CONV_GROUP)&&s!==n.CONV_SYSTEM)||"conversationID is invalid"}},Vm=s=>({required:!1,rules:["number"],allowEmpty:!0,customValidator:n=>typeof n=="number"&&n>=0||`${s} should be a number >= 0';`}),MD={required:!1,rules:["string"],allowEmpty:!0,customValidator:s=>{const{OuterConstant:n}=Ag.core;return!![n.GENDER_FEMALE,n.GENDER_MALE].includes(s)||"gender is invalid"}},Jm={searchCloudMessages:{keywordList:Qh,keywordListMatchType:Ym,cursor:YQ,senderUserIDList:{required:!1,rules:["array"],allowEmpty:!0,customValidator:s=>!!(Array.isArray(s)&&s.length<=5)||"senderUserIDList should be an array and length <= 5"},messageTypeList:iR,conversationID:oR,timePosition:Vm("timePosition"),timePeriod:Vm("timePeriod")},searchCloudUsers:{keywordList:Qh,keywordListMatchType:Ym,cursor:YQ,count:DC,miniBirthday:Vm("miniBirthday"),maxBirthday:Vm("maxBirthday"),gender:MD},searchCloudGroupMembers:{keywordList:Qh,keywordListMatchType:Ym,cursor:YQ,count:DC,groupTypeList:tR,groupIDList:{required:!1,rules:["array"],allowEmpty:!0}},searchCloudGroups:{keywordList:Qh,keywordListMatchType:Ym,cursor:YQ,count:DC,groupTypeList:tR}},vD={searchCloudMessages:!0,searchCloudUsers:!0,searchCloudGroupMembers:!0,searchCloudGroups:!0};var RD=new class{constructor(){this.name="CloudSearch"}install(s){this._core=s,Ag.init(s),s.helper.registerApi({apiName:"searchCloudMessages",context:this}),s.helper.registerApi({apiName:"searchCloudUsers",context:this}),s.helper.registerApi({apiName:"searchCloudGroupMembers",context:this}),s.helper.registerApi({apiName:"searchCloudGroups",context:this}),s.helper.registerValidateConfig({auth:vD,params:Jm})}searchCloudMessages(s){return pA(this,void 0,void 0,function*(){try{const{OuterConstant:n,helper:g}=this._core,{conversationID:u,timePeriod:E,timePosition:m}=s,D=Do(s,["conversationID","timePeriod","timePosition"]),M=Object.assign({count:100},D);u&&(u.startsWith(n.CONV_C2C)?M.account=u.replace(n.CONV_C2C,""):u.startsWith(n.CONV_GROUP)&&(M.groupID=u.replace(n.CONV_GROUP,""))),this._setTimeRangeParams(M,{timePeriod:E,timePosition:m});const T=yield function(LA){return pA(this,void 0,void 0,function*(){const{count:SA,keywordList:OA,keywordListMatchType:JA,senderUserIDList:ne,messageTypeList:se,endTime:_i,startTime:Ti,cursor:Lt,account:Ni,groupID:cs}=LA,Se={Count:SA,KeywordList:OA,MatchType:JA,SendUserIDList:ne,MsgTypeList:se,EndTime:_i,StartTime:Ti,Cursor:Lt,PeerAccount:Ni,GroupID:cs};return Ag.core.common.buildAndSendPacket({servcmd:"message_search.query",data:Se})})}(M);if(!T)return{code:0,data:{}};const{ErrorCode:P,ErrorInfo:W,TotalCount:iA,Cursor:EA="",ConversationMsgs:RA=[]}=T;if(P!==0)throw{errorCode:P,errorInfo:W};const kA=`keywordList:${s.keywordList} keywordListMatchType:${s.keywordListMatchType} cursor:${s.cursor} res: totalCount:${iA}`;return{code:0,data:{searchResultList:RA.map(LA=>{const{MsgList:SA,Count:OA,GroupID:JA,UserID:ne}=LA,se=JA?`${n.CONV_GROUP}${JA}`:`${n.CONV_C2C}${ne}`;if(this._isSearchingAllConversations(s)&&OA>1)return{conversationID:se,messageCount:OA,messageList:[]};const _i=SA.map(Ti=>g.isEmpty(JA)?function(Lt,Ni){const cs=Ni.OuterConstant.CONV_C2C,Se=Ni.message.messageHelper.parseServerPushMessage(Lt),mt=Ni.message.messageFactory.createMessage(Object.assign(Object.assign({},Se),{conversationType:cs,flow:"in"}));return mt.setElement(Se.elements),mt}(Ti,this._core):function(Lt,Ni){const cs=Ni.OuterConstant.CONV_GROUP,Se=Ni.message.messageHelper.parseServerGroupMessage(Lt),mt=Ni.message.messageFactory.createMessage(Object.assign(Object.assign({},Se),{conversationType:cs,flow:"in"}));return mt.setElement(Se.elements),mt}(Ti,this._core));return{conversationID:se,messageCount:OA,messageList:_i}}),cursor:EA,totalCount:iA},successLog:{message:kA}}}catch(n){const{errorCode:g,errorInfo:u}=n||{};this._handleError({errorCode:g,errorInfo:u,searchType:xm,functionName:"searchCloudMessages"})}})}searchCloudUsers(s){return pA(this,void 0,void 0,function*(){var n;try{const{keywordListMatchType:g,count:u=OT}=s,E=Do(s,["keywordListMatchType","count"]),m=Object.assign({count:u,keywordListMatchType:g===CB.AND?1:0},E);this._setBirthdayRangeParams(m,s);const D=yield function(kA){return pA(this,void 0,void 0,function*(){const{count:xA,keywordList:LA,keywordListMatchType:SA,miniBirthday:OA,maxBirthday:JA,cursor:ne,gender:se}=kA,_i={Count:xA,Keywords:LA,KeywordMatchType:SA,Cursor:ne,UserBirthStart:OA,UserBirthEnd:JA,Gender:se};return Ag.core.common.buildAndSendPacket({servcmd:"user_search.query",data:_i})})}(m);if(!D)return{error:0,data:{}};const{ErrorCode:M,ErrorInfo:T,TotalCount:P,Cursor:W="",Users:iA=[]}=D;if(M!==0)throw{errorCode:M,errorInfo:T};const EA=`keywordList:${s.keywordList} keywordListMatchType:${s.keywordListMatchType} cursor:${s.cursor} count:${s.count} res: totalCount:${P}`,RA=[];for(let kA=0,xA=iA.length;kA({tag:ne.Tag,value:ne.StrValue})),JA=(n=this._core.user.userProfile)===null||n===void 0?void 0:n.createProfile(LA,OA);RA.push(JA)}return{code:0,data:{searchResultList:RA,cursor:W,totalCount:P},successLog:{message:EA}}}catch(g){const{errorCode:u,errorInfo:E}=g||{};this._handleError({errorCode:u,errorInfo:E,searchType:dB,functionName:"searchCloudUsers"})}})}searchCloudGroupMembers(s){return pA(this,void 0,void 0,function*(){try{const{count:n=eR,keywordListMatchType:g}=s,u=Do(s,["count","keywordListMatchType"]),E=Object.assign({count:n,keywordListMatchType:g===CB.AND?1:0},u),m=yield function(RA){return pA(this,void 0,void 0,function*(){const{count:kA,keywordList:xA,keywordListMatchType:LA,groupTypeList:SA,cursor:OA,groupIDList:JA}=RA,ne={Count:kA,Keywords:xA,KeywordMatchType:LA,Cursor:OA,GroupType:SA,GroupIdList:JA};return Ag.core.common.buildAndSendPacket({servcmd:"group_member_search.query",data:ne})})}(E);if(!m)return{code:0,data:{}};const{ErrorCode:D,ErrorInfo:M,GroupMembers:T=[],Cursor:P,TotalCount:W}=m;if(D!==0)throw{errorCode:D,errorInfo:M};const iA=`keywordList:${s.keywordList} keywordListMatchType:${s.keywordListMatchType} cursor:${s.cursor} count:${s.count} res: totalCount:${W}`,EA=new Map;return T.forEach(RA=>{const{GroupID:kA,GroupName:xA,GroupType:LA,GroupFaceUrl:SA,GroupMemberUserName:OA,GroupMemberUserID:JA,GroupMemberNameCard:ne,GroupMemberAvatar:se=""}=RA,_i={groupID:kA,name:xA,type:LA,avatar:SA},Ti={userID:JA,nick:OA,nameCard:ne,avatar:se};if(EA.has(kA)){const Lt=EA.get(kA);Lt.memberList.push(Ti),EA.set(kA,Lt)}else EA.set(kA,{groupInfo:_i,memberList:[Ti]})}),{code:0,data:{searchResultList:[...EA.values()],cursor:P,totalCount:W},successLog:{message:iA}}}catch(n){const{errorCode:g,errorInfo:u}=n||{};this._handleError({errorCode:g,errorInfo:u,searchType:dB,functionName:"searchCloudGroupMembers"})}})}searchCloudGroups(s){return pA(this,void 0,void 0,function*(){try{const{count:n=MI,keywordListMatchType:g}=s,u=Do(s,["count","keywordListMatchType"]),E=Object.assign({count:n,keywordListMatchType:g===CB.AND?1:0},u),m=yield function(EA){return pA(this,void 0,void 0,function*(){const{count:RA,keywordList:kA,keywordListMatchType:xA,groupTypeList:LA,cursor:SA}=EA,OA={Count:RA,Keywords:kA,KeywordMatchType:xA,Cursor:SA,GroupType:LA};return Ag.core.common.buildAndSendPacket({servcmd:"group_search.query",data:OA})})}(E);if(!m)return{code:0,data:{}};const{ErrorCode:D,ErrorInfo:M,Groups:T,Cursor:P,TotalCount:W}=m;if(D!==0)throw{errorCode:D,errorInfo:M};const iA=`keywordList:${s.keywordList} keywordListMatchType:${s.keywordListMatchType} cursor:${s.cursor} count:${s.count} res: totalCount:${W}`;return{code:0,data:{searchResultList:T?.map(EA=>function(RA){const{GroupFaceUrl:kA,GroupID:xA,GroupIntroduction:LA,GroupMemberNum:SA,GroupName:OA,GroupOwnerTinyID:JA,GroupOwnerUserID:ne,GroupOwnerUserName:se,GroupType:_i,GroupAddOption:Ti,GroupInviteOption:Lt}=RA;return{avatar:kA,groupID:xA,introduction:LA,memberCount:SA,name:OA,ownerTinyID:JA,ownerID:ne,ownerNick:se,type:_i,joinOption:Ti,inviteOption:Lt}}(EA))||[],cursor:P,totalCount:W},successLog:{message:iA}}}catch(n){const{errorCode:g,errorInfo:u}=n||{};this._handleError({errorCode:g,errorInfo:u,searchType:dB,functionName:"searchCloudGroups"})}})}_setTimeRangeParams(s,{timePeriod:n,timePosition:g}){n&&n>0&&(s.startTime=g&&g>0?g-n:this._core.helper.timeManager.getServerTimeSeconds()-n),s.startTime&&s.startTime<0&&(s.startTime=void 0),g&&g>0&&(s.endTime=g)}_handleError({errorCode:s,errorMessage:n,searchType:g}){const{helper:u}=this._core;let E=s;throw s===60020?E="SearchUnable":g!==xm&&s===27003?E="SearchParamsError":g!==xm&&s===60018&&(E="SearchOverLimit"),new u.ChatError({code:E,message:n})}_isSearchingAllConversations(s){return this._core.helper.isEmpty(s.conversationID)}_setBirthdayRangeParams(s,n){const{miniBirthday:g,maxBirthday:u}=n;g!==void 0&&(s.miniBirthday=g,u===void 0&&(s.maxBirthday=4294967295)),u!==void 0&&(s.maxBirthday=u)}};function ph(s,n){return Math.round(Number(s)*Math.pow(10,n))/Math.pow(10,n)}const sR="qualityStat",wD="im-ssolog-quality-stat";var _D;(function(s){s[s.ONLINE=8]="ONLINE"})(_D||(_D={}));const Hm="networkRTT",mh="messageE2EDelay",hB="sendMessageC2C",fh="sendMessageGroup",yh="sendMessageGroupAV",BB="sendMessageRichMedia",QB="cosUpload",SC="messageReceivedGroup",VQ="messageReceivedGroupAVPush",JQ="messageReceivedGroupAVPull",PT={[Hm]:2,[mh]:3,[hB]:4,[fh]:5,[yh]:6,[BB]:7,[SC]:8,[VQ]:9,[JQ]:10,[QB]:11},nR=[hB,fh,yh,BB,QB],Dh=[SC,VQ,JQ],pB=[Hm,mh,hB,fh,yh,BB,QB,SC,VQ,JQ],TD={ERR_SVR_COMM_SENSITIVE_TEXT:80001,ERR_SVR_COMM_BODY_SIZE_LIMIT:80002,OPEN_SERVICE_OVERLOAD_ERROR:60022,ERR_SVR_MSG_PKG_PARSE_FAILED:20001,ERR_SVR_MSG_INTERNAL_AUTH_FAILED:20002,ERR_SVR_MSG_INVALID_ID:20003,ERR_SVR_MSG_PUSH_DENY:20006,ERR_SVR_MSG_IN_PEER_BLACKLIST:20007,ERR_SVR_MSG_BOTH_NOT_FRIEND:20009,ERR_SVR_MSG_NOT_PEER_FRIEND:20010,ERR_SVR_MSG_NOT_SELF_FRIEND:20011,ERR_SVR_MSG_SHUTUP_DENY:20012,ERR_SVR_GROUP_INVALID_PARAMETERS:10004,ERR_SVR_GROUP_PERMISSION_DENY:10007,ERR_SVR_GROUP_NOT_FOUND:10010,ERR_SVR_GROUP_INVALID_GROUPID:10015,ERR_SVR_GROUP_REJECT_FROM_THIRDPARTY:10016,ERR_SVR_GROUP_SHUTUP_DENY:10017,MSG_SEND_FAIL:2100,OVER_FREQUENCY_LIMIT:2996},qm="quality_stat";var HQ=new class{constructor(){this._messageStatsMap=new Map,this._userSideErrorCodes=new Set(Object.values(TD))}init(s){this._core=s,Object.values(nR).forEach(n=>{this._messageStatsMap.set(n,{totalCount:0,successCount:0,failedCountOfUserSide:0,costSum:0,costCount:0,fileSizeSum:0})})}dispatchSendStats(s){const{name:n,message:g,error:u,startTs:E}=s,{SEND_MESSAGE_STAT:m}=this._core.constants;switch(n){case m.TOTAL_COUNT:this._handleTotalCount(g);break;case m.SUCCESS_COUNT:this._handleSuccessCount(g);break;case m.FAILED_COUNT:this._handleFailedCount(g,u);break;case m.SEND_COST:this._handleSendCost(g,E)}}getStatResult(s){const n=this._messageStatsMap.get(s);if(!n||n.totalCount===0)return null;const{totalCount:g,successCount:u,failedCountOfUserSide:E}=n,m=ph(u/g*100,2),D=u+E,M=ph(D/g*100,2),T=this._calcAverageValue(n,s);return this._resetStat(s),{total_count:g,success_count_business:u,percent_business:m,success_count_platform:D,percent_platform:M,average_value:T}}_handleTotalCount(s){const n=this._getSendMessageSpecifiedKey(s),g=n&&this._messageStatsMap.get(n);g&&g.totalCount++}_handleSuccessCount(s){const n=this._getSendMessageSpecifiedKey(s),g=n&&this._messageStatsMap.get(n);g&&g.successCount++}_handleFailedCount(s,n){var g;const u=(g=n?.code)!==null&&g!==void 0?g:n?.errorCode;if(this._isUserSideError(u)){const E=this._getSendMessageSpecifiedKey(s),m=E&&this._messageStatsMap.get(E);m&&m.failedCountOfUserSide++}}_handleSendCost(s,n){const g=this._getSendMessageSpecifiedKey(s),u=g&&this._messageStatsMap.get(g);u&&(u.costSum+=Date.now()-n,u.costCount++)}_isUserSideError(s){return this._userSideErrorCodes.has(s)||s>=120001&&s<=13e4||s>=10100&&s<=10200}_getSendMessageSpecifiedKey(s){const{MSG_IMAGE:n,MSG_AUDIO:g,MSG_VIDEO:u,MSG_FILE:E,CONV_C2C:m,CONV_GROUP:D,GRP_AVCHATROOM:M}=this._core.OuterConstant;if([n,g,u,E].includes(s.type))return BB;if(s.conversationType===m)return hB;if(s.conversationType===D){const{groupStore:T}=this._core.appStore,P=T.getGroup(s.to);if(!P)return;const{type:W}=P;return W===M?yh:fh}}_calcAverageValue(s,n){return s.costCount===0?0:Math.round(n===QB?1e3*s.fileSizeSum/s.costSum:s.costSum/s.costCount)}_resetStat(s){const n=this._messageStatsMap.get(s);n&&(n.totalCount=0,n.successCount=0,n.failedCountOfUserSide=0,n.costSum=0,n.costCount=0,n.fileSizeSum=0)}},qQ=new class{constructor(){this._lastCycleStats=new Map,this._currentCycleStats=new Map}init(s){this._core=s;const{OuterEvent:n,notificationCenter:g}=s;this._initStatsMap(),g.subscribeOuterEvent(n.MESSAGE_RECEIVED,this._onMessageReceived,this)}addMessageSequence(s){const n=this._getReceivedMessageSpecifiedKey(s),{utils:{isUndefined:g},OuterConstant:{CONV_GROUP:u},ssoLog:E}=this._core;if(g(n)||!this._currentCycleStats.has(n))return void E.debug("addMessageSequence",`${sR}.addMessageSequence invalid key:${n}`);const{conversationID:m,sequence:D}=s,M=m.replace(u,""),T=this._lastCycleStats.get(n);if(T.size===0||!T.has(M))return void this._addToCurrentCycle(n,M,D);const P=T.get(M);D>P.minSeq&&D{const{sortedSequences:m,minSeq:D,maxSeq:M}=E;m.length>0&&(u+=m.length,g+=M-D+1)}),g===0?null:(this._transferCycleDataOptimized(s),{total_count:g,success_count_business:u,percent_business:ph(u/g*100,2)})}reset(){this._lastCycleStats.clear(),this._currentCycleStats.clear()}dispose(){const{notificationCenter:s,OuterEvent:{MESSAGE_RECEIVED:n}}=this._core;s.unSubscribeOuterEvent(n,this._onMessageReceived,this),this.reset()}_initStatsMap(){Object.values(Dh).forEach(s=>{this._lastCycleStats.set(s,new Map),this._currentCycleStats.set(s,new Map)})}_onMessageReceived(s){const{data:n=[]}=s;n.forEach(g=>{this.addMessageSequence(g)})}_transferCycleDataOptimized(s){const n=this._currentCycleStats.get(s);if(!n)return;const g=new Map;n.forEach((u,E)=>{const m=u.dirty?[...u.sortedSequences].sort((D,M)=>D-M):u.sortedSequences;g.set(E,{sortedSequences:m,minSeq:u.minSeq,maxSeq:u.maxSeq,dirty:!1})}),this._lastCycleStats.set(s,g),this._currentCycleStats.set(s,new Map)}_getReceivedMessageSpecifiedKey(s){const{OuterConstant:{CONV_GROUP:n,GRP_AVCHATROOM:g}}=this._core;if(s.conversationType===n&&s?._onlineOnlyFlag!==!0){const{groupStore:u}=this._core.appStore,E=u.getGroup(s.to);if(!E)return null;const{type:m}=E;return m===g?JQ:SC}}_insertToLastCycle(s,n){n.dirty&&(n.sortedSequences.sort((u,E)=>u-E),n.dirty=!1);const g=this._findInsertPos(n.sortedSequences,s);n.sortedSequences.splice(g,0,s),n.minSeq=Math.min(n.minSeq,s),n.maxSeq=Math.max(n.maxSeq,s)}_findInsertPos(s,n){let g=0,u=s.length-1;for(;g<=u;){const E=Math.floor((g+u)/2);if(s[E]===n)return E;s[E]0&&(this._totalDelay+=g,this._totalCount++,g<=1?this._countLessThan1s++:g<=3&&this._countLessThan3s++)}getStatResult(){if(this._totalCount===0)return null;const s={total_count:this._totalCount,success_count_business:this._countLessThan1s,success_count_platform:this._countLessThan3s,percent_business:this._calculatePercentage(this._countLessThan1s,this._totalCount),percent_platform:this._calculatePercentage(this._countLessThan3s,this._totalCount),average_value:this._calculateAverageDelay(this._totalCount)};return this.reset(),s}reset(){this._totalDelay=0,this._totalCount=0,this._countLessThan1s=0,this._countLessThan3s=0}dispose(){const{notificationCenter:s,OuterEvent:{MESSAGE_RECEIVED:n}}=this._core;s.unSubscribeOuterEvent(n,this._onMessageReceived,this),this.reset()}_onMessageReceived(s){const{data:n=[]}=s,{OuterConstant:{MSG_GRP_TIP:g,MSG_GRP_SYS_NOTICE:u}}=this._core,E=[g,u];n.forEach(m=>{!E.includes(m.type)&&m.clientTime>0&&this.addMessageDelay(m.clientTime)})}_calculateAverageDelay(s){return s===0?0:ph(this._totalDelay/s,1)}_calculatePercentage(s,n){return ph(s/n*100,2)}},rR=new class{init(s){this.core=s}},xT=new class{constructor(){this.name="MessageQualityStat",this._reportIndex=0,this._wholePeriod=!1,this._pendingReports=[],this._failedLogsCache=new Map}install(s){this._core=s;const{helper:n,notificationCenter:g,InnerEvent:{QUALITY_STAT:u,LOGOUT:E,DESTROY:m},constants:{WORKFLOW_NAME:D,WORKFLOW_STEP:M}}=s;rR.init(s),HQ.init(s),qQ.init(s),KQ.init(s),n.registerWorkflowStep(D.SYNC_SERVER_INFO_AFTER_LOGIN,M.QUALITY_REPORT,this.handleLoginSuccess,this),g.subscribeInnerEvent(u,this._handleQualityStat,this),g.subscribeInnerEvent(E,this._reset,this),g.subscribeInnerEvent(m,this._dispose,this)}handleLoginSuccess(){const{store:s,helper:n,utils:{isUndefined:g}}=this._core,u=s.get("cloudConfig")||{},{q_rpt_interval:E}=u,m=g(E)?12e4:Number(E);n.taskScheduler.addTask({id:qm,intervalMs:m,callback:this.report,context:this})}report(){this._wholePeriod=!0;const s=[...pB.map(n=>{const g=this._buildQualityReportItem(n);return g?Object.assign(Object.assign({},g),{report_index:this._reportIndex,whole_period:this._wholePeriod}):null}).filter(Boolean),...this._pendingReports];this._pendingReports=[],this._needSkipReport()||this._uploadQualityReports(s)}_handleQualityStat(s){const{constants:{QUALITY_METRICS:n}}=this._core,{label:g,data:u}=s;g===n.MESSAGE_SEND_SUCCESS_RATE&&HQ.dispatchSendStats(u)}_needSkipReport(){return this._isSDKAppIDInBlacklist()&&!this._isTinyIDInWhitelist()}_isSDKAppIDInBlacklist(){const{store:s,utils:n}=this._core,g=s.get("cloudConfig")||{},u=s.get("instance")||{},{sdkAppId:E}=u,{q_rpt_sdkappid_bl:m=[]}=g;if(!n.isEmpty(m))return m.split(",").map(D=>Number(D)).includes(E)}_isTinyIDInWhitelist(){const{store:s,utils:n}=this._core,g=s.get("cloudConfig")||{},u=s.get("login")||{},E=Number(u.tinyID),{q_rpt_tinyid_wl:m=[]}=g;if(!n.isEmpty(m))return m.split(",").includes(E)}_buildQualityReportItem(s){const n=this._getStatResultByKey(s);if(n===null)return null;const g={quality_type:PT[s],timestamp:Date.now(),network_type:_D.ONLINE,extension:""};return Object.assign(Object.assign({},g),n)}_getStatResultByKey(s){switch(s){case mh:return KQ.getStatResult();case hB:case fh:case yh:case BB:case QB:return HQ.getStatResult(s);case SC:case VQ:case JQ:return qQ.getStatResult(s);default:return null}}_uploadQualityReports(s){return pA(this,void 0,void 0,function*(){try{const n={header:this._core.common.getCommonHead(),quality:s};yield function(g){const{common:u,channel:E}=rR.core,m="imopenstat.tim_web_report_v2",D=u.generateSSOLogProtocolData({servcmd:m,data:g}),M=`${D.head.seq}${m}`;return E.sendPacket(D,{requestId:M})}(n),this._reportIndex++,this._wholePeriod=!1}catch(n){console.warn("doReport failed. error:",n),this._pendingReports=this._pendingReports.concat(s),this._cacheFailedLogs()}})}_cacheFailedLogs(){const s=this._pendingReports,n=`${sR}._cacheFailedLogs`;let g=[...this._failedLogsCache.get(wD)||[],...s];g.length>10&&(g=g.slice(g.length-10),console.log(`${n} logs overflow, keeping last 10 items`)),this._failedLogsCache.set(wD,g),console.log(`${n} count: ${g.length}`),this._pendingReports=[]}_reset(){const{helper:s}=this._core;s.taskScheduler.removeTask(qm)}_dispose(){const{notificationCenter:s,InnerEvent:{QUALITY_STAT:n,LOGOUT:g,DESTROY:u}}=this._core;s.unSubscribeInnerEvent(n,this._handleQualityStat,this),s.unSubscribeInnerEvent(g,this._reset,this),s.unSubscribeInnerEvent(u,this._dispose,this),this._reset(),KQ.dispose(),qQ.dispose()}};const cl=new class{init(s){this.core=s}};function aR(s){return pA(this,void 0,void 0,function*(){var n;const{message:g,user:u,appStore:E,constants:{OuterConstant:m}}=cl.core,D=E.conversationStore.getConversationMap();if(D.has(s)){const T=(n=D.get(s))===null||n===void 0?void 0:n.userProfile;if(T&&s.startsWith(m.CONV_C2C)){const{avatar:P,nick:W}=T;cl.core.message.messageDataHandler.updateNickAndAvatarOfSentMessage({conversationID:s,latestAvatar:P,latestNick:W,isSentByMe:!1})}}const{data:M}=(yield u.userProfile.getMyProfile())||{};if(M){const{avatar:T,nick:P}=M;g.messageDataHandler.updateNickAndAvatarOfSentMessage({conversationID:s,latestAvatar:T,latestNick:P,isSentByMe:!0})}})}function gR(s){return pA(this,void 0,void 0,function*(){const n=s.map(g=>g.revoker);try{const g=yield function(u){return pA(this,void 0,void 0,function*(){var E,m;const D=yield(E=cl.core.user.userProfile)===null||E===void 0?void 0:E.getUserProfile({userIDList:u});return D?.data?(m=D.data)===null||m===void 0?void 0:m.reduce((M,{userID:T,nick:P,avatar:W})=>(M[T]={nick:P||"",avatar:W||""},M),{}):null})}(n);g&&s.forEach(u=>{const{revoker:E}=u;g[E]&&(u.revokerInfo.nick=g[E].nick||"",u.revokerInfo.avatar=g[E].avatar||"",u.revokerInfo.userID=E)})}catch(g){console.debug(g)}})}const ND=1,cR=2,Sh=20,jQ=2500,lR=1,Mh=300;function WQ(s){return pA(this,void 0,void 0,function*(){var n,g;const{appStore:u,utils:{isEmpty:E},common:{getCurrentUserID:m},notificationCenter:D,OuterEvent:M,OuterConstant:{CONV_C2C:T}}=cl.core,{messageList:P,conversationID:W}=s,iA=u.conversationStore.getConversationMap();let EA=(n=iA.get(W))===null||n===void 0?void 0:n.peerReadTime;if(!EA){const kA=W.replace(T,""),xA=yield function(LA){return pA(this,void 0,void 0,function*(){const SA={To_Account:LA};return cl.core.common.buildAndSendPacket({servcmd:"openim.get_peer_read_time",data:SA})})}([kA]);if(xA){const{ReadTime:LA}=xA;EA=LA?.[0],iA.has(W)&&(iA.get(W).peerReadTime=EA)}}if(iA.has(W)){const kA=(g=iA.get(W))===null||g===void 0?void 0:g.lastMessage;E(kA)||kA.fromAccount===m()&&kA.lastTime<=EA&&!kA.isPeerRead&&(kA.isPeerRead=!0,u.conversationStore.updateConversation(W,{lastMessage:kA}))}const RA=[];P.forEach(kA=>{kA.time<=EA&&!kA.isPeerRead&&kA.flow==="out"&&(kA.isPeerRead=!0,RA.push(kA))}),RA.length>0&&D.emitOuterEvent(M.MESSAGE_READ_BY_PEER,{name:M.MESSAGE_READ_BY_PEER,data:RA})})}var IR=new class{init(s){this._core=s,s.helper.registerApi({apiName:"getMessageList",context:this}),s.helper.registerApi({apiName:"getMessageListHopping",context:this}),s.helper.registerApi({apiName:"clearHistoryMessage",context:this})}getMessageList(s){return pA(this,void 0,void 0,function*(){try{const{message:n,OuterConstant:{Direction:g,CONV_C2C:u,CONV_GROUP:E},InnerEvent:{HISTORY_MESSAGE_FETCHED:m},notificationCenter:D}=this._core,{conversationID:M,nextReqMessageID:T}=s,P=Sh;if(M==="@TIM#SYSTEM")return{code:0,data:{messageList:[],isCompleted:!1,nextMessageSeq:""}};const W=this._getAvailableLocalMessagesCount({conversationID:M,nextReqMessageID:T});if(this._needFetchHistoryMessageList({conversationID:M,availableLocalMessagesCount:W,targetCount:P})){let iA=null;if(M.startsWith(E)?iA=yield n.messageHistory.getGroupRoamingMessagesByAnchor({conversationID:M,sequence:Number(T),count:P,direction:g.FORWARD,shouldMarkCompleted:!0}):M.startsWith(u)&&(iA=yield n.messageHistory.getC2CRoamingMessagesByAnchor({conversationID:M,messageID:T,count:P,direction:g.FORWARD,shouldMarkCompleted:!0})),iA){const{nextReqMessageIDFromServer:EA,hasNoMoreHistoryMessage:RA,messageList:kA}=iA,xA=n.messageDataHandler.prependLocalMessageList({messageList:kA,conversationID:M});(function(ne){const{appStore:se,message:_i,OuterConstant:Ti}=cl.core,Lt=se.conversationStore.getConversation(ne),Ni=_i.messageDataHandler.getLocalMessageList(ne);if(!Lt||Ni.length===0||ne===Ti.CONV_SYSTEM)return;const cs=[];for(let mt=0;mtUA.isRevoked).length;Se=cs.length-Lt.unreadCount-mt}else Se=cs.length-Lt.unreadCount;for(let mt=0;mtne.isRevoked);yield gR(SA),D.emitInnerEvent(m,xA);const OA={nextReqMessageID:RA?"":String(EA),messageList:LA,isCompleted:RA},JA=LA.map(ne=>ne.sequence);return{code:0,data:OA,successLog:{message:`conversationID: ${M} nextReqMessageID: ${T} availableLocalMessagesCount: ${W} sequenceList: ${JSON.stringify(JA)}`}}}return{code:0,data:{messageList:[],isCompleted:!1,nextReqMessageID:""}}}return{code:0,data:yield this._getMessageListFromMemory({conversationID:M,nextReqMessageID:T,count:P}),successLog:{message:`conversationID: ${M} nextReqMessageID: ${T} availableLocalMessagesCount: ${W}}`}}}catch(n){const{code:g,message:u}=n||{};throw new this._core.helper.ChatError({code:g,message:u,moreMessage:`options: ${this._core.utils.safeStringify(s)}`})}})}getMessageListHopping(s){return pA(this,void 0,void 0,function*(){var n,g;const{OuterConstant:{Direction:u,CONV_C2C:E,CONV_GROUP:m},utils:{safeStringify:D}}=this._core,{conversationID:M,sequence:T,time:P,direction:W=u.FORWARD}=s,{utils:{isEmpty:iA},message:EA,notificationCenter:RA,InnerEvent:{HISTORY_MESSAGE_FETCHED:kA}}=this._core;if(![u.BACKWARD,u.FORWARD].includes(W))throw new this._core.helper.ChatError({message:"direction must be 0 or 1",moreMessage:`options: ${D(s)}`});let{count:xA=Sh}=s;xA=xA>Sh?Sh:xA;let LA=null;if(M.startsWith(m)){if(LA=yield EA.messageHistory.getGroupRoamingMessagesByAnchor({conversationID:M,sequence:T,count:xA,direction:W}),LA){const{nextReqMessageIDFromServer:SA,hasNoMoreHistoryMessage:OA,messageList:JA,invisibleSequenceList:ne}=LA;if(this._core.message.messageDataHandler.storeSparseMessageList(JA),RA.emitInnerEvent(kA,JA),W===u.FORWARD){const se=OA&&SA<1;return{code:0,data:{messageList:JA,isCompleted:se,nextMessageSeq:se?"":SA}}}if(W===u.BACKWARD){if(iA(JA)&&iA(ne))return{code:0,data:{messageList:[],isCompleted:!0,nextMessageSeq:""}};const se=((n=JA?.[JA.length-1])===null||n===void 0?void 0:n.sequence)||0,_i=((g=ne?.[ne.length-1])===null||g===void 0?void 0:g.sequence)||0;return{code:0,data:{messageList:JA.filter(Ti=>Ti.sequence>=T),isCompleted:!OA,nextMessageSeq:OA?Math.max(se,_i)+1:""}}}return{code:0,data:LA}}}else if(M.startsWith(E)&&(LA=yield EA.messageHistory.getC2CRoamingMessagesByAnchor({conversationID:M,count:xA+1,time:P,direction:W}),LA)){const{messageList:SA,lastMessageTime:OA,hasNoMoreHistoryMessage:JA}=LA;return RA.emitInnerEvent(kA,SA),JA||(W===u.FORWARD?SA.shift():SA.pop()),EA.messageDataHandler.storeSparseMessageList(SA),yield WQ({messageList:SA,conversationID:M}),{code:0,data:{messageList:SA,isCompleted:JA,nextMessageTime:JA?"":OA}}}})}clearHistoryMessage(s){return pA(this,void 0,void 0,function*(){var n;const{appStore:g,common:{ChatError:u,getCurrentUserID:E},OuterConstant:{CONV_C2C:m,CONV_GROUP:D},apiMap:M,message:T}=this._core,P=g.conversationStore.getConversation(s);if(!P)throw new u({code:jQ});const W={fromAccount:E()},{type:iA}=P;iA===m?(W.type=ND,W.toAccount=s.replace(m,"")):iA===D&&(W.type=cR,W.toGroupID=s.replace(D,""));try{return yield(n=M?.setMessageRead)===null||n===void 0?void 0:n.call(M,{conversationID:s}),(yield function(RA){return pA(this,void 0,void 0,function*(){const{fromAccount:kA,type:xA,toAccount:LA,toGroupID:SA}=RA,OA={From_Account:kA,Type:xA,To_Account:LA,ToGroupid:SA};return cl.core.common.buildAndSendPacket({servcmd:"recentcontact.clear_msg",data:OA})})}(W))&&(T.messageDataHandler.deleteConversationMessageList(s),T.messageHistory.completedHistoryConversations.delete(s),T.messageHistory.clearHistoryMessageListFetchAnchors(s),this._updateConversationLastMessage(s)),{code:0,data:{conversationID:s},successLog:{message:`convID:${s}`}}}catch(EA){const{errorCode:RA}=EA;throw new this._core.helper.ChatError({functionName:"clearHistoryMessage",code:RA,moreMessage:`convID:${s}`})}})}_updateConversationLastMessage(s){const{appStore:n}=this._core;n.conversationStore.updateConversation(s,{lastMessage:this._generateLastMessage()},{needSort:!0})}_getAvailableLocalMessagesCount({conversationID:s,nextReqMessageID:n}){const{OuterConstant:{CONV_C2C:g,CONV_GROUP:u}}=this._core,E=this._core.message.messageDataHandler.getLocalMessageList(s),{length:m}=E;if(!n)return m;let D=-1;return s?.startsWith(g)?D=E.findIndex(M=>M.ID===n):s?.startsWith(u)&&(D=E.findIndex(M=>n.includes("-")?M.ID===n:String(M.sequence)===n)),D===-1?0:D}_needFetchHistoryMessageList({conversationID:s,availableLocalMessagesCount:n,targetCount:g}){const{message:u}=this._core;return nn.startsWith(E)?EA.ID===g:String(EA.sequence)===g),W=iA>u?iA-u:0,T=iA):W=M>u?M-u:0,P.messageList=D.slice(W,iA),P.isCompleted=T<=u&&m.messageHistory.completedHistoryConversations.has(n),P.isCompleted?P.nextReqMessageID="":P.nextReqMessageID=this._generateNextReqMessageID({conversationID:n,targetIndex:W}),n.startsWith(E)&&(yield aR(n),yield WQ({messageList:P.messageList,conversationID:n})),P})}_generateNextReqMessageID({conversationID:s,targetIndex:n}){const g=this._core.message.messageDataHandler.getLocalMessageList(s);return s.startsWith("C2C")?g[n].ID:String(g[n].sequence)}_generateLastMessage(){return{lastTime:0,lastSequence:0,fromAccount:"",messageForShow:"",payload:null,type:"",isRevoked:!1,cloudCustomData:"",onlineOnlyFlag:!1,nick:"",nameCard:"",version:0,isPeerRead:!1,revoker:null}}},mB=new class{constructor(){this._lastMessageSequenceMapOnDisconnect=new Map,this._lastMessageTimeMapOnDisconnect=new Map}init(s){this._core=s;const{common:{workflowManager:n},constants:{WORKFLOW_NAME:g,WORKFLOW_STEP:u,InnerEvent:E}}=s;n.registerWorkflowStep(g.SYNC_SERVER_INFO_AFTER_RE_ONLINE,u.HISTORY_MESSAGE_RECOVER,this._syncGroupOfflineMessage,this),n.registerWorkflowStep(g.SYNC_SERVER_INFO_AFTER_RE_ONLINE,u.C2C_HISTORY_MESSAGE_RECOVER,this._syncC2COfflineMessage,this),s.notificationCenter.subscribeInnerEvent(E.SOCKET_DISCONNECTED,this._updateLastMessageSequenceMapOnDisconnect,this)}_syncGroupOfflineMessage(s){const{conversationList:n}=s?.result||{},{OuterConstant:g,utils:{isArray:u}}=this._core;if(u(n)){const E=n.filter(m=>m.type===g.CONV_GROUP&&m.groupProfile.type!==g.GRP_AVCHATROOM);return this._recoverGroupHistoryMessage(E)}}_recoverGroupHistoryMessage(s){return pA(this,void 0,void 0,function*(){const{OuterConstant:n}=this._core,g=[],u=[];return yield Promise.all(s?.map(E=>pA(this,void 0,void 0,function*(){const{groupProfile:{groupID:m}={},lastMessage:{lastSequence:D}={}}=E,M=`${n.CONV_GROUP}${m}`;let T=this._getLocalLastMessageSequence(M);this._shouldRecoverHistory({localLastMessageSequence:T,serverLastMessageSequence:D})&&(yield this._recoverGroupHistoryForConversation({conversationID:M,localLastMessageSequence:T,serverLastMessageSequence:D,groupTipList:u})),g.push(M.replace(n.CONV_GROUP,""))}))),{recoverRevokeNoticeGroupIDList:g,groupTipList:u}})}_recoverGroupHistoryForConversation(s){return pA(this,arguments,void 0,function*({conversationID:n,localLastMessageSequence:g,serverLastMessageSequence:u,groupTipList:E}){try{const{utils:{isArray:m,isObject:D,isEmpty:M},OuterEvent:T,OuterConstant:P,notificationCenter:W,message:iA,appStore:EA,common:{getMessagePreviewText:RA,buildLastMessage:kA}}=this._core,xA=u-g,LA=Math.min(20,xA),SA={},OA=yield iA.messageHistory.getGroupRoamingMessagesByAnchor({conversationID:n,sequence:g+LA,direction:P.Direction.FORWARD,count:LA}),{nextReqMessageIDFromServer:JA,hasNoMoreHistoryMessage:ne,messageList:se,serverGroupTipList:_i}=OA;m(_i)&&E.push(..._i);const Ti=ne&&JA<0,Lt=[];if(m(se)&&(se.forEach(Ni=>{iA.messageReceiver.groupMessageReceiver.updateMessageProfile(Ni),Ni.from===P.CONV_SYSTEM&&(Ni.isSystemMessage=!1),iA.messageDataHandler.storeConversationMessage(Ni)&&!M(Ni.payload)&&(Lt.push(Ni),Ni._isExcludedFromLastMessage||(SA.lastMessage=kA(Ni)))}),Lt.length>0&&W.emitOuterEvent(T.MESSAGE_RECEIVED,{name:T.MESSAGE_RECEIVED,data:Lt})),!Ti&&se.length>0){const Ni=se[se.length-1].sequence;yield this._recoverGroupHistoryForConversation({conversationID:n,localLastMessageSequence:Ni,serverLastMessageSequence:u,groupTipList:E})}D(SA.lastMessage)&&(SA.lastMessage.messageForShow=RA(SA.lastMessage.type,SA.lastMessage.payload),EA.conversationStore.updateConversation(n,SA))}catch(m){this._core.ssoLog.error("_recoverGroupHistoryForConversation",`Recovery failed for conversation:${n}`,{error:m})}})}_updateLastMessageSequenceMapOnDisconnect(){const{message:s}=this._core,n=s.messageDataHandler.getContinuousMessagesByConversation();for(const[g,u]of n){const E=Array.from(u.values());if(E?.length>0){const m=E[E.length-1];g.startsWith("C2C")?this._lastMessageTimeMapOnDisconnect.set(g,m.time):g.startsWith("GROUP")&&this._lastMessageSequenceMapOnDisconnect.set(g,m.sequence)}}}_getLocalLastMessageSequence(s){const{message:n}=this._core;if(this._lastMessageSequenceMapOnDisconnect.has(s))return this._lastMessageSequenceMapOnDisconnect.get(s);const g=n.messageDataHandler.getLocalMessageList(s),u=g[g.length-1];return u?.sequence}_shouldRecoverHistory(s){const{localLastMessageSequence:n,serverLastMessageSequence:g}=s;if(typeof n!="number"||typeof g!="number")return!1;const u=g-n;return g!==0&&n>0&&u>=lR&&u{m.type===g.CONV_C2C&&E.push(m)}),this._recoverC2CHistoryMessage(E)}}_recoverC2CHistoryMessage(s){return pA(this,void 0,void 0,function*(){yield Promise.all(s?.map(n=>pA(this,void 0,void 0,function*(){const{conversationID:g,lastMessage:{lastTime:u}={}}=n,E=this._getLocalLastMessageTime(g);this._shouldRecoverC2CHistory({localLastMessageTime:E,serverLastMessageTime:u})&&(yield this._recoverHistoryForC2CConversation({conversationID:g,localLastMessageTime:E,serverLastMessageTime:u}))})))})}_shouldRecoverC2CHistory(s){const{localLastMessageTime:n,serverLastMessageTime:g}=s,u=g-n;return n>0&&u>=1&&u<=600}_recoverHistoryForC2CConversation(s){return pA(this,void 0,void 0,function*(){var n;const{conversationID:g,localLastMessageTime:u,serverLastMessageTime:E}=s,{utils:{isArray:m,isObject:D,isEmpty:M,safeStringify:T},OuterEvent:P,OuterConstant:W,notificationCenter:iA,message:EA,appStore:RA,common:{getMessagePreviewText:kA,buildLastMessage:xA}}=this._core;try{const LA={},SA=yield EA.messageHistory.getC2CRoamingMessagesByAnchor({conversationID:g,direction:W.Direction.BACKWARD,time:u,count:20});if(M(SA))return;const{hasNoMoreHistoryMessage:OA,messageList:JA}=SA,ne=[];m(JA)&&(JA.forEach(_i=>{EA.messageDataHandler.storeConversationMessage(_i)&&!M(_i.payload)&&(ne.push(_i),_i._isExcludedFromLastMessage||(LA.lastMessage=xA(_i)))}),ne.length>0&&iA.emitOuterEvent(P.MESSAGE_RECEIVED,{name:P.MESSAGE_RECEIVED,data:ne}));const se=(n=JA[JA.length-1])===null||n===void 0?void 0:n.time;!OA&&se>E&&(yield this._recoverHistoryForC2CConversation({conversationID:g,localLastMessageTime:se,serverLastMessageTime:E})),D(LA.lastMessage)&&(LA.lastMessage.messageForShow=kA(LA.lastMessage.type,LA.lastMessage.payload),RA.conversationStore.updateConversation(g,LA))}catch(LA){this._core.ssoLog.error("_recoverHistoryForC2CConversation",`Recovery failed for conversation:${g} error: ${T(LA)}`)}})}_getLocalLastMessageTime(s){const{message:n}=this._core;if(this._lastMessageTimeMapOnDisconnect.has(s))return this._lastMessageTimeMapOnDisconnect.get(s);const g=n.messageDataHandler.getLocalMessageList(s),u=g[g.length-1];return u?.time}reset(){this._lastMessageSequenceMapOnDisconnect.clear(),this._lastMessageTimeMapOnDisconnect.clear()}dispose(){this.reset()}},fB=new class{constructor(){this.name="HistoryMessage"}install(s){this._core=s,cl.init(s),IR.init(s),mB.init(s),s.notificationCenter.subscribeInnerEvent(s.InnerEvent.LOGOUT,this._reset,this),s.notificationCenter.subscribeInnerEvent(s.InnerEvent.DESTROY,this.dispose,this)}dispose(){const{notificationCenter:s,InnerEvent:n}=this._core;s.unSubscribeInnerEvent(n.LOGOUT,this._reset,this),s.unSubscribeInnerEvent(n.DESTROY,this.dispose,this),mB.dispose()}_reset(){mB.reset()}},GD=new class{init(s){this.core=s}},MC=new class{constructor(){this._reportedAtomicStoreIDs=new Set}init(s){const{helper:{registerExperimentalAPI:n}}=s;this._core=s,n("reportModalView",this),n("reportTUIFeatureUsage",this),n("reportRoomEngineEvent",this)}reportModalView(s){const{ssoLog:n,utils:{safeStringify:g,isString:u}}=this._core;try{if(!u(s))throw new Error("reportModalView data is not a string");n.createSSOLogData({method:"reportModalView",message:s,eventType:30}).end(!0)}catch(E){n.debug(`reportModalView Report failed: ${g(E)}`)}}reportTUIFeatureUsage(s){const{ssoLog:n,utils:{safeStringify:g,isEmpty:u}}=this._core,{atomicStoreID:E}=s;try{u(E)||this._reportedAtomicStoreIDs.has(E)||(this._core.ssoLog.info("reportTUIFeatureUsage",`atomicStoreID: ${s.atomicStoreID}`,{method:"reportTUIFeatureUsage",eventType:31,code:E}),this._reportedAtomicStoreIDs.add(E))}catch(m){n.debug(`reportTUIFeatureUsage Report failed: ${g(m)}`)}}reportRoomEngineEvent(s){const{utils:{safeStringify:n},ssoLog:g}=this._core;try{g.debug(`reportRoomEngineEvent Report: ${n(s)}`);const{eventId:u,eventCode:E,eventResult:m,eventMessage:D,moreMessage:M,extensionMessage:T}=s;g.createSSOLogData({method:T,code:u,message:D,eventType:30,costTime:E,uiPlatform:m,moreMessage:M}).end(!0)}catch(u){g.debug(`reportRoomEngineEvent Report failed: ${n(u)}`)}}reset(){this._reportedAtomicStoreIDs.clear()}dispose(){this.reset()}},zQ=new class{constructor(){this.name="DataReport"}install(s){this._core=s;const{notificationCenter:n,InnerEvent:{LOGOUT:g,DESTROY:u}}=s;GD.init(s),MC.init(s),n.subscribeInnerEvent(g,this._reset,this),n.subscribeInnerEvent(u,this._dispose,this)}_reset(){MC.reset()}_dispose(){const{notificationCenter:s,InnerEvent:{LOGOUT:n,DESTROY:g}}=this._core;s.unSubscribeInnerEvent(n,this._reset,this),s.unSubscribeInnerEvent(g,this._dispose,this),MC.dispose()}};let Km=nr.STANDARD,yB=[];Km=nr.STANDARD,yB=[rh,lC,IC,uC,Rc,xT,fB,zQ,LE,vi,jn,GT,Pm,RD,zI];function DB(s,n){const{operationType:g,memberInfoList:u,operatorInfo:E}=s||{};let m={};if(Rs(u)?Rs(E)||(m=E):g!==Tg.JOINED&&g!==Tg.KICKED&&g!==Tg.ADMIN_SET&&g!==Tg.ADMIN_CANCELED||(m=Object.assign({},u[0])),!Rs(m)){const{nick:D="",avatar:M=""}=m;n.nick=D,n.avatar=M}}const ZQ=s=>({lastTime:s?.time||s?.lastTime||0,lastSequence:s?.sequence||s?.lastSequence||0,fromAccount:s?.from||s?.fromAccount||"",messageForShow:zc(s?.type,s?.payload),payload:s?.payload||null,type:s?.type||"",isRevoked:s?.isRevoked||!1,cloudCustomData:s?.cloudCustomData||"",onlineOnlyFlag:s?._onlineOnlyFlag||!1,nick:s?.nick||"",nameCard:s?.nameCard||"",version:s?.version||0,isPeerRead:s?.isPeerRead||!1,revoker:s?.revoker||null});var XQ=Object.freeze({__proto__:null,ChatError:gs,WorkflowManager:ws,buildAndSendPacket:gg,buildLastMessage:ZQ,get builtInPlugins(){return yB},checkBusinessCapabilityBits:tn,deepMerge:dd,getCurrentUserID:Ar,getErrorMessage:rs,getMessagePreviewText:zc,isC2CConv:s=>l(s)&&s.slice(0,3)===ka.CONV_C2C,isCommunity:Xr,isGroupConv:s=>l(s)&&s.slice(0,5)===ka.CONV_GROUP,isInternational:Rl,isTopic:Wc,isUnlimitedAVChatRoom:function(){var s;return!!(!((s=fe.store.get("instance"))===null||s===void 0)&&s.unlimitedAVChatRoom)},liteChatInstanceMap:da,registerInterceptor:Mc,registerValidateConfig:jc,requireAuth:Id,get sdkEdition(){return Km},setGroupTipsUserInfo:DB,t:Nu,updateGroupAtInfo:(s,n)=>{const{CONV_AT_ME:g,CONV_AT_ALL:u,CONV_AT_ALL_AT_ME:E}=Lo;if(function(M,T){const{CONV_AT_ME:P,CONV_AT_ALL:W,CONV_AT_ALL_AT_ME:iA}=Lo,{groupID:EA,sequence:RA}=M;let kA=!1;return Xr({groupID:EA})&&T.forEach(xA=>{xA.messageSequence===RA&&(xA.atTypeArray.includes(P)&&M.groupAtType.includes(W)&&(xA.atTypeArray=[iA]),xA.atTypeArray.includes(W)&&M.groupAtType.includes(P)&&(xA.atTypeArray=[iA],xA.__random=M.__random,xA.__sequence=M.__sequence),kA=!0)}),kA}(s,n))return;let m=[...s.groupAtType];m.includes(g)&&m.includes(u)&&(m=[E]);const D={from:s.from,groupID:s.groupID,topicID:s.topicID,messageSequence:s.sequence,atTypeArray:m,__random:s.__random,__sequence:s.__sequence};n.push(D)},validateAndExecute:Sr,validateParameters:lI});class nu{constructor(){this._builtInPlugins=new Set,this._externalPlugins=new Set}static getInstance(){return nu._instance||(nu._instance=new nu),nu._instance}static setInstance(n){nu._instance=n}installBuiltInPlugin(n){n&&this._installPlugin(n,this._builtInPlugins)}installExternalPlugin(n){n&&this._installPlugin(n,this._externalPlugins)}clear(){this._builtInPlugins=new Set,this._externalPlugins=new Set}_installPlugin(n,g){let u=[];u=h(n)?n:[n];const E=u.findIndex(D=>D?.name==="AVChatRoom"),m=E>-1?u.splice(E,1):[];u.forEach(D=>{this._isPluginInstalled(D.name)||(D&&vg(D.install)?(g.add(D.name),vg(D.getInstalledSubPlugins)?(m?.forEach(M=>g.add(M?.name)),D.install(Cr.getInstance().exposeApiForPlugin(),m)):D.install(Cr.getInstance().exposeApiForPlugin()),vg(D.handleLoginSuccess)&&this._isLoggedIn()&&D.handleLoginSuccess()):vg(D)?(g.add(D.name),D(Cr.getInstance().exposeApiForPlugin()),vg(D.handleLoginSuccess)&&this._isLoggedIn()&&D.handleLoginSuccess()):console.warn('A plugin must either be a function or an object with an "install" function.'))})}_isPluginInstalled(n){return this._builtInPlugins.has(n)||this._externalPlugins.has(n)}_isLoggedIn(){var n;return((n=fe.store.get("login"))===null||n===void 0?void 0:n.isLoggedIn)===!0}}var SB=new class{constructor(){this._conversationMap=new Map}getConversationMap(){return this._conversationMap}getConversation(s){return this._conversationMap.get(s)}updateConversation(s,n,g){const{emit:u=!0,needSort:E=!1}=g||{},m=this._conversationMap.get(s);m&&!Rs(n)&&(Object.keys(n).forEach(D=>{m[D]=n[D]}),u&&fe.notificationCenter.emitInnerEvent(so.CONVERSATION_UPDATED,{needSort:E}))}deleteConversation(s){this._conversationMap.has(s)&&(this._conversationMap.delete(s),fe.notificationCenter.emitInnerEvent(so.CONVERSATION_UPDATED))}},$Q=new class{constructor(){this._groupMap=new Map}getGroupMap(){return this._groupMap}getGroup(s){return this._groupMap.get(s)}updateGroup(s,n){const g=this._groupMap.get(s);g&&!Rs(n)&&Object.keys(n).forEach(u=>{g[u]=n[u]})}},Ap=new class{constructor(){this._messagesByConversation=new Map}updateMessage(s,n,g){var u;const{operation:E,updateUnreadCount:m=!0}=g,D=Do(g,["operation","updateUnreadCount"]),M=[];for(const T of n){const P=(u=this._messagesByConversation.get(s))===null||u===void 0?void 0:u.get(T);if(!P)return!1;Object.keys(D).forEach(W=>{P[W]=D[W]}),M.push(P)}return this._emitMessageStoreOperationEvent(E,{conversationID:s,messageList:M,updateUnreadCount:m}),M}getMessagesByConversation(s){var n;return[...((n=this._messagesByConversation.get(s))===null||n===void 0?void 0:n.values())||[]]}getMessages(){return this._messagesByConversation}_emitMessageStoreOperationEvent(s,n){const{conversationID:g}=n;Wc(g)?fe.notificationCenter.emitInnerEvent(vu[s],n):fe.notificationCenter.emitInnerEvent(s,n)}},rc=new class{constructor(){this.userProfileMap=new Map,this.friendMap=new Map}getUserProfileMap(){return this.userProfileMap}getFriendMap(){return this.friendMap}getUserProfile(s){return this.userProfileMap.get(s)}getFriend(s){return this.friendMap.get(s)}},bD=Object.freeze({__proto__:null,conversationStore:SB,groupStore:$Q,messageStore:Ap,userStore:rc});class Cr{static getInstance(){return Cr._instance||(Cr._instance=new Cr),Cr._instance}static setInstance(n){Cr._instance=n}constructor(){this._experimentalApiMap={statTUIKeyFeatures:this.statKeyFeatureUsage.bind(this),setApplicationID:this.setApplicationID.bind(this)},this._apiHandlersMap={},this._apiMap={on:fe.notificationCenter.subscribeOuterEvent.bind(fe.notificationCenter),off:fe.notificationCenter.unSubscribeOuterEvent.bind(fe.notificationCenter),destroy:this.destroy.bind(this),callExperimentalAPI:this.callExperimentalAPI.bind(this),use:nu.getInstance().installExternalPlugin.bind(nu.getInstance()),registerPlugin:this.registerPlugin.bind(this),setLogLevel:this.setLogLevel.bind(this)}}registerPlugin(n){fe.ssoLog.debug("registerPlugin",n)}statKeyFeatureUsage(n){fe.ssoLog.debug("statTUIKeyFeatures",n)}setLogLevel(n){fe.ssoLog.debug("setLogLevel",n),fe.ssoLog.setLogLevel(n)}setApplicationID(n){fe.store.set("instance",{applicationID:n})}getApiMap(){return this._apiMap}setApiMap(n){this._apiMap=n}registerApi(n){const{common:{timeManager:g},utils:{safeStringify:u}}=fe,{apiName:E,context:m,methodName:D=E,matcher:M}=n;this._apiHandlersMap[E]||(this._apiHandlersMap[E]=[]),this._apiHandlersMap[E].push({context:m,methodName:D,matcher:M}),this._apiMap[E]&&this._apiHandlersMap[E].length!==1||(this._apiMap[E]=(...T)=>{const P=g.getServerTimeMs();let W=0;E==="login"&&(W=4),JI.includes(E)&&fe.ssoLog.debug(E,`${E} start params: ${u(T)}`),Sr(D,T);const iA=this._apiHandlersMap[E];for(const EA of iA)if(!EA.matcher||EA.matcher(T))try{const RA=EA.context[EA.methodName].bind(EA.context)(...T);return this._isPromiseLike(RA)?this._handleAsyncResult(RA,E,W,P):(this._reportApiSuccessLog({result:RA,apiName:E,eventType:W,startTime:P}),RA)}catch(RA){throw fe.ssoLog.error(E,`${E} fail ${RA?.message||RA?.errorMessage})`,{error:RA,costTime:g.getServerTimeMs()-P,eventType:W,method:E}),RA}})}registerExperimentalAPI(n,g,u){const E=u||n;this._experimentalApiMap[n]=g[E].bind(g)}destroy(){return pA(this,void 0,void 0,function*(){var n,g;try{!((n=fe.store.get("login"))===null||n===void 0)&&n.isLogin&&(yield this._apiMap.logout()),fe.notificationCenter.emitInnerEvent(so.DESTROY)}catch(u){console.debug("destroy error: ",u)}finally{fe.notificationCenter.emitOuterEvent(Dr.SDK_DESTROY,{SDKAppID:(g=fe.store.get("instance"))===null||g===void 0?void 0:g.sdkAppId}),da.clear(),nu.getInstance().clear(),ws.getInstance().destroy(),fe.destroy()}})}exposeApiForClient(){return this._apiMap}exposeApiForPlugin(){return Object.assign(Object.assign({InnerEvent:so,InnerEventSubType:fe.notificationCenter.InnerEventSubType,OuterEvent:Dr,OuterConstant:Lo,SignalingEvent:Hc,helper:Object.assign(Object.assign(Object.assign({},fe.utils),fe.common),{registerApi:this.registerApi.bind(this),registerExperimentalAPI:this.registerExperimentalAPI.bind(this),registerInterceptor:Mc,registerValidateConfig:jc,checkBusinessCapabilityBits:tn,registerWorkflowStep:ws.getInstance().registerWorkflowStep.bind(ws.getInstance()),ChatError:gs}),apiMap:this._apiMap},fe),{constants:Object.assign(Object.assign({},za),fe.constants),common:Object.assign(Object.assign(Object.assign({},XQ),fe.common),{workflowManager:ws.getInstance()}),utils:fe.utils,appStore:bD})}callExperimentalAPI(n,g){return fe.ssoLog.debug(`callExperimentalAPI.${n} start params: ${fe.utils.safeStringify(g)}`),this._experimentalApiMap[n]?this._experimentalApiMap[n](g):(fe.ssoLog.error("callExperimentalAPI",`callExperimentalAPI.${n} not found, params: ${fe.utils.safeStringify(g)}`),Promise.reject(new gs({code:Ea.INVALID_OPERATION})))}_isPromiseLike(n){return n!==null&&typeof n=="object"&&typeof n.then=="function"}_handleAsyncResult(n,g,u,E){return n.then(m=>(this._reportApiSuccessLog({result:m,apiName:g,eventType:u,startTime:E}),m)).catch(m=>{throw fe.ssoLog.error(g,`${g} fail ${m?.message||m?.errorMessage})`,{error:m,costTime:fe.common.timeManager.getServerTimeMs()-E,eventType:u,method:g,startTime:E}),m})}_reportApiSuccessLog(n){let{result:g,apiName:u,startTime:E,eventType:m}=n;const{timeManager:D}=fe.common,{successLog:{message:M,moreMessage:T}={message:"",moreMessage:""}}=g||{},P=D.getServerTimeMs();u==="login"&&(E+=D.getTimeOffsetWithServer()),JI.includes(u)&&fe.ssoLog.info(u,`${u} success ${M} ${T}`,{costTime:P-E,eventType:m,message:M,moreMessage:T,startTime:E}),g?.successLog&&delete g.successLog}}class uR{constructor(){this._latestLoginAt=0,this._latestSendOnlinePresenceRequestTime=0,this._helloInterval=120,this._customLoginInfo=""}init(){const{notificationCenter:n,store:g}=fe;g.set("login",{isReady:!1}),Cr.getInstance().registerApi({apiName:"login",context:this}),Cr.getInstance().registerApi({apiName:"logout",context:this}),Cr.getInstance().registerApi({apiName:"getLoginUser",context:this}),Cr.getInstance().registerApi({apiName:"isReady",context:this}),Cr.getInstance().registerApi({apiName:"getServerTime",context:this}),Cr.getInstance().registerExperimentalAPI("setCustomLoginInfo",this),n.subscribeInnerEvent(so.RECONNECTED,this._reLogin,this),fe.notificationCenter.subscribeInnerEvent(so.DESTROY,this._dispose,this)}login(n){return pA(this,void 0,void 0,function*(){var g;const{sdkEdition:u}=fe.store.get("instance")||{};try{if(this._isLoginIn())return this._createRepeatLoginResponse();if(this._isLoginFrequencyExceeded())throw new gs({functionName:"login",code:Ea.REPEAT_LOGIN});const E=yield this._performLogin(n);this._validateAfterLogin(E),this._handleLoginSuccess(E),yield this._ensureAsyncComplete(),this._updateAndEmitSDKReady(),this._latestLoginAt=0;const m=(g=fe.channel.getSocketAdapter())===null||g===void 0?void 0:g.getId(),{appId:D,href:M}=fe.store.get("instance")||{},{instanceID:T,customStatus:P}=E||{};return{code:0,data:E,successLog:{message:u,moreMessage:`socketID:${m} instanceID:${T} customStatus:${P} href: ${M} appId: ${D}`}}}catch(E){const{errorCode:m}=E;m!==Ea.REPEAT_LOGIN&&(this._latestLoginAt=0);const D=new gs({functionName:"login",code:m});throw console.error(D),D}})}_reLogin(){return pA(this,void 0,void 0,function*(){var n;try{if(!this._isLoginIn())return;const g=yield Tu(this._customLoginInfo);if(g){const{instanceID:u,customStatus:E}=g;fe.store.set("login",{statusInstanceId:u}),ws.getInstance().executeWorkflow(xt.SYNC_SERVER_INFO_AFTER_RE_ONLINE,{customStatus:E,statusType:mE.USER_STATUS_ONLINE});const m=(n=fe.channel.getSocketAdapter())===null||n===void 0?void 0:n.getId();fe.ssoLog.info("reLogin",`socketId:${m} instanceId:${u}`)}}catch(g){console.warn(g)}})}logout(){return pA(this,arguments,void 0,function*(n=na.USER_INITIATED){const{ssoLog:g}=fe;g.debug("logout",`logout start logoutReason: ${n}`);try{yield this._performLogout(n),g.info("logout","logout success"),fe.ssoLog.uploadSSOLogData()}catch(u){const{errorCode:E}=u;throw new gs({functionName:"logout",code:E})}finally{this.handleLogoutCompleted()}return{code:0,data:{}}})}getLoginUser(){return this._isLoginIn()?Ar():""}isReady(){var n;return(n=fe.store.get("login"))===null||n===void 0?void 0:n.isReady}setCustomLoginInfo(n=""){this._customLoginInfo=n}handleLogoutCompleted(){this._updateAndEmitSDKNotReady(),this._reset(),ws.getInstance().reset(),fe.notificationCenter.emitInnerEvent("logout")}getServerTime(){const{timeManager:n}=fe.common;return n.getServerTimeMs()}_updateAndEmitSDKReady(){fe.store.set("login",{isReady:!0}),setTimeout(()=>{fe.notificationCenter.emitOuterEvent(Dr.SDK_READY,{name:Dr.SDK_READY})},1)}_updateAndEmitSDKNotReady(){fe.store.set("login",{isReady:!1}),fe.notificationCenter.emitOuterEvent(Dr.SDK_NOT_READY,{name:Dr.SDK_NOT_READY})}_validateAfterLogin(n){const g="login";if(!n)throw new gs({functionName:g,message:"login response is empty"});const{tinyID:u,a2Key:E}=n||{};if(!u)throw new gs({functionName:g,code:Ea.NO_TINYID});if(!E)throw new gs({functionName:g,code:Ea.NO_A2KEY})}_createRepeatLoginResponse(){var n;return{code:0,data:{actionStatus:"OK",errorCode:0,errorInfo:rs({code:"RepeatLogin",replacement1:(n=fe.store.get("login"))===null||n===void 0?void 0:n.userId}),repeatLogin:!0}}}_performLogin(n){return pA(this,void 0,void 0,function*(){const{userID:g,userSig:u}=n;return fe.store.set("login",{userId:g,userSig:u}),this._latestLoginAt=Date.now(),Tu(this._customLoginInfo)})}_ensureAsyncComplete(){return pA(this,void 0,void 0,function*(){yield new Promise(n=>{setTimeout(()=>n(null),1)})})}_handleLoginSuccess(n){const{timeManager:g}=fe.common,{helloInterval:u,timeStamp:E,customStatus:m,purchaseBits:D}=n,M=1e3*E;g.calculateTimeOffsetWithServer(this._latestLoginAt,M),this._helloInterval=u||120,this._updateLoginStore(n),fe.user.userStatus.setCustomStatus(m),ws.getInstance().executeWorkflow(xt.SYNC_SERVER_INFO_AFTER_LOGIN,{purchaseBits:D}),fe.common.taskScheduler.addTask({id:Gg,intervalMs:1e3*this._helloInterval,callback:this._sendOnlinePresenceRequest,context:this})}_performLogout(n){return function(g){return pA(this,void 0,void 0,function*(){const{logoutReason:u}=g,E="im_open_status.wslogout",m=fe.common.generateProtocolData({servcmd:E,data:{wslogout_type:u,isWebUniapp:0}}),D=`${m.head.seq}${E}`;return yield fe.channel.sendPacket(m,{requestId:D})})}({logoutReason:n})}_updateLoginStore(n){const{a2Key:g,tinyID:u,instanceID:E,authKey:m}=n;fe.store.set("login",{a2Key:g,tinyID:u,statusInstanceId:E,authKey:m,isLoggedIn:!0})}_sendOnlinePresenceRequest(){return pA(this,void 0,void 0,function*(){this._latestSendOnlinePresenceRequestTime=Date.now();try{yield function(){const n="im_open_status.wshello",g=fe.common.generateProtocolData({servcmd:n,data:{isWebUniapp:0}}),u=`${g.head.seq}${n}`;return fe.channel.sendPacket(g,{requestId:u})}()}catch(n){fe.ssoLog.warn("_sendOnlinePresenceRequest",` error:${n.message}`)}})}_isLoginIn(){var n;return((n=fe.store.get("login"))===null||n===void 0?void 0:n.isLoggedIn)===!0}_isLoginFrequencyExceeded(){return Date.now()-this._latestLoginAt<=15e3}_reset(){fe.common.taskScheduler.removeTask(Gg),this._helloInterval=120,this._latestSendOnlinePresenceRequestTime=0,this._latestLoginAt=0,this._customLoginInfo="",fe.store.clear("login"),fe.store.set("login",{isReady:!1}),fe.store.set("instance",{applicationID:0})}_dispose(){this._reset();const{notificationCenter:n}=fe;n.unSubscribeInnerEvent(so.RECONNECTED,this._reLogin,this),n.unSubscribeInnerEvent(so.DESTROY,this._dispose,this)}}const ER={login:{userID:{required:!0,rules:["string"],allowEmpty:!1},userSig:{required:!0,rules:["string"],allowEmpty:!1}}},YT={logout:!0};class vh{constructor(){this.loginAction=new uR,this.kickedOutHandler=new _u,this.loginAction.init(),this.kickedOutHandler.init(),jc({auth:YT,params:ER})}}var Kr,zu,VE;(function(s){s.CONV_C2C="C2C",s.CONV_GROUP="GROUP",s.CONV_TOPIC="TOPIC",s.CONV_SYSTEM="@TIM#SYSTEM"})(Kr||(Kr={})),function(s){s.MSG_PRIORITY_HIGH="High",s.MSG_PRIORITY_NORMAL="Normal",s.MSG_PRIORITY_LOW="Low",s.MSG_PRIORITY_LOWEST="Lowest"}(zu||(zu={})),function(s){s.MSG_TEXT="TIMTextElem",s.MSG_CUSTOM="TIMCustomElem",s.MSG_LOCATION="TIMLocationElem",s.MSG_FACE="TIMFaceElem",s.MSG_IMAGE="TIMImageElem",s.MSG_AUDIO="TIMSoundElem",s.MSG_FILE="TIMFileElem",s.MSG_VIDEO="TIMVideoFileElem",s.MSG_GRP_TIP="TIMGroupTipElem",s.MSG_GRP_SYS_NOTICE="TIMGroupSystemNoticeElem",s.MSG_MERGER="TIMRelayElem"}(VE||(VE={}));const kD={1:zu.MSG_PRIORITY_HIGH,2:zu.MSG_PRIORITY_NORMAL,3:zu.MSG_PRIORITY_LOW,4:zu.MSG_PRIORITY_LOWEST},LD=0,dR=1;var Zu;(function(s){s.IN="in",s.OUT="out"})(Zu||(Zu={}));const CR=2,ep={};function ru(s){if(!s)return 0;if(ep[s]===void 0){const n=new Date,g=`3${n.getHours()}`.slice(-2),u=`0${n.getMinutes()}`.slice(-2),E=`0${n.getSeconds()}`.slice(-2);ep[s]=parseInt([g,u,E,"0001"].join(""),10),console.log(`autoIncrementIndex start index:${ep[s]}`)}else ep[s]+=1;return ep[s]}class JE{constructor(n){this.ID="",this.random=0,this.sequence=0,this.nameCard="",this.isRead=!1,this.isPeerRead=!1,this.isDeleted=!1,this.isResend=!1,this.hasRiskContent=!1,this._onlineOnlyFlag=!1,this.atUserList=[],this._groupAtInfoList=[],this.isBroadcastMessage=!1,this.priority=zu.MSG_PRIORITY_NORMAL,this._relayFlag=!1;const{clientTime:g=fe.common.timeManager.getServerTimeSeconds()||0,senderTinyID:u,currentUser:E,needReadReceipt:m,isSupportExtension:D,customModerationConfigurationId:M,to:T,from:P,nick:W="",avatar:iA="",time:EA,messageControlInfo:RA,tinyID:kA,cloudCustomData:xA="",messageLifeTime:LA,messageVersion:SA=0,conversationType:OA,sequence:JA,checkResult:ne=0,isPlaceMessage:se=0,messageFlagBits:_i,receiverList:Ti,isSystemMessage:Lt=!1,status:Ni=Yr.SUCCESS,revokeReason:cs="",conversationSubType:Se,clientSequence:mt,protocol:UA="JSON",revokerInfo:oi={userID:"",nick:"",avatar:""},readReceiptInfo:_s={readCount:void 0,unreadCount:void 0,isPeerRead:void 0,timestamp:0},random:Gi,groupProfile:Fr,atUserList:xi,flow:gr,isRead:_t=!1,priority:Tt=zu.MSG_PRIORITY_NORMAL,onlineOnlyFlag:$u=!1,nameCard:ln="",quoteInfo:Bo}=n;var ll;this.clientTime=g,this.senderTinyID=u||kA,this.needReadReceipt=m===!0||m===1,this.isSupportExtension=D===!0||D===1,this._cmConfigID=M,this.to=T,this.nick=W,this.avatar=iA,this.protocol=UA,this.random=Gi===void 0?(ll=ll||99999999,Math.round(Math.random()*ll)):Gi,this.time=EA||Math.ceil(Date.now()/1e3),this._isExcludedFromLastMessage=!!RA?.excludedFromLastMessage,this._isExcludedFromUnreadCount=!!RA?.excludedFromUnreadCount,this.isModified=!!SA,this.cloudCustomData=xA,this.messageLifeTime=LA,this.from=P||null,this.sequence=JA||0,this.conversationType=OA||Kr.CONV_C2C,this.hasRiskContent=ne>1,this.version=SA,this.isPlaceMessage=se,this.isRevoked=se===2||_i===8,this.isSystemMessage=Lt,this.readReceiptInfo=_s,this.revokeReason=cs,this.revokerInfo=oi,this._receiverList=Ti,this.conversationSubType=Se,this.revoker=oi?.revoker||"",this.clientSequence=mt||JA||0,this.status=Ni,this.atUserList=xi||[],this.flow=gr,this.isRead=_t,this.priority=Tt,this._onlineOnlyFlag=$u,this.nameCard=ln,this.quoteInfo=Bo,this.reInitialize(E),this._initC2CReadReceiptInfo(n),this._extractGroupInfo(Fr)}getElements(){return this._elements}isOnlineMessage(){return this.messageLifeTime===0}setElement(n){Array.isArray(n)?this._elements=n:this._elements=[n],this._updatePayloadAndType()}transformElementsToServerFormat(){return this._elements?Array.isArray(this._elements)?this._elements.map(n=>n.transformToServerFormat()):this._elements.transformToServerFormat():null}setRelayFlag(n){this._relayFlag=n}validateBeforeSend(){var n,g,u;return this._relayFlag?{isValid:!0}:((n=this._elements)===null||n===void 0?void 0:n.length)>0?(u=(g=this._elements[0])===null||g===void 0?void 0:g.validateBeforeSend)===null||u===void 0?void 0:u.call(g):{isValid:!1}}_updatePayloadAndType(){this._elements[0]&&(this.payload=this._elements[0].content,this.type=this._elements[0].type)}_initC2CReadReceiptInfo(n){const{readReceiptSentByPeer:g,timestamp:u=0}=n;this.conversationType===Kr.CONV_C2C&&this.needReadReceipt===!0&&(this.readReceiptInfo.isPeerRead=g===1,this.readReceiptInfo.timestamp=u)}_extractGroupInfo(n){if(!n)return;const{From_AccountNick:g,From_AccountHeadurl:u,MsgFrom_AccountExtraInfo:E,GroupType:m}=n,{NameCard:D}=E||{};typeof g=="string"&&(this.nick=g),typeof u=="string"&&(this.avatar=u),typeof D=="string"&&(this.nameCard=D),this.conversationSubType=m}reInitialize(n){n===this.from&&(this.isRead=!0),this._initSequence(n),this._concatConversationID(n),this.generateMessageID()}_concatConversationID(n){let g="";const u=this.conversationType;u!==Kr.CONV_SYSTEM?(g=u===Kr.CONV_C2C?n===this.from?this.to:this.from:this.to,this.conversationID=g?`${u}${g}`:null):this.conversationID=Kr.CONV_SYSTEM}_initSequence(n){this.clientSequence===0&&n&&(this.clientSequence=ru(n)),this.sequence===0&&this.conversationType===Kr.CONV_C2C&&(this.sequence=this.clientSequence)}generateMessageID(){this.from===Kr.CONV_SYSTEM&&(this.senderTinyID="144115198244471703"),this.ID=`${this.senderTinyID}-${this.clientTime}-${this.random}`}setIsRead(n){this.isRead=n}}class _d{static parseServerPushElement(n){const{MsgContent:g={}}=n,{Data:u,Ext:E,Desc:m}=g;return new _d({data:u,description:m,extension:E})}constructor(n){this.type=VE.MSG_CUSTOM;const{data:g="",description:u="",extension:E=""}=n;this.content={data:g,description:u,extension:E}}transformToServerFormat(n){const{isMergerMessage:g=!1}=n||{},u=g?this.payload:this.content,{data:E,description:m,extension:D}=u;return{MsgType:this.type,MsgContent:{Data:E,Ext:D,Desc:m}}}validateBeforeSend(){const{isEmpty:n}=fe.utils,g=[this.content.data,this.content.description,this.content.extension].some(u=>!n(u));return{isValid:g,error:g?null:{message:"content can not be empty"}}}}class Td{static parseServerPushElement(n){const{MsgContent:g={Text:""}}=n,{Text:u}=g;return new Td({text:u})}constructor(n){this.type=wg.MSG_TEXT,this.content={text:n.text||""}}validateBeforeSend(){var n,g;return((g=(n=this.content)===null||n===void 0?void 0:n.text)===null||g===void 0?void 0:g.length)>0?{isValid:!0}:{isValid:!1,error:{message:"content can not be empty"}}}transformToServerFormat(n){const{isMergerMessage:g=!1}=n||{},u=g?this.payload:this.content,{text:E}=u;return{MsgType:this.type,MsgContent:{Text:E}}}}var jm=new class{constructor(){this._elementClassMap={[VE.MSG_CUSTOM]:_d,[VE.MSG_TEXT]:Td}}init(){Cr.getInstance().registerApi({apiName:"createCustomMessage",context:this}),Cr.getInstance().registerApi({apiName:"createTextMessage",context:this})}registerElementClass(s,n){var g;(g=n).prototype!==void 0&&"constructor"in g.prototype&&(this._elementClassMap[s]=n)}getElementClass(s){return this._elementClassMap[s]}createMessage(s){const{from:n,flow:g=Zu.OUT}=s,{userId:u}=fe.store.get("login")||{};this._isSendByCurrentInstance({from:n,flow:g,currentUser:u})?this._updateWithSenderInfo(s):this._isMultiEndpointSyncMessage({from:n,flow:g,currentUser:u})&&(s.flow=Zu.OUT);const E=Object.assign(Object.assign({},s),{currentUser:u});return new JE(E)}createCustomMessage(s){const n=Ar(),g=this.createMessage(Object.assign(Object.assign({},s),{from:n})),u=this._elementClassMap[VE.MSG_CUSTOM];if(!g)return null;if(u){const E=new u(s.payload);g.setElement(E)}return g}createTextMessage(s){var n;if(!s)return null;const g=typeof s.payload=="string"?s.payload:((n=s?.payload)===null||n===void 0?void 0:n.text)||"",u=new Td({text:g}),E=Ar(),m=fe.message.messageFactory.createMessage(Object.assign(Object.assign({},s),{from:E}));return m.setElement(u),m}_updateWithSenderInfo(s){var n,g;const{nick:u,avatar:E,conversationType:m,to:D}=s,{userId:M,tinyID:T}=fe.store.get("login")||{},P=rc.getUserProfile(M);return s.nick=u||P?.nick||"",s.avatar=E||P?.avatar||"",s.tinyID=s.tinyID||T||"",s.from=M,s.status=Yr.UNSENT,s.flow=Zu.OUT,m===ka.CONV_GROUP&&(s.nameCard=(g=(n=$Q.getGroup(D))===null||n===void 0?void 0:n.selfInfo)===null||g===void 0?void 0:g.nameCard),s}_isMultiEndpointSyncMessage(s){const{from:n,flow:g,currentUser:u}=s;return n===u&&g===Zu.IN}_isSendByCurrentInstance(s){const{from:n,flow:g,currentUser:u}=s;return n===u&&g===Zu.OUT}};const hR={PushFlag:0,Title:"",Desc:"",Ext:"",ApnsInfo:{Sound:"",BadgeMode:0,IsVoipPush:void 0,Image:"",InterruptionLevel:"active",ContentAvailable:0},AndroidInfo:{Sound:"",XiaoMiChannelID:"",OPPOChannelID:"",GoogleChannelID:"",VIVOClassification:1,VIVOCategory:"",HuaWeiCategory:"",OPPOCategory:"",HuaWeiImage:"",HonorImage:"",GoogleImage:"",HonorImportance:"",MeizuNotifyType:void 0}},Nd={HonorImportance:{range:["LOW","NORMAL"],defaultValue:void 0},MeizuNotifyType:{range:[0,1],defaultValue:void 0}},UD={enableIOSBackgroundNotification:{range:[!0,!1],defaultValue:!1},interruptionLevel:{range:["passive","active","time-sensitive","critical"],defaultValue:"active"}};function BR(s,n){return Object.keys(n).forEach(g=>{const{range:u,defaultValue:E}=n[g];s[g]=u.includes(s[g])?s[g]:E}),s}function tp(s){const n=s.lastIndexOf(".");return n===-1?s:s.slice(0,n)}function QR(s){const{androidInfo:n={},androidOPPOChannelID:g=""}=s,u=n.OPPOChannelID||g,E=BR(n,Nd),{sound:m="",FCMChannelID:D=""}=E,M=Do(E,["sound","FCMChannelID"]);return Object.assign(Object.assign({},M),{Sound:tp(m),OPPOChannelID:u,GoogleChannelID:D})}function pR(s){const{apnsInfo:n={},ignoreIOSBadge:g=!1,disableVoipPush:u}=s,E=BR(n,UD),{ignoreIOSBadge:m,disableVoipPush:D,enableIOSBackgroundNotification:M}=E,T=Do(E,["ignoreIOSBadge","disableVoipPush","enableIOSBackgroundNotification"]),P=m===!0||g===!0?1:0;let W;return r(u)||(W=u===!1?1:0),r(D)||(W=D===!1?1:0),Object.assign(Object.assign({},T),{BadgeMode:P,IsVoipPush:W,ContentAvailable:M?1:0})}function FD(s){return fe.utils.isPlainObject(s)?{PushFlag:s.disablePush===!0?1:0,Title:s.title||"",Desc:s.description||"",Ext:s.extension||"",ApnsInfo:pR(s),AndroidInfo:QR(s)}:hR}function Wm(s){const{From_AccountHeadurl:n,From_AccountNick:g,IsNeedReadReceipt:u,IsPeerRead:E,IsSyncMsg:m,MsgBody:D,MsgClientTime:M,MsgLifeTime:T,MsgRandom:P,MsgSeq:W,MsgTimeStamp:iA,SendMsgControl:EA,SupportMessageExtension:RA,TinyId:kA,MsgCheckResult:xA,CloudCustomData:LA,MsgVersion:SA,MsgFlagBits:OA,RevokerInfo:JA,InnerSdkCustomData:ne}=s;let se,{From_Account:_i,To_Account:Ti}=s;if(m===1){const Lt=Ti;Ti=_i,_i=Lt}if(JA){const{Reason:Lt,Revoker_Account:Ni,Revoker_FromUin:cs}=JA;se={reason:Lt,revoker:Ni,revokerFromUin:cs,userID:Ni}}return{from:_i,avatar:n,nick:g,needReadReceipt:u===1,isSyncMessage:m,clientTime:M,messageLifeTime:T,random:P,sequence:W,time:iA,messageControlInfo:{excludedFromLastMessage:EA?.NoLastMsg===1,excludedFromUnreadCount:EA?.NoUnread===1},isSupportExtension:RA,to:Ti,tinyID:kA,checkResult:xA,cloudCustomData:LA,revokerInfo:se,messageVersion:SA,messageFlagBits:OA,readReceiptSentByPeer:E,elements:vC(D),onlineOnlyFlag:T===0,quoteInfo:ip(ne)}}function zm(s){const{From_Account:n,MsgBody:g,MsgClientTime:u,MsgRandom:E,MsgSeq:m,MsgTimeStamp:D,To_Account:M,MsgVersion:T,CloudCustomData:P,MsgCheckResult:W}=s;return{from:n,clientTime:u,random:E,sequence:m,time:D,to:M,elements:vC(g),messageVersion:T,cloudCustomData:P,checkResult:W}}function OD(s){const{ClientSeq:n,From_Account:g,GroupInfo:u,MsgBody:E,MsgClientTime:m,MsgRandom:D,MsgSeq:M,MsgTimeStamp:T,SendMsgControl:P,SupportMessageExtension:W,TinyId:iA,CloudCustomData:EA,MsgVersion:RA,MsgCheckResult:kA,NeedReadReceipt:xA,IsPlaceMsg:LA,RevokerInfo:SA,GroupAtInfo:OA,OnlineOnlyFlag:JA,InnerSdkCustomData:ne}=s;let se,_i=zu.MSG_PRIORITY_NORMAL;if(Object.keys(kD).includes(String(s.MsgPriority))&&(_i=kD[s.MsgPriority]),SA){const{Reason:Lt,Revoker_Account:Ni,Revoker_FromUin:cs}=SA;se={reason:Lt,revoker:Ni,revokerFromUin:cs,userID:Ni}}const Ti=function(Lt){const Ni=[];return Array.isArray(Lt)&&Lt.forEach(cs=>{cs.GroupAtAllFlag===LD?Ni.push(cs.GroupAt_Account):cs.GroupAtAllFlag===dR&&Ni.push(Lo.MSG_AT_ALL)}),Ni}(OA);return{clientSequence:n,from:g,groupProfile:u,clientTime:m,priority:_i,random:D,sequence:M,time:T,messageControlInfo:{excludedFromLastMessage:P?.NoLastMsg===1,excludedFromUnreadCount:P?.NoUnread===1},isSupportExtension:W,tinyID:iA,cloudCustomData:EA,messageVersion:RA,checkResult:kA,needReadReceipt:xA,isPlaceMessage:LA,revokerInfo:se,atUserList:Ti,elements:vC(E),to:VT(s),onlineOnlyFlag:JA===1,quoteInfo:ip(ne)}}function VT(s){const{utils:{isEmpty:n},constants:{IS_TOPIC_MESSAGE:g}}=fe,{ToGroupId:u,GroupInfo:{MillionGroupFlag:E=0,TopicId:m}={}}=s;return E!==g||n(m)?u:m}function vC(s){if(!s)return null;if(Array.isArray(s))return s.map(g=>{const u=fe.message.messageFactory.getElementClass(g.MsgType);return u?.parseServerPushElement(g)});const n=fe.message.messageFactory.getElementClass(s.MsgType);return n?.parseServerPushElement(s)}function PD(s){const{From_Account:n,MsgBody:g,MsgClientTime:u,MsgRandom:E,MsgSeq:m,MsgTimeStamp:D,GroupId:M,TopicId:T,MsgVersion:P,CloudCustomData:W,MsgCheckResult:iA}=s;return{from:n,clientTime:u,random:E,sequence:m,time:D,groupID:M,topicID:T,elements:vC(g),messageVersion:P,cloudCustomData:W,checkResult:iA}}function ip(s){const{utils:{isString:n,safeStringify:g},ssoLog:u}=fe;if(!n(s))return null;try{const{messageID:E,messageTime:m,messageSequence:D}=JSON.parse(s).businessQuote;return{msgID:E,messageTime:m,messageSequence:D}}catch(E){return u.debug("_parseServerQuoteInfo",g(E)),null}}function op({conversationUpdateFields:s,message:n}){const{conversationID:g,conversationType:u,conversationSubType:E,flow:m,_isExcludedFromUnreadCount:D,_isExcludedFromLastMessage:M}=n,T=M?"":ZQ(n),P=!D&&m===Zu.IN;s.has(g)?(s.get(g).lastMessage=T,P&&s.get(g).unreadCount++):s.set(g,{conversationID:g,type:u,subType:E,unreadCount:P?1:0,lastMessage:T})}function MB(s){return s.filter(n=>{const g=!Rs(n?._elements),u=n?.isPlaceMessage===1;return g||fe.ssoLog.error("emptyMessageBody",`from:${n.from} to:${n.to} sequence:${n.sequence}`),g&&!u})}function vB(s){const{messageDataHandler:n}=fe.message;return!n.isInMessageList(s)&&!n.isMessageSentByCurrentInstance(s)}var mR=Object.freeze({__proto__:null,autoIncrementIndex:ru,createAndroidPushInfo:QR,createApnsPushInfo:pR,createOfflinePushInfo:FD,filterValidMessages:MB,getAndroidSoundName:tp,parseServerGroupMessage:OD,parseServerPushC2CModifyMessage:zm,parseServerPushGroupModifyMessage:PD,parseServerPushMessage:Wm,parseServerPushMessageElement:vC,shouldStoreMessage:vB,updateConversationFields:op});const{isPlainObject:fR}=fe.utils;function sp(s,n={}){const{onlineUserOnly:g,messageControlInfo:u}=n;let{offlinePushInfo:E}=n;s.conversationType===Kr.CONV_C2C&&g===!0&&(E?E.disablePush=!0:E={disablePush:!0});let m="";typeof s.cloudCustomData=="string"&&s.cloudCustomData.length>0&&(m=s.cloudCustomData);const D=[];if(u&&fR(u)){const{excludedFromUnreadCount:M,excludedFromLastMessage:T,excludedFromContentModeration:P}=u;M===!0&&D.push("NoUnread"),T===!0&&D.push("NoLastMsg"),P===!0&&D.push("NoMsgCheck")}return{onlineUserOnly:g,cloudCustomData:m,messageControlInfo:D,offlinePushInfo:E}}function xD(s){const{webhookInfo:{disableCloudMessagePreHook:n=!1,disableCloudMessagePostHook:g=!1}={}}=s||{};if(!n&&!g)return;const u=[];return n&&u.push("ForbidBeforeSendMsgCallback"),g&&u.push("ForbidAfterSendMsgCallback"),u}function Rh(s,n){return pA(this,void 0,void 0,function*(){const g=s.conversationType===Kr.CONV_GROUP?function(E,m){var D;const M=sp(E,m),{onlineUserOnly:T,cloudCustomData:P,messageControlInfo:W,offlinePushInfo:iA}=M,EA=JSON.parse(JSON.stringify(E.transformElementsToServerFormat()));let RA;return h(E._receiverList)&&E._receiverList.length>0&&(RA=E._receiverList,E._receiverList.length>50&&(RA=E._receiverList.slice(0,50),console.warn("ReceiverListLimit"))),{servcmd:"group_open_http_svc.send_group_msg",data:{From_Account:(D=fe.store.get("login"))===null||D===void 0?void 0:D.userId,GroupId:E.to,MsgBody:EA,CloudCustomData:P,Random:E.random,MsgPriority:E.priority,ClientSeq:E.clientSequence,GroupAtInfo:E._groupAtInfoList,OnlineOnlyFlag:T?1:0,MsgClientTime:E.clientTime,OfflinePushInfo:FD(iA),SendMsgControl:T?void 0:W,NeedReadReceipt:E.needReadReceipt===!0?1:0,To_Account:RA,SupportMessageExtension:E.isSupportExtension===!0?1:0,IsRelayMsg:E._relayFlag===!0?1:0,CustomModerationConfigID:E._cmConfigID,ForbidCallbackControl:xD(m),InnerSdkCustomData:wB(E)}}}(s,n):function(E,m){var D;const M=sp(E,m),{onlineUserOnly:T,cloudCustomData:P,messageControlInfo:W,offlinePushInfo:iA}=M,EA=T===!0?0:void 0,RA=JSON.parse(JSON.stringify(E.transformElementsToServerFormat()));return{servcmd:"openim.sendmsg",data:{From_Account:(D=fe.store.get("login"))===null||D===void 0?void 0:D.userId,To_Account:E.to,MsgBody:RA,CloudCustomData:P,MsgSeq:E.sequence,MsgRandom:E.random,MsgLifeTime:EA,From_AccountNick:E.nick,From_AccountHeadurl:E.avatar,SendMsgControl:EA!==0?W:void 0,MsgClientTime:E.clientTime,IsNeedReadReceipt:E.needReadReceipt===!0?1:0,SupportMessageExtension:E.isSupportExtension===!0?1:0,IsRelayMsg:E._relayFlag===!0?1:0,CustomModerationConfigID:E._cmConfigID,OfflinePushInfo:FD(iA),ForbidCallbackControl:xD(m),InnerSdkCustomData:wB(E)}}}(s,n),u=yield gg(g);return u?{time:u.MsgTime,messageDropReason:u.MsgDropReason,sequence:u.MsgSeq}:null})}function wh(s){return pA(this,void 0,void 0,function*(){const{from:n,to:g,version:u=0,sequence:E,random:m,time:D,type:M,cloudCustomData:T}=s,P={From_Account:n,To_Account:g,MsgVersion:u,MsgSeq:E,MsgRandom:m,MsgTime:D,MsgType:M,MsgBody:s.transformElementsToServerFormat(),CloudCustomData:T},W=yield gg({servcmd:"openim.modify_c2c_msg",data:P});if(W){const{MsgBody:iA,MsgVersion:EA,CloudCustomData:RA}=W;return{elements:vC(iA),messageVersion:EA,cloudCustomData:RA}}})}function RB(s){return pA(this,void 0,void 0,function*(){const{to:n,version:g=0,sequence:u,cloudCustomData:E}=s,m={GroupId:n,MsgVersion:g,MsgSeq:u,MsgBody:s.transformElementsToServerFormat(),CloudCustomData:E},D=yield gg({servcmd:"openim.modify_group_msg",data:m});if(D){const{MsgBody:M,MsgVersion:T,CloudCustomData:P}=D;return{elements:vC(M),messageVersion:T,cloudCustomData:P}}})}function _h(s){return pA(this,void 0,void 0,function*(){const{groupID:n,count:g,messageSequence:u,messageSequenceList:E,getType:m}=s,D={GroupId:n,ReqMsgNumber:g,WithRecalledMsg:1,Version:1,GetType:m};return u&&(D.ReqMsgSeq=u),h(E)&&E.length>0&&(D.ReqMsgSeqList=E),yield gg({servcmd:"group_open_http_svc.group_msg_get",data:D})})}function Zm(s){return pA(this,void 0,void 0,function*(){const{peerAccount:n,count:g,lastMessageTime:u,messageKey:E,direction:m}=s;return gg({servcmd:"openim.getroammsg",data:{Peer_Account:n,MaxCnt:g,WithRecalledMsg:1,LastMsgTime:u,MsgKey:E,GetDirection:m}})})}function wB(s){if(fe.utils.isObject(s.quoteInfo)){const{msgID:n,messageSequence:g,messageTime:u}=s.quoteInfo;return JSON.stringify({businessQuote:{messageID:n,messageSequence:g,messageTime:u}})}}var YD=Object.freeze({__proto__:null,createMessagePackOptions:sp,generateForbidCallbackControl:xD,getC2CRoamingMessagesByAnchor:Zm,getGroupRoamingMessagesByAnchor:_h,getRoamingMessages:function(s){return pA(this,void 0,void 0,function*(){const{peerAccount:n,count:g,lastMessageTime:u,messageKey:E}=s;return(yield gg({servcmd:"openim.getroammsg",data:{Peer_Account:n,MaxCnt:g||15,LastMsgTime:u||0,MsgKey:E,GetDirection:0,WithRecalledMsg:1}}))||[]})},modifyC2CMessage:wh,modifyGroupMessage:RB,sendMessage:Rh});const{isPlainObject:JT}=fe.utils,{MSG_AUDIO:VD,MSG_FILE:JD,MSG_IMAGE:yR,MSG_VIDEO:DR,MSG_MERGER:SR}=Lo;class Xm{constructor(){this._sendProtocolMap=new Map}init(){Cr.getInstance().registerApi({apiName:"sendMessage",context:this,matcher:n=>![VD,JD,yR,DR,SR].includes(n[0].type)})}registerSendProtocol(n,g,u){this._sendProtocolMap.set(n,g.bind(u))}sendMessage(n,g){return pA(this,void 0,void 0,function*(){const{TOTAL_COUNT:u,SEND_COST:E,SUCCESS_COUNT:m,FAILED_COUNT:D}=rr;if(!(n instanceof JE))throw new gs({code:Ea.MSG_INSTANCE_REQUIRED});const M=n.validateBeforeSend();if(!M.isValid){const{code:W,message:iA=""}=M.error||{};throw new gs({code:W,message:iA})}this._reportMessageSendQuality({name:u,message:n});let T=!1;const{messageDataHandler:P}=fe.message||{};try{const{messageControlInfo:W}=g||{};let iA=null;P.addRandomOfSentMessage(n.random);const EA=Date.now(),RA=this._getSendProtocol(n);if(n.conversationType===Kr.CONV_C2C?(T=g?.onlineUserOnly===!0,iA=yield RA(n,g)):n.conversationType===Kr.CONV_GROUP&&(yield this._validateBeforeSendGroupMessage(n),iA=yield RA(n,g)),iA){const{messageDropReason:kA,sequence:xA,time:LA}=iA;if(this._updateNickAndAvatarOfSentMessageByMe(n),kA&&this._logRateLimitInfo(n,xA,kA),this._reportMessageSendQuality({name:m,message:n}),this._reportMessageSendQuality({name:E,message:n,startTs:EA}),n.isResend===!0){const SA=P.findMessage(n.ID);SA&&(fe.ssoLog.debug("sendMessage",`sendMessage resend ok. ID:${SA.ID}`),P.deleteConversationMessage(SA))}return n.status=Yr.SUCCESS,n.time=LA,n.conversationType===Kr.CONV_GROUP&&(n.sequence=xA),T?n._onlineOnlyFlag=!0:(P.storeConversationMessage(n),this._applySentMessageControlInfo(n,W),this._emitOnlineMessageSent(n)),n.type===wg.MSG_STREAM?{code:0,data:{message:n,streamMessageID:iA.streamMessageID}}:{code:0,data:{message:n}}}}catch(W){n.status=Yr.FAIL,P.removeRandomOfSentMessage(n.random);let{errorCode:iA}=W||{},EA=W?.errorInfo||W?.message||"";throw this._hasRiskContent(iA)&&(n.hasRiskContent=!0),T||this._isRejectedByRestApi(iA)||P.storeConversationMessage(n),this._reportMessageSendQuality({name:D,message:n,error:W}),new gs({code:iA,message:EA,data:{message:n},moreMessage:`type:${n.type} from:${n.from} to:${n.to}`})}})}_hasRiskContent(n){return n===80001||n===80004}_isRejectedByRestApi(n){return n>=10100&&n<=10200||n>=120001&&n<=13e4}_emitOnlineMessageSent(n){const g=n._isExcludedFromLastMessage?"":n,{conversationID:u,conversationType:E}=n,m=Wc(u)?so.TOPIC_NEW_MESSAGE:so.NEW_MESSAGE;fe.notificationCenter.emitInnerEvent(m,{result:{conversationUpdateFieldList:[{conversationID:u,type:E,message:n,lastMessage:g,unreadCount:0}]}})}_applySentMessageControlInfo(n,g){g&&JT(g)&&(g.excludedFromLastMessage===!0&&(n._isExcludedFromLastMessage=!0),g.excludedFromUnreadCount===!0&&(n._isExcludedFromUnreadCount=!0))}_logRateLimitInfo(n,g,u){const E=`from:${n.from} to:${n.to} sequence:${g} messageDropReason:${u}`;fe.ssoLog.warn("messageDropReason",E)}_updateNickAndAvatarOfSentMessageByMe(n){const{messageDataHandler:g}=fe.message||{};let u=!1;const{conversationID:E}=n,m=g.getLatestMsgSentByMe(E);if(m){const{nick:D,avatar:M}=m;D===n.nick&&M===n.avatar||(u=!0),u&&g.updateNickAndAvatarOfSentMessage({conversationID:E,latestNick:n.nick,latestAvatar:n.avatar,isSentByMe:!0})}}_validateBeforeSendGroupMessage(n){return pA(this,void 0,void 0,function*(){var g,u,E;const{to:m,from:D}=n;let M=m,T=$Q.getGroup(M);if(Xr({groupID:M})&&T?.isSupportTopic)throw new gs({code:Ea.MSG_SEND_GRP_WITH_TOPIC_FAIL});if(Wc(m)&&([M]=m.split(sa.TOPIC),T=$Q.getGroup(M)),!T&&typeof((g=Cr.getInstance().getApiMap())===null||g===void 0?void 0:g.getGroupProfile)=="function"){const P=yield Cr.getInstance().getApiMap().getGroupProfile({groupID:M});if(((E=(u=P?.data)===null||u===void 0?void 0:u.group)===null||E===void 0?void 0:E.type)===Lo.GRP_AVCHATROOM){const W=rs({code:Ea.MSG_SEND_FAIL_NOT_IN_AV,replacement1:D,replacement2:M});throw new gs({code:Ea.MSG_SEND_FAIL_NOT_IN_AV,message:W})}}return!0})}_reportMessageSendQuality(n){fe.notificationCenter.emitInnerEvent(so.QUALITY_STAT,{label:gI.MESSAGE_SEND_SUCCESS_RATE,data:n})}_getSendProtocol(n){return this._sendProtocolMap.get(n.type)||Rh}}var HT=new class{constructor(){this._sparseMessagesByConversation=new Map,this._latestMessageSentByPeerMap=new Map,this._latestMessageSentByMeMap=new Map,this._randomOfSentMessageList=new Set}init(){fe.notificationCenter.subscribeInnerEvent(so.LOGOUT,this._reset,this),fe.notificationCenter.subscribeInnerEvent(so.DESTROY,this._dispose,this)}get _messagesByConversation(){return Ap.getMessages()}storeConversationMessage(s,n=!1){if(an)return!0;const{conversationID:g}=s;if(!g||(this._messagesByConversation.has(g)||this._messagesByConversation.set(g,new Map),this._shouldSkipStoreMessage(s,n)))return!1;const u=this._getUniqueIdOfMessage(s);return this._messagesByConversation.get(g).set(u,s),this._updateLatestMessageMap(s),!0}_updateLatestMessageMap(s){const{conversationID:n}=s;s.flow==="out"?this._setLatestMsgSentByMe(n,s):n.startsWith("C2C")&&this._setLatestMsgSentByPeer(n,s)}_shouldSkipStoreMessage(s,n){const g=this._getUniqueIdOfMessage(s),u=this._messagesByConversation.get(s.conversationID);if(u?.has(g)){const E=u?.get(g);if(!n||E?.isModified===!0)return!0}return!1}deleteConversationMessage(s){var n;const{conversationID:g=""}=s,u=this._getUniqueIdOfMessage(s);this._messagesByConversation.has(g)&&((n=this._messagesByConversation.get(g))===null||n===void 0||n.delete(u))}modifyConversationMessage(s,n){var g;if(!this._messagesByConversation.has(s)&&!this._sparseMessagesByConversation.has(s))return{isUpdated:!1,message:null};const u=this._getUniqueIdOfMessage(n),E=this._getMessageFromLocalMessage(s,u);if(E){const{messageVersion:m,elements:D,cloudCustomData:M,checkResult:T=0}=n,P=T>1;if(fe.ssoLog.debug("modifyConversationMessage",`conversationToMessageMap modifyConversationMessage localVersion:${E.version} remoteVersion:${m}`),E.versionE.ID===s)||null,n)break;if(!n){const u=Array.from(this._sparseMessagesByConversation.values());for(const E of u)if(n=E.get(s)||null,n)break}return n}deleteConversationMessageList(s){this._messagesByConversation.has(s)&&(this._messagesByConversation.delete(s),this._latestMessageSentByMeMap.delete(s),this._latestMessageSentByPeerMap.delete(s)),this._sparseMessagesByConversation.has(s)&&this._sparseMessagesByConversation.delete(s)}revokeMessage({conversationID:s,sequence:n,random:g,revoker:u}){const E=this._messagesByConversation.get(s);let m=null;if(E){const D=Array.from(E.values());if(m=this._findMessageBySequenceAndRandom({messageList:D,random:g,sequence:n}),m){const M=this._getUniqueIdOfMessage(m);return Ap.updateMessage(s,[M],{isRevoked:!0,revoker:u,operation:yc.revoke}),m}}if(this._sparseMessagesByConversation.has(s)){const D=Array.from(this._sparseMessagesByConversation.get(s).values());if(m=this._findMessageBySequenceAndRandom({messageList:D,random:g,sequence:n}),m)return m.isRevoked=!0,m.revoker=u,m}}_findMessageBySequenceAndRandom({messageList:s,sequence:n,random:g}){for(let u=0;u0){const D=new Map([...E,...m.entries()]);this._messagesByConversation.set(g,D),this._updateLatestMessageSentByMe(g),this._updateLatestMessageSentByPeer(g)}return u}storeSparseMessageList(s){if(s.length===0)return;const{conversationID:n}=s[0],g=s.length;this._sparseMessagesByConversation.has(n)||this._sparseMessagesByConversation.set(n,new Map);const u=this._sparseMessagesByConversation.get(n);for(let E=0;E=0;u--)if(g[u].flow==="out"){this._setLatestMsgSentByMe(s,g[u]);break}}}_updateLatestMessageSentByPeer(s){var n;const g=Array.from(((n=this._messagesByConversation.get(s))===null||n===void 0?void 0:n.values())||[]);if(g.length!==0&&s.startsWith("C2C")){for(let u=g.length-1;u>=0;u--)if(g[u].flow==="in"){this._setLatestMsgSentByPeer(s,g[u]);break}}}_getUniqueIdOfMessage(s){const{from:n,to:g,random:u,sequence:E,time:m}=s;return`${n}-${g}-${u}-${E}-${m}`}_setLatestMsgSentByPeer(s,n){this._latestMessageSentByPeerMap.set(s,n)}_setLatestMsgSentByMe(s,n){this._latestMessageSentByMeMap.set(s,n)}getLatestMsgSentByPeer(s){return this._latestMessageSentByPeerMap.get(s)}getLatestMsgSentByMe(s){return this._latestMessageSentByMeMap.get(s)}addRandomOfSentMessage(s){this._randomOfSentMessageList.add(s)}removeRandomOfSentMessage(s){this._randomOfSentMessageList.delete(s)}updateNickAndAvatarOfSentMessage(s){const{conversationID:n="",latestAvatar:g,latestNick:u,isSentByMe:E=!0}=s,m=this._messagesByConversation.get(n);if(!m)return;const D=Array.from(m.values()),M=E?"out":"in";D.forEach(T=>{const{nick:P,avatar:W,flow:iA}=T;iA===M&&(P!==u&&(T.nick=u),W!==g&&(T.avatar=g))})}isInMessageList(s){var n;const{conversationID:g}=s;if(!g||!this._messagesByConversation.has(g))return!1;const u=this._getUniqueIdOfMessage(s);return(n=this._messagesByConversation.get(g))===null||n===void 0?void 0:n.has(u)}isMessageSentByCurrentInstance(s){const{random:n}=s;return this._randomOfSentMessageList.has(n)}getContinuousMessagesByConversation(){return this._messagesByConversation}getLocalMessageList(s){const n=this._messagesByConversation.get(s);return n?[...n.values()]:[]}getSparseMessageList(s){const n=this._sparseMessagesByConversation.get(s);return n?[...n.values()]:[]}_reset(){this._messagesByConversation.clear(),this._latestMessageSentByPeerMap.clear(),this._latestMessageSentByMeMap.clear(),this._randomOfSentMessageList.clear()}_dispose(){this._reset(),fe.notificationCenter.unSubscribeInnerEvent(so.LOGOUT,this._reset,this),fe.notificationCenter.unSubscribeInnerEvent(so.DESTROY,this._dispose,this)}};function $m(s,n){const g=SB.getConversation(s);if(g?.lastMessage){const{lastMessage:u}=g,{lastTime:E,lastSequence:m,version:D}=u,{time:M,sequence:T,messageVersion:P,elements:W,cloudCustomData:iA}=n;E===M&&m===T&&D!==P&&(u.type=W[0].type,u.payload=W[0].content,u.messageForShow=zc(u.type,u.payload),u.cloudCustomData=iA,u.version=P,SB.updateConversation(s,{lastMessage:u}))}}class MR{init(){Cr.getInstance().registerApi({apiName:"modifyMessage",context:this})}modifyMessage(n){return pA(this,void 0,void 0,function*(){const{to:g,payload:u,sequence:E,conversationType:m,random:D,time:M,from:T,type:P}=n;if(this._canModifyMessageElement(P)){const W=n?._elements||[];W.length>=1&&(W[0].type=P,W[0].content=u)}try{let W=null,iA=null;if(m===Kr.CONV_C2C?W=yield wh(n):m===Kr.CONV_GROUP&&(W=yield RB(n)),W){let EA=`${m}${g}`;return g===Ar()&&m===Kr.CONV_C2C&&(EA=`${m}${T}`),iA={conversationType:m,from:T,to:g,time:M,random:D,sequence:E,elements:W?.elements,cloudCustomData:W?.cloudCustomData,messageVersion:W?.messageVersion,conversationID:EA},this._handleModifyMessageSuccess(iA),{code:0,data:{message:n},successLog:{message:`to:${g}`}}}}catch(W){const{errorCode:iA}=W||{};throw new gs({functionName:"modifyMessage",code:iA,moreMessage:`to:${g}`})}})}_handleModifyMessageSuccess(n){const{conversationID:g}=n,{isUpdated:u,message:E}=fe.message.messageDataHandler.modifyConversationMessage(g,n);u===!0&&fe.notificationCenter.emitOuterEvent(Dr.MESSAGE_MODIFIED,{name:Dr.MESSAGE_MODIFIED,data:[E]}),fe.notificationCenter.emitInnerEvent(so.MESSAGE_MODIFIED,{conversationID:g,message:E}),$m(g,n)}_canModifyMessageElement(n){return[VE.MSG_TEXT,VE.MSG_CUSTOM,VE.MSG_LOCATION,VE.MSG_FACE].includes(n)}}class Th{init(){const{notificationCenter:n}=fe,{InnerEventSubType:g}=n;ws.getInstance().registerWorkflowStep(xt.RECEIVE_C2C_NEW_MESSAGE,qt.HANDLE_C2C_NEW_MESSAGE,this._handleC2CMessagePush,this),ws.getInstance().registerWorkflowStep(xt.RECEIVE_C2C_NEW_MESSAGE,qt.EMIT_C2C_MESSAGE_EVENT,this._emitMessageEventsAfterReceiveNewMessage,this),ws.getInstance().registerWorkflowStep(xt.SYNC_SERVER_INFO_AFTER_RE_ONLINE,qt.EMIT_C2C_MESSAGE_EVENT,this._emitMessageEventsAfterSyncUnreadMessage,this),n.subscribeInnerEvent(so.MESSAGE_PUSH,g.C2C_REALTIME_MESSAGE,this._executeReceiverNewMessageWorkFlow,this),n.subscribeInnerEvent(so.MESSAGE_PUSH,g.C2C_MESSAGE_MODIFIED,this._handleC2CMessageModify,this),n.subscribeInnerEvent(so.DESTROY,this._dispose,this)}_executeReceiverNewMessageWorkFlow(n){ws.getInstance().executeWorkflow(xt.RECEIVE_C2C_NEW_MESSAGE,n)}_handleC2CMessagePush(n){const g=n.data||{},{messageDataHandler:u}=fe.message||{},E=[],m=new Map;return g.C2cMsgArray.forEach(D=>{const M=this._generateC2CMessage(D);this._updateMessageProfile(M);let T=M.isModified===1;u.isMessageSentByCurrentInstance(M)?M.isModified=T:T=!1,M._onlineOnlyFlag?u.isMessageSentByCurrentInstance(M)||E.push(M):vB(M)&&(u.storeConversationMessage(M)&&op({conversationUpdateFields:m,message:M}),u.isMessageSentByCurrentInstance(M)&&!T||E.push(M))}),{conversationUpdateFieldList:[...m.values()],messages:E}}_emitMessageEventsAfterReceiveNewMessage(n){var g;const{messages:u=[]}=((g=n.result)===null||g===void 0?void 0:g[qt.HANDLE_C2C_NEW_MESSAGE])||{};this._emitMessageEvents(u)}_emitMessageEventsAfterSyncUnreadMessage(n){var g;const{messages:u=[]}=((g=n.result)===null||g===void 0?void 0:g[qt.UNREAD_MESSAGE_SYNC])||{};this._emitMessageEvents(u)}_emitMessageEvents(n){const g=n?.filter(E=>E?.isModified===!0)||[];g.length>0&&fe.notificationCenter.emitOuterEvent("onMessageModified",{name:"onMessageModified",data:g});const u=n?.filter(E=>!E?.isModified);u.length>0&&fe.notificationCenter.emitOuterEvent("onMessageReceived",{name:"onMessageReceived",data:u})}_generateC2CMessage(n){const g=Kr.CONV_C2C,u=Wm(n),E=fe.message.messageFactory.createMessage(Object.assign(Object.assign({},u),{conversationType:g,flow:Zu.IN})),{elements:m}=u;return E.setElement(m),E}_updateMessageProfile(n){var g;const{messageDataHandler:u}=fe.message||{},E=(g=fe.store.get("login"))===null||g===void 0?void 0:g.userId,{from:m,nick:D,avatar:M,conversationID:T=""}=n;if(m!==E){const P=u.getLatestMsgSentByPeer(T);if(P){const{nick:W,avatar:iA}=P;r(D)||r(M)?(n.nick=l(W)?W:n.nick,n.avatar=l(iA)?iA:n.avatar):D===W&&M===iA||(u.updateNickAndAvatarOfSentMessage({conversationID:T,latestNick:D,latestAvatar:M,isSentByMe:!1}),this._updateConversationUserProfile({conversationID:T,nick:D,avatar:M}))}}else{const P=u.getLatestMsgSentByMe(T);!P||D===P.nick&&M===P.avatar||u.updateNickAndAvatarOfSentMessage({conversationID:T,latestNick:D,latestAvatar:M,isSentByMe:!0})}}_updateConversationUserProfile(n){const{conversationID:g,nick:u,avatar:E}=n,m=SB.getConversation(g),{userProfile:D={}}=m||{};D.avatar===E&&D.nick===u||SB.updateConversation(g,{userProfile:Object.assign(Object.assign({},D),{nick:u,avatar:E})})}_updateMessageListDueToModify(n){const{conversationID:g}=n,{isUpdated:u,message:E}=fe.message.messageDataHandler.modifyConversationMessage(g,n);u===!0&&fe.notificationCenter.emitOuterEvent("onMessageModified",{name:"onMessageModified",data:[E]}),fe.notificationCenter.emitInnerEvent("ModifyMessageSuccess",n),$m(g,n)}_handleC2CMessageModify(n){n.C2cMsgModNotifys.forEach(g=>{var u;const E=Kr.CONV_C2C;let m=zm(g);const{to:D,from:M}=m;let T=`${E}${D}`;D===((u=fe.store.get("login"))===null||u===void 0?void 0:u.userId)&&(T=`${E}${M}`),m=Object.assign({conversationType:E,conversationID:T},m),this._updateMessageListDueToModify(m)})}_dispose(){const{notificationCenter:n}=fe,{InnerEventSubType:g}=n;fe.notificationCenter.unSubscribeInnerEvent(so.MESSAGE_PUSH,g.C2C_REALTIME_MESSAGE,this._handleC2CMessagePush,this),fe.notificationCenter.unSubscribeInnerEvent(so.MESSAGE_PUSH,g.C2C_MESSAGE_MODIFIED,this._handleC2CMessageModify,this),fe.notificationCenter.unSubscribeInnerEvent(so.DESTROY,this._dispose,this)}}class Nh{init(){const{notificationCenter:n}=fe,{InnerEventSubType:g}=n;ws.getInstance().registerWorkflowStep(xt.RECEIVE_GROUP_NEW_MESSAGE,qt.HANDLE_GROUP_NEW_MESSAGE,this._handleGroupMessagePush,this),ws.getInstance().registerWorkflowStep(xt.RECEIVE_GROUP_NEW_MESSAGE,qt.EMIT_GROUP_MESSAGE_EVENT,this._emitMessageEvents,this),n.subscribeInnerEvent(so.MESSAGE_PUSH,g.GROUP_REALTIME_MESSAGE,this._executeReceiverNewMessageWorkFlow,this),n.subscribeInnerEvent(so.MESSAGE_PUSH,g.GROUP_MESSAGE_MODIFIED,this._handleGroupMessageModify,this),n.subscribeInnerEvent(so.DESTROY,this._dispose,this)}_executeReceiverNewMessageWorkFlow(n){this._canExecuteReceiverNewMessageWorkFlow(n)&&ws.getInstance().executeWorkflow(xt.RECEIVE_GROUP_NEW_MESSAGE,n)}_handleGroupMessagePush(n){const g=n.data||{},{messageDataHandler:u}=fe.message,E=[],m=new Map,D=g?.GroupMsgArray;return D?.forEach(M=>{if(M.GroupInfo.NotVisible===1)return;const T=this._generateGroupMessage(M);this.updateMessageProfile(T);let P=T.isModified===1;u.isMessageSentByCurrentInstance(T)?T.isModified=P:P=!1,T._onlineOnlyFlag?u.isMessageSentByCurrentInstance(T)||E.push(T):vB(T)&&u.storeConversationMessage(T)&&(E.push(T),op({conversationUpdateFields:m,message:T}))}),{conversationUpdateFieldList:[...m.values()],messages:E}}_emitMessageEvents(n){var g;const{messages:u}=((g=n.result)===null||g===void 0?void 0:g[qt.HANDLE_GROUP_NEW_MESSAGE])||{},E=u?.filter(D=>D?.isModified===!0)||[];E.length>0&&fe.notificationCenter.emitOuterEvent("onMessageModified",{name:"onMessageModified",data:E});const m=u?.filter(D=>!D?.isModified)||[];m.length>0&&fe.notificationCenter.emitOuterEvent("onMessageReceived",{name:"onMessageReceived",data:m})}_generateGroupMessage(n){const g=Kr.CONV_GROUP,u=OD(n),E=fe.message.messageFactory.createMessage(Object.assign(Object.assign({},u),{conversationType:g,flow:Zu.IN})),{elements:m}=u;return E.setElement(m),E}updateMessageProfile(n){var g;const{messageDataHandler:u}=fe.message||{},E=(g=fe.store.get("login"))===null||g===void 0?void 0:g.userId,{from:m,nick:D,avatar:M,conversationID:T="",_elements:P}=n;if(m===E){const W=u.getLatestMsgSentByMe(T);!W||D===W.nick&&M===W.avatar||u.updateNickAndAvatarOfSentMessage({conversationID:T,latestNick:D,latestAvatar:M,isSentByMe:!0})}else if(m===Lo.CONV_SYSTEM){const{operationType:W,memberInfoList:iA,operatorInfo:EA}=P;let RA={};if(Rs(iA)?Rs(EA)||(RA=EA):[Tg.JOINED,Tg.KICKED,Tg.ADMIN_SET,Tg.ADMIN_CANCELED].includes(W)&&(RA=Object.assign({},iA[0])),!Rs(RA)){const{nick:kA="",avatar:xA=""}=RA;n.nick=kA,n.avatar=xA}}}_updateMessageListDueToModify(n){const{conversationID:g}=n,{isUpdated:u,message:E}=fe.message.messageDataHandler.modifyConversationMessage(g,n);u===!0&&fe.notificationCenter.emitOuterEvent("onMessageModified",{name:"onMessageModified",data:[E]}),$m(g,n)}_handleGroupMessageModify(n){n.GroupMsgModNotifys.forEach(g=>{const u=Kr.CONV_GROUP;let E=PD(g);const{topicID:m,groupID:D}=E,M=m||D,T=`${u}${M}`;E=Object.assign({conversationType:u,conversationID:T,to:M},E),this._updateMessageListDueToModify(E)})}_dispose(){const{notificationCenter:n}=fe,{InnerEventSubType:{GROUP_REALTIME_MESSAGE:g,GROUP_MESSAGE_MODIFIED:u}}=n;n.unSubscribeInnerEvent(so.MESSAGE_PUSH,g,this._handleGroupMessagePush,this),n.unSubscribeInnerEvent(so.MESSAGE_PUSH,u,this._handleGroupMessageModify,this),n.unSubscribeInnerEvent(so.DESTROY,this._dispose,this)}_canExecuteReceiverNewMessageWorkFlow(n){var g,u;const{GroupId:E,GroupType:m}=((u=(g=n?.GroupMsgArray)===null||g===void 0?void 0:g[0])===null||u===void 0?void 0:u.GroupInfo)||{},D=m===La.GRP_AVCHATROOM;return!(!$Q.getGroup(E)&&D)}}var HD=new class{constructor(){this.c2cMessageReceiver=new Th,this.groupMessageReceiver=new Nh}init(){this.c2cMessageReceiver.init(),this.groupMessageReceiver.init()}};const vR={createCustomMessage:{to:{required:!0,rules:["string"],allowEmpty:!1},conversationType:{required:!0,rules:["string"],allowEmpty:!1},payload:{required:!0,rules:["object"],allowEmpty:!1},cloudCustomData:{required:!1,rules:["string"],allowEmpty:!1},priority:{required:!1,rules:["string"],allowEmpty:!1},customModerationConfigurationID:{required:!1,rules:["string"],allowEmpty:!1}},sendMessage:[{key:"message",required:!0,rules:["object"],allowEmpty:!1},{key:"options",required:!1,rules:["object"],allowEmpty:!1}],createTextMessage:{to:{required:!0,rules:["string"],allowEmpty:!1},conversationType:{required:!0,rules:["string"],allowEmpty:!1,customValidator:s=>!(!s.startsWith("C2C")&&!s.startsWith("GROUP"))||"conversationType is invalid."},payload:{required:!0,rules:["object"],allowEmpty:!1,customValidator:s=>function(n){var g;return typeof n?.text!="string"||typeof n.text=="string"&&((g=n?.text)===null||g===void 0?void 0:g.length)===0?"payload.text must be a string":!0}(s)}}},qT={createCustomMessage:!0,sendMessage:!0,modifyMessage:!0};var KT=new class{constructor(){this._historyMessageListFetchAnchors=new Map,this.completedHistoryConversations=new Set}getGroupRoamingMessagesByAnchor(s){return pA(this,void 0,void 0,function*(){try{const{conversationID:n,count:g,direction:u,sequence:E,messageSequenceList:m,shouldMarkCompleted:D=!1,getType:M}=s,T=n.replace(ka.CONV_GROUP,""),P=[];let W=E;if(u===qc.BACKWARD){if(typeof E!="number")return{messageList:[],hasNoMoreHistoryMessage:!1,nextReqMessageIDFromServer:""};W=E+g-1}const iA=yield _h({groupID:T,count:g,messageSequence:W,messageSequenceList:m,getType:M});if(iA){const{RspMsgList:EA=[],NextReqMsgSeq:RA=0,IsFinished:kA,InvisibleMsgSeq:xA}=iA,LA=`groupID:${T} sequence:${E} reqSeq:${W} direction:${u} complete:${kA} nextSequence:${RA} remoteMsgCount:${EA.length} invisibleSequenceList:${xA}`,SA=[];for(let ne=0;ne=E),OA&&D&&this.completedHistoryConversations.add(n);const JA=MB(SA);return fe.ssoLog.info("getGroupRoamingMessagesByAnchor",LA),{messageList:JA,invisibleSequenceList:xA,nextReqMessageIDFromServer:RA,hasNoMoreHistoryMessage:OA,serverGroupTipList:P}}}catch(n){const{errorCode:g,errorInfo:u}=n||{};throw new gs({code:g,message:u})}})}clearHistoryMessageListFetchAnchors(s){this._historyMessageListFetchAnchors.delete(s)}isHistoryMessageFetchCompleted(s){return this.completedHistoryConversations.has(s)}_parseMessage(s){var n;const g=ka.CONV_GROUP;s.Event===4&&(s.MsgBody.MsgType=Lo.MSG_GRP_TIP);const u=OD(s),E=jm.createMessage(Object.assign(Object.assign({},u),{conversationType:g,flow:"in"}));return DB(((n=u.elements)===null||n===void 0?void 0:n.content)||{},E),E.setElement(u.elements),E}getC2CRoamingMessagesByAnchor(s){return pA(this,void 0,void 0,function*(){var n;try{const{conversationID:g,count:u,messageID:E,time:m,direction:D,shouldMarkCompleted:M=!1}=s;let T=m,P="";if(!m){const EA=E?fe.message.messageDataHandler.findMessage(E):null;if(T=EA?.time||0,E&&this._historyMessageListFetchAnchors.has(g)){const RA=this._historyMessageListFetchAnchors.get(g);T=RA.lastMessageTime,P=RA.messageKey}}const W=g.replace(ka.CONV_C2C,""),iA=yield Zm({count:u,lastMessageTime:T,messageKey:P,peerAccount:W,direction:D});if(iA){const{MsgList:EA=[],Complete:RA,MsgKey:kA,LastMsgTime:xA}=iA;this._historyMessageListFetchAnchors.set(g,{messageKey:kA,lastMessageTime:xA});const LA=[];for(let ne=0;ne{const{tag:E,value:m}=u;E&&E.indexOf(KD)>-1?g.profileCustomField.push({key:E,value:m}):Gd.has(E)&&(g[Gd.get(E)]=m)}),Object.assign(Object.assign({},Af),g)}parseProfileItem(s=[]){const n=[];return s.forEach(g=>{n.push({tag:g.Tag,value:g.Value})}),n}parseProfileList(s=[]){const n=[];return s.forEach(g=>{n.push({tag:g.Tag,value:g.ValueBytes})}),n}convertParamsToProfile(s){const n=[];return Object.keys(s).forEach(g=>{g!==jD&&n.push({tag:Pl[g.toUpperCase()],value:s[g]})}),s.profileCustomField&&h(s.profileCustomField)&&s.profileCustomField.forEach(g=>{n.push({tag:g.key,value:g.value})}),n}normalizeProfileFields(s){const n={},g=[];return s.forEach(u=>{const{tag:E,value:m}=u;if(E&&E.indexOf(KD)>-1&&g.push({key:E,value:m}),Gd.has(E)&&m!==void 0){const D=Gd.get(E);n[D]=m}}),g.length>0&&(n.profileCustomField=g),n}};const{generateProtocolData:wR}=fe.common;function _R(s){return pA(this,void 0,void 0,function*(){const n="profile.portrait_get_all",g={From_Account:Ar(),UserItem:[]};s.forEach(D=>{g.UserItem.push({CustomSequence:0,StandardSequence:0,To_Account:D})});const u=wR({servcmd:n,data:g}),E=`${u.head.seq}${n}`,m=yield fe.channel.sendPacket(u,{requestId:E});if(m)return function(D){const{ActionStatus:M,ErrorCode:T,ErrorDisplay:P,ErrorInfo:W,UserProfileItem:iA}=D,EA=[];return iA.map(RA=>{const{To_Account:kA,CustomSequence:xA,ResultCode:LA,ResultInfo:SA,StandardSequence:OA,ProfileItem:JA}=RA,ne=Xu.parseProfileItem(JA);EA.push({userId:kA,customSequence:xA,resultCode:LA,resultInfo:SA,standardSequence:OA,profileItem:ne})}),{actionStatus:M,errorCode:T,errorDisplay:P,errorInfo:W,userProfile:EA}}(m)})}function HE(s){return rc.getFriendMap().has(s)}const{isEmpty:WD}=fe.utils;class ef{constructor(){this._strangerProfileMap=new Map}init(){Cr.getInstance().registerApi({apiName:"getMyProfile",context:this}),Cr.getInstance().registerApi({apiName:"getUserProfile",context:this}),Cr.getInstance().registerApi({apiName:"updateMyProfile",context:this}),this.createProfile=Xu.createProfile.bind(Xu);const{notificationCenter:n}=fe;ws.getInstance().registerWorkflowStep(xt.SYNC_SERVER_INFO_AFTER_LOGIN,qt.USER_PROFILE_SYNC,this.getMyProfileCacheThenServer,this),n.subscribeInnerEvent(so.MESSAGE_PUSH,n.InnerEventSubType.PROFILE_MODIFIED,this._onProfileDataModify,this),n.subscribeInnerEvent(so.LOGOUT,this._reset,this),n.subscribeInnerEvent(so.DESTROY,this._dispose,this)}getMyProfile(){return pA(this,void 0,void 0,function*(){try{const n=Ar(),g=yield _R([n]);if(g){const u=this._handleProfileFormResponse(g)[0];return rc.getUserProfileMap().set(n,u),{code:0,data:u}}}catch(n){const{errorCode:g,errorInfo:u}=n;throw new gs({functionName:"getMyProfile",code:g,message:u})}})}getUserProfile(n){return pA(this,void 0,void 0,function*(){try{let{userIDList:g}=n;const{userIdListToRequest:u,profileFromCache:E}=this._filterRequestAndCacheUsers(g);if(u.length===0)return{code:0,data:E,successLog:{message:`userIDList.length:${g.length}`}};u.length>RR&&(fe.ssoLog.warn("getUserProfile","userIdListToRequest.length > 1000"),u.length=RR);const{data:m,error:D}=yield this._batchFetchUserProfiles(u),M=u.length,T=m.length,P=M-T;if(E.length===0&&M===P&&!WD(D))throw D;if(h(m))return m.forEach(iA=>{HE(iA.userID)?rc.getUserProfileMap().set(iA.userID,iA):this._strangerProfileMap.set(iA.userID,iA)}),{code:0,data:m.concat(E),successLog:{message:`getUserProfile query:${M} success:${T} fail:${P} from cache:${E.length}`}}}catch(g){throw new gs(g)}})}getMyProfileCacheThenServer(){return pA(this,void 0,void 0,function*(){const n=Ar(),g=rc.getUserProfileMap().has(n);return g?{code:0,data:g}:this.getMyProfile()})}updateMyProfile(n){return pA(this,void 0,void 0,function*(){const g=Ar(),u={};for(const m in n)n[m]!==void 0&&(u[m]=n[m]);const E=Xu.convertParamsToProfile(u);try{yield function(P){return pA(this,void 0,void 0,function*(){const W="profile.portrait_set",iA=wR({servcmd:W,data:P}),EA=`${iA.head.seq}${W}`,RA=yield fe.channel.sendPacket(iA,{requestId:EA});if(RA){const{ActionStatus:kA,ErrorCode:xA,ErrorDisplay:LA,ErrorInfo:SA}=RA;return{actionStatus:kA,errorCode:xA,errorDisplay:LA,errorInfo:SA}}})}({From_Account:g,ProfileItem:E});const D=rc.getUserProfile(g);let M;M=D?Object.assign(Object.assign({},D),u):Xu.createProfile(g,E);const T=!rg(D,M,["lastUpdatedTime"]);return M.lastUpdatedTime=Date.now(),rc.getUserProfileMap().set(g,M),T&&this._emitProfileUpdated(M),{code:0,data:M,successLog:{message:`profileArray: ${fe.utils.safeStringify(E)}`}}}catch(m){const{errorCode:D,errorInfo:M}=m;throw new gs({functionName:"updateMyProfile",code:D,message:M,moreMessage:`params: ${fe.utils.safeStringify(n)}`})}})}updateMyNickAndAvatar(n){return pA(this,void 0,void 0,function*(){const g=Ar(),u=Date.now(),E=rc.getUserProfile(g);let m={};m=E?Object.assign(E,n):Xu.createProfile(g,n),m.lastUpdatedTime=u,rc.getUserProfileMap().set(g,m)})}_onProfileDataModify(n){const g=function(m){const{Profile_Account:D,PushType:M,ProfileList:T}=m;return{userId:D,pushType:M,profileList:Xu.parseProfileList(T)}}(n.ProfileDataMod[0]);if(WD(g))return;const{isProfileUpdated:u,profile:E}=this._handleProfileModified(g);u&&this._emitProfileUpdated(E)}_emitProfileUpdated(n){fe.notificationCenter.emitInnerEvent(so.PROFILE_UPDATE,{name:so.PROFILE_UPDATE,data:[n]}),fe.notificationCenter.emitOuterEvent(Dr.PROFILE_UPDATED,{name:Dr.PROFILE_UPDATED,data:[n]}),SB.updateConversation(`C2C${n?.userID}`,{userProfile:n})}_dispose(){const{notificationCenter:n}=fe;n.unSubscribeInnerEvent(so.LOGOUT,this._reset,this),n.unSubscribeInnerEvent(so.MESSAGE_PUSH,n.InnerEventSubType.PROFILE_MODIFIED,this._onProfileDataModify,this),n.unSubscribeInnerEvent(so.DESTROY,this._dispose,this),this._reset()}_handleProfileModified(n){const{userId:g,profileList:u}=n,E=rc.getUserProfile(g);if(!(Ar()===g||HE(g)&&E))return{isProfileUpdated:!1,profile:null};const m=Xu.normalizeProfileFields(u),D=Object.keys(m).some(W=>W===jD?this._isCustomFieldChanged(E.profileCustomField,m.profileCustomField):E[W]!==m[W]);if(!D)return{isProfileUpdated:!1,profile:E};const M=Date.now(),T=Object.prototype.hasOwnProperty.call(m,jD)?this._mergeProfileCustomField(E.profileCustomField,m.profileCustomField):E.profileCustomField,P=Object.assign(Object.assign(Object.assign({},E),m),{profileCustomField:T,lastUpdatedTime:M});return rc.getUserProfileMap().set(g,P),{isProfileUpdated:D,profile:P}}_filterRequestAndCacheUsers(n){const g=[],u=[];return n.forEach(E=>{const m=rc.getUserProfileMap().has(E);HE(E)&&m?u.push(rc.getUserProfile(E)):this._isStrangerAndProfileValid(E)?u.push(this._strangerProfileMap.get(E)):g.push(E)}),{userIdListToRequest:g,profileFromCache:u}}_handleProfileFormResponse(n){const{userProfile:g}=n;if(!Array.isArray(g))return[];const u=g.filter(m=>m.userId!=="@TLS#NOT_FOUND"&&m.userId!==""&&!WD(m.profileItem)),E=Date.now();return u.map(m=>{const D=Xu.createProfile(m.userId,m.profileItem);return D.lastUpdatedTime=E,D})}_isStrangerAndProfileValid(n){var g;if(!HE(n)){const{lastUpdatedTime:u=0}=this._strangerProfileMap.get(n)||{},E=((g=fe.store.get("cloudConfig"))===null||g===void 0?void 0:g.stranger_profile_expiration_time)||6e5;return Date.now()-u<=E}return!1}_chunkUserIDList(n,g){return Array.from({length:Math.ceil(n.length/g)},(u,E)=>n.slice(E*g,(E+1)*g))}_batchFetchUserProfiles(n){return pA(this,void 0,void 0,function*(){const g=[],u=[];let E={};return this._chunkUserIDList(n,100).forEach(m=>{g.push(_R(m))}),(yield Promise.allSettled(g)).forEach(m=>{if(m.status==="fulfilled"){const D=m.value,M=this._handleProfileFormResponse(D);h(M)&&u.push(...M)}else if(m.status==="rejected"){const{code:D,message:M}=m.reason||{};E={errorCode:D,message:M}}}),{data:u,error:E}})}_isCustomFieldChanged(n=[],g=[]){if(!h(g)||g.length===0)return!1;if(!h(n)||n.length===0)return!0;const u=new Map(n.map(E=>[E.key,E.value]));return g.some(E=>u.get(E.key)!==E.value)}_mergeProfileCustomField(n=[],g=[]){const u=h(n)?n.map(E=>Object.assign({},E)):[];return h(g)&&g.length!==0&&g.forEach(({key:E,value:m})=>{const D=u.find(M=>M.key===E);D?D.value=m:u.push({key:E,value:m})}),u}_reset(){rc.getUserProfileMap().clear(),this._strangerProfileMap.clear()}}const tf=new Map,zD=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"];for(let s=0,n=zD.length;s>(-2*m&6)):0)E="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(E);try{return decodeURIComponent(escape(g))}catch(u){return console.warn(u),""}}const{isEmpty:WT}=fe.utils,{generateProtocolData:of}=fe.common;function TR(s){return pA(this,void 0,void 0,function*(){const n="im_open_status.ws_get_user_status",g=of({servcmd:n,data:{To_Account:s}}),u=`${g.head.seq}${n}`,E=yield fe.channel.sendPacket(g,{requestId:u});if(E)return function(m){const{ErrorCode:D,ErrorInfo:M,ErrorList:T=[],UserStatusList:P=[]}=m,W=P.map(EA=>{const{To_Account:RA,Status:kA,CustomStatus:xA,Detail:LA=[]}=EA;return{userID:RA,statusType:kA,customStatus:np(xA),onlineDevices:zT(LA)}}),iA=T.map(EA=>{const{To_Account:RA,Invalid_Account:kA,ErrorCode:xA,ErrorInfo:LA}=EA;return{userID:WT(kA)?RA:kA,code:xA,message:LA}});return{errorCode:D,errorInfo:M,successUserList:W,failureUserList:iA}}(E)})}function zT(s){const n=[];return s?.forEach(g=>{const{Platform:u,Status:E}=g;E==="Online"&&n.push(u)}),n}class ZT{constructor(){this._customStatus=""}init(){const{notificationCenter:n}=fe;Cr.getInstance().registerApi({apiName:"getUserStatus",context:this}),Cr.getInstance().registerApi({apiName:"setSelfStatus",context:this}),Cr.getInstance().registerApi({apiName:"subscribeUserStatus",context:this}),Cr.getInstance().registerApi({apiName:"unsubscribeUserStatus",context:this}),ws.getInstance().registerWorkflowStep(xt.SYNC_SERVER_INFO_AFTER_RE_ONLINE,qt.USER_STATUS_UPDATE,this._onReOnline,this),n.subscribeInnerEvent(so.MESSAGE_PUSH,n.InnerEventSubType.USER_STATUS_UPDATE,this._onUserStatusUpdate,this),n.subscribeInnerEvent(so.LOGOUT,this._reset,this),n.subscribeInnerEvent(so.DESTROY,this._dispose,this)}setSelfStatus(n){return pA(this,void 0,void 0,function*(){const g=Ar(),{customStatus:u}=n;try{return yield function(E){return pA(this,void 0,void 0,function*(){const m="im_open_status.ws_set_custom_status",D=of({servcmd:m,data:{CustomStatus:E}}),M=`${D.head.seq}${m}`,T=yield fe.channel.sendPacket(D,{requestId:M});if(T){const{ErrorCode:P,ErrorInfo:W}=T;return{errorCode:P,errorInfo:W}}})}(u),this._customStatus=u,{code:0,data:{userID:g,statusType:Gh,customStatus:u},successLog:{message:`customStatus: ${u}`}}}catch(E){const{errorCode:m,errorInfo:D}=E;throw new gs({functionName:"setSelfStatus",code:m,message:D})}})}getUserStatus(n){return pA(this,void 0,void 0,function*(){const{userIDList:g=[]}=n;if(this._isOnlyMeInArray(g))return this._getMyStatus();const u=yield this._getUserStatus(g);return Object.assign(Object.assign({},u),{successLog:{message:`userIDList length: ${g.length}`}})})}setCustomStatus(n){const g=np(n);this._customStatus=g}subscribeUserStatus(n){return pA(this,void 0,void 0,function*(){try{const{userIDList:g=[]}=n;this._checkBusinessCapabilityBits("subscribeUserStatus");const u=this._getMaxUserCount("subscribe"),E=this._sliceUserIDList(g,u),m=yield function(M){return pA(this,void 0,void 0,function*(){const{channel:T}=fe,P="im_open_status.ws_status_subscribe",W=of({servcmd:P,data:{To_Account:M}}),iA=`${W.head.seq}${P}`;return yield T.sendPacket(W,{requestId:iA})})}(E),D=this._parseResponse(m);return{code:0,data:{failureUserList:D},successLog:{message:`userID length:${g.length} failCount: ${D.length}`}}}catch(g){const{errorCode:u}=g;throw new gs({functionName:"subscribeUserStatus",code:u})}})}unsubscribeUserStatus(n){return pA(this,void 0,void 0,function*(){try{this._checkBusinessCapabilityBits("unsubscribeUserStatus");const{userIDList:g=[]}=n,u=this._getMaxUserCount("unsubscribe"),E=this._sliceUserIDList(g,u),m=yield function(M){return pA(this,void 0,void 0,function*(){const{channel:T}=fe,P="im_open_status.ws_status_unsubscribe";let W={};W=M.length===0?{UnsubscribeAll:1}:{To_Account:M};const iA=of({servcmd:P,data:W}),EA=`${iA.head.seq}${P}`;return yield T.sendPacket(iA,{requestId:EA})})}(E),D=this._parseResponse(m);return{code:0,data:{failureUserList:D},successLog:{message:`userID length:${g.length} failCount: ${D.length}`}}}catch(g){const{errorCode:u}=g;throw new gs({functionName:"unsubscribeUserStatus",code:u})}})}_onUserStatusUpdate(n){const{UserStatusList:g=[]}=n||{},u=g.map(E=>{const{To_Account:m,Status:D,CustomStatus:M,Platform:T}=E,P={userID:m,statusType:D,customStatus:np(M)};return T&&(P.onlineDevices=T),P});this._emitUserStatusUpdatedEvent(u)}_onReOnline(n){const g=np(n.data.customStatus);if(this._customStatus===g)return;this._customStatus=g;const u={userID:Ar(),statusType:Gh,customStatus:g};this._emitUserStatusUpdatedEvent(u)}_emitUserStatusUpdatedEvent(n){fe.notificationCenter.emitOuterEvent(Dr.USER_STATUS_UPDATED,{name:Dr.USER_STATUS_UPDATED,data:n})}_sliceUserIDList(n,g){return n.slice(0,g)}_parseResponse(n){const{ErrorList:g=[]}=n;return g.map(u=>{const{To_Account:E,Invalid_Account:m,ErrorCode:D,ErrorInfo:M}=u;return{userID:fe.utils.isEmpty(m)?E:m,code:D,message:M}})}_checkBusinessCapabilityBits(n){if(!fe.store.get("commercialConfig").get(jT))throw new gs({functionName:n,code:Ea.NO_USE,replacement1:n})}_getMaxUserCount(n){const g=fe.store.get("cloudConfig")||{},u={query:{key:"status_query_count",default:500},subscribe:{key:"status_sub_count",default:100},unsubscribe:{key:"status_unsub_count",default:100}},{key:E,default:m}=u[n],D=g[E]||m;return parseInt(D,10)}_getMyStatus(){return{code:0,data:{successUserList:[{userID:Ar(),statusType:Gh,customStatus:this._customStatus}],failureUserList:[]}}}_getUserStatus(n){return pA(this,void 0,void 0,function*(){try{this._checkBusinessCapabilityBits("getUserStatus");const g=this._getMaxUserCount("query"),u=this._sliceUserIDList(n,g),E=yield TR(u),{successUserList:m,failureUserList:D}=E||{};return{code:0,data:{successUserList:m,failureUserList:D}}}catch(g){const{errorCode:u}=g;throw new gs({functionName:"getUserStatus",code:u})}})}_isOnlyMeInArray(n){const g=Ar();return n.length===1&&n.indexOf(g)>-1}_dispose(){const{notificationCenter:n}=fe;n.unSubscribeInnerEvent(so.MESSAGE_PUSH,n.InnerEventSubType.USER_STATUS_UPDATE,this._onUserStatusUpdate,this),n.unSubscribeInnerEvent(so.DESTROY,this._dispose,this),n.unSubscribeInnerEvent(so.LOGOUT,this._reset,this),this._reset()}_reset(){this._customStatus=""}}const ZD={getUserProfile:{userIDList:{required:!0,rules:["array"],allowEmpty:!1}},updateMyProfile:{nick:{required:!1,rules:["string"],allowEmpty:!0},avatar:{required:!1,rules:["string"],allowEmpty:!0},gender:{required:!1,rules:["string"],allowEmpty:!0},selfSignature:{required:!1,rules:["string"],allowEmpty:!0},allowType:{required:!1,rules:["string"],allowEmpty:!0},birthday:{required:!1,rules:["number"],allowEmpty:!1},language:{required:!1,rules:["string"],allowEmpty:!0},messageSettings:{required:!1,rules:["string"],allowEmpty:!0},adminForbidType:{required:!1,rules:["string"],allowEmpty:!0},level:{required:!1,rules:["number"],allowEmpty:!1},role:{required:!1,rules:["number"],allowEmpty:!0},profileCustomField:{required:!1,rules:["array"],allowEmpty:!0,customValidator:function(s){for(const n of s){if(typeof n!="object")return"Each item in profileCustomField must be an object";if(typeof n?.key!="string")return"Each item.key in profileCustomField must be a string";if(!n?.key.startsWith(KD))return'Each item.key in profileCustomField must start with "Tag_Profile_Custom"'}return!0}}},setSelfStatus:{customStatus:{required:!0,rules:["string"],allowEmpty:!0}},getUserStatus:{userIDList:{required:!0,rules:["array"],allowEmpty:!1}},subscribeUserStatus:{userIDList:{required:!0,rules:["array"],allowEmpty:!1}},unsubscribeUserStatus:{userIDList:{required:!1,rules:["array"],allowEmpty:!0}}},XT={getMyProfile:!0,getUserProfile:!0,updateMyProfile:!0,setSelfStatus:!0,getUserStatus:!0,subscribeUserStatus:!0,unsubscribeUserStatus:!0};class $T{constructor(){this.userProfile=new ef,this.userStatus=new ZT,this.userProfile.init(),this.userStatus.init(),jc({auth:XT,params:ZD})}}function XD(s){const n=[];if(!l(s))return n;const g=s.length;if(g===0)return n;for(let u=g-1;u>=0;u--)s[u]==="1"&&n.push(2**(g-u-1));return n}var bd,RC,kd;(function(s){s.NOT_START="notStart",s.PENDING="pending",s.RESOLVED="resolved",s.REJECTED="rejected"})(bd||(bd={})),function(s){s[s.C2C=1]="C2C",s[s.GROUP=2]="GROUP"}(RC||(RC={})),function(s){s[s.C2C=8]="C2C",s[s.GROUP=2]="GROUP"}(kd||(kd={}));class $D{constructor(){this._name="SyncConversationHandler",this._pagingStatus=bd.NOT_START,this._pagingTimeStamp=0,this._pagingStartIndex=0,this._pagingPinnedTimeStamp=0,this._pagingPinnedStartIndex=0}init(){const{notificationCenter:n}=fe;ws.getInstance().registerWorkflowStep(xt.SYNC_SERVER_INFO_AFTER_RE_ONLINE,qt.CONVERSATION_RECOVER,this._syncConversationList,this),ws.getInstance().registerWorkflowStep(xt.SYNC_SERVER_INFO_AFTER_LOGIN,qt.CONVERSATION_LIST_SYNC,this._syncConversationListAfterLogin,this),n.subscribeInnerEvent(so.LOGOUT,this._reset,this),n.subscribeInnerEvent(so.DESTROY,this._dispose,this),fe.ssoLog.debug(`${this._name}.init`)}isSyncCompleted(){return this._pagingStatus===bd.RESOLVED}_syncConversationListAfterLogin(){return pA(this,void 0,void 0,function*(){return this._pagingStatus=bd.NOT_START,this._pagingTimeStamp=0,this._pagingStartIndex=0,this._pagingPinnedTimeStamp=0,this._pagingPinnedStartIndex=0,this._syncConversationList()})}_syncConversationList(){return pA(this,void 0,void 0,function*(){const{ssoLog:n,utils:{safeStringify:g}}=fe;n.debug("_syncConversationList","start");try{const u=yield this._pagingGetConversationList(!0);this._pagingStatus=bd.RESOLVED;const{conversationList:E=[]}=u||{};return n.info("_syncConversationList",`success count:${E.length}`),u}catch(u){const E=new gs(u);n.error("_syncConversationList",`fail ${g(u)}`,{error:E})}})}_pagingGetConversationList(n){return pA(this,void 0,void 0,function*(){try{const g=[];this._pagingStatus=bd.PENDING;const u=yield function(iA){return pA(this,void 0,void 0,function*(){const{fromAccount:EA,pagingTimeStamp:RA,pagingStartIndex:kA,pagingPinnedTimeStamp:xA,pagingPinnedStartIndex:LA}=iA;return gg({servcmd:"recentcontact.page_get",data:{AssistFlags:31,MsgAssistFlags:15,OrderType:1,From_Account:EA,StartIndex:kA,TimeStamp:RA,TopStartIndex:LA,TopTimeStamp:xA}})})}({fromAccount:Ar(),pagingTimeStamp:n?this._pagingTimeStamp:0,pagingStartIndex:n?this._pagingStartIndex:0,pagingPinnedTimeStamp:n?this._pagingPinnedTimeStamp:0,pagingPinnedStartIndex:n?this._pagingPinnedStartIndex:0}),{CompleteFlag:E,SessionItem:m=[],TimeStamp:D,StartIndex:M,TopTimeStamp:T,TopStartIndex:P}=u||{};let W=[];if(E===1&&(this._pagingStatus=bd.RESOLVED),m.length>0&&(W=this._getConversationOptions(m),g.push(...W)),fe.notificationCenter.emitInnerEvent(so.SYNC_CONVERSATION_LIST,{conversationUpdateFieldList:W}),this._pagingTimeStamp=D,this._pagingStartIndex=M,this._pagingPinnedTimeStamp=T,this._pagingPinnedStartIndex=P,E!==1){const{conversationList:iA}=yield this._pagingGetConversationList(n);g.push(...iA)}return{conversationList:g}}catch(g){throw g}})}_getConversationOptions(n){const{utils:{isUndefined:g}}=fe,u=this._convertConversationKey(n);return this._filterValidConversations(u).map(E=>(g(E.lastMsg)&&(E.lastMsg={elements:[]}),E.type===RC.C2C?this._assembleC2COption(E):this._assembleGroupOption(E)))}_filterValidConversations(n){return n.filter(({type:g,userID:u})=>g===RC.C2C&&!function(E){let m;return E.startsWith(Lo.CONV_C2C)&&(m=E.replace(Lo.CONV_C2C,"")),m==="@TLS#ERROR"||m==="@TLS#NOT_FOUND"}(u)||g===2)}_assembleC2COption(n){var g,u,E,m,D,M,T,P;const W=this._createUserprofile(n);return{conversationID:`${Lo.CONV_C2C}${n.userID}`,type:Lo.CONV_C2C,lastMessage:{lastTime:n.time,lastSequence:n.sequence,fromAccount:n.lastC2CMsgFromAccount,type:!((g=n.lastMsg)===null||g===void 0)&&g.elements[0]?(u=n.lastMsg)===null||u===void 0?void 0:u.elements[0].type:null,payload:!((E=n.lastMsg)===null||E===void 0)&&E.elements[0]?this._amendLayersOverLimitProp(n.lastMsg.elements[0].content):null,cloudCustomData:((M=(D=(m=n.lastMsg)===null||m===void 0?void 0:m.elements)===null||D===void 0?void 0:D[0])===null||M===void 0?void 0:M.cloudCustomData)||"",isRevoked:n.lastMessageFlag===kd.C2C,onlineOnlyFlag:!1,nick:"",nameCard:"",version:0,isPeerRead:this._computeIsPeerRead(n),revoker:((P=(T=n.lastMsg)===null||T===void 0?void 0:T.revokerInfo)===null||P===void 0?void 0:P.revoker)||null},unreadCount:0,userProfile:W,peerReadTime:n.peerReadTime,isPinned:n.isPinned===1,customData:n.customMark||"",markList:XD(n.standardMark),conversationGroupList:[],remark:n.friendRemark||"",messageRemindType:this._transMsgRemindType(n.messageRemindType)}}_createUserprofile(n){var g;const{userID:u,nick:E,peerAvatar:m}=n,D=[{tag:"Tag_Profile_IM_Nick",value:E},{tag:"Tag_Profile_IM_Image",value:m}];return(g=fe.user.userProfile)===null||g===void 0?void 0:g.createProfile(u,D)}_computeIsPeerRead(n){const g=Ar(),{lastC2CMsgFromAccount:u,time:E,c2cPeerReadTime:m}=n;return u===g&&E<=m}_assembleGroupOption(n){var g,u,E,m,D;return{conversationID:`${Lo.CONV_GROUP}${n.groupID}`,type:Lo.CONV_GROUP,lastMessage:Object.assign(Object.assign({lastTime:n.time,lastSequence:n.sequence,fromAccount:n.msgGroupFromAccount},this._patchTypeAndPayload(n)),{cloudCustomData:((E=(u=(g=n.lastMsg)===null||g===void 0?void 0:g.elements)===null||u===void 0?void 0:u[0])===null||E===void 0?void 0:E.cloudCustomData)||"",isRevoked:n.lastMessageFlag===kd.GROUP,onlineOnlyFlag:!1,nick:n.msgGroupFromNickName||"",nameCard:n.msgGroupFromCardName||"",revoker:((D=(m=n.lastMsg)===null||m===void 0?void 0:m.revokerInfo)===null||D===void 0?void 0:D.revoker)||null}),groupProfile:{groupID:n.groupID,name:n.groupNick,avatar:n.groupImage,type:n.groupType,nextMessageSeq:n.nextMessageSeq},unreadCount:this._computeGroupUnreadCount(n),peerReadTime:0,isPinned:n.isPinned===1,version:0,customData:n.customMark||"",markList:XD(n.standardMark),conversationGroupList:[],messageRemindType:this._transMsgRemindType(n.messageRemindType),subType:n.groupType}}_convertConversationKey(n){return n.map(g=>({type:g.Type,userID:g.To_Account,nick:g.C2cNick,peerAvatar:g.C2cImage,time:g.MsgTimeStamp,sequence:g.MsgSeq,lastC2CMsgFromAccount:g.LastC2cMsgFrom_Account,lastMsg:this._convertLastMsgKey(g.LastMsg),lastMessageFlag:g.LastMsgFlags,c2cPeerReadTime:g.C2cPeerReadTime,peerReadTime:g.C2cPeerReadTime,friendRemark:g.C2cRemark,isPinned:g.TopFlags,standardMark:g.StandardMark,customMark:g.CustomMark,messageRemindType:g.MsgRecvOption,groupID:g.ToAccount,groupNick:g.GroupNick,groupImage:g.GroupImage,groupType:g.GroupType,nextMessageSeq:g.GroupNextMsgSeq,msgGroupFromAccount:g.MsgGroupFrom_Account,msgGroupFromNickName:g.MsgGroupFromNickName,msgGroupFromCardName:g.MsgGroupFromCardName,unreadCount:g.UnreadMsgCount,noUnreadCount:g.GroupIgnoredUnreadSeqCount}))}_convertLastMsgKey(n){var g,u,E;const{utils:{isEmpty:m}}=fe;if(m(n))return null;let D="",M=null;if(!m(n.GroupTips)){const{From_Account:T,GroupName:P}=((g=n.GroupTips)===null||g===void 0?void 0:g.GroupInfo)||{};D=Lo.MSG_GRP_TIP,M=Object.assign(Object.assign({},this._parseContent(D,n.GroupTips.MsgBody)),{groupProfile:{from:T,groupName:P}})}return n.MsgBody&&(D=(u=n.MsgBody[0])===null||u===void 0?void 0:u.MsgType,M=this._parseContent(D,n.MsgBody[0])),{event:n.Event,elements:[{type:D,content:M,cloudCustomData:n.CloudCustomData}],revokerInfo:{revoker:(E=n.RevokerInfo)===null||E===void 0?void 0:E.Revoker_Account}}}_parseContent(n,g){var u;if(!g)return g;const E=fe.message.messageFactory.getElementClass(n);return E?(u=E.parseServerPushElement(g))===null||u===void 0?void 0:u.content:g}_amendLayersOverLimitProp(n){const{LayersOverLimit:g}=n;return Do(n,["LayersOverLimit"]).layersOverLimit=g===1,n}_transMsgRemindType(n){let g="";return n===0?g=Lo.MSG_REMIND_ACPT_AND_NOTE:n===1?g=Lo.MSG_REMIND_DISCARD:n===2?g=Lo.MSG_REMIND_ACPT_NOT_NOTE:n===3&&(g=Lo.NOT_RECEIVE_OFFLINE_PUSH_EXCEPT_AT),g}_patchTypeAndPayload(n){var g;const{utils:{isUndefined:u}}=fe,{event:E,elements:m=[]}=n.lastMsg||{};return u(E)?{type:m[0]?m[0].type:null,payload:m[0]?this._amendLayersOverLimitProp(m[0].content):null}:{type:Lo.MSG_GRP_TIP,payload:((g=m?.[0])===null||g===void 0?void 0:g.content)||{}}}_computeGroupUnreadCount(n){const{unreadCount:g=0,noUnreadCount:u=0}=n,E=g-u;return E>0?E:0}_reset(){this._pagingStatus=bd.NOT_START,this._pagingTimeStamp=0,this._pagingStartIndex=0,this._pagingPinnedTimeStamp=0,this._pagingPinnedStartIndex=0}_dispose(){this._reset();const{notificationCenter:n}=fe;n.unSubscribeInnerEvent(so.LOGOUT,this._reset,this),n.unSubscribeInnerEvent(so.DESTROY,this._dispose,this)}}class AS{constructor(){this.syncConversationHandler=new $D,this.syncConversationHandler.init()}}console.log(`TencentCloudLiteChat.VERSION:${Zr}`);var eS={create:function(s){var n,g;const{SDKAppID:u,testEnv:E=!1,devMode:m=!1,unlimitedAVChatRoom:D=!1,scene:M="",oversea:T=!1,instance:P,disableIndependentDomain:W=!1,proxyServer:iA=""}=s;let EA=u;if(!function(kA){if(typeof kA=="number")return!0;const xA=Number(kA);return!Number.isNaN(xA)}(EA))return console.error("Create SDK instance failed. Failed to parse the SDKAppID, please check the arguments"),null;if(EA=Number(EA),da.has(EA))return da.get(EA);let RA=null;if(P)RA=P,RA._workflowManager&&ws.setInstance(RA._workflowManager),RA._pluginManager&&RA._pluginManager.installBuiltInPlugin(yB),P.isReady()&&((g=(n=ws.getInstance()).executeWorkflow)===null||g===void 0||g.call(n,xt.SYNC_SERVER_INFO_AFTER_LOGIN));else{const kA=function(){function ne(){return(65536*(1+Math.random())|0).toString(16).substring(1)}return`${ne()+ne()}${ne()}${ne()}${ne()}${ne()}${ne()}${ne()}`}();fe.init({sdkAppId:EA,instanceId:kA,testEnv:E,devMode:m,unlimitedAVChatRoom:D,disableIndependentDomain:W,scene:M,oversea:T,sdkEdition:Km,version:Zr,proxyServer:iA}),ws.getInstance().init(),fe.message=new qD,fe.user=new $T,fe.login=new vh,fe.conversation=new AS,nu.getInstance().installBuiltInPlugin(yB),RA=Cr.getInstance().exposeApiForClient(),RA._workflowManager=ws.getInstance(),RA._pluginManager=nu.getInstance();const{utils:{IS_WORKER_AVAILABLE:xA,USER_AGENT:LA,getPlatformType:SA,isIOSWebView:OA}}=fe,JA=`instanceID:${kA} SDKAppID:${u} platform:${HA} host:${SA()} isIOSWebView:${OA} workerAvailable:${xA} UserAgent:${LA}`;fe.ssoLog.info("sdkConstruct",JA)}return da.set(EA,RA),RA},TSignaling:Hc,EVENT:Dr,VERSION:Zr,TYPES:Lo};return eS})}(W1)),W1.exports}var FoA=UoA();const ig=BW(FoA);var z1={exports:{}},OoA=z1.exports,t8;function PoA(){return t8||(t8=1,function(t,i){(function(r,l){t.exports=l()})(OoA,function(){function r(oe,je){if(!(oe instanceof je))throw new TypeError("Cannot call a class as a function")}function l(oe,je){for(var Dt=0;Dt"u"&&typeof uni.requireNativePlugin=="function",WA=TA&&uni.getDeviceInfo().platform.toLocaleLowerCase()==="ios",ge=(TA&&uni.getDeviceInfo().platform.toLocaleLowerCase(),lA||rA||mA||IA||cA||TA),ue=U!==void 0&&(U.nativeModuleProxy!==void 0||U.ReactNative!==void 0),xe=rA?qq:mA?tt:IA?swan:cA?my:lA?wx:TA?uni:{},Be=function(oe){if(k(oe)!=="object"||oe===null)return!1;var je=Object.getPrototypeOf(oe);if(je===null)return!0;for(var Dt=je;Object.getPrototypeOf(Dt)!==null;)Dt=Object.getPrototypeOf(Dt);return je===Dt};function ut(oe){if(oe==null)return!0;if(typeof oe=="boolean")return!1;if(typeof oe=="number")return oe===0;if(typeof oe=="string"||typeof oe=="function"||Array.isArray(oe))return oe.length===0;if(oe instanceof Error)return oe.message==="";if(Be(oe)){for(var je in oe)if(Object.prototype.hasOwnProperty.call(oe,je))return!1;return!0}return!1}var pt=function(){return I(function oe(){r(this,oe),this._n="WebRequest"},[{key:"request",value:function(oe,je){var Dt=this,ni="".concat(this._n,".request"),Jt=oe.downloadUrl||"",gi=(oe.method||"PUT").toUpperCase(),Fi=oe.url;if(console.log("%c tim-upload-plugin %c","background:#0abf5b; padding:1px; border-radius:3px; color: #fff","background:transparent","".concat(ni," URL:").concat(Fi)),oe.qs){var To=function(ki){var ns=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"&",jo=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"=";return ut(ki)?"":Be(ki)?Object.keys(ki).map(function($i){var jt=encodeURIComponent($i)+jo;return Array.isArray(ki[$i])?ki[$i].map(function(io){return jt+encodeURIComponent(io)}).join(ns):jt+encodeURIComponent(ki[$i])}).filter(Boolean).join(ns):void 0}(oe.qs);To&&(Fi+="".concat(Fi.indexOf("?")===-1?"?":"&").concat(To))}var to=new XMLHttpRequest;to.open(gi,Fi,!0),to.responseType=oe.dataType||"text";var uo=oe.headers||{};if(oe.uploadByIP&&(uo=w(w({},uo),{},{host:oe.uploadIP})),!ut(uo))for(var Vs in uo)uo.hasOwnProperty(Vs)&&Vs.toLowerCase()!=="content-length"&&Vs.toLowerCase()!=="user-agent"&&Vs.toLowerCase()!=="origin"&&Vs.toLowerCase()!=="host"&&to.setRequestHeader(Vs,uo[Vs]);return to.onload=function(){if(to.status===200)je(null,Dt._xhrRes(to,Dt._xhrBody(to,Jt,oe.uploadByIP&&oe.uploadIP),uo));else{if(oe.uploadIP&&oe.url.indexOf(oe.uploadIP)===-1)return oe.url=function(ns,jo){return ns.replace(/^http(s)?:\/\/(.*?)\//,"https://".concat(jo,"/"))}(oe.url,oe.uploadIP),oe.uploadByIP=!0,Dt.request(oe,je);var ki={code:to.status,message:JSON.stringify(to.responseText)};je(ki,Dt._xhrRes(to,Dt._xhrBody(to,Jt,oe.uploadByIP&&oe.uploadIP),uo))}},to.onerror=function(ki){var ns=Dt._xhrBody(to,Jt,oe.uploadByIP&&oe.uploadIP),jo={code:to.status,message:JSON.stringify(to.responseText)};ns||to.statusText||to.status!==0||(ki.message="CORS blocked or network error"),je(jo,Dt._xhrRes(to,ns)),jo=null},oe.onProgress&&to.upload&&(to.upload.onprogress=function(ki){var ns=ki.total,jo=ki.loaded,$i=Math.floor(100*jo/ns);oe.onProgress({total:ns,loaded:jo,percent:($i>=100?100:$i)/100})}),to.send(oe.resources),to}},{key:"_xhrRes",value:function(oe,je){var Dt={};return oe.getAllResponseHeaders().trim().split(` +`).forEach(function(ni){if(ni){var Jt=ni.indexOf(":"),gi=ni.substr(0,Jt).trim().toLowerCase(),Fi=ni.substr(Jt+1).trim();Dt[gi]=Fi}}),{statusCode:oe.status,statusMessage:oe.statusText,headers:Dt,data:je}}},{key:"_xhrBody",value:function(oe,je,Dt){return oe.status===200&&je?{location:je,uploadIP:Dt}:{response:oe.responseText,uploadIP:Dt}}}])}(),ze=["unknown","image","video","audio","log"],_e=["name"],We=function(){return I(function oe(){r(this,oe)},[{key:"request",value:function(oe,je){var Dt=this,ni=oe.resources,Jt=ni===void 0?"":ni,gi=oe.headers,Fi=gi===void 0?{}:gi,To=oe.url,to=oe.downloadUrl,uo=to===void 0?"":to,Vs=To,ki=null,ns=uo.match(/^(https?:\/\/[^/]+\/)([^/]*\/?)(.*)$/),jo=decodeURIComponent(ns[3]),$i=jo.indexOf("?")>-1?jo.split("?")[0]:jo,jt={key:oe.fileKey?oe.fileKey:$i,success_action_status:200,"Content-Type":""},io={};if(WA){var bi=To.split("?sign=");if(bi.length>1){var vs=bi[1];Vs="".concat(bi[0],"?sign=").concat(encodeURIComponent("".concat(vs))),io.sign=decodeURIComponent(vs),io.signature=decodeURIComponent(vs)}}var HA={url:Vs,header:Fi,name:"file",filePath:Jt,formData:w(w({},jt),io),timeout:oe.timeout||3e5};if(cA){var ce=HA;ce.name,HA=w(w({},function(Ve,Ut){if(Ve==null)return{};var nt,It,Xt=function(be,Xe){if(be==null)return{};var vt={};for(var wt in be)if({}.hasOwnProperty.call(be,wt)){if(Xe.includes(wt))continue;vt[wt]=be[wt]}return vt}(Ve,Ut);if(Object.getOwnPropertySymbols){var $t=Object.getOwnPropertySymbols(Ve);for(It=0;It<$t.length;It++)nt=$t[It],Ut.includes(nt)||{}.propertyIsEnumerable.call(Ve,nt)&&(Xt[nt]=Ve[nt])}return Xt}(ce,_e)),{},{fileName:"file",fileType:ze[oe.fileType]})}return(ki=xe.uploadFile(w(w({},HA),{},{success:function(Ve){Dt._handleResponse({response:Ve,downloadUrl:uo,callback:je})},fail:function(Ve){Dt._handleResponse({response:Ve,downloadUrl:uo,callback:je})}}))).onProgressUpdate&&ki.onProgressUpdate(function(Ve){oe.onProgress&&oe.onProgress({total:Ve.totalBytesExpectedToSend,loaded:Ve.totalBytesSent,percent:Math.floor(Ve.progress)/100})}),ki}},{key:"_handleResponse",value:function(oe){var je=oe.downloadUrl,Dt=oe.response,ni=oe.callback,Jt=Dt.header,gi={};if(Jt)for(var Fi in Jt)Jt.hasOwnProperty(Fi)&&(gi[Fi.toLowerCase()]=Jt[Fi]);var To=+Dt.statusCode;To===200?ni(null,{statusCode:To,headers:gi,data:w(w({},Dt.data),{},{location:je})}):ni({code:To,message:JSON.stringify(Dt.data)},{statusCode:To,headers:gi,data:void 0})}}])}(),Le=function(){return I(function oe(){r(this,oe)},[{key:"request",value:function(oe,je){var Dt=this,ni=oe.resources,Jt=ni===void 0?"":ni,gi=oe.fileKey,Fi=gi===void 0?"":gi,To=oe.url,to=oe.downloadUrl,uo=to===void 0?"":to,Vs=new FormData;Vs.append("key",Fi),Vs.append("success_action_status",200),Vs.append("file",{uri:Jt,type:"application/octet-stream",name:"uploaded_file"}),fetch(To,{method:"POST",headers:{"Content-Type":"multipart/form-data"},body:Vs}).then(function(ki){Dt._handleResponse({response:ki,downloadUrl:uo,callback:je})}).catch(function(ki){Dt._handleResponse({response:ki,downloadUrl:uo,callback:je})})}},{key:"_handleResponse",value:function(oe){var je=oe.downloadUrl,Dt=oe.response,ni=oe.callback,Jt=Dt.headers,gi=Dt.status,Fi=Jt&&Jt.map||{};gi===200?ni(null,{statusCode:200,headers:Fi,data:{location:je}}):ni({code:gi,message:JSON.stringify(Dt)},{statusCode:gi,headers:Fi,data:void 0})}}])}();return function(){return I(function oe(){r(this,oe),this.retry=1,this.tryCount=0,this.systemClockOffset=0,this.httpRequest=ge?new We:ue?new Le:new pt,console.log("TIMUploadPlugin.VERSION: ".concat("1.4.3"))},[{key:"uploadFile",value:function(oe,je){var Dt=this;return this.httpRequest.request(oe,function(ni,Jt){ni&&Dt.tryCount=3e4&&(this.systemClockOffset=To-Fi,je=!0)}else Math.floor(oe.statusCode/100)===5&&(je=!0)}return je}}],[{key:"getVersion",value:function(){return"1.4.3"}}])}()})}(z1)),z1.exports}var xoA=PoA();const YoA=BW(xoA);/** * @vue/shared v3.5.13 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT -**//*! #__NO_SIDE_EFFECTS__ */function O3(t){const i=Object.create(null);for(const r of t.split(","))i[r]=1;return r=>r in i}const fa={},__=[],yQ=()=>{},ioA=()=>!1,yY=t=>t.charCodeAt(0)===111&&t.charCodeAt(1)===110&&(t.charCodeAt(2)>122||t.charCodeAt(2)<97),P3=t=>t.startsWith("onUpdate:"),eI=Object.assign,x3=(t,i)=>{const r=t.indexOf(i);r>-1&&t.splice(r,1)},ooA=Object.prototype.hasOwnProperty,qr=(t,i)=>ooA.call(t,i),Ms=Array.isArray,T_=t=>DY(t)==="[object Map]",wZ=t=>DY(t)==="[object Set]",$s=t=>typeof t=="function",fg=t=>typeof t=="string",lm=t=>typeof t=="symbol",Ta=t=>t!==null&&typeof t=="object",_Z=t=>(Ta(t)||$s(t))&&$s(t.then)&&$s(t.catch),TZ=Object.prototype.toString,DY=t=>TZ.call(t),soA=t=>DY(t).slice(8,-1),NZ=t=>DY(t)==="[object Object]",Y3=t=>fg(t)&&t!=="NaN"&&t[0]!=="-"&&""+parseInt(t,10)===t,ML=O3(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),SY=t=>{const i=Object.create(null);return r=>i[r]||(i[r]=t(r))},noA=/-(\w)/g,eh=SY(t=>t.replace(noA,(i,r)=>r?r.toUpperCase():"")),roA=/\B([A-Z])/g,Wy=SY(t=>t.replace(roA,"-$1").toLowerCase()),MY=SY(t=>t.charAt(0).toUpperCase()+t.slice(1)),qK=SY(t=>t?`on${MY(t)}`:""),Oy=(t,i)=>!Object.is(t,i),v1=(t,...i)=>{for(let r=0;r{Object.defineProperty(t,i,{configurable:!0,enumerable:!1,writable:l,value:r})},Yj=t=>{const i=parseFloat(t);return isNaN(i)?t:i},aoA=t=>{const i=fg(t)?Number(t):NaN;return isNaN(i)?t:i};let pz;const vY=()=>pz||(pz=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function hr(t){if(Ms(t)){const i={};for(let r=0;r{if(r){const l=r.split(coA);l.length>1&&(i[l[0].trim()]=l[1].trim())}}),i}function Xi(t){let i="";if(fg(t))i=t;else if(Ms(t))for(let r=0;r!!(t&&t.__v_isRef===!0),Di=t=>fg(t)?t:t==null?"":Ms(t)||Ta(t)&&(t.toString===TZ||!$s(t.toString))?kZ(t)?Di(t.value):JSON.stringify(t,LZ,2):String(t),LZ=(t,i)=>kZ(i)?LZ(t,i.value):T_(i)?{[`Map(${i.size})`]:[...i.entries()].reduce((r,[l,u],B)=>(r[KK(l,B)+" =>"]=u,r),{})}:wZ(i)?{[`Set(${i.size})`]:[...i.values()].map(r=>KK(r))}:lm(i)?KK(i):Ta(i)&&!Ms(i)&&!NZ(i)?String(i):i,KK=(t,i="")=>{var r;return lm(t)?`Symbol(${(r=t.description)!=null?r:i})`:t};/** +**//*! #__NO_SIDE_EFFECTS__ */function QW(t){const i=Object.create(null);for(const r of t.split(","))i[r]=1;return r=>r in i}const ya={},x_=[],vQ=()=>{},VoA=()=>!1,ZY=t=>t.charCodeAt(0)===111&&t.charCodeAt(1)===110&&(t.charCodeAt(2)>122||t.charCodeAt(2)<97),pW=t=>t.startsWith("onUpdate:"),oI=Object.assign,mW=(t,i)=>{const r=t.indexOf(i);r>-1&&t.splice(r,1)},JoA=Object.prototype.hasOwnProperty,Wr=(t,i)=>JoA.call(t,i),Ms=Array.isArray,Y_=t=>XY(t)==="[object Map]",I6=t=>XY(t)==="[object Set]",$s=t=>typeof t=="function",fg=t=>typeof t=="string",dm=t=>typeof t=="symbol",Na=t=>t!==null&&typeof t=="object",u6=t=>(Na(t)||$s(t))&&$s(t.then)&&$s(t.catch),E6=Object.prototype.toString,XY=t=>E6.call(t),HoA=t=>XY(t).slice(8,-1),d6=t=>XY(t)==="[object Object]",fW=t=>fg(t)&&t!=="NaN"&&t[0]!=="-"&&""+parseInt(t,10)===t,HL=QW(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),$Y=t=>{const i=Object.create(null);return r=>i[r]||(i[r]=t(r))},qoA=/-(\w)/g,oh=$Y(t=>t.replace(qoA,(i,r)=>r?r.toUpperCase():"")),KoA=/\B([A-Z])/g,tD=$Y(t=>t.replace(KoA,"-$1").toLowerCase()),AV=$Y(t=>t.charAt(0).toUpperCase()+t.slice(1)),mj=$Y(t=>t?`on${AV(t)}`:""),Hy=(t,i)=>!Object.is(t,i),Z1=(t,...i)=>{for(let r=0;r{Object.defineProperty(t,i,{configurable:!0,enumerable:!1,writable:l,value:r})},h3=t=>{const i=parseFloat(t);return isNaN(i)?t:i},joA=t=>{const i=fg(t)?Number(t):NaN;return isNaN(i)?t:i};let i8;const eV=()=>i8||(i8=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Br(t){if(Ms(t)){const i={};for(let r=0;r{if(r){const l=r.split(zoA);l.length>1&&(i[l[0].trim()]=l[1].trim())}}),i}function Zi(t){let i="";if(fg(t))i=t;else if(Ms(t))for(let r=0;r!!(t&&t.__v_isRef===!0),hi=t=>fg(t)?t:t==null?"":Ms(t)||Na(t)&&(t.toString===E6||!$s(t.toString))?B6(t)?hi(t.value):JSON.stringify(t,Q6,2):String(t),Q6=(t,i)=>B6(i)?Q6(t,i.value):Y_(i)?{[`Map(${i.size})`]:[...i.entries()].reduce((r,[l,I],h)=>(r[fj(l,h)+" =>"]=I,r),{})}:I6(i)?{[`Set(${i.size})`]:[...i.values()].map(r=>fj(r))}:dm(i)?fj(i):Na(i)&&!Ms(i)&&!d6(i)?String(i):i,fj=(t,i="")=>{var r;return dm(t)?`Symbol(${(r=t.description)!=null?r:i})`:t};/** * @vue/reactivity v3.5.13 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT -**/let Zd;class CoA{constructor(i=!1){this.detached=i,this._active=!0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=Zd,!i&&Zd&&(this.index=(Zd.scopes||(Zd.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let i,r;if(this.scopes)for(i=0,r=this.scopes.length;i0)return;if(RL){let i=RL;for(RL=void 0;i;){const r=i.next;i.next=void 0,i.flags&=-9,i=r}}let t;for(;vL;){let i=vL;for(vL=void 0;i;){const r=i.next;if(i.next=void 0,i.flags&=-9,i.flags&1)try{i.trigger()}catch(l){t||(t=l)}i=r}}if(t)throw t}function PZ(t){for(let i=t.deps;i;i=i.nextDep)i.version=-1,i.prevActiveLink=i.dep.activeLink,i.dep.activeLink=i}function xZ(t){let i,r=t.depsTail,l=r;for(;l;){const u=l.prevDep;l.version===-1?(l===r&&(r=u),H3(l),BoA(l)):i=l,l.dep.activeLink=l.prevActiveLink,l.prevActiveLink=void 0,l=u}t.deps=i,t.depsTail=r}function Vj(t){for(let i=t.deps;i;i=i.nextDep)if(i.dep.version!==i.version||i.dep.computed&&(YZ(i.dep.computed)||i.dep.version!==i.version))return!0;return!!t._dirty}function YZ(t){if(t.flags&4&&!(t.flags&16)||(t.flags&=-17,t.globalVersion===qL))return;t.globalVersion=qL;const i=t.dep;if(t.flags|=2,i.version>0&&!t.isSSR&&t.deps&&!Vj(t)){t.flags&=-3;return}const r=wa,l=tB;wa=t,tB=!0;try{PZ(t);const u=t.fn(t._value);(i.version===0||Oy(u,t._value))&&(t._value=u,i.version++)}catch(u){throw i.version++,u}finally{wa=r,tB=l,xZ(t),t.flags&=-3}}function H3(t,i=!1){const{dep:r,prevSub:l,nextSub:u}=t;if(l&&(l.nextSub=u,t.prevSub=void 0),u&&(u.prevSub=l,t.nextSub=void 0),r.subs===t&&(r.subs=l,!l&&r.computed)){r.computed.flags&=-5;for(let B=r.computed.deps;B;B=B.nextDep)H3(B,!0)}!i&&!--r.sc&&r.map&&r.map.delete(r.key)}function BoA(t){const{prevDep:i,nextDep:r}=t;i&&(i.nextDep=r,t.prevDep=void 0),r&&(r.prevDep=i,t.nextDep=void 0)}let tB=!0;const VZ=[];function zy(){VZ.push(tB),tB=!1}function Zy(){const t=VZ.pop();tB=t===void 0?!0:t}function mz(t){const{cleanup:i}=t;if(t.cleanup=void 0,i){const r=wa;wa=void 0;try{i()}finally{wa=r}}}let qL=0;class QoA{constructor(i,r){this.sub=i,this.dep=r,this.version=r.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class q3{constructor(i){this.computed=i,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0}track(i){if(!wa||!tB||wa===this.computed)return;let r=this.activeLink;if(r===void 0||r.sub!==wa)r=this.activeLink=new QoA(wa,this),wa.deps?(r.prevDep=wa.depsTail,wa.depsTail.nextDep=r,wa.depsTail=r):wa.deps=wa.depsTail=r,JZ(r);else if(r.version===-1&&(r.version=this.version,r.nextDep)){const l=r.nextDep;l.prevDep=r.prevDep,r.prevDep&&(r.prevDep.nextDep=l),r.prevDep=wa.depsTail,r.nextDep=void 0,wa.depsTail.nextDep=r,wa.depsTail=r,wa.deps===r&&(wa.deps=l)}return r}trigger(i){this.version++,qL++,this.notify(i)}notify(i){V3();try{for(let r=this.subs;r;r=r.prevSub)r.sub.notify()&&r.sub.dep.notify()}finally{J3()}}}function JZ(t){if(t.dep.sc++,t.sub.flags&4){const i=t.dep.computed;if(i&&!t.dep.subs){i.flags|=20;for(let l=i.deps;l;l=l.nextDep)JZ(l)}const r=t.dep.subs;r!==t&&(t.prevSub=r,r&&(r.nextSub=t)),t.dep.subs=t}}const H1=new WeakMap,rv=Symbol(""),Jj=Symbol(""),KL=Symbol("");function Eu(t,i,r){if(tB&&wa){let l=H1.get(t);l||H1.set(t,l=new Map);let u=l.get(r);u||(l.set(r,u=new q3),u.map=l,u.key=r),u.track()}}function nm(t,i,r,l,u,B){const f=H1.get(t);if(!f){qL++;return}const w=_=>{_&&_.trigger()};if(V3(),i==="clear")f.forEach(w);else{const _=Ms(t),k=_&&Y3(r);if(_&&r==="length"){const F=Number(l);f.forEach((j,IA)=>{(IA==="length"||IA===KL||!lm(IA)&&IA>=F)&&w(j)})}else switch((r!==void 0||f.has(void 0))&&w(f.get(r)),k&&w(f.get(KL)),i){case"add":_?k&&w(f.get("length")):(w(f.get(rv)),T_(t)&&w(f.get(Jj)));break;case"delete":_||(w(f.get(rv)),T_(t)&&w(f.get(Jj)));break;case"set":T_(t)&&w(f.get(rv));break}}J3()}function poA(t,i){const r=H1.get(t);return r&&r.get(i)}function a_(t){const i=Tr(t);return i===t?i:(Eu(i,"iterate",KL),ZC(t)?i:i.map(du))}function RY(t){return Eu(t=Tr(t),"iterate",KL),t}const moA={__proto__:null,[Symbol.iterator](){return WK(this,Symbol.iterator,du)},concat(...t){return a_(this).concat(...t.map(i=>Ms(i)?a_(i):i))},entries(){return WK(this,"entries",t=>(t[1]=du(t[1]),t))},every(t,i){return Xp(this,"every",t,i,void 0,arguments)},filter(t,i){return Xp(this,"filter",t,i,r=>r.map(du),arguments)},find(t,i){return Xp(this,"find",t,i,du,arguments)},findIndex(t,i){return Xp(this,"findIndex",t,i,void 0,arguments)},findLast(t,i){return Xp(this,"findLast",t,i,du,arguments)},findLastIndex(t,i){return Xp(this,"findLastIndex",t,i,void 0,arguments)},forEach(t,i){return Xp(this,"forEach",t,i,void 0,arguments)},includes(...t){return zK(this,"includes",t)},indexOf(...t){return zK(this,"indexOf",t)},join(t){return a_(this).join(t)},lastIndexOf(...t){return zK(this,"lastIndexOf",t)},map(t,i){return Xp(this,"map",t,i,void 0,arguments)},pop(){return $k(this,"pop")},push(...t){return $k(this,"push",t)},reduce(t,...i){return fz(this,"reduce",t,i)},reduceRight(t,...i){return fz(this,"reduceRight",t,i)},shift(){return $k(this,"shift")},some(t,i){return Xp(this,"some",t,i,void 0,arguments)},splice(...t){return $k(this,"splice",t)},toReversed(){return a_(this).toReversed()},toSorted(t){return a_(this).toSorted(t)},toSpliced(...t){return a_(this).toSpliced(...t)},unshift(...t){return $k(this,"unshift",t)},values(){return WK(this,"values",du)}};function WK(t,i,r){const l=RY(t),u=l[i]();return l!==t&&!ZC(t)&&(u._next=u.next,u.next=()=>{const B=u._next();return B.value&&(B.value=r(B.value)),B}),u}const foA=Array.prototype;function Xp(t,i,r,l,u,B){const f=RY(t),w=f!==t&&!ZC(t),_=f[i];if(_!==foA[i]){const j=_.apply(t,B);return w?du(j):j}let k=r;f!==t&&(w?k=function(j,IA){return r.call(this,du(j),IA,t)}:r.length>2&&(k=function(j,IA){return r.call(this,j,IA,t)}));const F=_.call(f,k,l);return w&&u?u(F):F}function fz(t,i,r,l){const u=RY(t);let B=r;return u!==t&&(ZC(t)?r.length>3&&(B=function(f,w,_){return r.call(this,f,w,_,t)}):B=function(f,w,_){return r.call(this,f,du(w),_,t)}),u[i](B,...l)}function zK(t,i,r){const l=Tr(t);Eu(l,"iterate",KL);const u=l[i](...r);return(u===-1||u===!1)&&W3(r[0])?(r[0]=Tr(r[0]),l[i](...r)):u}function $k(t,i,r=[]){zy(),V3();const l=Tr(t)[i].apply(t,r);return J3(),Zy(),l}const yoA=O3("__proto__,__v_isRef,__isVue"),HZ=new Set(Object.getOwnPropertyNames(Symbol).filter(t=>t!=="arguments"&&t!=="caller").map(t=>Symbol[t]).filter(lm));function DoA(t){lm(t)||(t=String(t));const i=Tr(this);return Eu(i,"has",t),i.hasOwnProperty(t)}class qZ{constructor(i=!1,r=!1){this._isReadonly=i,this._isShallow=r}get(i,r,l){if(r==="__v_skip")return i.__v_skip;const u=this._isReadonly,B=this._isShallow;if(r==="__v_isReactive")return!u;if(r==="__v_isReadonly")return u;if(r==="__v_isShallow")return B;if(r==="__v_raw")return l===(u?B?boA:zZ:B?WZ:jZ).get(i)||Object.getPrototypeOf(i)===Object.getPrototypeOf(l)?i:void 0;const f=Ms(i);if(!u){let _;if(f&&(_=moA[r]))return _;if(r==="hasOwnProperty")return DoA}const w=Reflect.get(i,r,AI(i)?i:l);return(lm(r)?HZ.has(r):yoA(r))||(u||Eu(i,"get",r),B)?w:AI(w)?f&&Y3(r)?w:w.value:Ta(w)?u?JC(w):iv(w):w}}class KZ extends qZ{constructor(i=!1){super(!1,i)}set(i,r,l,u){let B=i[r];if(!this._isShallow){const _=hv(B);if(!ZC(l)&&!hv(l)&&(B=Tr(B),l=Tr(l)),!Ms(i)&&AI(B)&&!AI(l))return _?!1:(B.value=l,!0)}const f=Ms(i)&&Y3(r)?Number(r)t,s1=t=>Reflect.getPrototypeOf(t);function woA(t,i,r){return function(...l){const u=this.__v_raw,B=Tr(u),f=T_(B),w=t==="entries"||t===Symbol.iterator&&f,_=t==="keys"&&f,k=u[t](...l),F=r?Hj:i?qj:du;return!i&&Eu(B,"iterate",_?Jj:rv),{next(){const{value:j,done:IA}=k.next();return IA?{value:j,done:IA}:{value:w?[F(j[0]),F(j[1])]:F(j),done:IA}},[Symbol.iterator](){return this}}}}function n1(t){return function(...i){return t==="delete"?!1:t==="clear"?void 0:this}}function _oA(t,i){const r={get(u){const B=this.__v_raw,f=Tr(B),w=Tr(u);t||(Oy(u,w)&&Eu(f,"get",u),Eu(f,"get",w));const{has:_}=s1(f),k=i?Hj:t?qj:du;if(_.call(f,u))return k(B.get(u));if(_.call(f,w))return k(B.get(w));B!==f&&B.get(u)},get size(){const u=this.__v_raw;return!t&&Eu(Tr(u),"iterate",rv),Reflect.get(u,"size",u)},has(u){const B=this.__v_raw,f=Tr(B),w=Tr(u);return t||(Oy(u,w)&&Eu(f,"has",u),Eu(f,"has",w)),u===w?B.has(u):B.has(u)||B.has(w)},forEach(u,B){const f=this,w=f.__v_raw,_=Tr(w),k=i?Hj:t?qj:du;return!t&&Eu(_,"iterate",rv),w.forEach((F,j)=>u.call(B,k(F),k(j),f))}};return eI(r,t?{add:n1("add"),set:n1("set"),delete:n1("delete"),clear:n1("clear")}:{add(u){!i&&!ZC(u)&&!hv(u)&&(u=Tr(u));const B=Tr(this);return s1(B).has.call(B,u)||(B.add(u),nm(B,"add",u,u)),this},set(u,B){!i&&!ZC(B)&&!hv(B)&&(B=Tr(B));const f=Tr(this),{has:w,get:_}=s1(f);let k=w.call(f,u);k||(u=Tr(u),k=w.call(f,u));const F=_.call(f,u);return f.set(u,B),k?Oy(B,F)&&nm(f,"set",u,B):nm(f,"add",u,B),this},delete(u){const B=Tr(this),{has:f,get:w}=s1(B);let _=f.call(B,u);_||(u=Tr(u),_=f.call(B,u)),w&&w.call(B,u);const k=B.delete(u);return _&&nm(B,"delete",u,void 0),k},clear(){const u=Tr(this),B=u.size!==0,f=u.clear();return B&&nm(u,"clear",void 0,void 0),f}}),["keys","values","entries",Symbol.iterator].forEach(u=>{r[u]=woA(u,t,i)}),r}function K3(t,i){const r=_oA(t,i);return(l,u,B)=>u==="__v_isReactive"?!t:u==="__v_isReadonly"?t:u==="__v_raw"?l:Reflect.get(qr(r,u)&&u in l?r:l,u,B)}const ToA={get:K3(!1,!1)},NoA={get:K3(!1,!0)},GoA={get:K3(!0,!1)};const jZ=new WeakMap,WZ=new WeakMap,zZ=new WeakMap,boA=new WeakMap;function koA(t){switch(t){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function LoA(t){return t.__v_skip||!Object.isExtensible(t)?0:koA(soA(t))}function iv(t){return hv(t)?t:j3(t,!1,MoA,ToA,jZ)}function UoA(t){return j3(t,!1,RoA,NoA,WZ)}function JC(t){return j3(t,!0,voA,GoA,zZ)}function j3(t,i,r,l,u){if(!Ta(t)||t.__v_raw&&!(i&&t.__v_isReactive))return t;const B=u.get(t);if(B)return B;const f=LoA(t);if(f===0)return t;const w=new Proxy(t,f===2?l:r);return u.set(t,w),w}function N_(t){return hv(t)?N_(t.__v_raw):!!(t&&t.__v_isReactive)}function hv(t){return!!(t&&t.__v_isReadonly)}function ZC(t){return!!(t&&t.__v_isShallow)}function W3(t){return t?!!t.__v_raw:!1}function Tr(t){const i=t&&t.__v_raw;return i?Tr(i):t}function FoA(t){return!qr(t,"__v_skip")&&Object.isExtensible(t)&&GZ(t,"__v_skip",!0),t}const du=t=>Ta(t)?iv(t):t,qj=t=>Ta(t)?JC(t):t;function AI(t){return t?t.__v_isRef===!0:!1}function Xe(t){return OoA(t,!1)}function OoA(t,i){return AI(t)?t:new PoA(t,i)}class PoA{constructor(i,r){this.dep=new q3,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=r?i:Tr(i),this._value=r?i:du(i),this.__v_isShallow=r}get value(){return this.dep.track(),this._value}set value(i){const r=this._rawValue,l=this.__v_isShallow||ZC(i)||hv(i);i=l?i:Tr(i),Oy(i,r)&&(this._rawValue=i,this._value=l?i:du(i),this.dep.trigger())}}function aA(t){return AI(t)?t.value:t}const xoA={get:(t,i,r)=>i==="__v_raw"?t:aA(Reflect.get(t,i,r)),set:(t,i,r,l)=>{const u=t[i];return AI(u)&&!AI(r)?(u.value=r,!0):Reflect.set(t,i,r,l)}};function ZZ(t){return N_(t)?t:new Proxy(t,xoA)}function Gs(t){const i=Ms(t)?new Array(t.length):{};for(const r in t)i[r]=XZ(t,r);return i}class YoA{constructor(i,r,l){this._object=i,this._key=r,this._defaultValue=l,this.__v_isRef=!0,this._value=void 0}get value(){const i=this._object[this._key];return this._value=i===void 0?this._defaultValue:i}set value(i){this._object[this._key]=i}get dep(){return poA(Tr(this._object),this._key)}}class VoA{constructor(i){this._getter=i,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}}function ZK(t,i,r){return AI(t)?t:$s(t)?new VoA(t):Ta(t)&&arguments.length>1?XZ(t,i,r):Xe(t)}function XZ(t,i,r){const l=t[i];return AI(l)?l:new YoA(t,i,r)}class JoA{constructor(i,r,l){this.fn=i,this.setter=r,this._value=void 0,this.dep=new q3(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=qL-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!r,this.isSSR=l}notify(){if(this.flags|=16,!(this.flags&8)&&wa!==this)return OZ(this,!0),!0}get value(){const i=this.dep.track();return YZ(this),i&&(i.version=this.dep.version),this._value}set value(i){this.setter&&this.setter(i)}}function HoA(t,i,r=!1){let l,u;return $s(t)?l=t:(l=t.get,u=t.set),new JoA(l,u,r)}const r1={},q1=new WeakMap;let zM;function qoA(t,i=!1,r=zM){if(r){let l=q1.get(r);l||q1.set(r,l=[]),l.push(t)}}function KoA(t,i,r=fa){const{immediate:l,deep:u,once:B,scheduler:f,augmentJob:w,call:_}=r,k=$A=>u?$A:ZC($A)||u===!1||u===0?rm($A,1):rm($A);let F,j,IA,rA,pA=!1,lA=!1;if(AI(t)?(j=()=>t.value,pA=ZC(t)):N_(t)?(j=()=>k(t),pA=!0):Ms(t)?(lA=!0,pA=t.some($A=>N_($A)||ZC($A)),j=()=>t.map($A=>{if(AI($A))return $A.value;if(N_($A))return k($A);if($s($A))return _?_($A,2):$A()})):$s(t)?i?j=_?()=>_(t,2):t:j=()=>{if(IA){zy();try{IA()}finally{Zy()}}const $A=zM;zM=F;try{return _?_(t,3,[rA]):t(rA)}finally{zM=$A}}:j=yQ,i&&u){const $A=j,De=u===!0?1/0:u;j=()=>rm($A(),De)}const cA=hoA(),TA=()=>{F.stop(),cA&&cA.active&&x3(cA.effects,F)};if(B&&i){const $A=i;i=(...De)=>{$A(...De),TA()}}let WA=lA?new Array(t.length).fill(r1):r1;const zA=$A=>{if(!(!(F.flags&1)||!F.dirty&&!$A))if(i){const De=F.run();if(u||pA||(lA?De.some((Ce,ct)=>Oy(Ce,WA[ct])):Oy(De,WA))){IA&&IA();const Ce=zM;zM=F;try{const ct=[De,WA===r1?void 0:lA&&WA[0]===r1?[]:WA,rA];_?_(i,3,ct):i(...ct),WA=De}finally{zM=Ce}}}else F.run()};return w&&w(zA),F=new UZ(j),F.scheduler=f?()=>f(zA,!1):zA,rA=$A=>qoA($A,!1,F),IA=F.onStop=()=>{const $A=q1.get(F);if($A){if(_)_($A,4);else for(const De of $A)De();q1.delete(F)}},i?l?zA(!0):WA=F.run():f?f(zA.bind(null,!0),!0):F.run(),TA.pause=F.pause.bind(F),TA.resume=F.resume.bind(F),TA.stop=TA,TA}function rm(t,i=1/0,r){if(i<=0||!Ta(t)||t.__v_skip||(r=r||new Set,r.has(t)))return t;if(r.add(t),i--,AI(t))rm(t.value,i,r);else if(Ms(t))for(let l=0;l{rm(l,i,r)});else if(NZ(t)){for(const l in t)rm(t[l],i,r);for(const l of Object.getOwnPropertySymbols(t))Object.prototype.propertyIsEnumerable.call(t,l)&&rm(t[l],i,r)}return t}/** +**/let tC;class tsA{constructor(i=!1){this.detached=i,this._active=!0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=tC,!i&&tC&&(this.index=(tC.scopes||(tC.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let i,r;if(this.scopes)for(i=0,r=this.scopes.length;i0)return;if(KL){let i=KL;for(KL=void 0;i;){const r=i.next;i.next=void 0,i.flags&=-9,i=r}}let t;for(;qL;){let i=qL;for(qL=void 0;i;){const r=i.next;if(i.next=void 0,i.flags&=-9,i.flags&1)try{i.trigger()}catch(l){t||(t=l)}i=r}}if(t)throw t}function y6(t){for(let i=t.deps;i;i=i.nextDep)i.version=-1,i.prevActiveLink=i.dep.activeLink,i.dep.activeLink=i}function D6(t){let i,r=t.depsTail,l=r;for(;l;){const I=l.prevDep;l.version===-1?(l===r&&(r=I),SW(l),osA(l)):i=l,l.dep.activeLink=l.prevActiveLink,l.prevActiveLink=void 0,l=I}t.deps=i,t.depsTail=r}function B3(t){for(let i=t.deps;i;i=i.nextDep)if(i.dep.version!==i.version||i.dep.computed&&(S6(i.dep.computed)||i.dep.version!==i.version))return!0;return!!t._dirty}function S6(t){if(t.flags&4&&!(t.flags&16)||(t.flags&=-17,t.globalVersion===uU))return;t.globalVersion=uU;const i=t.dep;if(t.flags|=2,i.version>0&&!t.isSSR&&t.deps&&!B3(t)){t.flags&=-3;return}const r=_a,l=oB;_a=t,oB=!0;try{y6(t);const I=t.fn(t._value);(i.version===0||Hy(I,t._value))&&(t._value=I,i.version++)}catch(I){throw i.version++,I}finally{_a=r,oB=l,D6(t),t.flags&=-3}}function SW(t,i=!1){const{dep:r,prevSub:l,nextSub:I}=t;if(l&&(l.nextSub=I,t.prevSub=void 0),I&&(I.prevSub=l,t.nextSub=void 0),r.subs===t&&(r.subs=l,!l&&r.computed)){r.computed.flags&=-5;for(let h=r.computed.deps;h;h=h.nextDep)SW(h,!0)}!i&&!--r.sc&&r.map&&r.map.delete(r.key)}function osA(t){const{prevDep:i,nextDep:r}=t;i&&(i.nextDep=r,t.prevDep=void 0),r&&(r.prevDep=i,t.nextDep=void 0)}let oB=!0;const M6=[];function iD(){M6.push(oB),oB=!1}function oD(){const t=M6.pop();oB=t===void 0?!0:t}function o8(t){const{cleanup:i}=t;if(t.cleanup=void 0,i){const r=_a;_a=void 0;try{i()}finally{_a=r}}}let uU=0;class ssA{constructor(i,r){this.sub=i,this.dep=r,this.version=r.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class MW{constructor(i){this.computed=i,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0}track(i){if(!_a||!oB||_a===this.computed)return;let r=this.activeLink;if(r===void 0||r.sub!==_a)r=this.activeLink=new ssA(_a,this),_a.deps?(r.prevDep=_a.depsTail,_a.depsTail.nextDep=r,_a.depsTail=r):_a.deps=_a.depsTail=r,v6(r);else if(r.version===-1&&(r.version=this.version,r.nextDep)){const l=r.nextDep;l.prevDep=r.prevDep,r.prevDep&&(r.prevDep.nextDep=l),r.prevDep=_a.depsTail,r.nextDep=void 0,_a.depsTail.nextDep=r,_a.depsTail=r,_a.deps===r&&(_a.deps=l)}return r}trigger(i){this.version++,uU++,this.notify(i)}notify(i){yW();try{for(let r=this.subs;r;r=r.prevSub)r.sub.notify()&&r.sub.dep.notify()}finally{DW()}}}function v6(t){if(t.dep.sc++,t.sub.flags&4){const i=t.dep.computed;if(i&&!t.dep.subs){i.flags|=20;for(let l=i.deps;l;l=l.nextDep)v6(l)}const r=t.dep.subs;r!==t&&(t.prevSub=r,r&&(r.nextSub=t)),t.dep.subs=t}}const dY=new WeakMap,Cv=Symbol(""),Q3=Symbol(""),EU=Symbol("");function Bu(t,i,r){if(oB&&_a){let l=dY.get(t);l||dY.set(t,l=new Map);let I=l.get(r);I||(l.set(r,I=new MW),I.map=l,I.key=r),I.track()}}function cm(t,i,r,l,I,h){const f=dY.get(t);if(!f){uU++;return}const w=_=>{_&&_.trigger()};if(yW(),i==="clear")f.forEach(w);else{const _=Ms(t),k=_&&fW(r);if(_&&r==="length"){const U=Number(l);f.forEach((j,lA)=>{(lA==="length"||lA===EU||!dm(lA)&&lA>=U)&&w(j)})}else switch((r!==void 0||f.has(void 0))&&w(f.get(r)),k&&w(f.get(EU)),i){case"add":_?k&&w(f.get("length")):(w(f.get(Cv)),Y_(t)&&w(f.get(Q3)));break;case"delete":_||(w(f.get(Cv)),Y_(t)&&w(f.get(Q3)));break;case"set":Y_(t)&&w(f.get(Cv));break}}DW()}function nsA(t,i){const r=dY.get(t);return r&&r.get(i)}function B_(t){const i=Nr(t);return i===t?i:(Bu(i,"iterate",EU),eh(t)?i:i.map(Qu))}function tV(t){return Bu(t=Nr(t),"iterate",EU),t}const rsA={__proto__:null,[Symbol.iterator](){return Dj(this,Symbol.iterator,Qu)},concat(...t){return B_(this).concat(...t.map(i=>Ms(i)?B_(i):i))},entries(){return Dj(this,"entries",t=>(t[1]=Qu(t[1]),t))},every(t,i){return tm(this,"every",t,i,void 0,arguments)},filter(t,i){return tm(this,"filter",t,i,r=>r.map(Qu),arguments)},find(t,i){return tm(this,"find",t,i,Qu,arguments)},findIndex(t,i){return tm(this,"findIndex",t,i,void 0,arguments)},findLast(t,i){return tm(this,"findLast",t,i,Qu,arguments)},findLastIndex(t,i){return tm(this,"findLastIndex",t,i,void 0,arguments)},forEach(t,i){return tm(this,"forEach",t,i,void 0,arguments)},includes(...t){return Sj(this,"includes",t)},indexOf(...t){return Sj(this,"indexOf",t)},join(t){return B_(this).join(t)},lastIndexOf(...t){return Sj(this,"lastIndexOf",t)},map(t,i){return tm(this,"map",t,i,void 0,arguments)},pop(){return dL(this,"pop")},push(...t){return dL(this,"push",t)},reduce(t,...i){return s8(this,"reduce",t,i)},reduceRight(t,...i){return s8(this,"reduceRight",t,i)},shift(){return dL(this,"shift")},some(t,i){return tm(this,"some",t,i,void 0,arguments)},splice(...t){return dL(this,"splice",t)},toReversed(){return B_(this).toReversed()},toSorted(t){return B_(this).toSorted(t)},toSpliced(...t){return B_(this).toSpliced(...t)},unshift(...t){return dL(this,"unshift",t)},values(){return Dj(this,"values",Qu)}};function Dj(t,i,r){const l=tV(t),I=l[i]();return l!==t&&!eh(t)&&(I._next=I.next,I.next=()=>{const h=I._next();return h.value&&(h.value=r(h.value)),h}),I}const asA=Array.prototype;function tm(t,i,r,l,I,h){const f=tV(t),w=f!==t&&!eh(t),_=f[i];if(_!==asA[i]){const j=_.apply(t,h);return w?Qu(j):j}let k=r;f!==t&&(w?k=function(j,lA){return r.call(this,Qu(j),lA,t)}:r.length>2&&(k=function(j,lA){return r.call(this,j,lA,t)}));const U=_.call(f,k,l);return w&&I?I(U):U}function s8(t,i,r,l){const I=tV(t);let h=r;return I!==t&&(eh(t)?r.length>3&&(h=function(f,w,_){return r.call(this,f,w,_,t)}):h=function(f,w,_){return r.call(this,f,Qu(w),_,t)}),I[i](h,...l)}function Sj(t,i,r){const l=Nr(t);Bu(l,"iterate",EU);const I=l[i](...r);return(I===-1||I===!1)&&wW(r[0])?(r[0]=Nr(r[0]),l[i](...r)):I}function dL(t,i,r=[]){iD(),yW();const l=Nr(t)[i].apply(t,r);return DW(),oD(),l}const gsA=QW("__proto__,__v_isRef,__isVue"),R6=new Set(Object.getOwnPropertyNames(Symbol).filter(t=>t!=="arguments"&&t!=="caller").map(t=>Symbol[t]).filter(dm));function csA(t){dm(t)||(t=String(t));const i=Nr(this);return Bu(i,"has",t),i.hasOwnProperty(t)}class w6{constructor(i=!1,r=!1){this._isReadonly=i,this._isShallow=r}get(i,r,l){if(r==="__v_skip")return i.__v_skip;const I=this._isReadonly,h=this._isShallow;if(r==="__v_isReactive")return!I;if(r==="__v_isReadonly")return I;if(r==="__v_isShallow")return h;if(r==="__v_raw")return l===(I?h?psA:G6:h?N6:T6).get(i)||Object.getPrototypeOf(i)===Object.getPrototypeOf(l)?i:void 0;const f=Ms(i);if(!I){let _;if(f&&(_=rsA[r]))return _;if(r==="hasOwnProperty")return csA}const w=Reflect.get(i,r,tI(i)?i:l);return(dm(r)?R6.has(r):gsA(r))||(I||Bu(i,"get",r),h)?w:tI(w)?f&&fW(r)?w:w.value:Na(w)?I?sd(w):lv(w):w}}class _6 extends w6{constructor(i=!1){super(!1,i)}set(i,r,l,I){let h=i[r];if(!this._isShallow){const _=vv(h);if(!eh(l)&&!vv(l)&&(h=Nr(h),l=Nr(l)),!Ms(i)&&tI(h)&&!tI(l))return _?!1:(h.value=l,!0)}const f=Ms(i)&&fW(r)?Number(r)t,w1=t=>Reflect.getPrototypeOf(t);function dsA(t,i,r){return function(...l){const I=this.__v_raw,h=Nr(I),f=Y_(h),w=t==="entries"||t===Symbol.iterator&&f,_=t==="keys"&&f,k=I[t](...l),U=r?p3:i?m3:Qu;return!i&&Bu(h,"iterate",_?Q3:Cv),{next(){const{value:j,done:lA}=k.next();return lA?{value:j,done:lA}:{value:w?[U(j[0]),U(j[1])]:U(j),done:lA}},[Symbol.iterator](){return this}}}}function _1(t){return function(...i){return t==="delete"?!1:t==="clear"?void 0:this}}function CsA(t,i){const r={get(I){const h=this.__v_raw,f=Nr(h),w=Nr(I);t||(Hy(I,w)&&Bu(f,"get",I),Bu(f,"get",w));const{has:_}=w1(f),k=i?p3:t?m3:Qu;if(_.call(f,I))return k(h.get(I));if(_.call(f,w))return k(h.get(w));h!==f&&h.get(I)},get size(){const I=this.__v_raw;return!t&&Bu(Nr(I),"iterate",Cv),Reflect.get(I,"size",I)},has(I){const h=this.__v_raw,f=Nr(h),w=Nr(I);return t||(Hy(I,w)&&Bu(f,"has",I),Bu(f,"has",w)),I===w?h.has(I):h.has(I)||h.has(w)},forEach(I,h){const f=this,w=f.__v_raw,_=Nr(w),k=i?p3:t?m3:Qu;return!t&&Bu(_,"iterate",Cv),w.forEach((U,j)=>I.call(h,k(U),k(j),f))}};return oI(r,t?{add:_1("add"),set:_1("set"),delete:_1("delete"),clear:_1("clear")}:{add(I){!i&&!eh(I)&&!vv(I)&&(I=Nr(I));const h=Nr(this);return w1(h).has.call(h,I)||(h.add(I),cm(h,"add",I,I)),this},set(I,h){!i&&!eh(h)&&!vv(h)&&(h=Nr(h));const f=Nr(this),{has:w,get:_}=w1(f);let k=w.call(f,I);k||(I=Nr(I),k=w.call(f,I));const U=_.call(f,I);return f.set(I,h),k?Hy(h,U)&&cm(f,"set",I,h):cm(f,"add",I,h),this},delete(I){const h=Nr(this),{has:f,get:w}=w1(h);let _=f.call(h,I);_||(I=Nr(I),_=f.call(h,I)),w&&w.call(h,I);const k=h.delete(I);return _&&cm(h,"delete",I,void 0),k},clear(){const I=Nr(this),h=I.size!==0,f=I.clear();return h&&cm(I,"clear",void 0,void 0),f}}),["keys","values","entries",Symbol.iterator].forEach(I=>{r[I]=dsA(I,t,i)}),r}function vW(t,i){const r=CsA(t,i);return(l,I,h)=>I==="__v_isReactive"?!t:I==="__v_isReadonly"?t:I==="__v_raw"?l:Reflect.get(Wr(r,I)&&I in l?r:l,I,h)}const hsA={get:vW(!1,!1)},BsA={get:vW(!1,!0)},QsA={get:vW(!0,!1)};const T6=new WeakMap,N6=new WeakMap,G6=new WeakMap,psA=new WeakMap;function msA(t){switch(t){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function fsA(t){return t.__v_skip||!Object.isExtensible(t)?0:msA(HoA(t))}function lv(t){return vv(t)?t:RW(t,!1,IsA,hsA,T6)}function ysA(t){return RW(t,!1,EsA,BsA,N6)}function sd(t){return RW(t,!0,usA,QsA,G6)}function RW(t,i,r,l,I){if(!Na(t)||t.__v_raw&&!(i&&t.__v_isReactive))return t;const h=I.get(t);if(h)return h;const f=fsA(t);if(f===0)return t;const w=new Proxy(t,f===2?l:r);return I.set(t,w),w}function V_(t){return vv(t)?V_(t.__v_raw):!!(t&&t.__v_isReactive)}function vv(t){return!!(t&&t.__v_isReadonly)}function eh(t){return!!(t&&t.__v_isShallow)}function wW(t){return t?!!t.__v_raw:!1}function Nr(t){const i=t&&t.__v_raw;return i?Nr(i):t}function DsA(t){return!Wr(t,"__v_skip")&&Object.isExtensible(t)&&C6(t,"__v_skip",!0),t}const Qu=t=>Na(t)?lv(t):t,m3=t=>Na(t)?sd(t):t;function tI(t){return t?t.__v_isRef===!0:!1}function Ze(t){return SsA(t,!1)}function SsA(t,i){return tI(t)?t:new MsA(t,i)}class MsA{constructor(i,r){this.dep=new MW,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=r?i:Nr(i),this._value=r?i:Qu(i),this.__v_isShallow=r}get value(){return this.dep.track(),this._value}set value(i){const r=this._rawValue,l=this.__v_isShallow||eh(i)||vv(i);i=l?i:Nr(i),Hy(i,r)&&(this._rawValue=i,this._value=l?i:Qu(i),this.dep.trigger())}}function aA(t){return tI(t)?t.value:t}const vsA={get:(t,i,r)=>i==="__v_raw"?t:aA(Reflect.get(t,i,r)),set:(t,i,r,l)=>{const I=t[i];return tI(I)&&!tI(r)?(I.value=r,!0):Reflect.set(t,i,r,l)}};function b6(t){return V_(t)?t:new Proxy(t,vsA)}function Gs(t){const i=Ms(t)?new Array(t.length):{};for(const r in t)i[r]=k6(t,r);return i}class RsA{constructor(i,r,l){this._object=i,this._key=r,this._defaultValue=l,this.__v_isRef=!0,this._value=void 0}get value(){const i=this._object[this._key];return this._value=i===void 0?this._defaultValue:i}set value(i){this._object[this._key]=i}get dep(){return nsA(Nr(this._object),this._key)}}class wsA{constructor(i){this._getter=i,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}}function Mj(t,i,r){return tI(t)?t:$s(t)?new wsA(t):Na(t)&&arguments.length>1?k6(t,i,r):Ze(t)}function k6(t,i,r){const l=t[i];return tI(l)?l:new RsA(t,i,r)}class _sA{constructor(i,r,l){this.fn=i,this.setter=r,this._value=void 0,this.dep=new MW(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=uU-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!r,this.isSSR=l}notify(){if(this.flags|=16,!(this.flags&8)&&_a!==this)return f6(this,!0),!0}get value(){const i=this.dep.track();return S6(this),i&&(i.version=this.dep.version),this._value}set value(i){this.setter&&this.setter(i)}}function TsA(t,i,r=!1){let l,I;return $s(t)?l=t:(l=t.get,I=t.set),new _sA(l,I,r)}const T1={},CY=new WeakMap;let iv;function NsA(t,i=!1,r=iv){if(r){let l=CY.get(r);l||CY.set(r,l=[]),l.push(t)}}function GsA(t,i,r=ya){const{immediate:l,deep:I,once:h,scheduler:f,augmentJob:w,call:_}=r,k=ue=>I?ue:eh(ue)||I===!1||I===0?lm(ue,1):lm(ue);let U,j,lA,rA,mA=!1,IA=!1;if(tI(t)?(j=()=>t.value,mA=eh(t)):V_(t)?(j=()=>k(t),mA=!0):Ms(t)?(IA=!0,mA=t.some(ue=>V_(ue)||eh(ue)),j=()=>t.map(ue=>{if(tI(ue))return ue.value;if(V_(ue))return k(ue);if($s(ue))return _?_(ue,2):ue()})):$s(t)?i?j=_?()=>_(t,2):t:j=()=>{if(lA){iD();try{lA()}finally{oD()}}const ue=iv;iv=U;try{return _?_(t,3,[rA]):t(rA)}finally{iv=ue}}:j=vQ,i&&I){const ue=j,xe=I===!0?1/0:I;j=()=>lm(ue(),xe)}const cA=isA(),TA=()=>{U.stop(),cA&&cA.active&&mW(cA.effects,U)};if(h&&i){const ue=i;i=(...xe)=>{ue(...xe),TA()}}let WA=IA?new Array(t.length).fill(T1):T1;const ge=ue=>{if(!(!(U.flags&1)||!U.dirty&&!ue))if(i){const xe=U.run();if(I||mA||(IA?xe.some((Be,ut)=>Hy(Be,WA[ut])):Hy(xe,WA))){lA&&lA();const Be=iv;iv=U;try{const ut=[xe,WA===T1?void 0:IA&&WA[0]===T1?[]:WA,rA];_?_(i,3,ut):i(...ut),WA=xe}finally{iv=Be}}}else U.run()};return w&&w(ge),U=new p6(j),U.scheduler=f?()=>f(ge,!1):ge,rA=ue=>NsA(ue,!1,U),lA=U.onStop=()=>{const ue=CY.get(U);if(ue){if(_)_(ue,4);else for(const xe of ue)xe();CY.delete(U)}},i?l?ge(!0):WA=U.run():f?f(ge.bind(null,!0),!0):U.run(),TA.pause=U.pause.bind(U),TA.resume=U.resume.bind(U),TA.stop=TA,TA}function lm(t,i=1/0,r){if(i<=0||!Na(t)||t.__v_skip||(r=r||new Set,r.has(t)))return t;if(r.add(t),i--,tI(t))lm(t.value,i,r);else if(Ms(t))for(let l=0;l{lm(l,i,r)});else if(d6(t)){for(const l in t)lm(t[l],i,r);for(const l of Object.getOwnPropertySymbols(t))Object.prototype.propertyIsEnumerable.call(t,l)&&lm(t[l],i,r)}return t}/** * @vue/runtime-core v3.5.13 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT -**/function cU(t,i,r,l){try{return l?t(...l):t()}catch(u){wY(u,i,r)}}function oB(t,i,r,l){if($s(t)){const u=cU(t,i,r,l);return u&&_Z(u)&&u.catch(B=>{wY(B,i,r)}),u}if(Ms(t)){const u=[];for(let B=0;B>>1,u=uE[l],B=jL(u);B=jL(r)?uE.push(t):uE.splice(WoA(i),0,t),t.flags|=1,A6()}}function A6(){K1||(K1=$Z.then(t6))}function zoA(t){Ms(t)?G_.push(...t):_y&&t.id===-1?_y.splice(u_+1,0,t):t.flags&1||(G_.push(t),t.flags|=1),A6()}function yz(t,i,r=CQ+1){for(;rjL(r)-jL(l));if(G_.length=0,_y){_y.push(...i);return}for(_y=i,u_=0;u_<_y.length;u_++){const r=_y[u_];r.flags&4&&(r.flags&=-2),r.flags&8||r(),r.flags&=-2}_y=null,u_=0}}const jL=t=>t.id==null?t.flags&2?-1:1/0:t.id;function t6(t){try{for(CQ=0;CQ{l._d&&Uz(-1);const B=j1(i);let f;try{f=t(...u)}finally{j1(B),l._d&&Uz(1)}return f};return l._n=!0,l._c=!0,l._d=!0,l}function _a(t,i){if($l===null)return t;const r=kY($l),l=t.dirs||(t.dirs=[]);for(let u=0;ut.__isTeleport,wL=t=>t&&(t.disabled||t.disabled===""),Dz=t=>t&&(t.defer||t.defer===""),Sz=t=>typeof SVGElement<"u"&&t instanceof SVGElement,Mz=t=>typeof MathMLElement=="function"&&t instanceof MathMLElement,Kj=(t,i)=>{const r=t&&t.to;return fg(r)?i?i(r):null:r},s6={name:"Teleport",__isTeleport:!0,process(t,i,r,l,u,B,f,w,_,k){const{mc:F,pc:j,pbc:IA,o:{insert:rA,querySelector:pA,createText:lA,createComment:cA}}=k,TA=wL(i.props);let{shapeFlag:WA,children:zA,dynamicChildren:$A}=i;if(t==null){const De=i.el=lA(""),Ce=i.anchor=lA("");rA(De,r,l),rA(Ce,r,l);const ct=(Ke,Dt)=>{WA&16&&(u&&u.isCE&&(u.ce._teleportTarget=Ke),F(zA,Ke,Dt,u,B,f,w,_))},mt=()=>{const Ke=i.target=Kj(i.props,pA),Dt=n6(Ke,i,lA,rA);Ke&&(f!=="svg"&&Sz(Ke)?f="svg":f!=="mathml"&&Mz(Ke)&&(f="mathml"),TA||(ct(Ke,Dt),R1(i,!1)))};TA&&(ct(r,Ce),R1(i,!0)),Dz(i.props)?lE(()=>{mt(),i.el.__isMounted=!0},B):mt()}else{if(Dz(i.props)&&!t.el.__isMounted){lE(()=>{s6.process(t,i,r,l,u,B,f,w,_,k),delete t.el.__isMounted},B);return}i.el=t.el,i.targetStart=t.targetStart;const De=i.anchor=t.anchor,Ce=i.target=t.target,ct=i.targetAnchor=t.targetAnchor,mt=wL(t.props),Ke=mt?r:Ce,Dt=mt?De:ct;if(f==="svg"||Sz(Ce)?f="svg":(f==="mathml"||Mz(Ce))&&(f="mathml"),$A?(IA(t.dynamicChildren,$A,Ke,u,B,f,w),X3(t,i,!0)):_||j(t,i,Ke,Dt,u,B,f,w,!1),TA)mt?i.props&&t.props&&i.props.to!==t.props.to&&(i.props.to=t.props.to):a1(i,r,De,k,1);else if((i.props&&i.props.to)!==(t.props&&t.props.to)){const qt=i.target=Kj(i.props,pA);qt&&a1(i,qt,null,k,0)}else mt&&a1(i,Ce,ct,k,1);R1(i,TA)}},remove(t,i,r,{um:l,o:{remove:u}},B){const{shapeFlag:f,children:w,anchor:_,targetStart:k,targetAnchor:F,target:j,props:IA}=t;if(j&&(u(k),u(F)),B&&u(_),f&16){const rA=B||!wL(IA);for(let pA=0;pA{t.isMounted=!0}),E6(()=>{t.isUnmounting=!0}),t}const FC=[Function,Array],r6={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:FC,onEnter:FC,onAfterEnter:FC,onEnterCancelled:FC,onBeforeLeave:FC,onLeave:FC,onAfterLeave:FC,onLeaveCancelled:FC,onBeforeAppear:FC,onAppear:FC,onAfterAppear:FC,onAppearCancelled:FC},a6=t=>{const i=t.subTree;return i.component?a6(i.component):i},AsA={name:"BaseTransition",props:r6,setup(t,{slots:i}){const r=zsA(),l=$oA();return()=>{const u=i.default&&l6(i.default(),!0);if(!u||!u.length)return;const B=g6(u),f=Tr(t),{mode:w}=f;if(l.isLeaving)return XK(B);const _=vz(B);if(!_)return XK(B);let k=jj(_,f,l,r,j=>k=j);_.type!==EE&&WL(_,k);let F=r.subTree&&vz(r.subTree);if(F&&F.type!==EE&&!XM(_,F)&&a6(r).type!==EE){let j=jj(F,f,l,r);if(WL(F,j),w==="out-in"&&_.type!==EE)return l.isLeaving=!0,j.afterLeave=()=>{l.isLeaving=!1,r.job.flags&8||r.update(),delete j.afterLeave,F=void 0},XK(B);w==="in-out"&&_.type!==EE?j.delayLeave=(IA,rA,pA)=>{const lA=c6(l,F);lA[String(F.key)]=F,IA[Ty]=()=>{rA(),IA[Ty]=void 0,delete k.delayedLeave,F=void 0},k.delayedLeave=()=>{pA(),delete k.delayedLeave,F=void 0}}:F=void 0}else F&&(F=void 0);return B}}};function g6(t){let i=t[0];if(t.length>1){for(const r of t)if(r.type!==EE){i=r;break}}return i}const esA=AsA;function c6(t,i){const{leavingVNodes:r}=t;let l=r.get(i.type);return l||(l=Object.create(null),r.set(i.type,l)),l}function jj(t,i,r,l,u){const{appear:B,mode:f,persisted:w=!1,onBeforeEnter:_,onEnter:k,onAfterEnter:F,onEnterCancelled:j,onBeforeLeave:IA,onLeave:rA,onAfterLeave:pA,onLeaveCancelled:lA,onBeforeAppear:cA,onAppear:TA,onAfterAppear:WA,onAppearCancelled:zA}=i,$A=String(t.key),De=c6(r,t),Ce=(Ke,Dt)=>{Ke&&oB(Ke,l,9,Dt)},ct=(Ke,Dt)=>{const qt=Dt[1];Ce(Ke,Dt),Ms(Ke)?Ke.every(It=>It.length<=1)&&qt():Ke.length<=1&&qt()},mt={mode:f,persisted:w,beforeEnter(Ke){let Dt=_;if(!r.isMounted)if(B)Dt=cA||_;else return;Ke[Ty]&&Ke[Ty](!0);const qt=De[$A];qt&&XM(t,qt)&&qt.el[Ty]&&qt.el[Ty](),Ce(Dt,[Ke])},enter(Ke){let Dt=k,qt=F,It=j;if(!r.isMounted)if(B)Dt=TA||k,qt=WA||F,It=zA||j;else return;let ge=!1;const qe=Ke[g1]=ft=>{ge||(ge=!0,ft?Ce(It,[Ke]):Ce(qt,[Ke]),mt.delayedLeave&&mt.delayedLeave(),Ke[g1]=void 0)};Dt?ct(Dt,[Ke,qe]):qe()},leave(Ke,Dt){const qt=String(t.key);if(Ke[g1]&&Ke[g1](!0),r.isUnmounting)return Dt();Ce(IA,[Ke]);let It=!1;const ge=Ke[Ty]=qe=>{It||(It=!0,Dt(),qe?Ce(lA,[Ke]):Ce(pA,[Ke]),Ke[Ty]=void 0,De[qt]===t&&delete De[qt])};De[qt]=t,rA?ct(rA,[Ke,ge]):ge()},clone(Ke){const Dt=jj(Ke,i,r,l,u);return u&&u(Dt),Dt}};return mt}function XK(t){if(TY(t))return t=Jy(t),t.children=null,t}function vz(t){if(!TY(t))return o6(t.type)&&t.children?g6(t.children):t;const{shapeFlag:i,children:r}=t;if(r){if(i&16)return r[0];if(i&32&&$s(r.default))return r.default()}}function WL(t,i){t.shapeFlag&6&&t.component?(t.transition=i,WL(t.component.subTree,i)):t.shapeFlag&128?(t.ssContent.transition=i.clone(t.ssContent),t.ssFallback.transition=i.clone(t.ssFallback)):t.transition=i}function l6(t,i=!1,r){let l=[],u=0;for(let B=0;B1)for(let B=0;BW1(pA,i&&(Ms(i)?i[lA]:i),r,l,u));return}if(b_(l)&&!u){l.shapeFlag&512&&l.type.__asyncResolved&&l.component.subTree.component&&W1(t,i,r,l.component.subTree);return}const B=l.shapeFlag&4?kY(l.component):l.el,f=u?null:B,{i:w,r:_}=t,k=i&&i.r,F=w.refs===fa?w.refs={}:w.refs,j=w.setupState,IA=Tr(j),rA=j===fa?()=>!1:pA=>qr(IA,pA);if(k!=null&&k!==_&&(fg(k)?(F[k]=null,rA(k)&&(j[k]=null)):AI(k)&&(k.value=null)),$s(_))cU(_,w,12,[f,F]);else{const pA=fg(_),lA=AI(_);if(pA||lA){const cA=()=>{if(t.f){const TA=pA?rA(_)?j[_]:F[_]:_.value;u?Ms(TA)&&x3(TA,B):Ms(TA)?TA.includes(B)||TA.push(B):pA?(F[_]=[B],rA(_)&&(j[_]=F[_])):(_.value=[B],t.k&&(F[t.k]=_.value))}else pA?(F[_]=f,rA(_)&&(j[_]=f)):lA&&(_.value=f,t.k&&(F[t.k]=f))};f?(cA.id=-1,lE(cA,r)):cA()}}}vY().requestIdleCallback;vY().cancelIdleCallback;const b_=t=>!!t.type.__asyncLoader,TY=t=>t.type.__isKeepAlive;function tsA(t,i){u6(t,"a",i)}function isA(t,i){u6(t,"da",i)}function u6(t,i,r=LI){const l=t.__wdc||(t.__wdc=()=>{let u=r;for(;u;){if(u.isDeactivated)return;u=u.parent}return t()});if(NY(i,l,r),r){let u=r.parent;for(;u&&u.parent;)TY(u.parent.vnode)&&osA(l,i,r,u),u=u.parent}}function osA(t,i,r,l){const u=NY(i,t,l,!0);Kg(()=>{x3(l[i],u)},r)}function NY(t,i,r=LI,l=!1){if(r){const u=r[t]||(r[t]=[]),B=i.__weh||(i.__weh=(...f)=>{zy();const w=IU(r),_=oB(i,r,t,f);return w(),Zy(),_});return l?u.unshift(B):u.push(B),B}}const Im=t=>(i,r=LI)=>{(!XL||t==="sp")&&NY(t,(...l)=>i(...l),r)},ssA=Im("bm"),hc=Im("m"),nsA=Im("bu"),rsA=Im("u"),E6=Im("bum"),Kg=Im("um"),asA=Im("sp"),gsA=Im("rtg"),csA=Im("rtc");function lsA(t,i=LI){NY("ec",t,i)}const IsA="components";function usA(t,i){return dsA(IsA,t,!0,i)||t}const EsA=Symbol.for("v-ndc");function dsA(t,i,r=!0,l=!1){const u=$l||LI;if(u){const B=u.type;{const w=enA(B,!1);if(w&&(w===i||w===eh(i)||w===MY(eh(i))))return B}const f=Rz(u[t]||B[t],i)||Rz(u.appContext[t],i);return!f&&l?B:f}}function Rz(t,i){return t&&(t[i]||t[eh(i)]||t[MY(eh(i))])}function eC(t,i,r,l){let u;const B=r,f=Ms(t);if(f||fg(t)){const w=f&&N_(t);let _=!1;w&&(_=!ZC(t),t=RY(t)),u=new Array(t.length);for(let k=0,F=t.length;ki(w,_,void 0,B));else{const w=Object.keys(t);u=new Array(w.length);for(let _=0,k=w.length;_ZL(i)?!(i.type===EE||i.type===Kr&&!d6(i.children)):!0)?t:null}const Wj=t=>t?b6(t)?kY(t):Wj(t.parent):null,_L=eI(Object.create(null),{$:t=>t,$el:t=>t.vnode.el,$data:t=>t.data,$props:t=>t.props,$attrs:t=>t.attrs,$slots:t=>t.slots,$refs:t=>t.refs,$parent:t=>Wj(t.parent),$root:t=>Wj(t.root),$host:t=>t.ce,$emit:t=>t.emit,$options:t=>h6(t),$forceUpdate:t=>t.f||(t.f=()=>{z3(t.update)}),$nextTick:t=>t.n||(t.n=lU.bind(t.proxy)),$watch:t=>LsA.bind(t)}),$K=(t,i)=>t!==fa&&!t.__isScriptSetup&&qr(t,i),CsA={get({_:t},i){if(i==="__v_skip")return!0;const{ctx:r,setupState:l,data:u,props:B,accessCache:f,type:w,appContext:_}=t;let k;if(i[0]!=="$"){const rA=f[i];if(rA!==void 0)switch(rA){case 1:return l[i];case 2:return u[i];case 4:return r[i];case 3:return B[i]}else{if($K(l,i))return f[i]=1,l[i];if(u!==fa&&qr(u,i))return f[i]=2,u[i];if((k=t.propsOptions[0])&&qr(k,i))return f[i]=3,B[i];if(r!==fa&&qr(r,i))return f[i]=4,r[i];zj&&(f[i]=0)}}const F=_L[i];let j,IA;if(F)return i==="$attrs"&&Eu(t.attrs,"get",""),F(t);if((j=w.__cssModules)&&(j=j[i]))return j;if(r!==fa&&qr(r,i))return f[i]=4,r[i];if(IA=_.config.globalProperties,qr(IA,i))return IA[i]},set({_:t},i,r){const{data:l,setupState:u,ctx:B}=t;return $K(u,i)?(u[i]=r,!0):l!==fa&&qr(l,i)?(l[i]=r,!0):qr(t.props,i)||i[0]==="$"&&i.slice(1)in t?!1:(B[i]=r,!0)},has({_:{data:t,setupState:i,accessCache:r,ctx:l,appContext:u,propsOptions:B}},f){let w;return!!r[f]||t!==fa&&qr(t,f)||$K(i,f)||(w=B[0])&&qr(w,f)||qr(l,f)||qr(_L,f)||qr(u.config.globalProperties,f)},defineProperty(t,i,r){return r.get!=null?t._.accessCache[i]=0:qr(r,"value")&&this.set(t,i,r.value,null),Reflect.defineProperty(t,i,r)}};function wz(t){return Ms(t)?t.reduce((i,r)=>(i[r]=null,i),{}):t}let zj=!0;function hsA(t){const i=h6(t),r=t.proxy,l=t.ctx;zj=!1,i.beforeCreate&&_z(i.beforeCreate,t,"bc");const{data:u,computed:B,methods:f,watch:w,provide:_,inject:k,created:F,beforeMount:j,mounted:IA,beforeUpdate:rA,updated:pA,activated:lA,deactivated:cA,beforeDestroy:TA,beforeUnmount:WA,destroyed:zA,unmounted:$A,render:De,renderTracked:Ce,renderTriggered:ct,errorCaptured:mt,serverPrefetch:Ke,expose:Dt,inheritAttrs:qt,components:It,directives:ge,filters:qe}=i;if(k&&BsA(k,l,null),f)for(const Vt in f){const gi=f[Vt];$s(gi)&&(l[Vt]=gi.bind(r))}if(u){const Vt=u.call(r,r);Ta(Vt)&&(t.data=iv(Vt))}if(zj=!0,B)for(const Vt in B){const gi=B[Vt],Fi=$s(gi)?gi.bind(r,r):$s(gi.get)?gi.get.bind(r,r):yQ,_o=!$s(gi)&&$s(gi.set)?gi.set.bind(r):yQ,to=Gt({get:Fi,set:_o});Object.defineProperty(l,Vt,{enumerable:!0,configurable:!0,get:()=>to.value,set:uo=>to.value=uo})}if(w)for(const Vt in w)C6(w[Vt],l,r,Vt);if(_){const Vt=$s(_)?_.call(r):_;Reflect.ownKeys(Vt).forEach(gi=>{ed(gi,Vt[gi])})}F&&_z(F,t,"c");function ni(Vt,gi){Ms(gi)?gi.forEach(Fi=>Vt(Fi.bind(r))):gi&&Vt(gi.bind(r))}if(ni(ssA,j),ni(hc,IA),ni(nsA,rA),ni(rsA,pA),ni(tsA,lA),ni(isA,cA),ni(lsA,mt),ni(csA,Ce),ni(gsA,ct),ni(E6,WA),ni(Kg,$A),ni(asA,Ke),Ms(Dt))if(Dt.length){const Vt=t.exposed||(t.exposed={});Dt.forEach(gi=>{Object.defineProperty(Vt,gi,{get:()=>r[gi],set:Fi=>r[gi]=Fi})})}else t.exposed||(t.exposed={});De&&t.render===yQ&&(t.render=De),qt!=null&&(t.inheritAttrs=qt),It&&(t.components=It),ge&&(t.directives=ge),Ke&&I6(t)}function BsA(t,i,r=yQ){Ms(t)&&(t=Zj(t));for(const l in t){const u=t[l];let B;Ta(u)?"default"in u?B=FI(u.from||l,u.default,!0):B=FI(u.from||l):B=FI(u),AI(B)?Object.defineProperty(i,l,{enumerable:!0,configurable:!0,get:()=>B.value,set:f=>B.value=f}):i[l]=B}}function _z(t,i,r){oB(Ms(t)?t.map(l=>l.bind(i.proxy)):t.bind(i.proxy),i,r)}function C6(t,i,r,l){let u=l.includes(".")?w6(r,l):()=>r[l];if(fg(t)){const B=i[t];$s(B)&&ia(u,B)}else if($s(t))ia(u,t.bind(r));else if(Ta(t))if(Ms(t))t.forEach(B=>C6(B,i,r,l));else{const B=$s(t.handler)?t.handler.bind(r):i[t.handler];$s(B)&&ia(u,B,t)}}function h6(t){const i=t.type,{mixins:r,extends:l}=i,{mixins:u,optionsCache:B,config:{optionMergeStrategies:f}}=t.appContext,w=B.get(i);let _;return w?_=w:!u.length&&!r&&!l?_=i:(_={},u.length&&u.forEach(k=>z1(_,k,f,!0)),z1(_,i,f)),Ta(i)&&B.set(i,_),_}function z1(t,i,r,l=!1){const{mixins:u,extends:B}=i;B&&z1(t,B,r,!0),u&&u.forEach(f=>z1(t,f,r,!0));for(const f in i)if(!(l&&f==="expose")){const w=QsA[f]||r&&r[f];t[f]=w?w(t[f],i[f]):i[f]}return t}const QsA={data:Tz,props:Nz,emits:Nz,methods:aL,computed:aL,beforeCreate:aE,created:aE,beforeMount:aE,mounted:aE,beforeUpdate:aE,updated:aE,beforeDestroy:aE,beforeUnmount:aE,destroyed:aE,unmounted:aE,activated:aE,deactivated:aE,errorCaptured:aE,serverPrefetch:aE,components:aL,directives:aL,watch:msA,provide:Tz,inject:psA};function Tz(t,i){return i?t?function(){return eI($s(t)?t.call(this,this):t,$s(i)?i.call(this,this):i)}:i:t}function psA(t,i){return aL(Zj(t),Zj(i))}function Zj(t){if(Ms(t)){const i={};for(let r=0;r1)return r&&$s(i)?i.call(l&&l.proxy):i}}const Q6={},p6=()=>Object.create(Q6),m6=t=>Object.getPrototypeOf(t)===Q6;function DsA(t,i,r,l=!1){const u={},B=p6();t.propsDefaults=Object.create(null),f6(t,i,u,B);for(const f in t.propsOptions[0])f in u||(u[f]=void 0);r?t.props=l?u:UoA(u):t.type.props?t.props=u:t.props=B,t.attrs=B}function SsA(t,i,r,l){const{props:u,attrs:B,vnode:{patchFlag:f}}=t,w=Tr(u),[_]=t.propsOptions;let k=!1;if((l||f>0)&&!(f&16)){if(f&8){const F=t.vnode.dynamicProps;for(let j=0;j{_=!0;const[IA,rA]=y6(j,i,!0);eI(f,IA),rA&&w.push(...rA)};!r&&i.mixins.length&&i.mixins.forEach(F),t.extends&&F(t.extends),t.mixins&&t.mixins.forEach(F)}if(!B&&!_)return Ta(t)&&l.set(t,__),__;if(Ms(B))for(let F=0;Ft[0]==="_"||t==="$stable",Z3=t=>Ms(t)?t.map(QQ):[QQ(t)],vsA=(t,i,r)=>{if(i._n)return i;const l=Li((...u)=>Z3(i(...u)),r);return l._c=!1,l},S6=(t,i,r)=>{const l=t._ctx;for(const u in t){if(D6(u))continue;const B=t[u];if($s(B))i[u]=vsA(u,B,l);else if(B!=null){const f=Z3(B);i[u]=()=>f}}},M6=(t,i)=>{const r=Z3(i);t.slots.default=()=>r},v6=(t,i,r)=>{for(const l in i)(r||l!=="_")&&(t[l]=i[l])},RsA=(t,i,r)=>{const l=t.slots=p6();if(t.vnode.shapeFlag&32){const u=i._;u?(v6(l,i,r),r&&GZ(l,"_",u,!0)):S6(i,l)}else i&&M6(t,i)},wsA=(t,i,r)=>{const{vnode:l,slots:u}=t;let B=!0,f=fa;if(l.shapeFlag&32){const w=i._;w?r&&w===1?B=!1:v6(u,i,r):(B=!i.$stable,S6(i,u)),f=i}else i&&(M6(t,i),f={default:1});if(B)for(const w in u)!D6(w)&&f[w]==null&&delete u[w]},lE=VsA;function _sA(t){return TsA(t)}function TsA(t,i){const r=vY();r.__VUE__=!0;const{insert:l,remove:u,patchProp:B,createElement:f,createText:w,createComment:_,setText:k,setElementText:F,parentNode:j,nextSibling:IA,setScopeId:rA=yQ,insertStaticContent:pA}=t,lA=(HA,le,xe,Lt=null,it=null,gt=null,Xt=void 0,$t=null,be=!!le.dynamicChildren)=>{if(HA===le)return;HA&&!XM(HA,le)&&(Lt=$i(HA),uo(HA,it,gt,!0),HA=null),le.patchFlag===-2&&(be=!1,le.dynamicChildren=null);const{type:je,ref:Mt,shapeFlag:Rt}=le;switch(je){case bY:cA(HA,le,xe,Lt);break;case EE:TA(HA,le,xe,Lt);break;case ej:HA==null&&WA(le,xe,Lt,Xt);break;case Kr:It(HA,le,xe,Lt,it,gt,Xt,$t,be);break;default:Rt&1?De(HA,le,xe,Lt,it,gt,Xt,$t,be):Rt&6?ge(HA,le,xe,Lt,it,gt,Xt,$t,be):(Rt&64||Rt&128)&&je.process(HA,le,xe,Lt,it,gt,Xt,$t,be,bi)}Mt!=null&&it&&W1(Mt,HA&&HA.ref,gt,le||HA,!le)},cA=(HA,le,xe,Lt)=>{if(HA==null)l(le.el=w(le.children),xe,Lt);else{const it=le.el=HA.el;le.children!==HA.children&&k(it,le.children)}},TA=(HA,le,xe,Lt)=>{HA==null?l(le.el=_(le.children||""),xe,Lt):le.el=HA.el},WA=(HA,le,xe,Lt)=>{[HA.el,HA.anchor]=pA(HA.children,le,xe,Lt,HA.el,HA.anchor)},zA=({el:HA,anchor:le},xe,Lt)=>{let it;for(;HA&&HA!==le;)it=IA(HA),l(HA,xe,Lt),HA=it;l(le,xe,Lt)},$A=({el:HA,anchor:le})=>{let xe;for(;HA&&HA!==le;)xe=IA(HA),u(HA),HA=xe;u(le)},De=(HA,le,xe,Lt,it,gt,Xt,$t,be)=>{le.type==="svg"?Xt="svg":le.type==="math"&&(Xt="mathml"),HA==null?Ce(le,xe,Lt,it,gt,Xt,$t,be):Ke(HA,le,it,gt,Xt,$t,be)},Ce=(HA,le,xe,Lt,it,gt,Xt,$t)=>{let be,je;const{props:Mt,shapeFlag:Rt,transition:Oi,dirs:Qo}=HA;if(be=HA.el=f(HA.type,gt,Mt&&Mt.is,Mt),Rt&8?F(be,HA.children):Rt&16&&mt(HA.children,be,null,Lt,it,Aj(HA,gt),Xt,$t),Qo&&VM(HA,null,Lt,"created"),ct(be,HA,HA.scopeId,Xt,Lt),Mt){for(const oo in Mt)oo!=="value"&&!ML(oo)&&B(be,oo,null,Mt[oo],gt,Lt);"value"in Mt&&B(be,"value",null,Mt.value,gt),(je=Mt.onVnodeBeforeMount)&&dQ(je,Lt,HA)}Qo&&VM(HA,null,Lt,"beforeMount");const To=NsA(it,Oi);To&&Oi.beforeEnter(be),l(be,le,xe),((je=Mt&&Mt.onVnodeMounted)||To||Qo)&&lE(()=>{je&&dQ(je,Lt,HA),To&&Oi.enter(be),Qo&&VM(HA,null,Lt,"mounted")},it)},ct=(HA,le,xe,Lt,it)=>{if(xe&&rA(HA,xe),Lt)for(let gt=0;gt{for(let je=be;je{const $t=le.el=HA.el;let{patchFlag:be,dynamicChildren:je,dirs:Mt}=le;be|=HA.patchFlag&16;const Rt=HA.props||fa,Oi=le.props||fa;let Qo;if(xe&&JM(xe,!1),(Qo=Oi.onVnodeBeforeUpdate)&&dQ(Qo,xe,le,HA),Mt&&VM(le,HA,xe,"beforeUpdate"),xe&&JM(xe,!0),(Rt.innerHTML&&Oi.innerHTML==null||Rt.textContent&&Oi.textContent==null)&&F($t,""),je?Dt(HA.dynamicChildren,je,$t,xe,Lt,Aj(le,it),gt):Xt||gi(HA,le,$t,null,xe,Lt,Aj(le,it),gt,!1),be>0){if(be&16)qt($t,Rt,Oi,xe,it);else if(be&2&&Rt.class!==Oi.class&&B($t,"class",null,Oi.class,it),be&4&&B($t,"style",Rt.style,Oi.style,it),be&8){const To=le.dynamicProps;for(let oo=0;oo{Qo&&dQ(Qo,xe,le,HA),Mt&&VM(le,HA,xe,"updated")},Lt)},Dt=(HA,le,xe,Lt,it,gt,Xt)=>{for(let $t=0;$t{if(le!==xe){if(le!==fa)for(const gt in le)!ML(gt)&&!(gt in xe)&&B(HA,gt,le[gt],null,it,Lt);for(const gt in xe){if(ML(gt))continue;const Xt=xe[gt],$t=le[gt];Xt!==$t&>!=="value"&&B(HA,gt,$t,Xt,it,Lt)}"value"in xe&&B(HA,"value",le.value,xe.value,it)}},It=(HA,le,xe,Lt,it,gt,Xt,$t,be)=>{const je=le.el=HA?HA.el:w(""),Mt=le.anchor=HA?HA.anchor:w("");let{patchFlag:Rt,dynamicChildren:Oi,slotScopeIds:Qo}=le;Qo&&($t=$t?$t.concat(Qo):Qo),HA==null?(l(je,xe,Lt),l(Mt,xe,Lt),mt(le.children||[],xe,Mt,it,gt,Xt,$t,be)):Rt>0&&Rt&64&&Oi&&HA.dynamicChildren?(Dt(HA.dynamicChildren,Oi,xe,it,gt,Xt,$t),(le.key!=null||it&&le===it.subTree)&&X3(HA,le,!0)):gi(HA,le,xe,Mt,it,gt,Xt,$t,be)},ge=(HA,le,xe,Lt,it,gt,Xt,$t,be)=>{le.slotScopeIds=$t,HA==null?le.shapeFlag&512?it.ctx.activate(le,xe,Lt,Xt,be):qe(le,xe,Lt,it,gt,Xt,be):ft(HA,le,be)},qe=(HA,le,xe,Lt,it,gt,Xt)=>{const $t=HA.component=WsA(HA,Lt,it);if(TY(HA)&&($t.ctx.renderer=bi),ZsA($t,!1,Xt),$t.asyncDep){if(it&&it.registerDep($t,ni,Xt),!HA.el){const be=$t.subTree=Nt(EE);TA(null,be,le,xe)}}else ni($t,HA,le,xe,it,gt,Xt)},ft=(HA,le,xe)=>{const Lt=le.component=HA.component;if(xsA(HA,le,xe))if(Lt.asyncDep&&!Lt.asyncResolved){Vt(Lt,le,xe);return}else Lt.next=le,Lt.update();else le.el=HA.el,Lt.vnode=le},ni=(HA,le,xe,Lt,it,gt,Xt)=>{const $t=()=>{if(HA.isMounted){let{next:Rt,bu:Oi,u:Qo,parent:To,vnode:oo}=HA;{const an=R6(HA);if(an){Rt&&(Rt.el=oo.el,Vt(HA,Rt,Xt)),an.asyncDep.then(()=>{HA.isUnmounted||$t()});return}}let No=Rt,An;JM(HA,!1),Rt?(Rt.el=oo.el,Vt(HA,Rt,Xt)):Rt=oo,Oi&&v1(Oi),(An=Rt.props&&Rt.props.onVnodeBeforeUpdate)&&dQ(An,To,Rt,oo),JM(HA,!0);const rn=kz(HA),Es=HA.subTree;HA.subTree=rn,lA(Es,rn,j(Es.el),$i(Es),HA,it,gt),Rt.el=rn.el,No===null&&YsA(HA,rn.el),Qo&&lE(Qo,it),(An=Rt.props&&Rt.props.onVnodeUpdated)&&lE(()=>dQ(An,To,Rt,oo),it)}else{let Rt;const{el:Oi,props:Qo}=le,{bm:To,m:oo,parent:No,root:An,type:rn}=HA,Es=b_(le);JM(HA,!1),To&&v1(To),!Es&&(Rt=Qo&&Qo.onVnodeBeforeMount)&&dQ(Rt,No,le),JM(HA,!0);{An.ce&&An.ce._injectChildStyle(rn);const an=HA.subTree=kz(HA);lA(null,an,xe,Lt,HA,it,gt),le.el=an.el}if(oo&&lE(oo,it),!Es&&(Rt=Qo&&Qo.onVnodeMounted)){const an=le;lE(()=>dQ(Rt,No,an),it)}(le.shapeFlag&256||No&&b_(No.vnode)&&No.vnode.shapeFlag&256)&&HA.a&&lE(HA.a,it),HA.isMounted=!0,le=xe=Lt=null}};HA.scope.on();const be=HA.effect=new UZ($t);HA.scope.off();const je=HA.update=be.run.bind(be),Mt=HA.job=be.runIfDirty.bind(be);Mt.i=HA,Mt.id=HA.uid,be.scheduler=()=>z3(Mt),JM(HA,!0),je()},Vt=(HA,le,xe)=>{le.component=HA;const Lt=HA.vnode.props;HA.vnode=le,HA.next=null,SsA(HA,le.props,Lt,xe),wsA(HA,le.children,xe),zy(),yz(HA),Zy()},gi=(HA,le,xe,Lt,it,gt,Xt,$t,be=!1)=>{const je=HA&&HA.children,Mt=HA?HA.shapeFlag:0,Rt=le.children,{patchFlag:Oi,shapeFlag:Qo}=le;if(Oi>0){if(Oi&128){_o(je,Rt,xe,Lt,it,gt,Xt,$t,be);return}else if(Oi&256){Fi(je,Rt,xe,Lt,it,gt,Xt,$t,be);return}}Qo&8?(Mt&16&&Ko(je,it,gt),Rt!==je&&F(xe,Rt)):Mt&16?Qo&16?_o(je,Rt,xe,Lt,it,gt,Xt,$t,be):Ko(je,it,gt,!0):(Mt&8&&F(xe,""),Qo&16&&mt(Rt,xe,Lt,it,gt,Xt,$t,be))},Fi=(HA,le,xe,Lt,it,gt,Xt,$t,be)=>{HA=HA||__,le=le||__;const je=HA.length,Mt=le.length,Rt=Math.min(je,Mt);let Oi;for(Oi=0;OiMt?Ko(HA,it,gt,!0,!1,Rt):mt(le,xe,Lt,it,gt,Xt,$t,be,Rt)},_o=(HA,le,xe,Lt,it,gt,Xt,$t,be)=>{let je=0;const Mt=le.length;let Rt=HA.length-1,Oi=Mt-1;for(;je<=Rt&&je<=Oi;){const Qo=HA[je],To=le[je]=be?Ny(le[je]):QQ(le[je]);if(XM(Qo,To))lA(Qo,To,xe,null,it,gt,Xt,$t,be);else break;je++}for(;je<=Rt&&je<=Oi;){const Qo=HA[Rt],To=le[Oi]=be?Ny(le[Oi]):QQ(le[Oi]);if(XM(Qo,To))lA(Qo,To,xe,null,it,gt,Xt,$t,be);else break;Rt--,Oi--}if(je>Rt){if(je<=Oi){const Qo=Oi+1,To=QoOi)for(;je<=Rt;)uo(HA[je],it,gt,!0),je++;else{const Qo=je,To=je,oo=new Map;for(je=To;je<=Oi;je++){const Jn=le[je]=be?Ny(le[je]):QQ(le[je]);Jn.key!=null&&oo.set(Jn.key,je)}let No,An=0;const rn=Oi-To+1;let Es=!1,an=0;const yo=new Array(rn);for(je=0;je=rn){uo(Jn,it,gt,!0);continue}let Br;if(Jn.key!=null)Br=oo.get(Jn.key);else for(No=To;No<=Oi;No++)if(yo[No-To]===0&&XM(Jn,le[No])){Br=No;break}Br===void 0?uo(Jn,it,gt,!0):(yo[Br-To]=je+1,Br>=an?an=Br:Es=!0,lA(Jn,le[Br],xe,null,it,gt,Xt,$t,be),An++)}const mA=Es?GsA(yo):__;for(No=mA.length-1,je=rn-1;je>=0;je--){const Jn=To+je,Br=le[Jn],ds=Jn+1{const{el:gt,type:Xt,transition:$t,children:be,shapeFlag:je}=HA;if(je&6){to(HA.component.subTree,le,xe,Lt);return}if(je&128){HA.suspense.move(le,xe,Lt);return}if(je&64){Xt.move(HA,le,xe,bi);return}if(Xt===Kr){l(gt,le,xe);for(let Rt=0;Rt$t.enter(gt),it);else{const{leave:Rt,delayLeave:Oi,afterLeave:Qo}=$t,To=()=>l(gt,le,xe),oo=()=>{Rt(gt,()=>{To(),Qo&&Qo()})};Oi?Oi(gt,To,oo):oo()}else l(gt,le,xe)},uo=(HA,le,xe,Lt=!1,it=!1)=>{const{type:gt,props:Xt,ref:$t,children:be,dynamicChildren:je,shapeFlag:Mt,patchFlag:Rt,dirs:Oi,cacheIndex:Qo}=HA;if(Rt===-2&&(it=!1),$t!=null&&W1($t,null,xe,HA,!0),Qo!=null&&(le.renderCache[Qo]=void 0),Mt&256){le.ctx.deactivate(HA);return}const To=Mt&1&&Oi,oo=!b_(HA);let No;if(oo&&(No=Xt&&Xt.onVnodeBeforeUnmount)&&dQ(No,le,HA),Mt&6)ns(HA.component,xe,Lt);else{if(Mt&128){HA.suspense.unmount(xe,Lt);return}To&&VM(HA,null,le,"beforeUnmount"),Mt&64?HA.type.remove(HA,le,xe,bi,Lt):je&&!je.hasOnce&&(gt!==Kr||Rt>0&&Rt&64)?Ko(je,le,xe,!1,!0):(gt===Kr&&Rt&384||!it&&Mt&16)&&Ko(be,le,xe),Lt&&Vs(HA)}(oo&&(No=Xt&&Xt.onVnodeUnmounted)||To)&&lE(()=>{No&&dQ(No,le,HA),To&&VM(HA,null,le,"unmounted")},xe)},Vs=HA=>{const{type:le,el:xe,anchor:Lt,transition:it}=HA;if(le===Kr){ki(xe,Lt);return}if(le===ej){$A(HA);return}const gt=()=>{u(xe),it&&!it.persisted&&it.afterLeave&&it.afterLeave()};if(HA.shapeFlag&1&&it&&!it.persisted){const{leave:Xt,delayLeave:$t}=it,be=()=>Xt(xe,gt);$t?$t(HA.el,gt,be):be()}else gt()},ki=(HA,le)=>{let xe;for(;HA!==le;)xe=IA(HA),u(HA),HA=xe;u(le)},ns=(HA,le,xe)=>{const{bum:Lt,scope:it,job:gt,subTree:Xt,um:$t,m:be,a:je}=HA;bz(be),bz(je),Lt&&v1(Lt),it.stop(),gt&&(gt.flags|=8,uo(Xt,HA,le,xe)),$t&&lE($t,le),lE(()=>{HA.isUnmounted=!0},le),le&&le.pendingBranch&&!le.isUnmounted&&HA.asyncDep&&!HA.asyncResolved&&HA.suspenseId===le.pendingId&&(le.deps--,le.deps===0&&le.resolve())},Ko=(HA,le,xe,Lt=!1,it=!1,gt=0)=>{for(let Xt=gt;Xt{if(HA.shapeFlag&6)return $i(HA.component.subTree);if(HA.shapeFlag&128)return HA.suspense.next();const le=IA(HA.anchor||HA.el),xe=le&&le[i6];return xe?IA(xe):le};let jt=!1;const io=(HA,le,xe)=>{HA==null?le._vnode&&uo(le._vnode,null,null,!0):lA(le._vnode||null,HA,le,null,null,null,xe),le._vnode=HA,jt||(jt=!0,yz(),e6(),jt=!1)},bi={p:lA,um:uo,m:to,r:Vs,mt:qe,mc:mt,pc:gi,pbc:Dt,n:$i,o:t};return{render:io,hydrate:void 0,createApp:ysA(io)}}function Aj({type:t,props:i},r){return r==="svg"&&t==="foreignObject"||r==="mathml"&&t==="annotation-xml"&&i&&i.encoding&&i.encoding.includes("html")?void 0:r}function JM({effect:t,job:i},r){r?(t.flags|=32,i.flags|=4):(t.flags&=-33,i.flags&=-5)}function NsA(t,i){return(!t||t&&!t.pendingBranch)&&i&&!i.persisted}function X3(t,i,r=!1){const l=t.children,u=i.children;if(Ms(l)&&Ms(u))for(let B=0;B>1,t[r[w]]0&&(i[l]=r[B-1]),r[B]=l)}}for(B=r.length,f=r[B-1];B-- >0;)r[B]=f,f=i[f];return r}function R6(t){const i=t.subTree.component;if(i)return i.asyncDep&&!i.asyncResolved?i:R6(i)}function bz(t){if(t)for(let i=0;iFI(bsA);function j_(t,i){return $3(t,null,i)}function ia(t,i,r){return $3(t,i,r)}function $3(t,i,r=fa){const{immediate:l,deep:u,flush:B,once:f}=r,w=eI({},r),_=i&&l||!i&&B!=="post";let k;if(XL){if(B==="sync"){const rA=ksA();k=rA.__watcherHandles||(rA.__watcherHandles=[])}else if(!_){const rA=()=>{};return rA.stop=yQ,rA.resume=yQ,rA.pause=yQ,rA}}const F=LI;w.call=(rA,pA,lA)=>oB(rA,F,pA,lA);let j=!1;B==="post"?w.scheduler=rA=>{lE(rA,F&&F.suspense)}:B!=="sync"&&(j=!0,w.scheduler=(rA,pA)=>{pA?rA():z3(rA)}),w.augmentJob=rA=>{i&&(rA.flags|=4),j&&(rA.flags|=2,F&&(rA.id=F.uid,rA.i=F))};const IA=KoA(t,i,w);return XL&&(k?k.push(IA):_&&IA()),IA}function LsA(t,i,r){const l=this.proxy,u=fg(t)?t.includes(".")?w6(l,t):()=>l[t]:t.bind(l,l);let B;$s(i)?B=i:(B=i.handler,r=i);const f=IU(this),w=$3(u,B.bind(l),r);return f(),w}function w6(t,i){const r=i.split(".");return()=>{let l=t;for(let u=0;ui==="modelValue"||i==="model-value"?t.modelModifiers:t[`${i}Modifiers`]||t[`${eh(i)}Modifiers`]||t[`${Wy(i)}Modifiers`];function FsA(t,i,...r){if(t.isUnmounted)return;const l=t.vnode.props||fa;let u=r;const B=i.startsWith("update:"),f=B&&UsA(l,i.slice(7));f&&(f.trim&&(u=r.map(F=>fg(F)?F.trim():F)),f.number&&(u=r.map(Yj)));let w,_=l[w=qK(i)]||l[w=qK(eh(i))];!_&&B&&(_=l[w=qK(Wy(i))]),_&&oB(_,t,6,u);const k=l[w+"Once"];if(k){if(!t.emitted)t.emitted={};else if(t.emitted[w])return;t.emitted[w]=!0,oB(k,t,6,u)}}function _6(t,i,r=!1){const l=i.emitsCache,u=l.get(t);if(u!==void 0)return u;const B=t.emits;let f={},w=!1;if(!$s(t)){const _=k=>{const F=_6(k,i,!0);F&&(w=!0,eI(f,F))};!r&&i.mixins.length&&i.mixins.forEach(_),t.extends&&_(t.extends),t.mixins&&t.mixins.forEach(_)}return!B&&!w?(Ta(t)&&l.set(t,null),null):(Ms(B)?B.forEach(_=>f[_]=null):eI(f,B),Ta(t)&&l.set(t,f),f)}function GY(t,i){return!t||!yY(i)?!1:(i=i.slice(2).replace(/Once$/,""),qr(t,i[0].toLowerCase()+i.slice(1))||qr(t,Wy(i))||qr(t,i))}function kz(t){const{type:i,vnode:r,proxy:l,withProxy:u,propsOptions:[B],slots:f,attrs:w,emit:_,render:k,renderCache:F,props:j,data:IA,setupState:rA,ctx:pA,inheritAttrs:lA}=t,cA=j1(t);let TA,WA;try{if(r.shapeFlag&4){const $A=u||l,De=$A;TA=QQ(k.call(De,$A,F,j,rA,IA,pA)),WA=w}else{const $A=i;TA=QQ($A.length>1?$A(j,{attrs:w,slots:f,emit:_}):$A(j,null)),WA=i.props?w:OsA(w)}}catch($A){TL.length=0,wY($A,t,1),TA=Nt(EE)}let zA=TA;if(WA&&lA!==!1){const $A=Object.keys(WA),{shapeFlag:De}=zA;$A.length&&De&7&&(B&&$A.some(P3)&&(WA=PsA(WA,B)),zA=Jy(zA,WA,!1,!0))}return r.dirs&&(zA=Jy(zA,null,!1,!0),zA.dirs=zA.dirs?zA.dirs.concat(r.dirs):r.dirs),r.transition&&WL(zA,r.transition),TA=zA,j1(cA),TA}const OsA=t=>{let i;for(const r in t)(r==="class"||r==="style"||yY(r))&&((i||(i={}))[r]=t[r]);return i},PsA=(t,i)=>{const r={};for(const l in t)(!P3(l)||!(l.slice(9)in i))&&(r[l]=t[l]);return r};function xsA(t,i,r){const{props:l,children:u,component:B}=t,{props:f,children:w,patchFlag:_}=i,k=B.emitsOptions;if(i.dirs||i.transition)return!0;if(r&&_>=0){if(_&1024)return!0;if(_&16)return l?Lz(l,f,k):!!f;if(_&8){const F=i.dynamicProps;for(let j=0;jt.__isSuspense;function VsA(t,i){i&&i.pendingBranch?Ms(t)?i.effects.push(...t):i.effects.push(t):zoA(t)}const Kr=Symbol.for("v-fgt"),bY=Symbol.for("v-txt"),EE=Symbol.for("v-cmt"),ej=Symbol.for("v-stc"),TL=[];let Xd=null;function ce(t=!1){TL.push(Xd=t?null:[])}function JsA(){TL.pop(),Xd=TL[TL.length-1]||null}let zL=1;function Uz(t,i=!1){zL+=t,t<0&&Xd&&i&&(Xd.hasOnce=!0)}function N6(t){return t.dynamicChildren=zL>0?Xd||__:null,JsA(),zL>0&&Xd&&Xd.push(t),t}function rt(t,i,r,l,u,B){return N6(we(t,i,r,l,u,B,!0))}function Bi(t,i,r,l,u){return N6(Nt(t,i,r,l,u,!0))}function ZL(t){return t?t.__v_isVNode===!0:!1}function XM(t,i){return t.type===i.type&&t.key===i.key}const G6=({key:t})=>t??null,w1=({ref:t,ref_key:i,ref_for:r})=>(typeof t=="number"&&(t=""+t),t!=null?fg(t)||AI(t)||$s(t)?{i:$l,r:t,k:i,f:!!r}:t:null);function we(t,i=null,r=null,l=0,u=null,B=t===Kr?0:1,f=!1,w=!1){const _={__v_isVNode:!0,__v_skip:!0,type:t,props:i,key:i&&G6(i),ref:i&&w1(i),scopeId:_Y,slotScopeIds:null,children:r,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:B,patchFlag:l,dynamicProps:u,dynamicChildren:null,appContext:null,ctx:$l};return w?(AW(_,r),B&128&&t.normalize(_)):r&&(_.shapeFlag|=fg(r)?8:16),zL>0&&!f&&Xd&&(_.patchFlag>0||B&6)&&_.patchFlag!==32&&Xd.push(_),_}const Nt=HsA;function HsA(t,i=null,r=null,l=0,u=null,B=!1){if((!t||t===EsA)&&(t=EE),ZL(t)){const w=Jy(t,i,!0);return r&&AW(w,r),zL>0&&!B&&Xd&&(w.shapeFlag&6?Xd[Xd.indexOf(t)]=w:Xd.push(w)),w.patchFlag=-2,w}if(tnA(t)&&(t=t.__vccOpts),i){i=qsA(i);let{class:w,style:_}=i;w&&!fg(w)&&(i.class=Xi(w)),Ta(_)&&(W3(_)&&!Ms(_)&&(_=eI({},_)),i.style=hr(_))}const f=fg(t)?1:T6(t)?128:o6(t)?64:Ta(t)?4:$s(t)?2:0;return we(t,i,r,l,u,f,B,!0)}function qsA(t){return t?W3(t)||m6(t)?eI({},t):t:null}function Jy(t,i,r=!1,l=!1){const{props:u,ref:B,patchFlag:f,children:w,transition:_}=t,k=i?$j(u||{},i):u,F={__v_isVNode:!0,__v_skip:!0,type:t.type,props:k,key:k&&G6(k),ref:i&&i.ref?r&&B?Ms(B)?B.concat(w1(i)):[B,w1(i)]:w1(i):B,scopeId:t.scopeId,slotScopeIds:t.slotScopeIds,children:w,target:t.target,targetStart:t.targetStart,targetAnchor:t.targetAnchor,staticCount:t.staticCount,shapeFlag:t.shapeFlag,patchFlag:i&&t.type!==Kr?f===-1?16:f|16:f,dynamicProps:t.dynamicProps,dynamicChildren:t.dynamicChildren,appContext:t.appContext,dirs:t.dirs,transition:_,component:t.component,suspense:t.suspense,ssContent:t.ssContent&&Jy(t.ssContent),ssFallback:t.ssFallback&&Jy(t.ssFallback),el:t.el,anchor:t.anchor,ctx:t.ctx,ce:t.ce};return _&&l&&WL(F,_.clone(F)),F}function ya(t=" ",i=0){return Nt(bY,null,t,i)}function si(t="",i=!1){return i?(ce(),Bi(EE,null,t)):Nt(EE,null,t)}function QQ(t){return t==null||typeof t=="boolean"?Nt(EE):Ms(t)?Nt(Kr,null,t.slice()):ZL(t)?Ny(t):Nt(bY,null,String(t))}function Ny(t){return t.el===null&&t.patchFlag!==-1||t.memo?t:Jy(t)}function AW(t,i){let r=0;const{shapeFlag:l}=t;if(i==null)i=null;else if(Ms(i))r=16;else if(typeof i=="object")if(l&65){const u=i.default;u&&(u._c&&(u._d=!1),AW(t,u()),u._c&&(u._d=!0));return}else{r=32;const u=i._;!u&&!m6(i)?i._ctx=$l:u===3&&$l&&($l.slots._===1?i._=1:(i._=2,t.patchFlag|=1024))}else $s(i)?(i={default:i,_ctx:$l},r=32):(i=String(i),l&64?(r=16,i=[ya(i)]):r=8);t.children=i,t.shapeFlag|=r}function $j(...t){const i={};for(let r=0;rLI||$l;let Z1,A3;{const t=vY(),i=(r,l)=>{let u;return(u=t[r])||(u=t[r]=[]),u.push(l),B=>{u.length>1?u.forEach(f=>f(B)):u[0](B)}};Z1=i("__VUE_INSTANCE_SETTERS__",r=>LI=r),A3=i("__VUE_SSR_SETTERS__",r=>XL=r)}const IU=t=>{const i=LI;return Z1(t),t.scope.on(),()=>{t.scope.off(),Z1(i)}},Fz=()=>{LI&&LI.scope.off(),Z1(null)};function b6(t){return t.vnode.shapeFlag&4}let XL=!1;function ZsA(t,i=!1,r=!1){i&&A3(i);const{props:l,children:u}=t.vnode,B=b6(t);DsA(t,l,B,i),RsA(t,u,r);const f=B?XsA(t,i):void 0;return i&&A3(!1),f}function XsA(t,i){const r=t.type;t.accessCache=Object.create(null),t.proxy=new Proxy(t.ctx,CsA);const{setup:l}=r;if(l){zy();const u=t.setupContext=l.length>1?AnA(t):null,B=IU(t),f=cU(l,t,0,[t.props,u]),w=_Z(f);if(Zy(),B(),(w||t.sp)&&!b_(t)&&I6(t),w){if(f.then(Fz,Fz),i)return f.then(_=>{Oz(t,_)}).catch(_=>{wY(_,t,0)});t.asyncDep=f}else Oz(t,f)}else k6(t)}function Oz(t,i,r){$s(i)?t.type.__ssrInlineRender?t.ssrRender=i:t.render=i:Ta(i)&&(t.setupState=ZZ(i)),k6(t)}function k6(t,i,r){const l=t.type;t.render||(t.render=l.render||yQ);{const u=IU(t);zy();try{hsA(t)}finally{Zy(),u()}}}const $sA={get(t,i){return Eu(t,"get",""),t[i]}};function AnA(t){const i=r=>{t.exposed=r||{}};return{attrs:new Proxy(t.attrs,$sA),slots:t.slots,emit:t.emit,expose:i}}function kY(t){return t.exposed?t.exposeProxy||(t.exposeProxy=new Proxy(ZZ(FoA(t.exposed)),{get(i,r){if(r in i)return i[r];if(r in _L)return _L[r](t)},has(i,r){return r in i||r in _L}})):t.proxy}function enA(t,i=!0){return $s(t)?t.displayName||t.name:t.name||i&&t.__name}function tnA(t){return $s(t)&&"__vccOpts"in t}const Gt=(t,i)=>HoA(t,i,XL);function inA(t,i,r){const l=arguments.length;return l===2?Ta(i)&&!Ms(i)?ZL(i)?Nt(t,null,[i]):Nt(t,i):Nt(t,null,i):(l>3?r=Array.prototype.slice.call(arguments,2):l===3&&ZL(r)&&(r=[r]),Nt(t,i,r))}const e3="3.5.13";/** +**/function bU(t,i,r,l){try{return l?t(...l):t()}catch(I){iV(I,i,r)}}function nB(t,i,r,l){if($s(t)){const I=bU(t,i,r,l);return I&&u6(I)&&I.catch(h=>{iV(h,i,r)}),I}if(Ms(t)){const I=[];for(let h=0;h>>1,I=hE[l],h=dU(I);h=dU(r)?hE.push(t):hE.splice(ksA(i),0,t),t.flags|=1,U6()}}function U6(){hY||(hY=L6.then(O6))}function LsA(t){Ms(t)?J_.push(...t):by&&t.id===-1?by.splice(y_+1,0,t):t.flags&1||(J_.push(t),t.flags|=1),U6()}function n8(t,i,r=BQ+1){for(;rdU(r)-dU(l));if(J_.length=0,by){by.push(...i);return}for(by=i,y_=0;y_t.id==null?t.flags&2?-1:1/0:t.id;function O6(t){try{for(BQ=0;BQ{l._d&&p8(-1);const h=BY(i);let f;try{f=t(...I)}finally{BY(h),l._d&&p8(1)}return f};return l._n=!0,l._c=!0,l._d=!0,l}function Ta(t,i){if(eI===null)return t;const r=gV(eI),l=t.dirs||(t.dirs=[]);for(let I=0;It.__isTeleport,jL=t=>t&&(t.disabled||t.disabled===""),r8=t=>t&&(t.defer||t.defer===""),a8=t=>typeof SVGElement<"u"&&t instanceof SVGElement,g8=t=>typeof MathMLElement=="function"&&t instanceof MathMLElement,f3=(t,i)=>{const r=t&&t.to;return fg(r)?i?i(r):null:r},Y6={name:"Teleport",__isTeleport:!0,process(t,i,r,l,I,h,f,w,_,k){const{mc:U,pc:j,pbc:lA,o:{insert:rA,querySelector:mA,createText:IA,createComment:cA}}=k,TA=jL(i.props);let{shapeFlag:WA,children:ge,dynamicChildren:ue}=i;if(t==null){const xe=i.el=IA(""),Be=i.anchor=IA("");rA(xe,r,l),rA(Be,r,l);const ut=(ze,_e)=>{WA&16&&(I&&I.isCE&&(I.ce._teleportTarget=ze),U(ge,ze,_e,I,h,f,w,_))},pt=()=>{const ze=i.target=f3(i.props,mA),_e=V6(ze,i,IA,rA);ze&&(f!=="svg"&&a8(ze)?f="svg":f!=="mathml"&&g8(ze)&&(f="mathml"),TA||(ut(ze,_e),X1(i,!1)))};TA&&(ut(r,Be),X1(i,!0)),r8(i.props)?dE(()=>{pt(),i.el.__isMounted=!0},h):pt()}else{if(r8(i.props)&&!t.el.__isMounted){dE(()=>{Y6.process(t,i,r,l,I,h,f,w,_,k),delete t.el.__isMounted},h);return}i.el=t.el,i.targetStart=t.targetStart;const xe=i.anchor=t.anchor,Be=i.target=t.target,ut=i.targetAnchor=t.targetAnchor,pt=jL(t.props),ze=pt?r:Be,_e=pt?xe:ut;if(f==="svg"||a8(Be)?f="svg":(f==="mathml"||g8(Be))&&(f="mathml"),ue?(lA(t.dynamicChildren,ue,ze,I,h,f,w),NW(t,i,!0)):_||j(t,i,ze,_e,I,h,f,w,!1),TA)pt?i.props&&t.props&&i.props.to!==t.props.to&&(i.props.to=t.props.to):N1(i,r,xe,k,1);else if((i.props&&i.props.to)!==(t.props&&t.props.to)){const We=i.target=f3(i.props,mA);We&&N1(i,We,null,k,0)}else pt&&N1(i,Be,ut,k,1);X1(i,TA)}},remove(t,i,r,{um:l,o:{remove:I}},h){const{shapeFlag:f,children:w,anchor:_,targetStart:k,targetAnchor:U,target:j,props:lA}=t;if(j&&(I(k),I(U)),h&&I(_),f&16){const rA=h||!jL(lA);for(let mA=0;mA{t.isMounted=!0}),Z6(()=>{t.isUnmounting=!0}),t}const VC=[Function,Array],J6={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:VC,onEnter:VC,onAfterEnter:VC,onEnterCancelled:VC,onBeforeLeave:VC,onLeave:VC,onAfterLeave:VC,onLeaveCancelled:VC,onBeforeAppear:VC,onAppear:VC,onAfterAppear:VC,onAppearCancelled:VC},H6=t=>{const i=t.subTree;return i.component?H6(i.component):i},PsA={name:"BaseTransition",props:J6,setup(t,{slots:i}){const r=LnA(),l=OsA();return()=>{const I=i.default&&j6(i.default(),!0);if(!I||!I.length)return;const h=q6(I),f=Nr(t),{mode:w}=f;if(l.isLeaving)return vj(h);const _=c8(h);if(!_)return vj(h);let k=y3(_,f,l,r,j=>k=j);_.type!==BE&&CU(_,k);let U=r.subTree&&c8(r.subTree);if(U&&U.type!==BE&&!sv(_,U)&&H6(r).type!==BE){let j=y3(U,f,l,r);if(CU(U,j),w==="out-in"&&_.type!==BE)return l.isLeaving=!0,j.afterLeave=()=>{l.isLeaving=!1,r.job.flags&8||r.update(),delete j.afterLeave,U=void 0},vj(h);w==="in-out"&&_.type!==BE?j.delayLeave=(lA,rA,mA)=>{const IA=K6(l,U);IA[String(U.key)]=U,lA[ky]=()=>{rA(),lA[ky]=void 0,delete k.delayedLeave,U=void 0},k.delayedLeave=()=>{mA(),delete k.delayedLeave,U=void 0}}:U=void 0}else U&&(U=void 0);return h}}};function q6(t){let i=t[0];if(t.length>1){for(const r of t)if(r.type!==BE){i=r;break}}return i}const xsA=PsA;function K6(t,i){const{leavingVNodes:r}=t;let l=r.get(i.type);return l||(l=Object.create(null),r.set(i.type,l)),l}function y3(t,i,r,l,I){const{appear:h,mode:f,persisted:w=!1,onBeforeEnter:_,onEnter:k,onAfterEnter:U,onEnterCancelled:j,onBeforeLeave:lA,onLeave:rA,onAfterLeave:mA,onLeaveCancelled:IA,onBeforeAppear:cA,onAppear:TA,onAfterAppear:WA,onAppearCancelled:ge}=i,ue=String(t.key),xe=K6(r,t),Be=(ze,_e)=>{ze&&nB(ze,l,9,_e)},ut=(ze,_e)=>{const We=_e[1];Be(ze,_e),Ms(ze)?ze.every(Le=>Le.length<=1)&&We():ze.length<=1&&We()},pt={mode:f,persisted:w,beforeEnter(ze){let _e=_;if(!r.isMounted)if(h)_e=cA||_;else return;ze[ky]&&ze[ky](!0);const We=xe[ue];We&&sv(t,We)&&We.el[ky]&&We.el[ky](),Be(_e,[ze])},enter(ze){let _e=k,We=U,Le=j;if(!r.isMounted)if(h)_e=TA||k,We=WA||U,Le=ge||j;else return;let oe=!1;const je=ze[G1]=Dt=>{oe||(oe=!0,Dt?Be(Le,[ze]):Be(We,[ze]),pt.delayedLeave&&pt.delayedLeave(),ze[G1]=void 0)};_e?ut(_e,[ze,je]):je()},leave(ze,_e){const We=String(t.key);if(ze[G1]&&ze[G1](!0),r.isUnmounting)return _e();Be(lA,[ze]);let Le=!1;const oe=ze[ky]=je=>{Le||(Le=!0,_e(),je?Be(IA,[ze]):Be(mA,[ze]),ze[ky]=void 0,xe[We]===t&&delete xe[We])};xe[We]=t,rA?ut(rA,[ze,oe]):oe()},clone(ze){const _e=y3(ze,i,r,l,I);return I&&I(_e),_e}};return pt}function vj(t){if(sV(t))return t=Zy(t),t.children=null,t}function c8(t){if(!sV(t))return x6(t.type)&&t.children?q6(t.children):t;const{shapeFlag:i,children:r}=t;if(r){if(i&16)return r[0];if(i&32&&$s(r.default))return r.default()}}function CU(t,i){t.shapeFlag&6&&t.component?(t.transition=i,CU(t.component.subTree,i)):t.shapeFlag&128?(t.ssContent.transition=i.clone(t.ssContent),t.ssFallback.transition=i.clone(t.ssFallback)):t.transition=i}function j6(t,i=!1,r){let l=[],I=0;for(let h=0;h1)for(let h=0;hQY(mA,i&&(Ms(i)?i[IA]:i),r,l,I));return}if(H_(l)&&!I){l.shapeFlag&512&&l.type.__asyncResolved&&l.component.subTree.component&&QY(t,i,r,l.component.subTree);return}const h=l.shapeFlag&4?gV(l.component):l.el,f=I?null:h,{i:w,r:_}=t,k=i&&i.r,U=w.refs===ya?w.refs={}:w.refs,j=w.setupState,lA=Nr(j),rA=j===ya?()=>!1:mA=>Wr(lA,mA);if(k!=null&&k!==_&&(fg(k)?(U[k]=null,rA(k)&&(j[k]=null)):tI(k)&&(k.value=null)),$s(_))bU(_,w,12,[f,U]);else{const mA=fg(_),IA=tI(_);if(mA||IA){const cA=()=>{if(t.f){const TA=mA?rA(_)?j[_]:U[_]:_.value;I?Ms(TA)&&mW(TA,h):Ms(TA)?TA.includes(h)||TA.push(h):mA?(U[_]=[h],rA(_)&&(j[_]=U[_])):(_.value=[h],t.k&&(U[t.k]=_.value))}else mA?(U[_]=f,rA(_)&&(j[_]=f)):IA&&(_.value=f,t.k&&(U[t.k]=f))};f?(cA.id=-1,dE(cA,r)):cA()}}}eV().requestIdleCallback;eV().cancelIdleCallback;const H_=t=>!!t.type.__asyncLoader,sV=t=>t.type.__isKeepAlive;function YsA(t,i){z6(t,"a",i)}function VsA(t,i){z6(t,"da",i)}function z6(t,i,r=OI){const l=t.__wdc||(t.__wdc=()=>{let I=r;for(;I;){if(I.isDeactivated)return;I=I.parent}return t()});if(nV(i,l,r),r){let I=r.parent;for(;I&&I.parent;)sV(I.parent.vnode)&&JsA(l,i,r,I),I=I.parent}}function JsA(t,i,r,l){const I=nV(i,t,l,!0);Kg(()=>{mW(l[i],I)},r)}function nV(t,i,r=OI,l=!1){if(r){const I=r[t]||(r[t]=[]),h=i.__weh||(i.__weh=(...f)=>{iD();const w=kU(r),_=nB(i,r,t,f);return w(),oD(),_});return l?I.unshift(h):I.push(h),h}}const Cm=t=>(i,r=OI)=>{(!QU||t==="sp")&&nV(t,(...l)=>i(...l),r)},HsA=Cm("bm"),hc=Cm("m"),qsA=Cm("bu"),KsA=Cm("u"),Z6=Cm("bum"),Kg=Cm("um"),jsA=Cm("sp"),WsA=Cm("rtg"),zsA=Cm("rtc");function ZsA(t,i=OI){nV("ec",t,i)}const XsA="components";function $sA(t,i){return enA(XsA,t,!0,i)||t}const AnA=Symbol.for("v-ndc");function enA(t,i,r=!0,l=!1){const I=eI||OI;if(I){const h=I.type;{const w=xnA(h,!1);if(w&&(w===i||w===oh(i)||w===AV(oh(i))))return h}const f=l8(I[t]||h[t],i)||l8(I.appContext[t],i);return!f&&l?h:f}}function l8(t,i){return t&&(t[i]||t[oh(i)]||t[AV(oh(i))])}function gd(t,i,r,l){let I;const h=r,f=Ms(t);if(f||fg(t)){const w=f&&V_(t);let _=!1;w&&(_=!eh(t),t=tV(t)),I=new Array(t.length);for(let k=0,U=t.length;ki(w,_,void 0,h));else{const w=Object.keys(t);I=new Array(w.length);for(let _=0,k=w.length;_BU(i)?!(i.type===BE||i.type===Gr&&!X6(i.children)):!0)?t:null}const D3=t=>t?h9(t)?gV(t):D3(t.parent):null,WL=oI(Object.create(null),{$:t=>t,$el:t=>t.vnode.el,$data:t=>t.data,$props:t=>t.props,$attrs:t=>t.attrs,$slots:t=>t.slots,$refs:t=>t.refs,$parent:t=>D3(t.parent),$root:t=>D3(t.root),$host:t=>t.ce,$emit:t=>t.emit,$options:t=>A9(t),$forceUpdate:t=>t.f||(t.f=()=>{_W(t.update)}),$nextTick:t=>t.n||(t.n=hv.bind(t.proxy)),$watch:t=>fnA.bind(t)}),Rj=(t,i)=>t!==ya&&!t.__isScriptSetup&&Wr(t,i),tnA={get({_:t},i){if(i==="__v_skip")return!0;const{ctx:r,setupState:l,data:I,props:h,accessCache:f,type:w,appContext:_}=t;let k;if(i[0]!=="$"){const rA=f[i];if(rA!==void 0)switch(rA){case 1:return l[i];case 2:return I[i];case 4:return r[i];case 3:return h[i]}else{if(Rj(l,i))return f[i]=1,l[i];if(I!==ya&&Wr(I,i))return f[i]=2,I[i];if((k=t.propsOptions[0])&&Wr(k,i))return f[i]=3,h[i];if(r!==ya&&Wr(r,i))return f[i]=4,r[i];S3&&(f[i]=0)}}const U=WL[i];let j,lA;if(U)return i==="$attrs"&&Bu(t.attrs,"get",""),U(t);if((j=w.__cssModules)&&(j=j[i]))return j;if(r!==ya&&Wr(r,i))return f[i]=4,r[i];if(lA=_.config.globalProperties,Wr(lA,i))return lA[i]},set({_:t},i,r){const{data:l,setupState:I,ctx:h}=t;return Rj(I,i)?(I[i]=r,!0):l!==ya&&Wr(l,i)?(l[i]=r,!0):Wr(t.props,i)||i[0]==="$"&&i.slice(1)in t?!1:(h[i]=r,!0)},has({_:{data:t,setupState:i,accessCache:r,ctx:l,appContext:I,propsOptions:h}},f){let w;return!!r[f]||t!==ya&&Wr(t,f)||Rj(i,f)||(w=h[0])&&Wr(w,f)||Wr(l,f)||Wr(WL,f)||Wr(I.config.globalProperties,f)},defineProperty(t,i,r){return r.get!=null?t._.accessCache[i]=0:Wr(r,"value")&&this.set(t,i,r.value,null),Reflect.defineProperty(t,i,r)}};function I8(t){return Ms(t)?t.reduce((i,r)=>(i[r]=null,i),{}):t}let S3=!0;function inA(t){const i=A9(t),r=t.proxy,l=t.ctx;S3=!1,i.beforeCreate&&u8(i.beforeCreate,t,"bc");const{data:I,computed:h,methods:f,watch:w,provide:_,inject:k,created:U,beforeMount:j,mounted:lA,beforeUpdate:rA,updated:mA,activated:IA,deactivated:cA,beforeDestroy:TA,beforeUnmount:WA,destroyed:ge,unmounted:ue,render:xe,renderTracked:Be,renderTriggered:ut,errorCaptured:pt,serverPrefetch:ze,expose:_e,inheritAttrs:We,components:Le,directives:oe,filters:je}=i;if(k&&onA(k,l,null),f)for(const Jt in f){const gi=f[Jt];$s(gi)&&(l[Jt]=gi.bind(r))}if(I){const Jt=I.call(r,r);Na(Jt)&&(t.data=lv(Jt))}if(S3=!0,h)for(const Jt in h){const gi=h[Jt],Fi=$s(gi)?gi.bind(r,r):$s(gi.get)?gi.get.bind(r,r):vQ,To=!$s(gi)&&$s(gi.set)?gi.set.bind(r):vQ,to=bt({get:Fi,set:To});Object.defineProperty(l,Jt,{enumerable:!0,configurable:!0,get:()=>to.value,set:uo=>to.value=uo})}if(w)for(const Jt in w)$6(w[Jt],l,r,Jt);if(_){const Jt=$s(_)?_.call(r):_;Reflect.ownKeys(Jt).forEach(gi=>{rd(gi,Jt[gi])})}U&&u8(U,t,"c");function ni(Jt,gi){Ms(gi)?gi.forEach(Fi=>Jt(Fi.bind(r))):gi&&Jt(gi.bind(r))}if(ni(HsA,j),ni(hc,lA),ni(qsA,rA),ni(KsA,mA),ni(YsA,IA),ni(VsA,cA),ni(ZsA,pt),ni(zsA,Be),ni(WsA,ut),ni(Z6,WA),ni(Kg,ue),ni(jsA,ze),Ms(_e))if(_e.length){const Jt=t.exposed||(t.exposed={});_e.forEach(gi=>{Object.defineProperty(Jt,gi,{get:()=>r[gi],set:Fi=>r[gi]=Fi})})}else t.exposed||(t.exposed={});xe&&t.render===vQ&&(t.render=xe),We!=null&&(t.inheritAttrs=We),Le&&(t.components=Le),oe&&(t.directives=oe),ze&&W6(t)}function onA(t,i,r=vQ){Ms(t)&&(t=M3(t));for(const l in t){const I=t[l];let h;Na(I)?"default"in I?h=YI(I.from||l,I.default,!0):h=YI(I.from||l):h=YI(I),tI(h)?Object.defineProperty(i,l,{enumerable:!0,configurable:!0,get:()=>h.value,set:f=>h.value=f}):i[l]=h}}function u8(t,i,r){nB(Ms(t)?t.map(l=>l.bind(i.proxy)):t.bind(i.proxy),i,r)}function $6(t,i,r,l){let I=l.includes(".")?I9(r,l):()=>r[l];if(fg(t)){const h=i[t];$s(h)&&xr(I,h)}else if($s(t))xr(I,t.bind(r));else if(Na(t))if(Ms(t))t.forEach(h=>$6(h,i,r,l));else{const h=$s(t.handler)?t.handler.bind(r):i[t.handler];$s(h)&&xr(I,h,t)}}function A9(t){const i=t.type,{mixins:r,extends:l}=i,{mixins:I,optionsCache:h,config:{optionMergeStrategies:f}}=t.appContext,w=h.get(i);let _;return w?_=w:!I.length&&!r&&!l?_=i:(_={},I.length&&I.forEach(k=>pY(_,k,f,!0)),pY(_,i,f)),Na(i)&&h.set(i,_),_}function pY(t,i,r,l=!1){const{mixins:I,extends:h}=i;h&&pY(t,h,r,!0),I&&I.forEach(f=>pY(t,f,r,!0));for(const f in i)if(!(l&&f==="expose")){const w=snA[f]||r&&r[f];t[f]=w?w(t[f],i[f]):i[f]}return t}const snA={data:E8,props:d8,emits:d8,methods:SL,computed:SL,beforeCreate:IE,created:IE,beforeMount:IE,mounted:IE,beforeUpdate:IE,updated:IE,beforeDestroy:IE,beforeUnmount:IE,destroyed:IE,unmounted:IE,activated:IE,deactivated:IE,errorCaptured:IE,serverPrefetch:IE,components:SL,directives:SL,watch:rnA,provide:E8,inject:nnA};function E8(t,i){return i?t?function(){return oI($s(t)?t.call(this,this):t,$s(i)?i.call(this,this):i)}:i:t}function nnA(t,i){return SL(M3(t),M3(i))}function M3(t){if(Ms(t)){const i={};for(let r=0;r1)return r&&$s(i)?i.call(l&&l.proxy):i}}const t9={},i9=()=>Object.create(t9),o9=t=>Object.getPrototypeOf(t)===t9;function cnA(t,i,r,l=!1){const I={},h=i9();t.propsDefaults=Object.create(null),s9(t,i,I,h);for(const f in t.propsOptions[0])f in I||(I[f]=void 0);r?t.props=l?I:ysA(I):t.type.props?t.props=I:t.props=h,t.attrs=h}function lnA(t,i,r,l){const{props:I,attrs:h,vnode:{patchFlag:f}}=t,w=Nr(I),[_]=t.propsOptions;let k=!1;if((l||f>0)&&!(f&16)){if(f&8){const U=t.vnode.dynamicProps;for(let j=0;j{_=!0;const[lA,rA]=n9(j,i,!0);oI(f,lA),rA&&w.push(...rA)};!r&&i.mixins.length&&i.mixins.forEach(U),t.extends&&U(t.extends),t.mixins&&t.mixins.forEach(U)}if(!h&&!_)return Na(t)&&l.set(t,x_),x_;if(Ms(h))for(let U=0;Ut[0]==="_"||t==="$stable",TW=t=>Ms(t)?t.map(mQ):[mQ(t)],unA=(t,i,r)=>{if(i._n)return i;const l=Li((...I)=>TW(i(...I)),r);return l._c=!1,l},a9=(t,i,r)=>{const l=t._ctx;for(const I in t){if(r9(I))continue;const h=t[I];if($s(h))i[I]=unA(I,h,l);else if(h!=null){const f=TW(h);i[I]=()=>f}}},g9=(t,i)=>{const r=TW(i);t.slots.default=()=>r},c9=(t,i,r)=>{for(const l in i)(r||l!=="_")&&(t[l]=i[l])},EnA=(t,i,r)=>{const l=t.slots=i9();if(t.vnode.shapeFlag&32){const I=i._;I?(c9(l,i,r),r&&C6(l,"_",I,!0)):a9(i,l)}else i&&g9(t,i)},dnA=(t,i,r)=>{const{vnode:l,slots:I}=t;let h=!0,f=ya;if(l.shapeFlag&32){const w=i._;w?r&&w===1?h=!1:c9(I,i,r):(h=!i.$stable,a9(i,I)),f=i}else i&&(g9(t,i),f={default:1});if(h)for(const w in I)!r9(w)&&f[w]==null&&delete I[w]},dE=wnA;function CnA(t){return hnA(t)}function hnA(t,i){const r=eV();r.__VUE__=!0;const{insert:l,remove:I,patchProp:h,createElement:f,createText:w,createComment:_,setText:k,setElementText:U,parentNode:j,nextSibling:lA,setScopeId:rA=vQ,insertStaticContent:mA}=t,IA=(HA,ce,Ve,Ut=null,nt=null,It=null,Xt=void 0,$t=null,be=!!ce.dynamicChildren)=>{if(HA===ce)return;HA&&!sv(HA,ce)&&(Ut=$i(HA),uo(HA,nt,It,!0),HA=null),ce.patchFlag===-2&&(be=!1,ce.dynamicChildren=null);const{type:Xe,ref:vt,shapeFlag:wt}=ce;switch(Xe){case aV:cA(HA,ce,Ve,Ut);break;case BE:TA(HA,ce,Ve,Ut);break;case _j:HA==null&&WA(ce,Ve,Ut,Xt);break;case Gr:Le(HA,ce,Ve,Ut,nt,It,Xt,$t,be);break;default:wt&1?xe(HA,ce,Ve,Ut,nt,It,Xt,$t,be):wt&6?oe(HA,ce,Ve,Ut,nt,It,Xt,$t,be):(wt&64||wt&128)&&Xe.process(HA,ce,Ve,Ut,nt,It,Xt,$t,be,bi)}vt!=null&&nt&&QY(vt,HA&&HA.ref,It,ce||HA,!ce)},cA=(HA,ce,Ve,Ut)=>{if(HA==null)l(ce.el=w(ce.children),Ve,Ut);else{const nt=ce.el=HA.el;ce.children!==HA.children&&k(nt,ce.children)}},TA=(HA,ce,Ve,Ut)=>{HA==null?l(ce.el=_(ce.children||""),Ve,Ut):ce.el=HA.el},WA=(HA,ce,Ve,Ut)=>{[HA.el,HA.anchor]=mA(HA.children,ce,Ve,Ut,HA.el,HA.anchor)},ge=({el:HA,anchor:ce},Ve,Ut)=>{let nt;for(;HA&&HA!==ce;)nt=lA(HA),l(HA,Ve,Ut),HA=nt;l(ce,Ve,Ut)},ue=({el:HA,anchor:ce})=>{let Ve;for(;HA&&HA!==ce;)Ve=lA(HA),I(HA),HA=Ve;I(ce)},xe=(HA,ce,Ve,Ut,nt,It,Xt,$t,be)=>{ce.type==="svg"?Xt="svg":ce.type==="math"&&(Xt="mathml"),HA==null?Be(ce,Ve,Ut,nt,It,Xt,$t,be):ze(HA,ce,nt,It,Xt,$t,be)},Be=(HA,ce,Ve,Ut,nt,It,Xt,$t)=>{let be,Xe;const{props:vt,shapeFlag:wt,transition:Oi,dirs:po}=HA;if(be=HA.el=f(HA.type,It,vt&&vt.is,vt),wt&8?U(be,HA.children):wt&16&&pt(HA.children,be,null,Ut,nt,wj(HA,It),Xt,$t),po&&zM(HA,null,Ut,"created"),ut(be,HA,HA.scopeId,Xt,Ut),vt){for(const oo in vt)oo!=="value"&&!HL(oo)&&h(be,oo,null,vt[oo],It,Ut);"value"in vt&&h(be,"value",null,vt.value,It),(Xe=vt.onVnodeBeforeMount)&&hQ(Xe,Ut,HA)}po&&zM(HA,null,Ut,"beforeMount");const No=BnA(nt,Oi);No&&Oi.beforeEnter(be),l(be,ce,Ve),((Xe=vt&&vt.onVnodeMounted)||No||po)&&dE(()=>{Xe&&hQ(Xe,Ut,HA),No&&Oi.enter(be),po&&zM(HA,null,Ut,"mounted")},nt)},ut=(HA,ce,Ve,Ut,nt)=>{if(Ve&&rA(HA,Ve),Ut)for(let It=0;It{for(let Xe=be;Xe{const $t=ce.el=HA.el;let{patchFlag:be,dynamicChildren:Xe,dirs:vt}=ce;be|=HA.patchFlag&16;const wt=HA.props||ya,Oi=ce.props||ya;let po;if(Ve&&ZM(Ve,!1),(po=Oi.onVnodeBeforeUpdate)&&hQ(po,Ve,ce,HA),vt&&zM(ce,HA,Ve,"beforeUpdate"),Ve&&ZM(Ve,!0),(wt.innerHTML&&Oi.innerHTML==null||wt.textContent&&Oi.textContent==null)&&U($t,""),Xe?_e(HA.dynamicChildren,Xe,$t,Ve,Ut,wj(ce,nt),It):Xt||gi(HA,ce,$t,null,Ve,Ut,wj(ce,nt),It,!1),be>0){if(be&16)We($t,wt,Oi,Ve,nt);else if(be&2&&wt.class!==Oi.class&&h($t,"class",null,Oi.class,nt),be&4&&h($t,"style",wt.style,Oi.style,nt),be&8){const No=ce.dynamicProps;for(let oo=0;oo{po&&hQ(po,Ve,ce,HA),vt&&zM(ce,HA,Ve,"updated")},Ut)},_e=(HA,ce,Ve,Ut,nt,It,Xt)=>{for(let $t=0;$t{if(ce!==Ve){if(ce!==ya)for(const It in ce)!HL(It)&&!(It in Ve)&&h(HA,It,ce[It],null,nt,Ut);for(const It in Ve){if(HL(It))continue;const Xt=Ve[It],$t=ce[It];Xt!==$t&&It!=="value"&&h(HA,It,$t,Xt,nt,Ut)}"value"in Ve&&h(HA,"value",ce.value,Ve.value,nt)}},Le=(HA,ce,Ve,Ut,nt,It,Xt,$t,be)=>{const Xe=ce.el=HA?HA.el:w(""),vt=ce.anchor=HA?HA.anchor:w("");let{patchFlag:wt,dynamicChildren:Oi,slotScopeIds:po}=ce;po&&($t=$t?$t.concat(po):po),HA==null?(l(Xe,Ve,Ut),l(vt,Ve,Ut),pt(ce.children||[],Ve,vt,nt,It,Xt,$t,be)):wt>0&&wt&64&&Oi&&HA.dynamicChildren?(_e(HA.dynamicChildren,Oi,Ve,nt,It,Xt,$t),(ce.key!=null||nt&&ce===nt.subTree)&&NW(HA,ce,!0)):gi(HA,ce,Ve,vt,nt,It,Xt,$t,be)},oe=(HA,ce,Ve,Ut,nt,It,Xt,$t,be)=>{ce.slotScopeIds=$t,HA==null?ce.shapeFlag&512?nt.ctx.activate(ce,Ve,Ut,Xt,be):je(ce,Ve,Ut,nt,It,Xt,be):Dt(HA,ce,be)},je=(HA,ce,Ve,Ut,nt,It,Xt)=>{const $t=HA.component=knA(HA,Ut,nt);if(sV(HA)&&($t.ctx.renderer=bi),UnA($t,!1,Xt),$t.asyncDep){if(nt&&nt.registerDep($t,ni,Xt),!HA.el){const be=$t.subTree=Gt(BE);TA(null,be,ce,Ve)}}else ni($t,HA,ce,Ve,nt,It,Xt)},Dt=(HA,ce,Ve)=>{const Ut=ce.component=HA.component;if(vnA(HA,ce,Ve))if(Ut.asyncDep&&!Ut.asyncResolved){Jt(Ut,ce,Ve);return}else Ut.next=ce,Ut.update();else ce.el=HA.el,Ut.vnode=ce},ni=(HA,ce,Ve,Ut,nt,It,Xt)=>{const $t=()=>{if(HA.isMounted){let{next:wt,bu:Oi,u:po,parent:No,vnode:oo}=HA;{const an=l9(HA);if(an){wt&&(wt.el=oo.el,Jt(HA,wt,Xt)),an.asyncDep.then(()=>{HA.isUnmounted||$t()});return}}let Go=wt,An;ZM(HA,!1),wt?(wt.el=oo.el,Jt(HA,wt,Xt)):wt=oo,Oi&&Z1(Oi),(An=wt.props&&wt.props.onVnodeBeforeUpdate)&&hQ(An,No,wt,oo),ZM(HA,!0);const rn=B8(HA),Es=HA.subTree;HA.subTree=rn,IA(Es,rn,j(Es.el),$i(Es),HA,nt,It),wt.el=rn.el,Go===null&&RnA(HA,rn.el),po&&dE(po,nt),(An=wt.props&&wt.props.onVnodeUpdated)&&dE(()=>hQ(An,No,wt,oo),nt)}else{let wt;const{el:Oi,props:po}=ce,{bm:No,m:oo,parent:Go,root:An,type:rn}=HA,Es=H_(ce);ZM(HA,!1),No&&Z1(No),!Es&&(wt=po&&po.onVnodeBeforeMount)&&hQ(wt,Go,ce),ZM(HA,!0);{An.ce&&An.ce._injectChildStyle(rn);const an=HA.subTree=B8(HA);IA(null,an,Ve,Ut,HA,nt,It),ce.el=an.el}if(oo&&dE(oo,nt),!Es&&(wt=po&&po.onVnodeMounted)){const an=ce;dE(()=>hQ(wt,Go,an),nt)}(ce.shapeFlag&256||Go&&H_(Go.vnode)&&Go.vnode.shapeFlag&256)&&HA.a&&dE(HA.a,nt),HA.isMounted=!0,ce=Ve=Ut=null}};HA.scope.on();const be=HA.effect=new p6($t);HA.scope.off();const Xe=HA.update=be.run.bind(be),vt=HA.job=be.runIfDirty.bind(be);vt.i=HA,vt.id=HA.uid,be.scheduler=()=>_W(vt),ZM(HA,!0),Xe()},Jt=(HA,ce,Ve)=>{ce.component=HA;const Ut=HA.vnode.props;HA.vnode=ce,HA.next=null,lnA(HA,ce.props,Ut,Ve),dnA(HA,ce.children,Ve),iD(),n8(HA),oD()},gi=(HA,ce,Ve,Ut,nt,It,Xt,$t,be=!1)=>{const Xe=HA&&HA.children,vt=HA?HA.shapeFlag:0,wt=ce.children,{patchFlag:Oi,shapeFlag:po}=ce;if(Oi>0){if(Oi&128){To(Xe,wt,Ve,Ut,nt,It,Xt,$t,be);return}else if(Oi&256){Fi(Xe,wt,Ve,Ut,nt,It,Xt,$t,be);return}}po&8?(vt&16&&jo(Xe,nt,It),wt!==Xe&&U(Ve,wt)):vt&16?po&16?To(Xe,wt,Ve,Ut,nt,It,Xt,$t,be):jo(Xe,nt,It,!0):(vt&8&&U(Ve,""),po&16&&pt(wt,Ve,Ut,nt,It,Xt,$t,be))},Fi=(HA,ce,Ve,Ut,nt,It,Xt,$t,be)=>{HA=HA||x_,ce=ce||x_;const Xe=HA.length,vt=ce.length,wt=Math.min(Xe,vt);let Oi;for(Oi=0;Oivt?jo(HA,nt,It,!0,!1,wt):pt(ce,Ve,Ut,nt,It,Xt,$t,be,wt)},To=(HA,ce,Ve,Ut,nt,It,Xt,$t,be)=>{let Xe=0;const vt=ce.length;let wt=HA.length-1,Oi=vt-1;for(;Xe<=wt&&Xe<=Oi;){const po=HA[Xe],No=ce[Xe]=be?Ly(ce[Xe]):mQ(ce[Xe]);if(sv(po,No))IA(po,No,Ve,null,nt,It,Xt,$t,be);else break;Xe++}for(;Xe<=wt&&Xe<=Oi;){const po=HA[wt],No=ce[Oi]=be?Ly(ce[Oi]):mQ(ce[Oi]);if(sv(po,No))IA(po,No,Ve,null,nt,It,Xt,$t,be);else break;wt--,Oi--}if(Xe>wt){if(Xe<=Oi){const po=Oi+1,No=poOi)for(;Xe<=wt;)uo(HA[Xe],nt,It,!0),Xe++;else{const po=Xe,No=Xe,oo=new Map;for(Xe=No;Xe<=Oi;Xe++){const Jn=ce[Xe]=be?Ly(ce[Xe]):mQ(ce[Xe]);Jn.key!=null&&oo.set(Jn.key,Xe)}let Go,An=0;const rn=Oi-No+1;let Es=!1,an=0;const Do=new Array(rn);for(Xe=0;Xe=rn){uo(Jn,nt,It,!0);continue}let Qr;if(Jn.key!=null)Qr=oo.get(Jn.key);else for(Go=No;Go<=Oi;Go++)if(Do[Go-No]===0&&sv(Jn,ce[Go])){Qr=Go;break}Qr===void 0?uo(Jn,nt,It,!0):(Do[Qr-No]=Xe+1,Qr>=an?an=Qr:Es=!0,IA(Jn,ce[Qr],Ve,null,nt,It,Xt,$t,be),An++)}const pA=Es?QnA(Do):x_;for(Go=pA.length-1,Xe=rn-1;Xe>=0;Xe--){const Jn=No+Xe,Qr=ce[Jn],ds=Jn+1{const{el:It,type:Xt,transition:$t,children:be,shapeFlag:Xe}=HA;if(Xe&6){to(HA.component.subTree,ce,Ve,Ut);return}if(Xe&128){HA.suspense.move(ce,Ve,Ut);return}if(Xe&64){Xt.move(HA,ce,Ve,bi);return}if(Xt===Gr){l(It,ce,Ve);for(let wt=0;wt$t.enter(It),nt);else{const{leave:wt,delayLeave:Oi,afterLeave:po}=$t,No=()=>l(It,ce,Ve),oo=()=>{wt(It,()=>{No(),po&&po()})};Oi?Oi(It,No,oo):oo()}else l(It,ce,Ve)},uo=(HA,ce,Ve,Ut=!1,nt=!1)=>{const{type:It,props:Xt,ref:$t,children:be,dynamicChildren:Xe,shapeFlag:vt,patchFlag:wt,dirs:Oi,cacheIndex:po}=HA;if(wt===-2&&(nt=!1),$t!=null&&QY($t,null,Ve,HA,!0),po!=null&&(ce.renderCache[po]=void 0),vt&256){ce.ctx.deactivate(HA);return}const No=vt&1&&Oi,oo=!H_(HA);let Go;if(oo&&(Go=Xt&&Xt.onVnodeBeforeUnmount)&&hQ(Go,ce,HA),vt&6)ns(HA.component,Ve,Ut);else{if(vt&128){HA.suspense.unmount(Ve,Ut);return}No&&zM(HA,null,ce,"beforeUnmount"),vt&64?HA.type.remove(HA,ce,Ve,bi,Ut):Xe&&!Xe.hasOnce&&(It!==Gr||wt>0&&wt&64)?jo(Xe,ce,Ve,!1,!0):(It===Gr&&wt&384||!nt&&vt&16)&&jo(be,ce,Ve),Ut&&Vs(HA)}(oo&&(Go=Xt&&Xt.onVnodeUnmounted)||No)&&dE(()=>{Go&&hQ(Go,ce,HA),No&&zM(HA,null,ce,"unmounted")},Ve)},Vs=HA=>{const{type:ce,el:Ve,anchor:Ut,transition:nt}=HA;if(ce===Gr){ki(Ve,Ut);return}if(ce===_j){ue(HA);return}const It=()=>{I(Ve),nt&&!nt.persisted&&nt.afterLeave&&nt.afterLeave()};if(HA.shapeFlag&1&&nt&&!nt.persisted){const{leave:Xt,delayLeave:$t}=nt,be=()=>Xt(Ve,It);$t?$t(HA.el,It,be):be()}else It()},ki=(HA,ce)=>{let Ve;for(;HA!==ce;)Ve=lA(HA),I(HA),HA=Ve;I(ce)},ns=(HA,ce,Ve)=>{const{bum:Ut,scope:nt,job:It,subTree:Xt,um:$t,m:be,a:Xe}=HA;h8(be),h8(Xe),Ut&&Z1(Ut),nt.stop(),It&&(It.flags|=8,uo(Xt,HA,ce,Ve)),$t&&dE($t,ce),dE(()=>{HA.isUnmounted=!0},ce),ce&&ce.pendingBranch&&!ce.isUnmounted&&HA.asyncDep&&!HA.asyncResolved&&HA.suspenseId===ce.pendingId&&(ce.deps--,ce.deps===0&&ce.resolve())},jo=(HA,ce,Ve,Ut=!1,nt=!1,It=0)=>{for(let Xt=It;Xt{if(HA.shapeFlag&6)return $i(HA.component.subTree);if(HA.shapeFlag&128)return HA.suspense.next();const ce=lA(HA.anchor||HA.el),Ve=ce&&ce[P6];return Ve?lA(Ve):ce};let jt=!1;const io=(HA,ce,Ve)=>{HA==null?ce._vnode&&uo(ce._vnode,null,null,!0):IA(ce._vnode||null,HA,ce,null,null,null,Ve),ce._vnode=HA,jt||(jt=!0,n8(),F6(),jt=!1)},bi={p:IA,um:uo,m:to,r:Vs,mt:je,mc:pt,pc:gi,pbc:_e,n:$i,o:t};return{render:io,hydrate:void 0,createApp:gnA(io)}}function wj({type:t,props:i},r){return r==="svg"&&t==="foreignObject"||r==="mathml"&&t==="annotation-xml"&&i&&i.encoding&&i.encoding.includes("html")?void 0:r}function ZM({effect:t,job:i},r){r?(t.flags|=32,i.flags|=4):(t.flags&=-33,i.flags&=-5)}function BnA(t,i){return(!t||t&&!t.pendingBranch)&&i&&!i.persisted}function NW(t,i,r=!1){const l=t.children,I=i.children;if(Ms(l)&&Ms(I))for(let h=0;h>1,t[r[w]]0&&(i[l]=r[h-1]),r[h]=l)}}for(h=r.length,f=r[h-1];h-- >0;)r[h]=f,f=i[f];return r}function l9(t){const i=t.subTree.component;if(i)return i.asyncDep&&!i.asyncResolved?i:l9(i)}function h8(t){if(t)for(let i=0;iYI(pnA);function cT(t,i){return GW(t,null,i)}function xr(t,i,r){return GW(t,i,r)}function GW(t,i,r=ya){const{immediate:l,deep:I,flush:h,once:f}=r,w=oI({},r),_=i&&l||!i&&h!=="post";let k;if(QU){if(h==="sync"){const rA=mnA();k=rA.__watcherHandles||(rA.__watcherHandles=[])}else if(!_){const rA=()=>{};return rA.stop=vQ,rA.resume=vQ,rA.pause=vQ,rA}}const U=OI;w.call=(rA,mA,IA)=>nB(rA,U,mA,IA);let j=!1;h==="post"?w.scheduler=rA=>{dE(rA,U&&U.suspense)}:h!=="sync"&&(j=!0,w.scheduler=(rA,mA)=>{mA?rA():_W(rA)}),w.augmentJob=rA=>{i&&(rA.flags|=4),j&&(rA.flags|=2,U&&(rA.id=U.uid,rA.i=U))};const lA=GsA(t,i,w);return QU&&(k?k.push(lA):_&&lA()),lA}function fnA(t,i,r){const l=this.proxy,I=fg(t)?t.includes(".")?I9(l,t):()=>l[t]:t.bind(l,l);let h;$s(i)?h=i:(h=i.handler,r=i);const f=kU(this),w=GW(I,h.bind(l),r);return f(),w}function I9(t,i){const r=i.split(".");return()=>{let l=t;for(let I=0;Ii==="modelValue"||i==="model-value"?t.modelModifiers:t[`${i}Modifiers`]||t[`${oh(i)}Modifiers`]||t[`${tD(i)}Modifiers`];function DnA(t,i,...r){if(t.isUnmounted)return;const l=t.vnode.props||ya;let I=r;const h=i.startsWith("update:"),f=h&&ynA(l,i.slice(7));f&&(f.trim&&(I=r.map(U=>fg(U)?U.trim():U)),f.number&&(I=r.map(h3)));let w,_=l[w=mj(i)]||l[w=mj(oh(i))];!_&&h&&(_=l[w=mj(tD(i))]),_&&nB(_,t,6,I);const k=l[w+"Once"];if(k){if(!t.emitted)t.emitted={};else if(t.emitted[w])return;t.emitted[w]=!0,nB(k,t,6,I)}}function u9(t,i,r=!1){const l=i.emitsCache,I=l.get(t);if(I!==void 0)return I;const h=t.emits;let f={},w=!1;if(!$s(t)){const _=k=>{const U=u9(k,i,!0);U&&(w=!0,oI(f,U))};!r&&i.mixins.length&&i.mixins.forEach(_),t.extends&&_(t.extends),t.mixins&&t.mixins.forEach(_)}return!h&&!w?(Na(t)&&l.set(t,null),null):(Ms(h)?h.forEach(_=>f[_]=null):oI(f,h),Na(t)&&l.set(t,f),f)}function rV(t,i){return!t||!ZY(i)?!1:(i=i.slice(2).replace(/Once$/,""),Wr(t,i[0].toLowerCase()+i.slice(1))||Wr(t,tD(i))||Wr(t,i))}function B8(t){const{type:i,vnode:r,proxy:l,withProxy:I,propsOptions:[h],slots:f,attrs:w,emit:_,render:k,renderCache:U,props:j,data:lA,setupState:rA,ctx:mA,inheritAttrs:IA}=t,cA=BY(t);let TA,WA;try{if(r.shapeFlag&4){const ue=I||l,xe=ue;TA=mQ(k.call(xe,ue,U,j,rA,lA,mA)),WA=w}else{const ue=i;TA=mQ(ue.length>1?ue(j,{attrs:w,slots:f,emit:_}):ue(j,null)),WA=i.props?w:SnA(w)}}catch(ue){zL.length=0,iV(ue,t,1),TA=Gt(BE)}let ge=TA;if(WA&&IA!==!1){const ue=Object.keys(WA),{shapeFlag:xe}=ge;ue.length&&xe&7&&(h&&ue.some(pW)&&(WA=MnA(WA,h)),ge=Zy(ge,WA,!1,!0))}return r.dirs&&(ge=Zy(ge,null,!1,!0),ge.dirs=ge.dirs?ge.dirs.concat(r.dirs):r.dirs),r.transition&&CU(ge,r.transition),TA=ge,BY(cA),TA}const SnA=t=>{let i;for(const r in t)(r==="class"||r==="style"||ZY(r))&&((i||(i={}))[r]=t[r]);return i},MnA=(t,i)=>{const r={};for(const l in t)(!pW(l)||!(l.slice(9)in i))&&(r[l]=t[l]);return r};function vnA(t,i,r){const{props:l,children:I,component:h}=t,{props:f,children:w,patchFlag:_}=i,k=h.emitsOptions;if(i.dirs||i.transition)return!0;if(r&&_>=0){if(_&1024)return!0;if(_&16)return l?Q8(l,f,k):!!f;if(_&8){const U=i.dynamicProps;for(let j=0;jt.__isSuspense;function wnA(t,i){i&&i.pendingBranch?Ms(t)?i.effects.push(...t):i.effects.push(t):LsA(t)}const Gr=Symbol.for("v-fgt"),aV=Symbol.for("v-txt"),BE=Symbol.for("v-cmt"),_j=Symbol.for("v-stc"),zL=[];let iC=null;function re(t=!1){zL.push(iC=t?null:[])}function _nA(){zL.pop(),iC=zL[zL.length-1]||null}let hU=1;function p8(t,i=!1){hU+=t,t<0&&iC&&i&&(iC.hasOnce=!0)}function d9(t){return t.dynamicChildren=hU>0?iC||x_:null,_nA(),hU>0&&iC&&iC.push(t),t}function gt(t,i,r,l,I,h){return d9(me(t,i,r,l,I,h,!0))}function Qi(t,i,r,l,I){return d9(Gt(t,i,r,l,I,!0))}function BU(t){return t?t.__v_isVNode===!0:!1}function sv(t,i){return t.type===i.type&&t.key===i.key}const C9=({key:t})=>t??null,$1=({ref:t,ref_key:i,ref_for:r})=>(typeof t=="number"&&(t=""+t),t!=null?fg(t)||tI(t)||$s(t)?{i:eI,r:t,k:i,f:!!r}:t:null);function me(t,i=null,r=null,l=0,I=null,h=t===Gr?0:1,f=!1,w=!1){const _={__v_isVNode:!0,__v_skip:!0,type:t,props:i,key:i&&C9(i),ref:i&&$1(i),scopeId:oV,slotScopeIds:null,children:r,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:h,patchFlag:l,dynamicProps:I,dynamicChildren:null,appContext:null,ctx:eI};return w?(bW(_,r),h&128&&t.normalize(_)):r&&(_.shapeFlag|=fg(r)?8:16),hU>0&&!f&&iC&&(_.patchFlag>0||h&6)&&_.patchFlag!==32&&iC.push(_),_}const Gt=TnA;function TnA(t,i=null,r=null,l=0,I=null,h=!1){if((!t||t===AnA)&&(t=BE),BU(t)){const w=Zy(t,i,!0);return r&&bW(w,r),hU>0&&!h&&iC&&(w.shapeFlag&6?iC[iC.indexOf(t)]=w:iC.push(w)),w.patchFlag=-2,w}if(YnA(t)&&(t=t.__vccOpts),i){i=NnA(i);let{class:w,style:_}=i;w&&!fg(w)&&(i.class=Zi(w)),Na(_)&&(wW(_)&&!Ms(_)&&(_=oI({},_)),i.style=Br(_))}const f=fg(t)?1:E9(t)?128:x6(t)?64:Na(t)?4:$s(t)?2:0;return me(t,i,r,l,I,f,h,!0)}function NnA(t){return t?wW(t)||o9(t)?oI({},t):t:null}function Zy(t,i,r=!1,l=!1){const{props:I,ref:h,patchFlag:f,children:w,transition:_}=t,k=i?R3(I||{},i):I,U={__v_isVNode:!0,__v_skip:!0,type:t.type,props:k,key:k&&C9(k),ref:i&&i.ref?r&&h?Ms(h)?h.concat($1(i)):[h,$1(i)]:$1(i):h,scopeId:t.scopeId,slotScopeIds:t.slotScopeIds,children:w,target:t.target,targetStart:t.targetStart,targetAnchor:t.targetAnchor,staticCount:t.staticCount,shapeFlag:t.shapeFlag,patchFlag:i&&t.type!==Gr?f===-1?16:f|16:f,dynamicProps:t.dynamicProps,dynamicChildren:t.dynamicChildren,appContext:t.appContext,dirs:t.dirs,transition:_,component:t.component,suspense:t.suspense,ssContent:t.ssContent&&Zy(t.ssContent),ssFallback:t.ssFallback&&Zy(t.ssFallback),el:t.el,anchor:t.anchor,ctx:t.ctx,ce:t.ce};return _&&l&&CU(U,_.clone(U)),U}function Da(t=" ",i=0){return Gt(aV,null,t,i)}function ei(t="",i=!1){return i?(re(),Qi(BE,null,t)):Gt(BE,null,t)}function mQ(t){return t==null||typeof t=="boolean"?Gt(BE):Ms(t)?Gt(Gr,null,t.slice()):BU(t)?Ly(t):Gt(aV,null,String(t))}function Ly(t){return t.el===null&&t.patchFlag!==-1||t.memo?t:Zy(t)}function bW(t,i){let r=0;const{shapeFlag:l}=t;if(i==null)i=null;else if(Ms(i))r=16;else if(typeof i=="object")if(l&65){const I=i.default;I&&(I._c&&(I._d=!1),bW(t,I()),I._c&&(I._d=!0));return}else{r=32;const I=i._;!I&&!o9(i)?i._ctx=eI:I===3&&eI&&(eI.slots._===1?i._=1:(i._=2,t.patchFlag|=1024))}else $s(i)?(i={default:i,_ctx:eI},r=32):(i=String(i),l&64?(r=16,i=[Da(i)]):r=8);t.children=i,t.shapeFlag|=r}function R3(...t){const i={};for(let r=0;rOI||eI;let mY,w3;{const t=eV(),i=(r,l)=>{let I;return(I=t[r])||(I=t[r]=[]),I.push(l),h=>{I.length>1?I.forEach(f=>f(h)):I[0](h)}};mY=i("__VUE_INSTANCE_SETTERS__",r=>OI=r),w3=i("__VUE_SSR_SETTERS__",r=>QU=r)}const kU=t=>{const i=OI;return mY(t),t.scope.on(),()=>{t.scope.off(),mY(i)}},m8=()=>{OI&&OI.scope.off(),mY(null)};function h9(t){return t.vnode.shapeFlag&4}let QU=!1;function UnA(t,i=!1,r=!1){i&&w3(i);const{props:l,children:I}=t.vnode,h=h9(t);cnA(t,l,h,i),EnA(t,I,r);const f=h?FnA(t,i):void 0;return i&&w3(!1),f}function FnA(t,i){const r=t.type;t.accessCache=Object.create(null),t.proxy=new Proxy(t.ctx,tnA);const{setup:l}=r;if(l){iD();const I=t.setupContext=l.length>1?PnA(t):null,h=kU(t),f=bU(l,t,0,[t.props,I]),w=u6(f);if(oD(),h(),(w||t.sp)&&!H_(t)&&W6(t),w){if(f.then(m8,m8),i)return f.then(_=>{f8(t,_)}).catch(_=>{iV(_,t,0)});t.asyncDep=f}else f8(t,f)}else B9(t)}function f8(t,i,r){$s(i)?t.type.__ssrInlineRender?t.ssrRender=i:t.render=i:Na(i)&&(t.setupState=b6(i)),B9(t)}function B9(t,i,r){const l=t.type;t.render||(t.render=l.render||vQ);{const I=kU(t);iD();try{inA(t)}finally{oD(),I()}}}const OnA={get(t,i){return Bu(t,"get",""),t[i]}};function PnA(t){const i=r=>{t.exposed=r||{}};return{attrs:new Proxy(t.attrs,OnA),slots:t.slots,emit:t.emit,expose:i}}function gV(t){return t.exposed?t.exposeProxy||(t.exposeProxy=new Proxy(b6(DsA(t.exposed)),{get(i,r){if(r in i)return i[r];if(r in WL)return WL[r](t)},has(i,r){return r in i||r in WL}})):t.proxy}function xnA(t,i=!0){return $s(t)?t.displayName||t.name:t.name||i&&t.__name}function YnA(t){return $s(t)&&"__vccOpts"in t}const bt=(t,i)=>TsA(t,i,QU);function VnA(t,i,r){const l=arguments.length;return l===2?Na(i)&&!Ms(i)?BU(i)?Gt(t,null,[i]):Gt(t,i):Gt(t,null,i):(l>3?r=Array.prototype.slice.call(arguments,2):l===3&&BU(r)&&(r=[r]),Gt(t,i,r))}const _3="3.5.13";/** * @vue/runtime-dom v3.5.13 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT -**/let t3;const Pz=typeof window<"u"&&window.trustedTypes;if(Pz)try{t3=Pz.createPolicy("vue",{createHTML:t=>t})}catch{}const L6=t3?t=>t3.createHTML(t):t=>t,onA="http://www.w3.org/2000/svg",snA="http://www.w3.org/1998/Math/MathML",im=typeof document<"u"?document:null,xz=im&&im.createElement("template"),nnA={insert:(t,i,r)=>{i.insertBefore(t,r||null)},remove:t=>{const i=t.parentNode;i&&i.removeChild(t)},createElement:(t,i,r,l)=>{const u=i==="svg"?im.createElementNS(onA,t):i==="mathml"?im.createElementNS(snA,t):r?im.createElement(t,{is:r}):im.createElement(t);return t==="select"&&l&&l.multiple!=null&&u.setAttribute("multiple",l.multiple),u},createText:t=>im.createTextNode(t),createComment:t=>im.createComment(t),setText:(t,i)=>{t.nodeValue=i},setElementText:(t,i)=>{t.textContent=i},parentNode:t=>t.parentNode,nextSibling:t=>t.nextSibling,querySelector:t=>im.querySelector(t),setScopeId(t,i){t.setAttribute(i,"")},insertStaticContent(t,i,r,l,u,B){const f=r?r.previousSibling:i.lastChild;if(u&&(u===B||u.nextSibling))for(;i.insertBefore(u.cloneNode(!0),r),!(u===B||!(u=u.nextSibling)););else{xz.innerHTML=L6(l==="svg"?`${t}`:l==="mathml"?`${t}`:t);const w=xz.content;if(l==="svg"||l==="mathml"){const _=w.firstChild;for(;_.firstChild;)w.appendChild(_.firstChild);w.removeChild(_)}i.insertBefore(w,r)}return[f?f.nextSibling:i.firstChild,r?r.previousSibling:i.lastChild]}},Sy="transition",AL="animation",$L=Symbol("_vtc"),U6={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},rnA=eI({},r6,U6),anA=t=>(t.displayName="Transition",t.props=rnA,t),gnA=anA((t,{slots:i})=>inA(esA,cnA(t),i)),HM=(t,i=[])=>{Ms(t)?t.forEach(r=>r(...i)):t&&t(...i)},Yz=t=>t?Ms(t)?t.some(i=>i.length>1):t.length>1:!1;function cnA(t){const i={};for(const It in t)It in U6||(i[It]=t[It]);if(t.css===!1)return i;const{name:r="v",type:l,duration:u,enterFromClass:B=`${r}-enter-from`,enterActiveClass:f=`${r}-enter-active`,enterToClass:w=`${r}-enter-to`,appearFromClass:_=B,appearActiveClass:k=f,appearToClass:F=w,leaveFromClass:j=`${r}-leave-from`,leaveActiveClass:IA=`${r}-leave-active`,leaveToClass:rA=`${r}-leave-to`}=t,pA=lnA(u),lA=pA&&pA[0],cA=pA&&pA[1],{onBeforeEnter:TA,onEnter:WA,onEnterCancelled:zA,onLeave:$A,onLeaveCancelled:De,onBeforeAppear:Ce=TA,onAppear:ct=WA,onAppearCancelled:mt=zA}=i,Ke=(It,ge,qe,ft)=>{It._enterCancelled=ft,qM(It,ge?F:w),qM(It,ge?k:f),qe&&qe()},Dt=(It,ge)=>{It._isLeaving=!1,qM(It,j),qM(It,rA),qM(It,IA),ge&&ge()},qt=It=>(ge,qe)=>{const ft=It?ct:WA,ni=()=>Ke(ge,It,qe);HM(ft,[ge,ni]),Vz(()=>{qM(ge,It?_:B),$p(ge,It?F:w),Yz(ft)||Jz(ge,l,lA,ni)})};return eI(i,{onBeforeEnter(It){HM(TA,[It]),$p(It,B),$p(It,f)},onBeforeAppear(It){HM(Ce,[It]),$p(It,_),$p(It,k)},onEnter:qt(!1),onAppear:qt(!0),onLeave(It,ge){It._isLeaving=!0;const qe=()=>Dt(It,ge);$p(It,j),It._enterCancelled?($p(It,IA),Kz()):(Kz(),$p(It,IA)),Vz(()=>{It._isLeaving&&(qM(It,j),$p(It,rA),Yz($A)||Jz(It,l,cA,qe))}),HM($A,[It,qe])},onEnterCancelled(It){Ke(It,!1,void 0,!0),HM(zA,[It])},onAppearCancelled(It){Ke(It,!0,void 0,!0),HM(mt,[It])},onLeaveCancelled(It){Dt(It),HM(De,[It])}})}function lnA(t){if(t==null)return null;if(Ta(t))return[tj(t.enter),tj(t.leave)];{const i=tj(t);return[i,i]}}function tj(t){return aoA(t)}function $p(t,i){i.split(/\s+/).forEach(r=>r&&t.classList.add(r)),(t[$L]||(t[$L]=new Set)).add(i)}function qM(t,i){i.split(/\s+/).forEach(l=>l&&t.classList.remove(l));const r=t[$L];r&&(r.delete(i),r.size||(t[$L]=void 0))}function Vz(t){requestAnimationFrame(()=>{requestAnimationFrame(t)})}let InA=0;function Jz(t,i,r,l){const u=t._endId=++InA,B=()=>{u===t._endId&&l()};if(r!=null)return setTimeout(B,r);const{type:f,timeout:w,propCount:_}=unA(t,i);if(!f)return l();const k=f+"end";let F=0;const j=()=>{t.removeEventListener(k,IA),B()},IA=rA=>{rA.target===t&&++F>=_&&j()};setTimeout(()=>{F<_&&j()},w+1),t.addEventListener(k,IA)}function unA(t,i){const r=window.getComputedStyle(t),l=pA=>(r[pA]||"").split(", "),u=l(`${Sy}Delay`),B=l(`${Sy}Duration`),f=Hz(u,B),w=l(`${AL}Delay`),_=l(`${AL}Duration`),k=Hz(w,_);let F=null,j=0,IA=0;i===Sy?f>0&&(F=Sy,j=f,IA=B.length):i===AL?k>0&&(F=AL,j=k,IA=_.length):(j=Math.max(f,k),F=j>0?f>k?Sy:AL:null,IA=F?F===Sy?B.length:_.length:0);const rA=F===Sy&&/\b(transform|all)(,|$)/.test(l(`${Sy}Property`).toString());return{type:F,timeout:j,propCount:IA,hasTransform:rA}}function Hz(t,i){for(;t.lengthqz(r)+qz(t[l])))}function qz(t){return t==="auto"?0:Number(t.slice(0,-1).replace(",","."))*1e3}function Kz(){return document.body.offsetHeight}function EnA(t,i,r){const l=t[$L];l&&(i=(i?[i,...l]:[...l]).join(" ")),i==null?t.removeAttribute("class"):r?t.setAttribute("class",i):t.className=i}const X1=Symbol("_vod"),F6=Symbol("_vsh"),qa={beforeMount(t,{value:i},{transition:r}){t[X1]=t.style.display==="none"?"":t.style.display,r&&i?r.beforeEnter(t):eL(t,i)},mounted(t,{value:i},{transition:r}){r&&i&&r.enter(t)},updated(t,{value:i,oldValue:r},{transition:l}){!i!=!r&&(l?i?(l.beforeEnter(t),eL(t,!0),l.enter(t)):l.leave(t,()=>{eL(t,!1)}):eL(t,i))},beforeUnmount(t,{value:i}){eL(t,i)}};function eL(t,i){t.style.display=i?t[X1]:"none",t[F6]=!i}const dnA=Symbol(""),CnA=/(^|;)\s*display\s*:/;function hnA(t,i,r){const l=t.style,u=fg(r);let B=!1;if(r&&!u){if(i)if(fg(i))for(const f of i.split(";")){const w=f.slice(0,f.indexOf(":")).trim();r[w]==null&&_1(l,w,"")}else for(const f in i)r[f]==null&&_1(l,f,"");for(const f in r)f==="display"&&(B=!0),_1(l,f,r[f])}else if(u){if(i!==r){const f=l[dnA];f&&(r+=";"+f),l.cssText=r,B=CnA.test(r)}}else i&&t.removeAttribute("style");X1 in t&&(t[X1]=B?l.display:"",t[F6]&&(l.display="none"))}const jz=/\s*!important$/;function _1(t,i,r){if(Ms(r))r.forEach(l=>_1(t,i,l));else if(r==null&&(r=""),i.startsWith("--"))t.setProperty(i,r);else{const l=BnA(t,i);jz.test(r)?t.setProperty(Wy(l),r.replace(jz,""),"important"):t[l]=r}}const Wz=["Webkit","Moz","ms"],ij={};function BnA(t,i){const r=ij[i];if(r)return r;let l=eh(i);if(l!=="filter"&&l in t)return ij[i]=l;l=MY(l);for(let u=0;uoj||(fnA.then(()=>oj=0),oj=Date.now());function DnA(t,i){const r=l=>{if(!l._vts)l._vts=Date.now();else if(l._vts<=r.attached)return;oB(SnA(l,r.value),i,5,[l])};return r.value=t,r.attached=ynA(),r}function SnA(t,i){if(Ms(i)){const r=t.stopImmediatePropagation;return t.stopImmediatePropagation=()=>{r.call(t),t._stopped=!0},i.map(l=>u=>!u._stopped&&l&&l(u))}else return i}const e8=t=>t.charCodeAt(0)===111&&t.charCodeAt(1)===110&&t.charCodeAt(2)>96&&t.charCodeAt(2)<123,MnA=(t,i,r,l,u,B)=>{const f=u==="svg";i==="class"?EnA(t,l,f):i==="style"?hnA(t,r,l):yY(i)?P3(i)||pnA(t,i,r,l,B):(i[0]==="."?(i=i.slice(1),!0):i[0]==="^"?(i=i.slice(1),!1):vnA(t,i,l,f))?(Xz(t,i,l),!t.tagName.includes("-")&&(i==="value"||i==="checked"||i==="selected")&&Zz(t,i,l,f,B,i!=="value")):t._isVueCE&&(/[A-Z]/.test(i)||!fg(l))?Xz(t,eh(i),l,B,i):(i==="true-value"?t._trueValue=l:i==="false-value"&&(t._falseValue=l),Zz(t,i,l,f))};function vnA(t,i,r,l){if(l)return!!(i==="innerHTML"||i==="textContent"||i in t&&e8(i)&&$s(r));if(i==="spellcheck"||i==="draggable"||i==="translate"||i==="form"||i==="list"&&t.tagName==="INPUT"||i==="type"&&t.tagName==="TEXTAREA")return!1;if(i==="width"||i==="height"){const u=t.tagName;if(u==="IMG"||u==="VIDEO"||u==="CANVAS"||u==="SOURCE")return!1}return e8(i)&&fg(r)?!1:i in t}const t8=t=>{const i=t.props["onUpdate:modelValue"]||!1;return Ms(i)?r=>v1(i,r):i};function RnA(t){t.target.composing=!0}function i8(t){const i=t.target;i.composing&&(i.composing=!1,i.dispatchEvent(new Event("input")))}const sj=Symbol("_assign"),wnA={created(t,{modifiers:{lazy:i,trim:r,number:l}},u){t[sj]=t8(u);const B=l||u.props&&u.props.type==="number";E_(t,i?"change":"input",f=>{if(f.target.composing)return;let w=t.value;r&&(w=w.trim()),B&&(w=Yj(w)),t[sj](w)}),r&&E_(t,"change",()=>{t.value=t.value.trim()}),i||(E_(t,"compositionstart",RnA),E_(t,"compositionend",i8),E_(t,"change",i8))},mounted(t,{value:i}){t.value=i??""},beforeUpdate(t,{value:i,oldValue:r,modifiers:{lazy:l,trim:u,number:B}},f){if(t[sj]=t8(f),t.composing)return;const w=(B||t.type==="number")&&!/^0\d/.test(t.value)?Yj(t.value):t.value,_=i??"";w!==_&&(document.activeElement===t&&t.type!=="range"&&(l&&i===r||u&&t.value.trim()===_)||(t.value=_))}},_nA=["ctrl","shift","alt","meta"],TnA={stop:t=>t.stopPropagation(),prevent:t=>t.preventDefault(),self:t=>t.target!==t.currentTarget,ctrl:t=>!t.ctrlKey,shift:t=>!t.shiftKey,alt:t=>!t.altKey,meta:t=>!t.metaKey,left:t=>"button"in t&&t.button!==0,middle:t=>"button"in t&&t.button!==1,right:t=>"button"in t&&t.button!==2,exact:(t,i)=>_nA.some(r=>t[`${r}Key`]&&!i.includes(r))},id=(t,i)=>{const r=t._withMods||(t._withMods={}),l=i.join(".");return r[l]||(r[l]=(u,...B)=>{for(let f=0;f{const r=t._withKeys||(t._withKeys={}),l=i.join(".");return r[l]||(r[l]=u=>{if(!("key"in u))return;const B=Wy(u.key);if(i.some(f=>f===B||NnA[f]===B))return t(u)})},GnA=eI({patchProp:MnA},nnA);let o8;function P6(){return o8||(o8=_sA(GnA))}const av=(...t)=>{P6().render(...t)},bnA=(...t)=>{const i=P6().createApp(...t),{mount:r}=i;return i.mount=l=>{const u=LnA(l);if(!u)return;const B=i._component;!$s(B)&&!B.render&&!B.template&&(B.template=u.innerHTML),u.nodeType===1&&(u.textContent="");const f=r(u,!1,knA(u));return u instanceof Element&&(u.removeAttribute("v-cloak"),u.setAttribute("data-v-app","")),f},i};function knA(t){if(t instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&t instanceof MathMLElement)return"mathml"}function LnA(t){return fg(t)?document.querySelector(t):t}function UnA(t){throw new Error('Could not dynamically require "'+t+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var gL={exports:{}},T1={exports:{}},FnA=T1.exports,s8;function x6(){return s8||(s8=1,function(t,i){(function(r,l){t.exports=l()})(FnA,function(){const r=p=>p===void 0,l=p=>typeof p=="string",u=p=>{var h;return(h=Object.prototype.toString.call(p).match(/^\[object (.*)\]$/))===null||h===void 0?void 0:h[1].toLowerCase()},B=p=>typeof Array.isArray=="function"?Array.isArray(p):u(p)==="array",f=p=>p!==null&&typeof p=="object",w=p=>B(p)||f(p),_=p=>{if(typeof p!="string")return!1;const h=p[0];return!/[^a-zA-Z0-9]/.test(h)},k=p=>{if(typeof p!="object"||p===null)return!1;const h=Object.getPrototypeOf(p);if(h===null)return!0;let v=h;for(;Object.getPrototypeOf(v)!==null;)v=Object.getPrototypeOf(v);return h===v};function F(p=99999999){return Math.round(Math.random()*p)}const j=(p,h,v,N)=>{if(!w(p)||!w(h))return 0;let O=0;const z=Object.keys(h);let X;for(let nA=0,DA=z.length;nA"u"&&typeof uni.requireNativePlugin=="function",to=It&&typeof wx.miniapp=="object",uo=typeof uni<"u",Vs=ft&&typeof tt.enterChat=="function",ki=It||qe||ft||Vt||gi||_o||Fi,ns=typeof window>"u"&&!ki&&typeof mg<"u"&&mg.NativeScriptGlobals!==void 0,Ko=typeof mg<"u"&&(mg.nativeModuleProxy!==void 0||mg.ReactNative!==void 0),$i=typeof wx<"u"&&typeof wx.getAccountInfoSync=="function"&&!!wx.getAccountInfoSync().plugin,jt=typeof uni<"u"?!ki:typeof window<"u"&&!ki&&!Ko,io=qe?qq:ft?tt:Vt?swan:gi?my:It?wx:_o?uni:Fi?jd:{},bi=jt&&window&&window.navigator&&window.navigator.userAgent||"",vs=/(micromessenger|webbrowser)/i.test(bi),HA=function(){let p="WEB";return vs?p="WEB":qe?p="QQ_MP":ft?p="TT_MP":Vt?p="BAIDU_MP":gi?p="ALI_MP":It?p=to?"DONUT_NATIVE_APP":"WX_MP":_o?p="UNI_NATIVE_APP":ns?p="NS_NATIVE_APP":Ko&&(p="RN_NATIVE_APP"),rA[p]}(),le=/iPad/i.test(bi),xe=/iPhone/i.test(bi)&&!le,Lt=/iPod/i.test(bi),it=xe||le||Lt,gt=function(){const p=bi.match(/OS (\d+)_/i);return p&&p[1]?p[1]:null}(),Xt=/Android/i.test(bi),$t=function(){const p=bi.match(/Android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i);if(!p)return null;const h=p[1]&&parseFloat(p[1]),v=p[2]&&parseFloat(p[2]);return h&&v?parseFloat(`${p[1]}.${p[2]}`):h||null}(),be=/Firefox/i.test(bi),je=/Edge/i.test(bi),Mt=!je&&/Chrome/i.test(bi),Rt=/MSIE/.test(bi)||bi.indexOf("Trident")>-1&&bi.indexOf("rv:11.0")>-1,Oi=function(){const p=/MSIE\s(\d+)\.\d/.exec(bi);let h=p&&parseFloat(p[1]);return!h&&/Trident\/7.0/i.test(bi)&&/rv:11.0/.test(bi)&&(h=11),h}(),Qo=/Safari/i.test(bi)&&!Mt&&!Xt&&!je,To=/Windows/i.test(bi),oo=/MAC OS X/i.test(bi),No=jt&&typeof Worker<"u"&&!Rt,An=Xt||it,rn=function(){if(typeof window>"u"||window.navigator===void 0)return!1;const{standalone:p}=window.navigator;return!(!it||p||Qo)}();function Es(){let p="unknown";if(oo&&(p="mac"),To&&(p="windows"),it&&(p="ios"),Xt&&(p="android"),ki)try{const{platform:h}=io.getSystemInfoSync();h!==void 0&&(p=h)}catch(h){console.error(h)}return p}const an=typeof process<"u"&&process.versions!==void 0&&process.versions.node!==void 0&&typeof window>"u";function yo(p,h){var v={};for(var N in p)Object.prototype.hasOwnProperty.call(p,N)&&h.indexOf(N)<0&&(v[N]=p[N]);if(p!=null&&typeof Object.getOwnPropertySymbols=="function"){var O=0;for(N=Object.getOwnPropertySymbols(p);O{io.request({url:v,data:N,method:h,timeout:O,header:{"content-type":jr},success:nA=>z(nA.data),fail:()=>X(new Error(`{"message":"Network error","code":${Jn}}`))})}):an?void 0:new Promise((z,X)=>{const nA=new XMLHttpRequest,DA=setTimeout(()=>{nA.abort(),X(new Error(`{"message":"Request timeout","code":${Br}}`))},O);nA.onreadystatechange=function(){if(nA.readyState===4)if(clearTimeout(DA),nA.status===200||nA.status===304)try{z(nA.responseText?JSON.parse(nA.responseText):null)}catch{z(nA.responseText)}else X(new Error(`{"message":"Network error","code":${Jn}}`))},nA.open(h,v,!0),nA.setRequestHeader("Content-type",jr),nA.send(N||null)})})}function Rs(p){if(p==null)return!0;if(typeof p=="boolean")return!1;if(typeof p=="number")return p===0;if(typeof p=="string"||typeof p=="function"||Array.isArray(p))return p.length===0;if(p instanceof Error)return p.message==="";if(k(p)){for(const h in p)if(Object.prototype.hasOwnProperty.call(p,h))return!1;return!0}return(Object.prototype.toString.call(p)==="[object Map]"||Object.prototype.toString.call(p)==="[object Set]"||Object.prototype.toString.call(p)==="[object File]")&&p.size===0}function ir(p,h){if(p===null||typeof p!="object")return p;const v=h||new WeakMap;if(v.has(p))return v.get(p);if(p instanceof Date)return new Date(p.getTime());if(p instanceof RegExp)return new RegExp(p.source,p.flags);if(p instanceof Map){const z=new Map;return v.set(p,z),p.forEach((X,nA)=>{z.set(ir(nA,v),ir(X,v))}),z}if(p instanceof Set){const z=new Set;return v.set(p,z),p.forEach(X=>{z.add(ir(X,v))}),z}if(Array.isArray(p)){const z=[];return v.set(p,z),p.forEach(X=>{z.push(ir(X,v))}),z}const N=Object.getPrototypeOf(p),O=Object.create(N);return v.set(p,O),[...Object.getOwnPropertyNames(p),...Object.getOwnPropertySymbols(p)].forEach(z=>{if(z==="__ob__"||z==="__v_skip"||z==="__v_isRef"||z==="__v_isReadonly")return;const X=Object.getOwnPropertyDescriptor(p,z);X&&(X.get||X.set?Object.defineProperty(O,z,X):O[z]=ir(p[z],v))}),O}function en(p,h,v){const N=new WeakSet,O=(z,X)=>{if(h&&(X=h(z,X)),X===void 0)return"undefined";if(X===null)return null;if(Number.isNaN(X))return"NaN";if(X===1/0)return"Infinity";if(X===-1/0)return"-Infinity";if(typeof X=="function")return`[Function: ${X.name||"anonymous"}]`;if(typeof X=="symbol")return X.toString();if(typeof X=="bigint")return`${X.toString()}n`;if(typeof X=="object"&&X!==null){if(N.has(X))return"[Circular]";N.add(X)}return X instanceof Date?X.toISOString():X instanceof Error?{name:X.name,message:X.message}:X instanceof Map?{dataType:"Map",value:Array.from(X.entries())}:X instanceof Set?{dataType:"Set",value:Array.from(X.values())}:X};try{return JSON.stringify(p,O,v)}catch(z){return console.error("Failed to stringify:",z),""}}function wn(){let p,h;return{promise:new Promise((v,N)=>{p=v,h=N}),resolve:p,reject:h}}var Jt,yg=Object.freeze({__proto__:null,ANDROID_VERSION:$t,IE_VERSION:Oi,IN_ALIPAY_MINI_APP:gi,IN_BAIDU_MINI_APP:Vt,IN_BROWSER:jt,IN_DONUT_NATIVE_APP:to,IN_FEISHU_MINI_APP:Vs,IN_JD_MINI_APP:Fi,IN_MINI_APP:ki,IN_NODE:an,IN_NS_NATIVE_APP:ns,IN_QQ_MINI_APP:qe,IN_RN_APP:Ko,IN_TT_MINI_APP:ft,IN_TT_MINI_GAME:ni,IN_UNI_APP:uo,IN_UNI_NATIVE_APP:_o,IN_WX_MINI_APP:It,IN_WX_MINI_APP_DESK:qt,IN_WX_MINI_GAME:ge,IN_WX_MINI_PLUGIN:$i,IOS_VERSION:gt,IS_ANDROID:Xt,IS_CHROME:Mt,IS_EDGE:je,IS_FIREFOX:be,IS_IE:Rt,IS_IOS:it,IS_IPAD:le,IS_IPHONE:xe,IS_IPOD:Lt,IS_MAC:oo,IS_SAFARI:Qo,IS_WECHAT:vs,IS_WIN:To,IS_WORKER_AVAILABLE:No,MINI_APP_NAMESPACE:io,USER_AGENT:bi,base16EncodeBinaryString:IA,deepCopyWithMethods:ir,deepMerge:j,generatePromise:wn,getPlatformType:Es,getType:u,httpRequest:Pi,isArray:B,isArrayOrObject:w,isEmpty:Rs,isH5:An,isIOSWebView:rn,isNumber:p=>p!==null&&(typeof p=="number"&&!Number.isNaN(p-0)||typeof p=="object"&&p.constructor===Number),isObject:f,isPlainObject:k,isString:l,isUndefined:r,isUniIOSApp:function(){return _o&&uni.getDeviceInfo().platform.toLocaleLowerCase()==="ios"},isValidRequestKey:_,platform:HA,randomInt:F,randomString:function(){const p="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";let h="";for(let v=32;v>0;--v)h+=p[Math.floor(62*Math.random())];return h},safeStringify:en});class On{constructor(){this.listeners={}}on(h,v,N){this.listeners[h]||(this.listeners[h]=[]),this.listeners[h].push({fn:v,context:N})}off(h,v,N){var O;v&&(this.listeners[h]=(O=this.listeners[h])===null||O===void 0?void 0:O.filter(z=>{const X=z.fn===v,nA=!N||z.context===N;return!(X&&nA)}))}emit(h,...v){const N=this.listeners[h];N&&N.forEach(O=>{const{fn:z,context:X}=O;try{z.apply(X,v)}catch(nA){console.warn(`Error in event handler for ${h} error: ${en(nA)}`)}})}once(h,v,N){const O=(...z)=>{v.apply(N,z),this.off(h,O)};this.on(h,O)}}(function(p){p.BUSINESS_COMMAND="business_command",p.C2C_REALTIME_MESSAGE="c2c_realtime_message",p.C2C_MESSAGE_MODIFIED="c2c_message_modified",p.C2C_REVOKED_MESSAGE="c2c_message_revoked",p.GROUP_REALTIME_MESSAGE="group_realtime_message",p.GROUP_MESSAGE_MODIFIED="group_message_modified",p.GROUP_MESSAGE_REVOKED="group_message_revoked",p.C2C_MESSAGE_READ_RECEIPT="c2c_message_read_receipt",p.MESSAGE_REACTION_UPDATED="message_reaction_updated",p.MESSAGE_REACTION_UPDATED_SYNC="message_reaction_updated_sync",p.GROUP_AT_TIPS="group_at_tips",p.USER_STATUS_UPDATE="user_status_update",p.FRIEND_LIST_MODIFIED="friend_list_modified",p.PROFILE_MODIFIED="profile_modified",p.CONV_MODIFIED="conversation_modified",p.GROUP_TIPS_NOTIFICATION="group_tips_notification",p.GROUP_MESSAGE_READ_RECEIPT="group_message_read_receipt",p.GROUP_MESSAGE_READ_SYNC="group_message_read_sync",p.GROUP_SYSTEM_NOTIFICATION="group_system_notification",p.C2C_MESSAGE_PEER_READ="c2c_message_peer_read",p.C2C_MESSAGE_READ_SYNC="c2c_message_read_sync",p.C2C_REMIND_TYPE_SYNC="c2c_remind_type_sync",p.FOLLOW_LIST_UPDATED="follow_list_updated",p.MESSAGE_EXTENSIONS_UPDATED="message_extensions_updated",p.ALL_MESSAGE_READ="all_message_read",p.CONVERSATION_MARK_UPDATED="conversation_mark_updated",p.CONVERSATION_GROUP_ADD="conversation_group_add",p.CONVERSATION_GROUP_DELETED="conversation_group_deleted",p.CONVERSATION_GROUP_UPDATED="conversation_group_updated",p.ALL_RECEIVE_MESSAGE_OPTION="all_receive_message_option",p.TOPIC_AT_TIPS="topic_at_tips",p.TOPIC_TIPS_NOTIFICATION="topic_tips_notification",p.TOPIC_SYSTEM_NOTIFICATION="topic_system_notification",p.TOPIC_MESSAGE_READ_SYNC="topic_message_read_sync",p.TOPIC_LATEST_MESSAGE="topic_latest_message",p.GROUP_MESSAGE_PINNED="group_message_pinned"})(Jt||(Jt={}));const Gn=[16,17];function Js(p){var h;const v=[];return(h=p?.GroupTips)===null||h===void 0||h.forEach(N=>{var O;N.GroupInfo.MillionGroupFlag===2?v.push(Jt.TOPIC_TIPS_NOTIFICATION):Gn.includes((O=N?.MsgBody)===null||O===void 0?void 0:O.OpType)?v.push(Jt.GROUP_MESSAGE_PINNED):v.push(Jt.GROUP_TIPS_NOTIFICATION)}),v}const Qr=[{conditions:[{type:"event",value:100}],subType:Jt.BUSINESS_COMMAND},{conditions:[{type:"event",value:24}],subType:Jt.ALL_RECEIVE_MESSAGE_OPTION},{conditions:[{type:"event",value:26}],subType:Jt.TOPIC_LATEST_MESSAGE},{conditions:[{type:"hasKey",value:"C2cMsgArray"}],subType:Jt.C2C_REALTIME_MESSAGE},{conditions:[{type:"hasKey",value:"C2cMsgModNotifys"}],subType:Jt.C2C_MESSAGE_MODIFIED},{conditions:[{type:"hasKey",value:"ProfileDataMod"}],subType:Jt.PROFILE_MODIFIED},{conditions:[{type:"hasKey",value:"UserStatusList"}],subType:Jt.USER_STATUS_UPDATE},{conditions:[{type:"hasKey",value:"FriendListMod"}],subType:Jt.FRIEND_LIST_MODIFIED},{conditions:[{type:"hasKey",value:"GroupMsgArray"}],subType:Jt.GROUP_REALTIME_MESSAGE},{conditions:[{type:"hasKey",value:"GroupMsgModNotifys"}],subType:Jt.GROUP_MESSAGE_MODIFIED},{conditions:[{type:"hasKey",value:"C2cNotifyMsgArray"}],subTypeParser:function(p){var h;const v=[];return(h=p?.C2cNotifyMsgArray)===null||h===void 0||h.forEach(N=>{N.WithdrawC2cMsgNotify&&v.push(Jt.C2C_REVOKED_MESSAGE),N.C2cReadedReceipt&&v.push(Jt.C2C_MESSAGE_PEER_READ),N.ReadC2cMsgNotify&&v.push(Jt.C2C_MESSAGE_READ_SYNC),N.MuteNotificationsSync&&v.push(Jt.C2C_REMIND_TYPE_SYNC)}),v}},{conditions:[{type:"hasKey",value:"GroupTips"},{type:"event",value:4}],subTypeParser:Js},{conditions:[{type:"hasKey",value:"GroupTips"},{type:"event",value:5}],subTypeParser:function(p){var h;const v=[];return(h=p?.GroupTips)===null||h===void 0||h.forEach(N=>{Array.isArray(N.MsgBody.GroupWithdrawInfoArray)?v.push(Jt.GROUP_MESSAGE_REVOKED):Array.isArray(N.MsgBody.GroupMsgReceiptList)?v.push(Jt.GROUP_MESSAGE_READ_RECEIPT):Array.isArray(N.MsgBody.GroupReadInfoArray)?N.MsgBody.GroupReadInfoArray[0].TopicId?v.push(Jt.TOPIC_MESSAGE_READ_SYNC):v.push(Jt.GROUP_MESSAGE_READ_SYNC):N.GroupInfo.MillionGroupFlag===2?v.push(Jt.TOPIC_SYSTEM_NOTIFICATION):v.push(Jt.GROUP_SYSTEM_NOTIFICATION)}),v}},{conditions:[{type:"hasKey",value:"GroupTips"},{type:"event",value:6}],subTypeParser:Js},{conditions:[{type:"hasKey",value:"GroupTips"},{type:"event",value:12}],subTypeParser:function(p){var h;const v=[];return(h=p?.GroupTips)===null||h===void 0||h.forEach(N=>{const{GroupAtTips:{TopicId:O}}=N;O?v.push(Jt.TOPIC_AT_TIPS):v.push(Jt.GROUP_AT_TIPS)}),v}},{conditions:[{type:"hasKey",value:"RecentContactMod"}],subTypeParser:function(p){var h;const v=[];return(h=p?.RecentContactMod)===null||h===void 0||h.forEach(N=>{switch(N.PushType){case Ke.CONV_MARK_UPDATED:v.push(Jt.CONVERSATION_MARK_UPDATED);break;case Ke.CONV_GROUP_ADDED:v.push(Jt.CONVERSATION_GROUP_ADD);break;case Ke.CONV_GROUP_DELETED:v.push(Jt.CONVERSATION_GROUP_DELETED);break;case Ke.CONV_GROUP_UPDATED:v.push(Jt.CONVERSATION_GROUP_UPDATED);break;default:v.push(Jt.CONV_MODIFIED)}}),v}},{conditions:[{type:"hasKey",value:"MsgReactionNotifyList"}],subType:Jt.MESSAGE_REACTION_UPDATED},{conditions:[{type:"hasKey",value:"MsgReactionNotify"}],subType:Jt.MESSAGE_REACTION_UPDATED_SYNC},{conditions:[{type:"hasKey",value:"C2cMsgInfo"}],subType:Jt.C2C_MESSAGE_READ_RECEIPT},{conditions:[{type:"hasKey",value:"FollowChangeList"}],subType:Jt.FOLLOW_LIST_UPDATED},{conditions:[{type:"hasKey",value:"MsgExtensionNotify"}],subType:Jt.MESSAGE_EXTENSIONS_UPDATED},{conditions:[{type:"hasKey",value:"C2CReadAllMsg"}],subType:Jt.ALL_MESSAGE_READ}];var Pn;function pr(p){var h;const v=Array.isArray((h=p?.body)===null||h===void 0?void 0:h.EventArray)?p.body.EventArray:[],N=[];return v.forEach(O=>{O.Flag=p.body.Flag;const z=Qr.find(nA=>nA.conditions.every(DA=>{switch(DA.type){case"event":return O.Event===DA.value;case"hasKey":return Object.prototype.hasOwnProperty.call(O,DA.value);default:return!1}}));if(!z)return null;let X=[];typeof z.subTypeParser=="function"?X=z.subTypeParser(O):z.subType&&(X=z.subType),Array.isArray(X)?X.forEach(nA=>{N.push({type:`${Pn.SERVER_PUSH_MESSAGE}:${nA}`,data:O})}):N.push({type:`${Pn.SERVER_PUSH_MESSAGE}:${X}`,data:O})}),N}(function(p){p.SERVER_PUSH_MESSAGE="im_open_push.msg_push",p.SERVER_PUSH_MESSAGE_MULTIPLE="im_open_push.multi_msg_push_ws",p.ERROR="error"})(Pn||(Pn={}));const po={[Pn.SERVER_PUSH_MESSAGE]:pr,[Pn.SERVER_PUSH_MESSAGE_MULTIPLE]:pr,[Pn.ERROR]:function(p){const{errorCode:h}=p;return[{type:`error:${h}`,data:p}]}},gn=new class{constructor(){this._outerEventEmitter=null,this._innerEventEmitter=null,this._filteredCallbackMap=new Map,this._outerEventEmitter=new On,this._innerEventEmitter=new On,this.InnerEventSubType=Jt}subscribeInnerEvent(p,h,v,N,O){var z;let X,nA,DA,GA;["string","number"].includes(typeof h)?(DA=`${p}:${h}`,GA=v,nA=N,X=O):(DA=p,GA=h,nA=v,X=typeof N=="function"?N:void 0),X?this._subscribeWithFilter(DA,GA,nA,X):(z=this._innerEventEmitter)===null||z===void 0||z.on(DA,GA,nA)}emitInnerEvent(p,h){var v,N;if((v=this._innerEventEmitter)===null||v===void 0||v.emit(p,h),Object.keys(po).includes(p)){const O=(N=po[p])===null||N===void 0?void 0:N.call(po,h);O?.forEach(z=>{var X;z&&((X=this._innerEventEmitter)===null||X===void 0||X.emit(z.type,z.data))})}}subscribeOuterEvent(p,h,v){var N;(N=this._outerEventEmitter)===null||N===void 0||N.on(p,h,v)}unSubscribeOuterEvent(p,h,v){var N;(N=this._outerEventEmitter)===null||N===void 0||N.off(p,h,v)}unSubscribeInnerEvent(p,h,v,N){if(["string","number"].includes(typeof h)){const O=v,z=`${p}:${h}`;this._unsubscribeEvent(z,O,N)}else{const O=h;this._unsubscribeEvent(p,O,v)}}emitOuterEvent(p,h){var v;(v=this._outerEventEmitter)===null||v===void 0||v.emit(p,h)}getOuterEventEmitter(){return this._outerEventEmitter}rest(){this._outerEventEmitter=null,this._innerEventEmitter=null}_subscribeWithFilter(p,h,v,N){var O;const z=X=>{N.call(v,X)&&h.call(v,X)};this._filteredCallbackMap.has(p)||this._filteredCallbackMap.set(p,[]),this._filteredCallbackMap.get(p).push({originalCallback:h,filteredCallback:z,filter:N,context:v}),(O=this._innerEventEmitter)===null||O===void 0||O.on(p,z,v)}_unsubscribeEvent(p,h,v){var N,O;const z=this._filteredCallbackMap.get(p);if(z){const X=z.findIndex(nA=>nA.originalCallback===h&&nA.context===v);if(X!==-1){const{filteredCallback:nA}=z[X];return(N=this._innerEventEmitter)===null||N===void 0||N.off(p,nA,v),z.splice(X,1),void(z.length===0&&this._filteredCallbackMap.delete(p))}}(O=this._innerEventEmitter)===null||O===void 0||O.off(p,h,v)}};class yl{constructor(){this._socket=null}connectSocket(h){return this._socket=new WebSocket(h),this._socket}send(h){var v,N;try{(v=this._socket)===null||v===void 0||v.send(h)}catch(O){(N=this._onSendFail)===null||N===void 0||N.call(this,O)}}bindSocketHandlers(h){const{onOpen:v,onMessage:N,onClose:O,onError:z,onSendFail:X}=h;this._socket&&(this._socket.binaryType="arraybuffer",this._socket.onopen=v,this._socket.onmessage=N,this._socket.onclose=O,this._socket.onerror=z,this._onSendFail=X)}unbindSocketHandlers(){this._socket&&(this._socket.onopen=null,this._socket.onmessage=null,this._socket.onclose=null,this._socket.onerror=null)}disconnect(){this._socket&&(this._socket.close(),this._socket=null)}}class cn{constructor(h){this._onError=h.onError}connectSocket(h){const v=this;return this._socket=io.connectSocket({url:h,header:{"content-type":"application/json"},complete:()=>{},fail:N=>v._onError(N)}),this._socket}send(h){var v;(v=this._socket)===null||v===void 0||v.send({data:h,fail:this._onSendFail})}bindSocketHandlers(h){const{onOpen:v,onMessage:N,onClose:O,onError:z,onSendFail:X}=h;this._socket&&(this._socket.onClose(O),this._socket.onOpen(v),this._socket.onMessage(N),this._socket.onError(z),this._onSendFail=X)}unbindSocketHandlers(){this._socket&&(this._socket.onClose(()=>{}),this._socket.onOpen(()=>{}),this._socket.onMessage(()=>{}),this._socket.onError(()=>{}))}disconnect(){this._socket&&(this._socket.close(),this._socket=null)}}const mr="CONNECT",Ls="SEND",Vc="DISCONNECT",ms="OPEN",as="MESSAGE",mu="CLOSE",ja="ERROR",Cs="SEND_FAIL";class sg{constructor(){this._worker=null,this._blobUrl=null}connectSocket(h){const v=new Blob([` +**/let T3;const y8=typeof window<"u"&&window.trustedTypes;if(y8)try{T3=y8.createPolicy("vue",{createHTML:t=>t})}catch{}const Q9=T3?t=>T3.createHTML(t):t=>t,JnA="http://www.w3.org/2000/svg",HnA="http://www.w3.org/1998/Math/MathML",rm=typeof document<"u"?document:null,D8=rm&&rm.createElement("template"),qnA={insert:(t,i,r)=>{i.insertBefore(t,r||null)},remove:t=>{const i=t.parentNode;i&&i.removeChild(t)},createElement:(t,i,r,l)=>{const I=i==="svg"?rm.createElementNS(JnA,t):i==="mathml"?rm.createElementNS(HnA,t):r?rm.createElement(t,{is:r}):rm.createElement(t);return t==="select"&&l&&l.multiple!=null&&I.setAttribute("multiple",l.multiple),I},createText:t=>rm.createTextNode(t),createComment:t=>rm.createComment(t),setText:(t,i)=>{t.nodeValue=i},setElementText:(t,i)=>{t.textContent=i},parentNode:t=>t.parentNode,nextSibling:t=>t.nextSibling,querySelector:t=>rm.querySelector(t),setScopeId(t,i){t.setAttribute(i,"")},insertStaticContent(t,i,r,l,I,h){const f=r?r.previousSibling:i.lastChild;if(I&&(I===h||I.nextSibling))for(;i.insertBefore(I.cloneNode(!0),r),!(I===h||!(I=I.nextSibling)););else{D8.innerHTML=Q9(l==="svg"?`${t}`:l==="mathml"?`${t}`:t);const w=D8.content;if(l==="svg"||l==="mathml"){const _=w.firstChild;for(;_.firstChild;)w.appendChild(_.firstChild);w.removeChild(_)}i.insertBefore(w,r)}return[f?f.nextSibling:i.firstChild,r?r.previousSibling:i.lastChild]}},wy="transition",CL="animation",pU=Symbol("_vtc"),p9={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},KnA=oI({},J6,p9),jnA=t=>(t.displayName="Transition",t.props=KnA,t),WnA=jnA((t,{slots:i})=>VnA(xsA,znA(t),i)),XM=(t,i=[])=>{Ms(t)?t.forEach(r=>r(...i)):t&&t(...i)},S8=t=>t?Ms(t)?t.some(i=>i.length>1):t.length>1:!1;function znA(t){const i={};for(const Le in t)Le in p9||(i[Le]=t[Le]);if(t.css===!1)return i;const{name:r="v",type:l,duration:I,enterFromClass:h=`${r}-enter-from`,enterActiveClass:f=`${r}-enter-active`,enterToClass:w=`${r}-enter-to`,appearFromClass:_=h,appearActiveClass:k=f,appearToClass:U=w,leaveFromClass:j=`${r}-leave-from`,leaveActiveClass:lA=`${r}-leave-active`,leaveToClass:rA=`${r}-leave-to`}=t,mA=ZnA(I),IA=mA&&mA[0],cA=mA&&mA[1],{onBeforeEnter:TA,onEnter:WA,onEnterCancelled:ge,onLeave:ue,onLeaveCancelled:xe,onBeforeAppear:Be=TA,onAppear:ut=WA,onAppearCancelled:pt=ge}=i,ze=(Le,oe,je,Dt)=>{Le._enterCancelled=Dt,$M(Le,oe?U:w),$M(Le,oe?k:f),je&&je()},_e=(Le,oe)=>{Le._isLeaving=!1,$M(Le,j),$M(Le,rA),$M(Le,lA),oe&&oe()},We=Le=>(oe,je)=>{const Dt=Le?ut:WA,ni=()=>ze(oe,Le,je);XM(Dt,[oe,ni]),M8(()=>{$M(oe,Le?_:h),im(oe,Le?U:w),S8(Dt)||v8(oe,l,IA,ni)})};return oI(i,{onBeforeEnter(Le){XM(TA,[Le]),im(Le,h),im(Le,f)},onBeforeAppear(Le){XM(Be,[Le]),im(Le,_),im(Le,k)},onEnter:We(!1),onAppear:We(!0),onLeave(Le,oe){Le._isLeaving=!0;const je=()=>_e(Le,oe);im(Le,j),Le._enterCancelled?(im(Le,lA),_8()):(_8(),im(Le,lA)),M8(()=>{Le._isLeaving&&($M(Le,j),im(Le,rA),S8(ue)||v8(Le,l,cA,je))}),XM(ue,[Le,je])},onEnterCancelled(Le){ze(Le,!1,void 0,!0),XM(ge,[Le])},onAppearCancelled(Le){ze(Le,!0,void 0,!0),XM(pt,[Le])},onLeaveCancelled(Le){_e(Le),XM(xe,[Le])}})}function ZnA(t){if(t==null)return null;if(Na(t))return[Tj(t.enter),Tj(t.leave)];{const i=Tj(t);return[i,i]}}function Tj(t){return joA(t)}function im(t,i){i.split(/\s+/).forEach(r=>r&&t.classList.add(r)),(t[pU]||(t[pU]=new Set)).add(i)}function $M(t,i){i.split(/\s+/).forEach(l=>l&&t.classList.remove(l));const r=t[pU];r&&(r.delete(i),r.size||(t[pU]=void 0))}function M8(t){requestAnimationFrame(()=>{requestAnimationFrame(t)})}let XnA=0;function v8(t,i,r,l){const I=t._endId=++XnA,h=()=>{I===t._endId&&l()};if(r!=null)return setTimeout(h,r);const{type:f,timeout:w,propCount:_}=$nA(t,i);if(!f)return l();const k=f+"end";let U=0;const j=()=>{t.removeEventListener(k,lA),h()},lA=rA=>{rA.target===t&&++U>=_&&j()};setTimeout(()=>{U<_&&j()},w+1),t.addEventListener(k,lA)}function $nA(t,i){const r=window.getComputedStyle(t),l=mA=>(r[mA]||"").split(", "),I=l(`${wy}Delay`),h=l(`${wy}Duration`),f=R8(I,h),w=l(`${CL}Delay`),_=l(`${CL}Duration`),k=R8(w,_);let U=null,j=0,lA=0;i===wy?f>0&&(U=wy,j=f,lA=h.length):i===CL?k>0&&(U=CL,j=k,lA=_.length):(j=Math.max(f,k),U=j>0?f>k?wy:CL:null,lA=U?U===wy?h.length:_.length:0);const rA=U===wy&&/\b(transform|all)(,|$)/.test(l(`${wy}Property`).toString());return{type:U,timeout:j,propCount:lA,hasTransform:rA}}function R8(t,i){for(;t.lengthw8(r)+w8(t[l])))}function w8(t){return t==="auto"?0:Number(t.slice(0,-1).replace(",","."))*1e3}function _8(){return document.body.offsetHeight}function ArA(t,i,r){const l=t[pU];l&&(i=(i?[i,...l]:[...l]).join(" ")),i==null?t.removeAttribute("class"):r?t.setAttribute("class",i):t.className=i}const fY=Symbol("_vod"),m9=Symbol("_vsh"),Ka={beforeMount(t,{value:i},{transition:r}){t[fY]=t.style.display==="none"?"":t.style.display,r&&i?r.beforeEnter(t):hL(t,i)},mounted(t,{value:i},{transition:r}){r&&i&&r.enter(t)},updated(t,{value:i,oldValue:r},{transition:l}){!i!=!r&&(l?i?(l.beforeEnter(t),hL(t,!0),l.enter(t)):l.leave(t,()=>{hL(t,!1)}):hL(t,i))},beforeUnmount(t,{value:i}){hL(t,i)}};function hL(t,i){t.style.display=i?t[fY]:"none",t[m9]=!i}const erA=Symbol(""),trA=/(^|;)\s*display\s*:/;function irA(t,i,r){const l=t.style,I=fg(r);let h=!1;if(r&&!I){if(i)if(fg(i))for(const f of i.split(";")){const w=f.slice(0,f.indexOf(":")).trim();r[w]==null&&AY(l,w,"")}else for(const f in i)r[f]==null&&AY(l,f,"");for(const f in r)f==="display"&&(h=!0),AY(l,f,r[f])}else if(I){if(i!==r){const f=l[erA];f&&(r+=";"+f),l.cssText=r,h=trA.test(r)}}else i&&t.removeAttribute("style");fY in t&&(t[fY]=h?l.display:"",t[m9]&&(l.display="none"))}const T8=/\s*!important$/;function AY(t,i,r){if(Ms(r))r.forEach(l=>AY(t,i,l));else if(r==null&&(r=""),i.startsWith("--"))t.setProperty(i,r);else{const l=orA(t,i);T8.test(r)?t.setProperty(tD(l),r.replace(T8,""),"important"):t[l]=r}}const N8=["Webkit","Moz","ms"],Nj={};function orA(t,i){const r=Nj[i];if(r)return r;let l=oh(i);if(l!=="filter"&&l in t)return Nj[i]=l;l=AV(l);for(let I=0;IGj||(arA.then(()=>Gj=0),Gj=Date.now());function crA(t,i){const r=l=>{if(!l._vts)l._vts=Date.now();else if(l._vts<=r.attached)return;nB(lrA(l,r.value),i,5,[l])};return r.value=t,r.attached=grA(),r}function lrA(t,i){if(Ms(i)){const r=t.stopImmediatePropagation;return t.stopImmediatePropagation=()=>{r.call(t),t._stopped=!0},i.map(l=>I=>!I._stopped&&l&&l(I))}else return i}const F8=t=>t.charCodeAt(0)===111&&t.charCodeAt(1)===110&&t.charCodeAt(2)>96&&t.charCodeAt(2)<123,IrA=(t,i,r,l,I,h)=>{const f=I==="svg";i==="class"?ArA(t,l,f):i==="style"?irA(t,r,l):ZY(i)?pW(i)||nrA(t,i,r,l,h):(i[0]==="."?(i=i.slice(1),!0):i[0]==="^"?(i=i.slice(1),!1):urA(t,i,l,f))?(k8(t,i,l),!t.tagName.includes("-")&&(i==="value"||i==="checked"||i==="selected")&&b8(t,i,l,f,h,i!=="value")):t._isVueCE&&(/[A-Z]/.test(i)||!fg(l))?k8(t,oh(i),l,h,i):(i==="true-value"?t._trueValue=l:i==="false-value"&&(t._falseValue=l),b8(t,i,l,f))};function urA(t,i,r,l){if(l)return!!(i==="innerHTML"||i==="textContent"||i in t&&F8(i)&&$s(r));if(i==="spellcheck"||i==="draggable"||i==="translate"||i==="form"||i==="list"&&t.tagName==="INPUT"||i==="type"&&t.tagName==="TEXTAREA")return!1;if(i==="width"||i==="height"){const I=t.tagName;if(I==="IMG"||I==="VIDEO"||I==="CANVAS"||I==="SOURCE")return!1}return F8(i)&&fg(r)?!1:i in t}const O8=t=>{const i=t.props["onUpdate:modelValue"]||!1;return Ms(i)?r=>Z1(i,r):i};function ErA(t){t.target.composing=!0}function P8(t){const i=t.target;i.composing&&(i.composing=!1,i.dispatchEvent(new Event("input")))}const bj=Symbol("_assign"),drA={created(t,{modifiers:{lazy:i,trim:r,number:l}},I){t[bj]=O8(I);const h=l||I.props&&I.props.type==="number";D_(t,i?"change":"input",f=>{if(f.target.composing)return;let w=t.value;r&&(w=w.trim()),h&&(w=h3(w)),t[bj](w)}),r&&D_(t,"change",()=>{t.value=t.value.trim()}),i||(D_(t,"compositionstart",ErA),D_(t,"compositionend",P8),D_(t,"change",P8))},mounted(t,{value:i}){t.value=i??""},beforeUpdate(t,{value:i,oldValue:r,modifiers:{lazy:l,trim:I,number:h}},f){if(t[bj]=O8(f),t.composing)return;const w=(h||t.type==="number")&&!/^0\d/.test(t.value)?h3(t.value):t.value,_=i??"";w!==_&&(document.activeElement===t&&t.type!=="range"&&(l&&i===r||I&&t.value.trim()===_)||(t.value=_))}},CrA=["ctrl","shift","alt","meta"],hrA={stop:t=>t.stopPropagation(),prevent:t=>t.preventDefault(),self:t=>t.target!==t.currentTarget,ctrl:t=>!t.ctrlKey,shift:t=>!t.shiftKey,alt:t=>!t.altKey,meta:t=>!t.metaKey,left:t=>"button"in t&&t.button!==0,middle:t=>"button"in t&&t.button!==1,right:t=>"button"in t&&t.button!==2,exact:(t,i)=>CrA.some(r=>t[`${r}Key`]&&!i.includes(r))},pE=(t,i)=>{const r=t._withMods||(t._withMods={}),l=i.join(".");return r[l]||(r[l]=(I,...h)=>{for(let f=0;f{const r=t._withKeys||(t._withKeys={}),l=i.join(".");return r[l]||(r[l]=I=>{if(!("key"in I))return;const h=tD(I.key);if(i.some(f=>f===h||BrA[f]===h))return t(I)})},QrA=oI({patchProp:IrA},qnA);let x8;function y9(){return x8||(x8=CnA(QrA))}const Bv=(...t)=>{y9().render(...t)},prA=(...t)=>{const i=y9().createApp(...t),{mount:r}=i;return i.mount=l=>{const I=frA(l);if(!I)return;const h=i._component;!$s(h)&&!h.render&&!h.template&&(h.template=I.innerHTML),I.nodeType===1&&(I.textContent="");const f=r(I,!1,mrA(I));return I instanceof Element&&(I.removeAttribute("v-cloak"),I.setAttribute("data-v-app","")),f},i};function mrA(t){if(t instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&t instanceof MathMLElement)return"mathml"}function frA(t){return fg(t)?document.querySelector(t):t}function yrA(t){throw new Error('Could not dynamically require "'+t+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var ML={exports:{}},eY={exports:{}},DrA=eY.exports,Y8;function D9(){return Y8||(Y8=1,function(t,i){(function(r,l){t.exports=l()})(DrA,function(){const r=p=>p===void 0,l=p=>typeof p=="string",I=p=>{var B;return(B=Object.prototype.toString.call(p).match(/^\[object (.*)\]$/))===null||B===void 0?void 0:B[1].toLowerCase()},h=p=>typeof Array.isArray=="function"?Array.isArray(p):I(p)==="array",f=p=>p!==null&&typeof p=="object",w=p=>h(p)||f(p),_=p=>{if(typeof p!="string")return!1;const B=p[0];return!/[^a-zA-Z0-9]/.test(B)},k=p=>{if(typeof p!="object"||p===null)return!1;const B=Object.getPrototypeOf(p);if(B===null)return!0;let v=B;for(;Object.getPrototypeOf(v)!==null;)v=Object.getPrototypeOf(v);return B===v};function U(p=99999999){return Math.round(Math.random()*p)}const j=(p,B,v,N)=>{if(!w(p)||!w(B))return 0;let O=0;const z=Object.keys(B);let X;for(let nA=0,DA=z.length;nA"u"&&typeof uni.requireNativePlugin=="function",to=Le&&typeof wx.miniapp=="object",uo=typeof uni<"u",Vs=Dt&&typeof tt.enterChat=="function",ki=Le||je||Dt||Jt||gi||To||Fi,ns=typeof window>"u"&&!ki&&typeof mg<"u"&&mg.NativeScriptGlobals!==void 0,jo=typeof mg<"u"&&(mg.nativeModuleProxy!==void 0||mg.ReactNative!==void 0),$i=typeof wx<"u"&&typeof wx.getAccountInfoSync=="function"&&!!wx.getAccountInfoSync().plugin,jt=typeof uni<"u"?!ki:typeof window<"u"&&!ki&&!jo,io=je?qq:Dt?tt:Jt?swan:gi?my:Le?wx:To?uni:Fi?jd:{},bi=jt&&window&&window.navigator&&window.navigator.userAgent||"",vs=/(micromessenger|webbrowser)/i.test(bi),HA=function(){let p="WEB";return vs?p="WEB":je?p="QQ_MP":Dt?p="TT_MP":Jt?p="BAIDU_MP":gi?p="ALI_MP":Le?p=to?"DONUT_NATIVE_APP":"WX_MP":To?p="UNI_NATIVE_APP":ns?p="NS_NATIVE_APP":jo&&(p="RN_NATIVE_APP"),rA[p]}(),ce=/iPad/i.test(bi),Ve=/iPhone/i.test(bi)&&!ce,Ut=/iPod/i.test(bi),nt=Ve||ce||Ut,It=function(){const p=bi.match(/OS (\d+)_/i);return p&&p[1]?p[1]:null}(),Xt=/Android/i.test(bi),$t=function(){const p=bi.match(/Android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i);if(!p)return null;const B=p[1]&&parseFloat(p[1]),v=p[2]&&parseFloat(p[2]);return B&&v?parseFloat(`${p[1]}.${p[2]}`):B||null}(),be=/Firefox/i.test(bi),Xe=/Edge/i.test(bi),vt=!Xe&&/Chrome/i.test(bi),wt=/MSIE/.test(bi)||bi.indexOf("Trident")>-1&&bi.indexOf("rv:11.0")>-1,Oi=function(){const p=/MSIE\s(\d+)\.\d/.exec(bi);let B=p&&parseFloat(p[1]);return!B&&/Trident\/7.0/i.test(bi)&&/rv:11.0/.test(bi)&&(B=11),B}(),po=/Safari/i.test(bi)&&!vt&&!Xt&&!Xe,No=/Windows/i.test(bi),oo=/MAC OS X/i.test(bi),Go=jt&&typeof Worker<"u"&&!wt,An=Xt||nt,rn=function(){if(typeof window>"u"||window.navigator===void 0)return!1;const{standalone:p}=window.navigator;return!(!nt||p||po)}();function Es(){let p="unknown";if(oo&&(p="mac"),No&&(p="windows"),nt&&(p="ios"),Xt&&(p="android"),ki)try{const{platform:B}=io.getSystemInfoSync();B!==void 0&&(p=B)}catch(B){console.error(B)}return p}const an=typeof process<"u"&&process.versions!==void 0&&process.versions.node!==void 0&&typeof window>"u";function Do(p,B){var v={};for(var N in p)Object.prototype.hasOwnProperty.call(p,N)&&B.indexOf(N)<0&&(v[N]=p[N]);if(p!=null&&typeof Object.getOwnPropertySymbols=="function"){var O=0;for(N=Object.getOwnPropertySymbols(p);O{io.request({url:v,data:N,method:B,timeout:O,header:{"content-type":zr},success:nA=>z(nA.data),fail:()=>X(new Error(`{"message":"Network error","code":${Jn}}`))})}):an?void 0:new Promise((z,X)=>{const nA=new XMLHttpRequest,DA=setTimeout(()=>{nA.abort(),X(new Error(`{"message":"Request timeout","code":${Qr}}`))},O);nA.onreadystatechange=function(){if(nA.readyState===4)if(clearTimeout(DA),nA.status===200||nA.status===304)try{z(nA.responseText?JSON.parse(nA.responseText):null)}catch{z(nA.responseText)}else X(new Error(`{"message":"Network error","code":${Jn}}`))},nA.open(B,v,!0),nA.setRequestHeader("Content-type",zr),nA.send(N||null)})})}function Rs(p){if(p==null)return!0;if(typeof p=="boolean")return!1;if(typeof p=="number")return p===0;if(typeof p=="string"||typeof p=="function"||Array.isArray(p))return p.length===0;if(p instanceof Error)return p.message==="";if(k(p)){for(const B in p)if(Object.prototype.hasOwnProperty.call(p,B))return!1;return!0}return(Object.prototype.toString.call(p)==="[object Map]"||Object.prototype.toString.call(p)==="[object Set]"||Object.prototype.toString.call(p)==="[object File]")&&p.size===0}function or(p,B){if(p===null||typeof p!="object")return p;const v=B||new WeakMap;if(v.has(p))return v.get(p);if(p instanceof Date)return new Date(p.getTime());if(p instanceof RegExp)return new RegExp(p.source,p.flags);if(p instanceof Map){const z=new Map;return v.set(p,z),p.forEach((X,nA)=>{z.set(or(nA,v),or(X,v))}),z}if(p instanceof Set){const z=new Set;return v.set(p,z),p.forEach(X=>{z.add(or(X,v))}),z}if(Array.isArray(p)){const z=[];return v.set(p,z),p.forEach(X=>{z.push(or(X,v))}),z}const N=Object.getPrototypeOf(p),O=Object.create(N);return v.set(p,O),[...Object.getOwnPropertyNames(p),...Object.getOwnPropertySymbols(p)].forEach(z=>{if(z==="__ob__"||z==="__v_skip"||z==="__v_isRef"||z==="__v_isReadonly")return;const X=Object.getOwnPropertyDescriptor(p,z);X&&(X.get||X.set?Object.defineProperty(O,z,X):O[z]=or(p[z],v))}),O}function en(p,B,v){const N=new WeakSet,O=(z,X)=>{if(B&&(X=B(z,X)),X===void 0)return"undefined";if(X===null)return null;if(Number.isNaN(X))return"NaN";if(X===1/0)return"Infinity";if(X===-1/0)return"-Infinity";if(typeof X=="function")return`[Function: ${X.name||"anonymous"}]`;if(typeof X=="symbol")return X.toString();if(typeof X=="bigint")return`${X.toString()}n`;if(typeof X=="object"&&X!==null){if(N.has(X))return"[Circular]";N.add(X)}return X instanceof Date?X.toISOString():X instanceof Error?{name:X.name,message:X.message}:X instanceof Map?{dataType:"Map",value:Array.from(X.entries())}:X instanceof Set?{dataType:"Set",value:Array.from(X.values())}:X};try{return JSON.stringify(p,O,v)}catch(z){return console.error("Failed to stringify:",z),""}}function wn(){let p,B;return{promise:new Promise((v,N)=>{p=v,B=N}),resolve:p,reject:B}}var Ht,yg=Object.freeze({__proto__:null,ANDROID_VERSION:$t,IE_VERSION:Oi,IN_ALIPAY_MINI_APP:gi,IN_BAIDU_MINI_APP:Jt,IN_BROWSER:jt,IN_DONUT_NATIVE_APP:to,IN_FEISHU_MINI_APP:Vs,IN_JD_MINI_APP:Fi,IN_MINI_APP:ki,IN_NODE:an,IN_NS_NATIVE_APP:ns,IN_QQ_MINI_APP:je,IN_RN_APP:jo,IN_TT_MINI_APP:Dt,IN_TT_MINI_GAME:ni,IN_UNI_APP:uo,IN_UNI_NATIVE_APP:To,IN_WX_MINI_APP:Le,IN_WX_MINI_APP_DESK:We,IN_WX_MINI_GAME:oe,IN_WX_MINI_PLUGIN:$i,IOS_VERSION:It,IS_ANDROID:Xt,IS_CHROME:vt,IS_EDGE:Xe,IS_FIREFOX:be,IS_IE:wt,IS_IOS:nt,IS_IPAD:ce,IS_IPHONE:Ve,IS_IPOD:Ut,IS_MAC:oo,IS_SAFARI:po,IS_WECHAT:vs,IS_WIN:No,IS_WORKER_AVAILABLE:Go,MINI_APP_NAMESPACE:io,USER_AGENT:bi,base16EncodeBinaryString:lA,deepCopyWithMethods:or,deepMerge:j,generatePromise:wn,getPlatformType:Es,getType:I,httpRequest:Pi,isArray:h,isArrayOrObject:w,isEmpty:Rs,isH5:An,isIOSWebView:rn,isNumber:p=>p!==null&&(typeof p=="number"&&!Number.isNaN(p-0)||typeof p=="object"&&p.constructor===Number),isObject:f,isPlainObject:k,isString:l,isUndefined:r,isUniIOSApp:function(){return To&&uni.getDeviceInfo().platform.toLocaleLowerCase()==="ios"},isValidRequestKey:_,platform:HA,randomInt:U,randomString:function(){const p="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";let B="";for(let v=32;v>0;--v)B+=p[Math.floor(62*Math.random())];return B},safeStringify:en});class On{constructor(){this.listeners={}}on(B,v,N){this.listeners[B]||(this.listeners[B]=[]),this.listeners[B].push({fn:v,context:N})}off(B,v,N){var O;v&&(this.listeners[B]=(O=this.listeners[B])===null||O===void 0?void 0:O.filter(z=>{const X=z.fn===v,nA=!N||z.context===N;return!(X&&nA)}))}emit(B,...v){const N=this.listeners[B];N&&N.forEach(O=>{const{fn:z,context:X}=O;try{z.apply(X,v)}catch(nA){console.warn(`Error in event handler for ${B} error: ${en(nA)}`)}})}once(B,v,N){const O=(...z)=>{v.apply(N,z),this.off(B,O)};this.on(B,O)}}(function(p){p.BUSINESS_COMMAND="business_command",p.C2C_REALTIME_MESSAGE="c2c_realtime_message",p.C2C_MESSAGE_MODIFIED="c2c_message_modified",p.C2C_REVOKED_MESSAGE="c2c_message_revoked",p.GROUP_REALTIME_MESSAGE="group_realtime_message",p.GROUP_MESSAGE_MODIFIED="group_message_modified",p.GROUP_MESSAGE_REVOKED="group_message_revoked",p.C2C_MESSAGE_READ_RECEIPT="c2c_message_read_receipt",p.MESSAGE_REACTION_UPDATED="message_reaction_updated",p.MESSAGE_REACTION_UPDATED_SYNC="message_reaction_updated_sync",p.GROUP_AT_TIPS="group_at_tips",p.USER_STATUS_UPDATE="user_status_update",p.FRIEND_LIST_MODIFIED="friend_list_modified",p.PROFILE_MODIFIED="profile_modified",p.CONV_MODIFIED="conversation_modified",p.GROUP_TIPS_NOTIFICATION="group_tips_notification",p.GROUP_MESSAGE_READ_RECEIPT="group_message_read_receipt",p.GROUP_MESSAGE_READ_SYNC="group_message_read_sync",p.GROUP_SYSTEM_NOTIFICATION="group_system_notification",p.C2C_MESSAGE_PEER_READ="c2c_message_peer_read",p.C2C_MESSAGE_READ_SYNC="c2c_message_read_sync",p.C2C_REMIND_TYPE_SYNC="c2c_remind_type_sync",p.FOLLOW_LIST_UPDATED="follow_list_updated",p.MESSAGE_EXTENSIONS_UPDATED="message_extensions_updated",p.ALL_MESSAGE_READ="all_message_read",p.CONVERSATION_MARK_UPDATED="conversation_mark_updated",p.CONVERSATION_GROUP_ADD="conversation_group_add",p.CONVERSATION_GROUP_DELETED="conversation_group_deleted",p.CONVERSATION_GROUP_UPDATED="conversation_group_updated",p.ALL_RECEIVE_MESSAGE_OPTION="all_receive_message_option",p.TOPIC_AT_TIPS="topic_at_tips",p.TOPIC_TIPS_NOTIFICATION="topic_tips_notification",p.TOPIC_SYSTEM_NOTIFICATION="topic_system_notification",p.TOPIC_MESSAGE_READ_SYNC="topic_message_read_sync",p.TOPIC_LATEST_MESSAGE="topic_latest_message",p.GROUP_MESSAGE_PINNED="group_message_pinned"})(Ht||(Ht={}));const Gn=[16,17];function Js(p){var B;const v=[];return(B=p?.GroupTips)===null||B===void 0||B.forEach(N=>{var O;N.GroupInfo.MillionGroupFlag===2?v.push(Ht.TOPIC_TIPS_NOTIFICATION):Gn.includes((O=N?.MsgBody)===null||O===void 0?void 0:O.OpType)?v.push(Ht.GROUP_MESSAGE_PINNED):v.push(Ht.GROUP_TIPS_NOTIFICATION)}),v}const pr=[{conditions:[{type:"event",value:100}],subType:Ht.BUSINESS_COMMAND},{conditions:[{type:"event",value:24}],subType:Ht.ALL_RECEIVE_MESSAGE_OPTION},{conditions:[{type:"event",value:26}],subType:Ht.TOPIC_LATEST_MESSAGE},{conditions:[{type:"hasKey",value:"C2cMsgArray"}],subType:Ht.C2C_REALTIME_MESSAGE},{conditions:[{type:"hasKey",value:"C2cMsgModNotifys"}],subType:Ht.C2C_MESSAGE_MODIFIED},{conditions:[{type:"hasKey",value:"ProfileDataMod"}],subType:Ht.PROFILE_MODIFIED},{conditions:[{type:"hasKey",value:"UserStatusList"}],subType:Ht.USER_STATUS_UPDATE},{conditions:[{type:"hasKey",value:"FriendListMod"}],subType:Ht.FRIEND_LIST_MODIFIED},{conditions:[{type:"hasKey",value:"GroupMsgArray"}],subType:Ht.GROUP_REALTIME_MESSAGE},{conditions:[{type:"hasKey",value:"GroupMsgModNotifys"}],subType:Ht.GROUP_MESSAGE_MODIFIED},{conditions:[{type:"hasKey",value:"C2cNotifyMsgArray"}],subTypeParser:function(p){var B;const v=[];return(B=p?.C2cNotifyMsgArray)===null||B===void 0||B.forEach(N=>{N.WithdrawC2cMsgNotify&&v.push(Ht.C2C_REVOKED_MESSAGE),N.C2cReadedReceipt&&v.push(Ht.C2C_MESSAGE_PEER_READ),N.ReadC2cMsgNotify&&v.push(Ht.C2C_MESSAGE_READ_SYNC),N.MuteNotificationsSync&&v.push(Ht.C2C_REMIND_TYPE_SYNC)}),v}},{conditions:[{type:"hasKey",value:"GroupTips"},{type:"event",value:4}],subTypeParser:Js},{conditions:[{type:"hasKey",value:"GroupTips"},{type:"event",value:5}],subTypeParser:function(p){var B;const v=[];return(B=p?.GroupTips)===null||B===void 0||B.forEach(N=>{Array.isArray(N.MsgBody.GroupWithdrawInfoArray)?v.push(Ht.GROUP_MESSAGE_REVOKED):Array.isArray(N.MsgBody.GroupMsgReceiptList)?v.push(Ht.GROUP_MESSAGE_READ_RECEIPT):Array.isArray(N.MsgBody.GroupReadInfoArray)?N.MsgBody.GroupReadInfoArray[0].TopicId?v.push(Ht.TOPIC_MESSAGE_READ_SYNC):v.push(Ht.GROUP_MESSAGE_READ_SYNC):N.GroupInfo.MillionGroupFlag===2?v.push(Ht.TOPIC_SYSTEM_NOTIFICATION):v.push(Ht.GROUP_SYSTEM_NOTIFICATION)}),v}},{conditions:[{type:"hasKey",value:"GroupTips"},{type:"event",value:6}],subTypeParser:Js},{conditions:[{type:"hasKey",value:"GroupTips"},{type:"event",value:12}],subTypeParser:function(p){var B;const v=[];return(B=p?.GroupTips)===null||B===void 0||B.forEach(N=>{const{GroupAtTips:{TopicId:O}}=N;O?v.push(Ht.TOPIC_AT_TIPS):v.push(Ht.GROUP_AT_TIPS)}),v}},{conditions:[{type:"hasKey",value:"RecentContactMod"}],subTypeParser:function(p){var B;const v=[];return(B=p?.RecentContactMod)===null||B===void 0||B.forEach(N=>{switch(N.PushType){case ze.CONV_MARK_UPDATED:v.push(Ht.CONVERSATION_MARK_UPDATED);break;case ze.CONV_GROUP_ADDED:v.push(Ht.CONVERSATION_GROUP_ADD);break;case ze.CONV_GROUP_DELETED:v.push(Ht.CONVERSATION_GROUP_DELETED);break;case ze.CONV_GROUP_UPDATED:v.push(Ht.CONVERSATION_GROUP_UPDATED);break;default:v.push(Ht.CONV_MODIFIED)}}),v}},{conditions:[{type:"hasKey",value:"MsgReactionNotifyList"}],subType:Ht.MESSAGE_REACTION_UPDATED},{conditions:[{type:"hasKey",value:"MsgReactionNotify"}],subType:Ht.MESSAGE_REACTION_UPDATED_SYNC},{conditions:[{type:"hasKey",value:"C2cMsgInfo"}],subType:Ht.C2C_MESSAGE_READ_RECEIPT},{conditions:[{type:"hasKey",value:"FollowChangeList"}],subType:Ht.FOLLOW_LIST_UPDATED},{conditions:[{type:"hasKey",value:"MsgExtensionNotify"}],subType:Ht.MESSAGE_EXTENSIONS_UPDATED},{conditions:[{type:"hasKey",value:"C2CReadAllMsg"}],subType:Ht.ALL_MESSAGE_READ}];var Pn;function mr(p){var B;const v=Array.isArray((B=p?.body)===null||B===void 0?void 0:B.EventArray)?p.body.EventArray:[],N=[];return v.forEach(O=>{O.Flag=p.body.Flag;const z=pr.find(nA=>nA.conditions.every(DA=>{switch(DA.type){case"event":return O.Event===DA.value;case"hasKey":return Object.prototype.hasOwnProperty.call(O,DA.value);default:return!1}}));if(!z)return null;let X=[];typeof z.subTypeParser=="function"?X=z.subTypeParser(O):z.subType&&(X=z.subType),Array.isArray(X)?X.forEach(nA=>{N.push({type:`${Pn.SERVER_PUSH_MESSAGE}:${nA}`,data:O})}):N.push({type:`${Pn.SERVER_PUSH_MESSAGE}:${X}`,data:O})}),N}(function(p){p.SERVER_PUSH_MESSAGE="im_open_push.msg_push",p.SERVER_PUSH_MESSAGE_MULTIPLE="im_open_push.multi_msg_push_ws",p.ERROR="error"})(Pn||(Pn={}));const mo={[Pn.SERVER_PUSH_MESSAGE]:mr,[Pn.SERVER_PUSH_MESSAGE_MULTIPLE]:mr,[Pn.ERROR]:function(p){const{errorCode:B}=p;return[{type:`error:${B}`,data:p}]}},gn=new class{constructor(){this._outerEventEmitter=null,this._innerEventEmitter=null,this._filteredCallbackMap=new Map,this._outerEventEmitter=new On,this._innerEventEmitter=new On,this.InnerEventSubType=Ht}subscribeInnerEvent(p,B,v,N,O){var z;let X,nA,DA,GA;["string","number"].includes(typeof B)?(DA=`${p}:${B}`,GA=v,nA=N,X=O):(DA=p,GA=B,nA=v,X=typeof N=="function"?N:void 0),X?this._subscribeWithFilter(DA,GA,nA,X):(z=this._innerEventEmitter)===null||z===void 0||z.on(DA,GA,nA)}emitInnerEvent(p,B){var v,N;if((v=this._innerEventEmitter)===null||v===void 0||v.emit(p,B),Object.keys(mo).includes(p)){const O=(N=mo[p])===null||N===void 0?void 0:N.call(mo,B);O?.forEach(z=>{var X;z&&((X=this._innerEventEmitter)===null||X===void 0||X.emit(z.type,z.data))})}}subscribeOuterEvent(p,B,v){var N;(N=this._outerEventEmitter)===null||N===void 0||N.on(p,B,v)}unSubscribeOuterEvent(p,B,v){var N;(N=this._outerEventEmitter)===null||N===void 0||N.off(p,B,v)}unSubscribeInnerEvent(p,B,v,N){if(["string","number"].includes(typeof B)){const O=v,z=`${p}:${B}`;this._unsubscribeEvent(z,O,N)}else{const O=B;this._unsubscribeEvent(p,O,v)}}emitOuterEvent(p,B){var v;(v=this._outerEventEmitter)===null||v===void 0||v.emit(p,B)}getOuterEventEmitter(){return this._outerEventEmitter}rest(){this._outerEventEmitter=null,this._innerEventEmitter=null}_subscribeWithFilter(p,B,v,N){var O;const z=X=>{N.call(v,X)&&B.call(v,X)};this._filteredCallbackMap.has(p)||this._filteredCallbackMap.set(p,[]),this._filteredCallbackMap.get(p).push({originalCallback:B,filteredCallback:z,filter:N,context:v}),(O=this._innerEventEmitter)===null||O===void 0||O.on(p,z,v)}_unsubscribeEvent(p,B,v){var N,O;const z=this._filteredCallbackMap.get(p);if(z){const X=z.findIndex(nA=>nA.originalCallback===B&&nA.context===v);if(X!==-1){const{filteredCallback:nA}=z[X];return(N=this._innerEventEmitter)===null||N===void 0||N.off(p,nA,v),z.splice(X,1),void(z.length===0&&this._filteredCallbackMap.delete(p))}}(O=this._innerEventEmitter)===null||O===void 0||O.off(p,B,v)}};class Dl{constructor(){this._socket=null}connectSocket(B){return this._socket=new WebSocket(B),this._socket}send(B){var v,N;try{(v=this._socket)===null||v===void 0||v.send(B)}catch(O){(N=this._onSendFail)===null||N===void 0||N.call(this,O)}}bindSocketHandlers(B){const{onOpen:v,onMessage:N,onClose:O,onError:z,onSendFail:X}=B;this._socket&&(this._socket.binaryType="arraybuffer",this._socket.onopen=v,this._socket.onmessage=N,this._socket.onclose=O,this._socket.onerror=z,this._onSendFail=X)}unbindSocketHandlers(){this._socket&&(this._socket.onopen=null,this._socket.onmessage=null,this._socket.onclose=null,this._socket.onerror=null)}disconnect(){this._socket&&(this._socket.close(),this._socket=null)}}class cn{constructor(B){this._onError=B.onError}connectSocket(B){const v=this;return this._socket=io.connectSocket({url:B,header:{"content-type":"application/json"},complete:()=>{},fail:N=>v._onError(N)}),this._socket}send(B){var v;(v=this._socket)===null||v===void 0||v.send({data:B,fail:this._onSendFail})}bindSocketHandlers(B){const{onOpen:v,onMessage:N,onClose:O,onError:z,onSendFail:X}=B;this._socket&&(this._socket.onClose(O),this._socket.onOpen(v),this._socket.onMessage(N),this._socket.onError(z),this._onSendFail=X)}unbindSocketHandlers(){this._socket&&(this._socket.onClose(()=>{}),this._socket.onOpen(()=>{}),this._socket.onMessage(()=>{}),this._socket.onError(()=>{}))}disconnect(){this._socket&&(this._socket.close(),this._socket=null)}}const fr="CONNECT",Ls="SEND",Vc="DISCONNECT",ms="OPEN",as="MESSAGE",Su="CLOSE",Wa="ERROR",Cs="SEND_FAIL";class sg{constructor(){this._worker=null,this._blobUrl=null}connectSocket(B){const v=new Blob([` let _socket = null; self.onmessage = (event) => { @@ -211,11 +211,11 @@ _socket = null; } } -`],{type:"application/javascript"});this._worker=new Worker(URL.createObjectURL(v)),this._worker.postMessage({type:mr,url:h})}send(h){var v,N;try{(v=this._worker)===null||v===void 0||v.postMessage({type:Ls,data:h})}catch(O){(N=this._onSendFail)===null||N===void 0||N.call(this,O)}}bindSocketHandlers(h){const{onOpen:v,onMessage:N,onClose:O,onError:z,onSendFail:X}=h;if(this._worker){const nA={[ms]:v,[as]:N,[mu]:O,[ja]:z,[Cs]:X};this._onSendFail=X,this._worker.onmessage=DA=>{var GA;const{type:VA}=DA?.data||{};typeof nA[VA]=="function"&&((GA=nA[VA])===null||GA===void 0||GA.call(nA,DA?.data))}}}unbindSocketHandlers(){this._worker&&(this._worker.onmessage=null)}disconnect(){this._worker&&(this._worker.postMessage({type:Vc}),this._worker.terminate(),this._worker=null),this._blobUrl&&(URL.revokeObjectURL(this._blobUrl),this._blobUrl=null)}}class OI{}var Xo,Zi=new class{constructor(){this._store=new Map}get(p){return this._store.get(p)}getStorage(p){return ki?gi?my.getStorageSync({key:p}).data:io.getStorageSync(p):this._canUseLocalStorage()?localStorage.getItem(p):{}}set(p,h){const v=this._store.get(p)||{};h instanceof Map?this._store.set(p,h):this._store.set(p,Object.assign(Object.assign({},v),h))}setStorage(p,h){ki?gi?my.setStorageSync({key:p,data:JSON.stringify(h)}):io.setStorageSync(p,JSON.stringify(h)):this._canUseLocalStorage()&&localStorage.setItem(p,JSON.stringify(h))}clear(p){typeof p=="string"?this._store.set(p,{}):this._store.clear()}clearLocalStorage(p){this._canUseLocalStorage()&&(typeof p=="string"?localStorage.setItem(p,""):localStorage.clear())}reset(){this.clear()}_canUseLocalStorage(){return typeof window<"u"&&navigator&&navigator.cookieEnabled&&localStorage}};class pc{connectSocket(h){return this._socket=io.connectSocket({url:h,header:{"content-type":"application/json"},multiple:!0,complete:()=>{}}),this._socket}send(h){var v;(v=this._socket)===null||v===void 0||v.send({data:h,fail:this._onSendFail})}bindSocketHandlers(h){const{onOpen:v,onMessage:N,onClose:O,onError:z,onSendFail:X}=h;this._socket&&(this._socket.onClose(O),this._socket.onOpen(v),this._socket.onMessage(nA=>N(nA?.data)),this._socket.onError(()=>z),this._onSendFail=X)}unbindSocketHandlers(){this._socket&&(this._socket.onClose(()=>{}),this._socket.onOpen(()=>{}),this._socket.onMessage(()=>{}),this._socket.onError(()=>{}))}disconnect(){this._socket&&(this._socket.close(),this._socket=null)}}(function(p){p[p.CONNECTED=0]="CONNECTED",p[p.CONNECTING=1]="CONNECTING",p[p.DISCONNECTED=2]="DISCONNECTED"})(Xo||(Xo={}));class ng{constructor(h){this._url="",this._readyState=Xo.DISCONNECTED,this._url=h,this._id=F(),this._emitter=new On,gi?this._socket=new pc:It||_o||ft||qe||Fi||Vt?this._socket=new cn({onError:this._onError.bind(this)}):an?this._socket=new OI:this._canUseWebWorker()?this._socket=new sg:this._socket=new yl,this.connect()}connect(){this.doOpen(),this._bindSocketHandlers()}doOpen(){[Xo.CONNECTED,Xo.CONNECTING].includes(this._readyState)||(this._readyState=Xo.CONNECTING,this._ws=this._socket.connectSocket(this._url))}send(h){this._readyState!==Xo.CONNECTED?this.reconnect():this._socket.send(h)}reconnect(){[Xo.CONNECTED,Xo.CONNECTING].includes(this._readyState)||(this.disconnect(),this.doOpen())}getId(){return this._id}on(h,v,N){this._emitter.on(h,v,N)}off(h,v,N){this._emitter.off(h,v,N)}isConnected(){return this._readyState===Xo.CONNECTED}disconnect(){this._readyState=Xo.DISCONNECTED,this._unbindSocketHandlers(),this._socket.disconnect()}_onOpen(h){this._readyState===Xo.CONNECTING&&(this._readyState=Xo.CONNECTED,this._emitter.emit("connect",{socketId:this._id,event:h}))}_onMessage(h){this._emitter.emit("message",h)}_onClose(h){this._readyState=Xo.DISCONNECTED,this._emitter.emit("close",{socketId:this._id,event:h})}_onError(h){this._readyState=Xo.DISCONNECTED,this._emitter.emit("error",{socketId:this._id,error:h})}_onSendFail(h){this._readyState=Xo.DISCONNECTED,this._emitter.emit("sendFail",{socketId:this._id,error:h})}_bindSocketHandlers(){this._socket.bindSocketHandlers({onOpen:this._onOpen.bind(this),onMessage:this._onMessage.bind(this),onClose:this._onClose.bind(this),onError:this._onError.bind(this),onSendFail:this._onSendFail.bind(this)})}_unbindSocketHandlers(){this._socket.unbindSocketHandlers()}_canUseWebWorker(){const h=Zi.get("cloudConfig")||{};return(r(h.isWorkerEnabled)||h.isWorkerEnabled==="1")&&No}}const Dg={[ct.SINGAPORE]:[[2e7,3e7],[172e7,173e7]],[ct.KOREA]:[[3e7,4e7],[173e7,174e7]],[ct.GERMANY]:[[4e7,5e7],[174e7,175e7]],[ct.IND]:[[5e7,6e7],[175e7,176e7]],[ct.JPN]:[[6e7,7e7],[176e7,177e7]],[ct.USA]:[[7e7,8e7],[177e7,178e7]],[ct.INDONESIA]:[[8e7,9e7],[178e7,179e7]],[ct.KSA]:[[9e7,1e8],[179e7,18e8]]};function la(p){var h;if(!((h=Zi.get("instance"))===null||h===void 0)&&h.oversea)return ct.OVERSEA;for(const v of Object.keys(Dg))for(const[N,O]of Dg[v])if(p>=N&&p`${ie}=${VA[ie]}`).join("&"));var VA;return v?`${p}/binfo?${GA}&compress=gzip`:`${p}/info?${GA}`}function Hs(p){const h=Zi.get("instance"),{sdkAppId:v,testEnv:N,proxyServer:O}=h,z=la(v);if(N)return Hn(mt.TEST[z].DEFAULT,{isBinary:p});if(!Rs(O))return Hn(O,{isBinary:p});const X=mt.PRODUCTION[z],nA=jt&&X.ANYCAST,DA=jt,GA=!!X.BACKUP_CN;return Hn({[Go.INITIAL]:()=>(wo=Go.DEFAULT,X.DEFAULT),[Go.DEFAULT]:()=>(wo=Go.IPV6,X.IPV6),[Go.IPV6]:()=>(wo=Go.BACKUP,X.BACKUP),[Go.BACKUP]:()=>DA?(wo=Go.BACKUP_WEB_ONLY,function(VA){const ie=Math.floor(10001*Math.random())+1e4;return VA.replace("*",String(ie))}(X.BACKUP_WEB_ONLY)):GA?(wo=Go.BACKUP_CN,X.BACKUP_CN):nA?(wo=Go.ANYCAST,X.ANYCAST):X.DEFAULT,[Go.BACKUP_WEB_ONLY]:()=>GA?(wo=Go.BACKUP_CN,X.BACKUP_CN):nA?(wo=Go.ANYCAST,X.ANYCAST):X.DEFAULT,[Go.BACKUP_CN]:()=>(wo=nA?Go.ANYCAST:Go.DEFAULT,X[wo]),[Go.ANYCAST]:()=>(wo=Go.DEFAULT,X.ANYCAST="",X.DEFAULT)}[wo](),{isBinary:p})}var Sg=new class{constructor(){this._timeOffsetWithServer=0}getServerTimeMs(){return Date.now()+this._timeOffsetWithServer}getServerTimeSeconds(){return Math.floor(this.getServerTimeMs()/1e3)}getTimeOffsetWithServer(){return this._timeOffsetWithServer}calculateTimeOffsetWithServer(p,h){const v=Date.now(),N=v-p;this._timeOffsetWithServer=h+N-v}};const mc=16;var fn=new class{constructor(){this._tasks=[],this._timer=null,this._taskMap=new Map}_addTaskToScheduler(p){const{id:h}=p;this.removeTask(h),this._tasks.push(p),this._taskMap.set(h,p),this._sort(),this._scheduleNextTask()}_createTask(p){const{id:h,callback:v,context:N,isOnce:O=!1,intervalMs:z=mc}=p,X=Math.max(z,mc);return{id:h,nextExecuteTime:Date.now()+X,intervalMs:z,callback:v,context:N,isOnce:O}}addTask(p){const h=this._createTask(p);this._addTaskToScheduler(h)}addOnceTask(p){const h=this._createTask(Object.assign(Object.assign({},p),{isOnce:!0}));this._addTaskToScheduler(h)}removeTask(p){const h=this._tasks.findIndex(v=>v.id===p);h>-1&&(this._tasks.splice(h,1),this._taskMap.delete(p),this._scheduleNextTask())}updateTaskInterval(p,h){const v=this._taskMap.get(p);v&&(v.intervalMs=h,v.nextExecuteTime=Date.now()+h,this._sort(),this._scheduleNextTask())}clearAllTasks(){this._tasks=[],this._taskMap.clear(),this._timer&&(clearTimeout(this._timer),this._timer=null)}dispose(){this.clearAllTasks()}_sort(){this._tasks.sort((p,h)=>p.nextExecuteTime-h.nextExecuteTime)}_scheduleNextTask(){this._timer&&(clearTimeout(this._timer),this._timer=null);const p=this._tasks[0];if(p){const h=Math.max(0,p.nextExecuteTime-Date.now());this._timer=setTimeout(()=>this._execute(),h)}}_execute(){const p=Date.now();for(;this._tasks.length&&this._tasks[0].nextExecuteTime<=p;){const h=this._tasks[0];try{h.context?h.callback.call(h.context):h.callback(),h.isOnce?this.removeTask(h.id):(h.nextExecuteTime=p+h.intervalMs,this._sort())}catch(v){console.warn(`Task ${h.id} execution failed:`,v),h.isOnce&&this.removeTask(h.id)}}this._scheduleNextTask()}};function Na(p){const h=[];for(let v=0;v=55296&&N<=56319){const O=p.charCodeAt(++v)-56320+(N-55296<<10)+65536;h.push(240|O>>18,128|O>>12&63,128|O>>6&63,128|63&O)}else N<=127?h.push(N):N<=2047?h.push(192|N>>6,128|63&N):h.push(224|N>>12,128|N>>6&63,128|63&N)}return new Uint8Array(h)}function In(p){const h=Array.isArray(p)?[]:Object.create(null);for(const v in p)Object.prototype.hasOwnProperty.call(p,v)&&_(v)&&p[v]!=null&&(p[v]===null||typeof p[v]!="object"?h[v]=p[v]:h[v]=In(p[v]));return h}function fs(p,h){if(pA.includes(p))return 0;const v=Na(JSON.stringify(h));let N=4294967295;const{length:O}=v;for(let z=0;z>>=1:N=N>>>1^3988292384}return(4294967295^N)>>>0}function Ia(p){const{servcmd:h,data:v}=p,N=function(z){const X=Zi.get("login")||{},nA=Zi.get("instance")||{};return{servcmd:z,ver:"v4",platform:HA,websdkappid:537048168,websdkversion:"1.7.3",a2:X.a2Key||void 0,tinyid:X.tinyID||void 0,status_instid:X.statusInstanceId||0,sdkappid:nA.sdkAppId,contenttype:"json",reqtime:Math.floor(Date.now()/1e3),identifier:X.a2Key?void 0:X.userId,usersig:X.a2Key?void 0:X.userSig,sdkability:478343027,sdkability_ext:IA(""),cappid:nA.applicationID||0,tjgID:"",seq:Da(),cs:0}}(h),O=In(v);return N.cs=fs(h,O),{head:N,body:O}}function yn(p){const{servcmd:h,data:v}=p,N=function(z){const X=Zi.get("login")||{},nA=Zi.get("instance")||{};return{servcmd:z,ver:"v4",platform:HA,websdkappid:537048168,websdkversion:"1.7.3",sdkappid:nA.sdkAppId,contenttype:"",reqtime:Math.floor(Date.now()/1e3),identifier:"",usersig:"",status_instid:X.statusInstanceId||0,sdkability:478343027,sdkability_ext:IA(""),cappid:nA.applicationID||0,seq:Da(),cs:0}}(h),O=In(v);return N.cs=fs(h,O),{head:N,body:O}}let Ga=F();function Da(){return Ga=Ga<2415919103?Ga+1:F(),Ga}function $(){var p;const h=Zi.get("login")||{},v=Zi.get("instance")||{};return{sdk_type:30,sdk_app_id:v.sdkAppId,sdk_version:"1.6.18",tiny_id:Number(h.tinyID),user_id:h.userId||((p=Zi.get("webPush"))===null||p===void 0?void 0:p.userId),platform:HA,instance_id:v.instanceId,trace_id:new Date().getTime()}}var K,vA=Object.freeze({__proto__:null,calcBodyCRC:fs,filterProtocolDataInvalidFields:In,generateCosSpecifiedData:function(p){const{servcmd:h,data:v}=p,N=function(z){const X=Zi.get("login")||{},nA=Zi.get("instance")||{};return{servcmd:z,ver:"v4",platform:HA,websdkappid:537048168,websdkversion:"1.7.3",sdkappid:nA.sdkAppId,contenttype:"json",reqtime:Math.floor(Date.now()/1e3),identifier:X.userId,usersig:X.userSig,status_instid:X.statusInstanceId||0,sdkability:478343027,sdkability_ext:IA(""),cappid:nA.applicationID||0,seq:Da(),cs:0}}(h),O=In(v);return N.cs=fs(h,O),{head:N,body:O}},generateProtocolData:Ia,generateSSOLogProtocolData:yn,generateSequence:Da,getCommonHead:$,getHostSite:la,taskScheduler:fn,timeManager:Sg});(function(p){p[p.info=4]="info",p[p.warning=5]="warning",p[p.error=6]="error"})(K||(K={}));const qA={method:"extension",networkType:"network_type",eventType:"event_type",code:"error_code",message:"error_message",moreMessage:"more_message",duplicate:"duplicate",costTime:"cost_time",level:"level",uiPlatform:"ui_platform",timestamp:"timestamp"};class te{constructor(h){this.level=K.info,this._canSendLog=!0,this._logCreatedAt=Sg.getServerTimeMs(),this.timestamp=0,this.networkType=8,this.code=0,this.moreMessage="",this.method="",this.message="",this.costTime=0,this.duplicate=!1,this.eventType=0,this.uiPlatform=this._getUiPlatform(),this._sdkEdition=this._getSDKEdition();const{method:v,eventType:N=0,message:O="",costTime:z=0,error:X,uiPlatform:nA,moreMessage:DA="",code:GA=0,startTime:VA=0}=h||{};this.eventType=N,this.method=v,this.message=O,this.costTime=z,this.moreMessage=`${DA} startTime:${VA}`,this.code=GA,X&&this.setError(X),Rs(nA)||(this.uiPlatform=nA)}setMoreMessage(h){this.moreMessage=`${this.moreMessage} ${h}`}updateLogCreatedAtByTimeOffset(){this._logCreatedAt+=Sg.getTimeOffsetWithServer()}end(h=!1){this._canSendLog&&(this._canSendLog=!1,this.timestamp=Sg.getServerTimeMs(),this._ssoLogModule.pushToLogQueue(this._convertSSOLogDataKeyToServe()),h&&this._ssoLogModule.uploadSSOLogData())}setError(h){var v;return h instanceof Error?this._canSendLog?(!((v=Zi.get("netWorkMonitor"))===null||v===void 0)&&v.isNetworkOnline&&(h.errorCode&&(this.code=h.errorCode),h.errorMessage&&this.setMoreMessage(h.errorMessage)),this.level=K.error,this):this:(console.warn("SSOLogData.setError value not instanceof Error, please check!"),this)}setLogInfo(h){return Object.keys(h).forEach(v=>{Object.keys(qA).includes(v)&&(this[v]=h[v])}),this}setSSOLogModule(h){this._ssoLogModule=h}_convertSSOLogDataKeyToServe(){const h={};return Object.keys(this).forEach(v=>{const N=v;qA[N]&&(h[qA[N]]=this[N])}),h}_getUiPlatform(){var h;const v=(h=Zi.get("instance"))===null||h===void 0?void 0:h.scene;if(typeof v=="string"){const N=Number(v);return isNaN(N)?void 0:N}}_getSDKEdition(){var h;return(h=Zi.get("instance"))===null||h===void 0?void 0:h.sdkEdition}}var pe;(function(p){p.RECONNECTED="reconnected",p.CLOUD_CONFIG_UPDATE="cloud_config_update",p.SOCKET_DISCONNECTED="socket_disconnected"})(pe||(pe={}));var Oe=pe;const Fe=20,ot=6e4,ut=[4,5,6],St="report-logger";var Ot=new class{constructor(){this._sdkAppIdBlackList=[],this._tinyIdWhiteList=[],this._reportLevel=[4,5,6],this._minThreshold=Fe,this._maxThreshold=100,this._waitingTime=ot,this._lastReportAt=Date.now(),this._ssoLogMap=new Map,this._logLevel=lA.DEBUG,this._throttleConfig={global:{throttleTime:De,maxCount:Ce},single:{throttleTime:zA,maxCount:$A}},this._globalThrottle={count:0,startTime:Date.now()},this._singleThrottleMap=new Map,gn.subscribeInnerEvent(Oe.CLOUD_CONFIG_UPDATE,this._handleCloudConfigUpdate,this),fn.addTask({id:St,intervalMs:1e3,callback:this._checkAndReportIfDue,context:this}),this._logQueue=[],this._savePlatFormInfo()}_handleCloudConfigUpdate(p){const{evt_rpt_threshold:h=Fe,evt_rpt_waiting:v=ot,evt_rpt_level:N=ut,evt_rpt_sdkappid_bl:O="",evt_rpt_tinyid_wl:z="",evt_rpt_global_throttle_time:X=De,evt_rpt_global_throttle_count:nA=Ce,evt_rpt_single_throttle_time:DA=zA,evt_rpt_single_throttle_count:GA=$A}=p||{};this._sdkAppIdBlackList=O.split(",").map(VA=>Number(VA)),this._waitingTime=Number(v),this._minThreshold=h,this._reportLevel=N,this._tinyIdWhiteList=z.split(","),this._throttleConfig={global:{throttleTime:X,maxCount:nA},single:{throttleTime:DA,maxCount:GA}}}createSSOLogData(p){const h=new te(p);return h.setSSOLogModule(this),this._ssoLogMap.set(p.method,h),h}getSSOLogData(p){return this._ssoLogMap.get(p)||{}}pushToLogQueue(p){p&&(this._logQueue.push(p),this._shouldUploadImmediately()&&this.uploadSSOLogData())}setLogLevel(p){[lA.DEBUG,lA.ERROR,lA.INFO,lA.NONE,lA.WARN].includes(p)&&(this._logLevel=p)}debug(p,h="",v){this._log(lA.DEBUG,p,h,v)}info(p,h="",v){this._log(lA.INFO,p,h,v)}warn(p,h="",v){this._log(lA.WARN,p,h,v)}error(p,h="",v){this._log(lA.ERROR,p,h,v)}_shouldUploadImmediately(){return this._logQueue.length>=this._minThreshold}_isReportDue(){return Date.now()>=this._lastReportAt+this._waitingTime}_checkAndReportIfDue(){this._isReportDue()&&this._logQueue.length>0&&this.uploadSSOLogData()}uploadSSOLogData(){return mA(this,void 0,void 0,function*(){if(this._logQueue.length===0)return;const p=this._logQueue.slice();this._logQueue=[];try{const h=this._filterLogs(p);if(h.length===0)return void(this._lastReportAt=Date.now());const v={Header:$(),Event:h};Rs(v.Header.user_id)||(yield function(N){const O="imopenstat.tim_web_report_v2",z=yn({servcmd:O,data:N}),X=`${z.head.seq}${O}`;return Sl.sendPacket(z,{requestId:X})}(v))}catch(h){this._requeueFailedLogs(p),this.debug("uploadSSOLogData",en(h))}finally{this._lastReportAt=Date.now()}})}_requeueFailedLogs(p){this._logQueue=p.concat(this._logQueue);const h=this._logQueue.length-200;h>0&&(this._logQueue.splice(0,h),this.debug("uploadSSOLogData",`log queue overflow, dropped ${h} oldest logs`))}_savePlatFormInfo(){var p,h;if(It){const v=(h=(p=wx.getAccountInfoSync)===null||p===void 0?void 0:p.call(wx))===null||h===void 0?void 0:h.miniProgram;if(v){const{appId:N,envVersion:O}=v;Zi.set("instance",{appId:N,envVersion:O})}}else jt&&Zi.set("instance",{href:window.location.href})}_filterLogs(p){const{tinyID:h}=Zi.get("login")||{},{sdkAppId:v}=Zi.get("instance")||{};return this._sdkAppIdBlackList.includes(v)&&!this._tinyIdWhiteList.includes(h)?[]:p.filter(N=>this._reportLevel.includes(N.level))}_checkThrottle(p){return!!this._checkGlobalThrottle()||this._checkSingleThrottle(p)}_checkGlobalThrottle(){const p=Date.now();if(p-this._globalThrottle.startTime>=this._throttleConfig.global.throttleTime)this._globalThrottle.count=1,this._globalThrottle.startTime=p;else if(this._globalThrottle.count++,this._globalThrottle.count>this._throttleConfig.global.maxCount)return!0;return!1}_checkSingleThrottle(p){const h=Date.now(),v=this._singleThrottleMap.get(p);return v?h-v.startTime>=this._throttleConfig.single.throttleTime?(v.count=1,v.startTime=h,!1):v.count>=this._throttleConfig.single.maxCount||(v.count++,!1):(this._singleThrottleMap.set(p,{count:1,startTime:h}),!1)}_shouldLog(p){return p>=this._logLevel&&this._logLevel!==lA.NONE}_shouldReport(p){return this._reportLevel.includes(WA[p])}_formatLog(p,h,v,N){const O=new Date,z=`${O.getHours()}:${O.getMinutes()}:${O.getSeconds()}:${O.getMilliseconds()}`,X=`<${lA[p]}>`;return Rt||ki?[`${cA} [${z}] ${X} [${h}] ${v}`]:["%c%s%c%s","background:#0abf5b; padding:1px; border-radius:3px; color: #fff",cA,"",`[${z}] ${X} [${h}] ${v} params: ${en(N)}`]}_log(p,h,v,N){if(this._shouldLog(p)){const O=this._formatLog(p,h,v,N);TA[p].apply(console,O)}if(this._shouldReport(p)){const O=this._getThrottleKey(h,v,N);this._checkThrottle(O)||this.createSSOLogData(Object.assign(Object.assign({message:v},N),{method:h})).end()}}_getThrottleKey(p,h,v){const N=`${p}${h}${en(Object.assign(Object.assign({},v),{costTime:""}))}`,O=Na(JSON.stringify(N));let z=4294967295;const{length:X}=O;for(let nA=0;nA>>=1:z=z>>>1^3988292384}return`${(4294967295^z)>>>0}`}reset(){console.log("SSO_LOG_MODULE.reset"),fn.removeTask(St),gn.unSubscribeInnerEvent(Oe.CLOUD_CONFIG_UPDATE,this._handleCloudConfigUpdate,this),this._lastReportAt=0,this.uploadSSOLogData(),this._sdkAppIdBlackList=[],this._tinyIdWhiteList=[],this._minThreshold=Fe,this._maxThreshold=100,this._waitingTime=ot,this._logQueue=[],this._logLevel=lA.DEBUG,this._globalThrottle={count:0,startTime:Date.now()},this._singleThrottleMap.clear()}};const li=15e3,nt="Channel",Ft="channel_schedule_task",Ji="channel_reconnect_task",qi="connected",qs="connecting",Mi="disconnected",Wo=1e3,Mg="network_status_change",or="activity_status_change",fr="send_fail",xn="reconnect_failed",Dl="socket_error",Ks="socket_close";function oI(p){return oI=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(h){return typeof h}:function(h){return h&&typeof Symbol=="function"&&h.constructor===Symbol&&h!==Symbol.prototype?"symbol":typeof h},oI(p)}function Wg(p){throw new Error('Could not dynamically require "'+p+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var fc,fu={exports:{}},Sa=(fc||(fc=1,function(p){p.exports=function h(v,N,O){function z(DA,GA){if(!N[DA]){if(!v[DA]){if(!GA&&Wg)return Wg(DA);if(X)return X(DA,!0);var VA=new Error("Cannot find module '"+DA+"'");throw VA.code="MODULE_NOT_FOUND",VA}var ie=N[DA]={exports:{}};v[DA][0].call(ie.exports,function(Ee){return z(v[DA][1][Ee]||Ee)},ie,ie.exports,h,v,N,O)}return N[DA].exports}for(var X=Wg,nA=0;nA>>6:(Ee<65536?ie[st++]=224|Ee>>>12:(ie[st++]=240|Ee>>>18,ie[st++]=128|Ee>>>12&63),ie[st++]=128|Ee>>>6&63),ie[st++]=128|63&Ee);return ie},N.buf2binstring=function(VA){return GA(VA,VA.length)},N.binstring2buf=function(VA){for(var ie=new O.Buf8(VA.length),Ee=0,He=ie.length;Ee>10&1023,xt[He++]=56320|1023&At)}return GA(xt,He)},N.utf8border=function(VA,ie){var Ee;for((ie=ie||VA.length)>VA.length&&(ie=VA.length),Ee=ie-1;0<=Ee&&(192&VA[Ee])==128;)Ee--;return Ee<0||Ee===0?ie:Ee+nA[VA[Ee]]>ie?Ee:ie}},{"./common":1}],3:[function(h,v,N){v.exports=function(O,z,X,nA){for(var DA=65535&O,GA=O>>>16&65535,VA=0;X!==0;){for(X-=VA=2e3>>1:z>>>1;X[nA]=z}return X}();v.exports=function(z,X,nA,DA){var GA=O,VA=DA+nA;z^=-1;for(var ie=DA;ie>>8^GA[255&(z^X[ie])];return-1^z}},{}],6:[function(h,v,N){v.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}},{}],7:[function(h,v,N){v.exports=function(O,z){var X,nA,DA,GA,VA,ie,Ee,He,At,st,bt,xt,Ui,ao,zi,ui,Oo,$o,Qi,Ki,Ws,_e,vt,FA,Wt;X=O.state,nA=O.next_in,FA=O.input,DA=nA+(O.avail_in-5),GA=O.next_out,Wt=O.output,VA=GA-(z-O.avail_out),ie=GA+(O.avail_out-257),Ee=X.dmax,He=X.wsize,At=X.whave,st=X.wnext,bt=X.window,xt=X.hold,Ui=X.bits,ao=X.lencode,zi=X.distcode,ui=(1<>>=Qi=$o>>>24,Ui-=Qi,(Qi=$o>>>16&255)==0)Wt[GA++]=65535&$o;else{if(!(16&Qi)){if(!(64&Qi)){$o=ao[(65535&$o)+(xt&(1<>>=Qi,Ui-=Qi),Ui<15&&(xt+=FA[nA++]<>>=Qi=$o>>>24,Ui-=Qi,!(16&(Qi=$o>>>16&255))){if(!(64&Qi)){$o=zi[(65535&$o)+(xt&(1<>>=Qi,Ui-=Qi,(Qi=GA-VA)>3,xt&=(1<<(Ui-=Ki<<3))-1,O.next_in=nA,O.next_out=GA,O.avail_in=nA>>24&255)+(_e>>>8&65280)+((65280&_e)<<8)+((255&_e)<<24)}function xt(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new O.Buf16(320),this.work=new O.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function Ui(_e){var vt;return _e&&_e.state?(vt=_e.state,_e.total_in=_e.total_out=vt.total=0,_e.msg="",vt.wrap&&(_e.adler=1&vt.wrap),vt.mode=He,vt.last=0,vt.havedict=0,vt.dmax=32768,vt.head=null,vt.hold=0,vt.bits=0,vt.lencode=vt.lendyn=new O.Buf32(At),vt.distcode=vt.distdyn=new O.Buf32(st),vt.sane=1,vt.back=-1,ie):Ee}function ao(_e){var vt;return _e&&_e.state?((vt=_e.state).wsize=0,vt.whave=0,vt.wnext=0,Ui(_e)):Ee}function zi(_e,vt){var FA,Wt;return _e&&_e.state?(Wt=_e.state,vt<0?(FA=0,vt=-vt):(FA=1+(vt>>4),vt<48&&(vt&=15)),vt&&(vt<8||15=Zt.wsize?(O.arraySet(Zt.window,vt,FA-Zt.wsize,Zt.wsize,0),Zt.wnext=0,Zt.whave=Zt.wsize):(Wt<(En=Zt.wsize-Zt.wnext)&&(En=Wt),O.arraySet(Zt.window,vt,FA-Wt,En,Zt.wnext),(Wt-=En)?(O.arraySet(Zt.window,vt,FA-Wt,Wt,0),Zt.wnext=Wt,Zt.whave=Zt.wsize):(Zt.wnext+=En,Zt.wnext===Zt.wsize&&(Zt.wnext=0),Zt.whave>>8&255,FA.check=X(FA.check,Ne,2,0),Ct=Et=0,FA.mode=2;break}if(FA.flags=0,FA.head&&(FA.head.done=!1),!(1&FA.wrap)||(((255&Et)<<8)+(Et>>8))%31){_e.msg="incorrect header check",FA.mode=30;break}if((15&Et)!=8){_e.msg="unknown compression method",FA.mode=30;break}if(Ct-=4,yA=8+(15&(Et>>>=4)),FA.wbits===0)FA.wbits=yA;else if(yA>FA.wbits){_e.msg="invalid window size",FA.mode=30;break}FA.dmax=1<>8&1),512&FA.flags&&(Ne[0]=255&Et,Ne[1]=Et>>>8&255,FA.check=X(FA.check,Ne,2,0)),Ct=Et=0,FA.mode=3;case 3:for(;Ct<32;){if(vi===0)break A;vi--,Et+=Wt[Zt++]<>>8&255,Ne[2]=Et>>>16&255,Ne[3]=Et>>>24&255,FA.check=X(FA.check,Ne,4,0)),Ct=Et=0,FA.mode=4;case 4:for(;Ct<16;){if(vi===0)break A;vi--,Et+=Wt[Zt++]<>8),512&FA.flags&&(Ne[0]=255&Et,Ne[1]=Et>>>8&255,FA.check=X(FA.check,Ne,2,0)),Ct=Et=0,FA.mode=5;case 5:if(1024&FA.flags){for(;Ct<16;){if(vi===0)break A;vi--,Et+=Wt[Zt++]<>>8&255,FA.check=X(FA.check,Ne,2,0)),Ct=Et=0}else FA.head&&(FA.head.extra=null);FA.mode=6;case 6:if(1024&FA.flags&&(vi<(ji=FA.length)&&(ji=vi),ji&&(FA.head&&(yA=FA.head.extra_len-FA.length,FA.head.extra||(FA.head.extra=new Array(FA.head.extra_len)),O.arraySet(FA.head.extra,Wt,Zt,ji,yA)),512&FA.flags&&(FA.check=X(FA.check,Wt,ji,Zt)),vi-=ji,Zt+=ji,FA.length-=ji),FA.length))break A;FA.length=0,FA.mode=7;case 7:if(2048&FA.flags){if(vi===0)break A;for(ji=0;yA=Wt[Zt+ji++],FA.head&&yA&&FA.length<65536&&(FA.head.name+=String.fromCharCode(yA)),yA&&ji>9&1,FA.head.done=!0),_e.adler=FA.check=0,FA.mode=12;break;case 10:for(;Ct<32;){if(vi===0)break A;vi--,Et+=Wt[Zt++]<>>=7&Ct,Ct-=7&Ct,FA.mode=27;break}for(;Ct<3;){if(vi===0)break A;vi--,Et+=Wt[Zt++]<>>=1)){case 0:FA.mode=14;break;case 1:if(Ki(FA),FA.mode=20,vt!==6)break;Et>>>=2,Ct-=2;break A;case 2:FA.mode=17;break;case 3:_e.msg="invalid block type",FA.mode=30}Et>>>=2,Ct-=2;break;case 14:for(Et>>>=7&Ct,Ct-=7&Ct;Ct<32;){if(vi===0)break A;vi--,Et+=Wt[Zt++]<>>16^65535)){_e.msg="invalid stored block lengths",FA.mode=30;break}if(FA.length=65535&Et,Ct=Et=0,FA.mode=15,vt===6)break A;case 15:FA.mode=16;case 16:if(ji=FA.length){if(vi>>=5,Ct-=5,FA.ndist=1+(31&Et),Et>>>=5,Ct-=5,FA.ncode=4+(15&Et),Et>>>=4,Ct-=4,286>>=3,Ct-=3}for(;FA.have<19;)FA.lens[ae[FA.have++]]=0;if(FA.lencode=FA.lendyn,FA.lenbits=7,ZA={bits:FA.lenbits},NA=DA(0,FA.lens,0,19,FA.lencode,0,FA.work,ZA),FA.lenbits=ZA.bits,NA){_e.msg="invalid code lengths set",FA.mode=30;break}FA.have=0,FA.mode=19;case 19:for(;FA.have>>16&255,ha=65535&Ie,!((ts=Ie>>>24)<=Ct);){if(vi===0)break A;vi--,Et+=Wt[Zt++]<>>=ts,Ct-=ts,FA.lens[FA.have++]=ha;else{if(ha===16){for(Re=ts+2;Ct>>=ts,Ct-=ts,FA.have===0){_e.msg="invalid bit length repeat",FA.mode=30;break}yA=FA.lens[FA.have-1],ji=3+(3&Et),Et>>>=2,Ct-=2}else if(ha===17){for(Re=ts+3;Ct>>=ts)),Et>>>=3,Ct-=3}else{for(Re=ts+7;Ct>>=ts)),Et>>>=7,Ct-=7}if(FA.have+ji>FA.nlen+FA.ndist){_e.msg="invalid bit length repeat",FA.mode=30;break}for(;ji--;)FA.lens[FA.have++]=yA}}if(FA.mode===30)break;if(FA.lens[256]===0){_e.msg="invalid code -- missing end-of-block",FA.mode=30;break}if(FA.lenbits=9,ZA={bits:FA.lenbits},NA=DA(GA,FA.lens,0,FA.nlen,FA.lencode,0,FA.work,ZA),FA.lenbits=ZA.bits,NA){_e.msg="invalid literal/lengths set",FA.mode=30;break}if(FA.distbits=6,FA.distcode=FA.distdyn,ZA={bits:FA.distbits},NA=DA(VA,FA.lens,FA.nlen,FA.ndist,FA.distcode,0,FA.work,ZA),FA.distbits=ZA.bits,NA){_e.msg="invalid distances set",FA.mode=30;break}if(FA.mode=20,vt===6)break A;case 20:FA.mode=21;case 21:if(6<=vi&&258<=Co){_e.next_out=us,_e.avail_out=Co,_e.next_in=Zt,_e.avail_in=vi,FA.hold=Et,FA.bits=Ct,nA(_e,ks),us=_e.next_out,En=_e.output,Co=_e.avail_out,Zt=_e.next_in,Wt=_e.input,vi=_e.avail_in,Et=FA.hold,Ct=FA.bits,FA.mode===12&&(FA.back=-1);break}for(FA.back=0;aa=(Ie=FA.lencode[Et&(1<>>16&255,ha=65535&Ie,!((ts=Ie>>>24)<=Ct);){if(vi===0)break A;vi--,Et+=Wt[Zt++]<>$r)])>>>16&255,ha=65535&Ie,!($r+(ts=Ie>>>24)<=Ct);){if(vi===0)break A;vi--,Et+=Wt[Zt++]<>>=$r,Ct-=$r,FA.back+=$r}if(Et>>>=ts,Ct-=ts,FA.back+=ts,FA.length=ha,aa===0){FA.mode=26;break}if(32&aa){FA.back=-1,FA.mode=12;break}if(64&aa){_e.msg="invalid literal/length code",FA.mode=30;break}FA.extra=15&aa,FA.mode=22;case 22:if(FA.extra){for(Re=FA.extra;Ct>>=FA.extra,Ct-=FA.extra,FA.back+=FA.extra}FA.was=FA.length,FA.mode=23;case 23:for(;aa=(Ie=FA.distcode[Et&(1<>>16&255,ha=65535&Ie,!((ts=Ie>>>24)<=Ct);){if(vi===0)break A;vi--,Et+=Wt[Zt++]<>$r)])>>>16&255,ha=65535&Ie,!($r+(ts=Ie>>>24)<=Ct);){if(vi===0)break A;vi--,Et+=Wt[Zt++]<>>=$r,Ct-=$r,FA.back+=$r}if(Et>>>=ts,Ct-=ts,FA.back+=ts,64&aa){_e.msg="invalid distance code",FA.mode=30;break}FA.offset=ha,FA.extra=15&aa,FA.mode=24;case 24:if(FA.extra){for(Re=FA.extra;Ct>>=FA.extra,Ct-=FA.extra,FA.back+=FA.extra}if(FA.offset>FA.dmax){_e.msg="invalid distance too far back",FA.mode=30;break}FA.mode=25;case 25:if(Co===0)break A;if(ji=ks-Co,FA.offset>ji){if((ji=FA.offset-ji)>FA.whave&&FA.sane){_e.msg="invalid distance too far back",FA.mode=30;break}ji>FA.wnext?(ji-=FA.wnext,Yr=FA.wsize-ji):Yr=FA.wnext-ji,ji>FA.length&&(ji=FA.length),oc=FA.window}else oc=En,Yr=us-FA.offset,ji=FA.length;for(CoOo?(Qi=Yr[oc+st[vt]],Ki=Ct[ug+st[vt]]):(Qi=96,Ki=0),xt=1<<_e-us,FA=Ui=1<>us)+(Ui-=xt)]=$o<<24|Qi<<16|Ki,Ui!==0;);for(xt=1<<_e-1;Et&xt;)xt>>=1;if(xt!==0?(Et&=xt-1,Et+=xt):Et=0,vt++,--ks[_e]==0){if(_e===Wt)break;_e=VA[ie+st[vt]]}if(En<_e&&(Et&zi)!==ao){for(us===0&&(us=En),ui+=FA,vi=1<<(Zt=_e-us);Zt+us{const nA=new Uint8Array(X).slice(4);let DA;try{DA=Sa.inflate(nA,{to:"string"})}catch(GA){console.error("inflate error",GA)}return DA})(p.data):function(X){const nA=new Uint8Array(X);let DA="",GA=0;const{length:VA}=nA;for(;GA0)for(let At=0;At{var N;const{uplinkData:O,canResend:z,resolve:X,reject:nA,timeout:DA}=h;if(z){this._pendingRequests.set(v,{resolve:X,reject:nA,timestamp:Date.now(),uplinkData:O,timeout:DA,canResend:z});const GA=this._isBinarySupported?Na(O).buffer:O;(N=this._socketAdapter)===null||N===void 0||N.send(GA)}else this._pendingRequests.delete(v)})}_onConnect(p){const{socketId:h,event:v={}}=p||{};this._connectionId=h,this._connectionEstablishedTime=Date.now();const N=Date.now()-this._connectionStartTime,O=`${nt}.onConnect cost:${N} ms. socketID:${h} res:${JSON.stringify(v)}`;if(this._ssoLog({method:"onConnect",message:O}),this._checkPendingRequestsAndResend(),this._sendHeartbeatIfReady(),this._isReconnecting){const z=`${nt}.reconnect success`;this._ssoLog({method:"reconnectSuccess",message:z}),gn.emitInnerEvent(Oe.RECONNECTED),this._isReconnecting=!1}this._resetReconnectDelay(),this._handleConnectStateChange({state:qi,shouldEmitEvent:!0,shouldAttemptReconnect:!1})}_sendAck(p){const h=Ia({servcmd:"openim.ws_msg_push_ack",data:{SessionData:p}});this.sendPacket(h)}_executeScheduledTaskIfReady(){return mA(this,void 0,void 0,function*(){this._clearTimeoutRequest(),this._sendHeartbeatIfReady()})}_canSendHeartbeat(){var p;return((p=this._socketAdapter)===null||p===void 0?void 0:p.isConnected())&&Date.now()>=this._nextHeartbeatAt&&!this._isHeartbeatInProgress}_sendHeartbeat(){return mA(this,void 0,void 0,function*(){var p;const h=Ia({servcmd:"heartbeat.alive",data:{}});try{const v=`${h.head.seq}${h.head.servcmd}`;yield this.sendPacket(h,{requestId:v,timeout:3e3})}catch(v){const N=(p=Zi.get("netWorkMonitor"))===null||p===void 0?void 0:p.isNetworkOnline,O=`${nt}.sendHeartbeat failed. isNetWorkOnline:${N} error: ${en(v)}`;this._ssoLog({method:"sendHeartbeatError",message:O}),this._handleConnectStateChange({state:Mi,shouldEmitEvent:!0,shouldAttemptReconnect:!0})}})}_sendHeartbeatIfReady(){return mA(this,void 0,void 0,function*(){this._canSendHeartbeat()&&(this._isHeartbeatInProgress=!0,yield this._sendHeartbeat(),this._isHeartbeatInProgress=!1)})}_updateHeartbeatTime(){this._nextHeartbeatAt=_o?Date.now()+5e3:Date.now()+1e4}_handleNetworkStatusChange(p){const h=`${nt}.networkStatusChange ${JSON.stringify(p)}`;this._ssoLog({method:"networkStatusChange",message:h});const{isNetworkOnline:v,networkType:N}=p;v&&N!=="none"?this._handleConnectStateChange({state:qi,shouldEmitEvent:!1,shouldAttemptReconnect:!0,reason:Mg}):this._handleConnectStateChange({state:Mi,shouldEmitEvent:!1,shouldAttemptReconnect:!0,reason:Mg})}isPrivateNetWork(){const p=Zi.get("instance")||{};return p.proxyServer&&!p.fileDownloadProxy}_handleConnectStateChange(p){const{state:h,shouldAttemptReconnect:v,shouldEmitEvent:N,reason:O}=p,z=`${nt}._handleConnectStateChange currentConnectState: ${this._currentConnectState} shouldAttemptReconnect: ${v} shouldEmitEvent: ${N} reason: ${O}`;this._currentConnectState!==h&&(this._ssoLog({method:"handleConnectStateChange",message:z}),N&&(Ot.info("_handleConnectStateChange",` from ${this._currentConnectState} to ${h}`),gn.emitOuterEvent("netStateChange",{name:"netStateChange",data:{state:h}}),this._currentConnectState=h,h===Mi&&gn.emitInnerEvent(Oe.SOCKET_DISCONNECTED)),v&&(this._resetReconnectDelay(),fn.addTask({id:Ji,intervalMs:this._intendedDelay,callback:this._scheduleReconnectWithBackoff,context:this})))}_handleActivityStatusChange(p){var h,v;const N=(v=(h=this._socketAdapter)===null||h===void 0?void 0:h._ws)===null||v===void 0?void 0:v.readyState,O=`${nt}.activityStatusChange ${JSON.stringify(p)} readyState: ${N}`;Ot.debug("activityStatusChange",O),N===3&&this._handleConnectStateChange({state:Mi,shouldEmitEvent:!0,shouldAttemptReconnect:!0,reason:or})}_resetReconnectDelay(){var p;Ot.debug(`${nt}._resetReconnectDelay`),fn.removeTask(Ji);const h=(p=Zi.get("activityMonitor"))===null||p===void 0?void 0:p.isActive;this._intendedDelay=h?Wo:1e3}_scheduleReconnectWithBackoff(){var p;const h=(p=Zi.get("activityMonitor"))===null||p===void 0?void 0:p.isActive;this._intendedDelay=h?Math.min(5e3,Math.max(Wo,1.5*this._intendedDelay)):Math.min(3e5,Math.max(1e3,1.5*this._intendedDelay));const v=new Date().toTimeString().slice(0,8),N=`${nt}.scheduleReconnectWithBackoff timeStr: ${v} intendedDelay: ${this._intendedDelay}`;Ot.debug(N),this.reconnect(),fn.updateTaskInterval(Ji,this._intendedDelay)}_ssoLog(p){const{method:h,message:v}=p;Ot.info(h,v)}_diagnose(){this.isPrivateNetWork()||(this._lastDiagnoseAt=Date.now(),function(p){mA(this,void 0,void 0,function*(){const h=p.split("/")[2];if(!h.startsWith("ws"))return;const v=`https://${h}/v3/netcheck/getconninfo?${p.slice(p.indexOf("info?")+5)}&reqtime=${Date.now()}`;try{yield Pi({method:"GET",url:v,data:{}})}catch(N){Ot.warn("diagnoseBySSO",`diagnoseBySSO failed. error:${N.message}`)}})}(this._url),function(p){mA(this,void 0,void 0,function*(){const h=`https://boce-cdn.my-imcloud.com/v3/netcheck/getconninfo?${p.slice(p.indexOf("info?")+5)}&reqtime=${Date.now()}`;try{yield Pi({method:"GET",url:h,data:{}})}catch(v){Ot.warn(`diagnoseByCDN', 'diagnoseByCDN failed. error:${v.message}`)}})}(this._url),this._beforeSendInterceptors=[])}_clearTimeoutRequest(){for(const[p,h]of this._pendingRequests.entries()){const{reject:v,timestamp:N,timeout:O}=h;Date.now()-N>=O&&(this._pendingRequests.delete(p),Date.now()-this._lastDiagnoseAt>=3e4&&this._diagnose(),v({errorCode:Br,errorInfo:"NETWORK_TIMEOUT",data:{requestId:p}}))}}_updateIsBinarySupported(){var p;if(!((p=Zi.get("instance"))===null||p===void 0)&&p.devMode)return void(this._isBinarySupported=!1);const h=Es();if((gi||It&&h==="windows"||Vs)&&(this._isBinarySupported=!1),_o){const{uniRuntimeVersion:v=""}=io.getSystemInfoSync();(function(N){const O=N.split(".").map(Number),[z=0,X=0,nA=0]=O;return z>2||!(z<2)&&(X>2||!(X<2)&&nA>=6)})(v)||(this._isBinarySupported=!1)}}_isCompressedData(p){const h=new Uint8Array(p);return h[0]===67&&h[1]===79&&h[2]===77&&h[3]===80}};const fe={init:function(p){Zi.set("instance",p),Sl.init()},destroy:function(){Sl.dispose(),Zi.clear(),fn.dispose()},notificationCenter:gn,channel:Sl,store:Zi,ssoLog:Ot,utils:yg,common:vA,constants:Dt},me=p=>typeof p=="function";function vg(p,h,v){const N=v||[];if(!p||!h)return!1;const O=Object.keys(p).filter(X=>!N.includes(X)),z=Object.keys(h).filter(X=>!N.includes(X));return O.length===z.length&&O.every(X=>!!h.hasOwnProperty(X)&&(typeof p[X]=="object"&&p[X]!==null?vg(p[X],h[X],v):p[X]===h[X]))}var rg;(function(p){p.SDK_READY="sdkStateReady",p.SDK_NOT_READY="sdkStateNotReady",p.SDK_DESTROY="sdkDestroy",p.MESSAGE_RECEIVED="onMessageReceived",p.ROOM_CUSTOM_DATA_RECEIVED="onRoomCustomDataReceived",p.MESSAGE_MODIFIED="onMessageModified",p.MESSAGE_REVOKED="onMessageRevoked",p.MESSAGE_READ_BY_PEER="onMessageReadByPeer",p.MESSAGE_READ_RECEIPT_RECEIVED="onMessageReadReceiptReceived",p.MESSAGE_EXTENSIONS_UPDATED="onMessageExtensionsUpdated",p.MESSAGE_EXTENSIONS_DELETED="onMessageExtensionsDeleted",p.MESSAGE_REACTIONS_UPDATED="onMessageReactionsUpdated",p.CONVERSATION_LIST_UPDATED="onConversationListUpdated",p.TOTAL_UNREAD_MESSAGE_COUNT_UPDATED="onTotalUnreadMessageCountUpdated",p.CONVERSATION_GROUP_LIST_UPDATED="onConversationGroupListUpdated",p.CONVERSATION_IN_GROUP_UPDATED="onConversationInGroupUpdated",p.GROUP_LIST_UPDATED="onGroupListUpdated",p.GROUP_ATTRIBUTES_UPDATED="groupAttributesUpdated",p.GROUP_COUNTER_UPDATED="onGroupCounterUpdated",p.TOPIC_CREATED="onTopicCreated",p.TOPIC_DELETED="onTopicDeleted",p.TOPIC_UPDATED="onTopicUpdated",p.PROFILE_UPDATED="onProfileUpdated",p.USER_STATUS_UPDATED="onUserStatusUpdated",p.BLACKLIST_UPDATED="blacklistUpdated",p.FRIEND_LIST_UPDATED="onFriendListUpdated",p.FRIEND_GROUP_LIST_UPDATED="onFriendGroupListUpdated",p.FRIEND_APPLICATION_LIST_UPDATED="onFriendApplicationListUpdated",p.MY_FOLLOWERS_LIST_UPDATED="onMyFollowersListUpdated",p.MY_FOLLOWING_LIST_UPDATED="onMyFollowingListUpdated",p.MUTUAL_FOLLOWERS_LIST_UPDATED="onMutualFollowersListUpdated",p.KICKED_OUT="kickedOut",p.ERROR="error",p.NET_STATE_CHANGE="netStateChange",p.ALL_RECEIVE_MESSAGE_OPT_UPDATED="onAllReceiveMessageOptUpdated",p.SERVER_CONFIG_UPDATED="onServerConfigUpdated",p.PINNED_GROUP_MESSAGE_UPDATED="onPinnedGroupMessageUpdated",p.WEB_PUSH_MESSAGE_RECEIVED="onWebPushMessageReceived",p.GROUP_ONLINE_MEMBER_COUNT_CHANGED="onGroupOnlineMemberCountChanged",p.RICH_STATUS_CHANGED="onRichStatusChanged"})(rg||(rg={}));var Rg,Dn=rg;(function(p){p.LOGOUT="logout",p.DESTROY="destroy",p.CLOUD_CONFIG_UPDATE="cloud_config_update",p.PROFILE_UPDATE="profile_updated",p.ERROR="error",p.RECONNECTED="reconnected",p.FORCE_OFFLINE="im_open_status.stat_forceoffline",p.COMMERCIAL_CONFIG_PUSH="im_sdk_config_mgr.push_imsdk_purchase_bitsv2",p.OVERLOAD_PUSH="OverLoadPush.notify2",p.NEW_MESSAGE="new_message",p.MESSAGE_PUSH="im_open_push.msg_push",p.MESSAGE_DELETED="message_deleted",p.MESSAGE_REVOKED="message_revoked",p.MESSAGE_MODIFIED="message_modified",p.SOCKET_DISCONNECTED="socket_disconnected",p.CONVERSATION_UPDATED="conversation_updated",p.TOPIC_MESSAGE_DELETED="topic_message_deleted",p.TOPIC_MESSAGE_REVOKED="topic_message_revoked",p.TOPIC_MESSAGE_MODIFIED="topic_message_modified",p.TOPIC_NEW_MESSAGE="topic_new_message",p.QUALITY_STAT="quality_stat",p.SYNC_CONVERSATION_LIST="sync_conversation_list",p.HISTORY_MESSAGE_FETCHED="history_message_fetched"})(Rg||(Rg={}));var yr,Ii=Rg;(function(p){p.NEW_INVITATION_RECEIVED="newInvitationReceived",p.INVITEE_ACCEPTED="ts_invitee_accepted",p.INVITEE_REJECTED="ts_invitee_rejected",p.INVITATION_CANCELLED="ts_invitation_cancelled",p.INVITATION_TIMEOUT="ts_invitation_timeout",p.INVITATION_MODIFIED="ts_invitation_modified"})(yr||(yr={}));var so=yr;const Hc=Object.assign({},{KICKED_OUT_MULT_ACCOUNT:"multipleAccount",KICKED_OUT_MULT_DEVICE:"multipleDevice",KICKED_OUT_USERSIG_EXPIRED:"userSigExpired",KICKED_OUT_REST_API:"REST_API_Kick"}),zg={MSG_TEXT:"TIMTextElem",MSG_IMAGE:"TIMImageElem",MSG_AUDIO:"TIMSoundElem",MSG_FILE:"TIMFileElem",MSG_FACE:"TIMFaceElem",MSG_VIDEO:"TIMVideoFileElem",MSG_LOCATION:"TIMLocationElem",MSG_GRP_TIP:"TIMGroupTipElem",MSG_GRP_SYS_NOTICE:"TIMGroupSystemNoticeElem",MSG_CUSTOM:"TIMCustomElem",MSG_MERGER:"TIMRelayElem",MSG_STREAM:"TIMStreamElem"};var wg;(function(p){p.UNSENT="unSend",p.SUCCESS="success",p.FAIL="fail"})(wg||(wg={}));const Or={modify:Ii.MESSAGE_MODIFIED,delete:Ii.MESSAGE_DELETED,revoke:Ii.MESSAGE_REVOKED};var yc;(function(p){p[p.FORWARD=0]="FORWARD",p[p.BACKWARD=1]="BACKWARD"})(yc||(yc={}));const qc=Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},zg),{MSG_PRIORITY_HIGH:"High",MSG_PRIORITY_NORMAL:"Normal",MSG_PRIORITY_LOW:"Low",MSG_PRIORITY_LOWEST:"Lowest"}),{RECEIVE_WITH_OFFLINE_PUSH_EXCEPT_AT:"AcceptNotNotifyExceptAt",NOT_RECEIVE_OFFLINE_PUSH_EXCEPT_AT:"AcceptNotNotifyExceptAt",NOT_RECEIVE_MSG_EXCEPT_AT:"NotReceiveMsgExceptAt",MSG_AT_ALL:"__kImSDK_MesssageAtALL__"}),{MSG_REMIND_ACPT_AND_NOTE:"AcceptAndNotify",MSG_REMIND_ACPT_NOT_NOTE:"AcceptNotNotify",MSG_REMIND_DISCARD:"Discard"}),{MessageStatus:wg,Direction:yc}),ag={[Or.modify]:Ii.TOPIC_MESSAGE_MODIFIED,[Or.delete]:Ii.TOPIC_MESSAGE_DELETED,[Or.revoke]:Ii.TOPIC_MESSAGE_REVOKED},yu={GENDER_UNKNOWN:"Gender_Type_Unknown",GENDER_FEMALE:"Gender_Type_Female",GENDER_MALE:"Gender_Type_Male",USER_STATUS_UNKNOWN:0,USER_STATUS_ONLINE:1,USER_STATUS_OFFLINE:2,USER_STATUS_UNLOGINED:3,USER_NOT_FOUND:"@TLS#NOT_FOUND"},CE=Object.assign({},yu),_g={CONV_C2C:"C2C",CONV_GROUP:"GROUP",CONV_TOPIC:"TOPIC",CONV_SYSTEM:"@TIM#SYSTEM"},ba=Object.assign(Object.assign(Object.assign(Object.assign({},_g),{CONV_AT_ME:1,CONV_AT_ALL:2,CONV_AT_ALL_AT_ME:3}),{CONV_MARK_TYPE_STAR:1,CONV_MARK_TYPE_UNREAD:2,CONV_MARK_TYPE_FOLD:4,CONV_MARK_TYPE_HIDE:8}),{READ_ALL_C2C_MSG:"readAllC2CMessage",READ_ALL_GROUP_MSG:"readAllGroupMessage",READ_ALL_MSG:"readAllMessage"}),Dc=Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},{SNS_TYPE_NO_RELATION:"CheckResult_Type_NoRelation",SNS_TYPE_A_WITH_B:"CheckResult_Type_AWithB",SNS_TYPE_B_WITH_A:"CheckResult_Type_BWithA",SNS_TYPE_BOTH_WAY:"CheckResult_Type_BothWay"}),{ALLOW_TYPE_ALLOW_ANY:"AllowType_Type_AllowAny",ALLOW_TYPE_NEED_CONFIRM:"AllowType_Type_NeedConfirm",ALLOW_TYPE_DENY_ANY:"AllowType_Type_DenyAny"}),{SNS_ADD_TYPE_SINGLE:"Add_Type_Single",SNS_ADD_TYPE_BOTH:"Add_Type_Both"}),{SNS_DELETE_TYPE_SINGLE:"Delete_Type_Single",SNS_DELETE_TYPE_BOTH:"Delete_Type_Both"}),{SNS_APPLICATION_TYPE_BOTH:"Pendency_Type_Both",SNS_APPLICATION_SENT_TO_ME:"Pendency_Type_ComeIn",SNS_APPLICATION_SENT_BY_ME:"Pendency_Type_SendOut",SNS_APPLICATION_AGREE:"Response_Action_Agree",SNS_APPLICATION_AGREE_AND_ADD:"Response_Action_AgreeAndAdd"}),{SNS_CHECK_TYPE_BOTH:"CheckResult_Type_Both",SNS_CHECK_TYPE_SINGLE:"CheckResult_Type_Single"}),{FORBID_TYPE_NONE:"AdminForbid_Type_None",FORBID_TYPE_SEND_OUT:"AdminForbid_Type_SendOut"}),hE={GRP_WORK:"Private",GRP_PUBLIC:"Public",GRP_MEETING:"ChatRoom",GRP_AVCHATROOM:"AVChatRoom",GRP_COMMUNITY:"Community",GRP_ROOM:"Room",GRP_LIVE:"Live"},ka={COMMUNITY:"@TGS#_",TOPIC:"@TOPIC#_"},oa={JOINED:1,QUITTED:2,KICKED:3,ADMIN_SET:4,ADMIN_CANCELED:5,GROUP_PROFILE_UPDATED:6,GROUP_MEMBER_PROFILE_UPDATED:7,TOPIC_PROFILE_UPDATED:8},Tg=Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},hE),{GRP_MBR_ROLE_OWNER:"Owner",GRP_MBR_ROLE_ADMIN:"Admin",GRP_MBR_ROLE_MEMBER:"Member",GRP_MBR_ROLE_CUSTOM:"Custom"}),{GRP_TIP_MBR_JOIN:1,GRP_TIP_MBR_QUIT:2,GRP_TIP_MBR_KICKED_OUT:3,GRP_TIP_MBR_SET_ADMIN:4,GRP_TIP_MBR_CANCELED_ADMIN:5,GRP_TIP_GRP_PROFILE_UPDATED:6,GRP_TIP_MBR_PROFILE_UPDATED:7,GRP_TIP_BAN_AVCHATROOM_MEMBER:10,GRP_TIP_UNBAN_AVCHATROOM_MEMBER:11}),{JOIN_OPTIONS_FREE_ACCESS:"FreeAccess",JOIN_OPTIONS_NEED_PERMISSION:"NeedPermission",JOIN_OPTIONS_DISABLE_APPLY:"DisableApply",JOIN_STATUS_SUCCESS:"JoinedSuccess",JOIN_STATUS_ALREADY_IN_GROUP:"AlreadyInGroup",JOIN_STATUS_WAIT_APPROVAL:"WaitAdminApproval"}),{INVITE_OPTIONS_DISABLE_INVITE:"DisableInvite",INVITE_OPTIONS_NEED_PERMISSION:"NeedPermission",INVITE_OPTIONS_FREE_ACCESS:"FreeAccess"}),{GRP_PROFILE_OWNER_ID:"ownerID",GRP_PROFILE_CREATE_TIME:"createTime",GRP_PROFILE_LAST_INFO_TIME:"lastInfoTime",GRP_PROFILE_MEMBER_NUM:"memberNum",GRP_PROFILE_MAX_MEMBER_NUM:"maxMemberNum",GRP_PROFILE_JOIN_OPTION:"joinOption",GRP_PROFILE_INVITE_OPTION:"inviteOption",GRP_PROFILE_INTRODUCTION:"introduction",GRP_PROFILE_NOTIFICATION:"notification",GRP_PROFILE_MUTE_ALL_MBRS:"muteAllMembers"}),{GROUP_ID_PREFIX:ka,GROUP_TIPS_OPERATION_TYPE:oa}),sI={IOS_OFFLINE_PUSH_NO_SOUND:"push.no_sound",IOS_OFFLINE_PUSH_DEFAULT_SOUND:"default"},hs=Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},Hc),qc),CE),ba),Dc),Tg),sI),{NET_STATE_CONNECTING:"connecting",NET_STATE_DISCONNECTED:"disconnected",NET_STATE_CONNECTED:"connected"}),ko={NO_SDKAPPID:2e3,NO_TINYID:2022,NO_A2KEY:2023,USER_NOT_LOGGED_IN:2024,REPEAT_LOGIN:2025,MSG_SEND_FAIL:2100,MSG_SEND_FAIL_NOT_IN_AV:2101,MSG_SEND_GRP_WITH_TOPIC_FAIL:2115,MSG_INSTANCE_REQUIRED:2105,MSG_INVALID_CONV_TYPE:2106,MSG_REVOKE_FAIL:2110,MSG_DELETE_FAIL:2111,MSG_UNREAD_ALL_FAIL:2112,READ_RECEIPT_MSG_LIST_EMPTY:2114,CANNOT_DELETE_GRP_SYSTEM_NOTICE:2116,NOT_MY_FRIEND:2700,NETWORK_ERROR:2800,NETWORK_TIMEOUT:2801,NO_NETWORK:2805,UNCAUGHT_ERROR:2903,INVALID_OPERATION:2905,SDK_IS_NOT_READY:2999,LOGGING_IN:3e3,LOGIN_FAILED:3001,KICKED_OUT_MULT_DEVICE:3002,KICKED_OUT_MULT_ACCOUNT:3003,KICKED_OUT_USERSIG_EXPIRED:3004,LOGGED_OUT:3005,KICKED_OUT_REST_API:3006,NO_USE:3122,OPTIONS_IS_EMPTY:3153,MSG_A2KEY_EXPIRED:20002,ACCOUNT_A2KEY_EXPIRED:70001,HELLO_ANSWER_KICKED_OUT:1002,OPEN_SERVICE_OVERLOAD_ERROR:60022},ua={BASIC:"1",STANDARD:"2",PROFESSIONAL:"3",NODE:"4"},sr={SYNC_SERVER_INFO_AFTER_RE_ONLINE:"sync-server-info-after-re-online",SYNC_SERVER_INFO_AFTER_LOGIN:"sync-server-info-after-login",RECEIVE_C2C_NEW_MESSAGE:"receive-c2c-new-message",RECEIVE_GROUP_NEW_MESSAGE:"receive-group-new-message",RECEIVE_GROUP_TIPS_NOTIFICATION:"receive-group-tips-notification"},Pt={USER_STATUS_UPDATE:"user-status-update",CONVERSATION_RECOVER:"conversation-recover",HISTORY_MESSAGE_RECOVER:"history-message-recover",BLACKLIST_RECOVER:"blacklist-recover",FRIEND_RECOVER:"friend-recover",GROUP_ATTRIBUTE_CACHE_CLEAR:"group-attribute-cache-clear",UNREAD_MESSAGE_RECOVER:"unread-message-recover",HANDLE_NEW_MESSAGE:"handle-new-message",HANDLE_CONVERSATION_PROFILE_UPDATED:"handle-conversation-profile-updated",COMMERCIAL_CONFIG_UPDATE:"commercial-config-update",UNREAD_MESSAGE_SYNC:"unread-message-sync",FRIEND_AND_BLACKLIST_SYNC:"friend-and-blacklist-sync",SIGNALING_MESSAGE_RECOVER:"signaling-message-recover",GROUP_LIST_SYNC:"group-list-sync",CONVERSATION_LIST_SYNC:"conversation-list-sync",USER_PROFILE_SYNC:"user-profile-sync",CONVERSATION_UPDATE_AFTER_UNREAD_SYNC_FINISHED:"conversation-update-after-unread-sync-finished",CONVERSATION_UPDATE_AFTER_GROUP_LIST_SYNC_FINISHED:"conversation-update-after-group-list-sync-finished",HANDLE_C2C_NEW_MESSAGE:"handle-c2c-new-message",HANDLE_GROUP_NEW_MESSAGE:"handle-group-new-message",CREATE_OR_UPDATE_CONVERSATION_BY_RECEIVE_NEW_MESSAGE:"create-or-update-conversation-by-receive-new-message",HANDLE_GROUP_TIPS_FROM_SYNC_UNREAD:"handle-group-tips-from-sync-unread",HANDLE_C2C_REVOKED_MESSAGE_FROM_SYNC_UNREAD:"handle-c2c-revoked-message-from-sync-unread",GROUP_REVOKED_NOTICE_RECOVER:"group-revoked-notice-recover",CLOUD_CONFIG_SYNC:"cloud-config-sync",UPDATE_GROUP_NEXT_SEQUENCE:"update-group-next-sequence",EMIT_C2C_MESSAGE_EVENT:"emit-c2c-message-event",EMIT_GROUP_MESSAGE_EVENT:"emit-group-message-event",CONVERSATION_GROUP_LIST_SYNC:"conversation-group-list-sync",CONVERSATION_GROUP_UPDATE:"conversation-group-update",UPDATE_TOPIC_AFTER_UNREAD_SYNC_FINISHED:"update-topic-after-unread-sync-finished",UPDATE_TOPIC_BY_RECEIVE_NEW_MESSAGE:"update-topic-by-received-new-message",TOPIC_REQUEST_INFO_RESET:"topic-request-info-reset",QUALITY_REPORT:"quality-report",GROUP_TIPS_RECOVER:"group-tips-recover",HANDLE_GROUP_TIPS_NOTIFICATION:"handle-group-tips-notification",C2C_HISTORY_MESSAGE_RECOVER:"c2c-history-message-recover",FRIEND_APPLICATION_LIST_RECOVER:"friend-application-list-recover",EMIT_GROUP_TIPS_EVENT:"emit-group-tips-event",STREAM_MESSAGE_RECOVER:"stream-message-recover"},Ht={[sr.SYNC_SERVER_INFO_AFTER_RE_ONLINE]:[{stepId:Pt.USER_STATUS_UPDATE},{stepId:Pt.GROUP_ATTRIBUTE_CACHE_CLEAR},{stepId:Pt.UNREAD_MESSAGE_SYNC,dependency:Pt.C2C_HISTORY_MESSAGE_RECOVER},{stepId:Pt.CONVERSATION_RECOVER},{stepId:Pt.HISTORY_MESSAGE_RECOVER,dependency:Pt.CONVERSATION_RECOVER},{stepId:Pt.BLACKLIST_RECOVER},{stepId:Pt.FRIEND_RECOVER},{stepId:Pt.FRIEND_APPLICATION_LIST_RECOVER},{stepId:Pt.GROUP_REVOKED_NOTICE_RECOVER,dependency:Pt.HISTORY_MESSAGE_RECOVER},{stepId:Pt.GROUP_TIPS_RECOVER,dependency:Pt.HISTORY_MESSAGE_RECOVER},{stepId:Pt.TOPIC_REQUEST_INFO_RESET},{stepId:Pt.HANDLE_C2C_REVOKED_MESSAGE_FROM_SYNC_UNREAD,dependency:Pt.UNREAD_MESSAGE_SYNC},{stepId:Pt.HANDLE_GROUP_TIPS_FROM_SYNC_UNREAD,dependency:Pt.UNREAD_MESSAGE_SYNC},{stepId:Pt.CONVERSATION_UPDATE_AFTER_UNREAD_SYNC_FINISHED,dependency:[Pt.UNREAD_MESSAGE_SYNC,Pt.CONVERSATION_RECOVER]},{stepId:Pt.EMIT_C2C_MESSAGE_EVENT,dependency:[Pt.UNREAD_MESSAGE_SYNC,Pt.CONVERSATION_UPDATE_AFTER_UNREAD_SYNC_FINISHED],skipIfDependencyMissing:!1},{stepId:Pt.C2C_HISTORY_MESSAGE_RECOVER,dependency:Pt.CONVERSATION_RECOVER},{stepId:Pt.STREAM_MESSAGE_RECOVER}],[sr.SYNC_SERVER_INFO_AFTER_LOGIN]:[{stepId:Pt.COMMERCIAL_CONFIG_UPDATE},{stepId:Pt.CLOUD_CONFIG_SYNC},{stepId:Pt.USER_PROFILE_SYNC},{stepId:Pt.UNREAD_MESSAGE_SYNC},{stepId:Pt.FRIEND_AND_BLACKLIST_SYNC},{stepId:Pt.GROUP_LIST_SYNC},{stepId:Pt.CONVERSATION_LIST_SYNC},{stepId:Pt.SIGNALING_MESSAGE_RECOVER,dependency:Pt.UNREAD_MESSAGE_SYNC},{stepId:Pt.UPDATE_TOPIC_AFTER_UNREAD_SYNC_FINISHED,dependency:[Pt.UNREAD_MESSAGE_SYNC]},{stepId:Pt.CONVERSATION_UPDATE_AFTER_UNREAD_SYNC_FINISHED,dependency:[Pt.UNREAD_MESSAGE_SYNC,Pt.CONVERSATION_LIST_SYNC]},{stepId:Pt.CONVERSATION_UPDATE_AFTER_GROUP_LIST_SYNC_FINISHED,dependency:[Pt.GROUP_LIST_SYNC,Pt.CONVERSATION_LIST_SYNC]},{stepId:Pt.CONVERSATION_GROUP_LIST_SYNC},{stepId:Pt.CONVERSATION_GROUP_UPDATE,dependency:[Pt.CONVERSATION_LIST_SYNC,Pt.CONVERSATION_GROUP_LIST_SYNC]},{stepId:Pt.QUALITY_REPORT}],[sr.RECEIVE_C2C_NEW_MESSAGE]:[{stepId:Pt.HANDLE_C2C_NEW_MESSAGE},{stepId:Pt.UNREAD_MESSAGE_SYNC},{stepId:Pt.CREATE_OR_UPDATE_CONVERSATION_BY_RECEIVE_NEW_MESSAGE,dependency:Pt.HANDLE_C2C_NEW_MESSAGE},{stepId:Pt.EMIT_C2C_MESSAGE_EVENT,dependency:[Pt.HANDLE_C2C_NEW_MESSAGE,Pt.CREATE_OR_UPDATE_CONVERSATION_BY_RECEIVE_NEW_MESSAGE],skipIfDependencyMissing:!1},{stepId:Pt.CONVERSATION_UPDATE_AFTER_UNREAD_SYNC_FINISHED,dependency:[Pt.UNREAD_MESSAGE_SYNC]}],[sr.RECEIVE_GROUP_NEW_MESSAGE]:[{stepId:Pt.HANDLE_GROUP_NEW_MESSAGE},{stepId:Pt.CREATE_OR_UPDATE_CONVERSATION_BY_RECEIVE_NEW_MESSAGE,dependency:Pt.HANDLE_GROUP_NEW_MESSAGE},{stepId:Pt.UPDATE_GROUP_NEXT_SEQUENCE,dependency:Pt.HANDLE_GROUP_NEW_MESSAGE},{stepId:Pt.UPDATE_TOPIC_BY_RECEIVE_NEW_MESSAGE,dependency:Pt.HANDLE_GROUP_NEW_MESSAGE},{stepId:Pt.EMIT_GROUP_MESSAGE_EVENT,dependency:[Pt.HANDLE_GROUP_NEW_MESSAGE,Pt.CREATE_OR_UPDATE_CONVERSATION_BY_RECEIVE_NEW_MESSAGE],skipIfDependencyMissing:!1}],[sr.RECEIVE_GROUP_TIPS_NOTIFICATION]:[{stepId:Pt.HANDLE_GROUP_TIPS_NOTIFICATION},{stepId:Pt.CREATE_OR_UPDATE_CONVERSATION_BY_RECEIVE_NEW_MESSAGE,dependency:Pt.HANDLE_GROUP_TIPS_NOTIFICATION},{stepId:Pt.EMIT_GROUP_TIPS_EVENT,dependency:[Pt.CREATE_OR_UPDATE_CONVERSATION_BY_RECEIVE_NEW_MESSAGE,Pt.HANDLE_GROUP_TIPS_NOTIFICATION],skipIfDependencyMissing:!1}]},Ng={MESSAGE_SEND_SUCCESS_RATE:"messageSendSuccessRate"},nI={TOTAL_COUNT:"sendMessageTotalCount",SUCCESS_COUNT:"sendMessageSuccessCount",FAILED_COUNT:"sendMessageFailedCount",SEND_COST:"sendMessageCost"},nr=["login","getMyProfile","getUserProfile","updateMyProfile","setSelfStatus","getUserStatus","subscribeUserStatus","unsubscribeUserStatus","modifyMessage","deleteGroupMember","dismissGroup","getGroupMemberList","getGroupOnlineMemberCount","joinGroup","markGroupMemberList","quitGroup","searchCloudMessages","searchCloudGroups","searchCloudGroupMembers","searchCloudUsers","getMyFollowingList","getMyFollowersList","getMutualFollowersList","followUser","unfollowUser","getUserFollowInfo","checkFollowType","getFriendProfile","addFriend","deleteFriend","updateFriend","checkFriend","setFriendApplicationRead","createFriendGroup","deleteFriendGroup","addToFriendGroup","removeFromFriendGroup","renameFriendGroup","changeGroupOwner","createGroup","dismissGroup","getGroupList","getGroupOnlineMemberCount","getGroupProfile","searchGroupByID","updateGroupProfile","handleGroupApplication","deleteGroupAttributes","getGroupAttributes","initGroupAttributes","setGroupAttributes","addGroupMember","deleteGroupMember","getGroupMemberList","getGroupMemberProfile","setGroupMemberMuteTime","setGroupMemberNameCard","setGroupMemberRole","deleteMessage","revokeMessage","setMessageExtensions","getMessageExtensions","deleteMessageExtensions","getMessageList","addMessageReaction","removeMessageReaction","clearHistoryMessage","sendMessageReadReceipt","getMessageReadReceiptList","getGroupMessageReadMemberList","createMergerMessage","invite","accept","cancel","reject","modifyInvitation","deleteConversation","pinConversation","setMessageRead","setAllMessageRead","getConversationList","getTotalUnreadMessageCount","renameConversationGroup","deleteConversationGroup","markConversation","setConversationCustomData","deleteConversationsFromGroup","addConversationsToGroup","createConversationGroup"];var PI=Object.freeze({__proto__:null,ERROR_CODE:ko,InnerEvent:Ii,NEED_LOG_API:nr,OuterConstant:hs,OuterEvent:Dn,PUSH:sI,QUALITY_METRICS:Ng,SDK_EDITION:ua,SDK_INFO:{VERSION:"1.7.3",APPID:537048168},SEND_MESSAGE_STAT:nI,SignalingEvent:so,WEB_PUSH_ACCOUNT_TYPE:1,WORKFLOW_DEFINITIONS:Ht,WORKFLOW_NAME:sr,WORKFLOW_STEP:Pt}),Wa,sa,un;(function(p){p[p.USER_INITIATED=0]="USER_INITIATED",p[p.KICKED_OUT=1]="KICKED_OUT"})(Wa||(Wa={})),function(p){p[p.multipleAccount=1]="multipleAccount",p[p.multipleDevice=2]="multipleDevice",p[p.restApi=3]="restApi"}(sa||(sa={})),function(p){p[p.multipleDevice=3002]="multipleDevice",p[p.multipleAccount=3003]="multipleAccount",p[p.usersigExpired=70001]="usersigExpired",p[p.restApi=20002]="restApi"}(un||(un={}));const Sn={[sa.multipleAccount]:"multipleAccount",[sa.multipleDevice]:"multipleDevice",[sa.restApi]:"REST_API_Kick",[un.multipleAccount]:"multipleAccount",[un.multipleDevice]:"multipleDevice",[un.restApi]:"REST_API_Kick",[un.usersigExpired]:"userSigExpired"},Du="login_online_presence_task",{ERROR:Gg,DESTROY:La,FORCE_OFFLINE:Kc}=Ii,{KICKED_OUT_MULT_ACCOUNT:xI,KICKED_OUT_MULT_DEVICE:BE,KICKED_OUT_REST_API:rI,ACCOUNT_A2KEY_EXPIRED:Su,MSG_A2KEY_EXPIRED:Ml}=ko;class Sc{init(){const{notificationCenter:h}=fe;h.subscribeInnerEvent(Kc,this._handleForceOfflineFromServerPush,this),h.subscribeInnerEvent(Gg,Ml,this._handleForceOfflineFromResponse,this,this._isChatLoginEvent),h.subscribeInnerEvent(Gg,Su,this._handleForceOfflineFromResponse,this,this._isChatLoginEvent),h.subscribeInnerEvent(Gg,xI,this._handleForceOfflineFromResponse,this),h.subscribeInnerEvent(Gg,BE,this._handleForceOfflineFromResponse,this),h.subscribeInnerEvent(Gg,rI,this._handleForceOfflineFromResponse,this),h.subscribeInnerEvent(La,this._dispose,this)}_handleForceOfflineFromServerPush(h){var v;if(((v=fe.store.get("login"))===null||v===void 0?void 0:v.isLoggedIn)===!0){const{EventArray:N=[]}=h?.body||{};this._extractKickedOutMessages(N).forEach(O=>{const{KickoutMsgNotify:{KickType:z,NewInstInfo:X,Instid:nA}}=O;this._isCurrentInstanceKickedOut(nA)&&this._processKickedOutReasonInfo({kickedOutReasonCode:z,newInstanceInfo:X})})}}_extractKickedOutMessages(h){return h.reduce((v,N)=>[...v,...N.C2cNotifyMsgArray||[]],[]).filter(v=>{var N;return this._isKickedOut((N=v?.KickoutMsgNotify)===null||N===void 0?void 0:N.KickType)})}_handleForceOfflineFromResponse(h){const{errorCode:v}=h;this._processKickedOutReasonInfo({kickedOutReasonCode:v})}_processKickedOutReasonInfo(h){return mA(this,void 0,void 0,function*(){const{kickedOutReasonCode:v}=h,{ssoLog:N,utils:{safeStringify:O}}=fe;try{this._logKickedOutEvent(h),this._shouldLogoutAfterKickedOut(v)?yield fe.login.loginAction.logout(Wa.KICKED_OUT):fe.login.loginAction.handleLogoutCompleted()}catch(z){N.debug("_processKickedOutReasonInfo",` fail ${O(z)}`)}finally{fe.notificationCenter.emitOuterEvent(Dn.KICKED_OUT,{data:{type:Sn[v]},name:Dn.KICKED_OUT})}})}_logKickedOutEvent(h){const{kickedOutReasonCode:v,newInstanceInfo:N={}}=h,O=`type:${Sn[v]} newInstanceInfo: ${JSON.stringify(N)}`;fe.ssoLog.warn("kickedOut",O)}_isKickedOut(h){return[sa.multipleAccount,sa.multipleDevice,sa.restApi].includes(h)}_isChatLoginEvent(h){const{requestHead:v}=h||{};return v?.idtype!==1}_shouldLogoutAfterKickedOut(h){return![un.usersigExpired,sa.restApi].includes(h)}_isCurrentInstanceKickedOut(h){const{isLoggedIn:v,statusInstanceId:N}=fe.store.get("login")||{};return v===!0&&h===N}_dispose(){const{notificationCenter:h}=fe;h.unSubscribeInnerEvent(Kc,this._handleForceOfflineFromServerPush,this),h.unSubscribeInnerEvent(Gg,Su,this._handleForceOfflineFromResponse,this),h.unSubscribeInnerEvent(Gg,Ml,this._handleForceOfflineFromResponse,this),h.unSubscribeInnerEvent(Gg,xI,this._handleForceOfflineFromResponse,this),h.unSubscribeInnerEvent(Gg,BE,this._handleForceOfflineFromResponse,this),h.unSubscribeInnerEvent(Gg,rI,this._handleForceOfflineFromResponse,this),h.unSubscribeInnerEvent(La,this._dispose,this)}}function Mu(p){return mA(this,void 0,void 0,function*(){const h="im_open_status.wslogin",v=fe.common.generateProtocolData({servcmd:h,data:{State:"Online",is_web_uniapp:0,InstType:0,CustomInfo:p}}),N=`${v.head.seq}${h}`,O=yield fe.channel.sendPacket(v,{timeout:9e4,requestId:N});if(O){const{HelloInterval:z,InstId:X,TinyId:nA,TimeStamp:DA,CustomStatus:GA,PurchaseBits:VA,A2Key:ie,RichMsgAuthKey:Ee,ErrorCode:He,ErrorInfo:At,ActionStatus:st}=O;return{helloInterval:z,instanceID:X,tinyID:nA,timeStamp:DA,customStatus:GA,purchaseBits:VA,a2Key:ie,authKey:Ee,errorCode:He,errorInfo:At,actionStatus:st}}})}function vu(){const{store:p}=fe;return la(p.get("instance").sdkAppId)!==ct.CHINA}function vl(p){var h;try{const v=Zi.getStorage("errorMessage");if(!p||!v)return"";const N=((h=JSON.parse(v))===null||h===void 0?void 0:h.errorMessage)||{},{code:O,replacement1:z="",replacement2:X=""}=p;if(!O)return"";const nA=vu()?`${O}_en`:`${O}_cn`;let DA=N[N[nA]?nA:O]||"";return DA&&(z&&(DA=DA.replace("$replacement1",z)),X&&(DA=DA.replace("$replacement2",X))),DA}catch(v){return console.warn("Error parsing stored error messages:",v),""}}class rs extends Error{constructor(h={}){h.code=h.code||h.errorCode;let{functionName:v="Unknown",code:N,message:O="",data:z="",moreMessage:X="",errorMessage:nA=""}=h;nA=(N?vl(h):"")||nA||O;let DA=N?`${v} failed. error: {"message": ${nA}, "code": ${N}}`:`${v} failed. error: {"message": ${nA}}`;DA=`${DA} ${X}`,super(),this.code=N,this.errorCode=N,this.errorMessage=nA,this.message=DA,this.data=z}}function gs(p,h){var v;if(p&&((v=fe.store.get("login"))===null||v===void 0?void 0:v.isLoggedIn)!==!0)throw new rs({code:ko.USER_NOT_LOGGED_IN,functionName:h})}function rd(p,h,v){if(Array.isArray(p))for(let N=0;N{return GA===(VA=N,Object.prototype.toString.call(VA).match(/^\[object (.*)\]$/)[1].toLowerCase());var VA})){for(let VA=0;VA{const{interceptor:O,context:z}=N;O.apply(z,[v])})}(p)}function Dr(p,h){gI.push({interceptor:p,context:h})}function Mc(p){const{params:h,auth:v}=p;h&&typeof h=="object"&&Object.assign(ad,h),v&&typeof v=="object"&&Object.assign(QE,v)}function jc(p){return fe.store.get("commercialConfig").get(p)}class tn{constructor(){this._handlers=new Map,this._activeWorkflows=new Map,this._stepStartTimes=new Map,this._logHandlers={start:(h,v)=>{const N=Date.now();v?(this._stepStartTimes.set(`${h}-${v}`,N),fe.ssoLog.debug("_executeWorkflowStep",`[Workflow ${h}] Step ${v} started at ${new Date(N).toISOString()}`)):(this._workflowStartTimes.set(h,N),fe.ssoLog.debug("_executeWorkflowStep",`[Workflow ${h}] started at ${new Date(N).toISOString()}`))},success:(h,v)=>{const N=Date.now();if(v){const O=this._stepStartTimes.get(`${h}-${v}`),z=O?N-O:0;this._stepStartTimes.delete(`${h}-${v}`),fe.ssoLog.debug("_executeWorkflowStep",`[Workflow ${h}] Step ${v} completed successfully at ${new Date(N).toISOString()} (${z}ms)`)}else{const O=this._workflowStartTimes.get(h),z=O?N-O:0;this._workflowStartTimes.delete(h),fe.ssoLog.debug("_executeWorkflowStep",`[Workflow ${h}] completed successfully at ${new Date(N).toISOString()} (${z}ms)`)}},error:(h,v,N)=>{const{ssoLog:O,utils:{safeStringify:z}}=fe,X=Date.now();if(v){const nA=this._stepStartTimes.get(`${h}-${v}`),DA=nA?X-nA:0;this._stepStartTimes.delete(`${h}-${v}`),O.error("_executeWorkflowStep",`[Workflow ${h}] Step ${v} failed at ${new Date(X).toISOString()} (${DA}ms) ${z(N)}`,{error:N})}else{const nA=this._workflowStartTimes.get(h),DA=nA?X-nA:0;this._workflowStartTimes.delete(h),O.error("_executeWorkflowStep",`[Workflow ${h}] failed at ${new Date(X).toISOString()} (${DA}ms) ${z(N)}`,{error:N})}}}}static getInstance(){return tn._instance||(tn._instance=new tn),tn._instance}static setInstance(h){tn._instance=h}init(){this._initializeWorkflows()}registerWorkflowStep(h,v,N,O){if(!this._handlers.has(h))return void fe.ssoLog.debug("registerWorkflowStep",`Workflow '${h}' not defined in core`);if(!Ht[h].find(X=>X.stepId===v))return void fe.ssoLog.debug("registerWorkflowStep",`Step '${v}' not defined in workflow '${h}'`);const z=this._handlers.get(h);z.has(v)||z.set(v,O?N.bind(O):N)}executeWorkflow(h,v){return mA(this,void 0,void 0,function*(){if(!this._validateWorkflow(h))return;fe.ssoLog.debug("executeWorkflow",`[Workflow ${h}] Started execution at ${new Date().toISOString()}`);const N=Ht[h],O={},z={cancelled:!1};this._activeWorkflows.set(h,{cancelToken:z});try{const X=new Map;N.forEach(DA=>{X.set(DA.stepId,DA)});const nA={workflowName:h,pendingSteps:new Set(N.map(DA=>DA.stepId)),completedSteps:new Set,runningSteps:new Set,stepMap:X,stepResults:O,data:v,cancelToken:z};yield new Promise((DA,GA)=>{const VA=()=>{if(z.cancelled)return void DA();this._getExecutableSteps({pendingSteps:nA.pendingSteps,completedSteps:nA.completedSteps,stepMap:nA.stepMap,workflowName:h}).filter(ie=>!nA.runningSteps.has(ie)).forEach(ie=>{nA.completedSteps.has(ie)||nA.runningSteps.has(ie)||this._executeWorkflowStep(ie,nA,{onComplete:()=>{if(nA.pendingSteps.size===0)return void DA();this._getExecutableSteps({pendingSteps:nA.pendingSteps,completedSteps:nA.completedSteps,stepMap:nA.stepMap,workflowName:h}).filter(Ee=>!nA.runningSteps.has(Ee)).length===0&&nA.runningSteps.size===0&&(fe.ssoLog.debug("executeWorkflow",`Workflow ${h} completed with some steps skipped due to dependency failures`),DA())},onError:GA,onStepComplete:VA})})};VA()}),fe.ssoLog.debug("executeWorkflow",`[Workflow ${h}] Completed execution at ${new Date().toISOString()}`)}catch(X){fe.ssoLog.error("executeWorkflow",`[Workflow ${h}] Failed execution at ${new Date().toISOString()}`,{error:X})}finally{this._activeWorkflows.delete(h)}})}_executeWorkflowStep(h,v,N){return mA(this,void 0,void 0,function*(){const{workflowName:O,runningSteps:z,stepMap:X,stepResults:nA,data:DA}=v;z.add(h),this._logWorkflowExecution(O,h,"start");try{const GA=X.get(h);let VA=null;GA?.dependency&&(l(GA.dependency)?VA=nA[GA.dependency]:Array.isArray(GA.dependency)&&(VA={},GA.dependency.forEach(Ee=>{VA[Ee]=nA[Ee]})));const ie=this._handlers.get(O).get(h);if(ie){const Ee=yield Promise.resolve(ie({data:DA,result:VA}));nA[h]=Ee,this._logWorkflowExecution(O,h,"success")}v.completedSteps.add(h)}catch(GA){const VA=`[Workflow].${O}.${h}`,{errorCode:ie,errorInfo:Ee=`${VA} failed`}=GA||{},He=new rs({functionName:VA,code:ie,message:Ee});fe.ssoLog.error(VA,Ee,{error:He}),this._logWorkflowExecution(O,h,"error",GA),N.onError(GA)}finally{z.delete(h),v.pendingSteps.delete(h),N.onStepComplete(),N.onComplete()}})}reset(){this._cancelAllWorkflows()}destroy(){this.reset(),this._handlers.clear()}_initializeWorkflows(){Object.keys(Ht).forEach(h=>{this._handlers.has(h)||this._handlers.set(h,new Map)})}_cancelWorkFlow(h){const v=this._activeWorkflows.get(h);if(!v)return;const{cancelToken:N}=v;N.cancelled=!0,this._activeWorkflows.delete(h)}_cancelAllWorkflows(){Object.keys(Ht).forEach(h=>{this._cancelWorkFlow(h)})}_validateWorkflow(h){return Ht[h]?!!this._handlers.get(h):!1}_getExecutableSteps(h){const{pendingSteps:v,completedSteps:N,stepMap:O,workflowName:z}=h;return Array.from(v).filter(X=>{const nA=O.get(X)||{},{dependency:DA,skipIfDependencyMissing:GA=!0}=nA;if(!DA)return!0;if(l(DA))return this._isStepRegistered({workflowName:z,stepId:DA})?N.has(DA):!GA;if(B(DA)){if(DA.filter(VA=>!this._isStepRegistered({workflowName:z,stepId:VA})).length>0&&GA)return!1;for(const VA of DA)if(!N.has(VA))return!1;return!0}return!1})}_isStepRegistered(h){var v;const{workflowName:N,stepId:O}=h;return(v=this._handlers.get(N))===null||v===void 0?void 0:v.has(O)}_logWorkflowExecution(h,v,N,O){this._logHandlers[N](h,v)}}const ws=new Map,Ea=({type:p,groupID:h})=>p===hs.GRP_COMMUNITY||`${h}`.startsWith(ka.COMMUNITY)&&!`${h}`.includes(ka.TOPIC),zr=(p="")=>{const h=p.startsWith("GROUP")?p.replace("GROUP",""):p;return h.startsWith(ka.COMMUNITY)&&`${h}`.includes(ka.TOPIC)},Wc="openim",gd="million_group_open_http_svc";function Zg(p){return mA(this,void 0,void 0,function*(){const{servcmd:h,data:v}=function(z){const{data:X}=z;return gg(X)||pE(X)}(p)?function(z){let{servcmd:X,data:nA}=z;return pE(nA)?function(DA){const{servcmd:GA,data:VA}=DA;let{GroupId:ie=""}=VA;const Ee=ie;return[ie]=Ee.split(ka.TOPIC),{servcmd:Xg(GA),data:Object.assign(Object.assign({},VA),{GroupId:ie,TopicId:Ee})}}(z):(gg(nA)&&(X=Xg(X)),{servcmd:X,data:nA})}(p):p,N=fe.common.generateProtocolData({servcmd:h,data:v}),O=`${N.head.seq}${h}`;return fe.channel.sendPacket(N,{requestId:O,timeout:p.timeout})})}function gg(p){const{Type:h,GroupId:v,GroupIdList:N=[]}=p,O=v||N[0]||"";return Ea({type:h,groupID:O})}function pE(p){const{GroupId:h=""}=p;return zr(h)}function Xg(p){if(p.includes(Wc))return p;const h=p.split(".")[1];return`${gd}.${h}`}function qn(){var p;return(p=fe.store.get("login"))===null||p===void 0?void 0:p.userId}const Ar=p=>B(p)||f(p),Ua=(p,h,v,N)=>{if(!Ar(p)||!Ar(h))return 0;let O=0;const z=Object.keys(h);let X;for(let nA=0,DA=z.length;nA{if(r(h))return"";if(p===hs.MSG_TEXT)return h.text||"";const v=Ru[p];return v?sC(v):""},zc=[{cmd:"ws_get_user_status",interval:5,count:20},{cmd:"ws_status_subscribe",interval:5,count:20},{cmd:"ws_status_unsubscribe",interval:5,count:20},{cmd:"get_group_self_member_info",interval:5,count:20},{cmd:"modify_group_base_info",interval:1,count:8},{cmd:"get_pendency",interval:1,count:15},{cmd:"set_group_attr",interval:5,count:10},{cmd:"modify_group_attr",interval:5,count:10},{cmd:"delete_group_attr",interval:5,count:10},{cmd:"clear_group_attr",interval:5,count:10},{cmd:"get_group_attr",interval:5,count:20},{cmd:"update_group_counter",interval:5,count:20},{cmd:"get_group_counter",interval:5,count:20},{cmd:"get_topic",interval:1,count:10},{cmd:"read_all_unread_msg",interval:1,count:1},{cmd:"query",interval:5,count:20}],Zc="im_sdk_config_mgr.fetch_config",VI="im_sdk_config_mgr.push_configv2",cI="cloud-config",Xc=2996,$c=new class{init(p){this.core=p}};function Ma(p){return mA(this,void 0,void 0,function*(){const{sdkAppId:h}=$c.core.store.get("instance")||{},v=$c.core.helper.generateProtocolData({servcmd:Zc,data:{uint32_sdkappid:h,uint64_version:p}}),N=`${v.head.seq}${Zc}`;return $c.core.channel.sendPacket(v,{requestId:N})})}var bg=new class{constructor(){this._core=null,this._expirationTime=0,this._version=0,this._isFetching=!1,this._cmdFrequencyLimitMap=new Map,this._methodCallFrequencyMap=new Map}install(p){this._core=p;const{notificationCenter:h,InnerEvent:v,helper:N,constants:{WORKFLOW_NAME:O,WORKFLOW_STEP:z},channel:X}=p;h.subscribeInnerEvent(VI,this._handlePushedConfig,this),N.registerWorkflowStep(O.SYNC_SERVER_INFO_AFTER_LOGIN,z.CLOUD_CONFIG_SYNC,this._handleLoginSuccess,this),h.subscribeInnerEvent(v.LOGOUT,this._reset,this),h.subscribeInnerEvent(v.DESTROY,this._dispose,this),N.registerExperimentalAPI("getServerConfig",this),this._updateCmdFreqLimitMap(zc),X.registerBeforeSendInterceptor(this.checkMethodCallOverLimit,this)}getServerConfig(p){return mA(this,void 0,void 0,function*(){var h;const v={code:0,data:""};return p&&(v.data=((h=this._core.store.get("cloudConfig"))===null||h===void 0?void 0:h[p])||""),v})}checkMethodCallOverLimit(p){if(!this._cmdFrequencyLimitMap.has(p))return;if(!this._methodCallFrequencyMap.has(p))return void this._methodCallFrequencyMap.set(p,{startTime:Date.now(),methodCallCounter:1});const{count:h,interval:v}=this._cmdFrequencyLimitMap.get(p);let{startTime:N,methodCallCounter:O}=this._methodCallFrequencyMap.get(p);if(Date.now()-N>1e3*v)this._methodCallFrequencyMap.set(p,{startTime:Date.now(),methodCallCounter:1});else if(O+=1,this._methodCallFrequencyMap.set(p,{startTime:N,methodCallCounter:O}),O>h)throw new this._core.helper.ChatError({code:Xc,replacement1:p})}_handlePushedConfig(p){return mA(this,void 0,void 0,function*(){const{ssoLog:h,utils:{safeStringify:v}}=this._core;h.info("_handlePushedConfig",v(p)),yield this._updateCloudConfig(p)})}_handleLoginSuccess(){return mA(this,void 0,void 0,function*(){const{ssoLog:p,utils:{safeStringify:h}}=this._core;try{if(this._canFetch()){const v=yield Ma(this._version);p.info("_fetchCloudConfigIfLogin",h(v)),yield this._updateCloudConfig(v)}this._core.helper.taskScheduler.addTask({id:cI,intervalMs:1e3,callback:this._fetchCloudConfigIfReady,context:this})}catch(v){p.debug("_fetchCloudConfigIfLogin",h(v))}})}_fetchCloudConfigIfReady(){return mA(this,void 0,void 0,function*(){const{ssoLog:p,utils:{safeStringify:h}}=this._core;if(this._canFetch())try{const v=yield Ma(this._version);p.info("_fetchCloudConfigIfReady",h(v)),yield this._updateCloudConfig(v)}catch(v){p.error("_fetchCloudConfigIfReady",h(v))}})}_updateCloudConfig(p){return mA(this,void 0,void 0,function*(){const h=this._parseCloudConfig(p);h&&(this._core.store.set("cloudConfig",h),yield this._parseCmdFreqLimit(),this._core.notificationCenter.emitInnerEvent(this._core.InnerEvent.CLOUD_CONFIG_UPDATE,h),this._core.notificationCenter.emitOuterEvent(this._core.OuterEvent.SERVER_CONFIG_UPDATED,{name:this._core.OuterEvent.SERVER_CONFIG_UPDATED,data:{config:h}}))})}_canFetch(){const{isLoggedIn:p}=this._core.store.get("login")||{};return p&&!this._isFetching&&Date.now()>=this._expirationTime}_parseCloudConfig(p){const{int32_error_code:h,str_error_message:v,str_json_config:N,uint32_expired_time:O,uint32_sdkappid:z,uint64_version:X}=p;let nA=null;if(h===0){if(this._version!==X)try{nA=JSON.parse(N),this._version=X}catch{}this._expirationTime=Date.now()+1e3*O}else this._expirationTime=h===void 0?Date.now()+36e5:Date.now()+12e4;return nA}_parseCmdFreqLimit(){return mA(this,void 0,void 0,function*(){var p;let h=(p=yield this.getServerConfig("cmd_frequency_limit"))===null||p===void 0?void 0:p.data;const{isEmpty:v}=this._core.utils;if(!v(h))try{h=JSON.parse(h),this._updateCmdFreqLimitMap(h)}catch(N){console.warn(N)}})}_updateCmdFreqLimitMap(p){p.forEach(h=>{this._cmdFrequencyLimitMap.set(h.cmd,{interval:h.interval,count:h.count})})}_reset(){this._core.helper.taskScheduler.removeTask(cI),this._core.store.clear("cloudConfig"),this._updateCmdFreqLimitMap(zc),this._methodCallFrequencyMap.clear(),this._expirationTime=0,this._version=0,this._isFetching=!1}_dispose(){const{notificationCenter:p,InnerEvent:h}=this._core;p.unSubscribeInnerEvent(VI,this._handlePushedConfig,this),p.unSubscribeInnerEvent(h.LOGOUT,this._reset,this),p.unSubscribeInnerEvent(h.DESTROY,this._dispose,this),this._reset()}};class ys{constructor(h=0,v=0){this.high=h,this.low=v}equal(h){return h!==null&&this.low===h.low&&this.high===h.high}toString(){const h=Number(this.high).toString(16);let v=Number(this.low).toString(16);if(v.length<8){let N=8-v.length;for(;N;)v=`0${v}`,N--}return h+v}}const Kn={SEARCH_GRP_SNS:new ys(0,Math.pow(2,1)).toString(),AV_HISTORY_MSG:new ys(0,Math.pow(2,2)).toString(),GRP_COMMUNITY:new ys(0,Math.pow(2,3)).toString(),MSG_TO_SPECIFIED_GRP_MBR:new ys(0,Math.pow(2,4)).toString(),AV_MBR_LIST:new ys(0,Math.pow(2,6)).toString(),USER_STATUS:new ys(0,Math.pow(2,7)).toString(),CONV_MARK:new ys(0,Math.pow(2,9)).toString(),CONV_GROUP:new ys(0,Math.pow(2,10)).toString(),AV_BAN_MBR:new ys(0,Math.pow(2,11)).toString(),MSG_EXT:new ys(0,Math.pow(2,13)).toString(),GRP_COUNTER:new ys(0,Math.pow(2,15)).toString(),PLUGIN_TRANSLATE:new ys(Math.pow(2,6)).toString(),PLUGIN_VOICE_TO_TEXT:new ys(Math.pow(2,7)).toString(),PLUGIN_CS:new ys(Math.pow(2,8)).toString(),PLUGIN_PUSH:new ys(Math.pow(2,9)).toString(),PLUGIN_BOT:new ys(Math.pow(2,10)).toString(),MSG_REACTION:new ys(Math.pow(2,16)).toString(),FOLLOW:new ys(Math.pow(2,20)).toString()},vc="CommercialConfig",JI="commercial-config";var HI=new class{constructor(){this._core=null,this._expirationTime=0,this._isFetching=!1,this._featureMap=new Map,this._methodKeyMap=new Map,this._purchaseBits="0"}install(p){this._core=p;const{helper:h,notificationCenter:v,constants:{WORKFLOW_NAME:N,WORKFLOW_STEP:O,InnerEvent:z}}=p;v.subscribeInnerEvent(z.COMMERCIAL_CONFIG_PUSH,this._handlePushedConfig,this),v.subscribeInnerEvent(z.LOGOUT,this._handleLogout,this),v.subscribeInnerEvent(z.DESTROY,this._dispose,this),h.registerWorkflowStep(N.SYNC_SERVER_INFO_AFTER_LOGIN,O.COMMERCIAL_CONFIG_UPDATE,this._syncCommercialConfig,this),p.helper.registerExperimentalAPI("isCommercialAbilityEnabled",this),p.helper.registerExperimentalAPI("queryCommercialAbility",this)}isCommercialAbilityEnabled(p){return mA(this,void 0,void 0,function*(){const h=parseInt(p,10).toString(2),{length:v}=h;let N,O=!0;for(let z=v-1,X=0;z>=0;z--,X++)if(h.charAt(z)==="1"&&(N=X<32?new ys(0,2**X).toString():new ys(2**(X-32),0).toString(),!this._featureMap.get(N))){O=!1;break}return this._core.ssoLog.debug("isFeatureEnabled",`${vc}.isFeatureEnabled decimalNumber:${p} key:${N} ret:${O}`),{code:0,data:{enabled:O}}})}queryCommercialAbility(){return this._purchaseBits}_fetchAndParseCommercialConfig(){return mA(this,void 0,void 0,function*(){var p;const{ssoLog:h,utils:{safeStringify:v},common:{buildAndSendPacket:N}}=this._core;try{this._isFetching=!0;const O=yield N({servcmd:"im_sdk_config_mgr.fetch_imsdk_purchase_bitsv2",data:{uint32_sdkappid:(p=this._core.store.get("instance"))===null||p===void 0?void 0:p.sdkAppId}});O&&(this._parseCommercialConfig(O),this._core.store.set("commercialConfig",this._methodKeyMap))}catch(O){h.error("_fetchAndParseCommercialConfig",v(O))}finally{this._isFetching=!1}})}_syncCommercialConfig(p){return mA(this,void 0,void 0,function*(){const{purchaseBits:h}=p?.data||{};h&&(this._parsePurchaseBits(h),this._core.store.set("commercialConfig",this._methodKeyMap)),this._canFetch()&&(yield this._fetchAndParseCommercialConfig()),this._core.helper.taskScheduler.addTask({id:JI,intervalMs:1e3,callback:this._fetchCommercialConfigIfReady,context:this})})}_canFetch(){var p;const h=(p=this._core.store.get("login"))===null||p===void 0?void 0:p.isLoggedIn,v=Date.now()>=this._expirationTime;return h&&!this._isFetching&&v}_handlePushedConfig(p){p?.body&&(this._parseCommercialConfig(p.body),this._core.store.set("commercialConfig",this._methodKeyMap))}_fetchCommercialConfigIfReady(){return mA(this,void 0,void 0,function*(){this._canFetch()&&(yield this._fetchAndParseCommercialConfig())})}_parseCommercialConfig(p){const{ssoLog:h}=this._core;if(typeof p!="object")return;const{int32_error_code:v,str_error_message:N,str_purchase_bits:O,uint32_expired_time:z}=p;v===0?(this._parsePurchaseBits(O),this._expirationTime=Date.now()+1e3*z):v===void 0?(h.warn("_parseCommercialConfig",`${vc}._parseCommercialConfig failed. Invalid message format:`,p),this._expirationTime=Date.now()+36e5):(h.warn("_parseCommercialConfig",`${vc}._parseCommercialConfig errorCode:${v} errorMessage:${N}`),this._expirationTime=Date.now()+12e4)}_isValidPurchaseBits(p){return p&&typeof p=="string"&&p.length>=1&&p.length<=64&&/[01]{1,64}/.test(p)}_parsePurchaseBits(p){const{ssoLog:h,utils:{safeStringify:v}}=this._core;if(this._isValidPurchaseBits(p)){this._purchaseBits=p,this._featureMap.clear(),this._methodKeyMap.clear();let N=null;for(let O=p.length-1,z=0;O>=0;O--,z++)if(N=z<32?new ys(0,2**z).toString():new ys(2**(z-32),0).toString(),p[O]==="1"){this._featureMap.set(N,!0);const X=this._getKeyByValue(Kn,N);X&&this._methodKeyMap.set(X,!0)}else{this._featureMap.set(N,!1);const X=this._getKeyByValue(Kn,N);X&&this._methodKeyMap.set(X,!1)}}else h.warn("_parsePurchaseBits",`${vc}.parsePurchaseBits invalid purchases:${v(p)}`)}_getKeyByValue(p,h){const v=Object.entries(p).find(([N,O])=>O===h);return v?v[0]:void 0}_handleLogout(){this._reset()}_dispose(){this._reset(),this._core.notificationCenter.unSubscribeInnerEvent(this._core.InnerEvent.COMMERCIAL_CONFIG_PUSH,this._handlePushedConfig,this),this._core.notificationCenter.unSubscribeInnerEvent(this._core.InnerEvent.LOGOUT,this._reset,this),this._core.notificationCenter.unSubscribeInnerEvent(this._core.InnerEvent.DESTROY,this._dispose,this)}_reset(){this._core.helper.taskScheduler.removeTask(JI),this._core.store.set("commercialConfig",{}),this._expirationTime=0,this._isFetching=!1,this._featureMap.clear(),this._purchaseBits="0"}},mE=new class{constructor(){this._core=null,this._serverOverloadInfoMap=new Map}install(p){this._core=p;const{notificationCenter:h,InnerEvent:v,channel:N}=this._core;h.subscribeInnerEvent(v.OVERLOAD_PUSH,this._handleOverLoadPush,this),h.subscribeInnerEvent(v.LOGOUT,this._reset,this),h.subscribeInnerEvent(v.DESTROY,this._dispose,this),N.registerBeforeSendInterceptor(this.checkServerOverload,this)}checkServerOverload(p){if(!this._serverOverloadInfoMap.has(p))return;const{overloadStartTimestamp:h,delaySeconds:v}=this._serverOverloadInfoMap.get(p);if(Date.now()-h<=1e3*v)throw new this._core.helper.ChatError({functionName:p,message:"service is busy, please try again later"});this._serverOverloadInfoMap.delete(p)}_handleOverLoadPush(p){const{OverLoadServCmd:h,DelaySecs:v}=p;this._serverOverloadInfoMap.set(h,{overloadStartTimestamp:Date.now(),delaySeconds:v})}_reset(){this._serverOverloadInfoMap.clear()}_dispose(){this._reset();const{notificationCenter:p,InnerEvent:h}=this._core;p.unSubscribeInnerEvent(h.OVERLOAD_PUSH,this._handleOverLoadPush,this),p.unSubscribeInnerEvent(h.LOGOUT,this._reset,this),p.unSubscribeInnerEvent(h.DESTROY,this._dispose,this)}},oh=new class{constructor(){this.name="ConfigCenter"}install(p){$c.init(p),bg.install(p),HI.install(p),mE.install(p)}},nC=new class{constructor(){this.name="ErrorMessage",this._core=null}install(p){return mA(this,void 0,void 0,function*(){if(this._core=p,this._canFetch()){const h=yield this._fetchErrorMessage();if(!h)return;const v=this._parseResponse(h);this._saveErrorMessage(v)}})}_canFetch(){const p=this._core.store.getStorage("errorMessage");return!p||this._isExpired(p)}_saveErrorMessage(p){this._core.store.setStorage("errorMessage",{errorMessage:p,errorMessageSavedTime:new Date().getTime()})}_fetchErrorMessage(){return mA(this,void 0,void 0,function*(){try{return yield this._core.helper.httpRequest({method:"GET",url:"https://web.sdk.qcloud.com/im/download/error-message/v3/0.0.6/tim-error-message.txt"})}catch(p){console.error(p)}})}_isExpired(p){if(!p)return!0;const{errorMessageSavedTime:h}=p;return h&&new Date().getTime()-h>=6048e5}_parseResponse(p){if(typeof p=="string"){const h=p.split(`; -`),v={},N=new RegExp(/'/g);for(let O=0;O{var ao,zi,ui;const Oo=function($o,Qi){const{From_Account:Ki,From_AccountHeadurl:Ws,From_AccountNick:_e,IsNeedReadReceipt:vt,MsgBody:FA,MsgClientTime:Wt,MsgRandom:En,MsgSeq:Zt,MsgTimeStamp:us,SendMsgControl:vi,SupportMessageExtension:Co,To_Account:Et,TinyId:Ct,MsgCheckResult:ug,CloudCustomData:ks,IsPeerRead:ji,MsgFlagBits:Yr,MsgVersion:oc,EventArray:ts}=$o;return{from:Ki,avatar:Ws,nick:_e,needReadReceipt:vt===1,readReceiptSentByPeer:ji,clientTime:Wt,messageFlagBits:Yr,random:En,sequence:Zt,time:us,messageControlInfo:vi,isSupportExtension:Co,to:Et,tinyID:Ct,checkResult:ug,cloudCustomData:ks,messageVersion:oc,eventArray:ts,elements:Qi.message.messageHelper.parseServerPushMessageElement(FA)}}(Ui,st);if(!((ui=(zi=(ao=Ui?.EventArray)===null||ao===void 0?void 0:ao[0])===null||zi===void 0?void 0:zi.hasOwnProperty)===null||ui===void 0)&&ui.call(zi,"C2cNotifyMsgArray"))xt.push(...function($o){var Qi;const Ki=[];return(Qi=$o.EventArray)===null||Qi===void 0||Qi.forEach(Ws=>{var _e,vt;const{C2cNotifyMsgArray:FA}=Ws,Wt=(vt=(_e=FA?.[0])===null||_e===void 0?void 0:_e.WithdrawC2cMsgNotify)===null||vt===void 0?void 0:vt.C2cWithdrawInfoArray;Array.isArray(Wt)&&Ki.push(...Wt)}),Ki}(Ui));else{const $o=st.message.messageFactory.createMessage(Object.assign(Object.assign({},Oo),{conversationType:"C2C",flow:"in"})),{elements:Qi}=Oo;$o.setElement(Qi),bt.push($o)}}),{unreadMessageList:bt,revokedMessageList:xt}}(DA.MsgList,h);return{syncFlag:DA?.SyncFlag,unreadMessageList:Ee,revokedMessageList:He,unreadCountList:GA,overflowUnreadCountList:VA,cookie:DA?.Cookie,groupTipList:ie}}catch(DA){console.warn(DA)}})}var Al,kg;(function(p){p[p.START_SYNC=0]="START_SYNC",p[p.SYNCING=1]="SYNCING",p[p.SYNC_COMPLETE=2]="SYNC_COMPLETE"})(Al||(Al={})),function(p){p[p.LOGIN_SUCCESS=0]="LOGIN_SUCCESS",p[p.NEW_MESSAGE_RECEIVED=1]="NEW_MESSAGE_RECEIVED"}(kg||(kg={}));var no=new class{constructor(){this.name="UnreadMessageSynchronizer",this._unreadDBMessageMap=new Map,this._cookie="",this._localConversationIDListBeforeDisconnect=[]}install(p){this._core=p;const{constants:h}=p;p.helper.registerWorkflowStep(h.WORKFLOW_NAME.SYNC_SERVER_INFO_AFTER_RE_ONLINE,h.WORKFLOW_STEP.UNREAD_MESSAGE_SYNC,this._syncUnreadDBMessageAfterReOnline,this),p.helper.registerWorkflowStep(h.WORKFLOW_NAME.RECEIVE_C2C_NEW_MESSAGE,h.WORKFLOW_STEP.UNREAD_MESSAGE_SYNC,this._syncUnreadDBMessageAfterNewMessageReceived,this),p.helper.registerWorkflowStep(h.WORKFLOW_NAME.SYNC_SERVER_INFO_AFTER_LOGIN,h.WORKFLOW_STEP.UNREAD_MESSAGE_SYNC,this._syncUnreadDBMessageAfterLogin,this),p.notificationCenter.subscribeInnerEvent(p.InnerEvent.SOCKET_DISCONNECTED,this._handleDisconnect,this),p.notificationCenter.subscribeInnerEvent(p.InnerEvent.LOGOUT,this._reset,this),p.notificationCenter.subscribeInnerEvent(p.InnerEvent.DESTROY,this._dispose,this)}_syncUnreadMessage(p){return mA(this,void 0,void 0,function*(){const{isAfterReOnline:h=!1,isAfterNewMessageReceived:v=!1,isAfterLogin:N=!1}=p||{};let O=Al.START_SYNC;const z=[],X=[],nA=[],DA=[];for(;this._canContinueSync({cookie:this._cookie,syncFlag:O});){const GA=yield this._fetchUnreadDBMessage({cookie:this._cookie,syncFlag:O,syncTriggerEvent:v?kg.NEW_MESSAGE_RECEIVED:kg.LOGIN_SUCCESS});if(!GA)break;const{unreadMessageList:VA=[],revokedMessageList:ie=[],overflowUnreadCountList:Ee,unreadCountList:He,groupTipList:At}=GA;if(this._cookie=GA?.cookie||"",O=GA?.syncFlag,this._parseAndSaveUnreadMessageList(VA),nA.push(...ie),this._updateConversationUnreadOptions({unreadCountList:He,overflowUnreadCountList:Ee,conversationUpdateFieldList:z}),Array.isArray(At)&&X.push(...At),h){const{messages:st}=this._handleNewMessageList(VA);DA.push(...st)}}return h?{conversationUpdateFieldList:z,revokedMessageList:nA,unreadMessageMap:this._unreadDBMessageMap,groupTipList:X,messages:DA,isUnreadC2CMessage:!0}:{conversationUpdateFieldList:z,isInstantMessage:!N,isUnreadC2CMessage:!0,revokedMessageList:nA,unreadMessageMap:this._unreadDBMessageMap,groupTipList:X}})}_syncUnreadDBMessageAfterLogin(){return mA(this,void 0,void 0,function*(){return this._cookie="",this._syncUnreadMessage({isAfterLogin:!0})})}_syncUnreadDBMessageAfterNewMessageReceived(p){return mA(this,void 0,void 0,function*(){if(p.data.Flag===1)return this._syncUnreadMessage({isAfterNewMessageReceived:!0})})}_updateConversationUnreadOptions(p){const{unreadCountList:h,overflowUnreadCountList:v,conversationUpdateFieldList:N}=p,{constants:{OuterConstant:{CONV_C2C:O,CONV_SYSTEM:z}}}=this._core;h?.forEach(X=>{const{From_Account:nA,UnreadCount:DA}=X;if(nA!==z){const GA=N.find(({conversationID:VA})=>VA===`${O}${nA}`);GA?GA.unreadCount=DA:N.push({conversationID:`${O}${nA}`,unreadCount:DA,type:O})}}),v?.forEach(X=>{const{From_Account:nA,LastMsgTime:DA}=X;nA!==z&&(N.find(({conversationID:GA})=>GA===`${O}${nA}`)||N.push({conversationID:`${O}${nA}`,type:O,lastMsgTime:DA}))})}_syncUnreadDBMessageAfterReOnline(){return mA(this,void 0,void 0,function*(){return this._syncUnreadMessage({isAfterReOnline:!0})})}_updateMessageProfile(p){var h;const{messageDataHandler:v}=this._core.message||{},N=(h=this._core.store.get("login"))===null||h===void 0?void 0:h.userId,{from:O,nick:z,avatar:X,conversationID:nA=""}=p;if(O!==N){const DA=v.getLatestMsgSentByPeer(nA);if(DA){const{nick:GA,avatar:VA}=DA;z&&X?z===GA&&X===VA||v.updateNickAndAvatarOfSentMessage({conversationID:nA,latestNick:z,latestAvatar:X,isSentByMe:!1}):(p.nick=GA,p.avatar=VA)}}else{const DA=v.getLatestMsgSentByMe(nA);!DA||z===DA.nick&&X===DA.avatar||v.updateNickAndAvatarOfSentMessage({conversationID:nA,latestNick:z,latestAvatar:X,isSentByMe:!0})}}_handleNewMessageList(p){const{messageDataHandler:h}=this._core.message||{},v=new Map,N=[];return p.forEach(O=>{this._updateMessageProfile(O);let z=O.isModified===1;if(h.isMessageSentByCurrentInstance(O)?O.isModified=z:z=!1,O.isOnlineMessage())O._onlineOnlyFlag=!0,h.isMessageSentByCurrentInstance(O)||N.push(O);else if(this._shouldStoreUnreadMessage(O)){if(h.storeConversationMessage(O)){const{conversationID:X,conversationType:nA,conversationSubType:DA,flow:GA,_isExcludedFromUnreadCount:VA,_isExcludedFromLastMessage:ie}=O,Ee=ie?"":O;v.has(X)?(v.get(X).lastMessage=Ee,GA==="in"&&(VA||v.get(X).unreadCount++)):v.set(X,{conversationID:X,type:nA,subType:DA,unreadCount:VA||GA!=="in"?0:1,lastMessage:Ee})}h.isMessageSentByCurrentInstance(O)&&!z||N.push(O)}}),{messages:N,conversationOptions:v}}_shouldStoreUnreadMessage(p){var h;const{conversationID:v}=p,{message:N,appStore:O,utils:{isEmpty:z}}=this._core||{},X=Array.from(((h=O.conversationStore.getConversationMap())===null||h===void 0?void 0:h.keys())||[]),nA=this._getLocalLastMessageTime(v);return!N.messageDataHandler.isInMessageList(p)&&X.includes(v)&&this._localConversationIDListBeforeDisconnect.includes(v)&&!z(nA)}_fetchUnreadDBMessage(p){return mA(this,void 0,void 0,function*(){const{ssoLog:h,utils:{safeStringify:v}}=this._core;try{h.debug("_fetchUnreadDBMessage",`unread-message-synchronizer._fetchUnreadDBMessage options:${v(p)}`);const O=yield sh(p,this._core);if(!O)return null;const{syncFlag:z,unreadMessageList:X,revokedMessageList:nA,cookie:DA,unreadCountList:GA,overflowUnreadCountList:VA,groupTipList:ie}=O;return this._parseAndSaveUnreadMessageList(X),{syncFlag:z,cookie:DA,unreadMessageList:X,revokedMessageList:nA,unreadCountList:GA,overflowUnreadCountList:VA,groupTipList:ie}}catch(N){console.log(N)}})}_canContinueSync({cookie:p,syncFlag:h}){var v;return h===Al.START_SYNC||h===Al.SYNCING&&!(!((v=this._core)===null||v===void 0)&&v.helper.isEmpty(p))}_parseAndSaveUnreadMessageList(p){p.forEach(h=>{const{ID:v}=h;this._unreadDBMessageMap.set(v,h)})}_handleDisconnect(){var p;const{appStore:h}=this._core;this._localConversationIDListBeforeDisconnect=Array.from(((p=h.conversationStore.getConversationMap())===null||p===void 0?void 0:p.keys())||[])}_getLocalLastMessageTime(p){const{message:h}=this._core,v=h.messageDataHandler.getLocalMessageList(p),N=v[v.length-1];return N?.time}_reset(){this._cookie="",this._unreadDBMessageMap.clear()}_dispose(){var p,h;(p=this._core)===null||p===void 0||p.notificationCenter.unSubscribeInnerEvent(this._core.InnerEvent.LOGOUT,this._reset,this),(h=this._core)===null||h===void 0||h.notificationCenter.unSubscribeInnerEvent(this._core.InnerEvent.DESTROY,this._dispose,this),this._reset()}},rC=new class{init(p){var h;this._core=p,this._visibilityChangeHandler=this._handleVisibilityChange.bind(this),p.notificationCenter.subscribeInnerEvent(p.InnerEvent.DESTROY,this._dispose,this),document?.addEventListener("visibilitychange",this._visibilityChangeHandler),(h=this._core)===null||h===void 0||h.store.set("activityMonitor",{isActive:!0})}_handleVisibilityChange(){var p,h;const v=document?.visibilityState==="visible";(p=this._core)===null||p===void 0||p.store.set("activityMonitor",{isActive:v}),(h=this._core)===null||h===void 0||h.notificationCenter.emitInnerEvent("activityStatusChange",{isActive:v})}_reset(){var p;(p=this._core)===null||p===void 0||p.store.clear("activityMonitor")}_dispose(){document?.removeEventListener("visibilitychange",this._visibilityChangeHandler);const{notificationCenter:p,InnerEvent:h}=this._core;p.unSubscribeInnerEvent(h.DESTROY,this._dispose,this),this._reset()}},fE=new class{init(p){var h;this._core=p,this._bindAppActivityEvent(),p.notificationCenter.subscribeInnerEvent(p.InnerEvent.DESTROY,this._dispose,this),(h=this._core)===null||h===void 0||h.store.set("activityMonitor",{isActive:!0})}_bindAppActivityEvent(){var p,h,v,N,O;const{MINI_APP_NAMESPACE:z,IN_TT_MINI_GAME:X,IN_WX_MINI_GAME:nA}=((p=this._core)===null||p===void 0?void 0:p.utils)||{};X||nA?((h=z?.onShow)===null||h===void 0||h.call(z,()=>{var DA,GA;(DA=this._core)===null||DA===void 0||DA.store.set("activityMonitor",{isActive:!0}),(GA=this._core)===null||GA===void 0||GA.notificationCenter.emitInnerEvent("activityStatusChange",{isActive:!0})}),(v=z?.onHide)===null||v===void 0||v.call(z,()=>{var DA,GA;(DA=this._core)===null||DA===void 0||DA.store.set("activityMonitor",{isActive:!1}),(GA=this._core)===null||GA===void 0||GA.notificationCenter.emitInnerEvent("activityStatusChange",{isActive:!1})})):((N=z?.onAppShow)===null||N===void 0||N.call(z,()=>{var DA,GA;(DA=this._core)===null||DA===void 0||DA.store.set("activityMonitor",{isActive:!0}),(GA=this._core)===null||GA===void 0||GA.notificationCenter.emitInnerEvent("activityStatusChange",{isActive:!0})}),(O=z?.onAppHide)===null||O===void 0||O.call(z,()=>{var DA,GA;(DA=this._core)===null||DA===void 0||DA.store.set("activityMonitor",{isActive:!1}),(GA=this._core)===null||GA===void 0||GA.notificationCenter.emitInnerEvent("activityStatusChange",{isActive:!1})}))}_reset(){var p;(p=this._core)===null||p===void 0||p.store.clear("activityMonitor")}_dispose(){const{notificationCenter:p,InnerEvent:h}=this._core;p.unSubscribeInnerEvent(h.DESTROY,this._dispose,this),this._reset()}},yE=new class{init(p){const{IN_MINI_APP:h,IN_WX_MINI_PLUGIN:v}=p.helper;v||(h?fE.init(p):rC.init(p))}};const ld="none",DE="online";var el=new class{init(p){this._core=p,this._activateNetworkMonitoring(),p.notificationCenter.subscribeInnerEvent(p.InnerEvent.DESTROY,this._dispose,this)}_activateNetworkMonitoring(){return mA(this,void 0,void 0,function*(){navigator.onLine?this._onOnline():this._onOffline(),this._onOnlineCallback=this._onOnline.bind(this),this._onOfflineCallback=this._onOffline.bind(this),window.addEventListener("online",this._onOnlineCallback),window.addEventListener("offline",this._onOfflineCallback)})}_deactivateNetworkMonitoring(){this._onOnlineCallback!==null&&(window.removeEventListener("online",this._onOnlineCallback),this._onOnlineCallback=null),this._onOfflineCallback!==null&&(window.removeEventListener("offline",this._onOfflineCallback),this._onOfflineCallback=null)}_onNetworkStatusChange(p){var h,v;const{isConnected:N,networkType:O}=p;(h=this._core)===null||h===void 0||h.store.set("netWorkMonitor",{isNetworkOnline:N,networkType:O}),(v=this._core)===null||v===void 0||v.notificationCenter.emitInnerEvent("networkStatusChange",{isNetworkOnline:N,networkType:O})}_onOnline(){this._onNetworkStatusChange({isConnected:!0,networkType:DE})}_onOffline(){this._onNetworkStatusChange({isConnected:!1,networkType:ld})}_reset(){var p;this._deactivateNetworkMonitoring(),(p=this._core)===null||p===void 0||p.store.clear("netWorkMonitor")}_dispose(){var p,h;(p=this._core)===null||p===void 0||p.notificationCenter.unSubscribeInnerEvent((h=this._core)===null||h===void 0?void 0:h.InnerEvent.DESTROY,this._dispose,this),this._reset()}},lI=new class{init(p){this._core=p,this._activateNetworkMonitoring(),p.notificationCenter.subscribeInnerEvent(p.InnerEvent.DESTROY,this._dispose,this)}_activateNetworkMonitoring(){return mA(this,void 0,void 0,function*(){try{const{utils:{MINI_APP_NAMESPACE:p}}=this._core;this._mpNetworkStatusCallback=this._onNetworkStatusChange.bind(this),p.onNetworkStatusChange(this._onNetworkStatusChange.bind(this))}catch(p){console.error(p)}})}_deactivateNetworkMonitoring(){if(this._mpNetworkStatusCallback!==null){const{utils:{MINI_APP_NAMESPACE:p}}=this._core;p.offNetworkStatusChange&&p.offNetworkStatusChange(this._mpNetworkStatusCallback),this._mpNetworkStatusCallback=null}}_onNetworkStatusChange(p){var h,v;const{isConnected:N,networkType:O}=p;(h=this._core)===null||h===void 0||h.store.set("netWorkMonitor",{isNetworkOnline:N,networkType:O}),(v=this._core)===null||v===void 0||v.notificationCenter.emitInnerEvent("networkStatusChange",{isNetworkOnline:N,networkType:O})}_reset(){var p;this._deactivateNetworkMonitoring(),(p=this._core)===null||p===void 0||p.store.clear("netWorkMonitor")}_dispose(){var p,h;(p=this._core)===null||p===void 0||p.notificationCenter.unSubscribeInnerEvent((h=this._core)===null||h===void 0?void 0:h.InnerEvent.DESTROY,this._dispose,this),this._reset()}},wu=new class{init(p){const{IN_MINI_APP:h}=p.utils;h?lI.init(p):el.init(p)}},_u=new class{constructor(){this.name="SystemStateMonitor"}install(p){yE.init(p),wu.init(p)}};const aC=new Set(["tui_room_svr.*","callkit_records_svr.*","room_engine_srv.*","room_engine_http_srv.*","room_engine_mic.*","live_engine_srv.*","live_engine_http_srv.*","live_engine_pk.*","trtc_ai_service.*","call_engine_srv.*"]),Mr="tui_room_svr.*";var cg=new class{constructor(){this.name="BusinessCommandTransfer",this._transferredCommands=aC}install(p){this._core=p;const{notificationCenter:h,InnerEvent:v,helper:N}=p;h.subscribeInnerEvent(v.CLOUD_CONFIG_UPDATE,this._onCloudConfigUpdate,this),h.subscribeInnerEvent(v.LOGOUT,this._reset,this),h.subscribeInnerEvent(v.DESTROY,this._dispose,this),h.subscribeInnerEvent("im_open_push.msg_push",h.InnerEventSubType.BUSINESS_COMMAND,this._onServerPushBusinessCommand,this),N.registerExperimentalAPI("sendTRTCCustomData",this,"transferBusinessCommand"),N.registerExperimentalAPI("sendRoomCustomData",this,"transferBusinessCommand")}transferBusinessCommand(p){return mA(this,void 0,void 0,function*(){const h="transferBusinessCommand";try{const{serviceCommand:v=Mr}=p||{};if(!this._isValidTransferredCommand(v))throw new this._core.helper.ChatError({code:2995,functionName:h});return{code:0,data:(yield function(O,z){return mA(this,void 0,void 0,function*(){const{helper:X,channel:nA}=z,{serviceCommand:DA=Mr,data:GA}=O||{};let VA={};try{VA=typeof GA=="string"?JSON.parse(GA):GA}catch(He){console.warn(He)}const ie=X.generateProtocolData({servcmd:DA,data:VA}),Ee=`${ie.head.seq}${DA}`;return nA.sendPacket(ie,{requestId:Ee,shouldRejectOnError:!1})})}(p,this._core))||{}}}catch(v){throw console.warn(v),new this._core.helper.ChatError({code:v?.errorCode,message:v?.errorInfo,data:{},functionName:h})}})}_onCloudConfigUpdate(p={}){try{if(typeof p.rtc_cmd!="string")return;const h=JSON.parse(p.rtc_cmd);Array.isArray(h)&&(this._transferredCommands=new Set([...this._transferredCommands,...h]))}catch(h){console.log(h)}}_isValidTransferredCommand(p=""){const h=`${p?.split(".")[0]}.*`;return this._transferredCommands.has(h)}_onServerPushBusinessCommand(p){const{OuterEvent:h,notificationCenter:v}=this._core,{MsgContent:N}=p||{},{ROOM_CUSTOM_DATA_RECEIVED:O}=h;v.emitOuterEvent(O,{name:O,data:N})}_reset(){this._transferredCommands=aC}_dispose(){const{notificationCenter:p,InnerEvent:h}=this._core;this._reset(),p.unSubscribeInnerEvent(h.CLOUD_CONFIG_UPDATE,this._onCloudConfigUpdate,this),p.unSubscribeInnerEvent(h.LOGOUT,this._reset,this),p.unSubscribeInnerEvent(h.DESTROY,this._dispose,this),p.unSubscribeInnerEvent("im_open_push.msg_push",p.InnerEventSubType.BUSINESS_COMMAND,this._onServerPushBusinessCommand,this)}};const Rc=new class{init(p){this.core=p}};function Tu(p){return mA(this,void 0,void 0,function*(){var h;const{message:v,user:N,appStore:O,constants:{OuterConstant:z}}=Rc.core,X=O.conversationStore.getConversationMap();if(X.has(p)){const DA=(h=X.get(p))===null||h===void 0?void 0:h.userProfile;if(DA&&p.startsWith(z.CONV_C2C)){const{avatar:GA,nick:VA}=DA;Rc.core.message.messageDataHandler.updateNickAndAvatarOfSentMessage({conversationID:p,latestAvatar:GA,latestNick:VA,isSentByMe:!1})}}const{data:nA}=(yield N.userProfile.getMyProfile())||{};if(nA){const{avatar:DA,nick:GA}=nA;v.messageDataHandler.updateNickAndAvatarOfSentMessage({conversationID:p,latestAvatar:DA,latestNick:GA,isSentByMe:!0})}})}function wl(p){return mA(this,void 0,void 0,function*(){const h=p.map(v=>v.revoker);try{const v=yield function(N){return mA(this,void 0,void 0,function*(){var O,z;const X=yield(O=Rc.core.user.userProfile)===null||O===void 0?void 0:O.getUserProfile({userIDList:N});return X?.data?(z=X.data)===null||z===void 0?void 0:z.reduce((nA,{userID:DA,nick:GA,avatar:VA})=>(nA[DA]={nick:GA||"",avatar:VA||""},nA),{}):null})}(h);v&&p.forEach(N=>{const{revoker:O}=N;v[O]&&(N.revokerInfo.nick=v[O].nick||"",N.revokerInfo.avatar=v[O].avatar||"",N.revokerInfo.userID=O)})}catch(v){console.debug(v)}})}const Id=1,Zr=2,II=20,_n=2500,gC=1,tl=300;function ud(p){return mA(this,void 0,void 0,function*(){var h,v;const{appStore:N,utils:{isEmpty:O},common:{getCurrentUserID:z},notificationCenter:X,OuterEvent:nA,OuterConstant:{CONV_C2C:DA}}=Rc.core,{messageList:GA,conversationID:VA}=p,ie=N.conversationStore.getConversationMap();let Ee=(h=ie.get(VA))===null||h===void 0?void 0:h.peerReadTime;if(!Ee){const At=VA.replace(DA,""),st=yield function(bt){return mA(this,void 0,void 0,function*(){const xt={To_Account:bt};return Rc.core.common.buildAndSendPacket({servcmd:"openim.get_peer_read_time",data:xt})})}([At]);if(st){const{ReadTime:bt}=st;Ee=bt?.[0],ie.has(VA)&&(ie.get(VA).peerReadTime=Ee)}}if(ie.has(VA)){const At=(v=ie.get(VA))===null||v===void 0?void 0:v.lastMessage;O(At)||At.fromAccount===z()&&At.lastTime<=Ee&&!At.isPeerRead&&(At.isPeerRead=!0,N.conversationStore.updateConversation(VA,{lastMessage:At}))}const He=[];GA.forEach(At=>{At.time<=Ee&&!At.isPeerRead&&At.flow==="out"&&(At.isPeerRead=!0,He.push(At))}),He.length>0&&X.emitOuterEvent(nA.MESSAGE_READ_BY_PEER,{name:nA.MESSAGE_READ_BY_PEER,data:He})})}var uI=new class{init(p){this._core=p,p.helper.registerApi({apiName:"getMessageList",context:this}),p.helper.registerApi({apiName:"getMessageListHopping",context:this}),p.helper.registerApi({apiName:"clearHistoryMessage",context:this})}getMessageList(p){return mA(this,void 0,void 0,function*(){try{const{message:h,OuterConstant:{Direction:v,CONV_C2C:N,CONV_GROUP:O},InnerEvent:{HISTORY_MESSAGE_FETCHED:z},notificationCenter:X}=this._core,{conversationID:nA,nextReqMessageID:DA}=p,GA=II;if(nA==="@TIM#SYSTEM")return{code:0,data:{messageList:[],isCompleted:!1,nextMessageSeq:""}};const VA=this._getAvailableLocalMessagesCount({conversationID:nA,nextReqMessageID:DA});if(this._needFetchHistoryMessageList({conversationID:nA,availableLocalMessagesCount:VA,targetCount:GA})){let ie=null;if(nA.startsWith(O)?ie=yield h.messageHistory.getGroupRoamingMessagesByAnchor({conversationID:nA,sequence:Number(DA),count:GA,direction:v.FORWARD,shouldMarkCompleted:!0}):nA.startsWith(N)&&(ie=yield h.messageHistory.getC2CRoamingMessagesByAnchor({conversationID:nA,messageID:DA,count:GA,direction:v.FORWARD,shouldMarkCompleted:!0})),ie){const{nextReqMessageIDFromServer:Ee,hasNoMoreHistoryMessage:He,messageList:At}=ie,st=h.messageDataHandler.prependLocalMessageList({messageList:At,conversationID:nA});(function(zi){const{appStore:ui,message:Oo,OuterConstant:$o}=Rc.core,Qi=ui.conversationStore.getConversation(zi),Ki=Oo.messageDataHandler.getLocalMessageList(zi);if(!Qi||Ki.length===0||zi===$o.CONV_SYSTEM)return;const Ws=[];for(let vt=0;vtFA.isRevoked).length;_e=Ws.length-Qi.unreadCount-vt}else _e=Ws.length-Qi.unreadCount;for(let vt=0;vt<_e&&!Ws[vt].isRead;vt++)Ws[vt].setIsRead(!0)})(nA),yield Tu(nA),nA.startsWith(N)&&(yield ud({messageList:At,conversationID:nA}));const bt=this._core.message.messageDataHandler.getLocalMessageList(nA).slice(0,st.length+VA),xt=bt.filter(zi=>zi.isRevoked);yield wl(xt),X.emitInnerEvent(z,st);const Ui={nextReqMessageID:He?"":String(Ee),messageList:bt,isCompleted:He},ao=bt.map(zi=>zi.sequence);return{code:0,data:Ui,successLog:{message:`conversationID: ${nA} nextReqMessageID: ${DA} availableLocalMessagesCount: ${VA} sequenceList: ${JSON.stringify(ao)}`}}}return{code:0,data:{messageList:[],isCompleted:!1,nextReqMessageID:""}}}return{code:0,data:yield this._getMessageListFromMemory({conversationID:nA,nextReqMessageID:DA,count:GA}),successLog:{message:`conversationID: ${nA} nextReqMessageID: ${DA} availableLocalMessagesCount: ${VA}}`}}}catch(h){const{code:v,message:N}=h||{};throw new this._core.helper.ChatError({code:v,message:N,moreMessage:`options: ${this._core.utils.safeStringify(p)}`})}})}getMessageListHopping(p){return mA(this,void 0,void 0,function*(){var h,v;const{OuterConstant:{Direction:N,CONV_C2C:O,CONV_GROUP:z},utils:{safeStringify:X}}=this._core,{conversationID:nA,sequence:DA,time:GA,direction:VA=N.FORWARD}=p,{utils:{isEmpty:ie},message:Ee,notificationCenter:He,InnerEvent:{HISTORY_MESSAGE_FETCHED:At}}=this._core;if(![N.BACKWARD,N.FORWARD].includes(VA))throw new this._core.helper.ChatError({message:"direction must be 0 or 1",moreMessage:`options: ${X(p)}`});let{count:st=II}=p;st=st>II?II:st;let bt=null;if(nA.startsWith(z)){if(bt=yield Ee.messageHistory.getGroupRoamingMessagesByAnchor({conversationID:nA,sequence:DA,count:st,direction:VA}),bt){const{nextReqMessageIDFromServer:xt,hasNoMoreHistoryMessage:Ui,messageList:ao,invisibleSequenceList:zi}=bt;if(this._core.message.messageDataHandler.storeSparseMessageList(ao),He.emitInnerEvent(At,ao),VA===N.FORWARD){const ui=Ui&&xt<1;return{code:0,data:{messageList:ao,isCompleted:ui,nextMessageSeq:ui?"":xt}}}if(VA===N.BACKWARD){if(ie(ao)&&ie(zi))return{code:0,data:{messageList:[],isCompleted:!0,nextMessageSeq:""}};const ui=((h=ao?.[ao.length-1])===null||h===void 0?void 0:h.sequence)||0,Oo=((v=zi?.[zi.length-1])===null||v===void 0?void 0:v.sequence)||0;return{code:0,data:{messageList:ao.filter($o=>$o.sequence>=DA),isCompleted:!Ui,nextMessageSeq:Ui?Math.max(ui,Oo)+1:""}}}return{code:0,data:bt}}}else if(nA.startsWith(O)&&(bt=yield Ee.messageHistory.getC2CRoamingMessagesByAnchor({conversationID:nA,count:st+1,time:GA,direction:VA}),bt)){const{messageList:xt,lastMessageTime:Ui,hasNoMoreHistoryMessage:ao}=bt;return He.emitInnerEvent(At,xt),ao||(VA===N.FORWARD?xt.shift():xt.pop()),Ee.messageDataHandler.storeSparseMessageList(xt),yield ud({messageList:xt,conversationID:nA}),{code:0,data:{messageList:xt,isCompleted:ao,nextMessageTime:ao?"":Ui}}}})}clearHistoryMessage(p){return mA(this,void 0,void 0,function*(){var h;const{appStore:v,common:{ChatError:N,getCurrentUserID:O},OuterConstant:{CONV_C2C:z,CONV_GROUP:X},apiMap:nA,message:DA}=this._core,GA=v.conversationStore.getConversation(p);if(!GA)throw new N({code:_n});const VA={fromAccount:O()},{type:ie}=GA;ie===z?(VA.type=Id,VA.toAccount=p.replace(z,"")):ie===X&&(VA.type=Zr,VA.toGroupID=p.replace(X,""));try{return yield(h=nA?.setMessageRead)===null||h===void 0?void 0:h.call(nA,{conversationID:p}),(yield function(He){return mA(this,void 0,void 0,function*(){const{fromAccount:At,type:st,toAccount:bt,toGroupID:xt}=He,Ui={From_Account:At,Type:st,To_Account:bt,ToGroupid:xt};return Rc.core.common.buildAndSendPacket({servcmd:"recentcontact.clear_msg",data:Ui})})}(VA))&&(DA.messageDataHandler.deleteConversationMessageList(p),DA.messageHistory.completedHistoryConversations.delete(p),DA.messageHistory.clearHistoryMessageListFetchAnchors(p),this._updateConversationLastMessage(p)),{code:0,data:{conversationID:p},successLog:{message:`convID:${p}`}}}catch(Ee){const{errorCode:He}=Ee;throw new this._core.helper.ChatError({functionName:"clearHistoryMessage",code:He,moreMessage:`convID:${p}`})}})}_updateConversationLastMessage(p){const{appStore:h}=this._core;h.conversationStore.updateConversation(p,{lastMessage:this._generateLastMessage()},{needSort:!0})}_getAvailableLocalMessagesCount({conversationID:p,nextReqMessageID:h}){const{OuterConstant:{CONV_C2C:v,CONV_GROUP:N}}=this._core,O=this._core.message.messageDataHandler.getLocalMessageList(p),{length:z}=O;if(!h)return z;let X=-1;return p?.startsWith(v)?X=O.findIndex(nA=>nA.ID===h):p?.startsWith(N)&&(X=O.findIndex(nA=>h.includes("-")?nA.ID===h:String(nA.sequence)===h)),X===-1?0:X}_needFetchHistoryMessageList({conversationID:p,availableLocalMessagesCount:h,targetCount:v}){const{message:N}=this._core;return hh.startsWith(O)?Ee.ID===v:String(Ee.sequence)===v),VA=ie>N?ie-N:0,DA=ie):VA=nA>N?nA-N:0,GA.messageList=X.slice(VA,ie),GA.isCompleted=DA<=N&&z.messageHistory.completedHistoryConversations.has(h),GA.isCompleted?GA.nextReqMessageID="":GA.nextReqMessageID=this._generateNextReqMessageID({conversationID:h,targetIndex:VA}),h.startsWith(O)&&(yield Tu(h),yield ud({messageList:GA.messageList,conversationID:h})),GA})}_generateNextReqMessageID({conversationID:p,targetIndex:h}){const v=this._core.message.messageDataHandler.getLocalMessageList(p);return p.startsWith("C2C")?v[h].ID:String(v[h].sequence)}_generateLastMessage(){return{lastTime:0,lastSequence:0,fromAccount:"",messageForShow:"",payload:null,type:"",isRevoked:!1,cloudCustomData:"",onlineOnlyFlag:!1,nick:"",nameCard:"",version:0,isPeerRead:!1,revoker:null}}},Fa=new class{constructor(){this._lastMessageSequenceMapOnDisconnect=new Map,this._lastMessageTimeMapOnDisconnect=new Map}init(p){this._core=p;const{common:{workflowManager:h},constants:{WORKFLOW_NAME:v,WORKFLOW_STEP:N,InnerEvent:O}}=p;h.registerWorkflowStep(v.SYNC_SERVER_INFO_AFTER_RE_ONLINE,N.HISTORY_MESSAGE_RECOVER,this._syncGroupOfflineMessage,this),h.registerWorkflowStep(v.SYNC_SERVER_INFO_AFTER_RE_ONLINE,N.C2C_HISTORY_MESSAGE_RECOVER,this._syncC2COfflineMessage,this),p.notificationCenter.subscribeInnerEvent(O.SOCKET_DISCONNECTED,this._updateLastMessageSequenceMapOnDisconnect,this)}_syncGroupOfflineMessage(p){const{conversationList:h}=p?.result||{},{OuterConstant:v,utils:{isArray:N}}=this._core;if(N(h)){const O=h.filter(z=>z.type===v.CONV_GROUP&&z.groupProfile.type!==v.GRP_AVCHATROOM);return this._recoverGroupHistoryMessage(O)}}_recoverGroupHistoryMessage(p){return mA(this,void 0,void 0,function*(){const{OuterConstant:h}=this._core,v=[],N=[];return yield Promise.all(p?.map(O=>mA(this,void 0,void 0,function*(){const{groupProfile:{groupID:z}={},lastMessage:{lastSequence:X}={}}=O,nA=`${h.CONV_GROUP}${z}`;let DA=this._getLocalLastMessageSequence(nA);this._shouldRecoverHistory({localLastMessageSequence:DA,serverLastMessageSequence:X})&&(yield this._recoverGroupHistoryForConversation({conversationID:nA,localLastMessageSequence:DA,serverLastMessageSequence:X,groupTipList:N})),v.push(nA.replace(h.CONV_GROUP,""))}))),{recoverRevokeNoticeGroupIDList:v,groupTipList:N}})}_recoverGroupHistoryForConversation(p){return mA(this,arguments,void 0,function*({conversationID:h,localLastMessageSequence:v,serverLastMessageSequence:N,groupTipList:O}){try{const{utils:{isArray:z,isObject:X,isEmpty:nA},OuterEvent:DA,OuterConstant:GA,notificationCenter:VA,message:ie,appStore:Ee,common:{getMessagePreviewText:He,buildLastMessage:At}}=this._core,st=N-v,bt=Math.min(20,st),xt={},Ui=yield ie.messageHistory.getGroupRoamingMessagesByAnchor({conversationID:h,sequence:v+bt,direction:GA.Direction.FORWARD,count:bt}),{nextReqMessageIDFromServer:ao,hasNoMoreHistoryMessage:zi,messageList:ui,serverGroupTipList:Oo}=Ui;z(Oo)&&O.push(...Oo);const $o=zi&&ao<0,Qi=[];if(z(ui)&&(ui.forEach(Ki=>{ie.messageReceiver.groupMessageReceiver.updateMessageProfile(Ki),Ki.from===GA.CONV_SYSTEM&&(Ki.isSystemMessage=!1),ie.messageDataHandler.storeConversationMessage(Ki)&&!nA(Ki.payload)&&(Qi.push(Ki),Ki._isExcludedFromLastMessage||(xt.lastMessage=At(Ki)))}),Qi.length>0&&VA.emitOuterEvent(DA.MESSAGE_RECEIVED,{name:DA.MESSAGE_RECEIVED,data:Qi})),!$o&&ui.length>0){const Ki=ui[ui.length-1].sequence;yield this._recoverGroupHistoryForConversation({conversationID:h,localLastMessageSequence:Ki,serverLastMessageSequence:N,groupTipList:O})}X(xt.lastMessage)&&(xt.lastMessage.messageForShow=He(xt.lastMessage.type,xt.lastMessage.payload),Ee.conversationStore.updateConversation(h,xt))}catch(z){this._core.ssoLog.error("_recoverGroupHistoryForConversation",`Recovery failed for conversation:${h}`,{error:z})}})}_updateLastMessageSequenceMapOnDisconnect(){const{message:p}=this._core,h=p.messageDataHandler.getContinuousMessagesByConversation();for(const[v,N]of h){const O=Array.from(N.values());if(O?.length>0){const z=O[O.length-1];v.startsWith("C2C")?this._lastMessageTimeMapOnDisconnect.set(v,z.time):v.startsWith("GROUP")&&this._lastMessageSequenceMapOnDisconnect.set(v,z.sequence)}}}_getLocalLastMessageSequence(p){const{message:h}=this._core;if(this._lastMessageSequenceMapOnDisconnect.has(p))return this._lastMessageSequenceMapOnDisconnect.get(p);const v=h.messageDataHandler.getLocalMessageList(p),N=v[v.length-1];return N?.sequence}_shouldRecoverHistory(p){const{localLastMessageSequence:h,serverLastMessageSequence:v}=p;if(typeof h!="number"||typeof v!="number")return!1;const N=v-h;return v!==0&&h>0&&N>=gC&&N{z.type===v.CONV_C2C&&O.push(z)}),this._recoverC2CHistoryMessage(O)}}_recoverC2CHistoryMessage(p){return mA(this,void 0,void 0,function*(){yield Promise.all(p?.map(h=>mA(this,void 0,void 0,function*(){const{conversationID:v,lastMessage:{lastTime:N}={}}=h,O=this._getLocalLastMessageTime(v);this._shouldRecoverC2CHistory({localLastMessageTime:O,serverLastMessageTime:N})&&(yield this._recoverHistoryForC2CConversation({conversationID:v,localLastMessageTime:O,serverLastMessageTime:N}))})))})}_shouldRecoverC2CHistory(p){const{localLastMessageTime:h,serverLastMessageTime:v}=p,N=v-h;return h>0&&N>=1&&N<=600}_recoverHistoryForC2CConversation(p){return mA(this,void 0,void 0,function*(){var h;const{conversationID:v,localLastMessageTime:N,serverLastMessageTime:O}=p,{utils:{isArray:z,isObject:X,isEmpty:nA,safeStringify:DA},OuterEvent:GA,OuterConstant:VA,notificationCenter:ie,message:Ee,appStore:He,common:{getMessagePreviewText:At,buildLastMessage:st}}=this._core;try{const bt={},xt=yield Ee.messageHistory.getC2CRoamingMessagesByAnchor({conversationID:v,direction:VA.Direction.BACKWARD,time:N,count:20});if(nA(xt))return;const{hasNoMoreHistoryMessage:Ui,messageList:ao}=xt,zi=[];z(ao)&&(ao.forEach(Oo=>{Ee.messageDataHandler.storeConversationMessage(Oo)&&!nA(Oo.payload)&&(zi.push(Oo),Oo._isExcludedFromLastMessage||(bt.lastMessage=st(Oo)))}),zi.length>0&&ie.emitOuterEvent(GA.MESSAGE_RECEIVED,{name:GA.MESSAGE_RECEIVED,data:zi}));const ui=(h=ao[ao.length-1])===null||h===void 0?void 0:h.time;!Ui&&ui>O&&(yield this._recoverHistoryForC2CConversation({conversationID:v,localLastMessageTime:ui,serverLastMessageTime:O})),X(bt.lastMessage)&&(bt.lastMessage.messageForShow=At(bt.lastMessage.type,bt.lastMessage.payload),He.conversationStore.updateConversation(v,bt))}catch(bt){this._core.ssoLog.error("_recoverHistoryForC2CConversation",`Recovery failed for conversation:${v} error: ${DA(bt)}`)}})}_getLocalLastMessageTime(p){const{message:h}=this._core;if(this._lastMessageTimeMapOnDisconnect.has(p))return this._lastMessageTimeMapOnDisconnect.get(p);const v=h.messageDataHandler.getLocalMessageList(p),N=v[v.length-1];return N?.time}reset(){this._lastMessageSequenceMapOnDisconnect.clear(),this._lastMessageTimeMapOnDisconnect.clear()}dispose(){this.reset()}},cC=new class{constructor(){this.name="HistoryMessage"}install(p){this._core=p,Rc.init(p),uI.init(p),Fa.init(p),p.notificationCenter.subscribeInnerEvent(p.InnerEvent.LOGOUT,this._reset,this),p.notificationCenter.subscribeInnerEvent(p.InnerEvent.DESTROY,this.dispose,this)}dispose(){const{notificationCenter:p,InnerEvent:h}=this._core;p.unSubscribeInnerEvent(h.LOGOUT,this._reset,this),p.unSubscribeInnerEvent(h.DESTROY,this.dispose,this),Fa.dispose()}_reset(){Fa.reset()}},Oa=new class{init(p){this.core=p}},Ir=new class{constructor(){this._reportedAtomicStoreIDs=new Set}init(p){const{helper:{registerExperimentalAPI:h}}=p;this._core=p,h("reportModalView",this),h("reportTUIFeatureUsage",this),h("reportRoomEngineEvent",this)}reportModalView(p){const{ssoLog:h,utils:{safeStringify:v,isString:N}}=this._core;try{if(!N(p))throw new Error("reportModalView data is not a string");h.createSSOLogData({method:"reportModalView",message:p,eventType:30}).end(!0)}catch(O){h.debug(`reportModalView Report failed: ${v(O)}`)}}reportTUIFeatureUsage(p){const{ssoLog:h,utils:{safeStringify:v,isEmpty:N}}=this._core,{atomicStoreID:O}=p;try{N(O)||this._reportedAtomicStoreIDs.has(O)||(this._core.ssoLog.info("reportTUIFeatureUsage",`atomicStoreID: ${p.atomicStoreID}`,{method:"reportTUIFeatureUsage",eventType:31,code:O}),this._reportedAtomicStoreIDs.add(O))}catch(z){h.debug(`reportTUIFeatureUsage Report failed: ${v(z)}`)}}reportRoomEngineEvent(p){const{utils:{safeStringify:h},ssoLog:v}=this._core;try{v.debug(`reportRoomEngineEvent Report: ${h(p)}`);const{eventId:N,eventCode:O,eventResult:z,eventMessage:X,moreMessage:nA,extensionMessage:DA}=p;v.createSSOLogData({method:DA,code:N,message:X,eventType:30,costTime:O,uiPlatform:z,moreMessage:nA}).end(!0)}catch(N){v.debug(`reportRoomEngineEvent Report failed: ${h(N)}`)}}reset(){this._reportedAtomicStoreIDs.clear()}dispose(){this.reset()}},Ed=new class{constructor(){this.name="DataReport"}install(p){this._core=p;const{notificationCenter:h,InnerEvent:{LOGOUT:v,DESTROY:N}}=p;Oa.init(p),Ir.init(p),h.subscribeInnerEvent(v,this._reset,this),h.subscribeInnerEvent(N,this._dispose,this)}_reset(){Ir.reset()}_dispose(){const{notificationCenter:p,InnerEvent:{LOGOUT:h,DESTROY:v}}=this._core;p.unSubscribeInnerEvent(h,this._reset,this),p.unSubscribeInnerEvent(v,this._dispose,this),Ir.dispose()}};let Nu=ua.STANDARD,ur=[];Nu=ua.BASIC,ur=[nC,oh,no,_u,cg,cC,Ed];function wc(p,h){const{operationType:v,memberInfoList:N,operatorInfo:O}=p||{};let z={};if(Rs(N)?Rs(O)||(z=O):v!==oa.JOINED&&v!==oa.KICKED&&v!==oa.ADMIN_SET&&v!==oa.ADMIN_CANCELED||(z=Object.assign({},N[0])),!Rs(z)){const{nick:X="",avatar:nA=""}=z;h.nick=X,h.avatar=nA}}const il=p=>({lastTime:p?.time||p?.lastTime||0,lastSequence:p?.sequence||p?.lastSequence||0,fromAccount:p?.from||p?.fromAccount||"",messageForShow:YI(p?.type,p?.payload),payload:p?.payload||null,type:p?.type||"",isRevoked:p?.isRevoked||!1,cloudCustomData:p?.cloudCustomData||"",onlineOnlyFlag:p?._onlineOnlyFlag||!1,nick:p?.nick||"",nameCard:p?.nameCard||"",version:p?.version||0,isPeerRead:p?.isPeerRead||!1,revoker:p?.revoker||null});var Lg=Object.freeze({__proto__:null,ChatError:rs,WorkflowManager:tn,buildAndSendPacket:Zg,buildLastMessage:il,get builtInPlugins(){return ur},checkBusinessCapabilityBits:jc,deepMerge:Ua,getCurrentUserID:qn,getErrorMessage:vl,getMessagePreviewText:YI,isC2CConv:p=>l(p)&&p.slice(0,3)===_g.CONV_C2C,isCommunity:Ea,isGroupConv:p=>l(p)&&p.slice(0,5)===_g.CONV_GROUP,isInternational:vu,isTopic:zr,isUnlimitedAVChatRoom:function(){var p;return!!(!((p=fe.store.get("instance"))===null||p===void 0)&&p.unlimitedAVChatRoom)},liteChatInstanceMap:ws,registerInterceptor:Dr,registerValidateConfig:Mc,requireAuth:gs,get sdkEdition(){return Nu},setGroupTipsUserInfo:wc,t:sC,updateGroupAtInfo:(p,h)=>{const{CONV_AT_ME:v,CONV_AT_ALL:N,CONV_AT_ALL_AT_ME:O}=hs;if(function(nA,DA){const{CONV_AT_ME:GA,CONV_AT_ALL:VA,CONV_AT_ALL_AT_ME:ie}=hs,{groupID:Ee,sequence:He}=nA;let At=!1;return Ea({groupID:Ee})&&DA.forEach(st=>{st.messageSequence===He&&(st.atTypeArray.includes(GA)&&nA.groupAtType.includes(VA)&&(st.atTypeArray=[ie]),st.atTypeArray.includes(VA)&&nA.groupAtType.includes(GA)&&(st.atTypeArray=[ie],st.__random=nA.__random,st.__sequence=nA.__sequence),At=!0)}),At}(p,h))return;let z=[...p.groupAtType];z.includes(v)&&z.includes(N)&&(z=[O]);const X={from:p.from,groupID:p.groupID,topicID:p.topicID,messageSequence:p.sequence,atTypeArray:z,__random:p.__random,__sequence:p.__sequence};h.push(X)},validateAndExecute:Rl,validateParameters:rd});class Fo{constructor(){this._builtInPlugins=new Set,this._externalPlugins=new Set}static getInstance(){return Fo._instance||(Fo._instance=new Fo),Fo._instance}static setInstance(h){Fo._instance=h}installBuiltInPlugin(h){h&&this._installPlugin(h,this._builtInPlugins)}installExternalPlugin(h){h&&this._installPlugin(h,this._externalPlugins)}clear(){this._builtInPlugins=new Set,this._externalPlugins=new Set}_installPlugin(h,v){let N=[];N=B(h)?h:[h];const O=N.findIndex(X=>X?.name==="AVChatRoom"),z=O>-1?N.splice(O,1):[];N.forEach(X=>{this._isPluginInstalled(X.name)||(X&&me(X.install)?(v.add(X.name),me(X.getInstalledSubPlugins)?(z?.forEach(nA=>v.add(nA?.name)),X.install(js.getInstance().exposeApiForPlugin(),z)):X.install(js.getInstance().exposeApiForPlugin()),me(X.handleLoginSuccess)&&this._isLoggedIn()&&X.handleLoginSuccess()):me(X)?(v.add(X.name),X(js.getInstance().exposeApiForPlugin()),me(X.handleLoginSuccess)&&this._isLoggedIn()&&X.handleLoginSuccess()):console.warn('A plugin must either be a function or an object with an "install" function.'))})}_isPluginInstalled(h){return this._builtInPlugins.has(h)||this._externalPlugins.has(h)}_isLoggedIn(){var h;return((h=fe.store.get("login"))===null||h===void 0?void 0:h.isLoggedIn)===!0}}var $g=new class{constructor(){this._conversationMap=new Map}getConversationMap(){return this._conversationMap}getConversation(p){return this._conversationMap.get(p)}updateConversation(p,h,v){const{emit:N=!0,needSort:O=!1}=v||{},z=this._conversationMap.get(p);z&&!Rs(h)&&(Object.keys(h).forEach(X=>{z[X]=h[X]}),N&&fe.notificationCenter.emitInnerEvent(Ii.CONVERSATION_UPDATED,{needSort:O}))}deleteConversation(p){this._conversationMap.has(p)&&(this._conversationMap.delete(p),fe.notificationCenter.emitInnerEvent(Ii.CONVERSATION_UPDATED))}},za=new class{constructor(){this._groupMap=new Map}getGroupMap(){return this._groupMap}getGroup(p){return this._groupMap.get(p)}updateGroup(p,h){const v=this._groupMap.get(p);v&&!Rs(h)&&Object.keys(h).forEach(N=>{v[N]=h[N]})}},_l=new class{constructor(){this._messagesByConversation=new Map}updateMessage(p,h,v){var N;const{operation:O,updateUnreadCount:z=!0}=v,X=yo(v,["operation","updateUnreadCount"]),nA=[];for(const DA of h){const GA=(N=this._messagesByConversation.get(p))===null||N===void 0?void 0:N.get(DA);if(!GA)return!1;Object.keys(X).forEach(VA=>{GA[VA]=X[VA]}),nA.push(GA)}return this._emitMessageStoreOperationEvent(O,{conversationID:p,messageList:nA,updateUnreadCount:z}),nA}getMessagesByConversation(p){var h;return[...((h=this._messagesByConversation.get(p))===null||h===void 0?void 0:h.values())||[]]}getMessages(){return this._messagesByConversation}_emitMessageStoreOperationEvent(p,h){const{conversationID:v}=h;zr(v)?fe.notificationCenter.emitInnerEvent(ag[p],h):fe.notificationCenter.emitInnerEvent(p,h)}},Xr=new class{constructor(){this.userProfileMap=new Map,this.friendMap=new Map}getUserProfileMap(){return this.userProfileMap}getFriendMap(){return this.friendMap}getUserProfile(p){return this.userProfileMap.get(p)}getFriend(p){return this.friendMap.get(p)}},nh=Object.freeze({__proto__:null,conversationStore:$g,groupStore:za,messageStore:_l,userStore:Xr});class js{static getInstance(){return js._instance||(js._instance=new js),js._instance}static setInstance(h){js._instance=h}constructor(){this._experimentalApiMap={statTUIKeyFeatures:this.statKeyFeatureUsage.bind(this),setApplicationID:this.setApplicationID.bind(this)},this._apiHandlersMap={},this._apiMap={on:fe.notificationCenter.subscribeOuterEvent.bind(fe.notificationCenter),off:fe.notificationCenter.unSubscribeOuterEvent.bind(fe.notificationCenter),destroy:this.destroy.bind(this),callExperimentalAPI:this.callExperimentalAPI.bind(this),use:Fo.getInstance().installExternalPlugin.bind(Fo.getInstance()),registerPlugin:this.registerPlugin.bind(this),setLogLevel:this.setLogLevel.bind(this)}}registerPlugin(h){fe.ssoLog.debug("registerPlugin",h)}statKeyFeatureUsage(h){fe.ssoLog.debug("statTUIKeyFeatures",h)}setLogLevel(h){fe.ssoLog.debug("setLogLevel",h),fe.ssoLog.setLogLevel(h)}setApplicationID(h){fe.store.set("instance",{applicationID:h})}getApiMap(){return this._apiMap}setApiMap(h){this._apiMap=h}registerApi(h){const{common:{timeManager:v},utils:{safeStringify:N}}=fe,{apiName:O,context:z,methodName:X=O,matcher:nA}=h;this._apiHandlersMap[O]||(this._apiHandlersMap[O]=[]),this._apiHandlersMap[O].push({context:z,methodName:X,matcher:nA}),this._apiMap[O]&&this._apiHandlersMap[O].length!==1||(this._apiMap[O]=(...DA)=>{const GA=v.getServerTimeMs();let VA=0;O==="login"&&(VA=4),nr.includes(O)&&fe.ssoLog.debug(O,`${O} start params: ${N(DA)}`),Rl(X,DA);const ie=this._apiHandlersMap[O];for(const Ee of ie)if(!Ee.matcher||Ee.matcher(DA))try{const He=Ee.context[Ee.methodName].bind(Ee.context)(...DA);return this._isPromiseLike(He)?this._handleAsyncResult(He,O,VA,GA):(this._reportApiSuccessLog({result:He,apiName:O,eventType:VA,startTime:GA}),He)}catch(He){throw fe.ssoLog.error(O,`${O} fail ${He?.message||He?.errorMessage})`,{error:He,costTime:v.getServerTimeMs()-GA,eventType:VA,method:O}),He}})}registerExperimentalAPI(h,v,N){const O=N||h;this._experimentalApiMap[h]=v[O].bind(v)}destroy(){return mA(this,void 0,void 0,function*(){var h,v;try{!((h=fe.store.get("login"))===null||h===void 0)&&h.isLogin&&(yield this._apiMap.logout()),fe.notificationCenter.emitInnerEvent(Ii.DESTROY)}catch(N){console.debug("destroy error: ",N)}finally{fe.notificationCenter.emitOuterEvent(Dn.SDK_DESTROY,{SDKAppID:(v=fe.store.get("instance"))===null||v===void 0?void 0:v.sdkAppId}),ws.clear(),Fo.getInstance().clear(),tn.getInstance().destroy(),fe.destroy()}})}exposeApiForClient(){return this._apiMap}exposeApiForPlugin(){return Object.assign(Object.assign({InnerEvent:Ii,InnerEventSubType:fe.notificationCenter.InnerEventSubType,OuterEvent:Dn,OuterConstant:hs,SignalingEvent:so,helper:Object.assign(Object.assign(Object.assign({},fe.utils),fe.common),{registerApi:this.registerApi.bind(this),registerExperimentalAPI:this.registerExperimentalAPI.bind(this),registerInterceptor:Dr,registerValidateConfig:Mc,checkBusinessCapabilityBits:jc,registerWorkflowStep:tn.getInstance().registerWorkflowStep.bind(tn.getInstance()),ChatError:rs}),apiMap:this._apiMap},fe),{constants:Object.assign(Object.assign({},PI),fe.constants),common:Object.assign(Object.assign(Object.assign({},Lg),fe.common),{workflowManager:tn.getInstance()}),utils:fe.utils,appStore:nh})}callExperimentalAPI(h,v){return fe.ssoLog.debug(`callExperimentalAPI.${h} start params: ${fe.utils.safeStringify(v)}`),this._experimentalApiMap[h]?this._experimentalApiMap[h](v):(fe.ssoLog.error("callExperimentalAPI",`callExperimentalAPI.${h} not found, params: ${fe.utils.safeStringify(v)}`),Promise.reject(new rs({code:ko.INVALID_OPERATION})))}_isPromiseLike(h){return h!==null&&typeof h=="object"&&typeof h.then=="function"}_handleAsyncResult(h,v,N,O){return h.then(z=>(this._reportApiSuccessLog({result:z,apiName:v,eventType:N,startTime:O}),z)).catch(z=>{throw fe.ssoLog.error(v,`${v} fail ${z?.message||z?.errorMessage})`,{error:z,costTime:fe.common.timeManager.getServerTimeMs()-O,eventType:N,method:v,startTime:O}),z})}_reportApiSuccessLog(h){let{result:v,apiName:N,startTime:O,eventType:z}=h;const{timeManager:X}=fe.common,{successLog:{message:nA,moreMessage:DA}={message:"",moreMessage:""}}=v||{},GA=X.getServerTimeMs();N==="login"&&(O+=X.getTimeOffsetWithServer()),nr.includes(N)&&fe.ssoLog.info(N,`${N} success ${nA} ${DA}`,{costTime:GA-O,eventType:z,message:nA,moreMessage:DA,startTime:O}),v?.successLog&&delete v.successLog}}class qI{constructor(){this._latestLoginAt=0,this._latestSendOnlinePresenceRequestTime=0,this._helloInterval=120,this._customLoginInfo=""}init(){const{notificationCenter:h,store:v}=fe;v.set("login",{isReady:!1}),js.getInstance().registerApi({apiName:"login",context:this}),js.getInstance().registerApi({apiName:"logout",context:this}),js.getInstance().registerApi({apiName:"getLoginUser",context:this}),js.getInstance().registerApi({apiName:"isReady",context:this}),js.getInstance().registerApi({apiName:"getServerTime",context:this}),js.getInstance().registerExperimentalAPI("setCustomLoginInfo",this),h.subscribeInnerEvent(Ii.RECONNECTED,this._reLogin,this),fe.notificationCenter.subscribeInnerEvent(Ii.DESTROY,this._dispose,this)}login(h){return mA(this,void 0,void 0,function*(){var v;const{sdkEdition:N}=fe.store.get("instance")||{};try{if(this._isLoginIn())return this._createRepeatLoginResponse();if(this._isLoginFrequencyExceeded())throw new rs({functionName:"login",code:ko.REPEAT_LOGIN});const O=yield this._performLogin(h);this._validateAfterLogin(O),this._handleLoginSuccess(O),yield this._ensureAsyncComplete(),this._updateAndEmitSDKReady(),this._latestLoginAt=0;const z=(v=fe.channel.getSocketAdapter())===null||v===void 0?void 0:v.getId(),{appId:X,href:nA}=fe.store.get("instance")||{},{instanceID:DA,customStatus:GA}=O||{};return{code:0,data:O,successLog:{message:N,moreMessage:`socketID:${z} instanceID:${DA} customStatus:${GA} href: ${nA} appId: ${X}`}}}catch(O){const{errorCode:z}=O;z!==ko.REPEAT_LOGIN&&(this._latestLoginAt=0);const X=new rs({functionName:"login",code:z});throw console.error(X),X}})}_reLogin(){return mA(this,void 0,void 0,function*(){var h;try{if(!this._isLoginIn())return;const v=yield Mu(this._customLoginInfo);if(v){const{instanceID:N,customStatus:O}=v;fe.store.set("login",{statusInstanceId:N}),tn.getInstance().executeWorkflow(sr.SYNC_SERVER_INFO_AFTER_RE_ONLINE,{customStatus:O,statusType:yu.USER_STATUS_ONLINE});const z=(h=fe.channel.getSocketAdapter())===null||h===void 0?void 0:h.getId();fe.ssoLog.info("reLogin",`socketId:${z} instanceId:${N}`)}}catch(v){console.warn(v)}})}logout(){return mA(this,arguments,void 0,function*(h=Wa.USER_INITIATED){const{ssoLog:v}=fe;v.debug("logout",`logout start logoutReason: ${h}`);try{yield this._performLogout(h),v.info("logout","logout success"),fe.ssoLog.uploadSSOLogData()}catch(N){const{errorCode:O}=N;throw new rs({functionName:"logout",code:O})}finally{this.handleLogoutCompleted()}return{code:0,data:{}}})}getLoginUser(){return this._isLoginIn()?qn():""}isReady(){var h;return(h=fe.store.get("login"))===null||h===void 0?void 0:h.isReady}setCustomLoginInfo(h=""){this._customLoginInfo=h}handleLogoutCompleted(){this._updateAndEmitSDKNotReady(),this._reset(),tn.getInstance().reset(),fe.notificationCenter.emitInnerEvent("logout")}getServerTime(){const{timeManager:h}=fe.common;return h.getServerTimeMs()}_updateAndEmitSDKReady(){fe.store.set("login",{isReady:!0}),setTimeout(()=>{fe.notificationCenter.emitOuterEvent(Dn.SDK_READY,{name:Dn.SDK_READY})},1)}_updateAndEmitSDKNotReady(){fe.store.set("login",{isReady:!1}),fe.notificationCenter.emitOuterEvent(Dn.SDK_NOT_READY,{name:Dn.SDK_NOT_READY})}_validateAfterLogin(h){const v="login";if(!h)throw new rs({functionName:v,message:"login response is empty"});const{tinyID:N,a2Key:O}=h||{};if(!N)throw new rs({functionName:v,code:ko.NO_TINYID});if(!O)throw new rs({functionName:v,code:ko.NO_A2KEY})}_createRepeatLoginResponse(){var h;return{code:0,data:{actionStatus:"OK",errorCode:0,errorInfo:vl({code:"RepeatLogin",replacement1:(h=fe.store.get("login"))===null||h===void 0?void 0:h.userId}),repeatLogin:!0}}}_performLogin(h){return mA(this,void 0,void 0,function*(){const{userID:v,userSig:N}=h;return fe.store.set("login",{userId:v,userSig:N}),this._latestLoginAt=Date.now(),Mu(this._customLoginInfo)})}_ensureAsyncComplete(){return mA(this,void 0,void 0,function*(){yield new Promise(h=>{setTimeout(()=>h(null),1)})})}_handleLoginSuccess(h){const{timeManager:v}=fe.common,{helloInterval:N,timeStamp:O,customStatus:z,purchaseBits:X}=h,nA=1e3*O;v.calculateTimeOffsetWithServer(this._latestLoginAt,nA),this._helloInterval=N||120,this._updateLoginStore(h),fe.user.userStatus.setCustomStatus(z),tn.getInstance().executeWorkflow(sr.SYNC_SERVER_INFO_AFTER_LOGIN,{purchaseBits:X}),fe.common.taskScheduler.addTask({id:Du,intervalMs:1e3*this._helloInterval,callback:this._sendOnlinePresenceRequest,context:this})}_performLogout(h){return function(v){return mA(this,void 0,void 0,function*(){const{logoutReason:N}=v,O="im_open_status.wslogout",z=fe.common.generateProtocolData({servcmd:O,data:{wslogout_type:N,isWebUniapp:0}}),X=`${z.head.seq}${O}`;return yield fe.channel.sendPacket(z,{requestId:X})})}({logoutReason:h})}_updateLoginStore(h){const{a2Key:v,tinyID:N,instanceID:O,authKey:z}=h;fe.store.set("login",{a2Key:v,tinyID:N,statusInstanceId:O,authKey:z,isLoggedIn:!0})}_sendOnlinePresenceRequest(){return mA(this,void 0,void 0,function*(){this._latestSendOnlinePresenceRequestTime=Date.now();try{yield function(){const h="im_open_status.wshello",v=fe.common.generateProtocolData({servcmd:h,data:{isWebUniapp:0}}),N=`${v.head.seq}${h}`;return fe.channel.sendPacket(v,{requestId:N})}()}catch(h){fe.ssoLog.warn("_sendOnlinePresenceRequest",` error:${h.message}`)}})}_isLoginIn(){var h;return((h=fe.store.get("login"))===null||h===void 0?void 0:h.isLoggedIn)===!0}_isLoginFrequencyExceeded(){return Date.now()-this._latestLoginAt<=15e3}_reset(){fe.common.taskScheduler.removeTask(Du),this._helloInterval=120,this._latestSendOnlinePresenceRequestTime=0,this._latestLoginAt=0,this._customLoginInfo="",fe.store.clear("login"),fe.store.set("login",{isReady:!1}),fe.store.set("instance",{applicationID:0})}_dispose(){this._reset();const{notificationCenter:h}=fe;h.unSubscribeInnerEvent(Ii.RECONNECTED,this._reLogin,this),h.unSubscribeInnerEvent(Ii.DESTROY,this._dispose,this)}}const Us={login:{userID:{required:!0,rules:["string"],allowEmpty:!1},userSig:{required:!0,rules:["string"],allowEmpty:!1}}},_c={logout:!0};class Ac{constructor(){this.loginAction=new qI,this.kickedOutHandler=new Sc,this.loginAction.init(),this.kickedOutHandler.init(),Mc({auth:_c,params:Us})}}var Er,Pr,Za;(function(p){p.CONV_C2C="C2C",p.CONV_GROUP="GROUP",p.CONV_TOPIC="TOPIC",p.CONV_SYSTEM="@TIM#SYSTEM"})(Er||(Er={})),function(p){p.MSG_PRIORITY_HIGH="High",p.MSG_PRIORITY_NORMAL="Normal",p.MSG_PRIORITY_LOW="Low",p.MSG_PRIORITY_LOWEST="Lowest"}(Pr||(Pr={})),function(p){p.MSG_TEXT="TIMTextElem",p.MSG_CUSTOM="TIMCustomElem",p.MSG_LOCATION="TIMLocationElem",p.MSG_FACE="TIMFaceElem",p.MSG_IMAGE="TIMImageElem",p.MSG_AUDIO="TIMSoundElem",p.MSG_FILE="TIMFileElem",p.MSG_VIDEO="TIMVideoFileElem",p.MSG_GRP_TIP="TIMGroupTipElem",p.MSG_GRP_SYS_NOTICE="TIMGroupSystemNoticeElem",p.MSG_MERGER="TIMRelayElem"}(Za||(Za={}));const SE={1:Pr.MSG_PRIORITY_HIGH,2:Pr.MSG_PRIORITY_NORMAL,3:Pr.MSG_PRIORITY_LOW,4:Pr.MSG_PRIORITY_LOWEST},lC=0,rh=1;var ro;(function(p){p.IN="in",p.OUT="out"})(ro||(ro={}));const Tc=2,Tl={};function IC(p){if(!p)return 0;if(Tl[p]===void 0){const h=new Date,v=`3${h.getHours()}`.slice(-2),N=`0${h.getMinutes()}`.slice(-2),O=`0${h.getSeconds()}`.slice(-2);Tl[p]=parseInt([v,N,O,"0001"].join(""),10),console.log(`autoIncrementIndex start index:${Tl[p]}`)}else Tl[p]+=1;return Tl[p]}class uC{constructor(h){this.ID="",this.random=0,this.sequence=0,this.nameCard="",this.isRead=!1,this.isPeerRead=!1,this.isDeleted=!1,this.isResend=!1,this.hasRiskContent=!1,this._onlineOnlyFlag=!1,this.atUserList=[],this._groupAtInfoList=[],this.isBroadcastMessage=!1,this.priority=Pr.MSG_PRIORITY_NORMAL,this._relayFlag=!1;const{clientTime:v=fe.common.timeManager.getServerTimeSeconds()||0,senderTinyID:N,currentUser:O,needReadReceipt:z,isSupportExtension:X,customModerationConfigurationId:nA,to:DA,from:GA,nick:VA="",avatar:ie="",time:Ee,messageControlInfo:He,tinyID:At,cloudCustomData:st="",messageLifeTime:bt,messageVersion:xt=0,conversationType:Ui,sequence:ao,checkResult:zi=0,isPlaceMessage:ui=0,messageFlagBits:Oo,receiverList:$o,isSystemMessage:Qi=!1,status:Ki=wg.SUCCESS,revokeReason:Ws="",conversationSubType:_e,clientSequence:vt,protocol:FA="JSON",revokerInfo:Wt={userID:"",nick:"",avatar:""},readReceiptInfo:En={readCount:void 0,unreadCount:void 0,isPeerRead:void 0,timestamp:0},random:Zt,groupProfile:us,atUserList:vi,flow:Co,isRead:Et=!1,priority:Ct=Pr.MSG_PRIORITY_NORMAL,onlineOnlyFlag:ug=!1,nameCard:ks="",quoteInfo:ji}=h;var Yr;this.clientTime=v,this.senderTinyID=N||At,this.needReadReceipt=z===!0||z===1,this.isSupportExtension=X===!0||X===1,this._cmConfigID=nA,this.to=DA,this.nick=VA,this.avatar=ie,this.protocol=FA,this.random=Zt===void 0?(Yr=Yr||99999999,Math.round(Math.random()*Yr)):Zt,this.time=Ee||Math.ceil(Date.now()/1e3),this._isExcludedFromLastMessage=!!He?.excludedFromLastMessage,this._isExcludedFromUnreadCount=!!He?.excludedFromUnreadCount,this.isModified=!!xt,this.cloudCustomData=st,this.messageLifeTime=bt,this.from=GA||null,this.sequence=ao||0,this.conversationType=Ui||Er.CONV_C2C,this.hasRiskContent=zi>1,this.version=xt,this.isPlaceMessage=ui,this.isRevoked=ui===2||Oo===8,this.isSystemMessage=Qi,this.readReceiptInfo=En,this.revokeReason=Ws,this.revokerInfo=Wt,this._receiverList=$o,this.conversationSubType=_e,this.revoker=Wt?.revoker||"",this.clientSequence=vt||ao||0,this.status=Ki,this.atUserList=vi||[],this.flow=Co,this.isRead=Et,this.priority=Ct,this._onlineOnlyFlag=ug,this.nameCard=ks,this.quoteInfo=ji,this.reInitialize(O),this._initC2CReadReceiptInfo(h),this._extractGroupInfo(us)}getElements(){return this._elements}isOnlineMessage(){return this.messageLifeTime===0}setElement(h){Array.isArray(h)?this._elements=h:this._elements=[h],this._updatePayloadAndType()}transformElementsToServerFormat(){return this._elements?Array.isArray(this._elements)?this._elements.map(h=>h.transformToServerFormat()):this._elements.transformToServerFormat():null}setRelayFlag(h){this._relayFlag=h}validateBeforeSend(){var h,v,N;return this._relayFlag?{isValid:!0}:((h=this._elements)===null||h===void 0?void 0:h.length)>0?(N=(v=this._elements[0])===null||v===void 0?void 0:v.validateBeforeSend)===null||N===void 0?void 0:N.call(v):{isValid:!1}}_updatePayloadAndType(){this._elements[0]&&(this.payload=this._elements[0].content,this.type=this._elements[0].type)}_initC2CReadReceiptInfo(h){const{readReceiptSentByPeer:v,timestamp:N=0}=h;this.conversationType===Er.CONV_C2C&&this.needReadReceipt===!0&&(this.readReceiptInfo.isPeerRead=v===1,this.readReceiptInfo.timestamp=N)}_extractGroupInfo(h){if(!h)return;const{From_AccountNick:v,From_AccountHeadurl:N,MsgFrom_AccountExtraInfo:O,GroupType:z}=h,{NameCard:X}=O||{};typeof v=="string"&&(this.nick=v),typeof N=="string"&&(this.avatar=N),typeof X=="string"&&(this.nameCard=X),this.conversationSubType=z}reInitialize(h){h===this.from&&(this.isRead=!0),this._initSequence(h),this._concatConversationID(h),this.generateMessageID()}_concatConversationID(h){let v="";const N=this.conversationType;N!==Er.CONV_SYSTEM?(v=N===Er.CONV_C2C?h===this.from?this.to:this.from:this.to,this.conversationID=v?`${N}${v}`:null):this.conversationID=Er.CONV_SYSTEM}_initSequence(h){this.clientSequence===0&&h&&(this.clientSequence=IC(h)),this.sequence===0&&this.conversationType===Er.CONV_C2C&&(this.sequence=this.clientSequence)}generateMessageID(){this.from===Er.CONV_SYSTEM&&(this.senderTinyID="144115198244471703"),this.ID=`${this.senderTinyID}-${this.clientTime}-${this.random}`}setIsRead(h){this.isRead=h}}class Nl{static parseServerPushElement(h){const{MsgContent:v={}}=h,{Data:N,Ext:O,Desc:z}=v;return new Nl({data:N,description:z,extension:O})}constructor(h){this.type=Za.MSG_CUSTOM;const{data:v="",description:N="",extension:O=""}=h;this.content={data:v,description:N,extension:O}}transformToServerFormat(h){const{isMergerMessage:v=!1}=h||{},N=v?this.payload:this.content,{data:O,description:z,extension:X}=N;return{MsgType:this.type,MsgContent:{Data:O,Ext:X,Desc:z}}}validateBeforeSend(){const{isEmpty:h}=fe.utils,v=[this.content.data,this.content.description,this.content.extension].some(N=>!h(N));return{isValid:v,error:v?null:{message:"content can not be empty"}}}}class KI{static parseServerPushElement(h){const{MsgContent:v={Text:""}}=h,{Text:N}=v;return new KI({text:N})}constructor(h){this.type=zg.MSG_TEXT,this.content={text:h.text||""}}validateBeforeSend(){var h,v;return((v=(h=this.content)===null||h===void 0?void 0:h.text)===null||v===void 0?void 0:v.length)>0?{isValid:!0}:{isValid:!1,error:{message:"content can not be empty"}}}transformToServerFormat(h){const{isMergerMessage:v=!1}=h||{},N=v?this.payload:this.content,{text:O}=N;return{MsgType:this.type,MsgContent:{Text:O}}}}var EI=new class{constructor(){this._elementClassMap={[Za.MSG_CUSTOM]:Nl,[Za.MSG_TEXT]:KI}}init(){js.getInstance().registerApi({apiName:"createCustomMessage",context:this}),js.getInstance().registerApi({apiName:"createTextMessage",context:this})}registerElementClass(p,h){var v;(v=h).prototype!==void 0&&"constructor"in v.prototype&&(this._elementClassMap[p]=h)}getElementClass(p){return this._elementClassMap[p]}createMessage(p){const{from:h,flow:v=ro.OUT}=p,{userId:N}=fe.store.get("login")||{};this._isSendByCurrentInstance({from:h,flow:v,currentUser:N})?this._updateWithSenderInfo(p):this._isMultiEndpointSyncMessage({from:h,flow:v,currentUser:N})&&(p.flow=ro.OUT);const O=Object.assign(Object.assign({},p),{currentUser:N});return new uC(O)}createCustomMessage(p){const h=qn(),v=this.createMessage(Object.assign(Object.assign({},p),{from:h})),N=this._elementClassMap[Za.MSG_CUSTOM];if(!v)return null;if(N){const O=new N(p.payload);v.setElement(O)}return v}createTextMessage(p){var h;if(!p)return null;const v=typeof p.payload=="string"?p.payload:((h=p?.payload)===null||h===void 0?void 0:h.text)||"",N=new KI({text:v}),O=qn(),z=fe.message.messageFactory.createMessage(Object.assign(Object.assign({},p),{from:O}));return z.setElement(N),z}_updateWithSenderInfo(p){var h,v;const{nick:N,avatar:O,conversationType:z,to:X}=p,{userId:nA,tinyID:DA}=fe.store.get("login")||{},GA=Xr.getUserProfile(nA);return p.nick=N||GA?.nick||"",p.avatar=O||GA?.avatar||"",p.tinyID=p.tinyID||DA||"",p.from=nA,p.status=wg.UNSENT,p.flow=ro.OUT,z===_g.CONV_GROUP&&(p.nameCard=(v=(h=za.getGroup(X))===null||h===void 0?void 0:h.selfInfo)===null||v===void 0?void 0:v.nameCard),p}_isMultiEndpointSyncMessage(p){const{from:h,flow:v,currentUser:N}=p;return h===N&&v===ro.IN}_isSendByCurrentInstance(p){const{from:h,flow:v,currentUser:N}=p;return h===N&&v===ro.OUT}};const dI={PushFlag:0,Title:"",Desc:"",Ext:"",ApnsInfo:{Sound:"",BadgeMode:0,IsVoipPush:void 0,Image:"",InterruptionLevel:"active",ContentAvailable:0},AndroidInfo:{Sound:"",XiaoMiChannelID:"",OPPOChannelID:"",GoogleChannelID:"",VIVOClassification:1,VIVOCategory:"",HuaWeiCategory:"",OPPOCategory:"",HuaWeiImage:"",HonorImage:"",GoogleImage:"",HonorImportance:"",MeizuNotifyType:void 0}},ME={HonorImportance:{range:["LOW","NORMAL"],defaultValue:void 0},MeizuNotifyType:{range:[0,1],defaultValue:void 0}},Gl={enableIOSBackgroundNotification:{range:[!0,!1],defaultValue:!1},interruptionLevel:{range:["passive","active","time-sensitive","critical"],defaultValue:"active"}};function bl(p,h){return Object.keys(h).forEach(v=>{const{range:N,defaultValue:O}=h[v];p[v]=N.includes(p[v])?p[v]:O}),p}function Ug(p){const h=p.lastIndexOf(".");return h===-1?p:p.slice(0,h)}function ec(p){const{androidInfo:h={},androidOPPOChannelID:v=""}=p,N=h.OPPOChannelID||v,O=bl(h,ME),{sound:z="",FCMChannelID:X=""}=O,nA=yo(O,["sound","FCMChannelID"]);return Object.assign(Object.assign({},nA),{Sound:Ug(z),OPPOChannelID:N,GoogleChannelID:X})}function dd(p){const{apnsInfo:h={},ignoreIOSBadge:v=!1,disableVoipPush:N}=p,O=bl(h,Gl),{ignoreIOSBadge:z,disableVoipPush:X,enableIOSBackgroundNotification:nA}=O,DA=yo(O,["ignoreIOSBadge","disableVoipPush","enableIOSBackgroundNotification"]),GA=z===!0||v===!0?1:0;let VA;return r(N)||(VA=N===!1?1:0),r(X)||(VA=X===!1?1:0),Object.assign(Object.assign({},DA),{BadgeMode:GA,IsVoipPush:VA,ContentAvailable:nA?1:0})}function vE(p){return fe.utils.isPlainObject(p)?{PushFlag:p.disablePush===!0?1:0,Title:p.title||"",Desc:p.description||"",Ext:p.extension||"",ApnsInfo:dd(p),AndroidInfo:ec(p)}:dI}function Nc(p){const{From_AccountHeadurl:h,From_AccountNick:v,IsNeedReadReceipt:N,IsPeerRead:O,IsSyncMsg:z,MsgBody:X,MsgClientTime:nA,MsgLifeTime:DA,MsgRandom:GA,MsgSeq:VA,MsgTimeStamp:ie,SendMsgControl:Ee,SupportMessageExtension:He,TinyId:At,MsgCheckResult:st,CloudCustomData:bt,MsgVersion:xt,MsgFlagBits:Ui,RevokerInfo:ao,InnerSdkCustomData:zi}=p;let ui,{From_Account:Oo,To_Account:$o}=p;if(z===1){const Qi=$o;$o=Oo,Oo=Qi}if(ao){const{Reason:Qi,Revoker_Account:Ki,Revoker_FromUin:Ws}=ao;ui={reason:Qi,revoker:Ki,revokerFromUin:Ws,userID:Ki}}return{from:Oo,avatar:h,nick:v,needReadReceipt:N===1,isSyncMessage:z,clientTime:nA,messageLifeTime:DA,random:GA,sequence:VA,time:ie,messageControlInfo:{excludedFromLastMessage:Ee?.NoLastMsg===1,excludedFromUnreadCount:Ee?.NoUnread===1},isSupportExtension:He,to:$o,tinyID:At,checkResult:st,cloudCustomData:bt,revokerInfo:ui,messageVersion:xt,messageFlagBits:Ui,readReceiptSentByPeer:O,elements:Xa(X),onlineOnlyFlag:DA===0,quoteInfo:Gu(zi)}}function jI(p){const{From_Account:h,MsgBody:v,MsgClientTime:N,MsgRandom:O,MsgSeq:z,MsgTimeStamp:X,To_Account:nA,MsgVersion:DA,CloudCustomData:GA,MsgCheckResult:VA}=p;return{from:h,clientTime:N,random:O,sequence:z,time:X,to:nA,elements:Xa(v),messageVersion:DA,cloudCustomData:GA,checkResult:VA}}function co(p){const{ClientSeq:h,From_Account:v,GroupInfo:N,MsgBody:O,MsgClientTime:z,MsgRandom:X,MsgSeq:nA,MsgTimeStamp:DA,SendMsgControl:GA,SupportMessageExtension:VA,TinyId:ie,CloudCustomData:Ee,MsgVersion:He,MsgCheckResult:At,NeedReadReceipt:st,IsPlaceMsg:bt,RevokerInfo:xt,GroupAtInfo:Ui,OnlineOnlyFlag:ao,InnerSdkCustomData:zi}=p;let ui,Oo=Pr.MSG_PRIORITY_NORMAL;if(Object.keys(SE).includes(String(p.MsgPriority))&&(Oo=SE[p.MsgPriority]),xt){const{Reason:Qi,Revoker_Account:Ki,Revoker_FromUin:Ws}=xt;ui={reason:Qi,revoker:Ki,revokerFromUin:Ws,userID:Ki}}const $o=function(Qi){const Ki=[];return Array.isArray(Qi)&&Qi.forEach(Ws=>{Ws.GroupAtAllFlag===lC?Ki.push(Ws.GroupAt_Account):Ws.GroupAtAllFlag===rh&&Ki.push(hs.MSG_AT_ALL)}),Ki}(Ui);return{clientSequence:h,from:v,groupProfile:N,clientTime:z,priority:Oo,random:X,sequence:nA,time:DA,messageControlInfo:{excludedFromLastMessage:GA?.NoLastMsg===1,excludedFromUnreadCount:GA?.NoUnread===1},isSupportExtension:VA,tinyID:ie,cloudCustomData:Ee,messageVersion:He,checkResult:At,needReadReceipt:st,isPlaceMessage:bt,revokerInfo:ui,atUserList:$o,elements:Xa(O),to:RE(p),onlineOnlyFlag:ao===1,quoteInfo:Gu(zi)}}function RE(p){const{utils:{isEmpty:h},constants:{IS_TOPIC_MESSAGE:v}}=fe,{ToGroupId:N,GroupInfo:{MillionGroupFlag:O=0,TopicId:z}={}}=p;return O!==v||h(z)?N:z}function Xa(p){if(!p)return null;if(Array.isArray(p))return p.map(v=>{const N=fe.message.messageFactory.getElementClass(v.MsgType);return N?.parseServerPushElement(v)});const h=fe.message.messageFactory.getElementClass(p.MsgType);return h?.parseServerPushElement(p)}function WI(p){const{From_Account:h,MsgBody:v,MsgClientTime:N,MsgRandom:O,MsgSeq:z,MsgTimeStamp:X,GroupId:nA,TopicId:DA,MsgVersion:GA,CloudCustomData:VA,MsgCheckResult:ie}=p;return{from:h,clientTime:N,random:O,sequence:z,time:X,groupID:nA,topicID:DA,elements:Xa(v),messageVersion:GA,cloudCustomData:VA,checkResult:ie}}function Gu(p){const{utils:{isString:h,safeStringify:v},ssoLog:N}=fe;if(!h(p))return null;try{const{messageID:O,messageTime:z,messageSequence:X}=JSON.parse(p).businessQuote;return{msgID:O,messageTime:z,messageSequence:X}}catch(O){return N.debug("_parseServerQuoteInfo",v(O)),null}}function Gc({conversationUpdateFields:p,message:h}){const{conversationID:v,conversationType:N,conversationSubType:O,flow:z,_isExcludedFromUnreadCount:X,_isExcludedFromLastMessage:nA}=h,DA=nA?"":il(h),GA=!X&&z===ro.IN;p.has(v)?(p.get(v).lastMessage=DA,GA&&p.get(v).unreadCount++):p.set(v,{conversationID:v,type:N,subType:O,unreadCount:GA?1:0,lastMessage:DA})}function CI(p){return p.filter(h=>{const v=!Rs(h?._elements),N=h?.isPlaceMessage===1;return v||fe.ssoLog.error("emptyMessageBody",`from:${h.from} to:${h.to} sequence:${h.sequence}`),v&&!N})}function ol(p){const{messageDataHandler:h}=fe.message;return!h.isInMessageList(p)&&!h.isMessageSentByCurrentInstance(p)}var sl=Object.freeze({__proto__:null,autoIncrementIndex:IC,createAndroidPushInfo:ec,createApnsPushInfo:dd,createOfflinePushInfo:vE,filterValidMessages:CI,getAndroidSoundName:Ug,parseServerGroupMessage:co,parseServerPushC2CModifyMessage:jI,parseServerPushGroupModifyMessage:WI,parseServerPushMessage:Nc,parseServerPushMessageElement:Xa,shouldStoreMessage:ol,updateConversationFields:Gc});const{isPlainObject:Pa}=fe.utils;function wE(p,h={}){const{onlineUserOnly:v,messageControlInfo:N}=h;let{offlinePushInfo:O}=h;p.conversationType===Er.CONV_C2C&&v===!0&&(O?O.disablePush=!0:O={disablePush:!0});let z="";typeof p.cloudCustomData=="string"&&p.cloudCustomData.length>0&&(z=p.cloudCustomData);const X=[];if(N&&Pa(N)){const{excludedFromUnreadCount:nA,excludedFromLastMessage:DA,excludedFromContentModeration:GA}=N;nA===!0&&X.push("NoUnread"),DA===!0&&X.push("NoLastMsg"),GA===!0&&X.push("NoMsgCheck")}return{onlineUserOnly:v,cloudCustomData:z,messageControlInfo:X,offlinePushInfo:O}}function na(p){const{webhookInfo:{disableCloudMessagePreHook:h=!1,disableCloudMessagePostHook:v=!1}={}}=p||{};if(!h&&!v)return;const N=[];return h&&N.push("ForbidBeforeSendMsgCallback"),v&&N.push("ForbidAfterSendMsgCallback"),N}function Mn(p,h){return mA(this,void 0,void 0,function*(){const v=p.conversationType===Er.CONV_GROUP?function(O,z){var X;const nA=wE(O,z),{onlineUserOnly:DA,cloudCustomData:GA,messageControlInfo:VA,offlinePushInfo:ie}=nA,Ee=JSON.parse(JSON.stringify(O.transformElementsToServerFormat()));let He;return B(O._receiverList)&&O._receiverList.length>0&&(He=O._receiverList,O._receiverList.length>50&&(He=O._receiverList.slice(0,50),console.warn("ReceiverListLimit"))),{servcmd:"group_open_http_svc.send_group_msg",data:{From_Account:(X=fe.store.get("login"))===null||X===void 0?void 0:X.userId,GroupId:O.to,MsgBody:Ee,CloudCustomData:GA,Random:O.random,MsgPriority:O.priority,ClientSeq:O.clientSequence,GroupAtInfo:O._groupAtInfoList,OnlineOnlyFlag:DA?1:0,MsgClientTime:O.clientTime,OfflinePushInfo:vE(ie),SendMsgControl:DA?void 0:VA,NeedReadReceipt:O.needReadReceipt===!0?1:0,To_Account:He,SupportMessageExtension:O.isSupportExtension===!0?1:0,IsRelayMsg:O._relayFlag===!0?1:0,CustomModerationConfigID:O._cmConfigID,ForbidCallbackControl:na(z),InnerSdkCustomData:_E(O)}}}(p,h):function(O,z){var X;const nA=wE(O,z),{onlineUserOnly:DA,cloudCustomData:GA,messageControlInfo:VA,offlinePushInfo:ie}=nA,Ee=DA===!0?0:void 0,He=JSON.parse(JSON.stringify(O.transformElementsToServerFormat()));return{servcmd:"openim.sendmsg",data:{From_Account:(X=fe.store.get("login"))===null||X===void 0?void 0:X.userId,To_Account:O.to,MsgBody:He,CloudCustomData:GA,MsgSeq:O.sequence,MsgRandom:O.random,MsgLifeTime:Ee,From_AccountNick:O.nick,From_AccountHeadurl:O.avatar,SendMsgControl:Ee!==0?VA:void 0,MsgClientTime:O.clientTime,IsNeedReadReceipt:O.needReadReceipt===!0?1:0,SupportMessageExtension:O.isSupportExtension===!0?1:0,IsRelayMsg:O._relayFlag===!0?1:0,CustomModerationConfigID:O._cmConfigID,OfflinePushInfo:vE(ie),ForbidCallbackControl:na(z),InnerSdkCustomData:_E(O)}}}(p,h),N=yield Zg(v);return N?{time:N.MsgTime,messageDropReason:N.MsgDropReason,sequence:N.MsgSeq}:null})}function Nr(p){return mA(this,void 0,void 0,function*(){const{from:h,to:v,version:N=0,sequence:O,random:z,time:X,type:nA,cloudCustomData:DA}=p,GA={From_Account:h,To_Account:v,MsgVersion:N,MsgSeq:O,MsgRandom:z,MsgTime:X,MsgType:nA,MsgBody:p.transformElementsToServerFormat(),CloudCustomData:DA},VA=yield Zg({servcmd:"openim.modify_c2c_msg",data:GA});if(VA){const{MsgBody:ie,MsgVersion:Ee,CloudCustomData:He}=VA;return{elements:Xa(ie),messageVersion:Ee,cloudCustomData:He}}})}function nl(p){return mA(this,void 0,void 0,function*(){const{to:h,version:v=0,sequence:N,cloudCustomData:O}=p,z={GroupId:h,MsgVersion:v,MsgSeq:N,MsgBody:p.transformElementsToServerFormat(),CloudCustomData:O},X=yield Zg({servcmd:"openim.modify_group_msg",data:z});if(X){const{MsgBody:nA,MsgVersion:DA,CloudCustomData:GA}=X;return{elements:Xa(nA),messageVersion:DA,cloudCustomData:GA}}})}function kl(p){return mA(this,void 0,void 0,function*(){const{groupID:h,count:v,messageSequence:N,messageSequenceList:O,getType:z}=p,X={GroupId:h,ReqMsgNumber:v,WithRecalledMsg:1,Version:1,GetType:z};return N&&(X.ReqMsgSeq=N),B(O)&&O.length>0&&(X.ReqMsgSeqList=O),yield Zg({servcmd:"group_open_http_svc.group_msg_get",data:X})})}function bc(p){return mA(this,void 0,void 0,function*(){const{peerAccount:h,count:v,lastMessageTime:N,messageKey:O,direction:z}=p;return Zg({servcmd:"openim.getroammsg",data:{Peer_Account:h,MaxCnt:v,WithRecalledMsg:1,LastMsgTime:N,MsgKey:O,GetDirection:z}})})}function _E(p){if(fe.utils.isObject(p.quoteInfo)){const{msgID:h,messageSequence:v,messageTime:N}=p.quoteInfo;return JSON.stringify({businessQuote:{messageID:h,messageSequence:v,messageTime:N}})}}var kc=Object.freeze({__proto__:null,createMessagePackOptions:wE,generateForbidCallbackControl:na,getC2CRoamingMessagesByAnchor:bc,getGroupRoamingMessagesByAnchor:kl,getRoamingMessages:function(p){return mA(this,void 0,void 0,function*(){const{peerAccount:h,count:v,lastMessageTime:N,messageKey:O}=p;return(yield Zg({servcmd:"openim.getroammsg",data:{Peer_Account:h,MaxCnt:v||15,LastMsgTime:N||0,MsgKey:O,GetDirection:0,WithRecalledMsg:1}}))||[]})},modifyC2CMessage:Nr,modifyGroupMessage:nl,sendMessage:Mn});const{isPlainObject:bu}=fe.utils,{MSG_AUDIO:EC,MSG_FILE:zI,MSG_IMAGE:ah,MSG_VIDEO:ku,MSG_MERGER:hI}=hs;class rl{constructor(){this._sendProtocolMap=new Map}init(){js.getInstance().registerApi({apiName:"sendMessage",context:this,matcher:h=>![EC,zI,ah,ku,hI].includes(h[0].type)})}registerSendProtocol(h,v,N){this._sendProtocolMap.set(h,v.bind(N))}sendMessage(h,v){return mA(this,void 0,void 0,function*(){const{TOTAL_COUNT:N,SEND_COST:O,SUCCESS_COUNT:z,FAILED_COUNT:X}=nI;if(!(h instanceof uC))throw new rs({code:ko.MSG_INSTANCE_REQUIRED});const nA=h.validateBeforeSend();if(!nA.isValid){const{code:VA,message:ie=""}=nA.error||{};throw new rs({code:VA,message:ie})}this._reportMessageSendQuality({name:N,message:h});let DA=!1;const{messageDataHandler:GA}=fe.message||{};try{const{messageControlInfo:VA}=v||{};let ie=null;GA.addRandomOfSentMessage(h.random);const Ee=Date.now(),He=this._getSendProtocol(h);if(h.conversationType===Er.CONV_C2C?(DA=v?.onlineUserOnly===!0,ie=yield He(h,v)):h.conversationType===Er.CONV_GROUP&&(yield this._validateBeforeSendGroupMessage(h),ie=yield He(h,v)),ie){const{messageDropReason:At,sequence:st,time:bt}=ie;if(this._updateNickAndAvatarOfSentMessageByMe(h),At&&this._logRateLimitInfo(h,st,At),this._reportMessageSendQuality({name:z,message:h}),this._reportMessageSendQuality({name:O,message:h,startTs:Ee}),h.isResend===!0){const xt=GA.findMessage(h.ID);xt&&(fe.ssoLog.debug("sendMessage",`sendMessage resend ok. ID:${xt.ID}`),GA.deleteConversationMessage(xt))}return h.status=wg.SUCCESS,h.time=bt,h.conversationType===Er.CONV_GROUP&&(h.sequence=st),DA?h._onlineOnlyFlag=!0:(GA.storeConversationMessage(h),this._applySentMessageControlInfo(h,VA),this._emitOnlineMessageSent(h)),h.type===zg.MSG_STREAM?{code:0,data:{message:h,streamMessageID:ie.streamMessageID}}:{code:0,data:{message:h}}}}catch(VA){h.status=wg.FAIL,GA.removeRandomOfSentMessage(h.random);let{errorCode:ie}=VA||{},Ee=VA?.errorInfo||VA?.message||"";throw this._hasRiskContent(ie)&&(h.hasRiskContent=!0),DA||this._isRejectedByRestApi(ie)||GA.storeConversationMessage(h),this._reportMessageSendQuality({name:X,message:h,error:VA}),new rs({code:ie,message:Ee,data:{message:h},moreMessage:`type:${h.type} from:${h.from} to:${h.to}`})}})}_hasRiskContent(h){return h===80001||h===80004}_isRejectedByRestApi(h){return h>=10100&&h<=10200||h>=120001&&h<=13e4}_emitOnlineMessageSent(h){const v=h._isExcludedFromLastMessage?"":h,{conversationID:N,conversationType:O}=h,z=zr(N)?Ii.TOPIC_NEW_MESSAGE:Ii.NEW_MESSAGE;fe.notificationCenter.emitInnerEvent(z,{result:{conversationUpdateFieldList:[{conversationID:N,type:O,message:h,lastMessage:v,unreadCount:0}]}})}_applySentMessageControlInfo(h,v){v&&bu(v)&&(v.excludedFromLastMessage===!0&&(h._isExcludedFromLastMessage=!0),v.excludedFromUnreadCount===!0&&(h._isExcludedFromUnreadCount=!0))}_logRateLimitInfo(h,v,N){const O=`from:${h.from} to:${h.to} sequence:${v} messageDropReason:${N}`;fe.ssoLog.warn("messageDropReason",O)}_updateNickAndAvatarOfSentMessageByMe(h){const{messageDataHandler:v}=fe.message||{};let N=!1;const{conversationID:O}=h,z=v.getLatestMsgSentByMe(O);if(z){const{nick:X,avatar:nA}=z;X===h.nick&&nA===h.avatar||(N=!0),N&&v.updateNickAndAvatarOfSentMessage({conversationID:O,latestNick:h.nick,latestAvatar:h.avatar,isSentByMe:!0})}}_validateBeforeSendGroupMessage(h){return mA(this,void 0,void 0,function*(){var v,N,O;const{to:z,from:X}=h;let nA=z,DA=za.getGroup(nA);if(Ea({groupID:nA})&&DA?.isSupportTopic)throw new rs({code:ko.MSG_SEND_GRP_WITH_TOPIC_FAIL});if(zr(z)&&([nA]=z.split(ka.TOPIC),DA=za.getGroup(nA)),!DA&&typeof((v=js.getInstance().getApiMap())===null||v===void 0?void 0:v.getGroupProfile)=="function"){const GA=yield js.getInstance().getApiMap().getGroupProfile({groupID:nA});if(((O=(N=GA?.data)===null||N===void 0?void 0:N.group)===null||O===void 0?void 0:O.type)===hs.GRP_AVCHATROOM){const VA=vl({code:ko.MSG_SEND_FAIL_NOT_IN_AV,replacement1:X,replacement2:nA});throw new rs({code:ko.MSG_SEND_FAIL_NOT_IN_AV,message:VA})}}return!0})}_reportMessageSendQuality(h){fe.notificationCenter.emitInnerEvent(Ii.QUALITY_STAT,{label:Ng.MESSAGE_SEND_SUCCESS_RATE,data:h})}_getSendProtocol(h){return this._sendProtocolMap.get(h.type)||Mn}}var dC=new class{constructor(){this._sparseMessagesByConversation=new Map,this._latestMessageSentByPeerMap=new Map,this._latestMessageSentByMeMap=new Map,this._randomOfSentMessageList=new Set}init(){fe.notificationCenter.subscribeInnerEvent(Ii.LOGOUT,this._reset,this),fe.notificationCenter.subscribeInnerEvent(Ii.DESTROY,this._dispose,this)}get _messagesByConversation(){return _l.getMessages()}storeConversationMessage(p,h=!1){if(an)return!0;const{conversationID:v}=p;if(!v||(this._messagesByConversation.has(v)||this._messagesByConversation.set(v,new Map),this._shouldSkipStoreMessage(p,h)))return!1;const N=this._getUniqueIdOfMessage(p);return this._messagesByConversation.get(v).set(N,p),this._updateLatestMessageMap(p),!0}_updateLatestMessageMap(p){const{conversationID:h}=p;p.flow==="out"?this._setLatestMsgSentByMe(h,p):h.startsWith("C2C")&&this._setLatestMsgSentByPeer(h,p)}_shouldSkipStoreMessage(p,h){const v=this._getUniqueIdOfMessage(p),N=this._messagesByConversation.get(p.conversationID);if(N?.has(v)){const O=N?.get(v);if(!h||O?.isModified===!0)return!0}return!1}deleteConversationMessage(p){var h;const{conversationID:v=""}=p,N=this._getUniqueIdOfMessage(p);this._messagesByConversation.has(v)&&((h=this._messagesByConversation.get(v))===null||h===void 0||h.delete(N))}modifyConversationMessage(p,h){var v;if(!this._messagesByConversation.has(p)&&!this._sparseMessagesByConversation.has(p))return{isUpdated:!1,message:null};const N=this._getUniqueIdOfMessage(h),O=this._getMessageFromLocalMessage(p,N);if(O){const{messageVersion:z,elements:X,cloudCustomData:nA,checkResult:DA=0}=h,GA=DA>1;if(fe.ssoLog.debug("modifyConversationMessage",`conversationToMessageMap modifyConversationMessage localVersion:${O.version} remoteVersion:${z}`),O.versionO.ID===p)||null,h)break;if(!h){const N=Array.from(this._sparseMessagesByConversation.values());for(const O of N)if(h=O.get(p)||null,h)break}return h}deleteConversationMessageList(p){this._messagesByConversation.has(p)&&(this._messagesByConversation.delete(p),this._latestMessageSentByMeMap.delete(p),this._latestMessageSentByPeerMap.delete(p)),this._sparseMessagesByConversation.has(p)&&this._sparseMessagesByConversation.delete(p)}revokeMessage({conversationID:p,sequence:h,random:v,revoker:N}){const O=this._messagesByConversation.get(p);let z=null;if(O){const X=Array.from(O.values());if(z=this._findMessageBySequenceAndRandom({messageList:X,random:v,sequence:h}),z){const nA=this._getUniqueIdOfMessage(z);return _l.updateMessage(p,[nA],{isRevoked:!0,revoker:N,operation:Or.revoke}),z}}if(this._sparseMessagesByConversation.has(p)){const X=Array.from(this._sparseMessagesByConversation.get(p).values());if(z=this._findMessageBySequenceAndRandom({messageList:X,random:v,sequence:h}),z)return z.isRevoked=!0,z.revoker=N,z}}_findMessageBySequenceAndRandom({messageList:p,sequence:h,random:v}){for(let N=0;N0){const X=new Map([...O,...z.entries()]);this._messagesByConversation.set(v,X),this._updateLatestMessageSentByMe(v),this._updateLatestMessageSentByPeer(v)}return N}storeSparseMessageList(p){if(p.length===0)return;const{conversationID:h}=p[0],v=p.length;this._sparseMessagesByConversation.has(h)||this._sparseMessagesByConversation.set(h,new Map);const N=this._sparseMessagesByConversation.get(h);for(let O=0;O=0;N--)if(v[N].flow==="out"){this._setLatestMsgSentByMe(p,v[N]);break}}}_updateLatestMessageSentByPeer(p){var h;const v=Array.from(((h=this._messagesByConversation.get(p))===null||h===void 0?void 0:h.values())||[]);if(v.length!==0&&p.startsWith("C2C")){for(let N=v.length-1;N>=0;N--)if(v[N].flow==="in"){this._setLatestMsgSentByPeer(p,v[N]);break}}}_getUniqueIdOfMessage(p){const{from:h,to:v,random:N,sequence:O,time:z}=p;return`${h}-${v}-${N}-${O}-${z}`}_setLatestMsgSentByPeer(p,h){this._latestMessageSentByPeerMap.set(p,h)}_setLatestMsgSentByMe(p,h){this._latestMessageSentByMeMap.set(p,h)}getLatestMsgSentByPeer(p){return this._latestMessageSentByPeerMap.get(p)}getLatestMsgSentByMe(p){return this._latestMessageSentByMeMap.get(p)}addRandomOfSentMessage(p){this._randomOfSentMessageList.add(p)}removeRandomOfSentMessage(p){this._randomOfSentMessageList.delete(p)}updateNickAndAvatarOfSentMessage(p){const{conversationID:h="",latestAvatar:v,latestNick:N,isSentByMe:O=!0}=p,z=this._messagesByConversation.get(h);if(!z)return;const X=Array.from(z.values()),nA=O?"out":"in";X.forEach(DA=>{const{nick:GA,avatar:VA,flow:ie}=DA;ie===nA&&(GA!==N&&(DA.nick=N),VA!==v&&(DA.avatar=v))})}isInMessageList(p){var h;const{conversationID:v}=p;if(!v||!this._messagesByConversation.has(v))return!1;const N=this._getUniqueIdOfMessage(p);return(h=this._messagesByConversation.get(v))===null||h===void 0?void 0:h.has(N)}isMessageSentByCurrentInstance(p){const{random:h}=p;return this._randomOfSentMessageList.has(h)}getContinuousMessagesByConversation(){return this._messagesByConversation}getLocalMessageList(p){const h=this._messagesByConversation.get(p);return h?[...h.values()]:[]}getSparseMessageList(p){const h=this._sparseMessagesByConversation.get(p);return h?[...h.values()]:[]}_reset(){this._messagesByConversation.clear(),this._latestMessageSentByPeerMap.clear(),this._latestMessageSentByMeMap.clear(),this._randomOfSentMessageList.clear()}_dispose(){this._reset(),fe.notificationCenter.unSubscribeInnerEvent(Ii.LOGOUT,this._reset,this),fe.notificationCenter.unSubscribeInnerEvent(Ii.DESTROY,this._dispose,this)}};function ra(p,h){const v=$g.getConversation(p);if(v?.lastMessage){const{lastMessage:N}=v,{lastTime:O,lastSequence:z,version:X}=N,{time:nA,sequence:DA,messageVersion:GA,elements:VA,cloudCustomData:ie}=h;O===nA&&z===DA&&X!==GA&&(N.type=VA[0].type,N.payload=VA[0].content,N.messageForShow=YI(N.type,N.payload),N.cloudCustomData=ie,N.version=GA,$g.updateConversation(p,{lastMessage:N}))}}class tc{init(){js.getInstance().registerApi({apiName:"modifyMessage",context:this})}modifyMessage(h){return mA(this,void 0,void 0,function*(){const{to:v,payload:N,sequence:O,conversationType:z,random:X,time:nA,from:DA,type:GA}=h;if(this._canModifyMessageElement(GA)){const VA=h?._elements||[];VA.length>=1&&(VA[0].type=GA,VA[0].content=N)}try{let VA=null,ie=null;if(z===Er.CONV_C2C?VA=yield Nr(h):z===Er.CONV_GROUP&&(VA=yield nl(h)),VA){let Ee=`${z}${v}`;return v===qn()&&z===Er.CONV_C2C&&(Ee=`${z}${DA}`),ie={conversationType:z,from:DA,to:v,time:nA,random:X,sequence:O,elements:VA?.elements,cloudCustomData:VA?.cloudCustomData,messageVersion:VA?.messageVersion,conversationID:Ee},this._handleModifyMessageSuccess(ie),{code:0,data:{message:h},successLog:{message:`to:${v}`}}}}catch(VA){const{errorCode:ie}=VA||{};throw new rs({functionName:"modifyMessage",code:ie,moreMessage:`to:${v}`})}})}_handleModifyMessageSuccess(h){const{conversationID:v}=h,{isUpdated:N,message:O}=fe.message.messageDataHandler.modifyConversationMessage(v,h);N===!0&&fe.notificationCenter.emitOuterEvent(Dn.MESSAGE_MODIFIED,{name:Dn.MESSAGE_MODIFIED,data:[O]}),fe.notificationCenter.emitInnerEvent(Ii.MESSAGE_MODIFIED,{conversationID:v,message:O}),ra(v,h)}_canModifyMessageElement(h){return[Za.MSG_TEXT,Za.MSG_CUSTOM,Za.MSG_LOCATION,Za.MSG_FACE].includes(h)}}class lg{init(){const{notificationCenter:h}=fe,{InnerEventSubType:v}=h;tn.getInstance().registerWorkflowStep(sr.RECEIVE_C2C_NEW_MESSAGE,Pt.HANDLE_C2C_NEW_MESSAGE,this._handleC2CMessagePush,this),tn.getInstance().registerWorkflowStep(sr.RECEIVE_C2C_NEW_MESSAGE,Pt.EMIT_C2C_MESSAGE_EVENT,this._emitMessageEventsAfterReceiveNewMessage,this),tn.getInstance().registerWorkflowStep(sr.SYNC_SERVER_INFO_AFTER_RE_ONLINE,Pt.EMIT_C2C_MESSAGE_EVENT,this._emitMessageEventsAfterSyncUnreadMessage,this),h.subscribeInnerEvent(Ii.MESSAGE_PUSH,v.C2C_REALTIME_MESSAGE,this._executeReceiverNewMessageWorkFlow,this),h.subscribeInnerEvent(Ii.MESSAGE_PUSH,v.C2C_MESSAGE_MODIFIED,this._handleC2CMessageModify,this),h.subscribeInnerEvent(Ii.DESTROY,this._dispose,this)}_executeReceiverNewMessageWorkFlow(h){tn.getInstance().executeWorkflow(sr.RECEIVE_C2C_NEW_MESSAGE,h)}_handleC2CMessagePush(h){const v=h.data||{},{messageDataHandler:N}=fe.message||{},O=[],z=new Map;return v.C2cMsgArray.forEach(X=>{const nA=this._generateC2CMessage(X);this._updateMessageProfile(nA);let DA=nA.isModified===1;N.isMessageSentByCurrentInstance(nA)?nA.isModified=DA:DA=!1,nA._onlineOnlyFlag?N.isMessageSentByCurrentInstance(nA)||O.push(nA):ol(nA)&&(N.storeConversationMessage(nA)&&Gc({conversationUpdateFields:z,message:nA}),N.isMessageSentByCurrentInstance(nA)&&!DA||O.push(nA))}),{conversationUpdateFieldList:[...z.values()],messages:O}}_emitMessageEventsAfterReceiveNewMessage(h){var v;const{messages:N=[]}=((v=h.result)===null||v===void 0?void 0:v[Pt.HANDLE_C2C_NEW_MESSAGE])||{};this._emitMessageEvents(N)}_emitMessageEventsAfterSyncUnreadMessage(h){var v;const{messages:N=[]}=((v=h.result)===null||v===void 0?void 0:v[Pt.UNREAD_MESSAGE_SYNC])||{};this._emitMessageEvents(N)}_emitMessageEvents(h){const v=h?.filter(O=>O?.isModified===!0)||[];v.length>0&&fe.notificationCenter.emitOuterEvent("onMessageModified",{name:"onMessageModified",data:v});const N=h?.filter(O=>!O?.isModified);N.length>0&&fe.notificationCenter.emitOuterEvent("onMessageReceived",{name:"onMessageReceived",data:N})}_generateC2CMessage(h){const v=Er.CONV_C2C,N=Nc(h),O=fe.message.messageFactory.createMessage(Object.assign(Object.assign({},N),{conversationType:v,flow:ro.IN})),{elements:z}=N;return O.setElement(z),O}_updateMessageProfile(h){var v;const{messageDataHandler:N}=fe.message||{},O=(v=fe.store.get("login"))===null||v===void 0?void 0:v.userId,{from:z,nick:X,avatar:nA,conversationID:DA=""}=h;if(z!==O){const GA=N.getLatestMsgSentByPeer(DA);if(GA){const{nick:VA,avatar:ie}=GA;r(X)||r(nA)?(h.nick=l(VA)?VA:h.nick,h.avatar=l(ie)?ie:h.avatar):X===VA&&nA===ie||(N.updateNickAndAvatarOfSentMessage({conversationID:DA,latestNick:X,latestAvatar:nA,isSentByMe:!1}),this._updateConversationUserProfile({conversationID:DA,nick:X,avatar:nA}))}}else{const GA=N.getLatestMsgSentByMe(DA);!GA||X===GA.nick&&nA===GA.avatar||N.updateNickAndAvatarOfSentMessage({conversationID:DA,latestNick:X,latestAvatar:nA,isSentByMe:!0})}}_updateConversationUserProfile(h){const{conversationID:v,nick:N,avatar:O}=h,z=$g.getConversation(v),{userProfile:X={}}=z||{};X.avatar===O&&X.nick===N||$g.updateConversation(v,{userProfile:Object.assign(Object.assign({},X),{nick:N,avatar:O})})}_updateMessageListDueToModify(h){const{conversationID:v}=h,{isUpdated:N,message:O}=fe.message.messageDataHandler.modifyConversationMessage(v,h);N===!0&&fe.notificationCenter.emitOuterEvent("onMessageModified",{name:"onMessageModified",data:[O]}),fe.notificationCenter.emitInnerEvent("ModifyMessageSuccess",h),ra(v,h)}_handleC2CMessageModify(h){h.C2cMsgModNotifys.forEach(v=>{var N;const O=Er.CONV_C2C;let z=jI(v);const{to:X,from:nA}=z;let DA=`${O}${X}`;X===((N=fe.store.get("login"))===null||N===void 0?void 0:N.userId)&&(DA=`${O}${nA}`),z=Object.assign({conversationType:O,conversationID:DA},z),this._updateMessageListDueToModify(z)})}_dispose(){const{notificationCenter:h}=fe,{InnerEventSubType:v}=h;fe.notificationCenter.unSubscribeInnerEvent(Ii.MESSAGE_PUSH,v.C2C_REALTIME_MESSAGE,this._handleC2CMessagePush,this),fe.notificationCenter.unSubscribeInnerEvent(Ii.MESSAGE_PUSH,v.C2C_MESSAGE_MODIFIED,this._handleC2CMessageModify,this),fe.notificationCenter.unSubscribeInnerEvent(Ii.DESTROY,this._dispose,this)}}class BI{init(){const{notificationCenter:h}=fe,{InnerEventSubType:v}=h;tn.getInstance().registerWorkflowStep(sr.RECEIVE_GROUP_NEW_MESSAGE,Pt.HANDLE_GROUP_NEW_MESSAGE,this._handleGroupMessagePush,this),tn.getInstance().registerWorkflowStep(sr.RECEIVE_GROUP_NEW_MESSAGE,Pt.EMIT_GROUP_MESSAGE_EVENT,this._emitMessageEvents,this),h.subscribeInnerEvent(Ii.MESSAGE_PUSH,v.GROUP_REALTIME_MESSAGE,this._executeReceiverNewMessageWorkFlow,this),h.subscribeInnerEvent(Ii.MESSAGE_PUSH,v.GROUP_MESSAGE_MODIFIED,this._handleGroupMessageModify,this),h.subscribeInnerEvent(Ii.DESTROY,this._dispose,this)}_executeReceiverNewMessageWorkFlow(h){this._canExecuteReceiverNewMessageWorkFlow(h)&&tn.getInstance().executeWorkflow(sr.RECEIVE_GROUP_NEW_MESSAGE,h)}_handleGroupMessagePush(h){const v=h.data||{},{messageDataHandler:N}=fe.message,O=[],z=new Map,X=v?.GroupMsgArray;return X?.forEach(nA=>{if(nA.GroupInfo.NotVisible===1)return;const DA=this._generateGroupMessage(nA);this.updateMessageProfile(DA);let GA=DA.isModified===1;N.isMessageSentByCurrentInstance(DA)?DA.isModified=GA:GA=!1,DA._onlineOnlyFlag?N.isMessageSentByCurrentInstance(DA)||O.push(DA):ol(DA)&&N.storeConversationMessage(DA)&&(O.push(DA),Gc({conversationUpdateFields:z,message:DA}))}),{conversationUpdateFieldList:[...z.values()],messages:O}}_emitMessageEvents(h){var v;const{messages:N}=((v=h.result)===null||v===void 0?void 0:v[Pt.HANDLE_GROUP_NEW_MESSAGE])||{},O=N?.filter(X=>X?.isModified===!0)||[];O.length>0&&fe.notificationCenter.emitOuterEvent("onMessageModified",{name:"onMessageModified",data:O});const z=N?.filter(X=>!X?.isModified)||[];z.length>0&&fe.notificationCenter.emitOuterEvent("onMessageReceived",{name:"onMessageReceived",data:z})}_generateGroupMessage(h){const v=Er.CONV_GROUP,N=co(h),O=fe.message.messageFactory.createMessage(Object.assign(Object.assign({},N),{conversationType:v,flow:ro.IN})),{elements:z}=N;return O.setElement(z),O}updateMessageProfile(h){var v;const{messageDataHandler:N}=fe.message||{},O=(v=fe.store.get("login"))===null||v===void 0?void 0:v.userId,{from:z,nick:X,avatar:nA,conversationID:DA="",_elements:GA}=h;if(z===O){const VA=N.getLatestMsgSentByMe(DA);!VA||X===VA.nick&&nA===VA.avatar||N.updateNickAndAvatarOfSentMessage({conversationID:DA,latestNick:X,latestAvatar:nA,isSentByMe:!0})}else if(z===hs.CONV_SYSTEM){const{operationType:VA,memberInfoList:ie,operatorInfo:Ee}=GA;let He={};if(Rs(ie)?Rs(Ee)||(He=Ee):[oa.JOINED,oa.KICKED,oa.ADMIN_SET,oa.ADMIN_CANCELED].includes(VA)&&(He=Object.assign({},ie[0])),!Rs(He)){const{nick:At="",avatar:st=""}=He;h.nick=At,h.avatar=st}}}_updateMessageListDueToModify(h){const{conversationID:v}=h,{isUpdated:N,message:O}=fe.message.messageDataHandler.modifyConversationMessage(v,h);N===!0&&fe.notificationCenter.emitOuterEvent("onMessageModified",{name:"onMessageModified",data:[O]}),ra(v,h)}_handleGroupMessageModify(h){h.GroupMsgModNotifys.forEach(v=>{const N=Er.CONV_GROUP;let O=WI(v);const{topicID:z,groupID:X}=O,nA=z||X,DA=`${N}${nA}`;O=Object.assign({conversationType:N,conversationID:DA,to:nA},O),this._updateMessageListDueToModify(O)})}_dispose(){const{notificationCenter:h}=fe,{InnerEventSubType:{GROUP_REALTIME_MESSAGE:v,GROUP_MESSAGE_MODIFIED:N}}=h;h.unSubscribeInnerEvent(Ii.MESSAGE_PUSH,v,this._handleGroupMessagePush,this),h.unSubscribeInnerEvent(Ii.MESSAGE_PUSH,N,this._handleGroupMessageModify,this),h.unSubscribeInnerEvent(Ii.DESTROY,this._dispose,this)}_canExecuteReceiverNewMessageWorkFlow(h){var v,N;const{GroupId:O,GroupType:z}=((N=(v=h?.GroupMsgArray)===null||v===void 0?void 0:v[0])===null||N===void 0?void 0:N.GroupInfo)||{},X=z===hE.GRP_AVCHATROOM;return!(!za.getGroup(O)&&X)}}var TE=new class{constructor(){this.c2cMessageReceiver=new lg,this.groupMessageReceiver=new BI}init(){this.c2cMessageReceiver.init(),this.groupMessageReceiver.init()}};const Lu={createCustomMessage:{to:{required:!0,rules:["string"],allowEmpty:!1},conversationType:{required:!0,rules:["string"],allowEmpty:!1},payload:{required:!0,rules:["object"],allowEmpty:!1},cloudCustomData:{required:!1,rules:["string"],allowEmpty:!1},priority:{required:!1,rules:["string"],allowEmpty:!1},customModerationConfigurationID:{required:!1,rules:["string"],allowEmpty:!1}},sendMessage:[{key:"message",required:!0,rules:["object"],allowEmpty:!1},{key:"options",required:!1,rules:["object"],allowEmpty:!1}],createTextMessage:{to:{required:!0,rules:["string"],allowEmpty:!1},conversationType:{required:!0,rules:["string"],allowEmpty:!1,customValidator:p=>!(!p.startsWith("C2C")&&!p.startsWith("GROUP"))||"conversationType is invalid."},payload:{required:!0,rules:["object"],allowEmpty:!1,customValidator:p=>function(h){var v;return typeof h?.text!="string"||typeof h.text=="string"&&((v=h?.text)===null||v===void 0?void 0:v.length)===0?"payload.text must be a string":!0}(p)}}},Uu={createCustomMessage:!0,sendMessage:!0,modifyMessage:!0};var QI=new class{constructor(){this._historyMessageListFetchAnchors=new Map,this.completedHistoryConversations=new Set}getGroupRoamingMessagesByAnchor(p){return mA(this,void 0,void 0,function*(){try{const{conversationID:h,count:v,direction:N,sequence:O,messageSequenceList:z,shouldMarkCompleted:X=!1,getType:nA}=p,DA=h.replace(_g.CONV_GROUP,""),GA=[];let VA=O;if(N===yc.BACKWARD){if(typeof O!="number")return{messageList:[],hasNoMoreHistoryMessage:!1,nextReqMessageIDFromServer:""};VA=O+v-1}const ie=yield kl({groupID:DA,count:v,messageSequence:VA,messageSequenceList:z,getType:nA});if(ie){const{RspMsgList:Ee=[],NextReqMsgSeq:He=0,IsFinished:At,InvisibleMsgSeq:st}=ie,bt=`groupID:${DA} sequence:${O} reqSeq:${VA} direction:${N} complete:${At} nextSequence:${He} remoteMsgCount:${Ee.length} invisibleSequenceList:${st}`,xt=[];for(let zi=0;zi=O),Ui&&X&&this.completedHistoryConversations.add(h);const ao=CI(xt);return fe.ssoLog.info("getGroupRoamingMessagesByAnchor",bt),{messageList:ao,invisibleSequenceList:st,nextReqMessageIDFromServer:He,hasNoMoreHistoryMessage:Ui,serverGroupTipList:GA}}}catch(h){const{errorCode:v,errorInfo:N}=h||{};throw new rs({code:v,message:N})}})}clearHistoryMessageListFetchAnchors(p){this._historyMessageListFetchAnchors.delete(p)}isHistoryMessageFetchCompleted(p){return this.completedHistoryConversations.has(p)}_parseMessage(p){var h;const v=_g.CONV_GROUP;p.Event===4&&(p.MsgBody.MsgType=hs.MSG_GRP_TIP);const N=co(p),O=EI.createMessage(Object.assign(Object.assign({},N),{conversationType:v,flow:"in"}));return wc(((h=N.elements)===null||h===void 0?void 0:h.content)||{},O),O.setElement(N.elements),O}getC2CRoamingMessagesByAnchor(p){return mA(this,void 0,void 0,function*(){var h;try{const{conversationID:v,count:N,messageID:O,time:z,direction:X,shouldMarkCompleted:nA=!1}=p;let DA=z,GA="";if(!z){const Ee=O?fe.message.messageDataHandler.findMessage(O):null;if(DA=Ee?.time||0,O&&this._historyMessageListFetchAnchors.has(v)){const He=this._historyMessageListFetchAnchors.get(v);DA=He.lastMessageTime,GA=He.messageKey}}const VA=v.replace(_g.CONV_C2C,""),ie=yield bc({count:N,lastMessageTime:DA,messageKey:GA,peerAccount:VA,direction:X});if(ie){const{MsgList:Ee=[],Complete:He,MsgKey:At,LastMsgTime:st}=ie;this._historyMessageListFetchAnchors.set(v,{messageKey:At,lastMessageTime:st});const bt=[];for(let zi=0;zi{const{tag:O,value:z}=N;O&&O.indexOf(Ig)>-1?v.profileCustomField.push({key:O,value:z}):Ll.has(O)&&(v[Ll.get(O)]=z)}),Object.assign(Object.assign({},xa),v)}parseProfileItem(p=[]){const h=[];return p.forEach(v=>{h.push({tag:v.Tag,value:v.Value})}),h}parseProfileList(p=[]){const h=[];return p.forEach(v=>{h.push({tag:v.Tag,value:v.ValueBytes})}),h}convertParamsToProfile(p){const h=[];return Object.keys(p).forEach(v=>{v!==rr&&h.push({tag:br[v.toUpperCase()],value:p[v]})}),p.profileCustomField&&B(p.profileCustomField)&&p.profileCustomField.forEach(v=>{h.push({tag:v.key,value:v.value})}),h}normalizeProfileFields(p){const h={},v=[];return p.forEach(N=>{const{tag:O,value:z}=N;if(O&&O.indexOf(Ig)>-1&&v.push({key:O,value:z}),Ll.has(O)&&z!==void 0){const X=Ll.get(O);h[X]=z}}),v.length>0&&(h.profileCustomField=v),h}};const{generateProtocolData:pI}=fe.common;function ZI(p){return mA(this,void 0,void 0,function*(){const h="profile.portrait_get_all",v={From_Account:qn(),UserItem:[]};p.forEach(X=>{v.UserItem.push({CustomSequence:0,StandardSequence:0,To_Account:X})});const N=pI({servcmd:h,data:v}),O=`${N.head.seq}${h}`,z=yield fe.channel.sendPacket(N,{requestId:O});if(z)return function(X){const{ActionStatus:nA,ErrorCode:DA,ErrorDisplay:GA,ErrorInfo:VA,UserProfileItem:ie}=X,Ee=[];return ie.map(He=>{const{To_Account:At,CustomSequence:st,ResultCode:bt,ResultInfo:xt,StandardSequence:Ui,ProfileItem:ao}=He,zi=da.parseProfileItem(ao);Ee.push({userId:At,customSequence:st,resultCode:bt,resultInfo:xt,standardSequence:Ui,profileItem:zi})}),{actionStatus:nA,errorCode:DA,errorDisplay:GA,errorInfo:VA,userProfile:Ee}}(z)})}function Ca(p){return Xr.getFriendMap().has(p)}const{isEmpty:gl}=fe.utils;class NE{constructor(){this._strangerProfileMap=new Map}init(){js.getInstance().registerApi({apiName:"getMyProfile",context:this}),js.getInstance().registerApi({apiName:"getUserProfile",context:this}),js.getInstance().registerApi({apiName:"updateMyProfile",context:this}),this.createProfile=da.createProfile.bind(da);const{notificationCenter:h}=fe;tn.getInstance().registerWorkflowStep(sr.SYNC_SERVER_INFO_AFTER_LOGIN,Pt.USER_PROFILE_SYNC,this.getMyProfileCacheThenServer,this),h.subscribeInnerEvent(Ii.MESSAGE_PUSH,h.InnerEventSubType.PROFILE_MODIFIED,this._onProfileDataModify,this),h.subscribeInnerEvent(Ii.LOGOUT,this._reset,this),h.subscribeInnerEvent(Ii.DESTROY,this._dispose,this)}getMyProfile(){return mA(this,void 0,void 0,function*(){try{const h=qn(),v=yield ZI([h]);if(v){const N=this._handleProfileFormResponse(v)[0];return Xr.getUserProfileMap().set(h,N),{code:0,data:N}}}catch(h){const{errorCode:v,errorInfo:N}=h;throw new rs({functionName:"getMyProfile",code:v,message:N})}})}getUserProfile(h){return mA(this,void 0,void 0,function*(){try{let{userIDList:v}=h;const{userIdListToRequest:N,profileFromCache:O}=this._filterRequestAndCacheUsers(v);if(N.length===0)return{code:0,data:O,successLog:{message:`userIDList.length:${v.length}`}};N.length>Fg&&(fe.ssoLog.warn("getUserProfile","userIdListToRequest.length > 1000"),N.length=Fg);const{data:z,error:X}=yield this._batchFetchUserProfiles(N),nA=N.length,DA=z.length,GA=nA-DA;if(O.length===0&&nA===GA&&!gl(X))throw X;if(B(z))return z.forEach(ie=>{Ca(ie.userID)?Xr.getUserProfileMap().set(ie.userID,ie):this._strangerProfileMap.set(ie.userID,ie)}),{code:0,data:z.concat(O),successLog:{message:`getUserProfile query:${nA} success:${DA} fail:${GA} from cache:${O.length}`}}}catch(v){throw new rs(v)}})}getMyProfileCacheThenServer(){return mA(this,void 0,void 0,function*(){const h=qn(),v=Xr.getUserProfileMap().has(h);return v?{code:0,data:v}:this.getMyProfile()})}updateMyProfile(h){return mA(this,void 0,void 0,function*(){const v=qn(),N={};for(const z in h)h[z]!==void 0&&(N[z]=h[z]);const O=da.convertParamsToProfile(N);try{yield function(GA){return mA(this,void 0,void 0,function*(){const VA="profile.portrait_set",ie=pI({servcmd:VA,data:GA}),Ee=`${ie.head.seq}${VA}`,He=yield fe.channel.sendPacket(ie,{requestId:Ee});if(He){const{ActionStatus:At,ErrorCode:st,ErrorDisplay:bt,ErrorInfo:xt}=He;return{actionStatus:At,errorCode:st,errorDisplay:bt,errorInfo:xt}}})}({From_Account:v,ProfileItem:O});const X=Xr.getUserProfile(v);let nA;nA=X?Object.assign(Object.assign({},X),N):da.createProfile(v,O);const DA=!vg(X,nA,["lastUpdatedTime"]);return nA.lastUpdatedTime=Date.now(),Xr.getUserProfileMap().set(v,nA),DA&&this._emitProfileUpdated(nA),{code:0,data:nA,successLog:{message:`profileArray: ${fe.utils.safeStringify(O)}`}}}catch(z){const{errorCode:X,errorInfo:nA}=z;throw new rs({functionName:"updateMyProfile",code:X,message:nA,moreMessage:`params: ${fe.utils.safeStringify(h)}`})}})}updateMyNickAndAvatar(h){return mA(this,void 0,void 0,function*(){const v=qn(),N=Date.now(),O=Xr.getUserProfile(v);let z={};z=O?Object.assign(O,h):da.createProfile(v,h),z.lastUpdatedTime=N,Xr.getUserProfileMap().set(v,z)})}_onProfileDataModify(h){const v=function(z){const{Profile_Account:X,PushType:nA,ProfileList:DA}=z;return{userId:X,pushType:nA,profileList:da.parseProfileList(DA)}}(h.ProfileDataMod[0]);if(gl(v))return;const{isProfileUpdated:N,profile:O}=this._handleProfileModified(v);N&&this._emitProfileUpdated(O)}_emitProfileUpdated(h){fe.notificationCenter.emitInnerEvent(Ii.PROFILE_UPDATE,{name:Ii.PROFILE_UPDATE,data:[h]}),fe.notificationCenter.emitOuterEvent(Dn.PROFILE_UPDATED,{name:Dn.PROFILE_UPDATED,data:[h]}),$g.updateConversation(`C2C${h?.userID}`,{userProfile:h})}_dispose(){const{notificationCenter:h}=fe;h.unSubscribeInnerEvent(Ii.LOGOUT,this._reset,this),h.unSubscribeInnerEvent(Ii.MESSAGE_PUSH,h.InnerEventSubType.PROFILE_MODIFIED,this._onProfileDataModify,this),h.unSubscribeInnerEvent(Ii.DESTROY,this._dispose,this),this._reset()}_handleProfileModified(h){const{userId:v,profileList:N}=h,O=Xr.getUserProfile(v);if(!(qn()===v||Ca(v)&&O))return{isProfileUpdated:!1,profile:null};const z=da.normalizeProfileFields(N),X=Object.keys(z).some(VA=>VA===rr?this._isCustomFieldChanged(O.profileCustomField,z.profileCustomField):O[VA]!==z[VA]);if(!X)return{isProfileUpdated:!1,profile:O};const nA=Date.now(),DA=Object.prototype.hasOwnProperty.call(z,rr)?this._mergeProfileCustomField(O.profileCustomField,z.profileCustomField):O.profileCustomField,GA=Object.assign(Object.assign(Object.assign({},O),z),{profileCustomField:DA,lastUpdatedTime:nA});return Xr.getUserProfileMap().set(v,GA),{isProfileUpdated:X,profile:GA}}_filterRequestAndCacheUsers(h){const v=[],N=[];return h.forEach(O=>{const z=Xr.getUserProfileMap().has(O);Ca(O)&&z?N.push(Xr.getUserProfile(O)):this._isStrangerAndProfileValid(O)?N.push(this._strangerProfileMap.get(O)):v.push(O)}),{userIdListToRequest:v,profileFromCache:N}}_handleProfileFormResponse(h){const{userProfile:v}=h;if(!Array.isArray(v))return[];const N=v.filter(z=>z.userId!=="@TLS#NOT_FOUND"&&z.userId!==""&&!gl(z.profileItem)),O=Date.now();return N.map(z=>{const X=da.createProfile(z.userId,z.profileItem);return X.lastUpdatedTime=O,X})}_isStrangerAndProfileValid(h){var v;if(!Ca(h)){const{lastUpdatedTime:N=0}=this._strangerProfileMap.get(h)||{},O=((v=fe.store.get("cloudConfig"))===null||v===void 0?void 0:v.stranger_profile_expiration_time)||6e5;return Date.now()-N<=O}return!1}_chunkUserIDList(h,v){return Array.from({length:Math.ceil(h.length/v)},(N,O)=>h.slice(O*v,(O+1)*v))}_batchFetchUserProfiles(h){return mA(this,void 0,void 0,function*(){const v=[],N=[];let O={};return this._chunkUserIDList(h,100).forEach(z=>{v.push(ZI(z))}),(yield Promise.allSettled(v)).forEach(z=>{if(z.status==="fulfilled"){const X=z.value,nA=this._handleProfileFormResponse(X);B(nA)&&N.push(...nA)}else if(z.status==="rejected"){const{code:X,message:nA}=z.reason||{};O={errorCode:X,message:nA}}}),{data:N,error:O}})}_isCustomFieldChanged(h=[],v=[]){if(!B(v)||v.length===0)return!1;if(!B(h)||h.length===0)return!0;const N=new Map(h.map(O=>[O.key,O.value]));return v.some(O=>N.get(O.key)!==O.value)}_mergeProfileCustomField(h=[],v=[]){const N=B(h)?h.map(O=>Object.assign({},O)):[];return B(v)&&v.length!==0&&v.forEach(({key:O,value:z})=>{const X=N.find(nA=>nA.key===O);X?X.value=z:N.push({key:O,value:z})}),N}_reset(){Xr.getUserProfileMap().clear(),this._strangerProfileMap.clear()}}const XI=new Map,GE=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"];for(let p=0,h=GE.length;p>(-2*z&6)):0)O="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(O);try{return decodeURIComponent(escape(v))}catch(N){return console.warn(N),""}}const{isEmpty:$I}=fe.utils,{generateProtocolData:Ut}=fe.common;function Fu(p){return mA(this,void 0,void 0,function*(){const h="im_open_status.ws_get_user_status",v=Ut({servcmd:h,data:{To_Account:p}}),N=`${v.head.seq}${h}`,O=yield fe.channel.sendPacket(v,{requestId:N});if(O)return function(z){const{ErrorCode:X,ErrorInfo:nA,ErrorList:DA=[],UserStatusList:GA=[]}=z,VA=GA.map(Ee=>{const{To_Account:He,Status:At,CustomStatus:st,Detail:bt=[]}=Ee;return{userID:He,statusType:At,customStatus:xr(st),onlineDevices:Ou(bt)}}),ie=DA.map(Ee=>{const{To_Account:He,Invalid_Account:At,ErrorCode:st,ErrorInfo:bt}=Ee;return{userID:$I(At)?He:At,code:st,message:bt}});return{errorCode:X,errorInfo:nA,successUserList:VA,failureUserList:ie}}(O)})}function Ou(p){const h=[];return p?.forEach(v=>{const{Platform:N,Status:O}=v;O==="Online"&&h.push(N)}),h}class CC{constructor(){this._customStatus=""}init(){const{notificationCenter:h}=fe;js.getInstance().registerApi({apiName:"getUserStatus",context:this}),js.getInstance().registerApi({apiName:"setSelfStatus",context:this}),js.getInstance().registerApi({apiName:"subscribeUserStatus",context:this}),js.getInstance().registerApi({apiName:"unsubscribeUserStatus",context:this}),tn.getInstance().registerWorkflowStep(sr.SYNC_SERVER_INFO_AFTER_RE_ONLINE,Pt.USER_STATUS_UPDATE,this._onReOnline,this),h.subscribeInnerEvent(Ii.MESSAGE_PUSH,h.InnerEventSubType.USER_STATUS_UPDATE,this._onUserStatusUpdate,this),h.subscribeInnerEvent(Ii.LOGOUT,this._reset,this),h.subscribeInnerEvent(Ii.DESTROY,this._dispose,this)}setSelfStatus(h){return mA(this,void 0,void 0,function*(){const v=qn(),{customStatus:N}=h;try{return yield function(O){return mA(this,void 0,void 0,function*(){const z="im_open_status.ws_set_custom_status",X=Ut({servcmd:z,data:{CustomStatus:O}}),nA=`${X.head.seq}${z}`,DA=yield fe.channel.sendPacket(X,{requestId:nA});if(DA){const{ErrorCode:GA,ErrorInfo:VA}=DA;return{errorCode:GA,errorInfo:VA}}})}(N),this._customStatus=N,{code:0,data:{userID:v,statusType:ic,customStatus:N},successLog:{message:`customStatus: ${N}`}}}catch(O){const{errorCode:z,errorInfo:X}=O;throw new rs({functionName:"setSelfStatus",code:z,message:X})}})}getUserStatus(h){return mA(this,void 0,void 0,function*(){const{userIDList:v=[]}=h;if(this._isOnlyMeInArray(v))return this._getMyStatus();const N=yield this._getUserStatus(v);return Object.assign(Object.assign({},N),{successLog:{message:`userIDList length: ${v.length}`}})})}setCustomStatus(h){const v=xr(h);this._customStatus=v}subscribeUserStatus(h){return mA(this,void 0,void 0,function*(){try{const{userIDList:v=[]}=h;this._checkBusinessCapabilityBits("subscribeUserStatus");const N=this._getMaxUserCount("subscribe"),O=this._sliceUserIDList(v,N),z=yield function(nA){return mA(this,void 0,void 0,function*(){const{channel:DA}=fe,GA="im_open_status.ws_status_subscribe",VA=Ut({servcmd:GA,data:{To_Account:nA}}),ie=`${VA.head.seq}${GA}`;return yield DA.sendPacket(VA,{requestId:ie})})}(O),X=this._parseResponse(z);return{code:0,data:{failureUserList:X},successLog:{message:`userID length:${v.length} failCount: ${X.length}`}}}catch(v){const{errorCode:N}=v;throw new rs({functionName:"subscribeUserStatus",code:N})}})}unsubscribeUserStatus(h){return mA(this,void 0,void 0,function*(){try{this._checkBusinessCapabilityBits("unsubscribeUserStatus");const{userIDList:v=[]}=h,N=this._getMaxUserCount("unsubscribe"),O=this._sliceUserIDList(v,N),z=yield function(nA){return mA(this,void 0,void 0,function*(){const{channel:DA}=fe,GA="im_open_status.ws_status_unsubscribe";let VA={};VA=nA.length===0?{UnsubscribeAll:1}:{To_Account:nA};const ie=Ut({servcmd:GA,data:VA}),Ee=`${ie.head.seq}${GA}`;return yield DA.sendPacket(ie,{requestId:Ee})})}(O),X=this._parseResponse(z);return{code:0,data:{failureUserList:X},successLog:{message:`userID length:${v.length} failCount: ${X.length}`}}}catch(v){const{errorCode:N}=v;throw new rs({functionName:"unsubscribeUserStatus",code:N})}})}_onUserStatusUpdate(h){const{UserStatusList:v=[]}=h||{},N=v.map(O=>{const{To_Account:z,Status:X,CustomStatus:nA,Platform:DA}=O,GA={userID:z,statusType:X,customStatus:xr(nA)};return DA&&(GA.onlineDevices=DA),GA});this._emitUserStatusUpdatedEvent(N)}_onReOnline(h){const v=xr(h.data.customStatus);if(this._customStatus===v)return;this._customStatus=v;const N={userID:qn(),statusType:ic,customStatus:v};this._emitUserStatusUpdatedEvent(N)}_emitUserStatusUpdatedEvent(h){fe.notificationCenter.emitOuterEvent(Dn.USER_STATUS_UPDATED,{name:Dn.USER_STATUS_UPDATED,data:h})}_sliceUserIDList(h,v){return h.slice(0,v)}_parseResponse(h){const{ErrorList:v=[]}=h;return v.map(N=>{const{To_Account:O,Invalid_Account:z,ErrorCode:X,ErrorInfo:nA}=N;return{userID:fe.utils.isEmpty(z)?O:z,code:X,message:nA}})}_checkBusinessCapabilityBits(h){if(!fe.store.get("commercialConfig").get(vr))throw new rs({functionName:h,code:ko.NO_USE,replacement1:h})}_getMaxUserCount(h){const v=fe.store.get("cloudConfig")||{},N={query:{key:"status_query_count",default:500},subscribe:{key:"status_sub_count",default:100},unsubscribe:{key:"status_unsub_count",default:100}},{key:O,default:z}=N[h],X=v[O]||z;return parseInt(X,10)}_getMyStatus(){return{code:0,data:{successUserList:[{userID:qn(),statusType:ic,customStatus:this._customStatus}],failureUserList:[]}}}_getUserStatus(h){return mA(this,void 0,void 0,function*(){try{this._checkBusinessCapabilityBits("getUserStatus");const v=this._getMaxUserCount("query"),N=this._sliceUserIDList(h,v),O=yield Fu(N),{successUserList:z,failureUserList:X}=O||{};return{code:0,data:{successUserList:z,failureUserList:X}}}catch(v){const{errorCode:N}=v;throw new rs({functionName:"getUserStatus",code:N})}})}_isOnlyMeInArray(h){const v=qn();return h.length===1&&h.indexOf(v)>-1}_dispose(){const{notificationCenter:h}=fe;h.unSubscribeInnerEvent(Ii.MESSAGE_PUSH,h.InnerEventSubType.USER_STATUS_UPDATE,this._onUserStatusUpdate,this),h.unSubscribeInnerEvent(Ii.DESTROY,this._dispose,this),h.unSubscribeInnerEvent(Ii.LOGOUT,this._reset,this),this._reset()}_reset(){this._customStatus=""}}const q={getUserProfile:{userIDList:{required:!0,rules:["array"],allowEmpty:!1}},updateMyProfile:{nick:{required:!1,rules:["string"],allowEmpty:!0},avatar:{required:!1,rules:["string"],allowEmpty:!0},gender:{required:!1,rules:["string"],allowEmpty:!0},selfSignature:{required:!1,rules:["string"],allowEmpty:!0},allowType:{required:!1,rules:["string"],allowEmpty:!0},birthday:{required:!1,rules:["number"],allowEmpty:!1},language:{required:!1,rules:["string"],allowEmpty:!0},messageSettings:{required:!1,rules:["string"],allowEmpty:!0},adminForbidType:{required:!1,rules:["string"],allowEmpty:!0},level:{required:!1,rules:["number"],allowEmpty:!1},role:{required:!1,rules:["number"],allowEmpty:!0},profileCustomField:{required:!1,rules:["array"],allowEmpty:!0,customValidator:function(p){for(const h of p){if(typeof h!="object")return"Each item in profileCustomField must be an object";if(typeof h?.key!="string")return"Each item.key in profileCustomField must be a string";if(!h?.key.startsWith(Ig))return'Each item.key in profileCustomField must start with "Tag_Profile_Custom"'}return!0}}},setSelfStatus:{customStatus:{required:!0,rules:["string"],allowEmpty:!0}},getUserStatus:{userIDList:{required:!0,rules:["array"],allowEmpty:!1}},subscribeUserStatus:{userIDList:{required:!0,rules:["array"],allowEmpty:!1}},unsubscribeUserStatus:{userIDList:{required:!1,rules:["array"],allowEmpty:!0}}},L={getMyProfile:!0,getUserProfile:!0,updateMyProfile:!0,setSelfStatus:!0,getUserStatus:!0,subscribeUserStatus:!0,unsubscribeUserStatus:!0};class oA{constructor(){this.userProfile=new NE,this.userStatus=new CC,this.userProfile.init(),this.userStatus.init(),Mc({auth:L,params:q})}}function G(p){const h=[];if(!l(p))return h;const v=p.length;if(v===0)return h;for(let N=v-1;N>=0;N--)p[N]==="1"&&h.push(2**(v-N-1));return h}var x,tA,uA;(function(p){p.NOT_START="notStart",p.PENDING="pending",p.RESOLVED="resolved",p.REJECTED="rejected"})(x||(x={})),function(p){p[p.C2C=1]="C2C",p[p.GROUP=2]="GROUP"}(tA||(tA={})),function(p){p[p.C2C=8]="C2C",p[p.GROUP=2]="GROUP"}(uA||(uA={}));class wA{constructor(){this._name="SyncConversationHandler",this._pagingStatus=x.NOT_START,this._pagingTimeStamp=0,this._pagingStartIndex=0,this._pagingPinnedTimeStamp=0,this._pagingPinnedStartIndex=0}init(){const{notificationCenter:h}=fe;tn.getInstance().registerWorkflowStep(sr.SYNC_SERVER_INFO_AFTER_RE_ONLINE,Pt.CONVERSATION_RECOVER,this._syncConversationList,this),tn.getInstance().registerWorkflowStep(sr.SYNC_SERVER_INFO_AFTER_LOGIN,Pt.CONVERSATION_LIST_SYNC,this._syncConversationListAfterLogin,this),h.subscribeInnerEvent(Ii.LOGOUT,this._reset,this),h.subscribeInnerEvent(Ii.DESTROY,this._dispose,this),fe.ssoLog.debug(`${this._name}.init`)}isSyncCompleted(){return this._pagingStatus===x.RESOLVED}_syncConversationListAfterLogin(){return mA(this,void 0,void 0,function*(){return this._pagingStatus=x.NOT_START,this._pagingTimeStamp=0,this._pagingStartIndex=0,this._pagingPinnedTimeStamp=0,this._pagingPinnedStartIndex=0,this._syncConversationList()})}_syncConversationList(){return mA(this,void 0,void 0,function*(){const{ssoLog:h,utils:{safeStringify:v}}=fe;h.debug("_syncConversationList","start");try{const N=yield this._pagingGetConversationList(!0);this._pagingStatus=x.RESOLVED;const{conversationList:O=[]}=N||{};return h.info("_syncConversationList",`success count:${O.length}`),N}catch(N){const O=new rs(N);h.error("_syncConversationList",`fail ${v(N)}`,{error:O})}})}_pagingGetConversationList(h){return mA(this,void 0,void 0,function*(){try{const v=[];this._pagingStatus=x.PENDING;const N=yield function(ie){return mA(this,void 0,void 0,function*(){const{fromAccount:Ee,pagingTimeStamp:He,pagingStartIndex:At,pagingPinnedTimeStamp:st,pagingPinnedStartIndex:bt}=ie;return Zg({servcmd:"recentcontact.page_get",data:{AssistFlags:31,MsgAssistFlags:15,OrderType:1,From_Account:Ee,StartIndex:At,TimeStamp:He,TopStartIndex:bt,TopTimeStamp:st}})})}({fromAccount:qn(),pagingTimeStamp:h?this._pagingTimeStamp:0,pagingStartIndex:h?this._pagingStartIndex:0,pagingPinnedTimeStamp:h?this._pagingPinnedTimeStamp:0,pagingPinnedStartIndex:h?this._pagingPinnedStartIndex:0}),{CompleteFlag:O,SessionItem:z=[],TimeStamp:X,StartIndex:nA,TopTimeStamp:DA,TopStartIndex:GA}=N||{};let VA=[];if(O===1&&(this._pagingStatus=x.RESOLVED),z.length>0&&(VA=this._getConversationOptions(z),v.push(...VA)),fe.notificationCenter.emitInnerEvent(Ii.SYNC_CONVERSATION_LIST,{conversationUpdateFieldList:VA}),this._pagingTimeStamp=X,this._pagingStartIndex=nA,this._pagingPinnedTimeStamp=DA,this._pagingPinnedStartIndex=GA,O!==1){const{conversationList:ie}=yield this._pagingGetConversationList(h);v.push(...ie)}return{conversationList:v}}catch(v){throw v}})}_getConversationOptions(h){const{utils:{isUndefined:v}}=fe,N=this._convertConversationKey(h);return this._filterValidConversations(N).map(O=>(v(O.lastMsg)&&(O.lastMsg={elements:[]}),O.type===tA.C2C?this._assembleC2COption(O):this._assembleGroupOption(O)))}_filterValidConversations(h){return h.filter(({type:v,userID:N})=>v===tA.C2C&&!function(O){let z;return O.startsWith(hs.CONV_C2C)&&(z=O.replace(hs.CONV_C2C,"")),z==="@TLS#ERROR"||z==="@TLS#NOT_FOUND"}(N)||v===2)}_assembleC2COption(h){var v,N,O,z,X,nA,DA,GA;const VA=this._createUserprofile(h);return{conversationID:`${hs.CONV_C2C}${h.userID}`,type:hs.CONV_C2C,lastMessage:{lastTime:h.time,lastSequence:h.sequence,fromAccount:h.lastC2CMsgFromAccount,type:!((v=h.lastMsg)===null||v===void 0)&&v.elements[0]?(N=h.lastMsg)===null||N===void 0?void 0:N.elements[0].type:null,payload:!((O=h.lastMsg)===null||O===void 0)&&O.elements[0]?this._amendLayersOverLimitProp(h.lastMsg.elements[0].content):null,cloudCustomData:((nA=(X=(z=h.lastMsg)===null||z===void 0?void 0:z.elements)===null||X===void 0?void 0:X[0])===null||nA===void 0?void 0:nA.cloudCustomData)||"",isRevoked:h.lastMessageFlag===uA.C2C,onlineOnlyFlag:!1,nick:"",nameCard:"",version:0,isPeerRead:this._computeIsPeerRead(h),revoker:((GA=(DA=h.lastMsg)===null||DA===void 0?void 0:DA.revokerInfo)===null||GA===void 0?void 0:GA.revoker)||null},unreadCount:0,userProfile:VA,peerReadTime:h.peerReadTime,isPinned:h.isPinned===1,customData:h.customMark||"",markList:G(h.standardMark),conversationGroupList:[],remark:h.friendRemark||"",messageRemindType:this._transMsgRemindType(h.messageRemindType)}}_createUserprofile(h){var v;const{userID:N,nick:O,peerAvatar:z}=h,X=[{tag:"Tag_Profile_IM_Nick",value:O},{tag:"Tag_Profile_IM_Image",value:z}];return(v=fe.user.userProfile)===null||v===void 0?void 0:v.createProfile(N,X)}_computeIsPeerRead(h){const v=qn(),{lastC2CMsgFromAccount:N,time:O,c2cPeerReadTime:z}=h;return N===v&&O<=z}_assembleGroupOption(h){var v,N,O,z,X;return{conversationID:`${hs.CONV_GROUP}${h.groupID}`,type:hs.CONV_GROUP,lastMessage:Object.assign(Object.assign({lastTime:h.time,lastSequence:h.sequence,fromAccount:h.msgGroupFromAccount},this._patchTypeAndPayload(h)),{cloudCustomData:((O=(N=(v=h.lastMsg)===null||v===void 0?void 0:v.elements)===null||N===void 0?void 0:N[0])===null||O===void 0?void 0:O.cloudCustomData)||"",isRevoked:h.lastMessageFlag===uA.GROUP,onlineOnlyFlag:!1,nick:h.msgGroupFromNickName||"",nameCard:h.msgGroupFromCardName||"",revoker:((X=(z=h.lastMsg)===null||z===void 0?void 0:z.revokerInfo)===null||X===void 0?void 0:X.revoker)||null}),groupProfile:{groupID:h.groupID,name:h.groupNick,avatar:h.groupImage,type:h.groupType,nextMessageSeq:h.nextMessageSeq},unreadCount:this._computeGroupUnreadCount(h),peerReadTime:0,isPinned:h.isPinned===1,version:0,customData:h.customMark||"",markList:G(h.standardMark),conversationGroupList:[],messageRemindType:this._transMsgRemindType(h.messageRemindType),subType:h.groupType}}_convertConversationKey(h){return h.map(v=>({type:v.Type,userID:v.To_Account,nick:v.C2cNick,peerAvatar:v.C2cImage,time:v.MsgTimeStamp,sequence:v.MsgSeq,lastC2CMsgFromAccount:v.LastC2cMsgFrom_Account,lastMsg:this._convertLastMsgKey(v.LastMsg),lastMessageFlag:v.LastMsgFlags,c2cPeerReadTime:v.C2cPeerReadTime,peerReadTime:v.C2cPeerReadTime,friendRemark:v.C2cRemark,isPinned:v.TopFlags,standardMark:v.StandardMark,customMark:v.CustomMark,messageRemindType:v.MsgRecvOption,groupID:v.ToAccount,groupNick:v.GroupNick,groupImage:v.GroupImage,groupType:v.GroupType,nextMessageSeq:v.GroupNextMsgSeq,msgGroupFromAccount:v.MsgGroupFrom_Account,msgGroupFromNickName:v.MsgGroupFromNickName,msgGroupFromCardName:v.MsgGroupFromCardName,unreadCount:v.UnreadMsgCount,noUnreadCount:v.GroupIgnoredUnreadSeqCount}))}_convertLastMsgKey(h){var v,N,O;const{utils:{isEmpty:z}}=fe;if(z(h))return null;let X="",nA=null;if(!z(h.GroupTips)){const{From_Account:DA,GroupName:GA}=((v=h.GroupTips)===null||v===void 0?void 0:v.GroupInfo)||{};X=hs.MSG_GRP_TIP,nA=Object.assign(Object.assign({},this._parseContent(X,h.GroupTips.MsgBody)),{groupProfile:{from:DA,groupName:GA}})}return h.MsgBody&&(X=(N=h.MsgBody[0])===null||N===void 0?void 0:N.MsgType,nA=this._parseContent(X,h.MsgBody[0])),{event:h.Event,elements:[{type:X,content:nA,cloudCustomData:h.CloudCustomData}],revokerInfo:{revoker:(O=h.RevokerInfo)===null||O===void 0?void 0:O.Revoker_Account}}}_parseContent(h,v){var N;if(!v)return v;const O=fe.message.messageFactory.getElementClass(h);return O?(N=O.parseServerPushElement(v))===null||N===void 0?void 0:N.content:v}_amendLayersOverLimitProp(h){const{LayersOverLimit:v}=h;return yo(h,["LayersOverLimit"]).layersOverLimit=v===1,h}_transMsgRemindType(h){let v="";return h===0?v=hs.MSG_REMIND_ACPT_AND_NOTE:h===1?v=hs.MSG_REMIND_DISCARD:h===2?v=hs.MSG_REMIND_ACPT_NOT_NOTE:h===3&&(v=hs.NOT_RECEIVE_OFFLINE_PUSH_EXCEPT_AT),v}_patchTypeAndPayload(h){var v;const{utils:{isUndefined:N}}=fe,{event:O,elements:z=[]}=h.lastMsg||{};return N(O)?{type:z[0]?z[0].type:null,payload:z[0]?this._amendLayersOverLimitProp(z[0].content):null}:{type:hs.MSG_GRP_TIP,payload:((v=z?.[0])===null||v===void 0?void 0:v.content)||{}}}_computeGroupUnreadCount(h){const{unreadCount:v=0,noUnreadCount:N=0}=h,O=v-N;return O>0?O:0}_reset(){this._pagingStatus=x.NOT_START,this._pagingTimeStamp=0,this._pagingStartIndex=0,this._pagingPinnedTimeStamp=0,this._pagingPinnedStartIndex=0}_dispose(){this._reset();const{notificationCenter:h}=fe;h.unSubscribeInnerEvent(Ii.LOGOUT,this._reset,this),h.unSubscribeInnerEvent(Ii.DESTROY,this._dispose,this)}}class Ae{constructor(){this.syncConversationHandler=new wA,this.syncConversationHandler.init()}}console.log(`TencentCloudLiteChat.VERSION:${Wr}`);var Qe={create:function(p){var h,v;const{SDKAppID:N,testEnv:O=!1,devMode:z=!1,unlimitedAVChatRoom:X=!1,scene:nA="",oversea:DA=!1,instance:GA,disableIndependentDomain:VA=!1,proxyServer:ie=""}=p;let Ee=N;if(!function(At){if(typeof At=="number")return!0;const st=Number(At);return!Number.isNaN(st)}(Ee))return console.error("Create SDK instance failed. Failed to parse the SDKAppID, please check the arguments"),null;if(Ee=Number(Ee),ws.has(Ee))return ws.get(Ee);let He=null;if(GA)He=GA,He._workflowManager&&tn.setInstance(He._workflowManager),He._pluginManager&&He._pluginManager.installBuiltInPlugin(ur),GA.isReady()&&((v=(h=tn.getInstance()).executeWorkflow)===null||v===void 0||v.call(h,sr.SYNC_SERVER_INFO_AFTER_LOGIN));else{const At=function(){function zi(){return(65536*(1+Math.random())|0).toString(16).substring(1)}return`${zi()+zi()}${zi()}${zi()}${zi()}${zi()}${zi()}${zi()}`}();fe.init({sdkAppId:Ee,instanceId:At,testEnv:O,devMode:z,unlimitedAVChatRoom:X,disableIndependentDomain:VA,scene:nA,oversea:DA,sdkEdition:Nu,version:Wr,proxyServer:ie}),tn.getInstance().init(),fe.message=new al,fe.user=new oA,fe.login=new Ac,fe.conversation=new Ae,Fo.getInstance().installBuiltInPlugin(ur),He=js.getInstance().exposeApiForClient(),He._workflowManager=tn.getInstance(),He._pluginManager=Fo.getInstance();const{utils:{IS_WORKER_AVAILABLE:st,USER_AGENT:bt,getPlatformType:xt,isIOSWebView:Ui}}=fe,ao=`instanceID:${At} SDKAppID:${N} platform:${HA} host:${xt()} isIOSWebView:${Ui} workerAvailable:${st} UserAgent:${bt}`;fe.ssoLog.info("sdkConstruct",ao)}return ws.set(Ee,He),He},TSignaling:so,EVENT:Dn,VERSION:Wr,TYPES:hs};return Qe})}(T1)),T1.exports}var cL={exports:{}},N1={exports:{}},OnA=N1.exports,n8;function PnA(){return n8||(n8=1,function(t,i){(function(r,l){t.exports=l()})(OnA,function(){function r(A,e){return e.forEach(function(o){o&&typeof o!="string"&&!Array.isArray(o)&&Object.keys(o).forEach(function(a){if(a!=="default"&&!(a in A)){var c=Object.getOwnPropertyDescriptor(o,a);Object.defineProperty(A,a,c.get?c:{enumerable:!0,get:function(){return o[a]}})}})}),Object.freeze(A)}var l=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof mg<"u"?mg:typeof self<"u"?self:{};function u(A){return A&&A.__esModule&&Object.prototype.hasOwnProperty.call(A,"default")?A.default:A}var B=function(A){return A&&A.Math===Math&&A},f=B(typeof globalThis=="object"&&globalThis)||B(typeof window=="object"&&window)||B(typeof self=="object"&&self)||B(typeof l=="object"&&l)||B(typeof l=="object"&&l)||function(){return this}()||Function("return this")(),w={},_=function(A){try{return!!A()}catch{return!0}},k=!_(function(){return Object.defineProperty({},1,{get:function(){return 7}})[1]!==7}),F=!_(function(){var A=function(){}.bind();return typeof A!="function"||A.hasOwnProperty("prototype")}),j=F,IA=Function.prototype.call,rA=j?IA.bind(IA):function(){return IA.apply(IA,arguments)},pA={},lA={}.propertyIsEnumerable,cA=Object.getOwnPropertyDescriptor,TA=cA&&!lA.call({1:2},1);pA.f=TA?function(A){var e=cA(this,A);return!!e&&e.enumerable}:lA;var WA,zA,$A=function(A,e){return{enumerable:!(1&A),configurable:!(2&A),writable:!(4&A),value:e}},De=F,Ce=Function.prototype,ct=Ce.call,mt=De&&Ce.bind.bind(ct,ct),Ke=De?mt:function(A){return function(){return ct.apply(A,arguments)}},Dt=Ke,qt=Dt({}.toString),It=Dt("".slice),ge=function(A){return It(qt(A),8,-1)},qe=_,ft=ge,ni=Object,Vt=Ke("".split),gi=qe(function(){return!ni("z").propertyIsEnumerable(0)})?function(A){return ft(A)==="String"?Vt(A,""):ni(A)}:ni,Fi=function(A){return A==null},_o=Fi,to=TypeError,uo=function(A){if(_o(A))throw new to("Can't call method on "+A);return A},Vs=gi,ki=uo,ns=function(A){return Vs(ki(A))},Ko=typeof document=="object"&&document.all,$i=Ko===void 0&&Ko!==void 0?function(A){return typeof A=="function"||A===Ko}:function(A){return typeof A=="function"},jt=$i,io=function(A){return typeof A=="object"?A!==null:jt(A)},bi=f,vs=$i,HA=function(A,e){return arguments.length<2?(o=bi[A],vs(o)?o:void 0):bi[A]&&bi[A][e];var o},le=Ke({}.isPrototypeOf),xe=f.navigator,Lt=xe&&xe.userAgent,it=Lt?String(Lt):"",gt=f,Xt=it,$t=gt.process,be=gt.Deno,je=$t&&$t.versions||be&&be.version,Mt=je&&je.v8;Mt&&(zA=(WA=Mt.split("."))[0]>0&&WA[0]<4?1:+(WA[0]+WA[1])),!zA&&Xt&&(!(WA=Xt.match(/Edge\/(\d+)/))||WA[1]>=74)&&(WA=Xt.match(/Chrome\/(\d+)/))&&(zA=+WA[1]);var Rt=zA,Oi=Rt,Qo=_,To=f.String,oo=!!Object.getOwnPropertySymbols&&!Qo(function(){var A=Symbol("symbol detection");return!To(A)||!(Object(A)instanceof Symbol)||!Symbol.sham&&Oi&&Oi<41}),No=oo&&!Symbol.sham&&typeof Symbol.iterator=="symbol",An=HA,rn=$i,Es=le,an=Object,yo=No?function(A){return typeof A=="symbol"}:function(A){var e=An("Symbol");return rn(e)&&Es(e.prototype,an(A))},mA=String,Jn=function(A){try{return mA(A)}catch{return"Object"}},Br=$i,ds=Jn,jr=TypeError,Pi=function(A){if(Br(A))return A;throw new jr(ds(A)+" is not a function")},Rs=Pi,ir=Fi,en=function(A,e){var o=A[e];return ir(o)?void 0:Rs(o)},wn=rA,Jt=$i,yg=io,On=TypeError,Gn={exports:{}},Js=f,Qr=Object.defineProperty,Pn=function(A,e){try{Qr(Js,A,{value:e,configurable:!0,writable:!0})}catch{Js[A]=e}return e},pr=f,po=Pn,gn="__core-js_shared__",yl=Gn.exports=pr[gn]||po(gn,{});(yl.versions||(yl.versions=[])).push({version:"3.47.0",mode:"global",copyright:"© 2014-2025 Denis Pushkarev (zloirock.ru), 2025 CoreJS Company (core-js.io)",license:"https://github.com/zloirock/core-js/blob/v3.47.0/LICENSE",source:"https://github.com/zloirock/core-js"});var cn=Gn.exports,mr=cn,Ls=function(A,e){return mr[A]||(mr[A]=e||{})},Vc=uo,ms=Object,as=function(A){return ms(Vc(A))},mu=as,ja=Ke({}.hasOwnProperty),Cs=Object.hasOwn||function(A,e){return ja(mu(A),e)},sg=Ke,OI=0,Xo=Math.random(),Zi=sg(1.1.toString),pc=function(A){return"Symbol("+(A===void 0?"":A)+")_"+Zi(++OI+Xo,36)},ng=Ls,Dg=Cs,la=pc,Go=oo,Wr=No,wo=f.Symbol,Jc=ng("wks"),Hn=Wr?wo.for||wo:wo&&wo.withoutSetter||la,Hs=function(A){return Dg(Jc,A)||(Jc[A]=Go&&Dg(wo,A)?wo[A]:Hn("Symbol."+A)),Jc[A]},Sg=rA,mc=io,fn=yo,Na=en,In=function(A,e){var o,a;if(e==="string"&&Jt(o=A.toString)&&!yg(a=wn(o,A))||Jt(o=A.valueOf)&&!yg(a=wn(o,A))||e!=="string"&&Jt(o=A.toString)&&!yg(a=wn(o,A)))return a;throw new On("Can't convert object to primitive value")},fs=TypeError,Ia=Hs("toPrimitive"),yn=function(A,e){if(!mc(A)||fn(A))return A;var o,a=Na(A,Ia);if(a){if(e===void 0&&(e="default"),o=Sg(a,A,e),!mc(o)||fn(o))return o;throw new fs("Can't convert object to primitive value")}return e===void 0&&(e="number"),In(A,e)},Ga=yn,Da=yo,$=function(A){var e=Ga(A,"string");return Da(e)?e:e+""},K=io,vA=f.document,qA=K(vA)&&K(vA.createElement),te=function(A){return qA?vA.createElement(A):{}},pe=te,Oe=!k&&!_(function(){return Object.defineProperty(pe("div"),"a",{get:function(){return 7}}).a!==7}),Fe=k,ot=rA,ut=pA,St=$A,Ot=ns,li=$,nt=Cs,Ft=Oe,Ji=Object.getOwnPropertyDescriptor;w.f=Fe?Ji:function(A,e){if(A=Ot(A),e=li(e),Ft)try{return Ji(A,e)}catch{}if(nt(A,e))return St(!ot(ut.f,A,e),A[e])};var qi={},qs=k&&_(function(){return Object.defineProperty(function(){},"prototype",{value:42,writable:!1}).prototype!==42}),Mi=io,Wo=String,Mg=TypeError,or=function(A){if(Mi(A))return A;throw new Mg(Wo(A)+" is not an object")},fr=k,xn=Oe,Dl=qs,Ks=or,oI=$,Wg=TypeError,fc=Object.defineProperty,fu=Object.getOwnPropertyDescriptor,Sa="enumerable",Sl="configurable",fe="writable";qi.f=fr?Dl?function(A,e,o){if(Ks(A),e=oI(e),Ks(o),typeof A=="function"&&e==="prototype"&&"value"in o&&fe in o&&!o[fe]){var a=fu(A,e);a&&a[fe]&&(A[e]=o.value,o={configurable:Sl in o?o[Sl]:a[Sl],enumerable:Sa in o?o[Sa]:a[Sa],writable:!1})}return fc(A,e,o)}:fc:function(A,e,o){if(Ks(A),e=oI(e),Ks(o),xn)try{return fc(A,e,o)}catch{}if("get"in o||"set"in o)throw new Wg("Accessors not supported");return"value"in o&&(A[e]=o.value),A};var me=qi,vg=$A,rg=k?function(A,e,o){return me.f(A,e,vg(1,o))}:function(A,e,o){return A[e]=o,A},Rg={exports:{}},Dn=k,yr=Cs,Ii=Function.prototype,so=Dn&&Object.getOwnPropertyDescriptor,Hc=yr(Ii,"name"),zg={PROPER:Hc&&function(){}.name==="something",CONFIGURABLE:Hc&&(!Dn||Dn&&so(Ii,"name").configurable)},wg=$i,Or=cn,yc=Ke(Function.toString);wg(Or.inspectSource)||(Or.inspectSource=function(A){return yc(A)});var qc,ag,yu,CE=Or.inspectSource,_g=$i,ba=f.WeakMap,Dc=_g(ba)&&/native code/.test(String(ba)),hE=pc,ka=Ls("keys"),oa=function(A){return ka[A]||(ka[A]=hE(A))},Tg={},sI=Dc,hs=f,ko=io,ua=rg,sr=Cs,Pt=cn,Ht=oa,Ng=Tg,nI="Object already initialized",nr=hs.TypeError,PI=hs.WeakMap;if(sI||Pt.state){var Wa=Pt.state||(Pt.state=new PI);Wa.get=Wa.get,Wa.has=Wa.has,Wa.set=Wa.set,qc=function(A,e){if(Wa.has(A))throw new nr(nI);return e.facade=A,Wa.set(A,e),e},ag=function(A){return Wa.get(A)||{}},yu=function(A){return Wa.has(A)}}else{var sa=Ht("state");Ng[sa]=!0,qc=function(A,e){if(sr(A,sa))throw new nr(nI);return e.facade=A,ua(A,sa,e),e},ag=function(A){return sr(A,sa)?A[sa]:{}},yu=function(A){return sr(A,sa)}}var un={set:qc,get:ag,has:yu,enforce:function(A){return yu(A)?ag(A):qc(A,{})},getterFor:function(A){return function(e){var o;if(!ko(e)||(o=ag(e)).type!==A)throw new nr("Incompatible receiver, "+A+" required");return o}}},Sn=Ke,Du=_,Gg=$i,La=Cs,Kc=k,xI=zg.CONFIGURABLE,BE=CE,rI=un.enforce,Su=un.get,Ml=String,Sc=Object.defineProperty,Mu=Sn("".slice),vu=Sn("".replace),vl=Sn([].join),rs=Kc&&!Du(function(){return Sc(function(){},"length",{value:8}).length!==8}),gs=String(String).split("String"),rd=Rg.exports=function(A,e,o){Mu(Ml(e),0,7)==="Symbol("&&(e="["+vu(Ml(e),/^Symbol\(([^)]*)\).*$/,"$1")+"]"),o&&o.getter&&(e="get "+e),o&&o.setter&&(e="set "+e),(!La(A,"name")||xI&&A.name!==e)&&(Kc?Sc(A,"name",{value:e,configurable:!0}):A.name=e),rs&&o&&La(o,"arity")&&A.length!==o.arity&&Sc(A,"length",{value:o.arity});try{o&&La(o,"constructor")&&o.constructor?Kc&&Sc(A,"prototype",{writable:!1}):A.prototype&&(A.prototype=void 0)}catch{}var a=rI(A);return La(a,"source")||(a.source=vl(gs,typeof e=="string"?e:"")),A};Function.prototype.toString=rd(function(){return Gg(this)&&Su(this).source||BE(this)},"toString");var aI=Rg.exports,gI=$i,QE=qi,ad=aI,Rl=Pn,Dr=function(A,e,o,a){a||(a={});var c=a.enumerable,d=a.name!==void 0?a.name:e;if(gI(o)&&ad(o,d,a),a.global)c?A[e]=o:Rl(e,o);else{try{a.unsafe?A[e]&&(c=!0):delete A[e]}catch{}c?A[e]=o:QE.f(A,e,{value:o,enumerable:!1,configurable:!a.nonConfigurable,writable:!a.nonWritable})}return A},Mc={},jc=Math.ceil,tn=Math.floor,ws=Math.trunc||function(A){var e=+A;return(e>0?tn:jc)(e)},Ea=ws,zr=function(A){var e=+A;return e!=e||e===0?0:Ea(e)},Wc=zr,gd=Math.max,Zg=Math.min,gg=function(A,e){var o=Wc(A);return o<0?gd(o+e,0):Zg(o,e)},pE=zr,Xg=Math.min,qn=function(A){var e=pE(A);return e>0?Xg(e,9007199254740991):0},Ar=qn,Ua=function(A){return Ar(A.length)},cd=ns,sC=gg,Ru=Ua,YI=function(A){return function(e,o,a){var c=cd(e),d=Ru(c);if(d===0)return!A&&-1;var C,y=sC(a,d);if(A&&o!=o){for(;d>y;)if((C=c[y++])!=C)return!0}else for(;d>y;y++)if((A||y in c)&&c[y]===o)return A||y||0;return!A&&-1}},zc={includes:YI(!0),indexOf:YI(!1)},Zc=Cs,VI=ns,cI=zc.indexOf,Xc=Tg,$c=Ke([].push),Ma=function(A,e){var o,a=VI(A),c=0,d=[];for(o in a)!Zc(Xc,o)&&Zc(a,o)&&$c(d,o);for(;e.length>c;)Zc(a,o=e[c++])&&(~cI(d,o)||$c(d,o));return d},bg=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],ys=Ma,Kn=bg.concat("length","prototype");Mc.f=Object.getOwnPropertyNames||function(A){return ys(A,Kn)};var vc={};vc.f=Object.getOwnPropertySymbols;var JI=HA,HI=Mc,mE=vc,oh=or,nC=Ke([].concat),sh=JI("Reflect","ownKeys")||function(A){var e=HI.f(oh(A)),o=mE.f;return o?nC(e,o(A)):e},Al=Cs,kg=sh,no=w,rC=qi,fE=function(A,e,o){for(var a=kg(e),c=rC.f,d=no.f,C=0;CC;)dI.f(A,o=c[C++],a[o]);return A};var Ug,ec=HA("document","documentElement"),dd=or,vE=Tl,Nc=bg,jI=Tg,co=ec,RE=te,Xa="prototype",WI="script",Gu=oa("IE_PROTO"),Gc=function(){},CI=function(A){return"<"+WI+">"+A+""},ol=function(A){A.write(CI("")),A.close();var e=A.parentWindow.Object;return A=null,e},sl=function(){try{Ug=new ActiveXObject("htmlfile")}catch{}sl=typeof document<"u"?document.domain&&Ug?ol(Ug):function(){var e,o=RE("iframe"),a="java"+WI+":";return o.style.display="none",co.appendChild(o),o.src=String(a),(e=o.contentWindow.document).open(),e.write(CI("document.F=Object")),e.close(),e.F}():ol(Ug);for(var A=Nc.length;A--;)delete sl[Xa][Nc[A]];return sl()};jI[Gu]=!0;var Pa=Object.create||function(A,e){var o;return A!==null?(Gc[Xa]=dd(A),o=new Gc,Gc[Xa]=null,o[Gu]=A):o=sl(),e===void 0?o:vE.f(o,e)},wE=Hs,na=Pa,Mn=qi.f,Nr=wE("unscopables"),nl=Array.prototype;nl[Nr]===void 0&&Mn(nl,Nr,{configurable:!0,value:na(null)});var kl=function(A){nl[Nr][A]=!0},bc=zc.includes,_E=kl;_n({target:"Array",proto:!0,forced:_(function(){return!Array(1).includes()})},{includes:function(A){return bc(this,A,arguments.length>1?arguments[1]:void 0)}}),_E("includes");var kc,bu,EC,zI={},ah=!_(function(){function A(){}return A.prototype.constructor=null,Object.getPrototypeOf(new A)!==A.prototype}),ku=Cs,hI=$i,rl=as,dC=ah,ra=oa("IE_PROTO"),tc=Object,lg=tc.prototype,BI=dC?tc.getPrototypeOf:function(A){var e=rl(A);if(ku(e,ra))return e[ra];var o=e.constructor;return hI(o)&&e instanceof o?o.prototype:e instanceof tc?lg:null},TE=_,Lu=$i,Uu=io,QI=BI,al=Dr,Gr=Hs("iterator"),br=!1;[].keys&&("next"in(EC=[].keys())?(bu=QI(QI(EC)))!==Object.prototype&&(kc=bu):br=!0);var Ig=!Uu(kc)||TE(function(){var A={};return kc[Gr].call(A)!==A});Ig&&(kc={}),Lu(kc[Gr])||al(kc,Gr,function(){return this});var rr={IteratorPrototype:kc,BUGGY_SAFARI_ITERATORS:br},vr=qi.f,ic=Cs,Fg=Hs("toStringTag"),xa=function(A,e,o){A&&!o&&(A=A.prototype),A&&!ic(A,Fg)&&vr(A,Fg,{configurable:!0,value:e})},Ll=rr.IteratorPrototype,da=Pa,pI=$A,ZI=xa,Ca=zI,gl=function(){return this},NE=function(A,e,o,a){var c=e+" Iterator";return A.prototype=da(Ll,{next:pI(+!a,o)}),ZI(A,c,!1),Ca[c]=gl,A},XI=Ke,GE=Pi,xr=io,$I=function(A){return xr(A)||A===null},Ut=String,Fu=TypeError,Ou=function(A,e,o){try{return XI(GE(Object.getOwnPropertyDescriptor(A,e)[o]))}catch{}},CC=io,q=uo,L=function(A){if($I(A))return A;throw new Fu("Can't set "+Ut(A)+" as a prototype")},oA=Object.setPrototypeOf||("__proto__"in{}?function(){var A,e=!1,o={};try{(A=Ou(Object.prototype,"__proto__","set"))(o,[]),e=o instanceof Array}catch{}return function(a,c){return q(a),L(c),CC(a)&&(e?A(a,c):a.__proto__=c),a}}():void 0),G=_n,x=rA,tA=$i,uA=NE,wA=BI,Ae=oA,Qe=xa,p=rg,h=Dr,v=zI,N=zg.PROPER,O=zg.CONFIGURABLE,z=rr.IteratorPrototype,X=rr.BUGGY_SAFARI_ITERATORS,nA=Hs("iterator"),DA="keys",GA="values",VA="entries",ie=function(){return this},Ee=function(A,e,o,a,c,d,C){uA(o,e,a);var y,S,b,V=function(Pe){if(Pe===c&&ee)return ee;if(!X&&Pe&&Pe in CA)return CA[Pe];switch(Pe){case DA:case GA:case VA:return function(){return new o(this,Pe)}}return function(){return new o(this)}},J=e+" Iterator",gA=!1,CA=A.prototype,MA=CA[nA]||CA["@@iterator"]||c&&CA[c],ee=!X&&MA||V(c),Be=e==="Array"&&CA.entries||MA;if(Be&&(y=wA(Be.call(new A)))!==Object.prototype&&y.next&&(wA(y)!==z&&(Ae?Ae(y,z):tA(y[nA])||h(y,nA,ie)),Qe(y,J,!0)),N&&c===GA&&MA&&MA.name!==GA&&(O?p(CA,"name",GA):(gA=!0,ee=function(){return x(MA,this)})),c)if(S={values:V(GA),keys:d?ee:V(DA),entries:V(VA)},C)for(b in S)(X||gA||!(b in CA))&&h(CA,b,S[b]);else G({target:e,proto:!0,forced:X||gA},S);return CA[nA]!==ee&&h(CA,nA,ee,{name:c}),v[e]=ee,S},He=function(A,e){return{value:A,done:e}},At=ns,st=kl,bt=zI,xt=un,Ui=qi.f,ao=Ee,zi=He,ui=k,Oo="Array Iterator",$o=xt.set,Qi=xt.getterFor(Oo),Ki=ao(Array,"Array",function(A,e){$o(this,{type:Oo,target:At(A),index:0,kind:e})},function(){var A=Qi(this),e=A.target,o=A.index++;if(!e||o>=e.length)return A.target=null,zi(void 0,!0);switch(A.kind){case"keys":return zi(o,!1);case"values":return zi(e[o],!1)}return zi([o,e[o]],!1)},"values"),Ws=bt.Arguments=bt.Array;if(st("keys"),st("values"),st("entries"),ui&&Ws.name!=="values")try{Ui(Ws,"name",{value:"values"})}catch{}var _e=Pi,vt=as,FA=gi,Wt=Ua,En=TypeError,Zt="Reduce of empty array with no initial value",us=function(A){return function(e,o,a,c){var d=vt(e),C=FA(d),y=Wt(d);if(_e(o),y===0&&a<2)throw new En(Zt);var S=A?y-1:0,b=A?-1:1;if(a<2)for(;;){if(S in C){c=C[S],S+=b;break}if(S+=b,A?S<0:y<=S)throw new En(Zt)}for(;A?S>=0:y>S;S+=b)S in C&&(c=o(c,C[S],S,d));return c}},vi={left:us(!1),right:us(!0)},Co=_,Et=function(A,e){var o=[][A];return!!o&&Co(function(){o.call(null,e||function(){return 1},1)})},Ct=f,ug=it,ks=ge,ji=function(A){return ug.slice(0,A.length)===A},Yr=ji("Bun/")?"BUN":ji("Cloudflare-Workers")?"CLOUDFLARE":ji("Deno/")?"DENO":ji("Node.js/")?"NODE":Ct.Bun&&typeof Bun.version=="string"?"BUN":Ct.Deno&&typeof Deno.version=="object"?"DENO":ks(Ct.process)==="process"?"NODE":Ct.window&&Ct.document?"BROWSER":"REST",oc=Yr==="NODE",ts=vi.left;_n({target:"Array",proto:!0,forced:!oc&&Rt>79&&Rt<83||!Et("reduce")},{reduce:function(A){var e=arguments.length;return ts(this,A,e,e>1?arguments[1]:void 0)}});var aa=vi.right;_n({target:"Array",proto:!0,forced:!oc&&Rt>79&&Rt<83||!Et("reduceRight")},{reduceRight:function(A){return aa(this,A,arguments.length,arguments.length>1?arguments[1]:void 0)}});var ha=ge,$r=Array.isArray||function(A){return ha(A)==="Array"},H=_n,BA=$r,yA=Ke([].reverse),NA=[1,2];H({target:"Array",proto:!0,forced:String(NA)===String(NA.reverse())},{reverse:function(){return BA(this)&&(this.length=this.length),yA(this)}});var ZA=Jn,Re=TypeError,Ie=Ke([].slice),Ne=Ie,ae=Math.floor,Ue=function(A,e){var o=A.length;if(o<8)for(var a,c,d=1;d0;)A[c]=A[--c];c!==d++&&(A[c]=a)}else for(var C=ae(o/2),y=Ue(Ne(A,0,C),e),S=Ue(Ne(A,C),e),b=y.length,V=S.length,J=0,gA=0;J3)){if(Cm)return!0;if(ti)return ti<603;var A,e,o,a,c="";for(A=65;A<76;A++){switch(e=String.fromCharCode(A),A){case 66:case 69:case 70:case 72:o=3;break;case 68:case 71:o=4;break;default:o=2}for(a=0;a<47;a++)fo.push({k:e+a,v:o})}for(fo.sort(function(d,C){return C.v-d.v}),a=0;aWn(S)?1:-1}}(A)),o=zo(c),a=0;ao||S!=S?1/0*C:C*S},eD=Math.fround||function(A){return AD(A,11920928955078125e-23,34028234663852886e22,11754943508222875e-54)},Sv=Array,X_=Math.abs,hd=Math.pow,$_=Math.floor,tD=Math.log,AT=Math.LN2,iD={pack:function(A,e,o){var a,c,d,C=Sv(o),y=8*o-e-1,S=(1<>1,V=e===23?hd(2,-24)-hd(2,-77):0,J=A<0||A===0&&1/A<0?1:0,gA=0;for((A=X_(A))!=A||A===1/0?(c=A!=A?1:0,a=S):(a=$_(tD(A)/AT),A*(d=hd(2,-a))<1&&(a--,d*=2),(A+=a+b>=1?V/d:V*hd(2,1-b))*d>=2&&(a++,d/=2),a+b>=S?(c=0,a=S):a+b>=1?(c=(A*d-1)*hd(2,e),a+=b):(c=A*hd(2,b-1)*hd(2,e),a=0));e>=8;)C[gA++]=255&c,c/=256,e-=8;for(a=a<0;)C[gA++]=255&a,a/=256,y-=8;return C[gA-1]|=128*J,C},unpack:function(A,e){var o,a=A.length,c=8*a-e-1,d=(1<>1,y=c-7,S=a-1,b=A[S--],V=127&b;for(b>>=7;y>0;)V=256*V+A[S--],y-=8;for(o=V&(1<<-y)-1,V>>=-y,y+=e;y>0;)o=256*o+A[S--],y-=8;if(V===0)V=1-C;else{if(V===d)return o?NaN:b?-1/0:1/0;o+=hd(2,e),V-=C}return(b?-1:1)*o*hd(2,V-e)}},eT=as,Mv=gg,tT=Ua,vv=function(A){for(var e=eT(this),o=tT(e),a=arguments.length,c=Mv(a>1?arguments[1]:void 0,o),d=a>2?arguments[2]:void 0,C=d===void 0?o:Mv(d,o);C>c;)e[c++]=A;return e},iT=$i,oT=io,oD=oA,sD=function(A,e,o){var a,c;return oD&&iT(a=e.constructor)&&a!==o&&oT(c=a.prototype)&&c!==o.prototype&&oD(A,c),A},MQ=f,mm=Ke,fm=k,Bd=Sr,sT=rg,nT=Lg,ym=Au,nD=_,gh=fI,rT=zr,aT=qn,Dm=Bm,Rv=eD,rD=iD,Sm=BI,wv=oA,gT=vv,cT=Ie,_v=sD,Qd=fE,Mm=xa,pd=un,bE=zg.PROPER,vm=zg.CONFIGURABLE,hC="ArrayBuffer",ch="DataView",Yu="prototype",Yi="Wrong index",Rm=pd.getterFor(hC),dn=pd.getterFor(ch),Tv=pd.set,Vu=MQ[hC],zs=Vu,lh=zs&&zs[Yu],Fl=MQ[ch],nc=Fl&&Fl[Yu],kE=Object.prototype,vQ=MQ.Array,rB=MQ.RangeError,lT=mm(gT),IT=mm([].reverse),RQ=rD.pack,wQ=rD.unpack,Nv=function(A){return[255&A]},Gv=function(A){return[255&A,A>>8&255]},aD=function(A){return[255&A,A>>8&255,A>>16&255,A>>24&255]},BC=function(A){return A[3]<<24|A[2]<<16|A[1]<<8|A[0]},aB=function(A){return RQ(Rv(A),23,4)},gD=function(A){return RQ(A,52,8)},_Q=function(A,e,o){nT(A[Yu],e,{configurable:!0,get:function(){return o(this)[e]}})},md=function(A,e,o,a){var c=dn(A),d=Dm(o),C=!!a;if(d+e>c.byteLength)throw new rB(Yi);var y=c.bytes,S=d+c.byteOffset,b=cT(y,S,S+e);return C?b:IT(b)},fd=function(A,e,o,a,c,d){var C=dn(A),y=Dm(o),S=a(+c),b=!!d;if(y+e>C.byteLength)throw new rB(Yi);for(var V=C.bytes,J=y+C.byteOffset,gA=0;gA>24)},setUint8:function(A,e){cD(this,A,e<<24>>24)}},{unsafe:!0})}else lh=(zs=function(A){gh(this,lh);var e=Dm(A);Tv(this,{type:hC,bytes:lT(vQ(e),0),byteLength:e}),fm||(this.byteLength=e,this.detached=!1)})[Yu],nc=(Fl=function(A,e,o){gh(this,nc),gh(A,lh);var a=Rm(A),c=a.byteLength,d=rT(e);if(d<0||d>c)throw new rB("Wrong offset");if(d+(o=o===void 0?c-d:aT(o))>c)throw new rB("Wrong length");Tv(this,{type:ch,buffer:A,byteLength:o,byteOffset:d,bytes:a.bytes}),fm||(this.buffer=A,this.byteLength=o,this.byteOffset=d)})[Yu],fm&&(_Q(zs,"byteLength",Rm),_Q(Fl,"buffer",dn),_Q(Fl,"byteLength",dn),_Q(Fl,"byteOffset",dn)),ym(nc,{getInt8:function(A){return md(this,1,A)[0]<<24>>24},getUint8:function(A){return md(this,1,A)[0]},getInt16:function(A){var e=md(this,2,A,arguments.length>1&&arguments[1]);return(e[1]<<8|e[0])<<16>>16},getUint16:function(A){var e=md(this,2,A,arguments.length>1&&arguments[1]);return e[1]<<8|e[0]},getInt32:function(A){return BC(md(this,4,A,arguments.length>1&&arguments[1]))},getUint32:function(A){return BC(md(this,4,A,arguments.length>1&&arguments[1]))>>>0},getFloat32:function(A){return wQ(md(this,4,A,arguments.length>1&&arguments[1]),23)},getFloat64:function(A){return wQ(md(this,8,A,arguments.length>1&&arguments[1]),52)},setInt8:function(A,e){fd(this,1,A,Nv,e)},setUint8:function(A,e){fd(this,1,A,Nv,e)},setInt16:function(A,e){fd(this,2,A,Gv,e,arguments.length>2&&arguments[2])},setUint16:function(A,e){fd(this,2,A,Gv,e,arguments.length>2&&arguments[2])},setInt32:function(A,e){fd(this,4,A,aD,e,arguments.length>2&&arguments[2])},setUint32:function(A,e){fd(this,4,A,aD,e,arguments.length>2&&arguments[2])},setFloat32:function(A,e){fd(this,4,A,aB,e,arguments.length>2&&arguments[2])},setFloat64:function(A,e){fd(this,8,A,gD,e,arguments.length>2&&arguments[2])}});Mm(zs,hC),Mm(Fl,ch);var wm={ArrayBuffer:zs,DataView:Fl},kv=HA,uT=Lg,_m=k,gB=Hs("species"),Tm=function(A){var e=kv(A);_m&&e&&!e[gB]&&uT(e,gB,{configurable:!0,get:function(){return this}})},ET=Tm,lD="ArrayBuffer",ID=wm[lD];_n({global:!0,constructor:!0,forced:f[lD]!==ID},{ArrayBuffer:ID}),ET(lD);var NQ=ge,LE=Ke,Ju=function(A){if(NQ(A)==="Function")return LE(A)},uD=_n,Ih=Ju,Nm=_,Lv=or,GQ=gg,Uv=qn,ED=wm.ArrayBuffer,vn=wm.DataView,bQ=vn.prototype,yd=Ih(ED.prototype.slice),dD=Ih(bQ.getUint8),dT=Ih(bQ.setUint8);uD({target:"ArrayBuffer",proto:!0,unsafe:!0,forced:Nm(function(){return!new ED(2).slice(1,void 0).byteLength})},{slice:function(A,e){if(yd&&e===void 0)return yd(Lv(this),A);for(var o=Lv(this).byteLength,a=GQ(A,o),c=GQ(e===void 0?o:e,o),d=new ED(Uv(c-a)),C=new vn(this),y=new vn(d),S=0;ad;d++)if((y=Pe(A[d]))&&JD(_d,y))return y;return new yC(!1)}a=LT(A,c)}for(S=gA?A.next:a.next;!(b=GT(S,a)).done;){try{y=Pe(b.value)}catch(Me){HD(a,"throw",Me)}if(typeof y=="object"&&y&&JD(_d,y))return y}return new yC(!1)},KD=Hs("iterator"),jD=!1;try{var s=0,n={next:function(){return{done:!!s++}},return:function(){jD=!0}};n[KD]=function(){return this},Array.from(n,function(){throw 2})}catch{}var g=function(A,e){try{if(!e&&!jD)return!1}catch{return!1}var o=!1;try{var a={};a[KD]=function(){return{next:function(){return{done:o=!0}}}},A(a)}catch{}return o},I=fB,E=Sh.CONSTRUCTOR||!g(function(A){I.all(A).then(void 0,function(){})}),m=rA,D=Pi,M=Jr,T=mB,P=qD;_n({target:"Promise",stat:!0,forced:E},{all:function(A){var e=this,o=M.f(e),a=o.resolve,c=o.reject,d=T(function(){var C=D(e.resolve),y=[],S=0,b=1;P(A,function(V){var J=S++,gA=!1;b++,m(C,e,V).then(function(CA){gA||(gA=!0,y[J]=CA,--b||a(y))},c)}),--b||a(y)});return d.error&&c(d.value),o.promise}});var W=_n,iA=Sh.CONSTRUCTOR,EA=fB,RA=HA,kA=$i,xA=Dr,LA=EA&&EA.prototype;if(W({target:"Promise",proto:!0,forced:iA,real:!0},{catch:function(A){return this.then(void 0,A)}}),kA(EA)){var SA=RA("Promise").prototype.catch;LA.catch!==SA&&xA(LA,"catch",SA,{unsafe:!0})}var OA=rA,JA=Pi,re=Jr,ne=mB,_i=qD;_n({target:"Promise",stat:!0,forced:E},{race:function(A){var e=this,o=re.f(e),a=o.reject,c=ne(function(){var d=JA(e.resolve);_i(A,function(C){OA(d,e,C).then(o.resolve,a)})});return c.error&&a(c.value),o.promise}});var Ti=Jr;_n({target:"Promise",stat:!0,forced:Sh.CONSTRUCTOR},{reject:function(A){var e=Ti.f(this);return(0,e.reject)(A),e.promise}});var kt=or,Ni=io,cs=Jr,Se=function(A,e){if(kt(A),Ni(e)&&e.constructor===A)return e;var o=cs.f(A);return(0,o.resolve)(e),o.promise},Bt=_n,UA=Sh.CONSTRUCTOR,ii=Se;HA("Promise"),Bt({target:"Promise",stat:!0,forced:UA},{resolve:function(A){return ii(this,A)}});var _s=_n,Gi=fB,Lr=_,xi=HA,ar=$i,wt=xv,_t=Se,Wu=Dr,ln=Gi&&Gi.prototype;if(_s({target:"Promise",proto:!0,real:!0,forced:!!Gi&&Lr(function(){ln.finally.call({then:function(){}},function(){})})},{finally:function(A){var e=wt(this,xi("Promise")),o=ar(A);return this.then(o?function(a){return _t(e,A()).then(function(){return a})}:A,o?function(a){return _t(e,A()).then(function(){throw a})}:A)}}),ar(Gi)){var ho=xi("Promise").prototype.finally;ln.finally!==ho&&Wu(ln,"finally",ho,{unsafe:!0})}var ll=io,DC=ge,Rr=Hs("match"),xg=function(A){var e;return ll(A)&&((e=A[Rr])!==void 0?!!e:DC(A)==="RegExp")},SI=_,ac=f.RegExp,Af=!SI(function(){var A=!0;try{ac(".","d")}catch{A=!1}var e={},o="",a=A?"dgimsy":"gimsy",c=function(y,S){Object.defineProperty(e,y,{get:function(){return o+=S,!0}})},d={dotAll:"s",global:"g",ignoreCase:"i",multiline:"m",sticky:"y"};for(var C in A&&(d.hasIndices="d"),d)c(C,d[C]);return Object.getOwnPropertyDescriptor(ac.prototype,"flags").get.call(e)!==a||o!==a}),ip=or,Ya=function(){var A=ip(this),e="";return A.hasIndices&&(e+="d"),A.global&&(e+="g"),A.ignoreCase&&(e+="i"),A.multiline&&(e+="m"),A.dotAll&&(e+="s"),A.unicode&&(e+="u"),A.unicodeSets&&(e+="v"),A.sticky&&(e+="y"),e},Pl=rA,MI=Cs,zu=le,Yg={correct:Af},dg=Ya,WD=RegExp.prototype,fR=Yg.correct?function(A){return A.flags}:function(A){return Yg.correct||!zu(WD,A)||MI(A,"flags")?A.flags:Pl(dg,A)},yR=_,DR=f.RegExp,FT=yR(function(){var A=DR("a","y");return A.lastIndex=2,A.exec("abcd")!==null}),AV=FT||yR(function(){return!DR("a","y").sticky}),RU=FT||yR(function(){var A=DR("^r","gy");return A.lastIndex=2,A.exec("str")!==null}),op={BROKEN_CARET:RU,MISSED_STICKY:AV,UNSUPPORTED_Y:FT},OT=qi.f,PT=_,xT=f.RegExp,YT=PT(function(){var A=xT(".","s");return!(A.dotAll&&A.test(` -`)&&A.flags==="s")}),wU=_,eV=f.RegExp,_U=wU(function(){var A=eV("(?
    b)","g");return A.exec("b").groups.a!=="b"||"b".replace(A,"$c")!=="bc"}),ef=k,VT=f,tf=Ke,JT=Mr,tV=sD,iV=rg,oV=Pa,sV=Mc.f,SR=le,TU=xg,HT=ur,NU=fR,zD=op,qT=function(A,e,o){o in A||OT(A,o,{configurable:!0,get:function(){return e[o]},set:function(a){e[o]=a}})},MR=Dr,vR=_,nV=Cs,KT=un.enforce,RR=Tm,GU=YT,of=_U,rV=Hs("match"),RB=VT.RegExp,sf=RB.prototype,aV=VT.SyntaxError,bU=tf(sf.exec),nf=tf("".charAt),kU=tf("".replace),jT=tf("".indexOf),WT=tf("".slice),gV=/^\?<[^\s\d!#%&*+<=>@^][^\s!#%&*+<=>@^]*>/,Zu=/a/g,wB=/a/g,LU=new RB(Zu)!==Zu,UU=zD.MISSED_STICKY,cV=zD.UNSUPPORTED_Y,zT=ef&&(!LU||UU||GU||of||vR(function(){return wB[rV]=!1,RB(Zu)!==Zu||RB(wB)===wB||String(RB(Zu,"i"))!=="/a/i"}));if(JT("RegExp",zT)){for(var _B=function(A,e){var o,a,c,d,C,y,S=SR(sf,this),b=TU(A),V=e===void 0,J=[],gA=A;if(!S&&b&&V&&A.constructor===_B)return A;if((b||SR(sf,A))&&(A=A.source,V&&(e=NU(gA))),A=A===void 0?"":HT(A),e=e===void 0?"":HT(e),gA=A,GU&&"dotAll"in Zu&&(a=!!e&&jT(e,"s")>-1)&&(e=kU(e,/s/g,"")),o=e,UU&&"sticky"in Zu&&(c=!!e&&jT(e,"y")>-1)&&cV&&(e=kU(e,/y/g,"")),of&&(d=function(CA){for(var MA,ee=CA.length,Be=0,Pe="",Me=[],fi=oV(null),Ge=!1,dt=!1,Ci=0,yi="";Be<=ee;Be++){if((MA=nf(CA,Be))==="\\")MA+=nf(CA,++Be);else if(MA==="]")Ge=!1;else if(!Ge)switch(!0){case MA==="[":Ge=!0;break;case MA==="(":if(Pe+=MA,WT(CA,Be+1,Be+3)==="?:")continue;bU(gV,WT(CA,Be+1))&&(Be+=2,dt=!0),Ci++;continue;case(MA===">"&&dt):if(yi===""||nV(fi,yi))throw new aV("Invalid capture group name");fi[yi]=!0,Me[Me.length]=[yi,Ci],dt=!1,yi="";continue}dt?yi+=MA:Pe+=MA}return[Pe,Me]}(A),A=d[0],J=d[1]),C=tV(RB(A,e),S?this:sf,_B),(a||c||J.length)&&(y=KT(C),a&&(y.dotAll=!0,y.raw=_B(function(CA){for(var MA,ee=CA.length,Be=0,Pe="",Me=!1;Be<=ee;Be++)(MA=nf(CA,Be))!=="\\"?Me||MA!=="."?(MA==="["?Me=!0:MA==="]"&&(Me=!1),Pe+=MA):Pe+="[\\s\\S]":Pe+=MA+nf(CA,++Be);return Pe}(A),o)),c&&(y.sticky=!0),J.length&&(y.groups=J)),A!==gA)try{iV(C,"source",gA===""?"(?:)":gA)}catch{}return C},ZT=sV(RB),XT=0;ZT.length>XT;)qT(_B,RB,ZT[XT++]);sf.constructor=_B,_B.prototype=sf,MR(VT,"RegExp",_B,{constructor:!0})}RR("RegExp");var rf=rA,sp=Ke,TB=ur,lV=Ya,af=op,FU=Pa,OU=un.get,IV=YT,uV=_U,EV=Ls("native-string-replace",String.prototype.replace),np=RegExp.prototype.exec,$T=np,dV=sp("".charAt),CV=sp("".indexOf),PU=sp("".replace),ZD=sp("".slice),AN=function(){var A=/a/,e=/b*/g;return rf(np,A,"a"),rf(np,e,"a"),A.lastIndex!==0||e.lastIndex!==0}(),xU=af.BROKEN_CARET,eN=/()??/.exec("")[1]!==void 0;(AN||eN||xU||IV||uV)&&($T=function(A){var e,o,a,c,d,C,y,S=this,b=OU(S),V=TB(A),J=b.raw;if(J)return J.lastIndex=S.lastIndex,e=rf($T,J,V),S.lastIndex=J.lastIndex,e;var gA=b.groups,CA=xU&&S.sticky,MA=rf(lV,S),ee=S.source,Be=0,Pe=V;if(CA&&(MA=PU(MA,"y",""),CV(MA,"g")===-1&&(MA+="g"),Pe=ZD(V,S.lastIndex),S.lastIndex>0&&(!S.multiline||S.multiline&&dV(V,S.lastIndex-1)!==` -`)&&(ee="(?: "+ee+")",Pe=" "+Pe,Be++),o=new RegExp("^(?:"+ee+")",MA)),eN&&(o=new RegExp("^"+ee+"$(?!\\s)",MA)),AN&&(a=S.lastIndex),c=rf(np,CA?o:S,Pe),CA?c?(c.input=ZD(c.input,Be),c[0]=ZD(c[0],Be),c.index=S.lastIndex,S.lastIndex+=c[0].length):S.lastIndex=0:AN&&c&&(S.lastIndex=S.global?c.index+c[0].length:a),eN&&c&&c.length>1&&rf(EV,c[0],o,function(){for(d=1;d0;(a>>>=1)&&(e+=e))1&a&&(o+=e);return o},gf=uo,cf=JU(BV),NR=JU("".slice),HU=Math.ceil,tN=function(A){return function(e,o,a){var c,d,C=TR(gf(e)),y=hV(o),S=C.length,b=a===void 0?" ":TR(a);return y<=S||b===""?C:((d=cf(b,HU((c=y-S)/b.length))).length>c&&(d=NR(d,0,c)),A?C+d:d+C)}},iN={start:tN(!1)},oN=/Version\/10(?:\.\d+){1,2}(?: [\w./]+)?(?: Mobile\/\w+)? Safari\//.test(it),QV=iN.start;_n({target:"String",proto:!0,forced:oN},{padStart:function(A){return QV(this,A,arguments.length>1?arguments[1]:void 0)}});var qU=rA,sN=Dr,KU=XD,nN=_,rN=Hs,pV=rN("species"),jU=RegExp.prototype,GR=Ke,mV=zr,lf=ur,If=uo,aN=GR("".charAt),WU=GR("".charCodeAt),fV=GR("".slice),zU=function(A){return function(e,o){var a,c,d=lf(If(e)),C=mV(o),y=d.length;return C<0||C>=y?A?"":void 0:(a=WU(d,C))<55296||a>56319||C+1===y||(c=WU(d,C+1))<56320||c>57343?A?aN(d,C):a:A?fV(d,C,C+2):c-56320+(a-55296<<10)+65536}},bR={codeAt:zU(!1),charAt:zU(!0)},yV=bR.charAt,kR=Ke,DV=as,SV=Math.floor,gN=kR("".charAt),cN=kR("".replace),lN=kR("".slice),MV=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,vV=/\$([$&'`]|\d{1,2})/g,ZU=function(A,e,o,a,c,d){var C=o+A.length,y=a.length,S=vV;return c!==void 0&&(c=DV(c),S=MV),cN(d,S,function(b,V){var J;switch(gN(V,0)){case"$":return"$";case"&":return A;case"`":return lN(e,0,o);case"'":return lN(e,C);case"<":J=c[lN(V,1,-1)];break;default:var gA=+V;if(gA===0)return b;if(gA>y){var CA=SV(gA/10);return CA===0?b:CA<=y?a[CA-1]===void 0?gN(V,1):a[CA-1]+gN(V,1):b}J=a[gA-1]}return J===void 0?"":J})},XU=rA,RV=or,$U=$i,wV=ge,AF=XD,_V=TypeError,TV=Dd,eF=rA,LR=Ke,NV=function(A,e,o,a){var c=rN(A),d=!nN(function(){var b={};return b[c]=function(){return 7},""[A](b)!==7}),C=d&&!nN(function(){var b=!1,V=/a/,J;return V.exec=function(){return b=!0,null},V[c](""),!b});if(!d||!C||o){var y=/./[c],S=e(c,""[A],function(b,V,J,gA,CA){var MA=V.exec;return MA===KU||MA===jU.exec?d&&!CA?{done:!0,value:qU(y,V,J,gA)}:{done:!0,value:qU(b,J,V,gA)}:{done:!1}});sN(String.prototype,A,S[0]),sN(jU,c,S[1])}},GV=_,bV=or,tF=$i,kV=io,LV=zr,iF=qn,rp=ur,UR=uo,oF=function(A,e,o){return e+(o?yV(A,e).length:1)},FR=en,sF=ZU,nF=fR,UV=function(A,e){var o=A.exec;if($U(o)){var a=XU(o,A,e);return a!==null&&RV(a),a}if(wV(A)==="RegExp")return XU(AF,A,e);throw new _V("RegExp#exec called on incompatible receiver")},OR=Hs("replace"),IN=Math.max,FV=Math.min,rF=LR([].concat),uN=LR([].push),PR=LR("".indexOf),aF=LR("".slice),OV=function(A){return A===void 0?A:String(A)},PV="a".replace(/./,"$0")==="$0",gF=!!/./[OR]&&/./[OR]("a","$0")==="",xV=!GV(function(){var A=/./;return A.exec=function(){var e=[];return e.groups={a:"7"},e},"".replace(A,"$")!=="7"});NV("replace",function(A,e,o){var a=gF?"$":"$0";return[function(c,d){var C=UR(this),y=kV(c)?FR(c,OR):void 0;return y?eF(y,c,C,d):eF(e,rp(C),c,d)},function(c,d){var C=bV(this),y=rp(c);if(typeof d=="string"&&PR(d,a)===-1&&PR(d,"$<")===-1){var S=o(e,C,y,d);if(S.done)return S.value}var b=tF(d);b||(d=rp(d));var V,J=rp(nF(C)),gA=PR(J,"g")!==-1;gA&&(V=PR(J,"u")!==-1,C.lastIndex=0);for(var CA,MA=[];(CA=UV(C,y))!==null&&(uN(MA,CA),gA);)rp(CA[0])===""&&(C.lastIndex=oF(y,iF(C.lastIndex),V));for(var ee="",Be=0,Pe=0;Pe=Be&&(ee+=aF(y,Be,Ge)+Me,Be=Ge+fi.length)}return ee+aF(y,Be)}]},!xV||!PV||gF);var xR=` -\v\f\r                 \u2028\u2029\uFEFF`,YV=uo,VV=ur,EN=xR,dN=Ke("".replace),cF=RegExp("^["+EN+"]+"),JV=RegExp("(^|[^"+EN+"])["+EN+"]+$"),HV=function(A){return function(e){var o=VV(YV(e));return 1&A&&(o=dN(o,cF,"")),2&A&&(o=dN(o,JV,"$1")),o}},qV={trim:HV(3)},KV=zg.PROPER,jV=_,lF=xR,WV=qV.trim;_n({target:"String",proto:!0,forced:function(A){return jV(function(){return!!lF[A]()||"​…᠎"[A]()!=="​…᠎"||KV&&lF[A].name!==A})}("trim")},{trim:function(){return WV(this)}});var ou,uf,YR,CN={exports:{}},zV=Sr,hN=k,vI=f,IF=$i,uF=io,Ef=Cs,VR=Ir,BN=Jn,QN=rg,pN=Dr,EF=Lg,ZV=le,mN=BI,ap=oA,XV=Hs,$V=pc,fN=un.enforce,Nh=vI.Int8Array,df=Nh&&Nh.prototype,dF=vI.Uint8ClampedArray,CF=dF&&dF.prototype,SC=Nh&&mN(Nh),Td=df&&mN(df),AJ=Object.prototype,yN=vI.TypeError,hF=XV("toStringTag"),DN=$V("TYPED_ARRAY_TAG"),$D="TypedArrayConstructor",Nd=zV&&!!ap&&VR(vI.opera)!=="Opera",BF=!1,NB={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},QF={BigInt64Array:8,BigUint64Array:8},JR=function(A){if(!uF(A))return!1;var e=VR(A);return Ef(NB,e)||Ef(QF,e)};for(ou in NB)(YR=(uf=vI[ou])&&uf.prototype)?fN(YR)[$D]=uf:Nd=!1;for(ou in QF)(YR=(uf=vI[ou])&&uf.prototype)&&(fN(YR)[$D]=uf);if((!Nd||!IF(SC)||SC===Function.prototype)&&(SC=function(){throw new yN("Incorrect invocation")},Nd))for(ou in NB)vI[ou]&&ap(vI[ou],SC);if((!Nd||!Td||Td===AJ)&&(Td=SC.prototype,Nd))for(ou in NB)vI[ou]&&ap(vI[ou].prototype,Td);if(Nd&&mN(CF)!==Td&&ap(CF,Td),hN&&!Ef(Td,hF))for(ou in BF=!0,EF(Td,hF,{configurable:!0,get:function(){return uF(this)?this[DN]:void 0}}),NB)vI[ou]&&QN(vI[ou],DN,ou);var Gd={NATIVE_ARRAY_BUFFER_VIEWS:Nd,TYPED_ARRAY_TAG:BF&&DN,aTypedArray:function(A){if(JR(A))return A;throw new yN("Target is not a typed array")},aTypedArrayConstructor:function(A){if(IF(A)&&(!ap||ZV(SC,A)))return A;throw new yN(BN(A)+" is not a typed array constructor")},exportTypedArrayMethod:function(A,e,o,a){if(hN){if(o)for(var c in NB){var d=vI[c];if(d&&Ef(d.prototype,A))try{delete d.prototype[A]}catch{try{d.prototype[A]=e}catch{}}}Td[A]&&!o||pN(Td,A,o?e:Nd&&df[A]||e,a)}},exportTypedArrayStaticMethod:function(A,e,o){var a,c;if(hN){if(ap){if(o){for(a in NB)if((c=vI[a])&&Ef(c,A))try{delete c[A]}catch{}}if(SC[A]&&!o)return;try{return pN(SC,A,o?e:Nd&&SC[A]||e)}catch{}}for(a in NB)!(c=vI[a])||c[A]&&!o||pN(c,A,e)}},isTypedArray:JR,TypedArray:SC,TypedArrayPrototype:Td},SN=f,AS=_,HR=g,eJ=Gd.NATIVE_ARRAY_BUFFER_VIEWS,pF=SN.ArrayBuffer,gp=SN.Int8Array,mF=!eJ||!AS(function(){gp(1)})||!AS(function(){new gp(-1)})||!HR(function(A){new gp,new gp(null),new gp(1.5),new gp(A)},!0)||AS(function(){return new gp(new pF(2),1,void 0).length!==1}),tJ=io,iJ=Math.floor,fF=Number.isInteger||function(A){return!tJ(A)&&isFinite(A)&&iJ(A)===A},oJ=zr,sJ=RangeError,qR=function(A){var e=oJ(A);if(e<0)throw new sJ("The argument can't be less than 0");return e},nJ=RangeError,yF=function(A,e){var o=qR(A);if(o%e)throw new nJ("Wrong offset");return o},rJ=Math.round,DF=Ir,aJ=yn,gJ=TypeError,KR=function(A){var e=aJ(A,"number");if(typeof e=="number")throw new gJ("Can't convert number to bigint");return BigInt(e)},SF=$a,MF=rA,cJ=Ch,lJ=as,vF=Ua,RF=PE,IJ=Th,wF=OD,_F=function(A){var e=DF(A);return e==="BigInt64Array"||e==="BigUint64Array"},uJ=Gd.aTypedArrayConstructor,EJ=KR,jR=function(A){var e,o,a,c,d,C,y,S,b=cJ(this),V=lJ(A),J=arguments.length,gA=J>1?arguments[1]:void 0,CA=gA!==void 0,MA=IJ(V);if(MA&&!wF(MA))for(S=(y=RF(V,MA)).next,V=[];!(C=MF(S,y)).done;)V.push(C.value);for(CA&&J>2&&(gA=SF(gA,arguments[2])),o=vF(V),a=new(uJ(b))(o),c=_F(a),e=0;o>e;e++)d=CA?gA(V[e],e):V[e],a[e]=c?EJ(d):+d;return a},MN=$r,vN=BD,dJ=io,CJ=Hs("species"),TF=Array,hJ=function(A){var e;return MN(A)&&(e=A.constructor,(vN(e)&&(e===TF||MN(e.prototype))||dJ(e)&&(e=e[CJ])===null)&&(e=void 0)),e===void 0?TF:e},NF=$a,BJ=gi,QJ=as,GF=Ua,pJ=function(A,e){return new(hJ(A))(e===0?0:e)},RN=Ke([].push),bF=function(A){var e=A===1,o=A===2,a=A===3,c=A===4,d=A===6,C=A===7,y=A===5||d;return function(S,b,V,J){for(var gA,CA,MA=QJ(S),ee=BJ(MA),Be=GF(ee),Pe=NF(b,V),Me=0,fi=J||pJ,Ge=e?fi(S,Be):o||C?fi(S,0):void 0;Be>Me;Me++)if((y||Me in ee)&&(CA=Pe(gA=ee[Me],Me,MA),A))if(e)Ge[Me]=CA;else if(CA)switch(A){case 3:return!0;case 5:return gA;case 6:return Me;case 2:RN(Ge,gA)}else switch(A){case 4:return!1;case 7:RN(Ge,gA)}return d?-1:a||c?c:Ge}},kF={forEach:bF(0)},mJ=Ua,LF=_n,UF=f,FF=rA,OF=k,fJ=mF,eS=Gd,PF=wm,xF=fI,yJ=$A,GB=rg,DJ=fF,SJ=qn,YF=Bm,wN=yF,VF=function(A){var e=rJ(A);return e<0?0:e>255?255:255&e},_N=$,cp=Cs,MJ=Ir,TN=io,NN=yo,vJ=Pa,GN=le,WR=oA,RJ=Mc.f,JF=jR,HF=kF.forEach,zR=Tm,wJ=Lg,qF=qi,KF=w,jF=function(A,e,o){for(var a=0,c=arguments.length>2?o:mJ(e),d=new A(c);c>a;)d[a]=e[a++];return d},_J=sD,bN=un.get,TJ=un.set,lp=un.enforce,WF=qF.f,NJ=KF.f,kN=UF.RangeError,zF=PF.ArrayBuffer,GJ=zF.prototype,bJ=PF.DataView,Cf=eS.NATIVE_ARRAY_BUFFER_VIEWS,ZF=eS.TYPED_ARRAY_TAG,XF=eS.TypedArray,tS=eS.TypedArrayPrototype,iS=eS.isTypedArray,Ip="BYTES_PER_ELEMENT",ZR="Wrong length",XR=function(A,e){wJ(A,e,{configurable:!0,get:function(){return bN(this)[e]}})},$F=function(A){var e;return GN(GJ,A)||(e=MJ(A))==="ArrayBuffer"||e==="SharedArrayBuffer"},LN=function(A,e){return iS(A)&&!NN(e)&&e in A&&DJ(+e)&&e>=0},$R=function(A,e){return e=_N(e),LN(A,e)?yJ(2,A[e]):NJ(A,e)},AO=function(A,e,o){return e=_N(e),!(LN(A,e)&&TN(o)&&cp(o,"value"))||cp(o,"get")||cp(o,"set")||o.configurable||cp(o,"writable")&&!o.writable||cp(o,"enumerable")&&!o.enumerable?WF(A,e,o):(A[e]=o.value,A)};OF?(Cf||(KF.f=$R,qF.f=AO,XR(tS,"buffer"),XR(tS,"byteOffset"),XR(tS,"byteLength"),XR(tS,"length")),LF({target:"Object",stat:!0,forced:!Cf},{getOwnPropertyDescriptor:$R,defineProperty:AO}),CN.exports=function(A,e,o){var a=A.match(/\d+/)[0]/8,c=A+(o?"Clamped":"")+"Array",d="get"+A,C="set"+A,y=UF[c],S=y,b=S&&S.prototype,V={},J=function(CA,MA){WF(CA,MA,{get:function(){return function(ee,Be){var Pe=bN(ee);return Pe.view[d](Be*a+Pe.byteOffset,!0)}(this,MA)},set:function(ee){return function(Be,Pe,Me){var fi=bN(Be);fi.view[C](Pe*a+fi.byteOffset,o?VF(Me):Me,!0)}(this,MA,ee)},enumerable:!0})};Cf?fJ&&(S=e(function(CA,MA,ee,Be){return xF(CA,b),_J(TN(MA)?$F(MA)?Be!==void 0?new y(MA,wN(ee,a),Be):ee!==void 0?new y(MA,wN(ee,a)):new y(MA):iS(MA)?jF(S,MA):FF(JF,S,MA):new y(YF(MA)),CA,S)}),WR&&WR(S,XF),HF(RJ(y),function(CA){CA in S||GB(S,CA,y[CA])}),S.prototype=b):(S=e(function(CA,MA,ee,Be){xF(CA,b);var Pe,Me,fi,Ge=0,dt=0;if(TN(MA)){if(!$F(MA))return iS(MA)?jF(S,MA):FF(JF,S,MA);Pe=MA,dt=wN(ee,a);var Ci=MA.byteLength;if(Be===void 0){if(Ci%a)throw new kN(ZR);if((Me=Ci-dt)<0)throw new kN(ZR)}else if((Me=SJ(Be)*a)+dt>Ci)throw new kN(ZR);fi=Me/a}else fi=YF(MA),Pe=new zF(Me=fi*a);for(TJ(CA,{buffer:Pe,byteOffset:dt,byteLength:Me,length:fi,view:new bJ(Pe)});Ge1?arguments[1]:void 0,e>2?arguments[2]:void 0)},UN(function(){var A=0;return new Int8Array(2).fill({valueOf:function(){return A++}}),A!==1})),(0,Gd.exportTypedArrayStaticMethod)("from",jR,mF);var iO=f,oO=rA,ON=Gd,sO=Ua,PJ=yF,xJ=as,nO=_,YJ=iO.RangeError,PN=iO.Int8Array,xN=PN&&PN.prototype,YN=xN&&xN.set,VN=ON.aTypedArray,rO=ON.exportTypedArrayMethod,Aw=!nO(function(){var A=new Uint8ClampedArray(2);return oO(YN,A,{length:1,0:3},1),A[1]!==3}),aO=Aw&&ON.NATIVE_ARRAY_BUFFER_VIEWS&&nO(function(){var A=new PN(2);return A.set(1),A.set("2",1),A[0]!==0||A[1]!==2});rO("set",function(A){VN(this);var e=PJ(arguments.length>1?arguments[1]:void 0,1),o=xJ(A);if(Aw)return oO(YN,this,o,e);var a=this.length,c=sO(o),d=0;if(c+e>a)throw new YJ("Wrong length");for(;d0&&1/a<0?1:-1:o>a}}(A))},!ew||zN);var cO=_n,ZN=rA,sS=Ke,XN=uo,$N=$i,HJ=io,lO=xg,nS=ur,qJ=en,rS=fR,IO=ZU,KJ=Hs("replace"),uO=TypeError,bd=sS("".indexOf);sS("".replace);var aS=sS("".slice),jJ=Math.max;cO({target:"String",proto:!0},{replaceAll:function(A,e){var o,a,c,d,C,y,S,b,V,J=XN(this),gA=0,CA="";if(HJ(A)){if(lO(A)&&(o=nS(XN(rS(A))),!~bd(o,"g")))throw new uO("`.replaceAll` does not allow non-global regexes");if(a=qJ(A,KJ))return ZN(a,A,J,e)}for(c=nS(J),d=nS(A),(C=$N(e))||(e=nS(e)),y=d.length,S=jJ(1,y),b=bd(c,d);b!==-1;)V=C?nS(e(d,b,c)):IO(d,c,b,[],void 0,e),CA+=aS(c,gA,b)+V,gA=b+y,b=b+S>c.length?-1:bd(c,d,b+S);return gA1?arguments[1]:void 0)},dO=f,CO=AG,ZJ=eG,iw=zJ,XJ=rg,hO=function(A){if(A&&A.forEach!==iw)try{XJ(A,"forEach",iw)}catch{A.forEach=iw}};for(var tG in CO)CO[tG]&&hO(dO[tG]&&dO[tG].prototype);hO(ZJ);var ow=f,BO=AG,$J=eG,gS=Ki,cS=rg,AH=xa,iG=Hs("iterator"),oG=gS.values,QO=function(A,e){if(A){if(A[iG]!==oG)try{cS(A,iG,oG)}catch{A[iG]=oG}if(AH(A,e,!0),BO[e]){for(var o in gS)if(A[o]!==gS[o])try{cS(A,o,gS[o])}catch{A[o]=gS[o]}}}};for(var sG in BO)QO(ow[sG]&&ow[sG].prototype,sG);QO($J,"DOMTokenList");var nG=pC.clear;_n({global:!0,bind:!0,enumerable:!0,forced:f.clearImmediate!==nG},{clearImmediate:nG});var lS=f,eH=Dd,tH=$i,iH=Yr,oH=it,sH=Ie,nH=uB,rG=lS.Function,rH=/MSIE .\./.test(oH)||iH==="BUN"&&function(){var A=lS.Bun.version.split(".");return A.length<3||A[0]==="0"&&(A[1]<3||A[1]==="3"&&A[2]==="0")}(),pO=_n,mO=f,sw=pC.set,aH=function(A,e){var o=1;return rH?function(a,c){var d=nH(arguments.length,1)>o,C=tH(a)?a:rG(a),y=d?sH(arguments,o):[],S=d?function(){eH(C,this,y)}:C;return A(S)}:A},aG=mO.setImmediate?aH(sw):sw;pO({global:!0,bind:!0,enumerable:!0,forced:mO.setImmediate!==aG},{setImmediate:aG});var Gh=bR.charAt,gH=ur,nw=un,cH=Ee,fO=He,yO="String Iterator",lH=nw.set,DO=nw.getterFor(yO);cH(String,"String",function(A){lH(this,{type:yO,string:gH(A),index:0})},function(){var A,e=DO(this),o=e.string,a=e.index;return a>=o.length?fO(void 0,!0):(A=Gh(o,a),e.index+=A.length,fO(A,!1))});var IH=_,uH=k,EH=Hs("iterator"),SO=!IH(function(){var A=new URL("b?a=1&b=2&c=3","https://a"),e=A.searchParams,o=new URLSearchParams("a=1&a=2&b=3"),a="";return A.pathname="c%20d",e.forEach(function(c,d){e.delete("b"),a+=d+c}),o.delete("a",2),o.delete("b",void 0),!e.size&&!uH||!e.sort||A.href!=="https://a/c%20d?a=1&c=3"||e.get("c")!=="3"||String(new URLSearchParams("?a=1"))!=="a=1"||!e[EH]||new URL("https://a@b").username!=="a"||new URLSearchParams(new URLSearchParams("a=b")).get("a")!=="b"||new URL("https://тест").host!=="xn--e1aybc"||new URL("https://a#б").hash!=="#%D0%B1"||a!=="a1c3"||new URL("https://x",void 0).host!=="x"}),MO=k,dH=Ke,gG=rA,cG=_,lG=Nl,CH=vc,hH=pA,BH=as,vO=gi,up=Object.assign,RO=Object.defineProperty,wO=dH([].concat),QH=!up||cG(function(){if(MO&&up({b:1},up(RO({},"a",{enumerable:!0,get:function(){RO(this,"b",{value:3,enumerable:!1})}}),{b:2})).b!==1)return!0;var A={},e={},o=Symbol("assign detection"),a="abcdefghijklmnopqrst";return A[o]=7,a.split("").forEach(function(c){e[c]=c}),up({},A)[o]!==7||lG(up({},e)).join("")!==a})?function(A,e){for(var o=BH(A),a=arguments.length,c=1,d=CH.f,C=hH.f;a>c;)for(var y,S=vO(arguments[c++]),b=d?wO(lG(S),d(S)):lG(S),V=b.length,J=0;V>J;)y=b[J++],MO&&!gG(C,S,y)||(o[y]=S[y]);return o}:up,pH=or,mH=VD,fH=k,yH=qi,_O=$A,DH=$a,IS=rA,TO=as,NO=function(A,e,o,a){try{return a?e(pH(o)[0],o[1]):e(o)}catch(c){mH(A,"throw",c)}},IG=OD,SH=BD,MH=Ua,uS=function(A,e,o){fH?yH.f(A,e,_O(0,o)):A[e]=o},uG=PE,vH=Th,GO=Array,bB=Ke,EG=2147483647,bO=/[^\0-\u007E]/,dG=/[.\u3002\uFF0E\uFF61]/g,kO="Overflow: input needs wider integers to process",LO=RangeError,RH=bB(dG.exec),kB=Math.floor,rw=String.fromCharCode,aw=bB("".charCodeAt),Xu=bB([].join),LB=bB([].push),Ba=bB("".replace),UO=bB("".split),wH=bB("".toLowerCase),FO=function(A){return A+22+75*(A<26)},CG=function(A,e,o){var a=0;for(A=o?kB(A/700):A>>1,A+=kB(A/e);A>455;)A=kB(A/35),a+=36;return kB(a+36*A/(A+38))},_H=function(A){var e=[];A=function(Pe){for(var Me=[],fi=0,Ge=Pe.length;fi=55296&&dt<=56319&&fi=d&&akB((EG-C)/J))throw new LO(kO);for(C+=(V-d)*J,d=V,o=0;oEG)throw new LO(kO);if(a===d){for(var gA=C,CA=36;;){var MA=CA<=y?1:CA>=y+26?26:CA-y;if(gAc;){if(e=+arguments[c++],TH(e,1114111)!==e)throw new NH(e+" is not a valid code point");o[c]=e<65536?bh(e):bh(55296+((e-=65536)>>10),e%1024+56320)}return dS(o,"")}});var Ep=_n,Qf=f,dp=zv,hG=HA,Fs=rA,$u=Ke,pf=k,BG=SO,PO=Dr,GH=Lg,bH=Au,kH=xa,LH=NE,CS=un,xO=fI,QG=$i,UH=Cs,FH=$a,OH=Ir,PH=or,YO=io,xl=ur,xH=Pa,VO=$A,JO=PE,YH=Th,gw=He,mf=uB,VH=yt,JH=Hs("iterator"),Cp="URLSearchParams",pG=Cp+"Iterator",HO=CS.set,Il=CS.getterFor(Cp),kh=CS.getterFor(pG),qO=dp("fetch"),ff=dp("Request"),hS=dp("Headers"),mG=ff&&ff.prototype,KO=hS&&hS.prototype,jO=Qf.TypeError,HH=Qf.encodeURIComponent,qH=String.fromCharCode,KH=hG("String","fromCodePoint"),jH=parseInt,cw=$u("".charAt),lw=$u([].join),Lh=$u([].push),WO=$u("".replace),WH=$u([].shift),zO=$u([].splice),ZO=$u("".split),XO=$u("".slice),fG=$u(/./.exec),$O=/\+/g,zH=/^[0-9a-f]+$/i,AP=function(A,e){var o=XO(A,e,e+2);return fG(zH,o)?jH(o,16):NaN},ZH=function(A){for(var e=0,o=128;o>0&&A&o;o>>=1)e++;return e},XH=function(A){var e=null;switch(A.length){case 1:e=A[0];break;case 2:e=(31&A[0])<<6|63&A[1];break;case 3:e=(15&A[0])<<12|(63&A[1])<<6|63&A[2];break;case 4:e=(7&A[0])<<18|(63&A[1])<<12|(63&A[2])<<6|63&A[3]}return e>1114111?null:e},eP=function(A){for(var e=(A=WO(A,$O," ")).length,o="",a=0;ae){o+="%",a++;continue}var d=AP(A,a+1);if(d!=d){o+=c,a++;continue}a+=2;var C=ZH(d);if(C===0)c=qH(d);else{if(C===1||C>4){o+="�",a++;continue}for(var y=[d],S=1;Se||cw(A,a)!=="%");){var b=AP(A,a+1);if(b!=b){a+=3;break}if(b>191||b<128)break;Lh(y,b),a+=2,S++}if(y.length!==C){o+="�";continue}var V=XH(y);V===null?o+="�":c=KH(V)}}o+=c,a++}return o},$H=/[!'()~]|%20/g,Aq={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},eq=function(A){return Aq[A]},tP=function(A){return WO(HH(A),$H,eq)},yG=LH(function(A,e){HO(this,{type:pG,target:Il(A).entries,index:0,kind:e})},Cp,function(){var A=kh(this),e=A.target,o=A.index++;if(!e||o>=e.length)return A.target=null,gw(void 0,!0);var a=e[o];switch(A.kind){case"keys":return gw(a.key,!1);case"values":return gw(a.value,!1)}return gw([a.key,a.value],!1)},!0),iP=function(A){this.entries=[],this.url=null,A!==void 0&&(YO(A)?this.parseObject(A):this.parseQuery(typeof A=="string"?cw(A,0)==="?"?XO(A,1):A:xl(A)))};iP.prototype={type:Cp,bindURL:function(A){this.url=A,this.update()},parseObject:function(A){var e,o,a,c,d,C,y,S=this.entries,b=YH(A);if(b)for(o=(e=JO(A,b)).next;!(a=Fs(o,e)).done;){if(d=(c=JO(PH(a.value))).next,(C=Fs(d,c)).done||(y=Fs(d,c)).done||!Fs(d,c).done)throw new jO("Expected sequence with length 2");Lh(S,{key:xl(C.value),value:xl(y.value)})}else for(var V in A)UH(A,V)&&Lh(S,{key:V,value:xl(A[V])})},parseQuery:function(A){if(A)for(var e,o,a=this.entries,c=ZO(A,"&"),d=0;d0?arguments[0]:void 0));pf||(this.size=A.entries.length)},hp=yf.prototype;if(bH(hp,{append:function(A,e){var o=Il(this);mf(arguments.length,2),Lh(o.entries,{key:xl(A),value:xl(e)}),pf||this.size++,o.updateURL()},delete:function(A){for(var e=Il(this),o=mf(arguments.length,1),a=e.entries,c=xl(A),d=o<2?void 0:arguments[1],C=d===void 0?d:xl(d),y=0;yo.key?1:-1}),A.updateURL()},forEach:function(A){for(var e,o=Il(this).entries,a=FH(A,arguments.length>1?arguments[1]:void 0),c=0;c1?oP(arguments[1]):{})}}),QG(ff)){var SG=function(A){return xO(this,mG),new ff(A,arguments.length>1?oP(arguments[1]):{})};mG.constructor=SG,SG.prototype=mG,Ep({global:!0,constructor:!0,dontCallGetSet:!0,forced:!0},{Request:SG})}}var AE,iq=_n,MG=k,sP=SO,vG=f,nP=$a,xE=Ke,Iw=Dr,YE=Lg,oq=fI,RG=Cs,wG=QH,UB=function(A){var e=TO(A),o=SH(this),a=arguments.length,c=a>1?arguments[1]:void 0,d=c!==void 0;d&&(c=DH(c,a>2?arguments[2]:void 0));var C,y,S,b,V,J,gA=vH(e),CA=0;if(!gA||this===GO&&IG(gA))for(C=MH(e),y=o?new this(C):GO(C);C>CA;CA++)J=d?c(e[CA],CA):e[CA],uS(y,CA,J);else for(y=o?new this:[],V=(b=uG(e,gA)).next;!(S=IS(V,b)).done;CA++)J=d?NO(b,c,[S.value,CA],!0):S.value,uS(y,CA,J);return y.length=CA,y},kd=Ie,_G=bR.codeAt,sq=function(A){var e,o,a=[],c=UO(Ba(wH(A),dG,"."),".");for(e=0;e?@[\\\]^|]/,Eq=/[\0\t\n\r #/:<>?@[\\\]^|]/,dq=/^[\u0000-\u0020]+/,Cq=/(^|[^\u0000-\u0020])[\u0000-\u0020]+$/,hq=/[\t\n\r]/g,Mf=function(A){var e,o,a,c;if(typeof A=="number"){for(e=[],o=0;o<4;o++)lq(e,A%256),A=Fh(A/256);return BS(e,".")}if(typeof A=="object"){for(e="",a=function(d){for(var C=null,y=1,S=null,b=0,V=0;V<8;V++)d[V]!==0?(b>y&&(C=S,y=b),S=null,b=0):(S===null&&(S=V),++b);return b>y?S:C}(A),o=0;o<8;o++)c&&A[o]===0||(c&&(c=!1),a===o?(e+=o?":":"::",c=!0):(e+=cq(A[o],16),o<7&&(e+=":")));return"["+e+"]"}return A},vf={},EP=wG({},vf,{" ":1,'"':1,"<":1,">":1,"`":1}),LG=wG({},EP,{"#":1,"?":1,"{":1,"}":1}),OB=wG({},LG,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),Ud=function(A,e){var o=_G(A,0);return o>32&&o<127&&!RG(e,A)?A:encodeURIComponent(A)},Oh={ftp:21,file:null,http:80,https:443,ws:80,wss:443},Rf=function(A,e){var o;return A.length===2&&Ld(QS,VE(A,0))&&((o=VE(A,1))===":"||!e&&o==="|")},UG=function(A){var e;return A.length>1&&Rf(Bp(A,0,2))&&(A.length===2||(e=VE(A,2))==="/"||e==="\\"||e==="?"||e==="#")},pS=function(A){return A==="."||hw(A)==="%2e"},dP=function(A){return(A=hw(A))===".."||A==="%2e."||A===".%2e"||A==="%2e%2e"},eE={},su={},PB={},MC={},xB={},pw={},CP={},mS={},mw={},fw={},yw={},Dw={},Sw={},Mw={},FG={},vw={},wf={},vC={},fS={},nu={},Yl={},Rw=function(A,e,o){var a,c,d,C=Uh(A);if(e){if(c=this.parse(C))throw new NG(c);this.searchParams=null}else{if(o!==void 0&&(a=new Rw(o,!0)),c=this.parse(C,null,a))throw new NG(c);(d=gq(new aq)).bindURL(this),this.searchParams=d}};Rw.prototype={type:"URL",parse:function(A,e,o){var a,c,d,C,y=this,S=e||eE,b=0,V="",J=!1,gA=!1,CA=!1;for(A=Uh(A),e||(y.scheme="",y.username="",y.password="",y.host=null,y.port=null,y.path=[],y.query=null,y.fragment=null,y.cannotBeABaseURL=!1,A=dw(A,dq,""),A=dw(A,Cq,"$1")),A=dw(A,hq,""),a=UB(A);b<=a.length;){switch(c=a[b],S){case eE:if(!c||!Ld(QS,c)){if(e)return bG;S=PB;continue}V+=hw(c),S=su;break;case su:if(c&&(Ld(Iq,c)||c==="+"||c==="-"||c==="."))V+=hw(c);else{if(c!==":"){if(e)return bG;V="",S=PB,b=0;continue}if(e&&(y.isSpecial()!==RG(Oh,V)||V==="file"&&(y.includesCredentials()||y.port!==null)||y.scheme==="file"&&!y.host))return;if(y.scheme=V,e)return void(y.isSpecial()&&Oh[y.scheme]===y.port&&(y.port=null));V="",y.scheme==="file"?S=Mw:y.isSpecial()&&o&&o.scheme===y.scheme?S=MC:y.isSpecial()?S=mS:a[b+1]==="/"?(S=xB,b++):(y.cannotBeABaseURL=!0,Sf(y.path,""),S=fS)}break;case PB:if(!o||o.cannotBeABaseURL&&c!=="#")return bG;if(o.cannotBeABaseURL&&c==="#"){y.scheme=o.scheme,y.path=kd(o.path),y.query=o.query,y.fragment="",y.cannotBeABaseURL=!0,S=Yl;break}S=o.scheme==="file"?Mw:pw;continue;case MC:if(c!=="/"||a[b+1]!=="/"){S=pw;continue}S=mw,b++;break;case xB:if(c==="/"){S=fw;break}S=vC;continue;case pw:if(y.scheme=o.scheme,c===AE)y.username=o.username,y.password=o.password,y.host=o.host,y.port=o.port,y.path=kd(o.path),y.query=o.query;else if(c==="/"||c==="\\"&&y.isSpecial())S=CP;else if(c==="?")y.username=o.username,y.password=o.password,y.host=o.host,y.port=o.port,y.path=kd(o.path),y.query="",S=nu;else{if(c!=="#"){y.username=o.username,y.password=o.password,y.host=o.host,y.port=o.port,y.path=kd(o.path),y.path.length--,S=vC;continue}y.username=o.username,y.password=o.password,y.host=o.host,y.port=o.port,y.path=kd(o.path),y.query=o.query,y.fragment="",S=Yl}break;case CP:if(!y.isSpecial()||c!=="/"&&c!=="\\"){if(c!=="/"){y.username=o.username,y.password=o.password,y.host=o.host,y.port=o.port,S=vC;continue}S=fw}else S=mw;break;case mS:if(S=mw,c!=="/"||VE(V,b+1)!=="/")continue;b++;break;case mw:if(c!=="/"&&c!=="\\"){S=fw;continue}break;case fw:if(c==="@"){J&&(V="%40"+V),J=!0,d=UB(V);for(var MA=0;MA65535)return Bw;y.port=y.isSpecial()&&Pe===Oh[y.scheme]?null:Pe,V=""}if(e)return;S=wf;continue}return Bw}V+=c;break;case Mw:if(y.scheme="file",c==="/"||c==="\\")S=FG;else{if(!o||o.scheme!=="file"){S=vC;continue}switch(c){case AE:y.host=o.host,y.path=kd(o.path),y.query=o.query;break;case"?":y.host=o.host,y.path=kd(o.path),y.query="",S=nu;break;case"#":y.host=o.host,y.path=kd(o.path),y.query=o.query,y.fragment="",S=Yl;break;default:UG(BS(kd(a,b),""))||(y.host=o.host,y.path=kd(o.path),y.shortenPath()),S=vC;continue}}break;case FG:if(c==="/"||c==="\\"){S=vw;break}o&&o.scheme==="file"&&!UG(BS(kd(a,b),""))&&(Rf(o.path[0],!0)?Sf(y.path,o.path[0]):y.host=o.host),S=vC;continue;case vw:if(c===AE||c==="/"||c==="\\"||c==="?"||c==="#"){if(!e&&Rf(V))S=vC;else if(V===""){if(y.host="",e)return;S=wf}else{if(C=y.parseHost(V))return C;if(y.host==="localhost"&&(y.host=""),e)return;V="",S=wf}continue}V+=c;break;case wf:if(y.isSpecial()){if(S=vC,c!=="/"&&c!=="\\")continue}else if(e||c!=="?")if(e||c!=="#"){if(c!==AE&&(S=vC,c!=="/"))continue}else y.fragment="",S=Yl;else y.query="",S=nu;break;case vC:if(c===AE||c==="/"||c==="\\"&&y.isSpecial()||!e&&(c==="?"||c==="#")){if(dP(V)?(y.shortenPath(),c==="/"||c==="\\"&&y.isSpecial()||Sf(y.path,"")):pS(V)?c==="/"||c==="\\"&&y.isSpecial()||Sf(y.path,""):(y.scheme==="file"&&!y.path.length&&Rf(V)&&(y.host&&(y.host=""),V=VE(V,0)+":"),Sf(y.path,V)),V="",y.scheme==="file"&&(c===AE||c==="?"||c==="#"))for(;y.path.length>1&&y.path[0]==="";)Cw(y.path);c==="?"?(y.query="",S=nu):c==="#"&&(y.fragment="",S=Yl)}else V+=Ud(c,LG);break;case fS:c==="?"?(y.query="",S=nu):c==="#"?(y.fragment="",S=Yl):c!==AE&&(y.path[0]+=Ud(c,vf));break;case nu:e||c!=="#"?c!==AE&&(c==="'"&&y.isSpecial()?y.query+="%27":y.query+=c==="#"?"%23":Ud(c,vf)):(y.fragment="",S=Yl);break;case Yl:c!==AE&&(y.fragment+=Ud(c,EP))}b++}},parseHost:function(A){var e,o,a;if(VE(A,0)==="["){if(VE(A,A.length-1)!=="]"||(e=function(c){var d,C,y,S,b,V,J,gA=[0,0,0,0,0,0,0,0],CA=0,MA=null,ee=0,Be=function(){return VE(c,ee)};if(Be()===":"){if(VE(c,1)!==":")return;ee+=2,MA=++CA}for(;Be();){if(CA===8)return;if(Be()!==":"){for(d=C=0;C<4&&Ld(IP,Be());)d=16*d+Ew(Be(),16),ee++,C++;if(Be()==="."){if(C===0||(ee-=C,CA>6))return;for(y=0;Be();){if(S=null,y>0){if(!(Be()==="."&&y<4))return;ee++}if(!Ld(kG,Be()))return;for(;Ld(kG,Be());){if(b=Ew(Be(),10),S===null)S=b;else{if(S===0)return;S=10*S+b}if(S>255)return;ee++}gA[CA]=256*gA[CA]+S,++y!==2&&y!==4||CA++}if(y!==4)return;break}if(Be()===":"){if(ee++,!Be())return}else if(Be())return;gA[CA++]=d}else{if(MA!==null)return;ee++,MA=++CA}}if(MA!==null)for(V=CA-MA,CA=7;CA!==0&&V>0;)J=gA[CA],gA[CA--]=gA[MA+V-1],gA[MA+--V]=J;else if(CA!==8)return;return gA}(Bp(A,1,-1)),!e))return FB;this.host=e}else if(this.isSpecial()){if(A=sq(A),Ld(uP,A)||(e=function(c){var d,C,y,S,b,V,J,gA=GG(c,".");if(gA.length&&gA[gA.length-1]===""&&gA.length--,(d=gA.length)>4)return c;for(C=[],y=0;y1&&VE(S,0)==="0"&&(b=Ld(Qw,S)?16:8,S=Bp(S,b===8?1:2)),S==="")V=0;else{if(!Ld(b===10?lP:b===8?uq:IP,S))return c;V=Ew(S,b)}Sf(C,V)}for(y=0;y=gP(256,5-d))return null}else if(V>255)return null;for(J=cP(C),y=0;y1?arguments[1]:void 0,a=rq(e,new Rw(A,!1,o));MG||(e.href=a.serialize(),e.origin=a.getOrigin(),e.protocol=a.getProtocol(),e.username=a.getUsername(),e.password=a.getPassword(),e.host=a.getHost(),e.hostname=a.getHostname(),e.port=a.getPort(),e.pathname=a.getPathname(),e.search=a.getSearch(),e.searchParams=a.getSearchParams(),e.hash=a.getHash())},Vl=Ph.prototype,Jl=function(A,e){return{get:function(){return uw(this)[A]()},set:e&&function(o){return uw(this)[e](o)},configurable:!0,enumerable:!0}};if(MG&&(YE(Vl,"href",Jl("serialize","setHref")),YE(Vl,"origin",Jl("getOrigin")),YE(Vl,"protocol",Jl("getProtocol","setProtocol")),YE(Vl,"username",Jl("getUsername","setUsername")),YE(Vl,"password",Jl("getPassword","setPassword")),YE(Vl,"host",Jl("getHost","setHost")),YE(Vl,"hostname",Jl("getHostname","setHostname")),YE(Vl,"port",Jl("getPort","setPort")),YE(Vl,"pathname",Jl("getPathname","setPathname")),YE(Vl,"search",Jl("getSearch","setSearch")),YE(Vl,"searchParams",Jl("getSearchParams")),YE(Vl,"hash",Jl("getHash","setHash"))),Iw(Vl,"toJSON",function(){return uw(this).serialize()},{enumerable:!0}),Iw(Vl,"toString",function(){return uw(this).serialize()},{enumerable:!0}),Df){var hP=Df.createObjectURL,ww=Df.revokeObjectURL;hP&&Iw(Ph,"createObjectURL",nP(hP,Df)),ww&&Iw(Ph,"revokeObjectURL",nP(ww,Df))}nq(Ph,"URL"),iq({global:!0,constructor:!0,forced:!sP,sham:!MG},{URL:Ph});var BP=rA;_n({target:"URL",proto:!0,enumerable:!0},{toJSON:function(){return BP(URL.prototype.toString,this)}});let QP=!0,_w=!0;function yS(A,e,o){const a=A.match(e);return a&&a.length>=o&&parseFloat(a[o],10)}function YB(A,e,o){if(!A.RTCPeerConnection)return;const a=A.RTCPeerConnection.prototype,c=a.addEventListener;a.addEventListener=function(C,y){if(C!==e)return c.apply(this,arguments);const S=b=>{const V=o(b);V&&(y.handleEvent?y.handleEvent(V):y(V))};return this._eventMap=this._eventMap||{},this._eventMap[e]||(this._eventMap[e]=new Map),this._eventMap[e].set(y,S),c.apply(this,[C,S])};const d=a.removeEventListener;a.removeEventListener=function(C,y){if(C!==e||!this._eventMap||!this._eventMap[e])return d.apply(this,arguments);if(!this._eventMap[e].has(y))return d.apply(this,arguments);const S=this._eventMap[e].get(y);return this._eventMap[e].delete(y),this._eventMap[e].size===0&&delete this._eventMap[e],Object.keys(this._eventMap).length===0&&delete this._eventMap,d.apply(this,[C,S])},Object.defineProperty(a,"on"+e,{get(){return this["_on"+e]},set(C){this["_on"+e]&&(this.removeEventListener(e,this["_on"+e]),delete this["_on"+e]),C&&this.addEventListener(e,this["_on"+e]=C)},enumerable:!0,configurable:!0})}function pP(A){return typeof A!="boolean"?new Error("Argument type: "+typeof A+". Please use a boolean."):(QP=A,A?"adapter.js logging disabled":"adapter.js logging enabled")}function Bq(A){return typeof A!="boolean"?new Error("Argument type: "+typeof A+". Please use a boolean."):(_w=!A,"adapter.js deprecation warnings "+(A?"disabled":"enabled"))}function Tw(){if(typeof window=="object"){if(QP)return;typeof console<"u"&&typeof console.log=="function"&&console.log.apply(console,arguments)}}function DS(A,e){_w&&console.warn(A+" is deprecated, please use "+e+" instead.")}function OG(A){return Object.prototype.toString.call(A)==="[object Object]"}function PG(A){return OG(A)?Object.keys(A).reduce(function(e,o){const a=OG(A[o]),c=a?PG(A[o]):A[o],d=a&&!Object.keys(c).length;return c===void 0||d?e:Object.assign(e,{[o]:c})},{}):A}function xG(A,e,o){e&&!o.has(e.id)&&(o.set(e.id,e),Object.keys(e).forEach(a=>{a.endsWith("Id")?xG(A,A.get(e[a]),o):a.endsWith("Ids")&&e[a].forEach(c=>{xG(A,A.get(c),o)})}))}function mP(A,e,o){const a=o?"outbound-rtp":"inbound-rtp",c=new Map;if(e===null)return c;const d=[];return A.forEach(C=>{C.type==="track"&&C.trackIdentifier===e.id&&d.push(C)}),d.forEach(C=>{A.forEach(y=>{y.type===a&&y.trackId===C.id&&xG(A,y,c)})}),c}const YG=Tw;function fP(A,e){const o=A&&A.navigator;if(!o.mediaDevices)return;const a=function(C){if(typeof C!="object"||C.mandatory||C.optional)return C;const y={};return Object.keys(C).forEach(S=>{if(S==="require"||S==="advanced"||S==="mediaSource")return;const b=typeof C[S]=="object"?C[S]:{ideal:C[S]};b.exact!==void 0&&typeof b.exact=="number"&&(b.min=b.max=b.exact);const V=function(J,gA){return J?J+gA.charAt(0).toUpperCase()+gA.slice(1):gA==="deviceId"?"sourceId":gA};if(b.ideal!==void 0){y.optional=y.optional||[];let J={};typeof b.ideal=="number"?(J[V("min",S)]=b.ideal,y.optional.push(J),J={},J[V("max",S)]=b.ideal,y.optional.push(J)):(J[V("",S)]=b.ideal,y.optional.push(J))}b.exact!==void 0&&typeof b.exact!="number"?(y.mandatory=y.mandatory||{},y.mandatory[V("",S)]=b.exact):["min","max"].forEach(J=>{b[J]!==void 0&&(y.mandatory=y.mandatory||{},y.mandatory[V(J,S)]=b[J])})}),C.advanced&&(y.optional=(y.optional||[]).concat(C.advanced)),y},c=function(C,y){if(e.version>=61)return y(C);if((C=JSON.parse(JSON.stringify(C)))&&typeof C.audio=="object"){const S=function(b,V,J){V in b&&!(J in b)&&(b[J]=b[V],delete b[V])};S((C=JSON.parse(JSON.stringify(C))).audio,"autoGainControl","googAutoGainControl"),S(C.audio,"noiseSuppression","googNoiseSuppression"),C.audio=a(C.audio)}if(C&&typeof C.video=="object"){let S=C.video.facingMode;S=S&&(typeof S=="object"?S:{ideal:S});const b=e.version<66;if(S&&(S.exact==="user"||S.exact==="environment"||S.ideal==="user"||S.ideal==="environment")&&(!o.mediaDevices.getSupportedConstraints||!o.mediaDevices.getSupportedConstraints().facingMode||b)){let V;if(delete C.video.facingMode,S.exact==="environment"||S.ideal==="environment"?V=["back","rear"]:S.exact!=="user"&&S.ideal!=="user"||(V=["front"]),V)return o.mediaDevices.enumerateDevices().then(J=>{J=J.filter(CA=>CA.kind==="videoinput");let gA=J.find(CA=>V.some(MA=>CA.label.toLowerCase().includes(MA)));return!gA&&J.length&&V.includes("back")&&(gA=J[J.length-1]),gA&&(C.video.deviceId=S.exact?{exact:gA.deviceId}:{ideal:gA.deviceId}),C.video=a(C.video),YG("chrome: "+JSON.stringify(C)),y(C)})}C.video=a(C.video)}return YG("chrome: "+JSON.stringify(C)),y(C)},d=function(C){return e.version>=64?C:{name:{PermissionDeniedError:"NotAllowedError",PermissionDismissedError:"NotAllowedError",InvalidStateError:"NotAllowedError",DevicesNotFoundError:"NotFoundError",ConstraintNotSatisfiedError:"OverconstrainedError",TrackStartError:"NotReadableError",MediaDeviceFailedDueToShutdown:"NotAllowedError",MediaDeviceKillSwitchOn:"NotAllowedError",TabCaptureError:"AbortError",ScreenCaptureError:"AbortError",DeviceCaptureError:"AbortError"}[C.name]||C.name,message:C.message,constraint:C.constraint||C.constraintName,toString(){return this.name+(this.message&&": ")+this.message}}};if(o.getUserMedia=function(C,y,S){c(C,b=>{o.webkitGetUserMedia(b,y,V=>{S&&S(d(V))})})}.bind(o),o.mediaDevices.getUserMedia){const C=o.mediaDevices.getUserMedia.bind(o.mediaDevices);o.mediaDevices.getUserMedia=function(y){return c(y,S=>C(S).then(b=>{if(S.audio&&!b.getAudioTracks().length||S.video&&!b.getVideoTracks().length)throw b.getTracks().forEach(V=>{V.stop()}),new DOMException("","NotFoundError");return b},b=>Promise.reject(d(b))))}}}function yP(A){A.MediaStream=A.MediaStream||A.webkitMediaStream}function DP(A){if(typeof A=="object"&&A.RTCPeerConnection&&!("ontrack"in A.RTCPeerConnection.prototype)){Object.defineProperty(A.RTCPeerConnection.prototype,"ontrack",{get(){return this._ontrack},set(o){this._ontrack&&this.removeEventListener("track",this._ontrack),this.addEventListener("track",this._ontrack=o)},enumerable:!0,configurable:!0});const e=A.RTCPeerConnection.prototype.setRemoteDescription;A.RTCPeerConnection.prototype.setRemoteDescription=function(){return this._ontrackpoly||(this._ontrackpoly=o=>{o.stream.addEventListener("addtrack",a=>{let c;c=A.RTCPeerConnection.prototype.getReceivers?this.getReceivers().find(C=>C.track&&C.track.id===a.track.id):{track:a.track};const d=new Event("track");d.track=a.track,d.receiver=c,d.transceiver={receiver:c},d.streams=[o.stream],this.dispatchEvent(d)}),o.stream.getTracks().forEach(a=>{let c;c=A.RTCPeerConnection.prototype.getReceivers?this.getReceivers().find(C=>C.track&&C.track.id===a.id):{track:a};const d=new Event("track");d.track=a,d.receiver=c,d.transceiver={receiver:c},d.streams=[o.stream],this.dispatchEvent(d)})},this.addEventListener("addstream",this._ontrackpoly)),e.apply(this,arguments)}}else YB(A,"track",e=>(e.transceiver||Object.defineProperty(e,"transceiver",{value:{receiver:e.receiver}}),e))}function VG(A){if(typeof A=="object"&&A.RTCPeerConnection&&!("getSenders"in A.RTCPeerConnection.prototype)&&"createDTMFSender"in A.RTCPeerConnection.prototype){const e=function(c,d){return{track:d,get dtmf(){return this._dtmf===void 0&&(d.kind==="audio"?this._dtmf=c.createDTMFSender(d):this._dtmf=null),this._dtmf},_pc:c}};if(!A.RTCPeerConnection.prototype.getSenders){A.RTCPeerConnection.prototype.getSenders=function(){return this._senders=this._senders||[],this._senders.slice()};const c=A.RTCPeerConnection.prototype.addTrack;A.RTCPeerConnection.prototype.addTrack=function(C,y){let S=c.apply(this,arguments);return S||(S=e(this,C),this._senders.push(S)),S};const d=A.RTCPeerConnection.prototype.removeTrack;A.RTCPeerConnection.prototype.removeTrack=function(C){d.apply(this,arguments);const y=this._senders.indexOf(C);y!==-1&&this._senders.splice(y,1)}}const o=A.RTCPeerConnection.prototype.addStream;A.RTCPeerConnection.prototype.addStream=function(c){this._senders=this._senders||[],o.apply(this,[c]),c.getTracks().forEach(d=>{this._senders.push(e(this,d))})};const a=A.RTCPeerConnection.prototype.removeStream;A.RTCPeerConnection.prototype.removeStream=function(c){this._senders=this._senders||[],a.apply(this,[c]),c.getTracks().forEach(d=>{const C=this._senders.find(y=>y.track===d);C&&this._senders.splice(this._senders.indexOf(C),1)})}}else if(typeof A=="object"&&A.RTCPeerConnection&&"getSenders"in A.RTCPeerConnection.prototype&&"createDTMFSender"in A.RTCPeerConnection.prototype&&A.RTCRtpSender&&!("dtmf"in A.RTCRtpSender.prototype)){const e=A.RTCPeerConnection.prototype.getSenders;A.RTCPeerConnection.prototype.getSenders=function(){const o=e.apply(this,[]);return o.forEach(a=>a._pc=this),o},Object.defineProperty(A.RTCRtpSender.prototype,"dtmf",{get(){return this._dtmf===void 0&&(this.track.kind==="audio"?this._dtmf=this._pc.createDTMFSender(this.track):this._dtmf=null),this._dtmf}})}}function SP(A){if(!A.RTCPeerConnection)return;const e=A.RTCPeerConnection.prototype.getStats;A.RTCPeerConnection.prototype.getStats=function(){const[o,a,c]=arguments;if(arguments.length>0&&typeof o=="function")return e.apply(this,arguments);if(e.length===0&&(arguments.length===0||typeof o!="function"))return e.apply(this,[]);const d=function(y){const S={};return y.result().forEach(b=>{const V={id:b.id,timestamp:b.timestamp,type:{localcandidate:"local-candidate",remotecandidate:"remote-candidate"}[b.type]||b.type};b.names().forEach(J=>{V[J]=b.stat(J)}),S[V.id]=V}),S},C=function(y){return new Map(Object.keys(y).map(S=>[S,y[S]]))};if(arguments.length>=2){const y=function(S){a(C(d(S)))};return e.apply(this,[y,o])}return new Promise((y,S)=>{e.apply(this,[function(b){y(C(d(b)))},S])}).then(a,c)}}function JG(A){if(!(typeof A=="object"&&A.RTCPeerConnection&&A.RTCRtpSender&&A.RTCRtpReceiver))return;if(!("getStats"in A.RTCRtpSender.prototype)){const o=A.RTCPeerConnection.prototype.getSenders;o&&(A.RTCPeerConnection.prototype.getSenders=function(){const c=o.apply(this,[]);return c.forEach(d=>d._pc=this),c});const a=A.RTCPeerConnection.prototype.addTrack;a&&(A.RTCPeerConnection.prototype.addTrack=function(){const c=a.apply(this,arguments);return c._pc=this,c}),A.RTCRtpSender.prototype.getStats=function(){const c=this;return this._pc.getStats().then(d=>mP(d,c.track,!0))}}if(!("getStats"in A.RTCRtpReceiver.prototype)){const o=A.RTCPeerConnection.prototype.getReceivers;o&&(A.RTCPeerConnection.prototype.getReceivers=function(){const a=o.apply(this,[]);return a.forEach(c=>c._pc=this),a}),YB(A,"track",a=>(a.receiver._pc=a.srcElement,a)),A.RTCRtpReceiver.prototype.getStats=function(){const a=this;return this._pc.getStats().then(c=>mP(c,a.track,!1))}}if(!("getStats"in A.RTCRtpSender.prototype)||!("getStats"in A.RTCRtpReceiver.prototype))return;const e=A.RTCPeerConnection.prototype.getStats;A.RTCPeerConnection.prototype.getStats=function(){if(arguments.length>0&&arguments[0]instanceof A.MediaStreamTrack){const o=arguments[0];let a,c,d;return this.getSenders().forEach(C=>{C.track===o&&(a?d=!0:a=C)}),this.getReceivers().forEach(C=>(C.track===o&&(c?d=!0:c=C),C.track===o)),d||a&&c?Promise.reject(new DOMException("There are more than one sender or receiver for the track.","InvalidAccessError")):a?a.getStats():c?c.getStats():Promise.reject(new DOMException("There is no sender or receiver for the track.","InvalidAccessError"))}return e.apply(this,arguments)}}function MP(A){A.RTCPeerConnection.prototype.getLocalStreams=function(){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},Object.keys(this._shimmedLocalStreams).map(d=>this._shimmedLocalStreams[d][0])};const e=A.RTCPeerConnection.prototype.addTrack;A.RTCPeerConnection.prototype.addTrack=function(d,C){if(!C)return e.apply(this,arguments);this._shimmedLocalStreams=this._shimmedLocalStreams||{};const y=e.apply(this,arguments);return this._shimmedLocalStreams[C.id]?this._shimmedLocalStreams[C.id].indexOf(y)===-1&&this._shimmedLocalStreams[C.id].push(y):this._shimmedLocalStreams[C.id]=[C,y],y};const o=A.RTCPeerConnection.prototype.addStream;A.RTCPeerConnection.prototype.addStream=function(d){this._shimmedLocalStreams=this._shimmedLocalStreams||{},d.getTracks().forEach(S=>{if(this.getSenders().find(b=>b.track===S))throw new DOMException("Track already exists.","InvalidAccessError")});const C=this.getSenders();o.apply(this,arguments);const y=this.getSenders().filter(S=>C.indexOf(S)===-1);this._shimmedLocalStreams[d.id]=[d].concat(y)};const a=A.RTCPeerConnection.prototype.removeStream;A.RTCPeerConnection.prototype.removeStream=function(d){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},delete this._shimmedLocalStreams[d.id],a.apply(this,arguments)};const c=A.RTCPeerConnection.prototype.removeTrack;A.RTCPeerConnection.prototype.removeTrack=function(d){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},d&&Object.keys(this._shimmedLocalStreams).forEach(C=>{const y=this._shimmedLocalStreams[C].indexOf(d);y!==-1&&this._shimmedLocalStreams[C].splice(y,1),this._shimmedLocalStreams[C].length===1&&delete this._shimmedLocalStreams[C]}),c.apply(this,arguments)}}function vP(A,e){if(!A.RTCPeerConnection)return;if(A.RTCPeerConnection.prototype.addTrack&&e.version>=65)return MP(A);const o=A.RTCPeerConnection.prototype.getLocalStreams;A.RTCPeerConnection.prototype.getLocalStreams=function(){const S=o.apply(this);return this._reverseStreams=this._reverseStreams||{},S.map(b=>this._reverseStreams[b.id])};const a=A.RTCPeerConnection.prototype.addStream;A.RTCPeerConnection.prototype.addStream=function(S){if(this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},S.getTracks().forEach(b=>{if(this.getSenders().find(V=>V.track===b))throw new DOMException("Track already exists.","InvalidAccessError")}),!this._reverseStreams[S.id]){const b=new A.MediaStream(S.getTracks());this._streams[S.id]=b,this._reverseStreams[b.id]=S,S=b}a.apply(this,[S])};const c=A.RTCPeerConnection.prototype.removeStream;function d(S,b){let V=b.sdp;return Object.keys(S._reverseStreams||[]).forEach(J=>{const gA=S._reverseStreams[J],CA=S._streams[gA.id];V=V.replace(new RegExp(CA.id,"g"),gA.id)}),new RTCSessionDescription({type:b.type,sdp:V})}A.RTCPeerConnection.prototype.removeStream=function(S){this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},c.apply(this,[this._streams[S.id]||S]),delete this._reverseStreams[this._streams[S.id]?this._streams[S.id].id:S.id],delete this._streams[S.id]},A.RTCPeerConnection.prototype.addTrack=function(S,b){if(this.signalingState==="closed")throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");const V=[].slice.call(arguments,1);if(V.length!==1||!V[0].getTracks().find(gA=>gA===S))throw new DOMException("The adapter.js addTrack polyfill only supports a single stream which is associated with the specified track.","NotSupportedError");if(this.getSenders().find(gA=>gA.track===S))throw new DOMException("Track already exists.","InvalidAccessError");this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{};const J=this._streams[b.id];if(J)J.addTrack(S),Promise.resolve().then(()=>{this.dispatchEvent(new Event("negotiationneeded"))});else{const gA=new A.MediaStream([S]);this._streams[b.id]=gA,this._reverseStreams[gA.id]=b,this.addStream(gA)}return this.getSenders().find(gA=>gA.track===S)},["createOffer","createAnswer"].forEach(function(S){const b=A.RTCPeerConnection.prototype[S],V={[S](){const J=arguments;return arguments.length&&typeof arguments[0]=="function"?b.apply(this,[gA=>{const CA=d(this,gA);J[0].apply(null,[CA])},gA=>{J[1]&&J[1].apply(null,gA)},arguments[2]]):b.apply(this,arguments).then(gA=>d(this,gA))}};A.RTCPeerConnection.prototype[S]=V[S]});const C=A.RTCPeerConnection.prototype.setLocalDescription;A.RTCPeerConnection.prototype.setLocalDescription=function(){return arguments.length&&arguments[0].type?(arguments[0]=function(S,b){let V=b.sdp;return Object.keys(S._reverseStreams||[]).forEach(J=>{const gA=S._reverseStreams[J],CA=S._streams[gA.id];V=V.replace(new RegExp(gA.id,"g"),CA.id)}),new RTCSessionDescription({type:b.type,sdp:V})}(this,arguments[0]),C.apply(this,arguments)):C.apply(this,arguments)};const y=Object.getOwnPropertyDescriptor(A.RTCPeerConnection.prototype,"localDescription");Object.defineProperty(A.RTCPeerConnection.prototype,"localDescription",{get(){const S=y.get.apply(this);return S.type===""?S:d(this,S)}}),A.RTCPeerConnection.prototype.removeTrack=function(S){if(this.signalingState==="closed")throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");if(!S._pc)throw new DOMException("Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.","TypeError");if(S._pc!==this)throw new DOMException("Sender was not created by this connection.","InvalidAccessError");let b;this._streams=this._streams||{},Object.keys(this._streams).forEach(V=>{this._streams[V].getTracks().find(J=>S.track===J)&&(b=this._streams[V])}),b&&(b.getTracks().length===1?this.removeStream(this._reverseStreams[b.id]):b.removeTrack(S.track),this.dispatchEvent(new Event("negotiationneeded")))}}function SS(A,e){!A.RTCPeerConnection&&A.webkitRTCPeerConnection&&(A.RTCPeerConnection=A.webkitRTCPeerConnection),A.RTCPeerConnection&&e.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach(function(o){const a=A.RTCPeerConnection.prototype[o],c={[o](){return arguments[0]=new(o==="addIceCandidate"?A.RTCIceCandidate:A.RTCSessionDescription)(arguments[0]),a.apply(this,arguments)}};A.RTCPeerConnection.prototype[o]=c[o]})}function RP(A,e){YB(A,"negotiationneeded",o=>{const a=o.target;if(!(e.version<72||a.getConfiguration&&a.getConfiguration().sdpSemantics==="plan-b")||a.signalingState==="stable")return o})}var HG=Object.freeze({__proto__:null,shimMediaStream:yP,shimOnTrack:DP,shimGetSendersWithDtmf:VG,shimGetStats:SP,shimSenderReceiverGetStats:JG,shimAddTrackRemoveTrackWithNative:MP,shimAddTrackRemoveTrack:vP,shimPeerConnection:SS,fixNegotiationNeeded:RP,shimGetUserMedia:fP,shimGetDisplayMedia:function(A,e){A.navigator.mediaDevices&&"getDisplayMedia"in A.navigator.mediaDevices||A.navigator.mediaDevices&&(typeof e=="function"?A.navigator.mediaDevices.getDisplayMedia=function(o){return e(o).then(a=>{const c=o.video&&o.video.width,d=o.video&&o.video.height,C=o.video&&o.video.frameRate;return o.video={mandatory:{chromeMediaSource:"desktop",chromeMediaSourceId:a,maxFrameRate:C||3}},c&&(o.video.mandatory.maxWidth=c),d&&(o.video.mandatory.maxHeight=d),A.navigator.mediaDevices.getUserMedia(o)})}:console.error("shimGetDisplayMedia: getSourceId argument is not a function"))}});function wP(A,e){const o=A&&A.navigator,a=A&&A.MediaStreamTrack;if(o.getUserMedia=function(c,d,C){DS("navigator.getUserMedia","navigator.mediaDevices.getUserMedia"),o.mediaDevices.getUserMedia(c).then(d,C)},!(e.version>55&&"autoGainControl"in o.mediaDevices.getSupportedConstraints())){const c=function(C,y,S){y in C&&!(S in C)&&(C[S]=C[y],delete C[y])},d=o.mediaDevices.getUserMedia.bind(o.mediaDevices);if(o.mediaDevices.getUserMedia=function(C){return typeof C=="object"&&typeof C.audio=="object"&&(C=JSON.parse(JSON.stringify(C)),c(C.audio,"autoGainControl","mozAutoGainControl"),c(C.audio,"noiseSuppression","mozNoiseSuppression")),d(C)},a&&a.prototype.getSettings){const C=a.prototype.getSettings;a.prototype.getSettings=function(){const y=C.apply(this,arguments);return c(y,"mozAutoGainControl","autoGainControl"),c(y,"mozNoiseSuppression","noiseSuppression"),y}}if(a&&a.prototype.applyConstraints){const C=a.prototype.applyConstraints;a.prototype.applyConstraints=function(y){return this.kind==="audio"&&typeof y=="object"&&(y=JSON.parse(JSON.stringify(y)),c(y,"autoGainControl","mozAutoGainControl"),c(y,"noiseSuppression","mozNoiseSuppression")),C.apply(this,[y])}}}}function _P(A){typeof A=="object"&&A.RTCTrackEvent&&"receiver"in A.RTCTrackEvent.prototype&&!("transceiver"in A.RTCTrackEvent.prototype)&&Object.defineProperty(A.RTCTrackEvent.prototype,"transceiver",{get(){return{receiver:this.receiver}}})}function Nw(A,e){if(typeof A!="object"||!A.RTCPeerConnection&&!A.mozRTCPeerConnection)return;!A.RTCPeerConnection&&A.mozRTCPeerConnection&&(A.RTCPeerConnection=A.mozRTCPeerConnection),e.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach(function(c){const d=A.RTCPeerConnection.prototype[c],C={[c](){return arguments[0]=new(c==="addIceCandidate"?A.RTCIceCandidate:A.RTCSessionDescription)(arguments[0]),d.apply(this,arguments)}};A.RTCPeerConnection.prototype[c]=C[c]});const o={inboundrtp:"inbound-rtp",outboundrtp:"outbound-rtp",candidatepair:"candidate-pair",localcandidate:"local-candidate",remotecandidate:"remote-candidate"},a=A.RTCPeerConnection.prototype.getStats;A.RTCPeerConnection.prototype.getStats=function(){const[c,d,C]=arguments;return a.apply(this,[c||null]).then(y=>{if(e.version<53&&!d)try{y.forEach(S=>{S.type=o[S.type]||S.type})}catch(S){if(S.name!=="TypeError")throw S;y.forEach((b,V)=>{y.set(V,Object.assign({},b,{type:o[b.type]||b.type}))})}return y}).then(d,C)}}function TP(A){if(typeof A!="object"||!A.RTCPeerConnection||!A.RTCRtpSender||A.RTCRtpSender&&"getStats"in A.RTCRtpSender.prototype)return;const e=A.RTCPeerConnection.prototype.getSenders;e&&(A.RTCPeerConnection.prototype.getSenders=function(){const a=e.apply(this,[]);return a.forEach(c=>c._pc=this),a});const o=A.RTCPeerConnection.prototype.addTrack;o&&(A.RTCPeerConnection.prototype.addTrack=function(){const a=o.apply(this,arguments);return a._pc=this,a}),A.RTCRtpSender.prototype.getStats=function(){return this.track?this._pc.getStats(this.track):Promise.resolve(new Map)}}function qG(A){if(typeof A!="object"||!A.RTCPeerConnection||!A.RTCRtpSender||A.RTCRtpSender&&"getStats"in A.RTCRtpReceiver.prototype)return;const e=A.RTCPeerConnection.prototype.getReceivers;e&&(A.RTCPeerConnection.prototype.getReceivers=function(){const o=e.apply(this,[]);return o.forEach(a=>a._pc=this),o}),YB(A,"track",o=>(o.receiver._pc=o.srcElement,o)),A.RTCRtpReceiver.prototype.getStats=function(){return this._pc.getStats(this.track)}}function NP(A){A.RTCPeerConnection&&!("removeStream"in A.RTCPeerConnection.prototype)&&(A.RTCPeerConnection.prototype.removeStream=function(e){DS("removeStream","removeTrack"),this.getSenders().forEach(o=>{o.track&&e.getTracks().includes(o.track)&&this.removeTrack(o)})})}function KG(A){A.DataChannel&&!A.RTCDataChannel&&(A.RTCDataChannel=A.DataChannel)}function GP(A){if(typeof A!="object"||!A.RTCPeerConnection)return;const e=A.RTCPeerConnection.prototype.addTransceiver;e&&(A.RTCPeerConnection.prototype.addTransceiver=function(){this.setParametersPromises=[];let o=arguments[1]&&arguments[1].sendEncodings;o===void 0&&(o=[]),o=[...o];const a=o.length>0;a&&o.forEach(d=>{if("rid"in d&&!/^[a-z0-9]{0,16}$/i.test(d.rid))throw new TypeError("Invalid RID value provided.");if("scaleResolutionDownBy"in d&&!(parseFloat(d.scaleResolutionDownBy)>=1))throw new RangeError("scale_resolution_down_by must be >= 1.0");if("maxFramerate"in d&&!(parseFloat(d.maxFramerate)>=0))throw new RangeError("max_framerate must be >= 0.0")});const c=e.apply(this,arguments);if(a){const{sender:d}=c,C=d.getParameters();(!("encodings"in C)||C.encodings.length===1&&Object.keys(C.encodings[0]).length===0)&&(C.encodings=o,d.sendEncodings=o,this.setParametersPromises.push(d.setParameters(C).then(()=>{delete d.sendEncodings}).catch(()=>{delete d.sendEncodings})))}return c})}function bP(A){if(typeof A!="object"||!A.RTCRtpSender)return;const e=A.RTCRtpSender.prototype.getParameters;e&&(A.RTCRtpSender.prototype.getParameters=function(){const o=e.apply(this,arguments);return"encodings"in o||(o.encodings=[].concat(this.sendEncodings||[{}])),o})}function kP(A){if(typeof A!="object"||!A.RTCPeerConnection)return;const e=A.RTCPeerConnection.prototype.createOffer;A.RTCPeerConnection.prototype.createOffer=function(){return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then(()=>e.apply(this,arguments)).finally(()=>{this.setParametersPromises=[]}):e.apply(this,arguments)}}function LP(A){if(typeof A!="object"||!A.RTCPeerConnection)return;const e=A.RTCPeerConnection.prototype.createAnswer;A.RTCPeerConnection.prototype.createAnswer=function(){return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then(()=>e.apply(this,arguments)).finally(()=>{this.setParametersPromises=[]}):e.apply(this,arguments)}}var UP=Object.freeze({__proto__:null,shimOnTrack:_P,shimPeerConnection:Nw,shimSenderGetStats:TP,shimReceiverGetStats:qG,shimRemoveStream:NP,shimRTCDataChannel:KG,shimAddTransceiver:GP,shimGetParameters:bP,shimCreateOffer:kP,shimCreateAnswer:LP,shimGetUserMedia:wP,shimGetDisplayMedia:function(A,e){A.navigator.mediaDevices&&"getDisplayMedia"in A.navigator.mediaDevices||A.navigator.mediaDevices&&(A.navigator.mediaDevices.getDisplayMedia=function(o){if(!o||!o.video){const a=new DOMException("getDisplayMedia without video constraints is undefined");return a.name="NotFoundError",a.code=8,Promise.reject(a)}return o.video===!0?o.video={mediaSource:e}:o.video.mediaSource=e,A.navigator.mediaDevices.getUserMedia(o)})}});function FP(A){if(typeof A=="object"&&A.RTCPeerConnection){if("getLocalStreams"in A.RTCPeerConnection.prototype||(A.RTCPeerConnection.prototype.getLocalStreams=function(){return this._localStreams||(this._localStreams=[]),this._localStreams}),!("addStream"in A.RTCPeerConnection.prototype)){const e=A.RTCPeerConnection.prototype.addTrack;A.RTCPeerConnection.prototype.addStream=function(o){this._localStreams||(this._localStreams=[]),this._localStreams.includes(o)||this._localStreams.push(o),o.getAudioTracks().forEach(a=>e.call(this,a,o)),o.getVideoTracks().forEach(a=>e.call(this,a,o))},A.RTCPeerConnection.prototype.addTrack=function(o,...a){return a&&a.forEach(c=>{this._localStreams?this._localStreams.includes(c)||this._localStreams.push(c):this._localStreams=[c]}),e.apply(this,arguments)}}"removeStream"in A.RTCPeerConnection.prototype||(A.RTCPeerConnection.prototype.removeStream=function(e){this._localStreams||(this._localStreams=[]);const o=this._localStreams.indexOf(e);if(o===-1)return;this._localStreams.splice(o,1);const a=e.getTracks();this.getSenders().forEach(c=>{a.includes(c.track)&&this.removeTrack(c)})})}}function OP(A){if(typeof A=="object"&&A.RTCPeerConnection&&("getRemoteStreams"in A.RTCPeerConnection.prototype||(A.RTCPeerConnection.prototype.getRemoteStreams=function(){return this._remoteStreams?this._remoteStreams:[]}),!("onaddstream"in A.RTCPeerConnection.prototype))){Object.defineProperty(A.RTCPeerConnection.prototype,"onaddstream",{get(){return this._onaddstream},set(o){this._onaddstream&&(this.removeEventListener("addstream",this._onaddstream),this.removeEventListener("track",this._onaddstreampoly)),this.addEventListener("addstream",this._onaddstream=o),this.addEventListener("track",this._onaddstreampoly=a=>{a.streams.forEach(c=>{if(this._remoteStreams||(this._remoteStreams=[]),this._remoteStreams.includes(c))return;this._remoteStreams.push(c);const d=new Event("addstream");d.stream=c,this.dispatchEvent(d)})})}});const e=A.RTCPeerConnection.prototype.setRemoteDescription;A.RTCPeerConnection.prototype.setRemoteDescription=function(){const o=this;return this._onaddstreampoly||this.addEventListener("track",this._onaddstreampoly=function(a){a.streams.forEach(c=>{if(o._remoteStreams||(o._remoteStreams=[]),o._remoteStreams.indexOf(c)>=0)return;o._remoteStreams.push(c);const d=new Event("addstream");d.stream=c,o.dispatchEvent(d)})}),e.apply(o,arguments)}}}function jG(A){if(typeof A!="object"||!A.RTCPeerConnection)return;const e=A.RTCPeerConnection.prototype,o=e.createOffer,a=e.createAnswer,c=e.setLocalDescription,d=e.setRemoteDescription,C=e.addIceCandidate;e.createOffer=function(S,b){const V=arguments.length>=2?arguments[2]:arguments[0],J=o.apply(this,[V]);return b?(J.then(S,b),Promise.resolve()):J},e.createAnswer=function(S,b){const V=arguments.length>=2?arguments[2]:arguments[0],J=a.apply(this,[V]);return b?(J.then(S,b),Promise.resolve()):J};let y=function(S,b,V){const J=c.apply(this,[S]);return V?(J.then(b,V),Promise.resolve()):J};e.setLocalDescription=y,y=function(S,b,V){const J=d.apply(this,[S]);return V?(J.then(b,V),Promise.resolve()):J},e.setRemoteDescription=y,y=function(S,b,V){const J=C.apply(this,[S]);return V?(J.then(b,V),Promise.resolve()):J},e.addIceCandidate=y}function WG(A){const e=A&&A.navigator;if(e.mediaDevices&&e.mediaDevices.getUserMedia){const o=e.mediaDevices,a=o.getUserMedia.bind(o);e.mediaDevices.getUserMedia=c=>a(PP(c))}!e.getUserMedia&&e.mediaDevices&&e.mediaDevices.getUserMedia&&(e.getUserMedia=function(o,a,c){e.mediaDevices.getUserMedia(o).then(a,c)}.bind(e))}function PP(A){return A&&A.video!==void 0?Object.assign({},A,{video:PG(A.video)}):A}function xP(A){if(!A.RTCPeerConnection)return;const e=A.RTCPeerConnection;A.RTCPeerConnection=function(o,a){if(o&&o.iceServers){const c=[];for(let d=0;de.generateCertificate})}function YP(A){typeof A=="object"&&A.RTCTrackEvent&&"receiver"in A.RTCTrackEvent.prototype&&!("transceiver"in A.RTCTrackEvent.prototype)&&Object.defineProperty(A.RTCTrackEvent.prototype,"transceiver",{get(){return{receiver:this.receiver}}})}function Gw(A){const e=A.RTCPeerConnection.prototype.createOffer;A.RTCPeerConnection.prototype.createOffer=function(o){if(o){o.offerToReceiveAudio!==void 0&&(o.offerToReceiveAudio=!!o.offerToReceiveAudio);const a=this.getTransceivers().find(d=>d.receiver.track.kind==="audio");o.offerToReceiveAudio===!1&&a?a.direction==="sendrecv"?a.setDirection?a.setDirection("sendonly"):a.direction="sendonly":a.direction==="recvonly"&&(a.setDirection?a.setDirection("inactive"):a.direction="inactive"):o.offerToReceiveAudio!==!0||a||this.addTransceiver("audio",{direction:"recvonly"}),o.offerToReceiveVideo!==void 0&&(o.offerToReceiveVideo=!!o.offerToReceiveVideo);const c=this.getTransceivers().find(d=>d.receiver.track.kind==="video");o.offerToReceiveVideo===!1&&c?c.direction==="sendrecv"?c.setDirection?c.setDirection("sendonly"):c.direction="sendonly":c.direction==="recvonly"&&(c.setDirection?c.setDirection("inactive"):c.direction="inactive"):o.offerToReceiveVideo!==!0||c||this.addTransceiver("video",{direction:"recvonly"})}return e.apply(this,arguments)}}function VP(A){typeof A!="object"||A.AudioContext||(A.AudioContext=A.webkitAudioContext)}var JP=Object.freeze({__proto__:null,shimLocalStreamsAPI:FP,shimRemoteStreamsAPI:OP,shimCallbacksAPI:jG,shimGetUserMedia:WG,shimConstraints:PP,shimRTCIceServerUrls:xP,shimTrackEventTransceiver:YP,shimCreateOfferLegacy:Gw,shimAudioContext:VP}),HP={exports:{}};(function(A){const e={generateIdentifier:function(){return Math.random().toString(36).substring(2,12)}};e.localCName=e.generateIdentifier(),e.splitLines=function(o){return o.trim().split(` +`],{type:"application/javascript"});this._worker=new Worker(URL.createObjectURL(v)),this._worker.postMessage({type:fr,url:B})}send(B){var v,N;try{(v=this._worker)===null||v===void 0||v.postMessage({type:Ls,data:B})}catch(O){(N=this._onSendFail)===null||N===void 0||N.call(this,O)}}bindSocketHandlers(B){const{onOpen:v,onMessage:N,onClose:O,onError:z,onSendFail:X}=B;if(this._worker){const nA={[ms]:v,[as]:N,[Su]:O,[Wa]:z,[Cs]:X};this._onSendFail=X,this._worker.onmessage=DA=>{var GA;const{type:VA}=DA?.data||{};typeof nA[VA]=="function"&&((GA=nA[VA])===null||GA===void 0||GA.call(nA,DA?.data))}}}unbindSocketHandlers(){this._worker&&(this._worker.onmessage=null)}disconnect(){this._worker&&(this._worker.postMessage({type:Vc}),this._worker.terminate(),this._worker=null),this._blobUrl&&(URL.revokeObjectURL(this._blobUrl),this._blobUrl=null)}}class VI{}var $o,Xi=new class{constructor(){this._store=new Map}get(p){return this._store.get(p)}getStorage(p){return ki?gi?my.getStorageSync({key:p}).data:io.getStorageSync(p):this._canUseLocalStorage()?localStorage.getItem(p):{}}set(p,B){const v=this._store.get(p)||{};B instanceof Map?this._store.set(p,B):this._store.set(p,Object.assign(Object.assign({},v),B))}setStorage(p,B){ki?gi?my.setStorageSync({key:p,data:JSON.stringify(B)}):io.setStorageSync(p,JSON.stringify(B)):this._canUseLocalStorage()&&localStorage.setItem(p,JSON.stringify(B))}clear(p){typeof p=="string"?this._store.set(p,{}):this._store.clear()}clearLocalStorage(p){this._canUseLocalStorage()&&(typeof p=="string"?localStorage.setItem(p,""):localStorage.clear())}reset(){this.clear()}_canUseLocalStorage(){return typeof window<"u"&&navigator&&navigator.cookieEnabled&&localStorage}};class pc{connectSocket(B){return this._socket=io.connectSocket({url:B,header:{"content-type":"application/json"},multiple:!0,complete:()=>{}}),this._socket}send(B){var v;(v=this._socket)===null||v===void 0||v.send({data:B,fail:this._onSendFail})}bindSocketHandlers(B){const{onOpen:v,onMessage:N,onClose:O,onError:z,onSendFail:X}=B;this._socket&&(this._socket.onClose(O),this._socket.onOpen(v),this._socket.onMessage(nA=>N(nA?.data)),this._socket.onError(()=>z),this._onSendFail=X)}unbindSocketHandlers(){this._socket&&(this._socket.onClose(()=>{}),this._socket.onOpen(()=>{}),this._socket.onMessage(()=>{}),this._socket.onError(()=>{}))}disconnect(){this._socket&&(this._socket.close(),this._socket=null)}}(function(p){p[p.CONNECTED=0]="CONNECTED",p[p.CONNECTING=1]="CONNECTING",p[p.DISCONNECTED=2]="DISCONNECTED"})($o||($o={}));class ng{constructor(B){this._url="",this._readyState=$o.DISCONNECTED,this._url=B,this._id=U(),this._emitter=new On,gi?this._socket=new pc:Le||To||Dt||je||Fi||Jt?this._socket=new cn({onError:this._onError.bind(this)}):an?this._socket=new VI:this._canUseWebWorker()?this._socket=new sg:this._socket=new Dl,this.connect()}connect(){this.doOpen(),this._bindSocketHandlers()}doOpen(){[$o.CONNECTED,$o.CONNECTING].includes(this._readyState)||(this._readyState=$o.CONNECTING,this._ws=this._socket.connectSocket(this._url))}send(B){this._readyState!==$o.CONNECTED?this.reconnect():this._socket.send(B)}reconnect(){[$o.CONNECTED,$o.CONNECTING].includes(this._readyState)||(this.disconnect(),this.doOpen())}getId(){return this._id}on(B,v,N){this._emitter.on(B,v,N)}off(B,v,N){this._emitter.off(B,v,N)}isConnected(){return this._readyState===$o.CONNECTED}disconnect(){this._readyState=$o.DISCONNECTED,this._unbindSocketHandlers(),this._socket.disconnect()}_onOpen(B){this._readyState===$o.CONNECTING&&(this._readyState=$o.CONNECTED,this._emitter.emit("connect",{socketId:this._id,event:B}))}_onMessage(B){this._emitter.emit("message",B)}_onClose(B){this._readyState=$o.DISCONNECTED,this._emitter.emit("close",{socketId:this._id,event:B})}_onError(B){this._readyState=$o.DISCONNECTED,this._emitter.emit("error",{socketId:this._id,error:B})}_onSendFail(B){this._readyState=$o.DISCONNECTED,this._emitter.emit("sendFail",{socketId:this._id,error:B})}_bindSocketHandlers(){this._socket.bindSocketHandlers({onOpen:this._onOpen.bind(this),onMessage:this._onMessage.bind(this),onClose:this._onClose.bind(this),onError:this._onError.bind(this),onSendFail:this._onSendFail.bind(this)})}_unbindSocketHandlers(){this._socket.unbindSocketHandlers()}_canUseWebWorker(){const B=Xi.get("cloudConfig")||{};return(r(B.isWorkerEnabled)||B.isWorkerEnabled==="1")&&Go}}const Dg={[ut.SINGAPORE]:[[2e7,3e7],[172e7,173e7]],[ut.KOREA]:[[3e7,4e7],[173e7,174e7]],[ut.GERMANY]:[[4e7,5e7],[174e7,175e7]],[ut.IND]:[[5e7,6e7],[175e7,176e7]],[ut.JPN]:[[6e7,7e7],[176e7,177e7]],[ut.USA]:[[7e7,8e7],[177e7,178e7]],[ut.INDONESIA]:[[8e7,9e7],[178e7,179e7]],[ut.KSA]:[[9e7,1e8],[179e7,18e8]]};function Ia(p){var B;if(!((B=Xi.get("instance"))===null||B===void 0)&&B.oversea)return ut.OVERSEA;for(const v of Object.keys(Dg))for(const[N,O]of Dg[v])if(p>=N&&p`${ee}=${VA[ee]}`).join("&"));var VA;return v?`${p}/binfo?${GA}&compress=gzip`:`${p}/info?${GA}`}function Hs(p){const B=Xi.get("instance"),{sdkAppId:v,testEnv:N,proxyServer:O}=B,z=Ia(v);if(N)return Hn(pt.TEST[z].DEFAULT,{isBinary:p});if(!Rs(O))return Hn(O,{isBinary:p});const X=pt.PRODUCTION[z],nA=jt&&X.ANYCAST,DA=jt,GA=!!X.BACKUP_CN;return Hn({[bo.INITIAL]:()=>(_o=bo.DEFAULT,X.DEFAULT),[bo.DEFAULT]:()=>(_o=bo.IPV6,X.IPV6),[bo.IPV6]:()=>(_o=bo.BACKUP,X.BACKUP),[bo.BACKUP]:()=>DA?(_o=bo.BACKUP_WEB_ONLY,function(VA){const ee=Math.floor(10001*Math.random())+1e4;return VA.replace("*",String(ee))}(X.BACKUP_WEB_ONLY)):GA?(_o=bo.BACKUP_CN,X.BACKUP_CN):nA?(_o=bo.ANYCAST,X.ANYCAST):X.DEFAULT,[bo.BACKUP_WEB_ONLY]:()=>GA?(_o=bo.BACKUP_CN,X.BACKUP_CN):nA?(_o=bo.ANYCAST,X.ANYCAST):X.DEFAULT,[bo.BACKUP_CN]:()=>(_o=nA?bo.ANYCAST:bo.DEFAULT,X[_o]),[bo.ANYCAST]:()=>(_o=bo.DEFAULT,X.ANYCAST="",X.DEFAULT)}[_o](),{isBinary:p})}var Sg=new class{constructor(){this._timeOffsetWithServer=0}getServerTimeMs(){return Date.now()+this._timeOffsetWithServer}getServerTimeSeconds(){return Math.floor(this.getServerTimeMs()/1e3)}getTimeOffsetWithServer(){return this._timeOffsetWithServer}calculateTimeOffsetWithServer(p,B){const v=Date.now(),N=v-p;this._timeOffsetWithServer=B+N-v}};const mc=16;var fn=new class{constructor(){this._tasks=[],this._timer=null,this._taskMap=new Map}_addTaskToScheduler(p){const{id:B}=p;this.removeTask(B),this._tasks.push(p),this._taskMap.set(B,p),this._sort(),this._scheduleNextTask()}_createTask(p){const{id:B,callback:v,context:N,isOnce:O=!1,intervalMs:z=mc}=p,X=Math.max(z,mc);return{id:B,nextExecuteTime:Date.now()+X,intervalMs:z,callback:v,context:N,isOnce:O}}addTask(p){const B=this._createTask(p);this._addTaskToScheduler(B)}addOnceTask(p){const B=this._createTask(Object.assign(Object.assign({},p),{isOnce:!0}));this._addTaskToScheduler(B)}removeTask(p){const B=this._tasks.findIndex(v=>v.id===p);B>-1&&(this._tasks.splice(B,1),this._taskMap.delete(p),this._scheduleNextTask())}updateTaskInterval(p,B){const v=this._taskMap.get(p);v&&(v.intervalMs=B,v.nextExecuteTime=Date.now()+B,this._sort(),this._scheduleNextTask())}clearAllTasks(){this._tasks=[],this._taskMap.clear(),this._timer&&(clearTimeout(this._timer),this._timer=null)}dispose(){this.clearAllTasks()}_sort(){this._tasks.sort((p,B)=>p.nextExecuteTime-B.nextExecuteTime)}_scheduleNextTask(){this._timer&&(clearTimeout(this._timer),this._timer=null);const p=this._tasks[0];if(p){const B=Math.max(0,p.nextExecuteTime-Date.now());this._timer=setTimeout(()=>this._execute(),B)}}_execute(){const p=Date.now();for(;this._tasks.length&&this._tasks[0].nextExecuteTime<=p;){const B=this._tasks[0];try{B.context?B.callback.call(B.context):B.callback(),B.isOnce?this.removeTask(B.id):(B.nextExecuteTime=p+B.intervalMs,this._sort())}catch(v){console.warn(`Task ${B.id} execution failed:`,v),B.isOnce&&this.removeTask(B.id)}}this._scheduleNextTask()}};function Ga(p){const B=[];for(let v=0;v=55296&&N<=56319){const O=p.charCodeAt(++v)-56320+(N-55296<<10)+65536;B.push(240|O>>18,128|O>>12&63,128|O>>6&63,128|63&O)}else N<=127?B.push(N):N<=2047?B.push(192|N>>6,128|63&N):B.push(224|N>>12,128|N>>6&63,128|63&N)}return new Uint8Array(B)}function In(p){const B=Array.isArray(p)?[]:Object.create(null);for(const v in p)Object.prototype.hasOwnProperty.call(p,v)&&_(v)&&p[v]!=null&&(p[v]===null||typeof p[v]!="object"?B[v]=p[v]:B[v]=In(p[v]));return B}function fs(p,B){if(mA.includes(p))return 0;const v=Ga(JSON.stringify(B));let N=4294967295;const{length:O}=v;for(let z=0;z>>=1:N=N>>>1^3988292384}return(4294967295^N)>>>0}function ua(p){const{servcmd:B,data:v}=p,N=function(z){const X=Xi.get("login")||{},nA=Xi.get("instance")||{};return{servcmd:z,ver:"v4",platform:HA,websdkappid:537048168,websdkversion:"1.7.3",a2:X.a2Key||void 0,tinyid:X.tinyID||void 0,status_instid:X.statusInstanceId||0,sdkappid:nA.sdkAppId,contenttype:"json",reqtime:Math.floor(Date.now()/1e3),identifier:X.a2Key?void 0:X.userId,usersig:X.a2Key?void 0:X.userSig,sdkability:478343027,sdkability_ext:lA(""),cappid:nA.applicationID||0,tjgID:"",seq:Sa(),cs:0}}(B),O=In(v);return N.cs=fs(B,O),{head:N,body:O}}function yn(p){const{servcmd:B,data:v}=p,N=function(z){const X=Xi.get("login")||{},nA=Xi.get("instance")||{};return{servcmd:z,ver:"v4",platform:HA,websdkappid:537048168,websdkversion:"1.7.3",sdkappid:nA.sdkAppId,contenttype:"",reqtime:Math.floor(Date.now()/1e3),identifier:"",usersig:"",status_instid:X.statusInstanceId||0,sdkability:478343027,sdkability_ext:lA(""),cappid:nA.applicationID||0,seq:Sa(),cs:0}}(B),O=In(v);return N.cs=fs(B,O),{head:N,body:O}}let ba=U();function Sa(){return ba=ba<2415919103?ba+1:U(),ba}function $(){var p;const B=Xi.get("login")||{},v=Xi.get("instance")||{};return{sdk_type:30,sdk_app_id:v.sdkAppId,sdk_version:"1.6.18",tiny_id:Number(B.tinyID),user_id:B.userId||((p=Xi.get("webPush"))===null||p===void 0?void 0:p.userId),platform:HA,instance_id:v.instanceId,trace_id:new Date().getTime()}}var K,vA=Object.freeze({__proto__:null,calcBodyCRC:fs,filterProtocolDataInvalidFields:In,generateCosSpecifiedData:function(p){const{servcmd:B,data:v}=p,N=function(z){const X=Xi.get("login")||{},nA=Xi.get("instance")||{};return{servcmd:z,ver:"v4",platform:HA,websdkappid:537048168,websdkversion:"1.7.3",sdkappid:nA.sdkAppId,contenttype:"json",reqtime:Math.floor(Date.now()/1e3),identifier:X.userId,usersig:X.userSig,status_instid:X.statusInstanceId||0,sdkability:478343027,sdkability_ext:lA(""),cappid:nA.applicationID||0,seq:Sa(),cs:0}}(B),O=In(v);return N.cs=fs(B,O),{head:N,body:O}},generateProtocolData:ua,generateSSOLogProtocolData:yn,generateSequence:Sa,getCommonHead:$,getHostSite:Ia,taskScheduler:fn,timeManager:Sg});(function(p){p[p.info=4]="info",p[p.warning=5]="warning",p[p.error=6]="error"})(K||(K={}));const qA={method:"extension",networkType:"network_type",eventType:"event_type",code:"error_code",message:"error_message",moreMessage:"more_message",duplicate:"duplicate",costTime:"cost_time",level:"level",uiPlatform:"ui_platform",timestamp:"timestamp"};class Ae{constructor(B){this.level=K.info,this._canSendLog=!0,this._logCreatedAt=Sg.getServerTimeMs(),this.timestamp=0,this.networkType=8,this.code=0,this.moreMessage="",this.method="",this.message="",this.costTime=0,this.duplicate=!1,this.eventType=0,this.uiPlatform=this._getUiPlatform(),this._sdkEdition=this._getSDKEdition();const{method:v,eventType:N=0,message:O="",costTime:z=0,error:X,uiPlatform:nA,moreMessage:DA="",code:GA=0,startTime:VA=0}=B||{};this.eventType=N,this.method=v,this.message=O,this.costTime=z,this.moreMessage=`${DA} startTime:${VA}`,this.code=GA,X&&this.setError(X),Rs(nA)||(this.uiPlatform=nA)}setMoreMessage(B){this.moreMessage=`${this.moreMessage} ${B}`}updateLogCreatedAtByTimeOffset(){this._logCreatedAt+=Sg.getTimeOffsetWithServer()}end(B=!1){this._canSendLog&&(this._canSendLog=!1,this.timestamp=Sg.getServerTimeMs(),this._ssoLogModule.pushToLogQueue(this._convertSSOLogDataKeyToServe()),B&&this._ssoLogModule.uploadSSOLogData())}setError(B){var v;return B instanceof Error?this._canSendLog?(!((v=Xi.get("netWorkMonitor"))===null||v===void 0)&&v.isNetworkOnline&&(B.errorCode&&(this.code=B.errorCode),B.errorMessage&&this.setMoreMessage(B.errorMessage)),this.level=K.error,this):this:(console.warn("SSOLogData.setError value not instanceof Error, please check!"),this)}setLogInfo(B){return Object.keys(B).forEach(v=>{Object.keys(qA).includes(v)&&(this[v]=B[v])}),this}setSSOLogModule(B){this._ssoLogModule=B}_convertSSOLogDataKeyToServe(){const B={};return Object.keys(this).forEach(v=>{const N=v;qA[N]&&(B[qA[N]]=this[N])}),B}_getUiPlatform(){var B;const v=(B=Xi.get("instance"))===null||B===void 0?void 0:B.scene;if(typeof v=="string"){const N=Number(v);return isNaN(N)?void 0:N}}_getSDKEdition(){var B;return(B=Xi.get("instance"))===null||B===void 0?void 0:B.sdkEdition}}var pe;(function(p){p.RECONNECTED="reconnected",p.CLOUD_CONFIG_UPDATE="cloud_config_update",p.SOCKET_DISCONNECTED="socket_disconnected"})(pe||(pe={}));var Pe=pe;const Oe=20,rt=6e4,dt=[4,5,6],Mt="report-logger";var Pt=new class{constructor(){this._sdkAppIdBlackList=[],this._tinyIdWhiteList=[],this._reportLevel=[4,5,6],this._minThreshold=Oe,this._maxThreshold=100,this._waitingTime=rt,this._lastReportAt=Date.now(),this._ssoLogMap=new Map,this._logLevel=IA.DEBUG,this._throttleConfig={global:{throttleTime:xe,maxCount:Be},single:{throttleTime:ge,maxCount:ue}},this._globalThrottle={count:0,startTime:Date.now()},this._singleThrottleMap=new Map,gn.subscribeInnerEvent(Pe.CLOUD_CONFIG_UPDATE,this._handleCloudConfigUpdate,this),fn.addTask({id:Mt,intervalMs:1e3,callback:this._checkAndReportIfDue,context:this}),this._logQueue=[],this._savePlatFormInfo()}_handleCloudConfigUpdate(p){const{evt_rpt_threshold:B=Oe,evt_rpt_waiting:v=rt,evt_rpt_level:N=dt,evt_rpt_sdkappid_bl:O="",evt_rpt_tinyid_wl:z="",evt_rpt_global_throttle_time:X=xe,evt_rpt_global_throttle_count:nA=Be,evt_rpt_single_throttle_time:DA=ge,evt_rpt_single_throttle_count:GA=ue}=p||{};this._sdkAppIdBlackList=O.split(",").map(VA=>Number(VA)),this._waitingTime=Number(v),this._minThreshold=B,this._reportLevel=N,this._tinyIdWhiteList=z.split(","),this._throttleConfig={global:{throttleTime:X,maxCount:nA},single:{throttleTime:DA,maxCount:GA}}}createSSOLogData(p){const B=new Ae(p);return B.setSSOLogModule(this),this._ssoLogMap.set(p.method,B),B}getSSOLogData(p){return this._ssoLogMap.get(p)||{}}pushToLogQueue(p){p&&(this._logQueue.push(p),this._shouldUploadImmediately()&&this.uploadSSOLogData())}setLogLevel(p){[IA.DEBUG,IA.ERROR,IA.INFO,IA.NONE,IA.WARN].includes(p)&&(this._logLevel=p)}debug(p,B="",v){this._log(IA.DEBUG,p,B,v)}info(p,B="",v){this._log(IA.INFO,p,B,v)}warn(p,B="",v){this._log(IA.WARN,p,B,v)}error(p,B="",v){this._log(IA.ERROR,p,B,v)}_shouldUploadImmediately(){return this._logQueue.length>=this._minThreshold}_isReportDue(){return Date.now()>=this._lastReportAt+this._waitingTime}_checkAndReportIfDue(){this._isReportDue()&&this._logQueue.length>0&&this.uploadSSOLogData()}uploadSSOLogData(){return pA(this,void 0,void 0,function*(){if(this._logQueue.length===0)return;const p=this._logQueue.slice();this._logQueue=[];try{const B=this._filterLogs(p);if(B.length===0)return void(this._lastReportAt=Date.now());const v={Header:$(),Event:B};Rs(v.Header.user_id)||(yield function(N){const O="imopenstat.tim_web_report_v2",z=yn({servcmd:O,data:N}),X=`${z.head.seq}${O}`;return Ml.sendPacket(z,{requestId:X})}(v))}catch(B){this._requeueFailedLogs(p),this.debug("uploadSSOLogData",en(B))}finally{this._lastReportAt=Date.now()}})}_requeueFailedLogs(p){this._logQueue=p.concat(this._logQueue);const B=this._logQueue.length-200;B>0&&(this._logQueue.splice(0,B),this.debug("uploadSSOLogData",`log queue overflow, dropped ${B} oldest logs`))}_savePlatFormInfo(){var p,B;if(Le){const v=(B=(p=wx.getAccountInfoSync)===null||p===void 0?void 0:p.call(wx))===null||B===void 0?void 0:B.miniProgram;if(v){const{appId:N,envVersion:O}=v;Xi.set("instance",{appId:N,envVersion:O})}}else jt&&Xi.set("instance",{href:window.location.href})}_filterLogs(p){const{tinyID:B}=Xi.get("login")||{},{sdkAppId:v}=Xi.get("instance")||{};return this._sdkAppIdBlackList.includes(v)&&!this._tinyIdWhiteList.includes(B)?[]:p.filter(N=>this._reportLevel.includes(N.level))}_checkThrottle(p){return!!this._checkGlobalThrottle()||this._checkSingleThrottle(p)}_checkGlobalThrottle(){const p=Date.now();if(p-this._globalThrottle.startTime>=this._throttleConfig.global.throttleTime)this._globalThrottle.count=1,this._globalThrottle.startTime=p;else if(this._globalThrottle.count++,this._globalThrottle.count>this._throttleConfig.global.maxCount)return!0;return!1}_checkSingleThrottle(p){const B=Date.now(),v=this._singleThrottleMap.get(p);return v?B-v.startTime>=this._throttleConfig.single.throttleTime?(v.count=1,v.startTime=B,!1):v.count>=this._throttleConfig.single.maxCount||(v.count++,!1):(this._singleThrottleMap.set(p,{count:1,startTime:B}),!1)}_shouldLog(p){return p>=this._logLevel&&this._logLevel!==IA.NONE}_shouldReport(p){return this._reportLevel.includes(WA[p])}_formatLog(p,B,v,N){const O=new Date,z=`${O.getHours()}:${O.getMinutes()}:${O.getSeconds()}:${O.getMilliseconds()}`,X=`<${IA[p]}>`;return wt||ki?[`${cA} [${z}] ${X} [${B}] ${v}`]:["%c%s%c%s","background:#0abf5b; padding:1px; border-radius:3px; color: #fff",cA,"",`[${z}] ${X} [${B}] ${v} params: ${en(N)}`]}_log(p,B,v,N){if(this._shouldLog(p)){const O=this._formatLog(p,B,v,N);TA[p].apply(console,O)}if(this._shouldReport(p)){const O=this._getThrottleKey(B,v,N);this._checkThrottle(O)||this.createSSOLogData(Object.assign(Object.assign({message:v},N),{method:B})).end()}}_getThrottleKey(p,B,v){const N=`${p}${B}${en(Object.assign(Object.assign({},v),{costTime:""}))}`,O=Ga(JSON.stringify(N));let z=4294967295;const{length:X}=O;for(let nA=0;nA>>=1:z=z>>>1^3988292384}return`${(4294967295^z)>>>0}`}reset(){console.log("SSO_LOG_MODULE.reset"),fn.removeTask(Mt),gn.unSubscribeInnerEvent(Pe.CLOUD_CONFIG_UPDATE,this._handleCloudConfigUpdate,this),this._lastReportAt=0,this.uploadSSOLogData(),this._sdkAppIdBlackList=[],this._tinyIdWhiteList=[],this._minThreshold=Oe,this._maxThreshold=100,this._waitingTime=rt,this._logQueue=[],this._logLevel=IA.DEBUG,this._globalThrottle={count:0,startTime:Date.now()},this._singleThrottleMap.clear()}};const li=15e3,ct="Channel",Ot="channel_schedule_task",Ji="channel_reconnect_task",qi="connected",qs="connecting",Mi="disconnected",zo=1e3,Mg="network_status_change",sr="activity_status_change",yr="send_fail",xn="reconnect_failed",Sl="socket_error",Ks="socket_close";function rI(p){return rI=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(B){return typeof B}:function(B){return B&&typeof Symbol=="function"&&B.constructor===Symbol&&B!==Symbol.prototype?"symbol":typeof B},rI(p)}function Wg(p){throw new Error('Could not dynamically require "'+p+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var fc,Mu={exports:{}},Ma=(fc||(fc=1,function(p){p.exports=function B(v,N,O){function z(DA,GA){if(!N[DA]){if(!v[DA]){if(!GA&&Wg)return Wg(DA);if(X)return X(DA,!0);var VA=new Error("Cannot find module '"+DA+"'");throw VA.code="MODULE_NOT_FOUND",VA}var ee=N[DA]={exports:{}};v[DA][0].call(ee.exports,function(Ee){return z(v[DA][1][Ee]||Ee)},ee,ee.exports,B,v,N,O)}return N[DA].exports}for(var X=Wg,nA=0;nA>>6:(Ee<65536?ee[at++]=224|Ee>>>12:(ee[at++]=240|Ee>>>18,ee[at++]=128|Ee>>>12&63),ee[at++]=128|Ee>>>6&63),ee[at++]=128|63&Ee);return ee},N.buf2binstring=function(VA){return GA(VA,VA.length)},N.binstring2buf=function(VA){for(var ee=new O.Buf8(VA.length),Ee=0,Ke=ee.length;Ee>10&1023,Yt[Ke++]=56320|1023&ot)}return GA(Yt,Ke)},N.utf8border=function(VA,ee){var Ee;for((ee=ee||VA.length)>VA.length&&(ee=VA.length),Ee=ee-1;0<=Ee&&(192&VA[Ee])==128;)Ee--;return Ee<0||Ee===0?ee:Ee+nA[VA[Ee]]>ee?Ee:ee}},{"./common":1}],3:[function(B,v,N){v.exports=function(O,z,X,nA){for(var DA=65535&O,GA=O>>>16&65535,VA=0;X!==0;){for(X-=VA=2e3>>1:z>>>1;X[nA]=z}return X}();v.exports=function(z,X,nA,DA){var GA=O,VA=DA+nA;z^=-1;for(var ee=DA;ee>>8^GA[255&(z^X[ee])];return-1^z}},{}],6:[function(B,v,N){v.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}},{}],7:[function(B,v,N){v.exports=function(O,z){var X,nA,DA,GA,VA,ee,Ee,Ke,ot,at,kt,Yt,Ui,ao,zi,ui,Po,As,pi,Ki,Ws,we,Rt,FA,Wt;X=O.state,nA=O.next_in,FA=O.input,DA=nA+(O.avail_in-5),GA=O.next_out,Wt=O.output,VA=GA-(z-O.avail_out),ee=GA+(O.avail_out-257),Ee=X.dmax,Ke=X.wsize,ot=X.whave,at=X.wnext,kt=X.window,Yt=X.hold,Ui=X.bits,ao=X.lencode,zi=X.distcode,ui=(1<>>=pi=As>>>24,Ui-=pi,(pi=As>>>16&255)==0)Wt[GA++]=65535&As;else{if(!(16&pi)){if(!(64&pi)){As=ao[(65535&As)+(Yt&(1<>>=pi,Ui-=pi),Ui<15&&(Yt+=FA[nA++]<>>=pi=As>>>24,Ui-=pi,!(16&(pi=As>>>16&255))){if(!(64&pi)){As=zi[(65535&As)+(Yt&(1<>>=pi,Ui-=pi,(pi=GA-VA)>3,Yt&=(1<<(Ui-=Ki<<3))-1,O.next_in=nA,O.next_out=GA,O.avail_in=nA>>24&255)+(we>>>8&65280)+((65280&we)<<8)+((255&we)<<24)}function Yt(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new O.Buf16(320),this.work=new O.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function Ui(we){var Rt;return we&&we.state?(Rt=we.state,we.total_in=we.total_out=Rt.total=0,we.msg="",Rt.wrap&&(we.adler=1&Rt.wrap),Rt.mode=Ke,Rt.last=0,Rt.havedict=0,Rt.dmax=32768,Rt.head=null,Rt.hold=0,Rt.bits=0,Rt.lencode=Rt.lendyn=new O.Buf32(ot),Rt.distcode=Rt.distdyn=new O.Buf32(at),Rt.sane=1,Rt.back=-1,ee):Ee}function ao(we){var Rt;return we&&we.state?((Rt=we.state).wsize=0,Rt.whave=0,Rt.wnext=0,Ui(we)):Ee}function zi(we,Rt){var FA,Wt;return we&&we.state?(Wt=we.state,Rt<0?(FA=0,Rt=-Rt):(FA=1+(Rt>>4),Rt<48&&(Rt&=15)),Rt&&(Rt<8||15=Zt.wsize?(O.arraySet(Zt.window,Rt,FA-Zt.wsize,Zt.wsize,0),Zt.wnext=0,Zt.whave=Zt.wsize):(Wt<(En=Zt.wsize-Zt.wnext)&&(En=Wt),O.arraySet(Zt.window,Rt,FA-Wt,En,Zt.wnext),(Wt-=En)?(O.arraySet(Zt.window,Rt,FA-Wt,Wt,0),Zt.wnext=Wt,Zt.whave=Zt.wsize):(Zt.wnext+=En,Zt.wnext===Zt.wsize&&(Zt.wnext=0),Zt.whave>>8&255,FA.check=X(FA.check,Ne,2,0),Bt=Ct=0,FA.mode=2;break}if(FA.flags=0,FA.head&&(FA.head.done=!1),!(1&FA.wrap)||(((255&Ct)<<8)+(Ct>>8))%31){we.msg="incorrect header check",FA.mode=30;break}if((15&Ct)!=8){we.msg="unknown compression method",FA.mode=30;break}if(Bt-=4,yA=8+(15&(Ct>>>=4)),FA.wbits===0)FA.wbits=yA;else if(yA>FA.wbits){we.msg="invalid window size",FA.mode=30;break}FA.dmax=1<>8&1),512&FA.flags&&(Ne[0]=255&Ct,Ne[1]=Ct>>>8&255,FA.check=X(FA.check,Ne,2,0)),Bt=Ct=0,FA.mode=3;case 3:for(;Bt<32;){if(vi===0)break A;vi--,Ct+=Wt[Zt++]<>>8&255,Ne[2]=Ct>>>16&255,Ne[3]=Ct>>>24&255,FA.check=X(FA.check,Ne,4,0)),Bt=Ct=0,FA.mode=4;case 4:for(;Bt<16;){if(vi===0)break A;vi--,Ct+=Wt[Zt++]<>8),512&FA.flags&&(Ne[0]=255&Ct,Ne[1]=Ct>>>8&255,FA.check=X(FA.check,Ne,2,0)),Bt=Ct=0,FA.mode=5;case 5:if(1024&FA.flags){for(;Bt<16;){if(vi===0)break A;vi--,Ct+=Wt[Zt++]<>>8&255,FA.check=X(FA.check,Ne,2,0)),Bt=Ct=0}else FA.head&&(FA.head.extra=null);FA.mode=6;case 6:if(1024&FA.flags&&(vi<(ji=FA.length)&&(ji=vi),ji&&(FA.head&&(yA=FA.head.extra_len-FA.length,FA.head.extra||(FA.head.extra=new Array(FA.head.extra_len)),O.arraySet(FA.head.extra,Wt,Zt,ji,yA)),512&FA.flags&&(FA.check=X(FA.check,Wt,ji,Zt)),vi-=ji,Zt+=ji,FA.length-=ji),FA.length))break A;FA.length=0,FA.mode=7;case 7:if(2048&FA.flags){if(vi===0)break A;for(ji=0;yA=Wt[Zt+ji++],FA.head&&yA&&FA.length<65536&&(FA.head.name+=String.fromCharCode(yA)),yA&&ji>9&1,FA.head.done=!0),we.adler=FA.check=0,FA.mode=12;break;case 10:for(;Bt<32;){if(vi===0)break A;vi--,Ct+=Wt[Zt++]<>>=7&Bt,Bt-=7&Bt,FA.mode=27;break}for(;Bt<3;){if(vi===0)break A;vi--,Ct+=Wt[Zt++]<>>=1)){case 0:FA.mode=14;break;case 1:if(Ki(FA),FA.mode=20,Rt!==6)break;Ct>>>=2,Bt-=2;break A;case 2:FA.mode=17;break;case 3:we.msg="invalid block type",FA.mode=30}Ct>>>=2,Bt-=2;break;case 14:for(Ct>>>=7&Bt,Bt-=7&Bt;Bt<32;){if(vi===0)break A;vi--,Ct+=Wt[Zt++]<>>16^65535)){we.msg="invalid stored block lengths",FA.mode=30;break}if(FA.length=65535&Ct,Bt=Ct=0,FA.mode=15,Rt===6)break A;case 15:FA.mode=16;case 16:if(ji=FA.length){if(vi>>=5,Bt-=5,FA.ndist=1+(31&Ct),Ct>>>=5,Bt-=5,FA.ncode=4+(15&Ct),Ct>>>=4,Bt-=4,286>>=3,Bt-=3}for(;FA.have<19;)FA.lens[ae[FA.have++]]=0;if(FA.lencode=FA.lendyn,FA.lenbits=7,zA={bits:FA.lenbits},NA=DA(0,FA.lens,0,19,FA.lencode,0,FA.work,zA),FA.lenbits=zA.bits,NA){we.msg="invalid code lengths set",FA.mode=30;break}FA.have=0,FA.mode=19;case 19:for(;FA.have>>16&255,Ba=65535&le,!((is=le>>>24)<=Bt);){if(vi===0)break A;vi--,Ct+=Wt[Zt++]<>>=is,Bt-=is,FA.lens[FA.have++]=Ba;else{if(Ba===16){for(Re=is+2;Bt>>=is,Bt-=is,FA.have===0){we.msg="invalid bit length repeat",FA.mode=30;break}yA=FA.lens[FA.have-1],ji=3+(3&Ct),Ct>>>=2,Bt-=2}else if(Ba===17){for(Re=is+3;Bt>>=is)),Ct>>>=3,Bt-=3}else{for(Re=is+7;Bt>>=is)),Ct>>>=7,Bt-=7}if(FA.have+ji>FA.nlen+FA.ndist){we.msg="invalid bit length repeat",FA.mode=30;break}for(;ji--;)FA.lens[FA.have++]=yA}}if(FA.mode===30)break;if(FA.lens[256]===0){we.msg="invalid code -- missing end-of-block",FA.mode=30;break}if(FA.lenbits=9,zA={bits:FA.lenbits},NA=DA(GA,FA.lens,0,FA.nlen,FA.lencode,0,FA.work,zA),FA.lenbits=zA.bits,NA){we.msg="invalid literal/lengths set",FA.mode=30;break}if(FA.distbits=6,FA.distcode=FA.distdyn,zA={bits:FA.distbits},NA=DA(VA,FA.lens,FA.nlen,FA.ndist,FA.distcode,0,FA.work,zA),FA.distbits=zA.bits,NA){we.msg="invalid distances set",FA.mode=30;break}if(FA.mode=20,Rt===6)break A;case 20:FA.mode=21;case 21:if(6<=vi&&258<=ho){we.next_out=us,we.avail_out=ho,we.next_in=Zt,we.avail_in=vi,FA.hold=Ct,FA.bits=Bt,nA(we,ks),us=we.next_out,En=we.output,ho=we.avail_out,Zt=we.next_in,Wt=we.input,vi=we.avail_in,Ct=FA.hold,Bt=FA.bits,FA.mode===12&&(FA.back=-1);break}for(FA.back=0;ga=(le=FA.lencode[Ct&(1<>>16&255,Ba=65535&le,!((is=le>>>24)<=Bt);){if(vi===0)break A;vi--,Ct+=Wt[Zt++]<>ea)])>>>16&255,Ba=65535&le,!(ea+(is=le>>>24)<=Bt);){if(vi===0)break A;vi--,Ct+=Wt[Zt++]<>>=ea,Bt-=ea,FA.back+=ea}if(Ct>>>=is,Bt-=is,FA.back+=is,FA.length=Ba,ga===0){FA.mode=26;break}if(32&ga){FA.back=-1,FA.mode=12;break}if(64&ga){we.msg="invalid literal/length code",FA.mode=30;break}FA.extra=15&ga,FA.mode=22;case 22:if(FA.extra){for(Re=FA.extra;Bt>>=FA.extra,Bt-=FA.extra,FA.back+=FA.extra}FA.was=FA.length,FA.mode=23;case 23:for(;ga=(le=FA.distcode[Ct&(1<>>16&255,Ba=65535&le,!((is=le>>>24)<=Bt);){if(vi===0)break A;vi--,Ct+=Wt[Zt++]<>ea)])>>>16&255,Ba=65535&le,!(ea+(is=le>>>24)<=Bt);){if(vi===0)break A;vi--,Ct+=Wt[Zt++]<>>=ea,Bt-=ea,FA.back+=ea}if(Ct>>>=is,Bt-=is,FA.back+=is,64&ga){we.msg="invalid distance code",FA.mode=30;break}FA.offset=Ba,FA.extra=15&ga,FA.mode=24;case 24:if(FA.extra){for(Re=FA.extra;Bt>>=FA.extra,Bt-=FA.extra,FA.back+=FA.extra}if(FA.offset>FA.dmax){we.msg="invalid distance too far back",FA.mode=30;break}FA.mode=25;case 25:if(ho===0)break A;if(ji=ks-ho,FA.offset>ji){if((ji=FA.offset-ji)>FA.whave&&FA.sane){we.msg="invalid distance too far back",FA.mode=30;break}ji>FA.wnext?(ji-=FA.wnext,Hr=FA.wsize-ji):Hr=FA.wnext-ji,ji>FA.length&&(ji=FA.length),oc=FA.window}else oc=En,Hr=us-FA.offset,ji=FA.length;for(hoPo?(pi=Hr[oc+at[Rt]],Ki=Bt[ug+at[Rt]]):(pi=96,Ki=0),Yt=1<>us)+(Ui-=Yt)]=As<<24|pi<<16|Ki,Ui!==0;);for(Yt=1<>=1;if(Yt!==0?(Ct&=Yt-1,Ct+=Yt):Ct=0,Rt++,--ks[we]==0){if(we===Wt)break;we=VA[ee+at[Rt]]}if(En{const nA=new Uint8Array(X).slice(4);let DA;try{DA=Ma.inflate(nA,{to:"string"})}catch(GA){console.error("inflate error",GA)}return DA})(p.data):function(X){const nA=new Uint8Array(X);let DA="",GA=0;const{length:VA}=nA;for(;GA0)for(let ot=0;ot{var N;const{uplinkData:O,canResend:z,resolve:X,reject:nA,timeout:DA}=B;if(z){this._pendingRequests.set(v,{resolve:X,reject:nA,timestamp:Date.now(),uplinkData:O,timeout:DA,canResend:z});const GA=this._isBinarySupported?Ga(O).buffer:O;(N=this._socketAdapter)===null||N===void 0||N.send(GA)}else this._pendingRequests.delete(v)})}_onConnect(p){const{socketId:B,event:v={}}=p||{};this._connectionId=B,this._connectionEstablishedTime=Date.now();const N=Date.now()-this._connectionStartTime,O=`${ct}.onConnect cost:${N} ms. socketID:${B} res:${JSON.stringify(v)}`;if(this._ssoLog({method:"onConnect",message:O}),this._checkPendingRequestsAndResend(),this._sendHeartbeatIfReady(),this._isReconnecting){const z=`${ct}.reconnect success`;this._ssoLog({method:"reconnectSuccess",message:z}),gn.emitInnerEvent(Pe.RECONNECTED),this._isReconnecting=!1}this._resetReconnectDelay(),this._handleConnectStateChange({state:qi,shouldEmitEvent:!0,shouldAttemptReconnect:!1})}_sendAck(p){const B=ua({servcmd:"openim.ws_msg_push_ack",data:{SessionData:p}});this.sendPacket(B)}_executeScheduledTaskIfReady(){return pA(this,void 0,void 0,function*(){this._clearTimeoutRequest(),this._sendHeartbeatIfReady()})}_canSendHeartbeat(){var p;return((p=this._socketAdapter)===null||p===void 0?void 0:p.isConnected())&&Date.now()>=this._nextHeartbeatAt&&!this._isHeartbeatInProgress}_sendHeartbeat(){return pA(this,void 0,void 0,function*(){var p;const B=ua({servcmd:"heartbeat.alive",data:{}});try{const v=`${B.head.seq}${B.head.servcmd}`;yield this.sendPacket(B,{requestId:v,timeout:3e3})}catch(v){const N=(p=Xi.get("netWorkMonitor"))===null||p===void 0?void 0:p.isNetworkOnline,O=`${ct}.sendHeartbeat failed. isNetWorkOnline:${N} error: ${en(v)}`;this._ssoLog({method:"sendHeartbeatError",message:O}),this._handleConnectStateChange({state:Mi,shouldEmitEvent:!0,shouldAttemptReconnect:!0})}})}_sendHeartbeatIfReady(){return pA(this,void 0,void 0,function*(){this._canSendHeartbeat()&&(this._isHeartbeatInProgress=!0,yield this._sendHeartbeat(),this._isHeartbeatInProgress=!1)})}_updateHeartbeatTime(){this._nextHeartbeatAt=To?Date.now()+5e3:Date.now()+1e4}_handleNetworkStatusChange(p){const B=`${ct}.networkStatusChange ${JSON.stringify(p)}`;this._ssoLog({method:"networkStatusChange",message:B});const{isNetworkOnline:v,networkType:N}=p;v&&N!=="none"?this._handleConnectStateChange({state:qi,shouldEmitEvent:!1,shouldAttemptReconnect:!0,reason:Mg}):this._handleConnectStateChange({state:Mi,shouldEmitEvent:!1,shouldAttemptReconnect:!0,reason:Mg})}isPrivateNetWork(){const p=Xi.get("instance")||{};return p.proxyServer&&!p.fileDownloadProxy}_handleConnectStateChange(p){const{state:B,shouldAttemptReconnect:v,shouldEmitEvent:N,reason:O}=p,z=`${ct}._handleConnectStateChange currentConnectState: ${this._currentConnectState} shouldAttemptReconnect: ${v} shouldEmitEvent: ${N} reason: ${O}`;this._currentConnectState!==B&&(this._ssoLog({method:"handleConnectStateChange",message:z}),N&&(Pt.info("_handleConnectStateChange",` from ${this._currentConnectState} to ${B}`),gn.emitOuterEvent("netStateChange",{name:"netStateChange",data:{state:B}}),this._currentConnectState=B,B===Mi&&gn.emitInnerEvent(Pe.SOCKET_DISCONNECTED)),v&&(this._resetReconnectDelay(),fn.addTask({id:Ji,intervalMs:this._intendedDelay,callback:this._scheduleReconnectWithBackoff,context:this})))}_handleActivityStatusChange(p){var B,v;const N=(v=(B=this._socketAdapter)===null||B===void 0?void 0:B._ws)===null||v===void 0?void 0:v.readyState,O=`${ct}.activityStatusChange ${JSON.stringify(p)} readyState: ${N}`;Pt.debug("activityStatusChange",O),N===3&&this._handleConnectStateChange({state:Mi,shouldEmitEvent:!0,shouldAttemptReconnect:!0,reason:sr})}_resetReconnectDelay(){var p;Pt.debug(`${ct}._resetReconnectDelay`),fn.removeTask(Ji);const B=(p=Xi.get("activityMonitor"))===null||p===void 0?void 0:p.isActive;this._intendedDelay=B?zo:1e3}_scheduleReconnectWithBackoff(){var p;const B=(p=Xi.get("activityMonitor"))===null||p===void 0?void 0:p.isActive;this._intendedDelay=B?Math.min(5e3,Math.max(zo,1.5*this._intendedDelay)):Math.min(3e5,Math.max(1e3,1.5*this._intendedDelay));const v=new Date().toTimeString().slice(0,8),N=`${ct}.scheduleReconnectWithBackoff timeStr: ${v} intendedDelay: ${this._intendedDelay}`;Pt.debug(N),this.reconnect(),fn.updateTaskInterval(Ji,this._intendedDelay)}_ssoLog(p){const{method:B,message:v}=p;Pt.info(B,v)}_diagnose(){this.isPrivateNetWork()||(this._lastDiagnoseAt=Date.now(),function(p){pA(this,void 0,void 0,function*(){const B=p.split("/")[2];if(!B.startsWith("ws"))return;const v=`https://${B}/v3/netcheck/getconninfo?${p.slice(p.indexOf("info?")+5)}&reqtime=${Date.now()}`;try{yield Pi({method:"GET",url:v,data:{}})}catch(N){Pt.warn("diagnoseBySSO",`diagnoseBySSO failed. error:${N.message}`)}})}(this._url),function(p){pA(this,void 0,void 0,function*(){const B=`https://boce-cdn.my-imcloud.com/v3/netcheck/getconninfo?${p.slice(p.indexOf("info?")+5)}&reqtime=${Date.now()}`;try{yield Pi({method:"GET",url:B,data:{}})}catch(v){Pt.warn(`diagnoseByCDN', 'diagnoseByCDN failed. error:${v.message}`)}})}(this._url),this._beforeSendInterceptors=[])}_clearTimeoutRequest(){for(const[p,B]of this._pendingRequests.entries()){const{reject:v,timestamp:N,timeout:O}=B;Date.now()-N>=O&&(this._pendingRequests.delete(p),Date.now()-this._lastDiagnoseAt>=3e4&&this._diagnose(),v({errorCode:Qr,errorInfo:"NETWORK_TIMEOUT",data:{requestId:p}}))}}_updateIsBinarySupported(){var p;if(!((p=Xi.get("instance"))===null||p===void 0)&&p.devMode)return void(this._isBinarySupported=!1);const B=Es();if((gi||Le&&B==="windows"||Vs)&&(this._isBinarySupported=!1),To){const{uniRuntimeVersion:v=""}=io.getSystemInfoSync();(function(N){const O=N.split(".").map(Number),[z=0,X=0,nA=0]=O;return z>2||!(z<2)&&(X>2||!(X<2)&&nA>=6)})(v)||(this._isBinarySupported=!1)}}_isCompressedData(p){const B=new Uint8Array(p);return B[0]===67&&B[1]===79&&B[2]===77&&B[3]===80}};const ye={init:function(p){Xi.set("instance",p),Ml.init()},destroy:function(){Ml.dispose(),Xi.clear(),fn.dispose()},notificationCenter:gn,channel:Ml,store:Xi,ssoLog:Pt,utils:yg,common:vA,constants:_e},fe=p=>typeof p=="function";function vg(p,B,v){const N=v||[];if(!p||!B)return!1;const O=Object.keys(p).filter(X=>!N.includes(X)),z=Object.keys(B).filter(X=>!N.includes(X));return O.length===z.length&&O.every(X=>!!B.hasOwnProperty(X)&&(typeof p[X]=="object"&&p[X]!==null?vg(p[X],B[X],v):p[X]===B[X]))}var rg;(function(p){p.SDK_READY="sdkStateReady",p.SDK_NOT_READY="sdkStateNotReady",p.SDK_DESTROY="sdkDestroy",p.MESSAGE_RECEIVED="onMessageReceived",p.ROOM_CUSTOM_DATA_RECEIVED="onRoomCustomDataReceived",p.MESSAGE_MODIFIED="onMessageModified",p.MESSAGE_REVOKED="onMessageRevoked",p.MESSAGE_READ_BY_PEER="onMessageReadByPeer",p.MESSAGE_READ_RECEIPT_RECEIVED="onMessageReadReceiptReceived",p.MESSAGE_EXTENSIONS_UPDATED="onMessageExtensionsUpdated",p.MESSAGE_EXTENSIONS_DELETED="onMessageExtensionsDeleted",p.MESSAGE_REACTIONS_UPDATED="onMessageReactionsUpdated",p.CONVERSATION_LIST_UPDATED="onConversationListUpdated",p.TOTAL_UNREAD_MESSAGE_COUNT_UPDATED="onTotalUnreadMessageCountUpdated",p.CONVERSATION_GROUP_LIST_UPDATED="onConversationGroupListUpdated",p.CONVERSATION_IN_GROUP_UPDATED="onConversationInGroupUpdated",p.GROUP_LIST_UPDATED="onGroupListUpdated",p.GROUP_ATTRIBUTES_UPDATED="groupAttributesUpdated",p.GROUP_COUNTER_UPDATED="onGroupCounterUpdated",p.TOPIC_CREATED="onTopicCreated",p.TOPIC_DELETED="onTopicDeleted",p.TOPIC_UPDATED="onTopicUpdated",p.PROFILE_UPDATED="onProfileUpdated",p.USER_STATUS_UPDATED="onUserStatusUpdated",p.BLACKLIST_UPDATED="blacklistUpdated",p.FRIEND_LIST_UPDATED="onFriendListUpdated",p.FRIEND_GROUP_LIST_UPDATED="onFriendGroupListUpdated",p.FRIEND_APPLICATION_LIST_UPDATED="onFriendApplicationListUpdated",p.MY_FOLLOWERS_LIST_UPDATED="onMyFollowersListUpdated",p.MY_FOLLOWING_LIST_UPDATED="onMyFollowingListUpdated",p.MUTUAL_FOLLOWERS_LIST_UPDATED="onMutualFollowersListUpdated",p.KICKED_OUT="kickedOut",p.ERROR="error",p.NET_STATE_CHANGE="netStateChange",p.ALL_RECEIVE_MESSAGE_OPT_UPDATED="onAllReceiveMessageOptUpdated",p.SERVER_CONFIG_UPDATED="onServerConfigUpdated",p.PINNED_GROUP_MESSAGE_UPDATED="onPinnedGroupMessageUpdated",p.WEB_PUSH_MESSAGE_RECEIVED="onWebPushMessageReceived",p.GROUP_ONLINE_MEMBER_COUNT_CHANGED="onGroupOnlineMemberCountChanged",p.RICH_STATUS_CHANGED="onRichStatusChanged"})(rg||(rg={}));var Rg,Dn=rg;(function(p){p.LOGOUT="logout",p.DESTROY="destroy",p.CLOUD_CONFIG_UPDATE="cloud_config_update",p.PROFILE_UPDATE="profile_updated",p.ERROR="error",p.RECONNECTED="reconnected",p.FORCE_OFFLINE="im_open_status.stat_forceoffline",p.COMMERCIAL_CONFIG_PUSH="im_sdk_config_mgr.push_imsdk_purchase_bitsv2",p.OVERLOAD_PUSH="OverLoadPush.notify2",p.NEW_MESSAGE="new_message",p.MESSAGE_PUSH="im_open_push.msg_push",p.MESSAGE_DELETED="message_deleted",p.MESSAGE_REVOKED="message_revoked",p.MESSAGE_MODIFIED="message_modified",p.SOCKET_DISCONNECTED="socket_disconnected",p.CONVERSATION_UPDATED="conversation_updated",p.TOPIC_MESSAGE_DELETED="topic_message_deleted",p.TOPIC_MESSAGE_REVOKED="topic_message_revoked",p.TOPIC_MESSAGE_MODIFIED="topic_message_modified",p.TOPIC_NEW_MESSAGE="topic_new_message",p.QUALITY_STAT="quality_stat",p.SYNC_CONVERSATION_LIST="sync_conversation_list",p.HISTORY_MESSAGE_FETCHED="history_message_fetched"})(Rg||(Rg={}));var Dr,Ii=Rg;(function(p){p.NEW_INVITATION_RECEIVED="newInvitationReceived",p.INVITEE_ACCEPTED="ts_invitee_accepted",p.INVITEE_REJECTED="ts_invitee_rejected",p.INVITATION_CANCELLED="ts_invitation_cancelled",p.INVITATION_TIMEOUT="ts_invitation_timeout",p.INVITATION_MODIFIED="ts_invitation_modified"})(Dr||(Dr={}));var so=Dr;const Hc=Object.assign({},{KICKED_OUT_MULT_ACCOUNT:"multipleAccount",KICKED_OUT_MULT_DEVICE:"multipleDevice",KICKED_OUT_USERSIG_EXPIRED:"userSigExpired",KICKED_OUT_REST_API:"REST_API_Kick"}),zg={MSG_TEXT:"TIMTextElem",MSG_IMAGE:"TIMImageElem",MSG_AUDIO:"TIMSoundElem",MSG_FILE:"TIMFileElem",MSG_FACE:"TIMFaceElem",MSG_VIDEO:"TIMVideoFileElem",MSG_LOCATION:"TIMLocationElem",MSG_GRP_TIP:"TIMGroupTipElem",MSG_GRP_SYS_NOTICE:"TIMGroupSystemNoticeElem",MSG_CUSTOM:"TIMCustomElem",MSG_MERGER:"TIMRelayElem",MSG_STREAM:"TIMStreamElem"};var wg;(function(p){p.UNSENT="unSend",p.SUCCESS="success",p.FAIL="fail"})(wg||(wg={}));const Yr={modify:Ii.MESSAGE_MODIFIED,delete:Ii.MESSAGE_DELETED,revoke:Ii.MESSAGE_REVOKED};var yc;(function(p){p[p.FORWARD=0]="FORWARD",p[p.BACKWARD=1]="BACKWARD"})(yc||(yc={}));const qc=Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},zg),{MSG_PRIORITY_HIGH:"High",MSG_PRIORITY_NORMAL:"Normal",MSG_PRIORITY_LOW:"Low",MSG_PRIORITY_LOWEST:"Lowest"}),{RECEIVE_WITH_OFFLINE_PUSH_EXCEPT_AT:"AcceptNotNotifyExceptAt",NOT_RECEIVE_OFFLINE_PUSH_EXCEPT_AT:"AcceptNotNotifyExceptAt",NOT_RECEIVE_MSG_EXCEPT_AT:"NotReceiveMsgExceptAt",MSG_AT_ALL:"__kImSDK_MesssageAtALL__"}),{MSG_REMIND_ACPT_AND_NOTE:"AcceptAndNotify",MSG_REMIND_ACPT_NOT_NOTE:"AcceptNotNotify",MSG_REMIND_DISCARD:"Discard"}),{MessageStatus:wg,Direction:yc}),ag={[Yr.modify]:Ii.TOPIC_MESSAGE_MODIFIED,[Yr.delete]:Ii.TOPIC_MESSAGE_DELETED,[Yr.revoke]:Ii.TOPIC_MESSAGE_REVOKED},vu={GENDER_UNKNOWN:"Gender_Type_Unknown",GENDER_FEMALE:"Gender_Type_Female",GENDER_MALE:"Gender_Type_Male",USER_STATUS_UNKNOWN:0,USER_STATUS_ONLINE:1,USER_STATUS_OFFLINE:2,USER_STATUS_UNLOGINED:3,USER_NOT_FOUND:"@TLS#NOT_FOUND"},mE=Object.assign({},vu),_g={CONV_C2C:"C2C",CONV_GROUP:"GROUP",CONV_TOPIC:"TOPIC",CONV_SYSTEM:"@TIM#SYSTEM"},ka=Object.assign(Object.assign(Object.assign(Object.assign({},_g),{CONV_AT_ME:1,CONV_AT_ALL:2,CONV_AT_ALL_AT_ME:3}),{CONV_MARK_TYPE_STAR:1,CONV_MARK_TYPE_UNREAD:2,CONV_MARK_TYPE_FOLD:4,CONV_MARK_TYPE_HIDE:8}),{READ_ALL_C2C_MSG:"readAllC2CMessage",READ_ALL_GROUP_MSG:"readAllGroupMessage",READ_ALL_MSG:"readAllMessage"}),Dc=Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},{SNS_TYPE_NO_RELATION:"CheckResult_Type_NoRelation",SNS_TYPE_A_WITH_B:"CheckResult_Type_AWithB",SNS_TYPE_B_WITH_A:"CheckResult_Type_BWithA",SNS_TYPE_BOTH_WAY:"CheckResult_Type_BothWay"}),{ALLOW_TYPE_ALLOW_ANY:"AllowType_Type_AllowAny",ALLOW_TYPE_NEED_CONFIRM:"AllowType_Type_NeedConfirm",ALLOW_TYPE_DENY_ANY:"AllowType_Type_DenyAny"}),{SNS_ADD_TYPE_SINGLE:"Add_Type_Single",SNS_ADD_TYPE_BOTH:"Add_Type_Both"}),{SNS_DELETE_TYPE_SINGLE:"Delete_Type_Single",SNS_DELETE_TYPE_BOTH:"Delete_Type_Both"}),{SNS_APPLICATION_TYPE_BOTH:"Pendency_Type_Both",SNS_APPLICATION_SENT_TO_ME:"Pendency_Type_ComeIn",SNS_APPLICATION_SENT_BY_ME:"Pendency_Type_SendOut",SNS_APPLICATION_AGREE:"Response_Action_Agree",SNS_APPLICATION_AGREE_AND_ADD:"Response_Action_AgreeAndAdd"}),{SNS_CHECK_TYPE_BOTH:"CheckResult_Type_Both",SNS_CHECK_TYPE_SINGLE:"CheckResult_Type_Single"}),{FORBID_TYPE_NONE:"AdminForbid_Type_None",FORBID_TYPE_SEND_OUT:"AdminForbid_Type_SendOut"}),fE={GRP_WORK:"Private",GRP_PUBLIC:"Public",GRP_MEETING:"ChatRoom",GRP_AVCHATROOM:"AVChatRoom",GRP_COMMUNITY:"Community",GRP_ROOM:"Room",GRP_LIVE:"Live"},La={COMMUNITY:"@TGS#_",TOPIC:"@TOPIC#_"},sa={JOINED:1,QUITTED:2,KICKED:3,ADMIN_SET:4,ADMIN_CANCELED:5,GROUP_PROFILE_UPDATED:6,GROUP_MEMBER_PROFILE_UPDATED:7,TOPIC_PROFILE_UPDATED:8},Tg=Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},fE),{GRP_MBR_ROLE_OWNER:"Owner",GRP_MBR_ROLE_ADMIN:"Admin",GRP_MBR_ROLE_MEMBER:"Member",GRP_MBR_ROLE_CUSTOM:"Custom"}),{GRP_TIP_MBR_JOIN:1,GRP_TIP_MBR_QUIT:2,GRP_TIP_MBR_KICKED_OUT:3,GRP_TIP_MBR_SET_ADMIN:4,GRP_TIP_MBR_CANCELED_ADMIN:5,GRP_TIP_GRP_PROFILE_UPDATED:6,GRP_TIP_MBR_PROFILE_UPDATED:7,GRP_TIP_BAN_AVCHATROOM_MEMBER:10,GRP_TIP_UNBAN_AVCHATROOM_MEMBER:11}),{JOIN_OPTIONS_FREE_ACCESS:"FreeAccess",JOIN_OPTIONS_NEED_PERMISSION:"NeedPermission",JOIN_OPTIONS_DISABLE_APPLY:"DisableApply",JOIN_STATUS_SUCCESS:"JoinedSuccess",JOIN_STATUS_ALREADY_IN_GROUP:"AlreadyInGroup",JOIN_STATUS_WAIT_APPROVAL:"WaitAdminApproval"}),{INVITE_OPTIONS_DISABLE_INVITE:"DisableInvite",INVITE_OPTIONS_NEED_PERMISSION:"NeedPermission",INVITE_OPTIONS_FREE_ACCESS:"FreeAccess"}),{GRP_PROFILE_OWNER_ID:"ownerID",GRP_PROFILE_CREATE_TIME:"createTime",GRP_PROFILE_LAST_INFO_TIME:"lastInfoTime",GRP_PROFILE_MEMBER_NUM:"memberNum",GRP_PROFILE_MAX_MEMBER_NUM:"maxMemberNum",GRP_PROFILE_JOIN_OPTION:"joinOption",GRP_PROFILE_INVITE_OPTION:"inviteOption",GRP_PROFILE_INTRODUCTION:"introduction",GRP_PROFILE_NOTIFICATION:"notification",GRP_PROFILE_MUTE_ALL_MBRS:"muteAllMembers"}),{GROUP_ID_PREFIX:La,GROUP_TIPS_OPERATION_TYPE:sa}),aI={IOS_OFFLINE_PUSH_NO_SOUND:"push.no_sound",IOS_OFFLINE_PUSH_DEFAULT_SOUND:"default"},hs=Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},Hc),qc),mE),ka),Dc),Tg),aI),{NET_STATE_CONNECTING:"connecting",NET_STATE_DISCONNECTED:"disconnected",NET_STATE_CONNECTED:"connected"}),Lo={NO_SDKAPPID:2e3,NO_TINYID:2022,NO_A2KEY:2023,USER_NOT_LOGGED_IN:2024,REPEAT_LOGIN:2025,MSG_SEND_FAIL:2100,MSG_SEND_FAIL_NOT_IN_AV:2101,MSG_SEND_GRP_WITH_TOPIC_FAIL:2115,MSG_INSTANCE_REQUIRED:2105,MSG_INVALID_CONV_TYPE:2106,MSG_REVOKE_FAIL:2110,MSG_DELETE_FAIL:2111,MSG_UNREAD_ALL_FAIL:2112,READ_RECEIPT_MSG_LIST_EMPTY:2114,CANNOT_DELETE_GRP_SYSTEM_NOTICE:2116,NOT_MY_FRIEND:2700,NETWORK_ERROR:2800,NETWORK_TIMEOUT:2801,NO_NETWORK:2805,UNCAUGHT_ERROR:2903,INVALID_OPERATION:2905,SDK_IS_NOT_READY:2999,LOGGING_IN:3e3,LOGIN_FAILED:3001,KICKED_OUT_MULT_DEVICE:3002,KICKED_OUT_MULT_ACCOUNT:3003,KICKED_OUT_USERSIG_EXPIRED:3004,LOGGED_OUT:3005,KICKED_OUT_REST_API:3006,NO_USE:3122,OPTIONS_IS_EMPTY:3153,MSG_A2KEY_EXPIRED:20002,ACCOUNT_A2KEY_EXPIRED:70001,HELLO_ANSWER_KICKED_OUT:1002,OPEN_SERVICE_OVERLOAD_ERROR:60022},Ea={BASIC:"1",STANDARD:"2",PROFESSIONAL:"3",NODE:"4"},nr={SYNC_SERVER_INFO_AFTER_RE_ONLINE:"sync-server-info-after-re-online",SYNC_SERVER_INFO_AFTER_LOGIN:"sync-server-info-after-login",RECEIVE_C2C_NEW_MESSAGE:"receive-c2c-new-message",RECEIVE_GROUP_NEW_MESSAGE:"receive-group-new-message",RECEIVE_GROUP_TIPS_NOTIFICATION:"receive-group-tips-notification"},xt={USER_STATUS_UPDATE:"user-status-update",CONVERSATION_RECOVER:"conversation-recover",HISTORY_MESSAGE_RECOVER:"history-message-recover",BLACKLIST_RECOVER:"blacklist-recover",FRIEND_RECOVER:"friend-recover",GROUP_ATTRIBUTE_CACHE_CLEAR:"group-attribute-cache-clear",UNREAD_MESSAGE_RECOVER:"unread-message-recover",HANDLE_NEW_MESSAGE:"handle-new-message",HANDLE_CONVERSATION_PROFILE_UPDATED:"handle-conversation-profile-updated",COMMERCIAL_CONFIG_UPDATE:"commercial-config-update",UNREAD_MESSAGE_SYNC:"unread-message-sync",FRIEND_AND_BLACKLIST_SYNC:"friend-and-blacklist-sync",SIGNALING_MESSAGE_RECOVER:"signaling-message-recover",GROUP_LIST_SYNC:"group-list-sync",CONVERSATION_LIST_SYNC:"conversation-list-sync",USER_PROFILE_SYNC:"user-profile-sync",CONVERSATION_UPDATE_AFTER_UNREAD_SYNC_FINISHED:"conversation-update-after-unread-sync-finished",CONVERSATION_UPDATE_AFTER_GROUP_LIST_SYNC_FINISHED:"conversation-update-after-group-list-sync-finished",HANDLE_C2C_NEW_MESSAGE:"handle-c2c-new-message",HANDLE_GROUP_NEW_MESSAGE:"handle-group-new-message",CREATE_OR_UPDATE_CONVERSATION_BY_RECEIVE_NEW_MESSAGE:"create-or-update-conversation-by-receive-new-message",HANDLE_GROUP_TIPS_FROM_SYNC_UNREAD:"handle-group-tips-from-sync-unread",HANDLE_C2C_REVOKED_MESSAGE_FROM_SYNC_UNREAD:"handle-c2c-revoked-message-from-sync-unread",GROUP_REVOKED_NOTICE_RECOVER:"group-revoked-notice-recover",CLOUD_CONFIG_SYNC:"cloud-config-sync",UPDATE_GROUP_NEXT_SEQUENCE:"update-group-next-sequence",EMIT_C2C_MESSAGE_EVENT:"emit-c2c-message-event",EMIT_GROUP_MESSAGE_EVENT:"emit-group-message-event",CONVERSATION_GROUP_LIST_SYNC:"conversation-group-list-sync",CONVERSATION_GROUP_UPDATE:"conversation-group-update",UPDATE_TOPIC_AFTER_UNREAD_SYNC_FINISHED:"update-topic-after-unread-sync-finished",UPDATE_TOPIC_BY_RECEIVE_NEW_MESSAGE:"update-topic-by-received-new-message",TOPIC_REQUEST_INFO_RESET:"topic-request-info-reset",QUALITY_REPORT:"quality-report",GROUP_TIPS_RECOVER:"group-tips-recover",HANDLE_GROUP_TIPS_NOTIFICATION:"handle-group-tips-notification",C2C_HISTORY_MESSAGE_RECOVER:"c2c-history-message-recover",FRIEND_APPLICATION_LIST_RECOVER:"friend-application-list-recover",EMIT_GROUP_TIPS_EVENT:"emit-group-tips-event",STREAM_MESSAGE_RECOVER:"stream-message-recover"},qt={[nr.SYNC_SERVER_INFO_AFTER_RE_ONLINE]:[{stepId:xt.USER_STATUS_UPDATE},{stepId:xt.GROUP_ATTRIBUTE_CACHE_CLEAR},{stepId:xt.UNREAD_MESSAGE_SYNC,dependency:xt.C2C_HISTORY_MESSAGE_RECOVER},{stepId:xt.CONVERSATION_RECOVER},{stepId:xt.HISTORY_MESSAGE_RECOVER,dependency:xt.CONVERSATION_RECOVER},{stepId:xt.BLACKLIST_RECOVER},{stepId:xt.FRIEND_RECOVER},{stepId:xt.FRIEND_APPLICATION_LIST_RECOVER},{stepId:xt.GROUP_REVOKED_NOTICE_RECOVER,dependency:xt.HISTORY_MESSAGE_RECOVER},{stepId:xt.GROUP_TIPS_RECOVER,dependency:xt.HISTORY_MESSAGE_RECOVER},{stepId:xt.TOPIC_REQUEST_INFO_RESET},{stepId:xt.HANDLE_C2C_REVOKED_MESSAGE_FROM_SYNC_UNREAD,dependency:xt.UNREAD_MESSAGE_SYNC},{stepId:xt.HANDLE_GROUP_TIPS_FROM_SYNC_UNREAD,dependency:xt.UNREAD_MESSAGE_SYNC},{stepId:xt.CONVERSATION_UPDATE_AFTER_UNREAD_SYNC_FINISHED,dependency:[xt.UNREAD_MESSAGE_SYNC,xt.CONVERSATION_RECOVER]},{stepId:xt.EMIT_C2C_MESSAGE_EVENT,dependency:[xt.UNREAD_MESSAGE_SYNC,xt.CONVERSATION_UPDATE_AFTER_UNREAD_SYNC_FINISHED],skipIfDependencyMissing:!1},{stepId:xt.C2C_HISTORY_MESSAGE_RECOVER,dependency:xt.CONVERSATION_RECOVER},{stepId:xt.STREAM_MESSAGE_RECOVER}],[nr.SYNC_SERVER_INFO_AFTER_LOGIN]:[{stepId:xt.COMMERCIAL_CONFIG_UPDATE},{stepId:xt.CLOUD_CONFIG_SYNC},{stepId:xt.USER_PROFILE_SYNC},{stepId:xt.UNREAD_MESSAGE_SYNC},{stepId:xt.FRIEND_AND_BLACKLIST_SYNC},{stepId:xt.GROUP_LIST_SYNC},{stepId:xt.CONVERSATION_LIST_SYNC},{stepId:xt.SIGNALING_MESSAGE_RECOVER,dependency:xt.UNREAD_MESSAGE_SYNC},{stepId:xt.UPDATE_TOPIC_AFTER_UNREAD_SYNC_FINISHED,dependency:[xt.UNREAD_MESSAGE_SYNC]},{stepId:xt.CONVERSATION_UPDATE_AFTER_UNREAD_SYNC_FINISHED,dependency:[xt.UNREAD_MESSAGE_SYNC,xt.CONVERSATION_LIST_SYNC]},{stepId:xt.CONVERSATION_UPDATE_AFTER_GROUP_LIST_SYNC_FINISHED,dependency:[xt.GROUP_LIST_SYNC,xt.CONVERSATION_LIST_SYNC]},{stepId:xt.CONVERSATION_GROUP_LIST_SYNC},{stepId:xt.CONVERSATION_GROUP_UPDATE,dependency:[xt.CONVERSATION_LIST_SYNC,xt.CONVERSATION_GROUP_LIST_SYNC]},{stepId:xt.QUALITY_REPORT}],[nr.RECEIVE_C2C_NEW_MESSAGE]:[{stepId:xt.HANDLE_C2C_NEW_MESSAGE},{stepId:xt.UNREAD_MESSAGE_SYNC},{stepId:xt.CREATE_OR_UPDATE_CONVERSATION_BY_RECEIVE_NEW_MESSAGE,dependency:xt.HANDLE_C2C_NEW_MESSAGE},{stepId:xt.EMIT_C2C_MESSAGE_EVENT,dependency:[xt.HANDLE_C2C_NEW_MESSAGE,xt.CREATE_OR_UPDATE_CONVERSATION_BY_RECEIVE_NEW_MESSAGE],skipIfDependencyMissing:!1},{stepId:xt.CONVERSATION_UPDATE_AFTER_UNREAD_SYNC_FINISHED,dependency:[xt.UNREAD_MESSAGE_SYNC]}],[nr.RECEIVE_GROUP_NEW_MESSAGE]:[{stepId:xt.HANDLE_GROUP_NEW_MESSAGE},{stepId:xt.CREATE_OR_UPDATE_CONVERSATION_BY_RECEIVE_NEW_MESSAGE,dependency:xt.HANDLE_GROUP_NEW_MESSAGE},{stepId:xt.UPDATE_GROUP_NEXT_SEQUENCE,dependency:xt.HANDLE_GROUP_NEW_MESSAGE},{stepId:xt.UPDATE_TOPIC_BY_RECEIVE_NEW_MESSAGE,dependency:xt.HANDLE_GROUP_NEW_MESSAGE},{stepId:xt.EMIT_GROUP_MESSAGE_EVENT,dependency:[xt.HANDLE_GROUP_NEW_MESSAGE,xt.CREATE_OR_UPDATE_CONVERSATION_BY_RECEIVE_NEW_MESSAGE],skipIfDependencyMissing:!1}],[nr.RECEIVE_GROUP_TIPS_NOTIFICATION]:[{stepId:xt.HANDLE_GROUP_TIPS_NOTIFICATION},{stepId:xt.CREATE_OR_UPDATE_CONVERSATION_BY_RECEIVE_NEW_MESSAGE,dependency:xt.HANDLE_GROUP_TIPS_NOTIFICATION},{stepId:xt.EMIT_GROUP_TIPS_EVENT,dependency:[xt.CREATE_OR_UPDATE_CONVERSATION_BY_RECEIVE_NEW_MESSAGE,xt.HANDLE_GROUP_TIPS_NOTIFICATION],skipIfDependencyMissing:!1}]},Ng={MESSAGE_SEND_SUCCESS_RATE:"messageSendSuccessRate"},gI={TOTAL_COUNT:"sendMessageTotalCount",SUCCESS_COUNT:"sendMessageSuccessCount",FAILED_COUNT:"sendMessageFailedCount",SEND_COST:"sendMessageCost"},rr=["login","getMyProfile","getUserProfile","updateMyProfile","setSelfStatus","getUserStatus","subscribeUserStatus","unsubscribeUserStatus","modifyMessage","deleteGroupMember","dismissGroup","getGroupMemberList","getGroupOnlineMemberCount","joinGroup","markGroupMemberList","quitGroup","searchCloudMessages","searchCloudGroups","searchCloudGroupMembers","searchCloudUsers","getMyFollowingList","getMyFollowersList","getMutualFollowersList","followUser","unfollowUser","getUserFollowInfo","checkFollowType","getFriendProfile","addFriend","deleteFriend","updateFriend","checkFriend","setFriendApplicationRead","createFriendGroup","deleteFriendGroup","addToFriendGroup","removeFromFriendGroup","renameFriendGroup","changeGroupOwner","createGroup","dismissGroup","getGroupList","getGroupOnlineMemberCount","getGroupProfile","searchGroupByID","updateGroupProfile","handleGroupApplication","deleteGroupAttributes","getGroupAttributes","initGroupAttributes","setGroupAttributes","addGroupMember","deleteGroupMember","getGroupMemberList","getGroupMemberProfile","setGroupMemberMuteTime","setGroupMemberNameCard","setGroupMemberRole","deleteMessage","revokeMessage","setMessageExtensions","getMessageExtensions","deleteMessageExtensions","getMessageList","addMessageReaction","removeMessageReaction","clearHistoryMessage","sendMessageReadReceipt","getMessageReadReceiptList","getGroupMessageReadMemberList","createMergerMessage","invite","accept","cancel","reject","modifyInvitation","deleteConversation","pinConversation","setMessageRead","setAllMessageRead","getConversationList","getTotalUnreadMessageCount","renameConversationGroup","deleteConversationGroup","markConversation","setConversationCustomData","deleteConversationsFromGroup","addConversationsToGroup","createConversationGroup"];var JI=Object.freeze({__proto__:null,ERROR_CODE:Lo,InnerEvent:Ii,NEED_LOG_API:rr,OuterConstant:hs,OuterEvent:Dn,PUSH:aI,QUALITY_METRICS:Ng,SDK_EDITION:Ea,SDK_INFO:{VERSION:"1.7.3",APPID:537048168},SEND_MESSAGE_STAT:gI,SignalingEvent:so,WEB_PUSH_ACCOUNT_TYPE:1,WORKFLOW_DEFINITIONS:qt,WORKFLOW_NAME:nr,WORKFLOW_STEP:xt}),za,na,un;(function(p){p[p.USER_INITIATED=0]="USER_INITIATED",p[p.KICKED_OUT=1]="KICKED_OUT"})(za||(za={})),function(p){p[p.multipleAccount=1]="multipleAccount",p[p.multipleDevice=2]="multipleDevice",p[p.restApi=3]="restApi"}(na||(na={})),function(p){p[p.multipleDevice=3002]="multipleDevice",p[p.multipleAccount=3003]="multipleAccount",p[p.usersigExpired=70001]="usersigExpired",p[p.restApi=20002]="restApi"}(un||(un={}));const Sn={[na.multipleAccount]:"multipleAccount",[na.multipleDevice]:"multipleDevice",[na.restApi]:"REST_API_Kick",[un.multipleAccount]:"multipleAccount",[un.multipleDevice]:"multipleDevice",[un.restApi]:"REST_API_Kick",[un.usersigExpired]:"userSigExpired"},Ru="login_online_presence_task",{ERROR:Gg,DESTROY:Ua,FORCE_OFFLINE:Kc}=Ii,{KICKED_OUT_MULT_ACCOUNT:HI,KICKED_OUT_MULT_DEVICE:yE,KICKED_OUT_REST_API:cI,ACCOUNT_A2KEY_EXPIRED:wu,MSG_A2KEY_EXPIRED:vl}=Lo;class Sc{init(){const{notificationCenter:B}=ye;B.subscribeInnerEvent(Kc,this._handleForceOfflineFromServerPush,this),B.subscribeInnerEvent(Gg,vl,this._handleForceOfflineFromResponse,this,this._isChatLoginEvent),B.subscribeInnerEvent(Gg,wu,this._handleForceOfflineFromResponse,this,this._isChatLoginEvent),B.subscribeInnerEvent(Gg,HI,this._handleForceOfflineFromResponse,this),B.subscribeInnerEvent(Gg,yE,this._handleForceOfflineFromResponse,this),B.subscribeInnerEvent(Gg,cI,this._handleForceOfflineFromResponse,this),B.subscribeInnerEvent(Ua,this._dispose,this)}_handleForceOfflineFromServerPush(B){var v;if(((v=ye.store.get("login"))===null||v===void 0?void 0:v.isLoggedIn)===!0){const{EventArray:N=[]}=B?.body||{};this._extractKickedOutMessages(N).forEach(O=>{const{KickoutMsgNotify:{KickType:z,NewInstInfo:X,Instid:nA}}=O;this._isCurrentInstanceKickedOut(nA)&&this._processKickedOutReasonInfo({kickedOutReasonCode:z,newInstanceInfo:X})})}}_extractKickedOutMessages(B){return B.reduce((v,N)=>[...v,...N.C2cNotifyMsgArray||[]],[]).filter(v=>{var N;return this._isKickedOut((N=v?.KickoutMsgNotify)===null||N===void 0?void 0:N.KickType)})}_handleForceOfflineFromResponse(B){const{errorCode:v}=B;this._processKickedOutReasonInfo({kickedOutReasonCode:v})}_processKickedOutReasonInfo(B){return pA(this,void 0,void 0,function*(){const{kickedOutReasonCode:v}=B,{ssoLog:N,utils:{safeStringify:O}}=ye;try{this._logKickedOutEvent(B),this._shouldLogoutAfterKickedOut(v)?yield ye.login.loginAction.logout(za.KICKED_OUT):ye.login.loginAction.handleLogoutCompleted()}catch(z){N.debug("_processKickedOutReasonInfo",` fail ${O(z)}`)}finally{ye.notificationCenter.emitOuterEvent(Dn.KICKED_OUT,{data:{type:Sn[v]},name:Dn.KICKED_OUT})}})}_logKickedOutEvent(B){const{kickedOutReasonCode:v,newInstanceInfo:N={}}=B,O=`type:${Sn[v]} newInstanceInfo: ${JSON.stringify(N)}`;ye.ssoLog.warn("kickedOut",O)}_isKickedOut(B){return[na.multipleAccount,na.multipleDevice,na.restApi].includes(B)}_isChatLoginEvent(B){const{requestHead:v}=B||{};return v?.idtype!==1}_shouldLogoutAfterKickedOut(B){return![un.usersigExpired,na.restApi].includes(B)}_isCurrentInstanceKickedOut(B){const{isLoggedIn:v,statusInstanceId:N}=ye.store.get("login")||{};return v===!0&&B===N}_dispose(){const{notificationCenter:B}=ye;B.unSubscribeInnerEvent(Kc,this._handleForceOfflineFromServerPush,this),B.unSubscribeInnerEvent(Gg,wu,this._handleForceOfflineFromResponse,this),B.unSubscribeInnerEvent(Gg,vl,this._handleForceOfflineFromResponse,this),B.unSubscribeInnerEvent(Gg,HI,this._handleForceOfflineFromResponse,this),B.unSubscribeInnerEvent(Gg,yE,this._handleForceOfflineFromResponse,this),B.unSubscribeInnerEvent(Gg,cI,this._handleForceOfflineFromResponse,this),B.unSubscribeInnerEvent(Ua,this._dispose,this)}}function _u(p){return pA(this,void 0,void 0,function*(){const B="im_open_status.wslogin",v=ye.common.generateProtocolData({servcmd:B,data:{State:"Online",is_web_uniapp:0,InstType:0,CustomInfo:p}}),N=`${v.head.seq}${B}`,O=yield ye.channel.sendPacket(v,{timeout:9e4,requestId:N});if(O){const{HelloInterval:z,InstId:X,TinyId:nA,TimeStamp:DA,CustomStatus:GA,PurchaseBits:VA,A2Key:ee,RichMsgAuthKey:Ee,ErrorCode:Ke,ErrorInfo:ot,ActionStatus:at}=O;return{helloInterval:z,instanceID:X,tinyID:nA,timeStamp:DA,customStatus:GA,purchaseBits:VA,a2Key:ee,authKey:Ee,errorCode:Ke,errorInfo:ot,actionStatus:at}}})}function Tu(){const{store:p}=ye;return Ia(p.get("instance").sdkAppId)!==ut.CHINA}function Rl(p){var B;try{const v=Xi.getStorage("errorMessage");if(!p||!v)return"";const N=((B=JSON.parse(v))===null||B===void 0?void 0:B.errorMessage)||{},{code:O,replacement1:z="",replacement2:X=""}=p;if(!O)return"";const nA=Tu()?`${O}_en`:`${O}_cn`;let DA=N[N[nA]?nA:O]||"";return DA&&(z&&(DA=DA.replace("$replacement1",z)),X&&(DA=DA.replace("$replacement2",X))),DA}catch(v){return console.warn("Error parsing stored error messages:",v),""}}class rs extends Error{constructor(B={}){B.code=B.code||B.errorCode;let{functionName:v="Unknown",code:N,message:O="",data:z="",moreMessage:X="",errorMessage:nA=""}=B;nA=(N?Rl(B):"")||nA||O;let DA=N?`${v} failed. error: {"message": ${nA}, "code": ${N}}`:`${v} failed. error: {"message": ${nA}}`;DA=`${DA} ${X}`,super(),this.code=N,this.errorCode=N,this.errorMessage=nA,this.message=DA,this.data=z}}function gs(p,B){var v;if(p&&((v=ye.store.get("login"))===null||v===void 0?void 0:v.isLoggedIn)!==!0)throw new rs({code:Lo.USER_NOT_LOGGED_IN,functionName:B})}function Id(p,B,v){if(Array.isArray(p))for(let N=0;N{return GA===(VA=N,Object.prototype.toString.call(VA).match(/^\[object (.*)\]$/)[1].toLowerCase());var VA})){for(let VA=0;VA{const{interceptor:O,context:z}=N;O.apply(z,[v])})}(p)}function Sr(p,B){II.push({interceptor:p,context:B})}function Mc(p){const{params:B,auth:v}=p;B&&typeof B=="object"&&Object.assign(ud,B),v&&typeof v=="object"&&Object.assign(DE,v)}function jc(p){return ye.store.get("commercialConfig").get(p)}class tn{constructor(){this._handlers=new Map,this._activeWorkflows=new Map,this._stepStartTimes=new Map,this._logHandlers={start:(B,v)=>{const N=Date.now();v?(this._stepStartTimes.set(`${B}-${v}`,N),ye.ssoLog.debug("_executeWorkflowStep",`[Workflow ${B}] Step ${v} started at ${new Date(N).toISOString()}`)):(this._workflowStartTimes.set(B,N),ye.ssoLog.debug("_executeWorkflowStep",`[Workflow ${B}] started at ${new Date(N).toISOString()}`))},success:(B,v)=>{const N=Date.now();if(v){const O=this._stepStartTimes.get(`${B}-${v}`),z=O?N-O:0;this._stepStartTimes.delete(`${B}-${v}`),ye.ssoLog.debug("_executeWorkflowStep",`[Workflow ${B}] Step ${v} completed successfully at ${new Date(N).toISOString()} (${z}ms)`)}else{const O=this._workflowStartTimes.get(B),z=O?N-O:0;this._workflowStartTimes.delete(B),ye.ssoLog.debug("_executeWorkflowStep",`[Workflow ${B}] completed successfully at ${new Date(N).toISOString()} (${z}ms)`)}},error:(B,v,N)=>{const{ssoLog:O,utils:{safeStringify:z}}=ye,X=Date.now();if(v){const nA=this._stepStartTimes.get(`${B}-${v}`),DA=nA?X-nA:0;this._stepStartTimes.delete(`${B}-${v}`),O.error("_executeWorkflowStep",`[Workflow ${B}] Step ${v} failed at ${new Date(X).toISOString()} (${DA}ms) ${z(N)}`,{error:N})}else{const nA=this._workflowStartTimes.get(B),DA=nA?X-nA:0;this._workflowStartTimes.delete(B),O.error("_executeWorkflowStep",`[Workflow ${B}] failed at ${new Date(X).toISOString()} (${DA}ms) ${z(N)}`,{error:N})}}}}static getInstance(){return tn._instance||(tn._instance=new tn),tn._instance}static setInstance(B){tn._instance=B}init(){this._initializeWorkflows()}registerWorkflowStep(B,v,N,O){if(!this._handlers.has(B))return void ye.ssoLog.debug("registerWorkflowStep",`Workflow '${B}' not defined in core`);if(!qt[B].find(X=>X.stepId===v))return void ye.ssoLog.debug("registerWorkflowStep",`Step '${v}' not defined in workflow '${B}'`);const z=this._handlers.get(B);z.has(v)||z.set(v,O?N.bind(O):N)}executeWorkflow(B,v){return pA(this,void 0,void 0,function*(){if(!this._validateWorkflow(B))return;ye.ssoLog.debug("executeWorkflow",`[Workflow ${B}] Started execution at ${new Date().toISOString()}`);const N=qt[B],O={},z={cancelled:!1};this._activeWorkflows.set(B,{cancelToken:z});try{const X=new Map;N.forEach(DA=>{X.set(DA.stepId,DA)});const nA={workflowName:B,pendingSteps:new Set(N.map(DA=>DA.stepId)),completedSteps:new Set,runningSteps:new Set,stepMap:X,stepResults:O,data:v,cancelToken:z};yield new Promise((DA,GA)=>{const VA=()=>{if(z.cancelled)return void DA();this._getExecutableSteps({pendingSteps:nA.pendingSteps,completedSteps:nA.completedSteps,stepMap:nA.stepMap,workflowName:B}).filter(ee=>!nA.runningSteps.has(ee)).forEach(ee=>{nA.completedSteps.has(ee)||nA.runningSteps.has(ee)||this._executeWorkflowStep(ee,nA,{onComplete:()=>{if(nA.pendingSteps.size===0)return void DA();this._getExecutableSteps({pendingSteps:nA.pendingSteps,completedSteps:nA.completedSteps,stepMap:nA.stepMap,workflowName:B}).filter(Ee=>!nA.runningSteps.has(Ee)).length===0&&nA.runningSteps.size===0&&(ye.ssoLog.debug("executeWorkflow",`Workflow ${B} completed with some steps skipped due to dependency failures`),DA())},onError:GA,onStepComplete:VA})})};VA()}),ye.ssoLog.debug("executeWorkflow",`[Workflow ${B}] Completed execution at ${new Date().toISOString()}`)}catch(X){ye.ssoLog.error("executeWorkflow",`[Workflow ${B}] Failed execution at ${new Date().toISOString()}`,{error:X})}finally{this._activeWorkflows.delete(B)}})}_executeWorkflowStep(B,v,N){return pA(this,void 0,void 0,function*(){const{workflowName:O,runningSteps:z,stepMap:X,stepResults:nA,data:DA}=v;z.add(B),this._logWorkflowExecution(O,B,"start");try{const GA=X.get(B);let VA=null;GA?.dependency&&(l(GA.dependency)?VA=nA[GA.dependency]:Array.isArray(GA.dependency)&&(VA={},GA.dependency.forEach(Ee=>{VA[Ee]=nA[Ee]})));const ee=this._handlers.get(O).get(B);if(ee){const Ee=yield Promise.resolve(ee({data:DA,result:VA}));nA[B]=Ee,this._logWorkflowExecution(O,B,"success")}v.completedSteps.add(B)}catch(GA){const VA=`[Workflow].${O}.${B}`,{errorCode:ee,errorInfo:Ee=`${VA} failed`}=GA||{},Ke=new rs({functionName:VA,code:ee,message:Ee});ye.ssoLog.error(VA,Ee,{error:Ke}),this._logWorkflowExecution(O,B,"error",GA),N.onError(GA)}finally{z.delete(B),v.pendingSteps.delete(B),N.onStepComplete(),N.onComplete()}})}reset(){this._cancelAllWorkflows()}destroy(){this.reset(),this._handlers.clear()}_initializeWorkflows(){Object.keys(qt).forEach(B=>{this._handlers.has(B)||this._handlers.set(B,new Map)})}_cancelWorkFlow(B){const v=this._activeWorkflows.get(B);if(!v)return;const{cancelToken:N}=v;N.cancelled=!0,this._activeWorkflows.delete(B)}_cancelAllWorkflows(){Object.keys(qt).forEach(B=>{this._cancelWorkFlow(B)})}_validateWorkflow(B){return qt[B]?!!this._handlers.get(B):!1}_getExecutableSteps(B){const{pendingSteps:v,completedSteps:N,stepMap:O,workflowName:z}=B;return Array.from(v).filter(X=>{const nA=O.get(X)||{},{dependency:DA,skipIfDependencyMissing:GA=!0}=nA;if(!DA)return!0;if(l(DA))return this._isStepRegistered({workflowName:z,stepId:DA})?N.has(DA):!GA;if(h(DA)){if(DA.filter(VA=>!this._isStepRegistered({workflowName:z,stepId:VA})).length>0&&GA)return!1;for(const VA of DA)if(!N.has(VA))return!1;return!0}return!1})}_isStepRegistered(B){var v;const{workflowName:N,stepId:O}=B;return(v=this._handlers.get(N))===null||v===void 0?void 0:v.has(O)}_logWorkflowExecution(B,v,N,O){this._logHandlers[N](B,v)}}const ws=new Map,da=({type:p,groupID:B})=>p===hs.GRP_COMMUNITY||`${B}`.startsWith(La.COMMUNITY)&&!`${B}`.includes(La.TOPIC),Xr=(p="")=>{const B=p.startsWith("GROUP")?p.replace("GROUP",""):p;return B.startsWith(La.COMMUNITY)&&`${B}`.includes(La.TOPIC)},Wc="openim",Ed="million_group_open_http_svc";function Zg(p){return pA(this,void 0,void 0,function*(){const{servcmd:B,data:v}=function(z){const{data:X}=z;return gg(X)||SE(X)}(p)?function(z){let{servcmd:X,data:nA}=z;return SE(nA)?function(DA){const{servcmd:GA,data:VA}=DA;let{GroupId:ee=""}=VA;const Ee=ee;return[ee]=Ee.split(La.TOPIC),{servcmd:Xg(GA),data:Object.assign(Object.assign({},VA),{GroupId:ee,TopicId:Ee})}}(z):(gg(nA)&&(X=Xg(X)),{servcmd:X,data:nA})}(p):p,N=ye.common.generateProtocolData({servcmd:B,data:v}),O=`${N.head.seq}${B}`;return ye.channel.sendPacket(N,{requestId:O,timeout:p.timeout})})}function gg(p){const{Type:B,GroupId:v,GroupIdList:N=[]}=p,O=v||N[0]||"";return da({type:B,groupID:O})}function SE(p){const{GroupId:B=""}=p;return Xr(B)}function Xg(p){if(p.includes(Wc))return p;const B=p.split(".")[1];return`${Ed}.${B}`}function qn(){var p;return(p=ye.store.get("login"))===null||p===void 0?void 0:p.userId}const Ar=p=>h(p)||f(p),Fa=(p,B,v,N)=>{if(!Ar(p)||!Ar(B))return 0;let O=0;const z=Object.keys(B);let X;for(let nA=0,DA=z.length;nA{if(r(B))return"";if(p===hs.MSG_TEXT)return B.text||"";const v=Nu[p];return v?cC(v):""},zc=[{cmd:"ws_get_user_status",interval:5,count:20},{cmd:"ws_status_subscribe",interval:5,count:20},{cmd:"ws_status_unsubscribe",interval:5,count:20},{cmd:"get_group_self_member_info",interval:5,count:20},{cmd:"modify_group_base_info",interval:1,count:8},{cmd:"get_pendency",interval:1,count:15},{cmd:"set_group_attr",interval:5,count:10},{cmd:"modify_group_attr",interval:5,count:10},{cmd:"delete_group_attr",interval:5,count:10},{cmd:"clear_group_attr",interval:5,count:10},{cmd:"get_group_attr",interval:5,count:20},{cmd:"update_group_counter",interval:5,count:20},{cmd:"get_group_counter",interval:5,count:20},{cmd:"get_topic",interval:1,count:10},{cmd:"read_all_unread_msg",interval:1,count:1},{cmd:"query",interval:5,count:20}],Zc="im_sdk_config_mgr.fetch_config",KI="im_sdk_config_mgr.push_configv2",uI="cloud-config",Xc=2996,$c=new class{init(p){this.core=p}};function va(p){return pA(this,void 0,void 0,function*(){const{sdkAppId:B}=$c.core.store.get("instance")||{},v=$c.core.helper.generateProtocolData({servcmd:Zc,data:{uint32_sdkappid:B,uint64_version:p}}),N=`${v.head.seq}${Zc}`;return $c.core.channel.sendPacket(v,{requestId:N})})}var bg=new class{constructor(){this._core=null,this._expirationTime=0,this._version=0,this._isFetching=!1,this._cmdFrequencyLimitMap=new Map,this._methodCallFrequencyMap=new Map}install(p){this._core=p;const{notificationCenter:B,InnerEvent:v,helper:N,constants:{WORKFLOW_NAME:O,WORKFLOW_STEP:z},channel:X}=p;B.subscribeInnerEvent(KI,this._handlePushedConfig,this),N.registerWorkflowStep(O.SYNC_SERVER_INFO_AFTER_LOGIN,z.CLOUD_CONFIG_SYNC,this._handleLoginSuccess,this),B.subscribeInnerEvent(v.LOGOUT,this._reset,this),B.subscribeInnerEvent(v.DESTROY,this._dispose,this),N.registerExperimentalAPI("getServerConfig",this),this._updateCmdFreqLimitMap(zc),X.registerBeforeSendInterceptor(this.checkMethodCallOverLimit,this)}getServerConfig(p){return pA(this,void 0,void 0,function*(){var B;const v={code:0,data:""};return p&&(v.data=((B=this._core.store.get("cloudConfig"))===null||B===void 0?void 0:B[p])||""),v})}checkMethodCallOverLimit(p){if(!this._cmdFrequencyLimitMap.has(p))return;if(!this._methodCallFrequencyMap.has(p))return void this._methodCallFrequencyMap.set(p,{startTime:Date.now(),methodCallCounter:1});const{count:B,interval:v}=this._cmdFrequencyLimitMap.get(p);let{startTime:N,methodCallCounter:O}=this._methodCallFrequencyMap.get(p);if(Date.now()-N>1e3*v)this._methodCallFrequencyMap.set(p,{startTime:Date.now(),methodCallCounter:1});else if(O+=1,this._methodCallFrequencyMap.set(p,{startTime:N,methodCallCounter:O}),O>B)throw new this._core.helper.ChatError({code:Xc,replacement1:p})}_handlePushedConfig(p){return pA(this,void 0,void 0,function*(){const{ssoLog:B,utils:{safeStringify:v}}=this._core;B.info("_handlePushedConfig",v(p)),yield this._updateCloudConfig(p)})}_handleLoginSuccess(){return pA(this,void 0,void 0,function*(){const{ssoLog:p,utils:{safeStringify:B}}=this._core;try{if(this._canFetch()){const v=yield va(this._version);p.info("_fetchCloudConfigIfLogin",B(v)),yield this._updateCloudConfig(v)}this._core.helper.taskScheduler.addTask({id:uI,intervalMs:1e3,callback:this._fetchCloudConfigIfReady,context:this})}catch(v){p.debug("_fetchCloudConfigIfLogin",B(v))}})}_fetchCloudConfigIfReady(){return pA(this,void 0,void 0,function*(){const{ssoLog:p,utils:{safeStringify:B}}=this._core;if(this._canFetch())try{const v=yield va(this._version);p.info("_fetchCloudConfigIfReady",B(v)),yield this._updateCloudConfig(v)}catch(v){p.error("_fetchCloudConfigIfReady",B(v))}})}_updateCloudConfig(p){return pA(this,void 0,void 0,function*(){const B=this._parseCloudConfig(p);B&&(this._core.store.set("cloudConfig",B),yield this._parseCmdFreqLimit(),this._core.notificationCenter.emitInnerEvent(this._core.InnerEvent.CLOUD_CONFIG_UPDATE,B),this._core.notificationCenter.emitOuterEvent(this._core.OuterEvent.SERVER_CONFIG_UPDATED,{name:this._core.OuterEvent.SERVER_CONFIG_UPDATED,data:{config:B}}))})}_canFetch(){const{isLoggedIn:p}=this._core.store.get("login")||{};return p&&!this._isFetching&&Date.now()>=this._expirationTime}_parseCloudConfig(p){const{int32_error_code:B,str_error_message:v,str_json_config:N,uint32_expired_time:O,uint32_sdkappid:z,uint64_version:X}=p;let nA=null;if(B===0){if(this._version!==X)try{nA=JSON.parse(N),this._version=X}catch{}this._expirationTime=Date.now()+1e3*O}else this._expirationTime=B===void 0?Date.now()+36e5:Date.now()+12e4;return nA}_parseCmdFreqLimit(){return pA(this,void 0,void 0,function*(){var p;let B=(p=yield this.getServerConfig("cmd_frequency_limit"))===null||p===void 0?void 0:p.data;const{isEmpty:v}=this._core.utils;if(!v(B))try{B=JSON.parse(B),this._updateCmdFreqLimitMap(B)}catch(N){console.warn(N)}})}_updateCmdFreqLimitMap(p){p.forEach(B=>{this._cmdFrequencyLimitMap.set(B.cmd,{interval:B.interval,count:B.count})})}_reset(){this._core.helper.taskScheduler.removeTask(uI),this._core.store.clear("cloudConfig"),this._updateCmdFreqLimitMap(zc),this._methodCallFrequencyMap.clear(),this._expirationTime=0,this._version=0,this._isFetching=!1}_dispose(){const{notificationCenter:p,InnerEvent:B}=this._core;p.unSubscribeInnerEvent(KI,this._handlePushedConfig,this),p.unSubscribeInnerEvent(B.LOGOUT,this._reset,this),p.unSubscribeInnerEvent(B.DESTROY,this._dispose,this),this._reset()}};class ys{constructor(B=0,v=0){this.high=B,this.low=v}equal(B){return B!==null&&this.low===B.low&&this.high===B.high}toString(){const B=Number(this.high).toString(16);let v=Number(this.low).toString(16);if(v.length<8){let N=8-v.length;for(;N;)v=`0${v}`,N--}return B+v}}const Kn={SEARCH_GRP_SNS:new ys(0,Math.pow(2,1)).toString(),AV_HISTORY_MSG:new ys(0,Math.pow(2,2)).toString(),GRP_COMMUNITY:new ys(0,Math.pow(2,3)).toString(),MSG_TO_SPECIFIED_GRP_MBR:new ys(0,Math.pow(2,4)).toString(),AV_MBR_LIST:new ys(0,Math.pow(2,6)).toString(),USER_STATUS:new ys(0,Math.pow(2,7)).toString(),CONV_MARK:new ys(0,Math.pow(2,9)).toString(),CONV_GROUP:new ys(0,Math.pow(2,10)).toString(),AV_BAN_MBR:new ys(0,Math.pow(2,11)).toString(),MSG_EXT:new ys(0,Math.pow(2,13)).toString(),GRP_COUNTER:new ys(0,Math.pow(2,15)).toString(),PLUGIN_TRANSLATE:new ys(Math.pow(2,6)).toString(),PLUGIN_VOICE_TO_TEXT:new ys(Math.pow(2,7)).toString(),PLUGIN_CS:new ys(Math.pow(2,8)).toString(),PLUGIN_PUSH:new ys(Math.pow(2,9)).toString(),PLUGIN_BOT:new ys(Math.pow(2,10)).toString(),MSG_REACTION:new ys(Math.pow(2,16)).toString(),FOLLOW:new ys(Math.pow(2,20)).toString()},vc="CommercialConfig",jI="commercial-config";var WI=new class{constructor(){this._core=null,this._expirationTime=0,this._isFetching=!1,this._featureMap=new Map,this._methodKeyMap=new Map,this._purchaseBits="0"}install(p){this._core=p;const{helper:B,notificationCenter:v,constants:{WORKFLOW_NAME:N,WORKFLOW_STEP:O,InnerEvent:z}}=p;v.subscribeInnerEvent(z.COMMERCIAL_CONFIG_PUSH,this._handlePushedConfig,this),v.subscribeInnerEvent(z.LOGOUT,this._handleLogout,this),v.subscribeInnerEvent(z.DESTROY,this._dispose,this),B.registerWorkflowStep(N.SYNC_SERVER_INFO_AFTER_LOGIN,O.COMMERCIAL_CONFIG_UPDATE,this._syncCommercialConfig,this),p.helper.registerExperimentalAPI("isCommercialAbilityEnabled",this),p.helper.registerExperimentalAPI("queryCommercialAbility",this)}isCommercialAbilityEnabled(p){return pA(this,void 0,void 0,function*(){const B=parseInt(p,10).toString(2),{length:v}=B;let N,O=!0;for(let z=v-1,X=0;z>=0;z--,X++)if(B.charAt(z)==="1"&&(N=X<32?new ys(0,2**X).toString():new ys(2**(X-32),0).toString(),!this._featureMap.get(N))){O=!1;break}return this._core.ssoLog.debug("isFeatureEnabled",`${vc}.isFeatureEnabled decimalNumber:${p} key:${N} ret:${O}`),{code:0,data:{enabled:O}}})}queryCommercialAbility(){return this._purchaseBits}_fetchAndParseCommercialConfig(){return pA(this,void 0,void 0,function*(){var p;const{ssoLog:B,utils:{safeStringify:v},common:{buildAndSendPacket:N}}=this._core;try{this._isFetching=!0;const O=yield N({servcmd:"im_sdk_config_mgr.fetch_imsdk_purchase_bitsv2",data:{uint32_sdkappid:(p=this._core.store.get("instance"))===null||p===void 0?void 0:p.sdkAppId}});O&&(this._parseCommercialConfig(O),this._core.store.set("commercialConfig",this._methodKeyMap))}catch(O){B.error("_fetchAndParseCommercialConfig",v(O))}finally{this._isFetching=!1}})}_syncCommercialConfig(p){return pA(this,void 0,void 0,function*(){const{purchaseBits:B}=p?.data||{};B&&(this._parsePurchaseBits(B),this._core.store.set("commercialConfig",this._methodKeyMap)),this._canFetch()&&(yield this._fetchAndParseCommercialConfig()),this._core.helper.taskScheduler.addTask({id:jI,intervalMs:1e3,callback:this._fetchCommercialConfigIfReady,context:this})})}_canFetch(){var p;const B=(p=this._core.store.get("login"))===null||p===void 0?void 0:p.isLoggedIn,v=Date.now()>=this._expirationTime;return B&&!this._isFetching&&v}_handlePushedConfig(p){p?.body&&(this._parseCommercialConfig(p.body),this._core.store.set("commercialConfig",this._methodKeyMap))}_fetchCommercialConfigIfReady(){return pA(this,void 0,void 0,function*(){this._canFetch()&&(yield this._fetchAndParseCommercialConfig())})}_parseCommercialConfig(p){const{ssoLog:B}=this._core;if(typeof p!="object")return;const{int32_error_code:v,str_error_message:N,str_purchase_bits:O,uint32_expired_time:z}=p;v===0?(this._parsePurchaseBits(O),this._expirationTime=Date.now()+1e3*z):v===void 0?(B.warn("_parseCommercialConfig",`${vc}._parseCommercialConfig failed. Invalid message format:`,p),this._expirationTime=Date.now()+36e5):(B.warn("_parseCommercialConfig",`${vc}._parseCommercialConfig errorCode:${v} errorMessage:${N}`),this._expirationTime=Date.now()+12e4)}_isValidPurchaseBits(p){return p&&typeof p=="string"&&p.length>=1&&p.length<=64&&/[01]{1,64}/.test(p)}_parsePurchaseBits(p){const{ssoLog:B,utils:{safeStringify:v}}=this._core;if(this._isValidPurchaseBits(p)){this._purchaseBits=p,this._featureMap.clear(),this._methodKeyMap.clear();let N=null;for(let O=p.length-1,z=0;O>=0;O--,z++)if(N=z<32?new ys(0,2**z).toString():new ys(2**(z-32),0).toString(),p[O]==="1"){this._featureMap.set(N,!0);const X=this._getKeyByValue(Kn,N);X&&this._methodKeyMap.set(X,!0)}else{this._featureMap.set(N,!1);const X=this._getKeyByValue(Kn,N);X&&this._methodKeyMap.set(X,!1)}}else B.warn("_parsePurchaseBits",`${vc}.parsePurchaseBits invalid purchases:${v(p)}`)}_getKeyByValue(p,B){const v=Object.entries(p).find(([N,O])=>O===B);return v?v[0]:void 0}_handleLogout(){this._reset()}_dispose(){this._reset(),this._core.notificationCenter.unSubscribeInnerEvent(this._core.InnerEvent.COMMERCIAL_CONFIG_PUSH,this._handlePushedConfig,this),this._core.notificationCenter.unSubscribeInnerEvent(this._core.InnerEvent.LOGOUT,this._reset,this),this._core.notificationCenter.unSubscribeInnerEvent(this._core.InnerEvent.DESTROY,this._dispose,this)}_reset(){this._core.helper.taskScheduler.removeTask(jI),this._core.store.set("commercialConfig",{}),this._expirationTime=0,this._isFetching=!1,this._featureMap.clear(),this._purchaseBits="0"}},ME=new class{constructor(){this._core=null,this._serverOverloadInfoMap=new Map}install(p){this._core=p;const{notificationCenter:B,InnerEvent:v,channel:N}=this._core;B.subscribeInnerEvent(v.OVERLOAD_PUSH,this._handleOverLoadPush,this),B.subscribeInnerEvent(v.LOGOUT,this._reset,this),B.subscribeInnerEvent(v.DESTROY,this._dispose,this),N.registerBeforeSendInterceptor(this.checkServerOverload,this)}checkServerOverload(p){if(!this._serverOverloadInfoMap.has(p))return;const{overloadStartTimestamp:B,delaySeconds:v}=this._serverOverloadInfoMap.get(p);if(Date.now()-B<=1e3*v)throw new this._core.helper.ChatError({functionName:p,message:"service is busy, please try again later"});this._serverOverloadInfoMap.delete(p)}_handleOverLoadPush(p){const{OverLoadServCmd:B,DelaySecs:v}=p;this._serverOverloadInfoMap.set(B,{overloadStartTimestamp:Date.now(),delaySeconds:v})}_reset(){this._serverOverloadInfoMap.clear()}_dispose(){this._reset();const{notificationCenter:p,InnerEvent:B}=this._core;p.unSubscribeInnerEvent(B.OVERLOAD_PUSH,this._handleOverLoadPush,this),p.unSubscribeInnerEvent(B.LOGOUT,this._reset,this),p.unSubscribeInnerEvent(B.DESTROY,this._dispose,this)}},nh=new class{constructor(){this.name="ConfigCenter"}install(p){$c.init(p),bg.install(p),WI.install(p),ME.install(p)}},lC=new class{constructor(){this.name="ErrorMessage",this._core=null}install(p){return pA(this,void 0,void 0,function*(){if(this._core=p,this._canFetch()){const B=yield this._fetchErrorMessage();if(!B)return;const v=this._parseResponse(B);this._saveErrorMessage(v)}})}_canFetch(){const p=this._core.store.getStorage("errorMessage");return!p||this._isExpired(p)}_saveErrorMessage(p){this._core.store.setStorage("errorMessage",{errorMessage:p,errorMessageSavedTime:new Date().getTime()})}_fetchErrorMessage(){return pA(this,void 0,void 0,function*(){try{return yield this._core.helper.httpRequest({method:"GET",url:"https://web.sdk.qcloud.com/im/download/error-message/v3/0.0.6/tim-error-message.txt"})}catch(p){console.error(p)}})}_isExpired(p){if(!p)return!0;const{errorMessageSavedTime:B}=p;return B&&new Date().getTime()-B>=6048e5}_parseResponse(p){if(typeof p=="string"){const B=p.split(`; +`),v={},N=new RegExp(/'/g);for(let O=0;O{var ao,zi,ui;const Po=function(As,pi){const{From_Account:Ki,From_AccountHeadurl:Ws,From_AccountNick:we,IsNeedReadReceipt:Rt,MsgBody:FA,MsgClientTime:Wt,MsgRandom:En,MsgSeq:Zt,MsgTimeStamp:us,SendMsgControl:vi,SupportMessageExtension:ho,To_Account:Ct,TinyId:Bt,MsgCheckResult:ug,CloudCustomData:ks,IsPeerRead:ji,MsgFlagBits:Hr,MsgVersion:oc,EventArray:is}=As;return{from:Ki,avatar:Ws,nick:we,needReadReceipt:Rt===1,readReceiptSentByPeer:ji,clientTime:Wt,messageFlagBits:Hr,random:En,sequence:Zt,time:us,messageControlInfo:vi,isSupportExtension:ho,to:Ct,tinyID:Bt,checkResult:ug,cloudCustomData:ks,messageVersion:oc,eventArray:is,elements:pi.message.messageHelper.parseServerPushMessageElement(FA)}}(Ui,at);if(!((ui=(zi=(ao=Ui?.EventArray)===null||ao===void 0?void 0:ao[0])===null||zi===void 0?void 0:zi.hasOwnProperty)===null||ui===void 0)&&ui.call(zi,"C2cNotifyMsgArray"))Yt.push(...function(As){var pi;const Ki=[];return(pi=As.EventArray)===null||pi===void 0||pi.forEach(Ws=>{var we,Rt;const{C2cNotifyMsgArray:FA}=Ws,Wt=(Rt=(we=FA?.[0])===null||we===void 0?void 0:we.WithdrawC2cMsgNotify)===null||Rt===void 0?void 0:Rt.C2cWithdrawInfoArray;Array.isArray(Wt)&&Ki.push(...Wt)}),Ki}(Ui));else{const As=at.message.messageFactory.createMessage(Object.assign(Object.assign({},Po),{conversationType:"C2C",flow:"in"})),{elements:pi}=Po;As.setElement(pi),kt.push(As)}}),{unreadMessageList:kt,revokedMessageList:Yt}}(DA.MsgList,B);return{syncFlag:DA?.SyncFlag,unreadMessageList:Ee,revokedMessageList:Ke,unreadCountList:GA,overflowUnreadCountList:VA,cookie:DA?.Cookie,groupTipList:ee}}catch(DA){console.warn(DA)}})}var Al,kg;(function(p){p[p.START_SYNC=0]="START_SYNC",p[p.SYNCING=1]="SYNCING",p[p.SYNC_COMPLETE=2]="SYNC_COMPLETE"})(Al||(Al={})),function(p){p[p.LOGIN_SUCCESS=0]="LOGIN_SUCCESS",p[p.NEW_MESSAGE_RECEIVED=1]="NEW_MESSAGE_RECEIVED"}(kg||(kg={}));var no=new class{constructor(){this.name="UnreadMessageSynchronizer",this._unreadDBMessageMap=new Map,this._cookie="",this._localConversationIDListBeforeDisconnect=[]}install(p){this._core=p;const{constants:B}=p;p.helper.registerWorkflowStep(B.WORKFLOW_NAME.SYNC_SERVER_INFO_AFTER_RE_ONLINE,B.WORKFLOW_STEP.UNREAD_MESSAGE_SYNC,this._syncUnreadDBMessageAfterReOnline,this),p.helper.registerWorkflowStep(B.WORKFLOW_NAME.RECEIVE_C2C_NEW_MESSAGE,B.WORKFLOW_STEP.UNREAD_MESSAGE_SYNC,this._syncUnreadDBMessageAfterNewMessageReceived,this),p.helper.registerWorkflowStep(B.WORKFLOW_NAME.SYNC_SERVER_INFO_AFTER_LOGIN,B.WORKFLOW_STEP.UNREAD_MESSAGE_SYNC,this._syncUnreadDBMessageAfterLogin,this),p.notificationCenter.subscribeInnerEvent(p.InnerEvent.SOCKET_DISCONNECTED,this._handleDisconnect,this),p.notificationCenter.subscribeInnerEvent(p.InnerEvent.LOGOUT,this._reset,this),p.notificationCenter.subscribeInnerEvent(p.InnerEvent.DESTROY,this._dispose,this)}_syncUnreadMessage(p){return pA(this,void 0,void 0,function*(){const{isAfterReOnline:B=!1,isAfterNewMessageReceived:v=!1,isAfterLogin:N=!1}=p||{};let O=Al.START_SYNC;const z=[],X=[],nA=[],DA=[];for(;this._canContinueSync({cookie:this._cookie,syncFlag:O});){const GA=yield this._fetchUnreadDBMessage({cookie:this._cookie,syncFlag:O,syncTriggerEvent:v?kg.NEW_MESSAGE_RECEIVED:kg.LOGIN_SUCCESS});if(!GA)break;const{unreadMessageList:VA=[],revokedMessageList:ee=[],overflowUnreadCountList:Ee,unreadCountList:Ke,groupTipList:ot}=GA;if(this._cookie=GA?.cookie||"",O=GA?.syncFlag,this._parseAndSaveUnreadMessageList(VA),nA.push(...ee),this._updateConversationUnreadOptions({unreadCountList:Ke,overflowUnreadCountList:Ee,conversationUpdateFieldList:z}),Array.isArray(ot)&&X.push(...ot),B){const{messages:at}=this._handleNewMessageList(VA);DA.push(...at)}}return B?{conversationUpdateFieldList:z,revokedMessageList:nA,unreadMessageMap:this._unreadDBMessageMap,groupTipList:X,messages:DA,isUnreadC2CMessage:!0}:{conversationUpdateFieldList:z,isInstantMessage:!N,isUnreadC2CMessage:!0,revokedMessageList:nA,unreadMessageMap:this._unreadDBMessageMap,groupTipList:X}})}_syncUnreadDBMessageAfterLogin(){return pA(this,void 0,void 0,function*(){return this._cookie="",this._syncUnreadMessage({isAfterLogin:!0})})}_syncUnreadDBMessageAfterNewMessageReceived(p){return pA(this,void 0,void 0,function*(){if(p.data.Flag===1)return this._syncUnreadMessage({isAfterNewMessageReceived:!0})})}_updateConversationUnreadOptions(p){const{unreadCountList:B,overflowUnreadCountList:v,conversationUpdateFieldList:N}=p,{constants:{OuterConstant:{CONV_C2C:O,CONV_SYSTEM:z}}}=this._core;B?.forEach(X=>{const{From_Account:nA,UnreadCount:DA}=X;if(nA!==z){const GA=N.find(({conversationID:VA})=>VA===`${O}${nA}`);GA?GA.unreadCount=DA:N.push({conversationID:`${O}${nA}`,unreadCount:DA,type:O})}}),v?.forEach(X=>{const{From_Account:nA,LastMsgTime:DA}=X;nA!==z&&(N.find(({conversationID:GA})=>GA===`${O}${nA}`)||N.push({conversationID:`${O}${nA}`,type:O,lastMsgTime:DA}))})}_syncUnreadDBMessageAfterReOnline(){return pA(this,void 0,void 0,function*(){return this._syncUnreadMessage({isAfterReOnline:!0})})}_updateMessageProfile(p){var B;const{messageDataHandler:v}=this._core.message||{},N=(B=this._core.store.get("login"))===null||B===void 0?void 0:B.userId,{from:O,nick:z,avatar:X,conversationID:nA=""}=p;if(O!==N){const DA=v.getLatestMsgSentByPeer(nA);if(DA){const{nick:GA,avatar:VA}=DA;z&&X?z===GA&&X===VA||v.updateNickAndAvatarOfSentMessage({conversationID:nA,latestNick:z,latestAvatar:X,isSentByMe:!1}):(p.nick=GA,p.avatar=VA)}}else{const DA=v.getLatestMsgSentByMe(nA);!DA||z===DA.nick&&X===DA.avatar||v.updateNickAndAvatarOfSentMessage({conversationID:nA,latestNick:z,latestAvatar:X,isSentByMe:!0})}}_handleNewMessageList(p){const{messageDataHandler:B}=this._core.message||{},v=new Map,N=[];return p.forEach(O=>{this._updateMessageProfile(O);let z=O.isModified===1;if(B.isMessageSentByCurrentInstance(O)?O.isModified=z:z=!1,O.isOnlineMessage())O._onlineOnlyFlag=!0,B.isMessageSentByCurrentInstance(O)||N.push(O);else if(this._shouldStoreUnreadMessage(O)){if(B.storeConversationMessage(O)){const{conversationID:X,conversationType:nA,conversationSubType:DA,flow:GA,_isExcludedFromUnreadCount:VA,_isExcludedFromLastMessage:ee}=O,Ee=ee?"":O;v.has(X)?(v.get(X).lastMessage=Ee,GA==="in"&&(VA||v.get(X).unreadCount++)):v.set(X,{conversationID:X,type:nA,subType:DA,unreadCount:VA||GA!=="in"?0:1,lastMessage:Ee})}B.isMessageSentByCurrentInstance(O)&&!z||N.push(O)}}),{messages:N,conversationOptions:v}}_shouldStoreUnreadMessage(p){var B;const{conversationID:v}=p,{message:N,appStore:O,utils:{isEmpty:z}}=this._core||{},X=Array.from(((B=O.conversationStore.getConversationMap())===null||B===void 0?void 0:B.keys())||[]),nA=this._getLocalLastMessageTime(v);return!N.messageDataHandler.isInMessageList(p)&&X.includes(v)&&this._localConversationIDListBeforeDisconnect.includes(v)&&!z(nA)}_fetchUnreadDBMessage(p){return pA(this,void 0,void 0,function*(){const{ssoLog:B,utils:{safeStringify:v}}=this._core;try{B.debug("_fetchUnreadDBMessage",`unread-message-synchronizer._fetchUnreadDBMessage options:${v(p)}`);const O=yield rh(p,this._core);if(!O)return null;const{syncFlag:z,unreadMessageList:X,revokedMessageList:nA,cookie:DA,unreadCountList:GA,overflowUnreadCountList:VA,groupTipList:ee}=O;return this._parseAndSaveUnreadMessageList(X),{syncFlag:z,cookie:DA,unreadMessageList:X,revokedMessageList:nA,unreadCountList:GA,overflowUnreadCountList:VA,groupTipList:ee}}catch(N){console.log(N)}})}_canContinueSync({cookie:p,syncFlag:B}){var v;return B===Al.START_SYNC||B===Al.SYNCING&&!(!((v=this._core)===null||v===void 0)&&v.helper.isEmpty(p))}_parseAndSaveUnreadMessageList(p){p.forEach(B=>{const{ID:v}=B;this._unreadDBMessageMap.set(v,B)})}_handleDisconnect(){var p;const{appStore:B}=this._core;this._localConversationIDListBeforeDisconnect=Array.from(((p=B.conversationStore.getConversationMap())===null||p===void 0?void 0:p.keys())||[])}_getLocalLastMessageTime(p){const{message:B}=this._core,v=B.messageDataHandler.getLocalMessageList(p),N=v[v.length-1];return N?.time}_reset(){this._cookie="",this._unreadDBMessageMap.clear()}_dispose(){var p,B;(p=this._core)===null||p===void 0||p.notificationCenter.unSubscribeInnerEvent(this._core.InnerEvent.LOGOUT,this._reset,this),(B=this._core)===null||B===void 0||B.notificationCenter.unSubscribeInnerEvent(this._core.InnerEvent.DESTROY,this._dispose,this),this._reset()}},IC=new class{init(p){var B;this._core=p,this._visibilityChangeHandler=this._handleVisibilityChange.bind(this),p.notificationCenter.subscribeInnerEvent(p.InnerEvent.DESTROY,this._dispose,this),document?.addEventListener("visibilitychange",this._visibilityChangeHandler),(B=this._core)===null||B===void 0||B.store.set("activityMonitor",{isActive:!0})}_handleVisibilityChange(){var p,B;const v=document?.visibilityState==="visible";(p=this._core)===null||p===void 0||p.store.set("activityMonitor",{isActive:v}),(B=this._core)===null||B===void 0||B.notificationCenter.emitInnerEvent("activityStatusChange",{isActive:v})}_reset(){var p;(p=this._core)===null||p===void 0||p.store.clear("activityMonitor")}_dispose(){document?.removeEventListener("visibilitychange",this._visibilityChangeHandler);const{notificationCenter:p,InnerEvent:B}=this._core;p.unSubscribeInnerEvent(B.DESTROY,this._dispose,this),this._reset()}},vE=new class{init(p){var B;this._core=p,this._bindAppActivityEvent(),p.notificationCenter.subscribeInnerEvent(p.InnerEvent.DESTROY,this._dispose,this),(B=this._core)===null||B===void 0||B.store.set("activityMonitor",{isActive:!0})}_bindAppActivityEvent(){var p,B,v,N,O;const{MINI_APP_NAMESPACE:z,IN_TT_MINI_GAME:X,IN_WX_MINI_GAME:nA}=((p=this._core)===null||p===void 0?void 0:p.utils)||{};X||nA?((B=z?.onShow)===null||B===void 0||B.call(z,()=>{var DA,GA;(DA=this._core)===null||DA===void 0||DA.store.set("activityMonitor",{isActive:!0}),(GA=this._core)===null||GA===void 0||GA.notificationCenter.emitInnerEvent("activityStatusChange",{isActive:!0})}),(v=z?.onHide)===null||v===void 0||v.call(z,()=>{var DA,GA;(DA=this._core)===null||DA===void 0||DA.store.set("activityMonitor",{isActive:!1}),(GA=this._core)===null||GA===void 0||GA.notificationCenter.emitInnerEvent("activityStatusChange",{isActive:!1})})):((N=z?.onAppShow)===null||N===void 0||N.call(z,()=>{var DA,GA;(DA=this._core)===null||DA===void 0||DA.store.set("activityMonitor",{isActive:!0}),(GA=this._core)===null||GA===void 0||GA.notificationCenter.emitInnerEvent("activityStatusChange",{isActive:!0})}),(O=z?.onAppHide)===null||O===void 0||O.call(z,()=>{var DA,GA;(DA=this._core)===null||DA===void 0||DA.store.set("activityMonitor",{isActive:!1}),(GA=this._core)===null||GA===void 0||GA.notificationCenter.emitInnerEvent("activityStatusChange",{isActive:!1})}))}_reset(){var p;(p=this._core)===null||p===void 0||p.store.clear("activityMonitor")}_dispose(){const{notificationCenter:p,InnerEvent:B}=this._core;p.unSubscribeInnerEvent(B.DESTROY,this._dispose,this),this._reset()}},RE=new class{init(p){const{IN_MINI_APP:B,IN_WX_MINI_PLUGIN:v}=p.helper;v||(B?vE.init(p):IC.init(p))}};const Cd="none",wE="online";var el=new class{init(p){this._core=p,this._activateNetworkMonitoring(),p.notificationCenter.subscribeInnerEvent(p.InnerEvent.DESTROY,this._dispose,this)}_activateNetworkMonitoring(){return pA(this,void 0,void 0,function*(){navigator.onLine?this._onOnline():this._onOffline(),this._onOnlineCallback=this._onOnline.bind(this),this._onOfflineCallback=this._onOffline.bind(this),window.addEventListener("online",this._onOnlineCallback),window.addEventListener("offline",this._onOfflineCallback)})}_deactivateNetworkMonitoring(){this._onOnlineCallback!==null&&(window.removeEventListener("online",this._onOnlineCallback),this._onOnlineCallback=null),this._onOfflineCallback!==null&&(window.removeEventListener("offline",this._onOfflineCallback),this._onOfflineCallback=null)}_onNetworkStatusChange(p){var B,v;const{isConnected:N,networkType:O}=p;(B=this._core)===null||B===void 0||B.store.set("netWorkMonitor",{isNetworkOnline:N,networkType:O}),(v=this._core)===null||v===void 0||v.notificationCenter.emitInnerEvent("networkStatusChange",{isNetworkOnline:N,networkType:O})}_onOnline(){this._onNetworkStatusChange({isConnected:!0,networkType:wE})}_onOffline(){this._onNetworkStatusChange({isConnected:!1,networkType:Cd})}_reset(){var p;this._deactivateNetworkMonitoring(),(p=this._core)===null||p===void 0||p.store.clear("netWorkMonitor")}_dispose(){var p,B;(p=this._core)===null||p===void 0||p.notificationCenter.unSubscribeInnerEvent((B=this._core)===null||B===void 0?void 0:B.InnerEvent.DESTROY,this._dispose,this),this._reset()}},EI=new class{init(p){this._core=p,this._activateNetworkMonitoring(),p.notificationCenter.subscribeInnerEvent(p.InnerEvent.DESTROY,this._dispose,this)}_activateNetworkMonitoring(){return pA(this,void 0,void 0,function*(){try{const{utils:{MINI_APP_NAMESPACE:p}}=this._core;this._mpNetworkStatusCallback=this._onNetworkStatusChange.bind(this),p.onNetworkStatusChange(this._onNetworkStatusChange.bind(this))}catch(p){console.error(p)}})}_deactivateNetworkMonitoring(){if(this._mpNetworkStatusCallback!==null){const{utils:{MINI_APP_NAMESPACE:p}}=this._core;p.offNetworkStatusChange&&p.offNetworkStatusChange(this._mpNetworkStatusCallback),this._mpNetworkStatusCallback=null}}_onNetworkStatusChange(p){var B,v;const{isConnected:N,networkType:O}=p;(B=this._core)===null||B===void 0||B.store.set("netWorkMonitor",{isNetworkOnline:N,networkType:O}),(v=this._core)===null||v===void 0||v.notificationCenter.emitInnerEvent("networkStatusChange",{isNetworkOnline:N,networkType:O})}_reset(){var p;this._deactivateNetworkMonitoring(),(p=this._core)===null||p===void 0||p.store.clear("netWorkMonitor")}_dispose(){var p,B;(p=this._core)===null||p===void 0||p.notificationCenter.unSubscribeInnerEvent((B=this._core)===null||B===void 0?void 0:B.InnerEvent.DESTROY,this._dispose,this),this._reset()}},Gu=new class{init(p){const{IN_MINI_APP:B}=p.utils;B?EI.init(p):el.init(p)}},bu=new class{constructor(){this.name="SystemStateMonitor"}install(p){RE.init(p),Gu.init(p)}};const uC=new Set(["tui_room_svr.*","callkit_records_svr.*","room_engine_srv.*","room_engine_http_srv.*","room_engine_mic.*","live_engine_srv.*","live_engine_http_srv.*","live_engine_pk.*","trtc_ai_service.*","call_engine_srv.*"]),vr="tui_room_svr.*";var cg=new class{constructor(){this.name="BusinessCommandTransfer",this._transferredCommands=uC}install(p){this._core=p;const{notificationCenter:B,InnerEvent:v,helper:N}=p;B.subscribeInnerEvent(v.CLOUD_CONFIG_UPDATE,this._onCloudConfigUpdate,this),B.subscribeInnerEvent(v.LOGOUT,this._reset,this),B.subscribeInnerEvent(v.DESTROY,this._dispose,this),B.subscribeInnerEvent("im_open_push.msg_push",B.InnerEventSubType.BUSINESS_COMMAND,this._onServerPushBusinessCommand,this),N.registerExperimentalAPI("sendTRTCCustomData",this,"transferBusinessCommand"),N.registerExperimentalAPI("sendRoomCustomData",this,"transferBusinessCommand")}transferBusinessCommand(p){return pA(this,void 0,void 0,function*(){const B="transferBusinessCommand";try{const{serviceCommand:v=vr}=p||{};if(!this._isValidTransferredCommand(v))throw new this._core.helper.ChatError({code:2995,functionName:B});return{code:0,data:(yield function(O,z){return pA(this,void 0,void 0,function*(){const{helper:X,channel:nA}=z,{serviceCommand:DA=vr,data:GA}=O||{};let VA={};try{VA=typeof GA=="string"?JSON.parse(GA):GA}catch(Ke){console.warn(Ke)}const ee=X.generateProtocolData({servcmd:DA,data:VA}),Ee=`${ee.head.seq}${DA}`;return nA.sendPacket(ee,{requestId:Ee,shouldRejectOnError:!1})})}(p,this._core))||{}}}catch(v){throw console.warn(v),new this._core.helper.ChatError({code:v?.errorCode,message:v?.errorInfo,data:{},functionName:B})}})}_onCloudConfigUpdate(p={}){try{if(typeof p.rtc_cmd!="string")return;const B=JSON.parse(p.rtc_cmd);Array.isArray(B)&&(this._transferredCommands=new Set([...this._transferredCommands,...B]))}catch(B){console.log(B)}}_isValidTransferredCommand(p=""){const B=`${p?.split(".")[0]}.*`;return this._transferredCommands.has(B)}_onServerPushBusinessCommand(p){const{OuterEvent:B,notificationCenter:v}=this._core,{MsgContent:N}=p||{},{ROOM_CUSTOM_DATA_RECEIVED:O}=B;v.emitOuterEvent(O,{name:O,data:N})}_reset(){this._transferredCommands=uC}_dispose(){const{notificationCenter:p,InnerEvent:B}=this._core;this._reset(),p.unSubscribeInnerEvent(B.CLOUD_CONFIG_UPDATE,this._onCloudConfigUpdate,this),p.unSubscribeInnerEvent(B.LOGOUT,this._reset,this),p.unSubscribeInnerEvent(B.DESTROY,this._dispose,this),p.unSubscribeInnerEvent("im_open_push.msg_push",p.InnerEventSubType.BUSINESS_COMMAND,this._onServerPushBusinessCommand,this)}};const Rc=new class{init(p){this.core=p}};function ku(p){return pA(this,void 0,void 0,function*(){var B;const{message:v,user:N,appStore:O,constants:{OuterConstant:z}}=Rc.core,X=O.conversationStore.getConversationMap();if(X.has(p)){const DA=(B=X.get(p))===null||B===void 0?void 0:B.userProfile;if(DA&&p.startsWith(z.CONV_C2C)){const{avatar:GA,nick:VA}=DA;Rc.core.message.messageDataHandler.updateNickAndAvatarOfSentMessage({conversationID:p,latestAvatar:GA,latestNick:VA,isSentByMe:!1})}}const{data:nA}=(yield N.userProfile.getMyProfile())||{};if(nA){const{avatar:DA,nick:GA}=nA;v.messageDataHandler.updateNickAndAvatarOfSentMessage({conversationID:p,latestAvatar:DA,latestNick:GA,isSentByMe:!0})}})}function _l(p){return pA(this,void 0,void 0,function*(){const B=p.map(v=>v.revoker);try{const v=yield function(N){return pA(this,void 0,void 0,function*(){var O,z;const X=yield(O=Rc.core.user.userProfile)===null||O===void 0?void 0:O.getUserProfile({userIDList:N});return X?.data?(z=X.data)===null||z===void 0?void 0:z.reduce((nA,{userID:DA,nick:GA,avatar:VA})=>(nA[DA]={nick:GA||"",avatar:VA||""},nA),{}):null})}(B);v&&p.forEach(N=>{const{revoker:O}=N;v[O]&&(N.revokerInfo.nick=v[O].nick||"",N.revokerInfo.avatar=v[O].avatar||"",N.revokerInfo.userID=O)})}catch(v){console.debug(v)}})}const hd=1,$r=2,dI=20,_n=2500,EC=1,tl=300;function Bd(p){return pA(this,void 0,void 0,function*(){var B,v;const{appStore:N,utils:{isEmpty:O},common:{getCurrentUserID:z},notificationCenter:X,OuterEvent:nA,OuterConstant:{CONV_C2C:DA}}=Rc.core,{messageList:GA,conversationID:VA}=p,ee=N.conversationStore.getConversationMap();let Ee=(B=ee.get(VA))===null||B===void 0?void 0:B.peerReadTime;if(!Ee){const ot=VA.replace(DA,""),at=yield function(kt){return pA(this,void 0,void 0,function*(){const Yt={To_Account:kt};return Rc.core.common.buildAndSendPacket({servcmd:"openim.get_peer_read_time",data:Yt})})}([ot]);if(at){const{ReadTime:kt}=at;Ee=kt?.[0],ee.has(VA)&&(ee.get(VA).peerReadTime=Ee)}}if(ee.has(VA)){const ot=(v=ee.get(VA))===null||v===void 0?void 0:v.lastMessage;O(ot)||ot.fromAccount===z()&&ot.lastTime<=Ee&&!ot.isPeerRead&&(ot.isPeerRead=!0,N.conversationStore.updateConversation(VA,{lastMessage:ot}))}const Ke=[];GA.forEach(ot=>{ot.time<=Ee&&!ot.isPeerRead&&ot.flow==="out"&&(ot.isPeerRead=!0,Ke.push(ot))}),Ke.length>0&&X.emitOuterEvent(nA.MESSAGE_READ_BY_PEER,{name:nA.MESSAGE_READ_BY_PEER,data:Ke})})}var CI=new class{init(p){this._core=p,p.helper.registerApi({apiName:"getMessageList",context:this}),p.helper.registerApi({apiName:"getMessageListHopping",context:this}),p.helper.registerApi({apiName:"clearHistoryMessage",context:this})}getMessageList(p){return pA(this,void 0,void 0,function*(){try{const{message:B,OuterConstant:{Direction:v,CONV_C2C:N,CONV_GROUP:O},InnerEvent:{HISTORY_MESSAGE_FETCHED:z},notificationCenter:X}=this._core,{conversationID:nA,nextReqMessageID:DA}=p,GA=dI;if(nA==="@TIM#SYSTEM")return{code:0,data:{messageList:[],isCompleted:!1,nextMessageSeq:""}};const VA=this._getAvailableLocalMessagesCount({conversationID:nA,nextReqMessageID:DA});if(this._needFetchHistoryMessageList({conversationID:nA,availableLocalMessagesCount:VA,targetCount:GA})){let ee=null;if(nA.startsWith(O)?ee=yield B.messageHistory.getGroupRoamingMessagesByAnchor({conversationID:nA,sequence:Number(DA),count:GA,direction:v.FORWARD,shouldMarkCompleted:!0}):nA.startsWith(N)&&(ee=yield B.messageHistory.getC2CRoamingMessagesByAnchor({conversationID:nA,messageID:DA,count:GA,direction:v.FORWARD,shouldMarkCompleted:!0})),ee){const{nextReqMessageIDFromServer:Ee,hasNoMoreHistoryMessage:Ke,messageList:ot}=ee,at=B.messageDataHandler.prependLocalMessageList({messageList:ot,conversationID:nA});(function(zi){const{appStore:ui,message:Po,OuterConstant:As}=Rc.core,pi=ui.conversationStore.getConversation(zi),Ki=Po.messageDataHandler.getLocalMessageList(zi);if(!pi||Ki.length===0||zi===As.CONV_SYSTEM)return;const Ws=[];for(let Rt=0;RtFA.isRevoked).length;we=Ws.length-pi.unreadCount-Rt}else we=Ws.length-pi.unreadCount;for(let Rt=0;Rtzi.isRevoked);yield _l(Yt),X.emitInnerEvent(z,at);const Ui={nextReqMessageID:Ke?"":String(Ee),messageList:kt,isCompleted:Ke},ao=kt.map(zi=>zi.sequence);return{code:0,data:Ui,successLog:{message:`conversationID: ${nA} nextReqMessageID: ${DA} availableLocalMessagesCount: ${VA} sequenceList: ${JSON.stringify(ao)}`}}}return{code:0,data:{messageList:[],isCompleted:!1,nextReqMessageID:""}}}return{code:0,data:yield this._getMessageListFromMemory({conversationID:nA,nextReqMessageID:DA,count:GA}),successLog:{message:`conversationID: ${nA} nextReqMessageID: ${DA} availableLocalMessagesCount: ${VA}}`}}}catch(B){const{code:v,message:N}=B||{};throw new this._core.helper.ChatError({code:v,message:N,moreMessage:`options: ${this._core.utils.safeStringify(p)}`})}})}getMessageListHopping(p){return pA(this,void 0,void 0,function*(){var B,v;const{OuterConstant:{Direction:N,CONV_C2C:O,CONV_GROUP:z},utils:{safeStringify:X}}=this._core,{conversationID:nA,sequence:DA,time:GA,direction:VA=N.FORWARD}=p,{utils:{isEmpty:ee},message:Ee,notificationCenter:Ke,InnerEvent:{HISTORY_MESSAGE_FETCHED:ot}}=this._core;if(![N.BACKWARD,N.FORWARD].includes(VA))throw new this._core.helper.ChatError({message:"direction must be 0 or 1",moreMessage:`options: ${X(p)}`});let{count:at=dI}=p;at=at>dI?dI:at;let kt=null;if(nA.startsWith(z)){if(kt=yield Ee.messageHistory.getGroupRoamingMessagesByAnchor({conversationID:nA,sequence:DA,count:at,direction:VA}),kt){const{nextReqMessageIDFromServer:Yt,hasNoMoreHistoryMessage:Ui,messageList:ao,invisibleSequenceList:zi}=kt;if(this._core.message.messageDataHandler.storeSparseMessageList(ao),Ke.emitInnerEvent(ot,ao),VA===N.FORWARD){const ui=Ui&&Yt<1;return{code:0,data:{messageList:ao,isCompleted:ui,nextMessageSeq:ui?"":Yt}}}if(VA===N.BACKWARD){if(ee(ao)&&ee(zi))return{code:0,data:{messageList:[],isCompleted:!0,nextMessageSeq:""}};const ui=((B=ao?.[ao.length-1])===null||B===void 0?void 0:B.sequence)||0,Po=((v=zi?.[zi.length-1])===null||v===void 0?void 0:v.sequence)||0;return{code:0,data:{messageList:ao.filter(As=>As.sequence>=DA),isCompleted:!Ui,nextMessageSeq:Ui?Math.max(ui,Po)+1:""}}}return{code:0,data:kt}}}else if(nA.startsWith(O)&&(kt=yield Ee.messageHistory.getC2CRoamingMessagesByAnchor({conversationID:nA,count:at+1,time:GA,direction:VA}),kt)){const{messageList:Yt,lastMessageTime:Ui,hasNoMoreHistoryMessage:ao}=kt;return Ke.emitInnerEvent(ot,Yt),ao||(VA===N.FORWARD?Yt.shift():Yt.pop()),Ee.messageDataHandler.storeSparseMessageList(Yt),yield Bd({messageList:Yt,conversationID:nA}),{code:0,data:{messageList:Yt,isCompleted:ao,nextMessageTime:ao?"":Ui}}}})}clearHistoryMessage(p){return pA(this,void 0,void 0,function*(){var B;const{appStore:v,common:{ChatError:N,getCurrentUserID:O},OuterConstant:{CONV_C2C:z,CONV_GROUP:X},apiMap:nA,message:DA}=this._core,GA=v.conversationStore.getConversation(p);if(!GA)throw new N({code:_n});const VA={fromAccount:O()},{type:ee}=GA;ee===z?(VA.type=hd,VA.toAccount=p.replace(z,"")):ee===X&&(VA.type=$r,VA.toGroupID=p.replace(X,""));try{return yield(B=nA?.setMessageRead)===null||B===void 0?void 0:B.call(nA,{conversationID:p}),(yield function(Ke){return pA(this,void 0,void 0,function*(){const{fromAccount:ot,type:at,toAccount:kt,toGroupID:Yt}=Ke,Ui={From_Account:ot,Type:at,To_Account:kt,ToGroupid:Yt};return Rc.core.common.buildAndSendPacket({servcmd:"recentcontact.clear_msg",data:Ui})})}(VA))&&(DA.messageDataHandler.deleteConversationMessageList(p),DA.messageHistory.completedHistoryConversations.delete(p),DA.messageHistory.clearHistoryMessageListFetchAnchors(p),this._updateConversationLastMessage(p)),{code:0,data:{conversationID:p},successLog:{message:`convID:${p}`}}}catch(Ee){const{errorCode:Ke}=Ee;throw new this._core.helper.ChatError({functionName:"clearHistoryMessage",code:Ke,moreMessage:`convID:${p}`})}})}_updateConversationLastMessage(p){const{appStore:B}=this._core;B.conversationStore.updateConversation(p,{lastMessage:this._generateLastMessage()},{needSort:!0})}_getAvailableLocalMessagesCount({conversationID:p,nextReqMessageID:B}){const{OuterConstant:{CONV_C2C:v,CONV_GROUP:N}}=this._core,O=this._core.message.messageDataHandler.getLocalMessageList(p),{length:z}=O;if(!B)return z;let X=-1;return p?.startsWith(v)?X=O.findIndex(nA=>nA.ID===B):p?.startsWith(N)&&(X=O.findIndex(nA=>B.includes("-")?nA.ID===B:String(nA.sequence)===B)),X===-1?0:X}_needFetchHistoryMessageList({conversationID:p,availableLocalMessagesCount:B,targetCount:v}){const{message:N}=this._core;return BB.startsWith(O)?Ee.ID===v:String(Ee.sequence)===v),VA=ee>N?ee-N:0,DA=ee):VA=nA>N?nA-N:0,GA.messageList=X.slice(VA,ee),GA.isCompleted=DA<=N&&z.messageHistory.completedHistoryConversations.has(B),GA.isCompleted?GA.nextReqMessageID="":GA.nextReqMessageID=this._generateNextReqMessageID({conversationID:B,targetIndex:VA}),B.startsWith(O)&&(yield ku(B),yield Bd({messageList:GA.messageList,conversationID:B})),GA})}_generateNextReqMessageID({conversationID:p,targetIndex:B}){const v=this._core.message.messageDataHandler.getLocalMessageList(p);return p.startsWith("C2C")?v[B].ID:String(v[B].sequence)}_generateLastMessage(){return{lastTime:0,lastSequence:0,fromAccount:"",messageForShow:"",payload:null,type:"",isRevoked:!1,cloudCustomData:"",onlineOnlyFlag:!1,nick:"",nameCard:"",version:0,isPeerRead:!1,revoker:null}}},Oa=new class{constructor(){this._lastMessageSequenceMapOnDisconnect=new Map,this._lastMessageTimeMapOnDisconnect=new Map}init(p){this._core=p;const{common:{workflowManager:B},constants:{WORKFLOW_NAME:v,WORKFLOW_STEP:N,InnerEvent:O}}=p;B.registerWorkflowStep(v.SYNC_SERVER_INFO_AFTER_RE_ONLINE,N.HISTORY_MESSAGE_RECOVER,this._syncGroupOfflineMessage,this),B.registerWorkflowStep(v.SYNC_SERVER_INFO_AFTER_RE_ONLINE,N.C2C_HISTORY_MESSAGE_RECOVER,this._syncC2COfflineMessage,this),p.notificationCenter.subscribeInnerEvent(O.SOCKET_DISCONNECTED,this._updateLastMessageSequenceMapOnDisconnect,this)}_syncGroupOfflineMessage(p){const{conversationList:B}=p?.result||{},{OuterConstant:v,utils:{isArray:N}}=this._core;if(N(B)){const O=B.filter(z=>z.type===v.CONV_GROUP&&z.groupProfile.type!==v.GRP_AVCHATROOM);return this._recoverGroupHistoryMessage(O)}}_recoverGroupHistoryMessage(p){return pA(this,void 0,void 0,function*(){const{OuterConstant:B}=this._core,v=[],N=[];return yield Promise.all(p?.map(O=>pA(this,void 0,void 0,function*(){const{groupProfile:{groupID:z}={},lastMessage:{lastSequence:X}={}}=O,nA=`${B.CONV_GROUP}${z}`;let DA=this._getLocalLastMessageSequence(nA);this._shouldRecoverHistory({localLastMessageSequence:DA,serverLastMessageSequence:X})&&(yield this._recoverGroupHistoryForConversation({conversationID:nA,localLastMessageSequence:DA,serverLastMessageSequence:X,groupTipList:N})),v.push(nA.replace(B.CONV_GROUP,""))}))),{recoverRevokeNoticeGroupIDList:v,groupTipList:N}})}_recoverGroupHistoryForConversation(p){return pA(this,arguments,void 0,function*({conversationID:B,localLastMessageSequence:v,serverLastMessageSequence:N,groupTipList:O}){try{const{utils:{isArray:z,isObject:X,isEmpty:nA},OuterEvent:DA,OuterConstant:GA,notificationCenter:VA,message:ee,appStore:Ee,common:{getMessagePreviewText:Ke,buildLastMessage:ot}}=this._core,at=N-v,kt=Math.min(20,at),Yt={},Ui=yield ee.messageHistory.getGroupRoamingMessagesByAnchor({conversationID:B,sequence:v+kt,direction:GA.Direction.FORWARD,count:kt}),{nextReqMessageIDFromServer:ao,hasNoMoreHistoryMessage:zi,messageList:ui,serverGroupTipList:Po}=Ui;z(Po)&&O.push(...Po);const As=zi&&ao<0,pi=[];if(z(ui)&&(ui.forEach(Ki=>{ee.messageReceiver.groupMessageReceiver.updateMessageProfile(Ki),Ki.from===GA.CONV_SYSTEM&&(Ki.isSystemMessage=!1),ee.messageDataHandler.storeConversationMessage(Ki)&&!nA(Ki.payload)&&(pi.push(Ki),Ki._isExcludedFromLastMessage||(Yt.lastMessage=ot(Ki)))}),pi.length>0&&VA.emitOuterEvent(DA.MESSAGE_RECEIVED,{name:DA.MESSAGE_RECEIVED,data:pi})),!As&&ui.length>0){const Ki=ui[ui.length-1].sequence;yield this._recoverGroupHistoryForConversation({conversationID:B,localLastMessageSequence:Ki,serverLastMessageSequence:N,groupTipList:O})}X(Yt.lastMessage)&&(Yt.lastMessage.messageForShow=Ke(Yt.lastMessage.type,Yt.lastMessage.payload),Ee.conversationStore.updateConversation(B,Yt))}catch(z){this._core.ssoLog.error("_recoverGroupHistoryForConversation",`Recovery failed for conversation:${B}`,{error:z})}})}_updateLastMessageSequenceMapOnDisconnect(){const{message:p}=this._core,B=p.messageDataHandler.getContinuousMessagesByConversation();for(const[v,N]of B){const O=Array.from(N.values());if(O?.length>0){const z=O[O.length-1];v.startsWith("C2C")?this._lastMessageTimeMapOnDisconnect.set(v,z.time):v.startsWith("GROUP")&&this._lastMessageSequenceMapOnDisconnect.set(v,z.sequence)}}}_getLocalLastMessageSequence(p){const{message:B}=this._core;if(this._lastMessageSequenceMapOnDisconnect.has(p))return this._lastMessageSequenceMapOnDisconnect.get(p);const v=B.messageDataHandler.getLocalMessageList(p),N=v[v.length-1];return N?.sequence}_shouldRecoverHistory(p){const{localLastMessageSequence:B,serverLastMessageSequence:v}=p;if(typeof B!="number"||typeof v!="number")return!1;const N=v-B;return v!==0&&B>0&&N>=EC&&N{z.type===v.CONV_C2C&&O.push(z)}),this._recoverC2CHistoryMessage(O)}}_recoverC2CHistoryMessage(p){return pA(this,void 0,void 0,function*(){yield Promise.all(p?.map(B=>pA(this,void 0,void 0,function*(){const{conversationID:v,lastMessage:{lastTime:N}={}}=B,O=this._getLocalLastMessageTime(v);this._shouldRecoverC2CHistory({localLastMessageTime:O,serverLastMessageTime:N})&&(yield this._recoverHistoryForC2CConversation({conversationID:v,localLastMessageTime:O,serverLastMessageTime:N}))})))})}_shouldRecoverC2CHistory(p){const{localLastMessageTime:B,serverLastMessageTime:v}=p,N=v-B;return B>0&&N>=1&&N<=600}_recoverHistoryForC2CConversation(p){return pA(this,void 0,void 0,function*(){var B;const{conversationID:v,localLastMessageTime:N,serverLastMessageTime:O}=p,{utils:{isArray:z,isObject:X,isEmpty:nA,safeStringify:DA},OuterEvent:GA,OuterConstant:VA,notificationCenter:ee,message:Ee,appStore:Ke,common:{getMessagePreviewText:ot,buildLastMessage:at}}=this._core;try{const kt={},Yt=yield Ee.messageHistory.getC2CRoamingMessagesByAnchor({conversationID:v,direction:VA.Direction.BACKWARD,time:N,count:20});if(nA(Yt))return;const{hasNoMoreHistoryMessage:Ui,messageList:ao}=Yt,zi=[];z(ao)&&(ao.forEach(Po=>{Ee.messageDataHandler.storeConversationMessage(Po)&&!nA(Po.payload)&&(zi.push(Po),Po._isExcludedFromLastMessage||(kt.lastMessage=at(Po)))}),zi.length>0&&ee.emitOuterEvent(GA.MESSAGE_RECEIVED,{name:GA.MESSAGE_RECEIVED,data:zi}));const ui=(B=ao[ao.length-1])===null||B===void 0?void 0:B.time;!Ui&&ui>O&&(yield this._recoverHistoryForC2CConversation({conversationID:v,localLastMessageTime:ui,serverLastMessageTime:O})),X(kt.lastMessage)&&(kt.lastMessage.messageForShow=ot(kt.lastMessage.type,kt.lastMessage.payload),Ke.conversationStore.updateConversation(v,kt))}catch(kt){this._core.ssoLog.error("_recoverHistoryForC2CConversation",`Recovery failed for conversation:${v} error: ${DA(kt)}`)}})}_getLocalLastMessageTime(p){const{message:B}=this._core;if(this._lastMessageTimeMapOnDisconnect.has(p))return this._lastMessageTimeMapOnDisconnect.get(p);const v=B.messageDataHandler.getLocalMessageList(p),N=v[v.length-1];return N?.time}reset(){this._lastMessageSequenceMapOnDisconnect.clear(),this._lastMessageTimeMapOnDisconnect.clear()}dispose(){this.reset()}},dC=new class{constructor(){this.name="HistoryMessage"}install(p){this._core=p,Rc.init(p),CI.init(p),Oa.init(p),p.notificationCenter.subscribeInnerEvent(p.InnerEvent.LOGOUT,this._reset,this),p.notificationCenter.subscribeInnerEvent(p.InnerEvent.DESTROY,this.dispose,this)}dispose(){const{notificationCenter:p,InnerEvent:B}=this._core;p.unSubscribeInnerEvent(B.LOGOUT,this._reset,this),p.unSubscribeInnerEvent(B.DESTROY,this.dispose,this),Oa.dispose()}_reset(){Oa.reset()}},Pa=new class{init(p){this.core=p}},ur=new class{constructor(){this._reportedAtomicStoreIDs=new Set}init(p){const{helper:{registerExperimentalAPI:B}}=p;this._core=p,B("reportModalView",this),B("reportTUIFeatureUsage",this),B("reportRoomEngineEvent",this)}reportModalView(p){const{ssoLog:B,utils:{safeStringify:v,isString:N}}=this._core;try{if(!N(p))throw new Error("reportModalView data is not a string");B.createSSOLogData({method:"reportModalView",message:p,eventType:30}).end(!0)}catch(O){B.debug(`reportModalView Report failed: ${v(O)}`)}}reportTUIFeatureUsage(p){const{ssoLog:B,utils:{safeStringify:v,isEmpty:N}}=this._core,{atomicStoreID:O}=p;try{N(O)||this._reportedAtomicStoreIDs.has(O)||(this._core.ssoLog.info("reportTUIFeatureUsage",`atomicStoreID: ${p.atomicStoreID}`,{method:"reportTUIFeatureUsage",eventType:31,code:O}),this._reportedAtomicStoreIDs.add(O))}catch(z){B.debug(`reportTUIFeatureUsage Report failed: ${v(z)}`)}}reportRoomEngineEvent(p){const{utils:{safeStringify:B},ssoLog:v}=this._core;try{v.debug(`reportRoomEngineEvent Report: ${B(p)}`);const{eventId:N,eventCode:O,eventResult:z,eventMessage:X,moreMessage:nA,extensionMessage:DA}=p;v.createSSOLogData({method:DA,code:N,message:X,eventType:30,costTime:O,uiPlatform:z,moreMessage:nA}).end(!0)}catch(N){v.debug(`reportRoomEngineEvent Report failed: ${B(N)}`)}}reset(){this._reportedAtomicStoreIDs.clear()}dispose(){this.reset()}},Qd=new class{constructor(){this.name="DataReport"}install(p){this._core=p;const{notificationCenter:B,InnerEvent:{LOGOUT:v,DESTROY:N}}=p;Pa.init(p),ur.init(p),B.subscribeInnerEvent(v,this._reset,this),B.subscribeInnerEvent(N,this._dispose,this)}_reset(){ur.reset()}_dispose(){const{notificationCenter:p,InnerEvent:{LOGOUT:B,DESTROY:v}}=this._core;p.unSubscribeInnerEvent(B,this._reset,this),p.unSubscribeInnerEvent(v,this._dispose,this),ur.dispose()}};let Lu=Ea.STANDARD,Er=[];Lu=Ea.BASIC,Er=[lC,nh,no,bu,cg,dC,Qd];function wc(p,B){const{operationType:v,memberInfoList:N,operatorInfo:O}=p||{};let z={};if(Rs(N)?Rs(O)||(z=O):v!==sa.JOINED&&v!==sa.KICKED&&v!==sa.ADMIN_SET&&v!==sa.ADMIN_CANCELED||(z=Object.assign({},N[0])),!Rs(z)){const{nick:X="",avatar:nA=""}=z;B.nick=X,B.avatar=nA}}const il=p=>({lastTime:p?.time||p?.lastTime||0,lastSequence:p?.sequence||p?.lastSequence||0,fromAccount:p?.from||p?.fromAccount||"",messageForShow:qI(p?.type,p?.payload),payload:p?.payload||null,type:p?.type||"",isRevoked:p?.isRevoked||!1,cloudCustomData:p?.cloudCustomData||"",onlineOnlyFlag:p?._onlineOnlyFlag||!1,nick:p?.nick||"",nameCard:p?.nameCard||"",version:p?.version||0,isPeerRead:p?.isPeerRead||!1,revoker:p?.revoker||null});var Lg=Object.freeze({__proto__:null,ChatError:rs,WorkflowManager:tn,buildAndSendPacket:Zg,buildLastMessage:il,get builtInPlugins(){return Er},checkBusinessCapabilityBits:jc,deepMerge:Fa,getCurrentUserID:qn,getErrorMessage:Rl,getMessagePreviewText:qI,isC2CConv:p=>l(p)&&p.slice(0,3)===_g.CONV_C2C,isCommunity:da,isGroupConv:p=>l(p)&&p.slice(0,5)===_g.CONV_GROUP,isInternational:Tu,isTopic:Xr,isUnlimitedAVChatRoom:function(){var p;return!!(!((p=ye.store.get("instance"))===null||p===void 0)&&p.unlimitedAVChatRoom)},liteChatInstanceMap:ws,registerInterceptor:Sr,registerValidateConfig:Mc,requireAuth:gs,get sdkEdition(){return Lu},setGroupTipsUserInfo:wc,t:cC,updateGroupAtInfo:(p,B)=>{const{CONV_AT_ME:v,CONV_AT_ALL:N,CONV_AT_ALL_AT_ME:O}=hs;if(function(nA,DA){const{CONV_AT_ME:GA,CONV_AT_ALL:VA,CONV_AT_ALL_AT_ME:ee}=hs,{groupID:Ee,sequence:Ke}=nA;let ot=!1;return da({groupID:Ee})&&DA.forEach(at=>{at.messageSequence===Ke&&(at.atTypeArray.includes(GA)&&nA.groupAtType.includes(VA)&&(at.atTypeArray=[ee]),at.atTypeArray.includes(VA)&&nA.groupAtType.includes(GA)&&(at.atTypeArray=[ee],at.__random=nA.__random,at.__sequence=nA.__sequence),ot=!0)}),ot}(p,B))return;let z=[...p.groupAtType];z.includes(v)&&z.includes(N)&&(z=[O]);const X={from:p.from,groupID:p.groupID,topicID:p.topicID,messageSequence:p.sequence,atTypeArray:z,__random:p.__random,__sequence:p.__sequence};B.push(X)},validateAndExecute:wl,validateParameters:Id});class Oo{constructor(){this._builtInPlugins=new Set,this._externalPlugins=new Set}static getInstance(){return Oo._instance||(Oo._instance=new Oo),Oo._instance}static setInstance(B){Oo._instance=B}installBuiltInPlugin(B){B&&this._installPlugin(B,this._builtInPlugins)}installExternalPlugin(B){B&&this._installPlugin(B,this._externalPlugins)}clear(){this._builtInPlugins=new Set,this._externalPlugins=new Set}_installPlugin(B,v){let N=[];N=h(B)?B:[B];const O=N.findIndex(X=>X?.name==="AVChatRoom"),z=O>-1?N.splice(O,1):[];N.forEach(X=>{this._isPluginInstalled(X.name)||(X&&fe(X.install)?(v.add(X.name),fe(X.getInstalledSubPlugins)?(z?.forEach(nA=>v.add(nA?.name)),X.install(js.getInstance().exposeApiForPlugin(),z)):X.install(js.getInstance().exposeApiForPlugin()),fe(X.handleLoginSuccess)&&this._isLoggedIn()&&X.handleLoginSuccess()):fe(X)?(v.add(X.name),X(js.getInstance().exposeApiForPlugin()),fe(X.handleLoginSuccess)&&this._isLoggedIn()&&X.handleLoginSuccess()):console.warn('A plugin must either be a function or an object with an "install" function.'))})}_isPluginInstalled(B){return this._builtInPlugins.has(B)||this._externalPlugins.has(B)}_isLoggedIn(){var B;return((B=ye.store.get("login"))===null||B===void 0?void 0:B.isLoggedIn)===!0}}var $g=new class{constructor(){this._conversationMap=new Map}getConversationMap(){return this._conversationMap}getConversation(p){return this._conversationMap.get(p)}updateConversation(p,B,v){const{emit:N=!0,needSort:O=!1}=v||{},z=this._conversationMap.get(p);z&&!Rs(B)&&(Object.keys(B).forEach(X=>{z[X]=B[X]}),N&&ye.notificationCenter.emitInnerEvent(Ii.CONVERSATION_UPDATED,{needSort:O}))}deleteConversation(p){this._conversationMap.has(p)&&(this._conversationMap.delete(p),ye.notificationCenter.emitInnerEvent(Ii.CONVERSATION_UPDATED))}},Za=new class{constructor(){this._groupMap=new Map}getGroupMap(){return this._groupMap}getGroup(p){return this._groupMap.get(p)}updateGroup(p,B){const v=this._groupMap.get(p);v&&!Rs(B)&&Object.keys(B).forEach(N=>{v[N]=B[N]})}},Tl=new class{constructor(){this._messagesByConversation=new Map}updateMessage(p,B,v){var N;const{operation:O,updateUnreadCount:z=!0}=v,X=Do(v,["operation","updateUnreadCount"]),nA=[];for(const DA of B){const GA=(N=this._messagesByConversation.get(p))===null||N===void 0?void 0:N.get(DA);if(!GA)return!1;Object.keys(X).forEach(VA=>{GA[VA]=X[VA]}),nA.push(GA)}return this._emitMessageStoreOperationEvent(O,{conversationID:p,messageList:nA,updateUnreadCount:z}),nA}getMessagesByConversation(p){var B;return[...((B=this._messagesByConversation.get(p))===null||B===void 0?void 0:B.values())||[]]}getMessages(){return this._messagesByConversation}_emitMessageStoreOperationEvent(p,B){const{conversationID:v}=B;Xr(v)?ye.notificationCenter.emitInnerEvent(ag[p],B):ye.notificationCenter.emitInnerEvent(p,B)}},Aa=new class{constructor(){this.userProfileMap=new Map,this.friendMap=new Map}getUserProfileMap(){return this.userProfileMap}getFriendMap(){return this.friendMap}getUserProfile(p){return this.userProfileMap.get(p)}getFriend(p){return this.friendMap.get(p)}},ah=Object.freeze({__proto__:null,conversationStore:$g,groupStore:Za,messageStore:Tl,userStore:Aa});class js{static getInstance(){return js._instance||(js._instance=new js),js._instance}static setInstance(B){js._instance=B}constructor(){this._experimentalApiMap={statTUIKeyFeatures:this.statKeyFeatureUsage.bind(this),setApplicationID:this.setApplicationID.bind(this)},this._apiHandlersMap={},this._apiMap={on:ye.notificationCenter.subscribeOuterEvent.bind(ye.notificationCenter),off:ye.notificationCenter.unSubscribeOuterEvent.bind(ye.notificationCenter),destroy:this.destroy.bind(this),callExperimentalAPI:this.callExperimentalAPI.bind(this),use:Oo.getInstance().installExternalPlugin.bind(Oo.getInstance()),registerPlugin:this.registerPlugin.bind(this),setLogLevel:this.setLogLevel.bind(this)}}registerPlugin(B){ye.ssoLog.debug("registerPlugin",B)}statKeyFeatureUsage(B){ye.ssoLog.debug("statTUIKeyFeatures",B)}setLogLevel(B){ye.ssoLog.debug("setLogLevel",B),ye.ssoLog.setLogLevel(B)}setApplicationID(B){ye.store.set("instance",{applicationID:B})}getApiMap(){return this._apiMap}setApiMap(B){this._apiMap=B}registerApi(B){const{common:{timeManager:v},utils:{safeStringify:N}}=ye,{apiName:O,context:z,methodName:X=O,matcher:nA}=B;this._apiHandlersMap[O]||(this._apiHandlersMap[O]=[]),this._apiHandlersMap[O].push({context:z,methodName:X,matcher:nA}),this._apiMap[O]&&this._apiHandlersMap[O].length!==1||(this._apiMap[O]=(...DA)=>{const GA=v.getServerTimeMs();let VA=0;O==="login"&&(VA=4),rr.includes(O)&&ye.ssoLog.debug(O,`${O} start params: ${N(DA)}`),wl(X,DA);const ee=this._apiHandlersMap[O];for(const Ee of ee)if(!Ee.matcher||Ee.matcher(DA))try{const Ke=Ee.context[Ee.methodName].bind(Ee.context)(...DA);return this._isPromiseLike(Ke)?this._handleAsyncResult(Ke,O,VA,GA):(this._reportApiSuccessLog({result:Ke,apiName:O,eventType:VA,startTime:GA}),Ke)}catch(Ke){throw ye.ssoLog.error(O,`${O} fail ${Ke?.message||Ke?.errorMessage})`,{error:Ke,costTime:v.getServerTimeMs()-GA,eventType:VA,method:O}),Ke}})}registerExperimentalAPI(B,v,N){const O=N||B;this._experimentalApiMap[B]=v[O].bind(v)}destroy(){return pA(this,void 0,void 0,function*(){var B,v;try{!((B=ye.store.get("login"))===null||B===void 0)&&B.isLogin&&(yield this._apiMap.logout()),ye.notificationCenter.emitInnerEvent(Ii.DESTROY)}catch(N){console.debug("destroy error: ",N)}finally{ye.notificationCenter.emitOuterEvent(Dn.SDK_DESTROY,{SDKAppID:(v=ye.store.get("instance"))===null||v===void 0?void 0:v.sdkAppId}),ws.clear(),Oo.getInstance().clear(),tn.getInstance().destroy(),ye.destroy()}})}exposeApiForClient(){return this._apiMap}exposeApiForPlugin(){return Object.assign(Object.assign({InnerEvent:Ii,InnerEventSubType:ye.notificationCenter.InnerEventSubType,OuterEvent:Dn,OuterConstant:hs,SignalingEvent:so,helper:Object.assign(Object.assign(Object.assign({},ye.utils),ye.common),{registerApi:this.registerApi.bind(this),registerExperimentalAPI:this.registerExperimentalAPI.bind(this),registerInterceptor:Sr,registerValidateConfig:Mc,checkBusinessCapabilityBits:jc,registerWorkflowStep:tn.getInstance().registerWorkflowStep.bind(tn.getInstance()),ChatError:rs}),apiMap:this._apiMap},ye),{constants:Object.assign(Object.assign({},JI),ye.constants),common:Object.assign(Object.assign(Object.assign({},Lg),ye.common),{workflowManager:tn.getInstance()}),utils:ye.utils,appStore:ah})}callExperimentalAPI(B,v){return ye.ssoLog.debug(`callExperimentalAPI.${B} start params: ${ye.utils.safeStringify(v)}`),this._experimentalApiMap[B]?this._experimentalApiMap[B](v):(ye.ssoLog.error("callExperimentalAPI",`callExperimentalAPI.${B} not found, params: ${ye.utils.safeStringify(v)}`),Promise.reject(new rs({code:Lo.INVALID_OPERATION})))}_isPromiseLike(B){return B!==null&&typeof B=="object"&&typeof B.then=="function"}_handleAsyncResult(B,v,N,O){return B.then(z=>(this._reportApiSuccessLog({result:z,apiName:v,eventType:N,startTime:O}),z)).catch(z=>{throw ye.ssoLog.error(v,`${v} fail ${z?.message||z?.errorMessage})`,{error:z,costTime:ye.common.timeManager.getServerTimeMs()-O,eventType:N,method:v,startTime:O}),z})}_reportApiSuccessLog(B){let{result:v,apiName:N,startTime:O,eventType:z}=B;const{timeManager:X}=ye.common,{successLog:{message:nA,moreMessage:DA}={message:"",moreMessage:""}}=v||{},GA=X.getServerTimeMs();N==="login"&&(O+=X.getTimeOffsetWithServer()),rr.includes(N)&&ye.ssoLog.info(N,`${N} success ${nA} ${DA}`,{costTime:GA-O,eventType:z,message:nA,moreMessage:DA,startTime:O}),v?.successLog&&delete v.successLog}}class zI{constructor(){this._latestLoginAt=0,this._latestSendOnlinePresenceRequestTime=0,this._helloInterval=120,this._customLoginInfo=""}init(){const{notificationCenter:B,store:v}=ye;v.set("login",{isReady:!1}),js.getInstance().registerApi({apiName:"login",context:this}),js.getInstance().registerApi({apiName:"logout",context:this}),js.getInstance().registerApi({apiName:"getLoginUser",context:this}),js.getInstance().registerApi({apiName:"isReady",context:this}),js.getInstance().registerApi({apiName:"getServerTime",context:this}),js.getInstance().registerExperimentalAPI("setCustomLoginInfo",this),B.subscribeInnerEvent(Ii.RECONNECTED,this._reLogin,this),ye.notificationCenter.subscribeInnerEvent(Ii.DESTROY,this._dispose,this)}login(B){return pA(this,void 0,void 0,function*(){var v;const{sdkEdition:N}=ye.store.get("instance")||{};try{if(this._isLoginIn())return this._createRepeatLoginResponse();if(this._isLoginFrequencyExceeded())throw new rs({functionName:"login",code:Lo.REPEAT_LOGIN});const O=yield this._performLogin(B);this._validateAfterLogin(O),this._handleLoginSuccess(O),yield this._ensureAsyncComplete(),this._updateAndEmitSDKReady(),this._latestLoginAt=0;const z=(v=ye.channel.getSocketAdapter())===null||v===void 0?void 0:v.getId(),{appId:X,href:nA}=ye.store.get("instance")||{},{instanceID:DA,customStatus:GA}=O||{};return{code:0,data:O,successLog:{message:N,moreMessage:`socketID:${z} instanceID:${DA} customStatus:${GA} href: ${nA} appId: ${X}`}}}catch(O){const{errorCode:z}=O;z!==Lo.REPEAT_LOGIN&&(this._latestLoginAt=0);const X=new rs({functionName:"login",code:z});throw console.error(X),X}})}_reLogin(){return pA(this,void 0,void 0,function*(){var B;try{if(!this._isLoginIn())return;const v=yield _u(this._customLoginInfo);if(v){const{instanceID:N,customStatus:O}=v;ye.store.set("login",{statusInstanceId:N}),tn.getInstance().executeWorkflow(nr.SYNC_SERVER_INFO_AFTER_RE_ONLINE,{customStatus:O,statusType:vu.USER_STATUS_ONLINE});const z=(B=ye.channel.getSocketAdapter())===null||B===void 0?void 0:B.getId();ye.ssoLog.info("reLogin",`socketId:${z} instanceId:${N}`)}}catch(v){console.warn(v)}})}logout(){return pA(this,arguments,void 0,function*(B=za.USER_INITIATED){const{ssoLog:v}=ye;v.debug("logout",`logout start logoutReason: ${B}`);try{yield this._performLogout(B),v.info("logout","logout success"),ye.ssoLog.uploadSSOLogData()}catch(N){const{errorCode:O}=N;throw new rs({functionName:"logout",code:O})}finally{this.handleLogoutCompleted()}return{code:0,data:{}}})}getLoginUser(){return this._isLoginIn()?qn():""}isReady(){var B;return(B=ye.store.get("login"))===null||B===void 0?void 0:B.isReady}setCustomLoginInfo(B=""){this._customLoginInfo=B}handleLogoutCompleted(){this._updateAndEmitSDKNotReady(),this._reset(),tn.getInstance().reset(),ye.notificationCenter.emitInnerEvent("logout")}getServerTime(){const{timeManager:B}=ye.common;return B.getServerTimeMs()}_updateAndEmitSDKReady(){ye.store.set("login",{isReady:!0}),setTimeout(()=>{ye.notificationCenter.emitOuterEvent(Dn.SDK_READY,{name:Dn.SDK_READY})},1)}_updateAndEmitSDKNotReady(){ye.store.set("login",{isReady:!1}),ye.notificationCenter.emitOuterEvent(Dn.SDK_NOT_READY,{name:Dn.SDK_NOT_READY})}_validateAfterLogin(B){const v="login";if(!B)throw new rs({functionName:v,message:"login response is empty"});const{tinyID:N,a2Key:O}=B||{};if(!N)throw new rs({functionName:v,code:Lo.NO_TINYID});if(!O)throw new rs({functionName:v,code:Lo.NO_A2KEY})}_createRepeatLoginResponse(){var B;return{code:0,data:{actionStatus:"OK",errorCode:0,errorInfo:Rl({code:"RepeatLogin",replacement1:(B=ye.store.get("login"))===null||B===void 0?void 0:B.userId}),repeatLogin:!0}}}_performLogin(B){return pA(this,void 0,void 0,function*(){const{userID:v,userSig:N}=B;return ye.store.set("login",{userId:v,userSig:N}),this._latestLoginAt=Date.now(),_u(this._customLoginInfo)})}_ensureAsyncComplete(){return pA(this,void 0,void 0,function*(){yield new Promise(B=>{setTimeout(()=>B(null),1)})})}_handleLoginSuccess(B){const{timeManager:v}=ye.common,{helloInterval:N,timeStamp:O,customStatus:z,purchaseBits:X}=B,nA=1e3*O;v.calculateTimeOffsetWithServer(this._latestLoginAt,nA),this._helloInterval=N||120,this._updateLoginStore(B),ye.user.userStatus.setCustomStatus(z),tn.getInstance().executeWorkflow(nr.SYNC_SERVER_INFO_AFTER_LOGIN,{purchaseBits:X}),ye.common.taskScheduler.addTask({id:Ru,intervalMs:1e3*this._helloInterval,callback:this._sendOnlinePresenceRequest,context:this})}_performLogout(B){return function(v){return pA(this,void 0,void 0,function*(){const{logoutReason:N}=v,O="im_open_status.wslogout",z=ye.common.generateProtocolData({servcmd:O,data:{wslogout_type:N,isWebUniapp:0}}),X=`${z.head.seq}${O}`;return yield ye.channel.sendPacket(z,{requestId:X})})}({logoutReason:B})}_updateLoginStore(B){const{a2Key:v,tinyID:N,instanceID:O,authKey:z}=B;ye.store.set("login",{a2Key:v,tinyID:N,statusInstanceId:O,authKey:z,isLoggedIn:!0})}_sendOnlinePresenceRequest(){return pA(this,void 0,void 0,function*(){this._latestSendOnlinePresenceRequestTime=Date.now();try{yield function(){const B="im_open_status.wshello",v=ye.common.generateProtocolData({servcmd:B,data:{isWebUniapp:0}}),N=`${v.head.seq}${B}`;return ye.channel.sendPacket(v,{requestId:N})}()}catch(B){ye.ssoLog.warn("_sendOnlinePresenceRequest",` error:${B.message}`)}})}_isLoginIn(){var B;return((B=ye.store.get("login"))===null||B===void 0?void 0:B.isLoggedIn)===!0}_isLoginFrequencyExceeded(){return Date.now()-this._latestLoginAt<=15e3}_reset(){ye.common.taskScheduler.removeTask(Ru),this._helloInterval=120,this._latestSendOnlinePresenceRequestTime=0,this._latestLoginAt=0,this._customLoginInfo="",ye.store.clear("login"),ye.store.set("login",{isReady:!1}),ye.store.set("instance",{applicationID:0})}_dispose(){this._reset();const{notificationCenter:B}=ye;B.unSubscribeInnerEvent(Ii.RECONNECTED,this._reLogin,this),B.unSubscribeInnerEvent(Ii.DESTROY,this._dispose,this)}}const Us={login:{userID:{required:!0,rules:["string"],allowEmpty:!1},userSig:{required:!0,rules:["string"],allowEmpty:!1}}},_c={logout:!0};class Ac{constructor(){this.loginAction=new zI,this.kickedOutHandler=new Sc,this.loginAction.init(),this.kickedOutHandler.init(),Mc({auth:_c,params:Us})}}var dr,Vr,Xa;(function(p){p.CONV_C2C="C2C",p.CONV_GROUP="GROUP",p.CONV_TOPIC="TOPIC",p.CONV_SYSTEM="@TIM#SYSTEM"})(dr||(dr={})),function(p){p.MSG_PRIORITY_HIGH="High",p.MSG_PRIORITY_NORMAL="Normal",p.MSG_PRIORITY_LOW="Low",p.MSG_PRIORITY_LOWEST="Lowest"}(Vr||(Vr={})),function(p){p.MSG_TEXT="TIMTextElem",p.MSG_CUSTOM="TIMCustomElem",p.MSG_LOCATION="TIMLocationElem",p.MSG_FACE="TIMFaceElem",p.MSG_IMAGE="TIMImageElem",p.MSG_AUDIO="TIMSoundElem",p.MSG_FILE="TIMFileElem",p.MSG_VIDEO="TIMVideoFileElem",p.MSG_GRP_TIP="TIMGroupTipElem",p.MSG_GRP_SYS_NOTICE="TIMGroupSystemNoticeElem",p.MSG_MERGER="TIMRelayElem"}(Xa||(Xa={}));const _E={1:Vr.MSG_PRIORITY_HIGH,2:Vr.MSG_PRIORITY_NORMAL,3:Vr.MSG_PRIORITY_LOW,4:Vr.MSG_PRIORITY_LOWEST},CC=0,gh=1;var ro;(function(p){p.IN="in",p.OUT="out"})(ro||(ro={}));const Tc=2,Nl={};function hC(p){if(!p)return 0;if(Nl[p]===void 0){const B=new Date,v=`3${B.getHours()}`.slice(-2),N=`0${B.getMinutes()}`.slice(-2),O=`0${B.getSeconds()}`.slice(-2);Nl[p]=parseInt([v,N,O,"0001"].join(""),10),console.log(`autoIncrementIndex start index:${Nl[p]}`)}else Nl[p]+=1;return Nl[p]}class BC{constructor(B){this.ID="",this.random=0,this.sequence=0,this.nameCard="",this.isRead=!1,this.isPeerRead=!1,this.isDeleted=!1,this.isResend=!1,this.hasRiskContent=!1,this._onlineOnlyFlag=!1,this.atUserList=[],this._groupAtInfoList=[],this.isBroadcastMessage=!1,this.priority=Vr.MSG_PRIORITY_NORMAL,this._relayFlag=!1;const{clientTime:v=ye.common.timeManager.getServerTimeSeconds()||0,senderTinyID:N,currentUser:O,needReadReceipt:z,isSupportExtension:X,customModerationConfigurationId:nA,to:DA,from:GA,nick:VA="",avatar:ee="",time:Ee,messageControlInfo:Ke,tinyID:ot,cloudCustomData:at="",messageLifeTime:kt,messageVersion:Yt=0,conversationType:Ui,sequence:ao,checkResult:zi=0,isPlaceMessage:ui=0,messageFlagBits:Po,receiverList:As,isSystemMessage:pi=!1,status:Ki=wg.SUCCESS,revokeReason:Ws="",conversationSubType:we,clientSequence:Rt,protocol:FA="JSON",revokerInfo:Wt={userID:"",nick:"",avatar:""},readReceiptInfo:En={readCount:void 0,unreadCount:void 0,isPeerRead:void 0,timestamp:0},random:Zt,groupProfile:us,atUserList:vi,flow:ho,isRead:Ct=!1,priority:Bt=Vr.MSG_PRIORITY_NORMAL,onlineOnlyFlag:ug=!1,nameCard:ks="",quoteInfo:ji}=B;var Hr;this.clientTime=v,this.senderTinyID=N||ot,this.needReadReceipt=z===!0||z===1,this.isSupportExtension=X===!0||X===1,this._cmConfigID=nA,this.to=DA,this.nick=VA,this.avatar=ee,this.protocol=FA,this.random=Zt===void 0?(Hr=Hr||99999999,Math.round(Math.random()*Hr)):Zt,this.time=Ee||Math.ceil(Date.now()/1e3),this._isExcludedFromLastMessage=!!Ke?.excludedFromLastMessage,this._isExcludedFromUnreadCount=!!Ke?.excludedFromUnreadCount,this.isModified=!!Yt,this.cloudCustomData=at,this.messageLifeTime=kt,this.from=GA||null,this.sequence=ao||0,this.conversationType=Ui||dr.CONV_C2C,this.hasRiskContent=zi>1,this.version=Yt,this.isPlaceMessage=ui,this.isRevoked=ui===2||Po===8,this.isSystemMessage=pi,this.readReceiptInfo=En,this.revokeReason=Ws,this.revokerInfo=Wt,this._receiverList=As,this.conversationSubType=we,this.revoker=Wt?.revoker||"",this.clientSequence=Rt||ao||0,this.status=Ki,this.atUserList=vi||[],this.flow=ho,this.isRead=Ct,this.priority=Bt,this._onlineOnlyFlag=ug,this.nameCard=ks,this.quoteInfo=ji,this.reInitialize(O),this._initC2CReadReceiptInfo(B),this._extractGroupInfo(us)}getElements(){return this._elements}isOnlineMessage(){return this.messageLifeTime===0}setElement(B){Array.isArray(B)?this._elements=B:this._elements=[B],this._updatePayloadAndType()}transformElementsToServerFormat(){return this._elements?Array.isArray(this._elements)?this._elements.map(B=>B.transformToServerFormat()):this._elements.transformToServerFormat():null}setRelayFlag(B){this._relayFlag=B}validateBeforeSend(){var B,v,N;return this._relayFlag?{isValid:!0}:((B=this._elements)===null||B===void 0?void 0:B.length)>0?(N=(v=this._elements[0])===null||v===void 0?void 0:v.validateBeforeSend)===null||N===void 0?void 0:N.call(v):{isValid:!1}}_updatePayloadAndType(){this._elements[0]&&(this.payload=this._elements[0].content,this.type=this._elements[0].type)}_initC2CReadReceiptInfo(B){const{readReceiptSentByPeer:v,timestamp:N=0}=B;this.conversationType===dr.CONV_C2C&&this.needReadReceipt===!0&&(this.readReceiptInfo.isPeerRead=v===1,this.readReceiptInfo.timestamp=N)}_extractGroupInfo(B){if(!B)return;const{From_AccountNick:v,From_AccountHeadurl:N,MsgFrom_AccountExtraInfo:O,GroupType:z}=B,{NameCard:X}=O||{};typeof v=="string"&&(this.nick=v),typeof N=="string"&&(this.avatar=N),typeof X=="string"&&(this.nameCard=X),this.conversationSubType=z}reInitialize(B){B===this.from&&(this.isRead=!0),this._initSequence(B),this._concatConversationID(B),this.generateMessageID()}_concatConversationID(B){let v="";const N=this.conversationType;N!==dr.CONV_SYSTEM?(v=N===dr.CONV_C2C?B===this.from?this.to:this.from:this.to,this.conversationID=v?`${N}${v}`:null):this.conversationID=dr.CONV_SYSTEM}_initSequence(B){this.clientSequence===0&&B&&(this.clientSequence=hC(B)),this.sequence===0&&this.conversationType===dr.CONV_C2C&&(this.sequence=this.clientSequence)}generateMessageID(){this.from===dr.CONV_SYSTEM&&(this.senderTinyID="144115198244471703"),this.ID=`${this.senderTinyID}-${this.clientTime}-${this.random}`}setIsRead(B){this.isRead=B}}class Gl{static parseServerPushElement(B){const{MsgContent:v={}}=B,{Data:N,Ext:O,Desc:z}=v;return new Gl({data:N,description:z,extension:O})}constructor(B){this.type=Xa.MSG_CUSTOM;const{data:v="",description:N="",extension:O=""}=B;this.content={data:v,description:N,extension:O}}transformToServerFormat(B){const{isMergerMessage:v=!1}=B||{},N=v?this.payload:this.content,{data:O,description:z,extension:X}=N;return{MsgType:this.type,MsgContent:{Data:O,Ext:X,Desc:z}}}validateBeforeSend(){const{isEmpty:B}=ye.utils,v=[this.content.data,this.content.description,this.content.extension].some(N=>!B(N));return{isValid:v,error:v?null:{message:"content can not be empty"}}}}class ZI{static parseServerPushElement(B){const{MsgContent:v={Text:""}}=B,{Text:N}=v;return new ZI({text:N})}constructor(B){this.type=zg.MSG_TEXT,this.content={text:B.text||""}}validateBeforeSend(){var B,v;return((v=(B=this.content)===null||B===void 0?void 0:B.text)===null||v===void 0?void 0:v.length)>0?{isValid:!0}:{isValid:!1,error:{message:"content can not be empty"}}}transformToServerFormat(B){const{isMergerMessage:v=!1}=B||{},N=v?this.payload:this.content,{text:O}=N;return{MsgType:this.type,MsgContent:{Text:O}}}}var hI=new class{constructor(){this._elementClassMap={[Xa.MSG_CUSTOM]:Gl,[Xa.MSG_TEXT]:ZI}}init(){js.getInstance().registerApi({apiName:"createCustomMessage",context:this}),js.getInstance().registerApi({apiName:"createTextMessage",context:this})}registerElementClass(p,B){var v;(v=B).prototype!==void 0&&"constructor"in v.prototype&&(this._elementClassMap[p]=B)}getElementClass(p){return this._elementClassMap[p]}createMessage(p){const{from:B,flow:v=ro.OUT}=p,{userId:N}=ye.store.get("login")||{};this._isSendByCurrentInstance({from:B,flow:v,currentUser:N})?this._updateWithSenderInfo(p):this._isMultiEndpointSyncMessage({from:B,flow:v,currentUser:N})&&(p.flow=ro.OUT);const O=Object.assign(Object.assign({},p),{currentUser:N});return new BC(O)}createCustomMessage(p){const B=qn(),v=this.createMessage(Object.assign(Object.assign({},p),{from:B})),N=this._elementClassMap[Xa.MSG_CUSTOM];if(!v)return null;if(N){const O=new N(p.payload);v.setElement(O)}return v}createTextMessage(p){var B;if(!p)return null;const v=typeof p.payload=="string"?p.payload:((B=p?.payload)===null||B===void 0?void 0:B.text)||"",N=new ZI({text:v}),O=qn(),z=ye.message.messageFactory.createMessage(Object.assign(Object.assign({},p),{from:O}));return z.setElement(N),z}_updateWithSenderInfo(p){var B,v;const{nick:N,avatar:O,conversationType:z,to:X}=p,{userId:nA,tinyID:DA}=ye.store.get("login")||{},GA=Aa.getUserProfile(nA);return p.nick=N||GA?.nick||"",p.avatar=O||GA?.avatar||"",p.tinyID=p.tinyID||DA||"",p.from=nA,p.status=wg.UNSENT,p.flow=ro.OUT,z===_g.CONV_GROUP&&(p.nameCard=(v=(B=Za.getGroup(X))===null||B===void 0?void 0:B.selfInfo)===null||v===void 0?void 0:v.nameCard),p}_isMultiEndpointSyncMessage(p){const{from:B,flow:v,currentUser:N}=p;return B===N&&v===ro.IN}_isSendByCurrentInstance(p){const{from:B,flow:v,currentUser:N}=p;return B===N&&v===ro.OUT}};const BI={PushFlag:0,Title:"",Desc:"",Ext:"",ApnsInfo:{Sound:"",BadgeMode:0,IsVoipPush:void 0,Image:"",InterruptionLevel:"active",ContentAvailable:0},AndroidInfo:{Sound:"",XiaoMiChannelID:"",OPPOChannelID:"",GoogleChannelID:"",VIVOClassification:1,VIVOCategory:"",HuaWeiCategory:"",OPPOCategory:"",HuaWeiImage:"",HonorImage:"",GoogleImage:"",HonorImportance:"",MeizuNotifyType:void 0}},TE={HonorImportance:{range:["LOW","NORMAL"],defaultValue:void 0},MeizuNotifyType:{range:[0,1],defaultValue:void 0}},bl={enableIOSBackgroundNotification:{range:[!0,!1],defaultValue:!1},interruptionLevel:{range:["passive","active","time-sensitive","critical"],defaultValue:"active"}};function kl(p,B){return Object.keys(B).forEach(v=>{const{range:N,defaultValue:O}=B[v];p[v]=N.includes(p[v])?p[v]:O}),p}function Ug(p){const B=p.lastIndexOf(".");return B===-1?p:p.slice(0,B)}function ec(p){const{androidInfo:B={},androidOPPOChannelID:v=""}=p,N=B.OPPOChannelID||v,O=kl(B,TE),{sound:z="",FCMChannelID:X=""}=O,nA=Do(O,["sound","FCMChannelID"]);return Object.assign(Object.assign({},nA),{Sound:Ug(z),OPPOChannelID:N,GoogleChannelID:X})}function pd(p){const{apnsInfo:B={},ignoreIOSBadge:v=!1,disableVoipPush:N}=p,O=kl(B,bl),{ignoreIOSBadge:z,disableVoipPush:X,enableIOSBackgroundNotification:nA}=O,DA=Do(O,["ignoreIOSBadge","disableVoipPush","enableIOSBackgroundNotification"]),GA=z===!0||v===!0?1:0;let VA;return r(N)||(VA=N===!1?1:0),r(X)||(VA=X===!1?1:0),Object.assign(Object.assign({},DA),{BadgeMode:GA,IsVoipPush:VA,ContentAvailable:nA?1:0})}function NE(p){return ye.utils.isPlainObject(p)?{PushFlag:p.disablePush===!0?1:0,Title:p.title||"",Desc:p.description||"",Ext:p.extension||"",ApnsInfo:pd(p),AndroidInfo:ec(p)}:BI}function Nc(p){const{From_AccountHeadurl:B,From_AccountNick:v,IsNeedReadReceipt:N,IsPeerRead:O,IsSyncMsg:z,MsgBody:X,MsgClientTime:nA,MsgLifeTime:DA,MsgRandom:GA,MsgSeq:VA,MsgTimeStamp:ee,SendMsgControl:Ee,SupportMessageExtension:Ke,TinyId:ot,MsgCheckResult:at,CloudCustomData:kt,MsgVersion:Yt,MsgFlagBits:Ui,RevokerInfo:ao,InnerSdkCustomData:zi}=p;let ui,{From_Account:Po,To_Account:As}=p;if(z===1){const pi=As;As=Po,Po=pi}if(ao){const{Reason:pi,Revoker_Account:Ki,Revoker_FromUin:Ws}=ao;ui={reason:pi,revoker:Ki,revokerFromUin:Ws,userID:Ki}}return{from:Po,avatar:B,nick:v,needReadReceipt:N===1,isSyncMessage:z,clientTime:nA,messageLifeTime:DA,random:GA,sequence:VA,time:ee,messageControlInfo:{excludedFromLastMessage:Ee?.NoLastMsg===1,excludedFromUnreadCount:Ee?.NoUnread===1},isSupportExtension:Ke,to:As,tinyID:ot,checkResult:at,cloudCustomData:kt,revokerInfo:ui,messageVersion:Yt,messageFlagBits:Ui,readReceiptSentByPeer:O,elements:$a(X),onlineOnlyFlag:DA===0,quoteInfo:Uu(zi)}}function XI(p){const{From_Account:B,MsgBody:v,MsgClientTime:N,MsgRandom:O,MsgSeq:z,MsgTimeStamp:X,To_Account:nA,MsgVersion:DA,CloudCustomData:GA,MsgCheckResult:VA}=p;return{from:B,clientTime:N,random:O,sequence:z,time:X,to:nA,elements:$a(v),messageVersion:DA,cloudCustomData:GA,checkResult:VA}}function co(p){const{ClientSeq:B,From_Account:v,GroupInfo:N,MsgBody:O,MsgClientTime:z,MsgRandom:X,MsgSeq:nA,MsgTimeStamp:DA,SendMsgControl:GA,SupportMessageExtension:VA,TinyId:ee,CloudCustomData:Ee,MsgVersion:Ke,MsgCheckResult:ot,NeedReadReceipt:at,IsPlaceMsg:kt,RevokerInfo:Yt,GroupAtInfo:Ui,OnlineOnlyFlag:ao,InnerSdkCustomData:zi}=p;let ui,Po=Vr.MSG_PRIORITY_NORMAL;if(Object.keys(_E).includes(String(p.MsgPriority))&&(Po=_E[p.MsgPriority]),Yt){const{Reason:pi,Revoker_Account:Ki,Revoker_FromUin:Ws}=Yt;ui={reason:pi,revoker:Ki,revokerFromUin:Ws,userID:Ki}}const As=function(pi){const Ki=[];return Array.isArray(pi)&&pi.forEach(Ws=>{Ws.GroupAtAllFlag===CC?Ki.push(Ws.GroupAt_Account):Ws.GroupAtAllFlag===gh&&Ki.push(hs.MSG_AT_ALL)}),Ki}(Ui);return{clientSequence:B,from:v,groupProfile:N,clientTime:z,priority:Po,random:X,sequence:nA,time:DA,messageControlInfo:{excludedFromLastMessage:GA?.NoLastMsg===1,excludedFromUnreadCount:GA?.NoUnread===1},isSupportExtension:VA,tinyID:ee,cloudCustomData:Ee,messageVersion:Ke,checkResult:ot,needReadReceipt:at,isPlaceMessage:kt,revokerInfo:ui,atUserList:As,elements:$a(O),to:GE(p),onlineOnlyFlag:ao===1,quoteInfo:Uu(zi)}}function GE(p){const{utils:{isEmpty:B},constants:{IS_TOPIC_MESSAGE:v}}=ye,{ToGroupId:N,GroupInfo:{MillionGroupFlag:O=0,TopicId:z}={}}=p;return O!==v||B(z)?N:z}function $a(p){if(!p)return null;if(Array.isArray(p))return p.map(v=>{const N=ye.message.messageFactory.getElementClass(v.MsgType);return N?.parseServerPushElement(v)});const B=ye.message.messageFactory.getElementClass(p.MsgType);return B?.parseServerPushElement(p)}function $I(p){const{From_Account:B,MsgBody:v,MsgClientTime:N,MsgRandom:O,MsgSeq:z,MsgTimeStamp:X,GroupId:nA,TopicId:DA,MsgVersion:GA,CloudCustomData:VA,MsgCheckResult:ee}=p;return{from:B,clientTime:N,random:O,sequence:z,time:X,groupID:nA,topicID:DA,elements:$a(v),messageVersion:GA,cloudCustomData:VA,checkResult:ee}}function Uu(p){const{utils:{isString:B,safeStringify:v},ssoLog:N}=ye;if(!B(p))return null;try{const{messageID:O,messageTime:z,messageSequence:X}=JSON.parse(p).businessQuote;return{msgID:O,messageTime:z,messageSequence:X}}catch(O){return N.debug("_parseServerQuoteInfo",v(O)),null}}function Gc({conversationUpdateFields:p,message:B}){const{conversationID:v,conversationType:N,conversationSubType:O,flow:z,_isExcludedFromUnreadCount:X,_isExcludedFromLastMessage:nA}=B,DA=nA?"":il(B),GA=!X&&z===ro.IN;p.has(v)?(p.get(v).lastMessage=DA,GA&&p.get(v).unreadCount++):p.set(v,{conversationID:v,type:N,subType:O,unreadCount:GA?1:0,lastMessage:DA})}function QI(p){return p.filter(B=>{const v=!Rs(B?._elements),N=B?.isPlaceMessage===1;return v||ye.ssoLog.error("emptyMessageBody",`from:${B.from} to:${B.to} sequence:${B.sequence}`),v&&!N})}function ol(p){const{messageDataHandler:B}=ye.message;return!B.isInMessageList(p)&&!B.isMessageSentByCurrentInstance(p)}var sl=Object.freeze({__proto__:null,autoIncrementIndex:hC,createAndroidPushInfo:ec,createApnsPushInfo:pd,createOfflinePushInfo:NE,filterValidMessages:QI,getAndroidSoundName:Ug,parseServerGroupMessage:co,parseServerPushC2CModifyMessage:XI,parseServerPushGroupModifyMessage:$I,parseServerPushMessage:Nc,parseServerPushMessageElement:$a,shouldStoreMessage:ol,updateConversationFields:Gc});const{isPlainObject:xa}=ye.utils;function bE(p,B={}){const{onlineUserOnly:v,messageControlInfo:N}=B;let{offlinePushInfo:O}=B;p.conversationType===dr.CONV_C2C&&v===!0&&(O?O.disablePush=!0:O={disablePush:!0});let z="";typeof p.cloudCustomData=="string"&&p.cloudCustomData.length>0&&(z=p.cloudCustomData);const X=[];if(N&&xa(N)){const{excludedFromUnreadCount:nA,excludedFromLastMessage:DA,excludedFromContentModeration:GA}=N;nA===!0&&X.push("NoUnread"),DA===!0&&X.push("NoLastMsg"),GA===!0&&X.push("NoMsgCheck")}return{onlineUserOnly:v,cloudCustomData:z,messageControlInfo:X,offlinePushInfo:O}}function ra(p){const{webhookInfo:{disableCloudMessagePreHook:B=!1,disableCloudMessagePostHook:v=!1}={}}=p||{};if(!B&&!v)return;const N=[];return B&&N.push("ForbidBeforeSendMsgCallback"),v&&N.push("ForbidAfterSendMsgCallback"),N}function Mn(p,B){return pA(this,void 0,void 0,function*(){const v=p.conversationType===dr.CONV_GROUP?function(O,z){var X;const nA=bE(O,z),{onlineUserOnly:DA,cloudCustomData:GA,messageControlInfo:VA,offlinePushInfo:ee}=nA,Ee=JSON.parse(JSON.stringify(O.transformElementsToServerFormat()));let Ke;return h(O._receiverList)&&O._receiverList.length>0&&(Ke=O._receiverList,O._receiverList.length>50&&(Ke=O._receiverList.slice(0,50),console.warn("ReceiverListLimit"))),{servcmd:"group_open_http_svc.send_group_msg",data:{From_Account:(X=ye.store.get("login"))===null||X===void 0?void 0:X.userId,GroupId:O.to,MsgBody:Ee,CloudCustomData:GA,Random:O.random,MsgPriority:O.priority,ClientSeq:O.clientSequence,GroupAtInfo:O._groupAtInfoList,OnlineOnlyFlag:DA?1:0,MsgClientTime:O.clientTime,OfflinePushInfo:NE(ee),SendMsgControl:DA?void 0:VA,NeedReadReceipt:O.needReadReceipt===!0?1:0,To_Account:Ke,SupportMessageExtension:O.isSupportExtension===!0?1:0,IsRelayMsg:O._relayFlag===!0?1:0,CustomModerationConfigID:O._cmConfigID,ForbidCallbackControl:ra(z),InnerSdkCustomData:kE(O)}}}(p,B):function(O,z){var X;const nA=bE(O,z),{onlineUserOnly:DA,cloudCustomData:GA,messageControlInfo:VA,offlinePushInfo:ee}=nA,Ee=DA===!0?0:void 0,Ke=JSON.parse(JSON.stringify(O.transformElementsToServerFormat()));return{servcmd:"openim.sendmsg",data:{From_Account:(X=ye.store.get("login"))===null||X===void 0?void 0:X.userId,To_Account:O.to,MsgBody:Ke,CloudCustomData:GA,MsgSeq:O.sequence,MsgRandom:O.random,MsgLifeTime:Ee,From_AccountNick:O.nick,From_AccountHeadurl:O.avatar,SendMsgControl:Ee!==0?VA:void 0,MsgClientTime:O.clientTime,IsNeedReadReceipt:O.needReadReceipt===!0?1:0,SupportMessageExtension:O.isSupportExtension===!0?1:0,IsRelayMsg:O._relayFlag===!0?1:0,CustomModerationConfigID:O._cmConfigID,OfflinePushInfo:NE(ee),ForbidCallbackControl:ra(z),InnerSdkCustomData:kE(O)}}}(p,B),N=yield Zg(v);return N?{time:N.MsgTime,messageDropReason:N.MsgDropReason,sequence:N.MsgSeq}:null})}function br(p){return pA(this,void 0,void 0,function*(){const{from:B,to:v,version:N=0,sequence:O,random:z,time:X,type:nA,cloudCustomData:DA}=p,GA={From_Account:B,To_Account:v,MsgVersion:N,MsgSeq:O,MsgRandom:z,MsgTime:X,MsgType:nA,MsgBody:p.transformElementsToServerFormat(),CloudCustomData:DA},VA=yield Zg({servcmd:"openim.modify_c2c_msg",data:GA});if(VA){const{MsgBody:ee,MsgVersion:Ee,CloudCustomData:Ke}=VA;return{elements:$a(ee),messageVersion:Ee,cloudCustomData:Ke}}})}function nl(p){return pA(this,void 0,void 0,function*(){const{to:B,version:v=0,sequence:N,cloudCustomData:O}=p,z={GroupId:B,MsgVersion:v,MsgSeq:N,MsgBody:p.transformElementsToServerFormat(),CloudCustomData:O},X=yield Zg({servcmd:"openim.modify_group_msg",data:z});if(X){const{MsgBody:nA,MsgVersion:DA,CloudCustomData:GA}=X;return{elements:$a(nA),messageVersion:DA,cloudCustomData:GA}}})}function Ll(p){return pA(this,void 0,void 0,function*(){const{groupID:B,count:v,messageSequence:N,messageSequenceList:O,getType:z}=p,X={GroupId:B,ReqMsgNumber:v,WithRecalledMsg:1,Version:1,GetType:z};return N&&(X.ReqMsgSeq=N),h(O)&&O.length>0&&(X.ReqMsgSeqList=O),yield Zg({servcmd:"group_open_http_svc.group_msg_get",data:X})})}function bc(p){return pA(this,void 0,void 0,function*(){const{peerAccount:B,count:v,lastMessageTime:N,messageKey:O,direction:z}=p;return Zg({servcmd:"openim.getroammsg",data:{Peer_Account:B,MaxCnt:v,WithRecalledMsg:1,LastMsgTime:N,MsgKey:O,GetDirection:z}})})}function kE(p){if(ye.utils.isObject(p.quoteInfo)){const{msgID:B,messageSequence:v,messageTime:N}=p.quoteInfo;return JSON.stringify({businessQuote:{messageID:B,messageSequence:v,messageTime:N}})}}var kc=Object.freeze({__proto__:null,createMessagePackOptions:bE,generateForbidCallbackControl:ra,getC2CRoamingMessagesByAnchor:bc,getGroupRoamingMessagesByAnchor:Ll,getRoamingMessages:function(p){return pA(this,void 0,void 0,function*(){const{peerAccount:B,count:v,lastMessageTime:N,messageKey:O}=p;return(yield Zg({servcmd:"openim.getroammsg",data:{Peer_Account:B,MaxCnt:v||15,LastMsgTime:N||0,MsgKey:O,GetDirection:0,WithRecalledMsg:1}}))||[]})},modifyC2CMessage:br,modifyGroupMessage:nl,sendMessage:Mn});const{isPlainObject:Fu}=ye.utils,{MSG_AUDIO:QC,MSG_FILE:Au,MSG_IMAGE:ch,MSG_VIDEO:Ou,MSG_MERGER:pI}=hs;class rl{constructor(){this._sendProtocolMap=new Map}init(){js.getInstance().registerApi({apiName:"sendMessage",context:this,matcher:B=>![QC,Au,ch,Ou,pI].includes(B[0].type)})}registerSendProtocol(B,v,N){this._sendProtocolMap.set(B,v.bind(N))}sendMessage(B,v){return pA(this,void 0,void 0,function*(){const{TOTAL_COUNT:N,SEND_COST:O,SUCCESS_COUNT:z,FAILED_COUNT:X}=gI;if(!(B instanceof BC))throw new rs({code:Lo.MSG_INSTANCE_REQUIRED});const nA=B.validateBeforeSend();if(!nA.isValid){const{code:VA,message:ee=""}=nA.error||{};throw new rs({code:VA,message:ee})}this._reportMessageSendQuality({name:N,message:B});let DA=!1;const{messageDataHandler:GA}=ye.message||{};try{const{messageControlInfo:VA}=v||{};let ee=null;GA.addRandomOfSentMessage(B.random);const Ee=Date.now(),Ke=this._getSendProtocol(B);if(B.conversationType===dr.CONV_C2C?(DA=v?.onlineUserOnly===!0,ee=yield Ke(B,v)):B.conversationType===dr.CONV_GROUP&&(yield this._validateBeforeSendGroupMessage(B),ee=yield Ke(B,v)),ee){const{messageDropReason:ot,sequence:at,time:kt}=ee;if(this._updateNickAndAvatarOfSentMessageByMe(B),ot&&this._logRateLimitInfo(B,at,ot),this._reportMessageSendQuality({name:z,message:B}),this._reportMessageSendQuality({name:O,message:B,startTs:Ee}),B.isResend===!0){const Yt=GA.findMessage(B.ID);Yt&&(ye.ssoLog.debug("sendMessage",`sendMessage resend ok. ID:${Yt.ID}`),GA.deleteConversationMessage(Yt))}return B.status=wg.SUCCESS,B.time=kt,B.conversationType===dr.CONV_GROUP&&(B.sequence=at),DA?B._onlineOnlyFlag=!0:(GA.storeConversationMessage(B),this._applySentMessageControlInfo(B,VA),this._emitOnlineMessageSent(B)),B.type===zg.MSG_STREAM?{code:0,data:{message:B,streamMessageID:ee.streamMessageID}}:{code:0,data:{message:B}}}}catch(VA){B.status=wg.FAIL,GA.removeRandomOfSentMessage(B.random);let{errorCode:ee}=VA||{},Ee=VA?.errorInfo||VA?.message||"";throw this._hasRiskContent(ee)&&(B.hasRiskContent=!0),DA||this._isRejectedByRestApi(ee)||GA.storeConversationMessage(B),this._reportMessageSendQuality({name:X,message:B,error:VA}),new rs({code:ee,message:Ee,data:{message:B},moreMessage:`type:${B.type} from:${B.from} to:${B.to}`})}})}_hasRiskContent(B){return B===80001||B===80004}_isRejectedByRestApi(B){return B>=10100&&B<=10200||B>=120001&&B<=13e4}_emitOnlineMessageSent(B){const v=B._isExcludedFromLastMessage?"":B,{conversationID:N,conversationType:O}=B,z=Xr(N)?Ii.TOPIC_NEW_MESSAGE:Ii.NEW_MESSAGE;ye.notificationCenter.emitInnerEvent(z,{result:{conversationUpdateFieldList:[{conversationID:N,type:O,message:B,lastMessage:v,unreadCount:0}]}})}_applySentMessageControlInfo(B,v){v&&Fu(v)&&(v.excludedFromLastMessage===!0&&(B._isExcludedFromLastMessage=!0),v.excludedFromUnreadCount===!0&&(B._isExcludedFromUnreadCount=!0))}_logRateLimitInfo(B,v,N){const O=`from:${B.from} to:${B.to} sequence:${v} messageDropReason:${N}`;ye.ssoLog.warn("messageDropReason",O)}_updateNickAndAvatarOfSentMessageByMe(B){const{messageDataHandler:v}=ye.message||{};let N=!1;const{conversationID:O}=B,z=v.getLatestMsgSentByMe(O);if(z){const{nick:X,avatar:nA}=z;X===B.nick&&nA===B.avatar||(N=!0),N&&v.updateNickAndAvatarOfSentMessage({conversationID:O,latestNick:B.nick,latestAvatar:B.avatar,isSentByMe:!0})}}_validateBeforeSendGroupMessage(B){return pA(this,void 0,void 0,function*(){var v,N,O;const{to:z,from:X}=B;let nA=z,DA=Za.getGroup(nA);if(da({groupID:nA})&&DA?.isSupportTopic)throw new rs({code:Lo.MSG_SEND_GRP_WITH_TOPIC_FAIL});if(Xr(z)&&([nA]=z.split(La.TOPIC),DA=Za.getGroup(nA)),!DA&&typeof((v=js.getInstance().getApiMap())===null||v===void 0?void 0:v.getGroupProfile)=="function"){const GA=yield js.getInstance().getApiMap().getGroupProfile({groupID:nA});if(((O=(N=GA?.data)===null||N===void 0?void 0:N.group)===null||O===void 0?void 0:O.type)===hs.GRP_AVCHATROOM){const VA=Rl({code:Lo.MSG_SEND_FAIL_NOT_IN_AV,replacement1:X,replacement2:nA});throw new rs({code:Lo.MSG_SEND_FAIL_NOT_IN_AV,message:VA})}}return!0})}_reportMessageSendQuality(B){ye.notificationCenter.emitInnerEvent(Ii.QUALITY_STAT,{label:Ng.MESSAGE_SEND_SUCCESS_RATE,data:B})}_getSendProtocol(B){return this._sendProtocolMap.get(B.type)||Mn}}var pC=new class{constructor(){this._sparseMessagesByConversation=new Map,this._latestMessageSentByPeerMap=new Map,this._latestMessageSentByMeMap=new Map,this._randomOfSentMessageList=new Set}init(){ye.notificationCenter.subscribeInnerEvent(Ii.LOGOUT,this._reset,this),ye.notificationCenter.subscribeInnerEvent(Ii.DESTROY,this._dispose,this)}get _messagesByConversation(){return Tl.getMessages()}storeConversationMessage(p,B=!1){if(an)return!0;const{conversationID:v}=p;if(!v||(this._messagesByConversation.has(v)||this._messagesByConversation.set(v,new Map),this._shouldSkipStoreMessage(p,B)))return!1;const N=this._getUniqueIdOfMessage(p);return this._messagesByConversation.get(v).set(N,p),this._updateLatestMessageMap(p),!0}_updateLatestMessageMap(p){const{conversationID:B}=p;p.flow==="out"?this._setLatestMsgSentByMe(B,p):B.startsWith("C2C")&&this._setLatestMsgSentByPeer(B,p)}_shouldSkipStoreMessage(p,B){const v=this._getUniqueIdOfMessage(p),N=this._messagesByConversation.get(p.conversationID);if(N?.has(v)){const O=N?.get(v);if(!B||O?.isModified===!0)return!0}return!1}deleteConversationMessage(p){var B;const{conversationID:v=""}=p,N=this._getUniqueIdOfMessage(p);this._messagesByConversation.has(v)&&((B=this._messagesByConversation.get(v))===null||B===void 0||B.delete(N))}modifyConversationMessage(p,B){var v;if(!this._messagesByConversation.has(p)&&!this._sparseMessagesByConversation.has(p))return{isUpdated:!1,message:null};const N=this._getUniqueIdOfMessage(B),O=this._getMessageFromLocalMessage(p,N);if(O){const{messageVersion:z,elements:X,cloudCustomData:nA,checkResult:DA=0}=B,GA=DA>1;if(ye.ssoLog.debug("modifyConversationMessage",`conversationToMessageMap modifyConversationMessage localVersion:${O.version} remoteVersion:${z}`),O.versionO.ID===p)||null,B)break;if(!B){const N=Array.from(this._sparseMessagesByConversation.values());for(const O of N)if(B=O.get(p)||null,B)break}return B}deleteConversationMessageList(p){this._messagesByConversation.has(p)&&(this._messagesByConversation.delete(p),this._latestMessageSentByMeMap.delete(p),this._latestMessageSentByPeerMap.delete(p)),this._sparseMessagesByConversation.has(p)&&this._sparseMessagesByConversation.delete(p)}revokeMessage({conversationID:p,sequence:B,random:v,revoker:N}){const O=this._messagesByConversation.get(p);let z=null;if(O){const X=Array.from(O.values());if(z=this._findMessageBySequenceAndRandom({messageList:X,random:v,sequence:B}),z){const nA=this._getUniqueIdOfMessage(z);return Tl.updateMessage(p,[nA],{isRevoked:!0,revoker:N,operation:Yr.revoke}),z}}if(this._sparseMessagesByConversation.has(p)){const X=Array.from(this._sparseMessagesByConversation.get(p).values());if(z=this._findMessageBySequenceAndRandom({messageList:X,random:v,sequence:B}),z)return z.isRevoked=!0,z.revoker=N,z}}_findMessageBySequenceAndRandom({messageList:p,sequence:B,random:v}){for(let N=0;N0){const X=new Map([...O,...z.entries()]);this._messagesByConversation.set(v,X),this._updateLatestMessageSentByMe(v),this._updateLatestMessageSentByPeer(v)}return N}storeSparseMessageList(p){if(p.length===0)return;const{conversationID:B}=p[0],v=p.length;this._sparseMessagesByConversation.has(B)||this._sparseMessagesByConversation.set(B,new Map);const N=this._sparseMessagesByConversation.get(B);for(let O=0;O=0;N--)if(v[N].flow==="out"){this._setLatestMsgSentByMe(p,v[N]);break}}}_updateLatestMessageSentByPeer(p){var B;const v=Array.from(((B=this._messagesByConversation.get(p))===null||B===void 0?void 0:B.values())||[]);if(v.length!==0&&p.startsWith("C2C")){for(let N=v.length-1;N>=0;N--)if(v[N].flow==="in"){this._setLatestMsgSentByPeer(p,v[N]);break}}}_getUniqueIdOfMessage(p){const{from:B,to:v,random:N,sequence:O,time:z}=p;return`${B}-${v}-${N}-${O}-${z}`}_setLatestMsgSentByPeer(p,B){this._latestMessageSentByPeerMap.set(p,B)}_setLatestMsgSentByMe(p,B){this._latestMessageSentByMeMap.set(p,B)}getLatestMsgSentByPeer(p){return this._latestMessageSentByPeerMap.get(p)}getLatestMsgSentByMe(p){return this._latestMessageSentByMeMap.get(p)}addRandomOfSentMessage(p){this._randomOfSentMessageList.add(p)}removeRandomOfSentMessage(p){this._randomOfSentMessageList.delete(p)}updateNickAndAvatarOfSentMessage(p){const{conversationID:B="",latestAvatar:v,latestNick:N,isSentByMe:O=!0}=p,z=this._messagesByConversation.get(B);if(!z)return;const X=Array.from(z.values()),nA=O?"out":"in";X.forEach(DA=>{const{nick:GA,avatar:VA,flow:ee}=DA;ee===nA&&(GA!==N&&(DA.nick=N),VA!==v&&(DA.avatar=v))})}isInMessageList(p){var B;const{conversationID:v}=p;if(!v||!this._messagesByConversation.has(v))return!1;const N=this._getUniqueIdOfMessage(p);return(B=this._messagesByConversation.get(v))===null||B===void 0?void 0:B.has(N)}isMessageSentByCurrentInstance(p){const{random:B}=p;return this._randomOfSentMessageList.has(B)}getContinuousMessagesByConversation(){return this._messagesByConversation}getLocalMessageList(p){const B=this._messagesByConversation.get(p);return B?[...B.values()]:[]}getSparseMessageList(p){const B=this._sparseMessagesByConversation.get(p);return B?[...B.values()]:[]}_reset(){this._messagesByConversation.clear(),this._latestMessageSentByPeerMap.clear(),this._latestMessageSentByMeMap.clear(),this._randomOfSentMessageList.clear()}_dispose(){this._reset(),ye.notificationCenter.unSubscribeInnerEvent(Ii.LOGOUT,this._reset,this),ye.notificationCenter.unSubscribeInnerEvent(Ii.DESTROY,this._dispose,this)}};function aa(p,B){const v=$g.getConversation(p);if(v?.lastMessage){const{lastMessage:N}=v,{lastTime:O,lastSequence:z,version:X}=N,{time:nA,sequence:DA,messageVersion:GA,elements:VA,cloudCustomData:ee}=B;O===nA&&z===DA&&X!==GA&&(N.type=VA[0].type,N.payload=VA[0].content,N.messageForShow=qI(N.type,N.payload),N.cloudCustomData=ee,N.version=GA,$g.updateConversation(p,{lastMessage:N}))}}class tc{init(){js.getInstance().registerApi({apiName:"modifyMessage",context:this})}modifyMessage(B){return pA(this,void 0,void 0,function*(){const{to:v,payload:N,sequence:O,conversationType:z,random:X,time:nA,from:DA,type:GA}=B;if(this._canModifyMessageElement(GA)){const VA=B?._elements||[];VA.length>=1&&(VA[0].type=GA,VA[0].content=N)}try{let VA=null,ee=null;if(z===dr.CONV_C2C?VA=yield br(B):z===dr.CONV_GROUP&&(VA=yield nl(B)),VA){let Ee=`${z}${v}`;return v===qn()&&z===dr.CONV_C2C&&(Ee=`${z}${DA}`),ee={conversationType:z,from:DA,to:v,time:nA,random:X,sequence:O,elements:VA?.elements,cloudCustomData:VA?.cloudCustomData,messageVersion:VA?.messageVersion,conversationID:Ee},this._handleModifyMessageSuccess(ee),{code:0,data:{message:B},successLog:{message:`to:${v}`}}}}catch(VA){const{errorCode:ee}=VA||{};throw new rs({functionName:"modifyMessage",code:ee,moreMessage:`to:${v}`})}})}_handleModifyMessageSuccess(B){const{conversationID:v}=B,{isUpdated:N,message:O}=ye.message.messageDataHandler.modifyConversationMessage(v,B);N===!0&&ye.notificationCenter.emitOuterEvent(Dn.MESSAGE_MODIFIED,{name:Dn.MESSAGE_MODIFIED,data:[O]}),ye.notificationCenter.emitInnerEvent(Ii.MESSAGE_MODIFIED,{conversationID:v,message:O}),aa(v,B)}_canModifyMessageElement(B){return[Xa.MSG_TEXT,Xa.MSG_CUSTOM,Xa.MSG_LOCATION,Xa.MSG_FACE].includes(B)}}class lg{init(){const{notificationCenter:B}=ye,{InnerEventSubType:v}=B;tn.getInstance().registerWorkflowStep(nr.RECEIVE_C2C_NEW_MESSAGE,xt.HANDLE_C2C_NEW_MESSAGE,this._handleC2CMessagePush,this),tn.getInstance().registerWorkflowStep(nr.RECEIVE_C2C_NEW_MESSAGE,xt.EMIT_C2C_MESSAGE_EVENT,this._emitMessageEventsAfterReceiveNewMessage,this),tn.getInstance().registerWorkflowStep(nr.SYNC_SERVER_INFO_AFTER_RE_ONLINE,xt.EMIT_C2C_MESSAGE_EVENT,this._emitMessageEventsAfterSyncUnreadMessage,this),B.subscribeInnerEvent(Ii.MESSAGE_PUSH,v.C2C_REALTIME_MESSAGE,this._executeReceiverNewMessageWorkFlow,this),B.subscribeInnerEvent(Ii.MESSAGE_PUSH,v.C2C_MESSAGE_MODIFIED,this._handleC2CMessageModify,this),B.subscribeInnerEvent(Ii.DESTROY,this._dispose,this)}_executeReceiverNewMessageWorkFlow(B){tn.getInstance().executeWorkflow(nr.RECEIVE_C2C_NEW_MESSAGE,B)}_handleC2CMessagePush(B){const v=B.data||{},{messageDataHandler:N}=ye.message||{},O=[],z=new Map;return v.C2cMsgArray.forEach(X=>{const nA=this._generateC2CMessage(X);this._updateMessageProfile(nA);let DA=nA.isModified===1;N.isMessageSentByCurrentInstance(nA)?nA.isModified=DA:DA=!1,nA._onlineOnlyFlag?N.isMessageSentByCurrentInstance(nA)||O.push(nA):ol(nA)&&(N.storeConversationMessage(nA)&&Gc({conversationUpdateFields:z,message:nA}),N.isMessageSentByCurrentInstance(nA)&&!DA||O.push(nA))}),{conversationUpdateFieldList:[...z.values()],messages:O}}_emitMessageEventsAfterReceiveNewMessage(B){var v;const{messages:N=[]}=((v=B.result)===null||v===void 0?void 0:v[xt.HANDLE_C2C_NEW_MESSAGE])||{};this._emitMessageEvents(N)}_emitMessageEventsAfterSyncUnreadMessage(B){var v;const{messages:N=[]}=((v=B.result)===null||v===void 0?void 0:v[xt.UNREAD_MESSAGE_SYNC])||{};this._emitMessageEvents(N)}_emitMessageEvents(B){const v=B?.filter(O=>O?.isModified===!0)||[];v.length>0&&ye.notificationCenter.emitOuterEvent("onMessageModified",{name:"onMessageModified",data:v});const N=B?.filter(O=>!O?.isModified);N.length>0&&ye.notificationCenter.emitOuterEvent("onMessageReceived",{name:"onMessageReceived",data:N})}_generateC2CMessage(B){const v=dr.CONV_C2C,N=Nc(B),O=ye.message.messageFactory.createMessage(Object.assign(Object.assign({},N),{conversationType:v,flow:ro.IN})),{elements:z}=N;return O.setElement(z),O}_updateMessageProfile(B){var v;const{messageDataHandler:N}=ye.message||{},O=(v=ye.store.get("login"))===null||v===void 0?void 0:v.userId,{from:z,nick:X,avatar:nA,conversationID:DA=""}=B;if(z!==O){const GA=N.getLatestMsgSentByPeer(DA);if(GA){const{nick:VA,avatar:ee}=GA;r(X)||r(nA)?(B.nick=l(VA)?VA:B.nick,B.avatar=l(ee)?ee:B.avatar):X===VA&&nA===ee||(N.updateNickAndAvatarOfSentMessage({conversationID:DA,latestNick:X,latestAvatar:nA,isSentByMe:!1}),this._updateConversationUserProfile({conversationID:DA,nick:X,avatar:nA}))}}else{const GA=N.getLatestMsgSentByMe(DA);!GA||X===GA.nick&&nA===GA.avatar||N.updateNickAndAvatarOfSentMessage({conversationID:DA,latestNick:X,latestAvatar:nA,isSentByMe:!0})}}_updateConversationUserProfile(B){const{conversationID:v,nick:N,avatar:O}=B,z=$g.getConversation(v),{userProfile:X={}}=z||{};X.avatar===O&&X.nick===N||$g.updateConversation(v,{userProfile:Object.assign(Object.assign({},X),{nick:N,avatar:O})})}_updateMessageListDueToModify(B){const{conversationID:v}=B,{isUpdated:N,message:O}=ye.message.messageDataHandler.modifyConversationMessage(v,B);N===!0&&ye.notificationCenter.emitOuterEvent("onMessageModified",{name:"onMessageModified",data:[O]}),ye.notificationCenter.emitInnerEvent("ModifyMessageSuccess",B),aa(v,B)}_handleC2CMessageModify(B){B.C2cMsgModNotifys.forEach(v=>{var N;const O=dr.CONV_C2C;let z=XI(v);const{to:X,from:nA}=z;let DA=`${O}${X}`;X===((N=ye.store.get("login"))===null||N===void 0?void 0:N.userId)&&(DA=`${O}${nA}`),z=Object.assign({conversationType:O,conversationID:DA},z),this._updateMessageListDueToModify(z)})}_dispose(){const{notificationCenter:B}=ye,{InnerEventSubType:v}=B;ye.notificationCenter.unSubscribeInnerEvent(Ii.MESSAGE_PUSH,v.C2C_REALTIME_MESSAGE,this._handleC2CMessagePush,this),ye.notificationCenter.unSubscribeInnerEvent(Ii.MESSAGE_PUSH,v.C2C_MESSAGE_MODIFIED,this._handleC2CMessageModify,this),ye.notificationCenter.unSubscribeInnerEvent(Ii.DESTROY,this._dispose,this)}}class mI{init(){const{notificationCenter:B}=ye,{InnerEventSubType:v}=B;tn.getInstance().registerWorkflowStep(nr.RECEIVE_GROUP_NEW_MESSAGE,xt.HANDLE_GROUP_NEW_MESSAGE,this._handleGroupMessagePush,this),tn.getInstance().registerWorkflowStep(nr.RECEIVE_GROUP_NEW_MESSAGE,xt.EMIT_GROUP_MESSAGE_EVENT,this._emitMessageEvents,this),B.subscribeInnerEvent(Ii.MESSAGE_PUSH,v.GROUP_REALTIME_MESSAGE,this._executeReceiverNewMessageWorkFlow,this),B.subscribeInnerEvent(Ii.MESSAGE_PUSH,v.GROUP_MESSAGE_MODIFIED,this._handleGroupMessageModify,this),B.subscribeInnerEvent(Ii.DESTROY,this._dispose,this)}_executeReceiverNewMessageWorkFlow(B){this._canExecuteReceiverNewMessageWorkFlow(B)&&tn.getInstance().executeWorkflow(nr.RECEIVE_GROUP_NEW_MESSAGE,B)}_handleGroupMessagePush(B){const v=B.data||{},{messageDataHandler:N}=ye.message,O=[],z=new Map,X=v?.GroupMsgArray;return X?.forEach(nA=>{if(nA.GroupInfo.NotVisible===1)return;const DA=this._generateGroupMessage(nA);this.updateMessageProfile(DA);let GA=DA.isModified===1;N.isMessageSentByCurrentInstance(DA)?DA.isModified=GA:GA=!1,DA._onlineOnlyFlag?N.isMessageSentByCurrentInstance(DA)||O.push(DA):ol(DA)&&N.storeConversationMessage(DA)&&(O.push(DA),Gc({conversationUpdateFields:z,message:DA}))}),{conversationUpdateFieldList:[...z.values()],messages:O}}_emitMessageEvents(B){var v;const{messages:N}=((v=B.result)===null||v===void 0?void 0:v[xt.HANDLE_GROUP_NEW_MESSAGE])||{},O=N?.filter(X=>X?.isModified===!0)||[];O.length>0&&ye.notificationCenter.emitOuterEvent("onMessageModified",{name:"onMessageModified",data:O});const z=N?.filter(X=>!X?.isModified)||[];z.length>0&&ye.notificationCenter.emitOuterEvent("onMessageReceived",{name:"onMessageReceived",data:z})}_generateGroupMessage(B){const v=dr.CONV_GROUP,N=co(B),O=ye.message.messageFactory.createMessage(Object.assign(Object.assign({},N),{conversationType:v,flow:ro.IN})),{elements:z}=N;return O.setElement(z),O}updateMessageProfile(B){var v;const{messageDataHandler:N}=ye.message||{},O=(v=ye.store.get("login"))===null||v===void 0?void 0:v.userId,{from:z,nick:X,avatar:nA,conversationID:DA="",_elements:GA}=B;if(z===O){const VA=N.getLatestMsgSentByMe(DA);!VA||X===VA.nick&&nA===VA.avatar||N.updateNickAndAvatarOfSentMessage({conversationID:DA,latestNick:X,latestAvatar:nA,isSentByMe:!0})}else if(z===hs.CONV_SYSTEM){const{operationType:VA,memberInfoList:ee,operatorInfo:Ee}=GA;let Ke={};if(Rs(ee)?Rs(Ee)||(Ke=Ee):[sa.JOINED,sa.KICKED,sa.ADMIN_SET,sa.ADMIN_CANCELED].includes(VA)&&(Ke=Object.assign({},ee[0])),!Rs(Ke)){const{nick:ot="",avatar:at=""}=Ke;B.nick=ot,B.avatar=at}}}_updateMessageListDueToModify(B){const{conversationID:v}=B,{isUpdated:N,message:O}=ye.message.messageDataHandler.modifyConversationMessage(v,B);N===!0&&ye.notificationCenter.emitOuterEvent("onMessageModified",{name:"onMessageModified",data:[O]}),aa(v,B)}_handleGroupMessageModify(B){B.GroupMsgModNotifys.forEach(v=>{const N=dr.CONV_GROUP;let O=$I(v);const{topicID:z,groupID:X}=O,nA=z||X,DA=`${N}${nA}`;O=Object.assign({conversationType:N,conversationID:DA,to:nA},O),this._updateMessageListDueToModify(O)})}_dispose(){const{notificationCenter:B}=ye,{InnerEventSubType:{GROUP_REALTIME_MESSAGE:v,GROUP_MESSAGE_MODIFIED:N}}=B;B.unSubscribeInnerEvent(Ii.MESSAGE_PUSH,v,this._handleGroupMessagePush,this),B.unSubscribeInnerEvent(Ii.MESSAGE_PUSH,N,this._handleGroupMessageModify,this),B.unSubscribeInnerEvent(Ii.DESTROY,this._dispose,this)}_canExecuteReceiverNewMessageWorkFlow(B){var v,N;const{GroupId:O,GroupType:z}=((N=(v=B?.GroupMsgArray)===null||v===void 0?void 0:v[0])===null||N===void 0?void 0:N.GroupInfo)||{},X=z===fE.GRP_AVCHATROOM;return!(!Za.getGroup(O)&&X)}}var LE=new class{constructor(){this.c2cMessageReceiver=new lg,this.groupMessageReceiver=new mI}init(){this.c2cMessageReceiver.init(),this.groupMessageReceiver.init()}};const Pu={createCustomMessage:{to:{required:!0,rules:["string"],allowEmpty:!1},conversationType:{required:!0,rules:["string"],allowEmpty:!1},payload:{required:!0,rules:["object"],allowEmpty:!1},cloudCustomData:{required:!1,rules:["string"],allowEmpty:!1},priority:{required:!1,rules:["string"],allowEmpty:!1},customModerationConfigurationID:{required:!1,rules:["string"],allowEmpty:!1}},sendMessage:[{key:"message",required:!0,rules:["object"],allowEmpty:!1},{key:"options",required:!1,rules:["object"],allowEmpty:!1}],createTextMessage:{to:{required:!0,rules:["string"],allowEmpty:!1},conversationType:{required:!0,rules:["string"],allowEmpty:!1,customValidator:p=>!(!p.startsWith("C2C")&&!p.startsWith("GROUP"))||"conversationType is invalid."},payload:{required:!0,rules:["object"],allowEmpty:!1,customValidator:p=>function(B){var v;return typeof B?.text!="string"||typeof B.text=="string"&&((v=B?.text)===null||v===void 0?void 0:v.length)===0?"payload.text must be a string":!0}(p)}}},xu={createCustomMessage:!0,sendMessage:!0,modifyMessage:!0};var fI=new class{constructor(){this._historyMessageListFetchAnchors=new Map,this.completedHistoryConversations=new Set}getGroupRoamingMessagesByAnchor(p){return pA(this,void 0,void 0,function*(){try{const{conversationID:B,count:v,direction:N,sequence:O,messageSequenceList:z,shouldMarkCompleted:X=!1,getType:nA}=p,DA=B.replace(_g.CONV_GROUP,""),GA=[];let VA=O;if(N===yc.BACKWARD){if(typeof O!="number")return{messageList:[],hasNoMoreHistoryMessage:!1,nextReqMessageIDFromServer:""};VA=O+v-1}const ee=yield Ll({groupID:DA,count:v,messageSequence:VA,messageSequenceList:z,getType:nA});if(ee){const{RspMsgList:Ee=[],NextReqMsgSeq:Ke=0,IsFinished:ot,InvisibleMsgSeq:at}=ee,kt=`groupID:${DA} sequence:${O} reqSeq:${VA} direction:${N} complete:${ot} nextSequence:${Ke} remoteMsgCount:${Ee.length} invisibleSequenceList:${at}`,Yt=[];for(let zi=0;zi=O),Ui&&X&&this.completedHistoryConversations.add(B);const ao=QI(Yt);return ye.ssoLog.info("getGroupRoamingMessagesByAnchor",kt),{messageList:ao,invisibleSequenceList:at,nextReqMessageIDFromServer:Ke,hasNoMoreHistoryMessage:Ui,serverGroupTipList:GA}}}catch(B){const{errorCode:v,errorInfo:N}=B||{};throw new rs({code:v,message:N})}})}clearHistoryMessageListFetchAnchors(p){this._historyMessageListFetchAnchors.delete(p)}isHistoryMessageFetchCompleted(p){return this.completedHistoryConversations.has(p)}_parseMessage(p){var B;const v=_g.CONV_GROUP;p.Event===4&&(p.MsgBody.MsgType=hs.MSG_GRP_TIP);const N=co(p),O=hI.createMessage(Object.assign(Object.assign({},N),{conversationType:v,flow:"in"}));return wc(((B=N.elements)===null||B===void 0?void 0:B.content)||{},O),O.setElement(N.elements),O}getC2CRoamingMessagesByAnchor(p){return pA(this,void 0,void 0,function*(){var B;try{const{conversationID:v,count:N,messageID:O,time:z,direction:X,shouldMarkCompleted:nA=!1}=p;let DA=z,GA="";if(!z){const Ee=O?ye.message.messageDataHandler.findMessage(O):null;if(DA=Ee?.time||0,O&&this._historyMessageListFetchAnchors.has(v)){const Ke=this._historyMessageListFetchAnchors.get(v);DA=Ke.lastMessageTime,GA=Ke.messageKey}}const VA=v.replace(_g.CONV_C2C,""),ee=yield bc({count:N,lastMessageTime:DA,messageKey:GA,peerAccount:VA,direction:X});if(ee){const{MsgList:Ee=[],Complete:Ke,MsgKey:ot,LastMsgTime:at}=ee;this._historyMessageListFetchAnchors.set(v,{messageKey:ot,lastMessageTime:at});const kt=[];for(let zi=0;zi{const{tag:O,value:z}=N;O&&O.indexOf(Ig)>-1?v.profileCustomField.push({key:O,value:z}):Ul.has(O)&&(v[Ul.get(O)]=z)}),Object.assign(Object.assign({},Ya),v)}parseProfileItem(p=[]){const B=[];return p.forEach(v=>{B.push({tag:v.Tag,value:v.Value})}),B}parseProfileList(p=[]){const B=[];return p.forEach(v=>{B.push({tag:v.Tag,value:v.ValueBytes})}),B}convertParamsToProfile(p){const B=[];return Object.keys(p).forEach(v=>{v!==ar&&B.push({tag:Lr[v.toUpperCase()],value:p[v]})}),p.profileCustomField&&h(p.profileCustomField)&&p.profileCustomField.forEach(v=>{B.push({tag:v.key,value:v.value})}),B}normalizeProfileFields(p){const B={},v=[];return p.forEach(N=>{const{tag:O,value:z}=N;if(O&&O.indexOf(Ig)>-1&&v.push({key:O,value:z}),Ul.has(O)&&z!==void 0){const X=Ul.get(O);B[X]=z}}),v.length>0&&(B.profileCustomField=v),B}};const{generateProtocolData:yI}=ye.common;function eu(p){return pA(this,void 0,void 0,function*(){const B="profile.portrait_get_all",v={From_Account:qn(),UserItem:[]};p.forEach(X=>{v.UserItem.push({CustomSequence:0,StandardSequence:0,To_Account:X})});const N=yI({servcmd:B,data:v}),O=`${N.head.seq}${B}`,z=yield ye.channel.sendPacket(N,{requestId:O});if(z)return function(X){const{ActionStatus:nA,ErrorCode:DA,ErrorDisplay:GA,ErrorInfo:VA,UserProfileItem:ee}=X,Ee=[];return ee.map(Ke=>{const{To_Account:ot,CustomSequence:at,ResultCode:kt,ResultInfo:Yt,StandardSequence:Ui,ProfileItem:ao}=Ke,zi=Ca.parseProfileItem(ao);Ee.push({userId:ot,customSequence:at,resultCode:kt,resultInfo:Yt,standardSequence:Ui,profileItem:zi})}),{actionStatus:nA,errorCode:DA,errorDisplay:GA,errorInfo:VA,userProfile:Ee}}(z)})}function ha(p){return Aa.getFriendMap().has(p)}const{isEmpty:gl}=ye.utils;class UE{constructor(){this._strangerProfileMap=new Map}init(){js.getInstance().registerApi({apiName:"getMyProfile",context:this}),js.getInstance().registerApi({apiName:"getUserProfile",context:this}),js.getInstance().registerApi({apiName:"updateMyProfile",context:this}),this.createProfile=Ca.createProfile.bind(Ca);const{notificationCenter:B}=ye;tn.getInstance().registerWorkflowStep(nr.SYNC_SERVER_INFO_AFTER_LOGIN,xt.USER_PROFILE_SYNC,this.getMyProfileCacheThenServer,this),B.subscribeInnerEvent(Ii.MESSAGE_PUSH,B.InnerEventSubType.PROFILE_MODIFIED,this._onProfileDataModify,this),B.subscribeInnerEvent(Ii.LOGOUT,this._reset,this),B.subscribeInnerEvent(Ii.DESTROY,this._dispose,this)}getMyProfile(){return pA(this,void 0,void 0,function*(){try{const B=qn(),v=yield eu([B]);if(v){const N=this._handleProfileFormResponse(v)[0];return Aa.getUserProfileMap().set(B,N),{code:0,data:N}}}catch(B){const{errorCode:v,errorInfo:N}=B;throw new rs({functionName:"getMyProfile",code:v,message:N})}})}getUserProfile(B){return pA(this,void 0,void 0,function*(){try{let{userIDList:v}=B;const{userIdListToRequest:N,profileFromCache:O}=this._filterRequestAndCacheUsers(v);if(N.length===0)return{code:0,data:O,successLog:{message:`userIDList.length:${v.length}`}};N.length>Fg&&(ye.ssoLog.warn("getUserProfile","userIdListToRequest.length > 1000"),N.length=Fg);const{data:z,error:X}=yield this._batchFetchUserProfiles(N),nA=N.length,DA=z.length,GA=nA-DA;if(O.length===0&&nA===GA&&!gl(X))throw X;if(h(z))return z.forEach(ee=>{ha(ee.userID)?Aa.getUserProfileMap().set(ee.userID,ee):this._strangerProfileMap.set(ee.userID,ee)}),{code:0,data:z.concat(O),successLog:{message:`getUserProfile query:${nA} success:${DA} fail:${GA} from cache:${O.length}`}}}catch(v){throw new rs(v)}})}getMyProfileCacheThenServer(){return pA(this,void 0,void 0,function*(){const B=qn(),v=Aa.getUserProfileMap().has(B);return v?{code:0,data:v}:this.getMyProfile()})}updateMyProfile(B){return pA(this,void 0,void 0,function*(){const v=qn(),N={};for(const z in B)B[z]!==void 0&&(N[z]=B[z]);const O=Ca.convertParamsToProfile(N);try{yield function(GA){return pA(this,void 0,void 0,function*(){const VA="profile.portrait_set",ee=yI({servcmd:VA,data:GA}),Ee=`${ee.head.seq}${VA}`,Ke=yield ye.channel.sendPacket(ee,{requestId:Ee});if(Ke){const{ActionStatus:ot,ErrorCode:at,ErrorDisplay:kt,ErrorInfo:Yt}=Ke;return{actionStatus:ot,errorCode:at,errorDisplay:kt,errorInfo:Yt}}})}({From_Account:v,ProfileItem:O});const X=Aa.getUserProfile(v);let nA;nA=X?Object.assign(Object.assign({},X),N):Ca.createProfile(v,O);const DA=!vg(X,nA,["lastUpdatedTime"]);return nA.lastUpdatedTime=Date.now(),Aa.getUserProfileMap().set(v,nA),DA&&this._emitProfileUpdated(nA),{code:0,data:nA,successLog:{message:`profileArray: ${ye.utils.safeStringify(O)}`}}}catch(z){const{errorCode:X,errorInfo:nA}=z;throw new rs({functionName:"updateMyProfile",code:X,message:nA,moreMessage:`params: ${ye.utils.safeStringify(B)}`})}})}updateMyNickAndAvatar(B){return pA(this,void 0,void 0,function*(){const v=qn(),N=Date.now(),O=Aa.getUserProfile(v);let z={};z=O?Object.assign(O,B):Ca.createProfile(v,B),z.lastUpdatedTime=N,Aa.getUserProfileMap().set(v,z)})}_onProfileDataModify(B){const v=function(z){const{Profile_Account:X,PushType:nA,ProfileList:DA}=z;return{userId:X,pushType:nA,profileList:Ca.parseProfileList(DA)}}(B.ProfileDataMod[0]);if(gl(v))return;const{isProfileUpdated:N,profile:O}=this._handleProfileModified(v);N&&this._emitProfileUpdated(O)}_emitProfileUpdated(B){ye.notificationCenter.emitInnerEvent(Ii.PROFILE_UPDATE,{name:Ii.PROFILE_UPDATE,data:[B]}),ye.notificationCenter.emitOuterEvent(Dn.PROFILE_UPDATED,{name:Dn.PROFILE_UPDATED,data:[B]}),$g.updateConversation(`C2C${B?.userID}`,{userProfile:B})}_dispose(){const{notificationCenter:B}=ye;B.unSubscribeInnerEvent(Ii.LOGOUT,this._reset,this),B.unSubscribeInnerEvent(Ii.MESSAGE_PUSH,B.InnerEventSubType.PROFILE_MODIFIED,this._onProfileDataModify,this),B.unSubscribeInnerEvent(Ii.DESTROY,this._dispose,this),this._reset()}_handleProfileModified(B){const{userId:v,profileList:N}=B,O=Aa.getUserProfile(v);if(!(qn()===v||ha(v)&&O))return{isProfileUpdated:!1,profile:null};const z=Ca.normalizeProfileFields(N),X=Object.keys(z).some(VA=>VA===ar?this._isCustomFieldChanged(O.profileCustomField,z.profileCustomField):O[VA]!==z[VA]);if(!X)return{isProfileUpdated:!1,profile:O};const nA=Date.now(),DA=Object.prototype.hasOwnProperty.call(z,ar)?this._mergeProfileCustomField(O.profileCustomField,z.profileCustomField):O.profileCustomField,GA=Object.assign(Object.assign(Object.assign({},O),z),{profileCustomField:DA,lastUpdatedTime:nA});return Aa.getUserProfileMap().set(v,GA),{isProfileUpdated:X,profile:GA}}_filterRequestAndCacheUsers(B){const v=[],N=[];return B.forEach(O=>{const z=Aa.getUserProfileMap().has(O);ha(O)&&z?N.push(Aa.getUserProfile(O)):this._isStrangerAndProfileValid(O)?N.push(this._strangerProfileMap.get(O)):v.push(O)}),{userIdListToRequest:v,profileFromCache:N}}_handleProfileFormResponse(B){const{userProfile:v}=B;if(!Array.isArray(v))return[];const N=v.filter(z=>z.userId!=="@TLS#NOT_FOUND"&&z.userId!==""&&!gl(z.profileItem)),O=Date.now();return N.map(z=>{const X=Ca.createProfile(z.userId,z.profileItem);return X.lastUpdatedTime=O,X})}_isStrangerAndProfileValid(B){var v;if(!ha(B)){const{lastUpdatedTime:N=0}=this._strangerProfileMap.get(B)||{},O=((v=ye.store.get("cloudConfig"))===null||v===void 0?void 0:v.stranger_profile_expiration_time)||6e5;return Date.now()-N<=O}return!1}_chunkUserIDList(B,v){return Array.from({length:Math.ceil(B.length/v)},(N,O)=>B.slice(O*v,(O+1)*v))}_batchFetchUserProfiles(B){return pA(this,void 0,void 0,function*(){const v=[],N=[];let O={};return this._chunkUserIDList(B,100).forEach(z=>{v.push(eu(z))}),(yield Promise.allSettled(v)).forEach(z=>{if(z.status==="fulfilled"){const X=z.value,nA=this._handleProfileFormResponse(X);h(nA)&&N.push(...nA)}else if(z.status==="rejected"){const{code:X,message:nA}=z.reason||{};O={errorCode:X,message:nA}}}),{data:N,error:O}})}_isCustomFieldChanged(B=[],v=[]){if(!h(v)||v.length===0)return!1;if(!h(B)||B.length===0)return!0;const N=new Map(B.map(O=>[O.key,O.value]));return v.some(O=>N.get(O.key)!==O.value)}_mergeProfileCustomField(B=[],v=[]){const N=h(B)?B.map(O=>Object.assign({},O)):[];return h(v)&&v.length!==0&&v.forEach(({key:O,value:z})=>{const X=N.find(nA=>nA.key===O);X?X.value=z:N.push({key:O,value:z})}),N}_reset(){Aa.getUserProfileMap().clear(),this._strangerProfileMap.clear()}}const tu=new Map,FE=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"];for(let p=0,B=FE.length;p>(-2*z&6)):0)O="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(O);try{return decodeURIComponent(escape(v))}catch(N){return console.warn(N),""}}const{isEmpty:iu}=ye.utils,{generateProtocolData:Ft}=ye.common;function Yu(p){return pA(this,void 0,void 0,function*(){const B="im_open_status.ws_get_user_status",v=Ft({servcmd:B,data:{To_Account:p}}),N=`${v.head.seq}${B}`,O=yield ye.channel.sendPacket(v,{requestId:N});if(O)return function(z){const{ErrorCode:X,ErrorInfo:nA,ErrorList:DA=[],UserStatusList:GA=[]}=z,VA=GA.map(Ee=>{const{To_Account:Ke,Status:ot,CustomStatus:at,Detail:kt=[]}=Ee;return{userID:Ke,statusType:ot,customStatus:Jr(at),onlineDevices:Vu(kt)}}),ee=DA.map(Ee=>{const{To_Account:Ke,Invalid_Account:ot,ErrorCode:at,ErrorInfo:kt}=Ee;return{userID:iu(ot)?Ke:ot,code:at,message:kt}});return{errorCode:X,errorInfo:nA,successUserList:VA,failureUserList:ee}}(O)})}function Vu(p){const B=[];return p?.forEach(v=>{const{Platform:N,Status:O}=v;O==="Online"&&B.push(N)}),B}class mC{constructor(){this._customStatus=""}init(){const{notificationCenter:B}=ye;js.getInstance().registerApi({apiName:"getUserStatus",context:this}),js.getInstance().registerApi({apiName:"setSelfStatus",context:this}),js.getInstance().registerApi({apiName:"subscribeUserStatus",context:this}),js.getInstance().registerApi({apiName:"unsubscribeUserStatus",context:this}),tn.getInstance().registerWorkflowStep(nr.SYNC_SERVER_INFO_AFTER_RE_ONLINE,xt.USER_STATUS_UPDATE,this._onReOnline,this),B.subscribeInnerEvent(Ii.MESSAGE_PUSH,B.InnerEventSubType.USER_STATUS_UPDATE,this._onUserStatusUpdate,this),B.subscribeInnerEvent(Ii.LOGOUT,this._reset,this),B.subscribeInnerEvent(Ii.DESTROY,this._dispose,this)}setSelfStatus(B){return pA(this,void 0,void 0,function*(){const v=qn(),{customStatus:N}=B;try{return yield function(O){return pA(this,void 0,void 0,function*(){const z="im_open_status.ws_set_custom_status",X=Ft({servcmd:z,data:{CustomStatus:O}}),nA=`${X.head.seq}${z}`,DA=yield ye.channel.sendPacket(X,{requestId:nA});if(DA){const{ErrorCode:GA,ErrorInfo:VA}=DA;return{errorCode:GA,errorInfo:VA}}})}(N),this._customStatus=N,{code:0,data:{userID:v,statusType:ic,customStatus:N},successLog:{message:`customStatus: ${N}`}}}catch(O){const{errorCode:z,errorInfo:X}=O;throw new rs({functionName:"setSelfStatus",code:z,message:X})}})}getUserStatus(B){return pA(this,void 0,void 0,function*(){const{userIDList:v=[]}=B;if(this._isOnlyMeInArray(v))return this._getMyStatus();const N=yield this._getUserStatus(v);return Object.assign(Object.assign({},N),{successLog:{message:`userIDList length: ${v.length}`}})})}setCustomStatus(B){const v=Jr(B);this._customStatus=v}subscribeUserStatus(B){return pA(this,void 0,void 0,function*(){try{const{userIDList:v=[]}=B;this._checkBusinessCapabilityBits("subscribeUserStatus");const N=this._getMaxUserCount("subscribe"),O=this._sliceUserIDList(v,N),z=yield function(nA){return pA(this,void 0,void 0,function*(){const{channel:DA}=ye,GA="im_open_status.ws_status_subscribe",VA=Ft({servcmd:GA,data:{To_Account:nA}}),ee=`${VA.head.seq}${GA}`;return yield DA.sendPacket(VA,{requestId:ee})})}(O),X=this._parseResponse(z);return{code:0,data:{failureUserList:X},successLog:{message:`userID length:${v.length} failCount: ${X.length}`}}}catch(v){const{errorCode:N}=v;throw new rs({functionName:"subscribeUserStatus",code:N})}})}unsubscribeUserStatus(B){return pA(this,void 0,void 0,function*(){try{this._checkBusinessCapabilityBits("unsubscribeUserStatus");const{userIDList:v=[]}=B,N=this._getMaxUserCount("unsubscribe"),O=this._sliceUserIDList(v,N),z=yield function(nA){return pA(this,void 0,void 0,function*(){const{channel:DA}=ye,GA="im_open_status.ws_status_unsubscribe";let VA={};VA=nA.length===0?{UnsubscribeAll:1}:{To_Account:nA};const ee=Ft({servcmd:GA,data:VA}),Ee=`${ee.head.seq}${GA}`;return yield DA.sendPacket(ee,{requestId:Ee})})}(O),X=this._parseResponse(z);return{code:0,data:{failureUserList:X},successLog:{message:`userID length:${v.length} failCount: ${X.length}`}}}catch(v){const{errorCode:N}=v;throw new rs({functionName:"unsubscribeUserStatus",code:N})}})}_onUserStatusUpdate(B){const{UserStatusList:v=[]}=B||{},N=v.map(O=>{const{To_Account:z,Status:X,CustomStatus:nA,Platform:DA}=O,GA={userID:z,statusType:X,customStatus:Jr(nA)};return DA&&(GA.onlineDevices=DA),GA});this._emitUserStatusUpdatedEvent(N)}_onReOnline(B){const v=Jr(B.data.customStatus);if(this._customStatus===v)return;this._customStatus=v;const N={userID:qn(),statusType:ic,customStatus:v};this._emitUserStatusUpdatedEvent(N)}_emitUserStatusUpdatedEvent(B){ye.notificationCenter.emitOuterEvent(Dn.USER_STATUS_UPDATED,{name:Dn.USER_STATUS_UPDATED,data:B})}_sliceUserIDList(B,v){return B.slice(0,v)}_parseResponse(B){const{ErrorList:v=[]}=B;return v.map(N=>{const{To_Account:O,Invalid_Account:z,ErrorCode:X,ErrorInfo:nA}=N;return{userID:ye.utils.isEmpty(z)?O:z,code:X,message:nA}})}_checkBusinessCapabilityBits(B){if(!ye.store.get("commercialConfig").get(Rr))throw new rs({functionName:B,code:Lo.NO_USE,replacement1:B})}_getMaxUserCount(B){const v=ye.store.get("cloudConfig")||{},N={query:{key:"status_query_count",default:500},subscribe:{key:"status_sub_count",default:100},unsubscribe:{key:"status_unsub_count",default:100}},{key:O,default:z}=N[B],X=v[O]||z;return parseInt(X,10)}_getMyStatus(){return{code:0,data:{successUserList:[{userID:qn(),statusType:ic,customStatus:this._customStatus}],failureUserList:[]}}}_getUserStatus(B){return pA(this,void 0,void 0,function*(){try{this._checkBusinessCapabilityBits("getUserStatus");const v=this._getMaxUserCount("query"),N=this._sliceUserIDList(B,v),O=yield Yu(N),{successUserList:z,failureUserList:X}=O||{};return{code:0,data:{successUserList:z,failureUserList:X}}}catch(v){const{errorCode:N}=v;throw new rs({functionName:"getUserStatus",code:N})}})}_isOnlyMeInArray(B){const v=qn();return B.length===1&&B.indexOf(v)>-1}_dispose(){const{notificationCenter:B}=ye;B.unSubscribeInnerEvent(Ii.MESSAGE_PUSH,B.InnerEventSubType.USER_STATUS_UPDATE,this._onUserStatusUpdate,this),B.unSubscribeInnerEvent(Ii.DESTROY,this._dispose,this),B.unSubscribeInnerEvent(Ii.LOGOUT,this._reset,this),this._reset()}_reset(){this._customStatus=""}}const q={getUserProfile:{userIDList:{required:!0,rules:["array"],allowEmpty:!1}},updateMyProfile:{nick:{required:!1,rules:["string"],allowEmpty:!0},avatar:{required:!1,rules:["string"],allowEmpty:!0},gender:{required:!1,rules:["string"],allowEmpty:!0},selfSignature:{required:!1,rules:["string"],allowEmpty:!0},allowType:{required:!1,rules:["string"],allowEmpty:!0},birthday:{required:!1,rules:["number"],allowEmpty:!1},language:{required:!1,rules:["string"],allowEmpty:!0},messageSettings:{required:!1,rules:["string"],allowEmpty:!0},adminForbidType:{required:!1,rules:["string"],allowEmpty:!0},level:{required:!1,rules:["number"],allowEmpty:!1},role:{required:!1,rules:["number"],allowEmpty:!0},profileCustomField:{required:!1,rules:["array"],allowEmpty:!0,customValidator:function(p){for(const B of p){if(typeof B!="object")return"Each item in profileCustomField must be an object";if(typeof B?.key!="string")return"Each item.key in profileCustomField must be a string";if(!B?.key.startsWith(Ig))return'Each item.key in profileCustomField must start with "Tag_Profile_Custom"'}return!0}}},setSelfStatus:{customStatus:{required:!0,rules:["string"],allowEmpty:!0}},getUserStatus:{userIDList:{required:!0,rules:["array"],allowEmpty:!1}},subscribeUserStatus:{userIDList:{required:!0,rules:["array"],allowEmpty:!1}},unsubscribeUserStatus:{userIDList:{required:!1,rules:["array"],allowEmpty:!0}}},L={getMyProfile:!0,getUserProfile:!0,updateMyProfile:!0,setSelfStatus:!0,getUserStatus:!0,subscribeUserStatus:!0,unsubscribeUserStatus:!0};class oA{constructor(){this.userProfile=new UE,this.userStatus=new mC,this.userProfile.init(),this.userStatus.init(),Mc({auth:L,params:q})}}function G(p){const B=[];if(!l(p))return B;const v=p.length;if(v===0)return B;for(let N=v-1;N>=0;N--)p[N]==="1"&&B.push(2**(v-N-1));return B}var x,tA,uA;(function(p){p.NOT_START="notStart",p.PENDING="pending",p.RESOLVED="resolved",p.REJECTED="rejected"})(x||(x={})),function(p){p[p.C2C=1]="C2C",p[p.GROUP=2]="GROUP"}(tA||(tA={})),function(p){p[p.C2C=8]="C2C",p[p.GROUP=2]="GROUP"}(uA||(uA={}));class wA{constructor(){this._name="SyncConversationHandler",this._pagingStatus=x.NOT_START,this._pagingTimeStamp=0,this._pagingStartIndex=0,this._pagingPinnedTimeStamp=0,this._pagingPinnedStartIndex=0}init(){const{notificationCenter:B}=ye;tn.getInstance().registerWorkflowStep(nr.SYNC_SERVER_INFO_AFTER_RE_ONLINE,xt.CONVERSATION_RECOVER,this._syncConversationList,this),tn.getInstance().registerWorkflowStep(nr.SYNC_SERVER_INFO_AFTER_LOGIN,xt.CONVERSATION_LIST_SYNC,this._syncConversationListAfterLogin,this),B.subscribeInnerEvent(Ii.LOGOUT,this._reset,this),B.subscribeInnerEvent(Ii.DESTROY,this._dispose,this),ye.ssoLog.debug(`${this._name}.init`)}isSyncCompleted(){return this._pagingStatus===x.RESOLVED}_syncConversationListAfterLogin(){return pA(this,void 0,void 0,function*(){return this._pagingStatus=x.NOT_START,this._pagingTimeStamp=0,this._pagingStartIndex=0,this._pagingPinnedTimeStamp=0,this._pagingPinnedStartIndex=0,this._syncConversationList()})}_syncConversationList(){return pA(this,void 0,void 0,function*(){const{ssoLog:B,utils:{safeStringify:v}}=ye;B.debug("_syncConversationList","start");try{const N=yield this._pagingGetConversationList(!0);this._pagingStatus=x.RESOLVED;const{conversationList:O=[]}=N||{};return B.info("_syncConversationList",`success count:${O.length}`),N}catch(N){const O=new rs(N);B.error("_syncConversationList",`fail ${v(N)}`,{error:O})}})}_pagingGetConversationList(B){return pA(this,void 0,void 0,function*(){try{const v=[];this._pagingStatus=x.PENDING;const N=yield function(ee){return pA(this,void 0,void 0,function*(){const{fromAccount:Ee,pagingTimeStamp:Ke,pagingStartIndex:ot,pagingPinnedTimeStamp:at,pagingPinnedStartIndex:kt}=ee;return Zg({servcmd:"recentcontact.page_get",data:{AssistFlags:31,MsgAssistFlags:15,OrderType:1,From_Account:Ee,StartIndex:ot,TimeStamp:Ke,TopStartIndex:kt,TopTimeStamp:at}})})}({fromAccount:qn(),pagingTimeStamp:B?this._pagingTimeStamp:0,pagingStartIndex:B?this._pagingStartIndex:0,pagingPinnedTimeStamp:B?this._pagingPinnedTimeStamp:0,pagingPinnedStartIndex:B?this._pagingPinnedStartIndex:0}),{CompleteFlag:O,SessionItem:z=[],TimeStamp:X,StartIndex:nA,TopTimeStamp:DA,TopStartIndex:GA}=N||{};let VA=[];if(O===1&&(this._pagingStatus=x.RESOLVED),z.length>0&&(VA=this._getConversationOptions(z),v.push(...VA)),ye.notificationCenter.emitInnerEvent(Ii.SYNC_CONVERSATION_LIST,{conversationUpdateFieldList:VA}),this._pagingTimeStamp=X,this._pagingStartIndex=nA,this._pagingPinnedTimeStamp=DA,this._pagingPinnedStartIndex=GA,O!==1){const{conversationList:ee}=yield this._pagingGetConversationList(B);v.push(...ee)}return{conversationList:v}}catch(v){throw v}})}_getConversationOptions(B){const{utils:{isUndefined:v}}=ye,N=this._convertConversationKey(B);return this._filterValidConversations(N).map(O=>(v(O.lastMsg)&&(O.lastMsg={elements:[]}),O.type===tA.C2C?this._assembleC2COption(O):this._assembleGroupOption(O)))}_filterValidConversations(B){return B.filter(({type:v,userID:N})=>v===tA.C2C&&!function(O){let z;return O.startsWith(hs.CONV_C2C)&&(z=O.replace(hs.CONV_C2C,"")),z==="@TLS#ERROR"||z==="@TLS#NOT_FOUND"}(N)||v===2)}_assembleC2COption(B){var v,N,O,z,X,nA,DA,GA;const VA=this._createUserprofile(B);return{conversationID:`${hs.CONV_C2C}${B.userID}`,type:hs.CONV_C2C,lastMessage:{lastTime:B.time,lastSequence:B.sequence,fromAccount:B.lastC2CMsgFromAccount,type:!((v=B.lastMsg)===null||v===void 0)&&v.elements[0]?(N=B.lastMsg)===null||N===void 0?void 0:N.elements[0].type:null,payload:!((O=B.lastMsg)===null||O===void 0)&&O.elements[0]?this._amendLayersOverLimitProp(B.lastMsg.elements[0].content):null,cloudCustomData:((nA=(X=(z=B.lastMsg)===null||z===void 0?void 0:z.elements)===null||X===void 0?void 0:X[0])===null||nA===void 0?void 0:nA.cloudCustomData)||"",isRevoked:B.lastMessageFlag===uA.C2C,onlineOnlyFlag:!1,nick:"",nameCard:"",version:0,isPeerRead:this._computeIsPeerRead(B),revoker:((GA=(DA=B.lastMsg)===null||DA===void 0?void 0:DA.revokerInfo)===null||GA===void 0?void 0:GA.revoker)||null},unreadCount:0,userProfile:VA,peerReadTime:B.peerReadTime,isPinned:B.isPinned===1,customData:B.customMark||"",markList:G(B.standardMark),conversationGroupList:[],remark:B.friendRemark||"",messageRemindType:this._transMsgRemindType(B.messageRemindType)}}_createUserprofile(B){var v;const{userID:N,nick:O,peerAvatar:z}=B,X=[{tag:"Tag_Profile_IM_Nick",value:O},{tag:"Tag_Profile_IM_Image",value:z}];return(v=ye.user.userProfile)===null||v===void 0?void 0:v.createProfile(N,X)}_computeIsPeerRead(B){const v=qn(),{lastC2CMsgFromAccount:N,time:O,c2cPeerReadTime:z}=B;return N===v&&O<=z}_assembleGroupOption(B){var v,N,O,z,X;return{conversationID:`${hs.CONV_GROUP}${B.groupID}`,type:hs.CONV_GROUP,lastMessage:Object.assign(Object.assign({lastTime:B.time,lastSequence:B.sequence,fromAccount:B.msgGroupFromAccount},this._patchTypeAndPayload(B)),{cloudCustomData:((O=(N=(v=B.lastMsg)===null||v===void 0?void 0:v.elements)===null||N===void 0?void 0:N[0])===null||O===void 0?void 0:O.cloudCustomData)||"",isRevoked:B.lastMessageFlag===uA.GROUP,onlineOnlyFlag:!1,nick:B.msgGroupFromNickName||"",nameCard:B.msgGroupFromCardName||"",revoker:((X=(z=B.lastMsg)===null||z===void 0?void 0:z.revokerInfo)===null||X===void 0?void 0:X.revoker)||null}),groupProfile:{groupID:B.groupID,name:B.groupNick,avatar:B.groupImage,type:B.groupType,nextMessageSeq:B.nextMessageSeq},unreadCount:this._computeGroupUnreadCount(B),peerReadTime:0,isPinned:B.isPinned===1,version:0,customData:B.customMark||"",markList:G(B.standardMark),conversationGroupList:[],messageRemindType:this._transMsgRemindType(B.messageRemindType),subType:B.groupType}}_convertConversationKey(B){return B.map(v=>({type:v.Type,userID:v.To_Account,nick:v.C2cNick,peerAvatar:v.C2cImage,time:v.MsgTimeStamp,sequence:v.MsgSeq,lastC2CMsgFromAccount:v.LastC2cMsgFrom_Account,lastMsg:this._convertLastMsgKey(v.LastMsg),lastMessageFlag:v.LastMsgFlags,c2cPeerReadTime:v.C2cPeerReadTime,peerReadTime:v.C2cPeerReadTime,friendRemark:v.C2cRemark,isPinned:v.TopFlags,standardMark:v.StandardMark,customMark:v.CustomMark,messageRemindType:v.MsgRecvOption,groupID:v.ToAccount,groupNick:v.GroupNick,groupImage:v.GroupImage,groupType:v.GroupType,nextMessageSeq:v.GroupNextMsgSeq,msgGroupFromAccount:v.MsgGroupFrom_Account,msgGroupFromNickName:v.MsgGroupFromNickName,msgGroupFromCardName:v.MsgGroupFromCardName,unreadCount:v.UnreadMsgCount,noUnreadCount:v.GroupIgnoredUnreadSeqCount}))}_convertLastMsgKey(B){var v,N,O;const{utils:{isEmpty:z}}=ye;if(z(B))return null;let X="",nA=null;if(!z(B.GroupTips)){const{From_Account:DA,GroupName:GA}=((v=B.GroupTips)===null||v===void 0?void 0:v.GroupInfo)||{};X=hs.MSG_GRP_TIP,nA=Object.assign(Object.assign({},this._parseContent(X,B.GroupTips.MsgBody)),{groupProfile:{from:DA,groupName:GA}})}return B.MsgBody&&(X=(N=B.MsgBody[0])===null||N===void 0?void 0:N.MsgType,nA=this._parseContent(X,B.MsgBody[0])),{event:B.Event,elements:[{type:X,content:nA,cloudCustomData:B.CloudCustomData}],revokerInfo:{revoker:(O=B.RevokerInfo)===null||O===void 0?void 0:O.Revoker_Account}}}_parseContent(B,v){var N;if(!v)return v;const O=ye.message.messageFactory.getElementClass(B);return O?(N=O.parseServerPushElement(v))===null||N===void 0?void 0:N.content:v}_amendLayersOverLimitProp(B){const{LayersOverLimit:v}=B;return Do(B,["LayersOverLimit"]).layersOverLimit=v===1,B}_transMsgRemindType(B){let v="";return B===0?v=hs.MSG_REMIND_ACPT_AND_NOTE:B===1?v=hs.MSG_REMIND_DISCARD:B===2?v=hs.MSG_REMIND_ACPT_NOT_NOTE:B===3&&(v=hs.NOT_RECEIVE_OFFLINE_PUSH_EXCEPT_AT),v}_patchTypeAndPayload(B){var v;const{utils:{isUndefined:N}}=ye,{event:O,elements:z=[]}=B.lastMsg||{};return N(O)?{type:z[0]?z[0].type:null,payload:z[0]?this._amendLayersOverLimitProp(z[0].content):null}:{type:hs.MSG_GRP_TIP,payload:((v=z?.[0])===null||v===void 0?void 0:v.content)||{}}}_computeGroupUnreadCount(B){const{unreadCount:v=0,noUnreadCount:N=0}=B,O=v-N;return O>0?O:0}_reset(){this._pagingStatus=x.NOT_START,this._pagingTimeStamp=0,this._pagingStartIndex=0,this._pagingPinnedTimeStamp=0,this._pagingPinnedStartIndex=0}_dispose(){this._reset();const{notificationCenter:B}=ye;B.unSubscribeInnerEvent(Ii.LOGOUT,this._reset,this),B.unSubscribeInnerEvent(Ii.DESTROY,this._dispose,this)}}class XA{constructor(){this.syncConversationHandler=new wA,this.syncConversationHandler.init()}}console.log(`TencentCloudLiteChat.VERSION:${Zr}`);var Qe={create:function(p){var B,v;const{SDKAppID:N,testEnv:O=!1,devMode:z=!1,unlimitedAVChatRoom:X=!1,scene:nA="",oversea:DA=!1,instance:GA,disableIndependentDomain:VA=!1,proxyServer:ee=""}=p;let Ee=N;if(!function(ot){if(typeof ot=="number")return!0;const at=Number(ot);return!Number.isNaN(at)}(Ee))return console.error("Create SDK instance failed. Failed to parse the SDKAppID, please check the arguments"),null;if(Ee=Number(Ee),ws.has(Ee))return ws.get(Ee);let Ke=null;if(GA)Ke=GA,Ke._workflowManager&&tn.setInstance(Ke._workflowManager),Ke._pluginManager&&Ke._pluginManager.installBuiltInPlugin(Er),GA.isReady()&&((v=(B=tn.getInstance()).executeWorkflow)===null||v===void 0||v.call(B,nr.SYNC_SERVER_INFO_AFTER_LOGIN));else{const ot=function(){function zi(){return(65536*(1+Math.random())|0).toString(16).substring(1)}return`${zi()+zi()}${zi()}${zi()}${zi()}${zi()}${zi()}${zi()}`}();ye.init({sdkAppId:Ee,instanceId:ot,testEnv:O,devMode:z,unlimitedAVChatRoom:X,disableIndependentDomain:VA,scene:nA,oversea:DA,sdkEdition:Lu,version:Zr,proxyServer:ee}),tn.getInstance().init(),ye.message=new al,ye.user=new oA,ye.login=new Ac,ye.conversation=new XA,Oo.getInstance().installBuiltInPlugin(Er),Ke=js.getInstance().exposeApiForClient(),Ke._workflowManager=tn.getInstance(),Ke._pluginManager=Oo.getInstance();const{utils:{IS_WORKER_AVAILABLE:at,USER_AGENT:kt,getPlatformType:Yt,isIOSWebView:Ui}}=ye,ao=`instanceID:${ot} SDKAppID:${N} platform:${HA} host:${Yt()} isIOSWebView:${Ui} workerAvailable:${at} UserAgent:${kt}`;ye.ssoLog.info("sdkConstruct",ao)}return ws.set(Ee,Ke),Ke},TSignaling:so,EVENT:Dn,VERSION:Zr,TYPES:hs};return Qe})}(eY)),eY.exports}var vL={exports:{}},tY={exports:{}},SrA=tY.exports,V8;function MrA(){return V8||(V8=1,function(t,i){(function(r,l){t.exports=l()})(SrA,function(){function r(A,e){return e.forEach(function(o){o&&typeof o!="string"&&!Array.isArray(o)&&Object.keys(o).forEach(function(a){if(a!=="default"&&!(a in A)){var c=Object.getOwnPropertyDescriptor(o,a);Object.defineProperty(A,a,c.get?c:{enumerable:!0,get:function(){return o[a]}})}})}),Object.freeze(A)}var l=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof mg<"u"?mg:typeof self<"u"?self:{};function I(A){return A&&A.__esModule&&Object.prototype.hasOwnProperty.call(A,"default")?A.default:A}var h=function(A){return A&&A.Math===Math&&A},f=h(typeof globalThis=="object"&&globalThis)||h(typeof window=="object"&&window)||h(typeof self=="object"&&self)||h(typeof l=="object"&&l)||h(typeof l=="object"&&l)||function(){return this}()||Function("return this")(),w={},_=function(A){try{return!!A()}catch{return!0}},k=!_(function(){return Object.defineProperty({},1,{get:function(){return 7}})[1]!==7}),U=!_(function(){var A=function(){}.bind();return typeof A!="function"||A.hasOwnProperty("prototype")}),j=U,lA=Function.prototype.call,rA=j?lA.bind(lA):function(){return lA.apply(lA,arguments)},mA={},IA={}.propertyIsEnumerable,cA=Object.getOwnPropertyDescriptor,TA=cA&&!IA.call({1:2},1);mA.f=TA?function(A){var e=cA(this,A);return!!e&&e.enumerable}:IA;var WA,ge,ue=function(A,e){return{enumerable:!(1&A),configurable:!(2&A),writable:!(4&A),value:e}},xe=U,Be=Function.prototype,ut=Be.call,pt=xe&&Be.bind.bind(ut,ut),ze=xe?pt:function(A){return function(){return ut.apply(A,arguments)}},_e=ze,We=_e({}.toString),Le=_e("".slice),oe=function(A){return Le(We(A),8,-1)},je=_,Dt=oe,ni=Object,Jt=ze("".split),gi=je(function(){return!ni("z").propertyIsEnumerable(0)})?function(A){return Dt(A)==="String"?Jt(A,""):ni(A)}:ni,Fi=function(A){return A==null},To=Fi,to=TypeError,uo=function(A){if(To(A))throw new to("Can't call method on "+A);return A},Vs=gi,ki=uo,ns=function(A){return Vs(ki(A))},jo=typeof document=="object"&&document.all,$i=jo===void 0&&jo!==void 0?function(A){return typeof A=="function"||A===jo}:function(A){return typeof A=="function"},jt=$i,io=function(A){return typeof A=="object"?A!==null:jt(A)},bi=f,vs=$i,HA=function(A,e){return arguments.length<2?(o=bi[A],vs(o)?o:void 0):bi[A]&&bi[A][e];var o},ce=ze({}.isPrototypeOf),Ve=f.navigator,Ut=Ve&&Ve.userAgent,nt=Ut?String(Ut):"",It=f,Xt=nt,$t=It.process,be=It.Deno,Xe=$t&&$t.versions||be&&be.version,vt=Xe&&Xe.v8;vt&&(ge=(WA=vt.split("."))[0]>0&&WA[0]<4?1:+(WA[0]+WA[1])),!ge&&Xt&&(!(WA=Xt.match(/Edge\/(\d+)/))||WA[1]>=74)&&(WA=Xt.match(/Chrome\/(\d+)/))&&(ge=+WA[1]);var wt=ge,Oi=wt,po=_,No=f.String,oo=!!Object.getOwnPropertySymbols&&!po(function(){var A=Symbol("symbol detection");return!No(A)||!(Object(A)instanceof Symbol)||!Symbol.sham&&Oi&&Oi<41}),Go=oo&&!Symbol.sham&&typeof Symbol.iterator=="symbol",An=HA,rn=$i,Es=ce,an=Object,Do=Go?function(A){return typeof A=="symbol"}:function(A){var e=An("Symbol");return rn(e)&&Es(e.prototype,an(A))},pA=String,Jn=function(A){try{return pA(A)}catch{return"Object"}},Qr=$i,ds=Jn,zr=TypeError,Pi=function(A){if(Qr(A))return A;throw new zr(ds(A)+" is not a function")},Rs=Pi,or=Fi,en=function(A,e){var o=A[e];return or(o)?void 0:Rs(o)},wn=rA,Ht=$i,yg=io,On=TypeError,Gn={exports:{}},Js=f,pr=Object.defineProperty,Pn=function(A,e){try{pr(Js,A,{value:e,configurable:!0,writable:!0})}catch{Js[A]=e}return e},mr=f,mo=Pn,gn="__core-js_shared__",Dl=Gn.exports=mr[gn]||mo(gn,{});(Dl.versions||(Dl.versions=[])).push({version:"3.47.0",mode:"global",copyright:"© 2014-2025 Denis Pushkarev (zloirock.ru), 2025 CoreJS Company (core-js.io)",license:"https://github.com/zloirock/core-js/blob/v3.47.0/LICENSE",source:"https://github.com/zloirock/core-js"});var cn=Gn.exports,fr=cn,Ls=function(A,e){return fr[A]||(fr[A]=e||{})},Vc=uo,ms=Object,as=function(A){return ms(Vc(A))},Su=as,Wa=ze({}.hasOwnProperty),Cs=Object.hasOwn||function(A,e){return Wa(Su(A),e)},sg=ze,VI=0,$o=Math.random(),Xi=sg(1.1.toString),pc=function(A){return"Symbol("+(A===void 0?"":A)+")_"+Xi(++VI+$o,36)},ng=Ls,Dg=Cs,Ia=pc,bo=oo,Zr=Go,_o=f.Symbol,Jc=ng("wks"),Hn=Zr?_o.for||_o:_o&&_o.withoutSetter||Ia,Hs=function(A){return Dg(Jc,A)||(Jc[A]=bo&&Dg(_o,A)?_o[A]:Hn("Symbol."+A)),Jc[A]},Sg=rA,mc=io,fn=Do,Ga=en,In=function(A,e){var o,a;if(e==="string"&&Ht(o=A.toString)&&!yg(a=wn(o,A))||Ht(o=A.valueOf)&&!yg(a=wn(o,A))||e!=="string"&&Ht(o=A.toString)&&!yg(a=wn(o,A)))return a;throw new On("Can't convert object to primitive value")},fs=TypeError,ua=Hs("toPrimitive"),yn=function(A,e){if(!mc(A)||fn(A))return A;var o,a=Ga(A,ua);if(a){if(e===void 0&&(e="default"),o=Sg(a,A,e),!mc(o)||fn(o))return o;throw new fs("Can't convert object to primitive value")}return e===void 0&&(e="number"),In(A,e)},ba=yn,Sa=Do,$=function(A){var e=ba(A,"string");return Sa(e)?e:e+""},K=io,vA=f.document,qA=K(vA)&&K(vA.createElement),Ae=function(A){return qA?vA.createElement(A):{}},pe=Ae,Pe=!k&&!_(function(){return Object.defineProperty(pe("div"),"a",{get:function(){return 7}}).a!==7}),Oe=k,rt=rA,dt=mA,Mt=ue,Pt=ns,li=$,ct=Cs,Ot=Pe,Ji=Object.getOwnPropertyDescriptor;w.f=Oe?Ji:function(A,e){if(A=Pt(A),e=li(e),Ot)try{return Ji(A,e)}catch{}if(ct(A,e))return Mt(!rt(dt.f,A,e),A[e])};var qi={},qs=k&&_(function(){return Object.defineProperty(function(){},"prototype",{value:42,writable:!1}).prototype!==42}),Mi=io,zo=String,Mg=TypeError,sr=function(A){if(Mi(A))return A;throw new Mg(zo(A)+" is not an object")},yr=k,xn=Pe,Sl=qs,Ks=sr,rI=$,Wg=TypeError,fc=Object.defineProperty,Mu=Object.getOwnPropertyDescriptor,Ma="enumerable",Ml="configurable",ye="writable";qi.f=yr?Sl?function(A,e,o){if(Ks(A),e=rI(e),Ks(o),typeof A=="function"&&e==="prototype"&&"value"in o&&ye in o&&!o[ye]){var a=Mu(A,e);a&&a[ye]&&(A[e]=o.value,o={configurable:Ml in o?o[Ml]:a[Ml],enumerable:Ma in o?o[Ma]:a[Ma],writable:!1})}return fc(A,e,o)}:fc:function(A,e,o){if(Ks(A),e=rI(e),Ks(o),xn)try{return fc(A,e,o)}catch{}if("get"in o||"set"in o)throw new Wg("Accessors not supported");return"value"in o&&(A[e]=o.value),A};var fe=qi,vg=ue,rg=k?function(A,e,o){return fe.f(A,e,vg(1,o))}:function(A,e,o){return A[e]=o,A},Rg={exports:{}},Dn=k,Dr=Cs,Ii=Function.prototype,so=Dn&&Object.getOwnPropertyDescriptor,Hc=Dr(Ii,"name"),zg={PROPER:Hc&&function(){}.name==="something",CONFIGURABLE:Hc&&(!Dn||Dn&&so(Ii,"name").configurable)},wg=$i,Yr=cn,yc=ze(Function.toString);wg(Yr.inspectSource)||(Yr.inspectSource=function(A){return yc(A)});var qc,ag,vu,mE=Yr.inspectSource,_g=$i,ka=f.WeakMap,Dc=_g(ka)&&/native code/.test(String(ka)),fE=pc,La=Ls("keys"),sa=function(A){return La[A]||(La[A]=fE(A))},Tg={},aI=Dc,hs=f,Lo=io,Ea=rg,nr=Cs,xt=cn,qt=sa,Ng=Tg,gI="Object already initialized",rr=hs.TypeError,JI=hs.WeakMap;if(aI||xt.state){var za=xt.state||(xt.state=new JI);za.get=za.get,za.has=za.has,za.set=za.set,qc=function(A,e){if(za.has(A))throw new rr(gI);return e.facade=A,za.set(A,e),e},ag=function(A){return za.get(A)||{}},vu=function(A){return za.has(A)}}else{var na=qt("state");Ng[na]=!0,qc=function(A,e){if(nr(A,na))throw new rr(gI);return e.facade=A,Ea(A,na,e),e},ag=function(A){return nr(A,na)?A[na]:{}},vu=function(A){return nr(A,na)}}var un={set:qc,get:ag,has:vu,enforce:function(A){return vu(A)?ag(A):qc(A,{})},getterFor:function(A){return function(e){var o;if(!Lo(e)||(o=ag(e)).type!==A)throw new rr("Incompatible receiver, "+A+" required");return o}}},Sn=ze,Ru=_,Gg=$i,Ua=Cs,Kc=k,HI=zg.CONFIGURABLE,yE=mE,cI=un.enforce,wu=un.get,vl=String,Sc=Object.defineProperty,_u=Sn("".slice),Tu=Sn("".replace),Rl=Sn([].join),rs=Kc&&!Ru(function(){return Sc(function(){},"length",{value:8}).length!==8}),gs=String(String).split("String"),Id=Rg.exports=function(A,e,o){_u(vl(e),0,7)==="Symbol("&&(e="["+Tu(vl(e),/^Symbol\(([^)]*)\).*$/,"$1")+"]"),o&&o.getter&&(e="get "+e),o&&o.setter&&(e="set "+e),(!Ua(A,"name")||HI&&A.name!==e)&&(Kc?Sc(A,"name",{value:e,configurable:!0}):A.name=e),rs&&o&&Ua(o,"arity")&&A.length!==o.arity&&Sc(A,"length",{value:o.arity});try{o&&Ua(o,"constructor")&&o.constructor?Kc&&Sc(A,"prototype",{writable:!1}):A.prototype&&(A.prototype=void 0)}catch{}var a=cI(A);return Ua(a,"source")||(a.source=Rl(gs,typeof e=="string"?e:"")),A};Function.prototype.toString=Id(function(){return Gg(this)&&wu(this).source||yE(this)},"toString");var lI=Rg.exports,II=$i,DE=qi,ud=lI,wl=Pn,Sr=function(A,e,o,a){a||(a={});var c=a.enumerable,d=a.name!==void 0?a.name:e;if(II(o)&&ud(o,d,a),a.global)c?A[e]=o:wl(e,o);else{try{a.unsafe?A[e]&&(c=!0):delete A[e]}catch{}c?A[e]=o:DE.f(A,e,{value:o,enumerable:!1,configurable:!a.nonConfigurable,writable:!a.nonWritable})}return A},Mc={},jc=Math.ceil,tn=Math.floor,ws=Math.trunc||function(A){var e=+A;return(e>0?tn:jc)(e)},da=ws,Xr=function(A){var e=+A;return e!=e||e===0?0:da(e)},Wc=Xr,Ed=Math.max,Zg=Math.min,gg=function(A,e){var o=Wc(A);return o<0?Ed(o+e,0):Zg(o,e)},SE=Xr,Xg=Math.min,qn=function(A){var e=SE(A);return e>0?Xg(e,9007199254740991):0},Ar=qn,Fa=function(A){return Ar(A.length)},dd=ns,cC=gg,Nu=Fa,qI=function(A){return function(e,o,a){var c=dd(e),d=Nu(c);if(d===0)return!A&&-1;var C,y=cC(a,d);if(A&&o!=o){for(;d>y;)if((C=c[y++])!=C)return!0}else for(;d>y;y++)if((A||y in c)&&c[y]===o)return A||y||0;return!A&&-1}},zc={includes:qI(!0),indexOf:qI(!1)},Zc=Cs,KI=ns,uI=zc.indexOf,Xc=Tg,$c=ze([].push),va=function(A,e){var o,a=KI(A),c=0,d=[];for(o in a)!Zc(Xc,o)&&Zc(a,o)&&$c(d,o);for(;e.length>c;)Zc(a,o=e[c++])&&(~uI(d,o)||$c(d,o));return d},bg=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],ys=va,Kn=bg.concat("length","prototype");Mc.f=Object.getOwnPropertyNames||function(A){return ys(A,Kn)};var vc={};vc.f=Object.getOwnPropertySymbols;var jI=HA,WI=Mc,ME=vc,nh=sr,lC=ze([].concat),rh=jI("Reflect","ownKeys")||function(A){var e=WI.f(nh(A)),o=ME.f;return o?lC(e,o(A)):e},Al=Cs,kg=rh,no=w,IC=qi,vE=function(A,e,o){for(var a=kg(e),c=IC.f,d=no.f,C=0;CC;)BI.f(A,o=c[C++],a[o]);return A};var Ug,ec=HA("document","documentElement"),pd=sr,NE=Nl,Nc=bg,XI=Tg,co=ec,GE=Ae,$a="prototype",$I="script",Uu=sa("IE_PROTO"),Gc=function(){},QI=function(A){return"<"+$I+">"+A+""},ol=function(A){A.write(QI("")),A.close();var e=A.parentWindow.Object;return A=null,e},sl=function(){try{Ug=new ActiveXObject("htmlfile")}catch{}sl=typeof document<"u"?document.domain&&Ug?ol(Ug):function(){var e,o=GE("iframe"),a="java"+$I+":";return o.style.display="none",co.appendChild(o),o.src=String(a),(e=o.contentWindow.document).open(),e.write(QI("document.F=Object")),e.close(),e.F}():ol(Ug);for(var A=Nc.length;A--;)delete sl[$a][Nc[A]];return sl()};XI[Uu]=!0;var xa=Object.create||function(A,e){var o;return A!==null?(Gc[$a]=pd(A),o=new Gc,Gc[$a]=null,o[Uu]=A):o=sl(),e===void 0?o:NE.f(o,e)},bE=Hs,ra=xa,Mn=qi.f,br=bE("unscopables"),nl=Array.prototype;nl[br]===void 0&&Mn(nl,br,{configurable:!0,value:ra(null)});var Ll=function(A){nl[br][A]=!0},bc=zc.includes,kE=Ll;_n({target:"Array",proto:!0,forced:_(function(){return!Array(1).includes()})},{includes:function(A){return bc(this,A,arguments.length>1?arguments[1]:void 0)}}),kE("includes");var kc,Fu,QC,Au={},ch=!_(function(){function A(){}return A.prototype.constructor=null,Object.getPrototypeOf(new A)!==A.prototype}),Ou=Cs,pI=$i,rl=as,pC=ch,aa=sa("IE_PROTO"),tc=Object,lg=tc.prototype,mI=pC?tc.getPrototypeOf:function(A){var e=rl(A);if(Ou(e,aa))return e[aa];var o=e.constructor;return pI(o)&&e instanceof o?o.prototype:e instanceof tc?lg:null},LE=_,Pu=$i,xu=io,fI=mI,al=Sr,kr=Hs("iterator"),Lr=!1;[].keys&&("next"in(QC=[].keys())?(Fu=fI(fI(QC)))!==Object.prototype&&(kc=Fu):Lr=!0);var Ig=!xu(kc)||LE(function(){var A={};return kc[kr].call(A)!==A});Ig&&(kc={}),Pu(kc[kr])||al(kc,kr,function(){return this});var ar={IteratorPrototype:kc,BUGGY_SAFARI_ITERATORS:Lr},Rr=qi.f,ic=Cs,Fg=Hs("toStringTag"),Ya=function(A,e,o){A&&!o&&(A=A.prototype),A&&!ic(A,Fg)&&Rr(A,Fg,{configurable:!0,value:e})},Ul=ar.IteratorPrototype,Ca=xa,yI=ue,eu=Ya,ha=Au,gl=function(){return this},UE=function(A,e,o,a){var c=e+" Iterator";return A.prototype=Ca(Ul,{next:yI(+!a,o)}),eu(A,c,!1),ha[c]=gl,A},tu=ze,FE=Pi,Jr=io,iu=function(A){return Jr(A)||A===null},Ft=String,Yu=TypeError,Vu=function(A,e,o){try{return tu(FE(Object.getOwnPropertyDescriptor(A,e)[o]))}catch{}},mC=io,q=uo,L=function(A){if(iu(A))return A;throw new Yu("Can't set "+Ft(A)+" as a prototype")},oA=Object.setPrototypeOf||("__proto__"in{}?function(){var A,e=!1,o={};try{(A=Vu(Object.prototype,"__proto__","set"))(o,[]),e=o instanceof Array}catch{}return function(a,c){return q(a),L(c),mC(a)&&(e?A(a,c):a.__proto__=c),a}}():void 0),G=_n,x=rA,tA=$i,uA=UE,wA=mI,XA=oA,Qe=Ya,p=rg,B=Sr,v=Au,N=zg.PROPER,O=zg.CONFIGURABLE,z=ar.IteratorPrototype,X=ar.BUGGY_SAFARI_ITERATORS,nA=Hs("iterator"),DA="keys",GA="values",VA="entries",ee=function(){return this},Ee=function(A,e,o,a,c,d,C){uA(o,e,a);var y,S,b,V=function(Ye){if(Ye===c&&$A)return $A;if(!X&&Ye&&Ye in CA)return CA[Ye];switch(Ye){case DA:case GA:case VA:return function(){return new o(this,Ye)}}return function(){return new o(this)}},J=e+" Iterator",gA=!1,CA=A.prototype,MA=CA[nA]||CA["@@iterator"]||c&&CA[c],$A=!X&&MA||V(c),he=e==="Array"&&CA.entries||MA;if(he&&(y=wA(he.call(new A)))!==Object.prototype&&y.next&&(wA(y)!==z&&(XA?XA(y,z):tA(y[nA])||B(y,nA,ee)),Qe(y,J,!0)),N&&c===GA&&MA&&MA.name!==GA&&(O?p(CA,"name",GA):(gA=!0,$A=function(){return x(MA,this)})),c)if(S={values:V(GA),keys:d?$A:V(DA),entries:V(VA)},C)for(b in S)(X||gA||!(b in CA))&&B(CA,b,S[b]);else G({target:e,proto:!0,forced:X||gA},S);return CA[nA]!==$A&&B(CA,nA,$A,{name:c}),v[e]=$A,S},Ke=function(A,e){return{value:A,done:e}},ot=ns,at=Ll,kt=Au,Yt=un,Ui=qi.f,ao=Ee,zi=Ke,ui=k,Po="Array Iterator",As=Yt.set,pi=Yt.getterFor(Po),Ki=ao(Array,"Array",function(A,e){As(this,{type:Po,target:ot(A),index:0,kind:e})},function(){var A=pi(this),e=A.target,o=A.index++;if(!e||o>=e.length)return A.target=null,zi(void 0,!0);switch(A.kind){case"keys":return zi(o,!1);case"values":return zi(e[o],!1)}return zi([o,e[o]],!1)},"values"),Ws=kt.Arguments=kt.Array;if(at("keys"),at("values"),at("entries"),ui&&Ws.name!=="values")try{Ui(Ws,"name",{value:"values"})}catch{}var we=Pi,Rt=as,FA=gi,Wt=Fa,En=TypeError,Zt="Reduce of empty array with no initial value",us=function(A){return function(e,o,a,c){var d=Rt(e),C=FA(d),y=Wt(d);if(we(o),y===0&&a<2)throw new En(Zt);var S=A?y-1:0,b=A?-1:1;if(a<2)for(;;){if(S in C){c=C[S],S+=b;break}if(S+=b,A?S<0:y<=S)throw new En(Zt)}for(;A?S>=0:y>S;S+=b)S in C&&(c=o(c,C[S],S,d));return c}},vi={left:us(!1),right:us(!0)},ho=_,Ct=function(A,e){var o=[][A];return!!o&&ho(function(){o.call(null,e||function(){return 1},1)})},Bt=f,ug=nt,ks=oe,ji=function(A){return ug.slice(0,A.length)===A},Hr=ji("Bun/")?"BUN":ji("Cloudflare-Workers")?"CLOUDFLARE":ji("Deno/")?"DENO":ji("Node.js/")?"NODE":Bt.Bun&&typeof Bun.version=="string"?"BUN":Bt.Deno&&typeof Deno.version=="object"?"DENO":ks(Bt.process)==="process"?"NODE":Bt.window&&Bt.document?"BROWSER":"REST",oc=Hr==="NODE",is=vi.left;_n({target:"Array",proto:!0,forced:!oc&&wt>79&&wt<83||!Ct("reduce")},{reduce:function(A){var e=arguments.length;return is(this,A,e,e>1?arguments[1]:void 0)}});var ga=vi.right;_n({target:"Array",proto:!0,forced:!oc&&wt>79&&wt<83||!Ct("reduceRight")},{reduceRight:function(A){return ga(this,A,arguments.length,arguments.length>1?arguments[1]:void 0)}});var Ba=oe,ea=Array.isArray||function(A){return Ba(A)==="Array"},H=_n,BA=ea,yA=ze([].reverse),NA=[1,2];H({target:"Array",proto:!0,forced:String(NA)===String(NA.reverse())},{reverse:function(){return BA(this)&&(this.length=this.length),yA(this)}});var zA=Jn,Re=TypeError,le=ze([].slice),Ne=le,ae=Math.floor,Fe=function(A,e){var o=A.length;if(o<8)for(var a,c,d=1;d0;)A[c]=A[--c];c!==d++&&(A[c]=a)}else for(var C=ae(o/2),y=Fe(Ne(A,0,C),e),S=Fe(Ne(A,C),e),b=y.length,V=S.length,J=0,gA=0;J3)){if(pm)return!0;if(ii)return ii<603;var A,e,o,a,c="";for(A=65;A<76;A++){switch(e=String.fromCharCode(A),A){case 66:case 69:case 70:case 72:o=3;break;case 68:case 71:o=4;break;default:o=2}for(a=0;a<47;a++)yo.push({k:e+a,v:o})}for(yo.sort(function(d,C){return C.v-d.v}),a=0;aWn(S)?1:-1}}(A)),o=Zo(c),a=0;ao||S!=S?1/0*C:C*S},aD=Math.fround||function(A){return rD(A,11920928955078125e-23,34028234663852886e22,11754943508222875e-54)},kv=Array,ET=Math.abs,fd=Math.pow,dT=Math.floor,gD=Math.log,CT=Math.LN2,cD={pack:function(A,e,o){var a,c,d,C=kv(o),y=8*o-e-1,S=(1<>1,V=e===23?fd(2,-24)-fd(2,-77):0,J=A<0||A===0&&1/A<0?1:0,gA=0;for((A=ET(A))!=A||A===1/0?(c=A!=A?1:0,a=S):(a=dT(gD(A)/CT),A*(d=fd(2,-a))<1&&(a--,d*=2),(A+=a+b>=1?V/d:V*fd(2,1-b))*d>=2&&(a++,d/=2),a+b>=S?(c=0,a=S):a+b>=1?(c=(A*d-1)*fd(2,e),a+=b):(c=A*fd(2,b-1)*fd(2,e),a=0));e>=8;)C[gA++]=255&c,c/=256,e-=8;for(a=a<0;)C[gA++]=255&a,a/=256,y-=8;return C[gA-1]|=128*J,C},unpack:function(A,e){var o,a=A.length,c=8*a-e-1,d=(1<>1,y=c-7,S=a-1,b=A[S--],V=127&b;for(b>>=7;y>0;)V=256*V+A[S--],y-=8;for(o=V&(1<<-y)-1,V>>=-y,y+=e;y>0;)o=256*o+A[S--],y-=8;if(V===0)V=1-C;else{if(V===d)return o?NaN:b?-1/0:1/0;o+=fd(2,e),V-=C}return(b?-1:1)*o*fd(2,V-e)}},hT=as,Lv=gg,BT=Fa,Uv=function(A){for(var e=hT(this),o=BT(e),a=arguments.length,c=Lv(a>1?arguments[1]:void 0,o),d=a>2?arguments[2]:void 0,C=d===void 0?o:Lv(d,o);C>c;)e[c++]=A;return e},QT=$i,pT=io,lD=oA,ID=function(A,e,o){var a,c;return lD&&QT(a=e.constructor)&&a!==o&&pT(c=a.prototype)&&c!==o.prototype&&lD(A,c),A},_Q=f,Sm=ze,Mm=k,yd=Mr,mT=rg,fT=Lg,vm=ou,uD=_,lh=SI,yT=Xr,DT=qn,Rm=fm,Fv=aD,ED=cD,wm=mI,Ov=oA,ST=Uv,MT=le,Pv=ID,Dd=vE,_m=Ya,Sd=un,OE=zg.PROPER,Tm=zg.CONFIGURABLE,fC="ArrayBuffer",Ih="DataView",qu="prototype",Yi="Wrong index",Nm=Sd.getterFor(fC),dn=Sd.getterFor(Ih),xv=Sd.set,Ku=_Q[fC],zs=Ku,uh=zs&&zs[qu],Ol=_Q[Ih],nc=Ol&&Ol[qu],PE=Object.prototype,TQ=_Q.Array,gB=_Q.RangeError,vT=Sm(ST),RT=Sm([].reverse),NQ=ED.pack,GQ=ED.unpack,Yv=function(A){return[255&A]},Vv=function(A){return[255&A,A>>8&255]},dD=function(A){return[255&A,A>>8&255,A>>16&255,A>>24&255]},yC=function(A){return A[3]<<24|A[2]<<16|A[1]<<8|A[0]},cB=function(A){return NQ(Fv(A),23,4)},CD=function(A){return NQ(A,52,8)},bQ=function(A,e,o){fT(A[qu],e,{configurable:!0,get:function(){return o(this)[e]}})},Md=function(A,e,o,a){var c=dn(A),d=Rm(o),C=!!a;if(d+e>c.byteLength)throw new gB(Yi);var y=c.bytes,S=d+c.byteOffset,b=MT(y,S,S+e);return C?b:RT(b)},vd=function(A,e,o,a,c,d){var C=dn(A),y=Rm(o),S=a(+c),b=!!d;if(y+e>C.byteLength)throw new gB(Yi);for(var V=C.bytes,J=y+C.byteOffset,gA=0;gA>24)},setUint8:function(A,e){hD(this,A,e<<24>>24)}},{unsafe:!0})}else uh=(zs=function(A){lh(this,uh);var e=Rm(A);xv(this,{type:fC,bytes:vT(TQ(e),0),byteLength:e}),Mm||(this.byteLength=e,this.detached=!1)})[qu],nc=(Ol=function(A,e,o){lh(this,nc),lh(A,uh);var a=Nm(A),c=a.byteLength,d=yT(e);if(d<0||d>c)throw new gB("Wrong offset");if(d+(o=o===void 0?c-d:DT(o))>c)throw new gB("Wrong length");xv(this,{type:Ih,buffer:A,byteLength:o,byteOffset:d,bytes:a.bytes}),Mm||(this.buffer=A,this.byteLength=o,this.byteOffset=d)})[qu],Mm&&(bQ(zs,"byteLength",Nm),bQ(Ol,"buffer",dn),bQ(Ol,"byteLength",dn),bQ(Ol,"byteOffset",dn)),vm(nc,{getInt8:function(A){return Md(this,1,A)[0]<<24>>24},getUint8:function(A){return Md(this,1,A)[0]},getInt16:function(A){var e=Md(this,2,A,arguments.length>1&&arguments[1]);return(e[1]<<8|e[0])<<16>>16},getUint16:function(A){var e=Md(this,2,A,arguments.length>1&&arguments[1]);return e[1]<<8|e[0]},getInt32:function(A){return yC(Md(this,4,A,arguments.length>1&&arguments[1]))},getUint32:function(A){return yC(Md(this,4,A,arguments.length>1&&arguments[1]))>>>0},getFloat32:function(A){return GQ(Md(this,4,A,arguments.length>1&&arguments[1]),23)},getFloat64:function(A){return GQ(Md(this,8,A,arguments.length>1&&arguments[1]),52)},setInt8:function(A,e){vd(this,1,A,Yv,e)},setUint8:function(A,e){vd(this,1,A,Yv,e)},setInt16:function(A,e){vd(this,2,A,Vv,e,arguments.length>2&&arguments[2])},setUint16:function(A,e){vd(this,2,A,Vv,e,arguments.length>2&&arguments[2])},setInt32:function(A,e){vd(this,4,A,dD,e,arguments.length>2&&arguments[2])},setUint32:function(A,e){vd(this,4,A,dD,e,arguments.length>2&&arguments[2])},setFloat32:function(A,e){vd(this,4,A,cB,e,arguments.length>2&&arguments[2])},setFloat64:function(A,e){vd(this,8,A,CD,e,arguments.length>2&&arguments[2])}});_m(zs,fC),_m(Ol,Ih);var Gm={ArrayBuffer:zs,DataView:Ol},Hv=HA,wT=Lg,bm=k,lB=Hs("species"),km=function(A){var e=Hv(A);bm&&e&&!e[lB]&&wT(e,lB,{configurable:!0,get:function(){return this}})},_T=km,BD="ArrayBuffer",QD=Gm[BD];_n({global:!0,constructor:!0,forced:f[BD]!==QD},{ArrayBuffer:QD}),_T(BD);var LQ=oe,xE=ze,ju=function(A){if(LQ(A)==="Function")return xE(A)},pD=_n,Eh=ju,Lm=_,qv=sr,UQ=gg,Kv=qn,mD=Gm.ArrayBuffer,vn=Gm.DataView,FQ=vn.prototype,Rd=Eh(mD.prototype.slice),fD=Eh(FQ.getUint8),TT=Eh(FQ.setUint8);pD({target:"ArrayBuffer",proto:!0,unsafe:!0,forced:Lm(function(){return!new mD(2).slice(1,void 0).byteLength})},{slice:function(A,e){if(Rd&&e===void 0)return Rd(qv(this),A);for(var o=qv(this).byteLength,a=UQ(A,o),c=UQ(e===void 0?o:e,o),d=new mD(Kv(c-a)),C=new vn(this),y=new vn(d),S=0;ad;d++)if((y=Ye(A[d]))&&ZD(kd,y))return y;return new RC(!1)}a=XT(A,c)}for(S=gA?A.next:a.next;!(b=WT(S,a)).done;){try{y=Ye(b.value)}catch(Me){XD(a,"throw",Me)}if(typeof y=="object"&&y&&ZD(kd,y))return y}return new RC(!1)},AS=Hs("iterator"),eS=!1;try{var s=0,n={next:function(){return{done:!!s++}},return:function(){eS=!0}};n[AS]=function(){return this},Array.from(n,function(){throw 2})}catch{}var g=function(A,e){try{if(!e&&!eS)return!1}catch{return!1}var o=!1;try{var a={};a[AS]=function(){return{next:function(){return{done:o=!0}}}},A(a)}catch{}return o},u=DB,E=vh.CONSTRUCTOR||!g(function(A){u.all(A).then(void 0,function(){})}),m=rA,D=Pi,M=Kr,T=yB,P=$D;_n({target:"Promise",stat:!0,forced:E},{all:function(A){var e=this,o=M.f(e),a=o.resolve,c=o.reject,d=T(function(){var C=D(e.resolve),y=[],S=0,b=1;P(A,function(V){var J=S++,gA=!1;b++,m(C,e,V).then(function(CA){gA||(gA=!0,y[J]=CA,--b||a(y))},c)}),--b||a(y)});return d.error&&c(d.value),o.promise}});var W=_n,iA=vh.CONSTRUCTOR,EA=DB,RA=HA,kA=$i,xA=Sr,LA=EA&&EA.prototype;if(W({target:"Promise",proto:!0,forced:iA,real:!0},{catch:function(A){return this.then(void 0,A)}}),kA(EA)){var SA=RA("Promise").prototype.catch;LA.catch!==SA&&xA(LA,"catch",SA,{unsafe:!0})}var OA=rA,JA=Pi,ne=Kr,se=yB,_i=$D;_n({target:"Promise",stat:!0,forced:E},{race:function(A){var e=this,o=ne.f(e),a=o.reject,c=se(function(){var d=JA(e.resolve);_i(A,function(C){OA(d,e,C).then(o.resolve,a)})});return c.error&&a(c.value),o.promise}});var Ti=Kr;_n({target:"Promise",stat:!0,forced:vh.CONSTRUCTOR},{reject:function(A){var e=Ti.f(this);return(0,e.reject)(A),e.promise}});var Lt=sr,Ni=io,cs=Kr,Se=function(A,e){if(Lt(A),Ni(e)&&e.constructor===A)return e;var o=cs.f(A);return(0,o.resolve)(e),o.promise},mt=_n,UA=vh.CONSTRUCTOR,oi=Se;HA("Promise"),mt({target:"Promise",stat:!0,forced:UA},{resolve:function(A){return oi(this,A)}});var _s=_n,Gi=DB,Fr=_,xi=HA,gr=$i,_t=Zv,Tt=Se,$u=Sr,ln=Gi&&Gi.prototype;if(_s({target:"Promise",proto:!0,real:!0,forced:!!Gi&&Fr(function(){ln.finally.call({then:function(){}},function(){})})},{finally:function(A){var e=_t(this,xi("Promise")),o=gr(A);return this.then(o?function(a){return Tt(e,A()).then(function(){return a})}:A,o?function(a){return Tt(e,A()).then(function(){throw a})}:A)}}),gr(Gi)){var Bo=xi("Promise").prototype.finally;ln.finally!==Bo&&$u(ln,"finally",Bo,{unsafe:!0})}var ll=io,wC=oe,wr=Hs("match"),xg=function(A){var e;return ll(A)&&((e=A[wr])!==void 0?!!e:wC(A)==="RegExp")},RI=_,ac=f.RegExp,sf=!RI(function(){var A=!0;try{ac(".","d")}catch{A=!1}var e={},o="",a=A?"dgimsy":"gimsy",c=function(y,S){Object.defineProperty(e,y,{get:function(){return o+=S,!0}})},d={dotAll:"s",global:"g",ignoreCase:"i",multiline:"m",sticky:"y"};for(var C in A&&(d.hasIndices="d"),d)c(C,d[C]);return Object.getOwnPropertyDescriptor(ac.prototype,"flags").get.call(e)!==a||o!==a}),rp=sr,Va=function(){var A=rp(this),e="";return A.hasIndices&&(e+="d"),A.global&&(e+="g"),A.ignoreCase&&(e+="i"),A.multiline&&(e+="m"),A.dotAll&&(e+="s"),A.unicode&&(e+="u"),A.unicodeSets&&(e+="v"),A.sticky&&(e+="y"),e},xl=rA,wI=Cs,AE=ce,Yg={correct:sf},dg=Va,tS=RegExp.prototype,NR=Yg.correct?function(A){return A.flags}:function(A){return Yg.correct||!AE(tS,A)||wI(A,"flags")?A.flags:xl(dg,A)},GR=_,bR=f.RegExp,AN=GR(function(){var A=bR("a","y");return A.lastIndex=2,A.exec("abcd")!==null}),wV=AN||GR(function(){return!bR("a","y").sticky}),XU=AN||GR(function(){var A=bR("^r","gy");return A.lastIndex=2,A.exec("str")!==null}),ap={BROKEN_CARET:XU,MISSED_STICKY:wV,UNSUPPORTED_Y:AN},eN=qi.f,tN=_,iN=f.RegExp,oN=tN(function(){var A=iN(".","s");return!(A.dotAll&&A.test(` +`)&&A.flags==="s")}),$U=_,_V=f.RegExp,AF=$U(function(){var A=_V("(?b)","g");return A.exec("b").groups.a!=="b"||"b".replace(A,"$c")!=="bc"}),nf=k,sN=f,rf=ze,nN=vr,TV=ID,NV=rg,GV=xa,bV=Mc.f,kR=ce,eF=xg,rN=Er,tF=NR,iS=ap,aN=function(A,e,o){o in A||eN(A,o,{configurable:!0,get:function(){return e[o]},set:function(a){e[o]=a}})},LR=Sr,UR=_,kV=Cs,gN=un.enforce,FR=km,iF=oN,af=AF,LV=Hs("match"),_B=sN.RegExp,gf=_B.prototype,UV=sN.SyntaxError,oF=rf(gf.exec),cf=rf("".charAt),sF=rf("".replace),cN=rf("".indexOf),lN=rf("".slice),FV=/^\?<[^\s\d!#%&*+<=>@^][^\s!#%&*+<=>@^]*>/,eE=/a/g,TB=/a/g,nF=new _B(eE)!==eE,rF=iS.MISSED_STICKY,OV=iS.UNSUPPORTED_Y,IN=nf&&(!nF||rF||iF||af||UR(function(){return TB[LV]=!1,_B(eE)!==eE||_B(TB)===TB||String(_B(eE,"i"))!=="/a/i"}));if(nN("RegExp",IN)){for(var NB=function(A,e){var o,a,c,d,C,y,S=kR(gf,this),b=eF(A),V=e===void 0,J=[],gA=A;if(!S&&b&&V&&A.constructor===NB)return A;if((b||kR(gf,A))&&(A=A.source,V&&(e=tF(gA))),A=A===void 0?"":rN(A),e=e===void 0?"":rN(e),gA=A,iF&&"dotAll"in eE&&(a=!!e&&cN(e,"s")>-1)&&(e=sF(e,/s/g,"")),o=e,rF&&"sticky"in eE&&(c=!!e&&cN(e,"y")>-1)&&OV&&(e=sF(e,/y/g,"")),af&&(d=function(CA){for(var MA,$A=CA.length,he=0,Ye="",Me=[],yi=GV(null),Ge=!1,ht=!1,Ci=0,Di="";he<=$A;he++){if((MA=cf(CA,he))==="\\")MA+=cf(CA,++he);else if(MA==="]")Ge=!1;else if(!Ge)switch(!0){case MA==="[":Ge=!0;break;case MA==="(":if(Ye+=MA,lN(CA,he+1,he+3)==="?:")continue;oF(FV,lN(CA,he+1))&&(he+=2,ht=!0),Ci++;continue;case(MA===">"&&ht):if(Di===""||kV(yi,Di))throw new UV("Invalid capture group name");yi[Di]=!0,Me[Me.length]=[Di,Ci],ht=!1,Di="";continue}ht?Di+=MA:Ye+=MA}return[Ye,Me]}(A),A=d[0],J=d[1]),C=TV(_B(A,e),S?this:gf,NB),(a||c||J.length)&&(y=gN(C),a&&(y.dotAll=!0,y.raw=NB(function(CA){for(var MA,$A=CA.length,he=0,Ye="",Me=!1;he<=$A;he++)(MA=cf(CA,he))!=="\\"?Me||MA!=="."?(MA==="["?Me=!0:MA==="]"&&(Me=!1),Ye+=MA):Ye+="[\\s\\S]":Ye+=MA+cf(CA,++he);return Ye}(A),o)),c&&(y.sticky=!0),J.length&&(y.groups=J)),A!==gA)try{NV(C,"source",gA===""?"(?:)":gA)}catch{}return C},uN=bV(_B),EN=0;uN.length>EN;)aN(NB,_B,uN[EN++]);gf.constructor=NB,NB.prototype=gf,LR(sN,"RegExp",NB,{constructor:!0})}FR("RegExp");var lf=rA,gp=ze,GB=Er,PV=Va,If=ap,aF=xa,gF=un.get,xV=oN,YV=AF,VV=Ls("native-string-replace",String.prototype.replace),cp=RegExp.prototype.exec,dN=cp,JV=gp("".charAt),HV=gp("".indexOf),cF=gp("".replace),oS=gp("".slice),CN=function(){var A=/a/,e=/b*/g;return lf(cp,A,"a"),lf(cp,e,"a"),A.lastIndex!==0||e.lastIndex!==0}(),lF=If.BROKEN_CARET,hN=/()??/.exec("")[1]!==void 0;(CN||hN||lF||xV||YV)&&(dN=function(A){var e,o,a,c,d,C,y,S=this,b=gF(S),V=GB(A),J=b.raw;if(J)return J.lastIndex=S.lastIndex,e=lf(dN,J,V),S.lastIndex=J.lastIndex,e;var gA=b.groups,CA=lF&&S.sticky,MA=lf(PV,S),$A=S.source,he=0,Ye=V;if(CA&&(MA=cF(MA,"y",""),HV(MA,"g")===-1&&(MA+="g"),Ye=oS(V,S.lastIndex),S.lastIndex>0&&(!S.multiline||S.multiline&&JV(V,S.lastIndex-1)!==` +`)&&($A="(?: "+$A+")",Ye=" "+Ye,he++),o=new RegExp("^(?:"+$A+")",MA)),hN&&(o=new RegExp("^"+$A+"$(?!\\s)",MA)),CN&&(a=S.lastIndex),c=lf(cp,CA?o:S,Ye),CA?c?(c.input=oS(c.input,he),c[0]=oS(c[0],he),c.index=S.lastIndex,S.lastIndex+=c[0].length):S.lastIndex=0:CN&&c&&(S.lastIndex=S.global?c.index+c[0].length:a),hN&&c&&c.length>1&&lf(VV,c[0],o,function(){for(d=1;d0;(a>>>=1)&&(e+=e))1&a&&(o+=e);return o},uf=uo,Ef=EF(KV),YR=EF("".slice),dF=Math.ceil,BN=function(A){return function(e,o,a){var c,d,C=xR(uf(e)),y=qV(o),S=C.length,b=a===void 0?" ":xR(a);return y<=S||b===""?C:((d=Ef(b,dF((c=y-S)/b.length))).length>c&&(d=YR(d,0,c)),A?C+d:d+C)}},QN={start:BN(!1)},pN=/Version\/10(?:\.\d+){1,2}(?: [\w./]+)?(?: Mobile\/\w+)? Safari\//.test(nt),jV=QN.start;_n({target:"String",proto:!0,forced:pN},{padStart:function(A){return jV(this,A,arguments.length>1?arguments[1]:void 0)}});var CF=rA,mN=Sr,hF=sS,fN=_,yN=Hs,WV=yN("species"),BF=RegExp.prototype,VR=ze,zV=Xr,df=Er,Cf=uo,DN=VR("".charAt),QF=VR("".charCodeAt),ZV=VR("".slice),pF=function(A){return function(e,o){var a,c,d=df(Cf(e)),C=zV(o),y=d.length;return C<0||C>=y?A?"":void 0:(a=QF(d,C))<55296||a>56319||C+1===y||(c=QF(d,C+1))<56320||c>57343?A?DN(d,C):a:A?ZV(d,C,C+2):c-56320+(a-55296<<10)+65536}},JR={codeAt:pF(!1),charAt:pF(!0)},XV=JR.charAt,HR=ze,$V=as,AJ=Math.floor,SN=HR("".charAt),MN=HR("".replace),vN=HR("".slice),eJ=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,tJ=/\$([$&'`]|\d{1,2})/g,mF=function(A,e,o,a,c,d){var C=o+A.length,y=a.length,S=tJ;return c!==void 0&&(c=$V(c),S=eJ),MN(d,S,function(b,V){var J;switch(SN(V,0)){case"$":return"$";case"&":return A;case"`":return vN(e,0,o);case"'":return vN(e,C);case"<":J=c[vN(V,1,-1)];break;default:var gA=+V;if(gA===0)return b;if(gA>y){var CA=AJ(gA/10);return CA===0?b:CA<=y?a[CA-1]===void 0?SN(V,1):a[CA-1]+SN(V,1):b}J=a[gA-1]}return J===void 0?"":J})},fF=rA,iJ=sr,yF=$i,oJ=oe,DF=sS,sJ=TypeError,nJ=wd,SF=rA,qR=ze,rJ=function(A,e,o,a){var c=yN(A),d=!fN(function(){var b={};return b[c]=function(){return 7},""[A](b)!==7}),C=d&&!fN(function(){var b=!1,V=/a/,J;return V.exec=function(){return b=!0,null},V[c](""),!b});if(!d||!C||o){var y=/./[c],S=e(c,""[A],function(b,V,J,gA,CA){var MA=V.exec;return MA===hF||MA===BF.exec?d&&!CA?{done:!0,value:CF(y,V,J,gA)}:{done:!0,value:CF(b,J,V,gA)}:{done:!1}});mN(String.prototype,A,S[0]),mN(BF,c,S[1])}},aJ=_,gJ=sr,MF=$i,cJ=io,lJ=Xr,vF=qn,lp=Er,KR=uo,RF=function(A,e,o){return e+(o?XV(A,e).length:1)},jR=en,wF=mF,_F=NR,IJ=function(A,e){var o=A.exec;if(yF(o)){var a=fF(o,A,e);return a!==null&&iJ(a),a}if(oJ(A)==="RegExp")return fF(DF,A,e);throw new sJ("RegExp#exec called on incompatible receiver")},WR=Hs("replace"),RN=Math.max,uJ=Math.min,TF=qR([].concat),wN=qR([].push),zR=qR("".indexOf),NF=qR("".slice),EJ=function(A){return A===void 0?A:String(A)},dJ="a".replace(/./,"$0")==="$0",GF=!!/./[WR]&&/./[WR]("a","$0")==="",CJ=!aJ(function(){var A=/./;return A.exec=function(){var e=[];return e.groups={a:"7"},e},"".replace(A,"$")!=="7"});rJ("replace",function(A,e,o){var a=GF?"$":"$0";return[function(c,d){var C=KR(this),y=cJ(c)?jR(c,WR):void 0;return y?SF(y,c,C,d):SF(e,lp(C),c,d)},function(c,d){var C=gJ(this),y=lp(c);if(typeof d=="string"&&zR(d,a)===-1&&zR(d,"$<")===-1){var S=o(e,C,y,d);if(S.done)return S.value}var b=MF(d);b||(d=lp(d));var V,J=lp(_F(C)),gA=zR(J,"g")!==-1;gA&&(V=zR(J,"u")!==-1,C.lastIndex=0);for(var CA,MA=[];(CA=IJ(C,y))!==null&&(wN(MA,CA),gA);)lp(CA[0])===""&&(C.lastIndex=RF(y,vF(C.lastIndex),V));for(var $A="",he=0,Ye=0;Ye=he&&($A+=NF(y,he,Ge)+Me,he=Ge+yi.length)}return $A+NF(y,he)}]},!CJ||!dJ||GF);var ZR=` +\v\f\r                 \u2028\u2029\uFEFF`,hJ=uo,BJ=Er,_N=ZR,TN=ze("".replace),bF=RegExp("^["+_N+"]+"),QJ=RegExp("(^|[^"+_N+"])["+_N+"]+$"),pJ=function(A){return function(e){var o=BJ(hJ(e));return 1&A&&(o=TN(o,bF,"")),2&A&&(o=TN(o,QJ,"$1")),o}},mJ={trim:pJ(3)},fJ=zg.PROPER,yJ=_,kF=ZR,DJ=mJ.trim;_n({target:"String",proto:!0,forced:function(A){return yJ(function(){return!!kF[A]()||"​…᠎"[A]()!=="​…᠎"||fJ&&kF[A].name!==A})}("trim")},{trim:function(){return DJ(this)}});var au,hf,XR,NN={exports:{}},SJ=Mr,GN=k,_I=f,LF=$i,UF=io,Bf=Cs,$R=ur,bN=Jn,kN=rg,LN=Sr,FF=Lg,MJ=ce,UN=mI,Ip=oA,vJ=Hs,RJ=pc,FN=un.enforce,bh=_I.Int8Array,Qf=bh&&bh.prototype,OF=_I.Uint8ClampedArray,PF=OF&&OF.prototype,_C=bh&&UN(bh),Ld=Qf&&UN(Qf),wJ=Object.prototype,ON=_I.TypeError,xF=vJ("toStringTag"),PN=RJ("TYPED_ARRAY_TAG"),nS="TypedArrayConstructor",Ud=SJ&&!!Ip&&$R(_I.opera)!=="Opera",YF=!1,bB={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},VF={BigInt64Array:8,BigUint64Array:8},Aw=function(A){if(!UF(A))return!1;var e=$R(A);return Bf(bB,e)||Bf(VF,e)};for(au in bB)(XR=(hf=_I[au])&&hf.prototype)?FN(XR)[nS]=hf:Ud=!1;for(au in VF)(XR=(hf=_I[au])&&hf.prototype)&&(FN(XR)[nS]=hf);if((!Ud||!LF(_C)||_C===Function.prototype)&&(_C=function(){throw new ON("Incorrect invocation")},Ud))for(au in bB)_I[au]&&Ip(_I[au],_C);if((!Ud||!Ld||Ld===wJ)&&(Ld=_C.prototype,Ud))for(au in bB)_I[au]&&Ip(_I[au].prototype,Ld);if(Ud&&UN(PF)!==Ld&&Ip(PF,Ld),GN&&!Bf(Ld,xF))for(au in YF=!0,FF(Ld,xF,{configurable:!0,get:function(){return UF(this)?this[PN]:void 0}}),bB)_I[au]&&kN(_I[au],PN,au);var Fd={NATIVE_ARRAY_BUFFER_VIEWS:Ud,TYPED_ARRAY_TAG:YF&&PN,aTypedArray:function(A){if(Aw(A))return A;throw new ON("Target is not a typed array")},aTypedArrayConstructor:function(A){if(LF(A)&&(!Ip||MJ(_C,A)))return A;throw new ON(bN(A)+" is not a typed array constructor")},exportTypedArrayMethod:function(A,e,o,a){if(GN){if(o)for(var c in bB){var d=_I[c];if(d&&Bf(d.prototype,A))try{delete d.prototype[A]}catch{try{d.prototype[A]=e}catch{}}}Ld[A]&&!o||LN(Ld,A,o?e:Ud&&Qf[A]||e,a)}},exportTypedArrayStaticMethod:function(A,e,o){var a,c;if(GN){if(Ip){if(o){for(a in bB)if((c=_I[a])&&Bf(c,A))try{delete c[A]}catch{}}if(_C[A]&&!o)return;try{return LN(_C,A,o?e:Ud&&_C[A]||e)}catch{}}for(a in bB)!(c=_I[a])||c[A]&&!o||LN(c,A,e)}},isTypedArray:Aw,TypedArray:_C,TypedArrayPrototype:Ld},xN=f,rS=_,ew=g,_J=Fd.NATIVE_ARRAY_BUFFER_VIEWS,JF=xN.ArrayBuffer,up=xN.Int8Array,HF=!_J||!rS(function(){up(1)})||!rS(function(){new up(-1)})||!ew(function(A){new up,new up(null),new up(1.5),new up(A)},!0)||rS(function(){return new up(new JF(2),1,void 0).length!==1}),TJ=io,NJ=Math.floor,qF=Number.isInteger||function(A){return!TJ(A)&&isFinite(A)&&NJ(A)===A},GJ=Xr,bJ=RangeError,tw=function(A){var e=GJ(A);if(e<0)throw new bJ("The argument can't be less than 0");return e},kJ=RangeError,KF=function(A,e){var o=tw(A);if(o%e)throw new kJ("Wrong offset");return o},LJ=Math.round,jF=ur,UJ=yn,FJ=TypeError,iw=function(A){var e=UJ(A,"number");if(typeof e=="number")throw new FJ("Can't convert number to bigint");return BigInt(e)},WF=Ag,zF=rA,OJ=Bh,PJ=as,ZF=Fa,XF=HE,xJ=Gh,$F=qD,AO=function(A){var e=jF(A);return e==="BigInt64Array"||e==="BigUint64Array"},YJ=Fd.aTypedArrayConstructor,VJ=iw,ow=function(A){var e,o,a,c,d,C,y,S,b=OJ(this),V=PJ(A),J=arguments.length,gA=J>1?arguments[1]:void 0,CA=gA!==void 0,MA=xJ(V);if(MA&&!$F(MA))for(S=(y=XF(V,MA)).next,V=[];!(C=zF(S,y)).done;)V.push(C.value);for(CA&&J>2&&(gA=WF(gA,arguments[2])),o=ZF(V),a=new(YJ(b))(o),c=AO(a),e=0;o>e;e++)d=CA?gA(V[e],e):V[e],a[e]=c?VJ(d):+d;return a},YN=ea,VN=SD,JJ=io,HJ=Hs("species"),eO=Array,qJ=function(A){var e;return YN(A)&&(e=A.constructor,(VN(e)&&(e===eO||YN(e.prototype))||JJ(e)&&(e=e[HJ])===null)&&(e=void 0)),e===void 0?eO:e},tO=Ag,KJ=gi,jJ=as,iO=Fa,WJ=function(A,e){return new(qJ(A))(e===0?0:e)},JN=ze([].push),oO=function(A){var e=A===1,o=A===2,a=A===3,c=A===4,d=A===6,C=A===7,y=A===5||d;return function(S,b,V,J){for(var gA,CA,MA=jJ(S),$A=KJ(MA),he=iO($A),Ye=tO(b,V),Me=0,yi=J||WJ,Ge=e?yi(S,he):o||C?yi(S,0):void 0;he>Me;Me++)if((y||Me in $A)&&(CA=Ye(gA=$A[Me],Me,MA),A))if(e)Ge[Me]=CA;else if(CA)switch(A){case 3:return!0;case 5:return gA;case 6:return Me;case 2:JN(Ge,gA)}else switch(A){case 4:return!1;case 7:JN(Ge,gA)}return d?-1:a||c?c:Ge}},sO={forEach:oO(0)},zJ=Fa,nO=_n,rO=f,aO=rA,gO=k,ZJ=HF,aS=Fd,cO=Gm,lO=SI,XJ=ue,kB=rg,$J=qF,AH=qn,IO=fm,HN=KF,uO=function(A){var e=LJ(A);return e<0?0:e>255?255:255&e},qN=$,Ep=Cs,eH=ur,KN=io,jN=Do,tH=xa,WN=ce,sw=oA,iH=Mc.f,EO=ow,dO=sO.forEach,nw=km,oH=Lg,CO=qi,hO=w,BO=function(A,e,o){for(var a=0,c=arguments.length>2?o:zJ(e),d=new A(c);c>a;)d[a]=e[a++];return d},sH=ID,zN=un.get,nH=un.set,dp=un.enforce,QO=CO.f,rH=hO.f,ZN=rO.RangeError,pO=cO.ArrayBuffer,aH=pO.prototype,gH=cO.DataView,pf=aS.NATIVE_ARRAY_BUFFER_VIEWS,mO=aS.TYPED_ARRAY_TAG,fO=aS.TypedArray,gS=aS.TypedArrayPrototype,cS=aS.isTypedArray,Cp="BYTES_PER_ELEMENT",rw="Wrong length",aw=function(A,e){oH(A,e,{configurable:!0,get:function(){return zN(this)[e]}})},yO=function(A){var e;return WN(aH,A)||(e=eH(A))==="ArrayBuffer"||e==="SharedArrayBuffer"},XN=function(A,e){return cS(A)&&!jN(e)&&e in A&&$J(+e)&&e>=0},gw=function(A,e){return e=qN(e),XN(A,e)?XJ(2,A[e]):rH(A,e)},DO=function(A,e,o){return e=qN(e),!(XN(A,e)&&KN(o)&&Ep(o,"value"))||Ep(o,"get")||Ep(o,"set")||o.configurable||Ep(o,"writable")&&!o.writable||Ep(o,"enumerable")&&!o.enumerable?QO(A,e,o):(A[e]=o.value,A)};gO?(pf||(hO.f=gw,CO.f=DO,aw(gS,"buffer"),aw(gS,"byteOffset"),aw(gS,"byteLength"),aw(gS,"length")),nO({target:"Object",stat:!0,forced:!pf},{getOwnPropertyDescriptor:gw,defineProperty:DO}),NN.exports=function(A,e,o){var a=A.match(/\d+/)[0]/8,c=A+(o?"Clamped":"")+"Array",d="get"+A,C="set"+A,y=rO[c],S=y,b=S&&S.prototype,V={},J=function(CA,MA){QO(CA,MA,{get:function(){return function($A,he){var Ye=zN($A);return Ye.view[d](he*a+Ye.byteOffset,!0)}(this,MA)},set:function($A){return function(he,Ye,Me){var yi=zN(he);yi.view[C](Ye*a+yi.byteOffset,o?uO(Me):Me,!0)}(this,MA,$A)},enumerable:!0})};pf?ZJ&&(S=e(function(CA,MA,$A,he){return lO(CA,b),sH(KN(MA)?yO(MA)?he!==void 0?new y(MA,HN($A,a),he):$A!==void 0?new y(MA,HN($A,a)):new y(MA):cS(MA)?BO(S,MA):aO(EO,S,MA):new y(IO(MA)),CA,S)}),sw&&sw(S,fO),dO(iH(y),function(CA){CA in S||kB(S,CA,y[CA])}),S.prototype=b):(S=e(function(CA,MA,$A,he){lO(CA,b);var Ye,Me,yi,Ge=0,ht=0;if(KN(MA)){if(!yO(MA))return cS(MA)?BO(S,MA):aO(EO,S,MA);Ye=MA,ht=HN($A,a);var Ci=MA.byteLength;if(he===void 0){if(Ci%a)throw new ZN(rw);if((Me=Ci-ht)<0)throw new ZN(rw)}else if((Me=AH(he)*a)+ht>Ci)throw new ZN(rw);yi=Me/a}else yi=IO(MA),Ye=new pO(Me=yi*a);for(nH(CA,{buffer:Ye,byteOffset:ht,byteLength:Me,length:yi,view:new gH(Ye)});Ge1?arguments[1]:void 0,e>2?arguments[2]:void 0)},$N(function(){var A=0;return new Int8Array(2).fill({valueOf:function(){return A++}}),A!==1})),(0,Fd.exportTypedArrayStaticMethod)("from",ow,HF);var vO=f,RO=rA,eG=Fd,wO=Fa,dH=KF,CH=as,_O=_,hH=vO.RangeError,tG=vO.Int8Array,iG=tG&&tG.prototype,oG=iG&&iG.set,sG=eG.aTypedArray,TO=eG.exportTypedArrayMethod,cw=!_O(function(){var A=new Uint8ClampedArray(2);return RO(oG,A,{length:1,0:3},1),A[1]!==3}),NO=cw&&eG.NATIVE_ARRAY_BUFFER_VIEWS&&_O(function(){var A=new tG(2);return A.set(1),A.set("2",1),A[0]!==0||A[1]!==2});TO("set",function(A){sG(this);var e=dH(arguments.length>1?arguments[1]:void 0,1),o=CH(A);if(cw)return RO(oG,this,o,e);var a=this.length,c=wO(o),d=0;if(c+e>a)throw new hH("Wrong length");for(;d0&&1/a<0?1:-1:o>a}}(A))},!lw||IG);var bO=_n,uG=rA,IS=ze,EG=uo,dG=$i,pH=io,kO=xg,uS=Er,mH=en,ES=NR,LO=mF,fH=Hs("replace"),UO=TypeError,Od=IS("".indexOf);IS("".replace);var dS=IS("".slice),yH=Math.max;bO({target:"String",proto:!0},{replaceAll:function(A,e){var o,a,c,d,C,y,S,b,V,J=EG(this),gA=0,CA="";if(pH(A)){if(kO(A)&&(o=uS(EG(ES(A))),!~Od(o,"g")))throw new UO("`.replaceAll` does not allow non-global regexes");if(a=mH(A,fH))return uG(a,A,J,e)}for(c=uS(J),d=uS(A),(C=dG(e))||(e=uS(e)),y=d.length,S=yH(1,y),b=Od(c,d);b!==-1;)V=C?uS(e(d,b,c)):LO(d,c,b,[],void 0,e),CA+=dS(c,gA,b)+V,gA=b+y,b=b+S>c.length?-1:Od(c,d,b+S);return gA1?arguments[1]:void 0)},OO=f,PO=CG,MH=hG,uw=SH,vH=rg,xO=function(A){if(A&&A.forEach!==uw)try{vH(A,"forEach",uw)}catch{A.forEach=uw}};for(var BG in PO)PO[BG]&&xO(OO[BG]&&OO[BG].prototype);xO(MH);var Ew=f,YO=CG,RH=hG,CS=Ki,hS=rg,wH=Ya,QG=Hs("iterator"),pG=CS.values,VO=function(A,e){if(A){if(A[QG]!==pG)try{hS(A,QG,pG)}catch{A[QG]=pG}if(wH(A,e,!0),YO[e]){for(var o in CS)if(A[o]!==CS[o])try{hS(A,o,CS[o])}catch{A[o]=CS[o]}}}};for(var mG in YO)VO(Ew[mG]&&Ew[mG].prototype,mG);VO(RH,"DOMTokenList");var fG=SC.clear;_n({global:!0,bind:!0,enumerable:!0,forced:f.clearImmediate!==fG},{clearImmediate:fG});var BS=f,_H=wd,TH=$i,NH=Hr,GH=nt,bH=le,kH=dB,yG=BS.Function,LH=/MSIE .\./.test(GH)||NH==="BUN"&&function(){var A=BS.Bun.version.split(".");return A.length<3||A[0]==="0"&&(A[1]<3||A[1]==="3"&&A[2]==="0")}(),JO=_n,HO=f,dw=SC.set,UH=function(A,e){var o=1;return LH?function(a,c){var d=kH(arguments.length,1)>o,C=TH(a)?a:yG(a),y=d?bH(arguments,o):[],S=d?function(){_H(C,this,y)}:C;return A(S)}:A},DG=HO.setImmediate?UH(dw):dw;JO({global:!0,bind:!0,enumerable:!0,forced:HO.setImmediate!==DG},{setImmediate:DG});var kh=JR.charAt,FH=Er,Cw=un,OH=Ee,qO=Ke,KO="String Iterator",PH=Cw.set,jO=Cw.getterFor(KO);OH(String,"String",function(A){PH(this,{type:KO,string:FH(A),index:0})},function(){var A,e=jO(this),o=e.string,a=e.index;return a>=o.length?qO(void 0,!0):(A=kh(o,a),e.index+=A.length,qO(A,!1))});var xH=_,YH=k,VH=Hs("iterator"),WO=!xH(function(){var A=new URL("b?a=1&b=2&c=3","https://a"),e=A.searchParams,o=new URLSearchParams("a=1&a=2&b=3"),a="";return A.pathname="c%20d",e.forEach(function(c,d){e.delete("b"),a+=d+c}),o.delete("a",2),o.delete("b",void 0),!e.size&&!YH||!e.sort||A.href!=="https://a/c%20d?a=1&c=3"||e.get("c")!=="3"||String(new URLSearchParams("?a=1"))!=="a=1"||!e[VH]||new URL("https://a@b").username!=="a"||new URLSearchParams(new URLSearchParams("a=b")).get("a")!=="b"||new URL("https://тест").host!=="xn--e1aybc"||new URL("https://a#б").hash!=="#%D0%B1"||a!=="a1c3"||new URL("https://x",void 0).host!=="x"}),zO=k,JH=ze,SG=rA,MG=_,vG=Gl,HH=vc,qH=mA,KH=as,ZO=gi,hp=Object.assign,XO=Object.defineProperty,$O=JH([].concat),jH=!hp||MG(function(){if(zO&&hp({b:1},hp(XO({},"a",{enumerable:!0,get:function(){XO(this,"b",{value:3,enumerable:!1})}}),{b:2})).b!==1)return!0;var A={},e={},o=Symbol("assign detection"),a="abcdefghijklmnopqrst";return A[o]=7,a.split("").forEach(function(c){e[c]=c}),hp({},A)[o]!==7||vG(hp({},e)).join("")!==a})?function(A,e){for(var o=KH(A),a=arguments.length,c=1,d=HH.f,C=qH.f;a>c;)for(var y,S=ZO(arguments[c++]),b=d?$O(vG(S),d(S)):vG(S),V=b.length,J=0;V>J;)y=b[J++],zO&&!SG(C,S,y)||(o[y]=S[y]);return o}:hp,WH=sr,zH=zD,ZH=k,XH=qi,AP=ue,$H=Ag,QS=rA,eP=as,tP=function(A,e,o,a){try{return a?e(WH(o)[0],o[1]):e(o)}catch(c){zH(A,"throw",c)}},RG=qD,Aq=SD,eq=Fa,pS=function(A,e,o){ZH?XH.f(A,e,AP(0,o)):A[e]=o},wG=HE,tq=Gh,iP=Array,LB=ze,_G=2147483647,oP=/[^\0-\u007E]/,TG=/[.\u3002\uFF0E\uFF61]/g,sP="Overflow: input needs wider integers to process",nP=RangeError,iq=LB(TG.exec),UB=Math.floor,hw=String.fromCharCode,Bw=LB("".charCodeAt),tE=LB([].join),FB=LB([].push),Qa=LB("".replace),rP=LB("".split),oq=LB("".toLowerCase),aP=function(A){return A+22+75*(A<26)},NG=function(A,e,o){var a=0;for(A=o?UB(A/700):A>>1,A+=UB(A/e);A>455;)A=UB(A/35),a+=36;return UB(a+36*A/(A+38))},sq=function(A){var e=[];A=function(Ye){for(var Me=[],yi=0,Ge=Ye.length;yi=55296&&ht<=56319&&yi=d&&aUB((_G-C)/J))throw new nP(sP);for(C+=(V-d)*J,d=V,o=0;o_G)throw new nP(sP);if(a===d){for(var gA=C,CA=36;;){var MA=CA<=y?1:CA>=y+26?26:CA-y;if(gAc;){if(e=+arguments[c++],nq(e,1114111)!==e)throw new rq(e+" is not a valid code point");o[c]=e<65536?Lh(e):Lh(55296+((e-=65536)>>10),e%1024+56320)}return fS(o,"")}});var Bp=_n,yf=f,Qp=nR,GG=HA,Fs=rA,iE=ze,Df=k,bG=WO,cP=Sr,aq=Lg,gq=ou,cq=Ya,lq=UE,yS=un,lP=SI,kG=$i,Iq=Cs,uq=Ag,Eq=ur,dq=sr,IP=io,Yl=Er,Cq=xa,uP=ue,EP=HE,hq=Gh,Qw=Ke,Sf=dB,Bq=St,Qq=Hs("iterator"),pp="URLSearchParams",LG=pp+"Iterator",dP=yS.set,Il=yS.getterFor(pp),Uh=yS.getterFor(LG),CP=Qp("fetch"),Mf=Qp("Request"),DS=Qp("Headers"),UG=Mf&&Mf.prototype,hP=DS&&DS.prototype,BP=yf.TypeError,pq=yf.encodeURIComponent,mq=String.fromCharCode,fq=GG("String","fromCodePoint"),yq=parseInt,pw=iE("".charAt),mw=iE([].join),Fh=iE([].push),QP=iE("".replace),Dq=iE([].shift),pP=iE([].splice),mP=iE("".split),fP=iE("".slice),FG=iE(/./.exec),yP=/\+/g,Sq=/^[0-9a-f]+$/i,DP=function(A,e){var o=fP(A,e,e+2);return FG(Sq,o)?yq(o,16):NaN},Mq=function(A){for(var e=0,o=128;o>0&&A&o;o>>=1)e++;return e},vq=function(A){var e=null;switch(A.length){case 1:e=A[0];break;case 2:e=(31&A[0])<<6|63&A[1];break;case 3:e=(15&A[0])<<12|(63&A[1])<<6|63&A[2];break;case 4:e=(7&A[0])<<18|(63&A[1])<<12|(63&A[2])<<6|63&A[3]}return e>1114111?null:e},SP=function(A){for(var e=(A=QP(A,yP," ")).length,o="",a=0;ae){o+="%",a++;continue}var d=DP(A,a+1);if(d!=d){o+=c,a++;continue}a+=2;var C=Mq(d);if(C===0)c=mq(d);else{if(C===1||C>4){o+="�",a++;continue}for(var y=[d],S=1;Se||pw(A,a)!=="%");){var b=DP(A,a+1);if(b!=b){a+=3;break}if(b>191||b<128)break;Fh(y,b),a+=2,S++}if(y.length!==C){o+="�";continue}var V=vq(y);V===null?o+="�":c=fq(V)}}o+=c,a++}return o},Rq=/[!'()~]|%20/g,wq={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},_q=function(A){return wq[A]},MP=function(A){return QP(pq(A),Rq,_q)},OG=lq(function(A,e){dP(this,{type:LG,target:Il(A).entries,index:0,kind:e})},pp,function(){var A=Uh(this),e=A.target,o=A.index++;if(!e||o>=e.length)return A.target=null,Qw(void 0,!0);var a=e[o];switch(A.kind){case"keys":return Qw(a.key,!1);case"values":return Qw(a.value,!1)}return Qw([a.key,a.value],!1)},!0),vP=function(A){this.entries=[],this.url=null,A!==void 0&&(IP(A)?this.parseObject(A):this.parseQuery(typeof A=="string"?pw(A,0)==="?"?fP(A,1):A:Yl(A)))};vP.prototype={type:pp,bindURL:function(A){this.url=A,this.update()},parseObject:function(A){var e,o,a,c,d,C,y,S=this.entries,b=hq(A);if(b)for(o=(e=EP(A,b)).next;!(a=Fs(o,e)).done;){if(d=(c=EP(dq(a.value))).next,(C=Fs(d,c)).done||(y=Fs(d,c)).done||!Fs(d,c).done)throw new BP("Expected sequence with length 2");Fh(S,{key:Yl(C.value),value:Yl(y.value)})}else for(var V in A)Iq(A,V)&&Fh(S,{key:V,value:Yl(A[V])})},parseQuery:function(A){if(A)for(var e,o,a=this.entries,c=mP(A,"&"),d=0;d0?arguments[0]:void 0));Df||(this.size=A.entries.length)},mp=vf.prototype;if(gq(mp,{append:function(A,e){var o=Il(this);Sf(arguments.length,2),Fh(o.entries,{key:Yl(A),value:Yl(e)}),Df||this.size++,o.updateURL()},delete:function(A){for(var e=Il(this),o=Sf(arguments.length,1),a=e.entries,c=Yl(A),d=o<2?void 0:arguments[1],C=d===void 0?d:Yl(d),y=0;yo.key?1:-1}),A.updateURL()},forEach:function(A){for(var e,o=Il(this).entries,a=uq(A,arguments.length>1?arguments[1]:void 0),c=0;c1?RP(arguments[1]):{})}}),kG(Mf)){var xG=function(A){return lP(this,UG),new Mf(A,arguments.length>1?RP(arguments[1]):{})};UG.constructor=xG,xG.prototype=UG,Bp({global:!0,constructor:!0,dontCallGetSet:!0,forced:!0},{Request:xG})}}var oE,Nq=_n,YG=k,wP=WO,VG=f,_P=Ag,qE=ze,fw=Sr,KE=Lg,Gq=SI,JG=Cs,HG=jH,OB=function(A){var e=eP(A),o=Aq(this),a=arguments.length,c=a>1?arguments[1]:void 0,d=c!==void 0;d&&(c=$H(c,a>2?arguments[2]:void 0));var C,y,S,b,V,J,gA=tq(e),CA=0;if(!gA||this===iP&&RG(gA))for(C=eq(e),y=o?new this(C):iP(C);C>CA;CA++)J=d?c(e[CA],CA):e[CA],pS(y,CA,J);else for(y=o?new this:[],V=(b=wG(e,gA)).next;!(S=QS(V,b)).done;CA++)J=d?tP(b,c,[S.value,CA],!0):S.value,pS(y,CA,J);return y.length=CA,y},Pd=le,qG=JR.codeAt,bq=function(A){var e,o,a=[],c=rP(Qa(oq(A),TG,"."),".");for(e=0;e?@[\\\]^|]/,Vq=/[\0\t\n\r #/:<>?@[\\\]^|]/,Jq=/^[\u0000-\u0020]+/,Hq=/(^|[^\u0000-\u0020])[\u0000-\u0020]+$/,Kq=/[\t\n\r]/g,_f=function(A){var e,o,a,c;if(typeof A=="number"){for(e=[],o=0;o<4;o++)Pq(e,A%256),A=Ph(A/256);return SS(e,".")}if(typeof A=="object"){for(e="",a=function(d){for(var C=null,y=1,S=null,b=0,V=0;V<8;V++)d[V]!==0?(b>y&&(C=S,y=b),S=null,b=0):(S===null&&(S=V),++b);return b>y?S:C}(A),o=0;o<8;o++)c&&A[o]===0||(c&&(c=!1),a===o?(e+=o?":":"::",c=!0):(e+=Oq(A[o],16),o<7&&(e+=":")));return"["+e+"]"}return A},Tf={},FP=HG({},Tf,{" ":1,'"':1,"<":1,">":1,"`":1}),XG=HG({},FP,{"#":1,"?":1,"{":1,"}":1}),xB=HG({},XG,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),Yd=function(A,e){var o=qG(A,0);return o>32&&o<127&&!JG(e,A)?A:encodeURIComponent(A)},xh={ftp:21,file:null,http:80,https:443,ws:80,wss:443},Nf=function(A,e){var o;return A.length===2&&xd(MS,jE(A,0))&&((o=jE(A,1))===":"||!e&&o==="|")},$G=function(A){var e;return A.length>1&&Nf(fp(A,0,2))&&(A.length===2||(e=jE(A,2))==="/"||e==="\\"||e==="?"||e==="#")},vS=function(A){return A==="."||vw(A)==="%2e"},OP=function(A){return(A=vw(A))===".."||A==="%2e."||A===".%2e"||A==="%2e%2e"},sE={},gu={},YB={},TC={},VB={},_w={},PP={},RS={},Tw={},Nw={},Gw={},bw={},kw={},Lw={},Ab={},Uw={},Gf={},NC={},wS={},cu={},Vl={},Fw=function(A,e,o){var a,c,d,C=Oh(A);if(e){if(c=this.parse(C))throw new jG(c);this.searchParams=null}else{if(o!==void 0&&(a=new Fw(o,!0)),c=this.parse(C,null,a))throw new jG(c);(d=Fq(new Uq)).bindURL(this),this.searchParams=d}};Fw.prototype={type:"URL",parse:function(A,e,o){var a,c,d,C,y=this,S=e||sE,b=0,V="",J=!1,gA=!1,CA=!1;for(A=Oh(A),e||(y.scheme="",y.username="",y.password="",y.host=null,y.port=null,y.path=[],y.query=null,y.fragment=null,y.cannotBeABaseURL=!1,A=Sw(A,Jq,""),A=Sw(A,Hq,"$1")),A=Sw(A,Kq,""),a=OB(A);b<=a.length;){switch(c=a[b],S){case sE:if(!c||!xd(MS,c)){if(e)return zG;S=YB;continue}V+=vw(c),S=gu;break;case gu:if(c&&(xd(xq,c)||c==="+"||c==="-"||c==="."))V+=vw(c);else{if(c!==":"){if(e)return zG;V="",S=YB,b=0;continue}if(e&&(y.isSpecial()!==JG(xh,V)||V==="file"&&(y.includesCredentials()||y.port!==null)||y.scheme==="file"&&!y.host))return;if(y.scheme=V,e)return void(y.isSpecial()&&xh[y.scheme]===y.port&&(y.port=null));V="",y.scheme==="file"?S=Lw:y.isSpecial()&&o&&o.scheme===y.scheme?S=TC:y.isSpecial()?S=RS:a[b+1]==="/"?(S=VB,b++):(y.cannotBeABaseURL=!0,wf(y.path,""),S=wS)}break;case YB:if(!o||o.cannotBeABaseURL&&c!=="#")return zG;if(o.cannotBeABaseURL&&c==="#"){y.scheme=o.scheme,y.path=Pd(o.path),y.query=o.query,y.fragment="",y.cannotBeABaseURL=!0,S=Vl;break}S=o.scheme==="file"?Lw:_w;continue;case TC:if(c!=="/"||a[b+1]!=="/"){S=_w;continue}S=Tw,b++;break;case VB:if(c==="/"){S=Nw;break}S=NC;continue;case _w:if(y.scheme=o.scheme,c===oE)y.username=o.username,y.password=o.password,y.host=o.host,y.port=o.port,y.path=Pd(o.path),y.query=o.query;else if(c==="/"||c==="\\"&&y.isSpecial())S=PP;else if(c==="?")y.username=o.username,y.password=o.password,y.host=o.host,y.port=o.port,y.path=Pd(o.path),y.query="",S=cu;else{if(c!=="#"){y.username=o.username,y.password=o.password,y.host=o.host,y.port=o.port,y.path=Pd(o.path),y.path.length--,S=NC;continue}y.username=o.username,y.password=o.password,y.host=o.host,y.port=o.port,y.path=Pd(o.path),y.query=o.query,y.fragment="",S=Vl}break;case PP:if(!y.isSpecial()||c!=="/"&&c!=="\\"){if(c!=="/"){y.username=o.username,y.password=o.password,y.host=o.host,y.port=o.port,S=NC;continue}S=Nw}else S=Tw;break;case RS:if(S=Tw,c!=="/"||jE(V,b+1)!=="/")continue;b++;break;case Tw:if(c!=="/"&&c!=="\\"){S=Nw;continue}break;case Nw:if(c==="@"){J&&(V="%40"+V),J=!0,d=OB(V);for(var MA=0;MA65535)return Rw;y.port=y.isSpecial()&&Ye===xh[y.scheme]?null:Ye,V=""}if(e)return;S=Gf;continue}return Rw}V+=c;break;case Lw:if(y.scheme="file",c==="/"||c==="\\")S=Ab;else{if(!o||o.scheme!=="file"){S=NC;continue}switch(c){case oE:y.host=o.host,y.path=Pd(o.path),y.query=o.query;break;case"?":y.host=o.host,y.path=Pd(o.path),y.query="",S=cu;break;case"#":y.host=o.host,y.path=Pd(o.path),y.query=o.query,y.fragment="",S=Vl;break;default:$G(SS(Pd(a,b),""))||(y.host=o.host,y.path=Pd(o.path),y.shortenPath()),S=NC;continue}}break;case Ab:if(c==="/"||c==="\\"){S=Uw;break}o&&o.scheme==="file"&&!$G(SS(Pd(a,b),""))&&(Nf(o.path[0],!0)?wf(y.path,o.path[0]):y.host=o.host),S=NC;continue;case Uw:if(c===oE||c==="/"||c==="\\"||c==="?"||c==="#"){if(!e&&Nf(V))S=NC;else if(V===""){if(y.host="",e)return;S=Gf}else{if(C=y.parseHost(V))return C;if(y.host==="localhost"&&(y.host=""),e)return;V="",S=Gf}continue}V+=c;break;case Gf:if(y.isSpecial()){if(S=NC,c!=="/"&&c!=="\\")continue}else if(e||c!=="?")if(e||c!=="#"){if(c!==oE&&(S=NC,c!=="/"))continue}else y.fragment="",S=Vl;else y.query="",S=cu;break;case NC:if(c===oE||c==="/"||c==="\\"&&y.isSpecial()||!e&&(c==="?"||c==="#")){if(OP(V)?(y.shortenPath(),c==="/"||c==="\\"&&y.isSpecial()||wf(y.path,"")):vS(V)?c==="/"||c==="\\"&&y.isSpecial()||wf(y.path,""):(y.scheme==="file"&&!y.path.length&&Nf(V)&&(y.host&&(y.host=""),V=jE(V,0)+":"),wf(y.path,V)),V="",y.scheme==="file"&&(c===oE||c==="?"||c==="#"))for(;y.path.length>1&&y.path[0]==="";)Mw(y.path);c==="?"?(y.query="",S=cu):c==="#"&&(y.fragment="",S=Vl)}else V+=Yd(c,XG);break;case wS:c==="?"?(y.query="",S=cu):c==="#"?(y.fragment="",S=Vl):c!==oE&&(y.path[0]+=Yd(c,Tf));break;case cu:e||c!=="#"?c!==oE&&(c==="'"&&y.isSpecial()?y.query+="%27":y.query+=c==="#"?"%23":Yd(c,Tf)):(y.fragment="",S=Vl);break;case Vl:c!==oE&&(y.fragment+=Yd(c,FP))}b++}},parseHost:function(A){var e,o,a;if(jE(A,0)==="["){if(jE(A,A.length-1)!=="]"||(e=function(c){var d,C,y,S,b,V,J,gA=[0,0,0,0,0,0,0,0],CA=0,MA=null,$A=0,he=function(){return jE(c,$A)};if(he()===":"){if(jE(c,1)!==":")return;$A+=2,MA=++CA}for(;he();){if(CA===8)return;if(he()!==":"){for(d=C=0;C<4&&xd(LP,he());)d=16*d+Dw(he(),16),$A++,C++;if(he()==="."){if(C===0||($A-=C,CA>6))return;for(y=0;he();){if(S=null,y>0){if(!(he()==="."&&y<4))return;$A++}if(!xd(ZG,he()))return;for(;xd(ZG,he());){if(b=Dw(he(),10),S===null)S=b;else{if(S===0)return;S=10*S+b}if(S>255)return;$A++}gA[CA]=256*gA[CA]+S,++y!==2&&y!==4||CA++}if(y!==4)return;break}if(he()===":"){if($A++,!he())return}else if(he())return;gA[CA++]=d}else{if(MA!==null)return;$A++,MA=++CA}}if(MA!==null)for(V=CA-MA,CA=7;CA!==0&&V>0;)J=gA[CA],gA[CA--]=gA[MA+V-1],gA[MA+--V]=J;else if(CA!==8)return;return gA}(fp(A,1,-1)),!e))return PB;this.host=e}else if(this.isSpecial()){if(A=bq(A),xd(UP,A)||(e=function(c){var d,C,y,S,b,V,J,gA=WG(c,".");if(gA.length&&gA[gA.length-1]===""&&gA.length--,(d=gA.length)>4)return c;for(C=[],y=0;y1&&jE(S,0)==="0"&&(b=xd(ww,S)?16:8,S=fp(S,b===8?1:2)),S==="")V=0;else{if(!xd(b===10?kP:b===8?Yq:LP,S))return c;V=Dw(S,b)}wf(C,V)}for(y=0;y=GP(256,5-d))return null}else if(V>255)return null;for(J=bP(C),y=0;y1?arguments[1]:void 0,a=Lq(e,new Fw(A,!1,o));YG||(e.href=a.serialize(),e.origin=a.getOrigin(),e.protocol=a.getProtocol(),e.username=a.getUsername(),e.password=a.getPassword(),e.host=a.getHost(),e.hostname=a.getHostname(),e.port=a.getPort(),e.pathname=a.getPathname(),e.search=a.getSearch(),e.searchParams=a.getSearchParams(),e.hash=a.getHash())},Jl=Yh.prototype,Hl=function(A,e){return{get:function(){return yw(this)[A]()},set:e&&function(o){return yw(this)[e](o)},configurable:!0,enumerable:!0}};if(YG&&(KE(Jl,"href",Hl("serialize","setHref")),KE(Jl,"origin",Hl("getOrigin")),KE(Jl,"protocol",Hl("getProtocol","setProtocol")),KE(Jl,"username",Hl("getUsername","setUsername")),KE(Jl,"password",Hl("getPassword","setPassword")),KE(Jl,"host",Hl("getHost","setHost")),KE(Jl,"hostname",Hl("getHostname","setHostname")),KE(Jl,"port",Hl("getPort","setPort")),KE(Jl,"pathname",Hl("getPathname","setPathname")),KE(Jl,"search",Hl("getSearch","setSearch")),KE(Jl,"searchParams",Hl("getSearchParams")),KE(Jl,"hash",Hl("getHash","setHash"))),fw(Jl,"toJSON",function(){return yw(this).serialize()},{enumerable:!0}),fw(Jl,"toString",function(){return yw(this).serialize()},{enumerable:!0}),Rf){var xP=Rf.createObjectURL,Ow=Rf.revokeObjectURL;xP&&fw(Yh,"createObjectURL",_P(xP,Rf)),Ow&&fw(Yh,"revokeObjectURL",_P(Ow,Rf))}kq(Yh,"URL"),Nq({global:!0,constructor:!0,forced:!wP,sham:!YG},{URL:Yh});var YP=rA;_n({target:"URL",proto:!0,enumerable:!0},{toJSON:function(){return YP(URL.prototype.toString,this)}});let VP=!0,Pw=!0;function _S(A,e,o){const a=A.match(e);return a&&a.length>=o&&parseFloat(a[o],10)}function JB(A,e,o){if(!A.RTCPeerConnection)return;const a=A.RTCPeerConnection.prototype,c=a.addEventListener;a.addEventListener=function(C,y){if(C!==e)return c.apply(this,arguments);const S=b=>{const V=o(b);V&&(y.handleEvent?y.handleEvent(V):y(V))};return this._eventMap=this._eventMap||{},this._eventMap[e]||(this._eventMap[e]=new Map),this._eventMap[e].set(y,S),c.apply(this,[C,S])};const d=a.removeEventListener;a.removeEventListener=function(C,y){if(C!==e||!this._eventMap||!this._eventMap[e])return d.apply(this,arguments);if(!this._eventMap[e].has(y))return d.apply(this,arguments);const S=this._eventMap[e].get(y);return this._eventMap[e].delete(y),this._eventMap[e].size===0&&delete this._eventMap[e],Object.keys(this._eventMap).length===0&&delete this._eventMap,d.apply(this,[C,S])},Object.defineProperty(a,"on"+e,{get(){return this["_on"+e]},set(C){this["_on"+e]&&(this.removeEventListener(e,this["_on"+e]),delete this["_on"+e]),C&&this.addEventListener(e,this["_on"+e]=C)},enumerable:!0,configurable:!0})}function JP(A){return typeof A!="boolean"?new Error("Argument type: "+typeof A+". Please use a boolean."):(VP=A,A?"adapter.js logging disabled":"adapter.js logging enabled")}function jq(A){return typeof A!="boolean"?new Error("Argument type: "+typeof A+". Please use a boolean."):(Pw=!A,"adapter.js deprecation warnings "+(A?"disabled":"enabled"))}function xw(){if(typeof window=="object"){if(VP)return;typeof console<"u"&&typeof console.log=="function"&&console.log.apply(console,arguments)}}function TS(A,e){Pw&&console.warn(A+" is deprecated, please use "+e+" instead.")}function eb(A){return Object.prototype.toString.call(A)==="[object Object]"}function tb(A){return eb(A)?Object.keys(A).reduce(function(e,o){const a=eb(A[o]),c=a?tb(A[o]):A[o],d=a&&!Object.keys(c).length;return c===void 0||d?e:Object.assign(e,{[o]:c})},{}):A}function ib(A,e,o){e&&!o.has(e.id)&&(o.set(e.id,e),Object.keys(e).forEach(a=>{a.endsWith("Id")?ib(A,A.get(e[a]),o):a.endsWith("Ids")&&e[a].forEach(c=>{ib(A,A.get(c),o)})}))}function HP(A,e,o){const a=o?"outbound-rtp":"inbound-rtp",c=new Map;if(e===null)return c;const d=[];return A.forEach(C=>{C.type==="track"&&C.trackIdentifier===e.id&&d.push(C)}),d.forEach(C=>{A.forEach(y=>{y.type===a&&y.trackId===C.id&&ib(A,y,c)})}),c}const ob=xw;function qP(A,e){const o=A&&A.navigator;if(!o.mediaDevices)return;const a=function(C){if(typeof C!="object"||C.mandatory||C.optional)return C;const y={};return Object.keys(C).forEach(S=>{if(S==="require"||S==="advanced"||S==="mediaSource")return;const b=typeof C[S]=="object"?C[S]:{ideal:C[S]};b.exact!==void 0&&typeof b.exact=="number"&&(b.min=b.max=b.exact);const V=function(J,gA){return J?J+gA.charAt(0).toUpperCase()+gA.slice(1):gA==="deviceId"?"sourceId":gA};if(b.ideal!==void 0){y.optional=y.optional||[];let J={};typeof b.ideal=="number"?(J[V("min",S)]=b.ideal,y.optional.push(J),J={},J[V("max",S)]=b.ideal,y.optional.push(J)):(J[V("",S)]=b.ideal,y.optional.push(J))}b.exact!==void 0&&typeof b.exact!="number"?(y.mandatory=y.mandatory||{},y.mandatory[V("",S)]=b.exact):["min","max"].forEach(J=>{b[J]!==void 0&&(y.mandatory=y.mandatory||{},y.mandatory[V(J,S)]=b[J])})}),C.advanced&&(y.optional=(y.optional||[]).concat(C.advanced)),y},c=function(C,y){if(e.version>=61)return y(C);if((C=JSON.parse(JSON.stringify(C)))&&typeof C.audio=="object"){const S=function(b,V,J){V in b&&!(J in b)&&(b[J]=b[V],delete b[V])};S((C=JSON.parse(JSON.stringify(C))).audio,"autoGainControl","googAutoGainControl"),S(C.audio,"noiseSuppression","googNoiseSuppression"),C.audio=a(C.audio)}if(C&&typeof C.video=="object"){let S=C.video.facingMode;S=S&&(typeof S=="object"?S:{ideal:S});const b=e.version<66;if(S&&(S.exact==="user"||S.exact==="environment"||S.ideal==="user"||S.ideal==="environment")&&(!o.mediaDevices.getSupportedConstraints||!o.mediaDevices.getSupportedConstraints().facingMode||b)){let V;if(delete C.video.facingMode,S.exact==="environment"||S.ideal==="environment"?V=["back","rear"]:S.exact!=="user"&&S.ideal!=="user"||(V=["front"]),V)return o.mediaDevices.enumerateDevices().then(J=>{J=J.filter(CA=>CA.kind==="videoinput");let gA=J.find(CA=>V.some(MA=>CA.label.toLowerCase().includes(MA)));return!gA&&J.length&&V.includes("back")&&(gA=J[J.length-1]),gA&&(C.video.deviceId=S.exact?{exact:gA.deviceId}:{ideal:gA.deviceId}),C.video=a(C.video),ob("chrome: "+JSON.stringify(C)),y(C)})}C.video=a(C.video)}return ob("chrome: "+JSON.stringify(C)),y(C)},d=function(C){return e.version>=64?C:{name:{PermissionDeniedError:"NotAllowedError",PermissionDismissedError:"NotAllowedError",InvalidStateError:"NotAllowedError",DevicesNotFoundError:"NotFoundError",ConstraintNotSatisfiedError:"OverconstrainedError",TrackStartError:"NotReadableError",MediaDeviceFailedDueToShutdown:"NotAllowedError",MediaDeviceKillSwitchOn:"NotAllowedError",TabCaptureError:"AbortError",ScreenCaptureError:"AbortError",DeviceCaptureError:"AbortError"}[C.name]||C.name,message:C.message,constraint:C.constraint||C.constraintName,toString(){return this.name+(this.message&&": ")+this.message}}};if(o.getUserMedia=function(C,y,S){c(C,b=>{o.webkitGetUserMedia(b,y,V=>{S&&S(d(V))})})}.bind(o),o.mediaDevices.getUserMedia){const C=o.mediaDevices.getUserMedia.bind(o.mediaDevices);o.mediaDevices.getUserMedia=function(y){return c(y,S=>C(S).then(b=>{if(S.audio&&!b.getAudioTracks().length||S.video&&!b.getVideoTracks().length)throw b.getTracks().forEach(V=>{V.stop()}),new DOMException("","NotFoundError");return b},b=>Promise.reject(d(b))))}}}function KP(A){A.MediaStream=A.MediaStream||A.webkitMediaStream}function jP(A){if(typeof A=="object"&&A.RTCPeerConnection&&!("ontrack"in A.RTCPeerConnection.prototype)){Object.defineProperty(A.RTCPeerConnection.prototype,"ontrack",{get(){return this._ontrack},set(o){this._ontrack&&this.removeEventListener("track",this._ontrack),this.addEventListener("track",this._ontrack=o)},enumerable:!0,configurable:!0});const e=A.RTCPeerConnection.prototype.setRemoteDescription;A.RTCPeerConnection.prototype.setRemoteDescription=function(){return this._ontrackpoly||(this._ontrackpoly=o=>{o.stream.addEventListener("addtrack",a=>{let c;c=A.RTCPeerConnection.prototype.getReceivers?this.getReceivers().find(C=>C.track&&C.track.id===a.track.id):{track:a.track};const d=new Event("track");d.track=a.track,d.receiver=c,d.transceiver={receiver:c},d.streams=[o.stream],this.dispatchEvent(d)}),o.stream.getTracks().forEach(a=>{let c;c=A.RTCPeerConnection.prototype.getReceivers?this.getReceivers().find(C=>C.track&&C.track.id===a.id):{track:a};const d=new Event("track");d.track=a,d.receiver=c,d.transceiver={receiver:c},d.streams=[o.stream],this.dispatchEvent(d)})},this.addEventListener("addstream",this._ontrackpoly)),e.apply(this,arguments)}}else JB(A,"track",e=>(e.transceiver||Object.defineProperty(e,"transceiver",{value:{receiver:e.receiver}}),e))}function sb(A){if(typeof A=="object"&&A.RTCPeerConnection&&!("getSenders"in A.RTCPeerConnection.prototype)&&"createDTMFSender"in A.RTCPeerConnection.prototype){const e=function(c,d){return{track:d,get dtmf(){return this._dtmf===void 0&&(d.kind==="audio"?this._dtmf=c.createDTMFSender(d):this._dtmf=null),this._dtmf},_pc:c}};if(!A.RTCPeerConnection.prototype.getSenders){A.RTCPeerConnection.prototype.getSenders=function(){return this._senders=this._senders||[],this._senders.slice()};const c=A.RTCPeerConnection.prototype.addTrack;A.RTCPeerConnection.prototype.addTrack=function(C,y){let S=c.apply(this,arguments);return S||(S=e(this,C),this._senders.push(S)),S};const d=A.RTCPeerConnection.prototype.removeTrack;A.RTCPeerConnection.prototype.removeTrack=function(C){d.apply(this,arguments);const y=this._senders.indexOf(C);y!==-1&&this._senders.splice(y,1)}}const o=A.RTCPeerConnection.prototype.addStream;A.RTCPeerConnection.prototype.addStream=function(c){this._senders=this._senders||[],o.apply(this,[c]),c.getTracks().forEach(d=>{this._senders.push(e(this,d))})};const a=A.RTCPeerConnection.prototype.removeStream;A.RTCPeerConnection.prototype.removeStream=function(c){this._senders=this._senders||[],a.apply(this,[c]),c.getTracks().forEach(d=>{const C=this._senders.find(y=>y.track===d);C&&this._senders.splice(this._senders.indexOf(C),1)})}}else if(typeof A=="object"&&A.RTCPeerConnection&&"getSenders"in A.RTCPeerConnection.prototype&&"createDTMFSender"in A.RTCPeerConnection.prototype&&A.RTCRtpSender&&!("dtmf"in A.RTCRtpSender.prototype)){const e=A.RTCPeerConnection.prototype.getSenders;A.RTCPeerConnection.prototype.getSenders=function(){const o=e.apply(this,[]);return o.forEach(a=>a._pc=this),o},Object.defineProperty(A.RTCRtpSender.prototype,"dtmf",{get(){return this._dtmf===void 0&&(this.track.kind==="audio"?this._dtmf=this._pc.createDTMFSender(this.track):this._dtmf=null),this._dtmf}})}}function WP(A){if(!A.RTCPeerConnection)return;const e=A.RTCPeerConnection.prototype.getStats;A.RTCPeerConnection.prototype.getStats=function(){const[o,a,c]=arguments;if(arguments.length>0&&typeof o=="function")return e.apply(this,arguments);if(e.length===0&&(arguments.length===0||typeof o!="function"))return e.apply(this,[]);const d=function(y){const S={};return y.result().forEach(b=>{const V={id:b.id,timestamp:b.timestamp,type:{localcandidate:"local-candidate",remotecandidate:"remote-candidate"}[b.type]||b.type};b.names().forEach(J=>{V[J]=b.stat(J)}),S[V.id]=V}),S},C=function(y){return new Map(Object.keys(y).map(S=>[S,y[S]]))};if(arguments.length>=2){const y=function(S){a(C(d(S)))};return e.apply(this,[y,o])}return new Promise((y,S)=>{e.apply(this,[function(b){y(C(d(b)))},S])}).then(a,c)}}function nb(A){if(!(typeof A=="object"&&A.RTCPeerConnection&&A.RTCRtpSender&&A.RTCRtpReceiver))return;if(!("getStats"in A.RTCRtpSender.prototype)){const o=A.RTCPeerConnection.prototype.getSenders;o&&(A.RTCPeerConnection.prototype.getSenders=function(){const c=o.apply(this,[]);return c.forEach(d=>d._pc=this),c});const a=A.RTCPeerConnection.prototype.addTrack;a&&(A.RTCPeerConnection.prototype.addTrack=function(){const c=a.apply(this,arguments);return c._pc=this,c}),A.RTCRtpSender.prototype.getStats=function(){const c=this;return this._pc.getStats().then(d=>HP(d,c.track,!0))}}if(!("getStats"in A.RTCRtpReceiver.prototype)){const o=A.RTCPeerConnection.prototype.getReceivers;o&&(A.RTCPeerConnection.prototype.getReceivers=function(){const a=o.apply(this,[]);return a.forEach(c=>c._pc=this),a}),JB(A,"track",a=>(a.receiver._pc=a.srcElement,a)),A.RTCRtpReceiver.prototype.getStats=function(){const a=this;return this._pc.getStats().then(c=>HP(c,a.track,!1))}}if(!("getStats"in A.RTCRtpSender.prototype)||!("getStats"in A.RTCRtpReceiver.prototype))return;const e=A.RTCPeerConnection.prototype.getStats;A.RTCPeerConnection.prototype.getStats=function(){if(arguments.length>0&&arguments[0]instanceof A.MediaStreamTrack){const o=arguments[0];let a,c,d;return this.getSenders().forEach(C=>{C.track===o&&(a?d=!0:a=C)}),this.getReceivers().forEach(C=>(C.track===o&&(c?d=!0:c=C),C.track===o)),d||a&&c?Promise.reject(new DOMException("There are more than one sender or receiver for the track.","InvalidAccessError")):a?a.getStats():c?c.getStats():Promise.reject(new DOMException("There is no sender or receiver for the track.","InvalidAccessError"))}return e.apply(this,arguments)}}function zP(A){A.RTCPeerConnection.prototype.getLocalStreams=function(){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},Object.keys(this._shimmedLocalStreams).map(d=>this._shimmedLocalStreams[d][0])};const e=A.RTCPeerConnection.prototype.addTrack;A.RTCPeerConnection.prototype.addTrack=function(d,C){if(!C)return e.apply(this,arguments);this._shimmedLocalStreams=this._shimmedLocalStreams||{};const y=e.apply(this,arguments);return this._shimmedLocalStreams[C.id]?this._shimmedLocalStreams[C.id].indexOf(y)===-1&&this._shimmedLocalStreams[C.id].push(y):this._shimmedLocalStreams[C.id]=[C,y],y};const o=A.RTCPeerConnection.prototype.addStream;A.RTCPeerConnection.prototype.addStream=function(d){this._shimmedLocalStreams=this._shimmedLocalStreams||{},d.getTracks().forEach(S=>{if(this.getSenders().find(b=>b.track===S))throw new DOMException("Track already exists.","InvalidAccessError")});const C=this.getSenders();o.apply(this,arguments);const y=this.getSenders().filter(S=>C.indexOf(S)===-1);this._shimmedLocalStreams[d.id]=[d].concat(y)};const a=A.RTCPeerConnection.prototype.removeStream;A.RTCPeerConnection.prototype.removeStream=function(d){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},delete this._shimmedLocalStreams[d.id],a.apply(this,arguments)};const c=A.RTCPeerConnection.prototype.removeTrack;A.RTCPeerConnection.prototype.removeTrack=function(d){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},d&&Object.keys(this._shimmedLocalStreams).forEach(C=>{const y=this._shimmedLocalStreams[C].indexOf(d);y!==-1&&this._shimmedLocalStreams[C].splice(y,1),this._shimmedLocalStreams[C].length===1&&delete this._shimmedLocalStreams[C]}),c.apply(this,arguments)}}function ZP(A,e){if(!A.RTCPeerConnection)return;if(A.RTCPeerConnection.prototype.addTrack&&e.version>=65)return zP(A);const o=A.RTCPeerConnection.prototype.getLocalStreams;A.RTCPeerConnection.prototype.getLocalStreams=function(){const S=o.apply(this);return this._reverseStreams=this._reverseStreams||{},S.map(b=>this._reverseStreams[b.id])};const a=A.RTCPeerConnection.prototype.addStream;A.RTCPeerConnection.prototype.addStream=function(S){if(this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},S.getTracks().forEach(b=>{if(this.getSenders().find(V=>V.track===b))throw new DOMException("Track already exists.","InvalidAccessError")}),!this._reverseStreams[S.id]){const b=new A.MediaStream(S.getTracks());this._streams[S.id]=b,this._reverseStreams[b.id]=S,S=b}a.apply(this,[S])};const c=A.RTCPeerConnection.prototype.removeStream;function d(S,b){let V=b.sdp;return Object.keys(S._reverseStreams||[]).forEach(J=>{const gA=S._reverseStreams[J],CA=S._streams[gA.id];V=V.replace(new RegExp(CA.id,"g"),gA.id)}),new RTCSessionDescription({type:b.type,sdp:V})}A.RTCPeerConnection.prototype.removeStream=function(S){this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},c.apply(this,[this._streams[S.id]||S]),delete this._reverseStreams[this._streams[S.id]?this._streams[S.id].id:S.id],delete this._streams[S.id]},A.RTCPeerConnection.prototype.addTrack=function(S,b){if(this.signalingState==="closed")throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");const V=[].slice.call(arguments,1);if(V.length!==1||!V[0].getTracks().find(gA=>gA===S))throw new DOMException("The adapter.js addTrack polyfill only supports a single stream which is associated with the specified track.","NotSupportedError");if(this.getSenders().find(gA=>gA.track===S))throw new DOMException("Track already exists.","InvalidAccessError");this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{};const J=this._streams[b.id];if(J)J.addTrack(S),Promise.resolve().then(()=>{this.dispatchEvent(new Event("negotiationneeded"))});else{const gA=new A.MediaStream([S]);this._streams[b.id]=gA,this._reverseStreams[gA.id]=b,this.addStream(gA)}return this.getSenders().find(gA=>gA.track===S)},["createOffer","createAnswer"].forEach(function(S){const b=A.RTCPeerConnection.prototype[S],V={[S](){const J=arguments;return arguments.length&&typeof arguments[0]=="function"?b.apply(this,[gA=>{const CA=d(this,gA);J[0].apply(null,[CA])},gA=>{J[1]&&J[1].apply(null,gA)},arguments[2]]):b.apply(this,arguments).then(gA=>d(this,gA))}};A.RTCPeerConnection.prototype[S]=V[S]});const C=A.RTCPeerConnection.prototype.setLocalDescription;A.RTCPeerConnection.prototype.setLocalDescription=function(){return arguments.length&&arguments[0].type?(arguments[0]=function(S,b){let V=b.sdp;return Object.keys(S._reverseStreams||[]).forEach(J=>{const gA=S._reverseStreams[J],CA=S._streams[gA.id];V=V.replace(new RegExp(gA.id,"g"),CA.id)}),new RTCSessionDescription({type:b.type,sdp:V})}(this,arguments[0]),C.apply(this,arguments)):C.apply(this,arguments)};const y=Object.getOwnPropertyDescriptor(A.RTCPeerConnection.prototype,"localDescription");Object.defineProperty(A.RTCPeerConnection.prototype,"localDescription",{get(){const S=y.get.apply(this);return S.type===""?S:d(this,S)}}),A.RTCPeerConnection.prototype.removeTrack=function(S){if(this.signalingState==="closed")throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");if(!S._pc)throw new DOMException("Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.","TypeError");if(S._pc!==this)throw new DOMException("Sender was not created by this connection.","InvalidAccessError");let b;this._streams=this._streams||{},Object.keys(this._streams).forEach(V=>{this._streams[V].getTracks().find(J=>S.track===J)&&(b=this._streams[V])}),b&&(b.getTracks().length===1?this.removeStream(this._reverseStreams[b.id]):b.removeTrack(S.track),this.dispatchEvent(new Event("negotiationneeded")))}}function NS(A,e){!A.RTCPeerConnection&&A.webkitRTCPeerConnection&&(A.RTCPeerConnection=A.webkitRTCPeerConnection),A.RTCPeerConnection&&e.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach(function(o){const a=A.RTCPeerConnection.prototype[o],c={[o](){return arguments[0]=new(o==="addIceCandidate"?A.RTCIceCandidate:A.RTCSessionDescription)(arguments[0]),a.apply(this,arguments)}};A.RTCPeerConnection.prototype[o]=c[o]})}function XP(A,e){JB(A,"negotiationneeded",o=>{const a=o.target;if(!(e.version<72||a.getConfiguration&&a.getConfiguration().sdpSemantics==="plan-b")||a.signalingState==="stable")return o})}var rb=Object.freeze({__proto__:null,shimMediaStream:KP,shimOnTrack:jP,shimGetSendersWithDtmf:sb,shimGetStats:WP,shimSenderReceiverGetStats:nb,shimAddTrackRemoveTrackWithNative:zP,shimAddTrackRemoveTrack:ZP,shimPeerConnection:NS,fixNegotiationNeeded:XP,shimGetUserMedia:qP,shimGetDisplayMedia:function(A,e){A.navigator.mediaDevices&&"getDisplayMedia"in A.navigator.mediaDevices||A.navigator.mediaDevices&&(typeof e=="function"?A.navigator.mediaDevices.getDisplayMedia=function(o){return e(o).then(a=>{const c=o.video&&o.video.width,d=o.video&&o.video.height,C=o.video&&o.video.frameRate;return o.video={mandatory:{chromeMediaSource:"desktop",chromeMediaSourceId:a,maxFrameRate:C||3}},c&&(o.video.mandatory.maxWidth=c),d&&(o.video.mandatory.maxHeight=d),A.navigator.mediaDevices.getUserMedia(o)})}:console.error("shimGetDisplayMedia: getSourceId argument is not a function"))}});function $P(A,e){const o=A&&A.navigator,a=A&&A.MediaStreamTrack;if(o.getUserMedia=function(c,d,C){TS("navigator.getUserMedia","navigator.mediaDevices.getUserMedia"),o.mediaDevices.getUserMedia(c).then(d,C)},!(e.version>55&&"autoGainControl"in o.mediaDevices.getSupportedConstraints())){const c=function(C,y,S){y in C&&!(S in C)&&(C[S]=C[y],delete C[y])},d=o.mediaDevices.getUserMedia.bind(o.mediaDevices);if(o.mediaDevices.getUserMedia=function(C){return typeof C=="object"&&typeof C.audio=="object"&&(C=JSON.parse(JSON.stringify(C)),c(C.audio,"autoGainControl","mozAutoGainControl"),c(C.audio,"noiseSuppression","mozNoiseSuppression")),d(C)},a&&a.prototype.getSettings){const C=a.prototype.getSettings;a.prototype.getSettings=function(){const y=C.apply(this,arguments);return c(y,"mozAutoGainControl","autoGainControl"),c(y,"mozNoiseSuppression","noiseSuppression"),y}}if(a&&a.prototype.applyConstraints){const C=a.prototype.applyConstraints;a.prototype.applyConstraints=function(y){return this.kind==="audio"&&typeof y=="object"&&(y=JSON.parse(JSON.stringify(y)),c(y,"autoGainControl","mozAutoGainControl"),c(y,"noiseSuppression","mozNoiseSuppression")),C.apply(this,[y])}}}}function Ax(A){typeof A=="object"&&A.RTCTrackEvent&&"receiver"in A.RTCTrackEvent.prototype&&!("transceiver"in A.RTCTrackEvent.prototype)&&Object.defineProperty(A.RTCTrackEvent.prototype,"transceiver",{get(){return{receiver:this.receiver}}})}function Yw(A,e){if(typeof A!="object"||!A.RTCPeerConnection&&!A.mozRTCPeerConnection)return;!A.RTCPeerConnection&&A.mozRTCPeerConnection&&(A.RTCPeerConnection=A.mozRTCPeerConnection),e.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach(function(c){const d=A.RTCPeerConnection.prototype[c],C={[c](){return arguments[0]=new(c==="addIceCandidate"?A.RTCIceCandidate:A.RTCSessionDescription)(arguments[0]),d.apply(this,arguments)}};A.RTCPeerConnection.prototype[c]=C[c]});const o={inboundrtp:"inbound-rtp",outboundrtp:"outbound-rtp",candidatepair:"candidate-pair",localcandidate:"local-candidate",remotecandidate:"remote-candidate"},a=A.RTCPeerConnection.prototype.getStats;A.RTCPeerConnection.prototype.getStats=function(){const[c,d,C]=arguments;return a.apply(this,[c||null]).then(y=>{if(e.version<53&&!d)try{y.forEach(S=>{S.type=o[S.type]||S.type})}catch(S){if(S.name!=="TypeError")throw S;y.forEach((b,V)=>{y.set(V,Object.assign({},b,{type:o[b.type]||b.type}))})}return y}).then(d,C)}}function ex(A){if(typeof A!="object"||!A.RTCPeerConnection||!A.RTCRtpSender||A.RTCRtpSender&&"getStats"in A.RTCRtpSender.prototype)return;const e=A.RTCPeerConnection.prototype.getSenders;e&&(A.RTCPeerConnection.prototype.getSenders=function(){const a=e.apply(this,[]);return a.forEach(c=>c._pc=this),a});const o=A.RTCPeerConnection.prototype.addTrack;o&&(A.RTCPeerConnection.prototype.addTrack=function(){const a=o.apply(this,arguments);return a._pc=this,a}),A.RTCRtpSender.prototype.getStats=function(){return this.track?this._pc.getStats(this.track):Promise.resolve(new Map)}}function ab(A){if(typeof A!="object"||!A.RTCPeerConnection||!A.RTCRtpSender||A.RTCRtpSender&&"getStats"in A.RTCRtpReceiver.prototype)return;const e=A.RTCPeerConnection.prototype.getReceivers;e&&(A.RTCPeerConnection.prototype.getReceivers=function(){const o=e.apply(this,[]);return o.forEach(a=>a._pc=this),o}),JB(A,"track",o=>(o.receiver._pc=o.srcElement,o)),A.RTCRtpReceiver.prototype.getStats=function(){return this._pc.getStats(this.track)}}function tx(A){A.RTCPeerConnection&&!("removeStream"in A.RTCPeerConnection.prototype)&&(A.RTCPeerConnection.prototype.removeStream=function(e){TS("removeStream","removeTrack"),this.getSenders().forEach(o=>{o.track&&e.getTracks().includes(o.track)&&this.removeTrack(o)})})}function gb(A){A.DataChannel&&!A.RTCDataChannel&&(A.RTCDataChannel=A.DataChannel)}function ix(A){if(typeof A!="object"||!A.RTCPeerConnection)return;const e=A.RTCPeerConnection.prototype.addTransceiver;e&&(A.RTCPeerConnection.prototype.addTransceiver=function(){this.setParametersPromises=[];let o=arguments[1]&&arguments[1].sendEncodings;o===void 0&&(o=[]),o=[...o];const a=o.length>0;a&&o.forEach(d=>{if("rid"in d&&!/^[a-z0-9]{0,16}$/i.test(d.rid))throw new TypeError("Invalid RID value provided.");if("scaleResolutionDownBy"in d&&!(parseFloat(d.scaleResolutionDownBy)>=1))throw new RangeError("scale_resolution_down_by must be >= 1.0");if("maxFramerate"in d&&!(parseFloat(d.maxFramerate)>=0))throw new RangeError("max_framerate must be >= 0.0")});const c=e.apply(this,arguments);if(a){const{sender:d}=c,C=d.getParameters();(!("encodings"in C)||C.encodings.length===1&&Object.keys(C.encodings[0]).length===0)&&(C.encodings=o,d.sendEncodings=o,this.setParametersPromises.push(d.setParameters(C).then(()=>{delete d.sendEncodings}).catch(()=>{delete d.sendEncodings})))}return c})}function ox(A){if(typeof A!="object"||!A.RTCRtpSender)return;const e=A.RTCRtpSender.prototype.getParameters;e&&(A.RTCRtpSender.prototype.getParameters=function(){const o=e.apply(this,arguments);return"encodings"in o||(o.encodings=[].concat(this.sendEncodings||[{}])),o})}function sx(A){if(typeof A!="object"||!A.RTCPeerConnection)return;const e=A.RTCPeerConnection.prototype.createOffer;A.RTCPeerConnection.prototype.createOffer=function(){return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then(()=>e.apply(this,arguments)).finally(()=>{this.setParametersPromises=[]}):e.apply(this,arguments)}}function nx(A){if(typeof A!="object"||!A.RTCPeerConnection)return;const e=A.RTCPeerConnection.prototype.createAnswer;A.RTCPeerConnection.prototype.createAnswer=function(){return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then(()=>e.apply(this,arguments)).finally(()=>{this.setParametersPromises=[]}):e.apply(this,arguments)}}var rx=Object.freeze({__proto__:null,shimOnTrack:Ax,shimPeerConnection:Yw,shimSenderGetStats:ex,shimReceiverGetStats:ab,shimRemoveStream:tx,shimRTCDataChannel:gb,shimAddTransceiver:ix,shimGetParameters:ox,shimCreateOffer:sx,shimCreateAnswer:nx,shimGetUserMedia:$P,shimGetDisplayMedia:function(A,e){A.navigator.mediaDevices&&"getDisplayMedia"in A.navigator.mediaDevices||A.navigator.mediaDevices&&(A.navigator.mediaDevices.getDisplayMedia=function(o){if(!o||!o.video){const a=new DOMException("getDisplayMedia without video constraints is undefined");return a.name="NotFoundError",a.code=8,Promise.reject(a)}return o.video===!0?o.video={mediaSource:e}:o.video.mediaSource=e,A.navigator.mediaDevices.getUserMedia(o)})}});function ax(A){if(typeof A=="object"&&A.RTCPeerConnection){if("getLocalStreams"in A.RTCPeerConnection.prototype||(A.RTCPeerConnection.prototype.getLocalStreams=function(){return this._localStreams||(this._localStreams=[]),this._localStreams}),!("addStream"in A.RTCPeerConnection.prototype)){const e=A.RTCPeerConnection.prototype.addTrack;A.RTCPeerConnection.prototype.addStream=function(o){this._localStreams||(this._localStreams=[]),this._localStreams.includes(o)||this._localStreams.push(o),o.getAudioTracks().forEach(a=>e.call(this,a,o)),o.getVideoTracks().forEach(a=>e.call(this,a,o))},A.RTCPeerConnection.prototype.addTrack=function(o,...a){return a&&a.forEach(c=>{this._localStreams?this._localStreams.includes(c)||this._localStreams.push(c):this._localStreams=[c]}),e.apply(this,arguments)}}"removeStream"in A.RTCPeerConnection.prototype||(A.RTCPeerConnection.prototype.removeStream=function(e){this._localStreams||(this._localStreams=[]);const o=this._localStreams.indexOf(e);if(o===-1)return;this._localStreams.splice(o,1);const a=e.getTracks();this.getSenders().forEach(c=>{a.includes(c.track)&&this.removeTrack(c)})})}}function gx(A){if(typeof A=="object"&&A.RTCPeerConnection&&("getRemoteStreams"in A.RTCPeerConnection.prototype||(A.RTCPeerConnection.prototype.getRemoteStreams=function(){return this._remoteStreams?this._remoteStreams:[]}),!("onaddstream"in A.RTCPeerConnection.prototype))){Object.defineProperty(A.RTCPeerConnection.prototype,"onaddstream",{get(){return this._onaddstream},set(o){this._onaddstream&&(this.removeEventListener("addstream",this._onaddstream),this.removeEventListener("track",this._onaddstreampoly)),this.addEventListener("addstream",this._onaddstream=o),this.addEventListener("track",this._onaddstreampoly=a=>{a.streams.forEach(c=>{if(this._remoteStreams||(this._remoteStreams=[]),this._remoteStreams.includes(c))return;this._remoteStreams.push(c);const d=new Event("addstream");d.stream=c,this.dispatchEvent(d)})})}});const e=A.RTCPeerConnection.prototype.setRemoteDescription;A.RTCPeerConnection.prototype.setRemoteDescription=function(){const o=this;return this._onaddstreampoly||this.addEventListener("track",this._onaddstreampoly=function(a){a.streams.forEach(c=>{if(o._remoteStreams||(o._remoteStreams=[]),o._remoteStreams.indexOf(c)>=0)return;o._remoteStreams.push(c);const d=new Event("addstream");d.stream=c,o.dispatchEvent(d)})}),e.apply(o,arguments)}}}function cb(A){if(typeof A!="object"||!A.RTCPeerConnection)return;const e=A.RTCPeerConnection.prototype,o=e.createOffer,a=e.createAnswer,c=e.setLocalDescription,d=e.setRemoteDescription,C=e.addIceCandidate;e.createOffer=function(S,b){const V=arguments.length>=2?arguments[2]:arguments[0],J=o.apply(this,[V]);return b?(J.then(S,b),Promise.resolve()):J},e.createAnswer=function(S,b){const V=arguments.length>=2?arguments[2]:arguments[0],J=a.apply(this,[V]);return b?(J.then(S,b),Promise.resolve()):J};let y=function(S,b,V){const J=c.apply(this,[S]);return V?(J.then(b,V),Promise.resolve()):J};e.setLocalDescription=y,y=function(S,b,V){const J=d.apply(this,[S]);return V?(J.then(b,V),Promise.resolve()):J},e.setRemoteDescription=y,y=function(S,b,V){const J=C.apply(this,[S]);return V?(J.then(b,V),Promise.resolve()):J},e.addIceCandidate=y}function lb(A){const e=A&&A.navigator;if(e.mediaDevices&&e.mediaDevices.getUserMedia){const o=e.mediaDevices,a=o.getUserMedia.bind(o);e.mediaDevices.getUserMedia=c=>a(cx(c))}!e.getUserMedia&&e.mediaDevices&&e.mediaDevices.getUserMedia&&(e.getUserMedia=function(o,a,c){e.mediaDevices.getUserMedia(o).then(a,c)}.bind(e))}function cx(A){return A&&A.video!==void 0?Object.assign({},A,{video:tb(A.video)}):A}function lx(A){if(!A.RTCPeerConnection)return;const e=A.RTCPeerConnection;A.RTCPeerConnection=function(o,a){if(o&&o.iceServers){const c=[];for(let d=0;de.generateCertificate})}function Ix(A){typeof A=="object"&&A.RTCTrackEvent&&"receiver"in A.RTCTrackEvent.prototype&&!("transceiver"in A.RTCTrackEvent.prototype)&&Object.defineProperty(A.RTCTrackEvent.prototype,"transceiver",{get(){return{receiver:this.receiver}}})}function Vw(A){const e=A.RTCPeerConnection.prototype.createOffer;A.RTCPeerConnection.prototype.createOffer=function(o){if(o){o.offerToReceiveAudio!==void 0&&(o.offerToReceiveAudio=!!o.offerToReceiveAudio);const a=this.getTransceivers().find(d=>d.receiver.track.kind==="audio");o.offerToReceiveAudio===!1&&a?a.direction==="sendrecv"?a.setDirection?a.setDirection("sendonly"):a.direction="sendonly":a.direction==="recvonly"&&(a.setDirection?a.setDirection("inactive"):a.direction="inactive"):o.offerToReceiveAudio!==!0||a||this.addTransceiver("audio",{direction:"recvonly"}),o.offerToReceiveVideo!==void 0&&(o.offerToReceiveVideo=!!o.offerToReceiveVideo);const c=this.getTransceivers().find(d=>d.receiver.track.kind==="video");o.offerToReceiveVideo===!1&&c?c.direction==="sendrecv"?c.setDirection?c.setDirection("sendonly"):c.direction="sendonly":c.direction==="recvonly"&&(c.setDirection?c.setDirection("inactive"):c.direction="inactive"):o.offerToReceiveVideo!==!0||c||this.addTransceiver("video",{direction:"recvonly"})}return e.apply(this,arguments)}}function ux(A){typeof A!="object"||A.AudioContext||(A.AudioContext=A.webkitAudioContext)}var Ex=Object.freeze({__proto__:null,shimLocalStreamsAPI:ax,shimRemoteStreamsAPI:gx,shimCallbacksAPI:cb,shimGetUserMedia:lb,shimConstraints:cx,shimRTCIceServerUrls:lx,shimTrackEventTransceiver:Ix,shimCreateOfferLegacy:Vw,shimAudioContext:ux}),dx={exports:{}};(function(A){const e={generateIdentifier:function(){return Math.random().toString(36).substring(2,12)}};e.localCName=e.generateIdentifier(),e.splitLines=function(o){return o.trim().split(` `).map(a=>a.trim())},e.splitSections=function(o){return o.split(` m=`).map((a,c)=>(c>0?"m="+a:a).trim()+`\r `)},e.getDescription=function(o){const a=e.splitSections(o);return a&&a[0]},e.getMediaSections=function(o){const a=e.splitSections(o);return a.shift(),a},e.matchPrefix=function(o,a){return e.splitLines(o).filter(c=>c.indexOf(a)===0)},e.parseCandidate=function(o){let a;a=o.indexOf("a=candidate:")===0?o.substring(12).split(" "):o.substring(10).split(" ");const c={foundation:a[0],component:{1:"rtp",2:"rtcp"}[a[1]]||a[1],protocol:a[2].toLowerCase(),priority:parseInt(a[3],10),ip:a[4],address:a[4],port:parseInt(a[5],10),type:a[7]};for(let d=8;d(o.candidate&&Object.defineProperty(o,"candidate",{value:new A.RTCIceCandidate(o.candidate),writable:"false"}),o))}function zG(A){!A.RTCIceCandidate||A.RTCIceCandidate&&"relayProtocol"in A.RTCIceCandidate.prototype||YB(A,"icecandidate",e=>{if(e.candidate){const o=Fd.parseCandidate(e.candidate.candidate);o.type==="relay"&&(e.candidate.relayProtocol={0:"tls",1:"tcp",2:"udp"}[o.priority>>24])}return e})}function MS(A,e){if(!A.RTCPeerConnection)return;"sctp"in A.RTCPeerConnection.prototype||Object.defineProperty(A.RTCPeerConnection.prototype,"sctp",{get(){return this._sctp===void 0?null:this._sctp}});const o=A.RTCPeerConnection.prototype.setRemoteDescription;A.RTCPeerConnection.prototype.setRemoteDescription=function(){if(this._sctp=null,e.browser==="chrome"&&e.version>=76){const{sdpSemantics:a}=this.getConfiguration();a==="plan-b"&&Object.defineProperty(this,"sctp",{get(){return this._sctp===void 0?null:this._sctp},enumerable:!0,configurable:!0})}if(function(a){if(!a||!a.sdp)return!1;const c=Fd.splitSections(a.sdp);return c.shift(),c.some(d=>{const C=Fd.parseMLine(d);return C&&C.kind==="application"&&C.protocol.indexOf("SCTP")!==-1})}(arguments[0])){const a=function(S){const b=S.sdp.match(/mozilla...THIS_IS_SDPARTA-(\d+)/);if(b===null||b.length<2)return-1;const V=parseInt(b[1],10);return V!=V?-1:V}(arguments[0]),c=function(S){let b=65536;return e.browser==="firefox"&&(b=e.version<57?S===-1?16384:2147483637:e.version<60?e.version===57?65535:65536:2147483637),b}(a),d=function(S,b){let V=65536;e.browser==="firefox"&&e.version===57&&(V=65535);const J=Fd.matchPrefix(S.sdp,"a=max-message-size:");return J.length>0?V=parseInt(J[0].substring(19),10):e.browser==="firefox"&&b!==-1&&(V=2147483637),V}(arguments[0],a);let C;C=c===0&&d===0?Number.POSITIVE_INFINITY:c===0||d===0?Math.max(c,d):Math.min(c,d);const y={};Object.defineProperty(y,"maxMessageSize",{get:()=>C}),this._sctp=y}return o.apply(this,arguments)}}function kw(A){if(!A.RTCPeerConnection||!("createDataChannel"in A.RTCPeerConnection.prototype))return;function e(a,c){const d=a.send;a.send=function(){const C=arguments[0],y=C.length||C.size||C.byteLength;if(a.readyState==="open"&&c.sctp&&y>c.sctp.maxMessageSize)throw new TypeError("Message too large (can send a maximum of "+c.sctp.maxMessageSize+" bytes)");return d.apply(a,arguments)}}const o=A.RTCPeerConnection.prototype.createDataChannel;A.RTCPeerConnection.prototype.createDataChannel=function(){const a=o.apply(this,arguments);return e(a,this),a},YB(A,"datachannel",a=>(e(a.channel,a.target),a))}function ZG(A){if(!A.RTCPeerConnection||"connectionState"in A.RTCPeerConnection.prototype)return;const e=A.RTCPeerConnection.prototype;Object.defineProperty(e,"connectionState",{get(){return{completed:"connected",checking:"connecting"}[this.iceConnectionState]||this.iceConnectionState},enumerable:!0,configurable:!0}),Object.defineProperty(e,"onconnectionstatechange",{get(){return this._onconnectionstatechange||null},set(o){this._onconnectionstatechange&&(this.removeEventListener("connectionstatechange",this._onconnectionstatechange),delete this._onconnectionstatechange),o&&this.addEventListener("connectionstatechange",this._onconnectionstatechange=o)},enumerable:!0,configurable:!0}),["setLocalDescription","setRemoteDescription"].forEach(o=>{const a=e[o];e[o]=function(){return this._connectionstatechangepoly||(this._connectionstatechangepoly=c=>{const d=c.target;if(d._lastConnectionState!==d.connectionState){d._lastConnectionState=d.connectionState;const C=new Event("connectionstatechange",c);d.dispatchEvent(C)}return c},this.addEventListener("iceconnectionstatechange",this._connectionstatechangepoly)),a.apply(this,arguments)}})}function Lw(A,e){if(!A.RTCPeerConnection||e.browser==="chrome"&&e.version>=71||e.browser==="safari"&&e._safariVersion>=13.1)return;const o=A.RTCPeerConnection.prototype.setRemoteDescription;A.RTCPeerConnection.prototype.setRemoteDescription=function(a){if(a&&a.sdp&&a.sdp.indexOf(` +`},e.getDirection=function(o,a){const c=e.splitLines(o);for(let d=0;d(o.candidate&&Object.defineProperty(o,"candidate",{value:new A.RTCIceCandidate(o.candidate),writable:"false"}),o))}function Ib(A){!A.RTCIceCandidate||A.RTCIceCandidate&&"relayProtocol"in A.RTCIceCandidate.prototype||JB(A,"icecandidate",e=>{if(e.candidate){const o=Vd.parseCandidate(e.candidate.candidate);o.type==="relay"&&(e.candidate.relayProtocol={0:"tls",1:"tcp",2:"udp"}[o.priority>>24])}return e})}function GS(A,e){if(!A.RTCPeerConnection)return;"sctp"in A.RTCPeerConnection.prototype||Object.defineProperty(A.RTCPeerConnection.prototype,"sctp",{get(){return this._sctp===void 0?null:this._sctp}});const o=A.RTCPeerConnection.prototype.setRemoteDescription;A.RTCPeerConnection.prototype.setRemoteDescription=function(){if(this._sctp=null,e.browser==="chrome"&&e.version>=76){const{sdpSemantics:a}=this.getConfiguration();a==="plan-b"&&Object.defineProperty(this,"sctp",{get(){return this._sctp===void 0?null:this._sctp},enumerable:!0,configurable:!0})}if(function(a){if(!a||!a.sdp)return!1;const c=Vd.splitSections(a.sdp);return c.shift(),c.some(d=>{const C=Vd.parseMLine(d);return C&&C.kind==="application"&&C.protocol.indexOf("SCTP")!==-1})}(arguments[0])){const a=function(S){const b=S.sdp.match(/mozilla...THIS_IS_SDPARTA-(\d+)/);if(b===null||b.length<2)return-1;const V=parseInt(b[1],10);return V!=V?-1:V}(arguments[0]),c=function(S){let b=65536;return e.browser==="firefox"&&(b=e.version<57?S===-1?16384:2147483637:e.version<60?e.version===57?65535:65536:2147483637),b}(a),d=function(S,b){let V=65536;e.browser==="firefox"&&e.version===57&&(V=65535);const J=Vd.matchPrefix(S.sdp,"a=max-message-size:");return J.length>0?V=parseInt(J[0].substring(19),10):e.browser==="firefox"&&b!==-1&&(V=2147483637),V}(arguments[0],a);let C;C=c===0&&d===0?Number.POSITIVE_INFINITY:c===0||d===0?Math.max(c,d):Math.min(c,d);const y={};Object.defineProperty(y,"maxMessageSize",{get:()=>C}),this._sctp=y}return o.apply(this,arguments)}}function Hw(A){if(!A.RTCPeerConnection||!("createDataChannel"in A.RTCPeerConnection.prototype))return;function e(a,c){const d=a.send;a.send=function(){const C=arguments[0],y=C.length||C.size||C.byteLength;if(a.readyState==="open"&&c.sctp&&y>c.sctp.maxMessageSize)throw new TypeError("Message too large (can send a maximum of "+c.sctp.maxMessageSize+" bytes)");return d.apply(a,arguments)}}const o=A.RTCPeerConnection.prototype.createDataChannel;A.RTCPeerConnection.prototype.createDataChannel=function(){const a=o.apply(this,arguments);return e(a,this),a},JB(A,"datachannel",a=>(e(a.channel,a.target),a))}function ub(A){if(!A.RTCPeerConnection||"connectionState"in A.RTCPeerConnection.prototype)return;const e=A.RTCPeerConnection.prototype;Object.defineProperty(e,"connectionState",{get(){return{completed:"connected",checking:"connecting"}[this.iceConnectionState]||this.iceConnectionState},enumerable:!0,configurable:!0}),Object.defineProperty(e,"onconnectionstatechange",{get(){return this._onconnectionstatechange||null},set(o){this._onconnectionstatechange&&(this.removeEventListener("connectionstatechange",this._onconnectionstatechange),delete this._onconnectionstatechange),o&&this.addEventListener("connectionstatechange",this._onconnectionstatechange=o)},enumerable:!0,configurable:!0}),["setLocalDescription","setRemoteDescription"].forEach(o=>{const a=e[o];e[o]=function(){return this._connectionstatechangepoly||(this._connectionstatechangepoly=c=>{const d=c.target;if(d._lastConnectionState!==d.connectionState){d._lastConnectionState=d.connectionState;const C=new Event("connectionstatechange",c);d.dispatchEvent(C)}return c},this.addEventListener("iceconnectionstatechange",this._connectionstatechangepoly)),a.apply(this,arguments)}})}function qw(A,e){if(!A.RTCPeerConnection||e.browser==="chrome"&&e.version>=71||e.browser==="safari"&&e._safariVersion>=13.1)return;const o=A.RTCPeerConnection.prototype.setRemoteDescription;A.RTCPeerConnection.prototype.setRemoteDescription=function(a){if(a&&a.sdp&&a.sdp.indexOf(` a=extmap-allow-mixed`)!==-1){const c=a.sdp.split(` `).filter(d=>d.trim()!=="a=extmap-allow-mixed").join(` -`);A.RTCSessionDescription&&a instanceof A.RTCSessionDescription?arguments[0]=new A.RTCSessionDescription({type:a.type,sdp:c}):a.sdp=c}return o.apply(this,arguments)}}function Uw(A,e){if(!A.RTCPeerConnection||!A.RTCPeerConnection.prototype)return;const o=A.RTCPeerConnection.prototype.addIceCandidate;o&&o.length!==0&&(A.RTCPeerConnection.prototype.addIceCandidate=function(){return arguments[0]?(e.browser==="chrome"&&e.version<78||e.browser==="firefox"&&e.version<68||e.browser==="safari")&&arguments[0]&&arguments[0].candidate===""?Promise.resolve():o.apply(this,arguments):(arguments[1]&&arguments[1].apply(null),Promise.resolve())})}function Fw(A,e){if(!A.RTCPeerConnection||!A.RTCPeerConnection.prototype)return;const o=A.RTCPeerConnection.prototype.setLocalDescription;o&&o.length!==0&&(A.RTCPeerConnection.prototype.setLocalDescription=function(){let a=arguments[0]||{};if(typeof a!="object"||a.type&&a.sdp)return o.apply(this,arguments);if(a={type:a.type,sdp:a.sdp},!a.type)switch(this.signalingState){case"stable":case"have-local-offer":case"have-remote-pranswer":a.type="offer";break;default:a.type="answer"}return a.sdp||a.type!=="offer"&&a.type!=="answer"?o.apply(this,[a]):(a.type==="offer"?this.createOffer:this.createAnswer).apply(this).then(c=>o.apply(this,[c]))})}var Qq=Object.freeze({__proto__:null,shimRTCIceCandidate:bw,shimRTCIceCandidateRelayProtocol:zG,shimMaxMessageSize:MS,shimSendThrowTypeError:kw,shimConnectionState:ZG,removeExtmapAllowMixed:Lw,shimAddIceCandidateNullOrEmpty:Uw,shimParameterlessSetLocalDescription:Fw});(function({window:A}={},e={shimChrome:!0,shimFirefox:!0,shimSafari:!0}){const o=Tw,a=function(d){const C={browser:null,version:null};if(d===void 0||!d.navigator||!d.navigator.userAgent)return C.browser="Not a browser.",C;const{navigator:y}=d;if(y.mozGetUserMedia)C.browser="firefox",C.version=parseInt(yS(y.userAgent,/Firefox\/(\d+)\./,1));else if(y.webkitGetUserMedia||d.isSecureContext===!1&&d.webkitRTCPeerConnection)C.browser="chrome",C.version=parseInt(yS(y.userAgent,/Chrom(e|ium)\/(\d+)\./,2));else{if(!d.RTCPeerConnection||!y.userAgent.match(/AppleWebKit\/(\d+)\./))return C.browser="Not a supported browser.",C;C.browser="safari",C.version=parseInt(yS(y.userAgent,/AppleWebKit\/(\d+)\./,1)),C.supportsUnifiedPlan=d.RTCRtpTransceiver&&"currentDirection"in d.RTCRtpTransceiver.prototype,C._safariVersion=yS(y.userAgent,/Version\/(\d+(\.?\d+))/,1)}return C}(A),c={browserDetails:a,commonShim:Qq,extractVersion:yS,disableLog:pP,disableWarnings:Bq,sdp:KP};switch(a.browser){case"chrome":if(!HG||!SS||!e.shimChrome)return o("Chrome shim is not included in this adapter release."),c;if(a.version===null)return o("Chrome shim can not determine version, not shimming."),c;o("adapter.js shimming chrome."),c.browserShim=HG,Uw(A,a),Fw(A),fP(A,a),yP(A),SS(A,a),DP(A),vP(A,a),VG(A),SP(A),JG(A),RP(A,a),bw(A),zG(A),ZG(A),MS(A,a),kw(A),Lw(A,a);break;case"firefox":if(!UP||!Nw||!e.shimFirefox)return o("Firefox shim is not included in this adapter release."),c;o("adapter.js shimming firefox."),c.browserShim=UP,Uw(A,a),Fw(A),wP(A,a),Nw(A,a),_P(A),NP(A),TP(A),qG(A),KG(A),GP(A),bP(A),kP(A),LP(A),bw(A),ZG(A),MS(A,a),kw(A);break;case"safari":if(!JP||!e.shimSafari)return o("Safari shim is not included in this adapter release."),c;o("adapter.js shimming safari."),c.browserShim=JP,Uw(A,a),Fw(A),xP(A),Gw(A),jG(A),FP(A),OP(A),YP(A),WG(A),VP(A),bw(A),zG(A),MS(A,a),kw(A),Lw(A,a);break;default:o("Unsupported browser!")}})({window:typeof window>"u"?void 0:window});var go,jP=Object.create,vS=Object.defineProperty,pq=Object.defineProperties,Ow=Object.getOwnPropertyDescriptor,RS=Object.getOwnPropertyDescriptors,mq=Object.getOwnPropertyNames,Pw=Object.getOwnPropertySymbols,WP=Object.getPrototypeOf,XG=Object.prototype.hasOwnProperty,zP=Object.prototype.propertyIsEnumerable,ZP=Reflect.get,wS=Math.pow,xw=(A,e,o)=>e in A?vS(A,e,{enumerable:!0,configurable:!0,writable:!0,value:o}):A[e]=o,pi=(A,e)=>{for(var o in e||(e={}))XG.call(e,o)&&xw(A,o,e[o]);if(Pw)for(var o of Pw(e))zP.call(e,o)&&xw(A,o,e[o]);return A},Bo=(A,e)=>pq(A,RS(e)),XP=(A,e)=>{var o={};for(var a in A)XG.call(A,a)&&e.indexOf(a)<0&&(o[a]=A[a]);if(A!=null&&Pw)for(var a of Pw(A))e.indexOf(a)<0&&zP.call(A,a)&&(o[a]=A[a]);return o},xh=(A,e)=>()=>(e||A((e={exports:{}}).exports,e),e.exports),Yh=(A,e)=>{for(var o in e)vS(A,o,{get:e[o],enumerable:!0})},gc=(A,e,o)=>(o=A!=null?jP(WP(A)):{},((a,c,d,C)=>{if(c&&typeof c=="object"||typeof c=="function")for(let y of mq(c))!XG.call(a,y)&&y!==d&&vS(a,y,{get:()=>c[y],enumerable:!(C=Ow(c,y))||C.enumerable});return a})(!e&&A&&A.__esModule?o:vS(o,"default",{value:A,enumerable:!0}),A)),di=(A,e,o,a)=>{for(var c,d=Ow(e,o),C=A.length-1;C>=0;C--)(c=A[C])&&(d=c(e,o,d)||d);return d&&vS(e,o,d),d},Y=(A,e,o)=>xw(A,typeof e!="symbol"?e+"":e,o),RI=(A,e,o)=>ZP(WP(A),o,e),KA=(A,e,o)=>new Promise((a,c)=>{var d=S=>{try{y(o.next(S))}catch(b){c(b)}},C=S=>{try{y(o.throw(S))}catch(b){c(b)}},y=S=>S.done?a(S.value):Promise.resolve(S.value).then(d,C);y((o=o.apply(A,e)).next())}),Hl=xh((A,e)=>{var o=Object.prototype.hasOwnProperty,a="~";function c(){}function d(b,V,J){this.fn=b,this.context=V,this.once=J||!1}function C(b,V,J,gA,CA){if(typeof J!="function")throw new TypeError("The listener must be a function");var MA=new d(J,gA||b,CA),ee=a?a+V:V;return b._events[ee]?b._events[ee].fn?b._events[ee]=[b._events[ee],MA]:b._events[ee].push(MA):(b._events[ee]=MA,b._eventsCount++),b}function y(b,V){--b._eventsCount===0?b._events=new c:delete b._events[V]}function S(){this._events=new c,this._eventsCount=0}Object.create&&(c.prototype=Object.create(null),new c().__proto__||(a=!1)),S.prototype.eventNames=function(){var b,V,J=[];if(this._eventsCount===0)return J;for(V in b=this._events)o.call(b,V)&&J.push(a?V.slice(1):V);return Object.getOwnPropertySymbols?J.concat(Object.getOwnPropertySymbols(b)):J},S.prototype.listeners=function(b){var V=a?a+b:b,J=this._events[V];if(!J)return[];if(J.fn)return[J.fn];for(var gA=0,CA=J.length,MA=new Array(CA);gA{var o=e.exports={v:[{name:"version",reg:/^(\d*)$/}],o:[{name:"origin",reg:/^(\S*) (\d*) (\d*) (\S*) IP(\d) (\S*)/,names:["username","sessionId","sessionVersion","netType","ipVer","address"],format:"%s %s %d %s IP%d %s"}],s:[{name:"name"}],i:[{name:"description"}],u:[{name:"uri"}],e:[{name:"email"}],p:[{name:"phone"}],z:[{name:"timezones"}],r:[{name:"repeats"}],t:[{name:"timing",reg:/^(\d*) (\d*)/,names:["start","stop"],format:"%d %d"}],c:[{name:"connection",reg:/^IN IP(\d) (\S*)/,names:["version","ip"],format:"IN IP%d %s"}],b:[{push:"bandwidth",reg:/^(TIAS|AS|CT|RR|RS):(\d*)/,names:["type","limit"],format:"%s:%s"}],m:[{reg:/^(\w*) (\d*) ([\w/]*)(?: (.*))?/,names:["type","port","protocol","payloads"],format:"%s %d %s %s"}],a:[{push:"rtp",reg:/^rtpmap:(\d*) ([\w\-.]*)(?:\s*\/(\d*)(?:\s*\/(\S*))?)?/,names:["payload","codec","rate","encoding"],format:function(a){return a.encoding?"rtpmap:%d %s/%s/%s":a.rate?"rtpmap:%d %s/%s":"rtpmap:%d %s"}},{push:"fmtp",reg:/^fmtp:(\d*) ([\S| ]*)/,names:["payload","config"],format:"fmtp:%d %s"},{name:"control",reg:/^control:(.*)/,format:"control:%s"},{name:"rtcp",reg:/^rtcp:(\d*)(?: (\S*) IP(\d) (\S*))?/,names:["port","netType","ipVer","address"],format:function(a){return a.address!=null?"rtcp:%d %s IP%d %s":"rtcp:%d"}},{push:"rtcpFbTrrInt",reg:/^rtcp-fb:(\*|\d*) trr-int (\d*)/,names:["payload","value"],format:"rtcp-fb:%s trr-int %d"},{push:"rtcpFb",reg:/^rtcp-fb:(\*|\d*) ([\w-_]*)(?: ([\w-_]*))?/,names:["payload","type","subtype"],format:function(a){return a.subtype!=null?"rtcp-fb:%s %s %s":"rtcp-fb:%s %s"}},{push:"ext",reg:/^extmap:(\d+)(?:\/(\w+))?(?: (urn:ietf:params:rtp-hdrext:encrypt))? (\S*)(?: (\S*))?/,names:["value","direction","encrypt-uri","uri","config"],format:function(a){return"extmap:%d"+(a.direction?"/%s":"%v")+(a["encrypt-uri"]?" %s":"%v")+" %s"+(a.config?" %s":"")}},{name:"extmapAllowMixed",reg:/^(extmap-allow-mixed)/},{push:"crypto",reg:/^crypto:(\d*) ([\w_]*) (\S*)(?: (\S*))?/,names:["id","suite","config","sessionConfig"],format:function(a){return a.sessionConfig!=null?"crypto:%d %s %s %s":"crypto:%d %s %s"}},{name:"setup",reg:/^setup:(\w*)/,format:"setup:%s"},{name:"connectionType",reg:/^connection:(new|existing)/,format:"connection:%s"},{name:"mid",reg:/^mid:([^\s]*)/,format:"mid:%s"},{name:"msid",reg:/^msid:(.*)/,format:"msid:%s"},{name:"ptime",reg:/^ptime:(\d*(?:\.\d*)*)/,format:"ptime:%d"},{name:"maxptime",reg:/^maxptime:(\d*(?:\.\d*)*)/,format:"maxptime:%d"},{name:"direction",reg:/^(sendrecv|recvonly|sendonly|inactive)/},{name:"icelite",reg:/^(ice-lite)/},{name:"iceUfrag",reg:/^ice-ufrag:(\S*)/,format:"ice-ufrag:%s"},{name:"icePwd",reg:/^ice-pwd:(\S*)/,format:"ice-pwd:%s"},{name:"fingerprint",reg:/^fingerprint:(\S*) (\S*)/,names:["type","hash"],format:"fingerprint:%s %s"},{push:"candidates",reg:/^candidate:(\S*) (\d*) (\S*) (\d*) (\S*) (\d*) typ (\S*)(?: raddr (\S*) rport (\d*))?(?: tcptype (\S*))?(?: generation (\d*))?(?: network-id (\d*))?(?: network-cost (\d*))?/,names:["foundation","component","transport","priority","ip","port","type","raddr","rport","tcptype","generation","network-id","network-cost"],format:function(a){var c="candidate:%s %d %s %d %s %d typ %s";return c+=a.raddr!=null?" raddr %s rport %d":"%v%v",c+=a.tcptype!=null?" tcptype %s":"%v",a.generation!=null&&(c+=" generation %d"),c+=a["network-id"]!=null?" network-id %d":"%v",c+=a["network-cost"]!=null?" network-cost %d":"%v"}},{name:"endOfCandidates",reg:/^(end-of-candidates)/},{name:"remoteCandidates",reg:/^remote-candidates:(.*)/,format:"remote-candidates:%s"},{name:"iceOptions",reg:/^ice-options:(\S*)/,format:"ice-options:%s"},{push:"ssrcs",reg:/^ssrc:(\d*) ([\w_-]*)(?::(.*))?/,names:["id","attribute","value"],format:function(a){var c="ssrc:%d";return a.attribute!=null&&(c+=" %s",a.value!=null&&(c+=":%s")),c}},{push:"ssrcGroups",reg:/^ssrc-group:([\x21\x23\x24\x25\x26\x27\x2A\x2B\x2D\x2E\w]*) (.*)/,names:["semantics","ssrcs"],format:"ssrc-group:%s %s"},{name:"msidSemantic",reg:/^msid-semantic:\s?(\w*) (\S*)/,names:["semantic","token"],format:"msid-semantic: %s %s"},{push:"groups",reg:/^group:(\w*) (.*)/,names:["type","mids"],format:"group:%s %s"},{name:"rtcpMux",reg:/^(rtcp-mux)/},{name:"rtcpRsize",reg:/^(rtcp-rsize)/},{name:"sctpmap",reg:/^sctpmap:([\w_/]*) (\S*)(?: (\S*))?/,names:["sctpmapNumber","app","maxMessageSize"],format:function(a){return a.maxMessageSize!=null?"sctpmap:%s %s %s":"sctpmap:%s %s"}},{name:"xGoogleFlag",reg:/^x-google-flag:([^\s]*)/,format:"x-google-flag:%s"},{push:"rids",reg:/^rid:([\d\w]+) (\w+)(?: ([\S| ]*))?/,names:["id","direction","params"],format:function(a){return a.params?"rid:%s %s %s":"rid:%s %s"}},{push:"imageattrs",reg:new RegExp("^imageattr:(\\d+|\\*)[\\s\\t]+(send|recv)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*)(?:[\\s\\t]+(recv|send)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*))?"),names:["pt","dir1","attrs1","dir2","attrs2"],format:function(a){return"imageattr:%s %s %s"+(a.dir2?" %s %s":"")}},{name:"simulcast",reg:new RegExp("^simulcast:(send|recv) ([a-zA-Z0-9\\-_~;,]+)(?:\\s?(send|recv) ([a-zA-Z0-9\\-_~;,]+))?$"),names:["dir1","list1","dir2","list2"],format:function(a){return"simulcast:%s %s"+(a.dir2?" %s %s":"")}},{name:"simulcast_03",reg:/^simulcast:[\s\t]+([\S+\s\t]+)$/,names:["value"],format:"simulcast: %s"},{name:"framerate",reg:/^framerate:(\d+(?:$|\.\d+))/,format:"framerate:%s"},{name:"sourceFilter",reg:/^source-filter: *(excl|incl) (\S*) (IP4|IP6|\*) (\S*) (.*)/,names:["filterMode","netType","addressTypes","destAddress","srcList"],format:"source-filter: %s %s %s %s %s"},{name:"bundleOnly",reg:/^(bundle-only)/},{name:"label",reg:/^label:(.+)/,format:"label:%s"},{name:"sctpPort",reg:/^sctp-port:(\d+)$/,format:"sctp-port:%s"},{name:"maxMessageSize",reg:/^max-message-size:(\d+)$/,format:"max-message-size:%s"},{push:"tsRefClocks",reg:/^ts-refclk:([^\s=]*)(?:=(\S*))?/,names:["clksrc","clksrcExt"],format:function(a){return"ts-refclk:%s"+(a.clksrcExt!=null?"=%s":"")}},{name:"mediaClk",reg:/^mediaclk:(?:id=(\S*))? *([^\s=]*)(?:=(\S*))?(?: *rate=(\d+)\/(\d+))?/,names:["id","mediaClockName","mediaClockValue","rateNumerator","rateDenominator"],format:function(a){var c="mediaclk:";return c+=a.id!=null?"id=%s %s":"%v%s",c+=a.mediaClockValue!=null?"=%s":"",c+=a.rateNumerator!=null?" rate=%s":"",c+=a.rateDenominator!=null?"/%s":""}},{name:"keywords",reg:/^keywds:(.+)$/,format:"keywds:%s"},{name:"content",reg:/^content:(.+)/,format:"content:%s"},{name:"bfcpFloorCtrl",reg:/^floorctrl:(c-only|s-only|c-s)/,format:"floorctrl:%s"},{name:"bfcpConfId",reg:/^confid:(\d+)/,format:"confid:%s"},{name:"bfcpUserId",reg:/^userid:(\d+)/,format:"userid:%s"},{name:"bfcpFloorId",reg:/^floorid:(.+) (?:m-stream|mstrm):(.+)/,names:["id","mStream"],format:"floorid:%s mstrm:%s"},{push:"invalid",names:["value"]}]};Object.keys(o).forEach(function(a){o[a].forEach(function(c){c.reg||(c.reg=/(.*)/),c.format||(c.format="%s")})})}),_f=xh(A=>{var e=function(C){return String(Number(C))===C?Number(C):C},o=function(C,y,S){var b=C.name&&C.names;C.push&&!y[C.push]?y[C.push]=[]:b&&!y[C.name]&&(y[C.name]={});var V=C.push?{}:b?y[C.name]:y;(function(J,gA,CA,MA){if(MA&&!CA)gA[MA]=e(J[1]);else for(var ee=0;ee1&&(C[S[0]]=void 0),C};A.parseParams=function(C){return C.split(/;\s?/).reduce(d,{})},A.parseFmtpConfig=A.parseParams,A.parsePayloads=function(C){return C.toString().split(" ").map(Number)},A.parseRemoteCandidates=function(C){for(var y=[],S=C.split(" ").map(e),b=0;b{var o=RC(),a=/%[sdv%]/g,c=function(S){var b=1,V=arguments,J=V.length;return S.replace(a,function(gA){if(b>=J)return gA;var CA=V[b];switch(b+=1,gA){case"%%":return"%";case"%s":return String(CA);case"%d":return Number(CA);case"%v":return""}})},d=function(S,b,V){var J=[S+"="+(b.format instanceof Function?b.format(b.push?V:V[b.name]):b.format)];if(b.names)for(var gA=0;gAo.apply(this,[c]))})}var Wq=Object.freeze({__proto__:null,shimRTCIceCandidate:Jw,shimRTCIceCandidateRelayProtocol:Ib,shimMaxMessageSize:GS,shimSendThrowTypeError:Hw,shimConnectionState:ub,removeExtmapAllowMixed:qw,shimAddIceCandidateNullOrEmpty:Kw,shimParameterlessSetLocalDescription:jw});(function({window:A}={},e={shimChrome:!0,shimFirefox:!0,shimSafari:!0}){const o=xw,a=function(d){const C={browser:null,version:null};if(d===void 0||!d.navigator||!d.navigator.userAgent)return C.browser="Not a browser.",C;const{navigator:y}=d;if(y.mozGetUserMedia)C.browser="firefox",C.version=parseInt(_S(y.userAgent,/Firefox\/(\d+)\./,1));else if(y.webkitGetUserMedia||d.isSecureContext===!1&&d.webkitRTCPeerConnection)C.browser="chrome",C.version=parseInt(_S(y.userAgent,/Chrom(e|ium)\/(\d+)\./,2));else{if(!d.RTCPeerConnection||!y.userAgent.match(/AppleWebKit\/(\d+)\./))return C.browser="Not a supported browser.",C;C.browser="safari",C.version=parseInt(_S(y.userAgent,/AppleWebKit\/(\d+)\./,1)),C.supportsUnifiedPlan=d.RTCRtpTransceiver&&"currentDirection"in d.RTCRtpTransceiver.prototype,C._safariVersion=_S(y.userAgent,/Version\/(\d+(\.?\d+))/,1)}return C}(A),c={browserDetails:a,commonShim:Wq,extractVersion:_S,disableLog:JP,disableWarnings:jq,sdp:hx};switch(a.browser){case"chrome":if(!rb||!NS||!e.shimChrome)return o("Chrome shim is not included in this adapter release."),c;if(a.version===null)return o("Chrome shim can not determine version, not shimming."),c;o("adapter.js shimming chrome."),c.browserShim=rb,Kw(A,a),jw(A),qP(A,a),KP(A),NS(A,a),jP(A),ZP(A,a),sb(A),WP(A),nb(A),XP(A,a),Jw(A),Ib(A),ub(A),GS(A,a),Hw(A),qw(A,a);break;case"firefox":if(!rx||!Yw||!e.shimFirefox)return o("Firefox shim is not included in this adapter release."),c;o("adapter.js shimming firefox."),c.browserShim=rx,Kw(A,a),jw(A),$P(A,a),Yw(A,a),Ax(A),tx(A),ex(A),ab(A),gb(A),ix(A),ox(A),sx(A),nx(A),Jw(A),ub(A),GS(A,a),Hw(A);break;case"safari":if(!Ex||!e.shimSafari)return o("Safari shim is not included in this adapter release."),c;o("adapter.js shimming safari."),c.browserShim=Ex,Kw(A,a),jw(A),lx(A),Vw(A),cb(A),ax(A),gx(A),Ix(A),lb(A),ux(A),Jw(A),Ib(A),GS(A,a),Hw(A),qw(A,a);break;default:o("Unsupported browser!")}})({window:typeof window>"u"?void 0:window});var go,Bx=Object.create,bS=Object.defineProperty,zq=Object.defineProperties,Ww=Object.getOwnPropertyDescriptor,kS=Object.getOwnPropertyDescriptors,Zq=Object.getOwnPropertyNames,zw=Object.getOwnPropertySymbols,Qx=Object.getPrototypeOf,Eb=Object.prototype.hasOwnProperty,px=Object.prototype.propertyIsEnumerable,mx=Reflect.get,LS=Math.pow,Zw=(A,e,o)=>e in A?bS(A,e,{enumerable:!0,configurable:!0,writable:!0,value:o}):A[e]=o,mi=(A,e)=>{for(var o in e||(e={}))Eb.call(e,o)&&Zw(A,o,e[o]);if(zw)for(var o of zw(e))px.call(e,o)&&Zw(A,o,e[o]);return A},Qo=(A,e)=>zq(A,kS(e)),fx=(A,e)=>{var o={};for(var a in A)Eb.call(A,a)&&e.indexOf(a)<0&&(o[a]=A[a]);if(A!=null&&zw)for(var a of zw(A))e.indexOf(a)<0&&px.call(A,a)&&(o[a]=A[a]);return o},Vh=(A,e)=>()=>(e||A((e={exports:{}}).exports,e),e.exports),Jh=(A,e)=>{for(var o in e)bS(A,o,{get:e[o],enumerable:!0})},gc=(A,e,o)=>(o=A!=null?Bx(Qx(A)):{},((a,c,d,C)=>{if(c&&typeof c=="object"||typeof c=="function")for(let y of Zq(c))!Eb.call(a,y)&&y!==d&&bS(a,y,{get:()=>c[y],enumerable:!(C=Ww(c,y))||C.enumerable});return a})(!e&&A&&A.__esModule?o:bS(o,"default",{value:A,enumerable:!0}),A)),di=(A,e,o,a)=>{for(var c,d=Ww(e,o),C=A.length-1;C>=0;C--)(c=A[C])&&(d=c(e,o,d)||d);return d&&bS(e,o,d),d},Y=(A,e,o)=>Zw(A,typeof e!="symbol"?e+"":e,o),TI=(A,e,o)=>mx(Qx(A),o,e),KA=(A,e,o)=>new Promise((a,c)=>{var d=S=>{try{y(o.next(S))}catch(b){c(b)}},C=S=>{try{y(o.throw(S))}catch(b){c(b)}},y=S=>S.done?a(S.value):Promise.resolve(S.value).then(d,C);y((o=o.apply(A,e)).next())}),ql=Vh((A,e)=>{var o=Object.prototype.hasOwnProperty,a="~";function c(){}function d(b,V,J){this.fn=b,this.context=V,this.once=J||!1}function C(b,V,J,gA,CA){if(typeof J!="function")throw new TypeError("The listener must be a function");var MA=new d(J,gA||b,CA),$A=a?a+V:V;return b._events[$A]?b._events[$A].fn?b._events[$A]=[b._events[$A],MA]:b._events[$A].push(MA):(b._events[$A]=MA,b._eventsCount++),b}function y(b,V){--b._eventsCount===0?b._events=new c:delete b._events[V]}function S(){this._events=new c,this._eventsCount=0}Object.create&&(c.prototype=Object.create(null),new c().__proto__||(a=!1)),S.prototype.eventNames=function(){var b,V,J=[];if(this._eventsCount===0)return J;for(V in b=this._events)o.call(b,V)&&J.push(a?V.slice(1):V);return Object.getOwnPropertySymbols?J.concat(Object.getOwnPropertySymbols(b)):J},S.prototype.listeners=function(b){var V=a?a+b:b,J=this._events[V];if(!J)return[];if(J.fn)return[J.fn];for(var gA=0,CA=J.length,MA=new Array(CA);gA{var o=e.exports={v:[{name:"version",reg:/^(\d*)$/}],o:[{name:"origin",reg:/^(\S*) (\d*) (\d*) (\S*) IP(\d) (\S*)/,names:["username","sessionId","sessionVersion","netType","ipVer","address"],format:"%s %s %d %s IP%d %s"}],s:[{name:"name"}],i:[{name:"description"}],u:[{name:"uri"}],e:[{name:"email"}],p:[{name:"phone"}],z:[{name:"timezones"}],r:[{name:"repeats"}],t:[{name:"timing",reg:/^(\d*) (\d*)/,names:["start","stop"],format:"%d %d"}],c:[{name:"connection",reg:/^IN IP(\d) (\S*)/,names:["version","ip"],format:"IN IP%d %s"}],b:[{push:"bandwidth",reg:/^(TIAS|AS|CT|RR|RS):(\d*)/,names:["type","limit"],format:"%s:%s"}],m:[{reg:/^(\w*) (\d*) ([\w/]*)(?: (.*))?/,names:["type","port","protocol","payloads"],format:"%s %d %s %s"}],a:[{push:"rtp",reg:/^rtpmap:(\d*) ([\w\-.]*)(?:\s*\/(\d*)(?:\s*\/(\S*))?)?/,names:["payload","codec","rate","encoding"],format:function(a){return a.encoding?"rtpmap:%d %s/%s/%s":a.rate?"rtpmap:%d %s/%s":"rtpmap:%d %s"}},{push:"fmtp",reg:/^fmtp:(\d*) ([\S| ]*)/,names:["payload","config"],format:"fmtp:%d %s"},{name:"control",reg:/^control:(.*)/,format:"control:%s"},{name:"rtcp",reg:/^rtcp:(\d*)(?: (\S*) IP(\d) (\S*))?/,names:["port","netType","ipVer","address"],format:function(a){return a.address!=null?"rtcp:%d %s IP%d %s":"rtcp:%d"}},{push:"rtcpFbTrrInt",reg:/^rtcp-fb:(\*|\d*) trr-int (\d*)/,names:["payload","value"],format:"rtcp-fb:%s trr-int %d"},{push:"rtcpFb",reg:/^rtcp-fb:(\*|\d*) ([\w-_]*)(?: ([\w-_]*))?/,names:["payload","type","subtype"],format:function(a){return a.subtype!=null?"rtcp-fb:%s %s %s":"rtcp-fb:%s %s"}},{push:"ext",reg:/^extmap:(\d+)(?:\/(\w+))?(?: (urn:ietf:params:rtp-hdrext:encrypt))? (\S*)(?: (\S*))?/,names:["value","direction","encrypt-uri","uri","config"],format:function(a){return"extmap:%d"+(a.direction?"/%s":"%v")+(a["encrypt-uri"]?" %s":"%v")+" %s"+(a.config?" %s":"")}},{name:"extmapAllowMixed",reg:/^(extmap-allow-mixed)/},{push:"crypto",reg:/^crypto:(\d*) ([\w_]*) (\S*)(?: (\S*))?/,names:["id","suite","config","sessionConfig"],format:function(a){return a.sessionConfig!=null?"crypto:%d %s %s %s":"crypto:%d %s %s"}},{name:"setup",reg:/^setup:(\w*)/,format:"setup:%s"},{name:"connectionType",reg:/^connection:(new|existing)/,format:"connection:%s"},{name:"mid",reg:/^mid:([^\s]*)/,format:"mid:%s"},{name:"msid",reg:/^msid:(.*)/,format:"msid:%s"},{name:"ptime",reg:/^ptime:(\d*(?:\.\d*)*)/,format:"ptime:%d"},{name:"maxptime",reg:/^maxptime:(\d*(?:\.\d*)*)/,format:"maxptime:%d"},{name:"direction",reg:/^(sendrecv|recvonly|sendonly|inactive)/},{name:"icelite",reg:/^(ice-lite)/},{name:"iceUfrag",reg:/^ice-ufrag:(\S*)/,format:"ice-ufrag:%s"},{name:"icePwd",reg:/^ice-pwd:(\S*)/,format:"ice-pwd:%s"},{name:"fingerprint",reg:/^fingerprint:(\S*) (\S*)/,names:["type","hash"],format:"fingerprint:%s %s"},{push:"candidates",reg:/^candidate:(\S*) (\d*) (\S*) (\d*) (\S*) (\d*) typ (\S*)(?: raddr (\S*) rport (\d*))?(?: tcptype (\S*))?(?: generation (\d*))?(?: network-id (\d*))?(?: network-cost (\d*))?/,names:["foundation","component","transport","priority","ip","port","type","raddr","rport","tcptype","generation","network-id","network-cost"],format:function(a){var c="candidate:%s %d %s %d %s %d typ %s";return c+=a.raddr!=null?" raddr %s rport %d":"%v%v",c+=a.tcptype!=null?" tcptype %s":"%v",a.generation!=null&&(c+=" generation %d"),c+=a["network-id"]!=null?" network-id %d":"%v",c+=a["network-cost"]!=null?" network-cost %d":"%v"}},{name:"endOfCandidates",reg:/^(end-of-candidates)/},{name:"remoteCandidates",reg:/^remote-candidates:(.*)/,format:"remote-candidates:%s"},{name:"iceOptions",reg:/^ice-options:(\S*)/,format:"ice-options:%s"},{push:"ssrcs",reg:/^ssrc:(\d*) ([\w_-]*)(?::(.*))?/,names:["id","attribute","value"],format:function(a){var c="ssrc:%d";return a.attribute!=null&&(c+=" %s",a.value!=null&&(c+=":%s")),c}},{push:"ssrcGroups",reg:/^ssrc-group:([\x21\x23\x24\x25\x26\x27\x2A\x2B\x2D\x2E\w]*) (.*)/,names:["semantics","ssrcs"],format:"ssrc-group:%s %s"},{name:"msidSemantic",reg:/^msid-semantic:\s?(\w*) (\S*)/,names:["semantic","token"],format:"msid-semantic: %s %s"},{push:"groups",reg:/^group:(\w*) (.*)/,names:["type","mids"],format:"group:%s %s"},{name:"rtcpMux",reg:/^(rtcp-mux)/},{name:"rtcpRsize",reg:/^(rtcp-rsize)/},{name:"sctpmap",reg:/^sctpmap:([\w_/]*) (\S*)(?: (\S*))?/,names:["sctpmapNumber","app","maxMessageSize"],format:function(a){return a.maxMessageSize!=null?"sctpmap:%s %s %s":"sctpmap:%s %s"}},{name:"xGoogleFlag",reg:/^x-google-flag:([^\s]*)/,format:"x-google-flag:%s"},{push:"rids",reg:/^rid:([\d\w]+) (\w+)(?: ([\S| ]*))?/,names:["id","direction","params"],format:function(a){return a.params?"rid:%s %s %s":"rid:%s %s"}},{push:"imageattrs",reg:new RegExp("^imageattr:(\\d+|\\*)[\\s\\t]+(send|recv)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*)(?:[\\s\\t]+(recv|send)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*))?"),names:["pt","dir1","attrs1","dir2","attrs2"],format:function(a){return"imageattr:%s %s %s"+(a.dir2?" %s %s":"")}},{name:"simulcast",reg:new RegExp("^simulcast:(send|recv) ([a-zA-Z0-9\\-_~;,]+)(?:\\s?(send|recv) ([a-zA-Z0-9\\-_~;,]+))?$"),names:["dir1","list1","dir2","list2"],format:function(a){return"simulcast:%s %s"+(a.dir2?" %s %s":"")}},{name:"simulcast_03",reg:/^simulcast:[\s\t]+([\S+\s\t]+)$/,names:["value"],format:"simulcast: %s"},{name:"framerate",reg:/^framerate:(\d+(?:$|\.\d+))/,format:"framerate:%s"},{name:"sourceFilter",reg:/^source-filter: *(excl|incl) (\S*) (IP4|IP6|\*) (\S*) (.*)/,names:["filterMode","netType","addressTypes","destAddress","srcList"],format:"source-filter: %s %s %s %s %s"},{name:"bundleOnly",reg:/^(bundle-only)/},{name:"label",reg:/^label:(.+)/,format:"label:%s"},{name:"sctpPort",reg:/^sctp-port:(\d+)$/,format:"sctp-port:%s"},{name:"maxMessageSize",reg:/^max-message-size:(\d+)$/,format:"max-message-size:%s"},{push:"tsRefClocks",reg:/^ts-refclk:([^\s=]*)(?:=(\S*))?/,names:["clksrc","clksrcExt"],format:function(a){return"ts-refclk:%s"+(a.clksrcExt!=null?"=%s":"")}},{name:"mediaClk",reg:/^mediaclk:(?:id=(\S*))? *([^\s=]*)(?:=(\S*))?(?: *rate=(\d+)\/(\d+))?/,names:["id","mediaClockName","mediaClockValue","rateNumerator","rateDenominator"],format:function(a){var c="mediaclk:";return c+=a.id!=null?"id=%s %s":"%v%s",c+=a.mediaClockValue!=null?"=%s":"",c+=a.rateNumerator!=null?" rate=%s":"",c+=a.rateDenominator!=null?"/%s":""}},{name:"keywords",reg:/^keywds:(.+)$/,format:"keywds:%s"},{name:"content",reg:/^content:(.+)/,format:"content:%s"},{name:"bfcpFloorCtrl",reg:/^floorctrl:(c-only|s-only|c-s)/,format:"floorctrl:%s"},{name:"bfcpConfId",reg:/^confid:(\d+)/,format:"confid:%s"},{name:"bfcpUserId",reg:/^userid:(\d+)/,format:"userid:%s"},{name:"bfcpFloorId",reg:/^floorid:(.+) (?:m-stream|mstrm):(.+)/,names:["id","mStream"],format:"floorid:%s mstrm:%s"},{push:"invalid",names:["value"]}]};Object.keys(o).forEach(function(a){o[a].forEach(function(c){c.reg||(c.reg=/(.*)/),c.format||(c.format="%s")})})}),bf=Vh(A=>{var e=function(C){return String(Number(C))===C?Number(C):C},o=function(C,y,S){var b=C.name&&C.names;C.push&&!y[C.push]?y[C.push]=[]:b&&!y[C.name]&&(y[C.name]={});var V=C.push?{}:b?y[C.name]:y;(function(J,gA,CA,MA){if(MA&&!CA)gA[MA]=e(J[1]);else for(var $A=0;$A1&&(C[S[0]]=void 0),C};A.parseParams=function(C){return C.split(/;\s?/).reduce(d,{})},A.parseFmtpConfig=A.parseParams,A.parsePayloads=function(C){return C.toString().split(" ").map(Number)},A.parseRemoteCandidates=function(C){for(var y=[],S=C.split(" ").map(e),b=0;b{var o=GC(),a=/%[sdv%]/g,c=function(S){var b=1,V=arguments,J=V.length;return S.replace(a,function(gA){if(b>=J)return gA;var CA=V[b];switch(b+=1,gA){case"%%":return"%";case"%s":return String(CA);case"%d":return Number(CA);case"%v":return""}})},d=function(S,b,V){var J=[S+"="+(b.format instanceof Function?b.format(b.push?V:V[b.name]):b.format)];if(b.names)for(var gA=0;gA{var e=_f(),o=fq(),a=RC();A.grammar=a,A.write=o,A.parse=e.parse,A.parseParams=e.parseParams,A.parseFmtpConfig=e.parseFmtpConfig,A.parsePayloads=e.parsePayloads,A.parseRemoteCandidates=e.parseRemoteCandidates,A.parseImageAttributes=e.parseImageAttributes,A.parseSimulcastStreamList=e.parseSimulcastStreamList}),_S=xh((A,e)=>{var o=e.exports={v:[{name:"version",reg:/^(\d*)$/}],o:[{name:"origin",reg:/^(\S*) (\d*) (\d*) (\S*) IP(\d) (\S*)/,names:["username","sessionId","sessionVersion","netType","ipVer","address"],format:"%s %s %d %s IP%d %s"}],s:[{name:"name"}],i:[{name:"description"}],u:[{name:"uri"}],e:[{name:"email"}],p:[{name:"phone"}],z:[{name:"timezones"}],r:[{name:"repeats"}],t:[{name:"timing",reg:/^(\d*) (\d*)/,names:["start","stop"],format:"%d %d"}],c:[{name:"connection",reg:/^IN IP(\d) (\S*)/,names:["version","ip"],format:"IN IP%d %s"}],b:[{push:"bandwidth",reg:/^(TIAS|AS|CT|RR|RS):(\d*)/,names:["type","limit"],format:"%s:%s"}],m:[{reg:/^(\w*) (\d*) ([\w/]*)(?: (.*))?/,names:["type","port","protocol","payloads"],format:"%s %d %s %s"}],a:[{push:"rtp",reg:/^rtpmap:(\d*) ([\w\-.]*)(?:\s*\/(\d*)(?:\s*\/(\S*))?)?/,names:["payload","codec","rate","encoding"],format:function(a){return a.encoding?"rtpmap:%d %s/%s/%s":a.rate?"rtpmap:%d %s/%s":"rtpmap:%d %s"}},{push:"fmtp",reg:/^fmtp:(\d*) ([\S| ]*)/,names:["payload","config"],format:"fmtp:%d %s"},{name:"control",reg:/^control:(.*)/,format:"control:%s"},{name:"rtcp",reg:/^rtcp:(\d*)(?: (\S*) IP(\d) (\S*))?/,names:["port","netType","ipVer","address"],format:function(a){return a.address!=null?"rtcp:%d %s IP%d %s":"rtcp:%d"}},{push:"rtcpFbTrrInt",reg:/^rtcp-fb:(\*|\d*) trr-int (\d*)/,names:["payload","value"],format:"rtcp-fb:%s trr-int %d"},{push:"rtcpFb",reg:/^rtcp-fb:(\*|\d*) ([\w-_]*)(?: ([\w-_]*))?/,names:["payload","type","subtype"],format:function(a){return a.subtype!=null?"rtcp-fb:%s %s %s":"rtcp-fb:%s %s"}},{push:"ext",reg:/^extmap:(\d+)(?:\/(\w+))?(?: (urn:ietf:params:rtp-hdrext:encrypt))? (\S*)(?: (\S*))?/,names:["value","direction","encrypt-uri","uri","config"],format:function(a){return"extmap:%d"+(a.direction?"/%s":"%v")+(a["encrypt-uri"]?" %s":"%v")+" %s"+(a.config?" %s":"")}},{name:"extmapAllowMixed",reg:/^(extmap-allow-mixed)/},{push:"crypto",reg:/^crypto:(\d*) ([\w_]*) (\S*)(?: (\S*))?/,names:["id","suite","config","sessionConfig"],format:function(a){return a.sessionConfig!=null?"crypto:%d %s %s %s":"crypto:%d %s %s"}},{name:"setup",reg:/^setup:(\w*)/,format:"setup:%s"},{name:"connectionType",reg:/^connection:(new|existing)/,format:"connection:%s"},{name:"mid",reg:/^mid:([^\s]*)/,format:"mid:%s"},{name:"msid",reg:/^msid:(.*)/,format:"msid:%s"},{name:"ptime",reg:/^ptime:(\d*(?:\.\d*)*)/,format:"ptime:%d"},{name:"maxptime",reg:/^maxptime:(\d*(?:\.\d*)*)/,format:"maxptime:%d"},{name:"direction",reg:/^(sendrecv|recvonly|sendonly|inactive)/},{name:"icelite",reg:/^(ice-lite)/},{name:"iceUfrag",reg:/^ice-ufrag:(\S*)/,format:"ice-ufrag:%s"},{name:"icePwd",reg:/^ice-pwd:(\S*)/,format:"ice-pwd:%s"},{name:"fingerprint",reg:/^fingerprint:(\S*) (\S*)/,names:["type","hash"],format:"fingerprint:%s %s"},{push:"candidates",reg:/^candidate:(\S*) (\d*) (\S*) (\d*) (\S*) (\d*) typ (\S*)(?: raddr (\S*) rport (\d*))?(?: tcptype (\S*))?(?: generation (\d*))?(?: network-id (\d*))?(?: network-cost (\d*))?/,names:["foundation","component","transport","priority","ip","port","type","raddr","rport","tcptype","generation","network-id","network-cost"],format:function(a){var c="candidate:%s %d %s %d %s %d typ %s";return c+=a.raddr!=null?" raddr %s rport %d":"%v%v",c+=a.tcptype!=null?" tcptype %s":"%v",a.generation!=null&&(c+=" generation %d"),c+=a["network-id"]!=null?" network-id %d":"%v",c+=a["network-cost"]!=null?" network-cost %d":"%v"}},{name:"endOfCandidates",reg:/^(end-of-candidates)/},{name:"remoteCandidates",reg:/^remote-candidates:(.*)/,format:"remote-candidates:%s"},{name:"iceOptions",reg:/^ice-options:(\S*)/,format:"ice-options:%s"},{push:"ssrcs",reg:/^ssrc:(\d*) ([\w_-]*)(?::(.*))?/,names:["id","attribute","value"],format:function(a){var c="ssrc:%d";return a.attribute!=null&&(c+=" %s",a.value!=null&&(c+=":%s")),c}},{push:"ssrcGroups",reg:/^ssrc-group:([\x21\x23\x24\x25\x26\x27\x2A\x2B\x2D\x2E\w]*) (.*)/,names:["semantics","ssrcs"],format:"ssrc-group:%s %s"},{name:"msidSemantic",reg:/^msid-semantic:\s?(\w*) (\S*)/,names:["semantic","token"],format:"msid-semantic: %s %s"},{push:"groups",reg:/^group:(\w*) (.*)/,names:["type","mids"],format:"group:%s %s"},{name:"rtcpMux",reg:/^(rtcp-mux)/},{name:"rtcpRsize",reg:/^(rtcp-rsize)/},{name:"sctpmap",reg:/^sctpmap:([\w_/]*) (\S*)(?: (\S*))?/,names:["sctpmapNumber","app","maxMessageSize"],format:function(a){return a.maxMessageSize!=null?"sctpmap:%s %s %s":"sctpmap:%s %s"}},{name:"xGoogleFlag",reg:/^x-google-flag:([^\s]*)/,format:"x-google-flag:%s"},{push:"rids",reg:/^rid:([\d\w]+) (\w+)(?: ([\S| ]*))?/,names:["id","direction","params"],format:function(a){return a.params?"rid:%s %s %s":"rid:%s %s"}},{push:"imageattrs",reg:new RegExp("^imageattr:(\\d+|\\*)[\\s\\t]+(send|recv)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*)(?:[\\s\\t]+(recv|send)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*))?"),names:["pt","dir1","attrs1","dir2","attrs2"],format:function(a){return"imageattr:%s %s %s"+(a.dir2?" %s %s":"")}},{name:"simulcast",reg:new RegExp("^simulcast:(send|recv) ([a-zA-Z0-9\\-_~;,]+)(?:\\s?(send|recv) ([a-zA-Z0-9\\-_~;,]+))?$"),names:["dir1","list1","dir2","list2"],format:function(a){return"simulcast:%s %s"+(a.dir2?" %s %s":"")}},{name:"simulcast_03",reg:/^simulcast:[\s\t]+([\S+\s\t]+)$/,names:["value"],format:"simulcast: %s"},{name:"framerate",reg:/^framerate:(\d+(?:$|\.\d+))/,format:"framerate:%s"},{name:"sourceFilter",reg:/^source-filter: *(excl|incl) (\S*) (IP4|IP6|\*) (\S*) (.*)/,names:["filterMode","netType","addressTypes","destAddress","srcList"],format:"source-filter: %s %s %s %s %s"},{name:"bundleOnly",reg:/^(bundle-only)/},{name:"label",reg:/^label:(.+)/,format:"label:%s"},{name:"sctpPort",reg:/^sctp-port:(\d+)$/,format:"sctp-port:%s"},{name:"maxMessageSize",reg:/^max-message-size:(\d+)$/,format:"max-message-size:%s"},{push:"tsRefClocks",reg:/^ts-refclk:([^\s=]*)(?:=(\S*))?/,names:["clksrc","clksrcExt"],format:function(a){return"ts-refclk:%s"+(a.clksrcExt!=null?"=%s":"")}},{name:"mediaClk",reg:/^mediaclk:(?:id=(\S*))? *([^\s=]*)(?:=(\S*))?(?: *rate=(\d+)\/(\d+))?/,names:["id","mediaClockName","mediaClockValue","rateNumerator","rateDenominator"],format:function(a){var c="mediaclk:";return c+=a.id!=null?"id=%s %s":"%v%s",c+=a.mediaClockValue!=null?"=%s":"",c+=a.rateNumerator!=null?" rate=%s":"",c+=a.rateDenominator!=null?"/%s":""}},{name:"keywords",reg:/^keywds:(.+)$/,format:"keywds:%s"},{name:"content",reg:/^content:(.+)/,format:"content:%s"},{name:"bfcpFloorCtrl",reg:/^floorctrl:(c-only|s-only|c-s)/,format:"floorctrl:%s"},{name:"bfcpConfId",reg:/^confid:(\d+)/,format:"confid:%s"},{name:"bfcpUserId",reg:/^userid:(\d+)/,format:"userid:%s"},{name:"bfcpFloorId",reg:/^floorid:(.+) (?:m-stream|mstrm):(.+)/,names:["id","mStream"],format:"floorid:%s mstrm:%s"},{push:"invalid",names:["value"]}]};Object.keys(o).forEach(function(a){o[a].forEach(function(c){c.reg||(c.reg=/(.*)/),c.format||(c.format="%s")})})}),$P=xh(A=>{var e=function(C){return String(Number(C))===C?Number(C):C},o=function(C,y,S){var b=C.name&&C.names;C.push&&!y[C.push]?y[C.push]=[]:b&&!y[C.name]&&(y[C.name]={});var V=C.push?{}:b?y[C.name]:y;(function(J,gA,CA,MA){if(MA&&!CA)gA[MA]=e(J[1]);else for(var ee=0;ee1&&(C[S[0]]=void 0),C};A.parseParams=function(C){return C.split(/;\s?/).reduce(d,{})},A.parseFmtpConfig=A.parseParams,A.parsePayloads=function(C){return C.toString().split(" ").map(Number)},A.parseRemoteCandidates=function(C){for(var y=[],S=C.split(" ").map(e),b=0;b{var o=_S(),a=/%[sdv%]/g,c=function(S){var b=1,V=arguments,J=V.length;return S.replace(a,function(gA){if(b>=J)return gA;var CA=V[b];switch(b+=1,gA){case"%%":return"%";case"%s":return String(CA);case"%d":return Number(CA);case"%v":return""}})},d=function(S,b,V){var J=[S+"="+(b.format instanceof Function?b.format(b.push?V:V[b.name]):b.format)];if(b.names)for(var gA=0;gA{var e=bf(),o=Xq(),a=GC();A.grammar=a,A.write=o,A.parse=e.parse,A.parseParams=e.parseParams,A.parseFmtpConfig=e.parseFmtpConfig,A.parsePayloads=e.parsePayloads,A.parseRemoteCandidates=e.parseRemoteCandidates,A.parseImageAttributes=e.parseImageAttributes,A.parseSimulcastStreamList=e.parseSimulcastStreamList}),US=Vh((A,e)=>{var o=e.exports={v:[{name:"version",reg:/^(\d*)$/}],o:[{name:"origin",reg:/^(\S*) (\d*) (\d*) (\S*) IP(\d) (\S*)/,names:["username","sessionId","sessionVersion","netType","ipVer","address"],format:"%s %s %d %s IP%d %s"}],s:[{name:"name"}],i:[{name:"description"}],u:[{name:"uri"}],e:[{name:"email"}],p:[{name:"phone"}],z:[{name:"timezones"}],r:[{name:"repeats"}],t:[{name:"timing",reg:/^(\d*) (\d*)/,names:["start","stop"],format:"%d %d"}],c:[{name:"connection",reg:/^IN IP(\d) (\S*)/,names:["version","ip"],format:"IN IP%d %s"}],b:[{push:"bandwidth",reg:/^(TIAS|AS|CT|RR|RS):(\d*)/,names:["type","limit"],format:"%s:%s"}],m:[{reg:/^(\w*) (\d*) ([\w/]*)(?: (.*))?/,names:["type","port","protocol","payloads"],format:"%s %d %s %s"}],a:[{push:"rtp",reg:/^rtpmap:(\d*) ([\w\-.]*)(?:\s*\/(\d*)(?:\s*\/(\S*))?)?/,names:["payload","codec","rate","encoding"],format:function(a){return a.encoding?"rtpmap:%d %s/%s/%s":a.rate?"rtpmap:%d %s/%s":"rtpmap:%d %s"}},{push:"fmtp",reg:/^fmtp:(\d*) ([\S| ]*)/,names:["payload","config"],format:"fmtp:%d %s"},{name:"control",reg:/^control:(.*)/,format:"control:%s"},{name:"rtcp",reg:/^rtcp:(\d*)(?: (\S*) IP(\d) (\S*))?/,names:["port","netType","ipVer","address"],format:function(a){return a.address!=null?"rtcp:%d %s IP%d %s":"rtcp:%d"}},{push:"rtcpFbTrrInt",reg:/^rtcp-fb:(\*|\d*) trr-int (\d*)/,names:["payload","value"],format:"rtcp-fb:%s trr-int %d"},{push:"rtcpFb",reg:/^rtcp-fb:(\*|\d*) ([\w-_]*)(?: ([\w-_]*))?/,names:["payload","type","subtype"],format:function(a){return a.subtype!=null?"rtcp-fb:%s %s %s":"rtcp-fb:%s %s"}},{push:"ext",reg:/^extmap:(\d+)(?:\/(\w+))?(?: (urn:ietf:params:rtp-hdrext:encrypt))? (\S*)(?: (\S*))?/,names:["value","direction","encrypt-uri","uri","config"],format:function(a){return"extmap:%d"+(a.direction?"/%s":"%v")+(a["encrypt-uri"]?" %s":"%v")+" %s"+(a.config?" %s":"")}},{name:"extmapAllowMixed",reg:/^(extmap-allow-mixed)/},{push:"crypto",reg:/^crypto:(\d*) ([\w_]*) (\S*)(?: (\S*))?/,names:["id","suite","config","sessionConfig"],format:function(a){return a.sessionConfig!=null?"crypto:%d %s %s %s":"crypto:%d %s %s"}},{name:"setup",reg:/^setup:(\w*)/,format:"setup:%s"},{name:"connectionType",reg:/^connection:(new|existing)/,format:"connection:%s"},{name:"mid",reg:/^mid:([^\s]*)/,format:"mid:%s"},{name:"msid",reg:/^msid:(.*)/,format:"msid:%s"},{name:"ptime",reg:/^ptime:(\d*(?:\.\d*)*)/,format:"ptime:%d"},{name:"maxptime",reg:/^maxptime:(\d*(?:\.\d*)*)/,format:"maxptime:%d"},{name:"direction",reg:/^(sendrecv|recvonly|sendonly|inactive)/},{name:"icelite",reg:/^(ice-lite)/},{name:"iceUfrag",reg:/^ice-ufrag:(\S*)/,format:"ice-ufrag:%s"},{name:"icePwd",reg:/^ice-pwd:(\S*)/,format:"ice-pwd:%s"},{name:"fingerprint",reg:/^fingerprint:(\S*) (\S*)/,names:["type","hash"],format:"fingerprint:%s %s"},{push:"candidates",reg:/^candidate:(\S*) (\d*) (\S*) (\d*) (\S*) (\d*) typ (\S*)(?: raddr (\S*) rport (\d*))?(?: tcptype (\S*))?(?: generation (\d*))?(?: network-id (\d*))?(?: network-cost (\d*))?/,names:["foundation","component","transport","priority","ip","port","type","raddr","rport","tcptype","generation","network-id","network-cost"],format:function(a){var c="candidate:%s %d %s %d %s %d typ %s";return c+=a.raddr!=null?" raddr %s rport %d":"%v%v",c+=a.tcptype!=null?" tcptype %s":"%v",a.generation!=null&&(c+=" generation %d"),c+=a["network-id"]!=null?" network-id %d":"%v",c+=a["network-cost"]!=null?" network-cost %d":"%v"}},{name:"endOfCandidates",reg:/^(end-of-candidates)/},{name:"remoteCandidates",reg:/^remote-candidates:(.*)/,format:"remote-candidates:%s"},{name:"iceOptions",reg:/^ice-options:(\S*)/,format:"ice-options:%s"},{push:"ssrcs",reg:/^ssrc:(\d*) ([\w_-]*)(?::(.*))?/,names:["id","attribute","value"],format:function(a){var c="ssrc:%d";return a.attribute!=null&&(c+=" %s",a.value!=null&&(c+=":%s")),c}},{push:"ssrcGroups",reg:/^ssrc-group:([\x21\x23\x24\x25\x26\x27\x2A\x2B\x2D\x2E\w]*) (.*)/,names:["semantics","ssrcs"],format:"ssrc-group:%s %s"},{name:"msidSemantic",reg:/^msid-semantic:\s?(\w*) (\S*)/,names:["semantic","token"],format:"msid-semantic: %s %s"},{push:"groups",reg:/^group:(\w*) (.*)/,names:["type","mids"],format:"group:%s %s"},{name:"rtcpMux",reg:/^(rtcp-mux)/},{name:"rtcpRsize",reg:/^(rtcp-rsize)/},{name:"sctpmap",reg:/^sctpmap:([\w_/]*) (\S*)(?: (\S*))?/,names:["sctpmapNumber","app","maxMessageSize"],format:function(a){return a.maxMessageSize!=null?"sctpmap:%s %s %s":"sctpmap:%s %s"}},{name:"xGoogleFlag",reg:/^x-google-flag:([^\s]*)/,format:"x-google-flag:%s"},{push:"rids",reg:/^rid:([\d\w]+) (\w+)(?: ([\S| ]*))?/,names:["id","direction","params"],format:function(a){return a.params?"rid:%s %s %s":"rid:%s %s"}},{push:"imageattrs",reg:new RegExp("^imageattr:(\\d+|\\*)[\\s\\t]+(send|recv)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*)(?:[\\s\\t]+(recv|send)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*))?"),names:["pt","dir1","attrs1","dir2","attrs2"],format:function(a){return"imageattr:%s %s %s"+(a.dir2?" %s %s":"")}},{name:"simulcast",reg:new RegExp("^simulcast:(send|recv) ([a-zA-Z0-9\\-_~;,]+)(?:\\s?(send|recv) ([a-zA-Z0-9\\-_~;,]+))?$"),names:["dir1","list1","dir2","list2"],format:function(a){return"simulcast:%s %s"+(a.dir2?" %s %s":"")}},{name:"simulcast_03",reg:/^simulcast:[\s\t]+([\S+\s\t]+)$/,names:["value"],format:"simulcast: %s"},{name:"framerate",reg:/^framerate:(\d+(?:$|\.\d+))/,format:"framerate:%s"},{name:"sourceFilter",reg:/^source-filter: *(excl|incl) (\S*) (IP4|IP6|\*) (\S*) (.*)/,names:["filterMode","netType","addressTypes","destAddress","srcList"],format:"source-filter: %s %s %s %s %s"},{name:"bundleOnly",reg:/^(bundle-only)/},{name:"label",reg:/^label:(.+)/,format:"label:%s"},{name:"sctpPort",reg:/^sctp-port:(\d+)$/,format:"sctp-port:%s"},{name:"maxMessageSize",reg:/^max-message-size:(\d+)$/,format:"max-message-size:%s"},{push:"tsRefClocks",reg:/^ts-refclk:([^\s=]*)(?:=(\S*))?/,names:["clksrc","clksrcExt"],format:function(a){return"ts-refclk:%s"+(a.clksrcExt!=null?"=%s":"")}},{name:"mediaClk",reg:/^mediaclk:(?:id=(\S*))? *([^\s=]*)(?:=(\S*))?(?: *rate=(\d+)\/(\d+))?/,names:["id","mediaClockName","mediaClockValue","rateNumerator","rateDenominator"],format:function(a){var c="mediaclk:";return c+=a.id!=null?"id=%s %s":"%v%s",c+=a.mediaClockValue!=null?"=%s":"",c+=a.rateNumerator!=null?" rate=%s":"",c+=a.rateDenominator!=null?"/%s":""}},{name:"keywords",reg:/^keywds:(.+)$/,format:"keywds:%s"},{name:"content",reg:/^content:(.+)/,format:"content:%s"},{name:"bfcpFloorCtrl",reg:/^floorctrl:(c-only|s-only|c-s)/,format:"floorctrl:%s"},{name:"bfcpConfId",reg:/^confid:(\d+)/,format:"confid:%s"},{name:"bfcpUserId",reg:/^userid:(\d+)/,format:"userid:%s"},{name:"bfcpFloorId",reg:/^floorid:(.+) (?:m-stream|mstrm):(.+)/,names:["id","mStream"],format:"floorid:%s mstrm:%s"},{push:"invalid",names:["value"]}]};Object.keys(o).forEach(function(a){o[a].forEach(function(c){c.reg||(c.reg=/(.*)/),c.format||(c.format="%s")})})}),yx=Vh(A=>{var e=function(C){return String(Number(C))===C?Number(C):C},o=function(C,y,S){var b=C.name&&C.names;C.push&&!y[C.push]?y[C.push]=[]:b&&!y[C.name]&&(y[C.name]={});var V=C.push?{}:b?y[C.name]:y;(function(J,gA,CA,MA){if(MA&&!CA)gA[MA]=e(J[1]);else for(var $A=0;$A1&&(C[S[0]]=void 0),C};A.parseParams=function(C){return C.split(/;\s?/).reduce(d,{})},A.parseFmtpConfig=A.parseParams,A.parsePayloads=function(C){return C.toString().split(" ").map(Number)},A.parseRemoteCandidates=function(C){for(var y=[],S=C.split(" ").map(e),b=0;b{var o=US(),a=/%[sdv%]/g,c=function(S){var b=1,V=arguments,J=V.length;return S.replace(a,function(gA){if(b>=J)return gA;var CA=V[b];switch(b+=1,gA){case"%%":return"%";case"%s":return String(CA);case"%d":return Number(CA);case"%v":return""}})},d=function(S,b,V){var J=[S+"="+(b.format instanceof Function?b.format(b.push?V:V[b.name]):b.format)];if(b.names)for(var gA=0;gA{var e=$P(),o=Ax();A.write=o,A.parse=e.parse,A.parseParams=e.parseParams,A.parseFmtpConfig=e.parseFmtpConfig,A.parsePayloads=e.parsePayloads,A.parseRemoteCandidates=e.parseRemoteCandidates,A.parseImageAttributes=e.parseImageAttributes,A.parseSimulcastStreamList=e.parseSimulcastStreamList}),Dq=gc(Hl()),VB=((go=VB||{})[go.INVALID_PARAMETER=4096]="INVALID_PARAMETER",go[go.INVALID_OPERATION=4097]="INVALID_OPERATION",go[go.NOT_SUPPORTED=4098]="NOT_SUPPORTED",go[go.DEVICE_NOT_FOUND=4099]="DEVICE_NOT_FOUND",go[go.INITIALIZE_FAILED=4100]="INITIALIZE_FAILED",go[go.SIGNAL_CHANNEL_SETUP_FAILED=16385]="SIGNAL_CHANNEL_SETUP_FAILED",go[go.SIGNAL_CHANNEL_ERROR=16386]="SIGNAL_CHANNEL_ERROR",go[go.ICE_TRANSPORT_ERROR=16387]="ICE_TRANSPORT_ERROR",go[go.JOIN_ROOM_FAILED=16388]="JOIN_ROOM_FAILED",go[go.CREATE_OFFER_FAILED=16389]="CREATE_OFFER_FAILED",go[go.SIGNAL_CHANNEL_RECONNECTION_FAILED=16390]="SIGNAL_CHANNEL_RECONNECTION_FAILED",go[go.UPLINK_RECONNECTION_FAILED=16391]="UPLINK_RECONNECTION_FAILED",go[go.DOWNLINK_RECONNECTION_FAILED=16392]="DOWNLINK_RECONNECTION_FAILED",go[go.REMOTE_STREAM_NOT_EXIST=16400]="REMOTE_STREAM_NOT_EXIST",go[go.CLIENT_BANNED=16448]="CLIENT_BANNED",go[go.SERVER_TIMEOUT=16449]="SERVER_TIMEOUT",go[go.SUBSCRIPTION_TIMEOUT=16450]="SUBSCRIPTION_TIMEOUT",go[go.PLAY_NOT_ALLOWED=16451]="PLAY_NOT_ALLOWED",go[go.DEVICE_AUTO_RECOVER_FAILED=16452]="DEVICE_AUTO_RECOVER_FAILED",go[go.START_PUBLISH_CDN_FAILED=16453]="START_PUBLISH_CDN_FAILED",go[go.STOP_PUBLISH_CDN_FAILED=16454]="STOP_PUBLISH_CDN_FAILED",go[go.START_MIX_TRANSCODE_FAILED=16455]="START_MIX_TRANSCODE_FAILED",go[go.STOP_MIX_TRANSCODE_FAILED=16456]="STOP_MIX_TRANSCODE_FAILED",go[go.NOT_SUPPORTED_H264=16457]="NOT_SUPPORTED_H264",go[go.SWITCH_ROLE_FAILED=16458]="SWITCH_ROLE_FAILED",go[go.API_CALL_TIMEOUT=16459]="API_CALL_TIMEOUT",go[go.SCHEDULE_FAILED=16460]="SCHEDULE_FAILED",go[go.API_CALL_ABORTED=16461]="API_CALL_ABORTED",go[go.SPC_INITIALIZED_FAILED=16462]="SPC_INITIALIZED_FAILED",go[go.VIDEO_MANAGER_ERROR=16463]="VIDEO_MANAGER_ERROR",go[go.SWITCH_ROOM_FAILED=16464]="SWITCH_ROOM_FAILED",go[go.VIDEO_ENCODE_FAILED=16465]="VIDEO_ENCODE_FAILED",go[go.AUDIO_ENCODE_FAILED=16466]="AUDIO_ENCODE_FAILED",go[go.UNKNOWN=65535]="UNKNOWN",go),lt=VB,ex=class extends Error{constructor(A){let{name:e="RtcError",message:o,code:a=lt.UNKNOWN,extraCode:c=0,constraint:d}=A,C="<".concat(function(S){for(let b in lt)if(lt[b]===S)return b;return"UNKNOWN"}(a)," 0x").concat(a.toString(16),">"),y="".concat(o).concat(d?" constraint: ".concat(d):"").concat(o!=null&&o.includes(C)?"":" ".concat(C));super(y),Y(this,"code"),Y(this,"extraCode"),Y(this,"message"),Y(this,"originMessage"),Y(this,"name"),Y(this,"constraint"),this.code=a,this.extraCode=c,this.name=e,this.message=y,this.constraint=d,this.originMessage=o}getCode(){return this.code}getExtraCode(){return this.extraCode}toString(){return this.originMessage}},oi=ex,Ab=0,tx=!0,JB=function(A){Ab=A;let e=new Date;e.setTime(e.getTime()+A),QA[tx?"info":"debug"]("baseTime from server: ".concat(e," offset: ").concat(A)),tx=!1},ix=function(){return Ab},Tf=function(){return Date.now()+Ab},ox=function(){let A=new Date;return A.setTime(Tf()),A.toLocaleString()},eb=function(A){let e=String(A.getMilliseconds());return"padStart"in String.prototype&&(e=e.toString().padStart(3,"0")),"".concat(A.toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/,"$1"),":").concat(e)},Od={};Yh(Od,{REPORT_TYPE:()=>C0,buildSSOPackage:()=>ZB,bytes2ms:()=>g0,calculateScaleResolutionDownNumber:()=>d0,concatArrayBuffers:()=>zS,convertObjectNumberToInt:()=>E0,copyProperties:()=>Rx,deepClone:()=>Hf,deepCloneBasic:()=>qf,deepMerge:()=>qh,delay:()=>_C,fibonacci:()=>Yf,formatedTime:()=>Ux,getConstructorName:()=>HS,getContainerFromElement:()=>Db,getEnv:()=>Sx,getFirst16Bits:()=>Ox,getInternalVersion:()=>kx,getLast16Bits:()=>h0,getLoggerUrl:()=>Pf,getMediaStreamTrackInfo:()=>wb,getMuteStateFromFlag:()=>Dp,getNetworkType:()=>r0,getNumNetworkType:()=>xf,getReconnectionTimeout:()=>yp,getStringByteLength:()=>u0,getTestSignalDomain:()=>Mx,getTurnServer:()=>Lx,getUint32Version:()=>Mb,getValueType:()=>Cg,getViewListFromView:()=>jS,glog:()=>Tx,ipv4ToUint32:()=>KS,isArray:()=>Ra,isAudioWorkletSupported:()=>Nx,isBoolean:()=>wr,isConstructor:()=>Jf,isEmpty:()=>l0,isFunction:()=>va,isLangChinese:()=>Yd,isMediaStreamTrack:()=>fb,isNumber:()=>bn,isObject:()=>JE,isOverseaSdkAppId:()=>xd,isPlainObject:()=>oE,isPortrait:()=>Sb,isPromise:()=>Vf,isRemoteTrack:()=>yb,isRotate90Or270:()=>zB,isSetSinkIdSupported:()=>Gx,isString:()=>Yn,isUndefined:()=>Ye,isVideoMixerOutputTrack:()=>Sp,loadImage:()=>WS,loadVideo:()=>Fx,ms2bytes:()=>_x,ms2samples:()=>c0,normalizeUrl:()=>Rb,performanceNow:()=>bo,promiseAny:()=>qS,samples2ms:()=>mb,setNetworkTypeFromWebRTC:()=>a0,stringify:()=>Vd,stringifyIncludeValue:()=>I0,throttlePromise:()=>vb});var sx={};Yh(sx,{ASR_ROBOT_FROM_TYPE:()=>e0,AUDIO_MUTE_BIT:()=>bf,AUDIO_STAT_BIT:()=>LS,AUX_STAT_BIT:()=>kS,AUX_STREAM_MSID:()=>Ix,BACKEND_ENV:()=>Nf,BASE_DOC_URL:()=>Vh,BASE_HOST:()=>rx,CAPABILITIES_KEYS:()=>ub,CLASS_NAME:()=>Gq,CLOUD_CONSOLE_URL:()=>vq,CROSS_ROOM_BIT:()=>rb,DATA_CHANNEL_FROM_TYPE_BIT:()=>KB,DATA_FREEZE_TIMING:()=>lb,DOC_BILLING_CN:()=>Hw,DOC_BILLING_OVERSEA:()=>ob,DOC_URL:()=>Rq,DTLS_STATE_UNKNOWN:()=>Jh,ENV_NAME:()=>HB,EXCHANGE_SDP_TIMEOUT:()=>hx,IS_WORKER:()=>Vw,IS_WORKLET:()=>Jw,KIBANA_EVENT:()=>Va,LOCAL_STREAM_PUBLISH_STATE:()=>Bx,LOGGER_CMD_TYPE:()=>_I,LOGGER_DOMAIN:()=>wI,LOGGER_DOMAIN_OVERSEA:()=>Qp,LOG_LEVEL:()=>qB,LOG_LEVEL_NAME:()=>kq,MAIN_STREAM_MSID:()=>ru,MAX_RTT:()=>A0,MICROPHONE_COMMUNICATIONS:()=>bq,MICROPHONE_DEFAULT:()=>OS,MUTE_ALL_BIT:()=>lx,NAME:()=>YA,NETWORK_TYPE:()=>qw,NOT_SUPPORTED_H264:()=>Xw,PAUSED_RETRY_COUNT:()=>fp,PEERCONNECTION_CONNECTING_TIMEOUT:()=>Ib,PEER_CONNECTION_STATE:()=>Eo,PEER_LEAVE_REASON:()=>mx,RECOVER_CAPTURE_INTERVAL:()=>xS,REMOTE_STREAM_TYPE_AUX:()=>ab,REMOTE_STREAM_TYPE_MAIN:()=>jw,RENDER_FREEZE_TIMING:()=>Qx,SCHEDULE_DOMAIN:()=>WB,SCHEDULE_TIMEOUT:()=>px,SDP_SEMANTICS_PLAN_B:()=>Zw,SDP_SEMANTICS_UNIFIED_PLAN:()=>FS,SECOND_HOST:()=>ax,SIGNAL_PING_PONG_INTERVAL:()=>iE,SIGNAL_PING_TIMEOUT:()=>gx,SIGNAL_RECONNECTION_COUNT:()=>wq,SMALL_STAT_BIT:()=>nb,SPEAKER_DEFAULT:()=>$w,STORAGE_EXPIRES_TIME:()=>Kw,STREAM_TYPE_BIG:()=>Tq,STREAM_TYPE_SMALL:()=>Nq,SUBSCRIBE_SMALL_RETRY_COUNT:()=>PS,SYNC_USER_LIST_INTERVAL:()=>_q,Scene:()=>Gf,THIRD_HOST:()=>Mq,TRANSPORT_DIRECTION:()=>zn,TRTC_ERROR_ASSISTANCE:()=>NS,TRTC_QUALITY_BAD:()=>kf,TRTC_QUALITY_DISCONNECTED:()=>dx,TRTC_QUALITY_EXCELLENT:()=>Ww,TRTC_QUALITY_GOOD:()=>jB,TRTC_QUALITY_POOR:()=>ux,TRTC_QUALITY_UNKNOWN:()=>gb,TRTC_QUALITY_VERY_BAD:()=>Ex,UPDATE_OFFER_TIMEOUT:()=>Cx,VIDEO_MUTE_BIT:()=>US,VIDEO_STAT_BIT:()=>bS,WEBGL_ATTRIBUTES:()=>Eb,audioProfileMap:()=>pp,defaultBigVideoProfile:()=>GS,defaultSmallVideoProfile:()=>cx,getRetryCount:()=>Lf,getScriptDir:()=>Sq,innerVersion:()=>Yw,loggerProxy:()=>ib,screenProfileMap:()=>sb,setLoggerProxy:()=>TS,setRetryCount:()=>zw,setVersion:()=>nx,version:()=>Pd,videoProfileMap:()=>wC});var Yw="4.15.00.1600",Pd="5.0.0";function nx(A){Pd=A;let[e,o,a]=A.split(".").map(c=>parseInt(c,10));Yw="".concat(e,".").concat(Math.min(15,o),".").concat(Math.min(15,a),".").concat(o.toString().padStart(2,"0")).concat(a.toString().padStart(2,"0"))}var tb,tE,Vw=typeof importScripts<"u",Jw=typeof registerProcessor<"u",Sq=()=>{let A=Vw?self.location.href:document.currentScript.src;return A.substring(0,A.lastIndexOf("/")+1)},ib="",TS=A=>ib=A,rx="web.sdk.qcloud.com",ax="web.sdk.tencent.cn",Mq="web.sdk.cloud.tencent.cn",vq="https://console.cloud.tencent.com/trtc",Vh="https://".concat(rx,"/trtc/webrtc/doc"),Rq="".concat(Vh,"/zh-cn/"),Hw="https://cloud.tencent.com/document/product/647/85386",ob="https://trtc.io/document/56025",wI="https://yun.tim.qq.com",Qp="https://apisgp.my-imcloud.com",NS="trtc_error_assistance",_I={LOG:"jssdk_log",EVENT:"jssdk_event",KEY_POINT:"jssdk_new_endreport",KV_STAT:"jssdk_key_metrics_report"},HB={QCLOUD:"qcloud",OLD_CLOUD_LADDER:"trtc",WEBRTC:"webrtc"},qB=((tE=qB||{})[tE.TRACE=0]="TRACE",tE[tE.DEBUG=1]="DEBUG",tE[tE.INFO=2]="INFO",tE[tE.WARN=3]="WARN",tE[tE.ERROR=4]="ERROR",tE[tE.NONE=5]="NONE",tE),gx=18e3,iE=2e3,qw={unknown:0,wifi:1,"4g":2,"3g":3,"2g":4,wired:5,"5g":6},Kw=6048e5,pp={standard:{sampleRate:48e3,channelCount:1,bitrate:40},"standard-stereo":{sampleRate:48e3,channelCount:2,bitrate:64},high:{sampleRate:48e3,channelCount:1,bitrate:128},"high-stereo":{sampleRate:48e3,channelCount:2,bitrate:192}},wC={"120p":{width:160,height:120,frameRate:15,bitrate:200},"120p_2":{width:160,height:120,frameRate:15,bitrate:100},"180p":{width:320,height:180,frameRate:15,bitrate:350},"180p_2":{width:320,height:180,frameRate:15,bitrate:150},"240p":{width:320,height:240,frameRate:15,bitrate:400},"240p_2":{width:320,height:240,frameRate:15,bitrate:200},"360p":{width:640,height:360,frameRate:15,bitrate:800},"360p_2":{width:640,height:360,frameRate:15,bitrate:400},"480p":{width:640,height:480,frameRate:15,bitrate:900},"480p_2":{width:640,height:480,frameRate:15,bitrate:500},"720p":{width:1280,height:720,frameRate:15,bitrate:1500},"1080p":{width:1920,height:1080,frameRate:15,bitrate:2e3},"1440p":{width:2560,height:1440,frameRate:30,bitrate:4860},"4K":{width:3840,height:2160,frameRate:30,bitrate:9e3}},GS=wC["480p_2"],cx=wC["120p_2"],sb={"480p":{width:640,height:480,frameRate:5,bitrate:900},"480p_2":{width:640,height:480,frameRate:30,bitrate:1e3},"720p":{width:1280,height:720,frameRate:5,bitrate:1200},"720p_2":{width:1280,height:720,frameRate:30,bitrate:3e3},"1080p":{width:1920,height:1080,frameRate:5,bitrate:1600},"1080p_2":{width:1920,height:1080,frameRate:30,bitrate:4e3}},YA={CANVAS:"canvas",AUDIO:"audio",VIDEO:"video",SCREEN:"screen",SMALL:"small",BIG:"big",AUXILIARY:"auxiliary",SMALL_VIDEO:"smallVideo",FACING_MODE_USER:"user",FACING_MODE_ENVIRONMENT:"environment",MUTE:"mute",UNMUTE:"unmute",ENDED:"ended",PLAYING:"playing",PAUSE:"pause",ERROR:"error",LOADSTART:"loadstart",LOADEDDATA:"loadeddata",LOADEDMETADATA:"loadedmetadata",AUDIO_INPUT:"audioinput",VIDEO_INPUT:"videoinput",DETAIL:"detail",TEXT:"text",MAIN:"main",BACKUP:"backup",BANNED:"banned",KICK:"kick",USER_TIME_OUT:"user_time_out",ROOM_DISBAND:"room_disband",SEI_MESSAGE:"sei-message",ADD:"add",REMOVE:"remove",REPLACE:"replace",TRACK:"track",SUBSCRIBE:"subscribe",UNSUBSCRIBE:"unsubscribe",TRANSCEIVER_DIRECTION_SENDONLY:"sendonly",TRANSCEIVER_DIRECTION_RECVONLY:"recvonly",ENTER_PICTURE_IN_PICTURE:"enterpictureinpicture",LEAVE_PICTURE_IN_PICTURE:"leavepictureinpicture",FULLSCREEN_CHANGE:"fullscreenchange",RESIZE:"resize",TIME_UPDATE:"timeupdate"},zn={INACTIVE:"inactive",SENDONLY:"sendonly",RECVONLY:"recvonly"},Nf={OLD_CLOUD_LADDER:"wss://trtc.rtc.qq.com",WEBRTC:"wss://webrtc.qq.com"},Gf=((tb=Gf||{}).LIVE="live",tb.RTC="rtc",tb),bS=1,nb=2,kS=4,LS=8,bf=64,US=16,lx=112,rb=128,KB=256,ru="5Y2wZK8nANNAoVw6dSAHVjNxrD1ObBM2kBPV",Ix="224d130c-7b5c-415b-aaa2-79c2eb5a6df2",jw=YA.MAIN,ab=YA.AUXILIARY,gb=0,Ww=1,jB=2,ux=3,kf=4,Ex=5,dx=6,Jh="unknown",Eo={NEW:"new",CONNECTING:"connecting",FAILED:"failed",CLOSED:"closed",DISCONNECTED:"disconnected",CONNECTED:"connected",COMPLETED:"completed"},cb=1/0;function zw(A){cb=A}function Lf(){return cb}var mp,wq=30,Va={JOIN:"join",DELTA_JOIN:"delta-join",REJOIN:"rejoin",LEAVE:"leave",DELTA_LEAVE:"delta-leave",PUBLISH:"publish",DELTA_PUBLISH:"delta-publish",UNPUBLISH:"unpublish",SUBSCRIBE:"subscribe",UNSUBSCRIBE:"unsubscribe",UPLINK_CONNECTION:"uplink-connection",UPLINK_RECONNECTION:"uplink-reconnection",DOWNLINK_CONNECTION:"downlink-connection",DOWNLINK_RECONNECTION:"downlink-reconnection",ON_TRACK:"ontrack",ICE_CONNECTION_STATE:"iceConnectionState",LOCAL_STREAM_INITIALIZE:"stream-initialize",SIGNAL_CONNECTION:"websocketConnectionState",SIGNAL_RECONNECTION:"websocketReconnectionState",UPDATE_STREAM:"update-stream",RECOVER_LOCAL_AUDIO_TRACK:"recover-local-audio-track",RECOVER_LOCAL_VIDEO_TRACK:"recover-local-video-track",RECOVER_SUBSCRIPTION:"recover-subscription",START_MIX_TRANSCODE:"start-mix-transcode",STOP_MIX_TRANSCODE:"stop-mix-transcode",PLAYER_ERROR:"player-error",SCHEDULE:"schedule",LOAD_WORKLET:"load-worklet",VIDEO_FROZEN_COUNT:"videoFrozenCount",GET_USER_MEDIA_RETRY:"getUserMedia-retry",VIDEO_ENCODE_FAILED_DURING_CALL:"video-encode-failed-during-call",VIDEO_ENCODE_RESUME_DURING_CALL:"video-encode-resume-during-call",AUDIO_ENCODE_FAILED_DURING_CALL:"audio-encode-failed-during-call",AUDIO_ENCODE_RESUME_DURING_CALL:"audio-encode-resume-during-call",VIDEO_DECODE_FAILED_DURING_CALL:"video-decode-failed-during-call",VIDEO_DECODE_RESUME_DURING_CALL:"video-decode-resume-during-call",AUDIO_DECODE_FAILED_DURING_CALL:"audio-decode-failed-during-call",AUDIO_DECODE_RESUME_DURING_CALL:"audio-decode-resume-during-call",VIDEO_HARDWARE_DECODE_FAILED:"video-hardware-decode-failed",VIDEO_HARDWARE_DECODE_RESUME:"video-hardware-decode-resume"},_q=1e4,Cx=1e4,hx=1e4,FS="unified-plan",Zw="plan-b",Xw=1028,Bx=((mp=Bx||{})[mp.UNPUBLISH=-1]="UNPUBLISH",mp[mp.PUBLISHING=0]="PUBLISHING",mp[mp.PUBLISHED=1]="PUBLISHED",mp),lb=500,Qx=1e3,Tq=YA.BIG,Nq=YA.SMALL,Ib=1e4,WB={MAIN:"schedule.cloud-rtc.com",BACKUP:"schedule.cloud-rtc.net",MAIN_OVERSEA:"schedule.rtc-web.com",BACKUP_OVERSEA:"schedule.rtc-web.io",MAIN_OVERSEA_BACKUP:"intl-schedule.cloud-rtc.com"},px=2e3,Gq={TRTC:"TRTC",CLIENT:"Client",LOCAL_STREAM:"LocalStream",REMOTE_STREAM:"RemoteStream",STREAM:"Stream"},fp=5,OS="default",$w=OS,bq="communications",kq=Object.keys(qB),mx=["normal leave","timeout leave","kick","role change"],PS=10,xS=2e3,ub=["width","height","frameRate","facingMode","sampleRate","sampleSize","channelCount","deviceId","min","max"],A0=1e4,e0=14,Eb={alpha:!0,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!0,powerPreference:"low-power"},fx=function(A,e,o,a){return new(o||(o=Promise))(function(c,d){function C(b){try{S(a.next(b))}catch(V){d(V)}}function y(b){try{S(a.throw(b))}catch(V){d(V)}}function S(b){b.done?c(b.value):function(V){return V instanceof o?V:new o(function(J){J(V)})}(b.value).then(C,y)}S((a=a.apply(A,[])).next())})},t0=Symbol(32),i0=Symbol(16),db=Symbol(8),Uf=class{constructor(A){this.g=A,this.consumed=0,A&&(this.need=A.next().value)}setG(A){this.g=A,this.demand(A.next().value,!0)}consume(){this.buffer&&this.consumed&&(this.buffer.copyWithin(0,this.consumed),this.buffer=this.buffer.subarray(0,this.buffer.length-this.consumed),this.consumed=0)}demand(A,e){return e&&this.consume(),this.need=A,this.flush()}read(A){return fx(this,void 0,void 0,function*(){return this.lastReadPromise&&(yield this.lastReadPromise),this.lastReadPromise=new Promise((e,o)=>{var a;this.reject=o,this.resolve=c=>{delete this.lastReadPromise,delete this.resolve,delete this.need,e(c)},this.demand(A,!0)||(a=this.pull)===null||a===void 0||a.call(this,A)})})}readU32(){return this.read(t0)}readU16(){return this.read(i0)}readU8(){return this.read(db)}close(){var A;this.g&&this.g.return(),this.buffer&&this.buffer.subarray(0,0),(A=this.reject)===null||A===void 0||A.call(this,new Error("EOF")),delete this.lastReadPromise}flush(){if(!this.buffer||!this.need)return;let A=null,e=this.buffer.subarray(this.consumed),o=0,a=c=>e.length<(o=c);if(typeof this.need=="number"){if(a(this.need))return;A=e.subarray(0,o)}else if(this.need===t0){if(a(4))return;A=e[0]<<24|e[1]<<16|e[2]<<8|e[3]}else if(this.need===i0){if(a(2))return;A=e[0]<<8|e[1]}else if(this.need===db){if(a(1))return;A=e[0]}else if("buffer"in this.need){if("byteOffset"in this.need){if(a(this.need.byteLength-this.need.byteOffset))return;new Uint8Array(this.need.buffer,this.need.byteOffset).set(e.subarray(0,o)),A=this.need}else if(this.g)return void this.g.throw(new Error("Unsupported type"))}else{if(a(this.need.byteLength))return;new Uint8Array(this.need).set(e.subarray(0,o)),A=this.need}return this.consumed+=o,this.g?this.demand(this.g.next(A).value,!0):this.resolve&&this.resolve(A),A}write(A){if(A instanceof Uint8Array?this.malloc(A.length).set(A):"buffer"in A?this.malloc(A.byteLength).set(new Uint8Array(A.buffer,A.byteOffset,A.byteLength)):this.malloc(A.byteLength).set(new Uint8Array(A)),!this.g&&!this.resolve)return new Promise(e=>this.pull=e);this.flush()}writeU32(A){this.malloc(4).set([A>>24&255,A>>16&255,A>>8&255,255&A]),this.flush()}writeU16(A){this.malloc(2).set([A>>8&255,255&A]),this.flush()}writeU8(A){this.malloc(1)[0]=A,this.flush()}malloc(A){if(this.buffer){let e=this.buffer.length,o=e+A;if(o<=this.buffer.buffer.byteLength-this.buffer.byteOffset)this.buffer=new Uint8Array(this.buffer.buffer,this.buffer.byteOffset,o);else{let a=new Uint8Array(o);a.set(this.buffer),this.buffer=a}return this.buffer.subarray(e,o)}return this.buffer=new Uint8Array(A),this.buffer}};Uf.U32=t0,Uf.U16=i0,Uf.U8=db;var YS=128;function o0(A){let e=new Uf;for(;A>=128;)e.malloc(1)[0]=255&A|YS,A>>>=7;return e.malloc(1)[0]=255&A,e.buffer||new Uint8Array(0)}function s0(A){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,o=new Uf,a=e<<3;switch(typeof A){case"boolean":let c=o.malloc(2);c[0]=a,c[1]=A?1:0;break;case"number":o.malloc(1)[0]=a,o.write(o0(A));break;case"string":o.malloc(1)[0]=2|a;let d=new TextEncoder().encode(A);o.write(o0(d.length));let C=o.malloc(d.length);for(let S=0;S>>24&255),this.buffer.push(A>>>16&255),this.buffer.push(A>>>8&255),this.buffer.push(255&A)}writeInt16(A){this.buffer.push(A>>>8&255),this.buffer.push(255&A)}writeByte(A){this.buffer.push(255&A)}writeBytes(A){for(let e=0;e>>24&255,A[o+1]=e>>>16&255,A[o+2]=e>>>8&255,A[o+3]=255&e}function au(A,e){return A[e]<<24|A[e+1]<<16|A[e+2]<<8|A[e+3]}function Dx(A,e){return A[e]}function Of(A,e,o){return new TextDecoder().decode(function(a,c,d){return a.slice(c,c+d)}(A,e,o))}var VS=0,Cb=2654435769,n0=16,Hh=2,JS=7;function hb(A,e){let o=new yx,a=function(Me,fi,Ge){let dt=arguments.length>3&&arguments[3]!==void 0?arguments[3]:"AVQualityReportSvc.C2S";return{version:arguments.length>4&&arguments[4]!==void 0?arguments[4]:2e3,encryption:arguments.length>5&&arguments[5]!==void 0?arguments[5]:2,d2:"",d2Len:0,uinType:arguments.length>6&&arguments[6]!==void 0?arguments[6]:30,uin:"",uinLen:0,reqHead:{seqNumber:Ge,appId:Me,appidAtThird:new Uint8Array(0),a2:"",a2Len:0,serviceCmd:dt,serviceCmdLen:0,cookie:"",cookieLen:0,imei:"",imeiLen:0,ksid:"",ksidLen:0,clientVersionInfo:"",clientVersionInfoLen:0},busiBuff:fi}}(e,A,VS);VS=VS+1&2147483647,o.writeInt32(0),o.writeInt32(a.version),o.writeByte(a.encryption);let c=new TextEncoder().encode(a.d2);o.writeInt32(c.length+4),c&&o.writeBytes(c),o.writeByte(a.uinType);let d=new TextEncoder().encode(a.uin);o.writeInt32(d.length+4),d.length&&o.writeBytes(d);let C=new yx;C.writeInt32(0),C.writeInt32(a.reqHead.seqNumber),C.writeInt32(a.reqHead.appId),C.writeByte(a.reqHead.appId>>>24&255),C.writeByte(a.reqHead.appId>>>16&255),C.writeByte(a.reqHead.appId>>>8&255),C.writeByte(255&a.reqHead.appId);for(let Me=4;Me<16;Me++)C.writeByte(0);let y=new TextEncoder().encode(a.reqHead.a2);C.writeInt32(y.length+4),y.length&&C.writeBytes(y);let S=new TextEncoder().encode(a.reqHead.serviceCmd);C.writeInt32(S.length+4),S.length&&C.writeBytes(S);let b=new TextEncoder().encode(a.reqHead.cookie);C.writeInt32(b.length+4),b.length&&C.writeBytes(b);let V=new TextEncoder().encode(a.reqHead.imei);C.writeInt32(V.length+4),V.length&&C.writeBytes(V);let J=new TextEncoder().encode(a.reqHead.ksid);C.writeInt32(J.length+4),J.length&&C.writeBytes(J);let gA=new TextEncoder().encode(a.reqHead.clientVersionInfo);C.writeInt16(gA.length+2),gA.length&&C.writeBytes(gA);let CA=C.length;C.data[0]=CA>>>24&255,C.data[1]=CA>>>16&255,C.data[2]=CA>>>8&255,C.data[3]=255&CA,Yn(A)&&(A=new TextEncoder().encode(A)),C.writeInt32(A.length+4),A.length&&C.writeBytes(A);let MA=new Uint8Array(C.data),ee=null;a.encryption===1?ee=new TextEncoder().encode(a.uin):a.encryption===2&&(ee=new Uint8Array(16)),ee&&(MA=function(Me,fi){let Ge=Me.length,dt=(Ge+1+Hh+JS)%8;dt&&(dt=8-dt);let Ci=Ge+1+Hh+JS+dt,yi=new Uint8Array(Ci),Yo=0,Vo=new Uint8Array(8),Qn=new Uint8Array(8),Jo=new Uint8Array(8),Ns=0;Vo[0]=248&Math.floor(256*Math.random())|dt,Ns=1;for(let ma=0;ma>>24&255,Be[1]=Pe>>>16&255,Be[2]=Pe>>>8&255,Be[3]=255&Pe,Be}function Bb(A,e,o,a,c,d){for(let C=0;C<8;C++)A[C]^=a[C];(function(C,y,S,b){let V=au(C,0),J=au(C,4),gA=[];for(let MA=0;MA<4;MA++)gA[MA]=au(y,4*MA);let CA=0;for(let MA=0;MA>>=0,V+=(J<<4)+gA[0]^J+CA^(J>>>5)+gA[1],V>>>=0,J+=(V<<4)+gA[2]^V+CA^(V>>>5)+gA[3],J>>>=0;Ff(S,V,b),Ff(S,J,b+4)})(A,e,c,d);for(let C=0;C<8;C++)c[d+C]^=o[C];for(let C=0;C<8;C++)o[C]=A[C]}var Sx=function(){return new URLSearchParams(location.search).get("trtc_env")||""},Mx=function(A){return A.includes(".")?A:"".concat(A).concat(".rtc.qq.com")},xd=A=>Number(A)<14e8,Pf=function(A,e){let o;o=ib||(xd(A)?Qp:wI);let a=Math.floor(Math.random()*wS(2,31));return"".concat(o,"/v5/AVQualityReportSvc/C2S?random=").concat(a,"&sdkappid=").concat(A,"&cmdtype=").concat(e)},Qb="unknown";function r0(){(function(){var d;vx||(vx=!0,(d=navigator.connection)==null||d.addEventListener("typechange",Lq))})();let{userAgent:A,connection:e}=navigator,o=(A.match(/NetType\/\S+/)||[])[0]||"";o=o.toLowerCase().replace("nettype/",""),o==="3gnet"&&(o="3g");let a=e&&e.type&&e.type.toLowerCase(),c=e&&e.effectiveType&&e.effectiveType.toLowerCase();return c==="slow-2"&&(c="2g"),a?pb(a,c):Qb}function Lq(){QA.warn("netType changed",r0())}var vx=!1;function pb(A,e){if(qw[A])return A;switch(A){case"cellular":case"wimax":return e||"unknown";case"ethernet":return"wired";default:return"unknown"}}function a0(A){Qb=pb(A)}function xf(){return qw[r0()]}function Rx(A,e){for(let o of Reflect.ownKeys(e))if(o!=="constructor"&&o!=="prototype"&&o!=="name"){let a=Object.getOwnPropertyDescriptor(e,o)||"";Object.defineProperty(A,o,a)}return A}function g0(A){return mb(A/4,arguments.length>1&&arguments[1]!==void 0?arguments[1]:48e3)}function mb(A){return 1e3*A/(arguments.length>1&&arguments[1]!==void 0?arguments[1]:48e3)}function _x(A){return 4*c0(A,arguments.length>1&&arguments[1]!==void 0?arguments[1]:48e3)}function c0(A){return A*(arguments.length>1&&arguments[1]!==void 0?arguments[1]:48e3)/1e3}var Tx=typeof window<"u"&&typeof window.glog=="function"?window.glog:()=>{},Yd=()=>{let A=navigator.language;return A=A.substring(0,2),A==="zh"},oE=function(A){if(!A||typeof A!="object"||Object.prototype.toString.call(A)!="[object Object]")return!1;let e=Object.getPrototypeOf(A);if(e===null)return!0;let o=Object.prototype.hasOwnProperty.call(e,"constructor")&&e.constructor;return typeof o=="function"&&o instanceof o&&Function.prototype.toString.call(o)===Function.prototype.toString.call(Object)};function Yf(A){let e=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1;return A<=1?e:Yf(A-1,e,(arguments.length>1&&arguments[1]!==void 0?arguments[1]:1)+e)}function yp(A){return A>8?3e4:1e3*Yf(A)}function Cg(A){return Reflect.apply(Object.prototype.toString,A,[]).replace(/^\[object\s(\w+)\]$/,"$1").toLowerCase()}var va=A=>typeof A=="function",Ye=A=>A===void 0,Yn=A=>typeof A=="string",bn=A=>typeof A=="number",wr=A=>typeof A=="boolean",JE=A=>Cg(A)==="object",Ra=A=>Cg(A)==="array",fb=A=>Cg(A)==="MediaStreamTrack".toLowerCase(),yb=A=>A.isRemote,Vf=A=>Cg(A)==="promise",Jf=A=>va(A)&&A.prototype.constructor===A,HS=A=>Jf(A)?A.prototype.constructor.name:"",Nx=typeof AudioWorkletNode<"u",Gx=typeof HTMLMediaElement<"u"&&"setSinkId"in HTMLMediaElement.prototype;function qS(A){return new Promise((e,o)=>{let a=[];A.forEach(c=>{c.then(e).catch(d=>{a.push(d),a.length===A.length&&o(a)})})})}function bo(){return performance&&performance.now?Math.floor(performance.now()):Date.now()}var bx=A=>+A<10?"0".concat(A):A,kx=A=>{let e=A.match(/^\d+\.\d+\.\d+/)[0];if(!e)return A;let o=e.split("."),a=bx(o[1])+bx(o[2]);return o[1]-15>0&&(o[1]="15"),o[2]-15>0&&(o[2]="15"),"".concat(o.join("."),".").concat(a)},Uq=Object.prototype.hasOwnProperty;function l0(A){if(A==null)return!0;if(typeof A=="boolean")return!1;if(typeof A=="number")return A===0;if(typeof A=="string"||typeof A=="function"||Array.isArray(A))return A.length===0;if(A instanceof Error)return A.message==="";if(oE(A))switch(Object.prototype.toString.call(A)){case"[object File]":case"[object Map]":case"[object Set]":return A.size===0;case"[object Object]":for(let e in A)if(Uq.call(A,e))return!1;return!0}return!1}function Dp(A,e){return{userId:e,hasAudio:!!(A&LS),hasVideo:!!(A&bS),hasAuxiliary:!!(A&kS),hasSmall:!!(A&nb),audioMuted:!!(A&bf),videoMuted:!!(A&US),audioAvailable:!(!(A&LS)||A&bf),videoAvailable:!(!(A&bS)||A&US),hasDatachannel:!!(A&KB)}}function Lx(A){let e={urls:A.url.startsWith("turn:")||A.url.startsWith("turns:")?A.url:"turn:".concat(A.url)};return!Ye(A.username)&&!Ye(A.credential)&&(e.username=A.username,e.credential=A.credential,e.credentialType="password",Ye(A.credentialType)||(e.credentialType=A.credentialType)),e}function KS(A){let e=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1];if(!Yn(A))return 0;let o=A.split(".");return e?(Number(o[0])<<24|Number(o[1])<<16|Number(o[2])<<8|Number(o[3]))>>>0:(Number(o[3])<<24|Number(o[2])<<16|Number(o[1])<<8|Number(o[0]))>>>0}var qh=function(A,e,o,a){if(!JE(A)||!JE(e))return 0;let c,d=0,C=Object.keys(e);for(let y=0,S=C.length;y{e[a]=Hf(o)}),e}if(JE(A)){let e={};return Object.keys(A).forEach(o=>{e[o]=Hf(A[o])}),e}return A}var jS=A=>{let e=[];if(Ra(A))e=[...A];else if(Yn(A)){let o=document.getElementById(A);o&&e.push(o)}else A&&e.push(A);return e},Db=A=>Yn(A)?document.getElementById(A):A,Ux=()=>(A=>{let e=S=>S<10?"0".concat(S):"".concat(S),o=A.getFullYear(),a=A.getMonth()+1,c=A.getDate(),d=e(A.getHours()),C=e(A.getMinutes()),y=e(A.getSeconds());return"".concat(o,"/").concat(a,"/").concat(c," ").concat(d,":").concat(C,":").concat(y)})(new Date);function Vd(A,e){let{keysToInclude:o,keysToExclude:a}=e;try{if(Ra(A))return"[".concat(A.map(y=>Vd(y,{keysToInclude:o,keysToExclude:a})).join(","),"]");if(!oE(A)||!Ra(o)&&!Ra(a))return JSON.stringify(A);let c={},d=new Set(o),C=new Set(a);return Object.keys(A).forEach(y=>{(C.size===0&&d.has(y)||d.size===0&&!C.has(y))&&(c[y]=oE(A[y])||Ra(A[y])?JSON.parse(Vd(A[y],{keysToExclude:a,keysToInclude:o})):A[y])}),JSON.stringify(c)}catch{return"{}"}}function I0(A){let e=arguments.length>1&&arguments[1]!==void 0&&arguments[1],o=[];return Object.keys(A).forEach(a=>{e===A[a]&&o.push(a)}),Vd(A,{keysToInclude:o})}function u0(A){return A.replace(/[\u4e00-\u9fa5]/g,"aa").length}var Sb=()=>{var A,e,o,a;return(A=window.screen)!=null&&A.orientation?!((a=(o=(e=window.screen)==null?void 0:e.orientation)==null?void 0:o.type)==null||!a.includes("portrait")):window.orientation===0||window.orientation===180},WS=A=>KA(null,null,function*(){return new Promise((e,o)=>{let a;if(Yn(A))a=new Image,a.crossOrigin="anonymous",a.src=A;else if(a=A,a.complete)return void e(a);a.onload=()=>e(a),a.onerror=()=>{o(new oi({code:lt.INVALID_PARAMETER,message:"load image failed, url: ".concat(A)}))}})}),Mb=A=>{let e=A.split(".");return+e[0]<<24|+e[1]<<16|+e[2]<<8|+e[3]},E0=A=>(Object.keys(A).forEach(e=>{bn(A[e])&&(e.startsWith("uint")||e.startsWith("int"))?A[e]=Math.floor(A[e]):(oE(A[e])||Ra(A[e]))&&E0(A[e])}),A);function _C(A,e){return new Promise(o=>{let a=setTimeout(o,A);e&&e(a)})}function vb(A,e){let o=null;return function(){for(var a=arguments.length,c=new Array(a),d=0;do=null),o)}}function Rb(A){return A.replace(/(^|[^:])\/{2,}/g,"$1/")}function wb(A){var e;try{let{width:o,height:a,frameRate:c,sampleRate:d,sampleSize:C,channelCount:y}=(e=A.getSettings)==null?void 0:e.call(A),S=A.kind===YA.AUDIO?"".concat(d,"x").concat(C,"@").concat(y):"".concat(o,"x").concat(a,"@").concat(c),b=A.stats?" stats: ".concat(JSON.stringify(A.stats).replaceAll('"',"")):"";return"".concat(A.id," ").concat(A.readyState," muted:").concat(A.muted," ").concat(A.kind," ").concat(A.label," ").concat(S).concat(b)}catch{return""}}function d0(A,e){return A.width*A.height===e.width*e.height?1:Sb()&&e.width>e.height&&A.height>e.width?Math.max(A.width/e.height,A.height/e.width,1):Math.max(A.width/e.width,A.height/e.height,1)}function zB(A){return A===90||A===270}function Fx(A){return KA(this,null,function*(){return new Promise((e,o)=>{let a=document.createElement("video");a.crossOrigin="anonymous",a.src=A,a.muted=!0,a.loop=!0,a.playsInline=!0,a.play().then(()=>e(a)),a.onerror=()=>{o(a.error)}})})}function qf(A){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:new WeakMap;if(typeof A!="object"||A===null)return A;if(e.has(A))return e.get(A);if(Array.isArray(A)){let o=[];return e.set(A,o),A.forEach((a,c)=>{o[c]=qf(a,e)}),o}if(Object.prototype.toString.call(A)==="[object Object]"){let o={};return e.set(A,o),Reflect.ownKeys(A).forEach(a=>{o[a]=qf(A[a],e)}),o}return A}var C0=(A=>(A[A.END_REPORT=2001]="END_REPORT",A[A.LOG=2002]="LOG",A[A.KEY_METRIC_REPORT=2003]="KEY_METRIC_REPORT",A))(C0||{});function ZB(A,e,o,a){try{let c=function(d,C,y,S){let b={data:d,random:Math.floor(2147483648*Math.random()),sdkAppId:y};return Ye(S)||(b=Bo(pi({},b),{gzip:+S})),{uint32_sdkappid:0,uint64_from_uin:0,uint32_timestamp:0,uint32_seq:0,msg_common_info:{msg_device_info:{enum_device_type:0,str_device_brand:"",str_device_model:"",str_device_board:"",str_device_cpu_abi:""},msg_system_info:{enum_os_type:0,str_os_version:"",msg_network_info:0},msg_network_info:{enum_network_type:0}},msg_report_content:{uint32_type:C,bytes_report_data:JSON.stringify(b)}}}(A,e,o,a);return hb(s0(c),o)}catch{return JSON.stringify(A)}}function zS(A,e){let o=new Uint8Array(A.byteLength+e.byteLength);return o.set(new Uint8Array(A),0),o.set(new Uint8Array(e),A.byteLength),o.buffer}function h0(A){return(65535&A)>>>0}function Ox(A){return(4294901760&A)>>>0}function Sp(A){return!!(A&&A instanceof CanvasCaptureMediaStreamTrack&&A.canvas.id.includes("trtc_mix"))}function Fq(A){let e=function(o){try{let a={},c=0;a.totalLength=au(o,c),c+=4,a.version=au(o,c),c+=4,a.encryption=Dx(o,c),c+=1,a.uinType=Dx(o,c),c+=1,a.uinLength=au(o,c),c+=4,a.uin=a.uinLength>4?Of(o,c,a.uinLength-4):"",c+=a.uinLength-4;let d=o.slice(c);return a.encryption===2?(o=function(C,y){let S=0,b=new Uint8Array(8).fill(0),V=new Uint8Array(C.slice(0,8)),J=B0(V,y),gA=7&J[0],CA=C.length-1-gA-Hh-JS,MA=new Uint8Array(CA),ee=0,Be=b,Pe=C.slice(0,8);S=8;let Me=1;Me+=gA;for(let Ge=1;Ge<=Hh;)if(Me<8)Me++,Ge++;else if(Me===8){let dt=Kf(C,S,Be,Pe,J,y);Be=dt.ivPreCrypt,Pe=dt.ivCurCrypt,J=dt.debiBuf,S=dt.bufPos,Me=0}let fi=CA;for(;fi>0;)if(Me<8)MA[ee++]=J[Me]^Be[Me],Me++,fi--;else if(Me===8){let Ge=Kf(C,S,Be,Pe,J,y);Be=Ge.ivPreCrypt,Pe=Ge.ivCurCrypt,J=Ge.debiBuf,S=Ge.bufPos,Me=0}for(let Ge=1;Ge<=JS;)if(Me<8)J[Me],Be[Me],Me++,Ge++;else if(Me===8){if(S>=C.length)break;let dt=Kf(C,S,Be,Pe,J,y);if(!dt.success)break;Be=dt.ivPreCrypt,Pe=dt.ivCurCrypt,J=dt.debiBuf,S=dt.bufPos,Me=0}return MA}(d,new Uint8Array(16).fill(0)),a.decrypted=!0,c=0):(o=d,c=0),a.rspHeadLength=au(o,c),c+=4,a.seqNo=au(o,c),c+=4,a.retCode=au(o,c),c+=4,a.retStrLength=au(o,c),c+=4,a.retStr=a.retStrLength?Of(o,c,a.retStrLength-4):"",c+=a.retStrLength-4,a.serviceCmdLength=au(o,c),c+=4,a.serviceCmd=a.serviceCmdLength?Of(o,c,a.serviceCmdLength-4):"",c+=a.serviceCmdLength-4,a.cookieLength=au(o,c),c+=4,a.cookie=a.cookieLength?Of(o,c,a.cookieLength-4):"",c+=a.cookieLength-4,a.flag=au(o,c),c+=4,a.busiBuffLength=au(o,c),c+=4,a.busiBuff=a.busiBuffLength?Of(o,c,a.busiBuffLength-4):"",c+=a.busiBuffLength-4,a}catch{}}(A);return e?.busiBuff}function B0(A,e){let o=A[0]<<24|A[1]<<16|A[2]<<8|A[3],a=A[4]<<24|A[5]<<16|A[6]<<8|A[7];o>>>=0,a>>>=0;let c=Cb*n0>>>0;for(let d=0;d>>5)+e[3],a>>>=0,o-=(a<<4)+e[0]^a+c^(a>>>5)+e[1],o>>>=0,c-=Cb,c>>>=0;return new Uint8Array([o>>>24&255,o>>>16&255,o>>>8&255,255&o,a>>>24&255,a>>>16&255,a>>>8&255,255&a])}function Kf(A,e,o,a,c,d){if(e+8>A.length)return{success:!1};let C=new Uint8Array(a),y=A.slice(e,e+8),S=new Uint8Array(8);for(let b=0;b<8;b++)S[b]=c[b]^y[b];return{success:!0,ivPreCrypt:C,ivCurCrypt:y,debiBuf:B0(S,d),bufPos:e+8}}var Mp=typeof TextDecoder<"u"?new TextDecoder:void 0;function XB(A){let{url:e,body:o,method:a="POST",timeout:c,priority:d}=A;return new Promise((C,y)=>{if("fetch"in window)return fetch(e,{method:a,body:o,priority:d}).then(b=>b.clone().json().then(V=>({data:V}),()=>b.arrayBuffer().then(V=>({data:Fq(new Uint8Array(V))||(Mp?Mp.decode(V):V)})))).then(C,y);let S=new XMLHttpRequest;S.onreadystatechange=()=>{if(S.readyState===4)if(S.status>=200&&S.status<300)try{let b=JSON.parse(S.response);C({data:b})}catch{C({data:S.response})}else y({status:S.status,statusText:S.statusText||"request failed!"})},S.timeout=c||5e3,S.open(a,e,!0),S.send(o)})}function _b(A){return KA(this,null,function*(){let e=bo(),o=JSON.stringify(A);try{if(!CompressionStream||o.length<=2800)return o;let a=new Blob([o],{type:"application/json"}).stream().pipeThrough(new CompressionStream("gzip")),c=yield(yield(yield new Response(a)).blob()).arrayBuffer();return QA.debug("compressJSON ".concat(o.length," -> ").concat(c.byteLength," ").concat(bo()-e,"ms")),c}catch{return o}})}var Px=Object.prototype.hasOwnProperty,vp=A=>typeof A=="function",HE=A=>A===void 0,Tb=A=>typeof A=="string",xx=A=>typeof A=="boolean",Nb=A=>A.isRemote,Yx=function(A){if(!A||typeof A!="object"||Object.prototype.toString.call(A)!="[object Object]")return!1;let e=Object.getPrototypeOf(A);if(e===null)return!0;let o=Object.prototype.hasOwnProperty.call(e,"constructor")&&e.constructor;return typeof o=="function"&&o instanceof o&&Function.prototype.toString.call(o)===Function.prototype.toString.call(Object)},ZS=function(A){let{retryFunction:e,settings:o,onError:a,onRetrying:c,onRetryFailed:d,onRetrySuccess:C,context:y}=A;return function(){for(var S=arguments.length,b=new Array(S),V=0;VKA(this,null,function*(){let fi=y||this;try{let Ge=yield e.apply(fi,b);CA>0&&C&&C.call(this,CA),CA=0,Pe(Ge)}catch(Ge){let dt=()=>{clearTimeout(MA),CA=0,ee=2,Me(Ge)},Ci=()=>{ee!==2&&CA<(vp(J)?J():J)?(CA++,ee=1,vp(c)&&c.call(this,CA,dt),MA=window.setTimeout(()=>{MA=-1,Be(Pe,Me)},vp(gA)?gA(CA):gA)):(dt(),vp(d)&&d.call(this,Ge))};vp(a)?a.call(this,{error:Ge,retry:Ci,reject:Me,retryFuncArgs:b,retriedCount:CA}):Ci()}});return new Promise(Be)}},Gb=class Y6{constructor(e){Y(this,"_parentPath"),Y(this,"userId"),Y(this,"remoteUserId"),Y(this,"id"),Y(this,"sdkAppId"),Y(this,"type"),Y(this,"isLocal"),this.id=e.id,this.userId=e.userId,this.sdkAppId=e.sdkAppId,this.remoteUserId=e.remoteUserId,this.isLocal=!xx(e.isLocal)||e.isLocal,this.type=this.isLocal?"":e.type}getFullId(){return this._parentPath&&this.id?"".concat(this._parentPath,"-").concat(this.id):this._parentPath?this._parentPath:this.id}createChild(e){let o=new Y6({id:e.id,userId:HE(e.userId)?this.userId:e.userId,sdkAppId:HE(e.sdkAppId)?this.sdkAppId:e.sdkAppId,type:HE(e.type)?this.type:e.type,isLocal:HE(e.isLocal)?this.isLocal:e.isLocal,remoteUserId:HE(e.remoteUserId)?this.remoteUserId:e.remoteUserId});return o.bindParent(this),o}bindParent(e){let o=e.getFullId();this._parentPath!==o&&(this.debug("bind logger parent: ".concat(e.id)),this._parentPath=o,this.userId=e.userId||this.userId,this.sdkAppId=e.sdkAppId||this.sdkAppId)}setUserId(e){this.userId=e}setSdkAppId(e){this.sdkAppId=e}log(e,o){let a=this.isLocal?this.userId:this.remoteUserId,c=this.getFullId();o.unshift("[".concat(this.isLocal?"↑":"↓").concat(this.type&&this.type!=="main"?"*":"").concat(c).concat(a?"|".concat(a):"","]")),QA.log(e,o,HE(this.userId)||function(d){if(d==null)return!0;if(typeof d=="boolean")return!1;if(typeof d=="number")return d===0;if(typeof d=="string"||typeof d=="function"||Array.isArray(d))return d.length===0;if(d instanceof Error)return d.message==="";if(Yx(d))switch(Object.prototype.toString.call(d)){case"[object File]":case"[object Map]":case"[object Set]":return d.size===0;case"[object Object]":for(let C in d)if(Px.call(d,C))return!1;return!0}return!1}(this.userId),this.userId,this.sdkAppId)}info(){for(var e=arguments.length,o=new Array(e),a=0;am0,CHROME_MAJOR_VERSION:()=>jE,CHROME_VERSION:()=>T0,EDGE_VERSION:()=>kb,EDG_MAJOR_VERSION:()=>y0,EDG_VERSION:()=>Lb,ELECTRON_MAJOR_VERSION:()=>zx,FIREFOX_MAJOR_VERSION:()=>f0,FIREFOX_VERSION:()=>$S,HUAWEI_VERSION:()=>Kb,IE_VERSION:()=>xq,IOS_MAIN_VERSION:()=>Jd,IOS_VERSION:()=>TI,IPADQQB_VERSION:()=>iM,IS_ANDROID:()=>Ja,IS_ANDROID_WEBVIEW:()=>zb,IS_ANY_SAFARI:()=>Gp,IS_CHROME:()=>_0,IS_CHROME_OS:()=>Vb,IS_CHROMIUM_128_TO_143:()=>Ay,IS_CHROMIUM_BASE:()=>sE,IS_DESKTOP_IOS_CHROME:()=>$x,IS_EDG:()=>Wf,IS_EDGE:()=>jf,IS_ELECTRON:()=>Yq,IS_FIREFOX:()=>er,IS_HEADLESS_CHROME:()=>Wx,IS_HONOR:()=>qb,IS_HUAWEI:()=>Hb,IS_HUAWEIBROWSER:()=>Kh,IS_IE:()=>Kx,IS_IE8:()=>Pq,IS_IOS:()=>Ag,IS_IOS_13_OR_14:()=>Xx,IS_IOS_15_1:()=>Zx,IS_IOS_CHROME:()=>gM,IS_IPAD:()=>Rp,IS_IPADQQB:()=>v0,IS_IPAD_PRO:()=>p0,IS_IPHONE:()=>wp,IS_IPOD:()=>Hx,IS_LINUX:()=>Xf,IS_LOCAL:()=>bp,IS_MAC:()=>AQ,IS_MACQQB:()=>tM,IS_MIBROWSER:()=>R0,IS_MQQB:()=>eM,IS_NATIVE_ANDROID:()=>qx,IS_OLD_ANDROID:()=>Oq,IS_OPENHARMONY:()=>$f,IS_OPPOBROWSER:()=>sM,IS_SAFARI:()=>Bg,IS_SAFARI_15_1:()=>Vq,IS_SAMSUNGBROWSER:()=>oM,IS_SOGOU:()=>S0,IS_SOGOUM:()=>AM,IS_TBS:()=>KE,IS_UCBROWSER:()=>Jb,IS_VIVOBROWSER:()=>nM,IS_WECHAT:()=>$B,IS_WIN:()=>Zf,IS_WQQB:()=>M0,IS_WX:()=>jx,IS_X5MQQB:()=>Tp,IS_XWEB:()=>_p,MACQQB_VERSION:()=>Yb,MI_VERSION:()=>Np,MQQB_VERSION:()=>zf,OPENHARMONY_VERSION:()=>w0,OPPO_VERSION:()=>Wb,SAFARI_VERSION:()=>eQ,SAMSUNG_VERSION:()=>jb,SOGOUM_VERSION:()=>D0,SOGOU_VERSION:()=>Ub,TBS_VERSION:()=>Fb,UA_DATA_STRING:()=>TC,USER_AGENT:()=>qE,VIVO_VERSION:()=>rM,WECHAT_VERSION:()=>Pb,WQQB_VERSION:()=>xb,XWEB_VERSION:()=>Ob,browserInfo:()=>iQ,getBrowserCoreNumber:()=>ql,getBrowserInfo:()=>Xb,getChromeMajorVersion:()=>aM,getDeviceModel:()=>oQ,getDeviceModelFromUA:()=>$b,getGPUInfo:()=>kp,getOSName:()=>ul,getOSNumber:()=>Lp,getOSString:()=>Up,getOSType:()=>Q,getTerminalType:()=>Cn,getUserAgentData:()=>cM,isAMDGPU:()=>ty,isAppleSiliconGPU:()=>Jq,isLocalStorageEnabled:()=>tQ,isMobile:()=>N0,isNvidiaGPU:()=>A2,isRealIOS:()=>XS,isVersionLargerThan:()=>ey,isVersionSmallerThan:()=>Zb});var qE=typeof navigator>"u"?"":navigator.userAgent,Ts=A=>new RegExp(A,"i").test(qE),hg=A=>{if(Ts(A)){let e=new RegExp("".concat(A,"\\/([\\d.]+)")),o=qE.match(e);if(o&&o[1])return o[1]}return""},Q0=A=>{if(Ts(A)){let e=new RegExp("".concat(A,"\\/(\\d+)")),o=qE.match(e);if(o&&o[1])return parseFloat(o[1])}return NaN},bb=/AppleWebKit\/([\d.]+)/i.exec(qE),Jx=bb?parseFloat(bb[1]):NaN,Rp=Ts("iPad"),p0=typeof navigator<"u"&&navigator.maxTouchPoints&&navigator.maxTouchPoints>2&&Ts("Macintosh"),wp=Ts("iPhone")&&!Rp,Hx=Ts("iPod"),Ag=wp||Rp||Hx||p0,XS=()=>{try{return Ag&&navigator.maxTouchPoints>1&&navigator.vendor.includes("Apple")}catch{return Ag}},Ja=Ts("Android"),m0=function(){if(Ja){let A=qE.match(/Android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i);if(A){let e=A[1]&&parseFloat(A[1]),o=A[2]&&parseFloat(A[2]);if(e&&o)return parseFloat("".concat(A[1],".").concat(A[2]));if(e)return e}}return NaN}(),Oq=Ja&&Ts("webkit")&&m0<2.3,qx=Ja&&m0<5&&Jx<537,er=Ts("Firefox"),$S=hg("Firefox"),f0=Q0("Firefox"),jf=Ts("Edge"),kb=hg("Edge"),Wf=Ts("Edg"),Lb=hg("Edg"),y0=Q0("Edg"),AM=Ts("SogouMobileBrowser"),D0=hg("SogouMobileBrowser"),S0=Ts("MetaSr\\s"),Ub=hg("MetaSr\\s"),KE=Ts("TBS"),Fb=hg("TBS"),_p=Ts("XWEB"),Ob=hg("XWEB"),Pq=Ts("MSIE\\s8\\.0"),Kx=Ts("MSIE\\/\\d+"),xq=function(){if(Kx){let A=/MSIE\s(\d+)\.\d/.exec(qE),e=A&&parseFloat(A[1]);return!e&&/Trident\/7.0/i.test(qE)&&/rv:11.0/.test(qE)&&(e=11),e}return NaN}(),$B=Ts("(micromessenger|webbrowser)"),Pb=hg("MicroMessenger"),Tp=!KE&&Ts("MQQBrowser")&&Ts("COVC"),eM=!KE&&Ts("MQQBrowser")&&!Ts("COVC"),zf=eM||Tp?hg("MQQBrowser"):"",M0=!KE&&Ts(" QQBrowser"),xb=hg(" QQBrowser"),tM=!KE&&Ts("QQBrowserLite"),Yb=hg("QQBrowserLite"),v0=!KE&&Ts("MQBHD"),iM=hg("MQBHD"),Zf=Ts("Windows"),AQ=!Ag&&Ts("MAC OS X"),Xf=!Ja&&Ts("Linux"),Vb=Ts("CrOS"),jx=Ts("MicroMessenger"),Jb=Ts("UCBrowser"),Yq=Ts("Electron"),R0=Ts("MiuiBrowser"),Np=hg("MiuiBrowser"),Kh=Ts("HuaweiBrowser"),Hb=Ts("Huawei")||Ts("HUAWEI"),qb=Ts("Honor")||Ts("HONOR"),Kb=hg("HuaweiBrowser"),oM=Ts("SamsungBrowser"),jb=hg("SamsungBrowser"),sM=Ts("HeyTapBrowser"),Wb=hg("HeyTapBrowser"),nM=Ts("VivoBrowser"),rM=hg("VivoBrowser"),$f=Ts("OpenHarmony"),w0=hg("OpenHarmony"),aM=()=>Q0("Chrome"),gM=Ts("CriOS"),sE=Ts("Chrome"),_0=!jf&&!S0&&!AM&&!KE&&!_p&&!Wf&&!M0&&!R0&&!Kh&&!oM&&!sM&&!nM&&sE,Wx=Ts("HeadlessChrome"),jE=aM(),Ay=sE&&jE>=128&&jE<=143,T0=hg("Chrome"),zx=Q0("Electron"),Bg=!sE&&!eM&&!Tp&&!tM&&!v0&&Ts("Safari"),Gp=Bg||Ag,eQ=hg("Version"),zb=/Android.*(wv|.0.0.0)/.test(qE),TI=(()=>{if(p0)return eQ;if(Ag){let A=qE.match(/OS (\d+)_(\d+)/i);if(A&&A[1]){let e=A[1];return A[2]&&(e+=".".concat(A[2])),e}}return""})();function Zb(A,e){let o=A.split(".").map(c=>Number(c)),a=e.split(".").map(c=>Number(c));for(let c=0;cC)return!1}return!1}function ey(A,e){let o=arguments.length>2&&arguments[2]!==void 0&&arguments[2],a=A.split(".").map(d=>Number(d)),c=e.split(".").map(d=>Number(d));for(let d=0;dy)return!0;if(C{let A=Number(TI.split(".")[0]);return A===14||A===13})(),$x=gM&&eQ==="11.1.1",bp=typeof location<"u"&&(location.protocol==="file:"||location.hostname==="localhost"||location.hostname==="127.0.0.1"),tQ=(()=>{let A;return()=>{if(A===void 0)try{A=!!window.localStorage}catch{A=!1}return A}})(),iQ=Xb();function Xb(){let A=new Map([[er,["Firefox",$S]],[Wf,["Edg",Lb]],[_0,["Chrome",T0]],[gM,["ChiOS",hg("CriOS")]],[Bg&&!gM,["Safari",eQ]],[KE,["TBS",Fb]],[_p,["XWEB",Ob]],[$B&&wp,["WeChat",Pb]],[M0,["QQ(Win)",xb]],[eM,["QQ(Mobile)",zf]],[Tp,["QQ(Mobile X5)",zf]],[tM,["QQ(Mac)",Yb]],[v0,["QQ(iPad)",iM]],[R0,["MI",Np]],[Kh,["HW",Kb]],[oM,["Samsung",jb]],[sM,["OPPO",Wb]],[nM,["VIVO",rM]],[jf,["EDGE",kb]],[AM,["SogouMobile",D0]],[S0,["Sogou",Ub]]]),e="unknown",o="unknown";return A.has(!0)&&([e,o]=A.get(!0)),{name:e,version:o}}var Ur=null;function N0(){return Ur&&typeof Ur.mobile=="boolean"?Ur.mobile:Ja||Ag||wp||Rp||$f}var TC="";function cM(){return KA(this,null,function*(){if(Ur)return Ur;if(!navigator.userAgentData||typeof navigator.userAgentData.getHighEntropyValues!="function")return null;try{return(Ur=yield navigator.userAgentData.getHighEntropyValues(["architecture","bitness","model","platformVersion","fullVersionList"]))&&!TC&&(TC="UAData: ".concat(Ur.platform,"/").concat(Ur.platformVersion),Ur.architecture&&Ur.bitness&&(TC+=" ".concat(Ur.architecture,"/").concat(Ur.bitness)),Ur.mobile&&(TC+=" mobile"),Ur.model&&(TC+=" model: ".concat(Ur.model.replace(/\s+/g,"/"))),Ur.fullVersionList&&(TC+=" ".concat(Ur.fullVersionList.filter(A=>A.brand!=="Not/A)Brand").map(A=>"".concat(A.brand,"/").concat(A.version)).join(",")))),Ur}catch{return null}})}var lM="";function kp(){try{if(lM)return lM;let A=document.createElement("canvas"),e=A.getContext("webgl")||A.getContext("experimental-webgl");if(!e)return"";let o=e.getExtension("WEBGL_debug_renderer_info");if(o){let a=e.getParameter(o.UNMASKED_VENDOR_WEBGL),c=e.getParameter(o.UNMASKED_RENDERER_WEBGL);return lM="".concat(a," ").concat(c)}return""}catch{return""}}function ty(){try{let A=kp();return A.includes("AMD")||A.includes("ATI")}catch{return!1}}function A2(){try{let A=kp();return A.includes("NVIDIA")||A.includes("GeForce")}catch{return!1}}function Jq(){try{return kp().includes("Apple M")}catch{return!1}}function oQ(){return Ur?.model||$b()||""}function $b(){let A=qE.match(/;\s*([^;)]+)\s+Build\//);return A!=null&&A[1]?A[1].trim():null}var e2=new Map([[Ja,"Android"],[Ag,"iOS"],[Zf,"Windows"],[AQ,"MacOS"],[Xf,"Linux"],[Vb,"ChromeOS"]]),ul=function(){return e2.get(!0)?e2.get(!0):Ur?Ur.platform:"unknown"};function Lp(){return Zf?1:Ja?2:AQ?3:Ag?4:Xf?5:Vb?6:$f?7:0}function ql(){return $B||_p?4:sE?1:Bg?2:er?3:0}var Up=()=>{let A=ul();return Ur!=null&&Ur.platformVersion?A+="/".concat(Ur.platformVersion):Ag?A+="/".concat(TI):Ja&&(A+="/".concat(m0)),A+="/".concat(iQ.name,"/").concat(Bg&&!gM?iQ.version:iQ.version.split(".")[0]),Ur!=null&&Ur.architecture&&(A+="/".concat(Ur.architecture)),A};function Cn(){return Ja?4:wp?2:Rp?3:AQ?12:Zf?5:Xf?13:$f?22:1}function Q(){return Ja?"Android":wp?"iPhone":Rp?"iPad":AQ?"Mac":Zf?"Windows":Xf?"Linux":"unknown"}var R,U=new(gc(Hl(),1)).default,eA=((R=eA||{}).ROOM_DESTROY="1",R.JOIN_START="21",R.JOIN_SCHEDULE_SUCCESS="22",R.JOIN_SIGNAL_CONNECTION_START="23",R.JOIN_SIGNAL_CONNECTION_END="24",R.JOIN_SEND_CMD="25",R.JOIN_RECEIVED_CMD_RES="26",R.JOIN_SUCCESS="27",R.JOIN_FAILED="28",R.LEAVE_START="51",R.LEAVE_SEND_CMD="52",R.LEAVE_SUCCESS="53",R.PUBLISH_START="61",R.SEND_FIRST_VIDEO_FRAME="62",R.PUBLISH_FAILED="63",R.SUBSCRIBE_START="81",R.SUBSCRIBE_SUCCESS="82",R.SUBSCRIBE_FAILED="84",R.UNSUBSCRIBE_SUCCESS="83",R.LOCAL_TRACK_CAPTURE_START="101",R.LOCAL_TRACK_CAPTURE_SUCCESS="102",R.LOCAL_TRACK_CAPTURE_FAILED="103",R.LOCAL_TRACK_PUBLISHED="104",R.LOCAL_TRACK_UNPUBLISHED="105",R.LOCAL_TRACK_REPLACED="106",R.SWITCH_DEVICE_SUCCESS="107",R.TRACK_MUTED="108",R.TRACK_UNMUTED="109",R.REMOTE_TRACK_SUBSCRIBED="110",R.REMOTE_TRACK_UNSUBSCRIBED="111",R.LOCAL_TRACK_RECAPTURE="112",R.LOCAL_AUDIO_STARTED="113",R.LOCAL_AUDIO_STOPPED="114",R.REMOTE_AUDIO_STARTED="115",R.REMOTE_AUDIO_STOPPED="116",R.LOCAL_TRACK_STOPPED="117",R.LOCAL_VIDEO_TRACK_PREPROCESSED="118",R.PLAY_TRACK_START="151",R.PLAYER_STATE_CHANGED="152",R.VIDEO_LOADED_DATA="153",R.AUTOPLAY_DIALOG_CLICK_CONFIRM="154",R.AUDIO_CONTEXT_LONG_SUSPENDED="155",R.REMOTE_VIDEO_PLAY_START="156",R.REMOTE_VIDEO_PLAY_FINISH="157",R.SIGNAL_CONNECTION_STATE_CHANGED="201",R.PEER_CONNECTION_STATE_CHANGED="202",R.SINGLE_CONNECTION_STAT="203",R.SPC_RECONNECTED="204",R.HEARTBEAT_REPORT="251",R.RECEIVED_PUBLISHED_USER_LIST="252",R.REMOTE_PUBLISH_STATE_CHANGED="253",R.AUDIO_LEVEL_INTERVAL="260",R.NETWORK_QUALITY="261",R.VIDEO_CODEC_IMPLEMENTATION_CHANGED="262",R.QUALITY_LIMITATION_CHANGED="263",R.LOG="264",R.AUDIO_PROCESSOR_DEBUG="265",R.SSO_SWITCH="266",R.SEI_MESSAGE="267",R.USER_PAUSE_IN_PIP="268",R.USER_RESUME_IN_PIP="269",R.ENTER_PICTURE_IN_PICTURE="270",R.LEAVE_PICTURE_IN_PICTURE="271",R.SWITCH_ROOM_START="401",R.SWITCH_ROOM_SUCCESS="407",R.SWITCH_ROOM_FAILED="408",R),sA=eA,_A=new class{constructor(){Y(this,"enable",!1),Y(this,"ssoFailCount",0),U.on("22",A=>{let{schedule:e}=A;var o;(o=e?.config)!=null&&o.sso&&U.emit("266",{enable:!0})}),U.on("266",A=>{let{enable:e}=A;this.enable=e})}handleUploadFailed(){this.ssoFailCount++,this.ssoFailCount>3&&U.emit("266",{enable:!1})}},XA=class V6{constructor(){Y(this,"_isEnableUploadLog",!0),Y(this,"_localJoinedUser",new Map),Y(this,"_queue",[]),Y(this,"_timeoutId",-1),Y(this,"_logLevel",1),Y(this,"_logLevelToUpload",2),!Vw&&!Jw&&(this.checkURLParam(),this.installEvents())}get isAbleToUpload(){return this._isEnableUploadLog&&this._timeoutId!==-1}installEvents(){U.on(sA.JOIN_SCHEDULE_SUCCESS,e=>{let{schedule:o}=e;var a;(a=o?.config)!=null&&a.logLevelToUpload&&qB[o.config.logLevelToUpload]&&(this._logLevelToUpload=o.config.logLevelToUpload)}),U.on(sA.JOIN_START,e=>{let{params:o}=e;this.addJoinedUser({userId:o.userId,sdkAppId:o.sdkAppId}),this.startUpload()}),U.on(sA.LEAVE_SUCCESS,e=>{let{room:o}=e;this.deleteJoinedUser(o.userId)})}startUpload(){this._timeoutId===-1&&this.uploadInterval()}addJoinedUser(e){this._localJoinedUser.set(e.userId,e),this.startUpload()}deleteJoinedUser(e){this._localJoinedUser.delete(e)}uploadInterval(){this.upload().catch(()=>{}),this._timeoutId=window.setTimeout(()=>this.uploadInterval(),5e3)}getLogsToUpload(){let e={map:new Map,splicedQueue:[]};if(this._queue[0].forAllJoinedClients&&this._localJoinedUser.size===0)return e;let o=0;for(;o{let{userId:d,sdkAppId:C}=c;e.map.has(d)?e.map.get(d).logs.push(a):e.map.set(d,{userId:d,sdkAppId:C,logs:[a]})});else if(Yn(a.userId)&&bn(a.sdkAppId)){let{userId:c,sdkAppId:d}=a;e.map.has(c)?e.map.get(c).logs.push(a):e.map.set(c,{userId:c,sdkAppId:d,logs:[a]})}}return e.map.size>0&&(e.splicedQueue=this._queue.splice(0,o)),e}upload(){return KA(this,null,function*(){if(this._queue.length===0||!this._isEnableUploadLog)return;let{map:e,splicedQueue:o}=this.getLogsToUpload();if(e.size===0)return;try{let c=[...e.values()];for(let d=0;dgA.log).join(` -`)},V=JSON.stringify(b),J=_A.enable?ZB(b,2002,y):V;yield this.uploadLogWithRetry(J,y,J instanceof Uint8Array,V),S.forEach(gA=>gA.uploaded=!0)}}catch{}let a=o.filter(c=>!c.uploaded);a.length>0&&(this._queue=a.concat(this._queue))})}uploadLogWithRetry(e,o,a,c){return ZS({retryFunction:()=>XB({url:Pf(o,_I.LOG),body:e,timeout:5e3,priority:"low"}).then(d=>{a&&d.data!=="ok"&&(_A.handleUploadFailed(),this.uploadLogWithRetry(c,o,!1,c))}),settings:{retries:3,timeout:2e3},onError:d=>{let{retry:C}=d;C()}})()}getPrefix(e){let o=new Date;return o.setTime(Tf()),"[".concat(eb(o),"] <").concat(qB[e],">")}getLogLevel(){return this._logLevel}setLogLevel(e){Ye(qB[e])||(this._logLevel!==e&&this.info("setLogLevel",e),this._logLevel=e)}enableUploadLog(){this._isEnableUploadLog=!0}disableUploadLog(){this.warn("disableUploadLog"),this._isEnableUploadLog=!1}logChunkToString(e){if(Yn(e))return e;try{return e instanceof Error?e.toString():JSON.stringify(e)}catch{return""}}addLogToQueue(e,o){let a=!(arguments.length>2&&arguments[2]!==void 0)||arguments[2],c=arguments.length>3?arguments[3]:void 0,d=arguments.length>4?arguments[4]:void 0,C={log:o.reduce((y,S)=>"".concat(y," ").concat(this.logChunkToString(S)).trim(),""),level:e,userId:c,sdkAppId:d,forAllJoinedClients:a};U.emit(sA.LOG,{log:C}),this._isEnableUploadLog&&e>=this._logLevelToUpload&&this._queue.push(C)}log(e,o){let a=!(arguments.length>2&&arguments[2]!==void 0)||arguments[2],c=arguments.length>3?arguments[3]:void 0,d=arguments.length>4?arguments[4]:void 0;var C;if(o.unshift(this.getPrefix(e)),this.addLogToQueue(e,o,a,c,d),e{let e=16*Math.random()|0;return(A=="x"?e:3&e|8).toString(16)})},jA=new class{constructor(){Y(this,"_prefix","TRTC"),Y(this,"_queue",new Map)}getRealKey(A){return"".concat(this._prefix,"_").concat(A)}checkStorage(){tQ()&&(setInterval(this.doFlush.bind(this),2e4),Object.keys(localStorage).filter(A=>{if(A.startsWith(this._prefix))try{let e=localStorage.getItem(A);if(!e)return!1;let o=JSON.parse(e);if(o&&o.expiresInlocalStorage.removeItem(A)))}doFlush(){if(tQ())try{for(let[A,e]of this._queue)localStorage.setItem(A,JSON.stringify(e))}catch(A){QA.warn(A)}}getItem(A){if(!tQ())return null;try{let e=localStorage.getItem(this.getRealKey(A));if(!e)return null;let o=JSON.parse(e);return o&&o.expiresIn>=Date.now()?o.value:null}catch(e){QA.warn(e)}}setItem(A,e){if(tQ())try{let o={expiresIn:Date.now()+Kw,value:e};this._queue.set(this.getRealKey(A),o)}catch(o){QA.warn(o)}}deleteItem(A){if(!tQ())return!1;try{return A=this.getRealKey(A),this._queue.delete(A),localStorage.removeItem(A),!0}catch(e){return QA.warn(e),!1}}clear(){if(tQ())try{localStorage.clear()}catch(A){QA.warn(A)}}},oe={};Yh(oe,{HTTPS_API:()=>Ek,IS_GET_CAPABILITIES_FROM_INPUTDEVICE_SUPPORTED:()=>l2,IS_GET_CAPABILITIES_SUPPORTED:()=>c2,IS_GET_SETTINGS_SUPPORTED:()=>ly,IS_GET_SYNCHRONIZATION_SOURCES_SUPPORTED:()=>pk,IS_INSERTABLE_STREAM_SUPPORTED:()=>Yp,IS_JITTER_BUFFER_TARGET_SUPPORTED:()=>cQ,IS_RTC_RTP_SENDER_SUPPORTED:()=>NC,IS_SCRIPT_TRANSFORM_SUPPORTED:()=>x0,IS_SEI_SUPPORTED:()=>mk,IS_SPC_SUPPORTED:()=>mM,basis:()=>u2,capabilityCheck:()=>Dk,checkSystemRequirementsInternal:()=>Ik,decodeSupportStatus:()=>lk,detectH264SupportedByFakeStreaming:()=>a2,detectVideoCodecCapabilities:()=>yM,detectVideoDecoderCapabilities:()=>Mk,detectVideoEncoderCapabilities:()=>Sk,encodeSupportStatus:()=>hM,getBrowserInfo:()=>dM,getDisplayResolution:()=>ZE,getH264ProfileLevelIds:()=>C2,isAddTransceiverSupported:()=>Hd,isBrowserSupported:()=>gk,isCanvasCaptureStreamAPISupported:()=>QM,isCanvasSmallStreamSupported:()=>P0,isGetReceiversSupported:()=>cy,isGetSendersSupported:()=>NI,isGetTransceiversSupported:()=>gQ,isGetUserMediaSupported:()=>dk,isMediaDevicesSupported:()=>ck,isMediaSessionSupported:()=>I2,isMediaStreamTrackGeneratorSupported:()=>jq,isMediaStreamTrackProcessorSupported:()=>CM,isReplaceTrackSupported:()=>g2,isRequestVideoFrameCallbackSupported:()=>Vp,isSIMDSupported:()=>fM,isScaleResolutionDownBySupported:()=>hk,isScreenCaptureApiAvailable:()=>xp,isSelectedCandidatePair:()=>BM,isSetParametersSupported:()=>Qk,isSetSinkIdSupported:()=>zq,isSmallStreamSupported:()=>pM,isStopTransceiverSupported:()=>ea,isTRTCSupported:()=>Wq,isUnifiedPlanDefault:()=>Bk,isUsedInHttpProtocol:()=>gu,isWebAudioSupported:()=>Ck,isWebCodecSupported:()=>Y0,isWebCodecsSupported:()=>O0,isWebRTCSupported:()=>Iy,isWebTransportSupported:()=>uy});var ke={};Yh(ke,{AUDIO_LEVEL_SCALE:()=>WE,AlphaStitchingType:()=>ry,AudioCodecPipelineType:()=>aQ,AudioDecoderDowngradeState:()=>IM,AudioPlayerMode:()=>k0,AudioType:()=>t2,BASIC_TYPE:()=>ok,BannedReason:()=>Qg,CONNECTION_CLOSED_REASON:()=>Yt,CheckPermissionType:()=>gr,ClientEvent:()=>We,CodecType:()=>uM,ConnectionEvent:()=>Po,ConnectionState:()=>iy,DECODE_FAILED_ERROR_CODE:()=>EM,DenoiserMode:()=>Fp,DeviceType:()=>sk,FacingMode:()=>ek,FrameWorkType:()=>eo,LeaveReason:()=>tk,LocalTrackEvent:()=>Do,MULTI_VIDEO_DATA_TYPE:()=>ny,MediaType:()=>G0,MediaTypeLabel:()=>Hq,MonitorEventId:()=>El,MutedFlag:()=>Zn,NetworkQualityValue:()=>nE,PlayerState:()=>Io,ReceiveMode:()=>Kl,RemoteStreamType:()=>sy,RemoteTrackEvent:()=>hn,RoomEvent:()=>lo,SMALL_MODE:()=>Pp,SceneNumber:()=>Ha,StreamEvent:()=>Si,StreamType:()=>rQ,SubscribeMediaType:()=>ik,TIMER_TYPE:()=>U0,TRACK_ACTION:()=>Ak,TRACK_KIND:()=>sQ,TrackEvent:()=>xo,UserRole:()=>Fc,UserRoleNumber:()=>As,VideoCodec:()=>dl,VideoCodecPipelineType:()=>Op,VideoContentHint:()=>L0,VideoDecoderDowngradeState:()=>oy,VideoPlayerMode:()=>b0,VideoType:()=>nQ});var Te,he,at,ri,Ze,Je,dA,ht,ze,Vi,ci,eo=(A=>(A[A.WEBRTC=30]="WEBRTC",A[A.WASM=37]="WASM",A))(eo||{}),Po=((ci=Po||{}).TRACK_ADDED="track-added",ci.TRACK_UPDATED="track-updated",ci.TRACK_SUBSCRIBED="track-subscribed",ci.STREAM_ADDED="stream-added",ci.STREAM_REMOVED="stream-removed",ci.STREAM_UPDATED="stream-updated",ci.STREAM_PUBLISHED="stream-published",ci.STREAM_SUBSCRIBED="stream-subscribed",ci.STREAM_UNSUBSCRIBED="stream-unsubscribed",ci.STATE_CHANGED="state-changed",ci.ERROR="error",ci.CONNECTION_STATE_CHANGED="connection-state-changed",ci.FIREWALL_RESTRICTION="firewall-restriction",ci.SEI_MESSAGE="sei-message",ci.CLOSED="closed",ci),Yt=(A=>(A.REMOTE_LEAVE="remote user exitRoom",A.REMOTE_UNPUBLISH="remote user unpublished",A.LOCAL_LEAVE="you exitRoom",A.LOCAL_UNPUBLISH="you unpublished",A.LOCAL_UNSUBSCRIBE="you unsubscribed",A.SWITCH_ROLE="you switch role to audience",A))(Yt||{}),We=((Vi=We||{}).STREAM_ADDED="stream-added",Vi.STREAM_REMOVED="stream-removed",Vi.STREAM_UPDATED="stream-updated",Vi.STREAM_SUBSCRIBED="stream-subscribed",Vi.CONNECTION_STATE_CHANGED="connection-state-changed",Vi.PEER_JOIN="peer-join",Vi.PEER_LEAVE="peer-leave",Vi.MUTE_AUDIO="mute-audio",Vi.MUTE_VIDEO="mute-video",Vi.UNMUTE_AUDIO="unmute-audio",Vi.UNMUTE_VIDEO="unmute-video",Vi.CLIENT_BANNED="client-banned",Vi.NETWORK_QUALITY="network-quality",Vi.AUDIO_VOLUME="audio-volume",Vi.SEI_MESSAGE="sei-message",Vi.ERROR="error",Vi),Si=((ze=Si||{}).PLAYER_STATE_CHANGED="player-state-changed",ze.SCREEN_SHARING_STOPPED="screen-sharing-stopped",ze.CONNECTION_STATE_CHANGED="connection-state-changed",ze.DEVICE_AUTO_RECOVERED="device-auto-recovered",ze.ERROR="error",ze),Do=((ht=Do||{}).DEVICE_AUTO_RECOVERED="1",ht.DEVICE_RECOVER_FAILED="5",ht.DEVICE_CHANGED="2",ht.ERROR="3",ht.PUBLISH_STATE_CHANGED="4",ht.ENCODE_FAILED="6",ht.TRACK_ENDED="7",ht.RENDER="render",ht),Io=(A=>(A.PAUSED="PAUSED",A.PLAYING="PLAYING",A.STOPPED="STOPPED",A))(Io||{}),lo=((dA=lo||{}).PEER_JOIN="peer-join",dA.PEER_LEAVE="peer-leave",dA.SIGNAL_CONNECTION_STATE_CHANGED="signal-connection-state-changed",dA.MEDIA_CONNECTION_STATE_CHANGED="media-connection-state-changed",dA.BANNED="banned",dA.NETWORK_QUALITY="network-quality",dA.AUDIO_VOLUME="audio-volume",dA.SEI_MESSAGE="sei-message",dA.ERROR="error",dA.REMOTE_PUBLISH_STATE_CHANGED="remote-publish-state-changed",dA.REMOTE_PUBLISHED="remote-published",dA.REMOTE_UNPUBLISHED="remote-unpublished",dA.FIREWALL_RESTRICTION="firewall-restriction",dA.HEARTBEAT_REPORT="heartbeat-report",dA.CUSTOM_MESSAGE="custom-message",dA.LAYER_DATA="layerData",dA.FIRST_VIDEO_FRAME="first-video-frame",dA.FIRST_FRAME_RENDER="first-frame-render",dA.DUMP="dump",dA.AUDIO_FRAME="audio-frame",dA.SUBSCRIBE_SMALL_VIDEO_CHANGED="subscribe-small-video-changed",dA.LOCAL_PUBLISH_FLAG_CHANGED="local-publish-flag-changed",dA.NTP_TIME_UPDATED="ntp-time-updated",dA.DATA_CHANNEL_MESSAGE="data-channel-message",dA.ASR_ROBOT_PEER_JOIN="asr-robot-peer-join",dA.ASR_ROBOT_PEER_LEAVE="asr-robot-peer-leave",dA),xo=((Je=xo||{}).PLAYER_STATE_CHANGED="player-state-changed",Je.MUTE="mute",Je.UNMUTE="unmute",Je.ERROR="error",Je.INPUT_MEDIA_TRACK_CHANGED="input-media-track-changed",Je.OUTPUT_MEDIA_TRACK_CHANGED="output-media-track-changed",Je.FIRST_VIDEO_FRAME="first-video-frame",Je.FIRST_FRAME_RENDER="first-frame-render",Je.VIDEO_SIZE_CHANGED="video-size-changed",Je),hn=(A=>(A.DECODE_FAILED="decode-failed",A.DECODE_FAILED_DURING_CALL="decode-failed-during-call",A.DECODE_DOWNGRADE_STATE_CHANGED="decode-downgrade-state-changed",A.REMOTE_PUBLISH_CHANGED="remote-publish-changed",A.AUDIO_FRAME_WITH_NTP="audio-frame-with-ntp",A))(hn||{}),Zn=((Ze=Zn||{})[Ze.VIDEO=1]="VIDEO",Ze[Ze.SMALL=2]="SMALL",Ze[Ze.AUX=4]="AUX",Ze[Ze.AUDIO=8]="AUDIO",Ze[Ze.VIDEO_MUTE=16]="VIDEO_MUTE",Ze[Ze.AUX_MUTE=32]="AUX_MUTE",Ze[Ze.AUDIO_MUTE=64]="AUDIO_MUTE",Ze),Ha=(A=>(A[A.RTC=1]="RTC",A[A.LIVE=2]="LIVE",A))(Ha||{}),As=(A=>(A[A.ANCHOR=20]="ANCHOR",A[A.AUDIENCE=21]="AUDIENCE",A))(As||{}),Fc=(A=>(A.ANCHOR="anchor",A.AUDIENCE="audience",A))(Fc||{}),iy=(A=>(A.CONNECTED="CONNECTED",A.DISCONNECTED="DISCONNECTED",A.CONNECTING="CONNECTING",A.RECONNECTED="RECONNECTED",A.RECONNECTING="RECONNECTING",A))(iy||{}),IM=((ri=IM||{}).INITIALIZED="INITIALIZED",ri.STARTING="STARTING",ri.STARTED="STARTED",ri.FAILED="FAILED",ri),oy=(A=>(A.INITIALIZED="INITIALIZED",A.STARTING="STARTING",A.STARTED="STARTED",A.FAILED="FAILED",A))(oy||{}),sQ=(A=>(A.AUDIO="audio",A.VIDEO="video",A.AUXILIARY="auxVideo",A))(sQ||{}),Ak=(A=>(A.ADD="add",A.REMOVE="remove",A))(Ak||{}),G0=(A=>(A[A.NULL=0]="NULL",A[A.AUDIO=1]="AUDIO",A[A.AUX_VIDEO=2]="AUX_VIDEO",A[A.BIG_VIDEO=4]="BIG_VIDEO",A[A.SMALL_VIDEO=8]="SMALL_VIDEO",A))(G0||{}),Hq={1:"audio",2:"auxVideo",4:"video"},t2=((at=t2||{})[at.opus=111]="opus",at),nQ=(A=>(A[A.h264=100]="h264",A[A.vp8=101]="vp8",A))(nQ||{}),rQ=(A=>(A.Big="big",A.Small="small",A))(rQ||{}),sy=(A=>(A.Main="main",A.Aux="auxiliary",A))(sy||{}),ny=(A=>(A[A.MULTI_DATA_AUDIO=1]="MULTI_DATA_AUDIO",A[A.MULTI_DATA_BIG_IMG=2]="MULTI_DATA_BIG_IMG",A[A.MULTI_DATA_SMALL_IMG=3]="MULTI_DATA_SMALL_IMG",A[A.MULTI_DATA_AUX_IMG=7]="MULTI_DATA_AUX_IMG",A[A.MULTI_DATA_TYPE_BUTT=12]="MULTI_DATA_TYPE_BUTT",A))(ny||{}),El=((he=El||{})[he.PUBLISH_VIDEO=32768]="PUBLISH_VIDEO",he[he.PUBLISH_AUDIO=32769]="PUBLISH_AUDIO",he[he.UNPUBLISH_VIDEO=32770]="UNPUBLISH_VIDEO",he[he.UNPUBLISH_AUDIO=32771]="UNPUBLISH_AUDIO",he[he.MUTE_AUDIO=32772]="MUTE_AUDIO",he[he.MUTE_VIDEO=32773]="MUTE_VIDEO",he[he.UNMUTE_AUDIO=32774]="UNMUTE_AUDIO",he[he.UNMUTE_VIDEO=32775]="UNMUTE_VIDEO",he[he.SUBSCRIBE_VIDEO=32776]="SUBSCRIBE_VIDEO",he[he.SUBSCRIBE_AUDIO=32777]="SUBSCRIBE_AUDIO",he[he.UNSUBSCRIBE_VIDEO=32778]="UNSUBSCRIBE_VIDEO",he[he.UNSUBSCRIBE_AUDIO=32779]="UNSUBSCRIBE_AUDIO",he[he.SWITCH_CAMERA=32780]="SWITCH_CAMERA",he[he.SWITCH_MICROPHONE=32781]="SWITCH_MICROPHONE",he[he.REPLACE_VIDEO=32782]="REPLACE_VIDEO",he[he.REPLACE_AUDIO=32783]="REPLACE_AUDIO",he[he.MUTE_REMOTE_VIDEO=32784]="MUTE_REMOTE_VIDEO",he[he.MUTE_REMOTE_AUDIO=32785]="MUTE_REMOTE_AUDIO",he[he.UNMUTE_REMOTE_VIDEO=32786]="UNMUTE_REMOTE_VIDEO",he[he.UNMUTE_REMOTE_AUDIO=32787]="UNMUTE_REMOTE_AUDIO",he[he.JOIN=32788]="JOIN",he[he.LEAVE=32789]="LEAVE",he[he.SIGNAL_DISCONNECTED=32790]="SIGNAL_DISCONNECTED",he[he.SIGNAL_CONNECTED=32791]="SIGNAL_CONNECTED",he[he.TRANSPORT_UPLINK_CONNECTED=32792]="TRANSPORT_UPLINK_CONNECTED",he[he.TRANSPORT_DOWNLINK_CONNECTED=32793]="TRANSPORT_DOWNLINK_CONNECTED",he[he.SIGNAl_RECONNECTING=32794]="SIGNAl_RECONNECTING",he[he.SIGNAL_RECONNECT_SUCCESS=32795]="SIGNAL_RECONNECT_SUCCESS",he[he.SIGNAL_RECONNECT_FAIL=32796]="SIGNAL_RECONNECT_FAIL",he[he.TRANSPORT_UPLINK_RECONNECTING=32797]="TRANSPORT_UPLINK_RECONNECTING",he[he.TRANSPORT_UPLINK_RECONNECT_SUCCESS=32798]="TRANSPORT_UPLINK_RECONNECT_SUCCESS",he[he.TRANSPORT_UPLINK_RECONNECT_FAIL=32799]="TRANSPORT_UPLINK_RECONNECT_FAIL",he[he.TRANSPORT_DOWNLINK_RECONNECTING=32800]="TRANSPORT_DOWNLINK_RECONNECTING",he[he.TRANSPORT_DOWNLINK_RECONNECT_SUCCESS=32801]="TRANSPORT_DOWNLINK_RECONNECT_SUCCESS",he[he.TRANSPORT_DOWNLINK_RECONNECT_FAIL=32802]="TRANSPORT_DOWNLINK_RECONNECT_FAIL",he[he.SUBSCRIBE_SMALL_VIDEO=32803]="SUBSCRIBE_SMALL_VIDEO",he[he.UNSUBSCRIBE_SMALL_VIDEO=32804]="UNSUBSCRIBE_SMALL_VIDEO",he[he.PUBLISH_AUX=32805]="PUBLISH_AUX",he[he.UNPUBLISH_AUX=32806]="UNPUBLISH_AUX",he[he.DEVICE_CAPTURE=2003]="DEVICE_CAPTURE",he[he.VIDEO_ENCODER=4004]="VIDEO_ENCODER",he[he.VIDEO_DECODER=4005]="VIDEO_DECODER",he),nE=(A=>(A[A.UNKNOWN=0]="UNKNOWN",A[A.EXCELLENT=1]="EXCELLENT",A[A.GOOD=2]="GOOD",A[A.POOR=3]="POOR",A[A.BAD=4]="BAD",A[A.VERY_BAD=5]="VERY_BAD",A[A.DISCONNECTED=6]="DISCONNECTED",A))(nE||{}),Kl=(A=>(A[A.MANUAL=0]="MANUAL",A[A.AUTO_AUDIO=1]="AUTO_AUDIO",A[A.AUTO_VIDEO=2]="AUTO_VIDEO",A[A.AUTO_ALL=3]="AUTO_ALL",A))(Kl||{}),ek=(A=>(A.user="user",A.environment="environment",A))(ek||{}),b0=(A=>(A[A.ELEMENT=0]="ELEMENT",A[A.CANVAS_FROM_ELEMENT=1]="CANVAS_FROM_ELEMENT",A[A.CANVAS_WITHOUT_ELEMENT=2]="CANVAS_WITHOUT_ELEMENT",A))(b0||{}),k0=(A=>(A[A.ELEMENT=0]="ELEMENT",A[A.CONTEXT=1]="CONTEXT",A))(k0||{}),Qg=(A=>(A.BANNED="banned",A.KICK="kick",A.USER_TIME_OUT="user_time_out",A.ROOM_DISBAND="room_disband",A))(Qg||{}),tk=(A=>(A[A.USER_EXIT_REASON_TC_USER_EXIT_NORMAL=0]="USER_EXIT_REASON_TC_USER_EXIT_NORMAL",A[A.USER_EXIT_REASON_TC_USER_EXIT_TIMEOUT=1]="USER_EXIT_REASON_TC_USER_EXIT_TIMEOUT",A[A.USER_EXIT_REASON_TC_USER_EXIT_KICKED=2]="USER_EXIT_REASON_TC_USER_EXIT_KICKED",A[A.USER_EXIT_REASON_TC_USER_EXIT_CHANGED=3]="USER_EXIT_REASON_TC_USER_EXIT_CHANGED",A[A.USER_KICK_OUT_CODE_BUSINESS_USER=4]="USER_KICK_OUT_CODE_BUSINESS_USER",A[A.USER_KICK_OUT_CODE_BUSINESS_ROOM=5]="USER_KICK_OUT_CODE_BUSINESS_ROOM",A[A.USER_KICK_OUT_CODE_SERVER_USER=6]="USER_KICK_OUT_CODE_SERVER_USER",A[A.USER_KICK_OUT_CODE_SERVER_ROOM=7]="USER_KICK_OUT_CODE_SERVER_ROOM",A[A.USER_KICK_SESS_EXSIT=8]="USER_KICK_SESS_EXSIT",A))(tk||{}),WE=1e8,Fp=(A=>(A[A.NORMAL=0]="NORMAL",A[A.FAR_FIELD_REDUCTION=1]="FAR_FIELD_REDUCTION",A))(Fp||{}),ik=class{constructor(){Y(this,"mediaType",0)}set audio(A){A?this.mediaType|=1:this.mediaType&=-2}get audio(){return!!(1&this.mediaType)}set video(A){A?this.mediaType|=4:this.mediaType&=-5}get video(){return!!(4&this.mediaType)}set auxiliary(A){A?this.mediaType|=2:this.mediaType&=-3}get auxiliary(){return!!(2&this.mediaType)}set smallVideo(A){A?this.mediaType|=8:this.mediaType&=-9}get smallVideo(){return!!(8&this.mediaType)}},ok=(A=>(A.String="string",A.Number="number",A.Boolean="boolean",A.Array="array",A.Object="object",A))(ok||{}),dl=(A=>(A.H264="h264",A.H265="h265",A.VP8="vp8",A.VP9="vp9",A.AV1="av1",A))(dl||{}),Op=(A=>(A[A.ENCRYPT_AND_DECRYPT=0]="ENCRYPT_AND_DECRYPT",A[A.DUMP=1]="DUMP",A[A.SEI=2]="SEI",A[A.ENCODE_AND_DECODE=3]="ENCODE_AND_DECODE",A))(Op||{}),aQ=(A=>(A[A.ENCRYPT_AND_DECRYPT=0]="ENCRYPT_AND_DECRYPT",A[A.NTP_TO_AUDIO_FRAME=1]="NTP_TO_AUDIO_FRAME",A[A.DUMP=2]="DUMP",A[A.ENCODE_AND_DECODE=3]="ENCODE_AND_DECODE",A))(aQ||{}),uM=(A=>(A.WebRTC="webrtc",A.WebCodecs="webcodecs",A.WebAssembly="webassembly",A))(uM||{}),EM=((Te=EM||{})[Te.SUCCESS=0]="SUCCESS",Te[Te.FAILED=1]="FAILED",Te[Te.WEBCODEC_INIT=2]="WEBCODEC_INIT",Te[Te.WEBCODEC_CONFIG_NOT_SUPPORT=3]="WEBCODEC_CONFIG_NOT_SUPPORT",Te[Te.WEBCODEC_DECODER_ERROR=4]="WEBCODEC_DECODER_ERROR",Te[Te.WEBCODEC_TRACK_MUTE=5]="WEBCODEC_TRACK_MUTE",Te[Te.WASM_INIT=6]="WASM_INIT",Te[Te.WASM_WEBGL_UNAVALIABLE=7]="WASM_WEBGL_UNAVALIABLE",Te[Te.WASM_DECODER_ERROR=8]="WASM_DECODER_ERROR",Te[Te.WASM_TRACK_MUTE=9]="WASM_TRACK_MUTE",Te[Te.TEST=10]="TEST",Te[Te.RENDER_2D_ERROR=11]="RENDER_2D_ERROR",Te),L0=(A=>(A.NONE="",A.DETAIL="detail",A.MOTION="motion",A.TEXT="text",A))(L0||{}),U0=(A=>(A.INTERVAL="interval",A.TIMEOUT="timeout",A.RAF="raf",A.RIC="ric",A.INTERVAL_IN_WORKER="intervalInWorker",A))(U0||{}),Pp=(A=>(A.CANVAS="canvas",A.API="api",A))(Pp||{}),gr=(A=>(A[A.NONE=0]="NONE",A[A.MICROPHONE=1]="MICROPHONE",A[A.CAMERA=2]="CAMERA",A[A.BOTH=3]="BOTH",A))(gr||{}),sk=(A=>(A.CAMERA="camera",A.MICROPHONE="microphone",A))(sk||{}),ry=(A=>(A[A.none=0]="none",A[A.horizontal=1]="horizontal",A[A.vertical=2]="vertical",A))(ry||{}),So={AVOID_REPEATED_CALL:"AVOID_REPEATED_CALL",INVALID_PARAMETER_REQUIRED:"INVALID_PARAMETER_REQUIRED",INVALID_PARAMETER_TYPE:"INVALID_PARAMETER_TYPE",INVALID_PARAMETER_EMPTY:"INVALID_PARAMETER_EMPTY",INVALID_PARAMETER_INSTANCE:"INVALID_PARAMETER_INSTANCE",INVALID_PARAMETER_RANGE:"INVALID_PARAMETER_RANGE",INVALID_PARAMETER_MIN:"INVALID_PARAMETER_MIN",INVALID_PARAMETER_MAX:"INVALID_PARAMETER_MAX",INVALID_PARAMETER_STREAMTYPE:"INVALID_PARAMETER_STREAMTYPE",API_CALL_TIMEOUT:"API_CALL_TIMEOUT",SIGNAL_CHANNEL_RECONNECTION_FAILED:"SIGNAL_CHANNEL_RECONNECTION_FAILED",SIGNAL_CHANNEL_SETUP_FAILED:"SIGNAL_CHANNEL_SETUP_FAILED",ERROR_MESSAGE:"ERROR_MESSAGE",EXCHANGE_SDP_TIMEOUT:"EXCHANGE_SDP_TIMEOUT",DOWNLINK_RECONNECTION_FAILED:"DOWNLINK_RECONNECTION_FAILED",EXCHANGE_SDP_FAILED:"EXCHANGE_SDP_FAILED",UPDATE_OFFER_TIMEOUT:"UPDATE_OFFER_TIMEOUT",UPLINK_RECONNECTION_FAILED:"UPLINK_RECONNECTION_FAILED",INVALID_RECORDID:"INVALID_RECORDID",INVALID_PURE_AUDIO:"INVALID_PURE_AUDIO",INVALID_STREAMID:"INVALID_STREAMID",INVALID_USER_DEFINE_RECORDID:"INVALID_USER_DEFINE_RECORDID",INVALID_USER_DEFINE_PUSH_ARGS:"INVALID_USER_DEFINE_PUSH_ARGS",INVALID_PROXY:"INVALID_PROXY",INVALID_JOIN:"INVALID_JOIN",INVALID_ROOMID_STRING:"INVALID_ROOMID_STRING",INVALID_ROOMID_INTEGER:"INVALID_ROOMID_INTEGER",INVALID_SIGNAL_CHANNEL:"INVALID_SIGNAL_CHANNEL",JOIN_ROOM_TIMEOUT:"JOIN_ROOM_TIMEOUT",JOIN_ROOM_FAILED:"JOIN_ROOM_FAILED",REJOIN_ROOM_FAILED:"REJOIN_ROOM_FAILED",INVALID_DESTROY:"INVALID_DESTROY",INVALID_PUBLISH:"INVALID_PUBLISH",INVALID_UNPUBLISH:"INVALID_UNPUBLISH",INVALID_AUDIENCE:"INVALID_AUDIENCE",INVALID_INITIALIZE:"INVALID_INITIALIZE",INVALID_DUPLICATE_PUBLISHING:"INVALID_DUPLICATE_PUBLISHING",INVALID_SUBSCRIBE_UNDEFINED:"INVALID_SUBSCRIBE_UNDEFINED",INVALID_SUBSCRIBE_LOCAL:"INVALID_SUBSCRIBE_LOCAL",INVALID_REMOTE_STREAM:"INVALID_REMOTE_STREAM",SUBSCRIBE_FAILED:"SUBSCRIBE_FAILED",INVALID_ROLE:"INVALID_ROLE",INVALID_PARAMETER_SWITCH_ROLE:"INVALID_PARAMETER_SWITCH_ROLE",INVALID_OPERATION_SWITCH_ROLE:"INVALID_OPERATION_SWITCH_ROLE",SWITCH_ROLE_TIMEOUT:"SWITCH_ROLE_TIMEOUT",SWITCH_ROLE_FAILED:"SWITCH_ROLE_FAILED",CLIENT_BANNED:"CLIENT_BANNED",INVALID_OPERATION_START_PUBLISH_CDN:"INVALID_OPERATION_START_PUBLISH_CDN",INVALID_OPERATION_STOP_PUBLISH_CDN:"INVALID_OPERATION_STOP_PUBLISH_CDN",INVALID_STREAM_ID:"INVALID_STREAM_ID",START_PUBLISH_CDN_FAILED:"START_PUBLISH_CDN_FAILED",STOP_PUBLISH_CDN_FAILED:"STOP_PUBLISH_CDN_FAILED",START_MIX_TRANSCODE:"START_MIX_TRANSCODE",STOP_MIX_TRANSCODE:"STOP_MIX_TRANSCODE",INVALID_AUDIO_VOLUME:"INVALID_AUDIO_VOLUME",ENABLE_SMALL_STREAM_PUBLISHED:"ENABLE_SMALL_STREAM_PUBLISHED",DISABLE_SMALL_STREAM_PUBLISHED:"DISABLE_SMALL_STREAM_PUBLISHED",NOT_SUPPORTED_SMALL_STREAM:"NOT_SUPPORTED_SMALL_STREAM",INVALID_SMALL_STREAM_PROFILE:"INVALID_SMALL_STREAM_PROFILE",INVALID_PARAMETER_REMOTE_STREAM:"INVALID_PARAMETER_REMOTE_STREAM",INVALID_OPERATION_CHANGE_SMALL:"INVALID_OPERATION_CHANGE_SMALL",REMOTE_NOT_PUBLISH_SMALL_STREAM:"REMOTE_NOT_PUBLISH_SMALL_STREAM",INVALID_SWITCH_DEVICE:"INVALID_SWITCH_DEVICE",INVALID_SWITCH_DEVICE_PUBLISHING:"INVALID_SWITCH_DEVICE_PUBLISHING",INVALID_REPLACE_TRACK:"INVALID_REPLACE_TRACK",INVALID_INITIALIZE_LOCAL_STREAM:"INVALID_INITIALIZE_LOCAL_STREAM",INVALID_ADD_TRACK_REPETITIVE:"INVALID_ADD_TRACK_REPETITIVE",INVALID_ADD_TRACK_REMOVING:"INVALID_ADD_TRACK_REMOVING",INVALID_ADD_TRACK_PUBLISHING:"INVALID_ADD_TRACK_PUBLISHING",INVALID_STREAM_INITIALIZED:"INVALID_STREAM_INITIALIZED",INVALID_ADD_TRACK_NUMBER:"INVALID_ADD_TRACK_NUMBER",INVALID_REMOVE_AUDIO_TRACK:"INVALID_REMOVE_AUDIO_TRACK",INVALID_REMOVE_AUDIO_ADDING:"INVALID_REMOVE_AUDIO_ADDING",INVALID_REMOVE_AUDIO_ON:"INVALID_REMOVE_AUDIO_ON",INVALID_REMOVE_TRACK_PUBLISHING:"INVALID_REMOVE_TRACK_PUBLISHING",INVALID_REMOVE_TRACK_NOT_TRACK:"INVALID_REMOVE_TRACK_NOT_TRACK",INVALID_REMOVE_TRACK_NUMBER:"INVALID_REMOVE_TRACK_NUMBER",INVALID_REPLACE_TRACK_NO_TRACK:"INVALID_REPLACE_TRACK_NO_TRACK",REPEAT_JOIN:"REPEAT_JOIN",CLIENT_DESTROYED:"CLIENT_DESTROYED",NOT_BUG_PACKAGE:"NOT_BUG_PACKAGE",START_MIX_TRANSCODE_FAILED:"START_MIX_TRANSCODE_FAILED",STOP_MIX_TRANSCODE_FAILED:"STOP_MIX_TRANSCODE_FAILED",MIX_TRANSCODE_NOT_STARTED:"MIX_TRANSCODE_NOT_STARTED",CANNOT_LESS_THAN_ZERO:"CANNOT_LESS_THAN_ZERO",MIX_PARAMS_VIDEO_FRAMERATE:"MIX_PARAMS_VIDEO_FRAMERATE",MIX_PARAMS_VIDEO_GOP:"MIX_PARAMS_VIDEO_GOP",MIX_PARAMS_AUDIO_BITRATE:"MIX_PARAMS_AUDIO_BITRATE",MIX_PARAMS_USER_Z_ORDER:"MIX_PARAMS_USER_Z_ORDER",MIX_PARAMS_NOT_SELF:"MIX_PARAMS_NOT_SELF",MIX_PARAMS_USER_STREAM:"MIX_PARAMS_USER_STREAM",INVALID_PLAY:"INVALID_PLAY",INVALID_ELEMENT_ID:"INVALID_ELEMENT_ID",INVALID_ELEMENT_ID_TYPE:"INVALID_ELEMENT_ID_TYPE",PLAY_FAILED:"PLAY_FAILED",INVALID_USERID:"INVALID_USERID",INVALID_CREATE_STREAM_SOURCE:"INVALID_CREATE_STREAM_SOURCE",INVALID_CREATE_STREAM_SCREEN:"INVALID_CREATE_STREAM_SCREEN",INVALID_CREATE_STREAM_AUDIO:"INVALID_CREATE_STREAM_AUDIO",INVALID_CREATE_STREAM_SCREEN_AUDIO:"INVALID_CREATE_STREAM_SCREEN_AUDIO",NOT_SUPPORTED_HTTP:"NOT_SUPPORTED_HTTP",NOT_SUPPORTED_WEBRTC:"NOT_SUPPORTED_WEBRTC",NOT_SUPPORTED_PROFILE:"NOT_SUPPORTED_PROFILE",NOT_SUPPORTED_MEDIA:"NOT_SUPPORTED_MEDIA",NOT_SUPPORTED_H264ENCODE:"NOT_SUPPORTED_H264ENCODE",NOT_SUPPORTED_H264DECODE:"NOT_SUPPORTED_H264DECODE",NOT_SUPPORTED_TRACK:"NOT_SUPPORTED_TRACK",NOT_SUPPORTED_SWITCH_DEVICE:"NOT_SUPPORTED_SWITCH_DEVICE",NOT_SUPPORTED_CAPTURE:"NOT_SUPPORTED_CAPTURE",NOT_SUPPORTED_AUX:"NOT_SUPPORTED_AUX",MICROPHONE_NOT_FOUND:"MICROPHONE_NOT_FOUND",CAMERA_NOT_FOUND:"CAMERA_NOT_FOUND",SIGNAL_RESPONSE_FAILED:"SIGNAL_RESPONSE_FAILED",CATCH_HANDLER_ERROR:"CATCH_HANDLER_ERROR",API_NOT_EXIST:"API_NOT_EXIST",CONNECTION_CLOSED:"CONNECTION_CLOSED",SUBSCRIBE_ALL_FALSE:"SUBSCRIBE_ALL_FALSE",SEI_NOT_SUPPORT:"SEI_NOT_SUPPORT",SEI_DISABLED:"SEI_DISABLED",SEI_BEFORE_PUBLISH:"SEI_BEFORE_PUBLISH",SEI_NOT_VIDEO:"SEI_NOT_VIDEO",CALL_FREQUENCY_LIMIT:"CALL_FREQUENCY_LIMIT",CONNECTION_ABORTED:"CONNECTION_ABORTED",API_CALL_ABORTED:"API_CALL_ABORTED",DUPLICATE_AUX:"DUPLICATE_AUX",SWITCH_PLAYBACK_QUALITY_TIMEOUT:"SWITCH_PLAYBACK_QUALITY_TIMEOUT"},cc={AVOID_REPEATED_CALL:A=>"previous ".concat(A.name,"() is ongoing, please avoid repeated calls."),INVALID_PARAMETER_REQUIRED(A){let{key:e,rule:o,fnName:a,value:c}=A;return"'".concat(e||o.name,"' is a required param when calling ").concat(a,"(), received: ").concat(c,".")},INVALID_PARAMETER_TYPE(A){let{key:e,rule:o,fnName:a,value:c}=A,d="".concat(e||o.name),C="";return C=Array.isArray(o.type)?o.type.join("|"):o.type,"'".concat(d,"' must be type of ").concat(C," when calling ").concat(a,"(), received type: ").concat(Cg(c),".")},INVALID_PARAMETER_EMPTY(A){let{key:e,rule:o,fnName:a,value:c}=A;return"'".concat(e||o.name,"' cannot be '").concat(c,"' when calling ").concat(a,"().")},INVALID_PARAMETER_INSTANCE(A){let{key:e,rule:o,fnName:a,value:c}=A,d="".concat(e||o.name),C="".concat(o.instanceOf.name||o.instanceOf);return"'".concat(d,"' must be instanceof ").concat(C," when calling ").concat(a,"(), received type: ").concat(Cg(c),".")},INVALID_PARAMETER_RANGE(A){let{key:e,rule:o,fnName:a,value:c}=A;return"'".concat(e||o.name,"' must be one of ").concat(o.values.join("|")," when calling ").concat(a,"(), received: ").concat(c,".")},INVALID_PARAMETER_MIN(A){let{key:e,rule:o,fnName:a,value:c}=A;return"the min value of ".concat(e||o.name," is ").concat(o.min,", received: ").concat(c,".")},INVALID_PARAMETER_MAX(A){let{key:e,rule:o,fnName:a,value:c}=A;return"the max value of ".concat(e||o.name," is ").concat(o.max,", received: ").concat(c,".")},API_CALL_TIMEOUT:A=>"".concat(A.commandDesc||A.command," timeout observed."),SIGNAL_CHANNEL_RECONNECTION_FAILED:"signal channel reconnection failed, please check your network.",SIGNAL_CHANNEL_SETUP_FAILED:A=>"SignalChannel setup failure: (errorCode: ".concat(A.errorCode,", errorMsg: ").concat(A.errorMsg," })."),ERROR_MESSAGE(A){let e="".concat(A.type," failed");return A.message&&(e="".concat(e,": ").concat(A.message,".")),e},EXCHANGE_SDP_TIMEOUT:"exchange sdp timeout.",DOWNLINK_RECONNECTION_FAILED:"downlink reconnection failed, please check your network and re-join room.",EXCHANGE_SDP_FAILED:A=>"exchange sdp failed ".concat(A.errMsg,"."),UPDATE_OFFER_TIMEOUT:"update offer timeout observed.",UPLINK_RECONNECTION_FAILED:"uplink reconnection failed, please check your network and publish again.",INVALID_RECORDID:"recordId must be an integer number.",INVALID_PURE_AUDIO:"pureAudioPushMode must be 1 or 2.",INVALID_STREAMID:"streamId must be a sting literal within 64 bytes, and not be empty.",INVALID_USER_DEFINE_RECORDID:"userDefineRecordId must be a sting literal contains (a-zA-Z),(0-9), underline and hyphen, within 64 bytes, and not be empty.",INVALID_USER_DEFINE_PUSH_ARGS:"userDefinePushArgs must be a sting literal within 256 bytes, and not be empty.",INVALID_PROXY:'proxy server url must start with "wss://".',INVALID_JOIN:"duplicate join() called.",INVALID_ROOMID_STRING:A=>"'".concat(A,"' must be validate string when useStringRoomId is true."),INVALID_ROOMID_INTEGER:A=>"'".concat(A,"' must be an integer between [1, 4294967294] when useStringRoomId is false."),INVALID_SIGNAL_CHANNEL:"SignalChannel is not ready yet.",JOIN_ROOM_TIMEOUT:"join room timeout.",JOIN_ROOM_FAILED(A){let{error:e,code:o}=A;return"Failed to join room - ".concat(e," code: ").concat(o)},REJOIN_ROOM_FAILED:A=>"reJoin room: ".concat(A.roomId," failed, please check your network."),INVALID_DESTROY:"please call leave() before destroy().",INVALID_PUBLISH:"please call join() before publish().",INVALID_UNPUBLISH:"stream has not been published yet.",INVALID_AUDIENCE:'no permission to publish() under live/audience, please call switchRole("anchor") firstly before publish().',INVALID_INITIALIZE:"cannot publish stream because stream is not initialized, is switching device, or has been closed.",INVALID_DUPLICATE_PUBLISHING:A=>"duplicate ".concat(A," stream publishing, please unpublish your prev ").concat(A," stream and then re-publish."),INVALID_SUBSCRIBE_UNDEFINED:"stream is undefined or null.",INVALID_SUBSCRIBE_LOCAL:"stream cannot be LocalStream.",INVALID_REMOTE_STREAM:"remoteStream does not exist because it has been unpublished by remote peer.",SUBSCRIBE_FAILED(A){let{message:e,userId:o,streamType:a}=A;return"failed to subscribe ".concat(o," ").concat(a," stream, reason: ").concat(e,".")},INVALID_ROLE:"switchRole can only be called in live mode.",INVALID_PARAMETER_SWITCH_ROLE:"role could only be set to a value as anchor or audience.",INVALID_OPERATION_SWITCH_ROLE:"please call join() before switchRole().",SWITCH_ROLE_TIMEOUT:"switchRole timeout.",SWITCH_ROLE_FAILED:A=>"switchRole failed, errCode: ".concat(A.code," errMsg: ").concat(A.message,"."),CLIENT_BANNED:A=>"client was banned because of ".concat(A.message,"."),INVALID_OPERATION_START_PUBLISH_CDN:"please call startPublishCDNStream() after join room and publish the local stream.",INVALID_OPERATION_STOP_PUBLISH_CDN:"please call startPublishCDNStream() before stopPublishCDNStream().",START_PUBLISH_CDN_FAILED:A=>"startPublishCDNStream failed, errMsg: ".concat(A.message,"."),STOP_PUBLISH_CDN_FAILED:A=>"stopPublishCDNStream failed, errMsg: ".concat(A.message,"."),INVALID_STREAM_ID:A=>"'".concat(A,"' can only consist of uppercase and lowercase english letters (a-zA-Z), numbers (0-9), hyphens and underscores."),START_MIX_TRANSCODE:"please call startMixTranscode() after join().",STOP_MIX_TRANSCODE:"please call stopMixTranscode() after startMixTranscode().",INVALID_AUDIO_VOLUME:"interval must be a number.",ENABLE_SMALL_STREAM_PUBLISHED:"Cannot enable small stream after localStream published.",DISABLE_SMALL_STREAM_PUBLISHED:"Cannot disable small stream after localStream published.",NOT_SUPPORTED_SMALL_STREAM:"your browser does not support opening small stream.",INVALID_SMALL_STREAM_PROFILE:"small stream profile is invalid.",INVALID_PARAMETER_REMOTE_STREAM:"remoteStream is invalid.",INVALID_OPERATION_CHANGE_SMALL:"cannot switch to the small stream without subscribing to the video of remoteStream.",REMOTE_NOT_PUBLISH_SMALL_STREAM:"remote peer does not publish small stream.",INVALID_SWITCH_DEVICE:"cannot switch device on current stream.",INVALID_SWITCH_DEVICE_PUBLISHING:"cannot switch device when publishing localStream.",INVALID_REPLACE_TRACK:"cannot replace track when publishing localStream.",INVALID_INITIALIZE_LOCAL_STREAM:"local stream has not initialized yet.",INVALID_ADD_TRACK_REPETITIVE:"previous addTrack is ongoing, please avoid repetitive execution.",INVALID_ADD_TRACK_REMOVING:"cannot add track when a track is removing.",INVALID_ADD_TRACK_PUBLISHING:"cannot add track when publishing localStream.",INVALID_STREAM_INITIALIZED:"your local stream haven't been initialized yet.",INVALID_ADD_TRACK_NUMBER:"a Stream has at most one audio track and one video track.",INVALID_REMOVE_AUDIO_TRACK:"remove audio track is not supported on your browser.",INVALID_REMOVE_AUDIO_ADDING:"cannot remove track when a track is adding.",INVALID_REMOVE_AUDIO_ON:"previous removeTrack is ongoing, please avoid repetitive execution.",INVALID_REMOVE_TRACK_PUBLISHING:"cannot remove track when publishing localStream.",INVALID_REMOVE_TRACK_NOT_TRACK:"localStream has not this track.",INVALID_REMOVE_TRACK_NUMBER:"remove the only video track is not supported, please use replaceTrack or muteVideo.",INVALID_REPLACE_TRACK_NO_TRACK:A=>"cannot replace ".concat(A.kind," track because stream has not ").concat(A.kind," track"),NOT_BUG_PACKAGE:"You need to buy packages, refer to tencent console.",START_MIX_TRANSCODE_FAILED:A=>"startMixTranscode failed, errMsg: ".concat(A.message,"."),STOP_MIX_TRANSCODE_FAILED:A=>"stopMixTranscode failed, errMsg: ".concat(A.message,"."),MIX_TRANSCODE_NOT_STARTED:"mixTranscode has not been started.",CANNOT_LESS_THAN_ZERO(A){let{key:e,rule:o,fnName:a,value:c}=A;return"'".concat(e||o.name,"' cannot be less than 0 when calling ").concat(a,"().")},MIX_PARAMS_VIDEO_FRAMERATE:"'config.videoFramerate' should be an integer between 0 and 30, excluding 0.",MIX_PARAMS_VIDEO_GOP:"'config.videoGOP' should be an integer between 1 and 8.",MIX_PARAMS_AUDIO_BITRATE:"'config.audioBitrate' should be an integer between 32 and 192.",MIX_PARAMS_USER_Z_ORDER:A=>"'".concat(A,"' is required and must be between 1 and 15."),MIX_PARAMS_NOT_SELF:"'config.mixUsers' must contain self.",MIX_PARAMS_USER_STREAM:"'config.videoWidth' and 'config.videoHeight' of output stream should be contain all mix stream.",INVALID_PLAY:"duplicate play() call observed, please stop() firstly.",INVALID_ELEMENT_ID:A=>{let{key:e,fnName:o}=A;return"'".concat(e,"' is not found in the document object when calling ").concat(o,"().")},INVALID_ELEMENT_ID_TYPE:A=>{let{key:e,fnName:o,type:a}=A;return"the element corresponding to '".concat(e,"' must be instanceof HTMLElement when calling ").concat(o,"(), received: ").concat(a,".")},PLAY_FAILED:A=>"".concat(A.media," play failed, browser exception: ").concat(A.error.toString()),INVALID_USERID:"userId cannot be all spaces.",INVALID_CREATE_STREAM_SOURCE:"LocalStream must be created by createStream() with either audio/video or audioSource/videoSource, but can not be mixed with audio/video and audioSource/videoSource.",INVALID_CREATE_STREAM_SCREEN:"screen/video cannot be both true.",INVALID_CREATE_STREAM_AUDIO:"audio/screenAudio cannot be both true.",INVALID_CREATE_STREAM_SCREEN_AUDIO:"when screen is true, screenAudio can be configured.",NOT_SUPPORTED_HTTP:"http protocol does not support the ability to capture microphone, camera and screen. please use https to deploy your page.",NOT_SUPPORTED_WEBRTC:"your browser or environment does not support full WebRTC capabilities.",NOT_SUPPORTED_PROFILE:"your browser does not support setVideoProfile.",NOT_SUPPORTED_MEDIA:"your browser or environment does not support navigator.mediaDevices.",NOT_SUPPORTED_H264ENCODE:"your device does not support H.264 encoding.",NOT_SUPPORTED_H264DECODE:"your device does not support H.264 decoding.",NOT_SUPPORTED_TRACK:A=>"".concat(A,"Track is not supported on your browser."),NOT_SUPPORTED_SWITCH_DEVICE:"switchDevice is not supported on your browser.",NOT_SUPPORTED_CAPTURE:"Your browser or environment does not support screen sharing, please check whether the browser version.",MICROPHONE_NOT_FOUND:"no microphone detected, please check your microphone.",CAMERA_NOT_FOUND:"no camera detected, please check your camera.",SIGNAL_RESPONSE_FAILED:A=>"".concat(A.signalResponse," failed, response code is ").concat(A.code," , errMsg: ").concat(A.message,"."),CATCH_HANDLER_ERROR(A){let{name:e,event:o}=A;return"an error was caught in ".concat(e,".on('").concat(o,"', handler), please check your code in 'handler'.")},API_NOT_EXIST(A){let{name:e}=A;return"experimental api ".concat(e," does not exist.")},REPEAT_JOIN:A=>"please avoid repeated join.",CONNECTION_CLOSED:"remoteStream has been unsubscribed or unpublished by remote user.",SUBSCRIBE_ALL_FALSE:"cannot subscribe when both audio & video are false, use client.unsubscribe() instead",CLIENT_DESTROYED(A){let{funName:e}=A;return"failed to call ".concat(e,"() because client was destroyed.")},SEI_NOT_SUPPORT:A=>"not support to sendSEIMessage".concat(A===!1?" without using h264 codec":""),SEI_DISABLED:"SEI is disabled",SEI_BEFORE_PUBLISH:"please call sendSEIMessage() after publish() success",SEI_NOT_VIDEO:"cannot send sei when localStream has not video.",CALL_FREQUENCY_LIMIT:A=>{let{isSize:e,name:o,timesInSecond:a,maxSizeInSecond:c}=A;return"api ".concat(o," call ").concat(e?"size":"times"," is over ").concat(e?"".concat(c," bytes"):a," in a second.")},CONNECTION_ABORTED:A=>"connection aborted due to: ".concat(A),API_CALL_ABORTED(A){let e;return e=A.message.includes("REMOTE_STREAM_NOT_EXIST")?"Subscribe ".concat(A.userId," ").concat(A.streamType," stream aborted, reason: remote user ").concat(A.userId," unpublished stream."):"API aborted, reason: ".concat(A.message),e},DUPLICATE_AUX:"only one auxiliary stream can be published in a room.",NOT_SUPPORTED_AUX:"publish auxiliary stream is not supported on your browser.",INVALID_PARAMETER_STREAMTYPE:A=>"'streamType' is required when 'userId' is not '*', calling ".concat(A,"()"),SWITCH_PLAYBACK_QUALITY_TIMEOUT:A=>"switchPlaybackQuality timeout: waiting for first frame of user ".concat(A.userId,".")},i2=(A,e)=>e?"".concat(Vh,"/").concat(A,"/").concat(e):"".concat(Vh,"/").concat(A,"/index.html"),nk=()=>{if(window.TRTC_ERROR_INFO&&window.TRTC_ERROR_LINK)return{TRTC_ERROR_INFO:window.TRTC_ERROR_INFO,TRTC_ERROR_LINK:window.TRTC_ERROR_LINK};let A=localStorage==null?void 0:localStorage.getItem(NS);if(A){A=JSON.parse(A);let e=document.createElement("script");e.type="text/javascript",e.text=A.message,document.body.appendChild(e);let o=window.TRTC_ERROR_INFO,a=window.TRTC_ERROR_LINK;return document.body.removeChild(e),{TRTC_ERROR_INFO:o,TRTC_ERROR_LINK:a}}return{}};function Zo(A){let{key:e,data:o,link:a,addDocLink:c=!0}=A,d="",C="",y="";va(cc[e])?d=cc[e](o):Yn(cc[e])&&(d=cc[e]);let{TRTC_ERROR_INFO:S,TRTC_ERROR_LINK:b}=nk();a?y="".concat(a.className,".html#").concat(a.fnName):b&&b[e]&&(va(b[e])?y=b[e](o):Yn(b[e])&&(y=b[e]));let V=d;return Yd()&&(S&&S[e]&&(va(S[e])?C=S[e](o):Yn(S[e])&&(C=S[e])),C&&(V=c?"".concat(C,` -请查看文档: `).concat(i2("zh-cn",y),` +`}}),db=Vh(A=>{var e=yx(),o=Dx();A.write=o,A.parse=e.parse,A.parseParams=e.parseParams,A.parseFmtpConfig=e.parseFmtpConfig,A.parsePayloads=e.parsePayloads,A.parseRemoteCandidates=e.parseRemoteCandidates,A.parseImageAttributes=e.parseImageAttributes,A.parseSimulcastStreamList=e.parseSimulcastStreamList}),AK=gc(ql()),HB=((go=HB||{})[go.INVALID_PARAMETER=4096]="INVALID_PARAMETER",go[go.INVALID_OPERATION=4097]="INVALID_OPERATION",go[go.NOT_SUPPORTED=4098]="NOT_SUPPORTED",go[go.DEVICE_NOT_FOUND=4099]="DEVICE_NOT_FOUND",go[go.INITIALIZE_FAILED=4100]="INITIALIZE_FAILED",go[go.SIGNAL_CHANNEL_SETUP_FAILED=16385]="SIGNAL_CHANNEL_SETUP_FAILED",go[go.SIGNAL_CHANNEL_ERROR=16386]="SIGNAL_CHANNEL_ERROR",go[go.ICE_TRANSPORT_ERROR=16387]="ICE_TRANSPORT_ERROR",go[go.JOIN_ROOM_FAILED=16388]="JOIN_ROOM_FAILED",go[go.CREATE_OFFER_FAILED=16389]="CREATE_OFFER_FAILED",go[go.SIGNAL_CHANNEL_RECONNECTION_FAILED=16390]="SIGNAL_CHANNEL_RECONNECTION_FAILED",go[go.UPLINK_RECONNECTION_FAILED=16391]="UPLINK_RECONNECTION_FAILED",go[go.DOWNLINK_RECONNECTION_FAILED=16392]="DOWNLINK_RECONNECTION_FAILED",go[go.REMOTE_STREAM_NOT_EXIST=16400]="REMOTE_STREAM_NOT_EXIST",go[go.CLIENT_BANNED=16448]="CLIENT_BANNED",go[go.SERVER_TIMEOUT=16449]="SERVER_TIMEOUT",go[go.SUBSCRIPTION_TIMEOUT=16450]="SUBSCRIPTION_TIMEOUT",go[go.PLAY_NOT_ALLOWED=16451]="PLAY_NOT_ALLOWED",go[go.DEVICE_AUTO_RECOVER_FAILED=16452]="DEVICE_AUTO_RECOVER_FAILED",go[go.START_PUBLISH_CDN_FAILED=16453]="START_PUBLISH_CDN_FAILED",go[go.STOP_PUBLISH_CDN_FAILED=16454]="STOP_PUBLISH_CDN_FAILED",go[go.START_MIX_TRANSCODE_FAILED=16455]="START_MIX_TRANSCODE_FAILED",go[go.STOP_MIX_TRANSCODE_FAILED=16456]="STOP_MIX_TRANSCODE_FAILED",go[go.NOT_SUPPORTED_H264=16457]="NOT_SUPPORTED_H264",go[go.SWITCH_ROLE_FAILED=16458]="SWITCH_ROLE_FAILED",go[go.API_CALL_TIMEOUT=16459]="API_CALL_TIMEOUT",go[go.SCHEDULE_FAILED=16460]="SCHEDULE_FAILED",go[go.API_CALL_ABORTED=16461]="API_CALL_ABORTED",go[go.SPC_INITIALIZED_FAILED=16462]="SPC_INITIALIZED_FAILED",go[go.VIDEO_MANAGER_ERROR=16463]="VIDEO_MANAGER_ERROR",go[go.SWITCH_ROOM_FAILED=16464]="SWITCH_ROOM_FAILED",go[go.VIDEO_ENCODE_FAILED=16465]="VIDEO_ENCODE_FAILED",go[go.AUDIO_ENCODE_FAILED=16466]="AUDIO_ENCODE_FAILED",go[go.UNKNOWN=65535]="UNKNOWN",go),Et=HB,Sx=class extends Error{constructor(A){let{name:e="RtcError",message:o,code:a=Et.UNKNOWN,extraCode:c=0,constraint:d}=A,C="<".concat(function(S){for(let b in Et)if(Et[b]===S)return b;return"UNKNOWN"}(a)," 0x").concat(a.toString(16),">"),y="".concat(o).concat(d?" constraint: ".concat(d):"").concat(o!=null&&o.includes(C)?"":" ".concat(C));super(y),Y(this,"code"),Y(this,"extraCode"),Y(this,"message"),Y(this,"originMessage"),Y(this,"name"),Y(this,"constraint"),this.code=a,this.extraCode=c,this.name=e,this.message=y,this.constraint=d,this.originMessage=o}getCode(){return this.code}getExtraCode(){return this.extraCode}toString(){return this.originMessage}},si=Sx,Cb=0,Mx=!0,qB=function(A){Cb=A;let e=new Date;e.setTime(e.getTime()+A),QA[Mx?"info":"debug"]("baseTime from server: ".concat(e," offset: ").concat(A)),Mx=!1},vx=function(){return Cb},kf=function(){return Date.now()+Cb},Rx=function(){let A=new Date;return A.setTime(kf()),A.toLocaleString()},hb=function(A){let e=String(A.getMilliseconds());return"padStart"in String.prototype&&(e=e.toString().padStart(3,"0")),"".concat(A.toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/,"$1"),":").concat(e)},Jd={};Jh(Jd,{REPORT_TYPE:()=>M0,buildSSOPackage:()=>$B,bytes2ms:()=>Q0,calculateScaleResolutionDownNumber:()=>S0,concatArrayBuffers:()=>iM,convertObjectNumberToInt:()=>D0,copyProperties:()=>$x,deepClone:()=>Wf,deepCloneBasic:()=>zf,deepMerge:()=>jh,delay:()=>kC,fibonacci:()=>qf,formatedTime:()=>r2,getConstructorName:()=>XS,getContainerFromElement:()=>Pb,getEnv:()=>zx,getFirst16Bits:()=>g2,getInternalVersion:()=>s2,getLast16Bits:()=>v0,getLoggerUrl:()=>Jf,getMediaStreamTrackInfo:()=>Hb,getMuteStateFromFlag:()=>Rp,getNetworkType:()=>h0,getNumNetworkType:()=>Hf,getReconnectionTimeout:()=>vp,getStringByteLength:()=>y0,getTestSignalDomain:()=>Zx,getTurnServer:()=>n2,getUint32Version:()=>Yb,getValueType:()=>Cg,getViewListFromView:()=>eM,glog:()=>e2,ipv4ToUint32:()=>AM,isArray:()=>wa,isAudioWorkletSupported:()=>t2,isBoolean:()=>_r,isConstructor:()=>jf,isEmpty:()=>m0,isFunction:()=>Ra,isLangChinese:()=>Kd,isMediaStreamTrack:()=>Fb,isNumber:()=>bn,isObject:()=>WE,isOverseaSdkAppId:()=>qd,isPlainObject:()=>aE,isPortrait:()=>xb,isPromise:()=>Kf,isRemoteTrack:()=>Ob,isRotate90Or270:()=>XB,isSetSinkIdSupported:()=>i2,isString:()=>Yn,isUndefined:()=>Je,isVideoMixerOutputTrack:()=>wp,loadImage:()=>tM,loadVideo:()=>a2,ms2bytes:()=>A2,ms2samples:()=>p0,normalizeUrl:()=>Jb,performanceNow:()=>ko,promiseAny:()=>$S,samples2ms:()=>Ub,setNetworkTypeFromWebRTC:()=>B0,stringify:()=>Wd,stringifyIncludeValue:()=>f0,throttlePromise:()=>Vb});var _x={};Jh(_x,{ASR_ROBOT_FROM_TYPE:()=>l0,AUDIO_MUTE_BIT:()=>Ff,AUDIO_STAT_BIT:()=>VS,AUX_STAT_BIT:()=>YS,AUX_STREAM_MSID:()=>Ux,BACKEND_ENV:()=>Lf,BASE_DOC_URL:()=>Hh,BASE_HOST:()=>Nx,CAPABILITIES_KEYS:()=>wb,CLASS_NAME:()=>gK,CLOUD_CONSOLE_URL:()=>iK,CROSS_ROOM_BIT:()=>yb,DATA_CHANNEL_FROM_TYPE_BIT:()=>WB,DATA_FREEZE_TIMING:()=>vb,DOC_BILLING_CN:()=>e0,DOC_BILLING_OVERSEA:()=>pb,DOC_URL:()=>oK,DTLS_STATE_UNKNOWN:()=>qh,ENV_NAME:()=>KB,EXCHANGE_SDP_TIMEOUT:()=>Yx,IS_WORKER:()=>$w,IS_WORKLET:()=>A0,KIBANA_EVENT:()=>Ja,LOCAL_STREAM_PUBLISH_STATE:()=>Vx,LOGGER_CMD_TYPE:()=>GI,LOGGER_DOMAIN:()=>NI,LOGGER_DOMAIN_OVERSEA:()=>yp,LOG_LEVEL:()=>jB,LOG_LEVEL_NAME:()=>lK,MAIN_STREAM_MSID:()=>lu,MAX_RTT:()=>c0,MICROPHONE_COMMUNICATIONS:()=>cK,MICROPHONE_DEFAULT:()=>qS,MUTE_ALL_BIT:()=>Lx,NAME:()=>YA,NETWORK_TYPE:()=>t0,NOT_SUPPORTED_H264:()=>a0,PAUSED_RETRY_COUNT:()=>Mp,PEERCONNECTION_CONNECTING_TIMEOUT:()=>Rb,PEER_CONNECTION_STATE:()=>Eo,PEER_LEAVE_REASON:()=>qx,RECOVER_CAPTURE_INTERVAL:()=>jS,REMOTE_STREAM_TYPE_AUX:()=>Db,REMOTE_STREAM_TYPE_MAIN:()=>o0,RENDER_FREEZE_TIMING:()=>Jx,SCHEDULE_DOMAIN:()=>ZB,SCHEDULE_TIMEOUT:()=>Hx,SDP_SEMANTICS_PLAN_B:()=>r0,SDP_SEMANTICS_UNIFIED_PLAN:()=>HS,SECOND_HOST:()=>Gx,SIGNAL_PING_PONG_INTERVAL:()=>rE,SIGNAL_PING_TIMEOUT:()=>bx,SIGNAL_RECONNECTION_COUNT:()=>sK,SMALL_STAT_BIT:()=>fb,SPEAKER_DEFAULT:()=>g0,STORAGE_EXPIRES_TIME:()=>i0,STREAM_TYPE_BIG:()=>rK,STREAM_TYPE_SMALL:()=>aK,SUBSCRIBE_SMALL_RETRY_COUNT:()=>KS,SYNC_USER_LIST_INTERVAL:()=>nK,Scene:()=>Uf,THIRD_HOST:()=>tK,TRANSPORT_DIRECTION:()=>zn,TRTC_ERROR_ASSISTANCE:()=>OS,TRTC_QUALITY_BAD:()=>Of,TRTC_QUALITY_DISCONNECTED:()=>Px,TRTC_QUALITY_EXCELLENT:()=>s0,TRTC_QUALITY_GOOD:()=>zB,TRTC_QUALITY_POOR:()=>Fx,TRTC_QUALITY_UNKNOWN:()=>Sb,TRTC_QUALITY_VERY_BAD:()=>Ox,UPDATE_OFFER_TIMEOUT:()=>xx,VIDEO_MUTE_BIT:()=>JS,VIDEO_STAT_BIT:()=>xS,WEBGL_ATTRIBUTES:()=>_b,audioProfileMap:()=>Dp,defaultBigVideoProfile:()=>PS,defaultSmallVideoProfile:()=>kx,getRetryCount:()=>Pf,getScriptDir:()=>eK,innerVersion:()=>Xw,loggerProxy:()=>Qb,screenProfileMap:()=>mb,setLoggerProxy:()=>FS,setRetryCount:()=>n0,setVersion:()=>Tx,version:()=>Hd,videoProfileMap:()=>bC});var Xw="4.15.00.1600",Hd="5.0.0";function Tx(A){Hd=A;let[e,o,a]=A.split(".").map(c=>parseInt(c,10));Xw="".concat(e,".").concat(Math.min(15,o),".").concat(Math.min(15,a),".").concat(o.toString().padStart(2,"0")).concat(a.toString().padStart(2,"0"))}var Bb,nE,$w=typeof importScripts<"u",A0=typeof registerProcessor<"u",eK=()=>{let A=$w?self.location.href:document.currentScript.src;return A.substring(0,A.lastIndexOf("/")+1)},Qb="",FS=A=>Qb=A,Nx="web.sdk.qcloud.com",Gx="web.sdk.tencent.cn",tK="web.sdk.cloud.tencent.cn",iK="https://console.cloud.tencent.com/trtc",Hh="https://".concat(Nx,"/trtc/webrtc/doc"),oK="".concat(Hh,"/zh-cn/"),e0="https://cloud.tencent.com/document/product/647/85386",pb="https://trtc.io/document/56025",NI="https://yun.tim.qq.com",yp="https://apisgp.my-imcloud.com",OS="trtc_error_assistance",GI={LOG:"jssdk_log",EVENT:"jssdk_event",KEY_POINT:"jssdk_new_endreport",KV_STAT:"jssdk_key_metrics_report"},KB={QCLOUD:"qcloud",OLD_CLOUD_LADDER:"trtc",WEBRTC:"webrtc"},jB=((nE=jB||{})[nE.TRACE=0]="TRACE",nE[nE.DEBUG=1]="DEBUG",nE[nE.INFO=2]="INFO",nE[nE.WARN=3]="WARN",nE[nE.ERROR=4]="ERROR",nE[nE.NONE=5]="NONE",nE),bx=18e3,rE=2e3,t0={unknown:0,wifi:1,"4g":2,"3g":3,"2g":4,wired:5,"5g":6},i0=6048e5,Dp={standard:{sampleRate:48e3,channelCount:1,bitrate:40},"standard-stereo":{sampleRate:48e3,channelCount:2,bitrate:64},high:{sampleRate:48e3,channelCount:1,bitrate:128},"high-stereo":{sampleRate:48e3,channelCount:2,bitrate:192}},bC={"120p":{width:160,height:120,frameRate:15,bitrate:200},"120p_2":{width:160,height:120,frameRate:15,bitrate:100},"180p":{width:320,height:180,frameRate:15,bitrate:350},"180p_2":{width:320,height:180,frameRate:15,bitrate:150},"240p":{width:320,height:240,frameRate:15,bitrate:400},"240p_2":{width:320,height:240,frameRate:15,bitrate:200},"360p":{width:640,height:360,frameRate:15,bitrate:800},"360p_2":{width:640,height:360,frameRate:15,bitrate:400},"480p":{width:640,height:480,frameRate:15,bitrate:900},"480p_2":{width:640,height:480,frameRate:15,bitrate:500},"720p":{width:1280,height:720,frameRate:15,bitrate:1500},"1080p":{width:1920,height:1080,frameRate:15,bitrate:2e3},"1440p":{width:2560,height:1440,frameRate:30,bitrate:4860},"4K":{width:3840,height:2160,frameRate:30,bitrate:9e3}},PS=bC["480p_2"],kx=bC["120p_2"],mb={"480p":{width:640,height:480,frameRate:5,bitrate:900},"480p_2":{width:640,height:480,frameRate:30,bitrate:1e3},"720p":{width:1280,height:720,frameRate:5,bitrate:1200},"720p_2":{width:1280,height:720,frameRate:30,bitrate:3e3},"1080p":{width:1920,height:1080,frameRate:5,bitrate:1600},"1080p_2":{width:1920,height:1080,frameRate:30,bitrate:4e3}},YA={CANVAS:"canvas",AUDIO:"audio",VIDEO:"video",SCREEN:"screen",SMALL:"small",BIG:"big",AUXILIARY:"auxiliary",SMALL_VIDEO:"smallVideo",FACING_MODE_USER:"user",FACING_MODE_ENVIRONMENT:"environment",MUTE:"mute",UNMUTE:"unmute",ENDED:"ended",PLAYING:"playing",PAUSE:"pause",ERROR:"error",LOADSTART:"loadstart",LOADEDDATA:"loadeddata",LOADEDMETADATA:"loadedmetadata",AUDIO_INPUT:"audioinput",VIDEO_INPUT:"videoinput",DETAIL:"detail",TEXT:"text",MAIN:"main",BACKUP:"backup",BANNED:"banned",KICK:"kick",USER_TIME_OUT:"user_time_out",ROOM_DISBAND:"room_disband",SEI_MESSAGE:"sei-message",ADD:"add",REMOVE:"remove",REPLACE:"replace",TRACK:"track",SUBSCRIBE:"subscribe",UNSUBSCRIBE:"unsubscribe",TRANSCEIVER_DIRECTION_SENDONLY:"sendonly",TRANSCEIVER_DIRECTION_RECVONLY:"recvonly",ENTER_PICTURE_IN_PICTURE:"enterpictureinpicture",LEAVE_PICTURE_IN_PICTURE:"leavepictureinpicture",FULLSCREEN_CHANGE:"fullscreenchange",RESIZE:"resize",TIME_UPDATE:"timeupdate"},zn={INACTIVE:"inactive",SENDONLY:"sendonly",RECVONLY:"recvonly"},Lf={OLD_CLOUD_LADDER:"wss://trtc.rtc.qq.com",WEBRTC:"wss://webrtc.qq.com"},Uf=((Bb=Uf||{}).LIVE="live",Bb.RTC="rtc",Bb),xS=1,fb=2,YS=4,VS=8,Ff=64,JS=16,Lx=112,yb=128,WB=256,lu="5Y2wZK8nANNAoVw6dSAHVjNxrD1ObBM2kBPV",Ux="224d130c-7b5c-415b-aaa2-79c2eb5a6df2",o0=YA.MAIN,Db=YA.AUXILIARY,Sb=0,s0=1,zB=2,Fx=3,Of=4,Ox=5,Px=6,qh="unknown",Eo={NEW:"new",CONNECTING:"connecting",FAILED:"failed",CLOSED:"closed",DISCONNECTED:"disconnected",CONNECTED:"connected",COMPLETED:"completed"},Mb=1/0;function n0(A){Mb=A}function Pf(){return Mb}var Sp,sK=30,Ja={JOIN:"join",DELTA_JOIN:"delta-join",REJOIN:"rejoin",LEAVE:"leave",DELTA_LEAVE:"delta-leave",PUBLISH:"publish",DELTA_PUBLISH:"delta-publish",UNPUBLISH:"unpublish",SUBSCRIBE:"subscribe",UNSUBSCRIBE:"unsubscribe",UPLINK_CONNECTION:"uplink-connection",UPLINK_RECONNECTION:"uplink-reconnection",DOWNLINK_CONNECTION:"downlink-connection",DOWNLINK_RECONNECTION:"downlink-reconnection",ON_TRACK:"ontrack",ICE_CONNECTION_STATE:"iceConnectionState",LOCAL_STREAM_INITIALIZE:"stream-initialize",SIGNAL_CONNECTION:"websocketConnectionState",SIGNAL_RECONNECTION:"websocketReconnectionState",UPDATE_STREAM:"update-stream",RECOVER_LOCAL_AUDIO_TRACK:"recover-local-audio-track",RECOVER_LOCAL_VIDEO_TRACK:"recover-local-video-track",RECOVER_SUBSCRIPTION:"recover-subscription",START_MIX_TRANSCODE:"start-mix-transcode",STOP_MIX_TRANSCODE:"stop-mix-transcode",PLAYER_ERROR:"player-error",SCHEDULE:"schedule",LOAD_WORKLET:"load-worklet",VIDEO_FROZEN_COUNT:"videoFrozenCount",GET_USER_MEDIA_RETRY:"getUserMedia-retry",VIDEO_ENCODE_FAILED_DURING_CALL:"video-encode-failed-during-call",VIDEO_ENCODE_RESUME_DURING_CALL:"video-encode-resume-during-call",AUDIO_ENCODE_FAILED_DURING_CALL:"audio-encode-failed-during-call",AUDIO_ENCODE_RESUME_DURING_CALL:"audio-encode-resume-during-call",VIDEO_DECODE_FAILED_DURING_CALL:"video-decode-failed-during-call",VIDEO_DECODE_RESUME_DURING_CALL:"video-decode-resume-during-call",AUDIO_DECODE_FAILED_DURING_CALL:"audio-decode-failed-during-call",AUDIO_DECODE_RESUME_DURING_CALL:"audio-decode-resume-during-call",VIDEO_HARDWARE_DECODE_FAILED:"video-hardware-decode-failed",VIDEO_HARDWARE_DECODE_RESUME:"video-hardware-decode-resume"},nK=1e4,xx=1e4,Yx=1e4,HS="unified-plan",r0="plan-b",a0=1028,Vx=((Sp=Vx||{})[Sp.UNPUBLISH=-1]="UNPUBLISH",Sp[Sp.PUBLISHING=0]="PUBLISHING",Sp[Sp.PUBLISHED=1]="PUBLISHED",Sp),vb=500,Jx=1e3,rK=YA.BIG,aK=YA.SMALL,Rb=1e4,ZB={MAIN:"schedule.cloud-rtc.com",BACKUP:"schedule.cloud-rtc.net",MAIN_OVERSEA:"schedule.rtc-web.com",BACKUP_OVERSEA:"schedule.rtc-web.io",MAIN_OVERSEA_BACKUP:"intl-schedule.cloud-rtc.com"},Hx=2e3,gK={TRTC:"TRTC",CLIENT:"Client",LOCAL_STREAM:"LocalStream",REMOTE_STREAM:"RemoteStream",STREAM:"Stream"},Mp=5,qS="default",g0=qS,cK="communications",lK=Object.keys(jB),qx=["normal leave","timeout leave","kick","role change"],KS=10,jS=2e3,wb=["width","height","frameRate","facingMode","sampleRate","sampleSize","channelCount","deviceId","min","max"],c0=1e4,l0=14,_b={alpha:!0,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!0,powerPreference:"low-power"},Kx=function(A,e,o,a){return new(o||(o=Promise))(function(c,d){function C(b){try{S(a.next(b))}catch(V){d(V)}}function y(b){try{S(a.throw(b))}catch(V){d(V)}}function S(b){b.done?c(b.value):function(V){return V instanceof o?V:new o(function(J){J(V)})}(b.value).then(C,y)}S((a=a.apply(A,[])).next())})},I0=Symbol(32),u0=Symbol(16),Tb=Symbol(8),xf=class{constructor(A){this.g=A,this.consumed=0,A&&(this.need=A.next().value)}setG(A){this.g=A,this.demand(A.next().value,!0)}consume(){this.buffer&&this.consumed&&(this.buffer.copyWithin(0,this.consumed),this.buffer=this.buffer.subarray(0,this.buffer.length-this.consumed),this.consumed=0)}demand(A,e){return e&&this.consume(),this.need=A,this.flush()}read(A){return Kx(this,void 0,void 0,function*(){return this.lastReadPromise&&(yield this.lastReadPromise),this.lastReadPromise=new Promise((e,o)=>{var a;this.reject=o,this.resolve=c=>{delete this.lastReadPromise,delete this.resolve,delete this.need,e(c)},this.demand(A,!0)||(a=this.pull)===null||a===void 0||a.call(this,A)})})}readU32(){return this.read(I0)}readU16(){return this.read(u0)}readU8(){return this.read(Tb)}close(){var A;this.g&&this.g.return(),this.buffer&&this.buffer.subarray(0,0),(A=this.reject)===null||A===void 0||A.call(this,new Error("EOF")),delete this.lastReadPromise}flush(){if(!this.buffer||!this.need)return;let A=null,e=this.buffer.subarray(this.consumed),o=0,a=c=>e.length<(o=c);if(typeof this.need=="number"){if(a(this.need))return;A=e.subarray(0,o)}else if(this.need===I0){if(a(4))return;A=e[0]<<24|e[1]<<16|e[2]<<8|e[3]}else if(this.need===u0){if(a(2))return;A=e[0]<<8|e[1]}else if(this.need===Tb){if(a(1))return;A=e[0]}else if("buffer"in this.need){if("byteOffset"in this.need){if(a(this.need.byteLength-this.need.byteOffset))return;new Uint8Array(this.need.buffer,this.need.byteOffset).set(e.subarray(0,o)),A=this.need}else if(this.g)return void this.g.throw(new Error("Unsupported type"))}else{if(a(this.need.byteLength))return;new Uint8Array(this.need).set(e.subarray(0,o)),A=this.need}return this.consumed+=o,this.g?this.demand(this.g.next(A).value,!0):this.resolve&&this.resolve(A),A}write(A){if(A instanceof Uint8Array?this.malloc(A.length).set(A):"buffer"in A?this.malloc(A.byteLength).set(new Uint8Array(A.buffer,A.byteOffset,A.byteLength)):this.malloc(A.byteLength).set(new Uint8Array(A)),!this.g&&!this.resolve)return new Promise(e=>this.pull=e);this.flush()}writeU32(A){this.malloc(4).set([A>>24&255,A>>16&255,A>>8&255,255&A]),this.flush()}writeU16(A){this.malloc(2).set([A>>8&255,255&A]),this.flush()}writeU8(A){this.malloc(1)[0]=A,this.flush()}malloc(A){if(this.buffer){let e=this.buffer.length,o=e+A;if(o<=this.buffer.buffer.byteLength-this.buffer.byteOffset)this.buffer=new Uint8Array(this.buffer.buffer,this.buffer.byteOffset,o);else{let a=new Uint8Array(o);a.set(this.buffer),this.buffer=a}return this.buffer.subarray(e,o)}return this.buffer=new Uint8Array(A),this.buffer}};xf.U32=I0,xf.U16=u0,xf.U8=Tb;var WS=128;function E0(A){let e=new xf;for(;A>=128;)e.malloc(1)[0]=255&A|WS,A>>>=7;return e.malloc(1)[0]=255&A,e.buffer||new Uint8Array(0)}function d0(A){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,o=new xf,a=e<<3;switch(typeof A){case"boolean":let c=o.malloc(2);c[0]=a,c[1]=A?1:0;break;case"number":o.malloc(1)[0]=a,o.write(E0(A));break;case"string":o.malloc(1)[0]=2|a;let d=new TextEncoder().encode(A);o.write(E0(d.length));let C=o.malloc(d.length);for(let S=0;S>>24&255),this.buffer.push(A>>>16&255),this.buffer.push(A>>>8&255),this.buffer.push(255&A)}writeInt16(A){this.buffer.push(A>>>8&255),this.buffer.push(255&A)}writeByte(A){this.buffer.push(255&A)}writeBytes(A){for(let e=0;e>>24&255,A[o+1]=e>>>16&255,A[o+2]=e>>>8&255,A[o+3]=255&e}function Iu(A,e){return A[e]<<24|A[e+1]<<16|A[e+2]<<8|A[e+3]}function Wx(A,e){return A[e]}function Vf(A,e,o){return new TextDecoder().decode(function(a,c,d){return a.slice(c,c+d)}(A,e,o))}var zS=0,Nb=2654435769,C0=16,Kh=2,ZS=7;function Gb(A,e){let o=new jx,a=function(Me,yi,Ge){let ht=arguments.length>3&&arguments[3]!==void 0?arguments[3]:"AVQualityReportSvc.C2S";return{version:arguments.length>4&&arguments[4]!==void 0?arguments[4]:2e3,encryption:arguments.length>5&&arguments[5]!==void 0?arguments[5]:2,d2:"",d2Len:0,uinType:arguments.length>6&&arguments[6]!==void 0?arguments[6]:30,uin:"",uinLen:0,reqHead:{seqNumber:Ge,appId:Me,appidAtThird:new Uint8Array(0),a2:"",a2Len:0,serviceCmd:ht,serviceCmdLen:0,cookie:"",cookieLen:0,imei:"",imeiLen:0,ksid:"",ksidLen:0,clientVersionInfo:"",clientVersionInfoLen:0},busiBuff:yi}}(e,A,zS);zS=zS+1&2147483647,o.writeInt32(0),o.writeInt32(a.version),o.writeByte(a.encryption);let c=new TextEncoder().encode(a.d2);o.writeInt32(c.length+4),c&&o.writeBytes(c),o.writeByte(a.uinType);let d=new TextEncoder().encode(a.uin);o.writeInt32(d.length+4),d.length&&o.writeBytes(d);let C=new jx;C.writeInt32(0),C.writeInt32(a.reqHead.seqNumber),C.writeInt32(a.reqHead.appId),C.writeByte(a.reqHead.appId>>>24&255),C.writeByte(a.reqHead.appId>>>16&255),C.writeByte(a.reqHead.appId>>>8&255),C.writeByte(255&a.reqHead.appId);for(let Me=4;Me<16;Me++)C.writeByte(0);let y=new TextEncoder().encode(a.reqHead.a2);C.writeInt32(y.length+4),y.length&&C.writeBytes(y);let S=new TextEncoder().encode(a.reqHead.serviceCmd);C.writeInt32(S.length+4),S.length&&C.writeBytes(S);let b=new TextEncoder().encode(a.reqHead.cookie);C.writeInt32(b.length+4),b.length&&C.writeBytes(b);let V=new TextEncoder().encode(a.reqHead.imei);C.writeInt32(V.length+4),V.length&&C.writeBytes(V);let J=new TextEncoder().encode(a.reqHead.ksid);C.writeInt32(J.length+4),J.length&&C.writeBytes(J);let gA=new TextEncoder().encode(a.reqHead.clientVersionInfo);C.writeInt16(gA.length+2),gA.length&&C.writeBytes(gA);let CA=C.length;C.data[0]=CA>>>24&255,C.data[1]=CA>>>16&255,C.data[2]=CA>>>8&255,C.data[3]=255&CA,Yn(A)&&(A=new TextEncoder().encode(A)),C.writeInt32(A.length+4),A.length&&C.writeBytes(A);let MA=new Uint8Array(C.data),$A=null;a.encryption===1?$A=new TextEncoder().encode(a.uin):a.encryption===2&&($A=new Uint8Array(16)),$A&&(MA=function(Me,yi){let Ge=Me.length,ht=(Ge+1+Kh+ZS)%8;ht&&(ht=8-ht);let Ci=Ge+1+Kh+ZS+ht,Di=new Uint8Array(Ci),Vo=0,Jo=new Uint8Array(8),Qn=new Uint8Array(8),Ho=new Uint8Array(8),Ns=0;Jo[0]=248&Math.floor(256*Math.random())|ht,Ns=1;for(let fa=0;fa>>24&255,he[1]=Ye>>>16&255,he[2]=Ye>>>8&255,he[3]=255&Ye,he}function bb(A,e,o,a,c,d){for(let C=0;C<8;C++)A[C]^=a[C];(function(C,y,S,b){let V=Iu(C,0),J=Iu(C,4),gA=[];for(let MA=0;MA<4;MA++)gA[MA]=Iu(y,4*MA);let CA=0;for(let MA=0;MA>>=0,V+=(J<<4)+gA[0]^J+CA^(J>>>5)+gA[1],V>>>=0,J+=(V<<4)+gA[2]^V+CA^(V>>>5)+gA[3],J>>>=0;Yf(S,V,b),Yf(S,J,b+4)})(A,e,c,d);for(let C=0;C<8;C++)c[d+C]^=o[C];for(let C=0;C<8;C++)o[C]=A[C]}var zx=function(){return new URLSearchParams(location.search).get("trtc_env")||""},Zx=function(A){return A.includes(".")?A:"".concat(A).concat(".rtc.qq.com")},qd=A=>Number(A)<14e8,Jf=function(A,e){let o;o=Qb||(qd(A)?yp:NI);let a=Math.floor(Math.random()*LS(2,31));return"".concat(o,"/v5/AVQualityReportSvc/C2S?random=").concat(a,"&sdkappid=").concat(A,"&cmdtype=").concat(e)},kb="unknown";function h0(){(function(){var d;Xx||(Xx=!0,(d=navigator.connection)==null||d.addEventListener("typechange",IK))})();let{userAgent:A,connection:e}=navigator,o=(A.match(/NetType\/\S+/)||[])[0]||"";o=o.toLowerCase().replace("nettype/",""),o==="3gnet"&&(o="3g");let a=e&&e.type&&e.type.toLowerCase(),c=e&&e.effectiveType&&e.effectiveType.toLowerCase();return c==="slow-2"&&(c="2g"),a?Lb(a,c):kb}function IK(){QA.warn("netType changed",h0())}var Xx=!1;function Lb(A,e){if(t0[A])return A;switch(A){case"cellular":case"wimax":return e||"unknown";case"ethernet":return"wired";default:return"unknown"}}function B0(A){kb=Lb(A)}function Hf(){return t0[h0()]}function $x(A,e){for(let o of Reflect.ownKeys(e))if(o!=="constructor"&&o!=="prototype"&&o!=="name"){let a=Object.getOwnPropertyDescriptor(e,o)||"";Object.defineProperty(A,o,a)}return A}function Q0(A){return Ub(A/4,arguments.length>1&&arguments[1]!==void 0?arguments[1]:48e3)}function Ub(A){return 1e3*A/(arguments.length>1&&arguments[1]!==void 0?arguments[1]:48e3)}function A2(A){return 4*p0(A,arguments.length>1&&arguments[1]!==void 0?arguments[1]:48e3)}function p0(A){return A*(arguments.length>1&&arguments[1]!==void 0?arguments[1]:48e3)/1e3}var e2=typeof window<"u"&&typeof window.glog=="function"?window.glog:()=>{},Kd=()=>{let A=navigator.language;return A=A.substring(0,2),A==="zh"},aE=function(A){if(!A||typeof A!="object"||Object.prototype.toString.call(A)!="[object Object]")return!1;let e=Object.getPrototypeOf(A);if(e===null)return!0;let o=Object.prototype.hasOwnProperty.call(e,"constructor")&&e.constructor;return typeof o=="function"&&o instanceof o&&Function.prototype.toString.call(o)===Function.prototype.toString.call(Object)};function qf(A){let e=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1;return A<=1?e:qf(A-1,e,(arguments.length>1&&arguments[1]!==void 0?arguments[1]:1)+e)}function vp(A){return A>8?3e4:1e3*qf(A)}function Cg(A){return Reflect.apply(Object.prototype.toString,A,[]).replace(/^\[object\s(\w+)\]$/,"$1").toLowerCase()}var Ra=A=>typeof A=="function",Je=A=>A===void 0,Yn=A=>typeof A=="string",bn=A=>typeof A=="number",_r=A=>typeof A=="boolean",WE=A=>Cg(A)==="object",wa=A=>Cg(A)==="array",Fb=A=>Cg(A)==="MediaStreamTrack".toLowerCase(),Ob=A=>A.isRemote,Kf=A=>Cg(A)==="promise",jf=A=>Ra(A)&&A.prototype.constructor===A,XS=A=>jf(A)?A.prototype.constructor.name:"",t2=typeof AudioWorkletNode<"u",i2=typeof HTMLMediaElement<"u"&&"setSinkId"in HTMLMediaElement.prototype;function $S(A){return new Promise((e,o)=>{let a=[];A.forEach(c=>{c.then(e).catch(d=>{a.push(d),a.length===A.length&&o(a)})})})}function ko(){return performance&&performance.now?Math.floor(performance.now()):Date.now()}var o2=A=>+A<10?"0".concat(A):A,s2=A=>{let e=A.match(/^\d+\.\d+\.\d+/)[0];if(!e)return A;let o=e.split("."),a=o2(o[1])+o2(o[2]);return o[1]-15>0&&(o[1]="15"),o[2]-15>0&&(o[2]="15"),"".concat(o.join("."),".").concat(a)},uK=Object.prototype.hasOwnProperty;function m0(A){if(A==null)return!0;if(typeof A=="boolean")return!1;if(typeof A=="number")return A===0;if(typeof A=="string"||typeof A=="function"||Array.isArray(A))return A.length===0;if(A instanceof Error)return A.message==="";if(aE(A))switch(Object.prototype.toString.call(A)){case"[object File]":case"[object Map]":case"[object Set]":return A.size===0;case"[object Object]":for(let e in A)if(uK.call(A,e))return!1;return!0}return!1}function Rp(A,e){return{userId:e,hasAudio:!!(A&VS),hasVideo:!!(A&xS),hasAuxiliary:!!(A&YS),hasSmall:!!(A&fb),audioMuted:!!(A&Ff),videoMuted:!!(A&JS),audioAvailable:!(!(A&VS)||A&Ff),videoAvailable:!(!(A&xS)||A&JS),hasDatachannel:!!(A&WB)}}function n2(A){let e={urls:A.url.startsWith("turn:")||A.url.startsWith("turns:")?A.url:"turn:".concat(A.url)};return!Je(A.username)&&!Je(A.credential)&&(e.username=A.username,e.credential=A.credential,e.credentialType="password",Je(A.credentialType)||(e.credentialType=A.credentialType)),e}function AM(A){let e=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1];if(!Yn(A))return 0;let o=A.split(".");return e?(Number(o[0])<<24|Number(o[1])<<16|Number(o[2])<<8|Number(o[3]))>>>0:(Number(o[3])<<24|Number(o[2])<<16|Number(o[1])<<8|Number(o[0]))>>>0}var jh=function(A,e,o,a){if(!WE(A)||!WE(e))return 0;let c,d=0,C=Object.keys(e);for(let y=0,S=C.length;y{e[a]=Wf(o)}),e}if(WE(A)){let e={};return Object.keys(A).forEach(o=>{e[o]=Wf(A[o])}),e}return A}var eM=A=>{let e=[];if(wa(A))e=[...A];else if(Yn(A)){let o=document.getElementById(A);o&&e.push(o)}else A&&e.push(A);return e},Pb=A=>Yn(A)?document.getElementById(A):A,r2=()=>(A=>{let e=S=>S<10?"0".concat(S):"".concat(S),o=A.getFullYear(),a=A.getMonth()+1,c=A.getDate(),d=e(A.getHours()),C=e(A.getMinutes()),y=e(A.getSeconds());return"".concat(o,"/").concat(a,"/").concat(c," ").concat(d,":").concat(C,":").concat(y)})(new Date);function Wd(A,e){let{keysToInclude:o,keysToExclude:a}=e;try{if(wa(A))return"[".concat(A.map(y=>Wd(y,{keysToInclude:o,keysToExclude:a})).join(","),"]");if(!aE(A)||!wa(o)&&!wa(a))return JSON.stringify(A);let c={},d=new Set(o),C=new Set(a);return Object.keys(A).forEach(y=>{(C.size===0&&d.has(y)||d.size===0&&!C.has(y))&&(c[y]=aE(A[y])||wa(A[y])?JSON.parse(Wd(A[y],{keysToExclude:a,keysToInclude:o})):A[y])}),JSON.stringify(c)}catch{return"{}"}}function f0(A){let e=arguments.length>1&&arguments[1]!==void 0&&arguments[1],o=[];return Object.keys(A).forEach(a=>{e===A[a]&&o.push(a)}),Wd(A,{keysToInclude:o})}function y0(A){return A.replace(/[\u4e00-\u9fa5]/g,"aa").length}var xb=()=>{var A,e,o,a;return(A=window.screen)!=null&&A.orientation?!((a=(o=(e=window.screen)==null?void 0:e.orientation)==null?void 0:o.type)==null||!a.includes("portrait")):window.orientation===0||window.orientation===180},tM=A=>KA(null,null,function*(){return new Promise((e,o)=>{let a;if(Yn(A))a=new Image,a.crossOrigin="anonymous",a.src=A;else if(a=A,a.complete)return void e(a);a.onload=()=>e(a),a.onerror=()=>{o(new si({code:Et.INVALID_PARAMETER,message:"load image failed, url: ".concat(A)}))}})}),Yb=A=>{let e=A.split(".");return+e[0]<<24|+e[1]<<16|+e[2]<<8|+e[3]},D0=A=>(Object.keys(A).forEach(e=>{bn(A[e])&&(e.startsWith("uint")||e.startsWith("int"))?A[e]=Math.floor(A[e]):(aE(A[e])||wa(A[e]))&&D0(A[e])}),A);function kC(A,e){return new Promise(o=>{let a=setTimeout(o,A);e&&e(a)})}function Vb(A,e){let o=null;return function(){for(var a=arguments.length,c=new Array(a),d=0;do=null),o)}}function Jb(A){return A.replace(/(^|[^:])\/{2,}/g,"$1/")}function Hb(A){var e;try{let{width:o,height:a,frameRate:c,sampleRate:d,sampleSize:C,channelCount:y}=(e=A.getSettings)==null?void 0:e.call(A),S=A.kind===YA.AUDIO?"".concat(d,"x").concat(C,"@").concat(y):"".concat(o,"x").concat(a,"@").concat(c),b=A.stats?" stats: ".concat(JSON.stringify(A.stats).replaceAll('"',"")):"";return"".concat(A.id," ").concat(A.readyState," muted:").concat(A.muted," ").concat(A.kind," ").concat(A.label," ").concat(S).concat(b)}catch{return""}}function S0(A,e){return A.width*A.height===e.width*e.height?1:xb()&&e.width>e.height&&A.height>e.width?Math.max(A.width/e.height,A.height/e.width,1):Math.max(A.width/e.width,A.height/e.height,1)}function XB(A){return A===90||A===270}function a2(A){return KA(this,null,function*(){return new Promise((e,o)=>{let a=document.createElement("video");a.crossOrigin="anonymous",a.src=A,a.muted=!0,a.loop=!0,a.playsInline=!0,a.play().then(()=>e(a)),a.onerror=()=>{o(a.error)}})})}function zf(A){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:new WeakMap;if(typeof A!="object"||A===null)return A;if(e.has(A))return e.get(A);if(Array.isArray(A)){let o=[];return e.set(A,o),A.forEach((a,c)=>{o[c]=zf(a,e)}),o}if(Object.prototype.toString.call(A)==="[object Object]"){let o={};return e.set(A,o),Reflect.ownKeys(A).forEach(a=>{o[a]=zf(A[a],e)}),o}return A}var M0=(A=>(A[A.END_REPORT=2001]="END_REPORT",A[A.LOG=2002]="LOG",A[A.KEY_METRIC_REPORT=2003]="KEY_METRIC_REPORT",A))(M0||{});function $B(A,e,o,a){try{let c=function(d,C,y,S){let b={data:d,random:Math.floor(2147483648*Math.random()),sdkAppId:y};return Je(S)||(b=Qo(mi({},b),{gzip:+S})),{uint32_sdkappid:0,uint64_from_uin:0,uint32_timestamp:0,uint32_seq:0,msg_common_info:{msg_device_info:{enum_device_type:0,str_device_brand:"",str_device_model:"",str_device_board:"",str_device_cpu_abi:""},msg_system_info:{enum_os_type:0,str_os_version:"",msg_network_info:0},msg_network_info:{enum_network_type:0}},msg_report_content:{uint32_type:C,bytes_report_data:JSON.stringify(b)}}}(A,e,o,a);return Gb(d0(c),o)}catch{return JSON.stringify(A)}}function iM(A,e){let o=new Uint8Array(A.byteLength+e.byteLength);return o.set(new Uint8Array(A),0),o.set(new Uint8Array(e),A.byteLength),o.buffer}function v0(A){return(65535&A)>>>0}function g2(A){return(4294901760&A)>>>0}function wp(A){return!!(A&&A instanceof CanvasCaptureMediaStreamTrack&&A.canvas.id.includes("trtc_mix"))}function EK(A){let e=function(o){try{let a={},c=0;a.totalLength=Iu(o,c),c+=4,a.version=Iu(o,c),c+=4,a.encryption=Wx(o,c),c+=1,a.uinType=Wx(o,c),c+=1,a.uinLength=Iu(o,c),c+=4,a.uin=a.uinLength>4?Vf(o,c,a.uinLength-4):"",c+=a.uinLength-4;let d=o.slice(c);return a.encryption===2?(o=function(C,y){let S=0,b=new Uint8Array(8).fill(0),V=new Uint8Array(C.slice(0,8)),J=R0(V,y),gA=7&J[0],CA=C.length-1-gA-Kh-ZS,MA=new Uint8Array(CA),$A=0,he=b,Ye=C.slice(0,8);S=8;let Me=1;Me+=gA;for(let Ge=1;Ge<=Kh;)if(Me<8)Me++,Ge++;else if(Me===8){let ht=Zf(C,S,he,Ye,J,y);he=ht.ivPreCrypt,Ye=ht.ivCurCrypt,J=ht.debiBuf,S=ht.bufPos,Me=0}let yi=CA;for(;yi>0;)if(Me<8)MA[$A++]=J[Me]^he[Me],Me++,yi--;else if(Me===8){let Ge=Zf(C,S,he,Ye,J,y);he=Ge.ivPreCrypt,Ye=Ge.ivCurCrypt,J=Ge.debiBuf,S=Ge.bufPos,Me=0}for(let Ge=1;Ge<=ZS;)if(Me<8)J[Me],he[Me],Me++,Ge++;else if(Me===8){if(S>=C.length)break;let ht=Zf(C,S,he,Ye,J,y);if(!ht.success)break;he=ht.ivPreCrypt,Ye=ht.ivCurCrypt,J=ht.debiBuf,S=ht.bufPos,Me=0}return MA}(d,new Uint8Array(16).fill(0)),a.decrypted=!0,c=0):(o=d,c=0),a.rspHeadLength=Iu(o,c),c+=4,a.seqNo=Iu(o,c),c+=4,a.retCode=Iu(o,c),c+=4,a.retStrLength=Iu(o,c),c+=4,a.retStr=a.retStrLength?Vf(o,c,a.retStrLength-4):"",c+=a.retStrLength-4,a.serviceCmdLength=Iu(o,c),c+=4,a.serviceCmd=a.serviceCmdLength?Vf(o,c,a.serviceCmdLength-4):"",c+=a.serviceCmdLength-4,a.cookieLength=Iu(o,c),c+=4,a.cookie=a.cookieLength?Vf(o,c,a.cookieLength-4):"",c+=a.cookieLength-4,a.flag=Iu(o,c),c+=4,a.busiBuffLength=Iu(o,c),c+=4,a.busiBuff=a.busiBuffLength?Vf(o,c,a.busiBuffLength-4):"",c+=a.busiBuffLength-4,a}catch{}}(A);return e?.busiBuff}function R0(A,e){let o=A[0]<<24|A[1]<<16|A[2]<<8|A[3],a=A[4]<<24|A[5]<<16|A[6]<<8|A[7];o>>>=0,a>>>=0;let c=Nb*C0>>>0;for(let d=0;d>>5)+e[3],a>>>=0,o-=(a<<4)+e[0]^a+c^(a>>>5)+e[1],o>>>=0,c-=Nb,c>>>=0;return new Uint8Array([o>>>24&255,o>>>16&255,o>>>8&255,255&o,a>>>24&255,a>>>16&255,a>>>8&255,255&a])}function Zf(A,e,o,a,c,d){if(e+8>A.length)return{success:!1};let C=new Uint8Array(a),y=A.slice(e,e+8),S=new Uint8Array(8);for(let b=0;b<8;b++)S[b]=c[b]^y[b];return{success:!0,ivPreCrypt:C,ivCurCrypt:y,debiBuf:R0(S,d),bufPos:e+8}}var _p=typeof TextDecoder<"u"?new TextDecoder:void 0;function AQ(A){let{url:e,body:o,method:a="POST",timeout:c,priority:d}=A;return new Promise((C,y)=>{if("fetch"in window)return fetch(e,{method:a,body:o,priority:d}).then(b=>b.clone().json().then(V=>({data:V}),()=>b.arrayBuffer().then(V=>({data:EK(new Uint8Array(V))||(_p?_p.decode(V):V)})))).then(C,y);let S=new XMLHttpRequest;S.onreadystatechange=()=>{if(S.readyState===4)if(S.status>=200&&S.status<300)try{let b=JSON.parse(S.response);C({data:b})}catch{C({data:S.response})}else y({status:S.status,statusText:S.statusText||"request failed!"})},S.timeout=c||5e3,S.open(a,e,!0),S.send(o)})}function qb(A){return KA(this,null,function*(){let e=ko(),o=JSON.stringify(A);try{if(!CompressionStream||o.length<=2800)return o;let a=new Blob([o],{type:"application/json"}).stream().pipeThrough(new CompressionStream("gzip")),c=yield(yield(yield new Response(a)).blob()).arrayBuffer();return QA.debug("compressJSON ".concat(o.length," -> ").concat(c.byteLength," ").concat(ko()-e,"ms")),c}catch{return o}})}var c2=Object.prototype.hasOwnProperty,Tp=A=>typeof A=="function",zE=A=>A===void 0,Kb=A=>typeof A=="string",l2=A=>typeof A=="boolean",jb=A=>A.isRemote,I2=function(A){if(!A||typeof A!="object"||Object.prototype.toString.call(A)!="[object Object]")return!1;let e=Object.getPrototypeOf(A);if(e===null)return!0;let o=Object.prototype.hasOwnProperty.call(e,"constructor")&&e.constructor;return typeof o=="function"&&o instanceof o&&Function.prototype.toString.call(o)===Function.prototype.toString.call(Object)},oM=function(A){let{retryFunction:e,settings:o,onError:a,onRetrying:c,onRetryFailed:d,onRetrySuccess:C,context:y}=A;return function(){for(var S=arguments.length,b=new Array(S),V=0;VKA(this,null,function*(){let yi=y||this;try{let Ge=yield e.apply(yi,b);CA>0&&C&&C.call(this,CA),CA=0,Ye(Ge)}catch(Ge){let ht=()=>{clearTimeout(MA),CA=0,$A=2,Me(Ge)},Ci=()=>{$A!==2&&CA<(Tp(J)?J():J)?(CA++,$A=1,Tp(c)&&c.call(this,CA,ht),MA=window.setTimeout(()=>{MA=-1,he(Ye,Me)},Tp(gA)?gA(CA):gA)):(ht(),Tp(d)&&d.call(this,Ge))};Tp(a)?a.call(this,{error:Ge,retry:Ci,reject:Me,retryFuncArgs:b,retriedCount:CA}):Ci()}});return new Promise(he)}},Wb=class S9{constructor(e){Y(this,"_parentPath"),Y(this,"userId"),Y(this,"remoteUserId"),Y(this,"id"),Y(this,"sdkAppId"),Y(this,"type"),Y(this,"isLocal"),this.id=e.id,this.userId=e.userId,this.sdkAppId=e.sdkAppId,this.remoteUserId=e.remoteUserId,this.isLocal=!l2(e.isLocal)||e.isLocal,this.type=this.isLocal?"":e.type}getFullId(){return this._parentPath&&this.id?"".concat(this._parentPath,"-").concat(this.id):this._parentPath?this._parentPath:this.id}createChild(e){let o=new S9({id:e.id,userId:zE(e.userId)?this.userId:e.userId,sdkAppId:zE(e.sdkAppId)?this.sdkAppId:e.sdkAppId,type:zE(e.type)?this.type:e.type,isLocal:zE(e.isLocal)?this.isLocal:e.isLocal,remoteUserId:zE(e.remoteUserId)?this.remoteUserId:e.remoteUserId});return o.bindParent(this),o}bindParent(e){let o=e.getFullId();this._parentPath!==o&&(this.debug("bind logger parent: ".concat(e.id)),this._parentPath=o,this.userId=e.userId||this.userId,this.sdkAppId=e.sdkAppId||this.sdkAppId)}setUserId(e){this.userId=e}setSdkAppId(e){this.sdkAppId=e}log(e,o){let a=this.isLocal?this.userId:this.remoteUserId,c=this.getFullId();o.unshift("[".concat(this.isLocal?"↑":"↓").concat(this.type&&this.type!=="main"?"*":"").concat(c).concat(a?"|".concat(a):"","]")),QA.log(e,o,zE(this.userId)||function(d){if(d==null)return!0;if(typeof d=="boolean")return!1;if(typeof d=="number")return d===0;if(typeof d=="string"||typeof d=="function"||Array.isArray(d))return d.length===0;if(d instanceof Error)return d.message==="";if(I2(d))switch(Object.prototype.toString.call(d)){case"[object File]":case"[object Map]":case"[object Set]":return d.size===0;case"[object Object]":for(let C in d)if(c2.call(d,C))return!1;return!0}return!1}(this.userId),this.userId,this.sdkAppId)}info(){for(var e=arguments.length,o=new Array(e),a=0;aT0,CHROME_MAJOR_VERSION:()=>$E,CHROME_VERSION:()=>x0,EDGE_VERSION:()=>Zb,EDG_MAJOR_VERSION:()=>G0,EDG_VERSION:()=>Xb,ELECTRON_MAJOR_VERSION:()=>p2,FIREFOX_MAJOR_VERSION:()=>N0,FIREFOX_VERSION:()=>nM,HUAWEI_VERSION:()=>gk,IE_VERSION:()=>hK,IOS_MAIN_VERSION:()=>zd,IOS_VERSION:()=>bI,IPADQQB_VERSION:()=>cM,IS_ANDROID:()=>Ha,IS_ANDROID_WEBVIEW:()=>Ik,IS_ANY_SAFARI:()=>Up,IS_CHROME:()=>P0,IS_CHROME_OS:()=>sk,IS_CHROMIUM_128_TO_143:()=>oy,IS_CHROMIUM_BASE:()=>gE,IS_DESKTOP_IOS_CHROME:()=>y2,IS_EDG:()=>$f,IS_EDGE:()=>Xf,IS_ELECTRON:()=>BK,IS_FIREFOX:()=>er,IS_HEADLESS_CHROME:()=>Q2,IS_HONOR:()=>ak,IS_HUAWEI:()=>rk,IS_HUAWEIBROWSER:()=>Wh,IS_IE:()=>h2,IS_IE8:()=>CK,IS_IOS:()=>eg,IS_IOS_13_OR_14:()=>f2,IS_IOS_15_1:()=>m2,IS_IOS_CHROME:()=>CM,IS_IPAD:()=>Np,IS_IPADQQB:()=>U0,IS_IPAD_PRO:()=>_0,IS_IPHONE:()=>Gp,IS_IPOD:()=>d2,IS_LINUX:()=>ty,IS_LOCAL:()=>Fp,IS_MAC:()=>tQ,IS_MACQQB:()=>gM,IS_MIBROWSER:()=>F0,IS_MQQB:()=>aM,IS_NATIVE_ANDROID:()=>C2,IS_OLD_ANDROID:()=>dK,IS_OPENHARMONY:()=>iy,IS_OPPOBROWSER:()=>IM,IS_SAFARI:()=>Bg,IS_SAFARI_15_1:()=>QK,IS_SAMSUNGBROWSER:()=>lM,IS_SOGOU:()=>k0,IS_SOGOUM:()=>rM,IS_TBS:()=>XE,IS_UCBROWSER:()=>nk,IS_VIVOBROWSER:()=>uM,IS_WECHAT:()=>eQ,IS_WIN:()=>ey,IS_WQQB:()=>L0,IS_WX:()=>B2,IS_X5MQQB:()=>kp,IS_XWEB:()=>bp,MACQQB_VERSION:()=>ok,MI_VERSION:()=>Lp,MQQB_VERSION:()=>Ay,OPENHARMONY_VERSION:()=>O0,OPPO_VERSION:()=>lk,SAFARI_VERSION:()=>iQ,SAMSUNG_VERSION:()=>ck,SOGOUM_VERSION:()=>b0,SOGOU_VERSION:()=>$b,TBS_VERSION:()=>Ak,UA_DATA_STRING:()=>LC,USER_AGENT:()=>ZE,VIVO_VERSION:()=>EM,WECHAT_VERSION:()=>tk,WQQB_VERSION:()=>ik,XWEB_VERSION:()=>ek,browserInfo:()=>sQ,getBrowserCoreNumber:()=>Kl,getBrowserInfo:()=>Ek,getChromeMajorVersion:()=>dM,getDeviceModel:()=>nQ,getDeviceModelFromUA:()=>dk,getGPUInfo:()=>Op,getOSName:()=>ul,getOSNumber:()=>Pp,getOSString:()=>xp,getOSType:()=>Q,getTerminalType:()=>Cn,getUserAgentData:()=>hM,isAMDGPU:()=>ny,isAppleSiliconGPU:()=>pK,isLocalStorageEnabled:()=>oQ,isMobile:()=>Y0,isNvidiaGPU:()=>D2,isRealIOS:()=>sM,isVersionLargerThan:()=>sy,isVersionSmallerThan:()=>uk});var ZE=typeof navigator>"u"?"":navigator.userAgent,Ts=A=>new RegExp(A,"i").test(ZE),hg=A=>{if(Ts(A)){let e=new RegExp("".concat(A,"\\/([\\d.]+)")),o=ZE.match(e);if(o&&o[1])return o[1]}return""},w0=A=>{if(Ts(A)){let e=new RegExp("".concat(A,"\\/(\\d+)")),o=ZE.match(e);if(o&&o[1])return parseFloat(o[1])}return NaN},zb=/AppleWebKit\/([\d.]+)/i.exec(ZE),E2=zb?parseFloat(zb[1]):NaN,Np=Ts("iPad"),_0=typeof navigator<"u"&&navigator.maxTouchPoints&&navigator.maxTouchPoints>2&&Ts("Macintosh"),Gp=Ts("iPhone")&&!Np,d2=Ts("iPod"),eg=Gp||Np||d2||_0,sM=()=>{try{return eg&&navigator.maxTouchPoints>1&&navigator.vendor.includes("Apple")}catch{return eg}},Ha=Ts("Android"),T0=function(){if(Ha){let A=ZE.match(/Android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i);if(A){let e=A[1]&&parseFloat(A[1]),o=A[2]&&parseFloat(A[2]);if(e&&o)return parseFloat("".concat(A[1],".").concat(A[2]));if(e)return e}}return NaN}(),dK=Ha&&Ts("webkit")&&T0<2.3,C2=Ha&&T0<5&&E2<537,er=Ts("Firefox"),nM=hg("Firefox"),N0=w0("Firefox"),Xf=Ts("Edge"),Zb=hg("Edge"),$f=Ts("Edg"),Xb=hg("Edg"),G0=w0("Edg"),rM=Ts("SogouMobileBrowser"),b0=hg("SogouMobileBrowser"),k0=Ts("MetaSr\\s"),$b=hg("MetaSr\\s"),XE=Ts("TBS"),Ak=hg("TBS"),bp=Ts("XWEB"),ek=hg("XWEB"),CK=Ts("MSIE\\s8\\.0"),h2=Ts("MSIE\\/\\d+"),hK=function(){if(h2){let A=/MSIE\s(\d+)\.\d/.exec(ZE),e=A&&parseFloat(A[1]);return!e&&/Trident\/7.0/i.test(ZE)&&/rv:11.0/.test(ZE)&&(e=11),e}return NaN}(),eQ=Ts("(micromessenger|webbrowser)"),tk=hg("MicroMessenger"),kp=!XE&&Ts("MQQBrowser")&&Ts("COVC"),aM=!XE&&Ts("MQQBrowser")&&!Ts("COVC"),Ay=aM||kp?hg("MQQBrowser"):"",L0=!XE&&Ts(" QQBrowser"),ik=hg(" QQBrowser"),gM=!XE&&Ts("QQBrowserLite"),ok=hg("QQBrowserLite"),U0=!XE&&Ts("MQBHD"),cM=hg("MQBHD"),ey=Ts("Windows"),tQ=!eg&&Ts("MAC OS X"),ty=!Ha&&Ts("Linux"),sk=Ts("CrOS"),B2=Ts("MicroMessenger"),nk=Ts("UCBrowser"),BK=Ts("Electron"),F0=Ts("MiuiBrowser"),Lp=hg("MiuiBrowser"),Wh=Ts("HuaweiBrowser"),rk=Ts("Huawei")||Ts("HUAWEI"),ak=Ts("Honor")||Ts("HONOR"),gk=hg("HuaweiBrowser"),lM=Ts("SamsungBrowser"),ck=hg("SamsungBrowser"),IM=Ts("HeyTapBrowser"),lk=hg("HeyTapBrowser"),uM=Ts("VivoBrowser"),EM=hg("VivoBrowser"),iy=Ts("OpenHarmony"),O0=hg("OpenHarmony"),dM=()=>w0("Chrome"),CM=Ts("CriOS"),gE=Ts("Chrome"),P0=!Xf&&!k0&&!rM&&!XE&&!bp&&!$f&&!L0&&!F0&&!Wh&&!lM&&!IM&&!uM&&gE,Q2=Ts("HeadlessChrome"),$E=dM(),oy=gE&&$E>=128&&$E<=143,x0=hg("Chrome"),p2=w0("Electron"),Bg=!gE&&!aM&&!kp&&!gM&&!U0&&Ts("Safari"),Up=Bg||eg,iQ=hg("Version"),Ik=/Android.*(wv|.0.0.0)/.test(ZE),bI=(()=>{if(_0)return iQ;if(eg){let A=ZE.match(/OS (\d+)_(\d+)/i);if(A&&A[1]){let e=A[1];return A[2]&&(e+=".".concat(A[2])),e}}return""})();function uk(A,e){let o=A.split(".").map(c=>Number(c)),a=e.split(".").map(c=>Number(c));for(let c=0;cC)return!1}return!1}function sy(A,e){let o=arguments.length>2&&arguments[2]!==void 0&&arguments[2],a=A.split(".").map(d=>Number(d)),c=e.split(".").map(d=>Number(d));for(let d=0;dy)return!0;if(C{let A=Number(bI.split(".")[0]);return A===14||A===13})(),y2=CM&&iQ==="11.1.1",Fp=typeof location<"u"&&(location.protocol==="file:"||location.hostname==="localhost"||location.hostname==="127.0.0.1"),oQ=(()=>{let A;return()=>{if(A===void 0)try{A=!!window.localStorage}catch{A=!1}return A}})(),sQ=Ek();function Ek(){let A=new Map([[er,["Firefox",nM]],[$f,["Edg",Xb]],[P0,["Chrome",x0]],[CM,["ChiOS",hg("CriOS")]],[Bg&&!CM,["Safari",iQ]],[XE,["TBS",Ak]],[bp,["XWEB",ek]],[eQ&&Gp,["WeChat",tk]],[L0,["QQ(Win)",ik]],[aM,["QQ(Mobile)",Ay]],[kp,["QQ(Mobile X5)",Ay]],[gM,["QQ(Mac)",ok]],[U0,["QQ(iPad)",cM]],[F0,["MI",Lp]],[Wh,["HW",gk]],[lM,["Samsung",ck]],[IM,["OPPO",lk]],[uM,["VIVO",EM]],[Xf,["EDGE",Zb]],[rM,["SogouMobile",b0]],[k0,["Sogou",$b]]]),e="unknown",o="unknown";return A.has(!0)&&([e,o]=A.get(!0)),{name:e,version:o}}var Or=null;function Y0(){return Or&&typeof Or.mobile=="boolean"?Or.mobile:Ha||eg||Gp||Np||iy}var LC="";function hM(){return KA(this,null,function*(){if(Or)return Or;if(!navigator.userAgentData||typeof navigator.userAgentData.getHighEntropyValues!="function")return null;try{return(Or=yield navigator.userAgentData.getHighEntropyValues(["architecture","bitness","model","platformVersion","fullVersionList"]))&&!LC&&(LC="UAData: ".concat(Or.platform,"/").concat(Or.platformVersion),Or.architecture&&Or.bitness&&(LC+=" ".concat(Or.architecture,"/").concat(Or.bitness)),Or.mobile&&(LC+=" mobile"),Or.model&&(LC+=" model: ".concat(Or.model.replace(/\s+/g,"/"))),Or.fullVersionList&&(LC+=" ".concat(Or.fullVersionList.filter(A=>A.brand!=="Not/A)Brand").map(A=>"".concat(A.brand,"/").concat(A.version)).join(",")))),Or}catch{return null}})}var BM="";function Op(){try{if(BM)return BM;let A=document.createElement("canvas"),e=A.getContext("webgl")||A.getContext("experimental-webgl");if(!e)return"";let o=e.getExtension("WEBGL_debug_renderer_info");if(o){let a=e.getParameter(o.UNMASKED_VENDOR_WEBGL),c=e.getParameter(o.UNMASKED_RENDERER_WEBGL);return BM="".concat(a," ").concat(c)}return""}catch{return""}}function ny(){try{let A=Op();return A.includes("AMD")||A.includes("ATI")}catch{return!1}}function D2(){try{let A=Op();return A.includes("NVIDIA")||A.includes("GeForce")}catch{return!1}}function pK(){try{return Op().includes("Apple M")}catch{return!1}}function nQ(){return Or?.model||dk()||""}function dk(){let A=ZE.match(/;\s*([^;)]+)\s+Build\//);return A!=null&&A[1]?A[1].trim():null}var S2=new Map([[Ha,"Android"],[eg,"iOS"],[ey,"Windows"],[tQ,"MacOS"],[ty,"Linux"],[sk,"ChromeOS"]]),ul=function(){return S2.get(!0)?S2.get(!0):Or?Or.platform:"unknown"};function Pp(){return ey?1:Ha?2:tQ?3:eg?4:ty?5:sk?6:iy?7:0}function Kl(){return eQ||bp?4:gE?1:Bg?2:er?3:0}var xp=()=>{let A=ul();return Or!=null&&Or.platformVersion?A+="/".concat(Or.platformVersion):eg?A+="/".concat(bI):Ha&&(A+="/".concat(T0)),A+="/".concat(sQ.name,"/").concat(Bg&&!CM?sQ.version:sQ.version.split(".")[0]),Or!=null&&Or.architecture&&(A+="/".concat(Or.architecture)),A};function Cn(){return Ha?4:Gp?2:Np?3:tQ?12:ey?5:ty?13:iy?22:1}function Q(){return Ha?"Android":Gp?"iPhone":Np?"iPad":tQ?"Mac":ey?"Windows":ty?"Linux":"unknown"}var R,F=new(gc(ql(),1)).default,eA=((R=eA||{}).ROOM_DESTROY="1",R.JOIN_START="21",R.JOIN_SCHEDULE_SUCCESS="22",R.JOIN_SIGNAL_CONNECTION_START="23",R.JOIN_SIGNAL_CONNECTION_END="24",R.JOIN_SEND_CMD="25",R.JOIN_RECEIVED_CMD_RES="26",R.JOIN_SUCCESS="27",R.JOIN_FAILED="28",R.LEAVE_START="51",R.LEAVE_SEND_CMD="52",R.LEAVE_SUCCESS="53",R.PUBLISH_START="61",R.SEND_FIRST_VIDEO_FRAME="62",R.PUBLISH_FAILED="63",R.SUBSCRIBE_START="81",R.SUBSCRIBE_SUCCESS="82",R.SUBSCRIBE_FAILED="84",R.UNSUBSCRIBE_SUCCESS="83",R.LOCAL_TRACK_CAPTURE_START="101",R.LOCAL_TRACK_CAPTURE_SUCCESS="102",R.LOCAL_TRACK_CAPTURE_FAILED="103",R.LOCAL_TRACK_PUBLISHED="104",R.LOCAL_TRACK_UNPUBLISHED="105",R.LOCAL_TRACK_REPLACED="106",R.SWITCH_DEVICE_SUCCESS="107",R.TRACK_MUTED="108",R.TRACK_UNMUTED="109",R.REMOTE_TRACK_SUBSCRIBED="110",R.REMOTE_TRACK_UNSUBSCRIBED="111",R.LOCAL_TRACK_RECAPTURE="112",R.LOCAL_AUDIO_STARTED="113",R.LOCAL_AUDIO_STOPPED="114",R.REMOTE_AUDIO_STARTED="115",R.REMOTE_AUDIO_STOPPED="116",R.LOCAL_TRACK_STOPPED="117",R.LOCAL_VIDEO_TRACK_PREPROCESSED="118",R.PLAY_TRACK_START="151",R.PLAYER_STATE_CHANGED="152",R.VIDEO_LOADED_DATA="153",R.AUTOPLAY_DIALOG_CLICK_CONFIRM="154",R.AUDIO_CONTEXT_LONG_SUSPENDED="155",R.REMOTE_VIDEO_PLAY_START="156",R.REMOTE_VIDEO_PLAY_FINISH="157",R.SIGNAL_CONNECTION_STATE_CHANGED="201",R.PEER_CONNECTION_STATE_CHANGED="202",R.SINGLE_CONNECTION_STAT="203",R.SPC_RECONNECTED="204",R.HEARTBEAT_REPORT="251",R.RECEIVED_PUBLISHED_USER_LIST="252",R.REMOTE_PUBLISH_STATE_CHANGED="253",R.AUDIO_LEVEL_INTERVAL="260",R.NETWORK_QUALITY="261",R.VIDEO_CODEC_IMPLEMENTATION_CHANGED="262",R.QUALITY_LIMITATION_CHANGED="263",R.LOG="264",R.AUDIO_PROCESSOR_DEBUG="265",R.SSO_SWITCH="266",R.SEI_MESSAGE="267",R.USER_PAUSE_IN_PIP="268",R.USER_RESUME_IN_PIP="269",R.ENTER_PICTURE_IN_PICTURE="270",R.LEAVE_PICTURE_IN_PICTURE="271",R.SWITCH_ROOM_START="401",R.SWITCH_ROOM_SUCCESS="407",R.SWITCH_ROOM_FAILED="408",R),sA=eA,_A=new class{constructor(){Y(this,"enable",!1),Y(this,"ssoFailCount",0),F.on("22",A=>{let{schedule:e}=A;var o;(o=e?.config)!=null&&o.sso&&F.emit("266",{enable:!0})}),F.on("266",A=>{let{enable:e}=A;this.enable=e})}handleUploadFailed(){this.ssoFailCount++,this.ssoFailCount>3&&F.emit("266",{enable:!1})}},ZA=class M9{constructor(){Y(this,"_isEnableUploadLog",!0),Y(this,"_localJoinedUser",new Map),Y(this,"_queue",[]),Y(this,"_timeoutId",-1),Y(this,"_logLevel",1),Y(this,"_logLevelToUpload",2),!$w&&!A0&&(this.checkURLParam(),this.installEvents())}get isAbleToUpload(){return this._isEnableUploadLog&&this._timeoutId!==-1}installEvents(){F.on(sA.JOIN_SCHEDULE_SUCCESS,e=>{let{schedule:o}=e;var a;(a=o?.config)!=null&&a.logLevelToUpload&&jB[o.config.logLevelToUpload]&&(this._logLevelToUpload=o.config.logLevelToUpload)}),F.on(sA.JOIN_START,e=>{let{params:o}=e;this.addJoinedUser({userId:o.userId,sdkAppId:o.sdkAppId}),this.startUpload()}),F.on(sA.LEAVE_SUCCESS,e=>{let{room:o}=e;this.deleteJoinedUser(o.userId)})}startUpload(){this._timeoutId===-1&&this.uploadInterval()}addJoinedUser(e){this._localJoinedUser.set(e.userId,e),this.startUpload()}deleteJoinedUser(e){this._localJoinedUser.delete(e)}uploadInterval(){this.upload().catch(()=>{}),this._timeoutId=window.setTimeout(()=>this.uploadInterval(),5e3)}getLogsToUpload(){let e={map:new Map,splicedQueue:[]};if(this._queue[0].forAllJoinedClients&&this._localJoinedUser.size===0)return e;let o=0;for(;o{let{userId:d,sdkAppId:C}=c;e.map.has(d)?e.map.get(d).logs.push(a):e.map.set(d,{userId:d,sdkAppId:C,logs:[a]})});else if(Yn(a.userId)&&bn(a.sdkAppId)){let{userId:c,sdkAppId:d}=a;e.map.has(c)?e.map.get(c).logs.push(a):e.map.set(c,{userId:c,sdkAppId:d,logs:[a]})}}return e.map.size>0&&(e.splicedQueue=this._queue.splice(0,o)),e}upload(){return KA(this,null,function*(){if(this._queue.length===0||!this._isEnableUploadLog)return;let{map:e,splicedQueue:o}=this.getLogsToUpload();if(e.size===0)return;try{let c=[...e.values()];for(let d=0;dgA.log).join(` +`)},V=JSON.stringify(b),J=_A.enable?$B(b,2002,y):V;yield this.uploadLogWithRetry(J,y,J instanceof Uint8Array,V),S.forEach(gA=>gA.uploaded=!0)}}catch{}let a=o.filter(c=>!c.uploaded);a.length>0&&(this._queue=a.concat(this._queue))})}uploadLogWithRetry(e,o,a,c){return oM({retryFunction:()=>AQ({url:Jf(o,GI.LOG),body:e,timeout:5e3,priority:"low"}).then(d=>{a&&d.data!=="ok"&&(_A.handleUploadFailed(),this.uploadLogWithRetry(c,o,!1,c))}),settings:{retries:3,timeout:2e3},onError:d=>{let{retry:C}=d;C()}})()}getPrefix(e){let o=new Date;return o.setTime(kf()),"[".concat(hb(o),"] <").concat(jB[e],">")}getLogLevel(){return this._logLevel}setLogLevel(e){Je(jB[e])||(this._logLevel!==e&&this.info("setLogLevel",e),this._logLevel=e)}enableUploadLog(){this._isEnableUploadLog=!0}disableUploadLog(){this.warn("disableUploadLog"),this._isEnableUploadLog=!1}logChunkToString(e){if(Yn(e))return e;try{return e instanceof Error?e.toString():JSON.stringify(e)}catch{return""}}addLogToQueue(e,o){let a=!(arguments.length>2&&arguments[2]!==void 0)||arguments[2],c=arguments.length>3?arguments[3]:void 0,d=arguments.length>4?arguments[4]:void 0,C={log:o.reduce((y,S)=>"".concat(y," ").concat(this.logChunkToString(S)).trim(),""),level:e,userId:c,sdkAppId:d,forAllJoinedClients:a};F.emit(sA.LOG,{log:C}),this._isEnableUploadLog&&e>=this._logLevelToUpload&&this._queue.push(C)}log(e,o){let a=!(arguments.length>2&&arguments[2]!==void 0)||arguments[2],c=arguments.length>3?arguments[3]:void 0,d=arguments.length>4?arguments[4]:void 0;var C;if(o.unshift(this.getPrefix(e)),this.addLogToQueue(e,o,a,c,d),e{let e=16*Math.random()|0;return(A=="x"?e:3&e|8).toString(16)})},jA=new class{constructor(){Y(this,"_prefix","TRTC"),Y(this,"_queue",new Map)}getRealKey(A){return"".concat(this._prefix,"_").concat(A)}checkStorage(){oQ()&&(setInterval(this.doFlush.bind(this),2e4),Object.keys(localStorage).filter(A=>{if(A.startsWith(this._prefix))try{let e=localStorage.getItem(A);if(!e)return!1;let o=JSON.parse(e);if(o&&o.expiresInlocalStorage.removeItem(A)))}doFlush(){if(oQ())try{for(let[A,e]of this._queue)localStorage.setItem(A,JSON.stringify(e))}catch(A){QA.warn(A)}}getItem(A){if(!oQ())return null;try{let e=localStorage.getItem(this.getRealKey(A));if(!e)return null;let o=JSON.parse(e);return o&&o.expiresIn>=Date.now()?o.value:null}catch(e){QA.warn(e)}}setItem(A,e){if(oQ())try{let o={expiresIn:Date.now()+i0,value:e};this._queue.set(this.getRealKey(A),o)}catch(o){QA.warn(o)}}deleteItem(A){if(!oQ())return!1;try{return A=this.getRealKey(A),this._queue.delete(A),localStorage.removeItem(A),!0}catch(e){return QA.warn(e),!1}}clear(){if(oQ())try{localStorage.clear()}catch(A){QA.warn(A)}}},te={};Jh(te,{HTTPS_API:()=>_k,IS_GET_CAPABILITIES_FROM_INPUTDEVICE_SUPPORTED:()=>k2,IS_GET_CAPABILITIES_SUPPORTED:()=>b2,IS_GET_SETTINGS_SUPPORTED:()=>dy,IS_GET_SYNCHRONIZATION_SOURCES_SUPPORTED:()=>Lk,IS_INSERTABLE_STREAM_SUPPORTED:()=>qp,IS_JITTER_BUFFER_TARGET_SUPPORTED:()=>IQ,IS_RTC_RTP_SENDER_SUPPORTED:()=>UC,IS_SCRIPT_TRANSFORM_SUPPORTED:()=>Z0,IS_SEI_SUPPORTED:()=>Uk,IS_SPC_SUPPORTED:()=>RM,basis:()=>U2,capabilityCheck:()=>Pk,checkSystemRequirementsInternal:()=>Rk,decodeSupportStatus:()=>vk,detectH264SupportedByFakeStreaming:()=>N2,detectVideoCodecCapabilities:()=>_M,detectVideoDecoderCapabilities:()=>Yk,detectVideoEncoderCapabilities:()=>xk,encodeSupportStatus:()=>DM,getBrowserInfo:()=>fM,getDisplayResolution:()=>td,getH264ProfileLevelIds:()=>P2,isAddTransceiverSupported:()=>Zd,isBrowserSupported:()=>Sk,isCanvasCaptureStreamAPISupported:()=>MM,isCanvasSmallStreamSupported:()=>z0,isGetReceiversSupported:()=>Ey,isGetSendersSupported:()=>kI,isGetTransceiversSupported:()=>lQ,isGetUserMediaSupported:()=>Tk,isMediaDevicesSupported:()=>Mk,isMediaSessionSupported:()=>L2,isMediaStreamTrackGeneratorSupported:()=>yK,isMediaStreamTrackProcessorSupported:()=>yM,isReplaceTrackSupported:()=>G2,isRequestVideoFrameCallbackSupported:()=>Kp,isSIMDSupported:()=>wM,isScaleResolutionDownBySupported:()=>Gk,isScreenCaptureApiAvailable:()=>Hp,isSelectedCandidatePair:()=>SM,isSetParametersSupported:()=>kk,isSetSinkIdSupported:()=>SK,isSmallStreamSupported:()=>vM,isStopTransceiverSupported:()=>ia,isTRTCSupported:()=>DK,isUnifiedPlanDefault:()=>bk,isUsedInHttpProtocol:()=>uu,isWebAudioSupported:()=>Nk,isWebCodecSupported:()=>X0,isWebCodecsSupported:()=>W0,isWebRTCSupported:()=>Cy,isWebTransportSupported:()=>hy});var ke={};Jh(ke,{AUDIO_LEVEL_SCALE:()=>Ad,AlphaStitchingType:()=>ly,AudioCodecPipelineType:()=>cQ,AudioDecoderDowngradeState:()=>QM,AudioPlayerMode:()=>H0,AudioType:()=>M2,BASIC_TYPE:()=>pk,BannedReason:()=>Qg,CONNECTION_CLOSED_REASON:()=>Vt,CheckPermissionType:()=>cr,ClientEvent:()=>$e,CodecType:()=>pM,ConnectionEvent:()=>xo,ConnectionState:()=>ry,DECODE_FAILED_ERROR_CODE:()=>mM,DenoiserMode:()=>Yp,DeviceType:()=>mk,FacingMode:()=>hk,FrameWorkType:()=>eo,LeaveReason:()=>Bk,LocalTrackEvent:()=>So,MULTI_VIDEO_DATA_TYPE:()=>cy,MediaType:()=>V0,MediaTypeLabel:()=>mK,MonitorEventId:()=>El,MutedFlag:()=>Zn,NetworkQualityValue:()=>cE,PlayerState:()=>Io,ReceiveMode:()=>jl,RemoteStreamType:()=>gy,RemoteTrackEvent:()=>hn,RoomEvent:()=>lo,SMALL_MODE:()=>Jp,SceneNumber:()=>qa,StreamEvent:()=>Si,StreamType:()=>gQ,SubscribeMediaType:()=>Qk,TIMER_TYPE:()=>K0,TRACK_ACTION:()=>Ck,TRACK_KIND:()=>rQ,TrackEvent:()=>Yo,UserRole:()=>Fc,UserRoleNumber:()=>es,VideoCodec:()=>dl,VideoCodecPipelineType:()=>Vp,VideoContentHint:()=>q0,VideoDecoderDowngradeState:()=>ay,VideoPlayerMode:()=>J0,VideoType:()=>aQ});var Te,Ce,lt,ri,et,qe,dA,Qt,At,Vi,ci,eo=(A=>(A[A.WEBRTC=30]="WEBRTC",A[A.WASM=37]="WASM",A))(eo||{}),xo=((ci=xo||{}).TRACK_ADDED="track-added",ci.TRACK_UPDATED="track-updated",ci.TRACK_SUBSCRIBED="track-subscribed",ci.STREAM_ADDED="stream-added",ci.STREAM_REMOVED="stream-removed",ci.STREAM_UPDATED="stream-updated",ci.STREAM_PUBLISHED="stream-published",ci.STREAM_SUBSCRIBED="stream-subscribed",ci.STREAM_UNSUBSCRIBED="stream-unsubscribed",ci.STATE_CHANGED="state-changed",ci.ERROR="error",ci.CONNECTION_STATE_CHANGED="connection-state-changed",ci.FIREWALL_RESTRICTION="firewall-restriction",ci.SEI_MESSAGE="sei-message",ci.CLOSED="closed",ci),Vt=(A=>(A.REMOTE_LEAVE="remote user exitRoom",A.REMOTE_UNPUBLISH="remote user unpublished",A.LOCAL_LEAVE="you exitRoom",A.LOCAL_UNPUBLISH="you unpublished",A.LOCAL_UNSUBSCRIBE="you unsubscribed",A.SWITCH_ROLE="you switch role to audience",A))(Vt||{}),$e=((Vi=$e||{}).STREAM_ADDED="stream-added",Vi.STREAM_REMOVED="stream-removed",Vi.STREAM_UPDATED="stream-updated",Vi.STREAM_SUBSCRIBED="stream-subscribed",Vi.CONNECTION_STATE_CHANGED="connection-state-changed",Vi.PEER_JOIN="peer-join",Vi.PEER_LEAVE="peer-leave",Vi.MUTE_AUDIO="mute-audio",Vi.MUTE_VIDEO="mute-video",Vi.UNMUTE_AUDIO="unmute-audio",Vi.UNMUTE_VIDEO="unmute-video",Vi.CLIENT_BANNED="client-banned",Vi.NETWORK_QUALITY="network-quality",Vi.AUDIO_VOLUME="audio-volume",Vi.SEI_MESSAGE="sei-message",Vi.ERROR="error",Vi),Si=((At=Si||{}).PLAYER_STATE_CHANGED="player-state-changed",At.SCREEN_SHARING_STOPPED="screen-sharing-stopped",At.CONNECTION_STATE_CHANGED="connection-state-changed",At.DEVICE_AUTO_RECOVERED="device-auto-recovered",At.ERROR="error",At),So=((Qt=So||{}).DEVICE_AUTO_RECOVERED="1",Qt.DEVICE_RECOVER_FAILED="5",Qt.DEVICE_CHANGED="2",Qt.ERROR="3",Qt.PUBLISH_STATE_CHANGED="4",Qt.ENCODE_FAILED="6",Qt.TRACK_ENDED="7",Qt.RENDER="render",Qt),Io=(A=>(A.PAUSED="PAUSED",A.PLAYING="PLAYING",A.STOPPED="STOPPED",A))(Io||{}),lo=((dA=lo||{}).PEER_JOIN="peer-join",dA.PEER_LEAVE="peer-leave",dA.SIGNAL_CONNECTION_STATE_CHANGED="signal-connection-state-changed",dA.MEDIA_CONNECTION_STATE_CHANGED="media-connection-state-changed",dA.BANNED="banned",dA.NETWORK_QUALITY="network-quality",dA.AUDIO_VOLUME="audio-volume",dA.SEI_MESSAGE="sei-message",dA.ERROR="error",dA.REMOTE_PUBLISH_STATE_CHANGED="remote-publish-state-changed",dA.REMOTE_PUBLISHED="remote-published",dA.REMOTE_UNPUBLISHED="remote-unpublished",dA.FIREWALL_RESTRICTION="firewall-restriction",dA.HEARTBEAT_REPORT="heartbeat-report",dA.CUSTOM_MESSAGE="custom-message",dA.LAYER_DATA="layerData",dA.FIRST_VIDEO_FRAME="first-video-frame",dA.FIRST_FRAME_RENDER="first-frame-render",dA.DUMP="dump",dA.AUDIO_FRAME="audio-frame",dA.SUBSCRIBE_SMALL_VIDEO_CHANGED="subscribe-small-video-changed",dA.LOCAL_PUBLISH_FLAG_CHANGED="local-publish-flag-changed",dA.NTP_TIME_UPDATED="ntp-time-updated",dA.DATA_CHANNEL_MESSAGE="data-channel-message",dA.ASR_ROBOT_PEER_JOIN="asr-robot-peer-join",dA.ASR_ROBOT_PEER_LEAVE="asr-robot-peer-leave",dA),Yo=((qe=Yo||{}).PLAYER_STATE_CHANGED="player-state-changed",qe.MUTE="mute",qe.UNMUTE="unmute",qe.ERROR="error",qe.INPUT_MEDIA_TRACK_CHANGED="input-media-track-changed",qe.OUTPUT_MEDIA_TRACK_CHANGED="output-media-track-changed",qe.FIRST_VIDEO_FRAME="first-video-frame",qe.FIRST_FRAME_RENDER="first-frame-render",qe.VIDEO_SIZE_CHANGED="video-size-changed",qe),hn=(A=>(A.DECODE_FAILED="decode-failed",A.DECODE_FAILED_DURING_CALL="decode-failed-during-call",A.DECODE_DOWNGRADE_STATE_CHANGED="decode-downgrade-state-changed",A.REMOTE_PUBLISH_CHANGED="remote-publish-changed",A.AUDIO_FRAME_WITH_NTP="audio-frame-with-ntp",A))(hn||{}),Zn=((et=Zn||{})[et.VIDEO=1]="VIDEO",et[et.SMALL=2]="SMALL",et[et.AUX=4]="AUX",et[et.AUDIO=8]="AUDIO",et[et.VIDEO_MUTE=16]="VIDEO_MUTE",et[et.AUX_MUTE=32]="AUX_MUTE",et[et.AUDIO_MUTE=64]="AUDIO_MUTE",et),qa=(A=>(A[A.RTC=1]="RTC",A[A.LIVE=2]="LIVE",A))(qa||{}),es=(A=>(A[A.ANCHOR=20]="ANCHOR",A[A.AUDIENCE=21]="AUDIENCE",A))(es||{}),Fc=(A=>(A.ANCHOR="anchor",A.AUDIENCE="audience",A))(Fc||{}),ry=(A=>(A.CONNECTED="CONNECTED",A.DISCONNECTED="DISCONNECTED",A.CONNECTING="CONNECTING",A.RECONNECTED="RECONNECTED",A.RECONNECTING="RECONNECTING",A))(ry||{}),QM=((ri=QM||{}).INITIALIZED="INITIALIZED",ri.STARTING="STARTING",ri.STARTED="STARTED",ri.FAILED="FAILED",ri),ay=(A=>(A.INITIALIZED="INITIALIZED",A.STARTING="STARTING",A.STARTED="STARTED",A.FAILED="FAILED",A))(ay||{}),rQ=(A=>(A.AUDIO="audio",A.VIDEO="video",A.AUXILIARY="auxVideo",A))(rQ||{}),Ck=(A=>(A.ADD="add",A.REMOVE="remove",A))(Ck||{}),V0=(A=>(A[A.NULL=0]="NULL",A[A.AUDIO=1]="AUDIO",A[A.AUX_VIDEO=2]="AUX_VIDEO",A[A.BIG_VIDEO=4]="BIG_VIDEO",A[A.SMALL_VIDEO=8]="SMALL_VIDEO",A))(V0||{}),mK={1:"audio",2:"auxVideo",4:"video"},M2=((lt=M2||{})[lt.opus=111]="opus",lt),aQ=(A=>(A[A.h264=100]="h264",A[A.vp8=101]="vp8",A))(aQ||{}),gQ=(A=>(A.Big="big",A.Small="small",A))(gQ||{}),gy=(A=>(A.Main="main",A.Aux="auxiliary",A))(gy||{}),cy=(A=>(A[A.MULTI_DATA_AUDIO=1]="MULTI_DATA_AUDIO",A[A.MULTI_DATA_BIG_IMG=2]="MULTI_DATA_BIG_IMG",A[A.MULTI_DATA_SMALL_IMG=3]="MULTI_DATA_SMALL_IMG",A[A.MULTI_DATA_AUX_IMG=7]="MULTI_DATA_AUX_IMG",A[A.MULTI_DATA_TYPE_BUTT=12]="MULTI_DATA_TYPE_BUTT",A))(cy||{}),El=((Ce=El||{})[Ce.PUBLISH_VIDEO=32768]="PUBLISH_VIDEO",Ce[Ce.PUBLISH_AUDIO=32769]="PUBLISH_AUDIO",Ce[Ce.UNPUBLISH_VIDEO=32770]="UNPUBLISH_VIDEO",Ce[Ce.UNPUBLISH_AUDIO=32771]="UNPUBLISH_AUDIO",Ce[Ce.MUTE_AUDIO=32772]="MUTE_AUDIO",Ce[Ce.MUTE_VIDEO=32773]="MUTE_VIDEO",Ce[Ce.UNMUTE_AUDIO=32774]="UNMUTE_AUDIO",Ce[Ce.UNMUTE_VIDEO=32775]="UNMUTE_VIDEO",Ce[Ce.SUBSCRIBE_VIDEO=32776]="SUBSCRIBE_VIDEO",Ce[Ce.SUBSCRIBE_AUDIO=32777]="SUBSCRIBE_AUDIO",Ce[Ce.UNSUBSCRIBE_VIDEO=32778]="UNSUBSCRIBE_VIDEO",Ce[Ce.UNSUBSCRIBE_AUDIO=32779]="UNSUBSCRIBE_AUDIO",Ce[Ce.SWITCH_CAMERA=32780]="SWITCH_CAMERA",Ce[Ce.SWITCH_MICROPHONE=32781]="SWITCH_MICROPHONE",Ce[Ce.REPLACE_VIDEO=32782]="REPLACE_VIDEO",Ce[Ce.REPLACE_AUDIO=32783]="REPLACE_AUDIO",Ce[Ce.MUTE_REMOTE_VIDEO=32784]="MUTE_REMOTE_VIDEO",Ce[Ce.MUTE_REMOTE_AUDIO=32785]="MUTE_REMOTE_AUDIO",Ce[Ce.UNMUTE_REMOTE_VIDEO=32786]="UNMUTE_REMOTE_VIDEO",Ce[Ce.UNMUTE_REMOTE_AUDIO=32787]="UNMUTE_REMOTE_AUDIO",Ce[Ce.JOIN=32788]="JOIN",Ce[Ce.LEAVE=32789]="LEAVE",Ce[Ce.SIGNAL_DISCONNECTED=32790]="SIGNAL_DISCONNECTED",Ce[Ce.SIGNAL_CONNECTED=32791]="SIGNAL_CONNECTED",Ce[Ce.TRANSPORT_UPLINK_CONNECTED=32792]="TRANSPORT_UPLINK_CONNECTED",Ce[Ce.TRANSPORT_DOWNLINK_CONNECTED=32793]="TRANSPORT_DOWNLINK_CONNECTED",Ce[Ce.SIGNAl_RECONNECTING=32794]="SIGNAl_RECONNECTING",Ce[Ce.SIGNAL_RECONNECT_SUCCESS=32795]="SIGNAL_RECONNECT_SUCCESS",Ce[Ce.SIGNAL_RECONNECT_FAIL=32796]="SIGNAL_RECONNECT_FAIL",Ce[Ce.TRANSPORT_UPLINK_RECONNECTING=32797]="TRANSPORT_UPLINK_RECONNECTING",Ce[Ce.TRANSPORT_UPLINK_RECONNECT_SUCCESS=32798]="TRANSPORT_UPLINK_RECONNECT_SUCCESS",Ce[Ce.TRANSPORT_UPLINK_RECONNECT_FAIL=32799]="TRANSPORT_UPLINK_RECONNECT_FAIL",Ce[Ce.TRANSPORT_DOWNLINK_RECONNECTING=32800]="TRANSPORT_DOWNLINK_RECONNECTING",Ce[Ce.TRANSPORT_DOWNLINK_RECONNECT_SUCCESS=32801]="TRANSPORT_DOWNLINK_RECONNECT_SUCCESS",Ce[Ce.TRANSPORT_DOWNLINK_RECONNECT_FAIL=32802]="TRANSPORT_DOWNLINK_RECONNECT_FAIL",Ce[Ce.SUBSCRIBE_SMALL_VIDEO=32803]="SUBSCRIBE_SMALL_VIDEO",Ce[Ce.UNSUBSCRIBE_SMALL_VIDEO=32804]="UNSUBSCRIBE_SMALL_VIDEO",Ce[Ce.PUBLISH_AUX=32805]="PUBLISH_AUX",Ce[Ce.UNPUBLISH_AUX=32806]="UNPUBLISH_AUX",Ce[Ce.DEVICE_CAPTURE=2003]="DEVICE_CAPTURE",Ce[Ce.VIDEO_ENCODER=4004]="VIDEO_ENCODER",Ce[Ce.VIDEO_DECODER=4005]="VIDEO_DECODER",Ce),cE=(A=>(A[A.UNKNOWN=0]="UNKNOWN",A[A.EXCELLENT=1]="EXCELLENT",A[A.GOOD=2]="GOOD",A[A.POOR=3]="POOR",A[A.BAD=4]="BAD",A[A.VERY_BAD=5]="VERY_BAD",A[A.DISCONNECTED=6]="DISCONNECTED",A))(cE||{}),jl=(A=>(A[A.MANUAL=0]="MANUAL",A[A.AUTO_AUDIO=1]="AUTO_AUDIO",A[A.AUTO_VIDEO=2]="AUTO_VIDEO",A[A.AUTO_ALL=3]="AUTO_ALL",A))(jl||{}),hk=(A=>(A.user="user",A.environment="environment",A))(hk||{}),J0=(A=>(A[A.ELEMENT=0]="ELEMENT",A[A.CANVAS_FROM_ELEMENT=1]="CANVAS_FROM_ELEMENT",A[A.CANVAS_WITHOUT_ELEMENT=2]="CANVAS_WITHOUT_ELEMENT",A))(J0||{}),H0=(A=>(A[A.ELEMENT=0]="ELEMENT",A[A.CONTEXT=1]="CONTEXT",A))(H0||{}),Qg=(A=>(A.BANNED="banned",A.KICK="kick",A.USER_TIME_OUT="user_time_out",A.ROOM_DISBAND="room_disband",A))(Qg||{}),Bk=(A=>(A[A.USER_EXIT_REASON_TC_USER_EXIT_NORMAL=0]="USER_EXIT_REASON_TC_USER_EXIT_NORMAL",A[A.USER_EXIT_REASON_TC_USER_EXIT_TIMEOUT=1]="USER_EXIT_REASON_TC_USER_EXIT_TIMEOUT",A[A.USER_EXIT_REASON_TC_USER_EXIT_KICKED=2]="USER_EXIT_REASON_TC_USER_EXIT_KICKED",A[A.USER_EXIT_REASON_TC_USER_EXIT_CHANGED=3]="USER_EXIT_REASON_TC_USER_EXIT_CHANGED",A[A.USER_KICK_OUT_CODE_BUSINESS_USER=4]="USER_KICK_OUT_CODE_BUSINESS_USER",A[A.USER_KICK_OUT_CODE_BUSINESS_ROOM=5]="USER_KICK_OUT_CODE_BUSINESS_ROOM",A[A.USER_KICK_OUT_CODE_SERVER_USER=6]="USER_KICK_OUT_CODE_SERVER_USER",A[A.USER_KICK_OUT_CODE_SERVER_ROOM=7]="USER_KICK_OUT_CODE_SERVER_ROOM",A[A.USER_KICK_SESS_EXSIT=8]="USER_KICK_SESS_EXSIT",A))(Bk||{}),Ad=1e8,Yp=(A=>(A[A.NORMAL=0]="NORMAL",A[A.FAR_FIELD_REDUCTION=1]="FAR_FIELD_REDUCTION",A))(Yp||{}),Qk=class{constructor(){Y(this,"mediaType",0)}set audio(A){A?this.mediaType|=1:this.mediaType&=-2}get audio(){return!!(1&this.mediaType)}set video(A){A?this.mediaType|=4:this.mediaType&=-5}get video(){return!!(4&this.mediaType)}set auxiliary(A){A?this.mediaType|=2:this.mediaType&=-3}get auxiliary(){return!!(2&this.mediaType)}set smallVideo(A){A?this.mediaType|=8:this.mediaType&=-9}get smallVideo(){return!!(8&this.mediaType)}},pk=(A=>(A.String="string",A.Number="number",A.Boolean="boolean",A.Array="array",A.Object="object",A))(pk||{}),dl=(A=>(A.H264="h264",A.H265="h265",A.VP8="vp8",A.VP9="vp9",A.AV1="av1",A))(dl||{}),Vp=(A=>(A[A.ENCRYPT_AND_DECRYPT=0]="ENCRYPT_AND_DECRYPT",A[A.DUMP=1]="DUMP",A[A.SEI=2]="SEI",A[A.ENCODE_AND_DECODE=3]="ENCODE_AND_DECODE",A))(Vp||{}),cQ=(A=>(A[A.ENCRYPT_AND_DECRYPT=0]="ENCRYPT_AND_DECRYPT",A[A.NTP_TO_AUDIO_FRAME=1]="NTP_TO_AUDIO_FRAME",A[A.DUMP=2]="DUMP",A[A.ENCODE_AND_DECODE=3]="ENCODE_AND_DECODE",A))(cQ||{}),pM=(A=>(A.WebRTC="webrtc",A.WebCodecs="webcodecs",A.WebAssembly="webassembly",A))(pM||{}),mM=((Te=mM||{})[Te.SUCCESS=0]="SUCCESS",Te[Te.FAILED=1]="FAILED",Te[Te.WEBCODEC_INIT=2]="WEBCODEC_INIT",Te[Te.WEBCODEC_CONFIG_NOT_SUPPORT=3]="WEBCODEC_CONFIG_NOT_SUPPORT",Te[Te.WEBCODEC_DECODER_ERROR=4]="WEBCODEC_DECODER_ERROR",Te[Te.WEBCODEC_TRACK_MUTE=5]="WEBCODEC_TRACK_MUTE",Te[Te.WASM_INIT=6]="WASM_INIT",Te[Te.WASM_WEBGL_UNAVALIABLE=7]="WASM_WEBGL_UNAVALIABLE",Te[Te.WASM_DECODER_ERROR=8]="WASM_DECODER_ERROR",Te[Te.WASM_TRACK_MUTE=9]="WASM_TRACK_MUTE",Te[Te.TEST=10]="TEST",Te[Te.RENDER_2D_ERROR=11]="RENDER_2D_ERROR",Te),q0=(A=>(A.NONE="",A.DETAIL="detail",A.MOTION="motion",A.TEXT="text",A))(q0||{}),K0=(A=>(A.INTERVAL="interval",A.TIMEOUT="timeout",A.RAF="raf",A.RIC="ric",A.INTERVAL_IN_WORKER="intervalInWorker",A))(K0||{}),Jp=(A=>(A.CANVAS="canvas",A.API="api",A))(Jp||{}),cr=(A=>(A[A.NONE=0]="NONE",A[A.MICROPHONE=1]="MICROPHONE",A[A.CAMERA=2]="CAMERA",A[A.BOTH=3]="BOTH",A))(cr||{}),mk=(A=>(A.CAMERA="camera",A.MICROPHONE="microphone",A))(mk||{}),ly=(A=>(A[A.none=0]="none",A[A.horizontal=1]="horizontal",A[A.vertical=2]="vertical",A))(ly||{}),Mo={AVOID_REPEATED_CALL:"AVOID_REPEATED_CALL",INVALID_PARAMETER_REQUIRED:"INVALID_PARAMETER_REQUIRED",INVALID_PARAMETER_TYPE:"INVALID_PARAMETER_TYPE",INVALID_PARAMETER_EMPTY:"INVALID_PARAMETER_EMPTY",INVALID_PARAMETER_INSTANCE:"INVALID_PARAMETER_INSTANCE",INVALID_PARAMETER_RANGE:"INVALID_PARAMETER_RANGE",INVALID_PARAMETER_MIN:"INVALID_PARAMETER_MIN",INVALID_PARAMETER_MAX:"INVALID_PARAMETER_MAX",INVALID_PARAMETER_STREAMTYPE:"INVALID_PARAMETER_STREAMTYPE",API_CALL_TIMEOUT:"API_CALL_TIMEOUT",SIGNAL_CHANNEL_RECONNECTION_FAILED:"SIGNAL_CHANNEL_RECONNECTION_FAILED",SIGNAL_CHANNEL_SETUP_FAILED:"SIGNAL_CHANNEL_SETUP_FAILED",ERROR_MESSAGE:"ERROR_MESSAGE",EXCHANGE_SDP_TIMEOUT:"EXCHANGE_SDP_TIMEOUT",DOWNLINK_RECONNECTION_FAILED:"DOWNLINK_RECONNECTION_FAILED",EXCHANGE_SDP_FAILED:"EXCHANGE_SDP_FAILED",UPDATE_OFFER_TIMEOUT:"UPDATE_OFFER_TIMEOUT",UPLINK_RECONNECTION_FAILED:"UPLINK_RECONNECTION_FAILED",INVALID_RECORDID:"INVALID_RECORDID",INVALID_PURE_AUDIO:"INVALID_PURE_AUDIO",INVALID_STREAMID:"INVALID_STREAMID",INVALID_USER_DEFINE_RECORDID:"INVALID_USER_DEFINE_RECORDID",INVALID_USER_DEFINE_PUSH_ARGS:"INVALID_USER_DEFINE_PUSH_ARGS",INVALID_PROXY:"INVALID_PROXY",INVALID_JOIN:"INVALID_JOIN",INVALID_ROOMID_STRING:"INVALID_ROOMID_STRING",INVALID_ROOMID_INTEGER:"INVALID_ROOMID_INTEGER",INVALID_SIGNAL_CHANNEL:"INVALID_SIGNAL_CHANNEL",JOIN_ROOM_TIMEOUT:"JOIN_ROOM_TIMEOUT",JOIN_ROOM_FAILED:"JOIN_ROOM_FAILED",REJOIN_ROOM_FAILED:"REJOIN_ROOM_FAILED",INVALID_DESTROY:"INVALID_DESTROY",INVALID_PUBLISH:"INVALID_PUBLISH",INVALID_UNPUBLISH:"INVALID_UNPUBLISH",INVALID_AUDIENCE:"INVALID_AUDIENCE",INVALID_INITIALIZE:"INVALID_INITIALIZE",INVALID_DUPLICATE_PUBLISHING:"INVALID_DUPLICATE_PUBLISHING",INVALID_SUBSCRIBE_UNDEFINED:"INVALID_SUBSCRIBE_UNDEFINED",INVALID_SUBSCRIBE_LOCAL:"INVALID_SUBSCRIBE_LOCAL",INVALID_REMOTE_STREAM:"INVALID_REMOTE_STREAM",SUBSCRIBE_FAILED:"SUBSCRIBE_FAILED",INVALID_ROLE:"INVALID_ROLE",INVALID_PARAMETER_SWITCH_ROLE:"INVALID_PARAMETER_SWITCH_ROLE",INVALID_OPERATION_SWITCH_ROLE:"INVALID_OPERATION_SWITCH_ROLE",SWITCH_ROLE_TIMEOUT:"SWITCH_ROLE_TIMEOUT",SWITCH_ROLE_FAILED:"SWITCH_ROLE_FAILED",CLIENT_BANNED:"CLIENT_BANNED",INVALID_OPERATION_START_PUBLISH_CDN:"INVALID_OPERATION_START_PUBLISH_CDN",INVALID_OPERATION_STOP_PUBLISH_CDN:"INVALID_OPERATION_STOP_PUBLISH_CDN",INVALID_STREAM_ID:"INVALID_STREAM_ID",START_PUBLISH_CDN_FAILED:"START_PUBLISH_CDN_FAILED",STOP_PUBLISH_CDN_FAILED:"STOP_PUBLISH_CDN_FAILED",START_MIX_TRANSCODE:"START_MIX_TRANSCODE",STOP_MIX_TRANSCODE:"STOP_MIX_TRANSCODE",INVALID_AUDIO_VOLUME:"INVALID_AUDIO_VOLUME",ENABLE_SMALL_STREAM_PUBLISHED:"ENABLE_SMALL_STREAM_PUBLISHED",DISABLE_SMALL_STREAM_PUBLISHED:"DISABLE_SMALL_STREAM_PUBLISHED",NOT_SUPPORTED_SMALL_STREAM:"NOT_SUPPORTED_SMALL_STREAM",INVALID_SMALL_STREAM_PROFILE:"INVALID_SMALL_STREAM_PROFILE",INVALID_PARAMETER_REMOTE_STREAM:"INVALID_PARAMETER_REMOTE_STREAM",INVALID_OPERATION_CHANGE_SMALL:"INVALID_OPERATION_CHANGE_SMALL",REMOTE_NOT_PUBLISH_SMALL_STREAM:"REMOTE_NOT_PUBLISH_SMALL_STREAM",INVALID_SWITCH_DEVICE:"INVALID_SWITCH_DEVICE",INVALID_SWITCH_DEVICE_PUBLISHING:"INVALID_SWITCH_DEVICE_PUBLISHING",INVALID_REPLACE_TRACK:"INVALID_REPLACE_TRACK",INVALID_INITIALIZE_LOCAL_STREAM:"INVALID_INITIALIZE_LOCAL_STREAM",INVALID_ADD_TRACK_REPETITIVE:"INVALID_ADD_TRACK_REPETITIVE",INVALID_ADD_TRACK_REMOVING:"INVALID_ADD_TRACK_REMOVING",INVALID_ADD_TRACK_PUBLISHING:"INVALID_ADD_TRACK_PUBLISHING",INVALID_STREAM_INITIALIZED:"INVALID_STREAM_INITIALIZED",INVALID_ADD_TRACK_NUMBER:"INVALID_ADD_TRACK_NUMBER",INVALID_REMOVE_AUDIO_TRACK:"INVALID_REMOVE_AUDIO_TRACK",INVALID_REMOVE_AUDIO_ADDING:"INVALID_REMOVE_AUDIO_ADDING",INVALID_REMOVE_AUDIO_ON:"INVALID_REMOVE_AUDIO_ON",INVALID_REMOVE_TRACK_PUBLISHING:"INVALID_REMOVE_TRACK_PUBLISHING",INVALID_REMOVE_TRACK_NOT_TRACK:"INVALID_REMOVE_TRACK_NOT_TRACK",INVALID_REMOVE_TRACK_NUMBER:"INVALID_REMOVE_TRACK_NUMBER",INVALID_REPLACE_TRACK_NO_TRACK:"INVALID_REPLACE_TRACK_NO_TRACK",REPEAT_JOIN:"REPEAT_JOIN",CLIENT_DESTROYED:"CLIENT_DESTROYED",NOT_BUG_PACKAGE:"NOT_BUG_PACKAGE",START_MIX_TRANSCODE_FAILED:"START_MIX_TRANSCODE_FAILED",STOP_MIX_TRANSCODE_FAILED:"STOP_MIX_TRANSCODE_FAILED",MIX_TRANSCODE_NOT_STARTED:"MIX_TRANSCODE_NOT_STARTED",CANNOT_LESS_THAN_ZERO:"CANNOT_LESS_THAN_ZERO",MIX_PARAMS_VIDEO_FRAMERATE:"MIX_PARAMS_VIDEO_FRAMERATE",MIX_PARAMS_VIDEO_GOP:"MIX_PARAMS_VIDEO_GOP",MIX_PARAMS_AUDIO_BITRATE:"MIX_PARAMS_AUDIO_BITRATE",MIX_PARAMS_USER_Z_ORDER:"MIX_PARAMS_USER_Z_ORDER",MIX_PARAMS_NOT_SELF:"MIX_PARAMS_NOT_SELF",MIX_PARAMS_USER_STREAM:"MIX_PARAMS_USER_STREAM",INVALID_PLAY:"INVALID_PLAY",INVALID_ELEMENT_ID:"INVALID_ELEMENT_ID",INVALID_ELEMENT_ID_TYPE:"INVALID_ELEMENT_ID_TYPE",PLAY_FAILED:"PLAY_FAILED",INVALID_USERID:"INVALID_USERID",INVALID_CREATE_STREAM_SOURCE:"INVALID_CREATE_STREAM_SOURCE",INVALID_CREATE_STREAM_SCREEN:"INVALID_CREATE_STREAM_SCREEN",INVALID_CREATE_STREAM_AUDIO:"INVALID_CREATE_STREAM_AUDIO",INVALID_CREATE_STREAM_SCREEN_AUDIO:"INVALID_CREATE_STREAM_SCREEN_AUDIO",NOT_SUPPORTED_HTTP:"NOT_SUPPORTED_HTTP",NOT_SUPPORTED_WEBRTC:"NOT_SUPPORTED_WEBRTC",NOT_SUPPORTED_PROFILE:"NOT_SUPPORTED_PROFILE",NOT_SUPPORTED_MEDIA:"NOT_SUPPORTED_MEDIA",NOT_SUPPORTED_H264ENCODE:"NOT_SUPPORTED_H264ENCODE",NOT_SUPPORTED_H264DECODE:"NOT_SUPPORTED_H264DECODE",NOT_SUPPORTED_TRACK:"NOT_SUPPORTED_TRACK",NOT_SUPPORTED_SWITCH_DEVICE:"NOT_SUPPORTED_SWITCH_DEVICE",NOT_SUPPORTED_CAPTURE:"NOT_SUPPORTED_CAPTURE",NOT_SUPPORTED_AUX:"NOT_SUPPORTED_AUX",MICROPHONE_NOT_FOUND:"MICROPHONE_NOT_FOUND",CAMERA_NOT_FOUND:"CAMERA_NOT_FOUND",SIGNAL_RESPONSE_FAILED:"SIGNAL_RESPONSE_FAILED",CATCH_HANDLER_ERROR:"CATCH_HANDLER_ERROR",API_NOT_EXIST:"API_NOT_EXIST",CONNECTION_CLOSED:"CONNECTION_CLOSED",SUBSCRIBE_ALL_FALSE:"SUBSCRIBE_ALL_FALSE",SEI_NOT_SUPPORT:"SEI_NOT_SUPPORT",SEI_DISABLED:"SEI_DISABLED",SEI_BEFORE_PUBLISH:"SEI_BEFORE_PUBLISH",SEI_NOT_VIDEO:"SEI_NOT_VIDEO",CALL_FREQUENCY_LIMIT:"CALL_FREQUENCY_LIMIT",CONNECTION_ABORTED:"CONNECTION_ABORTED",API_CALL_ABORTED:"API_CALL_ABORTED",DUPLICATE_AUX:"DUPLICATE_AUX",SWITCH_PLAYBACK_QUALITY_TIMEOUT:"SWITCH_PLAYBACK_QUALITY_TIMEOUT"},cc={AVOID_REPEATED_CALL:A=>"previous ".concat(A.name,"() is ongoing, please avoid repeated calls."),INVALID_PARAMETER_REQUIRED(A){let{key:e,rule:o,fnName:a,value:c}=A;return"'".concat(e||o.name,"' is a required param when calling ").concat(a,"(), received: ").concat(c,".")},INVALID_PARAMETER_TYPE(A){let{key:e,rule:o,fnName:a,value:c}=A,d="".concat(e||o.name),C="";return C=Array.isArray(o.type)?o.type.join("|"):o.type,"'".concat(d,"' must be type of ").concat(C," when calling ").concat(a,"(), received type: ").concat(Cg(c),".")},INVALID_PARAMETER_EMPTY(A){let{key:e,rule:o,fnName:a,value:c}=A;return"'".concat(e||o.name,"' cannot be '").concat(c,"' when calling ").concat(a,"().")},INVALID_PARAMETER_INSTANCE(A){let{key:e,rule:o,fnName:a,value:c}=A,d="".concat(e||o.name),C="".concat(o.instanceOf.name||o.instanceOf);return"'".concat(d,"' must be instanceof ").concat(C," when calling ").concat(a,"(), received type: ").concat(Cg(c),".")},INVALID_PARAMETER_RANGE(A){let{key:e,rule:o,fnName:a,value:c}=A;return"'".concat(e||o.name,"' must be one of ").concat(o.values.join("|")," when calling ").concat(a,"(), received: ").concat(c,".")},INVALID_PARAMETER_MIN(A){let{key:e,rule:o,fnName:a,value:c}=A;return"the min value of ".concat(e||o.name," is ").concat(o.min,", received: ").concat(c,".")},INVALID_PARAMETER_MAX(A){let{key:e,rule:o,fnName:a,value:c}=A;return"the max value of ".concat(e||o.name," is ").concat(o.max,", received: ").concat(c,".")},API_CALL_TIMEOUT:A=>"".concat(A.commandDesc||A.command," timeout observed."),SIGNAL_CHANNEL_RECONNECTION_FAILED:"signal channel reconnection failed, please check your network.",SIGNAL_CHANNEL_SETUP_FAILED:A=>"SignalChannel setup failure: (errorCode: ".concat(A.errorCode,", errorMsg: ").concat(A.errorMsg," })."),ERROR_MESSAGE(A){let e="".concat(A.type," failed");return A.message&&(e="".concat(e,": ").concat(A.message,".")),e},EXCHANGE_SDP_TIMEOUT:"exchange sdp timeout.",DOWNLINK_RECONNECTION_FAILED:"downlink reconnection failed, please check your network and re-join room.",EXCHANGE_SDP_FAILED:A=>"exchange sdp failed ".concat(A.errMsg,"."),UPDATE_OFFER_TIMEOUT:"update offer timeout observed.",UPLINK_RECONNECTION_FAILED:"uplink reconnection failed, please check your network and publish again.",INVALID_RECORDID:"recordId must be an integer number.",INVALID_PURE_AUDIO:"pureAudioPushMode must be 1 or 2.",INVALID_STREAMID:"streamId must be a sting literal within 64 bytes, and not be empty.",INVALID_USER_DEFINE_RECORDID:"userDefineRecordId must be a sting literal contains (a-zA-Z),(0-9), underline and hyphen, within 64 bytes, and not be empty.",INVALID_USER_DEFINE_PUSH_ARGS:"userDefinePushArgs must be a sting literal within 256 bytes, and not be empty.",INVALID_PROXY:'proxy server url must start with "wss://".',INVALID_JOIN:"duplicate join() called.",INVALID_ROOMID_STRING:A=>"'".concat(A,"' must be validate string when useStringRoomId is true."),INVALID_ROOMID_INTEGER:A=>"'".concat(A,"' must be an integer between [1, 4294967294] when useStringRoomId is false."),INVALID_SIGNAL_CHANNEL:"SignalChannel is not ready yet.",JOIN_ROOM_TIMEOUT:"join room timeout.",JOIN_ROOM_FAILED(A){let{error:e,code:o}=A;return"Failed to join room - ".concat(e," code: ").concat(o)},REJOIN_ROOM_FAILED:A=>"reJoin room: ".concat(A.roomId," failed, please check your network."),INVALID_DESTROY:"please call leave() before destroy().",INVALID_PUBLISH:"please call join() before publish().",INVALID_UNPUBLISH:"stream has not been published yet.",INVALID_AUDIENCE:'no permission to publish() under live/audience, please call switchRole("anchor") firstly before publish().',INVALID_INITIALIZE:"cannot publish stream because stream is not initialized, is switching device, or has been closed.",INVALID_DUPLICATE_PUBLISHING:A=>"duplicate ".concat(A," stream publishing, please unpublish your prev ").concat(A," stream and then re-publish."),INVALID_SUBSCRIBE_UNDEFINED:"stream is undefined or null.",INVALID_SUBSCRIBE_LOCAL:"stream cannot be LocalStream.",INVALID_REMOTE_STREAM:"remoteStream does not exist because it has been unpublished by remote peer.",SUBSCRIBE_FAILED(A){let{message:e,userId:o,streamType:a}=A;return"failed to subscribe ".concat(o," ").concat(a," stream, reason: ").concat(e,".")},INVALID_ROLE:"switchRole can only be called in live mode.",INVALID_PARAMETER_SWITCH_ROLE:"role could only be set to a value as anchor or audience.",INVALID_OPERATION_SWITCH_ROLE:"please call join() before switchRole().",SWITCH_ROLE_TIMEOUT:"switchRole timeout.",SWITCH_ROLE_FAILED:A=>"switchRole failed, errCode: ".concat(A.code," errMsg: ").concat(A.message,"."),CLIENT_BANNED:A=>"client was banned because of ".concat(A.message,"."),INVALID_OPERATION_START_PUBLISH_CDN:"please call startPublishCDNStream() after join room and publish the local stream.",INVALID_OPERATION_STOP_PUBLISH_CDN:"please call startPublishCDNStream() before stopPublishCDNStream().",START_PUBLISH_CDN_FAILED:A=>"startPublishCDNStream failed, errMsg: ".concat(A.message,"."),STOP_PUBLISH_CDN_FAILED:A=>"stopPublishCDNStream failed, errMsg: ".concat(A.message,"."),INVALID_STREAM_ID:A=>"'".concat(A,"' can only consist of uppercase and lowercase english letters (a-zA-Z), numbers (0-9), hyphens and underscores."),START_MIX_TRANSCODE:"please call startMixTranscode() after join().",STOP_MIX_TRANSCODE:"please call stopMixTranscode() after startMixTranscode().",INVALID_AUDIO_VOLUME:"interval must be a number.",ENABLE_SMALL_STREAM_PUBLISHED:"Cannot enable small stream after localStream published.",DISABLE_SMALL_STREAM_PUBLISHED:"Cannot disable small stream after localStream published.",NOT_SUPPORTED_SMALL_STREAM:"your browser does not support opening small stream.",INVALID_SMALL_STREAM_PROFILE:"small stream profile is invalid.",INVALID_PARAMETER_REMOTE_STREAM:"remoteStream is invalid.",INVALID_OPERATION_CHANGE_SMALL:"cannot switch to the small stream without subscribing to the video of remoteStream.",REMOTE_NOT_PUBLISH_SMALL_STREAM:"remote peer does not publish small stream.",INVALID_SWITCH_DEVICE:"cannot switch device on current stream.",INVALID_SWITCH_DEVICE_PUBLISHING:"cannot switch device when publishing localStream.",INVALID_REPLACE_TRACK:"cannot replace track when publishing localStream.",INVALID_INITIALIZE_LOCAL_STREAM:"local stream has not initialized yet.",INVALID_ADD_TRACK_REPETITIVE:"previous addTrack is ongoing, please avoid repetitive execution.",INVALID_ADD_TRACK_REMOVING:"cannot add track when a track is removing.",INVALID_ADD_TRACK_PUBLISHING:"cannot add track when publishing localStream.",INVALID_STREAM_INITIALIZED:"your local stream haven't been initialized yet.",INVALID_ADD_TRACK_NUMBER:"a Stream has at most one audio track and one video track.",INVALID_REMOVE_AUDIO_TRACK:"remove audio track is not supported on your browser.",INVALID_REMOVE_AUDIO_ADDING:"cannot remove track when a track is adding.",INVALID_REMOVE_AUDIO_ON:"previous removeTrack is ongoing, please avoid repetitive execution.",INVALID_REMOVE_TRACK_PUBLISHING:"cannot remove track when publishing localStream.",INVALID_REMOVE_TRACK_NOT_TRACK:"localStream has not this track.",INVALID_REMOVE_TRACK_NUMBER:"remove the only video track is not supported, please use replaceTrack or muteVideo.",INVALID_REPLACE_TRACK_NO_TRACK:A=>"cannot replace ".concat(A.kind," track because stream has not ").concat(A.kind," track"),NOT_BUG_PACKAGE:"You need to buy packages, refer to tencent console.",START_MIX_TRANSCODE_FAILED:A=>"startMixTranscode failed, errMsg: ".concat(A.message,"."),STOP_MIX_TRANSCODE_FAILED:A=>"stopMixTranscode failed, errMsg: ".concat(A.message,"."),MIX_TRANSCODE_NOT_STARTED:"mixTranscode has not been started.",CANNOT_LESS_THAN_ZERO(A){let{key:e,rule:o,fnName:a,value:c}=A;return"'".concat(e||o.name,"' cannot be less than 0 when calling ").concat(a,"().")},MIX_PARAMS_VIDEO_FRAMERATE:"'config.videoFramerate' should be an integer between 0 and 30, excluding 0.",MIX_PARAMS_VIDEO_GOP:"'config.videoGOP' should be an integer between 1 and 8.",MIX_PARAMS_AUDIO_BITRATE:"'config.audioBitrate' should be an integer between 32 and 192.",MIX_PARAMS_USER_Z_ORDER:A=>"'".concat(A,"' is required and must be between 1 and 15."),MIX_PARAMS_NOT_SELF:"'config.mixUsers' must contain self.",MIX_PARAMS_USER_STREAM:"'config.videoWidth' and 'config.videoHeight' of output stream should be contain all mix stream.",INVALID_PLAY:"duplicate play() call observed, please stop() firstly.",INVALID_ELEMENT_ID:A=>{let{key:e,fnName:o}=A;return"'".concat(e,"' is not found in the document object when calling ").concat(o,"().")},INVALID_ELEMENT_ID_TYPE:A=>{let{key:e,fnName:o,type:a}=A;return"the element corresponding to '".concat(e,"' must be instanceof HTMLElement when calling ").concat(o,"(), received: ").concat(a,".")},PLAY_FAILED:A=>"".concat(A.media," play failed, browser exception: ").concat(A.error.toString()),INVALID_USERID:"userId cannot be all spaces.",INVALID_CREATE_STREAM_SOURCE:"LocalStream must be created by createStream() with either audio/video or audioSource/videoSource, but can not be mixed with audio/video and audioSource/videoSource.",INVALID_CREATE_STREAM_SCREEN:"screen/video cannot be both true.",INVALID_CREATE_STREAM_AUDIO:"audio/screenAudio cannot be both true.",INVALID_CREATE_STREAM_SCREEN_AUDIO:"when screen is true, screenAudio can be configured.",NOT_SUPPORTED_HTTP:"http protocol does not support the ability to capture microphone, camera and screen. please use https to deploy your page.",NOT_SUPPORTED_WEBRTC:"your browser or environment does not support full WebRTC capabilities.",NOT_SUPPORTED_PROFILE:"your browser does not support setVideoProfile.",NOT_SUPPORTED_MEDIA:"your browser or environment does not support navigator.mediaDevices.",NOT_SUPPORTED_H264ENCODE:"your device does not support H.264 encoding.",NOT_SUPPORTED_H264DECODE:"your device does not support H.264 decoding.",NOT_SUPPORTED_TRACK:A=>"".concat(A,"Track is not supported on your browser."),NOT_SUPPORTED_SWITCH_DEVICE:"switchDevice is not supported on your browser.",NOT_SUPPORTED_CAPTURE:"Your browser or environment does not support screen sharing, please check whether the browser version.",MICROPHONE_NOT_FOUND:"no microphone detected, please check your microphone.",CAMERA_NOT_FOUND:"no camera detected, please check your camera.",SIGNAL_RESPONSE_FAILED:A=>"".concat(A.signalResponse," failed, response code is ").concat(A.code," , errMsg: ").concat(A.message,"."),CATCH_HANDLER_ERROR(A){let{name:e,event:o}=A;return"an error was caught in ".concat(e,".on('").concat(o,"', handler), please check your code in 'handler'.")},API_NOT_EXIST(A){let{name:e}=A;return"experimental api ".concat(e," does not exist.")},REPEAT_JOIN:A=>"please avoid repeated join.",CONNECTION_CLOSED:"remoteStream has been unsubscribed or unpublished by remote user.",SUBSCRIBE_ALL_FALSE:"cannot subscribe when both audio & video are false, use client.unsubscribe() instead",CLIENT_DESTROYED(A){let{funName:e}=A;return"failed to call ".concat(e,"() because client was destroyed.")},SEI_NOT_SUPPORT:A=>"not support to sendSEIMessage".concat(A===!1?" without using h264 codec":""),SEI_DISABLED:"SEI is disabled",SEI_BEFORE_PUBLISH:"please call sendSEIMessage() after publish() success",SEI_NOT_VIDEO:"cannot send sei when localStream has not video.",CALL_FREQUENCY_LIMIT:A=>{let{isSize:e,name:o,timesInSecond:a,maxSizeInSecond:c}=A;return"api ".concat(o," call ").concat(e?"size":"times"," is over ").concat(e?"".concat(c," bytes"):a," in a second.")},CONNECTION_ABORTED:A=>"connection aborted due to: ".concat(A),API_CALL_ABORTED(A){let e;return e=A.message.includes("REMOTE_STREAM_NOT_EXIST")?"Subscribe ".concat(A.userId," ").concat(A.streamType," stream aborted, reason: remote user ").concat(A.userId," unpublished stream."):"API aborted, reason: ".concat(A.message),e},DUPLICATE_AUX:"only one auxiliary stream can be published in a room.",NOT_SUPPORTED_AUX:"publish auxiliary stream is not supported on your browser.",INVALID_PARAMETER_STREAMTYPE:A=>"'streamType' is required when 'userId' is not '*', calling ".concat(A,"()"),SWITCH_PLAYBACK_QUALITY_TIMEOUT:A=>"switchPlaybackQuality timeout: waiting for first frame of user ".concat(A.userId,".")},v2=(A,e)=>e?"".concat(Hh,"/").concat(A,"/").concat(e):"".concat(Hh,"/").concat(A,"/index.html"),fk=()=>{if(window.TRTC_ERROR_INFO&&window.TRTC_ERROR_LINK)return{TRTC_ERROR_INFO:window.TRTC_ERROR_INFO,TRTC_ERROR_LINK:window.TRTC_ERROR_LINK};let A=localStorage==null?void 0:localStorage.getItem(OS);if(A){A=JSON.parse(A);let e=document.createElement("script");e.type="text/javascript",e.text=A.message,document.body.appendChild(e);let o=window.TRTC_ERROR_INFO,a=window.TRTC_ERROR_LINK;return document.body.removeChild(e),{TRTC_ERROR_INFO:o,TRTC_ERROR_LINK:a}}return{}};function Xo(A){let{key:e,data:o,link:a,addDocLink:c=!0}=A,d="",C="",y="";Ra(cc[e])?d=cc[e](o):Yn(cc[e])&&(d=cc[e]);let{TRTC_ERROR_INFO:S,TRTC_ERROR_LINK:b}=fk();a?y="".concat(a.className,".html#").concat(a.fnName):b&&b[e]&&(Ra(b[e])?y=b[e](o):Yn(b[e])&&(y=b[e]));let V=d;return Kd()&&(S&&S[e]&&(Ra(S[e])?C=S[e](o):Yn(S[e])&&(C=S[e])),C&&(V=c?"".concat(C,` +请查看文档: `).concat(v2("zh-cn",y),` `):"".concat(C,` `),V+=d)),c&&(V+=` -Refer to: `.concat(i2("en",y),` -`)),V}var Bs,Bn,rk=gc(yq(),1),ak=class{constructor(){let A=!(arguments.length>0&&arguments[0]!==void 0)||arguments[0];Y(this,"countMap",new Map),Y(this,"distributionMap",new Map),Y(this,"version"),Y(this,"log",QA.createLogger({id:"kv"})),A&&(U.on("102",e=>{let{track:o,cost:a}=e;this.addSuccessEvent({key:o.kind===YA.AUDIO?501700:511700,cost:a})}),U.on("103",e=>{let{track:o,error:a}=e;this.addFailedEvent({key:o.kind===YA.AUDIO?501700:511700,error:a})}),U.on("266",e=>{let{enable:o}=e;this.log.info("".concat(o?"enable":"disable"," sso")),o?this.addSuccessEvent({key:525701}):this.addFailedEvent({key:525701})}))}getReportData(A,e){let o={msg_sdk_basic_info:{uint32_sdk_version:Mb(this.version||Pd),uint32_terminal_type:15,bytes_device_name:"",bytes_os_version:"",uint32_framework:30,uint32_network_type:0},stats_count:[...this.countMap.entries()].map(a=>{let[c,d]=a;return{uint32_key:c,uint32_count:d}}),stats_distribution:[...this.distributionMap.entries()].map(a=>{let[c,d]=a;return{uint32_key:c,distribution_items:[...d.entries()].map(C=>{let[y,S]=C;return{uint32_item_key:y,uint32_item_value:S}})}}),str_user_sig:A,bytes_report_token:e};return this.countMap.clear(),this.distributionMap.clear(),o}clear(){this.countMap.clear(),this.distributionMap.clear()}isEnumKey(A){let e=+String(A).slice(-3);return e>=700&&e<799}isErrorCodeKey(A){let e=+String(A).slice(-3);return e>=600&&e<699}isCountKey(A){let e=+String(A).slice(-3);return e>=0&&e<599}isNumberKey(A){let e=+String(A).slice(-3);return e>=800&&e<899}addCount(A){let{key:e,useUV:o=!1}=A;this.isCountKey(e)?o&&this.countMap.has(e)||this.countMap.set(e,(this.countMap.get(e)||0)+1):this.log.debug("".concat(e," is not count key, last 3 number should be 0~599"))}addEnum(A){let{key:e,value:o,useUV:a=!0}=A;var c;if(!this.isEnumKey(e))return this.log.debug("".concat(e," is not enum key, last 3 number should be 700~799"));if(a&&this.countMap.has(e))return;this.countMap.set(e,(this.countMap.get(e)||0)+1);let d=((c=this.distributionMap)==null?void 0:c.get(e))||new Map;d.set(o,(d.get(o)||0)+1),this.distributionMap.set(e,d)}addNumber(A){let{key:e,value:o,split:a=100,useUV:c=!1,max:d=5e3}=A;var C;if(!this.isNumberKey(e))return this.log.debug("".concat(e," is not number key, last 3 number should be 800~899"));if(c&&this.countMap.has(e))return;o>d&&(o=d),this.countMap.set(e,(this.countMap.get(e)||0)+1);let y=((C=this.distributionMap)==null?void 0:C.get(e))||new Map,S=0;if(bn(a))S=Math.floor(o/a);else for(let b=a.length-1;b>0;b--)if(o>a[b]){S=b;break}y.set(S,(y.get(S)||0)+1),this.distributionMap.set(e,y)}addSuccessEvent(A){let{key:e,cost:o,timeKey:a,split:c}=A;if(e&&(this.addEnum({key:e,value:1,useUV:!1}),o)){let d=+String(e).slice(-3);d<800&&d>=700?this.addNumber({key:a||e+100,value:o,split:c}):a||this.log.debug("time stat ignored, ".concat(e))}}addFailedEvent(A){let{key:e,error:o}=A;if(!e)return;let a=lt.UNKNOWN;o&&(bn(o)?a=o:(!Ye(o.extraCode)||!Ye(o.code))&&(a=o.extraCode||o.code)),this.addEnum({key:e,value:0,useUV:!1}),this.addEnum({key:e,value:Math.abs(a),useUV:!1})}},o2=((Bs=o2||{})[Bs.enterRoom=500700]="enterRoom",Bs[Bs.exitRoom=500701]="exitRoom",Bs[Bs.switchRole=500702]="switchRole",Bs[Bs.destroy=500703]="destroy",Bs[Bs.startLocalAudio=500704]="startLocalAudio",Bs[Bs.updateLocalAudio=500705]="updateLocalAudio",Bs[Bs.stopLocalAudio=500706]="stopLocalAudio",Bs[Bs.startLocalVideo=500707]="startLocalVideo",Bs[Bs.updateLocalVideo=500708]="updateLocalVideo",Bs[Bs.stopLocalVideo=500709]="stopLocalVideo",Bs[Bs.startScreenShare=500710]="startScreenShare",Bs[Bs.updateScreenShare=500711]="updateScreenShare",Bs[Bs.stopScreenShare=500712]="stopScreenShare",Bs[Bs.startRemoteVideo=500713]="startRemoteVideo",Bs[Bs.updateRemoteVideo=500714]="updateRemoteVideo",Bs[Bs.stopRemoteVideo=500715]="stopRemoteVideo",Bs[Bs.muteRemoteAudio=500716]="muteRemoteAudio",Bs[Bs.setRemoteAudioVolume=500717]="setRemoteAudioVolume",Bs[Bs.use=500718]="use",Bs[Bs.switchRoom=500719]="switchRoom",Bs[Bs.getPermissions=500720]="getPermissions",Bs[Bs.sendSEIMessage=5e5]="sendSEIMessage",Bs[Bs.sendCustomMessage=500001]="sendCustomMessage",Bs),s2=(A=>(A[A.AudioMixer=550700]="AudioMixer",A[A.AIDenoiser=551700]="AIDenoiser",A[A.VirtualBackground=570700]="VirtualBackground",A[A.Beauty=571700]="Beauty",A[A.Watermark=572700]="Watermark",A[A.BasicBeauty=574700]="BasicBeauty",A[A.FaceDetector=575700]="FaceDetector",A[A.CDNStreaming=590700]="CDNStreaming",A[A.DeviceDetector=591700]="DeviceDetector",A[A.Debug=592700]="Debug",A[A.SmallStreamAutoSwitcher=593700]="SmallStreamAutoSwitcher",A[A.VideoMixer=594700]="VideoMixer",A[A.AudioProcessor=595700]="AudioProcessor",A[A.LEBPlayer=596700]="LEBPlayer",A[A.RealtimeTranscriber=597700]="RealtimeTranscriber",A))(s2||{}),ay=(A=>(A[A.AudioMixer=550701]="AudioMixer",A[A.AIDenoiser=551701]="AIDenoiser",A[A.VirtualBackground=570701]="VirtualBackground",A[A.Beauty=571701]="Beauty",A[A.Watermark=572701]="Watermark",A[A.BasicBeauty=574701]="BasicBeauty",A[A.FaceDetector=575701]="FaceDetector",A[A.CDNStreaming=590701]="CDNStreaming",A[A.DeviceDetector=591701]="DeviceDetector",A[A.Debug=592701]="Debug",A[A.SmallStreamAutoSwitcher=593701]="SmallStreamAutoSwitcher",A[A.VideoMixer=594701]="VideoMixer",A[A.AudioProcessor=595701]="AudioProcessor",A[A.LEBPlayer=596701]="LEBPlayer",A[A.RealtimeTranscriber=597701]="RealtimeTranscriber",A))(ay||{}),F0=(A=>(A[A.AudioMixer=550702]="AudioMixer",A[A.AIDenoiser=551702]="AIDenoiser",A[A.VirtualBackground=570702]="VirtualBackground",A[A.Beauty=571702]="Beauty",A[A.Watermark=572702]="Watermark",A[A.BasicBeauty=574702]="BasicBeauty",A[A.FaceDetector=575702]="FaceDetector",A[A.CDNStreaming=590702]="CDNStreaming",A[A.DeviceDetector=591702]="DeviceDetector",A[A.Debug=592702]="Debug",A[A.SmallStreamAutoSwitcher=593702]="SmallStreamAutoSwitcher",A[A.VideoMixer=594702]="VideoMixer",A[A.AudioProcessor=595702]="AudioProcessor",A[A.LEBPlayer=596702]="LEBPlayer",A[A.RealtimeTranscriber=597702]="RealtimeTranscriber",A))(F0||{}),gy=((Bn=gy||{})[Bn.DECODER_TYPE=514700]="DECODER_TYPE",Bn[Bn.DECODER_HW_SW=514701]="DECODER_HW_SW",Bn[Bn.DECODE_RESULT=514702]="DECODE_RESULT",Bn[Bn.DECODE_FAILED_OS=514703]="DECODE_FAILED_OS",Bn[Bn.DOWNGRADE_RESULT=514704]="DOWNGRADE_RESULT",Bn[Bn.DOWNGRADE_WEBCODECS_VIDEO=514705]="DOWNGRADE_WEBCODECS_VIDEO",Bn[Bn.DOWNGRADE_WEBCODECS_2D=514706]="DOWNGRADE_WEBCODECS_2D",Bn[Bn.DOWNGRADE_WASM_WEGBL=514707]="DOWNGRADE_WASM_WEGBL",Bn[Bn.DOWNGRADE_WASM_VIDEO=514708]="DOWNGRADE_WASM_VIDEO",Bn[Bn.DOWNGRADE_WASM_2D=514709]="DOWNGRADE_WASM_2D",Bn[Bn.DECODE_H264_RESULT=514710]="DECODE_H264_RESULT",Bn[Bn.DECODE_H265_RESULT=514711]="DECODE_H265_RESULT",Bn[Bn.DECODE_VP8_RESULT=514712]="DECODE_VP8_RESULT",Bn[Bn.DECODE_CAPABILITIES=514713]="DECODE_CAPABILITIES",Bn[Bn.H264_PROFILE_LEVEL_ID_HIGH=514714]="H264_PROFILE_LEVEL_ID_HIGH",Bn[Bn.H264_PROFILE_LEVEL_ID_MAIN=514715]="H264_PROFILE_LEVEL_ID_MAIN",Bn[Bn.RENDER_FREEZE_RATE=514850]="RENDER_FREEZE_RATE",Bn[Bn.DATA_FREEZE_RATE=514851]="DATA_FREEZE_RATE",Bn[Bn.VIDEO_CONSUME_RENDER_RATE=514852]="VIDEO_CONSUME_RENDER_RATE",Bn),Kq=new ak(!0),jh=new ak(!1),Ai=Kq,Qs={result:!1,detail:{isBrowserSupported:!1,isWebRTCSupported:!1,isWebCodecsSupported:!1,isMediaDevicesSupported:!1,isScreenShareSupported:!1,isSmallStreamSupported:!1,isH264EncodeSupported:!1,isVp8EncodeSupported:!1,isH265EncodeSupported:!1,isH264DecodeSupported:!1,isVp8DecodeSupported:!1,isH265DecodeSupported:!1}},n2=new Map([[er,["Firefox",$S]],[Wf,["Edg",Lb]],[_0,["Chrome",T0]],[Bg,["Safari",eQ]],[KE,["TBS",Fb]],[_p,["XWEB",Ob]],[$B&&wp,["WeChat",Pb]],[M0,["QQ(Win)",xb]],[eM,["QQ(Mobile)",zf]],[Tp,["QQ(Mobile X5)",zf]],[tM,["QQ(Mac)",Yb]],[v0,["QQ(iPad)",iM]],[R0,["MI",Np]],[Kh,["HW",Kb]],[oM,["Samsung",jb]],[sM,["OPPO",Wb]],[nM,["VIVO",rM]],[jf,["EDGE",kb]],[AM,["SogouMobile",D0]],[S0,["Sogou",Ub]]]);function dM(){let A=n2.get(!0);return{browserName:A?A[0]:"unknown",browserVersion:A?A[1]:"unknown"}}var gk=function(){return!(Jb||jf||Wf&&y0<80||er&&f0<56)},O0=function(){return["VideoDecoder","VideoEncoder","AudioEncoder","AudioDecoder"].every(A=>A in window)},ck=function(){if(!navigator.mediaDevices)return gu()||QA.error(cc.NOT_SUPPORTED_MEDIA),!1;let A=["getUserMedia","enumerateDevices"];return A.filter(e=>e in navigator.mediaDevices).length===A.length},r2=!1;function gu(){return location.protocol==="http:"&&!bp&&(r2||QA.error(Zo({key:So.NOT_SUPPORTED_HTTP})),r2=!0,!0)}var CM=function(){return window?.OffscreenCanvas&&window?.MediaStreamTrackProcessor&&window?.MediaStreamTrackGenerator},jq=function(){return!(window==null||!window.MediaStreamTrackGenerator)},hM=function(){return KA(this,null,function*(){var A,e,o;if(Qs.detail.isH264EncodeSupported&&Qs.detail.isVp8EncodeSupported)return{isH264EncodeSupported:Qs.detail.isH264EncodeSupported,isVp8EncodeSupported:Qs.detail.isVp8EncodeSupported,isH265EncodeSupported:Qs.detail.isH265EncodeSupported};let a,c=!1,d=!1,C=!1;try{let y=new RTCPeerConnection,S=document.createElement(YA.CANVAS);S.getContext("2d");let b=S.captureStream(0);return y.addTrack(b.getVideoTracks()[0],b),a=yield y.createOffer(),c=((A=a.sdp)==null?void 0:A.toLowerCase().indexOf("h264"))!==-1,d=((e=a.sdp)==null?void 0:e.toLowerCase().indexOf("vp8"))!==-1,C=((o=a.sdp)==null?void 0:o.toLowerCase().indexOf("h265"))!==-1,y.close(),{isH264EncodeSupported:c,isVp8EncodeSupported:d,isH265EncodeSupported:C}}catch{return{isH264EncodeSupported:!1,isVp8EncodeSupported:!1,isH265EncodeSupported:!1}}})},lk=function(){return KA(this,null,function*(){var A;if(Qs.detail.isH264DecodeSupported&&Qs.detail.isVp8DecodeSupported)return{isH264DecodeSupported:Qs.detail.isH264DecodeSupported,isVp8DecodeSupported:Qs.detail.isVp8DecodeSupported,isH265DecodeSupported:Qs.detail.isH265DecodeSupported};let e,o=!1,a=!1;try{let c=new RTCPeerConnection;Hd()?(c.addTransceiver(YA.VIDEO,{direction:"recvonly"}),e=yield c.createOffer()):e=yield c.createOffer({offerToReceiveVideo:!0}),e.sdp.toLowerCase().indexOf("h264")!==-1&&(o=!0),e.sdp.toLowerCase().indexOf("vp8")!==-1&&(a=!0);let d=((A=e.sdp)==null?void 0:A.toLowerCase().indexOf("h265"))!==-1;return c.close(),{isH264DecodeSupported:o,isVp8DecodeSupported:a,isH265DecodeSupported:d}}catch{return{isH264DecodeSupported:!1,isVp8DecodeSupported:!1,isH265DecodeSupported:!1}}})},Ik=vb(A=>KA(null,null,function*(){let e=Date.now(),o=Iy(),a=ck(),c=O0();if(Qs.detail.isWebRTCSupported=o,Qs.detail.isMediaDevicesSupported=a,Qs.detail.isWebCodecsSupported=c,Qs.detail.isScreenShareSupported=xp(),Qs.detail.isSmallStreamSupported=pM(),A===37)return Object.assign(Qs.detail,yield function(){return KA(this,null,function*(){return zE||(zE=new Promise(MA=>KA(null,null,function*(){let ee={isH264EncodeSupported:!1,isH264DecodeSupported:!1,isVp8EncodeSupported:!1,isVp8DecodeSupported:!1};if(!O0())return void MA(ee);let Be=null,Pe=null,Me=null,fi=()=>{Me&&clearTimeout(Me),Be=null,Pe=null};try{Be=document.createElement("canvas"),Pe=Be.getContext("2d"),Be.width=320,Be.height=240;let Ge=0,dt=()=>{!Pe||!Be||(Pe.fillStyle="hsl(".concat(Ge%360,", 50%, 50%)"),Pe.fillRect(0,0,Be.width,Be.height),Pe.fillStyle="white",Pe.font="20px Arial",Pe.fillText("Frame ".concat(Ge),10,30),Ge++)};Me=setTimeout(()=>{fi(),MA(ee)},5e3);let Ci=[{type:"h264",encodeConfig:{codec:"avc1.42E01E",avc:{format:"annexb"},width:320,height:240,bitrate:1e6},decodeConfig:{codec:"avc1.42E01E",avc:{format:"annexb"}}},{type:"vp8",encodeConfig:{codec:"vp8",width:320,height:240,bitrate:1e6},decodeConfig:{codec:"vp8"}}];(yield Promise.all(Ci.map(yi=>KA(null,null,function*(){let Yo,Vo={type:yi.type,encodeSupported:!1,decodeSupported:!1};try{Yo=yield new Promise((Qn,Jo)=>KA(null,null,function*(){try{let Ns=new VideoEncoder({output:ma=>{Qn(ma),Vo.encodeSupported=!0},error:Jo});Ns.configure(yi.encodeConfig),dt();let pg=new VideoFrame(Be,{timestamp:0});Ns.encode(pg,{keyFrame:!0}),pg.close(),yield Ns.flush(),Ns.close()}catch(Ns){Jo(Ns)}}))}catch(Qn){return QA.warn("".concat(yi.type," encoder error:"),Qn),Vo}try{yield new Promise((Qn,Jo)=>KA(null,null,function*(){try{let Ns=new VideoDecoder({output:pg=>{Vo.decodeSupported=!0,Qn(0),pg.close()},error:Jo});Ns.configure(yi.decodeConfig),Ns.decode(Yo),yield Ns.flush(),Ns.close()}catch(Ns){Jo(Ns)}}))}catch(Qn){QA.warn("".concat(yi.type," decoder error:"),Qn)}return Vo})))).forEach(yi=>{yi.type==="h264"?(ee.isH264EncodeSupported=yi.encodeSupported,ee.isH264DecodeSupported=yi.decodeSupported):yi.type==="vp8"&&(ee.isVp8EncodeSupported=yi.encodeSupported,ee.isVp8DecodeSupported=yi.decodeSupported)}),fi(),MA(ee)}catch(Ge){fi(),QA.warn("detectWebCodecsSupported failed:",Ge),MA(ee)}})),zE)})}()),Qs.detail.isBrowserSupported=c,Qs.result=a&&c,Qs.result||QA.error("".concat(navigator.userAgent," ").concat(I0(Qs.detail,!1))),yk(A),Ai.addNumber({key:523800,value:Date.now()-e}),Qs;if(Qs.result&&Qs.detail.isH264EncodeSupported&&Qs.detail.isVp8EncodeSupported&&Qs.detail.isH265EncodeSupported&&Qs.detail.isH264DecodeSupported&&Qs.detail.isVp8DecodeSupported&&Qs.detail.isH265DecodeSupported)return Qs;let d=gk(),{encode:C,decode:y}=yield function(){return KA(this,null,function*(){let[MA,ee]=yield Promise.all([hM(),lk()]);return{encode:{h264:MA.isH264EncodeSupported,vp8:MA.isVp8EncodeSupported,h265:MA.isH265EncodeSupported},decode:{h264:ee.isH264DecodeSupported,vp8:ee.isVp8DecodeSupported,h265:ee.isH265DecodeSupported}}})}(),{h264:S,vp8:b}=C,{h264:V}=y,{h265:J}=C,{vp8:gA,h265:CA}=y;if(!S||!b){let MA=yield hM();QA.warn("detect encode again h264:".concat(S," vp8:").concat(b," result: ").concat(JSON.stringify(MA))),S=MA.isH264EncodeSupported,b=MA.isVp8EncodeSupported}if(S&&V&&Ja&&sE&&!_p&&!KE&&(!sM||jE!==115)){let{encode:MA,decode:ee}=yield a2();S=MA,V=ee}return Qs.result=d&&o&&a&&(S||b)&&(V||gA),Qs.detail.isBrowserSupported=d,Qs.detail.isWebRTCSupported=o,Qs.detail.isH264EncodeSupported=S,Qs.detail.isVp8EncodeSupported=b,Qs.detail.isH265EncodeSupported=J,Qs.detail.isH264DecodeSupported=V,Qs.detail.isVp8DecodeSupported=gA,Qs.detail.isH265DecodeSupported=CA,Qs.result||QA.error("".concat(navigator.userAgent," ").concat(I0(Qs.detail,!1))),yk(),Ai.addNumber({key:523800,value:Date.now()-e}),Qs})),Wq=function(){return Qs.result},xp=function(){return!(!navigator.mediaDevices||!navigator.mediaDevices.getDisplayMedia)},zq=typeof HTMLMediaElement<"u"&&"setSinkId"in HTMLMediaElement.prototype,uk=null;function a2(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:2e3;return KA(this,null,function*(){return uk||(uk=new Promise(e=>KA(null,null,function*(){let o={encode:!1,decode:!1},a=()=>{};try{let c=document.createElement("canvas"),d=c.getContext("2d");c.width=640,c.height=480;let C=setInterval(()=>{d.fillText("test",Math.floor(640*Math.random()),Math.floor(480*Math.random()))},66),y=-1,S=-1;a=()=>{clearInterval(y),clearInterval(C),clearTimeout(S),V.close(),J.close(),b.getTracks().forEach(Be=>Be.stop())},S=setTimeout(()=>{a(),e(o)},A);let b=c.captureStream(),V=new RTCPeerConnection({}),J=new RTCPeerConnection({offerToReceiveAudio:!0,offerToReceiveVideo:!0});V.addEventListener("icecandidate",Be=>J.addIceCandidate(Be.candidate)),J.addEventListener("icecandidate",Be=>V.addIceCandidate(Be.candidate)),V.addTrack(b.getVideoTracks()[0],b);let gA=yield V.createOffer();yield V.setLocalDescription(gA),yield J.setRemoteDescription(gA);let CA=yield J.createAnswer(),MA=rk.default.parse(CA.sdp),ee=MA.media[0].rtp.findIndex(Be=>Be.codec==="H264");MA.media[0].rtp=[MA.media[0].rtp[ee]],MA.media[0].fmtp=MA.media[0].fmtp.filter(Be=>Be.payload===MA.media[0].rtp[0].payload),MA.media[0].rtcpFb&&(MA.media[0].rtcpFb=MA.media[0].rtcpFb.filter(Be=>Be.payload===MA.media[0].rtp[0].payload)),CA.sdp=rk.default.write(MA),yield J.setLocalDescription(CA),yield V.setRemoteDescription(CA),y=setInterval(()=>KA(null,null,function*(){o.encode&&o.decode&&(a(),e(o));let[Be,Pe]=yield Promise.all([V.getSenders()[0].getStats(),J.getReceivers()[0].getStats()]);o.encode||Be.forEach(Me=>{Me.type==="outbound-rtp"&&(Me.mediaType===YA.VIDEO||Me.kind===YA.VIDEO)&&Me.bytesSent>0&&(o.encode=!0)}),o.decode||Pe.forEach(Me=>{Me.type==="inbound-rtp"&&(Me.mediaType===YA.VIDEO||Me.kind===YA.VIDEO)&&Me.bytesReceived>0&&(o.decode=!0)})}),100)}catch(c){a(),QA.warn("detectH264Supported failed",c),e({encode:!0,decode:!0})}})).then(e=>(e.encode||(e.decode=!0),(!e.encode||!e.decode)&&QA.warn("detectH264Supported encode: ".concat(e.encode," decode: ").concat(e.decode," ").concat(TC)),e)),uk)})}var zE=null,Ek=(A,e,o)=>{location.protocol==="http:"&&!bp&&(A[e]=()=>{throw new oi({code:lt.INVALID_OPERATION,message:cc.NOT_SUPPORTED_HTTP})})},BM=function(A){return!(A.type!=="candidate-pair"||!A.nominated||A.state!=="in-progress"&&A.state!=="succeeded")&&!(wr(A.selected)&&!A.selected)};function ZE(){let A="";if(screen.width){let e=screen.width?screen.width*window.devicePixelRatio:"",o=screen.height?screen.height*window.devicePixelRatio:"";A+="".concat(e," * ").concat(o)}return A}function dk(){return navigator.getUserMedia||navigator.mediaDevices&&navigator.mediaDevices.getUserMedia}function Ck(){let A={isSupported:!1},e=["AudioContext","webkitAudioContext","mozAudioContext","msAudioContext"];for(let o=0;o=86,x0="RTCRtpScriptTransform"in window,mk=NC&&(Yp||x0),Iy=function(){return["RTCPeerConnection","webkitRTCPeerConnection","RTCIceGatherer"].filter(A=>A in window).length>0};function Y0(){let A={AudioDecoder:!1,AudioEncoder:!1,VideoDecoder:!1,VideoEncoder:!1,ImageDecoder:!1};return Ye(window.AudioDecoder)||(A.AudioDecoder=!0),Ye(window.AudioEncoder)||(A.AudioEncoder=!0),Ye(window.VideoDecoder)||(A.VideoDecoder=!0),Ye(window.VideoEncoder)||(A.VideoEncoder=!0),Ye(window.ImageDecoder)||(A.ImageDecoder=!0),A}function I2(){return"mediaSession"in navigator&&!Ye(navigator.mediaSession.setActionHandler)}function uy(){return!Ye(window.WebTransport)}function fM(){return typeof WebAssembly<"u"&&WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11]))}function u2(){let A={browser:"".concat(iQ.name,"/").concat(iQ.version),os:ul(),displayResolution:ZE(),isScreenShareSupported:xp(),isWebRTCSupported:Iy(),isGetUserMediaSupported:dk(),isWebAudioSupported:Ck(),isWebSocketsSupported:"WebSocket"in window&&window.WebSocket.CLOSING===2,isWebCodecSupported:Y0(),isMediaSessionSupported:I2(),isWebTransportSupported:uy()};return navigator.userAgent.includes("miniProgram")&&(A.browser="mini/".concat(A.browser)),A}var fk="checkResult";function yk(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:30;jA.setItem(fk+A,{ua:navigator.userAgent,checkResult:Qs})}function Dk(A){gu();let e=jA.getItem(fk+A);e&&e.ua===navigator.userAgent&&e.checkResult&&function(o,a){return!!JE(o)&&Object.keys(a).every(c=>c in o)}(e.checkResult.detail,Qs.detail)&&(Qs=e.checkResult),Ik(A)}function Vp(){return"requestVideoFrameCallback"in HTMLVideoElement.prototype}var cQ="RTCRtpReceiver"in window&&"jitterBufferTarget"in window.RTCRtpReceiver.prototype;function E2(A){return{h264:1,h265:2,vp8:3,vp9:4,av1:5}[A]}var d2=!1;function yM(){return KA(this,null,function*(){var A;try{if(d2||(A=navigator?.mediaCapabilities)==null||!A.encodingInfo)return;let e=Lp(),o=ql();if(e===0||o===0)return;d2=!0;let a=["H264","VP8","VP9","AV1","H265"],[c,d]=yield Promise.all([Sk(a),Mk(a)]);c&&Object.keys(c).forEach(S=>{let b=E2(S.toLowerCase());Ai.addEnum({key:513707,value:+"".concat(b).concat(+c[S].supported).concat(+c[S].powerEfficient).concat(e).concat(o),useUV:!1})}),d&&Object.keys(d).forEach(S=>{let b=E2(S.toLowerCase());Ai.addEnum({key:514713,value:+"".concat(b).concat(+d[S].supported).concat(+d[S].powerEfficient).concat(e).concat(o),useUV:!1})});let{sender:C,receiver:y}=C2();Ai.addEnum({key:513708,value:+"".concat(e).concat(o).concat(+C.high),useUV:!1}),Ai.addEnum({key:513709,value:+"".concat(e).concat(o).concat(+C.main),useUV:!1}),Ai.addEnum({key:514714,value:+"".concat(e).concat(o).concat(+y.high),useUV:!1}),Ai.addEnum({key:514715,value:+"".concat(e).concat(o).concat(+y.main),useUV:!1})}catch(e){QA.info("detectVideoCodecCapabilities failed",e)}})}function Sk(A){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1920,o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1080,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:30,c=arguments.length>4&&arguments[4]!==void 0?arguments[4]:3e3;return KA(this,null,function*(){let d={};try{for(let C of A){let y=yield navigator.mediaCapabilities.encodingInfo({type:"webrtc",video:{contentType:"video/".concat(C),width:e,height:o,bitrate:c,framerate:a}});d[C]=y}}catch{}return d})}function Mk(A){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1920,o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1080,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:30,c=arguments.length>4&&arguments[4]!==void 0?arguments[4]:3e3;return KA(this,null,function*(){let d={};try{for(let C of A){let y=yield navigator.mediaCapabilities.decodingInfo({type:"webrtc",video:{contentType:"video/".concat(C),width:e,height:o,bitrate:c,framerate:a}});d[C]=y}}catch{}return d})}function C2(){let A={sender:{base:!1,main:!1,high:!1},receiver:{base:!1,main:!1,high:!1}};try{if(RTCRtpSender&&typeof RTCRtpSender.getCapabilities=="function"){let e=RTCRtpSender.getCapabilities("video");e&&e.codecs&&e.codecs.filter(o=>o.mimeType.toLowerCase()==="video/h264").forEach(o=>{if(o.sdpFmtpLine){let a=o.sdpFmtpLine.match(/profile-level-id=([0-9a-fA-F]+)/);if(a&&a[1])switch(a[1].slice(0,2)){case"42":A.sender.base=!0;break;case"4d":A.sender.main=!0;break;case"64":A.sender.high=!0}}})}if(RTCRtpReceiver&&typeof RTCRtpReceiver.getCapabilities=="function"){let e=RTCRtpReceiver.getCapabilities("video");e&&e.codecs&&e.codecs.filter(o=>o.mimeType.toLowerCase()==="video/h264").forEach(o=>{if(o.sdpFmtpLine){let a=o.sdpFmtpLine.match(/profile-level-id=([0-9a-fA-F]+)/);if(a&&a[1])switch(a[1].slice(0,2)){case"42":A.receiver.base=!0;break;case"4d":A.receiver.main=!0;break;case"64":A.receiver.high=!0}}})}}catch(e){QA.warn("get H264 profile levelId failed",e)}return A}var Zq=gc(Hl(),1),DM=Symbol("instance"),SM=Symbol("cacheResult"),GC=class{constructor(A,e,o){this.oldState=A,this.newState=e,this.action=o,this.aborted=!1}abort(A){this.aborted=!0,Jp.call(A,this.oldState,new Error("action '".concat(this.action,"' aborted")))}toString(){return"".concat(this.action,"ing")}},V0=class extends Error{constructor(A,e,o){super(e),this.state=A,this.message=e,this.cause=o}},MM=new Map;function lc(A,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return(a,c,d)=>{let C=o.action||c;if(!o.context){let S=MM.get(a)||[];MM.has(a)||MM.set(a,S),S.push({from:A,to:e,action:C})}let y=d.value;d.value=function(){let S=this;for(var b=arguments.length,V=new Array(b),J=0;J{if(o.fail&&o.fail.call(this,Me),o.sync){if(o.ignoreError)return Me;throw Me}return o.ignoreError?Promise.resolve(Me):Promise.reject(Me)};if(gA)return CA(gA);let MA=S.state,ee=new GC(MA,e,C);Jp.call(S,ee);let Be=Me=>{var fi;return S[SM]=Me,ee.aborted||(Jp.call(S,e),(fi=o.success)===null||fi===void 0||fi.call(this,S[SM])),Me},Pe=Me=>(Jp.call(S,MA,Me),CA(Me));try{let Me=y.apply(this,V);return function(fi){return typeof fi=="object"&&fi&&"then"in fi}(Me)?Me.then(Be).catch(Pe):o.sync?Be(Me):Promise.resolve(Be(Me))}catch(Me){return Pe(new V0(S._state,"".concat(S.name," ").concat(C," from ").concat(A," to ").concat(e," failed: ").concat(Me),Me instanceof Error?Me:new Error(String(Me))))}}}}var J0=typeof window<"u"&&window.__AFSM__?(A,e)=>{window.dispatchEvent(new CustomEvent(A,{detail:e}))}:typeof importScripts<"u"?(A,e)=>{postMessage({type:A,payload:e})}:()=>{};function Jp(A,e){let o=this._state;this._state=A;let a=A.toString();A&&this.emit(a,o),this.emit(Zs.STATECHANGED,A,o,e),this.updateDevTools({value:A,old:o,err:e instanceof Error?e.message:String(e)})}var Zs=class xC extends Zq.default{constructor(e,o,a){super(),this.name=e,this.groupName=o,this._state=xC.INIT,e||(e=Date.now().toString(36)),a?Object.setPrototypeOf(this,a):a=Object.getPrototypeOf(this),o||(this.groupName=this.constructor.name);let c=a[DM];c?this.name=c.name+"-"+c.count++:a[DM]={name:this.name,count:0},this.updateDevTools({diagram:this.stateDiagram})}get stateDiagram(){let e=Object.getPrototypeOf(this),o=MM.get(e)||[],a=new Set,c=[],d=[],C=new Set,y=Object.getPrototypeOf(e);MM.has(y)&&(y.stateDiagram.forEach(b=>a.add(b)),y.allStates.forEach(b=>C.add(b))),o.forEach(b=>{let{from:V,to:J,action:gA}=b;typeof V=="string"?c.push({from:V,to:J,action:gA}):V.length?V.forEach(CA=>{c.push({from:CA,to:J,action:gA})}):d.push({to:J,action:gA})}),c.forEach(b=>{let{from:V,to:J,action:gA}=b;C.add(V),C.add(J),C.add(gA+"ing"),a.add("".concat(V," --> ").concat(gA,"ing : ").concat(gA)),a.add("".concat(gA,"ing --> ").concat(J," : ").concat(gA," 🟢")),a.add("".concat(gA,"ing --> ").concat(V," : ").concat(gA," 🔴"))}),d.forEach(b=>{let{to:V,action:J}=b;a.add("".concat(J,"ing --> ").concat(V," : ").concat(J," 🟢")),C.forEach(gA=>{gA!==V&&a.add("".concat(gA," --> ").concat(J,"ing : ").concat(J))})});let S=[...a];return Object.defineProperties(e,{stateDiagram:{value:S},allStates:{value:C}}),S}static get(e){let o;return typeof e=="string"?(o=xC.instances.get(e),o||xC.instances.set(e,o=new xC(e,void 0,Object.create(xC.prototype)))):(o=xC.instances2.get(e),o||xC.instances2.set(e,o=new xC(e.constructor.name,void 0,Object.create(xC.prototype)))),o}static getState(e){var o;return(o=xC.get(e))===null||o===void 0?void 0:o.state}updateDevTools(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};J0(xC.UPDATEAFSM,Object.assign({name:this.name,group:this.groupName},e))}get state(){return this._state}set state(e){Jp.call(this,e)}};Zs.STATECHANGED="stateChanged",Zs.UPDATEAFSM="updateAFSM",Zs.INIT="[*]",Zs.ON="on",Zs.OFF="off",Zs.instances=new Map,Zs.instances2=new WeakMap;var H0=typeof window<"u",vk=H0&&window.requestIdleCallback||function(A){let e=Date.now();return setTimeout(()=>{A({didTimeout:!1,timeRemaining:()=>Math.max(0,50-(Date.now()-e))})},1e3)},Cl=H0&&window.cancelIdleCallback||function(A){clearTimeout(A)},Hp=H0&&(window.cancelAnimationFrame||window.mozCancelAnimationFrame),Ey=class gE{static generateTaskID(){return this.currentTaskID++}static run(e,o,a){a!=null&&a.fps&&(a.delay=a.delay||Number((1e3/a.fps).toFixed(2))),a=pi(e==="interval"?{delay:2e3,count:0,backgroundTask:!0}:e==="ric"?{delay:1e4,count:0}:e==="raf"?{fps:60,delay:16.6,count:0,backgroundTask:!0}:{delay:2e3,count:0,backgroundTask:!0},a);let c=Bo(pi({taskID:this.generateTaskID(),loopCount:0,intervalID:null,timeoutID:null,rafID:null,ricID:null,taskName:e,callback:o},a),{delay:a.delay});return this.taskMap.set(c.taskID,c),this[e](c),c.taskID}static interval(e){return e.intervalID=setInterval(()=>{e.callback(),e.loopCount+=1,gE.isBreakLoop(e)},e.delay)}static intervalInWorker(e){gE.sharedWorker||(gE.sharedWorker=new Worker(URL.createObjectURL(new Blob([` +Refer to: `.concat(v2("en",y),` +`)),V}var Bs,Bn,yk=gc($q(),1),Dk=class{constructor(){let A=!(arguments.length>0&&arguments[0]!==void 0)||arguments[0];Y(this,"countMap",new Map),Y(this,"distributionMap",new Map),Y(this,"version"),Y(this,"log",QA.createLogger({id:"kv"})),A&&(F.on("102",e=>{let{track:o,cost:a}=e;this.addSuccessEvent({key:o.kind===YA.AUDIO?501700:511700,cost:a})}),F.on("103",e=>{let{track:o,error:a}=e;this.addFailedEvent({key:o.kind===YA.AUDIO?501700:511700,error:a})}),F.on("266",e=>{let{enable:o}=e;this.log.info("".concat(o?"enable":"disable"," sso")),o?this.addSuccessEvent({key:525701}):this.addFailedEvent({key:525701})}))}getReportData(A,e){let o={msg_sdk_basic_info:{uint32_sdk_version:Yb(this.version||Hd),uint32_terminal_type:15,bytes_device_name:"",bytes_os_version:"",uint32_framework:30,uint32_network_type:0},stats_count:[...this.countMap.entries()].map(a=>{let[c,d]=a;return{uint32_key:c,uint32_count:d}}),stats_distribution:[...this.distributionMap.entries()].map(a=>{let[c,d]=a;return{uint32_key:c,distribution_items:[...d.entries()].map(C=>{let[y,S]=C;return{uint32_item_key:y,uint32_item_value:S}})}}),str_user_sig:A,bytes_report_token:e};return this.countMap.clear(),this.distributionMap.clear(),o}clear(){this.countMap.clear(),this.distributionMap.clear()}isEnumKey(A){let e=+String(A).slice(-3);return e>=700&&e<799}isErrorCodeKey(A){let e=+String(A).slice(-3);return e>=600&&e<699}isCountKey(A){let e=+String(A).slice(-3);return e>=0&&e<599}isNumberKey(A){let e=+String(A).slice(-3);return e>=800&&e<899}addCount(A){let{key:e,useUV:o=!1}=A;this.isCountKey(e)?o&&this.countMap.has(e)||this.countMap.set(e,(this.countMap.get(e)||0)+1):this.log.debug("".concat(e," is not count key, last 3 number should be 0~599"))}addEnum(A){let{key:e,value:o,useUV:a=!0}=A;var c;if(!this.isEnumKey(e))return this.log.debug("".concat(e," is not enum key, last 3 number should be 700~799"));if(a&&this.countMap.has(e))return;this.countMap.set(e,(this.countMap.get(e)||0)+1);let d=((c=this.distributionMap)==null?void 0:c.get(e))||new Map;d.set(o,(d.get(o)||0)+1),this.distributionMap.set(e,d)}addNumber(A){let{key:e,value:o,split:a=100,useUV:c=!1,max:d=5e3}=A;var C;if(!this.isNumberKey(e))return this.log.debug("".concat(e," is not number key, last 3 number should be 800~899"));if(c&&this.countMap.has(e))return;o>d&&(o=d),this.countMap.set(e,(this.countMap.get(e)||0)+1);let y=((C=this.distributionMap)==null?void 0:C.get(e))||new Map,S=0;if(bn(a))S=Math.floor(o/a);else for(let b=a.length-1;b>0;b--)if(o>a[b]){S=b;break}y.set(S,(y.get(S)||0)+1),this.distributionMap.set(e,y)}addSuccessEvent(A){let{key:e,cost:o,timeKey:a,split:c}=A;if(e&&(this.addEnum({key:e,value:1,useUV:!1}),o)){let d=+String(e).slice(-3);d<800&&d>=700?this.addNumber({key:a||e+100,value:o,split:c}):a||this.log.debug("time stat ignored, ".concat(e))}}addFailedEvent(A){let{key:e,error:o}=A;if(!e)return;let a=Et.UNKNOWN;o&&(bn(o)?a=o:(!Je(o.extraCode)||!Je(o.code))&&(a=o.extraCode||o.code)),this.addEnum({key:e,value:0,useUV:!1}),this.addEnum({key:e,value:Math.abs(a),useUV:!1})}},R2=((Bs=R2||{})[Bs.enterRoom=500700]="enterRoom",Bs[Bs.exitRoom=500701]="exitRoom",Bs[Bs.switchRole=500702]="switchRole",Bs[Bs.destroy=500703]="destroy",Bs[Bs.startLocalAudio=500704]="startLocalAudio",Bs[Bs.updateLocalAudio=500705]="updateLocalAudio",Bs[Bs.stopLocalAudio=500706]="stopLocalAudio",Bs[Bs.startLocalVideo=500707]="startLocalVideo",Bs[Bs.updateLocalVideo=500708]="updateLocalVideo",Bs[Bs.stopLocalVideo=500709]="stopLocalVideo",Bs[Bs.startScreenShare=500710]="startScreenShare",Bs[Bs.updateScreenShare=500711]="updateScreenShare",Bs[Bs.stopScreenShare=500712]="stopScreenShare",Bs[Bs.startRemoteVideo=500713]="startRemoteVideo",Bs[Bs.updateRemoteVideo=500714]="updateRemoteVideo",Bs[Bs.stopRemoteVideo=500715]="stopRemoteVideo",Bs[Bs.muteRemoteAudio=500716]="muteRemoteAudio",Bs[Bs.setRemoteAudioVolume=500717]="setRemoteAudioVolume",Bs[Bs.use=500718]="use",Bs[Bs.switchRoom=500719]="switchRoom",Bs[Bs.getPermissions=500720]="getPermissions",Bs[Bs.sendSEIMessage=5e5]="sendSEIMessage",Bs[Bs.sendCustomMessage=500001]="sendCustomMessage",Bs),w2=(A=>(A[A.AudioMixer=550700]="AudioMixer",A[A.AIDenoiser=551700]="AIDenoiser",A[A.VirtualBackground=570700]="VirtualBackground",A[A.Beauty=571700]="Beauty",A[A.Watermark=572700]="Watermark",A[A.BasicBeauty=574700]="BasicBeauty",A[A.FaceDetector=575700]="FaceDetector",A[A.CDNStreaming=590700]="CDNStreaming",A[A.DeviceDetector=591700]="DeviceDetector",A[A.Debug=592700]="Debug",A[A.SmallStreamAutoSwitcher=593700]="SmallStreamAutoSwitcher",A[A.VideoMixer=594700]="VideoMixer",A[A.AudioProcessor=595700]="AudioProcessor",A[A.LEBPlayer=596700]="LEBPlayer",A[A.RealtimeTranscriber=597700]="RealtimeTranscriber",A))(w2||{}),Iy=(A=>(A[A.AudioMixer=550701]="AudioMixer",A[A.AIDenoiser=551701]="AIDenoiser",A[A.VirtualBackground=570701]="VirtualBackground",A[A.Beauty=571701]="Beauty",A[A.Watermark=572701]="Watermark",A[A.BasicBeauty=574701]="BasicBeauty",A[A.FaceDetector=575701]="FaceDetector",A[A.CDNStreaming=590701]="CDNStreaming",A[A.DeviceDetector=591701]="DeviceDetector",A[A.Debug=592701]="Debug",A[A.SmallStreamAutoSwitcher=593701]="SmallStreamAutoSwitcher",A[A.VideoMixer=594701]="VideoMixer",A[A.AudioProcessor=595701]="AudioProcessor",A[A.LEBPlayer=596701]="LEBPlayer",A[A.RealtimeTranscriber=597701]="RealtimeTranscriber",A))(Iy||{}),j0=(A=>(A[A.AudioMixer=550702]="AudioMixer",A[A.AIDenoiser=551702]="AIDenoiser",A[A.VirtualBackground=570702]="VirtualBackground",A[A.Beauty=571702]="Beauty",A[A.Watermark=572702]="Watermark",A[A.BasicBeauty=574702]="BasicBeauty",A[A.FaceDetector=575702]="FaceDetector",A[A.CDNStreaming=590702]="CDNStreaming",A[A.DeviceDetector=591702]="DeviceDetector",A[A.Debug=592702]="Debug",A[A.SmallStreamAutoSwitcher=593702]="SmallStreamAutoSwitcher",A[A.VideoMixer=594702]="VideoMixer",A[A.AudioProcessor=595702]="AudioProcessor",A[A.LEBPlayer=596702]="LEBPlayer",A[A.RealtimeTranscriber=597702]="RealtimeTranscriber",A))(j0||{}),uy=((Bn=uy||{})[Bn.DECODER_TYPE=514700]="DECODER_TYPE",Bn[Bn.DECODER_HW_SW=514701]="DECODER_HW_SW",Bn[Bn.DECODE_RESULT=514702]="DECODE_RESULT",Bn[Bn.DECODE_FAILED_OS=514703]="DECODE_FAILED_OS",Bn[Bn.DOWNGRADE_RESULT=514704]="DOWNGRADE_RESULT",Bn[Bn.DOWNGRADE_WEBCODECS_VIDEO=514705]="DOWNGRADE_WEBCODECS_VIDEO",Bn[Bn.DOWNGRADE_WEBCODECS_2D=514706]="DOWNGRADE_WEBCODECS_2D",Bn[Bn.DOWNGRADE_WASM_WEGBL=514707]="DOWNGRADE_WASM_WEGBL",Bn[Bn.DOWNGRADE_WASM_VIDEO=514708]="DOWNGRADE_WASM_VIDEO",Bn[Bn.DOWNGRADE_WASM_2D=514709]="DOWNGRADE_WASM_2D",Bn[Bn.DECODE_H264_RESULT=514710]="DECODE_H264_RESULT",Bn[Bn.DECODE_H265_RESULT=514711]="DECODE_H265_RESULT",Bn[Bn.DECODE_VP8_RESULT=514712]="DECODE_VP8_RESULT",Bn[Bn.DECODE_CAPABILITIES=514713]="DECODE_CAPABILITIES",Bn[Bn.H264_PROFILE_LEVEL_ID_HIGH=514714]="H264_PROFILE_LEVEL_ID_HIGH",Bn[Bn.H264_PROFILE_LEVEL_ID_MAIN=514715]="H264_PROFILE_LEVEL_ID_MAIN",Bn[Bn.RENDER_FREEZE_RATE=514850]="RENDER_FREEZE_RATE",Bn[Bn.DATA_FREEZE_RATE=514851]="DATA_FREEZE_RATE",Bn[Bn.VIDEO_CONSUME_RENDER_RATE=514852]="VIDEO_CONSUME_RENDER_RATE",Bn),fK=new Dk(!0),zh=new Dk(!1),Ai=fK,Qs={result:!1,detail:{isBrowserSupported:!1,isWebRTCSupported:!1,isWebCodecsSupported:!1,isMediaDevicesSupported:!1,isScreenShareSupported:!1,isSmallStreamSupported:!1,isH264EncodeSupported:!1,isVp8EncodeSupported:!1,isH265EncodeSupported:!1,isH264DecodeSupported:!1,isVp8DecodeSupported:!1,isH265DecodeSupported:!1}},_2=new Map([[er,["Firefox",nM]],[$f,["Edg",Xb]],[P0,["Chrome",x0]],[Bg,["Safari",iQ]],[XE,["TBS",Ak]],[bp,["XWEB",ek]],[eQ&&Gp,["WeChat",tk]],[L0,["QQ(Win)",ik]],[aM,["QQ(Mobile)",Ay]],[kp,["QQ(Mobile X5)",Ay]],[gM,["QQ(Mac)",ok]],[U0,["QQ(iPad)",cM]],[F0,["MI",Lp]],[Wh,["HW",gk]],[lM,["Samsung",ck]],[IM,["OPPO",lk]],[uM,["VIVO",EM]],[Xf,["EDGE",Zb]],[rM,["SogouMobile",b0]],[k0,["Sogou",$b]]]);function fM(){let A=_2.get(!0);return{browserName:A?A[0]:"unknown",browserVersion:A?A[1]:"unknown"}}var Sk=function(){return!(nk||Xf||$f&&G0<80||er&&N0<56)},W0=function(){return["VideoDecoder","VideoEncoder","AudioEncoder","AudioDecoder"].every(A=>A in window)},Mk=function(){if(!navigator.mediaDevices)return uu()||QA.error(cc.NOT_SUPPORTED_MEDIA),!1;let A=["getUserMedia","enumerateDevices"];return A.filter(e=>e in navigator.mediaDevices).length===A.length},T2=!1;function uu(){return location.protocol==="http:"&&!Fp&&(T2||QA.error(Xo({key:Mo.NOT_SUPPORTED_HTTP})),T2=!0,!0)}var yM=function(){return window?.OffscreenCanvas&&window?.MediaStreamTrackProcessor&&window?.MediaStreamTrackGenerator},yK=function(){return!(window==null||!window.MediaStreamTrackGenerator)},DM=function(){return KA(this,null,function*(){var A,e,o;if(Qs.detail.isH264EncodeSupported&&Qs.detail.isVp8EncodeSupported)return{isH264EncodeSupported:Qs.detail.isH264EncodeSupported,isVp8EncodeSupported:Qs.detail.isVp8EncodeSupported,isH265EncodeSupported:Qs.detail.isH265EncodeSupported};let a,c=!1,d=!1,C=!1;try{let y=new RTCPeerConnection,S=document.createElement(YA.CANVAS);S.getContext("2d");let b=S.captureStream(0);return y.addTrack(b.getVideoTracks()[0],b),a=yield y.createOffer(),c=((A=a.sdp)==null?void 0:A.toLowerCase().indexOf("h264"))!==-1,d=((e=a.sdp)==null?void 0:e.toLowerCase().indexOf("vp8"))!==-1,C=((o=a.sdp)==null?void 0:o.toLowerCase().indexOf("h265"))!==-1,y.close(),{isH264EncodeSupported:c,isVp8EncodeSupported:d,isH265EncodeSupported:C}}catch{return{isH264EncodeSupported:!1,isVp8EncodeSupported:!1,isH265EncodeSupported:!1}}})},vk=function(){return KA(this,null,function*(){var A;if(Qs.detail.isH264DecodeSupported&&Qs.detail.isVp8DecodeSupported)return{isH264DecodeSupported:Qs.detail.isH264DecodeSupported,isVp8DecodeSupported:Qs.detail.isVp8DecodeSupported,isH265DecodeSupported:Qs.detail.isH265DecodeSupported};let e,o=!1,a=!1;try{let c=new RTCPeerConnection;Zd()?(c.addTransceiver(YA.VIDEO,{direction:"recvonly"}),e=yield c.createOffer()):e=yield c.createOffer({offerToReceiveVideo:!0}),e.sdp.toLowerCase().indexOf("h264")!==-1&&(o=!0),e.sdp.toLowerCase().indexOf("vp8")!==-1&&(a=!0);let d=((A=e.sdp)==null?void 0:A.toLowerCase().indexOf("h265"))!==-1;return c.close(),{isH264DecodeSupported:o,isVp8DecodeSupported:a,isH265DecodeSupported:d}}catch{return{isH264DecodeSupported:!1,isVp8DecodeSupported:!1,isH265DecodeSupported:!1}}})},Rk=Vb(A=>KA(null,null,function*(){let e=Date.now(),o=Cy(),a=Mk(),c=W0();if(Qs.detail.isWebRTCSupported=o,Qs.detail.isMediaDevicesSupported=a,Qs.detail.isWebCodecsSupported=c,Qs.detail.isScreenShareSupported=Hp(),Qs.detail.isSmallStreamSupported=vM(),A===37)return Object.assign(Qs.detail,yield function(){return KA(this,null,function*(){return ed||(ed=new Promise(MA=>KA(null,null,function*(){let $A={isH264EncodeSupported:!1,isH264DecodeSupported:!1,isVp8EncodeSupported:!1,isVp8DecodeSupported:!1};if(!W0())return void MA($A);let he=null,Ye=null,Me=null,yi=()=>{Me&&clearTimeout(Me),he=null,Ye=null};try{he=document.createElement("canvas"),Ye=he.getContext("2d"),he.width=320,he.height=240;let Ge=0,ht=()=>{!Ye||!he||(Ye.fillStyle="hsl(".concat(Ge%360,", 50%, 50%)"),Ye.fillRect(0,0,he.width,he.height),Ye.fillStyle="white",Ye.font="20px Arial",Ye.fillText("Frame ".concat(Ge),10,30),Ge++)};Me=setTimeout(()=>{yi(),MA($A)},5e3);let Ci=[{type:"h264",encodeConfig:{codec:"avc1.42E01E",avc:{format:"annexb"},width:320,height:240,bitrate:1e6},decodeConfig:{codec:"avc1.42E01E",avc:{format:"annexb"}}},{type:"vp8",encodeConfig:{codec:"vp8",width:320,height:240,bitrate:1e6},decodeConfig:{codec:"vp8"}}];(yield Promise.all(Ci.map(Di=>KA(null,null,function*(){let Vo,Jo={type:Di.type,encodeSupported:!1,decodeSupported:!1};try{Vo=yield new Promise((Qn,Ho)=>KA(null,null,function*(){try{let Ns=new VideoEncoder({output:fa=>{Qn(fa),Jo.encodeSupported=!0},error:Ho});Ns.configure(Di.encodeConfig),ht();let pg=new VideoFrame(he,{timestamp:0});Ns.encode(pg,{keyFrame:!0}),pg.close(),yield Ns.flush(),Ns.close()}catch(Ns){Ho(Ns)}}))}catch(Qn){return QA.warn("".concat(Di.type," encoder error:"),Qn),Jo}try{yield new Promise((Qn,Ho)=>KA(null,null,function*(){try{let Ns=new VideoDecoder({output:pg=>{Jo.decodeSupported=!0,Qn(0),pg.close()},error:Ho});Ns.configure(Di.decodeConfig),Ns.decode(Vo),yield Ns.flush(),Ns.close()}catch(Ns){Ho(Ns)}}))}catch(Qn){QA.warn("".concat(Di.type," decoder error:"),Qn)}return Jo})))).forEach(Di=>{Di.type==="h264"?($A.isH264EncodeSupported=Di.encodeSupported,$A.isH264DecodeSupported=Di.decodeSupported):Di.type==="vp8"&&($A.isVp8EncodeSupported=Di.encodeSupported,$A.isVp8DecodeSupported=Di.decodeSupported)}),yi(),MA($A)}catch(Ge){yi(),QA.warn("detectWebCodecsSupported failed:",Ge),MA($A)}})),ed)})}()),Qs.detail.isBrowserSupported=c,Qs.result=a&&c,Qs.result||QA.error("".concat(navigator.userAgent," ").concat(f0(Qs.detail,!1))),Ok(A),Ai.addNumber({key:523800,value:Date.now()-e}),Qs;if(Qs.result&&Qs.detail.isH264EncodeSupported&&Qs.detail.isVp8EncodeSupported&&Qs.detail.isH265EncodeSupported&&Qs.detail.isH264DecodeSupported&&Qs.detail.isVp8DecodeSupported&&Qs.detail.isH265DecodeSupported)return Qs;let d=Sk(),{encode:C,decode:y}=yield function(){return KA(this,null,function*(){let[MA,$A]=yield Promise.all([DM(),vk()]);return{encode:{h264:MA.isH264EncodeSupported,vp8:MA.isVp8EncodeSupported,h265:MA.isH265EncodeSupported},decode:{h264:$A.isH264DecodeSupported,vp8:$A.isVp8DecodeSupported,h265:$A.isH265DecodeSupported}}})}(),{h264:S,vp8:b}=C,{h264:V}=y,{h265:J}=C,{vp8:gA,h265:CA}=y;if(!S||!b){let MA=yield DM();QA.warn("detect encode again h264:".concat(S," vp8:").concat(b," result: ").concat(JSON.stringify(MA))),S=MA.isH264EncodeSupported,b=MA.isVp8EncodeSupported}if(S&&V&&Ha&&gE&&!bp&&!XE&&(!IM||$E!==115)){let{encode:MA,decode:$A}=yield N2();S=MA,V=$A}return Qs.result=d&&o&&a&&(S||b)&&(V||gA),Qs.detail.isBrowserSupported=d,Qs.detail.isWebRTCSupported=o,Qs.detail.isH264EncodeSupported=S,Qs.detail.isVp8EncodeSupported=b,Qs.detail.isH265EncodeSupported=J,Qs.detail.isH264DecodeSupported=V,Qs.detail.isVp8DecodeSupported=gA,Qs.detail.isH265DecodeSupported=CA,Qs.result||QA.error("".concat(navigator.userAgent," ").concat(f0(Qs.detail,!1))),Ok(),Ai.addNumber({key:523800,value:Date.now()-e}),Qs})),DK=function(){return Qs.result},Hp=function(){return!(!navigator.mediaDevices||!navigator.mediaDevices.getDisplayMedia)},SK=typeof HTMLMediaElement<"u"&&"setSinkId"in HTMLMediaElement.prototype,wk=null;function N2(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:2e3;return KA(this,null,function*(){return wk||(wk=new Promise(e=>KA(null,null,function*(){let o={encode:!1,decode:!1},a=()=>{};try{let c=document.createElement("canvas"),d=c.getContext("2d");c.width=640,c.height=480;let C=setInterval(()=>{d.fillText("test",Math.floor(640*Math.random()),Math.floor(480*Math.random()))},66),y=-1,S=-1;a=()=>{clearInterval(y),clearInterval(C),clearTimeout(S),V.close(),J.close(),b.getTracks().forEach(he=>he.stop())},S=setTimeout(()=>{a(),e(o)},A);let b=c.captureStream(),V=new RTCPeerConnection({}),J=new RTCPeerConnection({offerToReceiveAudio:!0,offerToReceiveVideo:!0});V.addEventListener("icecandidate",he=>J.addIceCandidate(he.candidate)),J.addEventListener("icecandidate",he=>V.addIceCandidate(he.candidate)),V.addTrack(b.getVideoTracks()[0],b);let gA=yield V.createOffer();yield V.setLocalDescription(gA),yield J.setRemoteDescription(gA);let CA=yield J.createAnswer(),MA=yk.default.parse(CA.sdp),$A=MA.media[0].rtp.findIndex(he=>he.codec==="H264");MA.media[0].rtp=[MA.media[0].rtp[$A]],MA.media[0].fmtp=MA.media[0].fmtp.filter(he=>he.payload===MA.media[0].rtp[0].payload),MA.media[0].rtcpFb&&(MA.media[0].rtcpFb=MA.media[0].rtcpFb.filter(he=>he.payload===MA.media[0].rtp[0].payload)),CA.sdp=yk.default.write(MA),yield J.setLocalDescription(CA),yield V.setRemoteDescription(CA),y=setInterval(()=>KA(null,null,function*(){o.encode&&o.decode&&(a(),e(o));let[he,Ye]=yield Promise.all([V.getSenders()[0].getStats(),J.getReceivers()[0].getStats()]);o.encode||he.forEach(Me=>{Me.type==="outbound-rtp"&&(Me.mediaType===YA.VIDEO||Me.kind===YA.VIDEO)&&Me.bytesSent>0&&(o.encode=!0)}),o.decode||Ye.forEach(Me=>{Me.type==="inbound-rtp"&&(Me.mediaType===YA.VIDEO||Me.kind===YA.VIDEO)&&Me.bytesReceived>0&&(o.decode=!0)})}),100)}catch(c){a(),QA.warn("detectH264Supported failed",c),e({encode:!0,decode:!0})}})).then(e=>(e.encode||(e.decode=!0),(!e.encode||!e.decode)&&QA.warn("detectH264Supported encode: ".concat(e.encode," decode: ").concat(e.decode," ").concat(LC)),e)),wk)})}var ed=null,_k=(A,e,o)=>{location.protocol==="http:"&&!Fp&&(A[e]=()=>{throw new si({code:Et.INVALID_OPERATION,message:cc.NOT_SUPPORTED_HTTP})})},SM=function(A){return!(A.type!=="candidate-pair"||!A.nominated||A.state!=="in-progress"&&A.state!=="succeeded")&&!(_r(A.selected)&&!A.selected)};function td(){let A="";if(screen.width){let e=screen.width?screen.width*window.devicePixelRatio:"",o=screen.height?screen.height*window.devicePixelRatio:"";A+="".concat(e," * ").concat(o)}return A}function Tk(){return navigator.getUserMedia||navigator.mediaDevices&&navigator.mediaDevices.getUserMedia}function Nk(){let A={isSupported:!1},e=["AudioContext","webkitAudioContext","mozAudioContext","msAudioContext"];for(let o=0;o=86,Z0="RTCRtpScriptTransform"in window,Uk=UC&&(qp||Z0),Cy=function(){return["RTCPeerConnection","webkitRTCPeerConnection","RTCIceGatherer"].filter(A=>A in window).length>0};function X0(){let A={AudioDecoder:!1,AudioEncoder:!1,VideoDecoder:!1,VideoEncoder:!1,ImageDecoder:!1};return Je(window.AudioDecoder)||(A.AudioDecoder=!0),Je(window.AudioEncoder)||(A.AudioEncoder=!0),Je(window.VideoDecoder)||(A.VideoDecoder=!0),Je(window.VideoEncoder)||(A.VideoEncoder=!0),Je(window.ImageDecoder)||(A.ImageDecoder=!0),A}function L2(){return"mediaSession"in navigator&&!Je(navigator.mediaSession.setActionHandler)}function hy(){return!Je(window.WebTransport)}function wM(){return typeof WebAssembly<"u"&&WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11]))}function U2(){let A={browser:"".concat(sQ.name,"/").concat(sQ.version),os:ul(),displayResolution:td(),isScreenShareSupported:Hp(),isWebRTCSupported:Cy(),isGetUserMediaSupported:Tk(),isWebAudioSupported:Nk(),isWebSocketsSupported:"WebSocket"in window&&window.WebSocket.CLOSING===2,isWebCodecSupported:X0(),isMediaSessionSupported:L2(),isWebTransportSupported:hy()};return navigator.userAgent.includes("miniProgram")&&(A.browser="mini/".concat(A.browser)),A}var Fk="checkResult";function Ok(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:30;jA.setItem(Fk+A,{ua:navigator.userAgent,checkResult:Qs})}function Pk(A){uu();let e=jA.getItem(Fk+A);e&&e.ua===navigator.userAgent&&e.checkResult&&function(o,a){return!!WE(o)&&Object.keys(a).every(c=>c in o)}(e.checkResult.detail,Qs.detail)&&(Qs=e.checkResult),Rk(A)}function Kp(){return"requestVideoFrameCallback"in HTMLVideoElement.prototype}var IQ="RTCRtpReceiver"in window&&"jitterBufferTarget"in window.RTCRtpReceiver.prototype;function F2(A){return{h264:1,h265:2,vp8:3,vp9:4,av1:5}[A]}var O2=!1;function _M(){return KA(this,null,function*(){var A;try{if(O2||(A=navigator?.mediaCapabilities)==null||!A.encodingInfo)return;let e=Pp(),o=Kl();if(e===0||o===0)return;O2=!0;let a=["H264","VP8","VP9","AV1","H265"],[c,d]=yield Promise.all([xk(a),Yk(a)]);c&&Object.keys(c).forEach(S=>{let b=F2(S.toLowerCase());Ai.addEnum({key:513707,value:+"".concat(b).concat(+c[S].supported).concat(+c[S].powerEfficient).concat(e).concat(o),useUV:!1})}),d&&Object.keys(d).forEach(S=>{let b=F2(S.toLowerCase());Ai.addEnum({key:514713,value:+"".concat(b).concat(+d[S].supported).concat(+d[S].powerEfficient).concat(e).concat(o),useUV:!1})});let{sender:C,receiver:y}=P2();Ai.addEnum({key:513708,value:+"".concat(e).concat(o).concat(+C.high),useUV:!1}),Ai.addEnum({key:513709,value:+"".concat(e).concat(o).concat(+C.main),useUV:!1}),Ai.addEnum({key:514714,value:+"".concat(e).concat(o).concat(+y.high),useUV:!1}),Ai.addEnum({key:514715,value:+"".concat(e).concat(o).concat(+y.main),useUV:!1})}catch(e){QA.info("detectVideoCodecCapabilities failed",e)}})}function xk(A){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1920,o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1080,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:30,c=arguments.length>4&&arguments[4]!==void 0?arguments[4]:3e3;return KA(this,null,function*(){let d={};try{for(let C of A){let y=yield navigator.mediaCapabilities.encodingInfo({type:"webrtc",video:{contentType:"video/".concat(C),width:e,height:o,bitrate:c,framerate:a}});d[C]=y}}catch{}return d})}function Yk(A){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1920,o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1080,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:30,c=arguments.length>4&&arguments[4]!==void 0?arguments[4]:3e3;return KA(this,null,function*(){let d={};try{for(let C of A){let y=yield navigator.mediaCapabilities.decodingInfo({type:"webrtc",video:{contentType:"video/".concat(C),width:e,height:o,bitrate:c,framerate:a}});d[C]=y}}catch{}return d})}function P2(){let A={sender:{base:!1,main:!1,high:!1},receiver:{base:!1,main:!1,high:!1}};try{if(RTCRtpSender&&typeof RTCRtpSender.getCapabilities=="function"){let e=RTCRtpSender.getCapabilities("video");e&&e.codecs&&e.codecs.filter(o=>o.mimeType.toLowerCase()==="video/h264").forEach(o=>{if(o.sdpFmtpLine){let a=o.sdpFmtpLine.match(/profile-level-id=([0-9a-fA-F]+)/);if(a&&a[1])switch(a[1].slice(0,2)){case"42":A.sender.base=!0;break;case"4d":A.sender.main=!0;break;case"64":A.sender.high=!0}}})}if(RTCRtpReceiver&&typeof RTCRtpReceiver.getCapabilities=="function"){let e=RTCRtpReceiver.getCapabilities("video");e&&e.codecs&&e.codecs.filter(o=>o.mimeType.toLowerCase()==="video/h264").forEach(o=>{if(o.sdpFmtpLine){let a=o.sdpFmtpLine.match(/profile-level-id=([0-9a-fA-F]+)/);if(a&&a[1])switch(a[1].slice(0,2)){case"42":A.receiver.base=!0;break;case"4d":A.receiver.main=!0;break;case"64":A.receiver.high=!0}}})}}catch(e){QA.warn("get H264 profile levelId failed",e)}return A}var MK=gc(ql(),1),TM=Symbol("instance"),NM=Symbol("cacheResult"),FC=class{constructor(A,e,o){this.oldState=A,this.newState=e,this.action=o,this.aborted=!1}abort(A){this.aborted=!0,jp.call(A,this.oldState,new Error("action '".concat(this.action,"' aborted")))}toString(){return"".concat(this.action,"ing")}},$0=class extends Error{constructor(A,e,o){super(e),this.state=A,this.message=e,this.cause=o}},GM=new Map;function lc(A,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return(a,c,d)=>{let C=o.action||c;if(!o.context){let S=GM.get(a)||[];GM.has(a)||GM.set(a,S),S.push({from:A,to:e,action:C})}let y=d.value;d.value=function(){let S=this;for(var b=arguments.length,V=new Array(b),J=0;J{if(o.fail&&o.fail.call(this,Me),o.sync){if(o.ignoreError)return Me;throw Me}return o.ignoreError?Promise.resolve(Me):Promise.reject(Me)};if(gA)return CA(gA);let MA=S.state,$A=new FC(MA,e,C);jp.call(S,$A);let he=Me=>{var yi;return S[NM]=Me,$A.aborted||(jp.call(S,e),(yi=o.success)===null||yi===void 0||yi.call(this,S[NM])),Me},Ye=Me=>(jp.call(S,MA,Me),CA(Me));try{let Me=y.apply(this,V);return function(yi){return typeof yi=="object"&&yi&&"then"in yi}(Me)?Me.then(he).catch(Ye):o.sync?he(Me):Promise.resolve(he(Me))}catch(Me){return Ye(new $0(S._state,"".concat(S.name," ").concat(C," from ").concat(A," to ").concat(e," failed: ").concat(Me),Me instanceof Error?Me:new Error(String(Me))))}}}}var A_=typeof window<"u"&&window.__AFSM__?(A,e)=>{window.dispatchEvent(new CustomEvent(A,{detail:e}))}:typeof importScripts<"u"?(A,e)=>{postMessage({type:A,payload:e})}:()=>{};function jp(A,e){let o=this._state;this._state=A;let a=A.toString();A&&this.emit(a,o),this.emit(Zs.STATECHANGED,A,o,e),this.updateDevTools({value:A,old:o,err:e instanceof Error?e.message:String(e)})}var Zs=class qC extends MK.default{constructor(e,o,a){super(),this.name=e,this.groupName=o,this._state=qC.INIT,e||(e=Date.now().toString(36)),a?Object.setPrototypeOf(this,a):a=Object.getPrototypeOf(this),o||(this.groupName=this.constructor.name);let c=a[TM];c?this.name=c.name+"-"+c.count++:a[TM]={name:this.name,count:0},this.updateDevTools({diagram:this.stateDiagram})}get stateDiagram(){let e=Object.getPrototypeOf(this),o=GM.get(e)||[],a=new Set,c=[],d=[],C=new Set,y=Object.getPrototypeOf(e);GM.has(y)&&(y.stateDiagram.forEach(b=>a.add(b)),y.allStates.forEach(b=>C.add(b))),o.forEach(b=>{let{from:V,to:J,action:gA}=b;typeof V=="string"?c.push({from:V,to:J,action:gA}):V.length?V.forEach(CA=>{c.push({from:CA,to:J,action:gA})}):d.push({to:J,action:gA})}),c.forEach(b=>{let{from:V,to:J,action:gA}=b;C.add(V),C.add(J),C.add(gA+"ing"),a.add("".concat(V," --> ").concat(gA,"ing : ").concat(gA)),a.add("".concat(gA,"ing --> ").concat(J," : ").concat(gA," 🟢")),a.add("".concat(gA,"ing --> ").concat(V," : ").concat(gA," 🔴"))}),d.forEach(b=>{let{to:V,action:J}=b;a.add("".concat(J,"ing --> ").concat(V," : ").concat(J," 🟢")),C.forEach(gA=>{gA!==V&&a.add("".concat(gA," --> ").concat(J,"ing : ").concat(J))})});let S=[...a];return Object.defineProperties(e,{stateDiagram:{value:S},allStates:{value:C}}),S}static get(e){let o;return typeof e=="string"?(o=qC.instances.get(e),o||qC.instances.set(e,o=new qC(e,void 0,Object.create(qC.prototype)))):(o=qC.instances2.get(e),o||qC.instances2.set(e,o=new qC(e.constructor.name,void 0,Object.create(qC.prototype)))),o}static getState(e){var o;return(o=qC.get(e))===null||o===void 0?void 0:o.state}updateDevTools(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};A_(qC.UPDATEAFSM,Object.assign({name:this.name,group:this.groupName},e))}get state(){return this._state}set state(e){jp.call(this,e)}};Zs.STATECHANGED="stateChanged",Zs.UPDATEAFSM="updateAFSM",Zs.INIT="[*]",Zs.ON="on",Zs.OFF="off",Zs.instances=new Map,Zs.instances2=new WeakMap;var e_=typeof window<"u",Vk=e_&&window.requestIdleCallback||function(A){let e=Date.now();return setTimeout(()=>{A({didTimeout:!1,timeRemaining:()=>Math.max(0,50-(Date.now()-e))})},1e3)},Cl=e_&&window.cancelIdleCallback||function(A){clearTimeout(A)},Wp=e_&&(window.cancelAnimationFrame||window.mozCancelAnimationFrame),By=class uE{static generateTaskID(){return this.currentTaskID++}static run(e,o,a){a!=null&&a.fps&&(a.delay=a.delay||Number((1e3/a.fps).toFixed(2))),a=mi(e==="interval"?{delay:2e3,count:0,backgroundTask:!0}:e==="ric"?{delay:1e4,count:0}:e==="raf"?{fps:60,delay:16.6,count:0,backgroundTask:!0}:{delay:2e3,count:0,backgroundTask:!0},a);let c=Qo(mi({taskID:this.generateTaskID(),loopCount:0,intervalID:null,timeoutID:null,rafID:null,ricID:null,taskName:e,callback:o},a),{delay:a.delay});return this.taskMap.set(c.taskID,c),this[e](c),c.taskID}static interval(e){return e.intervalID=setInterval(()=>{e.callback(),e.loopCount+=1,uE.isBreakLoop(e)},e.delay)}static intervalInWorker(e){uE.sharedWorker||(uE.sharedWorker=new Worker(URL.createObjectURL(new Blob([` const timers = new Map(); self.onmessage = function(e) { const { taskId, delay, type } = e.data; @@ -274,15 +274,15 @@ Refer to: `.concat(i2("en",y),` timers.delete(taskId); } }; - `],{type:"application/javascript"}))),gE.sharedWorker.onmessage=o=>{var a;if(o.data.type==="tick"){let c=gE.workerTasks.get(o.data.taskId);c&&(gE.isBreakLoop(c)?((a=gE.sharedWorker)==null||a.postMessage({type:"stop",taskId:c.taskID}),gE.workerTasks.delete(c.taskID)):(c.callback(),c.loopCount+=1))}}),gE.workerTasks.set(e.taskID,e),gE.sharedWorker.postMessage({taskId:e.taskID,delay:e.delay,type:"start"})}static timeout(e){let o=()=>{if(e.callback(),e.loopCount+=1,!gE.isBreakLoop(e))return e.timeoutID=setTimeout(o,e.delay)};return e.timeoutID=setTimeout(o,e.delay)}static ric(e){let o,a=bo(),c=()=>{if(o=bo()-a,o>=e.delay&&(a=bo()-Math.floor(o%e.delay),e.callback(),e.loopCount+=1),!gE.isBreakLoop(e))return e.ricID=vk(c,{timeout:e.delay})};return e.ricID=vk(c,{timeout:e.delay})}static raf(e){let o,a=bo(),c=()=>document.hidden&&e.backgroundTask?(o=bo()-a,a=bo(),e.callback(),e.loopCount+=1,gE.isBreakLoop(e)?void 0:e.timeoutID=setTimeout(c,e.delay-Math.floor(o%e.delay))):(o=bo()-a,o>=e.delay&&(a=bo()-Math.floor(o%e.delay),e.callback(),e.loopCount+=1),gE.isBreakLoop(e)?void 0:e.rafID=requestAnimationFrame(c));if(e.rafID=requestAnimationFrame(c),e.backgroundTask){let d=()=>{if(document.hidden){let C=bo()-a;C>=e.delay?c():e.timeoutID=setTimeout(c,e.delay-C)}};document.addEventListener("visibilitychange",d),e.onVisibilitychange=d,document.hidden&&d()}return e.taskID}static hasTask(e){return this.taskMap.has(e)}static clearTask(e){if(!this.taskMap.has(e))return!0;let{intervalID:o,timeoutID:a,rafID:c,ricID:d,onVisibilitychange:C}=this.taskMap.get(e);return o&&clearInterval(o),a&&clearTimeout(a),c&&Hp&&Hp(c),d&&Cl(d),C&&document.removeEventListener("visibilitychange",C),this.taskMap.delete(e),!0}static isBreakLoop(e){return!this.hasTask(e.taskID)||e.count!==0&&e.loopCount>=e.count&&(this.clearTask(e.taskID),!0)}};Y(Ey,"taskMap",new Map),Y(Ey,"currentTaskID",1),Y(Ey,"sharedWorker",null),Y(Ey,"workerTasks",new Map);var _r=Ey,mo={LOAD_START:YA.LOADSTART,LOADED_DATA:YA.LOADEDDATA,LOADED_META_DATA:YA.LOADEDMETADATA,MEDIA_TRACK_CHANGED:"media-track-changed",PLAYER_STATE_CHANGED:"player-state-changed",ERROR:"error",AUTOPLAY_FAILED:"autoplay-failed",RESIZE:YA.RESIZE,TIME_UPDATE:"time-update",LEAVE_PICTURE_IN_PICTURE:YA.LEAVE_PICTURE_IN_PICTURE,ENTER_PICTURE_IN_PICTURE:YA.ENTER_PICTURE_IN_PICTURE,USER_RESUME_IN_PIP_OR_FULL_SCREEN:"user-resume-in-pip-or-full-screen",USER_PAUSE_IN_PIP_OR_FULL_SCREEN:"user-pause-in-pip-or-full-screen",ENTER_FULL_SCREEN:"enter-full-screen",LEAVE_FULL_SCREEN:"leave-full-screen",VOLUME_CHANGE:"volume-change",FIRST_FRAME_RENDER:"first-frame-render"},Rk={};Yh(Rk,{create:()=>XE,remove:()=>kn});var Wh=new WeakMap;function XE(A,e){Wh.has(A)||Wh.set(A,[]);let o=Wh.get(A),a={add:(c,d)=>("addEventListener"in e?(o.push(e.removeEventListener.bind(e,c,d)),e.addEventListener(c,d)):(o.push(e.off.bind(e,c,d)),e.on(c,d)),a)};return a}function kn(A){let e=Wh.get(A);e&&(e.forEach(o=>o()),Wh.delete(A))}var sn=new class{constructor(){Y(this,"_roomIdMap",new Map),Y(this,"_configs"),typeof registerProcessor>"u"&&(this._configs={sdkAppId:"",userId:"",version:Pd,env:HB.QCLOUD,browserVersion:iQ.name+iQ.version,ua:navigator.userAgent})}setConfig(A){let{sdkAppId:e,env:o,userId:a,roomId:c}=A;e!==this._configs.sdkAppId&&(this._configs.sdkAppId=String(e)),this._configs.env=o,this._configs.userId=a,this._roomIdMap.set(a,String(c))}logSuccessEvent(A){bp||!QA.isAbleToUpload||this._configs.env===HB.QCLOUD&&this.uploadEventToKibana(Bo(pi({},A),{result:"success"}))}logFailedEvent(A){if(bp||!QA.isAbleToUpload)return;let{eventType:e,code:o,error:a,userId:c}=A,d={roomId:this._roomIdMap.get(c||this._configs.userId),userId:c,eventType:e,result:"failed",code:o||a?.extraCode||a?.code||lt.UNKNOWN};this._configs.env===HB.QCLOUD&&this.uploadEventToKibana(Bo(pi({},d),{error:a}))}uploadEventToKibana(A){let e="stat-".concat(A.eventType,"-").concat(A.result);(A.eventType==="delta-join"||A.eventType==="delta-leave"||A.eventType==="delta-publish")&&(e="".concat(A.eventType,":").concat(A.delta)),this.uploadEvent({log:e,userId:A.userId}),A.result==="failed"&&(e="stat-".concat(A.eventType,"-").concat(A.result,"-").concat(A.code),this.uploadEvent({log:e,userId:A.userId,error:A.error}))}uploadEvent(A){let{log:e,userId:o,error:a}=A,c={timestamp:ox(),sdkAppId:this._configs.sdkAppId,userId:o||this._configs.userId,version:Pd,log:e};a&&(c.errorInfo=a.message,a.stack&&(c.errorInfo+=` -`.concat(a.stack)));let d=_A.enable?ZB(c,2002,Number(this._configs.sdkAppId)):JSON.stringify(c);this.sendRequest(Pf(this._configs.sdkAppId,_I.LOG),d)}sendRequest(A,e){setTimeout(()=>XB({url:A,body:e,priority:"low"}).catch(()=>{}),2e3)}},bC=new WeakMap;function zh(A){let{settings:e={retries:5,timeout:2e3},onError:o,onRetrying:a,onRetryFailed:c}=A;return function(d,C,y){let S=ZS({retryFunction:y.value,settings:e,onError(b){let{error:V,retry:J,reject:gA,retryFuncArgs:CA}=b;var MA;o?o.call(this,V,()=>{var ee;(ee=bC.get(d))!=null&&ee.has(C)?J():gA(V)},gA,CA):(MA=bC.get(d))!=null&&MA.has(C)?J():gA(V)},onRetrying(b,V){var J;vp(a)&&a.call(this,b,V),(J=bC.get(d))!=null&&J.has(C)&&(bC.get(d).get(C).stopRetry=V)},onRetryFailed:c});return y.value=function(){let b=bC.get(d);for(var V=arguments.length,J=new Array(V),gA=0;gA{var CA;return(CA=bC.get(d))==null?void 0:CA.delete(C)})},y}}function q0(A){let{fnName:e,callback:o,validateArgs:a=!0}=A;return function(c,d,C){let y=C.value;return C.value=function(){for(var S,b,V=arguments.length,J=new Array(V),gA=0;gAPe===Be)){ee=!1;break}}ee&&(o&&o.apply(this,J),CA&&CA(),(b=bC.get(c))==null||b.delete(e))}return y.apply(this,J)},C}}var kC=class extends Zs{constructor(A,e){super(A.id,"".concat(e,"-player")),this.options=A,this.kind=e,Y(this,"id"),Y(this,"element",null),Y(this,"track"),Y(this,"url"),Y(this,"attr"),Y(this,"mode"),Y(this,"muted"),Y(this,"_log"),Y(this,"isPausedByUserCall",!1),Y(this,"_pausedRetryCount"),Y(this,"_isElementPlayingFired",!1),Y(this,"_interval"),Y(this,"_delayDestroyTimeoutId",0),Y(this,"_playSuccessResolve"),Y(this,"_isReplayByRecreateMediaStreamCalled",!1),Y(this,"isPlayCalled",!1),Y(this,"isInAutoPlayFailedState",!1),Y(this,"isBindAutoPlayEvent",!1),this.id=A.id,this._log=A.log,this.track=A.track,this.muted=A.muted,this._pausedRetryCount=fp,this._state="STOPPED",this.bindTrackEvents(),this._log.info("create ".concat(e,"-player ").concat(this.id))}get isPlaying(){var A;return this._state==="PLAYING"&&((A=this.element)==null?void 0:A.paused)===!1}get isPaused(){var A;return this._state==="PAUSED"||((A=this.element)==null?void 0:A.paused)===!0}get isStopped(){return this._state==="STOPPED"}setAttr(A){this.attr=A}setUrl(A){this.track&&(this.unbindTrackEvents(),this.element&&(this.element.srcObject=null),this.track=null),A!==this.url&&(this.url=A,A!==null&&this.element&&(this.element.crossOrigin="anonymous",this.element.src=A))}play(){return KA(this,null,function*(){if(!this.isPlaying)try{this.isPlayCalled=!0,this._delayDestroyTimeoutId&&(clearTimeout(this._delayDestroyTimeoutId),this._delayDestroyTimeoutId=0,this.bindTrackEvents(),this.bindElementEvents()),this.bindAutoPlayEvent(),yield new Promise((A,e)=>{this._playSuccessResolve=A,this.element.play().then(A,e)})}catch(A){let e=Zo({key:So.PLAY_FAILED,data:{media:this.kind,error:A}});if(this._log.warn(A),e.includes("NotAllowedError"))throw this.isInAutoPlayFailedState=!0,new oi({code:lt.PLAY_NOT_ALLOWED,message:e})}})}stop(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;var e;this.isPlayCalled=!1,this.isPausedByUserCall=!1,this._isElementPlayingFired=!1,this.unbindEvents(),A>0&&!Gp?this._delayDestroyTimeoutId||((e=this.element)==null||e.remove(),this._log.info("destroy element after 3 * ".concat(A)),this._delayDestroyTimeoutId=setTimeout(()=>this.destroyElement(),3*A)):this.destroyElement(),this.handleStopped(YA.ENDED),this._interval>0&&_r.clearTask(this._interval)}destroyElement(){this.element&&(this._log.debug("destroy element"),this.element.remove(),this.element.src="",this.element.srcObject=null,this.element=null),clearTimeout(this._delayDestroyTimeoutId),this._delayDestroyTimeoutId=0}pause(){this._log.info("pause"),this.isPausedByUserCall=!0,this.doPause()}doPause(){var A;(A=this.element)==null||A.pause()}resume(){let A=arguments.length>0&&arguments[0]!==void 0&&arguments[0];return this.isPausedByUserCall=!1,this.doResume(A)}doResume(){return this._log.info("resume"),this.isPausedByUserCall||this.isPlaying?Promise.resolve():Zx?this.replay():this.play().catch(()=>{})}setMuted(A){this.element&&(this.element.muted=A),this.muted=A}replay(){return this.stop(),this.play().catch(()=>{})}bindElementEvents(){if(this.element){let A=this.handleElementEvent.bind(this);return XE(this.element,this.element).add(YA.PLAYING,A).add(YA.ENDED,A).add(YA.PAUSE,A).add(YA.ERROR,A).add(YA.LOADSTART,A).add(YA.LOADEDDATA,A).add(YA.LOADEDMETADATA,A)}}bindTrackEvents(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.track;if(A){let e=this.handleTrackEvent.bind(this);Rk?.create(A,A).add(YA.ENDED,e).add(YA.MUTE,e).add(YA.UNMUTE,e),A.readyState===YA.ENDED&&this.handleTrackEvent({type:YA.ENDED}),A.muted&&this.handleTrackEvent({type:YA.MUTE})}}bindAutoPlayEvent(){this.isBindAutoPlayEvent||(this._log.warn("bindAutoPlayEvent"),U.on(sA.AUTOPLAY_DIALOG_CLICK_CONFIRM,this.resume,this),this.isBindAutoPlayEvent=!0)}unbindTrackEvents(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.track;A&&kn(A)}unbindEvents(){this.element&&kn(this.element),this.unbindTrackEvents(),U.off(sA.AUTOPLAY_DIALOG_CLICK_CONFIRM,this.resume,this),this.isBindAutoPlayEvent=!1}handleElementEvent(A){switch(A.type){case YA.PLAYING:mi()||(this.isInAutoPlayFailedState=!1),this._isElementPlayingFired=!0,this._log.info("".concat(this.kind," player is playing")),this.handlePlaying(YA.PLAYING),this._interval&&(_r.clearTask(this._interval),this._interval=-1);break;case YA.ENDED:this._log.info("".concat(this.kind," player is ended")),this.handleStopped(YA.ENDED);break;case YA.PAUSE:this._log.info("".concat(this.kind," player is paused")),this.handlePaused(YA.PAUSE);break;case YA.ERROR:if(this.element&&this.element.error){this.handlePaused(YA.ERROR);let{code:e,message:o}=this.element.error;this._log.error("".concat(this.kind," ").concat(this._log.isLocal?"local":"remote"," MediaError code: ").concat(e," message: ").concat(o," userAgent: ").concat(navigator.userAgent)),sn.uploadEvent({log:"stat-".concat(this.kind,"-").concat(Va.PLAYER_ERROR,"-").concat(e,"-").concat(navigator.userAgent),error:this.element.error}),qb||Hb?this.emit(mo.ERROR,this.element.error):this.replayByRecreateMediaStream(this.element.error)}break;case YA.LOADEDDATA:this.kind===YA.VIDEO&&this.emit(mo.LOADED_DATA);break;case YA.LOADEDMETADATA:this.kind===YA.VIDEO&&this.emit(mo.LOADED_META_DATA);break;case YA.LOADSTART:this.emit(mo.LOAD_START)}}replayByRecreateMediaStream(A){if(!this._isReplayByRecreateMediaStreamCalled)return this._isReplayByRecreateMediaStreamCalled=!0,this.doReplayByRecreateMediaStream(1e3).then(()=>{this._log.warn("replayByRecreateMediaStream success"),sn.uploadEvent({log:"stat-replayByRecreateMediaStream-success"}),Ai.addSuccessEvent({key:this.kind===YA.AUDIO?506700:516700})}).catch(()=>{var e;this._log.error("replayByRecreateMediaStream failed"),sn.uploadEvent({log:"stat-replayByRecreateMediaStream-failed"}),Ai.addFailedEvent({key:this.kind===YA.AUDIO?506700:516700,error:(e=this.element)==null?void 0:e.error}),this.emit(mo.ERROR,A)})}doReplayByRecreateMediaStream(A){return this._log.warn("delay ".concat(A,"ms to recreate mediaStream")),new Promise((e,o)=>{_C(A).then(()=>{this.element&&(this.element.srcObject=null,this.element.srcObject=new MediaStream([this.track]),this._log.warn("recreated mediaStream"),this.element.onerror=()=>{var a,c,d;this._log.warn("element onerror ".concat((c=(a=this.element)==null?void 0:a.error)==null?void 0:c.code," fired after recreated mediaStream")),o((d=this.element)==null?void 0:d.error)}),_C(5e3).then(()=>{var a,c;(!this.isPlaying||(a=this.element)!=null&&a.error)&&o((c=this.element)==null?void 0:c.error),e()})})}).finally(()=>{this.element&&(this.element.onerror=null)})}handleTrackEvent(A){return KA(this,null,function*(){let e=A.type;switch(this.options.enableLogTrackState&&this._log[e===YA.UNMUTE?"info":"warn"]("track ".concat(e)),e){case YA.ENDED:this.handleStopped(YA.ENDED);break;case YA.MUTE:this.handlePaused(YA.MUTE);break;case YA.UNMUTE:this.mode>0?this.handlePlaying(this.mode.toString()):this.element&&(this.element.paused&&!this.isPausedByUserCall&&(this._log.warn("track unmuted and element is paused, resume"),yield this.doResume()),this.element&&!this.element.paused&&this._isElementPlayingFired&&this.handlePlaying(YA.UNMUTE))}})}handlePlaying(A){var e;return this._log.debug("handlePlaying",A),(e=this._playSuccessResolve)==null||e.call(this,A),A}handlePaused(A){return this._log.debug("handlePaused",A),A}handleStopped(A){return this._log.debug("handleStopped",A),A}getElement(){return this.element}};Y(kC,"PlayerEvent",mo),di([zh({settings:{retries:2,timeout:0},onError(A,e,o,a){a[0]=(a[0]||1e3)+1e3,e()}})],kC.prototype,"doReplayByRecreateMediaStream"),di([lc([],"PLAYING",{sync:!0,success(A){this.emit(mo.PLAYER_STATE_CHANGED,{type:this.kind,state:"PLAYING",reason:A})}})],kC.prototype,"handlePlaying"),di([lc("PLAYING","PAUSED",{ignoreError:!0,sync:!0,success(A){this.emit(mo.PLAYER_STATE_CHANGED,{type:this.kind,state:"PAUSED",reason:A})}})],kC.prototype,"handlePaused"),di([lc([],"STOPPED",{sync:!0,success(A){this.emit(mo.PLAYER_STATE_CHANGED,{type:this.kind,state:"STOPPED",reason:A})}})],kC.prototype,"handleStopped");var Zh="trtc_autoplay",wk="".concat(Zh,"_mask"),vM="".concat(Zh,"_wrapper"),RM="".concat(Zh,"_header"),wM="".concat(Zh,"_content"),K0="".concat(Zh,"_action_wrapper"),AA="".concat(Zh,"_question"),Z="".concat(Zh,"_collapse"),hA="".concat(Zh,"_action_confirm"),bA="".concat(Zh,"_detail"),ue="#2473E8",ye="dialog",ve="".concat(ye,"-show"),Le="".concat(ye,"-1"),et="".concat(ye,"-2"),Ve=!1,Tt=!1,mi=()=>Tt,wi="".concat(Vh,"/").concat(Yd()?"zh-cn":"en","/tutorial-21-advanced-auto-play-policy.html"),Ds="
    ").concat(Yd()?"其他方案?":"Any other solution?",""),Tn="".concat(Yd()?"浏览器自动播放策略:在用户与页面产生交互(点击、触摸)之前,浏览器禁止播放有声媒体。该弹窗用于帮助用户恢复音视频播放。".concat(Ds):"Autoplay Policy: Before user interacts with the web page (clicking, touching), page will not be allowed to play media with sound. This Dialog is used to help users resume playback. ".concat(Ds)),ta=class{constructor(){if(Y(this,"content","音视频播放被浏览器拦截,请点击“恢复播放”。"),Y(this,"_dialogNode",null),Y(this,"_bodyPosition",""),Y(this,"_showDetail",!1),Y(this,"_isCollapseClicked",!1),Y(this,"_isQuestionClicked",!1),Yd()||(this.content='Media playback failed. Click the "Resume" to resume playback.'),!Ve){let A=document.createElement("style");A.innerHTML=".".concat(wk,"{position:fixed;top:0;left:0;right:0;bottom:0;width:100vw;height:100vh;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.5);z-index:1500;}.").concat(wk," div:not(.").concat(K0,"){display:block !important;}.").concat(vM,"{padding:14px;background:#fff;border-radius:3px;box-shadow:0px 3px 15px #434343;border:1px solid #d1cfcf;max-width:500px;}.").concat(vM," a{color:").concat(ue,";}.").concat(RM,"{overflow:hidden;text-overflow:ellipsis;font-size:16px;font-weight:600;}.").concat(wM,"{margin:8px 0;}.").concat(K0,"{width:100%;display:flex !important;align-items:center;justify-content:right;float:right;}.").concat(Z,"{margin-right:auto;cursor:pointer}.").concat(AA,"{height:100%;line-height:16px;cursor:pointer;}.").concat(hA,"{margin-left:8px;color:#fff;background:").concat(ue,";padding:4px 12px;outline:none;border:1px solid;border-radius:3px;font-weight:bold;}.").concat(hA,":hover{opacity:0.9;}.").concat(Z,",.").concat(hA,",.").concat(wM,",.").concat(AA,"{font-size:14px;}@media screen and (max-width:750px){.").concat(vM,"{width:80vw;}}"),document.head.appendChild(A),Ve=!0}this.addDiaLog()}createDiaLog(){let A=document.createElement("template");A.innerHTML='
    ").concat(location.host,"
    ").concat(this.content,"
    ").trim();let e=document.createElement("button");e.className=hA,e.innerText=Yd()?"恢复播放":"Resume",e.onclick=this.onConfirm.bind(this);let o=document.createElement("div");o.className=AA,o.innerHTML=` + `],{type:"application/javascript"}))),uE.sharedWorker.onmessage=o=>{var a;if(o.data.type==="tick"){let c=uE.workerTasks.get(o.data.taskId);c&&(uE.isBreakLoop(c)?((a=uE.sharedWorker)==null||a.postMessage({type:"stop",taskId:c.taskID}),uE.workerTasks.delete(c.taskID)):(c.callback(),c.loopCount+=1))}}),uE.workerTasks.set(e.taskID,e),uE.sharedWorker.postMessage({taskId:e.taskID,delay:e.delay,type:"start"})}static timeout(e){let o=()=>{if(e.callback(),e.loopCount+=1,!uE.isBreakLoop(e))return e.timeoutID=setTimeout(o,e.delay)};return e.timeoutID=setTimeout(o,e.delay)}static ric(e){let o,a=ko(),c=()=>{if(o=ko()-a,o>=e.delay&&(a=ko()-Math.floor(o%e.delay),e.callback(),e.loopCount+=1),!uE.isBreakLoop(e))return e.ricID=Vk(c,{timeout:e.delay})};return e.ricID=Vk(c,{timeout:e.delay})}static raf(e){let o,a=ko(),c=()=>document.hidden&&e.backgroundTask?(o=ko()-a,a=ko(),e.callback(),e.loopCount+=1,uE.isBreakLoop(e)?void 0:e.timeoutID=setTimeout(c,e.delay-Math.floor(o%e.delay))):(o=ko()-a,o>=e.delay&&(a=ko()-Math.floor(o%e.delay),e.callback(),e.loopCount+=1),uE.isBreakLoop(e)?void 0:e.rafID=requestAnimationFrame(c));if(e.rafID=requestAnimationFrame(c),e.backgroundTask){let d=()=>{if(document.hidden){let C=ko()-a;C>=e.delay?c():e.timeoutID=setTimeout(c,e.delay-C)}};document.addEventListener("visibilitychange",d),e.onVisibilitychange=d,document.hidden&&d()}return e.taskID}static hasTask(e){return this.taskMap.has(e)}static clearTask(e){if(!this.taskMap.has(e))return!0;let{intervalID:o,timeoutID:a,rafID:c,ricID:d,onVisibilitychange:C}=this.taskMap.get(e);return o&&clearInterval(o),a&&clearTimeout(a),c&&Wp&&Wp(c),d&&Cl(d),C&&document.removeEventListener("visibilitychange",C),this.taskMap.delete(e),!0}static isBreakLoop(e){return!this.hasTask(e.taskID)||e.count!==0&&e.loopCount>=e.count&&(this.clearTask(e.taskID),!0)}};Y(By,"taskMap",new Map),Y(By,"currentTaskID",1),Y(By,"sharedWorker",null),Y(By,"workerTasks",new Map);var Tr=By,fo={LOAD_START:YA.LOADSTART,LOADED_DATA:YA.LOADEDDATA,LOADED_META_DATA:YA.LOADEDMETADATA,MEDIA_TRACK_CHANGED:"media-track-changed",PLAYER_STATE_CHANGED:"player-state-changed",ERROR:"error",AUTOPLAY_FAILED:"autoplay-failed",RESIZE:YA.RESIZE,TIME_UPDATE:"time-update",LEAVE_PICTURE_IN_PICTURE:YA.LEAVE_PICTURE_IN_PICTURE,ENTER_PICTURE_IN_PICTURE:YA.ENTER_PICTURE_IN_PICTURE,USER_RESUME_IN_PIP_OR_FULL_SCREEN:"user-resume-in-pip-or-full-screen",USER_PAUSE_IN_PIP_OR_FULL_SCREEN:"user-pause-in-pip-or-full-screen",ENTER_FULL_SCREEN:"enter-full-screen",LEAVE_FULL_SCREEN:"leave-full-screen",VOLUME_CHANGE:"volume-change",FIRST_FRAME_RENDER:"first-frame-render"},Jk={};Jh(Jk,{create:()=>id,remove:()=>kn});var Zh=new WeakMap;function id(A,e){Zh.has(A)||Zh.set(A,[]);let o=Zh.get(A),a={add:(c,d)=>("addEventListener"in e?(o.push(e.removeEventListener.bind(e,c,d)),e.addEventListener(c,d)):(o.push(e.off.bind(e,c,d)),e.on(c,d)),a)};return a}function kn(A){let e=Zh.get(A);e&&(e.forEach(o=>o()),Zh.delete(A))}var sn=new class{constructor(){Y(this,"_roomIdMap",new Map),Y(this,"_configs"),typeof registerProcessor>"u"&&(this._configs={sdkAppId:"",userId:"",version:Hd,env:KB.QCLOUD,browserVersion:sQ.name+sQ.version,ua:navigator.userAgent})}setConfig(A){let{sdkAppId:e,env:o,userId:a,roomId:c}=A;e!==this._configs.sdkAppId&&(this._configs.sdkAppId=String(e)),this._configs.env=o,this._configs.userId=a,this._roomIdMap.set(a,String(c))}logSuccessEvent(A){Fp||!QA.isAbleToUpload||this._configs.env===KB.QCLOUD&&this.uploadEventToKibana(Qo(mi({},A),{result:"success"}))}logFailedEvent(A){if(Fp||!QA.isAbleToUpload)return;let{eventType:e,code:o,error:a,userId:c}=A,d={roomId:this._roomIdMap.get(c||this._configs.userId),userId:c,eventType:e,result:"failed",code:o||a?.extraCode||a?.code||Et.UNKNOWN};this._configs.env===KB.QCLOUD&&this.uploadEventToKibana(Qo(mi({},d),{error:a}))}uploadEventToKibana(A){let e="stat-".concat(A.eventType,"-").concat(A.result);(A.eventType==="delta-join"||A.eventType==="delta-leave"||A.eventType==="delta-publish")&&(e="".concat(A.eventType,":").concat(A.delta)),this.uploadEvent({log:e,userId:A.userId}),A.result==="failed"&&(e="stat-".concat(A.eventType,"-").concat(A.result,"-").concat(A.code),this.uploadEvent({log:e,userId:A.userId,error:A.error}))}uploadEvent(A){let{log:e,userId:o,error:a}=A,c={timestamp:Rx(),sdkAppId:this._configs.sdkAppId,userId:o||this._configs.userId,version:Hd,log:e};a&&(c.errorInfo=a.message,a.stack&&(c.errorInfo+=` +`.concat(a.stack)));let d=_A.enable?$B(c,2002,Number(this._configs.sdkAppId)):JSON.stringify(c);this.sendRequest(Jf(this._configs.sdkAppId,GI.LOG),d)}sendRequest(A,e){setTimeout(()=>AQ({url:A,body:e,priority:"low"}).catch(()=>{}),2e3)}},OC=new WeakMap;function Xh(A){let{settings:e={retries:5,timeout:2e3},onError:o,onRetrying:a,onRetryFailed:c}=A;return function(d,C,y){let S=oM({retryFunction:y.value,settings:e,onError(b){let{error:V,retry:J,reject:gA,retryFuncArgs:CA}=b;var MA;o?o.call(this,V,()=>{var $A;($A=OC.get(d))!=null&&$A.has(C)?J():gA(V)},gA,CA):(MA=OC.get(d))!=null&&MA.has(C)?J():gA(V)},onRetrying(b,V){var J;Tp(a)&&a.call(this,b,V),(J=OC.get(d))!=null&&J.has(C)&&(OC.get(d).get(C).stopRetry=V)},onRetryFailed:c});return y.value=function(){let b=OC.get(d);for(var V=arguments.length,J=new Array(V),gA=0;gA{var CA;return(CA=OC.get(d))==null?void 0:CA.delete(C)})},y}}function t_(A){let{fnName:e,callback:o,validateArgs:a=!0}=A;return function(c,d,C){let y=C.value;return C.value=function(){for(var S,b,V=arguments.length,J=new Array(V),gA=0;gAYe===he)){$A=!1;break}}$A&&(o&&o.apply(this,J),CA&&CA(),(b=OC.get(c))==null||b.delete(e))}return y.apply(this,J)},C}}var PC=class extends Zs{constructor(A,e){super(A.id,"".concat(e,"-player")),this.options=A,this.kind=e,Y(this,"id"),Y(this,"element",null),Y(this,"track"),Y(this,"url"),Y(this,"attr"),Y(this,"mode"),Y(this,"muted"),Y(this,"_log"),Y(this,"isPausedByUserCall",!1),Y(this,"_pausedRetryCount"),Y(this,"_isElementPlayingFired",!1),Y(this,"_interval"),Y(this,"_delayDestroyTimeoutId",0),Y(this,"_playSuccessResolve"),Y(this,"_isReplayByRecreateMediaStreamCalled",!1),Y(this,"isPlayCalled",!1),Y(this,"isInAutoPlayFailedState",!1),Y(this,"isBindAutoPlayEvent",!1),this.id=A.id,this._log=A.log,this.track=A.track,this.muted=A.muted,this._pausedRetryCount=Mp,this._state="STOPPED",this.bindTrackEvents(),this._log.info("create ".concat(e,"-player ").concat(this.id))}get isPlaying(){var A;return this._state==="PLAYING"&&((A=this.element)==null?void 0:A.paused)===!1}get isPaused(){var A;return this._state==="PAUSED"||((A=this.element)==null?void 0:A.paused)===!0}get isStopped(){return this._state==="STOPPED"}setAttr(A){this.attr=A}setUrl(A){this.track&&(this.unbindTrackEvents(),this.element&&(this.element.srcObject=null),this.track=null),A!==this.url&&(this.url=A,A!==null&&this.element&&(this.element.crossOrigin="anonymous",this.element.src=A))}play(){return KA(this,null,function*(){if(!this.isPlaying)try{this.isPlayCalled=!0,this._delayDestroyTimeoutId&&(clearTimeout(this._delayDestroyTimeoutId),this._delayDestroyTimeoutId=0,this.bindTrackEvents(),this.bindElementEvents()),this.bindAutoPlayEvent(),yield new Promise((A,e)=>{this._playSuccessResolve=A,this.element.play().then(A,e)})}catch(A){let e=Xo({key:Mo.PLAY_FAILED,data:{media:this.kind,error:A}});if(this._log.warn(A),e.includes("NotAllowedError"))throw this.isInAutoPlayFailedState=!0,new si({code:Et.PLAY_NOT_ALLOWED,message:e})}})}stop(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;var e;this.isPlayCalled=!1,this.isPausedByUserCall=!1,this._isElementPlayingFired=!1,this.unbindEvents(),A>0&&!Up?this._delayDestroyTimeoutId||((e=this.element)==null||e.remove(),this._log.info("destroy element after 3 * ".concat(A)),this._delayDestroyTimeoutId=setTimeout(()=>this.destroyElement(),3*A)):this.destroyElement(),this.handleStopped(YA.ENDED),this._interval>0&&Tr.clearTask(this._interval)}destroyElement(){this.element&&(this._log.debug("destroy element"),this.element.remove(),this.element.src="",this.element.srcObject=null,this.element=null),clearTimeout(this._delayDestroyTimeoutId),this._delayDestroyTimeoutId=0}pause(){this._log.info("pause"),this.isPausedByUserCall=!0,this.doPause()}doPause(){var A;(A=this.element)==null||A.pause()}resume(){let A=arguments.length>0&&arguments[0]!==void 0&&arguments[0];return this.isPausedByUserCall=!1,this.doResume(A)}doResume(){return this._log.info("resume"),this.isPausedByUserCall||this.isPlaying?Promise.resolve():m2?this.replay():this.play().catch(()=>{})}setMuted(A){this.element&&(this.element.muted=A),this.muted=A}replay(){return this.stop(),this.play().catch(()=>{})}bindElementEvents(){if(this.element){let A=this.handleElementEvent.bind(this);return id(this.element,this.element).add(YA.PLAYING,A).add(YA.ENDED,A).add(YA.PAUSE,A).add(YA.ERROR,A).add(YA.LOADSTART,A).add(YA.LOADEDDATA,A).add(YA.LOADEDMETADATA,A)}}bindTrackEvents(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.track;if(A){let e=this.handleTrackEvent.bind(this);Jk?.create(A,A).add(YA.ENDED,e).add(YA.MUTE,e).add(YA.UNMUTE,e),A.readyState===YA.ENDED&&this.handleTrackEvent({type:YA.ENDED}),A.muted&&this.handleTrackEvent({type:YA.MUTE})}}bindAutoPlayEvent(){this.isBindAutoPlayEvent||(this._log.warn("bindAutoPlayEvent"),F.on(sA.AUTOPLAY_DIALOG_CLICK_CONFIRM,this.resume,this),this.isBindAutoPlayEvent=!0)}unbindTrackEvents(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.track;A&&kn(A)}unbindEvents(){this.element&&kn(this.element),this.unbindTrackEvents(),F.off(sA.AUTOPLAY_DIALOG_CLICK_CONFIRM,this.resume,this),this.isBindAutoPlayEvent=!1}handleElementEvent(A){switch(A.type){case YA.PLAYING:fi()||(this.isInAutoPlayFailedState=!1),this._isElementPlayingFired=!0,this._log.info("".concat(this.kind," player is playing")),this.handlePlaying(YA.PLAYING),this._interval&&(Tr.clearTask(this._interval),this._interval=-1);break;case YA.ENDED:this._log.info("".concat(this.kind," player is ended")),this.handleStopped(YA.ENDED);break;case YA.PAUSE:this._log.info("".concat(this.kind," player is paused")),this.handlePaused(YA.PAUSE);break;case YA.ERROR:if(this.element&&this.element.error){this.handlePaused(YA.ERROR);let{code:e,message:o}=this.element.error;this._log.error("".concat(this.kind," ").concat(this._log.isLocal?"local":"remote"," MediaError code: ").concat(e," message: ").concat(o," userAgent: ").concat(navigator.userAgent)),sn.uploadEvent({log:"stat-".concat(this.kind,"-").concat(Ja.PLAYER_ERROR,"-").concat(e,"-").concat(navigator.userAgent),error:this.element.error}),ak||rk?this.emit(fo.ERROR,this.element.error):this.replayByRecreateMediaStream(this.element.error)}break;case YA.LOADEDDATA:this.kind===YA.VIDEO&&this.emit(fo.LOADED_DATA);break;case YA.LOADEDMETADATA:this.kind===YA.VIDEO&&this.emit(fo.LOADED_META_DATA);break;case YA.LOADSTART:this.emit(fo.LOAD_START)}}replayByRecreateMediaStream(A){if(!this._isReplayByRecreateMediaStreamCalled)return this._isReplayByRecreateMediaStreamCalled=!0,this.doReplayByRecreateMediaStream(1e3).then(()=>{this._log.warn("replayByRecreateMediaStream success"),sn.uploadEvent({log:"stat-replayByRecreateMediaStream-success"}),Ai.addSuccessEvent({key:this.kind===YA.AUDIO?506700:516700})}).catch(()=>{var e;this._log.error("replayByRecreateMediaStream failed"),sn.uploadEvent({log:"stat-replayByRecreateMediaStream-failed"}),Ai.addFailedEvent({key:this.kind===YA.AUDIO?506700:516700,error:(e=this.element)==null?void 0:e.error}),this.emit(fo.ERROR,A)})}doReplayByRecreateMediaStream(A){return this._log.warn("delay ".concat(A,"ms to recreate mediaStream")),new Promise((e,o)=>{kC(A).then(()=>{this.element&&(this.element.srcObject=null,this.element.srcObject=new MediaStream([this.track]),this._log.warn("recreated mediaStream"),this.element.onerror=()=>{var a,c,d;this._log.warn("element onerror ".concat((c=(a=this.element)==null?void 0:a.error)==null?void 0:c.code," fired after recreated mediaStream")),o((d=this.element)==null?void 0:d.error)}),kC(5e3).then(()=>{var a,c;(!this.isPlaying||(a=this.element)!=null&&a.error)&&o((c=this.element)==null?void 0:c.error),e()})})}).finally(()=>{this.element&&(this.element.onerror=null)})}handleTrackEvent(A){return KA(this,null,function*(){let e=A.type;switch(this.options.enableLogTrackState&&this._log[e===YA.UNMUTE?"info":"warn"]("track ".concat(e)),e){case YA.ENDED:this.handleStopped(YA.ENDED);break;case YA.MUTE:this.handlePaused(YA.MUTE);break;case YA.UNMUTE:this.mode>0?this.handlePlaying(this.mode.toString()):this.element&&(this.element.paused&&!this.isPausedByUserCall&&(this._log.warn("track unmuted and element is paused, resume"),yield this.doResume()),this.element&&!this.element.paused&&this._isElementPlayingFired&&this.handlePlaying(YA.UNMUTE))}})}handlePlaying(A){var e;return this._log.debug("handlePlaying",A),(e=this._playSuccessResolve)==null||e.call(this,A),A}handlePaused(A){return this._log.debug("handlePaused",A),A}handleStopped(A){return this._log.debug("handleStopped",A),A}getElement(){return this.element}};Y(PC,"PlayerEvent",fo),di([Xh({settings:{retries:2,timeout:0},onError(A,e,o,a){a[0]=(a[0]||1e3)+1e3,e()}})],PC.prototype,"doReplayByRecreateMediaStream"),di([lc([],"PLAYING",{sync:!0,success(A){this.emit(fo.PLAYER_STATE_CHANGED,{type:this.kind,state:"PLAYING",reason:A})}})],PC.prototype,"handlePlaying"),di([lc("PLAYING","PAUSED",{ignoreError:!0,sync:!0,success(A){this.emit(fo.PLAYER_STATE_CHANGED,{type:this.kind,state:"PAUSED",reason:A})}})],PC.prototype,"handlePaused"),di([lc([],"STOPPED",{sync:!0,success(A){this.emit(fo.PLAYER_STATE_CHANGED,{type:this.kind,state:"STOPPED",reason:A})}})],PC.prototype,"handleStopped");var $h="trtc_autoplay",Hk="".concat($h,"_mask"),bM="".concat($h,"_wrapper"),kM="".concat($h,"_header"),LM="".concat($h,"_content"),i_="".concat($h,"_action_wrapper"),AA="".concat($h,"_question"),Z="".concat($h,"_collapse"),hA="".concat($h,"_action_confirm"),bA="".concat($h,"_detail"),Ie="#2473E8",De="dialog",ve="".concat(De,"-show"),Ue="".concat(De,"-1"),st="".concat(De,"-2"),He=!1,Nt=!1,fi=()=>Nt,wi="".concat(Hh,"/").concat(Kd()?"zh-cn":"en","/tutorial-21-advanced-auto-play-policy.html"),Ds="
    ").concat(Kd()?"其他方案?":"Any other solution?",""),Tn="".concat(Kd()?"浏览器自动播放策略:在用户与页面产生交互(点击、触摸)之前,浏览器禁止播放有声媒体。该弹窗用于帮助用户恢复音视频播放。".concat(Ds):"Autoplay Policy: Before user interacts with the web page (clicking, touching), page will not be allowed to play media with sound. This Dialog is used to help users resume playback. ".concat(Ds)),oa=class{constructor(){if(Y(this,"content","音视频播放被浏览器拦截,请点击“恢复播放”。"),Y(this,"_dialogNode",null),Y(this,"_bodyPosition",""),Y(this,"_showDetail",!1),Y(this,"_isCollapseClicked",!1),Y(this,"_isQuestionClicked",!1),Kd()||(this.content='Media playback failed. Click the "Resume" to resume playback.'),!He){let A=document.createElement("style");A.innerHTML=".".concat(Hk,"{position:fixed;top:0;left:0;right:0;bottom:0;width:100vw;height:100vh;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.5);z-index:1500;}.").concat(Hk," div:not(.").concat(i_,"){display:block !important;}.").concat(bM,"{padding:14px;background:#fff;border-radius:3px;box-shadow:0px 3px 15px #434343;border:1px solid #d1cfcf;max-width:500px;}.").concat(bM," a{color:").concat(Ie,";}.").concat(kM,"{overflow:hidden;text-overflow:ellipsis;font-size:16px;font-weight:600;}.").concat(LM,"{margin:8px 0;}.").concat(i_,"{width:100%;display:flex !important;align-items:center;justify-content:right;float:right;}.").concat(Z,"{margin-right:auto;cursor:pointer}.").concat(AA,"{height:100%;line-height:16px;cursor:pointer;}.").concat(hA,"{margin-left:8px;color:#fff;background:").concat(Ie,";padding:4px 12px;outline:none;border:1px solid;border-radius:3px;font-weight:bold;}.").concat(hA,":hover{opacity:0.9;}.").concat(Z,",.").concat(hA,",.").concat(LM,",.").concat(AA,"{font-size:14px;}@media screen and (max-width:750px){.").concat(bM,"{width:80vw;}}"),document.head.appendChild(A),He=!0}this.addDiaLog()}createDiaLog(){let A=document.createElement("template");A.innerHTML='
    ").concat(location.host,"
    ").concat(this.content,"
    ").trim();let e=document.createElement("button");e.className=hA,e.innerText=Kd()?"恢复播放":"Resume",e.onclick=this.onConfirm.bind(this);let o=document.createElement("div");o.className=AA,o.innerHTML=` - `,o.onclick=this.onQuestionClick.bind(this);let a=document.createElement("div");a.className=Z,a.innerText="".concat(Yd()?"详情 >":"Detail >"),a.onclick=this.onCollapseClick.bind(this);let c=A.content.firstChild,d=c.querySelector(".".concat(K0));return d.appendChild(a),d.appendChild(o),d.appendChild(e),c}addDiaLog(){mi()||(Tt=!0,this._dialogNode=this.createDiaLog(),document.body.appendChild(this._dialogNode),this._dialogNode.onclick=this.onConfirm.bind(this),this._dialogNode.querySelector(".".concat(vM)).onclick=A=>A.stopPropagation(),this._bodyPosition=document.body.style.position,document.body.style.position="fixed",QA.info("show autoplay dialog"),sn.uploadEvent({log:ve}))}deleteDialog(){this._dialogNode&&(document.body.removeChild(this._dialogNode),document.body.style.position=this._bodyPosition,this._dialogNode=null,Tt=!1),Oc=null}onConfirm(){QA.warn("confirm clicked, try resume stream"),U.emit(sA.AUTOPLAY_DIALOG_CLICK_CONFIRM),this.deleteDialog()}onCollapseClick(){let A=this._dialogNode.querySelector(".".concat(bA));A.style.visibility="".concat(this._showDetail?"hidden":"visible"),A.style.height="".concat(this._showDetail?0:"fit-content"),this._showDetail=!this._showDetail,this._isCollapseClicked||sn.uploadEvent({log:Le}),this._isCollapseClicked=!0}onQuestionClick(){window.open(wi,"_blank"),this._isQuestionClicked||sn.uploadEvent({log:et}),this._isQuestionClicked=!0}},Oc=null;function LC(){Oc||(Oc=new ta)}var Ei,Mo=class J6 extends kC{constructor(e){super(e,YA.VIDEO),Y(this,"stat",{}),Y(this,"_calculateTimeout",-1),Y(this,"viewMirror",!1),Y(this,"objectFit","cover"),Y(this,"container"),Y(this,"canvas"),Y(this,"shouldRenderAlpha",!1),Y(this,"_preSize",{width:0,height:0}),Y(this,"posterImg"),Y(this,"pipWindow"),Y(this,"enterPIPPromise"),Y(this,"_originContainerPosition"),Y(this,"_isResettingSrcObject",!1),Y(this,"_wrapper",null),Y(this,"_useWrapper",!1),Y(this,"_isFirstFrameRenderEmitted",!1),this.mode=e.canvas?1:0,this.container=e.container,this.canvas=e.canvas,Ye(e.viewMirror)||(this.viewMirror=e.viewMirror),Ye(e.objectFit)||(this.objectFit=e.objectFit),this.initializeElement()}get isPlaying(){var e;return!(this._state!=="PLAYING"||this.element&&this.element.paused)&&((e=this.track)==null?void 0:e.readyState)==="live"&&!this.track.muted}initializeElement(){let e=document.createElement(YA.VIDEO);this.track&&this.mode!==2&&(e.srcObject=new MediaStream([this.track])),e.muted=!0,e.setAttribute("id","video_".concat(this.id)),e.setAttribute("style",this.styleAttribute),this.canvas&&this.canvas.setAttribute("style",this.styleAttribute),e.setAttribute("autoplay","autoplay"),e.setAttribute("playsinline","playsinline"),this.element=e,Ja&&(e.poster="data:,"),this._appendToWrapper(),this.bindElementEvents(),this.calculateStat(),this._bindFirstFrameRenderEvent(e)}_bindFirstFrameRenderEvent(e){let o=()=>{if(this._isFirstFrameRenderEmitted)return;this._isFirstFrameRenderEmitted=!0;let a=e.videoWidth||0,c=e.videoHeight||0;this._log.info("first frame render: ".concat(a,"x").concat(c)),this.emit(mo.FIRST_FRAME_RENDER,{width:a,height:c})};typeof e.requestVideoFrameCallback=="function"?e.requestVideoFrameCallback(o):e.addEventListener("loadeddata",o,{once:!0})}get styleAttribute(){let e=this._useWrapper?"grid-area:1/1;width:100%;height:100%;object-fit:".concat(this.objectFit,";").concat(this.shouldRenderAlpha?"":"background-color:black",";"):"width:100%;height:100%;object-fit:".concat(this.objectFit,";").concat(this.shouldRenderAlpha?"":"background-color:black",";");return this.viewMirror&&(e+="transform:scaleX(-1);"),e}setLiveMode(e){if(this._useWrapper!==e&&(this._useWrapper=e,this.elementToRender&&this.elementToRender.setAttribute("style",this.styleAttribute),this.container&&this.elementToRender))if(e){let o=this._getOrCreateWrapper();o.insertBefore(this.elementToRender,o.firstChild)}else this.container.appendChild(this.elementToRender),this._cleanupWrapper()}setContainer(e){if(this.container===e)return;let o=this._wrapper,a=this.container;this.container=e,this._pausedRetryCount=fp,this.track&&this.elementToRender&&this._appendToWrapper(),o&&a&&a!==this.container&&o.isConnected&&o.children.length===0&&o.remove()}_getOrCreateWrapper(){if(!this.container)throw new Error("[VideoPlayer] container is required");let e=this.container.querySelector("[data-trtc-video-wrapper]");return e||(e=document.createElement("div"),e.setAttribute("data-trtc-video-wrapper","true"),e.style.cssText="display:grid;width:100%;height:100%;",this.container.appendChild(e)),this._wrapper=e,e}_appendToWrapper(e){let o=e??this.elementToRender;if(this.container&&o)if(this._useWrapper){let a=this._getOrCreateWrapper();a.insertBefore(o,a.firstChild)}else this.container.appendChild(o)}bindElementEvents(){let e=super.bindElementEvents();this.handleElementEvent=this.handleElementEvent.bind(this),this.handleFullscreenChange=this.handleFullscreenChange.bind(this),this.handleVolumeChange=this.handleVolumeChange.bind(this),e&&e.add(YA.ENTER_PICTURE_IN_PICTURE,this.handleElementEvent).add(YA.LEAVE_PICTURE_IN_PICTURE,this.handleElementEvent).add(YA.RESIZE,this.handleElementEvent),this.element&&(this.element.addEventListener(YA.FULLSCREEN_CHANGE,this.handleFullscreenChange),this.element.addEventListener("webkitbeginfullscreen",this.handleFullscreenChange),this.element.addEventListener("webkitendfullscreen",this.handleFullscreenChange),this.element.addEventListener("volumechange",this.handleVolumeChange))}handleTrackEvent(e){var o;return e.type===YA.MUTE&&((o=this.stat)!=null&&o.fps&&(this.stat.fps=0),this.isFullscreen()&&this.resetSrcObjectToReplay()),super.handleTrackEvent(e)}handleFullscreenChange(){this.isFullscreen()?(this._log.info("enter fullscreen"),this.emit(mo.ENTER_FULL_SCREEN)):(this._log.info("leave fullscreen"),this.emit(mo.LEAVE_FULL_SCREEN))}handleVolumeChange(){var e;(this.isPictureInPicture()||this.isFullscreen())&&this.emit(mo.VOLUME_CHANGE,{muted:(e=this.element)==null?void 0:e.muted})}handleElementEvent(e){var o,a,c,d,C,y;if(this.mode===2)return;super.handleElementEvent(e);let S=e.type,b=this.isPictureInPicture(),V=this.isFullscreen(),J=e.isTrusted&&(b&&Bg||V);if(S===YA.PLAYING&&J&&!this._isResettingSrcObject&&(this._log.warn("user resume in ".concat(V?"fullscreen":"pip")),this.emit(mo.USER_RESUME_IN_PIP_OR_FULL_SCREEN)),S===YA.PAUSE&&(J&&(this._log.warn("user pause in ".concat(V?"fullscreen":"pip")),this.emit(mo.USER_PAUSE_IN_PIP_OR_FULL_SCREEN)),this.container&&!this.container.isConnected&&(this._log.warn("".concat(this.kind," player has been remove, element ID: ").concat(this.container.id)),_C(500).then(()=>{var gA;(gA=this.container)!=null&&gA.isConnected&&(this._pausedRetryCount=fp,this._log.info("view container ".concat(this.container.id," is in dom, reset pausedRetryCount")))})),this._pausedRetryCount>0&&!mi()&&!this.isPausedByUserCall&&!J&&(this._log.info("[".concat(fp-this._pausedRetryCount+1,"/").concat(fp,"] ").concat(this.kind," player auto resume when paused")),this.doResume(),this._pausedRetryCount--),Ag&&!J&&(this._interval=_r.run("timeout",()=>{this.element&&this._state==="PAUSED"&&!this.isPausedByUserCall&&this.doResume()},{delay:3e3})),this.stat.fps&&(this.stat.fps=0)),this.viewMirror&&this.element){let gA=this.element.style.transform;S===YA.ENTER_PICTURE_IN_PICTURE?this.element.style.transform=gA.replace("scaleX(-1)",""):S===YA.LEAVE_PICTURE_IN_PICTURE&&!gA.includes("scaleX")&&(this.element.style.transform="".concat(gA," scaleX(-1)"))}S===YA.RESIZE&&(this._preSize.height!==((o=this.element)==null?void 0:o.videoHeight)||this._preSize.width!==((a=this.element)==null?void 0:a.videoWidth))&&(this._log.info("video size changed to ".concat((c=this.element)==null?void 0:c.videoWidth,"x").concat((d=this.element)==null?void 0:d.videoHeight)),this._preSize.height=((C=this.element)==null?void 0:C.videoHeight)||0,this._preSize.width=((y=this.element)==null?void 0:y.videoWidth)||0,this.emit(mo.RESIZE,{newWidth:this._preSize.width,newHeight:this._preSize.height})),S===YA.LEAVE_PICTURE_IN_PICTURE&&(this._log.warn("exit pip"),this.isPaused&&!this.isPausedByUserCall&&(this._log.warn("resume after exit pip"),this.doResume()),this.resetSrcObjectToReplay(),this.emit(mo.LEAVE_PICTURE_IN_PICTURE)),S===YA.ENTER_PICTURE_IN_PICTURE&&this.emit(mo.ENTER_PICTURE_IN_PICTURE)}resetSrcObjectToReplay(){Ja&&Ay&&this.isPlayCalled&&this.element&&this.track&&!this.isPausedByUserCall&&(this._log.warn("reset srcObject to replay for android chromium"),this._isResettingSrcObject=!0,this.element.srcObject=new MediaStream([this.track]),this.element.play().catch(e=>{this._log.warn("play failed after reset srcObject",e)}).finally(()=>{this._isResettingSrcObject=!1}))}setCanvas(e){let o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1;var a,c;this.canvas!==e&&((a=this.canvas)==null||a.remove(),e?.setAttribute("style",this.styleAttribute),this.canvas=e,this.mode=e?o:0,this.mode===2&&this.setTrack(e.captureStream().getVideoTracks()[0]),e?((c=this.element)==null||c.remove(),this._appendToWrapper(e)):this.element&&this._appendToWrapper(this.element))}setAttr(e){let o=Object.assign({autoplay:"autoplay",playsinline:"playsinline",muted:!0},e);o.style=Object.assign({width:"100%",height:"100%"},o.style),super.setAttr(o)}get mirror(){return this.viewMirror}setRect(e,o){this.elementToRender&&(this.elementToRender.style.width="".concat(e,"px"),this.elementToRender.style.height="".concat(o,"px"))}setViewMirror(e){this.elementToRender&&(this.elementToRender.style.transform=e?"scaleX(-1)":""),this.viewMirror=e}setObjectFit(e){this.elementToRender&&(this.elementToRender.style.objectFit="".concat(e)),this.objectFit=e}setPoster(e){let o=arguments.length>1&&arguments[1]!==void 0&&arguments[1];return new Promise(a=>{if(!this.element||(this._log.info("setPoster",e.slice(0,10)),e===""?this.element.removeAttribute("poster"):this.element.poster=e,!o||!Bg&&!er))return a();if(e==="")return this.removePosterImg(),a();if(this.posterImg)return a();let c=document.createElement("img");c.src=e;let d=window.getComputedStyle(this.element),C=d.objectFit||this.objectFit,y=1;if(this._useWrapper){let S=parseInt(d.zIndex,10);isNaN(S)||(y=S+1)}c.style.cssText=this._useWrapper?"grid-area:1/1;z-index:".concat(y,";width:100%;height:100%;object-fit:").concat(C,";"):"position:absolute;top:0;left:0;width:100%;height:100%;object-fit:".concat(C,";"),c.onload=()=>KA(this,null,function*(){try{c.decode&&(yield c.decode()),this.container&&!this._useWrapper&&window.getComputedStyle(this.container).position==="static"&&(this._originContainerPosition=this.container.style.position,this.container.style.position="relative"),this.posterImg=c;let S=this._useWrapper?this._wrapper:this.container;S?.appendChild(c),XS()&&Jd<=17&&this.elementToRender&&(this.elementToRender.style.visibility="hidden")}catch(S){this._log.warn("decode poster image error",S)}return a()}),c.onerror=()=>(this._log.warn("load poster image error"),a())})}removePosterImg(){this.posterImg&&(XS()&&Jd<=17&&this.elementToRender&&(this.elementToRender.style.visibility=""),this.posterImg.remove(),URL.revokeObjectURL(this.posterImg.src),!this._useWrapper&&this.container&&!Ye(this._originContainerPosition)&&this.container.style.position==="relative"&&(this.container.style.position=this._originContainerPosition),delete this.posterImg)}get hasPoster(){var e;return!!this.posterImg||!((e=this.element)==null||!e.getAttribute("poster"))}pause(){let e=!(arguments.length>0&&arguments[0]!==void 0)||arguments[0];return KA(this,null,function*(){RI(J6.prototype,this,"pause").call(this),!this.isPictureInPicture()&&!this.hasPoster&&(Ay||e&&(er||Bg))&&(yield this.setPoster(this.getVideoFrame(),!0))})}resume(){let e=arguments.length>0&&arguments[0]!==void 0&&arguments[0];return super.resume(e).then(()=>{var o;(this.posterImg||(o=this.element)!=null&&o.poster)&&this.setPoster("",!0)})}doResume(){let e=arguments.length>0&&arguments[0]!==void 0&&arguments[0];return this.isPaused&&e&&this.element&&this.track&&Ay&&this.track.kind==="video"&&(this.element.srcObject=new MediaStream([this.track])),super.doResume()}stop(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;var o;this.isPictureInPicture()&&this.exitPictureInPicture().catch(a=>{}),this.isFullscreen()&&this.exitFullscreen().catch(a=>{}),this.element&&(this.element.removeEventListener(YA.FULLSCREEN_CHANGE,this.handleFullscreenChange),this.element.removeEventListener("webkitbeginfullscreen",this.handleFullscreenChange),this.element.removeEventListener("webkitendfullscreen",this.handleFullscreenChange),this.element.removeEventListener("volumechange",this.handleVolumeChange)),this._isFirstFrameRenderEmitted=!1,super.stop(e),(o=this.canvas)==null||o.remove(),this.removePosterImg(),this._useWrapper&&this._cleanupWrapper()}_cleanupWrapper(){this._wrapper&&this._wrapper.children.length===0&&this._wrapper.remove(),this._wrapper=null}play(e){if(Ye(e?.isLiveStream)||this.setLiveMode(e.isLiveStream),this.element){if(this.elementToRender&&this.container)if(this._useWrapper){let o=this._getOrCreateWrapper();this.elementToRender.parentElement!==o&&o.insertBefore(this.elementToRender,o.firstChild)}else this.elementToRender.parentElement!==this.container&&this.container.append(this.elementToRender)}else this.initializeElement();return this.mode===2?Promise.resolve():super.play()}get elementToRender(){return this.canvas||this.element}setTrack(e){e!==this.track&&(this.unbindTrackEvents(),this.track=e,this.emit(mo.MEDIA_TRACK_CHANGED,e),e!==null&&(this.bindTrackEvents(),this.element&&this.mode!==2&&(this.element.srcObject=new MediaStream([e]),this.element.remove()),this._appendToWrapper()))}getVideoFrame(){if(this.canvas)return this.canvas.toDataURL("image/png");if(!this.element)return"";let e=document.createElement("canvas");return e.width=this.element.videoWidth,e.height=this.element.videoHeight,e.getContext("2d").drawImage(this.element,0,0),e.toDataURL("image/png")}getElement(){return this.element}calculateStat(){try{if(Vp()&&this.element&&this._calculateTimeout<0){let e=0,o=null,a=(c,d)=>{this.stat.width=d.width,this.stat.height=d.height,o&&(this.stat.fps=Math.round((d.presentedFrames-o.presentedFrames)/(c-e)*1e3)),e=c,o=d,this._calculateTimeout=-1,this.element&&(this._calculateTimeout=setTimeout(()=>{var C;return(C=this.element)==null?void 0:C.requestVideoFrameCallback(a)},2e3))};this.element.requestVideoFrameCallback(a)}}catch(e){this._log.warn("init stat failed",e)}}enterFullscreen(){return KA(this,null,function*(){let e=this.elementToRender;if(!e)throw this._log.warn("no element to render, cannot enter fullscreen"),new Error("No element available for fullscreen");if(Ag&&this.isPictureInPicture()){this._log.info("exit pip before entering fullscreen");try{yield this.exitPictureInPicture()}catch(o){this._log.warn("exit pip failed before fullscreen:",o)}}try{if(e.requestFullscreen)yield e.requestFullscreen();else if(e.webkitRequestFullscreen)yield e.webkitRequestFullscreen();else if(e.webkitEnterFullscreen)yield e.webkitEnterFullscreen();else if(e.mozRequestFullScreen)yield e.mozRequestFullScreen();else{if(!e.msRequestFullscreen)throw new Error("Fullscreen API not supported");yield e.msRequestFullscreen()}this._log.info("entered fullscreen mode")}catch(o){throw this._log.error("failed to enter fullscreen:",o),o}})}exitFullscreen(){return KA(this,null,function*(){try{if(!this.isFullscreen())return;if(document.exitFullscreen)yield document.exitFullscreen();else if(document.webkitExitFullscreen)yield document.webkitExitFullscreen();else if(document.mozCancelFullScreen)yield document.mozCancelFullScreen();else{if(!document.msExitFullscreen)throw new Error("Exit fullscreen API not supported");yield document.msExitFullscreen()}this._log.info("exited fullscreen mode")}catch(e){throw this._log.error("failed to exit fullscreen:",e),e}})}isFullscreen(){let e=this.elementToRender;return!!e&&(this.element&&this.element.webkitDisplayingFullscreen?!this.isPictureInPicture():(document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement)===e)}toggleFullscreen(){return KA(this,null,function*(){this.isFullscreen()?yield this.exitFullscreen():yield this.enterFullscreen()})}enterPictureInPicture(){return KA(this,null,function*(){this.enterPIPPromise=this._enterPictureInPicture();try{return yield this.enterPIPPromise}finally{delete this.enterPIPPromise}})}_enterPictureInPicture(){return KA(this,null,function*(){try{if(!this.element)throw new Error("No video element available for pip");if(this.canvas&&this.mode!==1)throw new Error("pip is not supported for canvas-only mode");let{element:e}=this;if(e.requestPictureInPicture){this._log.info("requestPictureInPicture");let o=yield e.requestPictureInPicture();return this.pipWindow=o,this._log.info("entered pip mode"),this.elementToRender===this.canvas&&(this.canvas.remove(),this._appendToWrapper(this.element)),o}if(e.webkitSetPresentationMode)return this._log.info("webkitSetPresentationMode"),yield e.webkitSetPresentationMode("picture-in-picture"),this._log.info("entered pip mode (webkit)"),{};throw new Error("pip API not supported")}catch(e){throw this._log.error("failed to enter pip:",e.name,e.message),e}})}exitPictureInPicture(){return KA(this,null,function*(){var e;try{if(!this.isPictureInPicture())return;if(delete this.pipWindow,document.pictureInPictureElement&&document.exitPictureInPicture)yield document.exitPictureInPicture(),this.elementToRender===this.canvas&&((e=this.element)==null||e.remove(),this._pausedRetryCount=fp,this._appendToWrapper(this.canvas)),this._log.info("exited pip mode");else{if(!this.element||!this.element.webkitSetPresentationMode)throw new Error("Exit pip API not supported or not in PiP mode");yield this.element.webkitSetPresentationMode("inline"),this._log.info("exited pip mode (webkit)")}}catch(o){throw this._log.error("failed to exit pip:",o),o}})}isPictureInPicture(){if(!this.element)return!1;let{element:e}=this;return document.pictureInPictureElement?document.pictureInPictureElement===e:!!e.webkitPresentationMode&&e.webkitPresentationMode==="picture-in-picture"}togglePictureInPicture(){return KA(this,null,function*(){this.isPictureInPicture()?yield this.exitPictureInPicture():yield this.enterPictureInPicture()})}};function Vg(A,e){return KA(this,null,function*(){if(!A.audioWorklet)return Promise.reject("audioWorklet is not supported");try{yield A.audioWorklet.addModule(e),QA.info("worklet addModule success")}catch(o){throw QA.info("worklet addModule catch error. ".concat(o.message)),o}})}typeof AudioContext<"u"?Ei=AudioContext:typeof webkitAudioContext<"u"?Ei=webkitAudioContext:typeof mozAudioContext<"u"&&(Ei=mozAudioContext);var Ln,cu=1500,qd=-1,qp=0,$E=-1,GI=!1,h2=0,j0=-1,_k=-1;(function A(){try{if(Ln)return;(Ln=new Ei({sampleRate:48e3})).onstatechange=()=>{QA.info("context state: ".concat(Ln.state).concat(Ln.state!=="running"?" visibilityState: ".concat(document.visibilityState):"")),W0()},clearTimeout(qd)}catch(e){QA.error("initAudioContext failed: ".concat(e," typeof AudioContextClass: ").concat(typeof Ei)),qd=setTimeout(A,1e3)}})();var W0=()=>{Ln.state==="suspended"?(qp=bo(),$E===-1&&($E=setTimeout(()=>{Ln.state==="suspended"&&(GI=!0,U.emit("155",{isSuspended:!0}))},cu)),Tk(),document.addEventListener("click",W0)):Ln.state==="interrupted"?Tk():(qp&&(Ai.addNumber({key:507800,value:bo()-qp,split:[0,500,1e3,1500,2e3,3e3,4e3,5e3,1e4,3e4],max:6e4}),qp=0),$E!==-1&&(clearTimeout($E),$E=-1,GI&&(GI=!1,U.emit("155",{isSuspended:!1}))),document.removeEventListener("visibilitychange",W0),document.removeEventListener("click",W0))},Xq=0,$q=-1;function Tk(){return new Promise((A,e)=>{if(Ln.state==="running")return A();Date.now()-Xq<1e3?(clearTimeout($q),$q=setTimeout(()=>{Xq=Date.now(),Ln.resume().then(A,e)},1e3)):(clearTimeout($q),Xq=Date.now(),Ln.resume().then(A,e))}).catch(A=>{QA.warn("context resume failed: ".concat(A)),document.addEventListener("visibilitychange",W0)})}document.addEventListener("click",W0);var bI=A=>Ln,kI=class{constructor(A){this.name=A,Y(this,"node"),Y(this,"node2"),Y(this,"pre",new Set),Y(this,"next",new Set),Y(this,"context"),Y(this,"connectedNodes",new Set),Y(this,"nextInputChannelMap",new Map),Y(this,"_channelCount",1)}get channelCount(){return this._channelCount}set channelCount(A){this._channelCount=A,this.setChannelCount(this.node,A),this.setChannelCount(this.node2,A),this.next.forEach(e=>e.channelCount=A)}setChannelCount(A,e){!A||A instanceof ScriptProcessorNode||(A.channelCountMode="explicit",A.channelCount=e||this.channelCount||1)}setContext(A){this.context=A,this.node&&A.addMixWeight()}removeContext(){var A;this.node&&((A=this.context)==null||A.reduceMixWeight()),delete this.context}replaceNode(A){var e;if(A!==this.node)try{this.node?this._disconnect():(e=this.context)==null||e.addMixWeight(),this.node=A,this.setChannelCount(this.node),this.preNodeReconnect(),this.reconnect()}catch(o){QA.error(o)}}setNode(A,e){var o;if(!this.node)try{(o=this.context)==null||o.addMixWeight(),this.node=A,this.setChannelCount(this.node),e&&(this.node2=e,this.setChannelCount(this.node2)),this.preNodeReconnect(),this.reconnect(),Ai.addSuccessEvent({key:502701})}catch(a){QA.error(a),Ai.addFailedEvent({key:502701,error:a})}}deleteNode(){var A;if(this.node)try{this._disconnect(),delete this.node,delete this.node2,(A=this.context)==null||A.reduceMixWeight(),this.preNodeReconnect(),Ai.addSuccessEvent({key:502702})}catch(e){QA.error(e),Ai.addFailedEvent({key:502702,error:e})}}preNodeReconnect(){this.pre.forEach(A=>{A.node?A.reconnect():A.preNodeReconnect()})}connectNext(A){this.next.forEach(e=>{let o=this.nextInputChannelMap.get(e);A._connect(e.node,o)||e.connectNext(A)})}_connect(A){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return!(!this.node||!A)&&((this.node2||this.node).connect(A,0,e),this.connectedNodes.add(A),!0)}_disconnect(){this.connectedNodes.forEach(A=>{var e;return(e=this.node2||this.node)==null?void 0:e.disconnect(A)}),this.connectedNodes.clear()}reconnect(){this._disconnect(),this.connectNext(this)}pipeTo(A){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return this.next.add(A),A.pre.add(this),this.nextInputChannelMap.set(A,e),A}},yAA=class extends kI{constructor(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:256;super(),this.fftSize=A,Y(this,"dataArray",new Uint8Array(0))}setNode(A){A.fftSize=this.fftSize,this.dataArray=new Uint8Array(A.frequencyBinCount),super.setNode(A)}getByteTimeDomainData(){var A;return(A=this.node)==null||A.getByteTimeDomainData(this.dataArray),this.dataArray}get level(){var A;return(A=this.node)==null||A.getByteTimeDomainData(this.dataArray),Math.max(...this.dataArray)/128-1}get timeDomainPathData(){let A=this.getByteTimeDomainData(),e=0,o=0,a="M".concat(e,",").concat(o);for(let c=0;c0&&arguments[0]!==void 0?arguments[0]:1;this.mixWeight+=A,this.mixWeight-1==A+1>>1&&this.mixOnChange()}reduceMixWeight(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:1;this.addMixWeight(-A)}close(){this.inputs.forEach(A=>A.remove())}get mixTrack(){return this.destination.stream.getAudioTracks()[0]}},g4=new WeakMap;function B2(A){try{let e=g4.get(A);if(e)return e;let o=bI();if(A instanceof HTMLAudioElement)e=o.createMediaElementSource(A);else{if(!(A instanceof MediaStreamTrack))return A;e=o.createMediaStreamSource(new MediaStream([A]))}return g4.set(A,e),e}catch(e){if(!(er&&e instanceof Error&&e.name==="NotSupportedError"))throw e;QA.warn(e)}}var Q2=class Am{constructor(e){Y(this,"_volume",0),Y(this,"_volumeDb",0),Y(this,"_log"),Y(this,"_scriptProcessorNode",null),Y(this,"_audioWorkletNode",null),Y(this,"_interval",200),Y(this,"ready",this.preload());let{log:o}=e;this._log=o,U.on(sA.AUDIO_LEVEL_INTERVAL,this.handleAudioLevelInterval,this)}static get isRunning(){return Date.now()-Am.lastMessageTime<2e3}get node(){return this._audioWorkletNode||this._scriptProcessorNode}preload(){if(!Am.workletReady){let e='class VolumeMeterWorklet extends AudioWorkletProcessor{constructor(){super(),this.volume=0,this.intervalTime=200,this.tick=200,this.isStop=!1,this.cache=[],this.sentFirstInfo1=!1,this.unmute=!1,this.port.onmessage=t=>{var e=t.data;switch(e.name){case"chunk":this.cache.push(...e.data),this.sentFirstInfo1||(this.port.postMessage({cl:e.data.length}),this.sentFirstInfo1=!0);break;case"setIntervalTime":this.intervalTime=e.intervalTime;break;case"unmute":this.unmute=!0;break;case"stop":this.isStop=!0}}}process(t,s){t=t[0],s=s[0];if(t||s){if(this.isStop)return!1;var i=s&&s[0]?s[0].length:0,h=this.cache.length,a=(it+e*e,0)/a.length;this.volume=e,this.tick-=a.length,this.tick<0&&(this.tick+=this.intervalTime/1e3*sampleRate,this.port.postMessage({volume:this.volume,volumeDb:Math.max(10*Math.log10(s)+100,0)/100,cacheLen:h,outputLen:i}))}}return!0}}registerProcessor("volume-meter",VolumeMeterWorklet);';Am.workletReady=Vg(Am.audioContext,URL.createObjectURL(new Blob([e],{type:"application/javascript"})))}return Am.workletReady.then(()=>this.initAudioWorklet()).catch(e=>(this._log.error("volumeMeter preload error: ".concat(e)),this.initScriptProcessor()))}initAudioWorklet(){if(!this._audioWorkletNode)try{this._audioWorkletNode=new AudioWorkletNode(Am.audioContext,"volume-meter");let e=!1;this._audioWorkletNode.port.onmessage=o=>{Am.lastMessageTime=Date.now(),this._volume=o.data.volume||0,this._volumeDb=o.data.volumeDb||0,!e&&o.data.cacheLen&&o.data.outputLen&&(this._log.warn("worklet play success"),e=!0)},this.handleAudioLevelInterval({interval:this._interval})}catch(e){this._log.error("volumeMeter init audio worklet error: ".concat(e)),sn.logFailedEvent({userId:this._log.userId,eventType:Va.LOAD_WORKLET,error:e}),this.initScriptProcessor()}}initScriptProcessor(){if(!this._scriptProcessorNode)try{this._scriptProcessorNode=bI().createScriptProcessor(2048,1,1),this._scriptProcessorNode.onaudioprocess=e=>{Am.lastMessageTime=Date.now();let o=e.inputBuffer.getChannelData(0),a=0;for(let c=0;c>2);A.copyTo(o,{planeIndex:0}),this.node.port.postMessage({name:"chunk",data:o},[o.buffer]),A.close()}}},p2=c4,SAA=gc(Hl(),1),I4=A=>e=>e.deviceId===A,AK=class{constructor(A,e){Y(this,"kind"),Y(this,"type"),Y(this,"devices",[]),this.kind=A,this.type=e}update(A,e){let o=A.filter(a=>a.kind==="".concat(this.kind).concat(this.type.toLocaleLowerCase()));this.devices.length===1&&Nk(this.devices[0])||e&&(o.forEach(a=>{if(a.deviceId&&!this.devices.find(I4(a.deviceId))){let c="".concat(this.kind).concat(this.type,"Added");QA.warn("".concat(c,": ").concat(JSON.stringify(a))),e.emit(c,a)}}),this.devices.forEach(a=>{if(a.deviceId&&!o.find(I4(a.deviceId))){let c="".concat(this.kind).concat(this.type,"Removed");QA.warn("".concat(c,": ").concat(JSON.stringify(a))),e.emit(c,a)}})),this.devices=o}hasDevice(A){return!!this.devices.find(e=>e.deviceId===A)}},MAA=class extends SAA.EventEmitter{constructor(){super(),Y(this,"audioInputs",new AK(YA.AUDIO,"Input")),Y(this,"videoInputs",new AK(YA.VIDEO,"Input")),Y(this,"audioOutputs",new AK(YA.AUDIO,"Output")),this.init(),navigator.mediaDevices&&(navigator.mediaDevices.addEventListener&&navigator.mediaDevices.addEventListener("devicechange",()=>this.update()),"ondevicechange"in navigator.mediaDevices||_r.run("interval",()=>{this.update()},{delay:1e4}))}init(){m2().then(A=>{this.audioInputs.update(A),this.videoInputs.update(A),this.audioOutputs.update(A)})}update(){return KA(this,arguments,function(){var A=this;let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return function*(){let o=yield m2(e);return A.audioInputs.update(o,A),A.videoInputs.update(o,A),A.audioOutputs.update(o,A),A}()})}hasBlueTooth(){var A;if(1e3*((A=bI())==null?void 0:A.outputLatency)>150)return!0;let e=["bluetooth","air","wireless","bt","tws","buds","headset","headphone"];return this.audioOutputs.devices.some(o=>e.some(a=>o.label.toLowerCase().includes(a)))||this.audioInputs.devices.some(o=>e.some(a=>o.label.toLowerCase().includes(a)))}},Pc=Jw||Vw?null:new MAA;function Nk(A){return A.deviceId===A.groupId&&A.groupId===""}function m2(){return KA(this,arguments,function(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return function*(){if(gu()||!ck())return[];let e=yield navigator.mediaDevices.enumerateDevices();if(A!==0){let o={audio:!1,video:!1};if(e.forEach(a=>{Nk(a)&&(a.kind===YA.AUDIO_INPUT?o.audio=!0:a.kind===YA.VIDEO_INPUT&&(o.video=!0))}),A===2&&(o.audio=!1),A===1&&(o.video=!1),o.audio||o.video){let a;try{a=yield navigator.mediaDevices.getUserMedia(o),o.audio&&Tk()}catch(c){QA.debug("capture before getDevices failed: ",c)}e=yield navigator.mediaDevices.enumerateDevices(),a?.getTracks().forEach(c=>c.stop())}}return e.map((o,a)=>{let c={kind:o.kind,deviceId:o.deviceId,groupId:o.groupId,label:o.label||"".concat(o.kind,"_").concat(a)};return o.deviceId.length>0&&eK.add("".concat(o.deviceId,"_").concat(o.kind)),o.getCapabilities&&(c.getCapabilities=()=>o.getCapabilities()),c})}()})}function Kp(){let A=arguments.length>0&&arguments[0]!==void 0&&arguments[0];return Pc.update(A?1:0).then(e=>e.audioInputs.devices)}function jp(){let A=arguments.length>0&&arguments[0]!==void 0&&arguments[0];return Pc.update(A?2:0).then(e=>e.videoInputs.devices)}var u4=!1;function _M(){let A=arguments.length>0&&arguments[0]!==void 0&&arguments[0];return KA(this,null,function*(){return(Ag||Bg)&&(A=!1),Pc.update(A?1:0).then(e=>e.audioOutputs.devices)})}var eK=new Set;function E4(A,e){return KA(this,null,function*(){let o=(yield Kp()).find(a=>a.deviceId===OS);return!e&&o?.groupId===A||o?.groupId===A&&o.label===e})}var f2,vAA=class extends r4{constructor(A){super(),this.log=A,Y(this,"volumeMeter"),Y(this,"volumeMeterAfter3A"),Y(this,"volumeDestination"),Y(this,"analyser",new yAA),this.volumeMeter=new l4({log:this.log}),this.volumeMeterAfter3A=new l4({log:this.log}),this.volumeDestination=new kI,this.volumeMeter.pipeTo(this.volumeDestination)}destroy(){this.gain.deleteNode(),this.volumeMeter.deleteNode(),this.analyser.deleteNode(),this.source.deleteNode(),this.destination.deleteNode(),this.volumeDestination.deleteNode()}},tK=class H6 extends kC{constructor(e){super(e,YA.AUDIO),Y(this,"_outputDeviceId"),Y(this,"_floatVolume",1),Y(this,"_destination"),Y(this,"pipeline"),Y(this,"volumeMeterMode","worklet"),Y(this,"enableVolumeControlInIOS"),this.enableVolumeControlInIOS=e.enableVolumeControlInIOS,this.mode=0,e.url&&(this.url=e.url),this.pipeline=new vAA(this._log)}setTrack(e){}get duration(){var e;return Math.floor(1e3*(((e=this.element)==null?void 0:e.duration)||0))}get currentTime(){var e;return Math.floor(1e3*(((e=this.element)==null?void 0:e.currentTime)||0))}set currentTime(e){this.element&&(this.element.currentTime=e/1e3)}getMediaStream(){return this.pipeline.stream||(this.track?new MediaStream([this.track]):null)}initializeElement(e){if((TI==="15.2"||TI==="15.3"||TI==="15.4")&&this.muted)return void this._log.info("audioElement is muted.");this._log.info("audio player initializeElement");let o=f2||new Audio;o.setAttribute("autoplay","autoplay"),o.srcObject=this.getMediaStream(),o.muted=this.muted,this.url&&(o.crossOrigin="anonymous",o.src=this.url),this.element=o,this.setVolume(bn(e)?e/100:this._floatVolume),o===f2&&(f2=void 0),this.options.enableTimeupdateEvent&&(this.element.ontimeupdate=()=>this.emit(mo.TIME_UPDATE,this.currentTime)),this.bindElementEvents()}play(e){return KA(this,null,function*(){if(this.track||this.url){try{!this.pipeline.source.node&&this.track&&this.pipeline.replaceSource(this.track),this.element||this.initializeElement(e?.volume),this._outputDeviceId&&(yield this.setSinkId(this._outputDeviceId)),this.volumeMeterMode==="worklet"?(this.pipeline.volumeMeter.init(),this.pipeline.volumeMeterAfter3A.init()):this.volumeMeterMode==="analyser"&&this.pipeline.analyser.setNode(bI().createAnalyser()),function(){KA(this,null,function*(){try{u4||(u4=!0,QA.info("speakers:".concat((yield _M()).map(o=>" ".concat(o.deviceId.slice(0,8),": ").concat(o.label)))))}catch{}})}()}catch(o){throw this._log.warn("audio play error: ".concat(o)),ey(TI,"18.7",!0)&&this.bindAutoPlayEvent(),o}return RI(H6.prototype,this,"play").call(this)}})}stop(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;this.pipeline.destroy(),super.stop(e)}setVolume(e){this._floatVolume=e,this.element&&(this.element.volume=e)}setSinkId(e){return KA(this,null,function*(){var o,a;this._outputDeviceId!==e&&(this._outputDeviceId=e),this.element&&this.element.sinkId!==e&&(yield(a=(o=this.element).setSinkId)==null?void 0:a.call(o,e))})}get useDestination(){return!!this.pipeline.stream}setLoop(e){this.element&&(this.element.loop=e)}getAudioLevel(){return this.pipeline.volumeMeter.getCalculatedVolume()}getInternalAudioLevel(){return this.pipeline.volumeMeter.getInternalAudioLevel()}getInternalAudioLevelAfter3A(){return this.pipeline.volumeMeterAfter3A.getInternalAudioLevel()}},RAA=class extends tK{setTrack(A){this.track!==A&&(this.unbindTrackEvents(),this.track=A,this.emit(mo.MEDIA_TRACK_CHANGED,A),A&&(this.bindTrackEvents(),this.element&&(this.element.srcObject=new MediaStream([A]))))}},d4=class extends tK{constructor(A){super(A),Y(this,"_sourceElement"),Y(this,"_output",new kI),this.pipeline.source.pipeTo(this.pipeline.gain),this.pipeline.gain.pipeTo(this.pipeline.volumeMeter).pipeTo(this._output),this.pipeline.gain.pipeTo(this.pipeline.destination)}setOutput(){this.mode=1,this._output.setNode(bI().destination)}write(A){this.pipeline.volumeMeter.write(A)}setTrack(A){var e,o,a;((o=(e=this.element)==null?void 0:e.error)==null?void 0:o.code)!==MediaError.MEDIA_ERR_DECODE&&this.track!==A&&(this.unbindTrackEvents(),this.track=A,this.emit(mo.MEDIA_TRACK_CHANGED,A),A?(this.bindTrackEvents(),this._sourceElement?this._sourceElement.srcObject=new MediaStream([A]):!this.useDestination&&this.element&&(this.element.srcObject=new MediaStream([A])),this.pipeline.source.channelCount=((a=A.getSettings())==null?void 0:a.channelCount)||1,this.pipeline.replaceSource(A)):this.pipeline.source.deleteNode())}setVolume(A){var e;let o=A<=1&&!XS();if(this._floatVolume!==A||!(o&&((e=this.element)==null?void 0:e.volume)===A||!o&&this.pipeline.volume===A))if(this._floatVolume=A,this.useDestination)this.pipeline.setVolume(A),this._log.info("set pipeline volume: ".concat(A));else if(o)this.element?(this._log.info("set element volume: ".concat(A)),this.element.volume=A):this._log.info("set element volume: no element");else{if(XS()){if(!this.enableVolumeControlInIOS)return;(function(){if(!Ag||_k!==-1)return;let a=()=>{bo()-h2<500||(Ln&&Ln.state==="running"&&Ln.currentTime===j0&&(QA.warn("context is fake running, auto resume"),Ln.suspend().catch(c=>{QA.warn("context suspend failed: ".concat(c))})),j0=Ln.currentTime,h2=bo())};_k=setInterval(()=>{a()},2e3),document.addEventListener("visibilitychange",()=>{document.visibilityState==="visible"&&a()})})()}if(er&&!this.pipeline.source.node)return void this._log.warn("set pipeline volume failed: no source node");this._log.info("start set pipeline volume: ".concat(A)),this.pipeline.setVolume(A),this.element&&!this._sourceElement&&(this._destination||(this._destination=bI().createMediaStreamDestination()),this.pipeline.destination.setNode(this._destination),kn(this.element),this._sourceElement=this.element,this._sourceElement.muted=!0,this.element=null,this.play().catch(a=>{this.emit(mo.AUTOPLAY_FAILED,a)}))}}stop(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;this.pipeline.destroy();let e=this._sourceElement||this.element;e&&Gp&&(f2=e),this._sourceElement&&(this._sourceElement.srcObject=null,delete this._sourceElement),super.stop(A)}},iK=class extends Zs{constructor(A){let{userId:e,sdkAppId:o,mediaType:a,room:c,PlayerClass:d=a===1?d4:Mo}=A;var C;super(),Y(this,"id",PA()),Y(this,"userId",""),Y(this,"isRemote"),Y(this,"mediaType"),Y(this,"room"),Y(this,"user"),Y(this,"_log"),Y(this,"_inputTrack"),Y(this,"_outputTrack"),Y(this,"isPlayCalled"),Y(this,"container",null),Y(this,"player"),Y(this,"subVideoPlayerMap"),Y(this,"muted",!1),Y(this,"abortCtrl"),Y(this,"objectFit","cover"),Y(this,"mirror"),Y(this,"rotation"),Y(this,"isScreen",!1),Y(this,"manager"),Y(this,"trackSettings"),Y(this,"isFirstVideoFrameEmitted",!1),this.userId=e||"",this.mediaType=a,this._log=QA.createLogger({parent:c?.getLogger(),id:"".concat(this.kind[0],"t"),userId:(C=c||this.room)==null?void 0:C.userId,remoteUserId:this instanceof Ok?void 0:this.userId,sdkAppId:o,type:this.mediaType===2?"auxiliary":"main",isLocal:this instanceof Ok}),this.player=new d({id:this.userId||this.id,track:null,muted:!1,container:null,log:this._log,enableVolumeControlInIOS:c?.enableVolumeControlInIOS}),this.player.on(mo.PLAYER_STATE_CHANGED,y=>{if(U.emit(sA.PLAYER_STATE_CHANGED,pi({track:this},y)),this.emit("player-state-changed",y),y.state==="PLAYING"&&this.room){let S=!0;for(let{remoteAudioTrack:b,remoteVideoTrack:V,remoteAuxiliaryTrack:J}of[...this.room.remotePublishedUserMap.values()])if(b.isAvailable&&!b.player.isPlaying||V.isAvailable&&!V.player.isPlaying||J.isAvailable&&!J.player.isPlaying){S=!1;break}S&&mi()&&Oc&&Oc.deleteDialog()}}),this.kind===YA.VIDEO&&(this.player.on(mo.LOADED_DATA,()=>{this.emitFirstVideoFrameEvent(mo.LOADED_DATA),U.emit(sA.VIDEO_LOADED_DATA,{track:this})}),this.player.on(mo.LOADED_META_DATA,()=>{this.emitFirstVideoFrameEvent(mo.LOADED_META_DATA)}),this.player.on(mo.MEDIA_TRACK_CHANGED,y=>{var S;(S=this.subVideoPlayerMap)==null||S.forEach(b=>b.setTrack(y))}),this.player.on(mo.RESIZE,y=>{this.emitFirstVideoFrameEvent(mo.RESIZE),this.emit("video-size-changed",pi({userId:this.userId,streamType:this.mediaType===2?"auxiliary":"main"},y))}),this.player.on(mo.FIRST_FRAME_RENDER,y=>{this.emit("first-frame-render",Bo(pi({},y),{streamType:this.streamType,userId:this.isRemote?this.userId:""}))})),this.onTrackMuted=this.onTrackMuted.bind(this),this.onTrackUnmuted=this.onTrackUnmuted.bind(this),this.onTrackEnded=this.onTrackEnded.bind(this),this.onPlayerError&&this.player.on(mo.ERROR,this.onPlayerError.bind(this)),this.player.on(mo.AUTOPLAY_FAILED,this.handleAutoPlayFailed,this)}get log(){return this._log||QA}get kind(){return this.mediaType===1?YA.AUDIO:YA.VIDEO}get isAudio(){return this.kind===YA.AUDIO}get strMediaType(){return this.mediaType===4?YA.VIDEO:this.mediaType===2?YA.SCREEN:YA.AUDIO}get streamType(){return 2&this.mediaType?"auxiliary":"main"}get isMediaTrackActive(){return!!this.mediaTrack&&!this.mediaTrack.muted&&this.mediaTrack.readyState==="live"&&this.mediaTrack.enabled}play(A,e){return KA(this,null,function*(){let o=Ra(A)?A[0]:A;if(this.isPlayCalled)return this.log.info("play update options: ".concat(JSON.stringify(e))),e&&!Ye(e.muted)&&this.setPlayerMute(e.muted),e&&!Ye(e.objectFit)&&(this.objectFit=e.objectFit),void(this.player instanceof Mo&&(this.player.setObjectFit(this.objectFit),this.container!==o&&o&&(Ra(A)&&A.length>=1&&this.container&&A.includes(this.container)&&this.container.contains(this.player.elementToRender)?(A.splice(A.indexOf(this.container),1),A.unshift(this.container)):(this.container=o,this.player.setContainer(o))),Ra(A)&&A.length>=1&&(yield this.playSubContainer(A.slice(1),e))));if(e&&!Ye(e.muted)?this.setPlayerMute(e.muted):(!this.isRemote||this.kind===YA.VIDEO)&&this.setPlayerMute(!0),e&&!Ye(e.objectFit)&&(this.objectFit=e.objectFit),this.player instanceof Mo&&(Ye(e?.isLiveStream)||this.player.setLiveMode(e.isLiveStream),this.player.setObjectFit(this.objectFit),e&&!Ye(e.poster)&&this.player.setPoster(e.poster)),this.isPlayCalled=!0,o&&(this.container=o,this.player instanceof Mo&&this.player.setContainer(o)),U.emit(sA.PLAY_TRACK_START,{track:this}),this._outputTrack){this._log.info("play with options: ".concat(JSON.stringify(e)));try{this.player.setTrack(this.playerMediaTrack),yield this.player.play(e),Ra(A)&&A.length>1&&(yield this.playSubContainer(A.slice(1),e))}catch(a){throw this.handleAutoPlayFailed(a),a}}else this.log.info("play has not mediaTrack, abort")})}setMirror(A,e){if(this.isScreen||this.kind!==YA.VIDEO||Ye(A)||A===this.mirror)return;this.mirror=A;let o=this.player;e&&(o=e);let a=this.manager;if(wr(this.mirror))return o.setViewMirror(this.mirror),void(!this.isRemote&&a&&(a.mirror=!1));switch(this.mirror){case"view":a&&(a.mirror=!1),o.setViewMirror(!0);break;case"publish":a&&(a.mirror=!0),o.setViewMirror(!0);break;case"both":a&&(a.mirror=!0),o.setViewMirror(!1)}}playSubContainer(A,e){return KA(this,null,function*(){if(!this._outputTrack||this.kind===YA.AUDIO)return;this.subVideoPlayerMap||(this.subVideoPlayerMap=new Map),this.subVideoPlayerMap.forEach((a,c)=>{var d;A.find(C=>c===C)||(a.stop(),(d=this.subVideoPlayerMap)==null||d.delete(c))});for(let[a,c]of A.entries()){let d=this.subVideoPlayerMap.get(c);d?e&&(Ye(e.objectFit)||d.setObjectFit(e.objectFit)):this.subVideoPlayerMap.set(c,new Mo({id:this.userId||this.id,track:this.playerMediaTrack,container:c,muted:this.player.muted,objectFit:this.objectFit,log:this.log.createChild({id:"vp-sub".concat(a+1)})}))}let o=[...this.subVideoPlayerMap.values()];for(let a of o)a.setViewMirror(this.player.mirror),yield a.play()})}setAudioOutput(A){return this.player.setSinkId(A)}setAudioVolume(A){this.player.setVolume(A)}getAudioLevel(){return this.player.getAudioLevel()||0}getInternalAudioLevel(){var A;return((A=this.player)==null?void 0:A.getInternalAudioLevel())||0}stop(){let A=arguments.length>0&&arguments[0]!==void 0&&arguments[0];this.isPlayCalled&&(this.isPlayCalled=!1,this.isFirstVideoFrameEmitted=!1,this.player&&(this.log.info("stop ".concat(this.kind," player")),this.player.stop(Nb(this)&&!A?this.jitterBufferDelay:0)),this.subVideoPlayerMap&&this.subVideoPlayerMap.size>0&&this.subVideoPlayerMap.forEach(e=>{e.stop()}),this.container=null)}resume(){return KA(this,null,function*(){var A;this.isPlayCalled&&(yield(A=this.player)==null?void 0:A.resume())})}close(){this._toInitState(),this.log.info("close"),this.isPlayCalled&&this.stop(!0)}_toInitState(){}setMute(A){this.muted=A,this._inputTrack&&(this._inputTrack.enabled=!A),this._outputTrack&&(this._outputTrack.enabled=!A),this.emit(A?"mute":"unmute",this),U.emit(A?sA.TRACK_MUTED:sA.TRACK_UNMUTED,{track:this})}setPlayerMute(A){this.player.setMuted(A)}get mediaTrack(){return this._inputTrack||null}get outMediaTrack(){return this._outputTrack||null}get playerMediaTrack(){return this.outMediaTrack}installTrackEvent(A){XE(A,A).add(YA.MUTE,this.onTrackMuted).add(YA.UNMUTE,this.onTrackUnmuted).add(YA.ENDED,this.onTrackEnded),A.muted&&this.onTrackMuted(),A.readyState===YA.ENDED&&this.onTrackEnded()}uninstallTrackEvent(A){kn(A)}setInputMediaStreamTrack(A){var e;let o=this._inputTrack;if(A!==o)return this._inputTrack=A,this.trackSettings=(e=A.getSettings)==null?void 0:e.call(A),A.enabled=!this.muted,o&&this.uninstallTrackEvent(o),this.installTrackEvent(A),this.emit("input-media-track-changed",A||null,o||null),this.manager?this.manager.changeInput(this):this.setOutputMediaStreamTrack(A)}setOutputMediaStreamTrack(A){var e;let o=this._outputTrack;this instanceof IQ&&Sp(o)||A!==o&&(this.isRemote?this.log.debug("setOutputMediaStreamTrack",A.label):this.log.info("setOutputMediaStreamTrack",(e=A.getSettings)==null?void 0:e.call(A).deviceId,A.label),this._outputTrack=A,this._inputTrack&&(this._outputTrack.contentHint=this._inputTrack.contentHint,this._outputTrack.enabled=this._inputTrack.enabled),this.updatePlayingState(!!A),this.emit("output-media-track-changed",A))}setMediaType(A){this.mediaType=A}updatePlayingState(A){var e,o;if(this.isPlayCalled){if(A){if(this.player.setTrack(this.playerMediaTrack),this.player.isStopped)return this.player.play().catch(a=>this.handleAutoPlayFailed(a)),void this.log.info("playing state updated, play ".concat(this.kind))}else if(!this.player.isStopped)return Nb(this)&&this.isAudio&&(e=this.user)!=null&&e.muteState.hasAudio&&(o=this.user)!=null&&o.muteState.audioMuted?void 0:(this.player.stop(Nb(this)?this.jitterBufferDelay:0),void this.log.info("playing state updated, stop ".concat(this.kind)))}this.log.debug("updatePlayingState abort ".concat(this.isPlayCalled," ").concat(A," ").concat(this.player.isStopped))}handleAutoPlayFailed(A){return KA(this,null,function*(){var e;this.log.warn("handleAutoPlayFailed",A);let o=()=>{this.resume().then(()=>{document.removeEventListener("click",o,!0)})};if(this.room&&this.room.enableAutoPlayDialog){if((_p||$B)&&(yield _C(100),(e=this.player)!=null&&e.isPlaying))return;LC()}else document.addEventListener("click",o,!0);U.once(sA.LOCAL_TRACK_CAPTURE_SUCCESS,a=>{let{track:c}=a;c.kind==="audio"&&mi()&&!this.player.isPlaying&&this.isRemote&&this.isAvailable&&o()}),this.emit("error",A)})}getVideoFrame(){return this.player instanceof Mo?this.player.getVideoFrame():""}emitFirstVideoFrameEvent(A){var e,o,a;if(this.isFirstVideoFrameEmitted)return;let c=(e=this.mediaTrack)==null?void 0:e.getSettings(),d=c?.width||((o=this.player.element)==null?void 0:o.videoWidth)||0,C=c?.height||((a=this.player.element)==null?void 0:a.videoHeight)||0;A===mo.RESIZE&&!d&&!C||A===mo.LOADED_META_DATA&&!d&&!C||(A===mo.LOADED_DATA&&!d&&!C&&this._log.warn("the dimension of video is 0x0 in first-video-frame event"),this.isFirstVideoFrameEmitted=!0,zB(this.rotation)&&([d,C]=[C,d]),this.emit("first-video-frame",{width:d,height:C,streamType:this.streamType,userId:this.isRemote?this.userId:""}))}onTrackMuted(){this._log.warn("".concat(this.kind," track is unable to provide media output"))}onTrackUnmuted(){this._log.info("".concat(this.kind," track is able to provide media output"))}onTrackEnded(){this._log.warn("".concat(this.kind," track ended"))}};di([lc([],Zs.INIT,{sync:!0})],iK.prototype,"_toInitState");var wAA=Object.prototype.hasOwnProperty,Wp=function(A){if(A==null)return!0;if(typeof A=="boolean")return!1;if(typeof A=="number")return A===0;if(typeof A=="string"||typeof A=="function"||Array.isArray(A))return A.length===0;if(A instanceof Error)return A.message==="";if(oE(A))switch(Object.prototype.toString.call(A)){case"[object File]":case"[object Map]":case"[object Set]":return A.size===0;case"[object Object]":for(let e in A)if(wAA.call(A,e))return!1;return!0}return!1},_AA=ZS({retryFunction:function(A){return KA(this,null,function*(){let e=function(d){return{audio:TAA(d),video:NAA(d)}}(A);QA.info("getUserMedia with constraints: ".concat(JSON.stringify(e)));let o=[],a=[],c=["label","deviceId","groupId"];if(e.audio&&(o=yield Kp(),QA.info("microphones: ".concat(Vd(o.map(d=>Bo(pi({},d),{groupId:d.groupId.substring(0,8)})),{keysToInclude:c})))),e.video&&(a=yield jp(),QA.info("cameras: ".concat(Vd(a,{keysToInclude:c}))),!wr(e.video)&&e.video.facingMode==="user"&&!e.video.deviceId)){let d=a.filter(C=>!C.label.includes("infrared")).find(C=>C.label.includes("facing front"));d&&(e.video.deviceId=d.deviceId,QA.info("exclude infrared camera: ".concat(JSON.stringify(e))))}try{let d=yield navigator.mediaDevices.getUserMedia(e);return c2&&d.getTracks().forEach(C=>{var y;let S=C.getCapabilities();QA.info("".concat(C.kind," capabilities: ").concat(Vd(S,{keysToInclude:ub}))),!Ye(A.echoCancellation)&&((y=S.echoCancellation)==null?void 0:y.indexOf(A.echoCancellation))===-1&&QA.warn("Invalid argument for 'echoCancellation'. Expected one of [".concat(JSON.stringify(S.echoCancellation),"], but received '").concat(A.echoCancellation,"'"))}),e.audio&&Tk(),d}catch(d){let{message:C}=d;throw d.name==="NotFoundError"&&(A.video&&a&&a.length===0&&(C=Zo({key:So.CAMERA_NOT_FOUND})),A.audio&&o&&o.length===0&&(C=Zo({key:So.MICROPHONE_NOT_FOUND}))),new oi({code:lt.INITIALIZE_FAILED,name:d.name,message:C,constraint:d.constraint})}})},settings:{retries:3,timeout:500},onError:A=>{let{error:e,retry:o,reject:a,retryFuncArgs:c,retriedCount:d}=A,C=d+1;e.name==="NotReadableError"||e.name==="OverconstrainedError"||e.name==="AbortError"?(C===1?(c[0].video&&(c[0].maxResolution=!1,(!Bg||c[0].width*c[0].height<=2073600)&&c[0].frameRate&&(c[0].frameRate=c[0].frameRate>10?10:5)),c[0].retryWhenExactFailed&&c[0].useExactDeviceId&&(c[0].useExactDeviceId=!1)):C===2?c[0].useDeviceIdOnly=!0:C===3&&!c[0].useExactDeviceId&&(c[0].useTrueAsConstraint=!0),o()):a(e),c[0].microphoneId&&C4(c[0].microphoneId,!1),c[0].cameraId&&C4(c[0].cameraId,!0)},onRetrying:A=>{QA.warn("getUserMedia NotReadableError observed, retrying [".concat(A,"/3]"))},onRetryFailed:A=>{sn.logFailedEvent({eventType:Va.GET_USER_MEDIA_RETRY,error:A})},onRetrySuccess:A=>{sn.logSuccessEvent({eventType:Va.GET_USER_MEDIA_RETRY}),sn.uploadEvent({log:"stat-".concat(Va.GET_USER_MEDIA_RETRY,"-success-").concat(A)})}});function C4(A,e){return KA(this,null,function*(){let o=(e?yield jp():yield Kp()).find(a=>a.deviceId===A);o&&va(o.getCapabilities)&&QA.warn(Vd(o.getCapabilities(),{keysToInclude:ub}))})}function TAA(A){if(!A.audio)return!1;if(A.useTrueAsConstraint)return!0;let e={echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0,sampleRate:A.sampleRate};return!Wp(A.microphoneId)&&(e.deviceId=A.useExactDeviceId?{exact:A.microphoneId}:A.microphoneId,A.useDeviceIdOnly)?e:(bn(A.channelCount)&&(e.channelCount=A.channelCount),(wr(A.echoCancellation)||A.echoCancellation==="remote-only"||A.echoCancellation==="all")&&(e.echoCancellation=A.echoCancellation),wr(A.noiseSuppression)&&!A.noiseSuppression&&(e.noiseSuppression=!1),wr(A.autoGainControl)&&!A.autoGainControl&&(e.autoGainControl=!1),!!Wp(e)||e)}function NAA(A){if(!A.video)return!1;if(A.useTrueAsConstraint)return!0;let{maxResolution:e=!0}=A,o={};return A.cameraId?o.deviceId=A.useExactDeviceId?{exact:A.cameraId}:A.cameraId:A.facingMode&&(o.facingMode=A.facingMode),A.useDeviceIdOnly&&!Wp(o)?o:(A.width&&(o.width={ideal:A.width},e&&!er&&(o.width.max=A.width)),A.height&&(o.height={ideal:A.height},e&&!er&&(o.height.max=A.height)),er&&AQ&&A.width&&A.height&&A.width*A.height<101376&&(o.width=A.width,o.height=A.height),A.frameRate&&(o.frameRate=A.frameRate),!!Wp(o)||o)}var GAA=_AA;function h4(A){return Hr((e,o)=>function(){for(var a=arguments.length,c=new Array(a),d=0;dfunction(){for(var a=arguments.length,c=new Array(a),d=0;dfunction(){for(var a=arguments.length,c=new Array(a),d=0;d{let A=!1,e=document.visibilityState;return()=>{document.visibilityState!==e&&QA.info("visibility change: ".concat(document.visibilityState)),!A&&(document.addEventListener("visibilitychange",()=>{QA.info("visibility change: ".concat(document.visibilityState)),e=document.visibilityState}),A=!0)}})(),kAA=0,Q4=class{constructor(A){Y(this,"log"),Y(this,"isRunning",!1),Y(this,"queue",[]);let e="fq".concat(++kAA);A&&(e+="|".concat(A)),this.log=QA.createLogger({id:e})}get length(){return this.queue.length}get lastQueueItem(){return this.length===0?null:this.queue[this.length-1]}push(A){let e=arguments.length>1&&arguments[1]!==void 0&&arguments[1];var o,a;let c=pi({},A),d=new Promise((C,y)=>{c.resolve=C,c.reject=y});return c.promise=d,e?this.length<=1?this.queue.push(c):(a=(o=this.lastQueueItem)==null?void 0:o.promise)==null||a.then(c.resolve,c.reject):this.queue.push(c),this.log.debug("push ".concat(this.length),A.funcName,A.args),this.isRunning||this.callNext(),d}shift(){let A=this.queue.shift();return this.log.debug("shift ".concat(this.length),A?.funcName,A?.args),A}callNext(){if(this.isRunning||this.length===0)return;let{fn:A,args:e,context:o,resolve:a,reject:c,funcName:d}=this.queue[0];this.log.debug("callNext",this.length,d,e),this.isRunning=!0,A.apply(o,e).then(a,c).finally(()=>{this.isRunning=!1,this.shift(),this.callNext()})}},y2=new WeakMap,D2=new WeakMap;function Gk(){let A=arguments.length>0&&arguments[0]!==void 0&&arguments[0];return function(e,o,a){let c=a.value;return a.value=function(){let d=y2.get(this)||new Q4;for(var C=arguments.length,y=new Array(C),S=0;SS.push(gA)),(y=D2.get(this))==null||y.forEach(gA=>gA?.queue.forEach(CA=>S.push(CA))),S.forEach(gA=>{gA.reject(new oi({code:lt.API_CALL_ABORTED,message:A}))}),y2.delete(this),D2.delete(this),c.apply(this,V)},a}}function dy(A,e){return function(o,a,c){let d=c.value,C=y=>A(...y);return c.value=function(){for(var y=arguments.length,S=new Array(y),b=0;bfunction(){let c=A;try{for(var d=arguments.length,C=new Array(d),y=0;y(e?Ai.addSuccessEvent({key:c,cost:bo()-b}):Ai.addSuccessEvent({key:c}),V)).catch(V=>{throw Ai.addFailedEvent({key:c,error:V}),V}):(Ai.addSuccessEvent({key:c}),S)}catch(S){throw Ai.addFailedEvent({key:c,error:S}),S}})}var m4={};function eg(){}Yh(m4,{Events:()=>Ic,Inspect:()=>hy,LastSink:()=>S2,Sink:()=>Os,Subscribe:()=>M2,TimeoutError:()=>D4,audit:()=>peA,bindCallback:()=>ieA,bindNodeCallback:()=>oeA,buffer:()=>HAA,bufferCount:()=>JAA,bufferTime:()=>VeA,call:()=>f4,catchError:()=>V4,combineLatest:()=>v4,concat:()=>OAA,concatMap:()=>GeA,concatMapTo:()=>beA,count:()=>reA,create:()=>cr,debounce:()=>feA,debounceTime:()=>yeA,defer:()=>R4,delay:()=>JeA,deliver:()=>Ps,dispose:()=>oK,elementAt:()=>DeA,empty:()=>gK,every:()=>weA,exhaustMap:()=>OeA,exhaustMapTo:()=>PeA,expand:()=>qeA,filter:()=>NM,find:()=>SeA,findIndex:()=>MeA,first:()=>veA,fromAnimationFrame:()=>eeA,fromArray:()=>WAA,fromEvent:()=>ga,fromEventPattern:()=>zAA,fromFetch:()=>ZAA,fromIterable:()=>XAA,fromPromise:()=>N4,fromReadableStream:()=>AeA,fromReader:()=>$AA,groupBy:()=>xeA,identity:()=>LAA,ignoreElements:()=>leA,iif:()=>xAA,inspect:()=>y4,interval:()=>T4,last:()=>ReA,map:()=>lK,mapTo:()=>TeA,max:()=>aeA,merge:()=>sK,mergeMap:()=>LeA,mergeMapTo:()=>UeA,min:()=>geA,never:()=>seA,nothing:()=>eg,of:()=>jAA,pairwise:()=>_eA,pipe:()=>Qa,race:()=>M4,range:()=>teA,reduce:()=>G4,retry:()=>zeA,scan:()=>L4,setAsapScheduler:()=>KAA,share:()=>bk,shareReplay:()=>PAA,skip:()=>EeA,skipUntil:()=>deA,skipWhile:()=>cK,startWith:()=>nK,subject:()=>lQ,subscribe:()=>hl,sum:()=>ceA,switchMap:()=>R2,switchMapTo:()=>_2,take:()=>Z0,takeLast:()=>ueA,takeUntil:()=>rE,takeWhile:()=>IeA,tap:()=>IK,throttle:()=>BeA,throwError:()=>neA,timeInterval:()=>YeA,timeout:()=>WeA,timer:()=>aK,toPromise:()=>KeA,toReadableStream:()=>jeA,withLatestFrom:()=>VAA,zip:()=>YAA});var f4=A=>A(),LAA=A=>A;function oK(){this.dispose()}var y4=()=>typeof __FASTRX_DEVTOOLS__<"u",UAA=1,hy=class extends Function{toString(){return"".concat(this.name,"(").concat(this.args.length?[...this.args].join(", "):"",")")}subscribe(A){let e=new FAA(A,this,this.streamId++);return Ic.subscribe({id:this.id,end:!1},{nodeId:e.sourceId,streamId:e.id}),this(e),e}},S2=class{constructor(){this.defers=new Set,this.disposed=!1}next(A){}complete(){this.dispose()}error(A){this.dispose()}get bindDispose(){return()=>this.dispose()}dispose(){this.disposed=!0,this.complete=eg,this.error=eg,this.next=eg,this.dispose=eg,this.subscribe=eg,this.doDefer()}subscribe(A){return A instanceof hy?A.subscribe(this):A(this),this}get bindSubscribe(){return A=>this.subscribe(A)}doDefer(){this.defers.forEach(f4),this.defers.clear()}defer(A){this.defers.add(A)}removeDefer(A){this.defers.delete(A)}reset(){this.disposed=!1,delete this.complete,delete this.next,delete this.dispose,delete this.next,delete this.subscribe}resetNext(){delete this.next}resetComplete(){delete this.complete}resetError(){delete this.error}},Os=class extends S2{constructor(A){super(),this.sink=A,A.defer(this.bindDispose)}next(A){this.sink.next(A)}complete(){this.sink.complete()}error(A){this.sink.error(A)}},M2=class extends S2{constructor(A){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:eg,o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:eg,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:eg;if(super(),this._next=e,this._error=o,this._complete=a,this.then=eg,A instanceof hy){let c={toString:()=>"subscribe",id:0,source:A};this.defer(()=>{Ic.defer(c,0)}),Ic.create(c),Ic.pipe(c),this.sourceId=c.id,this.subscribe(A),Ic.subscribe({id:c.id,end:!0}),e==eg?this._next=d=>Ic.next(c,0,d):this.next=d=>{Ic.next(c,0,d),e(d)},a==eg?this._complete=()=>Ic.complete(c,0):this.complete=()=>{this.dispose(),Ic.complete(c,0),a()},o==eg?this._error=d=>Ic.complete(c,0,d):this.error=d=>{this.dispose(),Ic.complete(c,0,d),o(d)}}else this.subscribe(A)}next(A){this._next(A)}complete(){this.dispose(),this._complete()}error(A){this.dispose(),this._error(A)}};function Qa(A){for(var e=arguments.length,o=new Array(e>1?e-1:0),a=1;ad(c),A)}function cr(A,e,o){if(y4()){let a=Object.defineProperties(Object.setPrototypeOf(A,hy.prototype),{streamId:{value:0,writable:!0,configurable:!0},name:{value:e,writable:!0,configurable:!0},args:{value:o,writable:!0,configurable:!0},id:{value:0,writable:!0,configurable:!0}});Ic.create(a);for(let c=0;c{if(d instanceof hy){let C=cr(y=>{let S=new A(y,...a);S.sourceId=C.id,S.subscribe(d)},e,arguments);return C.source=d,Ic.pipe(C),C}return C=>d(new A(C,...a))}}}function By(A,e){window.postMessage({source:"fastrx-devtools-backend",payload:{event:A,payload:e}})}var FAA=class extends Os{constructor(A,e,o){super(A),this.source=e,this.id=o,this.sourceId=A.sourceId,this.defer(()=>{Ic.defer(this.source,this.id)})}next(A){Ic.next(this.source,this.id,A),this.sink.next(A)}complete(){Ic.complete(this.source,this.id),this.sink.complete()}error(A){Ic.complete(this.source,this.id,A),this.sink.error(A)}},Ic={addSource(A,e){By("addSource",{id:A.id,name:A.toString(),source:{id:e.id,name:e.toString()}})},next(A,e,o){By("next",{id:A.id,streamId:e,data:o&&o.toString()})},subscribe(A,e){let{id:o,end:a}=A;By("subscribe",{id:o,end:a,sink:{nodeId:e&&e.nodeId,streamId:e&&e.streamId}})},complete(A,e,o){By("complete",{id:A.id,streamId:e,err:o?o.toString():null})},defer(A,e){By("defer",{id:A.id,streamId:e})},pipe(A){By("pipe",{name:A.toString(),id:A.id,source:{id:A.source.id,name:A.source.toString()}})},update(A){By("update",{id:A.id,name:A.toString()})},create(A){A.id||(A.id=UAA++),By("create",{name:A.toString(),id:A.id})}},D4=class extends Error{constructor(A){super("timeout after ".concat(A,"ms")),this.timeout=A}},S4=class extends S2{constructor(A){super(),this.source=A,this.sinks=new Set}add(A){A.defer(()=>this.remove(A)),this.sinks.add(A).size===1&&(this.reset(),this.subscribe(this.source))}remove(A){this.sinks.delete(A),this.sinks.size===0&&this.dispose()}next(A){this.sinks.forEach(e=>e.next(A))}complete(){this.sinks.forEach(A=>A.complete()),this.sinks.clear()}error(A){this.sinks.forEach(e=>e.error(A)),this.sinks.clear()}};function bk(){return A=>{let e=new S4(A);if(A instanceof hy){let o=cr(a=>{e.add(a)},"share",arguments);return e.sourceId=o.id,o.source=A,Ic.pipe(o),o}return cr(e.add.bind(e),"share",arguments)}}function sK(){for(var A=arguments.length,e=new Array(A),o=0;o{let c=new Os(a),d=e.length;c.complete=()=>{--d===0&&a.complete()},e.forEach(c.bindSubscribe)},"merge",arguments)}function M4(){for(var A=arguments.length,e=new Array(A),o=0;o{let c=new Map;e.forEach(d=>{let C=new Os(a);c.set(d,C),C.complete=()=>{c.delete(d),c.size===0?a.complete():C.dispose()},C.next=y=>{c.delete(d),c.forEach(S=>S.dispose()),C.resetNext(),C.resetComplete(),C.next(y)}}),e.forEach(d=>c.get(d).subscribe(d))},"race",arguments)}function OAA(){for(var A=arguments.length,e=new Array(A),o=0;o{let c=0,d=e.length,C=new Os(a);C.complete=()=>{c{let o=new S4(e),a=[];return o.next=function(c){a.push(c),a.length>A&&a.shift(),this.sinks.forEach(d=>d.next(c))},cr(c=>{c.defer(()=>o.remove(c)),a.forEach(d=>c.next(d)),o.add(c)},"shareReplay",arguments)}}function xAA(A,e,o){return cr(a=>A()?e(a):o(a),"iif",arguments)}function v4(){for(var A=arguments.length,e=new Array(A),o=0;o{let c=e.length,d=c,C=c,y=new Array(c),S=()=>{--C===0&&a.complete()};e.forEach((b,V)=>{let J=new Os(a);J.next=gA=>{d--,J.next=CA=>{y[V]=CA,d===0&&a.next(y)},J.next(gA)},J.complete=S,J.subscribe(b)})},"combineLatest",arguments)}function YAA(){for(var A=arguments.length,e=new Array(A),o=0;o{let c=e.length,d=c,C=new Array(c),y=()=>{--d===0&&a.complete()};e.forEach((S,b)=>{let V=new Os(a),J=[];C[b]=J,V.next=gA=>{J.push(gA),C.every(CA=>CA.length)&&a.next(C.map(CA=>CA.shift()))},V.complete=y,V.subscribe(S)})},"zip",arguments)}function nK(){for(var A=arguments.length,e=new Array(A),o=0;ocr(function(c){let d=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,C=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e.length;for(;d1?o-1:0),c=1;cthis.buffer=d,e.complete=eg,e.subscribe(v4(...a))}next(A){this.buffer&&this.sink.next([A,...this.buffer])}},"withLatestFrom"),JAA=Ps(class extends Os{constructor(A,e,o){super(A),this.bufferSize=e,this.startBufferEvery=o,this.buffer=[],this.count=0,this.startBufferEvery&&(this.buffers=[[]])}next(A){this.startBufferEvery?(this.count++===this.startBufferEvery&&(this.buffers.push([]),this.count=1),this.buffers.forEach(e=>{e.push(A)}),this.buffers[0].length===this.bufferSize&&this.sink.next(this.buffers.shift())):(this.buffer.push(A),this.buffer.length===this.bufferSize&&(this.sink.next(this.buffer),this.buffer=[]))}complete(){this.buffer.length?this.sink.next(this.buffer):this.buffers.length&&this.buffers.forEach(A=>this.sink.next(A)),super.complete()}},"bufferCount"),HAA=Ps(class extends Os{constructor(A,e){super(A),this.buffer=[];let o=new Os(A);o.next=a=>{A.next(this.buffer),this.buffer=[]},o.complete=eg,o.subscribe(e)}next(A){this.buffer.push(A)}complete(){this.buffer.length&&this.sink.next(this.buffer),super.complete()}},"buffer"),qAA=function(A,e,o,a){return new(o||(o=Promise))(function(c,d){function C(b){try{S(a.next(b))}catch(V){d(V)}}function y(b){try{S(a.throw(b))}catch(V){d(V)}}function S(b){b.done?c(b.value):function(V){return V instanceof o?V:new o(function(J){J(V)})}(b.value).then(C,y)}S((a=a.apply(A,[])).next())})};function lQ(A){let e=arguments,o=bk()(cr(a=>{o.next=c=>a.next(c),o.complete=()=>a.complete(),o.error=c=>a.error(c),A&&a.subscribe(A)},"subject",e));return o.next=eg,o.complete=eg,o.error=eg,o}function R4(A){return cr(e=>e.subscribe(A()),"defer",arguments)}var z0={promise:A=>{Promise.resolve().then(A)},setImmediate:typeof setImmediate<"u"?A=>setImmediate(A):null,setTimeout:A=>setTimeout(A,0)},rK=typeof Promise<"u"?z0.promise:z0.setImmediate?z0.setImmediate:z0.setTimeout,w4=A=>e=>{rK(()=>A(e))},KAA=A=>{typeof A=="function"?rK=A:z0[A]&&(rK=z0[A])},_4=A=>w4(e=>{for(let o=0;!e.disposed&&o{let o=0,a=setInterval(()=>e.next(o++),A);return e.defer(()=>{clearInterval(a)}),"interval"},"interval",arguments)}function aK(A,e){return cr(o=>{let a=0,c=setTimeout(()=>{if(o.removeDefer(d),o.next(a++),e){let C=setInterval(()=>o.next(a++),e);o.defer(()=>{clearInterval(C)})}else o.complete()},A),d=()=>clearTimeout(c);o.defer(d)},"timer",arguments)}function v2(A,e){return o=>{let a=c=>o.next(c);o.defer(()=>e(a)),A(a)}}function zAA(A,e){return cr(v2(A,e),"fromEventPattern",arguments)}function ga(A,e){if("on"in A&&"off"in A)return cr(v2(o=>A.on(e,o),o=>A.off(e,o)),"fromEvent",arguments);if("addListener"in A&&"removeListener"in A)return cr(v2(o=>A.addListener(e,o),o=>A.removeListener(e,o)),"fromEvent",arguments);if("addEventListener"in A)return cr(v2(o=>A.addEventListener(e,o),o=>A.removeEventListener(e,o)),"fromEvent",arguments);throw"target is not a EventDispachter"}function N4(A){return cr(e=>{A.then(o=>{e.next(o),e.complete()},e.error.bind(e))},"fromPromise",arguments)}function ZAA(A,e){return cr(R4(()=>N4(fetch(A,e))),"fromFetch",arguments)}function XAA(A){return cr(w4(e=>{try{for(let o of A){if(e.disposed)return;e.next(o)}e.complete()}catch(o){e.error(o)}}),"fromIterable",arguments)}function $AA(A){let e=o=>qAA(this,void 0,void 0,function*(){try{if(o.disposed)return;let{done:a,value:c}=yield A.read();if(a)return void o.complete();o.next(c),e(o)}catch(a){o.error(a)}});return cr(o=>{e(o)},"fromReader",arguments)}function AeA(A){return cr(e=>{let o=new AbortController,a=o.signal;e.defer(()=>o.abort("cancelled")),A.pipeTo(new WritableStream({write(c){e.next(c)},close(){e.complete()},abort(c){e.error(c)}}),{signal:a}).then(()=>e.complete(),c=>e.error(c))},"fromReadableStream",arguments)}function eeA(){return cr(A=>{let e=requestAnimationFrame(function o(a){A.disposed||(A.next(a),e=requestAnimationFrame(o))});A.defer(()=>cancelAnimationFrame(e))},"fromAnimationFrame",arguments)}function teA(A,e){return cr(function(o){let a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:A,c=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e+A;for(;a2?o-2:0),c=2;c{let C=a.concat(y=>(d.next(y),d.complete()));A.apply(e,C)},"bindCallback",arguments)}function oeA(A,e){for(var o=arguments.length,a=new Array(o>2?o-2:0),c=2;c{let C=a.concat((y,S)=>y?d.error(y):(d.next(S),d.complete()));A.apply(e,C)},"bindNodeCallback",arguments)}function seA(){return cr(()=>{},"never",arguments)}function neA(A){return cr(e=>e.error(A),"throwError",arguments)}function gK(){return cr(A=>A.complete(),"empty",arguments)}var kk=class extends Os{constructor(A,e,o){super(A),this.f=e;let a=()=>{this.sink.next(this.acc),this.sink.complete()};o===void 0?this.next=c=>{this.acc=c,this.complete=a,this.resetNext()}:(this.acc=o,this.complete=a)}next(A){this.acc=this.f(this.acc,A)}},G4=Ps(kk,"reduce"),reA=A=>Ps(kk,"count")((e,o)=>A(o)?e+1:e,0),aeA=()=>Ps(kk,"max")(Math.max),geA=()=>Ps(kk,"min")(Math.min),ceA=()=>Ps(kk,"sum")((A,e)=>A+e,0),NM=Ps(class extends Os{constructor(A,e,o){super(A),this.filter=e,this.thisArg=o}next(A){this.filter.call(this.thisArg,A)&&this.sink.next(A)}},"filter"),leA=Ps(class extends Os{next(A){}},"ignoreElements"),Z0=Ps(class extends Os{constructor(A,e){super(A),this.count=e}next(A){this.sink.next(A),--this.count===0&&(this.doDefer(),this.complete())}},"take"),rE=Ps(class extends Os{constructor(A,e){super(A);let o=new Os(A);o.next=()=>{o.doDefer(),A.complete()},o.complete=oK,o.subscribe(e)}},"takeUntil"),IeA=Ps(class extends Os{constructor(A,e){super(A),this.f=e}next(A){this.f(A)?this.sink.next(A):(this.doDefer(),this.complete())}},"takeWhile"),ueA=A=>G4((e,o)=>(e.push(o),e.length>A&&e.shift(),e),[]),EeA=Ps(class extends Os{constructor(A,e){super(A),this.count=e}next(A){--this.count===0&&(this.next=super.next)}},"skip"),deA=Ps(class extends Os{constructor(A,e){super(A),A.next=eg;let o=new Os(A);o.next=()=>{o.doDefer(),A.resetNext()},o.complete=oK,o.subscribe(e)}},"skipUntil"),cK=Ps(class extends Os{constructor(A,e){super(A),this.f=e}next(A){this.f(A)||(this.next=super.next,this.next(A))}},"skipWhile"),CeA={leading:!0,trailing:!1},heA=class extends Os{constructor(A,e,o){super(A),this.durationSelector=e,this.trailing=o}cacheValue(A){this.last=A,this.disposed&&this.throttle(A)}send(A){this.sink.next(A),this.throttle(A)}throttle(A){this.reset(),this.subscribe(this.durationSelector(A))}next(){this.complete()}complete(){this.dispose(),this.trailing&&this.send(this.last)}},b4=class extends Os{constructor(A,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:CeA;super(A),this.durationSelector=e,this.config=o,this._throttle=new heA(this.sink,this.durationSelector,this.config.trailing),this._throttle.dispose()}next(A){this._throttle.disposed&&this.config.leading?this._throttle.send(A):this._throttle.cacheValue(A)}complete(){this._throttle.throttle=eg,this._throttle.complete(),super.complete()}},BeA=Ps(b4,"throttle"),QeA={leading:!1,trailing:!0},peA=A=>Ps(b4,"audit")(A,QeA),meA=class extends Os{next(){this.complete()}complete(){this.dispose(),this.sink.next(this.last)}},k4=class extends Os{constructor(A,e){super(A),this.durationSelector=e,this._debounce=new meA(this.sink),this._debounce.dispose()}next(A){this._debounce.dispose(),this._debounce.reset(),this._debounce.last=A,this._debounce.subscribe(this.durationSelector(A))}complete(){this._debounce.complete(),super.complete()}},feA=Ps(k4,"debounce"),yeA=A=>Ps(k4,"debounceTime")(e=>aK(A)),DeA=Ps(class extends Os{constructor(A,e,o){super(A),this.count=e,this.defaultValue=o}next(A){this.count--===0&&(this.defaultValue=A,this.doDefer(),this.complete())}complete(){this.defaultValue!==void 0?(this.sink.next(this.defaultValue),super.complete()):this.error(new Error("not enough elements in sequence"))}},"elementAt"),SeA=A=>e=>Z0(1)(cK(o=>!A(o))(e)),MeA=Ps(class extends Os{constructor(A,e){super(A),this.f=e,this.i=0}next(A){this.f(A)?(this.sink.next(this.i++),this.doDefer(),this.complete()):++this.i}},"findIndex"),veA=Ps(class extends Os{constructor(A,e,o){super(A),this.f=e,this.defaultValue=o,this.index=0}next(A){(!this.f||this.f(A,this.index++))&&(this.defaultValue=A,this.doDefer(),this.complete())}complete(){this.defaultValue!==void 0?(this.sink.next(this.defaultValue),super.complete()):this.error(new Error("no elements in sequence"))}},"first"),ReA=Ps(class extends Os{constructor(A,e,o){super(A),this.f=e,this.defaultValue=o,this.index=0}next(A){(!this.f||this.f(A,this.index++))&&(this.defaultValue=A)}complete(){this.defaultValue!==void 0?(this.sink.next(this.defaultValue),super.complete()):this.error(new Error("no elements in sequence"))}},"last"),weA=Ps(class extends Os{constructor(A,e){super(A),this.predicate=e,this.index=0}next(A){this.predicate(A,this.index++)?this.result=!0:(this.result=!1,this.doDefer(),this.complete())}complete(){this.result!==void 0?(this.sink.next(this.result),super.complete()):this.error(new Error("no elements in sequence"))}},"every"),L4=Ps(class extends Os{constructor(A,e,o){super(A),this.f=e,o===void 0?this.next=a=>{this.acc=a,this.resetNext(),this.sink.next(this.acc)}:this.acc=o}next(A){this.sink.next(this.acc=this.f(this.acc,A))}},"scan"),_eA=Ps(class extends Os{constructor(){super(...arguments),this.hasLast=!1}next(A){this.hasLast?this.sink.next([this.last,A]):this.hasLast=!0,this.last=A}},"pairwise"),U4=class extends Os{constructor(A,e,o){super(A),this.mapper=e,this.thisArg=o}next(A){super.next(this.mapper.call(this.thisArg,A))}},lK=Ps(U4,"map"),TeA=A=>Ps(U4,"mapTo")(e=>A),Lk=class extends Os{constructor(A,e,o){super(A),this.data=e,this.context=o}next(A){let e=this.context.combineResults;e?this.sink.next(e(this.data,A)):this.sink.next(A)}tryComplete(){this.context.resetComplete(),this.dispose()}},Uk=class q6 extends Os{constructor(e,o,a){super(e),this.makeSource=o,this.combineResults=a,this.index=0}subInner(e,o){let a=this.currentSink=new o(this.sink,e,this);this.complete===q6.prototype.complete&&(this.complete=this.tryComplete),a.complete=a.tryComplete,a.subscribe(this.makeSource(e,this.index++))}complete(){this.sink.complete()}tryComplete(){this.currentSink.resetComplete(),this.dispose()}},F4=class extends Lk{},O4=class extends Uk{next(A){this.subInner(A,F4),this.next=e=>{this.currentSink.dispose(),this.subInner(e,F4)}}},R2=Ps(O4,"switchMap");function w2(A){return(e,o)=>A(()=>e,o)}var _2=w2(Ps(O4,"switchMapTo")),NeA=class extends Lk{tryComplete(){this.dispose(),this.context.sources.length?this.context.subNext():(this.context.resetNext(),this.context.resetComplete())}},P4=class extends Uk{constructor(){super(...arguments),this.sources=[],this.next2=this.sources.push.bind(this.sources)}next(A){this.next2(A),this.subNext()}subNext(){this.next=this.next2,this.subInner(this.sources.shift(),NeA),this.disposed&&this.sources.length===0&&this.currentSink.resetComplete()}tryComplete(){this.sources.length===0&&this.currentSink.resetComplete(),this.dispose()}},GeA=Ps(P4,"concatMap"),beA=w2(Ps(P4,"concatMapTo")),keA=class extends Lk{tryComplete(){this.context.inners.delete(this),super.dispose(),this.context.inners.size===0&&this.context.resetComplete()}},x4=class extends Uk{constructor(){super(...arguments),this.inners=new Set}next(A){this.subInner(A,keA),this.inners.add(this.currentSink)}tryComplete(){this.inners.size===1?this.inners.forEach(A=>A.resetComplete()):this.dispose()}},LeA=Ps(x4,"mergeMap"),UeA=w2(Ps(x4,"mergeMapTo")),FeA=class extends Lk{dispose(){this.context.resetNext(),super.dispose()}},Y4=class extends Uk{next(A){this.next=eg,this.subInner(A,FeA)}},OeA=Ps(Y4,"exhaustMap"),PeA=w2(Ps(Y4,"exhaustMapTo")),xeA=Ps(class extends Os{constructor(A,e){super(A),this.f=e,this.groups=new Map}next(A){let e=this.f(A),o=this.groups.get(e);o===void 0&&(o=lQ(),o.key=e,this.groups.set(e,o),super.next(o)),o.next(A)}complete(){this.groups.forEach(A=>A.complete()),super.complete()}error(A){this.groups.forEach(e=>e.error(A)),super.error(A)}},"groupBy"),YeA=Ps(class extends Os{constructor(){super(...arguments),this.start=new Date}next(A){this.sink.next({value:A,interval:Number(new Date)-Number(this.start)}),this.start=new Date}},"timeInterval"),VeA=Ps(class extends Os{constructor(A,e){super(A),this.miniseconds=e,this.buffer=[],this.id=setInterval(()=>{this.sink.next(this.buffer.concat()),this.buffer.length=0},this.miniseconds)}next(A){this.buffer.push(A)}complete(){this.sink.next(this.buffer),super.complete()}dispose(){clearInterval(this.id),super.dispose()}},"bufferTime"),JeA=Ps(class extends Os{constructor(A,e){super(A),this.buffer=[],this.delayTime=e}dispose(){clearTimeout(this.timeoutId),super.dispose()}delay(A){this.timeoutId=setTimeout(()=>{let e=this.buffer.shift();if(e){let{time:o,data:a}=e;super.next(a),this.buffer.length&&this.delay(Number(this.buffer[0].time)-Number(o))}},A)}next(A){this.buffer.length||this.delay(this.delayTime),this.buffer.push({time:new Date,data:A})}complete(){this.timeoutId=setTimeout(()=>super.complete(),this.delayTime)}},"delay"),V4=Ps(class extends Os{constructor(A,e){super(A),this.selector=e}error(A){this.dispose(),this.selector(A)(this.sink)}},"catchError"),HeA=class extends Lk{tryComplete(){let A=this.context.inners.delete(this);super.dispose(),A&&this.context.checkComplete()}next(A){this.sink.next(A),this.context.expandValue(A)}},qeA=Ps(class extends Uk{constructor(A,e){super(A,e),this.project=e,this.inners=new Set,this.sourceCompleted=!1}next(A){this.sink.next(A),this.expandValue(A)}expandValue(A){let e=new HeA(this.sink,A,this);this.currentSink=e,this.complete=this.tryComplete,e.complete=e.tryComplete,this.inners.add(e),e.subscribe(this.makeSource(A,this.index++))}complete(){this.sourceCompleted=!0,this.checkComplete()}checkComplete(){this.sourceCompleted&&this.inners.size===0&&(this.resetComplete(),super.complete())}tryComplete(){this.sourceCompleted=!0,this.checkComplete()}},"expand"),KeA=()=>A=>new Promise((e,o)=>{let a;new M2(A,c=>a=c,o,()=>e(a))}),jeA=()=>A=>{let e;return new ReadableStream({start(o){e=new M2(A,o.enqueue.bind(o),o.error.bind(o),o.close.bind(o))},cancel(){e.dispose()}})},hl=function(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:eg,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:eg,o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:eg;return a=>new M2(a,A,e,o)},IK=Ps(class extends Os{constructor(A,e){super(A),e instanceof Function?this.next=o=>{e(o),A.next(o)}:(e.next&&(this.next=o=>{e.next(o),A.next(o)}),e.complete&&(this.complete=()=>{e.complete(),A.complete()}),e.error&&(this.error=o=>{e.error(o),A.error(o)}))}},"tap"),WeA=Ps(class extends Os{constructor(A,e){super(A),this.timeout=e,this.id=setTimeout(()=>this.error(new D4(this.timeout)),this.timeout)}next(A){super.next(A),clearTimeout(this.id),this.next=super.next}dispose(){clearTimeout(this.id),super.dispose()}},"timeout"),zeA=function(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:1/0;return e=>{if(e instanceof hy){let o=cr(a=>{let c=A,d=new Os(a);d.error=C=>{c-- >0?d.subscribe(e):a.error(C)},d.sourceId=o.id,d.subscribe(e)},"retry",[A]);return o.source=e,Ic.pipe(o),o}return o=>{let a=A,c=new Os(o);c.error=d=>{a-- >0?e(c):o.error(d)},e(c)}}},uK=(A=>(A[A.AUTO_SWITCH_NEW_DEVICE=0]="AUTO_SWITCH_NEW_DEVICE",A[A.WAIT_CURRENT_DEVICE=1]="WAIT_CURRENT_DEVICE",A))(uK||{}),Fk=class K6 extends iK{constructor(e,o){super({mediaType:e,PlayerClass:o}),Y(this,"isRemote",!1),Y(this,"deviceId"),Y(this,"groupId",""),Y(this,"label",""),Y(this,"sourceTrack"),Y(this,"enableAutoSwitchWhenRecapturing",!0),Y(this,"_isRecapturing",!1),Y(this,"_lastRecaptureTime",0),Y(this,"_onMuteTimeoutId",-1),Y(this,"_encodeCheckTimeoutId",-1),Y(this,"recaptureMode",0),Y(this,"profile"),Y(this,"retryEncodeFailed")}get enableEncodeFrame(){return!1}get isPublishing(){return this.state.toString()==="publishing"}get isPublished(){return this.state==="publish"}get isUseCustomSource(){return!(!this.mediaTrack||this.sourceTrack===this.mediaTrack)}encodeFrame(e,o){throw new Error("Method not implemented.")}installTrackEvent(e){e.addEventListener(YA.MUTE,this.onTrackMuted),e.addEventListener(YA.UNMUTE,this.onTrackUnmuted),e.addEventListener(YA.ENDED,this.onTrackEnded),e.muted&&this.onTrackMuted(),e.readyState===YA.ENDED&&this.onTrackEnded()}uninstallTrackEvent(e){e.removeEventListener(YA.MUTE,this.onTrackMuted),e.removeEventListener(YA.UNMUTE,this.onTrackUnmuted),e.removeEventListener(YA.ENDED,this.onTrackEnded)}setStateToReady(){}capture(e){let o=arguments.length>1&&arguments[1]!==void 0&&arguments[1];return KA(this,null,function*(){var a,c;let d=this.sourceTrack;try{let C,y=bo();U.emit(sA.LOCAL_TRACK_CAPTURE_START,{track:this}),e.customSource?(C=new MediaStream,C.addTrack(e.customSource)):(o||(a=this.sourceTrack)==null||a.stop(),C=yield GAA(e));let S=C.getTracks()[0];return yield this.setInputMediaStreamTrack(S),e.customSource||(this.sourceTrack=S,this.updateDeviceIdInUse(),this.listenDeviceChange()),U.emit(sA.LOCAL_TRACK_CAPTURE_SUCCESS,{track:this,cost:bo()-y,profile:this.profile,room:(c=this.manager)==null?void 0:c.room}),C}catch(C){throw U.emit(sA.LOCAL_TRACK_CAPTURE_FAILED,{track:this,error:C}),this.log.error("getUserMedia error observed ".concat(C)),C}finally{o&&d?.stop()}})}setOutputMediaStreamTrack(e){var o;if(super.setOutputMediaStreamTrack(e),this.setStateToReady(),this.isPublishing||this.isPublished)return(o=this.room)==null?void 0:o.replaceTrack(this)}get hasFlag(){var e,o;let a=Dp(((e=this.room)==null?void 0:e.localPublishFlag)||0,((o=this.room)==null?void 0:o.userId)||"");return this.mediaType===4&&a.hasVideo||this.mediaType===1&&a.hasAudio||this.mediaType===2&&a.hasAuxiliary}publish(e,o){return KA(this,null,function*(){return this.room=e,this.room.localTracks.add(this),this.emit("4",{mediaType:this.strMediaType,state:"starting",prevState:"stopped"}),this.userId=e.userId,this._log.bindParent(e.getLogger()),yield o,this._checkPublishFlag(e)})}_checkPublishFlag(e){return new Promise((o,a)=>KA(this,null,function*(){var c,d,C,y,S;let b=()=>a(new oi({code:lt.API_CALL_ABORTED,message:"publish aborted"}));if(this.hasFlag||this.muted?o():((this.state===Zs.INIT||this.state==="ready")&&b(),Qa(ga(e,"local-publish-flag-changed"),NM(()=>this.hasFlag),rE(sK(ga(this,Zs.INIT),ga(this,"ready"))),hl(o,a,b))),(C=(d=(c=this.room)==null?void 0:c.networkQuality)==null?void 0:d.hadRecentBadUplink)!=null&&C.call(d,2))return o();let V=e.heartbeatCount,J=((S=(y=this.mediaTrack)==null?void 0:y.stats)==null?void 0:S.totalFrames)||0;this._encodeCheckTimeoutId=setTimeout(()=>KA(this,null,function*(){var gA,CA,MA,ee,Be,Pe,Me,fi;if((MA=(CA=(gA=this.room)==null?void 0:gA.networkQuality)==null?void 0:CA.hadRecentBadUplink)!=null&&MA.call(CA,2)||e.heartbeatCount-V<3)return o();if((this.isPublished||this.isPublishing)&&this.isMediaTrackActive){if((ee=this.mediaTrack)!=null&&ee.stats){let Ci=this.mediaTrack.stats.totalFrames||0;Ci-J===0&&this.log.warn("capture totalFrames is 0 during encode check, totalFrames",Ci)}let Ge=this.kind===YA.AUDIO,dt=this.stat.bytesSent>0;if(Ai[dt?"addSuccessEvent":"addFailedEvent"]({key:Ge?503700:513702}),!Ge){let Ci={H264:513704,H265:513705,VP8:513706}[((Pe=(Be=this.room)==null?void 0:Be.videoCodec)==null?void 0:Pe.toUpperCase())||"H264"];Ci&&Ai[dt?"addSuccessEvent":"addFailedEvent"]({key:Ci})}if(!dt){if(Ai.addEnum({key:Ge?503701:513703,value:Lp()}),sn.uploadEvent({log:"stat-encode-failed-".concat(this.kind,"-").concat(oQ()||Up()),userId:this.userId}),this.log.warn(Ge?"encode failed":"".concat((fi=(Me=this.room)==null?void 0:Me.videoCodec)==null?void 0:fi.toUpperCase()," encode failed")),this.retryEncodeFailed&&(this.log.warn("retry encode"),yield this.retryEncodeFailed(this),this.stat.bytesSent>0||this.hasFlag||(yield _C(5e3),this.stat.bytesSent>0||this.hasFlag)))return o();this.emit("6",this),a(new oi({message:"".concat(this.strMediaType," encode failed"),code:Ge?lt.AUDIO_ENCODE_FAILED:lt.VIDEO_ENCODE_FAILED}))}}}),1e4)}))}unpublish(){this.room&&this.room.localTracks.delete(this),this.log.info("unpublish"),U.emit(sA.LOCAL_TRACK_UNPUBLISHED,{track:this})}updateDeviceIdInUse(){return KA(this,null,function*(){if(this.sourceTrack&&ly){let{deviceId:e,groupId:o}=this.sourceTrack.getSettings(),{label:a}=this.sourceTrack;(yield function(c){return KA(this,arguments,function(d){let{newDeviceId:C,oldDeviceId:y,oldGroupId:S,oldLabel:b,kind:V}=d;return function*(){return C===y&&(V!==YA.AUDIO||C!==OS||(yield E4(S,b)))}()})}({newDeviceId:e,oldDeviceId:this.deviceId,oldGroupId:this.groupId,oldLabel:this.label,kind:this.kind}))||(this.deviceId=e,this.label=a,o&&(this.groupId=o),m2().then(c=>{let d=c.find(C=>{let y=C.deviceId===e;return o&&(y=y&&C.groupId===o),y});d&&this.emit("2",d)}))}})}setProfile(e){this.log.info("setProfile",e),Object.assign(this.profile,e)}isNeedToRecapture(){let e=arguments.length>0&&arguments[0]!==void 0&&arguments[0];return!(!this.deviceId||!this.sourceTrack||this.kind===YA.AUDIO&&!function(o){if(o instanceof CanvasCaptureMediaStreamTrack||!(o instanceof MediaStreamTrack))return!1;let a=o.label.toLocaleLowerCase();if(a.includes("mic")||a.includes("麦克风"))return!0;let c="".concat((o?.getSettings()||{}).deviceId,"_").concat(YA.AUDIO_INPUT);return!!eK.has(c)}(this.sourceTrack)||this.kind===YA.VIDEO&&!function(o){if(o instanceof CanvasCaptureMediaStreamTrack||!(o instanceof MediaStreamTrack))return!1;let a=o.label.toLocaleLowerCase();if(a.includes("camera")||a.includes("webcam"))return!0;let c="".concat((o?.getSettings()||{}).deviceId,"_").concat(YA.VIDEO_INPUT);return!!eK.has(c)}(this.sourceTrack)||this._isRecapturing||e&&AQ&&Bg)}onTrackMuted(){if(super.onTrackMuted(),bAA(),this.isNeedToRecapture(!0)){if(Date.now()-this._lastRecaptureTimethis.onTrackMuted(),xS);this._onMuteTimeoutId=setTimeout(()=>KA(this,null,function*(){var e;if((e=this.sourceTrack)!=null&&e.muted){if((Ag||Ja)&&document.visibilityState!=="visible")return;this.recapture(yield this.getRecoverCaptureDeviceId())}}),5e3)}}onTrackUnmuted(){super.onTrackUnmuted(),this._onMuteTimeoutId>0&&clearTimeout(this._onMuteTimeoutId)}onTrackEnded(){return KA(this,null,function*(){if(RI(K6.prototype,this,"onTrackEnded").call(this),this.isNeedToRecapture()&&this.recaptureMode===0){if(Date.now()-this._lastRecaptureTimethis.onTrackEnded(),xS);this.emit("7"),this.recapture(yield this.getRecoverCaptureDeviceId())}})}recapture(e){let o=arguments.length>1&&arguments[1]!==void 0&&arguments[1];return KA(this,null,function*(){var a;if(this._isRecapturing||!this.sourceTrack)return;this.log.warn("recapture trying");let c=this.sourceTrack;o||(a=this.sourceTrack)==null||a.stop(),this._isRecapturing=!0,this._lastRecaptureTime=Date.now();let d={useExactDeviceId:!0};if(e==="user"||e==="environment")d.facingMode=e;else{let C;(this.kind==="audio"?yield Kp():yield jp()).find(y=>y.deviceId===e)&&(C=e),d.deviceId=C}return this.capture(d,o).then(()=>{this._isRecapturing=!1,this.log.warn("recapture success"),this.emit("1",{deviceId:this.deviceId}),U.emit(sA.LOCAL_TRACK_RECAPTURE,{track:this})}).catch(C=>{this._isRecapturing=!1,this.log.warn("recapture failed ".concat(C.message)),this.emit("5",C),U.emit(sA.LOCAL_TRACK_RECAPTURE,{track:this,error:C})}).finally(()=>{o&&c?.stop()})})}getRecoverCaptureDeviceId(){return KA(this,null,function*(){let e=this instanceof IQ;if(e&&this.facingMode)return this.facingMode;let{deviceId:o}=this;if(o){let a=(Pk.get(o)||0)+1;if(Pk.set(o,a),a>=3&&this.enableAutoSwitchWhenRecapturing){let c=e?(yield jp()).find(d=>!Pk.has(d.deviceId)):(yield Kp()).find(d=>!Pk.has(d.deviceId));c&&(this.log.warn("".concat(o," capture fail ").concat(a," times, change new ").concat(c.deviceId)),o=c.deviceId)}}return o})}stopCapture(){var e;this.sourceTrack&&(this.sourceTrack.stop(),U.emit(sA.LOCAL_TRACK_STOPPED,{track:this}),this.uninstallTrackEvent(this.sourceTrack)),this._inputTrack&&this.uninstallTrackEvent(this._inputTrack),(e=this.manager)==null||e.removeInput(this),this._onMuteTimeoutId&&clearTimeout(this._onMuteTimeoutId)}close(){super.close(),this.stopCapture()}};di([lc(Zs.INIT,"ready",{ignoreError:!0,sync:!0})],Fk.prototype,"setStateToReady"),di([Gk()],Fk.prototype,"capture"),di([lc("ready","publish",{ignoreError:!0,success(){U.emit(sA.LOCAL_TRACK_PUBLISHED,{track:this,room:this.room}),this.emit("4",{mediaType:this.strMediaType,state:"started",prevState:"starting"}),this.log.info("published")},fail(A){var e;(e=this.room)==null||e.localTracks.delete(this);let o="error",a=A instanceof oi?A:A.cause instanceof oi?A.cause:A,c=!1;a instanceof oi&&(a.message.includes("timeout")?o="timeout":a.code===lt.API_CALL_ABORTED&&(c=!0,o="api-call")),this.emit("4",{mediaType:this.strMediaType,state:"stopped",prevState:"starting",reason:o,error:a}),this.log[c?"info":"error"]("publish failed",a)}}),Cy(521714,!1)],Fk.prototype,"publish"),di([Hr(A=>function(){return KA(this,null,function*(){let e=this.state==="publish"?"started":"starting";A.call(this),this.emit("4",{mediaType:this.strMediaType,state:"stopped",prevState:e,reason:"api-call"}),clearTimeout(this._encodeCheckTimeoutId)})}),lc([],"ready",{sync:!0})],Fk.prototype,"unpublish");var Ok=Fk,Pk=new Map;U.on(sA.SWITCH_DEVICE_SUCCESS,A=>{A.track.deviceId&&Pk.delete(A.track.deviceId)});var GM=class lL extends Ok{constructor(e){super(1,RAA),Y(this,"mediaType",1),Y(this,"volume",0),Y(this,"profile",{echoCancellation:!0,autoGainControl:!0,noiseSuppression:!0,sampleRate:48e3,channelCount:1,bitrate:40}),Y(this,"playerMuted",!0),Y(this,"pipeline"),Y(this,"earMonitorGainNode",new kI),Y(this,"_output",new kI),Y(this,"codecPipeline",[]),Y(this,"stat",{bytesSent:0,packetsSent:0,audioLevel:0,totalAudioEnergy:0}),Y(this,"mixedAudioReferenceMap",new Map),Y(this,"isAudioContextLongSuspended",!1),Y(this,"after3aSilenceStartTime",0),Y(this,"_micMuted",!1),Y(this,"_volumeDetectionTrack",null),Y(this,"_volumeDetectionSource",new kI),this.manager=e,this.pipeline=new a4(e),this.pipeline.source.pipeTo(this.player.pipeline.volumeMeter),this.pipeline.gain.pipeTo(this.earMonitorGainNode).pipeTo(this._output),this.pipeline.gain.pipeTo(this.player.pipeline.volumeMeterAfter3A),this._volumeDetectionSource.pipeTo(this.player.pipeline.volumeMeter),this.handleMicrophoneAdded=this.handleMicrophoneAdded.bind(this),this.handleMicrophoneRemoved=this.handleMicrophoneRemoved.bind(this),U.on(sA.AUDIO_CONTEXT_LONG_SUSPENDED,this.handleAudioContextLongSuspended,this)}get dbVolume(){return p2.isRunning?this.player.pipeline.volumeMeter.getVolumeDb():Math.floor(Math.max(10*Math.log10(this.volume)+100,0))}getAudioLevel(){let e=(this.volume||super.getAudioLevel())*this.captureVolume;return e>1?1:e}getInternalAudioLevelAfter3A(){if(this.pipeline.isProcessEnabled)return this.player.getInternalAudioLevelAfter3A()}updateAfter3aSilenceStartTime(e){Ye(e)||(e!==0||this.after3aSilenceStartTime?e>0&&(this.after3aSilenceStartTime=0):this.after3aSilenceStartTime=bo())}setInputMediaStreamTrack(e){return KA(this,null,function*(){let o=this.trackSettings||{};Ai.addEnum({key:501701,value:o.channelCount||0,useUV:!1}),Ai.addEnum({key:501702,value:o.sampleRate||0,useUV:!1}),Ai.addEnum({key:502700,value:0});let{sampleRate:a,channelCount:c}=o;this._log.info("local audio track input ".concat(JSON.stringify({sampleRate:a,channelCount:c}))),this.pipeline.source.channelCount=c||1,this.pipeline.replaceSource(e),yield RI(lL.prototype,this,"setInputMediaStreamTrack").call(this,e),this.updatePlayingState(!!e)})}capture(e){return KA(this,arguments,function(o){var a=this;let{deviceId:c,customSource:d,useExactDeviceId:C=!0,retryWhenExactFailed:y}=o,S=arguments.length>1&&arguments[1]!==void 0&&arguments[1];return function*(){let b=yield RI(lL.prototype,a,"capture").call(a,{video:!1,audio:!0,microphoneId:c,echoCancellation:a.profile.echoCancellation,autoGainControl:a.profile.autoGainControl,noiseSuppression:a.profile.noiseSuppression,sampleRate:a.profile.sampleRate,channelCount:a.profile.channelCount,useExactDeviceId:C,retryWhenExactFailed:y,customSource:d},S);return Tk(),b}()})}switchDevice(e){return KA(this,null,function*(){if(this.mediaTrack){if(this.deviceId===e&&!this.isUseCustomSource&&(e!==OS||(yield E4(this.groupId,this.label))))return;try{this.log.info("switchDevice audio to: ".concat(e)),this.sourceTrack&&this.sourceTrack.stop(),yield this.capture({deviceId:e,useExactDeviceId:!0,retryWhenExactFailed:!1}),U.emit(sA.SWITCH_DEVICE_SUCCESS,{track:this}),this.log.info("switch microphone success")}catch(o){throw this.log.error("switch microphone failed ".concat(o)),this.deviceId&&this.recapture(this.deviceId),o}}})}listenDeviceChange(){Pc&&!Pc.listeners("audioInputRemoved").includes(this.handleMicrophoneRemoved)&&Pc.on("audioInputRemoved",this.handleMicrophoneRemoved,this)}handleMicrophoneRemoved(e){return KA(this,null,function*(){if(e.deviceId===this.deviceId){let o=this.recaptureMode===1;if(this.log.warn("RecaptureMode: ".concat(uK[this.recaptureMode],". Current microphone is lost: ").concat(JSON.stringify(e))),this.recaptureMode===0){Jg(this.userId,{eventId:2003,param1:6,streamType:1});let a=yield Kp();a[0]?this.recapture(a[0].deviceId):o=!0}o&&Pc.on("audioInputAdded",this.handleMicrophoneAdded,this)}})}handleMicrophoneAdded(e){this.recaptureMode===1&&e.deviceId!==this.deviceId||(Pc.off("audioInputAdded",this.handleMicrophoneAdded,this),this.log.warn("microphone added: ".concat(JSON.stringify(e))),this.recapture(e.deviceId))}update3A(e){return KA(this,arguments,function(o){var a=this;let{echoCancellation:c,noiseSuppression:d,autoGainControl:C}=o;return function*(){let y=a.sourceTrack||a.mediaTrack;if(!y)return;let S=y.getConstraints(),b=!1;!Ye(c)&&c!==a.profile.echoCancellation&&(a.profile.echoCancellation=c,S.echoCancellation=c,b=!0),!Ye(d)&&d!==a.profile.noiseSuppression&&(a.profile.noiseSuppression=d,S.noiseSuppression=d,b=!0),!Ye(C)&&C!==a.profile.autoGainControl&&(a.profile.autoGainControl=C,S.autoGainControl=C,b=!0),b&&(er||Bg?yield y.applyConstraints(S).catch(V=>a._log.warn("update3A failed: ",V)):a.deviceId&&(yield a.recapture(a.deviceId,!0)))}()})}get captureVolume(){return this.pipeline.volume}setCaptureVolume(e){this.pipeline.setVolume(e/100),this.pipeline.gain.node&&Ai.addEnum({key:502700,value:2})}setMute(e,o){var a;this._cleanupVolumeDetectionTrack(),e==="microphone"?(this._micMuted=!0,this.sourceTrack&&(this.sourceTrack.enabled=!1),o&&this._setupVolumeDetectionTrack(),((a=this.manager)==null?void 0:a.mixWeight)<=1?(this.muted=!0,this._inputTrack&&(this._inputTrack.enabled=!1),this._outputTrack&&(this._outputTrack.enabled=!1),this.emit("mute",this),U.emit(sA.TRACK_MUTED,{track:this})):this._outputTrack&&(this._outputTrack.enabled=!0)):e===!0?(this._micMuted=!1,this.muted=!0,this.sourceTrack&&(this.sourceTrack.enabled=!1),this._inputTrack&&(this._inputTrack.enabled=!1),this._outputTrack&&(this._outputTrack.enabled=!1),o&&this._setupVolumeDetectionTrack(),this.emit("mute",this),U.emit(sA.TRACK_MUTED,{track:this})):(this._micMuted=!1,this.muted=!1,this.sourceTrack&&(this.sourceTrack.enabled=!0),this._inputTrack&&(this._inputTrack.enabled=!0),this._outputTrack&&(this._outputTrack.enabled=!0),this.emit("unmute",this),U.emit(sA.TRACK_UNMUTED,{track:this}))}_setupVolumeDetectionTrack(){let e=this.sourceTrack||this.mediaTrack;if(!e)return;this._volumeDetectionTrack=e.clone(),this._volumeDetectionTrack.enabled=!0;let o=B2(this._volumeDetectionTrack);o&&this._volumeDetectionSource.setNode(o)}_cleanupVolumeDetectionTrack(){this._volumeDetectionTrack&&(this._volumeDetectionTrack.stop(),this._volumeDetectionTrack=null),this._volumeDetectionSource.deleteNode()}get isMicMuted(){return this._micMuted}setAudioVolume(e){super.setAudioVolume(0),Ag&&this.player.setMuted(!0),this.earMonitorGainNode.node||(this.earMonitorGainNode.setNode(bI().createGain()),this._output.setNode(bI().destination)),this.earMonitorGainNode.node.gain.value=e}enableTrackANS(e){return this.update3A({noiseSuppression:e})}enableTrackAEC(e){if(this.sourceTrack&&!Bg&&!Ag)return this.update3A({echoCancellation:e})}addDenoiser(e){var o;jE<=92&&((o=this.trackSettings)==null?void 0:o.sampleRate)!==48e3?this._log.warn("denoiser only support sampleRate 48000 before chrome 93"):(Ai.addEnum({key:502700,value:1}),this.pipeline.denoiser.setNode(e),this.enableTrackANS(!1))}mixAudioReference(e,o){if(this.mixedAudioReferenceMap.has(o))return;this.log.info("mixAudioReference() => ".concat(o));let a=B2(e);if(!a)return;let c=new kI,d=bI().createGain();d.gain.value=1;let C=new kI;c.pipeTo(C).pipeTo(this.pipeline.mixNode),c.setNode(a),C.setNode(d),this.mixedAudioReferenceMap.set(o,[c,C])}unMixAudioReference(e){let[o,a]=this.mixedAudioReferenceMap.get(e)||[];o&&(this.log.info("unMixAudioReference() => ".concat(e)),o.deleteNode(),a?.deleteNode(),this.mixedAudioReferenceMap.delete(e))}setAudioReferenceVolume(e,o){let[a,c]=this.mixedAudioReferenceMap.get(e)||[];c!=null&&c.node&&(c.node.gain.value=o/100,this.log.info("setAudioReferenceVolume() => ".concat(e," ").concat(c.node.gain.value)))}addAudioProcessor(e,o,a){this.pipeline.silentNode.setNode(a),this.pipeline.mixNode.setNode(o),this.pipeline.aec.setNode(e)}removeDenoiser(e){if(this.pipeline.denoiser.node===e)return this.pipeline.denoiser.deleteNode(),this.enableTrackANS(!0)}removeAudioProcessor(e){this.pipeline.aec.node===e&&(this.pipeline.aec.deleteNode(),this.pipeline.silentNode.deleteNode(),this.pipeline.mixNode.deleteNode())}close(){this._cleanupVolumeDetectionTrack(),this.mixedAudioReferenceMap.forEach(e=>{let[o,a]=e;o.deleteNode(),a.deleteNode()}),this.mixedAudioReferenceMap.clear(),this.pipeline.remove(),this.earMonitorGainNode.deleteNode(),this._output.deleteNode(),Pc.off("audioInputAdded",this.handleMicrophoneAdded,this),Pc.off("audioInputRemoved",this.handleMicrophoneRemoved,this),U.off(sA.AUDIO_CONTEXT_LONG_SUSPENDED,this.handleAudioContextLongSuspended,this),super.close()}recapture(e){let o=arguments.length>1&&arguments[1]!==void 0&&arguments[1];return KA(this,null,function*(){try{yield RI(lL.prototype,this,"recapture").call(this,e,o)}catch(a){let c=(yield Kp()).find(d=>d.deviceId!==e);if(!c)throw a;yield RI(lL.prototype,this,"recapture").call(this,c.deviceId)}})}encodeFrame(e){return this.manager?this.manager.encodePipeline.reduceRight((o,a)=>a?a({frame:o,ntp:Tf()}):o,e):e}get enableEncodeFrame(){return!!this.manager&&this.manager.encodePipeline.some(e=>e)}get enableEncryptFrame(){return this.manager&&!!this.manager.encodePipeline[0]}handleAudioContextLongSuspended(e){let{isSuspended:o}=e;if(this.pipeline.isProcessEnabled)if(o){this.isAudioContextLongSuspended=!0,this.log.warn("context has suspended for ".concat(1.5," seconds, change to source audio").concat(Gp?"":", non-Safari"));let a=this.sourceTrack||this.mediaTrack;a&&this.setOutputMediaStreamTrack(a)}else this.isAudioContextLongSuspended=!1,this.log.warn("context has resumed, change to processed audio"),this.pipeline.track&&this.setOutputMediaStreamTrack(this.pipeline.track)}setOutputMediaStreamTrack(e){if(this.isAudioContextLongSuspended){let o=this.sourceTrack||this.mediaTrack;o&&(e=o)}super.setOutputMediaStreamTrack(e)}};function T2(A,e){return e+4<=A.byteLength&&A.getUint8(e)===0&&A.getUint8(e+1)===0&&A.getUint8(e+2)===0&&A.getUint8(e+3)===1?4:e+3<=A.byteLength&&A.getUint8(e)===0&&A.getUint8(e+1)===0&&A.getUint8(e+2)===1?3:0}function J4(A){let e=arguments.length>1&&arguments[1]!==void 0&&arguments[1],o=new DataView(A),a=[],c=0;for(;c0){C=J;break}let y=C===-1?o.byteLength:C,S=y-c,b=new ArrayBuffer(S),V=new DataView(b);for(let J=0;J1&&arguments[1]!==void 0&&arguments[1];this.dataView=A,this.isSEI&&(e?this.addPreventionByte():this.removePreventionByte())}addPreventionByte(){let{seiPayloadStartIndex:A}=this,e=this.dataView.byteLength-2,o=[],a=0;for(let d=A;d<=e;d++){let C=this.dataView.getInt8(d);switch(C){case 0:case 1:case 2:case 3:a===2&&(o.push(3),a=0),C===0?a+=1:a=0,o.push(C);break;default:a=0,o.push(C)}}o.push(this.dataView.getInt8(this.dataView.byteLength-1));let c=new DataView(new Uint8Array([...new Uint8Array(this.dataView.buffer).slice(0,A),...o]).buffer);this.dataView=c}removePreventionByte(){let{seiPayloadStartIndex:A}=this,e=this.dataView.byteLength-1,o=[],a=0;for(let d=A;d<=e;d++)switch(this.dataView.getInt8(d)){case 0:a++,o.push(this.dataView.getInt8(d));break;case 3:a!==2&&o.push(this.dataView.getInt8(d)),a=0;break;default:o.push(this.dataView.getInt8(d)),a=0}let c=new DataView(new Uint8Array([...new Uint8Array(this.dataView.buffer).slice(0,A),...o]).buffer);this.dataView=c}get seiPayloadStartIndex(){let A=6;for(let e=6;e=this.dataView.byteLength?0:31&this.dataView.getUint8(A)}getStartCodeLength(){return this.dataView.byteLength>=4&&this.dataView.getUint8(0)===0&&this.dataView.getUint8(1)===0&&this.dataView.getUint8(2)===0&&this.dataView.getUint8(3)===1?4:this.dataView.byteLength>=3&&this.dataView.getUint8(0)===0&&this.dataView.getUint8(1)===0&&this.dataView.getUint8(2)===1?3:0}get isIDR(){return this.naluType===5}get isSPS(){return this.naluType===7}get isPPS(){return this.naluType===8}get isSEI(){return this.naluType===6}},ZeA=class{constructor(){Y(this,"_seiMessageList",[]),Y(this,"_smallSeiMessageList",[]),Y(this,"_seiPayloadType",243)}encodeSEINalu(A){let e=A.byteLength,o=parseInt(String(e/255),10),a=e%255,c=[];c.push(0,0,0,1,6,this._seiPayloadType);for(let C=0;C0&&A.data.byteLength>0){let a=9-this.getNaluCount(A.data);if(a<=0)return 0;let c=o.splice(0,a).reverse().map(this.encodeSEINalu.bind(this)),d=c.reduce((V,J)=>V+J.dataView.byteLength,0),C=new ArrayBuffer(d+A.data.byteLength),y=new DataView(C),S=new DataView(A.data),b=0;for(let V=0;V1&&arguments[1]!==void 0?arguments[1]:4,Mo),Y(this,"profile",pi({},GS)),Y(this,"avoidCropping",!1),Y(this,"_scaleResolutionDownBy"),Y(this,"stat",{bytesSent:0,packetsSent:0,framesEncoded:0,framesSent:0,frameWidth:0,frameHeight:0,fpsCapture:0,framesCaptured:0}),Y(this,"small"),Y(this,"isNeedToSetBandwidth"),Y(this,"muteImage"),Y(this,"manager"),Y(this,"_seiCodec",new ZeA),this.manager=e;let o=()=>{var a;if(this.isAllowed2k4k(this.profile))this.room&&this.settings.height>=1440&&this.state==="publish"&&this.room.sendAbilityStatus({"2k4k":1});else{let c=xd(((a=this.room)==null?void 0:a.sdkAppId)||0)?ob:Hw;this.log.warn("Resolution is reset to 1080p, need to upgrade ability here ".concat(c)),this.setProfile(Bo(pi({},this.profile),{width:1920,height:1080})),this.applyProfile()}};this.on("input-media-track-changed",o),this.on("publish",o),this.handleCameraAdded=this.handleCameraAdded.bind(this),this.handleCameraRemoved=this.handleCameraRemoved.bind(this)}get facingMode(){if(ly&&this.mediaTrack)return this.mediaTrack.getSettings().facingMode}get contentHint(){var e;return((e=this._inputTrack)==null?void 0:e.contentHint)||""}get isQosClearFirst(){var e;return((e=this._inputTrack)==null?void 0:e.contentHint)==="detail"}get hasSmall(){var e;return!((e=this.manager)==null||!e.hasSmall)}setMute(e){return KA(this,null,function*(){var o,a,c;if(Yn(e)){if(this.muteImage===e)return;yield(o=this.manager)==null?void 0:o.deleteWatermark("mute"),yield(a=this.manager)==null?void 0:a.setWatermark({x:0,y:0,width:this.settings.width,height:this.settings.height,type:"mute",zIndex:999,imageUrl:e,fillVideo:!0}),this.muteImage=e,RI(d_.prototype,this,"setMute").call(this,!1)}else this.muteImage&&(yield(c=this.manager)==null?void 0:c.deleteWatermark("mute"),this.muteImage=void 0),RI(d_.prototype,this,"setMute").call(this,e)})}capture(e){return KA(this,arguments,function(o){var a=this;let{deviceId:c,facingMode:d,useExactDeviceId:C=!0,customSource:y,retryWhenExactFailed:S=!0}=o;return function*(){let b={audio:!1,video:!0,facingMode:d||a.facingMode,cameraId:c,width:a.profile.width,height:a.profile.height,frameRate:a.profile.frameRate,useExactDeviceId:C,retryWhenExactFailed:S,customSource:y};if(b.facingMode==="environment"){let V=yield a.getDeviceIdWhenUsingBackCamera();V&&(b.cameraId=V)}return RI(d_.prototype,a,"capture").call(a,b)}()})}setProfile(e){var o;let a=this.fallbackProfile(e);if(a.bitrate&&(this.isNeedToSetBandwidth=a.bitrate!==this.profile.bitrate),this.isAllowed2k4k(this.profile))super.setProfile(a);else{let c=xd(((o=this.room)==null?void 0:o.sdkAppId)||0)?ob:Hw;this.log.warn("Resolution is reset to 1080p, need to upgrade ability here ".concat(c)),super.setProfile(Bo(pi({},this.profile),{width:1920,height:1080}))}}applyProfile(){return KA(this,null,function*(){var e,o;if(!this.mediaTrack)return;let{width:a=0,height:c=0}=(this.sourceTrack||this.mediaTrack).getSettings(),d=a*c,C=this.settings,y=C.height!==this.profile.height||C.width!==this.profile.width||C.frameRate!==this.profile.frameRate;if(y&&(Jd===16&&this.deviceId?yield this.recapture(this.deviceId):(Sp(this.outMediaTrack)?yield(e=this.outMediaTrack)==null?void 0:e.applyConstraints({width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate}):yield(o=this.sourceTrack||this.mediaTrack)==null?void 0:o.applyConstraints({width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate}),this.manager&&this.manager.changeInput(this)),this.room&&this.settings.height>=1440&&this.state==="publish"&&this.room.sendAbilityStatus({"2k4k":1})),this.isNeedToSetBandwidth&&this.room&&this.room.setBandWidth){this.isNeedToSetBandwidth=!1;let{width:S=0,height:b=0}=(this.sourceTrack||this.mediaTrack).getSettings(),V=S*b;return y&&V&&d&&V===d?void this.log.warn("set bandwidth failed: resolution is not changed"):this.room.setBandWidth({bandwidth:this.profile.bitrate,type:YA.VIDEO,videoType:YA.BIG})}})}get settings(){let e={width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate},o=this.sourceTrack||this.mediaTrack;return ly&&o&&Object.assign(e,o.getSettings()),e}get scaleResolutionDownBy(){return this._scaleResolutionDownBy?this._scaleResolutionDownBy:d0(this.settings,this.profile)}isAllowed2k4k(e){var o;return!(this.room&&this.room.scheduleResult&&!this.isScreen&&!(e.height*e.width<3686400))||((o=this.room.scheduleResult.trtcAutoConf)==null?void 0:o["2k4k"])===1}isNeedToSwitchDevice(e){return!(!this.mediaTrack||this.deviceId===e||this.facingMode===e)}switchDevice(e){return KA(this,null,function*(){try{if(!this.isNeedToSwitchDevice(e)&&!this.isUseCustomSource)return;let o={useExactDeviceId:!0,retryWhenExactFailed:!1};e==="user"||e==="environment"?o.facingMode=e:o.deviceId=e,this.sourceTrack&&this.sourceTrack.stop(),yield this.capture(o),U.emit(sA.SWITCH_DEVICE_SUCCESS,{track:this}),this.log.info("switch camera success")}catch(o){throw this.log.error("switch camera failed ".concat(o)),this.deviceId&&this.recapture(this.deviceId),o}})}getDeviceIdWhenUsingBackCamera(){return KA(this,null,function*(){let e;try{if(Hb&&!$f&&l2){let o=(yield jp(!0)).map(c=>{var d;return Bo(pi({},c),{capabilities:(d=c.getCapabilities)==null?void 0:d.call(c)})}).filter(c=>{var d,C;return(C=(d=c.capabilities)==null?void 0:d.facingMode)==null?void 0:C.includes("environment")}),a=o[0];o.forEach(c=>{var d,C,y,S;let{capabilities:b}=c;((d=b.width)!=null&&d.max&&(C=b.height)!=null&&C.max?b.width.max*b.height.max:0)>((y=a.capabilities.width)!=null&&y.max&&(S=a.capabilities.height)!=null&&S.max?a.capabilities.width.max*a.capabilities.height.max:0)&&(a=c)}),a!=null&&a.capabilities&&(this._log.info("use max resolution back camera",a),e=a.deviceId)}}catch(o){this._log.warn("get max res camera failed",o)}return e})}updateSmallConfig(e){return KA(this,null,function*(){var o,a;this._log.info("update small stream config: ".concat(JSON.stringify(e)));let c=!this.small;this.small=this.fallbackProfile(e,!0),yield(o=this.manager)==null?void 0:o.update(),c&&(yield(a=this.room)==null?void 0:a.enableSmall(!0)),this.log.info("update small stream config success")})}fallbackProfile(e){let o=arguments.length>1&&arguments[1]!==void 0&&arguments[1],a=e.width>e.height,c=pi({},e);return e.width*e.height<=19200&&Ja&&sE&&(this.log.warn("".concat(o?"small ":"","resolution is ").concat(e.width,"*").concat(e.height,", fallback to 240*180 for android chrome")),c.width=a?240:180,c.height=a?180:240,c.bitrate=Math.max(e.bitrate,150)),e.width*e.height>921600&&Xx&&(c.width=a?1280:720,c.height=a?720:1280,this.log.warn("reset to 1280 * 720 on iOS 13~14")),Zb(TI,"14.3")&&ey(TI,"14.0",!0)&&this.on("7",()=>{let d=this.profile.width>this.profile.height;this.profile.width*this.profile.height>307200?(this.profile.width=d?640:480,this.profile.height=d?480:640,this.log.warn("reduce the resolution to 480p on iOS 14.0 ~ 14.2")):this.profile.width*this.profile.height>230400&&(this.profile.width=d?640:360,this.profile.height=d?360:640,this.log.warn("reduce the resolution to 360p on iOS 14.0 ~ 14.2"))}),!o&&this.avoidCropping&&(sE||er)&&!N0()&&e.width*e.height<=230400&&e.width/e.height===16/9&&(this._scaleResolutionDownBy=1280/e.width,c.width=1280,c.height=720,this.log.warn("capture 720p, scale: ".concat(this._scaleResolutionDownBy))),c}stopSmall(){var e,o;this.small&&(delete this.small,(e=this.manager)==null||e.update(),(o=this.room)==null||o.enableSmall(!1))}listenDeviceChange(){Pc&&!Pc.listeners("videoInputRemoved").includes(this.handleCameraRemoved)&&Pc.on("videoInputRemoved",this.handleCameraRemoved,this)}handleCameraRemoved(e){return KA(this,null,function*(){if(e.deviceId===this.deviceId){let o=this.recaptureMode===1;if(this.log.warn("RecaptureMode: ".concat(uK[this.recaptureMode],". Current camera is lost: ").concat(JSON.stringify(e))),this.recaptureMode===0){Jg(this.userId,{eventId:2003,param1:7,streamType:2});let a=yield jp();a[0]?this.recapture(a[0].deviceId):o=!0}o&&Pc.on("videoInputAdded",this.handleCameraAdded,this)}})}handleCameraAdded(e){return KA(this,null,function*(){this.recaptureMode===1&&e.deviceId!==this.deviceId||(Pc.off("videoInputAdded",this.handleCameraAdded,this),this.log.warn("camera added: ".concat(JSON.stringify(e))),this.recapture(e.deviceId))})}encodeFrame(e,o){if(!this.manager)return e;let a=o?8:this.mediaType;return this.manager.encodePipeline.reduceRight((c,d)=>d?d({frame:c,mediaType:a}):c,e)}get enableEncodeFrame(){return!!this.manager&&this.manager.encodePipeline.some(e=>e)}play(e,o){return Ye(this.mirror)&&!this.isScreen&&this.setMirror("view"),super.play(e,o)}close(){Pc.off("videoInputAdded",this.handleCameraAdded,this),Pc.off("videoInputRemoved",this.handleCameraRemoved,this),super.close()}recapture(e){return KA(this,null,function*(){try{yield RI(d_.prototype,this,"recapture").call(this,e)}catch(o){let a=(yield jp()).find(c=>c.deviceId!==e);if(!a)throw o;yield RI(d_.prototype,this,"recapture").call(this,a.deviceId)}})}setContentHint(e){this.mediaTrack&&"contentHint"in this.mediaTrack&&(this.mediaTrack.contentHint!==e&&(this.log.info("setContentHint ".concat(e)),this.mediaTrack.contentHint=e),this.outMediaTrack&&this.outMediaTrack.contentHint!==e&&(this.outMediaTrack.contentHint=e))}setRotation(e){this.manager&&(this.isScreen||Ye(e)||e!==this.rotation&&(this.rotation=e,this.manager.rotation=e))}};di([TM(function(A){this.setContentHint(A.contentHint||"motion")})],H4.prototype,"capture");var IQ=H4,q4={};Yh(q4,{REPORT_TYPE:()=>C0,buildSSOPackage:()=>ZB,bytes2ms:()=>g0,calculateScaleResolutionDownNumber:()=>d0,concatArrayBuffers:()=>zS,convertObjectNumberToInt:()=>E0,copyProperties:()=>Rx,deepClone:()=>Hf,deepCloneBasic:()=>qf,deepMerge:()=>qh,delay:()=>_C,fibonacci:()=>Yf,formatedTime:()=>Ux,getConstructorName:()=>HS,getContainerFromElement:()=>Db,getEnv:()=>Sx,getFirst16Bits:()=>Ox,getInternalVersion:()=>kx,getLast16Bits:()=>h0,getLoggerUrl:()=>Pf,getMediaStreamTrackInfo:()=>wb,getMuteStateFromFlag:()=>Dp,getNetworkType:()=>r0,getNumNetworkType:()=>xf,getReconnectionTimeout:()=>yp,getStringByteLength:()=>u0,getTestSignalDomain:()=>Mx,getTurnServer:()=>Lx,getUint32Version:()=>Mb,getValueType:()=>Cg,getViewListFromView:()=>jS,glog:()=>Tx,ipv4ToUint32:()=>KS,isArray:()=>Ra,isAudioWorkletSupported:()=>Nx,isBoolean:()=>wr,isConstructor:()=>Jf,isEmpty:()=>l0,isFunction:()=>va,isLangChinese:()=>Yd,isMediaStreamTrack:()=>fb,isNumber:()=>bn,isObject:()=>JE,isOverseaSdkAppId:()=>xd,isPlainObject:()=>oE,isPortrait:()=>Sb,isPromise:()=>Vf,isRemoteTrack:()=>yb,isRotate90Or270:()=>zB,isSetSinkIdSupported:()=>Gx,isString:()=>Yn,isUndefined:()=>Ye,isVideoMixerOutputTrack:()=>Sp,loadImage:()=>WS,loadVideo:()=>Fx,ms2bytes:()=>_x,ms2samples:()=>c0,normalizeUrl:()=>Rb,performanceNow:()=>bo,promiseAny:()=>qS,samples2ms:()=>mb,setNetworkTypeFromWebRTC:()=>a0,stringify:()=>Vd,stringifyIncludeValue:()=>I0,throttlePromise:()=>vb});var XeA=[-1,-1,1,-1,-1,1,1,1],$eA=[0,0,1,0,0,1,1,1],xk=class i3 extends Zs{constructor(e,o){if(super(),this.context=e,Y(this,"name"),Y(this,"input"),Y(this,"output"),Y(this,"texture"),Y(this,"ctx2d",null),Y(this,"fbo"),Y(this,"width",0),Y(this,"height",0),Y(this,"x",0),Y(this,"y",0),Y(this,"program"),Y(this,"vertexShader"),Y(this,"fragmentShader"),Y(this,"totalFrames",0),Y(this,"dropFrames",0),Y(this,"matchInputSize",!0),Y(this,"texCoordBuffer"),Y(this,"positionBuffer"),Y(this,"lastInfo",{name:"",timestamp:0,totalFrames:0,x:0,y:0,width:0,height:0,fps:0}),Y(this,"cost",0),Y(this,"_canvas",null),Y(this,"_image"),Y(this,"log"),this.context.on("disconnect",this.close,this),this.name=o.name,this.log=o.logger,this.matchInputSize=o.matchInputSize!==!1,this.width=o.width||e.width,this.height=o.height||e.height,this._image=o.image,e instanceof uQ)e.ctx&&o.create2d&&(typeof OffscreenCanvas=="function"&&Jd!==16?this._canvas=new OffscreenCanvas(this.width,this.height):(this._canvas=document.createElement("canvas"),this._canvas.width=this.width,this._canvas.height=this.height),this.ctx2d=this._canvas.getContext("2d"),this._image=this._canvas);else try{let a=e.ctx;this.texCoordBuffer=this.createBuffer($eA),this.positionBuffer=this.createBuffer(XeA),o.createTexture!==!1&&(this.texture=a.createTexture(),this.useTexture(),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,a.LINEAR),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MAG_FILTER,a.LINEAR),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_S,a.CLAMP_TO_EDGE),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_T,a.CLAMP_TO_EDGE),a.pixelStorei(a.UNPACK_ALIGNMENT,1)),o.useFbo&&(this.fbo=a.createFramebuffer(),this.useBufferFrame(),this.useTexture(),a.texImage2D(a.TEXTURE_2D,0,a.RGBA,this.width,this.height,0,a.RGBA,a.UNSIGNED_BYTE,null),a.framebufferTexture2D(a.FRAMEBUFFER,a.COLOR_ATTACHMENT0,a.TEXTURE_2D,this.texture,0)),o.useDefaultProgram?this.program=e.defaultProgam:(o.vertexShaderSource||o.fragmentShaderSource)&&(this.vertexShader=o.vertexShaderSource?e.createShader(a.VERTEX_SHADER,o.vertexShaderSource):e.defaultVShader,this.fragmentShader=o.fragmentShaderSource?e.createShader(a.FRAGMENT_SHADER,o.fragmentShaderSource):e.defaultFShader,this.program=e.createProgram(this.vertexShader,this.fragmentShader))}catch(a){this.context.destroy(new oi({code:lt.VIDEO_MANAGER_ERROR,extraCode:3,message:"create video node ".concat(this.name," error ").concat(a.message||a)}))}}get image(){return this._image}set image(e){this._image=e}createFramebuffer(e){let o=this.context.ctx,a=o.createFramebuffer();return o.bindFramebuffer(o.FRAMEBUFFER,a),o.framebufferTexture2D(o.FRAMEBUFFER,o.COLOR_ATTACHMENT0,o.TEXTURE_2D,e,0),a}connect(e){for(var o=arguments.length,a=new Array(o>1?o-1:0),c=1;c0&&arguments[0]!==void 0?arguments[0]:0;var o;(o=this.output)==null||o.update(e)}disconnect(){for(var e,o=arguments.length,a=new Array(o),c=0;c{d&&(e.activeTexture(e.TEXTURE0+C),e.bindTexture(e.TEXTURE_2D,d))})}useProgram(){this.context.ctx.useProgram(this.program)}useBufferFrame(){let e=this.context.ctx;e.bindFramebuffer(e.FRAMEBUFFER,this.fbo||null)}createBuffer(e){let o=this.context.ctx,a=o.createBuffer();return o.bindBuffer(o.ARRAY_BUFFER,a),o.bufferData(o.ARRAY_BUFFER,new Float32Array(e),o.STATIC_DRAW),a}setTexBuffer(e){let o=this.context.ctx;o.bindBuffer(o.ARRAY_BUFFER,this.texCoordBuffer),o.bufferData(o.ARRAY_BUFFER,new Float32Array(e),o.STATIC_DRAW)}setPosBuffer(e){let o=this.context.ctx;o.bindBuffer(o.ARRAY_BUFFER,this.positionBuffer),o.bufferData(o.ARRAY_BUFFER,new Float32Array(e),o.STATIC_DRAW)}changeBufferData(e,o){let a=this.context.ctx;a.bindBuffer(a.ARRAY_BUFFER,e),a.bufferData(a.ARRAY_BUFFER,new Float32Array(o),a.STATIC_DRAW)}setAttributes(){let e=this.context.ctx;for(var o=arguments.length,a=new Array(o),c=0;c{e.enableVertexAttribArray(C),e.bindBuffer(e.ARRAY_BUFFER,d),e.vertexAttribPointer(C,2,e.FLOAT,!1,0,0)})}getVertexPoint(e,o){return[e/this.width*2-1,o/this.height*2-1]}layout2texCoords(e){return[...this.getVertexPoint(e.x,e.y),...this.getVertexPoint(e.x+e.width,e.y),...this.getVertexPoint(e.x,e.y+e.height),...this.getVertexPoint(e.x+e.width,e.y+e.height)]}resize(e,o){if(this.width!==e||this.height!==o){if(this.width=e,this.height=o,this._canvas&&(this._canvas.width=e,this._canvas.height=o),this.texture&&this.fbo){this.useTexture();let a=this.context.ctx;a.texImage2D(a.TEXTURE_2D,0,a.RGBA,e,o,0,a.RGBA,a.UNSIGNED_BYTE,null)}this.output&&this.output.matchInputSize&&this.output.resize(e,o)}}draw(e,o){this.setAttributes(e||this.positionBuffer,o||this.texCoordBuffer);let a=this.context.ctx;a.drawArrays(a.TRIANGLE_STRIP,0,4)}draw2d(e,o,a,c,d,C,y,S,b){let V=!(Ye(C)||Ye(y)||Ye(S)||Ye(b));return!(!this.ctx2d||!e)&&(e instanceof ImageData?(V?this.ctx2d.putImageData(e,o,a,C,y,S,b):this.ctx2d.putImageData(e,o,a),this.emit(i3.RENDER,this.ctx2d.canvas)):(V?this.ctx2d.drawImage(e,C,y,S,b,o,a,c,d):this.ctx2d.drawImage(e,o,a,c,d),this.emit(i3.RENDER,e)),typeof VideoFrame<"u"&&e instanceof VideoFrame&&e.close(),!0)}drawBackGround2d(e){this.ctx2d&&(this.ctx2d.save(),this.ctx2d.fillStyle=e,this.ctx2d.fillRect(0,0,this.width,this.height),this.ctx2d.restore())}getInfo(){var e;let{totalFrames:o,x:a,y:c,width:d,height:C,name:y,cost:S}=this,b=Date.now(),V=(o-this.lastInfo.totalFrames)/((b-this.lastInfo.timestamp)/1e3)|0;return this.lastInfo={totalFrames:o,x:a,y:c,width:d,height:C,timestamp:b,fps:V,name:y,cost:S},pi({parent:(e=this.input)==null?void 0:e.getInfo()},this.lastInfo)}createTexture(e){let o=this.context.ctx,a=o.createTexture();return this.useTextures(a),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_MIN_FILTER,o.LINEAR),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_MAG_FILTER,o.LINEAR),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_S,o.CLAMP_TO_EDGE),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_T,o.CLAMP_TO_EDGE),o.pixelStorei(o.UNPACK_ALIGNMENT,1),o.texImage2D(o.TEXTURE_2D,0,o.RGBA,o.RGBA,o.UNSIGNED_BYTE,e),a}};Y(xk,"RENDER","render"),di([lc(Zs.INIT,"connected",{sync:!0})],xk.prototype,"connect"),di([lc("connected",Zs.INIT,{ignoreError:!0,sync:!0})],xk.prototype,"disconnect"),di([lc([],"closed",{sync:!0})],xk.prototype,"close");var Kd=xk,AtA=Qa(T4(250),lK(()=>performance.now()),bk()),etA=[0,1,1,1,0,0,1,0],EK=class extends Kd{constructor(A,e){super(A,Object.assign({useDefaultProgram:!0,createTexture:!1,name:"destination"},e)),Y(this,"_intervalId",0),Y(this,"_sequence",0),Y(this,"checkGLError",!1),Y(this,"checkVisibilityChange"),A instanceof uQ?this.ctx2d=A.ctx||null:A.available&&e!=null&&e.mirrorUpAndDown&&this.setTexBuffer(etA)}start(A){this.log.info("".concat(this.name," start render ").concat(A," fps")),_r.clearTask(this._intervalId),this._intervalId=_r.run("intervalInWorker",()=>{if(A!==this.context.frameRate&&(_r.clearTask(this._intervalId),this.start(this.context.frameRate)),this.requestFrame(this._sequence++),this.checkGLError&&this.context instanceof UC){let e=this.context.ctx.getError();e&&this.context.destroy(new oi({code:lt.VIDEO_MANAGER_ERROR,extraCode:5,message:"".concat(this.name," req ").concat(this._sequence," render ").concat(this.totalFrames," faild ").concat(e)}))}},{fps:this.context.frameRate})}render(A){var e;return!((e=this.input)==null||!e.requestFrame(A))&&(this.useProgram(),this.useBufferFrame(),this.useInputTexture(),this.draw(),this.emit(Kd.RENDER,this.context._canvas),!0)}addInput(A){for(var e=arguments.length,o=new Array(e>1?e-1:0),a=1;a0&&arguments[0]!==void 0?arguments[0]:0;this.state!=="closed"&&(this._intervalId&&(_r.clearTask(this._intervalId),this._intervalId=0,A===1&&(this.log.info("".concat(this.name," use requestVideoFrameCallback")),this.checkVisibilityChange=()=>{document.hidden&&(this.start(this.context.frameRate),this.log.info("".concat(this.name," use timer")),document.removeEventListener("visibilitychange",this.checkVisibilityChange))},document.addEventListener("visibilitychange",this.checkVisibilityChange))),this.requestFrame(this._sequence++))}removeInput(A){super.removeInput(A),_r.clearTask(this._intervalId)}resize(A,e){super.resize(A,e),this.context.setSize(A,e)}close(){super.close(),_r.clearTask(this._intervalId),document.removeEventListener("visibilitychange",this.checkVisibilityChange)}},dK=class extends EK{constructor(A,e){super(A,e),Y(this,"_videoTrack"),Y(this,"_muteOb"),Y(this,"_closedOb",ga(this,"closed")),Y(this,"_subscription"),Y(this,"_canvasContainer"),Number(eQ)<17&&(this._canvasContainer=document.createElement("div"),this._canvasContainer.style.display="none"),[this._videoTrack]=A.canvas.captureStream().getVideoTracks(),this._muteOb=ga(this._videoTrack,"mute"),Qa(ga(this._videoTrack,"ended"),rE(this._closedOb),hl(()=>{this.context.destroy(new oi({code:lt.VIDEO_MANAGER_ERROR,extraCode:8,message:"video track ended"}))}))}enableCheckMute(){var A;this._subscription=Qa(this._muteOb,rE(this._closedOb),_2((A=5e3,e=>{let o=performance.now();Qa(AtA,cK(a=>a-o{var e;return!((e=this._videoTrack)==null||!e.muted||document.hidden)}),hl(()=>{this.context.destroy(new oi({code:lt.VIDEO_MANAGER_ERROR,extraCode:7,message:"video track muted"}))}))}disableCheckMute(){var A;(A=this._subscription)==null||A.dispose()}get videoTrack(){return this._videoTrack}putCanvasIntoDom(){!this.context._canvas||!this._canvasContainer||document.getElementById(this.context._canvas.id)||(this.log.info("".concat(this.name," put canvas to body")),document.body.appendChild(this._canvasContainer),this._canvasContainer.appendChild(this.context._canvas))}render(A){return this.putCanvasIntoDom(),super.render(A)}render2d(A){return this.putCanvasIntoDom(),super.render2d(A)}close(){var A,e;super.close(),(A=this._videoTrack)==null||A.stop(),delete this._videoTrack,(e=this._canvasContainer)==null||e.remove()}},ttA=class extends dK{render(A){var e;let o=!((e=this.input)==null||!e.requestFrame(A));if(this.context._canvas2d){let a=this.context._canvas2d.getContext("2d");a.clearRect(0,0,this.context._canvas2d.width,this.context._canvas2d.height),a.drawImage(this.context._canvas,0,0,this.context._canvas2d.width,this.context._canvas2d.height),this.emit(Kd.RENDER,this.context._canvas2d)}else this.emit(Kd.RENDER,this.context._canvas);return o}},itA=class extends dK{constructor(A,e,o){super(A,{name:"smallDestination",logger:o}),this.resolution=e}resize(A,e){let o,a=A*e,c=this.resolution.width*this.resolution.height;this.log.info("big res: ".concat(A,"*").concat(e," small res: ").concat(this.resolution.width,"*").concat(this.resolution.height," ")),a>c?o=a/c:(this.log.warn("Small stream resolution is not smaller than big stream, which is invalid. big: ".concat(A," * ").concat(e," small: ").concat(this.resolution.width," * ").concat(this.resolution.height)),o=a/19200),super.resize(A/Math.sqrt(o),e/Math.sqrt(o))}},K4=class extends Kd{constructor(A,e){super(A,pi({name:"imageSource"},e)),Y(this,"_lastImage"),Y(this,"_totalFrames",0),Y(this,"_autoResize",!1),Y(this,"_canvasRendered"),Y(this,"videoCallbackId",0),Y(this,"waitingFirstFrame",!0),Y(this,"shouldUpdate",!0),this._autoResize=e?.autoResize!==!1,Jd===16&&(this._canvasRendered=lQ(),Qa(this._canvasRendered,nK(this._image),R2(o=>o instanceof HTMLCanvasElement?ga(o,"rendered"):gK()),rE(ga(this,"closed")),hl(()=>{this.update()})))}onFirstFrame(){this.waitingFirstFrame=!1}tryVideoFrameCallback(){if(!this.shouldUpdate)return;let A=this.image;this.videoCallbackId&&A.cancelVideoFrameCallback(this.videoCallbackId),Vp()&&!document.hidden&&(this.videoCallbackId=A.requestVideoFrameCallback((e,o)=>{this.waitingFirstFrame&&this.onFirstFrame(),document.hidden||(this._totalFrames=o.presentedFrames,this.update(1))}))}_render(A,e){var o;let{width:a,height:c}=this,{image:d}=this;if(d instanceof HTMLVideoElement){if(this.tryVideoFrameCallback(),{videoWidth:a,videoHeight:c}=d,!a||!c)return!1;d.width=a,d.height=c}else if(d instanceof HTMLImageElement||d instanceof ImageData||d instanceof ImageBitmap){if({width:a,height:c}=d,d!==this._lastImage)this._lastImage=d;else if(a===this.width&&c===this.height)return!0}else d instanceof HTMLCanvasElement||d instanceof OffscreenCanvas?({width:a,height:c}=d,this._lastImage=d):typeof VideoFrame<"u"&&d instanceof VideoFrame&&({displayWidth:a,displayHeight:c}=d,(o=this._lastImage)==null||o.close(),this._lastImage=d);if(!this._autoResize)return!0;if(this.width===a&&this.height===c&&this.totalFrames){if(e){this.useTexture();let C=this.context.ctx;C.texSubImage2D(C.TEXTURE_2D,0,0,0,C.RGBA,C.UNSIGNED_BYTE,d)}}else{if(e){this.useTexture();let C=this.context.ctx;C.texImage2D(C.TEXTURE_2D,0,C.RGBA,C.RGBA,C.UNSIGNED_BYTE,d)}this.resize(a,c)}return!0}get image(){return this._image}set image(A){var e;(e=this._canvasRendered)==null||e.next(A),this._image=A}render(A){return this._render(A,!0)}render2d(A){return this._render(A,!1)}},j4=class extends K4{constructor(A,e,o){super(A,o),this._player=e,this.name="videoPlayerSource",Qa(ga(this._player,mo.PLAYER_STATE_CHANGED),rE(ga(this,"closed")),NM(a=>{let{state:c}=a;return c==="PLAYING"}),hl(()=>{this.tryVideoFrameCallback()}))}get image(){return this._player.element}},X0=class extends j4{get available(){return this._player.isPlaying&&!this.waitingFirstFrame}constructor(A,e,o){super(A,new Mo({id:o.name,track:e,muted:!0,container:null,objectFit:"contain",log:o.logger}),o),this.name="videoTrackSource",this._player.play()}replaceTrack(A){this.waitingFirstFrame=!0,this._player.setTrack(A),this._player.play()}close(){super.close(),this._player.stop()}},otA=class extends Kd{constructor(A,e,o){super(A,Bo(pi({name:"textSource"},o),{create2d:!0})),Y(this,"hasChange",!0),Y(this,"content",""),this.ctx2d.textBaseline="top",this.content=e.content||"",e.font&&(this.font=e.font),e.color&&(this.color=e.color)}set font(A){this.ctx2d&&(this.ctx2d.font=A,this.hasChange=!0)}get font(){var A;return((A=this.ctx2d)==null?void 0:A.font)||""}set color(A){this.ctx2d&&(this.ctx2d.fillStyle=A,this.hasChange=!0)}get color(){var A;return((A=this.ctx2d)==null?void 0:A.fillStyle)||""}render2d(A){return!(!this.ctx2d||!this.hasChange)&&(this.ctx2d.clearRect(0,0,this.width,this.height),this.drawMultilineText(0,0),this.hasChange=!1,!0)}render(A){return!1}resize(A,e){if(!this.ctx2d)return;let{color:o,font:a}=this;super.resize(A,e),this.color=o,this.font=a}drawMultilineText(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1.2;if(!this.ctx2d)return;let a=this.ctx2d.measureText(this.content);e+=a.fontBoundingBoxAscent||a.actualBoundingBoxAscent||0;let c=this.font.match(/(\d+)px/),d=(c?parseInt(c[1],10):16)*o,C=this.content.split(` -`);for(let y=0;y0&&arguments[0]!==void 0&&arguments[0];if(this._canvas||(this._canvas=document.createElement("canvas"),this._canvas.id="trtc_".concat(this.name,"_").concat(Yk._ids++)),A&&(this._canvas2d=document.createElement("canvas")),this.ctx=this._canvas.getContext("webgl2",Eb),!this.ctx)throw new oi({code:lt.VIDEO_MANAGER_ERROR,extraCode:2,message:"webgl2 not supported"});this.defaultVShader=this.createShader(this.ctx.VERTEX_SHADER,` + `,o.onclick=this.onQuestionClick.bind(this);let a=document.createElement("div");a.className=Z,a.innerText="".concat(Kd()?"详情 >":"Detail >"),a.onclick=this.onCollapseClick.bind(this);let c=A.content.firstChild,d=c.querySelector(".".concat(i_));return d.appendChild(a),d.appendChild(o),d.appendChild(e),c}addDiaLog(){fi()||(Nt=!0,this._dialogNode=this.createDiaLog(),document.body.appendChild(this._dialogNode),this._dialogNode.onclick=this.onConfirm.bind(this),this._dialogNode.querySelector(".".concat(bM)).onclick=A=>A.stopPropagation(),this._bodyPosition=document.body.style.position,document.body.style.position="fixed",QA.info("show autoplay dialog"),sn.uploadEvent({log:ve}))}deleteDialog(){this._dialogNode&&(document.body.removeChild(this._dialogNode),document.body.style.position=this._bodyPosition,this._dialogNode=null,Nt=!1),Oc=null}onConfirm(){QA.warn("confirm clicked, try resume stream"),F.emit(sA.AUTOPLAY_DIALOG_CLICK_CONFIRM),this.deleteDialog()}onCollapseClick(){let A=this._dialogNode.querySelector(".".concat(bA));A.style.visibility="".concat(this._showDetail?"hidden":"visible"),A.style.height="".concat(this._showDetail?0:"fit-content"),this._showDetail=!this._showDetail,this._isCollapseClicked||sn.uploadEvent({log:Ue}),this._isCollapseClicked=!0}onQuestionClick(){window.open(wi,"_blank"),this._isQuestionClicked||sn.uploadEvent({log:st}),this._isQuestionClicked=!0}},Oc=null;function xC(){Oc||(Oc=new oa)}var Ei,vo=class v9 extends PC{constructor(e){super(e,YA.VIDEO),Y(this,"stat",{}),Y(this,"_calculateTimeout",-1),Y(this,"viewMirror",!1),Y(this,"objectFit","cover"),Y(this,"container"),Y(this,"canvas"),Y(this,"shouldRenderAlpha",!1),Y(this,"_preSize",{width:0,height:0}),Y(this,"posterImg"),Y(this,"pipWindow"),Y(this,"enterPIPPromise"),Y(this,"_originContainerPosition"),Y(this,"_isResettingSrcObject",!1),Y(this,"_wrapper",null),Y(this,"_useWrapper",!1),Y(this,"_isFirstFrameRenderEmitted",!1),this.mode=e.canvas?1:0,this.container=e.container,this.canvas=e.canvas,Je(e.viewMirror)||(this.viewMirror=e.viewMirror),Je(e.objectFit)||(this.objectFit=e.objectFit),this.initializeElement()}get isPlaying(){var e;return!(this._state!=="PLAYING"||this.element&&this.element.paused)&&((e=this.track)==null?void 0:e.readyState)==="live"&&!this.track.muted}initializeElement(){let e=document.createElement(YA.VIDEO);this.track&&this.mode!==2&&(e.srcObject=new MediaStream([this.track])),e.muted=!0,e.setAttribute("id","video_".concat(this.id)),e.setAttribute("style",this.styleAttribute),this.canvas&&this.canvas.setAttribute("style",this.styleAttribute),e.setAttribute("autoplay","autoplay"),e.setAttribute("playsinline","playsinline"),this.element=e,Ha&&(e.poster="data:,"),this._appendToWrapper(),this.bindElementEvents(),this.calculateStat(),this._bindFirstFrameRenderEvent(e)}_bindFirstFrameRenderEvent(e){let o=()=>{if(this._isFirstFrameRenderEmitted)return;this._isFirstFrameRenderEmitted=!0;let a=e.videoWidth||0,c=e.videoHeight||0;this._log.info("first frame render: ".concat(a,"x").concat(c)),this.emit(fo.FIRST_FRAME_RENDER,{width:a,height:c})};typeof e.requestVideoFrameCallback=="function"?e.requestVideoFrameCallback(o):e.addEventListener("loadeddata",o,{once:!0})}get styleAttribute(){let e=this._useWrapper?"grid-area:1/1;width:100%;height:100%;object-fit:".concat(this.objectFit,";").concat(this.shouldRenderAlpha?"":"background-color:black",";"):"width:100%;height:100%;object-fit:".concat(this.objectFit,";").concat(this.shouldRenderAlpha?"":"background-color:black",";");return this.viewMirror&&(e+="transform:scaleX(-1);"),e}setLiveMode(e){if(this._useWrapper!==e&&(this._useWrapper=e,this.elementToRender&&this.elementToRender.setAttribute("style",this.styleAttribute),this.container&&this.elementToRender))if(e){let o=this._getOrCreateWrapper();o.insertBefore(this.elementToRender,o.firstChild)}else this.container.appendChild(this.elementToRender),this._cleanupWrapper()}setContainer(e){if(this.container===e)return;let o=this._wrapper,a=this.container;this.container=e,this._pausedRetryCount=Mp,this.track&&this.elementToRender&&this._appendToWrapper(),o&&a&&a!==this.container&&o.isConnected&&o.children.length===0&&o.remove()}_getOrCreateWrapper(){if(!this.container)throw new Error("[VideoPlayer] container is required");let e=this.container.querySelector("[data-trtc-video-wrapper]");return e||(e=document.createElement("div"),e.setAttribute("data-trtc-video-wrapper","true"),e.style.cssText="display:grid;width:100%;height:100%;",this.container.appendChild(e)),this._wrapper=e,e}_appendToWrapper(e){let o=e??this.elementToRender;if(this.container&&o)if(this._useWrapper){let a=this._getOrCreateWrapper();a.insertBefore(o,a.firstChild)}else this.container.appendChild(o)}bindElementEvents(){let e=super.bindElementEvents();this.handleElementEvent=this.handleElementEvent.bind(this),this.handleFullscreenChange=this.handleFullscreenChange.bind(this),this.handleVolumeChange=this.handleVolumeChange.bind(this),e&&e.add(YA.ENTER_PICTURE_IN_PICTURE,this.handleElementEvent).add(YA.LEAVE_PICTURE_IN_PICTURE,this.handleElementEvent).add(YA.RESIZE,this.handleElementEvent),this.element&&(this.element.addEventListener(YA.FULLSCREEN_CHANGE,this.handleFullscreenChange),this.element.addEventListener("webkitbeginfullscreen",this.handleFullscreenChange),this.element.addEventListener("webkitendfullscreen",this.handleFullscreenChange),this.element.addEventListener("volumechange",this.handleVolumeChange))}handleTrackEvent(e){var o;return e.type===YA.MUTE&&((o=this.stat)!=null&&o.fps&&(this.stat.fps=0),this.isFullscreen()&&this.resetSrcObjectToReplay()),super.handleTrackEvent(e)}handleFullscreenChange(){this.isFullscreen()?(this._log.info("enter fullscreen"),this.emit(fo.ENTER_FULL_SCREEN)):(this._log.info("leave fullscreen"),this.emit(fo.LEAVE_FULL_SCREEN))}handleVolumeChange(){var e;(this.isPictureInPicture()||this.isFullscreen())&&this.emit(fo.VOLUME_CHANGE,{muted:(e=this.element)==null?void 0:e.muted})}handleElementEvent(e){var o,a,c,d,C,y;if(this.mode===2)return;super.handleElementEvent(e);let S=e.type,b=this.isPictureInPicture(),V=this.isFullscreen(),J=e.isTrusted&&(b&&Bg||V);if(S===YA.PLAYING&&J&&!this._isResettingSrcObject&&(this._log.warn("user resume in ".concat(V?"fullscreen":"pip")),this.emit(fo.USER_RESUME_IN_PIP_OR_FULL_SCREEN)),S===YA.PAUSE&&(J&&(this._log.warn("user pause in ".concat(V?"fullscreen":"pip")),this.emit(fo.USER_PAUSE_IN_PIP_OR_FULL_SCREEN)),this.container&&!this.container.isConnected&&(this._log.warn("".concat(this.kind," player has been remove, element ID: ").concat(this.container.id)),kC(500).then(()=>{var gA;(gA=this.container)!=null&&gA.isConnected&&(this._pausedRetryCount=Mp,this._log.info("view container ".concat(this.container.id," is in dom, reset pausedRetryCount")))})),this._pausedRetryCount>0&&!fi()&&!this.isPausedByUserCall&&!J&&(this._log.info("[".concat(Mp-this._pausedRetryCount+1,"/").concat(Mp,"] ").concat(this.kind," player auto resume when paused")),this.doResume(),this._pausedRetryCount--),eg&&!J&&(this._interval=Tr.run("timeout",()=>{this.element&&this._state==="PAUSED"&&!this.isPausedByUserCall&&this.doResume()},{delay:3e3})),this.stat.fps&&(this.stat.fps=0)),this.viewMirror&&this.element){let gA=this.element.style.transform;S===YA.ENTER_PICTURE_IN_PICTURE?this.element.style.transform=gA.replace("scaleX(-1)",""):S===YA.LEAVE_PICTURE_IN_PICTURE&&!gA.includes("scaleX")&&(this.element.style.transform="".concat(gA," scaleX(-1)"))}S===YA.RESIZE&&(this._preSize.height!==((o=this.element)==null?void 0:o.videoHeight)||this._preSize.width!==((a=this.element)==null?void 0:a.videoWidth))&&(this._log.info("video size changed to ".concat((c=this.element)==null?void 0:c.videoWidth,"x").concat((d=this.element)==null?void 0:d.videoHeight)),this._preSize.height=((C=this.element)==null?void 0:C.videoHeight)||0,this._preSize.width=((y=this.element)==null?void 0:y.videoWidth)||0,this.emit(fo.RESIZE,{newWidth:this._preSize.width,newHeight:this._preSize.height})),S===YA.LEAVE_PICTURE_IN_PICTURE&&(this._log.warn("exit pip"),this.isPaused&&!this.isPausedByUserCall&&(this._log.warn("resume after exit pip"),this.doResume()),this.resetSrcObjectToReplay(),this.emit(fo.LEAVE_PICTURE_IN_PICTURE)),S===YA.ENTER_PICTURE_IN_PICTURE&&this.emit(fo.ENTER_PICTURE_IN_PICTURE)}resetSrcObjectToReplay(){Ha&&oy&&this.isPlayCalled&&this.element&&this.track&&!this.isPausedByUserCall&&(this._log.warn("reset srcObject to replay for android chromium"),this._isResettingSrcObject=!0,this.element.srcObject=new MediaStream([this.track]),this.element.play().catch(e=>{this._log.warn("play failed after reset srcObject",e)}).finally(()=>{this._isResettingSrcObject=!1}))}setCanvas(e){let o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1;var a,c;this.canvas!==e&&((a=this.canvas)==null||a.remove(),e?.setAttribute("style",this.styleAttribute),this.canvas=e,this.mode=e?o:0,this.mode===2&&this.setTrack(e.captureStream().getVideoTracks()[0]),e?((c=this.element)==null||c.remove(),this._appendToWrapper(e)):this.element&&this._appendToWrapper(this.element))}setAttr(e){let o=Object.assign({autoplay:"autoplay",playsinline:"playsinline",muted:!0},e);o.style=Object.assign({width:"100%",height:"100%"},o.style),super.setAttr(o)}get mirror(){return this.viewMirror}setRect(e,o){this.elementToRender&&(this.elementToRender.style.width="".concat(e,"px"),this.elementToRender.style.height="".concat(o,"px"))}setViewMirror(e){this.elementToRender&&(this.elementToRender.style.transform=e?"scaleX(-1)":""),this.viewMirror=e}setObjectFit(e){this.elementToRender&&(this.elementToRender.style.objectFit="".concat(e)),this.objectFit=e}setPoster(e){let o=arguments.length>1&&arguments[1]!==void 0&&arguments[1];return new Promise(a=>{if(!this.element||(this._log.info("setPoster",e.slice(0,10)),e===""?this.element.removeAttribute("poster"):this.element.poster=e,!o||!Bg&&!er))return a();if(e==="")return this.removePosterImg(),a();if(this.posterImg)return a();let c=document.createElement("img");c.src=e;let d=window.getComputedStyle(this.element),C=d.objectFit||this.objectFit,y=1;if(this._useWrapper){let S=parseInt(d.zIndex,10);isNaN(S)||(y=S+1)}c.style.cssText=this._useWrapper?"grid-area:1/1;z-index:".concat(y,";width:100%;height:100%;object-fit:").concat(C,";"):"position:absolute;top:0;left:0;width:100%;height:100%;object-fit:".concat(C,";"),c.onload=()=>KA(this,null,function*(){try{c.decode&&(yield c.decode()),this.container&&!this._useWrapper&&window.getComputedStyle(this.container).position==="static"&&(this._originContainerPosition=this.container.style.position,this.container.style.position="relative"),this.posterImg=c;let S=this._useWrapper?this._wrapper:this.container;S?.appendChild(c),sM()&&zd<=17&&this.elementToRender&&(this.elementToRender.style.visibility="hidden")}catch(S){this._log.warn("decode poster image error",S)}return a()}),c.onerror=()=>(this._log.warn("load poster image error"),a())})}removePosterImg(){this.posterImg&&(sM()&&zd<=17&&this.elementToRender&&(this.elementToRender.style.visibility=""),this.posterImg.remove(),URL.revokeObjectURL(this.posterImg.src),!this._useWrapper&&this.container&&!Je(this._originContainerPosition)&&this.container.style.position==="relative"&&(this.container.style.position=this._originContainerPosition),delete this.posterImg)}get hasPoster(){var e;return!!this.posterImg||!((e=this.element)==null||!e.getAttribute("poster"))}pause(){let e=!(arguments.length>0&&arguments[0]!==void 0)||arguments[0];return KA(this,null,function*(){TI(v9.prototype,this,"pause").call(this),!this.isPictureInPicture()&&!this.hasPoster&&(oy||e&&(er||Bg))&&(yield this.setPoster(this.getVideoFrame(),!0))})}resume(){let e=arguments.length>0&&arguments[0]!==void 0&&arguments[0];return super.resume(e).then(()=>{var o;(this.posterImg||(o=this.element)!=null&&o.poster)&&this.setPoster("",!0)})}doResume(){let e=arguments.length>0&&arguments[0]!==void 0&&arguments[0];return this.isPaused&&e&&this.element&&this.track&&oy&&this.track.kind==="video"&&(this.element.srcObject=new MediaStream([this.track])),super.doResume()}stop(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;var o;this.isPictureInPicture()&&this.exitPictureInPicture().catch(a=>{}),this.isFullscreen()&&this.exitFullscreen().catch(a=>{}),this.element&&(this.element.removeEventListener(YA.FULLSCREEN_CHANGE,this.handleFullscreenChange),this.element.removeEventListener("webkitbeginfullscreen",this.handleFullscreenChange),this.element.removeEventListener("webkitendfullscreen",this.handleFullscreenChange),this.element.removeEventListener("volumechange",this.handleVolumeChange)),this._isFirstFrameRenderEmitted=!1,super.stop(e),(o=this.canvas)==null||o.remove(),this.removePosterImg(),this._useWrapper&&this._cleanupWrapper()}_cleanupWrapper(){this._wrapper&&this._wrapper.children.length===0&&this._wrapper.remove(),this._wrapper=null}play(e){if(Je(e?.isLiveStream)||this.setLiveMode(e.isLiveStream),this.element){if(this.elementToRender&&this.container)if(this._useWrapper){let o=this._getOrCreateWrapper();this.elementToRender.parentElement!==o&&o.insertBefore(this.elementToRender,o.firstChild)}else this.elementToRender.parentElement!==this.container&&this.container.append(this.elementToRender)}else this.initializeElement();return this.mode===2?Promise.resolve():super.play()}get elementToRender(){return this.canvas||this.element}setTrack(e){e!==this.track&&(this.unbindTrackEvents(),this.track=e,this.emit(fo.MEDIA_TRACK_CHANGED,e),e!==null&&(this.bindTrackEvents(),this.element&&this.mode!==2&&(this.element.srcObject=new MediaStream([e]),this.element.remove()),this._appendToWrapper()))}getVideoFrame(){if(this.canvas)return this.canvas.toDataURL("image/png");if(!this.element)return"";let e=document.createElement("canvas");return e.width=this.element.videoWidth,e.height=this.element.videoHeight,e.getContext("2d").drawImage(this.element,0,0),e.toDataURL("image/png")}getElement(){return this.element}calculateStat(){try{if(Kp()&&this.element&&this._calculateTimeout<0){let e=0,o=null,a=(c,d)=>{this.stat.width=d.width,this.stat.height=d.height,o&&(this.stat.fps=Math.round((d.presentedFrames-o.presentedFrames)/(c-e)*1e3)),e=c,o=d,this._calculateTimeout=-1,this.element&&(this._calculateTimeout=setTimeout(()=>{var C;return(C=this.element)==null?void 0:C.requestVideoFrameCallback(a)},2e3))};this.element.requestVideoFrameCallback(a)}}catch(e){this._log.warn("init stat failed",e)}}enterFullscreen(){return KA(this,null,function*(){let e=this.elementToRender;if(!e)throw this._log.warn("no element to render, cannot enter fullscreen"),new Error("No element available for fullscreen");if(eg&&this.isPictureInPicture()){this._log.info("exit pip before entering fullscreen");try{yield this.exitPictureInPicture()}catch(o){this._log.warn("exit pip failed before fullscreen:",o)}}try{if(e.requestFullscreen)yield e.requestFullscreen();else if(e.webkitRequestFullscreen)yield e.webkitRequestFullscreen();else if(e.webkitEnterFullscreen)yield e.webkitEnterFullscreen();else if(e.mozRequestFullScreen)yield e.mozRequestFullScreen();else{if(!e.msRequestFullscreen)throw new Error("Fullscreen API not supported");yield e.msRequestFullscreen()}this._log.info("entered fullscreen mode")}catch(o){throw this._log.error("failed to enter fullscreen:",o),o}})}exitFullscreen(){return KA(this,null,function*(){try{if(!this.isFullscreen())return;if(document.exitFullscreen)yield document.exitFullscreen();else if(document.webkitExitFullscreen)yield document.webkitExitFullscreen();else if(document.mozCancelFullScreen)yield document.mozCancelFullScreen();else{if(!document.msExitFullscreen)throw new Error("Exit fullscreen API not supported");yield document.msExitFullscreen()}this._log.info("exited fullscreen mode")}catch(e){throw this._log.error("failed to exit fullscreen:",e),e}})}isFullscreen(){let e=this.elementToRender;return!!e&&(this.element&&this.element.webkitDisplayingFullscreen?!this.isPictureInPicture():(document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement)===e)}toggleFullscreen(){return KA(this,null,function*(){this.isFullscreen()?yield this.exitFullscreen():yield this.enterFullscreen()})}enterPictureInPicture(){return KA(this,null,function*(){this.enterPIPPromise=this._enterPictureInPicture();try{return yield this.enterPIPPromise}finally{delete this.enterPIPPromise}})}_enterPictureInPicture(){return KA(this,null,function*(){try{if(!this.element)throw new Error("No video element available for pip");if(this.canvas&&this.mode!==1)throw new Error("pip is not supported for canvas-only mode");let{element:e}=this;if(e.requestPictureInPicture){this._log.info("requestPictureInPicture");let o=yield e.requestPictureInPicture();return this.pipWindow=o,this._log.info("entered pip mode"),this.elementToRender===this.canvas&&(this.canvas.remove(),this._appendToWrapper(this.element)),o}if(e.webkitSetPresentationMode)return this._log.info("webkitSetPresentationMode"),yield e.webkitSetPresentationMode("picture-in-picture"),this._log.info("entered pip mode (webkit)"),{};throw new Error("pip API not supported")}catch(e){throw this._log.error("failed to enter pip:",e.name,e.message),e}})}exitPictureInPicture(){return KA(this,null,function*(){var e;try{if(!this.isPictureInPicture())return;if(delete this.pipWindow,document.pictureInPictureElement&&document.exitPictureInPicture)yield document.exitPictureInPicture(),this.elementToRender===this.canvas&&((e=this.element)==null||e.remove(),this._pausedRetryCount=Mp,this._appendToWrapper(this.canvas)),this._log.info("exited pip mode");else{if(!this.element||!this.element.webkitSetPresentationMode)throw new Error("Exit pip API not supported or not in PiP mode");yield this.element.webkitSetPresentationMode("inline"),this._log.info("exited pip mode (webkit)")}}catch(o){throw this._log.error("failed to exit pip:",o),o}})}isPictureInPicture(){if(!this.element)return!1;let{element:e}=this;return document.pictureInPictureElement?document.pictureInPictureElement===e:!!e.webkitPresentationMode&&e.webkitPresentationMode==="picture-in-picture"}togglePictureInPicture(){return KA(this,null,function*(){this.isPictureInPicture()?yield this.exitPictureInPicture():yield this.enterPictureInPicture()})}};function Vg(A,e){return KA(this,null,function*(){if(!A.audioWorklet)return Promise.reject("audioWorklet is not supported");try{yield A.audioWorklet.addModule(e),QA.info("worklet addModule success")}catch(o){throw QA.info("worklet addModule catch error. ".concat(o.message)),o}})}typeof AudioContext<"u"?Ei=AudioContext:typeof webkitAudioContext<"u"?Ei=webkitAudioContext:typeof mozAudioContext<"u"&&(Ei=mozAudioContext);var Ln,Eu=1500,Xd=-1,zp=0,od=-1,LI=!1,x2=0,o_=-1,qk=-1;(function A(){try{if(Ln)return;(Ln=new Ei({sampleRate:48e3})).onstatechange=()=>{QA.info("context state: ".concat(Ln.state).concat(Ln.state!=="running"?" visibilityState: ".concat(document.visibilityState):"")),s_()},clearTimeout(Xd)}catch(e){QA.error("initAudioContext failed: ".concat(e," typeof AudioContextClass: ").concat(typeof Ei)),Xd=setTimeout(A,1e3)}})();var s_=()=>{Ln.state==="suspended"?(zp=ko(),od===-1&&(od=setTimeout(()=>{Ln.state==="suspended"&&(LI=!0,F.emit("155",{isSuspended:!0}))},Eu)),Kk(),document.addEventListener("click",s_)):Ln.state==="interrupted"?Kk():(zp&&(Ai.addNumber({key:507800,value:ko()-zp,split:[0,500,1e3,1500,2e3,3e3,4e3,5e3,1e4,3e4],max:6e4}),zp=0),od!==-1&&(clearTimeout(od),od=-1,LI&&(LI=!1,F.emit("155",{isSuspended:!1}))),document.removeEventListener("visibilitychange",s_),document.removeEventListener("click",s_))},vK=0,RK=-1;function Kk(){return new Promise((A,e)=>{if(Ln.state==="running")return A();Date.now()-vK<1e3?(clearTimeout(RK),RK=setTimeout(()=>{vK=Date.now(),Ln.resume().then(A,e)},1e3)):(clearTimeout(RK),vK=Date.now(),Ln.resume().then(A,e))}).catch(A=>{QA.warn("context resume failed: ".concat(A)),document.addEventListener("visibilitychange",s_)})}document.addEventListener("click",s_);var UI=A=>Ln,FI=class{constructor(A){this.name=A,Y(this,"node"),Y(this,"node2"),Y(this,"pre",new Set),Y(this,"next",new Set),Y(this,"context"),Y(this,"connectedNodes",new Set),Y(this,"nextInputChannelMap",new Map),Y(this,"_channelCount",1)}get channelCount(){return this._channelCount}set channelCount(A){this._channelCount=A,this.setChannelCount(this.node,A),this.setChannelCount(this.node2,A),this.next.forEach(e=>e.channelCount=A)}setChannelCount(A,e){!A||A instanceof ScriptProcessorNode||(A.channelCountMode="explicit",A.channelCount=e||this.channelCount||1)}setContext(A){this.context=A,this.node&&A.addMixWeight()}removeContext(){var A;this.node&&((A=this.context)==null||A.reduceMixWeight()),delete this.context}replaceNode(A){var e;if(A!==this.node)try{this.node?this._disconnect():(e=this.context)==null||e.addMixWeight(),this.node=A,this.setChannelCount(this.node),this.preNodeReconnect(),this.reconnect()}catch(o){QA.error(o)}}setNode(A,e){var o;if(!this.node)try{(o=this.context)==null||o.addMixWeight(),this.node=A,this.setChannelCount(this.node),e&&(this.node2=e,this.setChannelCount(this.node2)),this.preNodeReconnect(),this.reconnect(),Ai.addSuccessEvent({key:502701})}catch(a){QA.error(a),Ai.addFailedEvent({key:502701,error:a})}}deleteNode(){var A;if(this.node)try{this._disconnect(),delete this.node,delete this.node2,(A=this.context)==null||A.reduceMixWeight(),this.preNodeReconnect(),Ai.addSuccessEvent({key:502702})}catch(e){QA.error(e),Ai.addFailedEvent({key:502702,error:e})}}preNodeReconnect(){this.pre.forEach(A=>{A.node?A.reconnect():A.preNodeReconnect()})}connectNext(A){this.next.forEach(e=>{let o=this.nextInputChannelMap.get(e);A._connect(e.node,o)||e.connectNext(A)})}_connect(A){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return!(!this.node||!A)&&((this.node2||this.node).connect(A,0,e),this.connectedNodes.add(A),!0)}_disconnect(){this.connectedNodes.forEach(A=>{var e;return(e=this.node2||this.node)==null?void 0:e.disconnect(A)}),this.connectedNodes.clear()}reconnect(){this._disconnect(),this.connectNext(this)}pipeTo(A){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return this.next.add(A),A.pre.add(this),this.nextInputChannelMap.set(A,e),A}},geA=class extends FI{constructor(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:256;super(),this.fftSize=A,Y(this,"dataArray",new Uint8Array(0))}setNode(A){A.fftSize=this.fftSize,this.dataArray=new Uint8Array(A.frequencyBinCount),super.setNode(A)}getByteTimeDomainData(){var A;return(A=this.node)==null||A.getByteTimeDomainData(this.dataArray),this.dataArray}get level(){var A;return(A=this.node)==null||A.getByteTimeDomainData(this.dataArray),Math.max(...this.dataArray)/128-1}get timeDomainPathData(){let A=this.getByteTimeDomainData(),e=0,o=0,a="M".concat(e,",").concat(o);for(let c=0;c0&&arguments[0]!==void 0?arguments[0]:1;this.mixWeight+=A,this.mixWeight-1==A+1>>1&&this.mixOnChange()}reduceMixWeight(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:1;this.addMixWeight(-A)}close(){this.inputs.forEach(A=>A.remove())}get mixTrack(){return this.destination.stream.getAudioTracks()[0]}},q4=new WeakMap;function Y2(A){try{let e=q4.get(A);if(e)return e;let o=UI();if(A instanceof HTMLAudioElement)e=o.createMediaElementSource(A);else{if(!(A instanceof MediaStreamTrack))return A;e=o.createMediaStreamSource(new MediaStream([A]))}return q4.set(A,e),e}catch(e){if(!(er&&e instanceof Error&&e.name==="NotSupportedError"))throw e;QA.warn(e)}}var V2=class om{constructor(e){Y(this,"_volume",0),Y(this,"_volumeDb",0),Y(this,"_log"),Y(this,"_scriptProcessorNode",null),Y(this,"_audioWorkletNode",null),Y(this,"_interval",200),Y(this,"ready",this.preload());let{log:o}=e;this._log=o,F.on(sA.AUDIO_LEVEL_INTERVAL,this.handleAudioLevelInterval,this)}static get isRunning(){return Date.now()-om.lastMessageTime<2e3}get node(){return this._audioWorkletNode||this._scriptProcessorNode}preload(){if(!om.workletReady){let e='class VolumeMeterWorklet extends AudioWorkletProcessor{constructor(){super(),this.volume=0,this.intervalTime=200,this.tick=200,this.isStop=!1,this.cache=[],this.sentFirstInfo1=!1,this.unmute=!1,this.port.onmessage=t=>{var e=t.data;switch(e.name){case"chunk":this.cache.push(...e.data),this.sentFirstInfo1||(this.port.postMessage({cl:e.data.length}),this.sentFirstInfo1=!0);break;case"setIntervalTime":this.intervalTime=e.intervalTime;break;case"unmute":this.unmute=!0;break;case"stop":this.isStop=!0}}}process(t,s){t=t[0],s=s[0];if(t||s){if(this.isStop)return!1;var i=s&&s[0]?s[0].length:0,h=this.cache.length,a=(it+e*e,0)/a.length;this.volume=e,this.tick-=a.length,this.tick<0&&(this.tick+=this.intervalTime/1e3*sampleRate,this.port.postMessage({volume:this.volume,volumeDb:Math.max(10*Math.log10(s)+100,0)/100,cacheLen:h,outputLen:i}))}}return!0}}registerProcessor("volume-meter",VolumeMeterWorklet);';om.workletReady=Vg(om.audioContext,URL.createObjectURL(new Blob([e],{type:"application/javascript"})))}return om.workletReady.then(()=>this.initAudioWorklet()).catch(e=>(this._log.error("volumeMeter preload error: ".concat(e)),this.initScriptProcessor()))}initAudioWorklet(){if(!this._audioWorkletNode)try{this._audioWorkletNode=new AudioWorkletNode(om.audioContext,"volume-meter");let e=!1;this._audioWorkletNode.port.onmessage=o=>{om.lastMessageTime=Date.now(),this._volume=o.data.volume||0,this._volumeDb=o.data.volumeDb||0,!e&&o.data.cacheLen&&o.data.outputLen&&(this._log.warn("worklet play success"),e=!0)},this.handleAudioLevelInterval({interval:this._interval})}catch(e){this._log.error("volumeMeter init audio worklet error: ".concat(e)),sn.logFailedEvent({userId:this._log.userId,eventType:Ja.LOAD_WORKLET,error:e}),this.initScriptProcessor()}}initScriptProcessor(){if(!this._scriptProcessorNode)try{this._scriptProcessorNode=UI().createScriptProcessor(2048,1,1),this._scriptProcessorNode.onaudioprocess=e=>{om.lastMessageTime=Date.now();let o=e.inputBuffer.getChannelData(0),a=0;for(let c=0;c>2);A.copyTo(o,{planeIndex:0}),this.node.port.postMessage({name:"chunk",data:o},[o.buffer]),A.close()}}},J2=K4,leA=gc(ql(),1),W4=A=>e=>e.deviceId===A,wK=class{constructor(A,e){Y(this,"kind"),Y(this,"type"),Y(this,"devices",[]),this.kind=A,this.type=e}update(A,e){let o=A.filter(a=>a.kind==="".concat(this.kind).concat(this.type.toLocaleLowerCase()));this.devices.length===1&&jk(this.devices[0])||e&&(o.forEach(a=>{if(a.deviceId&&!this.devices.find(W4(a.deviceId))){let c="".concat(this.kind).concat(this.type,"Added");QA.warn("".concat(c,": ").concat(JSON.stringify(a))),e.emit(c,a)}}),this.devices.forEach(a=>{if(a.deviceId&&!o.find(W4(a.deviceId))){let c="".concat(this.kind).concat(this.type,"Removed");QA.warn("".concat(c,": ").concat(JSON.stringify(a))),e.emit(c,a)}})),this.devices=o}hasDevice(A){return!!this.devices.find(e=>e.deviceId===A)}},IeA=class extends leA.EventEmitter{constructor(){super(),Y(this,"audioInputs",new wK(YA.AUDIO,"Input")),Y(this,"videoInputs",new wK(YA.VIDEO,"Input")),Y(this,"audioOutputs",new wK(YA.AUDIO,"Output")),this.init(),navigator.mediaDevices&&(navigator.mediaDevices.addEventListener&&navigator.mediaDevices.addEventListener("devicechange",()=>this.update()),"ondevicechange"in navigator.mediaDevices||Tr.run("interval",()=>{this.update()},{delay:1e4}))}init(){H2().then(A=>{this.audioInputs.update(A),this.videoInputs.update(A),this.audioOutputs.update(A)})}update(){return KA(this,arguments,function(){var A=this;let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return function*(){let o=yield H2(e);return A.audioInputs.update(o,A),A.videoInputs.update(o,A),A.audioOutputs.update(o,A),A}()})}hasBlueTooth(){var A;if(1e3*((A=UI())==null?void 0:A.outputLatency)>150)return!0;let e=["bluetooth","air","wireless","bt","tws","buds","headset","headphone"];return this.audioOutputs.devices.some(o=>e.some(a=>o.label.toLowerCase().includes(a)))||this.audioInputs.devices.some(o=>e.some(a=>o.label.toLowerCase().includes(a)))}},Pc=A0||$w?null:new IeA;function jk(A){return A.deviceId===A.groupId&&A.groupId===""}function H2(){return KA(this,arguments,function(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return function*(){if(uu()||!Mk())return[];let e=yield navigator.mediaDevices.enumerateDevices();if(A!==0){let o={audio:!1,video:!1};if(e.forEach(a=>{jk(a)&&(a.kind===YA.AUDIO_INPUT?o.audio=!0:a.kind===YA.VIDEO_INPUT&&(o.video=!0))}),A===2&&(o.audio=!1),A===1&&(o.video=!1),o.audio||o.video){let a;try{a=yield navigator.mediaDevices.getUserMedia(o),o.audio&&Kk()}catch(c){QA.debug("capture before getDevices failed: ",c)}e=yield navigator.mediaDevices.enumerateDevices(),a?.getTracks().forEach(c=>c.stop())}}return e.map((o,a)=>{let c={kind:o.kind,deviceId:o.deviceId,groupId:o.groupId,label:o.label||"".concat(o.kind,"_").concat(a)};return o.deviceId.length>0&&_K.add("".concat(o.deviceId,"_").concat(o.kind)),o.getCapabilities&&(c.getCapabilities=()=>o.getCapabilities()),c})}()})}function Zp(){let A=arguments.length>0&&arguments[0]!==void 0&&arguments[0];return Pc.update(A?1:0).then(e=>e.audioInputs.devices)}function Xp(){let A=arguments.length>0&&arguments[0]!==void 0&&arguments[0];return Pc.update(A?2:0).then(e=>e.videoInputs.devices)}var z4=!1;function UM(){let A=arguments.length>0&&arguments[0]!==void 0&&arguments[0];return KA(this,null,function*(){return(eg||Bg)&&(A=!1),Pc.update(A?1:0).then(e=>e.audioOutputs.devices)})}var _K=new Set;function Z4(A,e){return KA(this,null,function*(){let o=(yield Zp()).find(a=>a.deviceId===qS);return!e&&o?.groupId===A||o?.groupId===A&&o.label===e})}var q2,ueA=class extends J4{constructor(A){super(),this.log=A,Y(this,"volumeMeter"),Y(this,"volumeMeterAfter3A"),Y(this,"volumeDestination"),Y(this,"analyser",new geA),this.volumeMeter=new j4({log:this.log}),this.volumeMeterAfter3A=new j4({log:this.log}),this.volumeDestination=new FI,this.volumeMeter.pipeTo(this.volumeDestination)}destroy(){this.gain.deleteNode(),this.volumeMeter.deleteNode(),this.analyser.deleteNode(),this.source.deleteNode(),this.destination.deleteNode(),this.volumeDestination.deleteNode()}},TK=class R9 extends PC{constructor(e){super(e,YA.AUDIO),Y(this,"_outputDeviceId"),Y(this,"_floatVolume",1),Y(this,"_destination"),Y(this,"pipeline"),Y(this,"volumeMeterMode","worklet"),Y(this,"enableVolumeControlInIOS"),this.enableVolumeControlInIOS=e.enableVolumeControlInIOS,this.mode=0,e.url&&(this.url=e.url),this.pipeline=new ueA(this._log)}setTrack(e){}get duration(){var e;return Math.floor(1e3*(((e=this.element)==null?void 0:e.duration)||0))}get currentTime(){var e;return Math.floor(1e3*(((e=this.element)==null?void 0:e.currentTime)||0))}set currentTime(e){this.element&&(this.element.currentTime=e/1e3)}getMediaStream(){return this.pipeline.stream||(this.track?new MediaStream([this.track]):null)}initializeElement(e){if((bI==="15.2"||bI==="15.3"||bI==="15.4")&&this.muted)return void this._log.info("audioElement is muted.");this._log.info("audio player initializeElement");let o=q2||new Audio;o.setAttribute("autoplay","autoplay"),o.srcObject=this.getMediaStream(),o.muted=this.muted,this.url&&(o.crossOrigin="anonymous",o.src=this.url),this.element=o,this.setVolume(bn(e)?e/100:this._floatVolume),o===q2&&(q2=void 0),this.options.enableTimeupdateEvent&&(this.element.ontimeupdate=()=>this.emit(fo.TIME_UPDATE,this.currentTime)),this.bindElementEvents()}play(e){return KA(this,null,function*(){if(this.track||this.url){try{!this.pipeline.source.node&&this.track&&this.pipeline.replaceSource(this.track),this.element||this.initializeElement(e?.volume),this._outputDeviceId&&(yield this.setSinkId(this._outputDeviceId)),this.volumeMeterMode==="worklet"?(this.pipeline.volumeMeter.init(),this.pipeline.volumeMeterAfter3A.init()):this.volumeMeterMode==="analyser"&&this.pipeline.analyser.setNode(UI().createAnalyser()),function(){KA(this,null,function*(){try{z4||(z4=!0,QA.info("speakers:".concat((yield UM()).map(o=>" ".concat(o.deviceId.slice(0,8),": ").concat(o.label)))))}catch{}})}()}catch(o){throw this._log.warn("audio play error: ".concat(o)),sy(bI,"18.7",!0)&&this.bindAutoPlayEvent(),o}return TI(R9.prototype,this,"play").call(this)}})}stop(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;this.pipeline.destroy(),super.stop(e)}setVolume(e){this._floatVolume=e,this.element&&(this.element.volume=e)}setSinkId(e){return KA(this,null,function*(){var o,a;this._outputDeviceId!==e&&(this._outputDeviceId=e),this.element&&this.element.sinkId!==e&&(yield(a=(o=this.element).setSinkId)==null?void 0:a.call(o,e))})}get useDestination(){return!!this.pipeline.stream}setLoop(e){this.element&&(this.element.loop=e)}getAudioLevel(){return this.pipeline.volumeMeter.getCalculatedVolume()}getInternalAudioLevel(){return this.pipeline.volumeMeter.getInternalAudioLevel()}getInternalAudioLevelAfter3A(){return this.pipeline.volumeMeterAfter3A.getInternalAudioLevel()}},EeA=class extends TK{setTrack(A){this.track!==A&&(this.unbindTrackEvents(),this.track=A,this.emit(fo.MEDIA_TRACK_CHANGED,A),A&&(this.bindTrackEvents(),this.element&&(this.element.srcObject=new MediaStream([A]))))}},X4=class extends TK{constructor(A){super(A),Y(this,"_sourceElement"),Y(this,"_output",new FI),this.pipeline.source.pipeTo(this.pipeline.gain),this.pipeline.gain.pipeTo(this.pipeline.volumeMeter).pipeTo(this._output),this.pipeline.gain.pipeTo(this.pipeline.destination)}setOutput(){this.mode=1,this._output.setNode(UI().destination)}write(A){this.pipeline.volumeMeter.write(A)}setTrack(A){var e,o,a;((o=(e=this.element)==null?void 0:e.error)==null?void 0:o.code)!==MediaError.MEDIA_ERR_DECODE&&this.track!==A&&(this.unbindTrackEvents(),this.track=A,this.emit(fo.MEDIA_TRACK_CHANGED,A),A?(this.bindTrackEvents(),this._sourceElement?this._sourceElement.srcObject=new MediaStream([A]):!this.useDestination&&this.element&&(this.element.srcObject=new MediaStream([A])),this.pipeline.source.channelCount=((a=A.getSettings())==null?void 0:a.channelCount)||1,this.pipeline.replaceSource(A)):this.pipeline.source.deleteNode())}setVolume(A){var e;let o=A<=1&&!sM();if(this._floatVolume!==A||!(o&&((e=this.element)==null?void 0:e.volume)===A||!o&&this.pipeline.volume===A))if(this._floatVolume=A,this.useDestination)this.pipeline.setVolume(A),this._log.info("set pipeline volume: ".concat(A));else if(o)this.element?(this._log.info("set element volume: ".concat(A)),this.element.volume=A):this._log.info("set element volume: no element");else{if(sM()){if(!this.enableVolumeControlInIOS)return;(function(){if(!eg||qk!==-1)return;let a=()=>{ko()-x2<500||(Ln&&Ln.state==="running"&&Ln.currentTime===o_&&(QA.warn("context is fake running, auto resume"),Ln.suspend().catch(c=>{QA.warn("context suspend failed: ".concat(c))})),o_=Ln.currentTime,x2=ko())};qk=setInterval(()=>{a()},2e3),document.addEventListener("visibilitychange",()=>{document.visibilityState==="visible"&&a()})})()}if(er&&!this.pipeline.source.node)return void this._log.warn("set pipeline volume failed: no source node");this._log.info("start set pipeline volume: ".concat(A)),this.pipeline.setVolume(A),this.element&&!this._sourceElement&&(this._destination||(this._destination=UI().createMediaStreamDestination()),this.pipeline.destination.setNode(this._destination),kn(this.element),this._sourceElement=this.element,this._sourceElement.muted=!0,this.element=null,this.play().catch(a=>{this.emit(fo.AUTOPLAY_FAILED,a)}))}}stop(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;this.pipeline.destroy();let e=this._sourceElement||this.element;e&&Up&&(q2=e),this._sourceElement&&(this._sourceElement.srcObject=null,delete this._sourceElement),super.stop(A)}},NK=class extends Zs{constructor(A){let{userId:e,sdkAppId:o,mediaType:a,room:c,PlayerClass:d=a===1?X4:vo}=A;var C;super(),Y(this,"id",PA()),Y(this,"userId",""),Y(this,"isRemote"),Y(this,"mediaType"),Y(this,"room"),Y(this,"user"),Y(this,"_log"),Y(this,"_inputTrack"),Y(this,"_outputTrack"),Y(this,"isPlayCalled"),Y(this,"container",null),Y(this,"player"),Y(this,"subVideoPlayerMap"),Y(this,"muted",!1),Y(this,"abortCtrl"),Y(this,"objectFit","cover"),Y(this,"mirror"),Y(this,"rotation"),Y(this,"isScreen",!1),Y(this,"manager"),Y(this,"trackSettings"),Y(this,"isFirstVideoFrameEmitted",!1),this.userId=e||"",this.mediaType=a,this._log=QA.createLogger({parent:c?.getLogger(),id:"".concat(this.kind[0],"t"),userId:(C=c||this.room)==null?void 0:C.userId,remoteUserId:this instanceof eL?void 0:this.userId,sdkAppId:o,type:this.mediaType===2?"auxiliary":"main",isLocal:this instanceof eL}),this.player=new d({id:this.userId||this.id,track:null,muted:!1,container:null,log:this._log,enableVolumeControlInIOS:c?.enableVolumeControlInIOS}),this.player.on(fo.PLAYER_STATE_CHANGED,y=>{if(F.emit(sA.PLAYER_STATE_CHANGED,mi({track:this},y)),this.emit("player-state-changed",y),y.state==="PLAYING"&&this.room){let S=!0;for(let{remoteAudioTrack:b,remoteVideoTrack:V,remoteAuxiliaryTrack:J}of[...this.room.remotePublishedUserMap.values()])if(b.isAvailable&&!b.player.isPlaying||V.isAvailable&&!V.player.isPlaying||J.isAvailable&&!J.player.isPlaying){S=!1;break}S&&fi()&&Oc&&Oc.deleteDialog()}}),this.kind===YA.VIDEO&&(this.player.on(fo.LOADED_DATA,()=>{this.emitFirstVideoFrameEvent(fo.LOADED_DATA),F.emit(sA.VIDEO_LOADED_DATA,{track:this})}),this.player.on(fo.LOADED_META_DATA,()=>{this.emitFirstVideoFrameEvent(fo.LOADED_META_DATA)}),this.player.on(fo.MEDIA_TRACK_CHANGED,y=>{var S;(S=this.subVideoPlayerMap)==null||S.forEach(b=>b.setTrack(y))}),this.player.on(fo.RESIZE,y=>{this.emitFirstVideoFrameEvent(fo.RESIZE),this.emit("video-size-changed",mi({userId:this.userId,streamType:this.mediaType===2?"auxiliary":"main"},y))}),this.player.on(fo.FIRST_FRAME_RENDER,y=>{this.emit("first-frame-render",Qo(mi({},y),{streamType:this.streamType,userId:this.isRemote?this.userId:""}))})),this.onTrackMuted=this.onTrackMuted.bind(this),this.onTrackUnmuted=this.onTrackUnmuted.bind(this),this.onTrackEnded=this.onTrackEnded.bind(this),this.onPlayerError&&this.player.on(fo.ERROR,this.onPlayerError.bind(this)),this.player.on(fo.AUTOPLAY_FAILED,this.handleAutoPlayFailed,this)}get log(){return this._log||QA}get kind(){return this.mediaType===1?YA.AUDIO:YA.VIDEO}get isAudio(){return this.kind===YA.AUDIO}get strMediaType(){return this.mediaType===4?YA.VIDEO:this.mediaType===2?YA.SCREEN:YA.AUDIO}get streamType(){return 2&this.mediaType?"auxiliary":"main"}get isMediaTrackActive(){return!!this.mediaTrack&&!this.mediaTrack.muted&&this.mediaTrack.readyState==="live"&&this.mediaTrack.enabled}play(A,e){return KA(this,null,function*(){let o=wa(A)?A[0]:A;if(this.isPlayCalled)return this.log.info("play update options: ".concat(JSON.stringify(e))),e&&!Je(e.muted)&&this.setPlayerMute(e.muted),e&&!Je(e.objectFit)&&(this.objectFit=e.objectFit),void(this.player instanceof vo&&(this.player.setObjectFit(this.objectFit),this.container!==o&&o&&(wa(A)&&A.length>=1&&this.container&&A.includes(this.container)&&this.container.contains(this.player.elementToRender)?(A.splice(A.indexOf(this.container),1),A.unshift(this.container)):(this.container=o,this.player.setContainer(o))),wa(A)&&A.length>=1&&(yield this.playSubContainer(A.slice(1),e))));if(e&&!Je(e.muted)?this.setPlayerMute(e.muted):(!this.isRemote||this.kind===YA.VIDEO)&&this.setPlayerMute(!0),e&&!Je(e.objectFit)&&(this.objectFit=e.objectFit),this.player instanceof vo&&(Je(e?.isLiveStream)||this.player.setLiveMode(e.isLiveStream),this.player.setObjectFit(this.objectFit),e&&!Je(e.poster)&&this.player.setPoster(e.poster)),this.isPlayCalled=!0,o&&(this.container=o,this.player instanceof vo&&this.player.setContainer(o)),F.emit(sA.PLAY_TRACK_START,{track:this}),this._outputTrack){this._log.info("play with options: ".concat(JSON.stringify(e)));try{this.player.setTrack(this.playerMediaTrack),yield this.player.play(e),wa(A)&&A.length>1&&(yield this.playSubContainer(A.slice(1),e))}catch(a){throw this.handleAutoPlayFailed(a),a}}else this.log.info("play has not mediaTrack, abort")})}setMirror(A,e){if(this.isScreen||this.kind!==YA.VIDEO||Je(A)||A===this.mirror)return;this.mirror=A;let o=this.player;e&&(o=e);let a=this.manager;if(_r(this.mirror))return o.setViewMirror(this.mirror),void(!this.isRemote&&a&&(a.mirror=!1));switch(this.mirror){case"view":a&&(a.mirror=!1),o.setViewMirror(!0);break;case"publish":a&&(a.mirror=!0),o.setViewMirror(!0);break;case"both":a&&(a.mirror=!0),o.setViewMirror(!1)}}playSubContainer(A,e){return KA(this,null,function*(){if(!this._outputTrack||this.kind===YA.AUDIO)return;this.subVideoPlayerMap||(this.subVideoPlayerMap=new Map),this.subVideoPlayerMap.forEach((a,c)=>{var d;A.find(C=>c===C)||(a.stop(),(d=this.subVideoPlayerMap)==null||d.delete(c))});for(let[a,c]of A.entries()){let d=this.subVideoPlayerMap.get(c);d?e&&(Je(e.objectFit)||d.setObjectFit(e.objectFit)):this.subVideoPlayerMap.set(c,new vo({id:this.userId||this.id,track:this.playerMediaTrack,container:c,muted:this.player.muted,objectFit:this.objectFit,log:this.log.createChild({id:"vp-sub".concat(a+1)})}))}let o=[...this.subVideoPlayerMap.values()];for(let a of o)a.setViewMirror(this.player.mirror),yield a.play()})}setAudioOutput(A){return this.player.setSinkId(A)}setAudioVolume(A){this.player.setVolume(A)}getAudioLevel(){return this.player.getAudioLevel()||0}getInternalAudioLevel(){var A;return((A=this.player)==null?void 0:A.getInternalAudioLevel())||0}stop(){let A=arguments.length>0&&arguments[0]!==void 0&&arguments[0];this.isPlayCalled&&(this.isPlayCalled=!1,this.isFirstVideoFrameEmitted=!1,this.player&&(this.log.info("stop ".concat(this.kind," player")),this.player.stop(jb(this)&&!A?this.jitterBufferDelay:0)),this.subVideoPlayerMap&&this.subVideoPlayerMap.size>0&&this.subVideoPlayerMap.forEach(e=>{e.stop()}),this.container=null)}resume(){return KA(this,null,function*(){var A;this.isPlayCalled&&(yield(A=this.player)==null?void 0:A.resume())})}close(){this._toInitState(),this.log.info("close"),this.isPlayCalled&&this.stop(!0)}_toInitState(){}setMute(A){this.muted=A,this._inputTrack&&(this._inputTrack.enabled=!A),this._outputTrack&&(this._outputTrack.enabled=!A),this.emit(A?"mute":"unmute",this),F.emit(A?sA.TRACK_MUTED:sA.TRACK_UNMUTED,{track:this})}setPlayerMute(A){this.player.setMuted(A)}get mediaTrack(){return this._inputTrack||null}get outMediaTrack(){return this._outputTrack||null}get playerMediaTrack(){return this.outMediaTrack}installTrackEvent(A){id(A,A).add(YA.MUTE,this.onTrackMuted).add(YA.UNMUTE,this.onTrackUnmuted).add(YA.ENDED,this.onTrackEnded),A.muted&&this.onTrackMuted(),A.readyState===YA.ENDED&&this.onTrackEnded()}uninstallTrackEvent(A){kn(A)}setInputMediaStreamTrack(A){var e;let o=this._inputTrack;if(A!==o)return this._inputTrack=A,this.trackSettings=(e=A.getSettings)==null?void 0:e.call(A),A.enabled=!this.muted,o&&this.uninstallTrackEvent(o),this.installTrackEvent(A),this.emit("input-media-track-changed",A||null,o||null),this.manager?this.manager.changeInput(this):this.setOutputMediaStreamTrack(A)}setOutputMediaStreamTrack(A){var e;let o=this._outputTrack;this instanceof EQ&&wp(o)||A!==o&&(this.isRemote?this.log.debug("setOutputMediaStreamTrack",A.label):this.log.info("setOutputMediaStreamTrack",(e=A.getSettings)==null?void 0:e.call(A).deviceId,A.label),this._outputTrack=A,this._inputTrack&&(this._outputTrack.contentHint=this._inputTrack.contentHint,this._outputTrack.enabled=this._inputTrack.enabled),this.updatePlayingState(!!A),this.emit("output-media-track-changed",A))}setMediaType(A){this.mediaType=A}updatePlayingState(A){var e,o;if(this.isPlayCalled){if(A){if(this.player.setTrack(this.playerMediaTrack),this.player.isStopped)return this.player.play().catch(a=>this.handleAutoPlayFailed(a)),void this.log.info("playing state updated, play ".concat(this.kind))}else if(!this.player.isStopped)return jb(this)&&this.isAudio&&(e=this.user)!=null&&e.muteState.hasAudio&&(o=this.user)!=null&&o.muteState.audioMuted?void 0:(this.player.stop(jb(this)?this.jitterBufferDelay:0),void this.log.info("playing state updated, stop ".concat(this.kind)))}this.log.debug("updatePlayingState abort ".concat(this.isPlayCalled," ").concat(A," ").concat(this.player.isStopped))}handleAutoPlayFailed(A){return KA(this,null,function*(){var e;this.log.warn("handleAutoPlayFailed",A);let o=()=>{this.resume().then(()=>{document.removeEventListener("click",o,!0)})};if(this.room&&this.room.enableAutoPlayDialog){if((bp||eQ)&&(yield kC(100),(e=this.player)!=null&&e.isPlaying))return;xC()}else document.addEventListener("click",o,!0);F.once(sA.LOCAL_TRACK_CAPTURE_SUCCESS,a=>{let{track:c}=a;c.kind==="audio"&&fi()&&!this.player.isPlaying&&this.isRemote&&this.isAvailable&&o()}),this.emit("error",A)})}getVideoFrame(){return this.player instanceof vo?this.player.getVideoFrame():""}emitFirstVideoFrameEvent(A){var e,o,a;if(this.isFirstVideoFrameEmitted)return;let c=(e=this.mediaTrack)==null?void 0:e.getSettings(),d=c?.width||((o=this.player.element)==null?void 0:o.videoWidth)||0,C=c?.height||((a=this.player.element)==null?void 0:a.videoHeight)||0;A===fo.RESIZE&&!d&&!C||A===fo.LOADED_META_DATA&&!d&&!C||(A===fo.LOADED_DATA&&!d&&!C&&this._log.warn("the dimension of video is 0x0 in first-video-frame event"),this.isFirstVideoFrameEmitted=!0,XB(this.rotation)&&([d,C]=[C,d]),this.emit("first-video-frame",{width:d,height:C,streamType:this.streamType,userId:this.isRemote?this.userId:""}))}onTrackMuted(){this._log.warn("".concat(this.kind," track is unable to provide media output"))}onTrackUnmuted(){this._log.info("".concat(this.kind," track is able to provide media output"))}onTrackEnded(){this._log.warn("".concat(this.kind," track ended"))}};di([lc([],Zs.INIT,{sync:!0})],NK.prototype,"_toInitState");var deA=Object.prototype.hasOwnProperty,$p=function(A){if(A==null)return!0;if(typeof A=="boolean")return!1;if(typeof A=="number")return A===0;if(typeof A=="string"||typeof A=="function"||Array.isArray(A))return A.length===0;if(A instanceof Error)return A.message==="";if(aE(A))switch(Object.prototype.toString.call(A)){case"[object File]":case"[object Map]":case"[object Set]":return A.size===0;case"[object Object]":for(let e in A)if(deA.call(A,e))return!1;return!0}return!1},CeA=oM({retryFunction:function(A){return KA(this,null,function*(){let e=function(d){return{audio:heA(d),video:BeA(d)}}(A);QA.info("getUserMedia with constraints: ".concat(JSON.stringify(e)));let o=[],a=[],c=["label","deviceId","groupId"];if(e.audio&&(o=yield Zp(),QA.info("microphones: ".concat(Wd(o.map(d=>Qo(mi({},d),{groupId:d.groupId.substring(0,8)})),{keysToInclude:c})))),e.video&&(a=yield Xp(),QA.info("cameras: ".concat(Wd(a,{keysToInclude:c}))),!_r(e.video)&&e.video.facingMode==="user"&&!e.video.deviceId)){let d=a.filter(C=>!C.label.includes("infrared")).find(C=>C.label.includes("facing front"));d&&(e.video.deviceId=d.deviceId,QA.info("exclude infrared camera: ".concat(JSON.stringify(e))))}try{let d=yield navigator.mediaDevices.getUserMedia(e);return b2&&d.getTracks().forEach(C=>{var y;let S=C.getCapabilities();QA.info("".concat(C.kind," capabilities: ").concat(Wd(S,{keysToInclude:wb}))),!Je(A.echoCancellation)&&((y=S.echoCancellation)==null?void 0:y.indexOf(A.echoCancellation))===-1&&QA.warn("Invalid argument for 'echoCancellation'. Expected one of [".concat(JSON.stringify(S.echoCancellation),"], but received '").concat(A.echoCancellation,"'"))}),e.audio&&Kk(),d}catch(d){let{message:C}=d;throw d.name==="NotFoundError"&&(A.video&&a&&a.length===0&&(C=Xo({key:Mo.CAMERA_NOT_FOUND})),A.audio&&o&&o.length===0&&(C=Xo({key:Mo.MICROPHONE_NOT_FOUND}))),new si({code:Et.INITIALIZE_FAILED,name:d.name,message:C,constraint:d.constraint})}})},settings:{retries:3,timeout:500},onError:A=>{let{error:e,retry:o,reject:a,retryFuncArgs:c,retriedCount:d}=A,C=d+1;e.name==="NotReadableError"||e.name==="OverconstrainedError"||e.name==="AbortError"?(C===1?(c[0].video&&(c[0].maxResolution=!1,(!Bg||c[0].width*c[0].height<=2073600)&&c[0].frameRate&&(c[0].frameRate=c[0].frameRate>10?10:5)),c[0].retryWhenExactFailed&&c[0].useExactDeviceId&&(c[0].useExactDeviceId=!1)):C===2?c[0].useDeviceIdOnly=!0:C===3&&!c[0].useExactDeviceId&&(c[0].useTrueAsConstraint=!0),o()):a(e),c[0].microphoneId&&$4(c[0].microphoneId,!1),c[0].cameraId&&$4(c[0].cameraId,!0)},onRetrying:A=>{QA.warn("getUserMedia NotReadableError observed, retrying [".concat(A,"/3]"))},onRetryFailed:A=>{sn.logFailedEvent({eventType:Ja.GET_USER_MEDIA_RETRY,error:A})},onRetrySuccess:A=>{sn.logSuccessEvent({eventType:Ja.GET_USER_MEDIA_RETRY}),sn.uploadEvent({log:"stat-".concat(Ja.GET_USER_MEDIA_RETRY,"-success-").concat(A)})}});function $4(A,e){return KA(this,null,function*(){let o=(e?yield Xp():yield Zp()).find(a=>a.deviceId===A);o&&Ra(o.getCapabilities)&&QA.warn(Wd(o.getCapabilities(),{keysToInclude:wb}))})}function heA(A){if(!A.audio)return!1;if(A.useTrueAsConstraint)return!0;let e={echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0,sampleRate:A.sampleRate};return!$p(A.microphoneId)&&(e.deviceId=A.useExactDeviceId?{exact:A.microphoneId}:A.microphoneId,A.useDeviceIdOnly)?e:(bn(A.channelCount)&&(e.channelCount=A.channelCount),(_r(A.echoCancellation)||A.echoCancellation==="remote-only"||A.echoCancellation==="all")&&(e.echoCancellation=A.echoCancellation),_r(A.noiseSuppression)&&!A.noiseSuppression&&(e.noiseSuppression=!1),_r(A.autoGainControl)&&!A.autoGainControl&&(e.autoGainControl=!1),!!$p(e)||e)}function BeA(A){if(!A.video)return!1;if(A.useTrueAsConstraint)return!0;let{maxResolution:e=!0}=A,o={};return A.cameraId?o.deviceId=A.useExactDeviceId?{exact:A.cameraId}:A.cameraId:A.facingMode&&(o.facingMode=A.facingMode),A.useDeviceIdOnly&&!$p(o)?o:(A.width&&(o.width={ideal:A.width},e&&!er&&(o.width.max=A.width)),A.height&&(o.height={ideal:A.height},e&&!er&&(o.height.max=A.height)),er&&tQ&&A.width&&A.height&&A.width*A.height<101376&&(o.width=A.width,o.height=A.height),A.frameRate&&(o.frameRate=A.frameRate),!!$p(o)||o)}var QeA=CeA;function A5(A){return jr((e,o)=>function(){for(var a=arguments.length,c=new Array(a),d=0;dfunction(){for(var a=arguments.length,c=new Array(a),d=0;dfunction(){for(var a=arguments.length,c=new Array(a),d=0;d{let A=!1,e=document.visibilityState;return()=>{document.visibilityState!==e&&QA.info("visibility change: ".concat(document.visibilityState)),!A&&(document.addEventListener("visibilitychange",()=>{QA.info("visibility change: ".concat(document.visibilityState)),e=document.visibilityState}),A=!0)}})(),meA=0,t5=class{constructor(A){Y(this,"log"),Y(this,"isRunning",!1),Y(this,"queue",[]);let e="fq".concat(++meA);A&&(e+="|".concat(A)),this.log=QA.createLogger({id:e})}get length(){return this.queue.length}get lastQueueItem(){return this.length===0?null:this.queue[this.length-1]}push(A){let e=arguments.length>1&&arguments[1]!==void 0&&arguments[1];var o,a;let c=mi({},A),d=new Promise((C,y)=>{c.resolve=C,c.reject=y});return c.promise=d,e?this.length<=1?this.queue.push(c):(a=(o=this.lastQueueItem)==null?void 0:o.promise)==null||a.then(c.resolve,c.reject):this.queue.push(c),this.log.debug("push ".concat(this.length),A.funcName,A.args),this.isRunning||this.callNext(),d}shift(){let A=this.queue.shift();return this.log.debug("shift ".concat(this.length),A?.funcName,A?.args),A}callNext(){if(this.isRunning||this.length===0)return;let{fn:A,args:e,context:o,resolve:a,reject:c,funcName:d}=this.queue[0];this.log.debug("callNext",this.length,d,e),this.isRunning=!0,A.apply(o,e).then(a,c).finally(()=>{this.isRunning=!1,this.shift(),this.callNext()})}},K2=new WeakMap,j2=new WeakMap;function Wk(){let A=arguments.length>0&&arguments[0]!==void 0&&arguments[0];return function(e,o,a){let c=a.value;return a.value=function(){let d=K2.get(this)||new t5;for(var C=arguments.length,y=new Array(C),S=0;SS.push(gA)),(y=j2.get(this))==null||y.forEach(gA=>gA?.queue.forEach(CA=>S.push(CA))),S.forEach(gA=>{gA.reject(new si({code:Et.API_CALL_ABORTED,message:A}))}),K2.delete(this),j2.delete(this),c.apply(this,V)},a}}function Qy(A,e){return function(o,a,c){let d=c.value,C=y=>A(...y);return c.value=function(){for(var y=arguments.length,S=new Array(y),b=0;bfunction(){let c=A;try{for(var d=arguments.length,C=new Array(d),y=0;y(e?Ai.addSuccessEvent({key:c,cost:ko()-b}):Ai.addSuccessEvent({key:c}),V)).catch(V=>{throw Ai.addFailedEvent({key:c,error:V}),V}):(Ai.addSuccessEvent({key:c}),S)}catch(S){throw Ai.addFailedEvent({key:c,error:S}),S}})}var o5={};function tg(){}Jh(o5,{Events:()=>Ic,Inspect:()=>fy,LastSink:()=>W2,Sink:()=>Os,Subscribe:()=>z2,TimeoutError:()=>r5,audit:()=>ntA,bindCallback:()=>VeA,bindNodeCallback:()=>JeA,buffer:()=>TeA,bufferCount:()=>_eA,bufferTime:()=>wtA,call:()=>s5,catchError:()=>M5,combineLatest:()=>c5,concat:()=>SeA,concatMap:()=>QtA,concatMapTo:()=>ptA,count:()=>KeA,create:()=>lr,debounce:()=>atA,debounceTime:()=>gtA,defer:()=>l5,delay:()=>_tA,deliver:()=>Ps,dispose:()=>GK,elementAt:()=>ctA,empty:()=>FK,every:()=>dtA,exhaustMap:()=>StA,exhaustMapTo:()=>MtA,expand:()=>NtA,filter:()=>OM,find:()=>ltA,findIndex:()=>ItA,first:()=>utA,fromAnimationFrame:()=>xeA,fromArray:()=>keA,fromEvent:()=>ca,fromEventPattern:()=>LeA,fromFetch:()=>UeA,fromIterable:()=>FeA,fromPromise:()=>d5,fromReadableStream:()=>PeA,fromReader:()=>OeA,groupBy:()=>vtA,identity:()=>feA,ignoreElements:()=>ZeA,iif:()=>veA,inspect:()=>n5,interval:()=>E5,last:()=>EtA,map:()=>PK,mapTo:()=>htA,max:()=>jeA,merge:()=>bK,mergeMap:()=>ftA,mergeMapTo:()=>ytA,min:()=>WeA,never:()=>HeA,nothing:()=>tg,of:()=>beA,pairwise:()=>CtA,pipe:()=>pa,race:()=>g5,range:()=>YeA,reduce:()=>C5,retry:()=>LtA,scan:()=>Q5,setAsapScheduler:()=>GeA,share:()=>zk,shareReplay:()=>MeA,skip:()=>AtA,skipUntil:()=>etA,skipWhile:()=>OK,startWith:()=>kK,subject:()=>uQ,subscribe:()=>hl,sum:()=>zeA,switchMap:()=>X2,switchMapTo:()=>A1,take:()=>r_,takeLast:()=>$eA,takeUntil:()=>lE,takeWhile:()=>XeA,tap:()=>xK,throttle:()=>otA,throwError:()=>qeA,timeInterval:()=>RtA,timeout:()=>ktA,timer:()=>UK,toPromise:()=>GtA,toReadableStream:()=>btA,withLatestFrom:()=>weA,zip:()=>ReA});var s5=A=>A(),feA=A=>A;function GK(){this.dispose()}var n5=()=>typeof __FASTRX_DEVTOOLS__<"u",yeA=1,fy=class extends Function{toString(){return"".concat(this.name,"(").concat(this.args.length?[...this.args].join(", "):"",")")}subscribe(A){let e=new DeA(A,this,this.streamId++);return Ic.subscribe({id:this.id,end:!1},{nodeId:e.sourceId,streamId:e.id}),this(e),e}},W2=class{constructor(){this.defers=new Set,this.disposed=!1}next(A){}complete(){this.dispose()}error(A){this.dispose()}get bindDispose(){return()=>this.dispose()}dispose(){this.disposed=!0,this.complete=tg,this.error=tg,this.next=tg,this.dispose=tg,this.subscribe=tg,this.doDefer()}subscribe(A){return A instanceof fy?A.subscribe(this):A(this),this}get bindSubscribe(){return A=>this.subscribe(A)}doDefer(){this.defers.forEach(s5),this.defers.clear()}defer(A){this.defers.add(A)}removeDefer(A){this.defers.delete(A)}reset(){this.disposed=!1,delete this.complete,delete this.next,delete this.dispose,delete this.next,delete this.subscribe}resetNext(){delete this.next}resetComplete(){delete this.complete}resetError(){delete this.error}},Os=class extends W2{constructor(A){super(),this.sink=A,A.defer(this.bindDispose)}next(A){this.sink.next(A)}complete(){this.sink.complete()}error(A){this.sink.error(A)}},z2=class extends W2{constructor(A){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:tg,o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:tg,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:tg;if(super(),this._next=e,this._error=o,this._complete=a,this.then=tg,A instanceof fy){let c={toString:()=>"subscribe",id:0,source:A};this.defer(()=>{Ic.defer(c,0)}),Ic.create(c),Ic.pipe(c),this.sourceId=c.id,this.subscribe(A),Ic.subscribe({id:c.id,end:!0}),e==tg?this._next=d=>Ic.next(c,0,d):this.next=d=>{Ic.next(c,0,d),e(d)},a==tg?this._complete=()=>Ic.complete(c,0):this.complete=()=>{this.dispose(),Ic.complete(c,0),a()},o==tg?this._error=d=>Ic.complete(c,0,d):this.error=d=>{this.dispose(),Ic.complete(c,0,d),o(d)}}else this.subscribe(A)}next(A){this._next(A)}complete(){this.dispose(),this._complete()}error(A){this.dispose(),this._error(A)}};function pa(A){for(var e=arguments.length,o=new Array(e>1?e-1:0),a=1;ad(c),A)}function lr(A,e,o){if(n5()){let a=Object.defineProperties(Object.setPrototypeOf(A,fy.prototype),{streamId:{value:0,writable:!0,configurable:!0},name:{value:e,writable:!0,configurable:!0},args:{value:o,writable:!0,configurable:!0},id:{value:0,writable:!0,configurable:!0}});Ic.create(a);for(let c=0;c{if(d instanceof fy){let C=lr(y=>{let S=new A(y,...a);S.sourceId=C.id,S.subscribe(d)},e,arguments);return C.source=d,Ic.pipe(C),C}return C=>d(new A(C,...a))}}}function yy(A,e){window.postMessage({source:"fastrx-devtools-backend",payload:{event:A,payload:e}})}var DeA=class extends Os{constructor(A,e,o){super(A),this.source=e,this.id=o,this.sourceId=A.sourceId,this.defer(()=>{Ic.defer(this.source,this.id)})}next(A){Ic.next(this.source,this.id,A),this.sink.next(A)}complete(){Ic.complete(this.source,this.id),this.sink.complete()}error(A){Ic.complete(this.source,this.id,A),this.sink.error(A)}},Ic={addSource(A,e){yy("addSource",{id:A.id,name:A.toString(),source:{id:e.id,name:e.toString()}})},next(A,e,o){yy("next",{id:A.id,streamId:e,data:o&&o.toString()})},subscribe(A,e){let{id:o,end:a}=A;yy("subscribe",{id:o,end:a,sink:{nodeId:e&&e.nodeId,streamId:e&&e.streamId}})},complete(A,e,o){yy("complete",{id:A.id,streamId:e,err:o?o.toString():null})},defer(A,e){yy("defer",{id:A.id,streamId:e})},pipe(A){yy("pipe",{name:A.toString(),id:A.id,source:{id:A.source.id,name:A.source.toString()}})},update(A){yy("update",{id:A.id,name:A.toString()})},create(A){A.id||(A.id=yeA++),yy("create",{name:A.toString(),id:A.id})}},r5=class extends Error{constructor(A){super("timeout after ".concat(A,"ms")),this.timeout=A}},a5=class extends W2{constructor(A){super(),this.source=A,this.sinks=new Set}add(A){A.defer(()=>this.remove(A)),this.sinks.add(A).size===1&&(this.reset(),this.subscribe(this.source))}remove(A){this.sinks.delete(A),this.sinks.size===0&&this.dispose()}next(A){this.sinks.forEach(e=>e.next(A))}complete(){this.sinks.forEach(A=>A.complete()),this.sinks.clear()}error(A){this.sinks.forEach(e=>e.error(A)),this.sinks.clear()}};function zk(){return A=>{let e=new a5(A);if(A instanceof fy){let o=lr(a=>{e.add(a)},"share",arguments);return e.sourceId=o.id,o.source=A,Ic.pipe(o),o}return lr(e.add.bind(e),"share",arguments)}}function bK(){for(var A=arguments.length,e=new Array(A),o=0;o{let c=new Os(a),d=e.length;c.complete=()=>{--d===0&&a.complete()},e.forEach(c.bindSubscribe)},"merge",arguments)}function g5(){for(var A=arguments.length,e=new Array(A),o=0;o{let c=new Map;e.forEach(d=>{let C=new Os(a);c.set(d,C),C.complete=()=>{c.delete(d),c.size===0?a.complete():C.dispose()},C.next=y=>{c.delete(d),c.forEach(S=>S.dispose()),C.resetNext(),C.resetComplete(),C.next(y)}}),e.forEach(d=>c.get(d).subscribe(d))},"race",arguments)}function SeA(){for(var A=arguments.length,e=new Array(A),o=0;o{let c=0,d=e.length,C=new Os(a);C.complete=()=>{c{let o=new a5(e),a=[];return o.next=function(c){a.push(c),a.length>A&&a.shift(),this.sinks.forEach(d=>d.next(c))},lr(c=>{c.defer(()=>o.remove(c)),a.forEach(d=>c.next(d)),o.add(c)},"shareReplay",arguments)}}function veA(A,e,o){return lr(a=>A()?e(a):o(a),"iif",arguments)}function c5(){for(var A=arguments.length,e=new Array(A),o=0;o{let c=e.length,d=c,C=c,y=new Array(c),S=()=>{--C===0&&a.complete()};e.forEach((b,V)=>{let J=new Os(a);J.next=gA=>{d--,J.next=CA=>{y[V]=CA,d===0&&a.next(y)},J.next(gA)},J.complete=S,J.subscribe(b)})},"combineLatest",arguments)}function ReA(){for(var A=arguments.length,e=new Array(A),o=0;o{let c=e.length,d=c,C=new Array(c),y=()=>{--d===0&&a.complete()};e.forEach((S,b)=>{let V=new Os(a),J=[];C[b]=J,V.next=gA=>{J.push(gA),C.every(CA=>CA.length)&&a.next(C.map(CA=>CA.shift()))},V.complete=y,V.subscribe(S)})},"zip",arguments)}function kK(){for(var A=arguments.length,e=new Array(A),o=0;olr(function(c){let d=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,C=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e.length;for(;d1?o-1:0),c=1;cthis.buffer=d,e.complete=tg,e.subscribe(c5(...a))}next(A){this.buffer&&this.sink.next([A,...this.buffer])}},"withLatestFrom"),_eA=Ps(class extends Os{constructor(A,e,o){super(A),this.bufferSize=e,this.startBufferEvery=o,this.buffer=[],this.count=0,this.startBufferEvery&&(this.buffers=[[]])}next(A){this.startBufferEvery?(this.count++===this.startBufferEvery&&(this.buffers.push([]),this.count=1),this.buffers.forEach(e=>{e.push(A)}),this.buffers[0].length===this.bufferSize&&this.sink.next(this.buffers.shift())):(this.buffer.push(A),this.buffer.length===this.bufferSize&&(this.sink.next(this.buffer),this.buffer=[]))}complete(){this.buffer.length?this.sink.next(this.buffer):this.buffers.length&&this.buffers.forEach(A=>this.sink.next(A)),super.complete()}},"bufferCount"),TeA=Ps(class extends Os{constructor(A,e){super(A),this.buffer=[];let o=new Os(A);o.next=a=>{A.next(this.buffer),this.buffer=[]},o.complete=tg,o.subscribe(e)}next(A){this.buffer.push(A)}complete(){this.buffer.length&&this.sink.next(this.buffer),super.complete()}},"buffer"),NeA=function(A,e,o,a){return new(o||(o=Promise))(function(c,d){function C(b){try{S(a.next(b))}catch(V){d(V)}}function y(b){try{S(a.throw(b))}catch(V){d(V)}}function S(b){b.done?c(b.value):function(V){return V instanceof o?V:new o(function(J){J(V)})}(b.value).then(C,y)}S((a=a.apply(A,[])).next())})};function uQ(A){let e=arguments,o=zk()(lr(a=>{o.next=c=>a.next(c),o.complete=()=>a.complete(),o.error=c=>a.error(c),A&&a.subscribe(A)},"subject",e));return o.next=tg,o.complete=tg,o.error=tg,o}function l5(A){return lr(e=>e.subscribe(A()),"defer",arguments)}var n_={promise:A=>{Promise.resolve().then(A)},setImmediate:typeof setImmediate<"u"?A=>setImmediate(A):null,setTimeout:A=>setTimeout(A,0)},LK=typeof Promise<"u"?n_.promise:n_.setImmediate?n_.setImmediate:n_.setTimeout,I5=A=>e=>{LK(()=>A(e))},GeA=A=>{typeof A=="function"?LK=A:n_[A]&&(LK=n_[A])},u5=A=>I5(e=>{for(let o=0;!e.disposed&&o{let o=0,a=setInterval(()=>e.next(o++),A);return e.defer(()=>{clearInterval(a)}),"interval"},"interval",arguments)}function UK(A,e){return lr(o=>{let a=0,c=setTimeout(()=>{if(o.removeDefer(d),o.next(a++),e){let C=setInterval(()=>o.next(a++),e);o.defer(()=>{clearInterval(C)})}else o.complete()},A),d=()=>clearTimeout(c);o.defer(d)},"timer",arguments)}function Z2(A,e){return o=>{let a=c=>o.next(c);o.defer(()=>e(a)),A(a)}}function LeA(A,e){return lr(Z2(A,e),"fromEventPattern",arguments)}function ca(A,e){if("on"in A&&"off"in A)return lr(Z2(o=>A.on(e,o),o=>A.off(e,o)),"fromEvent",arguments);if("addListener"in A&&"removeListener"in A)return lr(Z2(o=>A.addListener(e,o),o=>A.removeListener(e,o)),"fromEvent",arguments);if("addEventListener"in A)return lr(Z2(o=>A.addEventListener(e,o),o=>A.removeEventListener(e,o)),"fromEvent",arguments);throw"target is not a EventDispachter"}function d5(A){return lr(e=>{A.then(o=>{e.next(o),e.complete()},e.error.bind(e))},"fromPromise",arguments)}function UeA(A,e){return lr(l5(()=>d5(fetch(A,e))),"fromFetch",arguments)}function FeA(A){return lr(I5(e=>{try{for(let o of A){if(e.disposed)return;e.next(o)}e.complete()}catch(o){e.error(o)}}),"fromIterable",arguments)}function OeA(A){let e=o=>NeA(this,void 0,void 0,function*(){try{if(o.disposed)return;let{done:a,value:c}=yield A.read();if(a)return void o.complete();o.next(c),e(o)}catch(a){o.error(a)}});return lr(o=>{e(o)},"fromReader",arguments)}function PeA(A){return lr(e=>{let o=new AbortController,a=o.signal;e.defer(()=>o.abort("cancelled")),A.pipeTo(new WritableStream({write(c){e.next(c)},close(){e.complete()},abort(c){e.error(c)}}),{signal:a}).then(()=>e.complete(),c=>e.error(c))},"fromReadableStream",arguments)}function xeA(){return lr(A=>{let e=requestAnimationFrame(function o(a){A.disposed||(A.next(a),e=requestAnimationFrame(o))});A.defer(()=>cancelAnimationFrame(e))},"fromAnimationFrame",arguments)}function YeA(A,e){return lr(function(o){let a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:A,c=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e+A;for(;a2?o-2:0),c=2;c{let C=a.concat(y=>(d.next(y),d.complete()));A.apply(e,C)},"bindCallback",arguments)}function JeA(A,e){for(var o=arguments.length,a=new Array(o>2?o-2:0),c=2;c{let C=a.concat((y,S)=>y?d.error(y):(d.next(S),d.complete()));A.apply(e,C)},"bindNodeCallback",arguments)}function HeA(){return lr(()=>{},"never",arguments)}function qeA(A){return lr(e=>e.error(A),"throwError",arguments)}function FK(){return lr(A=>A.complete(),"empty",arguments)}var Zk=class extends Os{constructor(A,e,o){super(A),this.f=e;let a=()=>{this.sink.next(this.acc),this.sink.complete()};o===void 0?this.next=c=>{this.acc=c,this.complete=a,this.resetNext()}:(this.acc=o,this.complete=a)}next(A){this.acc=this.f(this.acc,A)}},C5=Ps(Zk,"reduce"),KeA=A=>Ps(Zk,"count")((e,o)=>A(o)?e+1:e,0),jeA=()=>Ps(Zk,"max")(Math.max),WeA=()=>Ps(Zk,"min")(Math.min),zeA=()=>Ps(Zk,"sum")((A,e)=>A+e,0),OM=Ps(class extends Os{constructor(A,e,o){super(A),this.filter=e,this.thisArg=o}next(A){this.filter.call(this.thisArg,A)&&this.sink.next(A)}},"filter"),ZeA=Ps(class extends Os{next(A){}},"ignoreElements"),r_=Ps(class extends Os{constructor(A,e){super(A),this.count=e}next(A){this.sink.next(A),--this.count===0&&(this.doDefer(),this.complete())}},"take"),lE=Ps(class extends Os{constructor(A,e){super(A);let o=new Os(A);o.next=()=>{o.doDefer(),A.complete()},o.complete=GK,o.subscribe(e)}},"takeUntil"),XeA=Ps(class extends Os{constructor(A,e){super(A),this.f=e}next(A){this.f(A)?this.sink.next(A):(this.doDefer(),this.complete())}},"takeWhile"),$eA=A=>C5((e,o)=>(e.push(o),e.length>A&&e.shift(),e),[]),AtA=Ps(class extends Os{constructor(A,e){super(A),this.count=e}next(A){--this.count===0&&(this.next=super.next)}},"skip"),etA=Ps(class extends Os{constructor(A,e){super(A),A.next=tg;let o=new Os(A);o.next=()=>{o.doDefer(),A.resetNext()},o.complete=GK,o.subscribe(e)}},"skipUntil"),OK=Ps(class extends Os{constructor(A,e){super(A),this.f=e}next(A){this.f(A)||(this.next=super.next,this.next(A))}},"skipWhile"),ttA={leading:!0,trailing:!1},itA=class extends Os{constructor(A,e,o){super(A),this.durationSelector=e,this.trailing=o}cacheValue(A){this.last=A,this.disposed&&this.throttle(A)}send(A){this.sink.next(A),this.throttle(A)}throttle(A){this.reset(),this.subscribe(this.durationSelector(A))}next(){this.complete()}complete(){this.dispose(),this.trailing&&this.send(this.last)}},h5=class extends Os{constructor(A,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:ttA;super(A),this.durationSelector=e,this.config=o,this._throttle=new itA(this.sink,this.durationSelector,this.config.trailing),this._throttle.dispose()}next(A){this._throttle.disposed&&this.config.leading?this._throttle.send(A):this._throttle.cacheValue(A)}complete(){this._throttle.throttle=tg,this._throttle.complete(),super.complete()}},otA=Ps(h5,"throttle"),stA={leading:!1,trailing:!0},ntA=A=>Ps(h5,"audit")(A,stA),rtA=class extends Os{next(){this.complete()}complete(){this.dispose(),this.sink.next(this.last)}},B5=class extends Os{constructor(A,e){super(A),this.durationSelector=e,this._debounce=new rtA(this.sink),this._debounce.dispose()}next(A){this._debounce.dispose(),this._debounce.reset(),this._debounce.last=A,this._debounce.subscribe(this.durationSelector(A))}complete(){this._debounce.complete(),super.complete()}},atA=Ps(B5,"debounce"),gtA=A=>Ps(B5,"debounceTime")(e=>UK(A)),ctA=Ps(class extends Os{constructor(A,e,o){super(A),this.count=e,this.defaultValue=o}next(A){this.count--===0&&(this.defaultValue=A,this.doDefer(),this.complete())}complete(){this.defaultValue!==void 0?(this.sink.next(this.defaultValue),super.complete()):this.error(new Error("not enough elements in sequence"))}},"elementAt"),ltA=A=>e=>r_(1)(OK(o=>!A(o))(e)),ItA=Ps(class extends Os{constructor(A,e){super(A),this.f=e,this.i=0}next(A){this.f(A)?(this.sink.next(this.i++),this.doDefer(),this.complete()):++this.i}},"findIndex"),utA=Ps(class extends Os{constructor(A,e,o){super(A),this.f=e,this.defaultValue=o,this.index=0}next(A){(!this.f||this.f(A,this.index++))&&(this.defaultValue=A,this.doDefer(),this.complete())}complete(){this.defaultValue!==void 0?(this.sink.next(this.defaultValue),super.complete()):this.error(new Error("no elements in sequence"))}},"first"),EtA=Ps(class extends Os{constructor(A,e,o){super(A),this.f=e,this.defaultValue=o,this.index=0}next(A){(!this.f||this.f(A,this.index++))&&(this.defaultValue=A)}complete(){this.defaultValue!==void 0?(this.sink.next(this.defaultValue),super.complete()):this.error(new Error("no elements in sequence"))}},"last"),dtA=Ps(class extends Os{constructor(A,e){super(A),this.predicate=e,this.index=0}next(A){this.predicate(A,this.index++)?this.result=!0:(this.result=!1,this.doDefer(),this.complete())}complete(){this.result!==void 0?(this.sink.next(this.result),super.complete()):this.error(new Error("no elements in sequence"))}},"every"),Q5=Ps(class extends Os{constructor(A,e,o){super(A),this.f=e,o===void 0?this.next=a=>{this.acc=a,this.resetNext(),this.sink.next(this.acc)}:this.acc=o}next(A){this.sink.next(this.acc=this.f(this.acc,A))}},"scan"),CtA=Ps(class extends Os{constructor(){super(...arguments),this.hasLast=!1}next(A){this.hasLast?this.sink.next([this.last,A]):this.hasLast=!0,this.last=A}},"pairwise"),p5=class extends Os{constructor(A,e,o){super(A),this.mapper=e,this.thisArg=o}next(A){super.next(this.mapper.call(this.thisArg,A))}},PK=Ps(p5,"map"),htA=A=>Ps(p5,"mapTo")(e=>A),Xk=class extends Os{constructor(A,e,o){super(A),this.data=e,this.context=o}next(A){let e=this.context.combineResults;e?this.sink.next(e(this.data,A)):this.sink.next(A)}tryComplete(){this.context.resetComplete(),this.dispose()}},$k=class w9 extends Os{constructor(e,o,a){super(e),this.makeSource=o,this.combineResults=a,this.index=0}subInner(e,o){let a=this.currentSink=new o(this.sink,e,this);this.complete===w9.prototype.complete&&(this.complete=this.tryComplete),a.complete=a.tryComplete,a.subscribe(this.makeSource(e,this.index++))}complete(){this.sink.complete()}tryComplete(){this.currentSink.resetComplete(),this.dispose()}},m5=class extends Xk{},f5=class extends $k{next(A){this.subInner(A,m5),this.next=e=>{this.currentSink.dispose(),this.subInner(e,m5)}}},X2=Ps(f5,"switchMap");function $2(A){return(e,o)=>A(()=>e,o)}var A1=$2(Ps(f5,"switchMapTo")),BtA=class extends Xk{tryComplete(){this.dispose(),this.context.sources.length?this.context.subNext():(this.context.resetNext(),this.context.resetComplete())}},y5=class extends $k{constructor(){super(...arguments),this.sources=[],this.next2=this.sources.push.bind(this.sources)}next(A){this.next2(A),this.subNext()}subNext(){this.next=this.next2,this.subInner(this.sources.shift(),BtA),this.disposed&&this.sources.length===0&&this.currentSink.resetComplete()}tryComplete(){this.sources.length===0&&this.currentSink.resetComplete(),this.dispose()}},QtA=Ps(y5,"concatMap"),ptA=$2(Ps(y5,"concatMapTo")),mtA=class extends Xk{tryComplete(){this.context.inners.delete(this),super.dispose(),this.context.inners.size===0&&this.context.resetComplete()}},D5=class extends $k{constructor(){super(...arguments),this.inners=new Set}next(A){this.subInner(A,mtA),this.inners.add(this.currentSink)}tryComplete(){this.inners.size===1?this.inners.forEach(A=>A.resetComplete()):this.dispose()}},ftA=Ps(D5,"mergeMap"),ytA=$2(Ps(D5,"mergeMapTo")),DtA=class extends Xk{dispose(){this.context.resetNext(),super.dispose()}},S5=class extends $k{next(A){this.next=tg,this.subInner(A,DtA)}},StA=Ps(S5,"exhaustMap"),MtA=$2(Ps(S5,"exhaustMapTo")),vtA=Ps(class extends Os{constructor(A,e){super(A),this.f=e,this.groups=new Map}next(A){let e=this.f(A),o=this.groups.get(e);o===void 0&&(o=uQ(),o.key=e,this.groups.set(e,o),super.next(o)),o.next(A)}complete(){this.groups.forEach(A=>A.complete()),super.complete()}error(A){this.groups.forEach(e=>e.error(A)),super.error(A)}},"groupBy"),RtA=Ps(class extends Os{constructor(){super(...arguments),this.start=new Date}next(A){this.sink.next({value:A,interval:Number(new Date)-Number(this.start)}),this.start=new Date}},"timeInterval"),wtA=Ps(class extends Os{constructor(A,e){super(A),this.miniseconds=e,this.buffer=[],this.id=setInterval(()=>{this.sink.next(this.buffer.concat()),this.buffer.length=0},this.miniseconds)}next(A){this.buffer.push(A)}complete(){this.sink.next(this.buffer),super.complete()}dispose(){clearInterval(this.id),super.dispose()}},"bufferTime"),_tA=Ps(class extends Os{constructor(A,e){super(A),this.buffer=[],this.delayTime=e}dispose(){clearTimeout(this.timeoutId),super.dispose()}delay(A){this.timeoutId=setTimeout(()=>{let e=this.buffer.shift();if(e){let{time:o,data:a}=e;super.next(a),this.buffer.length&&this.delay(Number(this.buffer[0].time)-Number(o))}},A)}next(A){this.buffer.length||this.delay(this.delayTime),this.buffer.push({time:new Date,data:A})}complete(){this.timeoutId=setTimeout(()=>super.complete(),this.delayTime)}},"delay"),M5=Ps(class extends Os{constructor(A,e){super(A),this.selector=e}error(A){this.dispose(),this.selector(A)(this.sink)}},"catchError"),TtA=class extends Xk{tryComplete(){let A=this.context.inners.delete(this);super.dispose(),A&&this.context.checkComplete()}next(A){this.sink.next(A),this.context.expandValue(A)}},NtA=Ps(class extends $k{constructor(A,e){super(A,e),this.project=e,this.inners=new Set,this.sourceCompleted=!1}next(A){this.sink.next(A),this.expandValue(A)}expandValue(A){let e=new TtA(this.sink,A,this);this.currentSink=e,this.complete=this.tryComplete,e.complete=e.tryComplete,this.inners.add(e),e.subscribe(this.makeSource(A,this.index++))}complete(){this.sourceCompleted=!0,this.checkComplete()}checkComplete(){this.sourceCompleted&&this.inners.size===0&&(this.resetComplete(),super.complete())}tryComplete(){this.sourceCompleted=!0,this.checkComplete()}},"expand"),GtA=()=>A=>new Promise((e,o)=>{let a;new z2(A,c=>a=c,o,()=>e(a))}),btA=()=>A=>{let e;return new ReadableStream({start(o){e=new z2(A,o.enqueue.bind(o),o.error.bind(o),o.close.bind(o))},cancel(){e.dispose()}})},hl=function(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:tg,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:tg,o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:tg;return a=>new z2(a,A,e,o)},xK=Ps(class extends Os{constructor(A,e){super(A),e instanceof Function?this.next=o=>{e(o),A.next(o)}:(e.next&&(this.next=o=>{e.next(o),A.next(o)}),e.complete&&(this.complete=()=>{e.complete(),A.complete()}),e.error&&(this.error=o=>{e.error(o),A.error(o)}))}},"tap"),ktA=Ps(class extends Os{constructor(A,e){super(A),this.timeout=e,this.id=setTimeout(()=>this.error(new r5(this.timeout)),this.timeout)}next(A){super.next(A),clearTimeout(this.id),this.next=super.next}dispose(){clearTimeout(this.id),super.dispose()}},"timeout"),LtA=function(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:1/0;return e=>{if(e instanceof fy){let o=lr(a=>{let c=A,d=new Os(a);d.error=C=>{c-- >0?d.subscribe(e):a.error(C)},d.sourceId=o.id,d.subscribe(e)},"retry",[A]);return o.source=e,Ic.pipe(o),o}return o=>{let a=A,c=new Os(o);c.error=d=>{a-- >0?e(c):o.error(d)},e(c)}}},YK=(A=>(A[A.AUTO_SWITCH_NEW_DEVICE=0]="AUTO_SWITCH_NEW_DEVICE",A[A.WAIT_CURRENT_DEVICE=1]="WAIT_CURRENT_DEVICE",A))(YK||{}),AL=class _9 extends NK{constructor(e,o){super({mediaType:e,PlayerClass:o}),Y(this,"isRemote",!1),Y(this,"deviceId"),Y(this,"groupId",""),Y(this,"label",""),Y(this,"sourceTrack"),Y(this,"enableAutoSwitchWhenRecapturing",!0),Y(this,"_isRecapturing",!1),Y(this,"_lastRecaptureTime",0),Y(this,"_onMuteTimeoutId",-1),Y(this,"_encodeCheckTimeoutId",-1),Y(this,"recaptureMode",0),Y(this,"profile"),Y(this,"retryEncodeFailed")}get enableEncodeFrame(){return!1}get isPublishing(){return this.state.toString()==="publishing"}get isPublished(){return this.state==="publish"}get isUseCustomSource(){return!(!this.mediaTrack||this.sourceTrack===this.mediaTrack)}encodeFrame(e,o){throw new Error("Method not implemented.")}installTrackEvent(e){e.addEventListener(YA.MUTE,this.onTrackMuted),e.addEventListener(YA.UNMUTE,this.onTrackUnmuted),e.addEventListener(YA.ENDED,this.onTrackEnded),e.muted&&this.onTrackMuted(),e.readyState===YA.ENDED&&this.onTrackEnded()}uninstallTrackEvent(e){e.removeEventListener(YA.MUTE,this.onTrackMuted),e.removeEventListener(YA.UNMUTE,this.onTrackUnmuted),e.removeEventListener(YA.ENDED,this.onTrackEnded)}setStateToReady(){}capture(e){let o=arguments.length>1&&arguments[1]!==void 0&&arguments[1];return KA(this,null,function*(){var a,c;let d=this.sourceTrack;try{let C,y=ko();F.emit(sA.LOCAL_TRACK_CAPTURE_START,{track:this}),e.customSource?(C=new MediaStream,C.addTrack(e.customSource)):(o||(a=this.sourceTrack)==null||a.stop(),C=yield QeA(e));let S=C.getTracks()[0];return yield this.setInputMediaStreamTrack(S),e.customSource||(this.sourceTrack=S,this.updateDeviceIdInUse(),this.listenDeviceChange()),F.emit(sA.LOCAL_TRACK_CAPTURE_SUCCESS,{track:this,cost:ko()-y,profile:this.profile,room:(c=this.manager)==null?void 0:c.room}),C}catch(C){throw F.emit(sA.LOCAL_TRACK_CAPTURE_FAILED,{track:this,error:C}),this.log.error("getUserMedia error observed ".concat(C)),C}finally{o&&d?.stop()}})}setOutputMediaStreamTrack(e){var o;if(super.setOutputMediaStreamTrack(e),this.setStateToReady(),this.isPublishing||this.isPublished)return(o=this.room)==null?void 0:o.replaceTrack(this)}get hasFlag(){var e,o;let a=Rp(((e=this.room)==null?void 0:e.localPublishFlag)||0,((o=this.room)==null?void 0:o.userId)||"");return this.mediaType===4&&a.hasVideo||this.mediaType===1&&a.hasAudio||this.mediaType===2&&a.hasAuxiliary}publish(e,o){return KA(this,null,function*(){return this.room=e,this.room.localTracks.add(this),this.emit("4",{mediaType:this.strMediaType,state:"starting",prevState:"stopped"}),this.userId=e.userId,this._log.bindParent(e.getLogger()),yield o,this._checkPublishFlag(e)})}_checkPublishFlag(e){return new Promise((o,a)=>KA(this,null,function*(){var c,d,C,y,S;let b=()=>a(new si({code:Et.API_CALL_ABORTED,message:"publish aborted"}));if(this.hasFlag||this.muted?o():((this.state===Zs.INIT||this.state==="ready")&&b(),pa(ca(e,"local-publish-flag-changed"),OM(()=>this.hasFlag),lE(bK(ca(this,Zs.INIT),ca(this,"ready"))),hl(o,a,b))),(C=(d=(c=this.room)==null?void 0:c.networkQuality)==null?void 0:d.hadRecentBadUplink)!=null&&C.call(d,2))return o();let V=e.heartbeatCount,J=((S=(y=this.mediaTrack)==null?void 0:y.stats)==null?void 0:S.totalFrames)||0;this._encodeCheckTimeoutId=setTimeout(()=>KA(this,null,function*(){var gA,CA,MA,$A,he,Ye,Me,yi;if((MA=(CA=(gA=this.room)==null?void 0:gA.networkQuality)==null?void 0:CA.hadRecentBadUplink)!=null&&MA.call(CA,2)||e.heartbeatCount-V<3)return o();if((this.isPublished||this.isPublishing)&&this.isMediaTrackActive){if(($A=this.mediaTrack)!=null&&$A.stats){let Ci=this.mediaTrack.stats.totalFrames||0;Ci-J===0&&this.log.warn("capture totalFrames is 0 during encode check, totalFrames",Ci)}let Ge=this.kind===YA.AUDIO,ht=this.stat.bytesSent>0;if(Ai[ht?"addSuccessEvent":"addFailedEvent"]({key:Ge?503700:513702}),!Ge){let Ci={H264:513704,H265:513705,VP8:513706}[((Ye=(he=this.room)==null?void 0:he.videoCodec)==null?void 0:Ye.toUpperCase())||"H264"];Ci&&Ai[ht?"addSuccessEvent":"addFailedEvent"]({key:Ci})}if(!ht){if(Ai.addEnum({key:Ge?503701:513703,value:Pp()}),sn.uploadEvent({log:"stat-encode-failed-".concat(this.kind,"-").concat(nQ()||xp()),userId:this.userId}),this.log.warn(Ge?"encode failed":"".concat((yi=(Me=this.room)==null?void 0:Me.videoCodec)==null?void 0:yi.toUpperCase()," encode failed")),this.retryEncodeFailed&&(this.log.warn("retry encode"),yield this.retryEncodeFailed(this),this.stat.bytesSent>0||this.hasFlag||(yield kC(5e3),this.stat.bytesSent>0||this.hasFlag)))return o();this.emit("6",this),a(new si({message:"".concat(this.strMediaType," encode failed"),code:Ge?Et.AUDIO_ENCODE_FAILED:Et.VIDEO_ENCODE_FAILED}))}}}),1e4)}))}unpublish(){this.room&&this.room.localTracks.delete(this),this.log.info("unpublish"),F.emit(sA.LOCAL_TRACK_UNPUBLISHED,{track:this})}updateDeviceIdInUse(){return KA(this,null,function*(){if(this.sourceTrack&&dy){let{deviceId:e,groupId:o}=this.sourceTrack.getSettings(),{label:a}=this.sourceTrack;(yield function(c){return KA(this,arguments,function(d){let{newDeviceId:C,oldDeviceId:y,oldGroupId:S,oldLabel:b,kind:V}=d;return function*(){return C===y&&(V!==YA.AUDIO||C!==qS||(yield Z4(S,b)))}()})}({newDeviceId:e,oldDeviceId:this.deviceId,oldGroupId:this.groupId,oldLabel:this.label,kind:this.kind}))||(this.deviceId=e,this.label=a,o&&(this.groupId=o),H2().then(c=>{let d=c.find(C=>{let y=C.deviceId===e;return o&&(y=y&&C.groupId===o),y});d&&this.emit("2",d)}))}})}setProfile(e){this.log.info("setProfile",e),Object.assign(this.profile,e)}isNeedToRecapture(){let e=arguments.length>0&&arguments[0]!==void 0&&arguments[0];return!(!this.deviceId||!this.sourceTrack||this.kind===YA.AUDIO&&!function(o){if(o instanceof CanvasCaptureMediaStreamTrack||!(o instanceof MediaStreamTrack))return!1;let a=o.label.toLocaleLowerCase();if(a.includes("mic")||a.includes("麦克风"))return!0;let c="".concat((o?.getSettings()||{}).deviceId,"_").concat(YA.AUDIO_INPUT);return!!_K.has(c)}(this.sourceTrack)||this.kind===YA.VIDEO&&!function(o){if(o instanceof CanvasCaptureMediaStreamTrack||!(o instanceof MediaStreamTrack))return!1;let a=o.label.toLocaleLowerCase();if(a.includes("camera")||a.includes("webcam"))return!0;let c="".concat((o?.getSettings()||{}).deviceId,"_").concat(YA.VIDEO_INPUT);return!!_K.has(c)}(this.sourceTrack)||this._isRecapturing||e&&tQ&&Bg)}onTrackMuted(){if(super.onTrackMuted(),peA(),this.isNeedToRecapture(!0)){if(Date.now()-this._lastRecaptureTimethis.onTrackMuted(),jS);this._onMuteTimeoutId=setTimeout(()=>KA(this,null,function*(){var e;if((e=this.sourceTrack)!=null&&e.muted){if((eg||Ha)&&document.visibilityState!=="visible")return;this.recapture(yield this.getRecoverCaptureDeviceId())}}),5e3)}}onTrackUnmuted(){super.onTrackUnmuted(),this._onMuteTimeoutId>0&&clearTimeout(this._onMuteTimeoutId)}onTrackEnded(){return KA(this,null,function*(){if(TI(_9.prototype,this,"onTrackEnded").call(this),this.isNeedToRecapture()&&this.recaptureMode===0){if(Date.now()-this._lastRecaptureTimethis.onTrackEnded(),jS);this.emit("7"),this.recapture(yield this.getRecoverCaptureDeviceId())}})}recapture(e){let o=arguments.length>1&&arguments[1]!==void 0&&arguments[1];return KA(this,null,function*(){var a;if(this._isRecapturing||!this.sourceTrack)return;this.log.warn("recapture trying");let c=this.sourceTrack;o||(a=this.sourceTrack)==null||a.stop(),this._isRecapturing=!0,this._lastRecaptureTime=Date.now();let d={useExactDeviceId:!0};if(e==="user"||e==="environment")d.facingMode=e;else{let C;(this.kind==="audio"?yield Zp():yield Xp()).find(y=>y.deviceId===e)&&(C=e),d.deviceId=C}return this.capture(d,o).then(()=>{this._isRecapturing=!1,this.log.warn("recapture success"),this.emit("1",{deviceId:this.deviceId}),F.emit(sA.LOCAL_TRACK_RECAPTURE,{track:this})}).catch(C=>{this._isRecapturing=!1,this.log.warn("recapture failed ".concat(C.message)),this.emit("5",C),F.emit(sA.LOCAL_TRACK_RECAPTURE,{track:this,error:C})}).finally(()=>{o&&c?.stop()})})}getRecoverCaptureDeviceId(){return KA(this,null,function*(){let e=this instanceof EQ;if(e&&this.facingMode)return this.facingMode;let{deviceId:o}=this;if(o){let a=(tL.get(o)||0)+1;if(tL.set(o,a),a>=3&&this.enableAutoSwitchWhenRecapturing){let c=e?(yield Xp()).find(d=>!tL.has(d.deviceId)):(yield Zp()).find(d=>!tL.has(d.deviceId));c&&(this.log.warn("".concat(o," capture fail ").concat(a," times, change new ").concat(c.deviceId)),o=c.deviceId)}}return o})}stopCapture(){var e;this.sourceTrack&&(this.sourceTrack.stop(),F.emit(sA.LOCAL_TRACK_STOPPED,{track:this}),this.uninstallTrackEvent(this.sourceTrack)),this._inputTrack&&this.uninstallTrackEvent(this._inputTrack),(e=this.manager)==null||e.removeInput(this),this._onMuteTimeoutId&&clearTimeout(this._onMuteTimeoutId)}close(){super.close(),this.stopCapture()}};di([lc(Zs.INIT,"ready",{ignoreError:!0,sync:!0})],AL.prototype,"setStateToReady"),di([Wk()],AL.prototype,"capture"),di([lc("ready","publish",{ignoreError:!0,success(){F.emit(sA.LOCAL_TRACK_PUBLISHED,{track:this,room:this.room}),this.emit("4",{mediaType:this.strMediaType,state:"started",prevState:"starting"}),this.log.info("published")},fail(A){var e;(e=this.room)==null||e.localTracks.delete(this);let o="error",a=A instanceof si?A:A.cause instanceof si?A.cause:A,c=!1;a instanceof si&&(a.message.includes("timeout")?o="timeout":a.code===Et.API_CALL_ABORTED&&(c=!0,o="api-call")),this.emit("4",{mediaType:this.strMediaType,state:"stopped",prevState:"starting",reason:o,error:a}),this.log[c?"info":"error"]("publish failed",a)}}),py(521714,!1)],AL.prototype,"publish"),di([jr(A=>function(){return KA(this,null,function*(){let e=this.state==="publish"?"started":"starting";A.call(this),this.emit("4",{mediaType:this.strMediaType,state:"stopped",prevState:e,reason:"api-call"}),clearTimeout(this._encodeCheckTimeoutId)})}),lc([],"ready",{sync:!0})],AL.prototype,"unpublish");var eL=AL,tL=new Map;F.on(sA.SWITCH_DEVICE_SUCCESS,A=>{A.track.deviceId&&tL.delete(A.track.deviceId)});var PM=class RL extends eL{constructor(e){super(1,EeA),Y(this,"mediaType",1),Y(this,"volume",0),Y(this,"profile",{echoCancellation:!0,autoGainControl:!0,noiseSuppression:!0,sampleRate:48e3,channelCount:1,bitrate:40}),Y(this,"playerMuted",!0),Y(this,"pipeline"),Y(this,"earMonitorGainNode",new FI),Y(this,"_output",new FI),Y(this,"codecPipeline",[]),Y(this,"stat",{bytesSent:0,packetsSent:0,audioLevel:0,totalAudioEnergy:0}),Y(this,"mixedAudioReferenceMap",new Map),Y(this,"isAudioContextLongSuspended",!1),Y(this,"after3aSilenceStartTime",0),Y(this,"_micMuted",!1),Y(this,"_volumeDetectionTrack",null),Y(this,"_volumeDetectionSource",new FI),this.manager=e,this.pipeline=new H4(e),this.pipeline.source.pipeTo(this.player.pipeline.volumeMeter),this.pipeline.gain.pipeTo(this.earMonitorGainNode).pipeTo(this._output),this.pipeline.gain.pipeTo(this.player.pipeline.volumeMeterAfter3A),this._volumeDetectionSource.pipeTo(this.player.pipeline.volumeMeter),this.handleMicrophoneAdded=this.handleMicrophoneAdded.bind(this),this.handleMicrophoneRemoved=this.handleMicrophoneRemoved.bind(this),F.on(sA.AUDIO_CONTEXT_LONG_SUSPENDED,this.handleAudioContextLongSuspended,this)}get dbVolume(){return J2.isRunning?this.player.pipeline.volumeMeter.getVolumeDb():Math.floor(Math.max(10*Math.log10(this.volume)+100,0))}getAudioLevel(){let e=(this.volume||super.getAudioLevel())*this.captureVolume;return e>1?1:e}getInternalAudioLevelAfter3A(){if(this.pipeline.isProcessEnabled)return this.player.getInternalAudioLevelAfter3A()}updateAfter3aSilenceStartTime(e){Je(e)||(e!==0||this.after3aSilenceStartTime?e>0&&(this.after3aSilenceStartTime=0):this.after3aSilenceStartTime=ko())}setInputMediaStreamTrack(e){return KA(this,null,function*(){let o=this.trackSettings||{};Ai.addEnum({key:501701,value:o.channelCount||0,useUV:!1}),Ai.addEnum({key:501702,value:o.sampleRate||0,useUV:!1}),Ai.addEnum({key:502700,value:0});let{sampleRate:a,channelCount:c}=o;this._log.info("local audio track input ".concat(JSON.stringify({sampleRate:a,channelCount:c}))),this.pipeline.source.channelCount=c||1,this.pipeline.replaceSource(e),yield TI(RL.prototype,this,"setInputMediaStreamTrack").call(this,e),this.updatePlayingState(!!e)})}capture(e){return KA(this,arguments,function(o){var a=this;let{deviceId:c,customSource:d,useExactDeviceId:C=!0,retryWhenExactFailed:y}=o,S=arguments.length>1&&arguments[1]!==void 0&&arguments[1];return function*(){let b=yield TI(RL.prototype,a,"capture").call(a,{video:!1,audio:!0,microphoneId:c,echoCancellation:a.profile.echoCancellation,autoGainControl:a.profile.autoGainControl,noiseSuppression:a.profile.noiseSuppression,sampleRate:a.profile.sampleRate,channelCount:a.profile.channelCount,useExactDeviceId:C,retryWhenExactFailed:y,customSource:d},S);return Kk(),b}()})}switchDevice(e){return KA(this,null,function*(){if(this.mediaTrack){if(this.deviceId===e&&!this.isUseCustomSource&&(e!==qS||(yield Z4(this.groupId,this.label))))return;try{this.log.info("switchDevice audio to: ".concat(e)),this.sourceTrack&&this.sourceTrack.stop(),yield this.capture({deviceId:e,useExactDeviceId:!0,retryWhenExactFailed:!1}),F.emit(sA.SWITCH_DEVICE_SUCCESS,{track:this}),this.log.info("switch microphone success")}catch(o){throw this.log.error("switch microphone failed ".concat(o)),this.deviceId&&this.recapture(this.deviceId),o}}})}listenDeviceChange(){Pc&&!Pc.listeners("audioInputRemoved").includes(this.handleMicrophoneRemoved)&&Pc.on("audioInputRemoved",this.handleMicrophoneRemoved,this)}handleMicrophoneRemoved(e){return KA(this,null,function*(){if(e.deviceId===this.deviceId){let o=this.recaptureMode===1;if(this.log.warn("RecaptureMode: ".concat(YK[this.recaptureMode],". Current microphone is lost: ").concat(JSON.stringify(e))),this.recaptureMode===0){Jg(this.userId,{eventId:2003,param1:6,streamType:1});let a=yield Zp();a[0]?this.recapture(a[0].deviceId):o=!0}o&&Pc.on("audioInputAdded",this.handleMicrophoneAdded,this)}})}handleMicrophoneAdded(e){this.recaptureMode===1&&e.deviceId!==this.deviceId||(Pc.off("audioInputAdded",this.handleMicrophoneAdded,this),this.log.warn("microphone added: ".concat(JSON.stringify(e))),this.recapture(e.deviceId))}update3A(e){return KA(this,arguments,function(o){var a=this;let{echoCancellation:c,noiseSuppression:d,autoGainControl:C}=o;return function*(){let y=a.sourceTrack||a.mediaTrack;if(!y)return;let S=y.getConstraints(),b=!1;!Je(c)&&c!==a.profile.echoCancellation&&(a.profile.echoCancellation=c,S.echoCancellation=c,b=!0),!Je(d)&&d!==a.profile.noiseSuppression&&(a.profile.noiseSuppression=d,S.noiseSuppression=d,b=!0),!Je(C)&&C!==a.profile.autoGainControl&&(a.profile.autoGainControl=C,S.autoGainControl=C,b=!0),b&&(er||Bg?yield y.applyConstraints(S).catch(V=>a._log.warn("update3A failed: ",V)):a.deviceId&&(yield a.recapture(a.deviceId,!0)))}()})}get captureVolume(){return this.pipeline.volume}setCaptureVolume(e){this.pipeline.setVolume(e/100),this.pipeline.gain.node&&Ai.addEnum({key:502700,value:2})}setMute(e,o){var a;this._cleanupVolumeDetectionTrack(),e==="microphone"?(this._micMuted=!0,this.sourceTrack&&(this.sourceTrack.enabled=!1),o&&this._setupVolumeDetectionTrack(),((a=this.manager)==null?void 0:a.mixWeight)<=1?(this.muted=!0,this._inputTrack&&(this._inputTrack.enabled=!1),this._outputTrack&&(this._outputTrack.enabled=!1),this.emit("mute",this),F.emit(sA.TRACK_MUTED,{track:this})):this._outputTrack&&(this._outputTrack.enabled=!0)):e===!0?(this._micMuted=!1,this.muted=!0,this.sourceTrack&&(this.sourceTrack.enabled=!1),this._inputTrack&&(this._inputTrack.enabled=!1),this._outputTrack&&(this._outputTrack.enabled=!1),o&&this._setupVolumeDetectionTrack(),this.emit("mute",this),F.emit(sA.TRACK_MUTED,{track:this})):(this._micMuted=!1,this.muted=!1,this.sourceTrack&&(this.sourceTrack.enabled=!0),this._inputTrack&&(this._inputTrack.enabled=!0),this._outputTrack&&(this._outputTrack.enabled=!0),this.emit("unmute",this),F.emit(sA.TRACK_UNMUTED,{track:this}))}_setupVolumeDetectionTrack(){let e=this.sourceTrack||this.mediaTrack;if(!e)return;this._volumeDetectionTrack=e.clone(),this._volumeDetectionTrack.enabled=!0;let o=Y2(this._volumeDetectionTrack);o&&this._volumeDetectionSource.setNode(o)}_cleanupVolumeDetectionTrack(){this._volumeDetectionTrack&&(this._volumeDetectionTrack.stop(),this._volumeDetectionTrack=null),this._volumeDetectionSource.deleteNode()}get isMicMuted(){return this._micMuted}setAudioVolume(e){super.setAudioVolume(0),eg&&this.player.setMuted(!0),this.earMonitorGainNode.node||(this.earMonitorGainNode.setNode(UI().createGain()),this._output.setNode(UI().destination)),this.earMonitorGainNode.node.gain.value=e}enableTrackANS(e){return this.update3A({noiseSuppression:e})}enableTrackAEC(e){if(this.sourceTrack&&!Bg&&!eg)return this.update3A({echoCancellation:e})}addDenoiser(e){var o;$E<=92&&((o=this.trackSettings)==null?void 0:o.sampleRate)!==48e3?this._log.warn("denoiser only support sampleRate 48000 before chrome 93"):(Ai.addEnum({key:502700,value:1}),this.pipeline.denoiser.setNode(e),this.enableTrackANS(!1))}mixAudioReference(e,o){if(this.mixedAudioReferenceMap.has(o))return;this.log.info("mixAudioReference() => ".concat(o));let a=Y2(e);if(!a)return;let c=new FI,d=UI().createGain();d.gain.value=1;let C=new FI;c.pipeTo(C).pipeTo(this.pipeline.mixNode),c.setNode(a),C.setNode(d),this.mixedAudioReferenceMap.set(o,[c,C])}unMixAudioReference(e){let[o,a]=this.mixedAudioReferenceMap.get(e)||[];o&&(this.log.info("unMixAudioReference() => ".concat(e)),o.deleteNode(),a?.deleteNode(),this.mixedAudioReferenceMap.delete(e))}setAudioReferenceVolume(e,o){let[a,c]=this.mixedAudioReferenceMap.get(e)||[];c!=null&&c.node&&(c.node.gain.value=o/100,this.log.info("setAudioReferenceVolume() => ".concat(e," ").concat(c.node.gain.value)))}addAudioProcessor(e,o,a){this.pipeline.silentNode.setNode(a),this.pipeline.mixNode.setNode(o),this.pipeline.aec.setNode(e)}removeDenoiser(e){if(this.pipeline.denoiser.node===e)return this.pipeline.denoiser.deleteNode(),this.enableTrackANS(!0)}removeAudioProcessor(e){this.pipeline.aec.node===e&&(this.pipeline.aec.deleteNode(),this.pipeline.silentNode.deleteNode(),this.pipeline.mixNode.deleteNode())}close(){this._cleanupVolumeDetectionTrack(),this.mixedAudioReferenceMap.forEach(e=>{let[o,a]=e;o.deleteNode(),a.deleteNode()}),this.mixedAudioReferenceMap.clear(),this.pipeline.remove(),this.earMonitorGainNode.deleteNode(),this._output.deleteNode(),Pc.off("audioInputAdded",this.handleMicrophoneAdded,this),Pc.off("audioInputRemoved",this.handleMicrophoneRemoved,this),F.off(sA.AUDIO_CONTEXT_LONG_SUSPENDED,this.handleAudioContextLongSuspended,this),super.close()}recapture(e){let o=arguments.length>1&&arguments[1]!==void 0&&arguments[1];return KA(this,null,function*(){try{yield TI(RL.prototype,this,"recapture").call(this,e,o)}catch(a){let c=(yield Zp()).find(d=>d.deviceId!==e);if(!c)throw a;yield TI(RL.prototype,this,"recapture").call(this,c.deviceId)}})}encodeFrame(e){return this.manager?this.manager.encodePipeline.reduceRight((o,a)=>a?a({frame:o,ntp:kf()}):o,e):e}get enableEncodeFrame(){return!!this.manager&&this.manager.encodePipeline.some(e=>e)}get enableEncryptFrame(){return this.manager&&!!this.manager.encodePipeline[0]}handleAudioContextLongSuspended(e){let{isSuspended:o}=e;if(this.pipeline.isProcessEnabled)if(o){this.isAudioContextLongSuspended=!0,this.log.warn("context has suspended for ".concat(1.5," seconds, change to source audio").concat(Up?"":", non-Safari"));let a=this.sourceTrack||this.mediaTrack;a&&this.setOutputMediaStreamTrack(a)}else this.isAudioContextLongSuspended=!1,this.log.warn("context has resumed, change to processed audio"),this.pipeline.track&&this.setOutputMediaStreamTrack(this.pipeline.track)}setOutputMediaStreamTrack(e){if(this.isAudioContextLongSuspended){let o=this.sourceTrack||this.mediaTrack;o&&(e=o)}super.setOutputMediaStreamTrack(e)}};function e1(A,e){return e+4<=A.byteLength&&A.getUint8(e)===0&&A.getUint8(e+1)===0&&A.getUint8(e+2)===0&&A.getUint8(e+3)===1?4:e+3<=A.byteLength&&A.getUint8(e)===0&&A.getUint8(e+1)===0&&A.getUint8(e+2)===1?3:0}function v5(A){let e=arguments.length>1&&arguments[1]!==void 0&&arguments[1],o=new DataView(A),a=[],c=0;for(;c0){C=J;break}let y=C===-1?o.byteLength:C,S=y-c,b=new ArrayBuffer(S),V=new DataView(b);for(let J=0;J1&&arguments[1]!==void 0&&arguments[1];this.dataView=A,this.isSEI&&(e?this.addPreventionByte():this.removePreventionByte())}addPreventionByte(){let{seiPayloadStartIndex:A}=this,e=this.dataView.byteLength-2,o=[],a=0;for(let d=A;d<=e;d++){let C=this.dataView.getInt8(d);switch(C){case 0:case 1:case 2:case 3:a===2&&(o.push(3),a=0),C===0?a+=1:a=0,o.push(C);break;default:a=0,o.push(C)}}o.push(this.dataView.getInt8(this.dataView.byteLength-1));let c=new DataView(new Uint8Array([...new Uint8Array(this.dataView.buffer).slice(0,A),...o]).buffer);this.dataView=c}removePreventionByte(){let{seiPayloadStartIndex:A}=this,e=this.dataView.byteLength-1,o=[],a=0;for(let d=A;d<=e;d++)switch(this.dataView.getInt8(d)){case 0:a++,o.push(this.dataView.getInt8(d));break;case 3:a!==2&&o.push(this.dataView.getInt8(d)),a=0;break;default:o.push(this.dataView.getInt8(d)),a=0}let c=new DataView(new Uint8Array([...new Uint8Array(this.dataView.buffer).slice(0,A),...o]).buffer);this.dataView=c}get seiPayloadStartIndex(){let A=6;for(let e=6;e=this.dataView.byteLength?0:31&this.dataView.getUint8(A)}getStartCodeLength(){return this.dataView.byteLength>=4&&this.dataView.getUint8(0)===0&&this.dataView.getUint8(1)===0&&this.dataView.getUint8(2)===0&&this.dataView.getUint8(3)===1?4:this.dataView.byteLength>=3&&this.dataView.getUint8(0)===0&&this.dataView.getUint8(1)===0&&this.dataView.getUint8(2)===1?3:0}get isIDR(){return this.naluType===5}get isSPS(){return this.naluType===7}get isPPS(){return this.naluType===8}get isSEI(){return this.naluType===6}},UtA=class{constructor(){Y(this,"_seiMessageList",[]),Y(this,"_smallSeiMessageList",[]),Y(this,"_seiPayloadType",243)}encodeSEINalu(A){let e=A.byteLength,o=parseInt(String(e/255),10),a=e%255,c=[];c.push(0,0,0,1,6,this._seiPayloadType);for(let C=0;C0&&A.data.byteLength>0){let a=9-this.getNaluCount(A.data);if(a<=0)return 0;let c=o.splice(0,a).reverse().map(this.encodeSEINalu.bind(this)),d=c.reduce((V,J)=>V+J.dataView.byteLength,0),C=new ArrayBuffer(d+A.data.byteLength),y=new DataView(C),S=new DataView(A.data),b=0;for(let V=0;V1&&arguments[1]!==void 0?arguments[1]:4,vo),Y(this,"profile",mi({},PS)),Y(this,"avoidCropping",!1),Y(this,"_scaleResolutionDownBy"),Y(this,"stat",{bytesSent:0,packetsSent:0,framesEncoded:0,framesSent:0,frameWidth:0,frameHeight:0,fpsCapture:0,framesCaptured:0}),Y(this,"small"),Y(this,"isNeedToSetBandwidth"),Y(this,"muteImage"),Y(this,"manager"),Y(this,"_seiCodec",new UtA),this.manager=e;let o=()=>{var a;if(this.isAllowed2k4k(this.profile))this.room&&this.settings.height>=1440&&this.state==="publish"&&this.room.sendAbilityStatus({"2k4k":1});else{let c=qd(((a=this.room)==null?void 0:a.sdkAppId)||0)?pb:e0;this.log.warn("Resolution is reset to 1080p, need to upgrade ability here ".concat(c)),this.setProfile(Qo(mi({},this.profile),{width:1920,height:1080})),this.applyProfile()}};this.on("input-media-track-changed",o),this.on("publish",o),this.handleCameraAdded=this.handleCameraAdded.bind(this),this.handleCameraRemoved=this.handleCameraRemoved.bind(this)}get facingMode(){if(dy&&this.mediaTrack)return this.mediaTrack.getSettings().facingMode}get contentHint(){var e;return((e=this._inputTrack)==null?void 0:e.contentHint)||""}get isQosClearFirst(){var e;return((e=this._inputTrack)==null?void 0:e.contentHint)==="detail"}get hasSmall(){var e;return!((e=this.manager)==null||!e.hasSmall)}setMute(e){return KA(this,null,function*(){var o,a,c;if(Yn(e)){if(this.muteImage===e)return;yield(o=this.manager)==null?void 0:o.deleteWatermark("mute"),yield(a=this.manager)==null?void 0:a.setWatermark({x:0,y:0,width:this.settings.width,height:this.settings.height,type:"mute",zIndex:999,imageUrl:e,fillVideo:!0}),this.muteImage=e,TI(S_.prototype,this,"setMute").call(this,!1)}else this.muteImage&&(yield(c=this.manager)==null?void 0:c.deleteWatermark("mute"),this.muteImage=void 0),TI(S_.prototype,this,"setMute").call(this,e)})}capture(e){return KA(this,arguments,function(o){var a=this;let{deviceId:c,facingMode:d,useExactDeviceId:C=!0,customSource:y,retryWhenExactFailed:S=!0}=o;return function*(){let b={audio:!1,video:!0,facingMode:d||a.facingMode,cameraId:c,width:a.profile.width,height:a.profile.height,frameRate:a.profile.frameRate,useExactDeviceId:C,retryWhenExactFailed:S,customSource:y};if(b.facingMode==="environment"){let V=yield a.getDeviceIdWhenUsingBackCamera();V&&(b.cameraId=V)}return TI(S_.prototype,a,"capture").call(a,b)}()})}setProfile(e){var o;let a=this.fallbackProfile(e);if(a.bitrate&&(this.isNeedToSetBandwidth=a.bitrate!==this.profile.bitrate),this.isAllowed2k4k(this.profile))super.setProfile(a);else{let c=qd(((o=this.room)==null?void 0:o.sdkAppId)||0)?pb:e0;this.log.warn("Resolution is reset to 1080p, need to upgrade ability here ".concat(c)),super.setProfile(Qo(mi({},this.profile),{width:1920,height:1080}))}}applyProfile(){return KA(this,null,function*(){var e,o;if(!this.mediaTrack)return;let{width:a=0,height:c=0}=(this.sourceTrack||this.mediaTrack).getSettings(),d=a*c,C=this.settings,y=C.height!==this.profile.height||C.width!==this.profile.width||C.frameRate!==this.profile.frameRate;if(y&&(zd===16&&this.deviceId?yield this.recapture(this.deviceId):(wp(this.outMediaTrack)?yield(e=this.outMediaTrack)==null?void 0:e.applyConstraints({width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate}):yield(o=this.sourceTrack||this.mediaTrack)==null?void 0:o.applyConstraints({width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate}),this.manager&&this.manager.changeInput(this)),this.room&&this.settings.height>=1440&&this.state==="publish"&&this.room.sendAbilityStatus({"2k4k":1})),this.isNeedToSetBandwidth&&this.room&&this.room.setBandWidth){this.isNeedToSetBandwidth=!1;let{width:S=0,height:b=0}=(this.sourceTrack||this.mediaTrack).getSettings(),V=S*b;return y&&V&&d&&V===d?void this.log.warn("set bandwidth failed: resolution is not changed"):this.room.setBandWidth({bandwidth:this.profile.bitrate,type:YA.VIDEO,videoType:YA.BIG})}})}get settings(){let e={width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate},o=this.sourceTrack||this.mediaTrack;return dy&&o&&Object.assign(e,o.getSettings()),e}get scaleResolutionDownBy(){return this._scaleResolutionDownBy?this._scaleResolutionDownBy:S0(this.settings,this.profile)}isAllowed2k4k(e){var o;return!(this.room&&this.room.scheduleResult&&!this.isScreen&&!(e.height*e.width<3686400))||((o=this.room.scheduleResult.trtcAutoConf)==null?void 0:o["2k4k"])===1}isNeedToSwitchDevice(e){return!(!this.mediaTrack||this.deviceId===e||this.facingMode===e)}switchDevice(e){return KA(this,null,function*(){try{if(!this.isNeedToSwitchDevice(e)&&!this.isUseCustomSource)return;let o={useExactDeviceId:!0,retryWhenExactFailed:!1};e==="user"||e==="environment"?o.facingMode=e:o.deviceId=e,this.sourceTrack&&this.sourceTrack.stop(),yield this.capture(o),F.emit(sA.SWITCH_DEVICE_SUCCESS,{track:this}),this.log.info("switch camera success")}catch(o){throw this.log.error("switch camera failed ".concat(o)),this.deviceId&&this.recapture(this.deviceId),o}})}getDeviceIdWhenUsingBackCamera(){return KA(this,null,function*(){let e;try{if(rk&&!iy&&k2){let o=(yield Xp(!0)).map(c=>{var d;return Qo(mi({},c),{capabilities:(d=c.getCapabilities)==null?void 0:d.call(c)})}).filter(c=>{var d,C;return(C=(d=c.capabilities)==null?void 0:d.facingMode)==null?void 0:C.includes("environment")}),a=o[0];o.forEach(c=>{var d,C,y,S;let{capabilities:b}=c;((d=b.width)!=null&&d.max&&(C=b.height)!=null&&C.max?b.width.max*b.height.max:0)>((y=a.capabilities.width)!=null&&y.max&&(S=a.capabilities.height)!=null&&S.max?a.capabilities.width.max*a.capabilities.height.max:0)&&(a=c)}),a!=null&&a.capabilities&&(this._log.info("use max resolution back camera",a),e=a.deviceId)}}catch(o){this._log.warn("get max res camera failed",o)}return e})}updateSmallConfig(e){return KA(this,null,function*(){var o,a;this._log.info("update small stream config: ".concat(JSON.stringify(e)));let c=!this.small;this.small=this.fallbackProfile(e,!0),yield(o=this.manager)==null?void 0:o.update(),c&&(yield(a=this.room)==null?void 0:a.enableSmall(!0)),this.log.info("update small stream config success")})}fallbackProfile(e){let o=arguments.length>1&&arguments[1]!==void 0&&arguments[1],a=e.width>e.height,c=mi({},e);return e.width*e.height<=19200&&Ha&&gE&&(this.log.warn("".concat(o?"small ":"","resolution is ").concat(e.width,"*").concat(e.height,", fallback to 240*180 for android chrome")),c.width=a?240:180,c.height=a?180:240,c.bitrate=Math.max(e.bitrate,150)),e.width*e.height>921600&&f2&&(c.width=a?1280:720,c.height=a?720:1280,this.log.warn("reset to 1280 * 720 on iOS 13~14")),uk(bI,"14.3")&&sy(bI,"14.0",!0)&&this.on("7",()=>{let d=this.profile.width>this.profile.height;this.profile.width*this.profile.height>307200?(this.profile.width=d?640:480,this.profile.height=d?480:640,this.log.warn("reduce the resolution to 480p on iOS 14.0 ~ 14.2")):this.profile.width*this.profile.height>230400&&(this.profile.width=d?640:360,this.profile.height=d?360:640,this.log.warn("reduce the resolution to 360p on iOS 14.0 ~ 14.2"))}),!o&&this.avoidCropping&&(gE||er)&&!Y0()&&e.width*e.height<=230400&&e.width/e.height===16/9&&(this._scaleResolutionDownBy=1280/e.width,c.width=1280,c.height=720,this.log.warn("capture 720p, scale: ".concat(this._scaleResolutionDownBy))),c}stopSmall(){var e,o;this.small&&(delete this.small,(e=this.manager)==null||e.update(),(o=this.room)==null||o.enableSmall(!1))}listenDeviceChange(){Pc&&!Pc.listeners("videoInputRemoved").includes(this.handleCameraRemoved)&&Pc.on("videoInputRemoved",this.handleCameraRemoved,this)}handleCameraRemoved(e){return KA(this,null,function*(){if(e.deviceId===this.deviceId){let o=this.recaptureMode===1;if(this.log.warn("RecaptureMode: ".concat(YK[this.recaptureMode],". Current camera is lost: ").concat(JSON.stringify(e))),this.recaptureMode===0){Jg(this.userId,{eventId:2003,param1:7,streamType:2});let a=yield Xp();a[0]?this.recapture(a[0].deviceId):o=!0}o&&Pc.on("videoInputAdded",this.handleCameraAdded,this)}})}handleCameraAdded(e){return KA(this,null,function*(){this.recaptureMode===1&&e.deviceId!==this.deviceId||(Pc.off("videoInputAdded",this.handleCameraAdded,this),this.log.warn("camera added: ".concat(JSON.stringify(e))),this.recapture(e.deviceId))})}encodeFrame(e,o){if(!this.manager)return e;let a=o?8:this.mediaType;return this.manager.encodePipeline.reduceRight((c,d)=>d?d({frame:c,mediaType:a}):c,e)}get enableEncodeFrame(){return!!this.manager&&this.manager.encodePipeline.some(e=>e)}play(e,o){return Je(this.mirror)&&!this.isScreen&&this.setMirror("view"),super.play(e,o)}close(){Pc.off("videoInputAdded",this.handleCameraAdded,this),Pc.off("videoInputRemoved",this.handleCameraRemoved,this),super.close()}recapture(e){return KA(this,null,function*(){try{yield TI(S_.prototype,this,"recapture").call(this,e)}catch(o){let a=(yield Xp()).find(c=>c.deviceId!==e);if(!a)throw o;yield TI(S_.prototype,this,"recapture").call(this,a.deviceId)}})}setContentHint(e){this.mediaTrack&&"contentHint"in this.mediaTrack&&(this.mediaTrack.contentHint!==e&&(this.log.info("setContentHint ".concat(e)),this.mediaTrack.contentHint=e),this.outMediaTrack&&this.outMediaTrack.contentHint!==e&&(this.outMediaTrack.contentHint=e))}setRotation(e){this.manager&&(this.isScreen||Je(e)||e!==this.rotation&&(this.rotation=e,this.manager.rotation=e))}};di([FM(function(A){this.setContentHint(A.contentHint||"motion")})],R5.prototype,"capture");var EQ=R5,w5={};Jh(w5,{REPORT_TYPE:()=>M0,buildSSOPackage:()=>$B,bytes2ms:()=>Q0,calculateScaleResolutionDownNumber:()=>S0,concatArrayBuffers:()=>iM,convertObjectNumberToInt:()=>D0,copyProperties:()=>$x,deepClone:()=>Wf,deepCloneBasic:()=>zf,deepMerge:()=>jh,delay:()=>kC,fibonacci:()=>qf,formatedTime:()=>r2,getConstructorName:()=>XS,getContainerFromElement:()=>Pb,getEnv:()=>zx,getFirst16Bits:()=>g2,getInternalVersion:()=>s2,getLast16Bits:()=>v0,getLoggerUrl:()=>Jf,getMediaStreamTrackInfo:()=>Hb,getMuteStateFromFlag:()=>Rp,getNetworkType:()=>h0,getNumNetworkType:()=>Hf,getReconnectionTimeout:()=>vp,getStringByteLength:()=>y0,getTestSignalDomain:()=>Zx,getTurnServer:()=>n2,getUint32Version:()=>Yb,getValueType:()=>Cg,getViewListFromView:()=>eM,glog:()=>e2,ipv4ToUint32:()=>AM,isArray:()=>wa,isAudioWorkletSupported:()=>t2,isBoolean:()=>_r,isConstructor:()=>jf,isEmpty:()=>m0,isFunction:()=>Ra,isLangChinese:()=>Kd,isMediaStreamTrack:()=>Fb,isNumber:()=>bn,isObject:()=>WE,isOverseaSdkAppId:()=>qd,isPlainObject:()=>aE,isPortrait:()=>xb,isPromise:()=>Kf,isRemoteTrack:()=>Ob,isRotate90Or270:()=>XB,isSetSinkIdSupported:()=>i2,isString:()=>Yn,isUndefined:()=>Je,isVideoMixerOutputTrack:()=>wp,loadImage:()=>tM,loadVideo:()=>a2,ms2bytes:()=>A2,ms2samples:()=>p0,normalizeUrl:()=>Jb,performanceNow:()=>ko,promiseAny:()=>$S,samples2ms:()=>Ub,setNetworkTypeFromWebRTC:()=>B0,stringify:()=>Wd,stringifyIncludeValue:()=>f0,throttlePromise:()=>Vb});var FtA=[-1,-1,1,-1,-1,1,1,1],OtA=[0,0,1,0,0,1,1,1],iL=class N3 extends Zs{constructor(e,o){if(super(),this.context=e,Y(this,"name"),Y(this,"input"),Y(this,"output"),Y(this,"texture"),Y(this,"ctx2d",null),Y(this,"fbo"),Y(this,"width",0),Y(this,"height",0),Y(this,"x",0),Y(this,"y",0),Y(this,"program"),Y(this,"vertexShader"),Y(this,"fragmentShader"),Y(this,"totalFrames",0),Y(this,"dropFrames",0),Y(this,"matchInputSize",!0),Y(this,"texCoordBuffer"),Y(this,"positionBuffer"),Y(this,"lastInfo",{name:"",timestamp:0,totalFrames:0,x:0,y:0,width:0,height:0,fps:0}),Y(this,"cost",0),Y(this,"_canvas",null),Y(this,"_image"),Y(this,"log"),this.context.on("disconnect",this.close,this),this.name=o.name,this.log=o.logger,this.matchInputSize=o.matchInputSize!==!1,this.width=o.width||e.width,this.height=o.height||e.height,this._image=o.image,e instanceof dQ)e.ctx&&o.create2d&&(typeof OffscreenCanvas=="function"&&zd!==16?this._canvas=new OffscreenCanvas(this.width,this.height):(this._canvas=document.createElement("canvas"),this._canvas.width=this.width,this._canvas.height=this.height),this.ctx2d=this._canvas.getContext("2d"),this._image=this._canvas);else try{let a=e.ctx;this.texCoordBuffer=this.createBuffer(OtA),this.positionBuffer=this.createBuffer(FtA),o.createTexture!==!1&&(this.texture=a.createTexture(),this.useTexture(),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,a.LINEAR),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MAG_FILTER,a.LINEAR),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_S,a.CLAMP_TO_EDGE),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_T,a.CLAMP_TO_EDGE),a.pixelStorei(a.UNPACK_ALIGNMENT,1)),o.useFbo&&(this.fbo=a.createFramebuffer(),this.useBufferFrame(),this.useTexture(),a.texImage2D(a.TEXTURE_2D,0,a.RGBA,this.width,this.height,0,a.RGBA,a.UNSIGNED_BYTE,null),a.framebufferTexture2D(a.FRAMEBUFFER,a.COLOR_ATTACHMENT0,a.TEXTURE_2D,this.texture,0)),o.useDefaultProgram?this.program=e.defaultProgam:(o.vertexShaderSource||o.fragmentShaderSource)&&(this.vertexShader=o.vertexShaderSource?e.createShader(a.VERTEX_SHADER,o.vertexShaderSource):e.defaultVShader,this.fragmentShader=o.fragmentShaderSource?e.createShader(a.FRAGMENT_SHADER,o.fragmentShaderSource):e.defaultFShader,this.program=e.createProgram(this.vertexShader,this.fragmentShader))}catch(a){this.context.destroy(new si({code:Et.VIDEO_MANAGER_ERROR,extraCode:3,message:"create video node ".concat(this.name," error ").concat(a.message||a)}))}}get image(){return this._image}set image(e){this._image=e}createFramebuffer(e){let o=this.context.ctx,a=o.createFramebuffer();return o.bindFramebuffer(o.FRAMEBUFFER,a),o.framebufferTexture2D(o.FRAMEBUFFER,o.COLOR_ATTACHMENT0,o.TEXTURE_2D,e,0),a}connect(e){for(var o=arguments.length,a=new Array(o>1?o-1:0),c=1;c0&&arguments[0]!==void 0?arguments[0]:0;var o;(o=this.output)==null||o.update(e)}disconnect(){for(var e,o=arguments.length,a=new Array(o),c=0;c{d&&(e.activeTexture(e.TEXTURE0+C),e.bindTexture(e.TEXTURE_2D,d))})}useProgram(){this.context.ctx.useProgram(this.program)}useBufferFrame(){let e=this.context.ctx;e.bindFramebuffer(e.FRAMEBUFFER,this.fbo||null)}createBuffer(e){let o=this.context.ctx,a=o.createBuffer();return o.bindBuffer(o.ARRAY_BUFFER,a),o.bufferData(o.ARRAY_BUFFER,new Float32Array(e),o.STATIC_DRAW),a}setTexBuffer(e){let o=this.context.ctx;o.bindBuffer(o.ARRAY_BUFFER,this.texCoordBuffer),o.bufferData(o.ARRAY_BUFFER,new Float32Array(e),o.STATIC_DRAW)}setPosBuffer(e){let o=this.context.ctx;o.bindBuffer(o.ARRAY_BUFFER,this.positionBuffer),o.bufferData(o.ARRAY_BUFFER,new Float32Array(e),o.STATIC_DRAW)}changeBufferData(e,o){let a=this.context.ctx;a.bindBuffer(a.ARRAY_BUFFER,e),a.bufferData(a.ARRAY_BUFFER,new Float32Array(o),a.STATIC_DRAW)}setAttributes(){let e=this.context.ctx;for(var o=arguments.length,a=new Array(o),c=0;c{e.enableVertexAttribArray(C),e.bindBuffer(e.ARRAY_BUFFER,d),e.vertexAttribPointer(C,2,e.FLOAT,!1,0,0)})}getVertexPoint(e,o){return[e/this.width*2-1,o/this.height*2-1]}layout2texCoords(e){return[...this.getVertexPoint(e.x,e.y),...this.getVertexPoint(e.x+e.width,e.y),...this.getVertexPoint(e.x,e.y+e.height),...this.getVertexPoint(e.x+e.width,e.y+e.height)]}resize(e,o){if(this.width!==e||this.height!==o){if(this.width=e,this.height=o,this._canvas&&(this._canvas.width=e,this._canvas.height=o),this.texture&&this.fbo){this.useTexture();let a=this.context.ctx;a.texImage2D(a.TEXTURE_2D,0,a.RGBA,e,o,0,a.RGBA,a.UNSIGNED_BYTE,null)}this.output&&this.output.matchInputSize&&this.output.resize(e,o)}}draw(e,o){this.setAttributes(e||this.positionBuffer,o||this.texCoordBuffer);let a=this.context.ctx;a.drawArrays(a.TRIANGLE_STRIP,0,4)}draw2d(e,o,a,c,d,C,y,S,b){let V=!(Je(C)||Je(y)||Je(S)||Je(b));return!(!this.ctx2d||!e)&&(e instanceof ImageData?(V?this.ctx2d.putImageData(e,o,a,C,y,S,b):this.ctx2d.putImageData(e,o,a),this.emit(N3.RENDER,this.ctx2d.canvas)):(V?this.ctx2d.drawImage(e,C,y,S,b,o,a,c,d):this.ctx2d.drawImage(e,o,a,c,d),this.emit(N3.RENDER,e)),typeof VideoFrame<"u"&&e instanceof VideoFrame&&e.close(),!0)}drawBackGround2d(e){this.ctx2d&&(this.ctx2d.save(),this.ctx2d.fillStyle=e,this.ctx2d.fillRect(0,0,this.width,this.height),this.ctx2d.restore())}getInfo(){var e;let{totalFrames:o,x:a,y:c,width:d,height:C,name:y,cost:S}=this,b=Date.now(),V=(o-this.lastInfo.totalFrames)/((b-this.lastInfo.timestamp)/1e3)|0;return this.lastInfo={totalFrames:o,x:a,y:c,width:d,height:C,timestamp:b,fps:V,name:y,cost:S},mi({parent:(e=this.input)==null?void 0:e.getInfo()},this.lastInfo)}createTexture(e){let o=this.context.ctx,a=o.createTexture();return this.useTextures(a),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_MIN_FILTER,o.LINEAR),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_MAG_FILTER,o.LINEAR),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_S,o.CLAMP_TO_EDGE),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_T,o.CLAMP_TO_EDGE),o.pixelStorei(o.UNPACK_ALIGNMENT,1),o.texImage2D(o.TEXTURE_2D,0,o.RGBA,o.RGBA,o.UNSIGNED_BYTE,e),a}};Y(iL,"RENDER","render"),di([lc(Zs.INIT,"connected",{sync:!0})],iL.prototype,"connect"),di([lc("connected",Zs.INIT,{ignoreError:!0,sync:!0})],iL.prototype,"disconnect"),di([lc([],"closed",{sync:!0})],iL.prototype,"close");var $d=iL,PtA=pa(E5(250),PK(()=>performance.now()),zk()),xtA=[0,1,1,1,0,0,1,0],VK=class extends $d{constructor(A,e){super(A,Object.assign({useDefaultProgram:!0,createTexture:!1,name:"destination"},e)),Y(this,"_intervalId",0),Y(this,"_sequence",0),Y(this,"checkGLError",!1),Y(this,"checkVisibilityChange"),A instanceof dQ?this.ctx2d=A.ctx||null:A.available&&e!=null&&e.mirrorUpAndDown&&this.setTexBuffer(xtA)}start(A){this.log.info("".concat(this.name," start render ").concat(A," fps")),Tr.clearTask(this._intervalId),this._intervalId=Tr.run("intervalInWorker",()=>{if(A!==this.context.frameRate&&(Tr.clearTask(this._intervalId),this.start(this.context.frameRate)),this.requestFrame(this._sequence++),this.checkGLError&&this.context instanceof YC){let e=this.context.ctx.getError();e&&this.context.destroy(new si({code:Et.VIDEO_MANAGER_ERROR,extraCode:5,message:"".concat(this.name," req ").concat(this._sequence," render ").concat(this.totalFrames," faild ").concat(e)}))}},{fps:this.context.frameRate})}render(A){var e;return!((e=this.input)==null||!e.requestFrame(A))&&(this.useProgram(),this.useBufferFrame(),this.useInputTexture(),this.draw(),this.emit($d.RENDER,this.context._canvas),!0)}addInput(A){for(var e=arguments.length,o=new Array(e>1?e-1:0),a=1;a0&&arguments[0]!==void 0?arguments[0]:0;this.state!=="closed"&&(this._intervalId&&(Tr.clearTask(this._intervalId),this._intervalId=0,A===1&&(this.log.info("".concat(this.name," use requestVideoFrameCallback")),this.checkVisibilityChange=()=>{document.hidden&&(this.start(this.context.frameRate),this.log.info("".concat(this.name," use timer")),document.removeEventListener("visibilitychange",this.checkVisibilityChange))},document.addEventListener("visibilitychange",this.checkVisibilityChange))),this.requestFrame(this._sequence++))}removeInput(A){super.removeInput(A),Tr.clearTask(this._intervalId)}resize(A,e){super.resize(A,e),this.context.setSize(A,e)}close(){super.close(),Tr.clearTask(this._intervalId),document.removeEventListener("visibilitychange",this.checkVisibilityChange)}},JK=class extends VK{constructor(A,e){super(A,e),Y(this,"_videoTrack"),Y(this,"_muteOb"),Y(this,"_closedOb",ca(this,"closed")),Y(this,"_subscription"),Y(this,"_canvasContainer"),Number(iQ)<17&&(this._canvasContainer=document.createElement("div"),this._canvasContainer.style.display="none"),[this._videoTrack]=A.canvas.captureStream().getVideoTracks(),this._muteOb=ca(this._videoTrack,"mute"),pa(ca(this._videoTrack,"ended"),lE(this._closedOb),hl(()=>{this.context.destroy(new si({code:Et.VIDEO_MANAGER_ERROR,extraCode:8,message:"video track ended"}))}))}enableCheckMute(){var A;this._subscription=pa(this._muteOb,lE(this._closedOb),A1((A=5e3,e=>{let o=performance.now();pa(PtA,OK(a=>a-o{var e;return!((e=this._videoTrack)==null||!e.muted||document.hidden)}),hl(()=>{this.context.destroy(new si({code:Et.VIDEO_MANAGER_ERROR,extraCode:7,message:"video track muted"}))}))}disableCheckMute(){var A;(A=this._subscription)==null||A.dispose()}get videoTrack(){return this._videoTrack}putCanvasIntoDom(){!this.context._canvas||!this._canvasContainer||document.getElementById(this.context._canvas.id)||(this.log.info("".concat(this.name," put canvas to body")),document.body.appendChild(this._canvasContainer),this._canvasContainer.appendChild(this.context._canvas))}render(A){return this.putCanvasIntoDom(),super.render(A)}render2d(A){return this.putCanvasIntoDom(),super.render2d(A)}close(){var A,e;super.close(),(A=this._videoTrack)==null||A.stop(),delete this._videoTrack,(e=this._canvasContainer)==null||e.remove()}},YtA=class extends JK{render(A){var e;let o=!((e=this.input)==null||!e.requestFrame(A));if(this.context._canvas2d){let a=this.context._canvas2d.getContext("2d");a.clearRect(0,0,this.context._canvas2d.width,this.context._canvas2d.height),a.drawImage(this.context._canvas,0,0,this.context._canvas2d.width,this.context._canvas2d.height),this.emit($d.RENDER,this.context._canvas2d)}else this.emit($d.RENDER,this.context._canvas);return o}},VtA=class extends JK{constructor(A,e,o){super(A,{name:"smallDestination",logger:o}),this.resolution=e}resize(A,e){let o,a=A*e,c=this.resolution.width*this.resolution.height;this.log.info("big res: ".concat(A,"*").concat(e," small res: ").concat(this.resolution.width,"*").concat(this.resolution.height," ")),a>c?o=a/c:(this.log.warn("Small stream resolution is not smaller than big stream, which is invalid. big: ".concat(A," * ").concat(e," small: ").concat(this.resolution.width," * ").concat(this.resolution.height)),o=a/19200),super.resize(A/Math.sqrt(o),e/Math.sqrt(o))}},_5=class extends $d{constructor(A,e){super(A,mi({name:"imageSource"},e)),Y(this,"_lastImage"),Y(this,"_totalFrames",0),Y(this,"_autoResize",!1),Y(this,"_canvasRendered"),Y(this,"videoCallbackId",0),Y(this,"waitingFirstFrame",!0),Y(this,"shouldUpdate",!0),this._autoResize=e?.autoResize!==!1,zd===16&&(this._canvasRendered=uQ(),pa(this._canvasRendered,kK(this._image),X2(o=>o instanceof HTMLCanvasElement?ca(o,"rendered"):FK()),lE(ca(this,"closed")),hl(()=>{this.update()})))}onFirstFrame(){this.waitingFirstFrame=!1}tryVideoFrameCallback(){if(!this.shouldUpdate)return;let A=this.image;this.videoCallbackId&&A.cancelVideoFrameCallback(this.videoCallbackId),Kp()&&!document.hidden&&(this.videoCallbackId=A.requestVideoFrameCallback((e,o)=>{this.waitingFirstFrame&&this.onFirstFrame(),document.hidden||(this._totalFrames=o.presentedFrames,this.update(1))}))}_render(A,e){var o;let{width:a,height:c}=this,{image:d}=this;if(d instanceof HTMLVideoElement){if(this.tryVideoFrameCallback(),{videoWidth:a,videoHeight:c}=d,!a||!c)return!1;d.width=a,d.height=c}else if(d instanceof HTMLImageElement||d instanceof ImageData||d instanceof ImageBitmap){if({width:a,height:c}=d,d!==this._lastImage)this._lastImage=d;else if(a===this.width&&c===this.height)return!0}else d instanceof HTMLCanvasElement||d instanceof OffscreenCanvas?({width:a,height:c}=d,this._lastImage=d):typeof VideoFrame<"u"&&d instanceof VideoFrame&&({displayWidth:a,displayHeight:c}=d,(o=this._lastImage)==null||o.close(),this._lastImage=d);if(!this._autoResize)return!0;if(this.width===a&&this.height===c&&this.totalFrames){if(e){this.useTexture();let C=this.context.ctx;C.texSubImage2D(C.TEXTURE_2D,0,0,0,C.RGBA,C.UNSIGNED_BYTE,d)}}else{if(e){this.useTexture();let C=this.context.ctx;C.texImage2D(C.TEXTURE_2D,0,C.RGBA,C.RGBA,C.UNSIGNED_BYTE,d)}this.resize(a,c)}return!0}get image(){return this._image}set image(A){var e;(e=this._canvasRendered)==null||e.next(A),this._image=A}render(A){return this._render(A,!0)}render2d(A){return this._render(A,!1)}},T5=class extends _5{constructor(A,e,o){super(A,o),this._player=e,this.name="videoPlayerSource",pa(ca(this._player,fo.PLAYER_STATE_CHANGED),lE(ca(this,"closed")),OM(a=>{let{state:c}=a;return c==="PLAYING"}),hl(()=>{this.tryVideoFrameCallback()}))}get image(){return this._player.element}},a_=class extends T5{get available(){return this._player.isPlaying&&!this.waitingFirstFrame}constructor(A,e,o){super(A,new vo({id:o.name,track:e,muted:!0,container:null,objectFit:"contain",log:o.logger}),o),this.name="videoTrackSource",this._player.play()}replaceTrack(A){this.waitingFirstFrame=!0,this._player.setTrack(A),this._player.play()}close(){super.close(),this._player.stop()}},JtA=class extends $d{constructor(A,e,o){super(A,Qo(mi({name:"textSource"},o),{create2d:!0})),Y(this,"hasChange",!0),Y(this,"content",""),this.ctx2d.textBaseline="top",this.content=e.content||"",e.font&&(this.font=e.font),e.color&&(this.color=e.color)}set font(A){this.ctx2d&&(this.ctx2d.font=A,this.hasChange=!0)}get font(){var A;return((A=this.ctx2d)==null?void 0:A.font)||""}set color(A){this.ctx2d&&(this.ctx2d.fillStyle=A,this.hasChange=!0)}get color(){var A;return((A=this.ctx2d)==null?void 0:A.fillStyle)||""}render2d(A){return!(!this.ctx2d||!this.hasChange)&&(this.ctx2d.clearRect(0,0,this.width,this.height),this.drawMultilineText(0,0),this.hasChange=!1,!0)}render(A){return!1}resize(A,e){if(!this.ctx2d)return;let{color:o,font:a}=this;super.resize(A,e),this.color=o,this.font=a}drawMultilineText(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1.2;if(!this.ctx2d)return;let a=this.ctx2d.measureText(this.content);e+=a.fontBoundingBoxAscent||a.actualBoundingBoxAscent||0;let c=this.font.match(/(\d+)px/),d=(c?parseInt(c[1],10):16)*o,C=this.content.split(` +`);for(let y=0;y0&&arguments[0]!==void 0&&arguments[0];if(this._canvas||(this._canvas=document.createElement("canvas"),this._canvas.id="trtc_".concat(this.name,"_").concat(oL._ids++)),A&&(this._canvas2d=document.createElement("canvas")),this.ctx=this._canvas.getContext("webgl2",_b),!this.ctx)throw new si({code:Et.VIDEO_MANAGER_ERROR,extraCode:2,message:"webgl2 not supported"});this.defaultVShader=this.createShader(this.ctx.VERTEX_SHADER,` // 顶点着色器 attribute vec4 a_position; attribute vec2 a_texCoord; @@ -300,27 +300,27 @@ uniform sampler2D u_texture; void main() { gl_FragColor = texture2D(u_texture, v_texCoord); -} `),this.defaultProgam=this.createProgram(this.defaultVShader,this.defaultFShader),this._canvas.addEventListener("webglcontextlost",()=>{this.destroy(new oi({code:lt.VIDEO_MANAGER_ERROR,extraCode:4,message:"webgl context lost"}))})}destroy(A){let e="";return A&&(e=A.message,this.error=A,Ai.addFailedEvent({key:512702,error:A})),this.disconnect(),this.log.info("video context destroy".concat(e)?": ".concat(e):""),this.ctx&&(this.ctx.deleteShader(this.defaultVShader),this.ctx.deleteShader(this.defaultFShader),this.ctx.deleteProgram(this.defaultProgam),delete this.ctx),A}set width(A){var e;(e=this.ctx)==null||e.viewport(0,0,A,this.height),super.width=A,this._canvas2d&&(this._canvas2d.width=A)}set height(A){var e;(e=this.ctx)==null||e.viewport(0,0,this.width,A),super.height=A,this._canvas2d&&(this._canvas2d.height=A)}setSize(A,e){var o;(o=this.ctx)==null||o.viewport(0,0,A,e),super.setSize(A,e),this._canvas2d&&(this._canvas2d.width=A,this._canvas2d.height=e)}createShader(A,e){let o=this.ctx,a=o.createShader(A);return o.shaderSource(a,e),o.compileShader(a),a}createProgram(A,e){let o=this.ctx,a=o.createProgram();return o.attachShader(a,A),o.attachShader(a,e),o.linkProgram(a),o.getProgramParameter(a,o.LINK_STATUS)||this.log.error(o.getProgramInfoLog(a)),a}};Y(Vk,"UNAVAILABLE","unavailable"),di([lc(Zs.INIT,"created",{sync:!0,fail(A){this.log.error("video gl context create failed",A.cause),Ai.addFailedEvent({key:512700,error:A.cause||A})},success(){this.log.info("video context created use webgl"),Ai.addSuccessEvent({key:512700})}})],Vk.prototype,"create"),di([lc("created",Zs.INIT,{ignoreError:!0,sync:!0,success(A){A&&this.emit(Vk.UNAVAILABLE,A),this.removeAllListeners()}})],Vk.prototype,"destroy");var UC=Vk,uQ=class extends Yk{constructor(){super(...arguments),Y(this,"ctx")}create(A){if(this.hasAlpha=A.alpha,this._canvas=document.createElement("canvas"),this._canvas.id="trtc_".concat(this.name,"_").concat(Yk._ids++),this.ctx=this._canvas.getContext("2d",{alpha:A.alpha,willReadFrequently:A.willReadFrequently}),!this.ctx)throw new oi({code:lt.VIDEO_MANAGER_ERROR,extraCode:2,message:"2d context not supported"});this._canvas.addEventListener("contextlost",()=>{this.log.error("2d context lost")}),this._canvas.addEventListener("contextrestored",()=>{this.log.warn("2d context restored")})}destroy(A){let e="";A&&(e=A.message,this.error=A,Ai.addFailedEvent({key:512703,error:A})),this.disconnect(),this.log.info("video context destroy ".concat(e?": ".concat(e):"")),delete this.ctx,this._canvas&&(this._canvas.remove(),this._canvas.width=0,this._canvas.height=0,delete this._canvas),this.removeAllListeners(),Ai.addSuccessEvent({key:512703})}};function stA(A,e,o,a,c){arguments.length>5&&arguments[5]!==void 0&&arguments[5]&&([o,a]=[a,o]);let d={sWidth:A,sHeight:e,dWidth:o,dHeight:a,sx:0,sy:0,dx:0,dy:0};if(A===0||e===0)return d;switch(c){case void 0:case"fill":break;case"contain":{let C=Math.min(o/A,a/e);d.dWidth=A*C,d.dHeight=e*C,d.dx=(o-d.dWidth)/2,d.dy=(a-d.dHeight)/2;break}case"cover":{let C=Math.max(o/A,a/e),y=o/C,S=a/C;d.sx=(A-y)/2,d.sy=(e-S)/2,d.sWidth=y,d.sHeight=S;break}}return d}di([lc(Zs.INIT,"created",{sync:!0,fail(A){this.log.error("video 2d context create failed",A.cause),Ai.addFailedEvent({key:512701,error:A.cause||A})},success(){this.log.info("video context created use 2d"),Ai.addSuccessEvent({key:512701})}})],uQ.prototype,"create"),di([lc("created",Zs.INIT,{ignoreError:!0,sync:!0})],uQ.prototype,"destroy");var ntA=class{constructor(A,e){this.node=A,this.layout=e,Y(this,"positionBuffer")}get x(){return this.layout.x||this.node.x}get y(){return this.layout.y||this.node.y}get width(){return this.layout.width||this.node.width}get height(){return this.layout.height||this.node.height}get right(){return this.x+this.width}get bottom(){return this.y+this.height}get fillMode(){return this.layout.fillMode}get rotation(){return this.layout.rotation}get hidden(){return!!this.layout.hidden}},W4=class extends Kd{constructor(A,e){super(A,{useDefaultProgram:!0,useFbo:!0,name:"mix",create2d:!0,logger:e}),Y(this,"inputs",[]),Y(this,"backgroundColor","black")}addInput(A,e){let o=0,a=this.inputs.length;for(;oe.zIndex))throw new Error("input already exists at zIndex ".concat(e.zIndex));a=d}}let c=new ntA(A,e);this.inputs.splice(o,0,c)}changeInputLayout(A,e){let o=this.inputs.findIndex(gA=>gA.node===A);if(o<0)return;let{x:a,y:c,width:d,height:C,zIndex:y,fillMode:S,rotation:b,hidden:V}=e;if(!Ye(y)&&this.inputs.some(gA=>gA.layout.zIndex===y&&gA.node!==A))throw new Error("input already exists at zIndex ".concat(e.zIndex));let J=this.inputs[o];Ye(a)||(J.layout.x=a),Ye(c)||(J.layout.y=c),Ye(d)||(J.layout.width=d),Ye(C)||(J.layout.height=C),Ye(b)||(J.layout.rotation=b),Ye(V)||(J.layout.hidden=V),S&&(J.layout.fillMode=S),!Ye(y)&&y!==J.layout.zIndex&&(J.layout.zIndex=y,this.inputs.sort((gA,CA)=>gA.layout.zIndex-CA.layout.zIndex))}hasInput(A){return this.inputs.some(e=>e.node===A)}hasNoInput(){return this.inputs.length===0}resize(A,e){if(!this.matchInputSize)return void super.resize(A,e);let o=this.inputs.reduce((a,c)=>c?Object.assign(a,{width:Math.max(a.width,c.right),height:Math.max(a.height,c.bottom)}):a,{width:0,height:0});super.resize(o.width,o.height),this.context instanceof UC&&this.inputs.forEach(a=>{if(a){let c=this.layout2texCoords(a);a.positionBuffer?this.changeBufferData(a.positionBuffer,c):a.positionBuffer=this.createBuffer(c)}})}connect(A){for(var e=arguments.length,o=new Array(e>1?e-1:0),a=1;ae.node!==A),this.inputs.length===0&&this.drawBackGround2d(this.backgroundColor)}render(A){let e=this.context.ctx;if(e.clearColor(0,0,0,0),this.inputs.reduce((o,a)=>a.node.requestFrame(A)||o,!1)&&e){this.useProgram(),e.enable(e.BLEND),e.blendFunc(e.SRC_ALPHA,e.ONE_MINUS_SRC_ALPHA),this.useBufferFrame();for(let o=0;oe.node.requestFrame(A)),this.ctx2d){this.drawBackGround2d(this.backgroundColor);for(let e=0;e4&&arguments[4]!==void 0&&arguments[4];this.ctx2d&&(c&&([o,a]=[a,o]),this.ctx2d.save(),this.ctx2d.strokeStyle="red",this.ctx2d.lineWidth=2,this.ctx2d.strokeRect(A,e,o,a),this.ctx2d.restore())}getInfo(){let{totalFrames:A,x:e,y:o,width:a,height:c,name:d}=this,C=Date.now(),y=(A-this.lastInfo.totalFrames)/((C-this.lastInfo.timestamp)/1e3)|0;return this.lastInfo={totalFrames:A,x:e,y:o,width:a,height:c,timestamp:C,fps:y,name:d},pi({parent:this.inputs.filter(S=>S).map(S=>S.node.getInfo())},this.lastInfo)}removeAllInputs(){this.inputs.forEach(A=>{var e;if(A.node.disconnect(),A.positionBuffer&&this.context instanceof UC)try{(e=this.context.ctx)==null||e.deleteBuffer(A.positionBuffer)}catch{}})}close(){super.close(),this.removeAllInputs()}},rtA=[1,0,0,0,1,1,0,1],Qy=class extends Kd{constructor(A,e,o,a){if(super(A,{useDefaultProgram:!0,useFbo:!0,create2d:!0,name:"transform",logger:e}),Y(this,"mirror",!1),Y(this,"rotation",0),o&&(this.mirror=o),a&&(this.rotation=a),A instanceof UC)try{this.setTexBuffer(rtA)}catch(c){A.destroy(new oi({code:lt.VIDEO_MANAGER_ERROR,extraCode:3,message:"create video node ".concat(this.name," error ").concat(c.message||c)}))}}draw2d(A,e,o,a,c){if(this.ctx2d){this.ctx2d.clearRect(0,0,this.width,this.height),this.ctx2d.save(),this.mirror&&(this.ctx2d.scale(-1,1),this.ctx2d.translate(-this.width,0)),this.rotation===90?(this.ctx2d.translate(a,0),this.ctx2d.rotate(Math.PI/2),this.ctx2d.scale(c/a,a/c)):this.rotation===180?(this.ctx2d.translate(this.width,this.height),this.ctx2d.rotate(Math.PI)):this.rotation===270&&(this.ctx2d.translate(0,c),this.ctx2d.rotate(3*Math.PI/2),this.ctx2d.scale(c/a,a/c));let d=super.draw2d(A,e,o,a,c);return this.ctx2d.restore(),d}return!1}render(A){var e;return!((e=this.input)==null||!e.requestFrame(A))&&(this.useProgram(),this.useBufferFrame(),this.useInputTexture(),this.draw(),!0)}resize(A,e){zB(this.rotation)&&([A,e]=[e,A]),super.resize(A,e)}},CK=class extends Ok{constructor(A){super(arguments.length>1&&arguments[1]!==void 0?arguments[1]:4,Mo),Y(this,"inputLocalVideoTracks",new Map),Y(this,"inputLocalScreenTracks",new Map),Y(this,"cameraNodeMap",new Map),Y(this,"screenNodeMap",new Map),Y(this,"textNodeMap",new Map),Y(this,"imageNodeMap",new Map),Y(this,"videoNodeMap",new Map),Y(this,"endedIds",new Set),Y(this,"videoContext"),Y(this,"mixNode"),Y(this,"destination"),Y(this,"manager"),Y(this,"stat"),Y(this,"_checkId",0),Y(this,"autoSetFps",!0),this.manager=A,this.log.id+="mix",this.create2dVideoContext(),this.destination=this.videoContext.createVideoTrackDestination({name:"mainDestination2d",logger:this.log}),this.destination.on(Kd.RENDER,e=>{this.emit("render",e)}),this.mixNode=new W4(this.videoContext,this.log),this.mixNode.matchInputSize=!1}listenDeviceChange(){throw new Error("Method not implemented.")}enablePrintDetail(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:2e3;this._checkId=_r.run("interval",()=>{this.destination&&this.log.debug(this.destination.getInfo())},{delay:A})}create2dVideoContext(){this.videoContext?this.videoContext.destroy():this.videoContext=new uQ({frameRate:15,logger:this.log,name:"mix-ctx"}),this.videoContext.create({alpha:!1})}setFps(A){this.autoSetFps=!1,this.videoContext.frameRate=A;for(let e of[...this.cameraNodeMap.values(),...this.screenNodeMap.values()])e.shouldUpdate=!1;setTimeout(()=>{var e;return(e=this.destination)==null?void 0:e.start(this.videoContext.frameRate)},500)}setFpsAuto(){var A;if(!this.autoSetFps)return;for(let c of[...this.cameraNodeMap.values(),...this.screenNodeMap.values()])c.shouldUpdate=!1;let e=null,o=0,a=!0;for(let[c,d]of this.inputLocalVideoTracks)if(d.profile.frameRate>o){if(this.endedIds.has(c)){let C=this.cameraNodeMap.get(c);C&&C.image.cancelVideoFrameCallback(C.videoCallbackId);continue}o=d.profile.frameRate,e=c}for(let[c,d]of this.inputLocalScreenTracks)if(d.profile.frameRate>o){if(this.endedIds.has(c)){let C=this.screenNodeMap.get(c);C&&C.image.cancelVideoFrameCallback(C.videoCallbackId);continue}o=d.profile.frameRate,e=c,a=!1}if(e!==null){let c=a?this.cameraNodeMap.get(e):this.screenNodeMap.get(e);c&&(c.shouldUpdate=!0,c.tryVideoFrameCallback()),this.log.info("set mix fps: ",o)}else(A=this.destination)==null||A.start(this.videoContext.frameRate),this.log.info("fallback to timer, fps: ",this.videoContext.frameRate)}setMixBackground(A){this.mixNode&&(this.mixNode.backgroundColor=A)}resizeMixCanvas(A,e){var o;(o=this.mixNode)==null||o.resize(A,e)}startMix(){return KA(this,null,function*(){var A;if(!this.mixNode||!this.destination)throw new Error("can't mix without necessary conditions");this.mixNode.disconnect(),this.mixNode.connect(this.destination),Gp&&this.player.setCanvas(this.videoContext._canvas),this.setOutputMediaStreamTrack(this.destination.videoTrack),(A=this.manager)==null||A.changeInput(this)})}addCameraSource(A,e,o){if(this.inputLocalVideoTracks.has(A)||this.cameraNodeMap.has(A))throw new Error("There is already a cameraSource with the same ID: ".concat(A));let a,{mediaTrack:c}=e;if(!c)throw new Error("no mediaTrack, add cameraSource failed");e.recaptureMode=1,XE(this,Pc).add("videoInputRemoved",d=>{d.deviceId===e.deviceId&&(this.endedIds.add(A),this.setFpsAuto())}),e.on("output-media-track-changed",()=>{this.endedIds.delete(A),this.updateCameraSource(A,o,e.mediaTrack)}),a=Jd===16&&c instanceof CanvasCaptureMediaStreamTrack?this.videoContext.createVideoImageSource(c.canvas,{name:"cameraCanvasSource",logger:this.log}):this.videoContext.createVideoTrackSource(c,"cameraNodeSource"),a.resize(e.settings.width,e.settings.height),a.shouldUpdate=!1,this._connectMix(a,o,"cover"),this.inputLocalVideoTracks.set(A,e),this.cameraNodeMap.set(A,a),this.setFpsAuto()}addScreenSource(A,e,o){if(this.inputLocalScreenTracks.has(A)||this.screenNodeMap.has(A))throw new Error("There is already a screenSource with the same ID: ".concat(A));let{mediaTrack:a}=e;if(!a)throw new Error("no mediaTrack, add screenSource failed");e.on("output-media-track-changed",()=>{this.updateScreenSource(A,o,e.mediaTrack)});let c=this.videoContext.createVideoTrackSource(a,"screenNodeSource");c.resize(e.settings.width,e.settings.height),c.shouldUpdate=!1,this._connectMix(c,o),this.inputLocalScreenTracks.set(A,e),this.screenNodeMap.set(A,c),this.setFpsAuto()}addTextSource(A){let{id:e,content:o="",font:a,color:c,layout:d}=A;if(this.textNodeMap.has(e))throw new Error("There is already a textSource with the same ID: ".concat(e));let C=this.videoContext.createTextSource({content:o,font:a,color:c});C.resize(d.width,d.height),this._connectMix(C,d),this.textNodeMap.set(e,C)}addImageSource(A,e,o){if(this.imageNodeMap.has(A))throw new Error("There is already a imageSource with the same ID: ".concat(A));let a=this.videoContext.createVideoImageSource(e,{autoResize:!1,logger:this.log});a.resize(e.width,e.height),this._connectMix(a,o),this.imageNodeMap.set(A,a)}addVideoSource(A,e,o){if(this.videoNodeMap.has(A))throw new Error("There is already a videoSource with the same ID: ".concat(A));let a=this.videoContext.createVideoImageSource(e,{autoResize:!1,logger:this.log});a.resize(e.videoWidth,e.videoHeight),a.shouldUpdate=!1,this._connectMix(a,o),this.videoNodeMap.set(A,a)}updateCameraSource(A,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:null,a=arguments.length>3?arguments[3]:void 0,c=this.inputLocalVideoTracks.get(A);c&&o&&o!==c.mediaTrack&&(this.log.debug("updateCameraSource mixerLocalVideoTrack newTrack:",o,"oldTrack:",c.mediaTrack),c.setInputMediaStreamTrack(o));let d=this.cameraNodeMap.get(A);if(d){if(o){if(Jd===16&&o instanceof CanvasCaptureMediaStreamTrack)if(d instanceof X0){let S=d.output;d.close(),d=this.videoContext.createVideoImageSource(o.canvas,{name:"cameraCanvasSource",logger:this.log}),d.connect(S),this.cameraNodeMap.set(A,d)}else d.image=o.canvas;else if(d instanceof X0)d.replaceTrack(o);else{let S=d.output;d.close(),d=this.videoContext.createVideoTrackSource(o,"cameraNodeSource"),d.connect(S),this.cameraNodeMap.set(A,d)}let{width:C,height:y}=o.getSettings();C&&y&&d.resize(C,y)}a&&d.resize(a.width,a.height),(a||o)&&this.setFpsAuto(),this._changeMixLayout(d,e)}}updateScreenSource(A,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:null,a=this.inputLocalScreenTracks.get(A);this.log.debug("updateScreenSource mixerLocalScreenTrack",a,o),a&&o&&o!==a.mediaTrack&&a.setInputMediaStreamTrack(o);let c=this.screenNodeMap.get(A);c&&(o&&c.replaceTrack(o),this._changeMixLayout(c,e))}updateTextSource(A){let{id:e,content:o,font:a,color:c,layout:d}=A,C=this.textNodeMap.get(e);C&&(Ye(o)||(C.content=o),Ye(a)||(C.font=a),Ye(c)||(C.color=c),C.resize(d.width,d.height),this._changeMixLayout(C,d))}updateImageSource(A,e,o){let a=this.imageNodeMap.get(A);a&&(o&&(a.image=o,a.resize(o.width,o.height)),this._changeMixLayout(a,e))}updateVideoSource(A,e,o){let a=this.videoNodeMap.get(A);if(a){if(o){let c=a.image;c instanceof HTMLVideoElement&&this.stopVideoElement(c),a.image=o,a.resize(o.videoWidth,o.videoHeight)}this._changeMixLayout(a,e)}}_connectMix(A,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"contain";if(!this.mixNode)return;let{mirror:a,rotation:c}=e;A.disconnect();let d=new Qy(this.videoContext,this.log,a,c);d=A.connect(d),e.fillMode||(e.fillMode=o),d.connect(this.mixNode,e)}_changeMixLayout(A,e){if(!this.mixNode)return;let{mirror:o,rotation:a}=e,c=A.output||A;c instanceof Qy&&(Ye(o)||(c.mirror=o),Ye(a)||(c.rotation=a),c.resize(A.width,A.height)),this.mixNode.changeInputLayout(c,e)}removeCameraSource(A){let e=this.inputLocalVideoTracks.get(A);if(!e)return;e.close(),this.inputLocalVideoTracks.delete(A);let o=this.cameraNodeMap.get(A);o&&(o.output instanceof Qy&&o.output.close(),o.close(),this.cameraNodeMap.delete(A)),this.checkAfterRemove(!0)}removeScreenSource(A){let e=this.inputLocalScreenTracks.get(A);if(!e)return;e.close(),this.inputLocalScreenTracks.delete(A);let o=this.screenNodeMap.get(A);o&&(o.output instanceof Qy&&o.output.close(),o.close(),this.screenNodeMap.delete(A)),this.checkAfterRemove(!0)}removeTextSource(A){let e=this.textNodeMap.get(A);e&&(e.output instanceof Qy&&e.output.close(),e.close(),this.textNodeMap.delete(A)),this.checkAfterRemove()}removeImageSource(A){let e=this.imageNodeMap.get(A);e&&(e.output instanceof Qy&&e.output.close(),e.close(),this.imageNodeMap.delete(A)),this.checkAfterRemove()}removeVideoSource(A){let e=this.videoNodeMap.get(A);e&&(e.output instanceof Qy&&e.output.close(),e.image instanceof HTMLVideoElement&&this.stopVideoElement(e.image),e.close(),this.videoNodeMap.delete(A)),this.checkAfterRemove()}checkAfterRemove(){arguments.length>0&&arguments[0]!==void 0&&arguments[0]&&this.setFpsAuto()}stopVideoElement(A){A.pause(),A.src="",A.srcObject=null,A.remove()}close(){var A;super.close(),_r.clearTask(this._checkId),(A=this.videoContext)==null||A.destroy(),delete this.mixNode,delete this.destination;for(let e of[...this.inputLocalVideoTracks.values(),...this.inputLocalScreenTracks.values()])e.close();this.inputLocalVideoTracks.clear(),this.inputLocalScreenTracks.clear(),this.cameraNodeMap.clear(),this.screenNodeMap.clear(),this.textNodeMap.clear(),this.imageNodeMap.clear(),kn(this);for(let e of this.videoNodeMap.values())e.image instanceof HTMLVideoElement&&this.stopVideoElement(e.image);this.videoNodeMap.clear(),this.log.info("localMixVideoTrack close, stop mix")}},hK=PA();if(typeof navigator<"u"&&navigator.mediaDevices&&"setCaptureHandleConfig"in navigator.mediaDevices)try{navigator.mediaDevices.setCaptureHandleConfig({handle:hK,exposeOrigin:!0,permittedOrigins:["*"]})}catch{}var atA=function(A){return KA(this,null,function*(){let e=null,o=function(d){let C={preferCurrentTab:d.preferDisplaySurface==="current-tab"||!!d.captureElement,systemAudio:"include",selfBrowserSurface:"include",surfaceSwitching:"include"},y={width:Bg?{max:d.width}:{ideal:d.width,max:d.width},height:Bg?{max:d.height}:{ideal:d.height,max:d.height},frameRate:d.frameRate,displaySurface:d.preferDisplaySurface||"monitor"};if(C.video=y,d.systemAudio){let{echoCancellation:S=!0,noiseSuppression:b=!1,autoGainControl:V=!1}=d;C.audio={echoCancellation:S,noiseSuppression:b,autoGainControl:V,sampleRate:48e3}}return C}(A);QA.info("getDisplayMedia with constraints: ".concat(JSON.stringify(o)));let a=yield navigator.mediaDevices.getDisplayMedia(o);A.systemAudio&&a.getAudioTracks().length===0&&(_0&&jE<74||Bg||er)&&QA.warn("Your browser not support capture system audio");let c=a.getVideoTracks()[0];if(c){if(A.frameRate)try{yield c.applyConstraints({frameRate:{min:A.frameRate,ideal:A.frameRate},width:A.width,height:A.height})}catch(d){QA.warn("screen applyConstraints failed: ".concat(d))}A.captureElement&&(yield function(d,C){return KA(this,null,function*(){var y;if("CropTarget"in window&&"fromElement"in CropTarget&&va(d.cropTo))try{if(((y=d.getCaptureHandle())==null?void 0:y.handle)!==hK)return;let S=yield CropTarget.fromElement(C);yield d.cropTo(S)}catch(S){QA.warn("cropTo target failed ".concat(S))}})}(c,A.captureElement))}if(A.audio){let d=function(C){let y={echoCancellation:C.echoCancellation,autoGainControl:C.autoGainControl,noiseSuppression:C.noiseSuppression,sampleRate:C.sampleRate,channelCount:C.channelCount};return Ye(C.microphoneId)||(y.deviceId=C.microphoneId),{audio:y,video:!1}}(A);QA.info("getUserMedia with constraints: ".concat(JSON.stringify(d))),e=yield navigator.mediaDevices.getUserMedia(d),a.addTrack(e.getAudioTracks()[0])}return a})},bM=class extends IQ{constructor(A){super(A,2),Y(this,"profile",{width:1920,height:1080,frameRate:5,bitrate:1600}),Y(this,"objectFit","contain"),Y(this,"isScreen",!0),this._log.id="s-".concat(this._log.id)}get isShareCurrentTab(){var A,e;try{return hK===((e=(A=this.mediaTrack)==null?void 0:A.getCaptureHandle())==null?void 0:e.handle)}catch{return}}capture(A){return KA(this,arguments,function(e){var o=this;let{systemAudio:a=!1,autoGainControl:c,echoCancellation:d,noiseSuppression:C,audioTrack:y,videoTrack:S,captureElement:b,preferDisplaySurface:V}=e;return function*(){var J;try{let gA,CA=bo();return S||y?(gA=new MediaStream,S&&gA.addTrack(S),y&&gA.addTrack(y)):(gA=yield atA({audio:!1,systemAudio:a,width:o.profile.width,height:o.profile.height,frameRate:o.profile.frameRate,autoGainControl:c,echoCancellation:d,noiseSuppression:C,captureElement:b,preferDisplaySurface:V}),o.sourceTrack=gA.getVideoTracks()[0]),yield o.setInputMediaStreamTrack(gA.getVideoTracks()[0]),U.emit(sA.LOCAL_TRACK_CAPTURE_SUCCESS,{track:o,cost:bo()-CA,profile:o.profile,room:(J=o.manager)==null?void 0:J.room}),gA}catch(gA){throw o.log.error("getDisplayMedia error observed ".concat(gA)),gA instanceof oi?gA:new oi({code:lt.INITIALIZE_FAILED,name:gA.name,message:gA.message})}}()})}switchDevice(A){return KA(this,null,function*(){throw new Error("Method not implemented.")})}};di([TM(function(A){this.setContentHint(A.contentHint||"detail")})],bM.prototype,"capture");var BK,QK=class extends GM{constructor(A){super(A),this._log.id="s-".concat(this._log.id),this.isScreen=!0}addAudioProcessor(A,e,o){this.pipeline.silentNode.setNode(o),this.pipeline.mixNode.setNode(e),this.pipeline.aec.setNode(A),this.enableTrackAEC(!1)}removeAudioProcessor(A){this.pipeline.aec.node===A&&(this.pipeline.aec.deleteNode(),this.pipeline.silentNode.deleteNode(),this.pipeline.mixNode.deleteNode(),this.enableTrackAEC(!0))}};function pK(A){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:48e3,o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1,a=arguments.length>3?arguments[3]:void 0;return KA(this,null,function*(){let c=bI();BK||(BK=Vg(c,URL.createObjectURL(new Blob(['registerProcessor("dumper",class extends AudioWorkletProcessor{constructor(e){super(),this.sourceSampleRate=e.processorOptions.sourceSampleRate||48e3,this.targetSampleRate=e.processorOptions.targetSampleRate||48e3,this.port.onmessage=e=>{this.port2=e.data.port}}process(e){return(this.port2||this.port).postMessage(this.resampleAll(e,this.sourceSampleRate,this.targetSampleRate)),!0}resampleAll(r,s,a){if(s===a)return r;var o=[];for(let t=0;ty.connect(C,0,S)),new ReadableStream({start(y){C.port.onmessage=S=>{y.enqueue(S.data)}},cancel(){A.forEach(y=>y.disconnect(C)),C.port.close()}})})}var gtA=class extends DAA{constructor(A){super(),this.room=A,Y(this,"_localAudioTrack"),Y(this,"_localScreenAudioTrack"),Y(this,"log"),Y(this,"denoiser"),Y(this,"voiceChanger"),Y(this,"mixChangedDebounce"),Y(this,"audioProcessor"),Y(this,"encodePipeline",[]),Y(this,"decodePipeline",[]),Y(this,"getPCMAbortCtrlMap",new Map),Y(this,"audioFrameEventConfigMap",new Map),Y(this,"audioReferenceMap",new Map),Y(this,"isLocalAudioNeedAudioProcess",!1),Y(this,"isScreenAudioNeedAudioProcess",!1),this.log=QA.createLogger({parent:A?.getLogger(),id:"am",userId:A?.userId,sdkAppId:A?.sdkAppId}),this.installEvent()}get localAudioTrack(){return this._localAudioTrack}get _localAudioPipline(){var A;return(A=this._localAudioTrack)==null?void 0:A.pipeline}get _localScreenAudioPipeline(){var A;return(A=this._localScreenAudioTrack)==null?void 0:A.pipeline}dump(A){var e,o;if(!this._localAudioTrack)return;let a=[],c=[];(e=this._localAudioPipline)!=null&&e.source.node&&(a.push(this._localAudioPipline.source.node),c.push("mic")),(o=this._localAudioPipline)!=null&&o.denoiser.node&&(a.push(this._localAudioPipline.denoiser.node),c.push("mic-processed")),this.mixWeight>1&&(a.push(this.audioContext.createMediaStreamSource(this._localAudioPipline.stream)),c.push("mix")),this.log.info("dump audio track ".concat(c,", duration: ").concat(A));let d=new AbortController,C=[],y=setTimeout(()=>{this.log.info('dump audio track complete please input "download()" to download.'),d.abort("timeout")},1e3*A),S=()=>{for(let V=0;VV.pipeTo(new WritableStream({write(J){J.forEach((gA,CA)=>C[CA]=C[CA]?C[CA].concat(gA[0]):[gA[0]])}}),d).catch(J=>S));return{then:b.then.bind(b),download:S}}getPCM(A,e){var o,a,c;if(typeof WritableStream>"u")return void this.log.warn("getPCM failed: browser not support WritableStream");let{enable:d,sampleRate:C=48e3,channelCount:y=1,port:S}=(e===""?this.audioFrameEventConfigMap.get(""):this.audioFrameEventConfigMap.get(e)||this.audioFrameEventConfigMap.get("*"))||{};if(!d)return;this.log.info("getPCM ".concat(e||"local"));let b,V,J=Math.floor(.04*C),gA=new Float32Array(J),CA=new Float32Array(J),MA=0,ee=new AbortController,Be=e===""?(o=this._localAudioTrack)==null?void 0:o.mediaTrack:(c=(a=this.room)==null?void 0:a.remotePublishedUserMap.get(e))==null?void 0:c.remoteAudioTrack.mediaTrack;if(Be)return pK([bI().createMediaStreamSource(new MediaStream([Be]))],C,y,S).then(Pe=>Pe.pipeTo(new WritableStream({write(Me){Me[0][0]&&(MA+Me[0][0].length>J?(gA.set(Me[0][0].subarray(0,J-MA),MA),b=Me[0][0].subarray(J-MA),Me[0][1]&&(CA.set(Me[0][1].subarray(0,J-MA),MA),V=Me[0][1].subarray(J-MA)),MA+=J-MA):(b&&(gA.set(b,MA),MA+=b.length,b=void 0),V&&(CA.set(V,MA),V=void 0),gA.set(Me[0][0],MA),Me[0][1]&&CA.set(Me[0][1],MA),MA+=Me[0][0].length),MA>=J&&(MA=0,A({userId:e,sampleRate:C,channelCount:y,data:y===1?gA:[gA,CA]}),gA=new Float32Array(J),CA=new Float32Array(J)))}}),ee).catch(Me=>this.log.warn("stop getPCM reason:".concat(Me)))),ee;this.log.info("getPCM failed: ".concat(e||"local"," has no audio track"))}get hasScreenAudioTrack(){return!Ye(this._localScreenAudioTrack)}get hasAudioTrack(){return!Ye(this._localAudioTrack)}changeInput(A){var e,o;return A instanceof QK?(this._localScreenAudioTrack=A,this.isScreenAudioNeedAudioProcess&&(e=this.audioProcessor)!=null&&e.screenAudioWorkletNode&&(A.addAudioProcessor(this.audioProcessor.screenAudioWorkletNode,this.audioProcessor.mixNode,this.audioProcessor.silentNode),this.audioReferenceMap.forEach((a,c)=>{A.mixAudioReference(a,c)})),A.pipeline.connect(),this.mixOnChange()):A instanceof GM?(this._localAudioTrack=A,this.denoiser&&A.addDenoiser(this.denoiser),this.isLocalAudioNeedAudioProcess&&(o=this.audioProcessor)!=null&&o.localAudioWorkletNode&&(A.addAudioProcessor(this.audioProcessor.localAudioWorkletNode,this.audioProcessor.mixNode,this.audioProcessor.silentNode),this.audioReferenceMap.forEach((a,c)=>{A.mixAudioReference(a,c)})),A.pipeline.connect(),this.mixOnChange()):A instanceof b2?A.setOutputMediaStreamTrack(A.mediaTrack):void 0}mixAudioReference(A,e){var o;(o=this._localAudioTrack)==null||o.mixAudioReference(A,e)}unMixAudioReference(A){var e;(e=this._localAudioTrack)==null||e.unMixAudioReference(A)}setAudioReferenceVolume(A,e){var o;(o=this._localAudioTrack)==null||o.setAudioReferenceVolume(A,e)}mixOnChange(){return this.mixChangedDebounce||(this.mixChangedDebounce=Promise.resolve().then(()=>{var A,e;return delete this.mixChangedDebounce,Promise.all([(A=this._localAudioTrack)==null?void 0:A.setOutputMediaStreamTrack(this.mixWeight>1?this.mixTrack:this._localAudioTrack.mediaTrack),(e=this._localScreenAudioTrack)==null?void 0:e.setOutputMediaStreamTrack(this.mixWeight>1?this.mixTrack:this._localScreenAudioTrack.mediaTrack)])})),this.mixChangedDebounce}removeInput(A){A instanceof QK?delete this._localScreenAudioTrack:A instanceof GM&&delete this._localAudioTrack}addDenoiser(A){var e;this.denoiser=A,(e=this._localAudioTrack)==null||e.addDenoiser(A)}addAudioProcessor(A,e,o,a){var c;this.audioProcessor={localAudioWorkletNode:o,mixNode:A,silentNode:e,screenAudioWorkletNode:a},this.isLocalAudioNeedAudioProcess&&this._localAudioTrack&&o&&(this._localAudioTrack.addAudioProcessor(o,A,e),this.audioReferenceMap.forEach((d,C)=>{var y;(y=this._localAudioTrack)==null||y.mixAudioReference(d,C)})),this.isScreenAudioNeedAudioProcess&&this._localScreenAudioTrack&&a&&((c=this._localScreenAudioTrack)==null||c.addAudioProcessor(a,A,e),this.audioReferenceMap.forEach((d,C)=>{var y;(y=this._localScreenAudioTrack)==null||y.mixAudioReference(d,C)}))}removeDenoiser(A){var e;return delete this.denoiser,(e=this._localAudioTrack)==null?void 0:e.removeDenoiser(A)}addVoiceChanger(A,e){var o;this.voiceChanger=[A,e],(o=this._localAudioTrack)==null||o.pipeline.voiceChanger.setNode(A,e)}removeVoiceChanger(){var A;delete this.voiceChanger,(A=this._localAudioTrack)==null||A.pipeline.voiceChanger.deleteNode()}removeAudioProcessor(A,e){var o,a;delete this.audioProcessor,(o=this._localAudioTrack)==null||o.removeAudioProcessor(A),(a=this._localScreenAudioTrack)==null||a.removeAudioProcessor(e)}destroy(){this.close(),this.audioReferenceMap.clear(),this.getPCMAbortCtrlMap.forEach(A=>A?.abort("destroy")),this.getPCMAbortCtrlMap.clear(),this.audioFrameEventConfigMap.clear(),this.uninstallEvent()}addEncodeProcessor(A){let{processor:e,type:o}=A;var a;this.encodePipeline.includes(e)||(this.encodePipeline[o]=e,(a=this.room)==null||a.enableInsertableStreams())}addDecodeProcessor(A){let{processor:e,type:o}=A;var a;this.decodePipeline.includes(e)||(this.decodePipeline[o]=e,(a=this.room)==null||a.enableInsertableStreams())}removeEncodeProcessor(A){let{type:e}=A;this.encodePipeline[e]=void 0}removeDecodeProcessor(A){let{type:e}=A;this.decodePipeline[e]=void 0}handleLocalTrackStarted(A){let{room:e,userId:o}=A;var a;if(e!==this.room||this.getPCMAbortCtrlMap.get(o))return;let c=this.getPCM(d=>{var C;(C=this.room)==null||C.emit("audio-frame",d)},"");this.getPCMAbortCtrlMap.set(o,c),this.getPCMAbortCtrlMap.get(o)&&((a=this._localAudioTrack)==null||a.on("input-media-track-changed",()=>{let d=this.getPCMAbortCtrlMap.get(o);d&&(d.abort("inputMediaTrackChanged"),d=this.getPCM(C=>{var y;(y=this.room)==null||y.emit("audio-frame",C)},""),this.getPCMAbortCtrlMap.set(o,d))}))}handleLocalTrackStopped(A){let{room:e,userId:o}=A;if(e!==this.room)return;let a=this.getPCMAbortCtrlMap.get(o);a&&(a.abort("stopLocalAudio"),this.getPCMAbortCtrlMap.delete(o))}handleRemoteTrackStarted(A){let{room:e,userId:o}=A;if(e===this.room&&!this.getPCMAbortCtrlMap.get(o)){let a=this.room.audioManager.getPCM(c=>{var d;(d=this.room)==null||d.emit("audio-frame",c)},o);this.getPCMAbortCtrlMap.set(o,a)}}handleRemoteTrackStopped(A){let{room:e,userId:o}=A;if(e!==this.room)return;let a=this.getPCMAbortCtrlMap.get(o);a&&(a.abort("stopRemoteAudio"),this.getPCMAbortCtrlMap.delete(o))}installEvent(){U.on("113",this.handleLocalTrackStarted,this),U.on("114",this.handleLocalTrackStopped,this),U.on("115",this.handleRemoteTrackStarted,this),U.on("116",this.handleRemoteTrackStopped,this)}uninstallEvent(){U.off("113",this.handleLocalTrackStarted),U.off("114",this.handleLocalTrackStopped),U.off("115",this.handleRemoteTrackStarted),U.off("116",this.handleRemoteTrackStopped)}updateAudioReference(A){let{type:e,audioReference:o,refId:a,volume:c}=A;if(e==="add"){if(this.audioReferenceMap.get(a)||!o||(this.audioReferenceMap.set(a,o),!this.audioProcessor))return;this.mixAudioReference(o,a)}else if(e==="remove")this.audioReferenceMap.get(a)&&(this.audioReferenceMap.delete(a),this.unMixAudioReference(a));else if(e==="updateVolume"){if(!this.audioProcessor||Ye(c))return;this.setAudioReferenceVolume(a,c)}}};function G2(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:30,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:2;return Hr((o,a)=>function(){for(var c=arguments.length,d=new Array(c),C=0;C{let b=setTimeout(()=>{let V=new oi({code:lt.API_CALL_TIMEOUT,message:"checkPendingPromise ".concat(a,"() timeout ").concat(A,"s")});(this.log||this._log||QA).warn(V),e===2?S(V):e===1&&y()},1e3*A);this._checkPendingPromiseSet||(this._checkPendingPromiseSet=new Set),this._checkPendingPromiseSet.add(b),o.apply(this,d).then(y,S).finally(()=>{clearTimeout(b),this._checkPendingPromiseSet&&b&&this._checkPendingPromiseSet.delete(b)})})})}var kM=class o3 extends iK{constructor(e,o,a){super({userId:o.userId,sdkAppId:e.sdkAppId,mediaType:a,room:e}),this.room=e,this.user=o,Y(this,"tinyId"),Y(this,"isRemote",!0),Y(this,"jitterBufferDelay",0),Y(this,"availableState"),Y(this,"remotePublishState"),Y(this,"_triggerCheckDecodeSubject",lQ(ga(this,o3.STATE_SUBSCRIBE))),Y(this,"ignoreUpdatePlayingState"),this.tinyId=o.tinyId,this.availableState=new Zs("".concat(o.userId,"-").concat(this.mediaType,"-available"),"remote-track-available"),this.remotePublishState=new Zs("".concat(o.userId,"-").concat(this.mediaType,"-remote-publish"),"remote-track-publish"),Qa(sK(ga(this,Zs.STATECHANGED),ga(this.remotePublishState,Zs.STATECHANGED)),lK(()=>this.isRemotePublished&&(this.isSubscribed||this.isSubscribing)),hl(y=>{this.availableState.state!==(y?Zs.ON:Zs.OFF)&&(this.availableState.state=y?Zs.ON:Zs.OFF),(!this.isRemotePublished||!this.ignoreUpdatePlayingState)&&this.updatePlayingState(y)}));let c=Qa(ga(this.player,mo.ERROR),NM(y=>y.code===MediaError.MEDIA_ERR_DECODE)),d=Qa(aK(5e3),NM(()=>!!(!this.ignoreDecodeError&&this.isSubscribed&&this.isPlayCalled&&this.stat.bytesReceived&&this.isRemotePublished)&&(!this.player.isPlaying&&!(this.kind===YA.AUDIO?this.getAudioLevel()>0:this.stat.framesDecoded>0)||(this.reportDecodeResult(!0),!1)))),C=Qa(M4(c,d),rE(ga(this,Zs.INIT)));Qa(this._triggerCheckDecodeSubject,NM(()=>!this.ignoreDecodeError),_2(C),hl(y=>{this.reportDecodeResult(!1,y)}))}setMute(e){this.isRemotePublished&&super.setMute(e)}setInputMediaStreamTrack(e){super.setInputMediaStreamTrack(e),this.isRemotePublished&&this.isSubscribed&&this.player.setTrack(this.outMediaTrack)}checkDecodeResult(){this._triggerCheckDecodeSubject.next(!0)}waitHasMediaTrack(){return new Promise(e=>{this.mediaTrack?e():this.once("input-media-track-changed",e)})}get ignoreDecodeError(){var e,o,a,c;return(c=(a=(o=(e=this.room)==null?void 0:e.networkQuality)==null?void 0:o.hadRecentBadDownlink)==null?void 0:a.call(o,2))!=null&&c||this.player.isInAutoPlayFailedState}get isSubscribing(){return this.state.toString()==="subscribeing"}get isSubscribed(){return this.state===o3.STATE_SUBSCRIBE}get isAvailable(){return this.availableState.state===Zs.ON}get isNeedPlay(){return this.isAvailable&&this.isPlayCalled}subscribe(e){return e}unsubscribe(){this.streamType==="main"&&this.kind==="video"&&this.room.changeType(!1,this.user)}reportDecodeResult(e,o){var a,c;let d=this.kind===YA.AUDIO;if(Ai[e?"addSuccessEvent":"addFailedEvent"]({key:d?504700:514702}),!d){let C=((a=this.room)==null?void 0:a.downlinkVideoCodec.toUpperCase())||"H264";Ai[e?"addSuccessEvent":"addFailedEvent"]({key:gy["DECODE_".concat(C,"_RESULT")]}),e||this.log.warn("".concat((c=this.room)==null?void 0:c.downlinkVideoCodec," decode failed"))}e||(Ai.addEnum({key:d?504701:514703,value:Lp()}),sn.uploadEvent({log:"stat-decode-failed-".concat(this.kind,"-").concat(oQ()||Up()),userId:this.room.userId}),this._log.warn("decode failed: isPlaying: ".concat(this.player.isPlaying," ").concat(this.kind===YA.AUDIO?"audioLevel: ".concat(this.getAudioLevel()):"framesDecoded: ".concat(this.stat.framesDecoded>0))),this.emit("decode-failed",{error:o}))}updatePlayingState(e){if(this.player.isPlayCalled&&this.player.setTrack(this.playerMediaTrack),this.isPlayCalled&&this.player.isStopped===e){if(e&&(!this.isSubscribed||!this.isRemotePublished||!this.outMediaTrack))return void this.log.info("abort play, isSubscribed: ".concat(this.isSubscribed," isAvailable: ").concat(this.isRemotePublished," hasTrack: ").concat(!!this.outMediaTrack," "));super.updatePlayingState(e)}}close(){super.close(),this.outMediaTrack&&this.uninstallTrackEvent(this.outMediaTrack)}onFlagChanged(){this.remotePublishState.state=this.isRemotePublished?Zs.ON:Zs.OFF,this.emit("remote-publish-changed",this.isRemotePublished)}onTrackMuted(){this.isNeedPlay&&super.onTrackMuted()}onTrackUnmuted(){this.isNeedPlay&&super.onTrackUnmuted()}onTrackEnded(){this.isNeedPlay&&super.onTrackEnded()}};Y(kM,"STATE_SUBSCRIBE","subscribe"),di([G2(5,1)],kM.prototype,"waitHasMediaTrack"),di([lc(Zs.INIT,kM.STATE_SUBSCRIBE,{success(){this.log.info("subscribed"),U.emit(sA.REMOTE_TRACK_SUBSCRIBED,{track:this})},ignoreError:!0}),Cy(521716,!1)],kM.prototype,"subscribe"),di([lc(kM.STATE_SUBSCRIBE,Zs.INIT,{sync:!0,success(){this.log.info("unsubscribed"),U.emit(sA.REMOTE_TRACK_UNSUBSCRIBED,{track:this})}})],kM.prototype,"unsubscribe");var z4=kM,b2=class extends z4{constructor(A,e){super(A,e,1),Y(this,"volume",0),Y(this,"mediaType",1),Y(this,"stat",{bytesReceived:0,packetsReceived:0,packetsLost:0,end2EndDelay:0,jitterBufferDelay:0}),this.manager=A.audioManager}get dbVolume(){return p2.isRunning?this.player.pipeline.volumeMeter.getVolumeDb():Math.floor(Math.max(10*Math.log10(this.volume)+100,0))}onPlayerError(A){this.enableDecodeFrame&&(this._log.warn("use audio decoder"),this.room.enableInsertableStreams())}get enableDecodeFrame(){var A,e;return!!this.manager&&(this.manager.decodePipeline.some(o=>o)||((e=(A=this.player.element)==null?void 0:A.error)==null?void 0:e.code)===MediaError.MEDIA_ERR_DECODE&&Y0().AudioDecoder&&Yp)}get enableDecryptFrame(){return this.manager&&!!this.manager.decodePipeline[0]}decodeFrame(A){if(!this.manager)return A;let e=A;for(let[o,a]of this.manager.decodePipeline.entries()){if(!a)continue;let c={frame:A,track:this};if(o===1&&this.isAvailable&&this.room.role==="audience"&&(c.onAudioFrameNTPTime=d=>{let{ntp:C,frame:y,hasLeavingTag:S}=d;this.emit("audio-frame-with-ntp",{ntp:C,frame:y,hasLeavingTag:S})}),e=a(c),!e)return}return e}getAudioLevel(){if(!this.isAvailable)return 0;let A=this.volume||super.getAudioLevel();return A>1?1:A}getInternalAudioLevel(){return this.isAvailable?super.getInternalAudioLevel():0}get isRemotePublished(){return this.user.muteState.audioAvailable}},ctA=class extends Kd{constructor(A,e,o,a,c){super(A,{useDefaultProgram:!0,useFbo:!0,name:"alpha",create2d:!0,logger:e}),this.setContainer=a,Y(this,"initStat",{alphaStitchingType:1}),Y(this,"end",lQ()),Y(this,"minSize",320),Y(this,"maxSize",1280),Y(this,"draggable",!1),Y(this,"startDragX",0),Y(this,"startDragY",0),Y(this,"left",0),Y(this,"top",0),Y(this,"baseWidth",320),Y(this,"baseRatio"),Y(this,"container"),this.initStat=c,this.draggable=o,this.bindDragEvents(),Ai.addEnum({key:515700,value:1}),this.draggable&&Ai.addEnum({key:515700,value:11})}bindDragEvents(){let A=this.context._canvas;if(A)if(this.draggable){let e=rE(this.end);Qa(ga(A,"mousedown"),IK(this.startDrag.bind(this)),R2(()=>Qa(ga(window,"mousemove"),rE(ga(window,"mouseup")))),e,hl(this.doDrag.bind(this))),Qa(ga(A,"dblclick"),e,hl(this.resetPosition.bind(this))),Qa(ga(A,"wheel"),e,hl(this.handleZoom.bind(this))),this.renderCanvas()}else{if(!this.container)return;this.container.style.removeProperty("left"),this.container.style.removeProperty("top"),this.end.next()}}render(A){var e;return!((e=this.input)==null||!e.requestFrame(A))&&(this.useProgram(),this.useBufferFrame(),this.useInputTexture(),this.draw(),!0)}startDrag(A){A.preventDefault(),A.button===0&&(this.startDragX=A.clientX-this.left,this.startDragY=A.clientY-this.top)}renderCanvas(){let{container:A}=this;A||this.setContainer(),A&&this.baseRatio&&this.draggable&&(A.style.setProperty("width","".concat(this.baseWidth,"px")),A.style.setProperty("height","".concat(this.baseWidth/this.baseRatio,"px")),A.style.setProperty("position","fixed"),A.style.setProperty("left","".concat(this.left,"px")),A.style.setProperty("top","".concat(this.top,"px")))}doDrag(A){A.preventDefault(),this.left=A.clientX-this.startDragX,this.top=A.clientY-this.startDragY,this.renderCanvas()}handleZoom(A){A.preventDefault();let e=A.deltaY,o=this.context._canvas;o&&(this.baseWidth||(this.baseWidth=o.offsetWidth),this.baseWidth=e<0?Math.min(1.1*this.baseWidth,this.maxSize):Math.max(.9*this.baseWidth,this.minSize),this.renderCanvas())}resetPosition(){this.left=0,this.top=0,this.renderCanvas()}onRatioReset(){this.renderCanvas()}draw2d(A,e,o,a,c){var d;let{ctx2d:C}=this,y=this.context._canvas;if(!C||!y)return!1;let S=super.draw2d(A,e,o,a,c),b=C.getImageData(0,0,a,c),{data:V}=b,J=!1;if(this.initStat.alphaStitchingType===1){let gA=Math.floor(a/2);for(let CA=0;CA=100;V[ee+3]=Me?255:0}J=super.draw2d(b,0,0,0,0,gA,c),y.width=gA}else if(this.initStat.alphaStitchingType===2){let gA=Math.floor(c/2);for(let CA=0;CA=100;V[ee+3]=Me?255:0}J=super.draw2d(b,0,0,0,0,a,gA),y.height=gA}return(d=this.context.ctx)==null||d.clearRect(0,0,a,c),S&&J}close(){this.baseRatio=void 0,this.end.next(),this.end.complete()}},Jk=class extends z4{constructor(A,e){super(A,e,arguments.length>2&&arguments[2]!==void 0?arguments[2]:4),Y(this,"mediaType",4),Y(this,"source"),Y(this,"shouldRenderAlpha",!1),Y(this,"alphaNode"),Y(this,"shouldBeDraggable",!0),Y(this,"stat",{bytesReceived:0,packetsReceived:0,packetsLost:0,framesReceived:0,framesDecoded:0,frameWidth:0,frameHeight:0,end2EndDelay:0,jitterBufferDelay:0,keyFramesDecoded:0}),Y(this,"_keyFrameCountLogged",!1),Y(this,"_keyFrameStartTimestamp",0),Y(this,"_keyFrameStartCount",0),Y(this,"_keyFrameIntervals",[]),Y(this,"_prevKeyFrameTimestamp",0),this.manager=A.videoManager,this.on("first-video-frame",o=>{this.room.emit("first-video-frame",o)}),this.on("first-frame-render",o=>{this.room.emit("first-frame-render",o)})}isAlphaSei(A){if(this.userId!==A.userId||A.seiPayloadType!==50)return!1;let e=new Uint8Array(A.data);return e.length%3==0&&e[0]===0&&e[1]===1&&e}play(A,e){return e!=null&&e.canvasRender&&!this.source&&this.useCanvasPlayer(),super.play(A,e).then(()=>{this.player.calculateStat(),U.emit("156",{track:this,player:this.player})})}updateAlphaRenderInfo(A){let e=this.isAlphaSei(A);if(e)if(this.alphaNode){let o=e[2];if(this.alphaNode.baseRatio&&this.alphaNode.initStat.alphaStitchingType===o)return;this.alphaNode.initStat={alphaStitchingType:o};let a=this.player.getElement();if(a){let c=a.videoWidth/a.videoHeight;c&&(this.alphaNode.baseRatio=c*(o===1?.5:2),this.alphaNode.onRatioReset())}this.player.canvas&&(this.player.canvas.id=this.generateAlphaCanvasName(o))}else this.shouldRenderAlpha=!0,this.player.shouldRenderAlpha=!0,this.useCanvasPlayer(e[2])}generateAlphaCanvasName(A){let e=ry[A];return"".concat("alpha","_").concat(e,"_").concat(this.userId)}useCanvasPlayer(A){if(this.log.info("useCanvasPlayer(), has element:".concat(!!this.player.element)),!this.player.element)return;let e=new uQ({frameRate:15,logger:this.log,name:this.shouldRenderAlpha&&A?this.generateAlphaCanvasName(A):this.userId});e.create({alpha:this.shouldRenderAlpha,willReadFrequently:this.shouldRenderAlpha});let o=new EK(e,{name:"remotePlayer",logger:this.log});if(this.source=e.createVideoPlayerSource(this.player),this.player.setCanvas(e._canvas),this.shouldRenderAlpha&&A){let a=()=>{!this.player.container||!this.alphaNode||(this.alphaNode.container=this.player.container,this.alphaNode.renderCanvas())},c=new ctA(e,this.log,this.shouldBeDraggable,a,{alphaStitchingType:A});this.source.connect(c),c.connect(o),this.alphaNode=c}else this.source.connect(o);Vp()||(this.updateCanvasPlayerFPS=this.updateCanvasPlayerFPS.bind(this,e),this.room.on("heartbeat-report",this.updateCanvasPlayerFPS,this))}updateCanvasPlayerFPS(A){let e=this.decodeFPS,o=(a=e,[15,30,45,60].reduce((c,d)=>Math.abs(d-a)c.msg_user_info.str_identifier===this.userId))||{},o=this.mediaType===2?7:this.isSmall?3:2;if(!e||e.length===0)return 0;let a=e.find(c=>c.uint32_video_stream_type===o);return a?.uint32_video_dec_fps||0}stop(){return this.room.off("heartbeat-report",this.updateCanvasPlayerFPS,this),U.emit("157",{track:this,player:this.player}),this.alphaNode&&this.alphaNode.close(),super.stop()}decodeFrame(A){if(!this.manager)return A;for(let e of this.manager.decodePipeline)if(e&&!(A=e({frame:A,track:this})))return;return A}get isBig(){return this.mediaType===4}get isSmall(){return this.mediaType===8}changeType(A){this.room.changeType(A,this.user)}get isRemotePublished(){return this.user.muteState.videoAvailable}setMirror(A){A==="publish"||A==="both"||super.setMirror(A)}setDraggable(A){this.shouldBeDraggable=A,this.alphaNode&&(this.alphaNode.draggable=A,this.alphaNode.bindDragEvents())}onDecodeDowngradeStateChanged(A){this.emit("decode-downgrade-state-changed",A)}updateKeyFramesDecoded(A){let e=this.stat.keyFramesDecoded||0;if(this.stat.keyFramesDecoded=A,this._keyFrameCountLogged)return;let o=Date.now();if(!this._keyFrameStartTimestamp)return this._keyFrameStartTimestamp=o,this._keyFrameStartCount=A,void(this._prevKeyFrameTimestamp=o);if(this._prevKeyFrameTimestamp&&A>e){let c=A-e,d=(o-this._prevKeyFrameTimestamp)/1e3/c;this._keyFrameIntervals.push(d)}this._prevKeyFrameTimestamp=o;let a=o-this._keyFrameStartTimestamp;if(a>=16e3){let c=A-this._keyFrameStartCount,d=c>0?a/1e3/c:0,C="".concat(c," keyframes in 16s ").concat(d," [").concat(this._keyFrameIntervals.map(S=>S.toFixed(1)).join(","),"] keyFramesDecoded ").concat(A),y=d<=2.5?"debug":"info";this.log[y](C),this._keyFrameCountLogged=!0}}},Z4=class extends Jk{constructor(A,e){super(A,e,2),Y(this,"mediaType",2),Y(this,"objectFit","contain")}get isRemotePublished(){return this.user.muteState.hasAuxiliary}},$0=new Map;function Jg(A,e){let o=Bo(pi({},e),{timestamp:Tf()});$0.has(A)?$0.get(A).push(o):$0.set(A,[o])}function X4(){for(var A=arguments.length,e=new Array(A),o=0;ofunction(){for(var d=arguments.length,C=new Array(d),y=0;yJf(b)?HS(b):Yn(b)?b:Cg(b))},fnName:c,value:o},link:{className:d,fnName:c}})})}else if(!Ye(e.type)&&Cg(o)!==e.type)throw new oi({code:lt.INVALID_PARAMETER,message:Zo({key:So.INVALID_PARAMETER_TYPE,data:{key:a,rule:e,fnName:c,value:o},link:{className:d,fnName:c}})});if(e.allowEmpty===!1){let S=bn(o)&&(o===0||Number.isNaN(o)),b=Yn(o)&&o.trim()==="";if(S||b)throw new oi({code:lt.INVALID_PARAMETER,message:Zo({key:So.INVALID_PARAMETER_EMPTY,data:{key:a,rule:e,fnName:c,value:o},link:{className:d,fnName:c}})})}if(e.notLessThanZero&&bn(o)&&o<0)throw new oi({code:lt.INVALID_PARAMETER,message:Zo({key:So.CANNOT_LESS_THAN_ZERO,data:{key:a,rule:e,fnName:c,value:o},link:{className:d,fnName:c}})});if(!Ye(e.min)&&bn(o)&&oe.max)throw new oi({code:lt.INVALID_PARAMETER,message:Zo({key:So.INVALID_PARAMETER_MAX,data:{key:a,rule:e,fnName:c,value:o},link:{className:d,fnName:c}})});if(Yn(e.instanceOf)){if(!o||o._name!==e.instanceOf)throw new oi({code:lt.INVALID_PARAMETER,message:Zo({key:So.INVALID_PARAMETER_INSTANCE,data:{key:a,rule:e,fnName:c,value:o},link:{className:d,fnName:c}})})}else if(va(e.instanceOf)&&!(o instanceof e.instanceOf))throw new oi({code:lt.INVALID_PARAMETER,message:Zo({key:So.INVALID_PARAMETER_INSTANCE,data:{key:a,rule:e,fnName:c,value:o},link:{className:d,fnName:c}})});if(e.values&&!e.values.includes(o))throw new oi({code:lt.INVALID_PARAMETER,message:Zo({key:So.INVALID_PARAMETER_RANGE,data:{key:a,rule:e,fnName:c,value:o},link:{className:d,fnName:c}})});let{properties:C}=e;oE(C)&&JE(o)&&Object.keys(C).forEach(S=>{k2.call(this,{rule:C[S],value:o&&o[S],key:"".concat(a,".").concat(S),fnName:c,className:d})});let{arrayItem:y}=e;oE(y)&&Ra(o)&&o.forEach((S,b)=>{k2.call(this,{rule:y,value:S,key:"".concat(a,"[").concat(b,"]"),fnName:c,className:d})}),va(e.validate)&&e.validate.call(this,o,a,c,d,this)}U.on(sA.JOIN_SUCCESS,A=>{let{room:e}=A;Jg(e.userId,{eventId:32788})}),U.on(sA.LEAVE_START,A=>{let{room:e}=A;Jg(e.userId,{eventId:32789})}),U.on(sA.LOCAL_TRACK_PUBLISHED,A=>{let{track:e}=A;if(e.room){let o=32769;e.mediaType===4?o=32768:e.mediaType===2&&(o=32805),Jg(e.room.userId,{eventId:o})}}),U.on(sA.LOCAL_TRACK_UNPUBLISHED,A=>{let{track:e}=A;if(e.room){let o=32771;e.mediaType===4?o=32770:e.mediaType===2&&(o=32806),Jg(e.room.userId,{eventId:o})}}),U.on(sA.TRACK_MUTED,A=>{let{track:e}=A;e.room&&(e.kind===YA.AUDIO?Jg(e.room.userId,{eventId:e.isRemote?32785:32772,remoteUserId:e.isRemote?e.userId:void 0}):Jg(e.room.userId,{eventId:e.isRemote?32784:32773,remoteUserId:e.isRemote?e.userId:void 0}))}),U.on(sA.TRACK_UNMUTED,A=>{let{track:e}=A;e.room&&(e.kind===YA.AUDIO?Jg(e.room.userId,{eventId:e.isRemote?32787:32774,remoteUserId:e.isRemote?e.userId:void 0}):Jg(e.room.userId,{eventId:e.isRemote?32786:32775,remoteUserId:e.isRemote?e.userId:void 0}))}),U.on(sA.REMOTE_TRACK_SUBSCRIBED,A=>{let{track:e}=A;e.room&&(e.mediaType===1&&Jg(e.room.userId,{eventId:32777,remoteUserId:e.userId}),e.mediaType===4&&Jg(e.room.userId,{eventId:32776,remoteUserId:e.userId}),e.mediaType===8&&Jg(e.room.userId,{eventId:32803,remoteUserId:e.userId}))}),U.on(sA.REMOTE_TRACK_UNSUBSCRIBED,A=>{let{track:e}=A;e.room&&(e.mediaType===1&&Jg(e.room.userId,{eventId:32779,remoteUserId:e.userId}),e.mediaType===4&&Jg(e.room.userId,{eventId:32778,remoteUserId:e.userId}),e.mediaType===8&&Jg(e.room.userId,{eventId:32804,remoteUserId:e.userId}))}),U.on(sA.SWITCH_DEVICE_SUCCESS,A=>{let{track:e}=A;e.room&&Jg(e.room.userId,{eventId:e.kind===YA.VIDEO?32780:32781})}),U.on(sA.LOCAL_TRACK_REPLACED,A=>{let{track:e}=A;e.room&&Jg(e.room.userId,{eventId:e.kind===YA.VIDEO?32782:32783})}),U.on(sA.SIGNAL_CONNECTION_STATE_CHANGED,A=>{let e,{room:o,prevState:a,state:c}=A;switch(c){case"CONNECTED":e=a==="RECONNECTING"?32795:32791;break;case"DISCONNECTED":e=a==="RECONNECTING"?32796:32790;break;case"RECONNECTING":e=32794}e&&Jg(o.userId,{eventId:e})}),U.on(sA.PEER_CONNECTION_STATE_CHANGED,A=>{let e,{room:o,prevState:a,state:c,remoteUserId:d}=A,C=!!d;switch(c){case"CONNECTED":e=a==="RECONNECTING"?C?32801:32798:C?32793:32792;break;case"DISCONNECTED":a==="RECONNECTING"&&(e=C?32802:32799);break;case"RECONNECTING":e=C?32800:32797}e&&Jg(o.userId,{eventId:e,remoteUserId:d})}),U.on(sA.VIDEO_CODEC_IMPLEMENTATION_CHANGED,A=>{let{implementation:e,userId:o,remoteUserId:a,codec:c,isHWCodec:d,prevImplementation:C,streamType:y}=A,S=d?1:0;C||(S=d?3:2);let b={H264:0,H265:1,VP8:2}[c.toUpperCase()],V={eventId:4004,param1:S,param2:b,streamType:y||2};a&&(V.remoteUserId=a,V.eventId=4005),Jg(o,V),Ai.addEnum({key:a?514701:513701,value:S}),Ai.addEnum({key:a?514700:513700,value:b})}),U.on(sA.LOCAL_TRACK_RECAPTURE,A=>{let{track:e,error:o}=A;if(e.userId){let a={eventId:2003,param1:0};e.kind===YA.AUDIO?(a.streamType=1,o&&(a.param1=2)):(a.streamType=e.streamType==="auxiliary"?7:2,o&&(a.param1=8)),Jg(e.userId,a)}});var ItA=gc(Hl(),1),utA=class extends ItA.EventEmitter{constructor(A,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"userId";super(),this.mySelfId=A,this._log=e,this.key=o,Y(this,"userMap",new Map),Y(this,"remotePublishedUserMap",new Map),Y(this,"asrRobotUserMap",new Map)}get hasRobotUser(){return!![...this.remotePublishedUserMap.values()].find(A=>A.isRobot)}getPublishedUser(A){return this.remotePublishedUserMap.get(A)}addUser(A){let e=A[this.key],{userId:o,tinyId:a,role:c,fromType:d}=A;if(d===e0)return void this.addAsrRobotUser(A);if(this.userMap.has(e))return;let C={userId:o,tinyId:a,role:c===20?"anchor":"audience"};this.userMap.set(e,C),this.emit("1",C)}addAsrRobotUser(A){let e=A[this.key],{userId:o,tinyId:a,role:c}=A;if(this.asrRobotUserMap.has(e))return;let d={userId:o,tinyId:a,role:c===20?"anchor":"audience"};this.asrRobotUserMap.set(e,d),this.emit("8",d)}deleteUser(A,e){let o=this.userMap.get(A);if(!o)return;if(this.asrRobotUserMap.has(A))return void this.deleteAsrRobotUser(A);let a="peer leave [".concat(A,"]");Ye(e)||(a+=":".concat(mx[e])),this._log.info(a);let c=this.remotePublishedUserMap.get(A);if(c){let d=c.muteState;c.flag=0,this.emit("5",c.userId),this.deleteRemotePublishedUser(A),this.emit("6",{prevMuteState:d,muteState:c.muteState,flag:0})}this.userMap.delete(A),this.emit("2",{userId:o.userId,reason:e})}deleteAsrRobotUser(A){if(!this.asrRobotUserMap.has(A))return;let e=this.asrRobotUserMap.get(A);e&&(this.asrRobotUserMap.delete(A),this.emit("9",e))}setUserList(A){this.userMap.forEach(e=>{A.findIndex(o=>o[this.key]===e[this.key])<0&&this.deleteUser(e[this.key],0)}),A.forEach(e=>{!this.userMap.has(e[this.key])&&e[this.key]!==this.mySelfId&&this.addUser(e)})}addRemotePublishedUser(A){this.remotePublishedUserMap.has(A[this.key])||this.remotePublishedUserMap.set(A[this.key],A)}deleteRemotePublishedUser(A){this.remotePublishedUserMap.has(A)&&this.remotePublishedUserMap.delete(A)}setRemotePublishedUserList(A){this.remotePublishedUserMap.forEach(e=>{let o=e[this.key];if(A.findIndex(a=>a[this.key]===e[this.key])<0){this._log.info("remote [".concat(o,"] unpublish"));let a=e.muteState;e.flag=0,this.emit("5",e.userId),this.deleteRemotePublishedUser(o),this.emit("6",{prevMuteState:a,muteState:e.muteState,flag:0})}}),A.forEach(e=>{var o;let a=e[this.key];if(a===this.mySelfId)return void this.emit("7",e);let{flag:c,userId:d,tinyId:C,fromType:y}=e,S=Dp(c,d),b=(o=this.remotePublishedUserMap.get(a))==null?void 0:o.muteState;if(b){let V=this.remotePublishedUserMap.get(a);V&&V.flag!==c&&(V.flag=c,this._log.info("remote publish updated: ".concat(JSON.stringify(V.muteState))),this.emit("6",{prevMuteState:b,muteState:S,flag:c}))}else this._log.info("remote publish. state: ".concat(JSON.stringify(S))),this.addUser({userId:d,tinyId:C,role:20,fromType:y}),this.emit("3",e),this.emit("6",{prevMuteState:Dp(0,d),muteState:S,flag:c})})}clear(){this.userMap.clear(),this.remotePublishedUserMap.clear()}},EtA=gc(Hl(),1),dtA=class extends EtA.default{constructor(){super(...arguments),Y(this,"_connectionTimeoutCount",0),Y(this,"_isFirewallRestrictionEventEmitted",!1)}increaseTimeoutCount(){this._connectionTimeoutCount+=1,this.checkAndEmitFirewallRestriction()}resetTimeoutCount(){this._connectionTimeoutCount=0}checkAndEmitFirewallRestriction(){this._connectionTimeoutCount>=3&&!this._isFirewallRestrictionEventEmitted&&(this._isFirewallRestrictionEventEmitted=!0,this.emit("firewall-restriction"))}destroy(){this._connectionTimeoutCount=0,this._isFirewallRestrictionEventEmitted=!1,this.removeAllListeners()}};function $4(A){let{timesInSecond:e,maxSizeInSecond:o,getSize:a}=A;return Hr((c,d)=>{let C=new WeakMap;return U.on(sA.ROOM_DESTROY,y=>{let{room:S}=y;return C.delete(S)}),function(){let y=C.get(this);for(var S=arguments.length,b=new Array(S),V=0;V1e3&&(y.timestamp=Date.now(),y.callCountInSecond=0,y.totalSizeInSecond=0),a&&(y.totalSizeInSecond+=a(...b)),y.timestamp!==0&&Date.now()-y.timestamp<1e3&&(y.callCountInSecond>=e||y.totalSizeInSecond>o))throw new oi({code:lt.INVALID_OPERATION,message:Zo({key:So.CALL_FREQUENCY_LIMIT,data:{isTimes:y.callCountInSecond>=e,isSize:y.totalSizeInSecond>o,name:d,timesInSecond:e,maxSizeInSecond:o}})});y.callCountInSecond++,c.call(this,...b)}})}var pt,A5=!0,Hk={SCENE_LIVE:"live",SCENE_RTC:"rtc",ROLE_ANCHOR:"anchor",ROLE_AUDIENCE:"audience",STREAM_TYPE_MAIN:"main",STREAM_TYPE_SUB:"sub",AUDIO_PROFILE_STANDARD:"standard",AUDIO_PROFILE_STANDARD_STEREO:"standard-stereo",AUDIO_PROFILE_HIGH:"high",AUDIO_PROFILE_HIGH_STEREO:"high-stereo",QOS_PREFERENCE_SMOOTH:"smooth",QOS_PREFERENCE_CLEAR:"clear",SPEAKER:"Speakerphone",HEADSET:"Headset earpiece"},vo={INVALID_PARAMETER:5e3,INVALID_OPERATION:5100,ENV_NOT_SUPPORTED:5200,DEVICE_ERROR:5300,SERVER_ERROR:5400,OPERATION_FAILED:5500,OPERATION_ABORT:5998,UNKNOWN_ERROR:5999},L2=((pt=L2||{})[pt.INVALID_PARAMETER=5e3]="INVALID_PARAMETER",pt[pt.INVALID_PARAMETER_REQUIRED=5001]="INVALID_PARAMETER_REQUIRED",pt[pt.INVALID_PARAMETER_TYPE=5002]="INVALID_PARAMETER_TYPE",pt[pt.INVALID_PARAMETER_EMPTY=5003]="INVALID_PARAMETER_EMPTY",pt[pt.INVALID_PARAMETER_INSTANCE=5004]="INVALID_PARAMETER_INSTANCE",pt[pt.INVALID_PARAMETER_RANGE=5005]="INVALID_PARAMETER_RANGE",pt[pt.INVALID_PARAMETER_LESS_THAN_ZERO=5006]="INVALID_PARAMETER_LESS_THAN_ZERO",pt[pt.INVALID_PARAMETER_MIN=5007]="INVALID_PARAMETER_MIN",pt[pt.INVALID_PARAMETER_MAX=5008]="INVALID_PARAMETER_MAX",pt[pt.INVALID_ELEMENT_ID=5009]="INVALID_ELEMENT_ID",pt[pt.INVALID_ELEMENT_ID_TYPE=5010]="INVALID_ELEMENT_ID_TYPE",pt[pt.INVALID_STREAM_ID=5011]="INVALID_STREAM_ID",pt[pt.INVALID_ROOM_ID_STRING=5012]="INVALID_ROOM_ID_STRING",pt[pt.INVALID_ROOM_ID_INTEGER=5013]="INVALID_ROOM_ID_INTEGER",pt[pt.INVALID_STREAM_TYPE=5014]="INVALID_STREAM_TYPE",pt[pt.INVALID_ROOM_ID_REQUIRED=5015]="INVALID_ROOM_ID_REQUIRED",pt[pt.INVALID_ROOM_ID_INTEGER_STRING=5016]="INVALID_ROOM_ID_INTEGER_STRING",pt[pt.INVALID_BUFFER_EMPTY=5017]="INVALID_BUFFER_EMPTY",pt[pt.INVALID_BUFFER_OVERSIZE=5018]="INVALID_BUFFER_OVERSIZE",pt[pt.INVALID_ROOM_ID_TYPE_MISMATCH=5019]="INVALID_ROOM_ID_TYPE_MISMATCH",pt[pt.INVALID_ROOM_ID_DUPLICATE=5020]="INVALID_ROOM_ID_DUPLICATE",pt[pt.INVALID_OPERATION=5100]="INVALID_OPERATION",pt[pt.INVALID_OPERATION_NOT_JOINED=5101]="INVALID_OPERATION_NOT_JOINED",pt[pt.INVALID_OPERATION_REMOTE_USER_NOT_EXIST=5102]="INVALID_OPERATION_REMOTE_USER_NOT_EXIST",pt[pt.INVALID_OPERATION_STREAM_TYPE_NOT_EXIST=5103]="INVALID_OPERATION_STREAM_TYPE_NOT_EXIST",pt[pt.INVALID_OPERATION_REPEAT_CALL=5104]="INVALID_OPERATION_REPEAT_CALL",pt[pt.INVALID_OPERATION_NEED_VIDEO=5105]="INVALID_OPERATION_NEED_VIDEO",pt[pt.INVALID_OPERATION_NEED_AUDIO=5106]="INVALID_OPERATION_NEED_AUDIO",pt[pt.INVALID_ROLE_AUDIENCE=5107]="INVALID_ROLE_AUDIENCE",pt[pt.INVALID_NOT_ENABLE_SEI=5108]="INVALID_NOT_ENABLE_SEI",pt[pt.INVALID_NEED_CALL_PUBLISHED=5109]="INVALID_NEED_CALL_PUBLISHED",pt[pt.ENV_NOT_SUPPORTED=5200]="ENV_NOT_SUPPORTED",pt[pt.NOT_SUPPORTED_HTTP=5201]="NOT_SUPPORTED_HTTP",pt[pt.NOT_SUPPORTED_WEBRTC=5202]="NOT_SUPPORTED_WEBRTC",pt[pt.NOT_SUPPORTED_H264_ENCODE=5203]="NOT_SUPPORTED_H264_ENCODE",pt[pt.NOT_SUPPORTED_H264_DECODE=5204]="NOT_SUPPORTED_H264_DECODE",pt[pt.NOT_SUPPORTED_SCREEN_SHARE=5205]="NOT_SUPPORTED_SCREEN_SHARE",pt[pt.NOT_SUPPORTED_SMALL_VIDEO=5206]="NOT_SUPPORTED_SMALL_VIDEO",pt[pt.NOT_SUPPORTED_SEI=5207]="NOT_SUPPORTED_SEI",pt[pt.NOT_SUPPORTED_WEBGL=5208]="NOT_SUPPORTED_WEBGL",pt[pt.NOT_SUPPORTED_CHROME_VERSION=5209]="NOT_SUPPORTED_CHROME_VERSION",pt[pt.NOT_SUPPORTED_PLUGIN=5210]="NOT_SUPPORTED_PLUGIN",pt[pt.DEVICE_ERROR=5300]="DEVICE_ERROR",pt[pt.DEVICE_NOT_FOUND_ERROR=5301]="DEVICE_NOT_FOUND_ERROR",pt[pt.DEVICE_NOT_ALLOWED_ERROR=5302]="DEVICE_NOT_ALLOWED_ERROR",pt[pt.DEVICE_NOT_READABLE_ERROR=5303]="DEVICE_NOT_READABLE_ERROR",pt[pt.DEVICE_OVERCONSTRAINED_ERROR=5304]="DEVICE_OVERCONSTRAINED_ERROR",pt[pt.DEVICE_INVALID_STATE_ERROR=5305]="DEVICE_INVALID_STATE_ERROR",pt[pt.DEVICE_SECURITY_ERROR=5306]="DEVICE_SECURITY_ERROR",pt[pt.DEVICE_ABORT_ERROR=5307]="DEVICE_ABORT_ERROR",pt[pt.CAMERA_RECOVER_FAILED=5308]="CAMERA_RECOVER_FAILED",pt[pt.MICROPHONE_RECOVER_FAILED=5309]="MICROPHONE_RECOVER_FAILED",pt[pt.NOT_SUPPORTED_MISMATCH_SAMPLE_RATE_IN_FIREFOX=5310]="NOT_SUPPORTED_MISMATCH_SAMPLE_RATE_IN_FIREFOX",pt[pt.SERVER_ERROR=5400]="SERVER_ERROR",pt[pt.NEED_TO_BUY=5401]="NEED_TO_BUY",pt[pt.ACCOUNT_NO_MONEY=-100013]="ACCOUNT_NO_MONEY",pt[pt.OPERATION_FAILED=5500]="OPERATION_FAILED",pt[pt.FIREWALL_RESTRICTION=5501]="FIREWALL_RESTRICTION",pt[pt.REJOIN_FAILED=5502]="REJOIN_FAILED",pt[pt.EVENT_HANDLER_ERROR=5503]="EVENT_HANDLER_ERROR",pt[pt.VIDEO_CONTEXT_ERROR=5504]="VIDEO_CONTEXT_ERROR",pt[pt.VIDEO_ENCODE_FAILED=5505]="VIDEO_ENCODE_FAILED",pt[pt.AUDIO_ENCODE_FAILED=5506]="AUDIO_ENCODE_FAILED",pt[pt.VIDEO_DECODE_FAILED=5507]="VIDEO_DECODE_FAILED",pt[pt.AUDIO_DECODE_FAILED=5508]="AUDIO_DECODE_FAILED",pt[pt.OPERATION_ABORT=5998]="OPERATION_ABORT",pt[pt.UNKNOWN_ERROR=5999]="UNKNOWN_ERROR",pt),e5=Bo(pi({},cc),{INVALID_PARAMETER(A){let{fnName:e}=A;return"the parameters of the '".concat(e,"' you called does not meet the requirements, please check the API documentation.")},INVALID_PARAMETER_REQUIRED(A){let{key:e,rule:o,fnName:a,value:c}=A;return"'".concat(e||o.name,"' is a required param when calling ").concat(a,"(), received: ").concat(c,".")},INVALID_PARAMETER_TYPE(A){let{key:e,rule:o,fnName:a,value:c}=A,d="".concat(e||o.name),C="";return C=Array.isArray(o.type)?o.type.join("|"):o.type,"'".concat(d,"' must be type of ").concat(C," when calling ").concat(a,"(), received type: ").concat(Cg(c),".")},INVALID_PARAMETER_EMPTY(A){let{key:e,rule:o,fnName:a,value:c}=A;return"'".concat(e||o.name,"' cannot be '").concat(c,"' when calling ").concat(a,"().")},INVALID_PARAMETER_INSTANCE(A){let{key:e,rule:o,fnName:a,value:c}=A,d="".concat(e||o.name),C="".concat(o.instanceOf.name||o.instanceOf);return"'".concat(d,"' must be instanceof ").concat(C," when calling ").concat(a,"(), received type: ").concat(Cg(c),".")},INVALID_PARAMETER_RANGE(A){let{key:e,rule:o,fnName:a,value:c}=A;return"'".concat(e||o.name,"' must be one of ").concat(o.values.join("|")," when calling ").concat(a,"(), received: ").concat(c,".")},INVALID_PARAMETER_LESS_THAN_ZERO(A){let{key:e,rule:o,fnName:a}=A;return"'".concat(e||o.name,"' cannot be less than 0 when calling ").concat(a,"().")},INVALID_PARAMETER_MIN(A){let{key:e,rule:o,value:a}=A;return"the min value of ".concat(e||o.name," is ").concat(o.min,", received: ").concat(a,".")},INVALID_PARAMETER_MAX(A){let{key:e,rule:o,value:a}=A;return"the max value of ".concat(e||o.name," is ").concat(o.max,", received: ").concat(a,".")},INVALID_ELEMENT_ID(A){let{key:e,fnName:o}=A;return"'".concat(e,"' is not found in the document object when calling ").concat(o,"().")},INVALID_ELEMENT_ID_TYPE(A){let{key:e,fnName:o,type:a}=A;return"the element corresponding to '".concat(e,"' must be instanceof HTMLElement when calling ").concat(o,"(), received: ").concat(a,".")},INVALID_STREAM_ID(A){let{key:e}=A;return"'".concat(e,"' can only consist of uppercase and lowercase english letters (a-zA-Z), numbers (0-9), hyphens and underscores.")},INVALID_ROOM_ID_STRING(A){let{key:e}=A;return"'".concat(e,"' must be a valid string.")},INVALID_ROOM_ID_INTEGER(A){let{key:e}=A;return"'".concat(e,"' must be an integer between [1, 4294967294].")},INVALID_ROOM_ID_INTEGER_STRING(A){let{key:e}=A;return"'".concat(e,"' must be an integer but go a string, use 'parseInt' to convert it or use 'strRoomId' instead.")},INVALID_ROOM_ID_REQUIRED:()=>"at least one of 'roomId'(between [1, 4294967294]) and 'strRoomId'(not empty) is required.",INVALID_ROOM_ID_TYPE_MISMATCH(A){let{key:e}=A;return"The type of target roomId must match the current roomId. Current room is using '".concat(e,"', but received '").concat(e==="strRoomId"?"roomId":"strRoomId","'.")},INVALID_ROOM_ID_DUPLICATE(A){let{key:e}=A;return"the target '".concat(e,"' must not be the same as the current '").concat(e,"'.")},INVALID_STREAM_TYPE:A=>{let{fnName:e}=A;return"'streamType' is required when 'userId' is not '*', calling ".concat(e,"()")},INVALID_IMAGE_URL:"The 'src' param must be filled in when the background type is image.",INVALID_OPERATION(A){let{fnName:e}=A;return"the API '".concat(e,"' you called does not meet the requirements, please check the API documentation.")},INVALID_OPERATION_NOT_JOINED(A){let{fnName:e}=A;return"cannot ".concat(e," because you are not enter room yet.")},INVALID_OPERATION_REMOTE_USER_NOT_EXIST(A){let{fnName:e,value:o}=A;return"cannot ".concat(e," because remote user(userId: ").concat(o.userId,") does not publishing stream.")},INVALID_OPERATION_STREAM_TYPE_NOT_EXIST(A){let{fnName:e,value:o}=A;return"cannot ".concat(e," because remote user(userId: ").concat(o.userId,") does not publishing ").concat(o.streamType," video.")},INVALID_OPERATION_REPEAT_CALL(A){let{fnName:e}=A;return"you are already ".concat(e,"(), cannot repeated call '").concat(e,"'.")},INVALID_OPERATION_NEED_VIDEO(A){let{fnName:e}=A;return"cannot call '".concat(e,"' because the camera is not turned on.")},INVALID_OPERATION_NEED_AUDIO(A){let{fnName:e}=A;return"cannot call '".concat(e,"' because the microphone or screen share is not turned on.")},INVALID_BUFFER_EMPTY:A=>{let{key:e}=A;return"the buffer size of paramerter '".concat(e,"' cannot be empty")},INVALID_BUFFER_OVERSIZE:()=>"buffer size is over 1000 Bytes",INVALID_ROLE_AUDIENCE:()=>"role: 'audience' cannot call this api.",INVALID_NOT_ENABLE_SEI:()=>"you need to enable SEI in TRTC.create({ enableSEI: true })",INVALID_NEED_CALL_PUBLISHED:A=>{let{fnName:e}=A;return"you need to call ".concat(e,"() after publish stream.")},ENV_NOT_SUPPORTED(A){let{fnName:e}=A;return"the current browser does not support the capability of the function '".concat(e,"' you are calling, please check the API documentation.")},NOT_SUPPORTED_WEBRTC:"the current browser does not support WebRTC capability, please check the SDK documentation.",NOT_SUPPORTED_H264_ENCODE:"this browser does not support H264 encode.",NOT_SUPPORTED_H264_DECODE:"this browser does not support H264 decode.",NOT_SUPPORTED_SCREEN_SHARE:"this browser does not support screen share, please check the browser version.",NOT_SUPPORTED_SMALL_VIDEO:"this browser does not support small video, please check the browser version.",NOT_SUPPORTED_SEI:"this browser does not support SEI, please check the browser version.",NOT_SUPPORTED_WEBGL:"this browser does not support WebGL, please check the browser version.",NOT_SUPPORTED_CHROME_VERSION(A){let{fnName:e}=A;return"cannot call ".concat(e," because the browser version is too low, please upgrade to the latest version")},DEVICE_ERROR(A){let{fnName:e,error:o}=A;return"'".concat(e,"' got device exception").concat(o?", error: ".concat(o.toString(),"."):".")},DEVICE_NOT_FOUND_ERROR(A){let{fnName:e,deviceType:o=LM(e),error:a}=A;return"NotFoundError, no ".concat(o," detected, please check your device and the configuration on '").concat(e,"'").concat(a?", error: ".concat(a.toString(),"."):".")},DEVICE_NOT_ALLOWED_ERROR(A){let{fnName:e,deviceType:o=LM(e),error:a}=A;return"NotAllowedError, you have disabled ".concat(o," access, please allow the current application to use the ").concat(o).concat(a?", error: ".concat(a.toString(),"."):".")},DEVICE_NOT_READABLE_ERROR(A){let{fnName:e,deviceType:o=LM(e),error:a}=A;return"NotReadableError, the ".concat(o," maybe in use by another APP, please check if the device is pre-occupied by another APP.")},DEVICE_OVERCONSTRAINED_ERROR(A){let{fnName:e,deviceType:o=LM(e),error:a}=A;return"OverconstrainedError, the device ID is incorrect, please check whether the device ID passed in is correct".concat(a?", error: ".concat(a.toString(),"."):".")},DEVICE_INVALID_STATE_ERROR(A){let{fnName:e,deviceType:o=LM(e),error:a}=A;return"InvalidStateError, after the user clicks and interacts with the page, turn on the ".concat(o).concat(a?", error: ".concat(a.toString(),"."):".")},DEVICE_SECURITY_ERROR(A){let{fnName:e,deviceType:o=LM(e),error:a}=A;return"SecurityError, check whether the system security policy restricts the use of the ".concat(o,", and it is recommended to turn on the ").concat(o," after the user interacts with the page").concat(a?", error: ".concat(a.toString(),"."):".")},DEVICE_ABORT_ERROR(A){let{fnName:e,deviceType:o=LM(e),error:a}=A;return"AbortError, an unknown exception in the system makes the device unusable, recommended to change the device or browser and re-check whether the device is normal".concat(a?" error: ".concat(a.toString(),"."):".")},CAMERA_RECOVER_FAILED(A){let{error:e}=A;return"camera recover capture failed ".concat(e?.name||"",": ").concat(e?.originMessage||e?.message)},MICROPHONE_RECOVER_FAILED(A){let{error:e}=A;return"microphone recover capture failed ".concat(e?.name||"",": ").concat(e?.originMessage||e?.message)},OPERATION_FAILED(A){let{fnName:e,error:o}=A;return"'".concat(e,"' failed, reason: ").concat(o?.toString())},FIREWALL_RESTRICTION:()=>"media connection failure due to firewall restrictions, please try to change your network.",EVENT_HANDLER_ERROR(A){let{eventName:e}=A;return"an error was caught on trtc.on('".concat(e,"', handler), please check your code on 'handler'.")},VIDEO_CONTEXT_ERROR(A){let{reason:e,error:o}=A;return"video context error ".concat(e," ").concat(o?.name||""," ").concat(o?.message||"")},SERVER_ERROR(A){let{fnName:e,error:o}=A;return"'".concat(e,"' got server error: ").concat(o?.toString(),", please check the SDK documentation.")},NEED_TO_BUY(A){let{value:e,url:o}=A;return"You need to buy packages for ".concat(e,". Refer to: ").concat(o)},ACCOUNT_NO_MONEY:A=>{let{fnParams:e}=A;return"your TRTC account run out of credit, please recharge.".concat(e.sdkAppId?" SDKAppId: ".concat(e.sdkAppId):"")},OPERATION_ABORT(A){let{fnName:e}=A;return"'".concat(e,"' abort")},UNKNOWN_ERROR(A){let{fnName:e,error:o}=A;return"'".concat(e,"' throw unknown exception").concat(o?", error: ".concat(o.toString(),"."):".")}});function LM(A){if(!A)return"camera";let e=A.toLowerCase();return e.includes("screen")?"screen share":e.includes("audio")?"microphone":"camera"}var CtA=class G1 extends Error{constructor(e){let{code:o,extraCode:a,message:c="",messageParams:d,fnName:C="",originError:y,data:S}=e;var b;let V;V=c||function(J){let gA,{code:CA,params:MA,enableDocLink:ee=!1}=J,Be="",Pe=L2[CA];try{gA=e5[Pe]}catch{gA=e5.UNKNOWN_ERROR}return va(gA)?Be=gA(MA):Yn(gA)&&(Be=gA),MA.fnName&&!Be.includes(MA.fnName)&&(Be[Be.length-1]!=="."&&(Be+="."),Be+=" thrown from ".concat(MA.fnName,"()")),ee&&(Be+=" doc:"),Be}({code:o===vo.SERVER_ERROR?o:a||o,params:pi({fnName:C,error:y},d)}),super(V),Y(this,"name","RtcError"),Y(this,"code"),Y(this,"extraCode"),Y(this,"functionName"),Y(this,"message"),Y(this,"data"),Y(this,"handler"),Y(this,"originError"),this.name=L2[o],this.code=o,this.extraCode=a,this.functionName=C,this.originError=y,this.message=V,this.data=S,this.extraCode===5302&&(b=this.originError)!=null&&b.message.includes("system")&&(this.handler=()=>{let J=document.createElement("a");Zf?J.href="ms-settings:privacy-".concat({startLocalVideo:"webcam",startLocalAudio:"microphone"}[this.functionName]):AQ&&(J.href="x-apple.systempreferences:com.apple.preference.security?Privacy_".concat({startLocalVideo:"Camera",startLocalAudio:"Microphone",startScreenShare:"ScreenCapture"}[this.functionName])),J.href.length>0&&J.click()})}static convertFrom(e,o,a){let c=e;if(e instanceof oi){let{stack:d}=e,C={code:vo.UNKNOWN_ERROR,fnName:o,originError:e};switch(e.getCode()){case lt.INVALID_PARAMETER:C.code=vo.INVALID_PARAMETER,C.message=e.message;break;case lt.INVALID_OPERATION:C.code=vo.INVALID_OPERATION,C.message=e.message;break;case lt.NOT_SUPPORTED:case lt.NOT_SUPPORTED_H264:C.code=vo.ENV_NOT_SUPPORTED,e.getCode()===lt.NOT_SUPPORTED_H264&&(C.extraCode=e.message.includes(cc.NOT_SUPPORTED_H264ENCODE)?5203:5204);break;case lt.JOIN_ROOM_FAILED:C.messageParams={fnParams:a};case lt.SERVER_TIMEOUT:case lt.SWITCH_ROLE_FAILED:case lt.SWITCH_ROOM_FAILED:C.code=vo.SERVER_ERROR,C.extraCode=e.getExtraCode();break;case lt.API_CALL_ABORTED:C.code=vo.OPERATION_ABORT;break;case lt.DEVICE_NOT_FOUND:case lt.DEVICE_AUTO_RECOVER_FAILED:case lt.INITIALIZE_FAILED:C.code=5300,e.name&&(C.extraCode=function(y){let S;switch(y){case"NotFoundError":S=5301;break;case"NotAllowedError":S=5302;break;case"NotReadableError":S=5303;break;case"OverconstrainedError":S=5304;break;case"InvalidStateError":S=5305;break;case"SecurityError":S=5306;break;case"AbortError":S=5307;break;default:S=5300}return S}(e.name));break;case lt.VIDEO_ENCODE_FAILED:C.extraCode=5505;case lt.AUDIO_ENCODE_FAILED:C.extraCode=5506,C.code=vo.OPERATION_FAILED;break;case lt.UNKNOWN:break;default:C.code=vo.OPERATION_FAILED}c=new G1(C),d&&(c.stack+=d.substr(d.indexOf(` -`)))}else{if(e instanceof G1)return e;c=new G1({code:vo.UNKNOWN_ERROR,fnName:o,originError:e})}return c}},Ro=CtA;function Wd(A){return A==="sub"?"auxiliary":A==="auxiliary"?"sub":"main"}function U2(A){return A===Hk.QOS_PREFERENCE_CLEAR?"detail":A===Hk.QOS_PREFERENCE_SMOOTH?"motion":""}function F2(A,e){let o=e?cx:GS;return Yx(A)?pi(pi({},o),A):wC[A]?wC[A]:o}var t5={type:"object",properties:{cameraId:{type:"string"},useFrontCamera:{type:"boolean"},fillMode:{type:"string",values:["contain","cover","fill"]},mirror:{type:["string","boolean"],values:[!0,!1,"view","publish","both"]},small:{type:["string","object","boolean"],properties:{width:{type:"number"},height:{type:"number"},frameRate:{type:"number"},bitrate:{type:"number"}}},videoTrack:{instanceOf:MediaStreamTrack}}},i5={type:"object",properties:{systemAudio:{type:"boolean"},fillMode:{type:"string",values:["contain","cover","fill"]},profile:{type:["string","object"],properties:{width:{type:"number"},height:{type:"number"},frameRate:{type:"number"},bitrate:{type:"number"}}},videoTrack:{instanceOf:MediaStreamTrack},audioTrack:{instanceOf:MediaStreamTrack}}},A_={type:["string",HTMLElement,null,"array"],arrayItem:{instanceOf:HTMLElement},validate(A,e,o){if(Yn(A)&&!document.getElementById(A))throw new Ro({code:vo.INVALID_PARAMETER,extraCode:5009,fnName:o,messageParams:{key:e}})}},o5={name:"userId",required:!0,type:"string"},s5={type:"object",properties:{microphoneId:{type:"string"},audioTrack:{instanceOf:MediaStreamTrack},captureVolume:{type:"number",min:0},earMonitorVolume:{type:"number",min:0,max:100},profile:{type:["string","object"],properties:{bitrate:{type:"number"},channelCount:{type:"number"}}},echoCancellation:{values:[!0,!1,"remote-only","all"]},autoGainControl:{type:"boolean"},noiseSuppression:{type:"boolean"}}};function e_(A,e){if(!A)throw new Ro({code:vo.INVALID_OPERATION,extraCode:5101,fnName:e})}function n5(A,e,o){if(!A)throw new Ro({code:vo.INVALID_OPERATION,extraCode:5102,fnName:e,messageParams:{value:o}})}function r5(A,e,o){if(!(/^[1-9]\d*$/.test(String(A))&&A<4294967295))throw new Ro({code:vo.INVALID_PARAMETER,extraCode:5013,fnName:e,messageParams:{key:o}})}function a5(A,e,o){if(!/^[A-Za-z\d\s!#$%&()+\-:;<=.>?@[\]^_{}|~,]{1,64}$/.test(A))throw new Ro({code:vo.INVALID_PARAMETER,extraCode:5012,fnName:e,messageParams:{key:o}})}function g5(A){var e;if((e=A?.option)==null||!e.small)return;if(!pM())return QA.warn("small stream is not supported"),void delete A.option.small;let o=F2(A.option.profile),a=F2(A.option.small,!0);return((c,d)=>c.width*c.height>=d.width*d.height&&c.frameRate>=d.frameRate&&c.bitrate>=d.bitrate)(o,a)?void 0:(QA.warn("small stream profile must be less than big stream profile. Big: ".concat(JSON.stringify(o),", Small: ").concat(JSON.stringify(a))),void delete A.option.small)}var htA={create:[{name:"RoomConfig",instanceOf:Function},{name:"CreateConfig",type:"object",properties:{plugins:{type:"array",arrayItem:{instanceOf:Function}}}}],enterRoom:{name:"EnterRoomConfig",type:"object",required:!0,validate(A,e,o){if(this._room.isJoined)throw new Ro({code:vo.INVALID_OPERATION,extraCode:5104,fnName:o});if(A.roomId){if(Yn(A.roomId))throw new Ro({code:vo.INVALID_PARAMETER,extraCode:5016,fnName:o,messageParams:{key:e}});r5(A.roomId,o,e)}else{if(!A.strRoomId)throw new Ro({code:vo.INVALID_PARAMETER,extraCode:5015,fnName:o});a5(A.strRoomId,o,e)}},properties:{sdkAppId:{required:!0,type:"number",allowEmpty:!1},userId:{required:!0,type:"string",allowEmpty:!1},userSig:{required:!0,type:"string",allowEmpty:!1},scene:{type:"string",values:["live","rtc"]},role:{type:"string",values:["audience","anchor"]},roomId:{type:["string","number"]},strRoomId:{type:"string"},proxy:{type:["object","string"],properties:{websocketProxy:{type:"string"},turnServer:{type:["object","array"],properties:{url:{required:!0,type:"string"},username:{type:"string"},credential:{type:"string"},credentialType:{type:"string",values:["password"]}}},loggerProxy:{type:"string"},webtransportProxy:{type:"string"}}},enableAutoPlayDialog:{type:"boolean"},userDefineRecordId:{type:"string"},latencyLevel:{type:"number"},playoutDelay:{type:"object",properties:{min:{type:"number",min:0,max:1e3},max:{type:"number",min:0,max:1e4}}}}},startLocalVideo:{name:"LocalVideoConfig",type:"object",properties:{view:A_,mute:{type:["boolean","string"]},publish:{type:"boolean"},capture:{required:!1,type:"boolean"},option:t5},validate(A){var e,o;if(((e=A?.option)==null||!e.videoTrack)&&gu())throw new Ro({code:vo.ENV_NOT_SUPPORTED,extraCode:5201});(o=A?.option)!=null&&o.small&&g5(A)}},updateLocalVideo:{name:"updateLocalVideoConfig",type:"object",required:!0,properties:{view:Bo(pi({},A_),{required:!1}),publish:{type:"boolean"},capture:{required:!1,type:"boolean"},mute:{type:["boolean","string"]},option:t5},validate(A){var e;(e=A?.option)!=null&&e.small&&g5(A)}},startLocalAudio:{name:"LocalAudioConfig",type:"object",properties:{publish:{type:"boolean"},mute:{type:["boolean","string"],values:[!0,!1,"microphone"]},muteKeepVolumeDetection:{type:"boolean"},option:s5},validate(A){var e;if(((e=A?.option)==null||!e.audioTrack)&&gu())throw new Ro({code:vo.ENV_NOT_SUPPORTED,extraCode:5201})}},updateLocalAudio:{name:"updateLocalAudioConfig",type:"object",required:!0,properties:{publish:{type:"boolean"},mute:{type:["boolean","string"],values:[!0,!1,"microphone"]},muteKeepVolumeDetection:{type:"boolean"},option:s5}},startScreenShare:{name:"ScreenShareConfig",type:"object",properties:{view:A_,publish:{type:"boolean"},option:i5},validate(A,e,o,a,c){var d;if((d=A?.option)==null||!d.videoTrack){if(gu())throw new Ro({code:vo.ENV_NOT_SUPPORTED,extraCode:5201});if(!xp())throw new Ro({code:vo.ENV_NOT_SUPPORTED,fnName:o,extraCode:5205})}}},updateScreenShare:{name:"updateScreenShareConfig",type:"object",required:!0,properties:{view:A_,publish:{type:"boolean"},option:i5}},muteRemoteAudio:[o5,{name:"mute",required:!0,type:"boolean"}],setRemoteAudioVolume:[o5,{name:"volume",required:!0,type:"number",min:0}],startRemoteVideo:{name:"startRemoteVideoConfig",type:"object",required:!0,properties:{view:A_,userId:{type:"string",required:!0},streamType:{values:["main","sub"],required:!0},option:{type:"object",properties:{fillMode:{type:"string",values:["contain","cover","fill"]},mirror:{type:"boolean"}}}},validate(A,e,o){e_(this._room.isJoined,o);let a=this._room.remotePublishedUserMap.get(A.userId);if(n5(!!a,o,A),a&&(A.streamType==="main"&&!a.muteState.videoAvailable||A.streamType==="sub"&&!a.muteState.hasAuxiliary))throw new Ro({code:vo.INVALID_OPERATION,extraCode:5103,fnName:o,messageParams:{value:A}})}},updateRemoteVideo:{name:"updateRemoteVideoConfig",type:"object",required:!0,properties:{view:Bo(pi({},A_),{required:!1}),userId:{type:"string",required:!0},streamType:{values:["main","sub"],required:!0},option:{type:"object",properties:{fillMode:{type:"string",values:["contain","cover","fill"]},mirror:{type:"boolean"}}}},validate(A,e,o){e_(this._room.isJoined,o);let a=this._room.remotePublishedUserMap.get(A.userId);if(n5(!!a,o,A),a){if(A.streamType==="main"&&!a.muteState.videoAvailable||A.streamType==="sub"&&!a.muteState.hasAuxiliary)throw new Ro({code:vo.INVALID_OPERATION,extraCode:5103,fnName:o,messageParams:{value:A}});if(A.option){let c=A.streamType==="main"?a.remoteVideoTrack:a.remoteAuxiliaryTrack;if((A.option.pictureInPicture||A.option.fullScreen||A.option.fullScreen)&&(!c.isSubscribed||!c.player.isPlaying))throw new Ro({code:vo.INVALID_OPERATION,message:"cannot set pictureInPicture or fullScreen when remote video is not playing"})}}}},stopRemoteVideo:{name:"stopRemoteVideoConfig",type:"object",required:!0,properties:{userId:{type:"string",required:!0},streamType:{values:["main","sub"]}},validate(A,e,o){if(A.userId!=="*"&&Ye(A.streamType))throw new Ro({code:vo.INVALID_PARAMETER,extraCode:5014,fnName:o})}},switchRole:{name:"role",required:!0,values:["anchor","audience"],validate(A,e,o){e_(this._room.isJoining||this._room.isJoined,o)}},enableAudioVolumeEvaluation:[{name:"interval",type:"number"},{name:"enableInBackground",type:"boolean"}],sendSEIMessage:[{name:"buffer",required:!0,instanceOf:ArrayBuffer,validate(A,e,o,a){if(!mk)throw new Ro({code:vo.ENV_NOT_SUPPORTED,fnName:o,extraCode:5207});if(!this._room.enableSEI)throw new Ro({code:vo.INVALID_OPERATION,fnName:o,extraCode:5108});if(A.byteLength>1e3)throw new Ro({code:vo.INVALID_PARAMETER,extraCode:5018,fnName:o});if(A.byteLength===0)throw new Ro({code:vo.INVALID_PARAMETER,extraCode:5017,messageParams:{key:e},fnName:o});e_(this._room.isJoined,o)}},{name:"options",type:"object",properties:{seiPayloadType:{type:"number",values:[5,243]},toSubStream:{type:"boolean",validate(A,e,o){if(!A&&!this._room.isMainStreamPublished||A&&!this._room.isAuxStreamPublished)throw new Ro({code:vo.INVALID_OPERATION,extraCode:5109,messageParams:{key:e},fnName:o})}}}}],sendCustomMessage:{name:"message",required:!0,type:"object",properties:{cmdId:{type:"number",required:!0,min:1,max:10},data:{instanceOf:ArrayBuffer,required:!0,validate(A,e,o,a){if(A.byteLength>1e3)throw new Ro({code:vo.INVALID_PARAMETER,extraCode:5018,fnName:o});if(A.byteLength===0)throw new Ro({code:vo.INVALID_PARAMETER,extraCode:5017,fnName:o,messageParams:{key:e}})}}},validate(A,e,o){if(e_(this._room.isJoined,o),this._room.scene==="live"&&this._room.role==="audience")throw new Ro({code:vo.INVALID_OPERATION,extraCode:5107,fnName:o,messageParams:{key:e}})}},switchRoom:{name:"switchRoomConfig",type:"object",required:!0,validate(A,e,o){if(e_(this._room.isJoined,o),this._room.useStringRoomId&&A.strRoomId===this._room.roomId||!this._room.useStringRoomId&&A.roomId===Number(this._room.roomId))throw new Ro({code:vo.INVALID_PARAMETER,extraCode:5020,fnName:o,messageParams:{key:this._room.useStringRoomId?"strRoomId":"roomId"}});if(A.roomId&&this._room.useStringRoomId||!A.roomId&&A.strRoomId&&!this._room.useStringRoomId)throw new Ro({code:vo.INVALID_PARAMETER,extraCode:5019,fnName:o,messageParams:{key:this._room.useStringRoomId?"strRoomId":"roomId"}});if(A.roomId)r5(A.roomId,o,e);else{if(!A.strRoomId)throw new Ro({code:vo.INVALID_PARAMETER,extraCode:5015,fnName:o});a5(A.strRoomId,o,e)}},properties:{roomId:{type:"number"},strRoomId:{type:"string"},privateMapKey:{type:"string"},userSig:{type:"string",required:!0},autoSubscribeCount:{type:"number",min:0,max:50}}}},jl={TRTC:htA},zd=class extends Error{};function BtA(A,e){let o=Hf(A);for(let a=0;a!0),Y(this,"mergeUpdate",BtA);let a=C_.instances.get(e);a?a.set(o,this):C_.instances.set(e,new Map([[o,this]]))}static get(e,o){if(!o)return;let a=C_.instances.get(e);return a&&a.get(o)||new C_(e,o)}static gets(e,o){let a=C_.instances.get(e),c=[];return a&&a.forEach((d,C)=>{o.test(C)&&c.push(d)}),c}action(e,o,a){let c=y=>{var S;return e===0?this.started=!0:e===3&&(this.started=!1),this.ops.shift(),(S=this.currentOp)==null||S.action(),y},d=y=>{var S,b;throw this.ops.shift(),e===0&&((S=this.currentOp)==null?void 0:S.type)===2&&this.ops.shift().reject(new zd("start failed")),(b=this.currentOp)==null||b.action(),y},C={type:e,action:()=>o(...C.args).then(c,d),args:a,resolve:QtA,reject:ptA};try{switch(this.state){case 1:if(e===0)throw new zd("already started");break;case 4:if(e===2)throw new zd("not started");break;default:return this.cacheOp(C)}}catch(y){return Promise.reject(y)}return this.ops.push(C),C.promise=o(...C.args).then(c,d)}cacheOp(e){if(this.ops.length===1)switch(this.state){case 0:case 2:if(e.type===0)throw new zd("already start");break;case 3:switch(e.type){case 2:throw new zd("update not allowed when stopping");case 3:return this.currentOp.promise}break;default:throw new zd("unknown state")}else switch(e.type){case 3:if(this.lastOpType===3)return this.lastOp.promise;{let a=new zd("keep stop");if(this.ops.slice(1).forEach(c=>c.reject(a)),this.ops=this.ops.slice(0,1),this.state===3)return this.currentOp.promise}break;case 2:switch(this.lastOpType){case 2:return this.lastOp.args=this.mergeUpdate(this.lastOp.args,e.args),this.lastOp.promise;case 3:throw new zd("update not allowed after stop")}break;case 0:switch(this.lastOpType){case 2:throw new zd("start not allowed after update");case 0:throw new zd("duplicate start");case 3:if(this.startSame(this.currentOp.args,e.args))throw this.ops.pop().reject(new zd("keep start")),new zd("already start")}}e.promise=new Promise((a,c)=>{e._resolve?e._resolve.then(a):e.resolve=a,e._reject?e._reject.catch(c):e.reject=c});let{action:o}=e;return e.action=()=>o().then(e.resolve,e.reject),this.ops.push(e),e.promise}get lastOp(){return this.ops[this.ops.length-1]}get lastOpType(){return this.lastOp.type}get currentOp(){return this.ops[0]}get state(){return this.currentOp?this.currentOp.type:this.started?1:4}};Y(c5,"instances",new WeakMap);var qk=c5,O2=new WeakMap,P2=(A,e)=>{if(e instanceof zd){let{stack:o}=e;e=new Ro({code:vo.OPERATION_ABORT,message:"".concat(A," abort: ").concat(e.message),fnName:A}),o&&(e.stack+=o.substr(o.indexOf(` -`)))}throw e};function UM(A,e){return Hr((o,a)=>function(){for(var c=arguments.length,d=new Array(c),C=0;Cfunction(){for(var C=arguments.length,y=new Array(C),S=0;S{var MA,ee;let Be=(MA=O2.get(this))==null?void 0:MA.get(J(...y));if(Be){let{timeoutId:Me,resolve:fi}=Be;clearTimeout(Me),fi()}let Pe=setTimeout(()=>{if(b.state===3||b.state===4)return gA();b.action(2,c.bind(this),y).catch(P2.bind(null,d)).then(gA,CA)},V);O2.has(this)?(ee=O2.get(this))==null||ee.set(J(...y),{timeoutId:Pe,resolve:gA}):O2.set(this,new Map([[J(...y),{timeoutId:Pe,resolve:gA}]]))})}return b.action(2,c.bind(this),y).catch(P2.bind(null,d))})}function FM(A){return Hr((e,o)=>function(){for(var a=arguments.length,c=new Array(a),d=0;dS.action(3,()=>Promise.resolve(),c))).then(()=>e.call(this,...c));let y=qk.get(this,C);return y?y.action(3,e.bind(this),c).catch(P2.bind(null,o)):e.apply(this,c)})}function OM(){return function(A,e,o){return A.prototype[e]=function(){let a=this._log||console,c='"'.concat(e,'" is a static method. Use TRTC.').concat(e,"() instead. See: ").concat(Vh,"/en/TRTC.html#.").concat(e);a.warn(c)},o}}var Hi={ERROR:"error",AUTOPLAY_FAILED:"autoplay-failed",KICKED_OUT:"kicked-out",REMOTE_USER_ENTER:"remote-user-enter",REMOTE_USER_EXIT:"remote-user-exit",REMOTE_AUDIO_AVAILABLE:"remote-audio-available",REMOTE_AUDIO_UNAVAILABLE:"remote-audio-unavailable",REMOTE_VIDEO_AVAILABLE:"remote-video-available",REMOTE_VIDEO_UNAVAILABLE:"remote-video-unavailable",AUDIO_VOLUME:"audio-volume",AUDIO_FRAME:"audio-frame",NETWORK_QUALITY:"network-quality",CONNECTION_STATE_CHANGED:"connection-state-changed",AUDIO_PLAY_STATE_CHANGED:"audio-play-state-changed",VIDEO_PLAY_STATE_CHANGED:"video-play-state-changed",SCREEN_SHARE_STOPPED:"screen-share-stopped",DEVICE_CHANGED:"device-changed",PUBLISH_STATE_CHANGED:"publish-state-changed",TRACK:"track",STATISTICS:"statistics",SEI_MESSAGE:"sei-message",CUSTOM_MESSAGE:"custom-message",VIDEO_DECODE_DOWNGRADE_STATE_CHANGED:"video-decode-downgrade-state-changed",LAYER_DATA:"layerData",FIRST_VIDEO_FRAME:"first-video-frame",PERMISSION_STATE_CHANGE:"permission-state-change",VIDEO_SIZE_CHANGED:"video-size-changed",REALTIME_TRANSCRIBER_MESSAGE:"realtime-transcriber-message",REALTIME_TRANSCRIBER_STATE_CHANGED:"realtime-transcriber-state-changed",PICTURE_IN_PICTURE_STATE_CHANGED:"picture-in-picture-state-changed",FULL_SCREEN_STATE_CHANGED:"full-screen-state-changed"},mtA=new Set([Hi.AUDIO_VOLUME,Hi.AUDIO_FRAME,Hi.NETWORK_QUALITY,Hi.STATISTICS,Hi.SEI_MESSAGE,Hi.CUSTOM_MESSAGE,Hi.LAYER_DATA]),l5={};Yh(l5,{ScheduleRequestType:()=>E5,getAbilityConfig:()=>ftA,getScheduleDomain:()=>fK,isNeedToSchedule:()=>Kk,scheduleProxy:()=>zp,sendScheduleRequest:()=>u5,setIsNeedToSchedule:()=>EQ,setScheduleProxy:()=>mK});var x2=null,Y2=0,I5=72e5,V2="trtc_schedule_cache",Kk=!0;function EQ(A){wr(A)&&A!==Kk&&(Kk=A,QA.info("setIsNeedToSchedule ".concat(A)),A?function(){if(typeof window<"u"&&typeof localStorage<"u")try{localStorage.removeItem(V2)}catch(e){QA.error("clearScheduleCache error",e)}}():Y2=Date.now()+I5)}function u5(A){return KA(this,arguments,function(e){let{userId:o,sdkAppId:a,useStringRoomId:c,roomId:d,userSig:C,version:y,frameWorkType:S,role:b,latencyLevel:V}=e;return function*(){var J;if(!Kk&&x2&&Y2>Date.now())return{isCached:!0,result:x2};let gA={delta:0,count:[1,1],msg:[],detail:[]};try{let CA=new FormData;CA.append("userId",String(o)),CA.append("sdkAppId",String(a)),CA.append("isStrGroupId",String(c)),CA.append("groupId",String(d)),CA.append("sdkVersion",y),CA.append("userSig",String(C));let MA=((J=yield cM())==null?void 0:J.model)||$b();MA&&CA.append("model",MA);let ee=Up();ee&&CA.append("osString",ee);let Be=kp();Be&&CA.append("gpu",Be),b&&CA.append("role",String(b)),V&&CA.append("latencyLevel",String(V)),S&&CA.append("frameWorkType",String(S));let Pe=bo(),Me=yield function(Ge,dt,Ci){return new Promise((yi,Yo)=>{let Vo=null;qS([d5(Qn=>dt.count[0]=Qn+1,Qn=>{let{error:Jo,retry:Ns,retriedCount:pg,retryFuncArgs:ma}=Qn;dt.msg[0]=Jo.message,Vo||(pg>=1&&(ma[0]=py(Ci,"config",YA.MAIN,!0)),Ns())})(py(Ci,"config",YA.MAIN),Ge,{get timeout(){return 1e3*Yf(2+dt.count[0])}}),d5(Qn=>dt.count[1]=Qn+1,Qn=>{let{error:Jo,retry:Ns,retriedCount:pg,retryFuncArgs:ma}=Qn;dt.msg[1]=Jo.message,Vo||(pg>=2&&(ma[0]=py(Ci,"config",YA.BACKUP,!0)),Ns())})(py(Ci,"config",YA.BACKUP),Ge,{get timeout(){return 1e3*Yf(2+dt.count[1])}})]).then(Qn=>{Vo=Qn,yi(Vo)}).catch(Yo)})}(CA,gA,a);Me.config&&(Me.config.loggerDomain&&TS(Me.config.loggerDomain),wr(Me.config.scheduleCache)&&EQ(!Me.config.scheduleCache)),gA.delta=bo()-Pe;let fi=function(Ge,dt,Ci){let yi={totalCost:0,local:0,dns:0,tcp:0,tls:0,request:0,response:0};try{let Yo=performance.getEntriesByType("resource"),Vo=py(Ge,"config",YA.MAIN),Qn=py(Ge,"config",YA.BACKUP);for(let Jo of Yo)if(Jo.startTime>=Ci&&(Jo.name===Vo||Jo.name===Qn)&&Jo.transferSize>0){let Ns=Jo.name===Vo?YA.MAIN:YA.BACKUP,pg=Math.round(Jo.duration),ma=Math.round(Jo.domainLookupStart-Jo.startTime),Iu=Jo.redirectStart>0?Math.round(Jo.redirectEnd-Jo.redirectStart):0,Xk=Jo.fetchStart>0?Math.round(Jo.domainLookupStart-Jo.fetchStart):0,r_=Math.round(Jo.domainLookupEnd-Jo.domainLookupStart),Ez=Math.round(Jo.requestStart-Jo.secureConnectionStart),dz=Math.round(Jo.secureConnectionStart-Jo.connectStart),Cz=Math.round(Jo.responseStart-Jo.requestStart),hz=Math.round(Jo.responseEnd-Jo.responseStart),WiA=[r_,Ez,dz,Cz,hz];sn.uploadEvent({log:"stat-schedule-net:".concat(pg,"(").concat(ma,"(").concat(Iu,"->").concat(Xk,")->").concat(WiA.join("->"),") ").concat(Ns),userId:dt}),yi=Bo(pi({},yi),{totalCost:pg,local:ma,dns:r_,tcp:dz,tls:Ez,request:Cz,response:hz});break}}catch(Yo){QA.error("getScheduleDetailCost error",Yo)}return yi}(Number(a),o,Pe);return x2=Me,function(Ge){if(typeof window<"u"&&typeof localStorage<"u")try{let dt=Date.now()+I5;localStorage.setItem(V2,JSON.stringify({result:Ge,expireIn:dt})),Y2=dt}catch(dt){QA.error("saveScheduleToLocalStorage error",dt)}}(Me),{isCached:!1,result:Me,detailCost:fi}}catch(CA){let MA=Ra(CA)?CA[0]:CA,ee=bn(MA.code)?MA.code:0,Be="schedule failed".concat(MA.message?": ".concat(MA.message):""),Pe=new oi({code:lt.SCHEDULE_FAILED,extraCode:ee,message:Zo({key:So.JOIN_ROOM_FAILED,data:{error:Be,code:ee}})});throw QA.error(Be,ee),Pe}}()})}typeof document<"u"&&document.head.insertAdjacentHTML("beforeend",Object.values(WB).map(A=>'')).join(`\r -`)),function(){if(typeof window<"u"&&typeof localStorage<"u")try{let A=localStorage.getItem(V2);if(A){let{result:e,expireIn:o}=JSON.parse(A);o>Date.now()?(x2=e,Y2=o,Kk=!1):localStorage.removeItem(V2)}}catch(A){QA.error("loadScheduleFromLocalStorage error",A)}}(),U.on("28",()=>EQ(!0)),U.on("63",()=>EQ(!0)),U.on("84",()=>EQ(!0)),U.on("201",A=>{A.state==="RECONNECTING"&&EQ(!0)}),U.on("202",A=>{A.state==="RECONNECTING"&&EQ(!0)});var zp={main:"",backup:""};function mK(A){Ra(A)?(zp.main=A[0],zp.backup=A[1]):(zp.main=A,zp.backup=A)}var E5=(A=>(A.CONFIG="config",A.TRTC_AUTO_CONF="trtcAutoConf",A.AUDIO_AI_AUTH="audioAiAuth",A))(E5||{});function py(A,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:YA.MAIN,a=arguments.length>3&&arguments[3]!==void 0&&arguments[3];return"https://".concat(zp[o]||fK(A,o,a),"/api/v1/").concat(e)}function ftA(A,e,o){let a=py(A,e),c=py(A,e,YA.BACKUP),d=new URLSearchParams(o).toString(),C=fetch("".concat(a,"?").concat(d)).then(S=>S.json()),y=fetch("".concat(c,"?").concat(d)).then(S=>S.json());return qS([C,y])}function fK(A){let e,o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:YA.MAIN,a=arguments.length>2&&arguments[2]!==void 0&&arguments[2];return e=xd(A)?a?o===YA.MAIN?WB.MAIN_OVERSEA_BACKUP:WB.BACKUP_OVERSEA:o===YA.MAIN?WB.MAIN_OVERSEA:WB.BACKUP_OVERSEA:o===YA.MAIN?WB.MAIN:WB.BACKUP,e}function ytA(A,e,o){return new Promise((a,c)=>{XB({url:A,body:e,timeout:o.timeout,priority:"high"}).then(d=>{d.data.code===0?a(d.data.data):c({code:d.data.code,message:d.data.msg})}).catch(c)})}var d5=(A,e)=>ZS({retryFunction:ytA,settings:{retries:3,timeout:0},onError:e,onRetrying:A}),yK=class{constructor(){Y(this,"_log"),this._log=QA.createLogger({id:"fd"})}download(A,e){return KA(this,null,function*(){let{type:o="blob"}=e||{};A=Rb(A);try{let a,c=bo();if(a=va(fetch)?yield this.downloadWithFetch(A,o):yield this.downloadWithXHR(A,o),!a||!a.data)throw new Error("data is empty");let d=bo()-c;return this._log.info("downloaded: ".concat(A,", return type: ").concat(o,", cost: ").concat(d,"ms")),Ai.addSuccessEvent({key:522700,cost:bo()-c}),a.data}catch(a){throw this._log.error("failed to download: ".concat(A,", error: ").concat(a)),Ai.addFailedEvent({key:522700,error:a}),a}})}downloadWithFetch(A,e){return KA(this,null,function*(){this._log.info("download with fetch: ".concat(A,", return type: ").concat(e));try{let o,a=yield fetch(A);if(!a.ok){let c=new Error("network response was not ok: ".concat(a.status));throw c.status=a.status,c}return o=e==="arraybuffer"?yield a.arrayBuffer():yield a.blob(),{data:o}}catch(o){throw o}})}downloadWithXHR(A,e){return this._log.info("download with xhr: ".concat(A,", return type: ").concat(e)),new Promise((o,a)=>{let c=new XMLHttpRequest;c.open("GET",A,!0),c.responseType=e,c.onload=()=>{if(c.status===200||c.status===0&&c.response)o({data:c.response});else{let d=new Error("XHR failed, status: ".concat(c.status));d.status=c.status,a(d)}},c.onerror=a,c.send(null)})}loadWasm(A,e){return KA(this,null,function*(){this._log.info("loadWasm ".concat(A,", importObject: ").concat(JSON.stringify(e)));let o=bo(),a=null,c=null;if(va(WebAssembly.instantiateStreaming)&&!A.startsWith("data:application/octet-stream;base64,")&&!(d=>d.startsWith("file://"))(A)&&va(fetch))try{let d=fetch(A);a=(yield WebAssembly.instantiateStreaming(d,e)).instance}catch(d){c=d}if(!a)try{let d=yield this.download(A,{type:"arraybuffer"});a=(yield WebAssembly.instantiate(d,e)).instance}catch(d){c=d}if(a){let d=bo()-o;return this._log.info("loadedWasm ".concat(A,", cost: ").concat(d,"ms")),Ai.addSuccessEvent({key:522701,cost:d}),a}throw this._log.error("failed to loadWasm ".concat(A,", error: ").concat(c)),Ai.addFailedEvent({key:522701,error:c}),c})}loadScript(A){this._log.info("loadScript ".concat(A));let e=bo();return new Promise((o,a)=>{let c=document.createElement("script");c.type="text/javascript",c.onload=()=>{this._log.info("loadedScript ".concat(A,", cost: ").concat(bo()-e,"ms")),Ai.addSuccessEvent({key:522702,cost:bo()-e,split:1e3}),o(c)},c.onerror=d=>{this._log.error("failed to loadScript ".concat(A,", error: ").concat(d?.message||JSON.stringify(d))),Ai.addFailedEvent({key:522702}),a(d)},c.crossOrigin="anonymous",c.src=A,document.head.append?document.head.append(c):document.getElementsByTagName("head")[0].appendChild(c)})}};di([zh({settings:{timeout:0,retries:3},onError(A,e,o){var a;A?.status===404||(a=A?.message)!=null&&a.includes("404")?(this._log.warn("download 404, stop retry"),o(A)):e()},onRetrying(A){this._log.warn("download retrying: ".concat(A))}})],yK.prototype,"download"),di([zh({settings:{timeout:3e3,retries:3},onRetrying(A){this._log.warn("loadScript retrying: ".concat(A))}})],yK.prototype,"loadScript");var DK=new yK;function C5(A){let[e,o]=A,a=o.byteLength,c=parseInt(String(a/255),10),d=a%255,C=[];C.push(0,0,0,1,6,e);for(let S=0;SV+J.dataView.byteLength,0),C=new ArrayBuffer(d+e.data.byteLength),y=new DataView(C),S=new DataView(e.data),b=0;for(let V=0;Vc.isSEI);o?.(a.reverse())}catch{}return e}function f5(A){let{seiMessageList:e,isAudio:o,getNtpTime:a,isMain:c}=A;return new TransformStream({transform(d,C){let y=d;o?audioEncodePipeline.forEach(S=>{y=S({frame:y,ntp:a(),onDump:()=>{self.postMessage({type:"dump",isAudio:o,data:y.data,userId:""})}})}):videoEncodePipeline.forEach(S=>{y=S({frame:y,seiMessageList:e,onDump:()=>{self.postMessage({type:"dump",isAudio:o,data:y.data,userId:"",streamType:c?"main":"auxiliary"})}})}),C.enqueue(y)}})}function y5(A){let{userId:e,streamType:o,isAudio:a}=A;return new TransformStream({transform(c,d){let C=c;a?(audioDecodePipeline.forEach(y=>{C=y({frame:C,onAudioFrameNTPTime:S=>{self.postMessage({type:"audio-ntp",data:S,userId:e,streamType:o})},onDump:()=>{self.postMessage({type:"dump",isAudio:a,data:C.data,userId:e})}})}),d.enqueue(C)):videoDecodePipeline.forEach(y=>{C=y({frame:C,onSEI:S=>{S.forEach(b=>{self.postMessage({type:"sei",seiPayloadType:b.seiPayloadType,data:b.seiPayload.buffer,userId:e,streamType:o})})},onDump:()=>{self.postMessage({type:"dump",isAudio:a,data:C.data,userId:e,streamType:o})}})}),d.enqueue(C)}})}function D5(A){let e=[N2],o=[Q5,h5,J4,B5,C5,f5,y5,h0,zS,T2],a="const videoEncodePipeline=[".concat(A.videoEncodePipeline.toString(),`]; +} `),this.defaultProgam=this.createProgram(this.defaultVShader,this.defaultFShader),this._canvas.addEventListener("webglcontextlost",()=>{this.destroy(new si({code:Et.VIDEO_MANAGER_ERROR,extraCode:4,message:"webgl context lost"}))})}destroy(A){let e="";return A&&(e=A.message,this.error=A,Ai.addFailedEvent({key:512702,error:A})),this.disconnect(),this.log.info("video context destroy".concat(e)?": ".concat(e):""),this.ctx&&(this.ctx.deleteShader(this.defaultVShader),this.ctx.deleteShader(this.defaultFShader),this.ctx.deleteProgram(this.defaultProgam),delete this.ctx),A}set width(A){var e;(e=this.ctx)==null||e.viewport(0,0,A,this.height),super.width=A,this._canvas2d&&(this._canvas2d.width=A)}set height(A){var e;(e=this.ctx)==null||e.viewport(0,0,this.width,A),super.height=A,this._canvas2d&&(this._canvas2d.height=A)}setSize(A,e){var o;(o=this.ctx)==null||o.viewport(0,0,A,e),super.setSize(A,e),this._canvas2d&&(this._canvas2d.width=A,this._canvas2d.height=e)}createShader(A,e){let o=this.ctx,a=o.createShader(A);return o.shaderSource(a,e),o.compileShader(a),a}createProgram(A,e){let o=this.ctx,a=o.createProgram();return o.attachShader(a,A),o.attachShader(a,e),o.linkProgram(a),o.getProgramParameter(a,o.LINK_STATUS)||this.log.error(o.getProgramInfoLog(a)),a}};Y(sL,"UNAVAILABLE","unavailable"),di([lc(Zs.INIT,"created",{sync:!0,fail(A){this.log.error("video gl context create failed",A.cause),Ai.addFailedEvent({key:512700,error:A.cause||A})},success(){this.log.info("video context created use webgl"),Ai.addSuccessEvent({key:512700})}})],sL.prototype,"create"),di([lc("created",Zs.INIT,{ignoreError:!0,sync:!0,success(A){A&&this.emit(sL.UNAVAILABLE,A),this.removeAllListeners()}})],sL.prototype,"destroy");var YC=sL,dQ=class extends oL{constructor(){super(...arguments),Y(this,"ctx")}create(A){if(this.hasAlpha=A.alpha,this._canvas=document.createElement("canvas"),this._canvas.id="trtc_".concat(this.name,"_").concat(oL._ids++),this.ctx=this._canvas.getContext("2d",{alpha:A.alpha,willReadFrequently:A.willReadFrequently}),!this.ctx)throw new si({code:Et.VIDEO_MANAGER_ERROR,extraCode:2,message:"2d context not supported"});this._canvas.addEventListener("contextlost",()=>{this.log.error("2d context lost")}),this._canvas.addEventListener("contextrestored",()=>{this.log.warn("2d context restored")})}destroy(A){let e="";A&&(e=A.message,this.error=A,Ai.addFailedEvent({key:512703,error:A})),this.disconnect(),this.log.info("video context destroy ".concat(e?": ".concat(e):"")),delete this.ctx,this._canvas&&(this._canvas.remove(),this._canvas.width=0,this._canvas.height=0,delete this._canvas),this.removeAllListeners(),Ai.addSuccessEvent({key:512703})}};function HtA(A,e,o,a,c){arguments.length>5&&arguments[5]!==void 0&&arguments[5]&&([o,a]=[a,o]);let d={sWidth:A,sHeight:e,dWidth:o,dHeight:a,sx:0,sy:0,dx:0,dy:0};if(A===0||e===0)return d;switch(c){case void 0:case"fill":break;case"contain":{let C=Math.min(o/A,a/e);d.dWidth=A*C,d.dHeight=e*C,d.dx=(o-d.dWidth)/2,d.dy=(a-d.dHeight)/2;break}case"cover":{let C=Math.max(o/A,a/e),y=o/C,S=a/C;d.sx=(A-y)/2,d.sy=(e-S)/2,d.sWidth=y,d.sHeight=S;break}}return d}di([lc(Zs.INIT,"created",{sync:!0,fail(A){this.log.error("video 2d context create failed",A.cause),Ai.addFailedEvent({key:512701,error:A.cause||A})},success(){this.log.info("video context created use 2d"),Ai.addSuccessEvent({key:512701})}})],dQ.prototype,"create"),di([lc("created",Zs.INIT,{ignoreError:!0,sync:!0})],dQ.prototype,"destroy");var qtA=class{constructor(A,e){this.node=A,this.layout=e,Y(this,"positionBuffer")}get x(){return this.layout.x||this.node.x}get y(){return this.layout.y||this.node.y}get width(){return this.layout.width||this.node.width}get height(){return this.layout.height||this.node.height}get right(){return this.x+this.width}get bottom(){return this.y+this.height}get fillMode(){return this.layout.fillMode}get rotation(){return this.layout.rotation}get hidden(){return!!this.layout.hidden}},N5=class extends $d{constructor(A,e){super(A,{useDefaultProgram:!0,useFbo:!0,name:"mix",create2d:!0,logger:e}),Y(this,"inputs",[]),Y(this,"backgroundColor","black")}addInput(A,e){let o=0,a=this.inputs.length;for(;oe.zIndex))throw new Error("input already exists at zIndex ".concat(e.zIndex));a=d}}let c=new qtA(A,e);this.inputs.splice(o,0,c)}changeInputLayout(A,e){let o=this.inputs.findIndex(gA=>gA.node===A);if(o<0)return;let{x:a,y:c,width:d,height:C,zIndex:y,fillMode:S,rotation:b,hidden:V}=e;if(!Je(y)&&this.inputs.some(gA=>gA.layout.zIndex===y&&gA.node!==A))throw new Error("input already exists at zIndex ".concat(e.zIndex));let J=this.inputs[o];Je(a)||(J.layout.x=a),Je(c)||(J.layout.y=c),Je(d)||(J.layout.width=d),Je(C)||(J.layout.height=C),Je(b)||(J.layout.rotation=b),Je(V)||(J.layout.hidden=V),S&&(J.layout.fillMode=S),!Je(y)&&y!==J.layout.zIndex&&(J.layout.zIndex=y,this.inputs.sort((gA,CA)=>gA.layout.zIndex-CA.layout.zIndex))}hasInput(A){return this.inputs.some(e=>e.node===A)}hasNoInput(){return this.inputs.length===0}resize(A,e){if(!this.matchInputSize)return void super.resize(A,e);let o=this.inputs.reduce((a,c)=>c?Object.assign(a,{width:Math.max(a.width,c.right),height:Math.max(a.height,c.bottom)}):a,{width:0,height:0});super.resize(o.width,o.height),this.context instanceof YC&&this.inputs.forEach(a=>{if(a){let c=this.layout2texCoords(a);a.positionBuffer?this.changeBufferData(a.positionBuffer,c):a.positionBuffer=this.createBuffer(c)}})}connect(A){for(var e=arguments.length,o=new Array(e>1?e-1:0),a=1;ae.node!==A),this.inputs.length===0&&this.drawBackGround2d(this.backgroundColor)}render(A){let e=this.context.ctx;if(e.clearColor(0,0,0,0),this.inputs.reduce((o,a)=>a.node.requestFrame(A)||o,!1)&&e){this.useProgram(),e.enable(e.BLEND),e.blendFunc(e.SRC_ALPHA,e.ONE_MINUS_SRC_ALPHA),this.useBufferFrame();for(let o=0;oe.node.requestFrame(A)),this.ctx2d){this.drawBackGround2d(this.backgroundColor);for(let e=0;e4&&arguments[4]!==void 0&&arguments[4];this.ctx2d&&(c&&([o,a]=[a,o]),this.ctx2d.save(),this.ctx2d.strokeStyle="red",this.ctx2d.lineWidth=2,this.ctx2d.strokeRect(A,e,o,a),this.ctx2d.restore())}getInfo(){let{totalFrames:A,x:e,y:o,width:a,height:c,name:d}=this,C=Date.now(),y=(A-this.lastInfo.totalFrames)/((C-this.lastInfo.timestamp)/1e3)|0;return this.lastInfo={totalFrames:A,x:e,y:o,width:a,height:c,timestamp:C,fps:y,name:d},mi({parent:this.inputs.filter(S=>S).map(S=>S.node.getInfo())},this.lastInfo)}removeAllInputs(){this.inputs.forEach(A=>{var e;if(A.node.disconnect(),A.positionBuffer&&this.context instanceof YC)try{(e=this.context.ctx)==null||e.deleteBuffer(A.positionBuffer)}catch{}})}close(){super.close(),this.removeAllInputs()}},KtA=[1,0,0,0,1,1,0,1],Dy=class extends $d{constructor(A,e,o,a){if(super(A,{useDefaultProgram:!0,useFbo:!0,create2d:!0,name:"transform",logger:e}),Y(this,"mirror",!1),Y(this,"rotation",0),o&&(this.mirror=o),a&&(this.rotation=a),A instanceof YC)try{this.setTexBuffer(KtA)}catch(c){A.destroy(new si({code:Et.VIDEO_MANAGER_ERROR,extraCode:3,message:"create video node ".concat(this.name," error ").concat(c.message||c)}))}}draw2d(A,e,o,a,c){if(this.ctx2d){this.ctx2d.clearRect(0,0,this.width,this.height),this.ctx2d.save(),this.mirror&&(this.ctx2d.scale(-1,1),this.ctx2d.translate(-this.width,0)),this.rotation===90?(this.ctx2d.translate(a,0),this.ctx2d.rotate(Math.PI/2),this.ctx2d.scale(c/a,a/c)):this.rotation===180?(this.ctx2d.translate(this.width,this.height),this.ctx2d.rotate(Math.PI)):this.rotation===270&&(this.ctx2d.translate(0,c),this.ctx2d.rotate(3*Math.PI/2),this.ctx2d.scale(c/a,a/c));let d=super.draw2d(A,e,o,a,c);return this.ctx2d.restore(),d}return!1}render(A){var e;return!((e=this.input)==null||!e.requestFrame(A))&&(this.useProgram(),this.useBufferFrame(),this.useInputTexture(),this.draw(),!0)}resize(A,e){XB(this.rotation)&&([A,e]=[e,A]),super.resize(A,e)}},HK=class extends eL{constructor(A){super(arguments.length>1&&arguments[1]!==void 0?arguments[1]:4,vo),Y(this,"inputLocalVideoTracks",new Map),Y(this,"inputLocalScreenTracks",new Map),Y(this,"cameraNodeMap",new Map),Y(this,"screenNodeMap",new Map),Y(this,"textNodeMap",new Map),Y(this,"imageNodeMap",new Map),Y(this,"videoNodeMap",new Map),Y(this,"endedIds",new Set),Y(this,"videoContext"),Y(this,"mixNode"),Y(this,"destination"),Y(this,"manager"),Y(this,"stat"),Y(this,"_checkId",0),Y(this,"autoSetFps",!0),this.manager=A,this.log.id+="mix",this.create2dVideoContext(),this.destination=this.videoContext.createVideoTrackDestination({name:"mainDestination2d",logger:this.log}),this.destination.on($d.RENDER,e=>{this.emit("render",e)}),this.mixNode=new N5(this.videoContext,this.log),this.mixNode.matchInputSize=!1}listenDeviceChange(){throw new Error("Method not implemented.")}enablePrintDetail(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:2e3;this._checkId=Tr.run("interval",()=>{this.destination&&this.log.debug(this.destination.getInfo())},{delay:A})}create2dVideoContext(){this.videoContext?this.videoContext.destroy():this.videoContext=new dQ({frameRate:15,logger:this.log,name:"mix-ctx"}),this.videoContext.create({alpha:!1})}setFps(A){this.autoSetFps=!1,this.videoContext.frameRate=A;for(let e of[...this.cameraNodeMap.values(),...this.screenNodeMap.values()])e.shouldUpdate=!1;setTimeout(()=>{var e;return(e=this.destination)==null?void 0:e.start(this.videoContext.frameRate)},500)}setFpsAuto(){var A;if(!this.autoSetFps)return;for(let c of[...this.cameraNodeMap.values(),...this.screenNodeMap.values()])c.shouldUpdate=!1;let e=null,o=0,a=!0;for(let[c,d]of this.inputLocalVideoTracks)if(d.profile.frameRate>o){if(this.endedIds.has(c)){let C=this.cameraNodeMap.get(c);C&&C.image.cancelVideoFrameCallback(C.videoCallbackId);continue}o=d.profile.frameRate,e=c}for(let[c,d]of this.inputLocalScreenTracks)if(d.profile.frameRate>o){if(this.endedIds.has(c)){let C=this.screenNodeMap.get(c);C&&C.image.cancelVideoFrameCallback(C.videoCallbackId);continue}o=d.profile.frameRate,e=c,a=!1}if(e!==null){let c=a?this.cameraNodeMap.get(e):this.screenNodeMap.get(e);c&&(c.shouldUpdate=!0,c.tryVideoFrameCallback()),this.log.info("set mix fps: ",o)}else(A=this.destination)==null||A.start(this.videoContext.frameRate),this.log.info("fallback to timer, fps: ",this.videoContext.frameRate)}setMixBackground(A){this.mixNode&&(this.mixNode.backgroundColor=A)}resizeMixCanvas(A,e){var o;(o=this.mixNode)==null||o.resize(A,e)}startMix(){return KA(this,null,function*(){var A;if(!this.mixNode||!this.destination)throw new Error("can't mix without necessary conditions");this.mixNode.disconnect(),this.mixNode.connect(this.destination),Up&&this.player.setCanvas(this.videoContext._canvas),this.setOutputMediaStreamTrack(this.destination.videoTrack),(A=this.manager)==null||A.changeInput(this)})}addCameraSource(A,e,o){if(this.inputLocalVideoTracks.has(A)||this.cameraNodeMap.has(A))throw new Error("There is already a cameraSource with the same ID: ".concat(A));let a,{mediaTrack:c}=e;if(!c)throw new Error("no mediaTrack, add cameraSource failed");e.recaptureMode=1,id(this,Pc).add("videoInputRemoved",d=>{d.deviceId===e.deviceId&&(this.endedIds.add(A),this.setFpsAuto())}),e.on("output-media-track-changed",()=>{this.endedIds.delete(A),this.updateCameraSource(A,o,e.mediaTrack)}),a=zd===16&&c instanceof CanvasCaptureMediaStreamTrack?this.videoContext.createVideoImageSource(c.canvas,{name:"cameraCanvasSource",logger:this.log}):this.videoContext.createVideoTrackSource(c,"cameraNodeSource"),a.resize(e.settings.width,e.settings.height),a.shouldUpdate=!1,this._connectMix(a,o,"cover"),this.inputLocalVideoTracks.set(A,e),this.cameraNodeMap.set(A,a),this.setFpsAuto()}addScreenSource(A,e,o){if(this.inputLocalScreenTracks.has(A)||this.screenNodeMap.has(A))throw new Error("There is already a screenSource with the same ID: ".concat(A));let{mediaTrack:a}=e;if(!a)throw new Error("no mediaTrack, add screenSource failed");e.on("output-media-track-changed",()=>{this.updateScreenSource(A,o,e.mediaTrack)});let c=this.videoContext.createVideoTrackSource(a,"screenNodeSource");c.resize(e.settings.width,e.settings.height),c.shouldUpdate=!1,this._connectMix(c,o),this.inputLocalScreenTracks.set(A,e),this.screenNodeMap.set(A,c),this.setFpsAuto()}addTextSource(A){let{id:e,content:o="",font:a,color:c,layout:d}=A;if(this.textNodeMap.has(e))throw new Error("There is already a textSource with the same ID: ".concat(e));let C=this.videoContext.createTextSource({content:o,font:a,color:c});C.resize(d.width,d.height),this._connectMix(C,d),this.textNodeMap.set(e,C)}addImageSource(A,e,o){if(this.imageNodeMap.has(A))throw new Error("There is already a imageSource with the same ID: ".concat(A));let a=this.videoContext.createVideoImageSource(e,{autoResize:!1,logger:this.log});a.resize(e.width,e.height),this._connectMix(a,o),this.imageNodeMap.set(A,a)}addVideoSource(A,e,o){if(this.videoNodeMap.has(A))throw new Error("There is already a videoSource with the same ID: ".concat(A));let a=this.videoContext.createVideoImageSource(e,{autoResize:!1,logger:this.log});a.resize(e.videoWidth,e.videoHeight),a.shouldUpdate=!1,this._connectMix(a,o),this.videoNodeMap.set(A,a)}updateCameraSource(A,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:null,a=arguments.length>3?arguments[3]:void 0,c=this.inputLocalVideoTracks.get(A);c&&o&&o!==c.mediaTrack&&(this.log.debug("updateCameraSource mixerLocalVideoTrack newTrack:",o,"oldTrack:",c.mediaTrack),c.setInputMediaStreamTrack(o));let d=this.cameraNodeMap.get(A);if(d){if(o){if(zd===16&&o instanceof CanvasCaptureMediaStreamTrack)if(d instanceof a_){let S=d.output;d.close(),d=this.videoContext.createVideoImageSource(o.canvas,{name:"cameraCanvasSource",logger:this.log}),d.connect(S),this.cameraNodeMap.set(A,d)}else d.image=o.canvas;else if(d instanceof a_)d.replaceTrack(o);else{let S=d.output;d.close(),d=this.videoContext.createVideoTrackSource(o,"cameraNodeSource"),d.connect(S),this.cameraNodeMap.set(A,d)}let{width:C,height:y}=o.getSettings();C&&y&&d.resize(C,y)}a&&d.resize(a.width,a.height),(a||o)&&this.setFpsAuto(),this._changeMixLayout(d,e)}}updateScreenSource(A,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:null,a=this.inputLocalScreenTracks.get(A);this.log.debug("updateScreenSource mixerLocalScreenTrack",a,o),a&&o&&o!==a.mediaTrack&&a.setInputMediaStreamTrack(o);let c=this.screenNodeMap.get(A);c&&(o&&c.replaceTrack(o),this._changeMixLayout(c,e))}updateTextSource(A){let{id:e,content:o,font:a,color:c,layout:d}=A,C=this.textNodeMap.get(e);C&&(Je(o)||(C.content=o),Je(a)||(C.font=a),Je(c)||(C.color=c),C.resize(d.width,d.height),this._changeMixLayout(C,d))}updateImageSource(A,e,o){let a=this.imageNodeMap.get(A);a&&(o&&(a.image=o,a.resize(o.width,o.height)),this._changeMixLayout(a,e))}updateVideoSource(A,e,o){let a=this.videoNodeMap.get(A);if(a){if(o){let c=a.image;c instanceof HTMLVideoElement&&this.stopVideoElement(c),a.image=o,a.resize(o.videoWidth,o.videoHeight)}this._changeMixLayout(a,e)}}_connectMix(A,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"contain";if(!this.mixNode)return;let{mirror:a,rotation:c}=e;A.disconnect();let d=new Dy(this.videoContext,this.log,a,c);d=A.connect(d),e.fillMode||(e.fillMode=o),d.connect(this.mixNode,e)}_changeMixLayout(A,e){if(!this.mixNode)return;let{mirror:o,rotation:a}=e,c=A.output||A;c instanceof Dy&&(Je(o)||(c.mirror=o),Je(a)||(c.rotation=a),c.resize(A.width,A.height)),this.mixNode.changeInputLayout(c,e)}removeCameraSource(A){let e=this.inputLocalVideoTracks.get(A);if(!e)return;e.close(),this.inputLocalVideoTracks.delete(A);let o=this.cameraNodeMap.get(A);o&&(o.output instanceof Dy&&o.output.close(),o.close(),this.cameraNodeMap.delete(A)),this.checkAfterRemove(!0)}removeScreenSource(A){let e=this.inputLocalScreenTracks.get(A);if(!e)return;e.close(),this.inputLocalScreenTracks.delete(A);let o=this.screenNodeMap.get(A);o&&(o.output instanceof Dy&&o.output.close(),o.close(),this.screenNodeMap.delete(A)),this.checkAfterRemove(!0)}removeTextSource(A){let e=this.textNodeMap.get(A);e&&(e.output instanceof Dy&&e.output.close(),e.close(),this.textNodeMap.delete(A)),this.checkAfterRemove()}removeImageSource(A){let e=this.imageNodeMap.get(A);e&&(e.output instanceof Dy&&e.output.close(),e.close(),this.imageNodeMap.delete(A)),this.checkAfterRemove()}removeVideoSource(A){let e=this.videoNodeMap.get(A);e&&(e.output instanceof Dy&&e.output.close(),e.image instanceof HTMLVideoElement&&this.stopVideoElement(e.image),e.close(),this.videoNodeMap.delete(A)),this.checkAfterRemove()}checkAfterRemove(){arguments.length>0&&arguments[0]!==void 0&&arguments[0]&&this.setFpsAuto()}stopVideoElement(A){A.pause(),A.src="",A.srcObject=null,A.remove()}close(){var A;super.close(),Tr.clearTask(this._checkId),(A=this.videoContext)==null||A.destroy(),delete this.mixNode,delete this.destination;for(let e of[...this.inputLocalVideoTracks.values(),...this.inputLocalScreenTracks.values()])e.close();this.inputLocalVideoTracks.clear(),this.inputLocalScreenTracks.clear(),this.cameraNodeMap.clear(),this.screenNodeMap.clear(),this.textNodeMap.clear(),this.imageNodeMap.clear(),kn(this);for(let e of this.videoNodeMap.values())e.image instanceof HTMLVideoElement&&this.stopVideoElement(e.image);this.videoNodeMap.clear(),this.log.info("localMixVideoTrack close, stop mix")}},qK=PA();if(typeof navigator<"u"&&navigator.mediaDevices&&"setCaptureHandleConfig"in navigator.mediaDevices)try{navigator.mediaDevices.setCaptureHandleConfig({handle:qK,exposeOrigin:!0,permittedOrigins:["*"]})}catch{}var jtA=function(A){return KA(this,null,function*(){let e=null,o=function(d){let C={preferCurrentTab:d.preferDisplaySurface==="current-tab"||!!d.captureElement,systemAudio:"include",selfBrowserSurface:"include",surfaceSwitching:"include"},y={width:Bg?{max:d.width}:{ideal:d.width,max:d.width},height:Bg?{max:d.height}:{ideal:d.height,max:d.height},frameRate:d.frameRate,displaySurface:d.preferDisplaySurface||"monitor"};if(C.video=y,d.systemAudio){let{echoCancellation:S=!0,noiseSuppression:b=!1,autoGainControl:V=!1}=d;C.audio={echoCancellation:S,noiseSuppression:b,autoGainControl:V,sampleRate:48e3}}return C}(A);QA.info("getDisplayMedia with constraints: ".concat(JSON.stringify(o)));let a=yield navigator.mediaDevices.getDisplayMedia(o);A.systemAudio&&a.getAudioTracks().length===0&&(P0&&$E<74||Bg||er)&&QA.warn("Your browser not support capture system audio");let c=a.getVideoTracks()[0];if(c){if(A.frameRate)try{yield c.applyConstraints({frameRate:{min:A.frameRate,ideal:A.frameRate},width:A.width,height:A.height})}catch(d){QA.warn("screen applyConstraints failed: ".concat(d))}A.captureElement&&(yield function(d,C){return KA(this,null,function*(){var y;if("CropTarget"in window&&"fromElement"in CropTarget&&Ra(d.cropTo))try{if(((y=d.getCaptureHandle())==null?void 0:y.handle)!==qK)return;let S=yield CropTarget.fromElement(C);yield d.cropTo(S)}catch(S){QA.warn("cropTo target failed ".concat(S))}})}(c,A.captureElement))}if(A.audio){let d=function(C){let y={echoCancellation:C.echoCancellation,autoGainControl:C.autoGainControl,noiseSuppression:C.noiseSuppression,sampleRate:C.sampleRate,channelCount:C.channelCount};return Je(C.microphoneId)||(y.deviceId=C.microphoneId),{audio:y,video:!1}}(A);QA.info("getUserMedia with constraints: ".concat(JSON.stringify(d))),e=yield navigator.mediaDevices.getUserMedia(d),a.addTrack(e.getAudioTracks()[0])}return a})},xM=class extends EQ{constructor(A){super(A,2),Y(this,"profile",{width:1920,height:1080,frameRate:5,bitrate:1600}),Y(this,"objectFit","contain"),Y(this,"isScreen",!0),this._log.id="s-".concat(this._log.id)}get isShareCurrentTab(){var A,e;try{return qK===((e=(A=this.mediaTrack)==null?void 0:A.getCaptureHandle())==null?void 0:e.handle)}catch{return}}capture(A){return KA(this,arguments,function(e){var o=this;let{systemAudio:a=!1,autoGainControl:c,echoCancellation:d,noiseSuppression:C,audioTrack:y,videoTrack:S,captureElement:b,preferDisplaySurface:V}=e;return function*(){var J;try{let gA,CA=ko();return S||y?(gA=new MediaStream,S&&gA.addTrack(S),y&&gA.addTrack(y)):(gA=yield jtA({audio:!1,systemAudio:a,width:o.profile.width,height:o.profile.height,frameRate:o.profile.frameRate,autoGainControl:c,echoCancellation:d,noiseSuppression:C,captureElement:b,preferDisplaySurface:V}),o.sourceTrack=gA.getVideoTracks()[0]),yield o.setInputMediaStreamTrack(gA.getVideoTracks()[0]),F.emit(sA.LOCAL_TRACK_CAPTURE_SUCCESS,{track:o,cost:ko()-CA,profile:o.profile,room:(J=o.manager)==null?void 0:J.room}),gA}catch(gA){throw o.log.error("getDisplayMedia error observed ".concat(gA)),gA instanceof si?gA:new si({code:Et.INITIALIZE_FAILED,name:gA.name,message:gA.message})}}()})}switchDevice(A){return KA(this,null,function*(){throw new Error("Method not implemented.")})}};di([FM(function(A){this.setContentHint(A.contentHint||"detail")})],xM.prototype,"capture");var KK,jK=class extends PM{constructor(A){super(A),this._log.id="s-".concat(this._log.id),this.isScreen=!0}addAudioProcessor(A,e,o){this.pipeline.silentNode.setNode(o),this.pipeline.mixNode.setNode(e),this.pipeline.aec.setNode(A),this.enableTrackAEC(!1)}removeAudioProcessor(A){this.pipeline.aec.node===A&&(this.pipeline.aec.deleteNode(),this.pipeline.silentNode.deleteNode(),this.pipeline.mixNode.deleteNode(),this.enableTrackAEC(!0))}};function WK(A){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:48e3,o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1,a=arguments.length>3?arguments[3]:void 0;return KA(this,null,function*(){let c=UI();KK||(KK=Vg(c,URL.createObjectURL(new Blob(['registerProcessor("dumper",class extends AudioWorkletProcessor{constructor(e){super(),this.sourceSampleRate=e.processorOptions.sourceSampleRate||48e3,this.targetSampleRate=e.processorOptions.targetSampleRate||48e3,this.port.onmessage=e=>{this.port2=e.data.port}}process(e){return(this.port2||this.port).postMessage(this.resampleAll(e,this.sourceSampleRate,this.targetSampleRate)),!0}resampleAll(r,s,a){if(s===a)return r;var o=[];for(let t=0;ty.connect(C,0,S)),new ReadableStream({start(y){C.port.onmessage=S=>{y.enqueue(S.data)}},cancel(){A.forEach(y=>y.disconnect(C)),C.port.close()}})})}var WtA=class extends ceA{constructor(A){super(),this.room=A,Y(this,"_localAudioTrack"),Y(this,"_localScreenAudioTrack"),Y(this,"log"),Y(this,"denoiser"),Y(this,"voiceChanger"),Y(this,"mixChangedDebounce"),Y(this,"audioProcessor"),Y(this,"encodePipeline",[]),Y(this,"decodePipeline",[]),Y(this,"getPCMAbortCtrlMap",new Map),Y(this,"audioFrameEventConfigMap",new Map),Y(this,"audioReferenceMap",new Map),Y(this,"isLocalAudioNeedAudioProcess",!1),Y(this,"isScreenAudioNeedAudioProcess",!1),this.log=QA.createLogger({parent:A?.getLogger(),id:"am",userId:A?.userId,sdkAppId:A?.sdkAppId}),this.installEvent()}get localAudioTrack(){return this._localAudioTrack}get _localAudioPipline(){var A;return(A=this._localAudioTrack)==null?void 0:A.pipeline}get _localScreenAudioPipeline(){var A;return(A=this._localScreenAudioTrack)==null?void 0:A.pipeline}dump(A){var e,o;if(!this._localAudioTrack)return;let a=[],c=[];(e=this._localAudioPipline)!=null&&e.source.node&&(a.push(this._localAudioPipline.source.node),c.push("mic")),(o=this._localAudioPipline)!=null&&o.denoiser.node&&(a.push(this._localAudioPipline.denoiser.node),c.push("mic-processed")),this.mixWeight>1&&(a.push(this.audioContext.createMediaStreamSource(this._localAudioPipline.stream)),c.push("mix")),this.log.info("dump audio track ".concat(c,", duration: ").concat(A));let d=new AbortController,C=[],y=setTimeout(()=>{this.log.info('dump audio track complete please input "download()" to download.'),d.abort("timeout")},1e3*A),S=()=>{for(let V=0;VV.pipeTo(new WritableStream({write(J){J.forEach((gA,CA)=>C[CA]=C[CA]?C[CA].concat(gA[0]):[gA[0]])}}),d).catch(J=>S));return{then:b.then.bind(b),download:S}}getPCM(A,e){var o,a,c;if(typeof WritableStream>"u")return void this.log.warn("getPCM failed: browser not support WritableStream");let{enable:d,sampleRate:C=48e3,channelCount:y=1,port:S}=(e===""?this.audioFrameEventConfigMap.get(""):this.audioFrameEventConfigMap.get(e)||this.audioFrameEventConfigMap.get("*"))||{};if(!d)return;this.log.info("getPCM ".concat(e||"local"));let b,V,J=Math.floor(.04*C),gA=new Float32Array(J),CA=new Float32Array(J),MA=0,$A=new AbortController,he=e===""?(o=this._localAudioTrack)==null?void 0:o.mediaTrack:(c=(a=this.room)==null?void 0:a.remotePublishedUserMap.get(e))==null?void 0:c.remoteAudioTrack.mediaTrack;if(he)return WK([UI().createMediaStreamSource(new MediaStream([he]))],C,y,S).then(Ye=>Ye.pipeTo(new WritableStream({write(Me){Me[0][0]&&(MA+Me[0][0].length>J?(gA.set(Me[0][0].subarray(0,J-MA),MA),b=Me[0][0].subarray(J-MA),Me[0][1]&&(CA.set(Me[0][1].subarray(0,J-MA),MA),V=Me[0][1].subarray(J-MA)),MA+=J-MA):(b&&(gA.set(b,MA),MA+=b.length,b=void 0),V&&(CA.set(V,MA),V=void 0),gA.set(Me[0][0],MA),Me[0][1]&&CA.set(Me[0][1],MA),MA+=Me[0][0].length),MA>=J&&(MA=0,A({userId:e,sampleRate:C,channelCount:y,data:y===1?gA:[gA,CA]}),gA=new Float32Array(J),CA=new Float32Array(J)))}}),$A).catch(Me=>this.log.warn("stop getPCM reason:".concat(Me)))),$A;this.log.info("getPCM failed: ".concat(e||"local"," has no audio track"))}get hasScreenAudioTrack(){return!Je(this._localScreenAudioTrack)}get hasAudioTrack(){return!Je(this._localAudioTrack)}changeInput(A){var e,o;return A instanceof jK?(this._localScreenAudioTrack=A,this.isScreenAudioNeedAudioProcess&&(e=this.audioProcessor)!=null&&e.screenAudioWorkletNode&&(A.addAudioProcessor(this.audioProcessor.screenAudioWorkletNode,this.audioProcessor.mixNode,this.audioProcessor.silentNode),this.audioReferenceMap.forEach((a,c)=>{A.mixAudioReference(a,c)})),A.pipeline.connect(),this.mixOnChange()):A instanceof PM?(this._localAudioTrack=A,this.denoiser&&A.addDenoiser(this.denoiser),this.isLocalAudioNeedAudioProcess&&(o=this.audioProcessor)!=null&&o.localAudioWorkletNode&&(A.addAudioProcessor(this.audioProcessor.localAudioWorkletNode,this.audioProcessor.mixNode,this.audioProcessor.silentNode),this.audioReferenceMap.forEach((a,c)=>{A.mixAudioReference(a,c)})),A.pipeline.connect(),this.mixOnChange()):A instanceof o1?A.setOutputMediaStreamTrack(A.mediaTrack):void 0}mixAudioReference(A,e){var o;(o=this._localAudioTrack)==null||o.mixAudioReference(A,e)}unMixAudioReference(A){var e;(e=this._localAudioTrack)==null||e.unMixAudioReference(A)}setAudioReferenceVolume(A,e){var o;(o=this._localAudioTrack)==null||o.setAudioReferenceVolume(A,e)}mixOnChange(){return this.mixChangedDebounce||(this.mixChangedDebounce=Promise.resolve().then(()=>{var A,e;return delete this.mixChangedDebounce,Promise.all([(A=this._localAudioTrack)==null?void 0:A.setOutputMediaStreamTrack(this.mixWeight>1?this.mixTrack:this._localAudioTrack.mediaTrack),(e=this._localScreenAudioTrack)==null?void 0:e.setOutputMediaStreamTrack(this.mixWeight>1?this.mixTrack:this._localScreenAudioTrack.mediaTrack)])})),this.mixChangedDebounce}removeInput(A){A instanceof jK?delete this._localScreenAudioTrack:A instanceof PM&&delete this._localAudioTrack}addDenoiser(A){var e;this.denoiser=A,(e=this._localAudioTrack)==null||e.addDenoiser(A)}addAudioProcessor(A,e,o,a){var c;this.audioProcessor={localAudioWorkletNode:o,mixNode:A,silentNode:e,screenAudioWorkletNode:a},this.isLocalAudioNeedAudioProcess&&this._localAudioTrack&&o&&(this._localAudioTrack.addAudioProcessor(o,A,e),this.audioReferenceMap.forEach((d,C)=>{var y;(y=this._localAudioTrack)==null||y.mixAudioReference(d,C)})),this.isScreenAudioNeedAudioProcess&&this._localScreenAudioTrack&&a&&((c=this._localScreenAudioTrack)==null||c.addAudioProcessor(a,A,e),this.audioReferenceMap.forEach((d,C)=>{var y;(y=this._localScreenAudioTrack)==null||y.mixAudioReference(d,C)}))}removeDenoiser(A){var e;return delete this.denoiser,(e=this._localAudioTrack)==null?void 0:e.removeDenoiser(A)}addVoiceChanger(A,e){var o;this.voiceChanger=[A,e],(o=this._localAudioTrack)==null||o.pipeline.voiceChanger.setNode(A,e)}removeVoiceChanger(){var A;delete this.voiceChanger,(A=this._localAudioTrack)==null||A.pipeline.voiceChanger.deleteNode()}removeAudioProcessor(A,e){var o,a;delete this.audioProcessor,(o=this._localAudioTrack)==null||o.removeAudioProcessor(A),(a=this._localScreenAudioTrack)==null||a.removeAudioProcessor(e)}destroy(){this.close(),this.audioReferenceMap.clear(),this.getPCMAbortCtrlMap.forEach(A=>A?.abort("destroy")),this.getPCMAbortCtrlMap.clear(),this.audioFrameEventConfigMap.clear(),this.uninstallEvent()}addEncodeProcessor(A){let{processor:e,type:o}=A;var a;this.encodePipeline.includes(e)||(this.encodePipeline[o]=e,(a=this.room)==null||a.enableInsertableStreams())}addDecodeProcessor(A){let{processor:e,type:o}=A;var a;this.decodePipeline.includes(e)||(this.decodePipeline[o]=e,(a=this.room)==null||a.enableInsertableStreams())}removeEncodeProcessor(A){let{type:e}=A;this.encodePipeline[e]=void 0}removeDecodeProcessor(A){let{type:e}=A;this.decodePipeline[e]=void 0}handleLocalTrackStarted(A){let{room:e,userId:o}=A;var a;if(e!==this.room||this.getPCMAbortCtrlMap.get(o))return;let c=this.getPCM(d=>{var C;(C=this.room)==null||C.emit("audio-frame",d)},"");this.getPCMAbortCtrlMap.set(o,c),this.getPCMAbortCtrlMap.get(o)&&((a=this._localAudioTrack)==null||a.on("input-media-track-changed",()=>{let d=this.getPCMAbortCtrlMap.get(o);d&&(d.abort("inputMediaTrackChanged"),d=this.getPCM(C=>{var y;(y=this.room)==null||y.emit("audio-frame",C)},""),this.getPCMAbortCtrlMap.set(o,d))}))}handleLocalTrackStopped(A){let{room:e,userId:o}=A;if(e!==this.room)return;let a=this.getPCMAbortCtrlMap.get(o);a&&(a.abort("stopLocalAudio"),this.getPCMAbortCtrlMap.delete(o))}handleRemoteTrackStarted(A){let{room:e,userId:o}=A;if(e===this.room&&!this.getPCMAbortCtrlMap.get(o)){let a=this.room.audioManager.getPCM(c=>{var d;(d=this.room)==null||d.emit("audio-frame",c)},o);this.getPCMAbortCtrlMap.set(o,a)}}handleRemoteTrackStopped(A){let{room:e,userId:o}=A;if(e!==this.room)return;let a=this.getPCMAbortCtrlMap.get(o);a&&(a.abort("stopRemoteAudio"),this.getPCMAbortCtrlMap.delete(o))}installEvent(){F.on("113",this.handleLocalTrackStarted,this),F.on("114",this.handleLocalTrackStopped,this),F.on("115",this.handleRemoteTrackStarted,this),F.on("116",this.handleRemoteTrackStopped,this)}uninstallEvent(){F.off("113",this.handleLocalTrackStarted),F.off("114",this.handleLocalTrackStopped),F.off("115",this.handleRemoteTrackStarted),F.off("116",this.handleRemoteTrackStopped)}updateAudioReference(A){let{type:e,audioReference:o,refId:a,volume:c}=A;if(e==="add"){if(this.audioReferenceMap.get(a)||!o||(this.audioReferenceMap.set(a,o),!this.audioProcessor))return;this.mixAudioReference(o,a)}else if(e==="remove")this.audioReferenceMap.get(a)&&(this.audioReferenceMap.delete(a),this.unMixAudioReference(a));else if(e==="updateVolume"){if(!this.audioProcessor||Je(c))return;this.setAudioReferenceVolume(a,c)}}};function i1(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:30,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:2;return jr((o,a)=>function(){for(var c=arguments.length,d=new Array(c),C=0;C{let b=setTimeout(()=>{let V=new si({code:Et.API_CALL_TIMEOUT,message:"checkPendingPromise ".concat(a,"() timeout ").concat(A,"s")});(this.log||this._log||QA).warn(V),e===2?S(V):e===1&&y()},1e3*A);this._checkPendingPromiseSet||(this._checkPendingPromiseSet=new Set),this._checkPendingPromiseSet.add(b),o.apply(this,d).then(y,S).finally(()=>{clearTimeout(b),this._checkPendingPromiseSet&&b&&this._checkPendingPromiseSet.delete(b)})})})}var YM=class G3 extends NK{constructor(e,o,a){super({userId:o.userId,sdkAppId:e.sdkAppId,mediaType:a,room:e}),this.room=e,this.user=o,Y(this,"tinyId"),Y(this,"isRemote",!0),Y(this,"jitterBufferDelay",0),Y(this,"availableState"),Y(this,"remotePublishState"),Y(this,"_triggerCheckDecodeSubject",uQ(ca(this,G3.STATE_SUBSCRIBE))),Y(this,"ignoreUpdatePlayingState"),this.tinyId=o.tinyId,this.availableState=new Zs("".concat(o.userId,"-").concat(this.mediaType,"-available"),"remote-track-available"),this.remotePublishState=new Zs("".concat(o.userId,"-").concat(this.mediaType,"-remote-publish"),"remote-track-publish"),pa(bK(ca(this,Zs.STATECHANGED),ca(this.remotePublishState,Zs.STATECHANGED)),PK(()=>this.isRemotePublished&&(this.isSubscribed||this.isSubscribing)),hl(y=>{this.availableState.state!==(y?Zs.ON:Zs.OFF)&&(this.availableState.state=y?Zs.ON:Zs.OFF),(!this.isRemotePublished||!this.ignoreUpdatePlayingState)&&this.updatePlayingState(y)}));let c=pa(ca(this.player,fo.ERROR),OM(y=>y.code===MediaError.MEDIA_ERR_DECODE)),d=pa(UK(5e3),OM(()=>!!(!this.ignoreDecodeError&&this.isSubscribed&&this.isPlayCalled&&this.stat.bytesReceived&&this.isRemotePublished)&&(!this.player.isPlaying&&!(this.kind===YA.AUDIO?this.getAudioLevel()>0:this.stat.framesDecoded>0)||(this.reportDecodeResult(!0),!1)))),C=pa(g5(c,d),lE(ca(this,Zs.INIT)));pa(this._triggerCheckDecodeSubject,OM(()=>!this.ignoreDecodeError),A1(C),hl(y=>{this.reportDecodeResult(!1,y)}))}setMute(e){this.isRemotePublished&&super.setMute(e)}setInputMediaStreamTrack(e){super.setInputMediaStreamTrack(e),this.isRemotePublished&&this.isSubscribed&&this.player.setTrack(this.outMediaTrack)}checkDecodeResult(){this._triggerCheckDecodeSubject.next(!0)}waitHasMediaTrack(){return new Promise(e=>{this.mediaTrack?e():this.once("input-media-track-changed",e)})}get ignoreDecodeError(){var e,o,a,c;return(c=(a=(o=(e=this.room)==null?void 0:e.networkQuality)==null?void 0:o.hadRecentBadDownlink)==null?void 0:a.call(o,2))!=null&&c||this.player.isInAutoPlayFailedState}get isSubscribing(){return this.state.toString()==="subscribeing"}get isSubscribed(){return this.state===G3.STATE_SUBSCRIBE}get isAvailable(){return this.availableState.state===Zs.ON}get isNeedPlay(){return this.isAvailable&&this.isPlayCalled}subscribe(e){return e}unsubscribe(){this.streamType==="main"&&this.kind==="video"&&this.room.changeType(!1,this.user)}reportDecodeResult(e,o){var a,c;let d=this.kind===YA.AUDIO;if(Ai[e?"addSuccessEvent":"addFailedEvent"]({key:d?504700:514702}),!d){let C=((a=this.room)==null?void 0:a.downlinkVideoCodec.toUpperCase())||"H264";Ai[e?"addSuccessEvent":"addFailedEvent"]({key:uy["DECODE_".concat(C,"_RESULT")]}),e||this.log.warn("".concat((c=this.room)==null?void 0:c.downlinkVideoCodec," decode failed"))}e||(Ai.addEnum({key:d?504701:514703,value:Pp()}),sn.uploadEvent({log:"stat-decode-failed-".concat(this.kind,"-").concat(nQ()||xp()),userId:this.room.userId}),this._log.warn("decode failed: isPlaying: ".concat(this.player.isPlaying," ").concat(this.kind===YA.AUDIO?"audioLevel: ".concat(this.getAudioLevel()):"framesDecoded: ".concat(this.stat.framesDecoded>0))),this.emit("decode-failed",{error:o}))}updatePlayingState(e){if(this.player.isPlayCalled&&this.player.setTrack(this.playerMediaTrack),this.isPlayCalled&&this.player.isStopped===e){if(e&&(!this.isSubscribed||!this.isRemotePublished||!this.outMediaTrack))return void this.log.info("abort play, isSubscribed: ".concat(this.isSubscribed," isAvailable: ").concat(this.isRemotePublished," hasTrack: ").concat(!!this.outMediaTrack," "));super.updatePlayingState(e)}}close(){super.close(),this.outMediaTrack&&this.uninstallTrackEvent(this.outMediaTrack)}onFlagChanged(){this.remotePublishState.state=this.isRemotePublished?Zs.ON:Zs.OFF,this.emit("remote-publish-changed",this.isRemotePublished)}onTrackMuted(){this.isNeedPlay&&super.onTrackMuted()}onTrackUnmuted(){this.isNeedPlay&&super.onTrackUnmuted()}onTrackEnded(){this.isNeedPlay&&super.onTrackEnded()}};Y(YM,"STATE_SUBSCRIBE","subscribe"),di([i1(5,1)],YM.prototype,"waitHasMediaTrack"),di([lc(Zs.INIT,YM.STATE_SUBSCRIBE,{success(){this.log.info("subscribed"),F.emit(sA.REMOTE_TRACK_SUBSCRIBED,{track:this})},ignoreError:!0}),py(521716,!1)],YM.prototype,"subscribe"),di([lc(YM.STATE_SUBSCRIBE,Zs.INIT,{sync:!0,success(){this.log.info("unsubscribed"),F.emit(sA.REMOTE_TRACK_UNSUBSCRIBED,{track:this})}})],YM.prototype,"unsubscribe");var G5=YM,o1=class extends G5{constructor(A,e){super(A,e,1),Y(this,"volume",0),Y(this,"mediaType",1),Y(this,"stat",{bytesReceived:0,packetsReceived:0,packetsLost:0,end2EndDelay:0,jitterBufferDelay:0}),this.manager=A.audioManager}get dbVolume(){return J2.isRunning?this.player.pipeline.volumeMeter.getVolumeDb():Math.floor(Math.max(10*Math.log10(this.volume)+100,0))}onPlayerError(A){this.enableDecodeFrame&&(this._log.warn("use audio decoder"),this.room.enableInsertableStreams())}get enableDecodeFrame(){var A,e;return!!this.manager&&(this.manager.decodePipeline.some(o=>o)||((e=(A=this.player.element)==null?void 0:A.error)==null?void 0:e.code)===MediaError.MEDIA_ERR_DECODE&&X0().AudioDecoder&&qp)}get enableDecryptFrame(){return this.manager&&!!this.manager.decodePipeline[0]}decodeFrame(A){if(!this.manager)return A;let e=A;for(let[o,a]of this.manager.decodePipeline.entries()){if(!a)continue;let c={frame:A,track:this};if(o===1&&this.isAvailable&&this.room.role==="audience"&&(c.onAudioFrameNTPTime=d=>{let{ntp:C,frame:y,hasLeavingTag:S}=d;this.emit("audio-frame-with-ntp",{ntp:C,frame:y,hasLeavingTag:S})}),e=a(c),!e)return}return e}getAudioLevel(){if(!this.isAvailable)return 0;let A=this.volume||super.getAudioLevel();return A>1?1:A}getInternalAudioLevel(){return this.isAvailable?super.getInternalAudioLevel():0}get isRemotePublished(){return this.user.muteState.audioAvailable}},ztA=class extends $d{constructor(A,e,o,a,c){super(A,{useDefaultProgram:!0,useFbo:!0,name:"alpha",create2d:!0,logger:e}),this.setContainer=a,Y(this,"initStat",{alphaStitchingType:1}),Y(this,"end",uQ()),Y(this,"minSize",320),Y(this,"maxSize",1280),Y(this,"draggable",!1),Y(this,"startDragX",0),Y(this,"startDragY",0),Y(this,"left",0),Y(this,"top",0),Y(this,"baseWidth",320),Y(this,"baseRatio"),Y(this,"container"),this.initStat=c,this.draggable=o,this.bindDragEvents(),Ai.addEnum({key:515700,value:1}),this.draggable&&Ai.addEnum({key:515700,value:11})}bindDragEvents(){let A=this.context._canvas;if(A)if(this.draggable){let e=lE(this.end);pa(ca(A,"mousedown"),xK(this.startDrag.bind(this)),X2(()=>pa(ca(window,"mousemove"),lE(ca(window,"mouseup")))),e,hl(this.doDrag.bind(this))),pa(ca(A,"dblclick"),e,hl(this.resetPosition.bind(this))),pa(ca(A,"wheel"),e,hl(this.handleZoom.bind(this))),this.renderCanvas()}else{if(!this.container)return;this.container.style.removeProperty("left"),this.container.style.removeProperty("top"),this.end.next()}}render(A){var e;return!((e=this.input)==null||!e.requestFrame(A))&&(this.useProgram(),this.useBufferFrame(),this.useInputTexture(),this.draw(),!0)}startDrag(A){A.preventDefault(),A.button===0&&(this.startDragX=A.clientX-this.left,this.startDragY=A.clientY-this.top)}renderCanvas(){let{container:A}=this;A||this.setContainer(),A&&this.baseRatio&&this.draggable&&(A.style.setProperty("width","".concat(this.baseWidth,"px")),A.style.setProperty("height","".concat(this.baseWidth/this.baseRatio,"px")),A.style.setProperty("position","fixed"),A.style.setProperty("left","".concat(this.left,"px")),A.style.setProperty("top","".concat(this.top,"px")))}doDrag(A){A.preventDefault(),this.left=A.clientX-this.startDragX,this.top=A.clientY-this.startDragY,this.renderCanvas()}handleZoom(A){A.preventDefault();let e=A.deltaY,o=this.context._canvas;o&&(this.baseWidth||(this.baseWidth=o.offsetWidth),this.baseWidth=e<0?Math.min(1.1*this.baseWidth,this.maxSize):Math.max(.9*this.baseWidth,this.minSize),this.renderCanvas())}resetPosition(){this.left=0,this.top=0,this.renderCanvas()}onRatioReset(){this.renderCanvas()}draw2d(A,e,o,a,c){var d;let{ctx2d:C}=this,y=this.context._canvas;if(!C||!y)return!1;let S=super.draw2d(A,e,o,a,c),b=C.getImageData(0,0,a,c),{data:V}=b,J=!1;if(this.initStat.alphaStitchingType===1){let gA=Math.floor(a/2);for(let CA=0;CA=100;V[$A+3]=Me?255:0}J=super.draw2d(b,0,0,0,0,gA,c),y.width=gA}else if(this.initStat.alphaStitchingType===2){let gA=Math.floor(c/2);for(let CA=0;CA=100;V[$A+3]=Me?255:0}J=super.draw2d(b,0,0,0,0,a,gA),y.height=gA}return(d=this.context.ctx)==null||d.clearRect(0,0,a,c),S&&J}close(){this.baseRatio=void 0,this.end.next(),this.end.complete()}},nL=class extends G5{constructor(A,e){super(A,e,arguments.length>2&&arguments[2]!==void 0?arguments[2]:4),Y(this,"mediaType",4),Y(this,"source"),Y(this,"shouldRenderAlpha",!1),Y(this,"alphaNode"),Y(this,"shouldBeDraggable",!0),Y(this,"stat",{bytesReceived:0,packetsReceived:0,packetsLost:0,framesReceived:0,framesDecoded:0,frameWidth:0,frameHeight:0,end2EndDelay:0,jitterBufferDelay:0,keyFramesDecoded:0}),Y(this,"_keyFrameCountLogged",!1),Y(this,"_keyFrameStartTimestamp",0),Y(this,"_keyFrameStartCount",0),Y(this,"_keyFrameIntervals",[]),Y(this,"_prevKeyFrameTimestamp",0),this.manager=A.videoManager,this.on("first-video-frame",o=>{this.room.emit("first-video-frame",o)}),this.on("first-frame-render",o=>{this.room.emit("first-frame-render",o)})}isAlphaSei(A){if(this.userId!==A.userId||A.seiPayloadType!==50)return!1;let e=new Uint8Array(A.data);return e.length%3==0&&e[0]===0&&e[1]===1&&e}play(A,e){return e!=null&&e.canvasRender&&!this.source&&this.useCanvasPlayer(),super.play(A,e).then(()=>{this.player.calculateStat(),F.emit("156",{track:this,player:this.player})})}updateAlphaRenderInfo(A){let e=this.isAlphaSei(A);if(e)if(this.alphaNode){let o=e[2];if(this.alphaNode.baseRatio&&this.alphaNode.initStat.alphaStitchingType===o)return;this.alphaNode.initStat={alphaStitchingType:o};let a=this.player.getElement();if(a){let c=a.videoWidth/a.videoHeight;c&&(this.alphaNode.baseRatio=c*(o===1?.5:2),this.alphaNode.onRatioReset())}this.player.canvas&&(this.player.canvas.id=this.generateAlphaCanvasName(o))}else this.shouldRenderAlpha=!0,this.player.shouldRenderAlpha=!0,this.useCanvasPlayer(e[2])}generateAlphaCanvasName(A){let e=ly[A];return"".concat("alpha","_").concat(e,"_").concat(this.userId)}useCanvasPlayer(A){if(this.log.info("useCanvasPlayer(), has element:".concat(!!this.player.element)),!this.player.element)return;let e=new dQ({frameRate:15,logger:this.log,name:this.shouldRenderAlpha&&A?this.generateAlphaCanvasName(A):this.userId});e.create({alpha:this.shouldRenderAlpha,willReadFrequently:this.shouldRenderAlpha});let o=new VK(e,{name:"remotePlayer",logger:this.log});if(this.source=e.createVideoPlayerSource(this.player),this.player.setCanvas(e._canvas),this.shouldRenderAlpha&&A){let a=()=>{!this.player.container||!this.alphaNode||(this.alphaNode.container=this.player.container,this.alphaNode.renderCanvas())},c=new ztA(e,this.log,this.shouldBeDraggable,a,{alphaStitchingType:A});this.source.connect(c),c.connect(o),this.alphaNode=c}else this.source.connect(o);Kp()||(this.updateCanvasPlayerFPS=this.updateCanvasPlayerFPS.bind(this,e),this.room.on("heartbeat-report",this.updateCanvasPlayerFPS,this))}updateCanvasPlayerFPS(A){let e=this.decodeFPS,o=(a=e,[15,30,45,60].reduce((c,d)=>Math.abs(d-a)c.msg_user_info.str_identifier===this.userId))||{},o=this.mediaType===2?7:this.isSmall?3:2;if(!e||e.length===0)return 0;let a=e.find(c=>c.uint32_video_stream_type===o);return a?.uint32_video_dec_fps||0}stop(){return this.room.off("heartbeat-report",this.updateCanvasPlayerFPS,this),F.emit("157",{track:this,player:this.player}),this.alphaNode&&this.alphaNode.close(),super.stop()}decodeFrame(A){if(!this.manager)return A;for(let e of this.manager.decodePipeline)if(e&&!(A=e({frame:A,track:this})))return;return A}get isBig(){return this.mediaType===4}get isSmall(){return this.mediaType===8}changeType(A){this.room.changeType(A,this.user)}get isRemotePublished(){return this.user.muteState.videoAvailable}setMirror(A){A==="publish"||A==="both"||super.setMirror(A)}setDraggable(A){this.shouldBeDraggable=A,this.alphaNode&&(this.alphaNode.draggable=A,this.alphaNode.bindDragEvents())}onDecodeDowngradeStateChanged(A){this.emit("decode-downgrade-state-changed",A)}updateKeyFramesDecoded(A){let e=this.stat.keyFramesDecoded||0;if(this.stat.keyFramesDecoded=A,this._keyFrameCountLogged)return;let o=Date.now();if(!this._keyFrameStartTimestamp)return this._keyFrameStartTimestamp=o,this._keyFrameStartCount=A,void(this._prevKeyFrameTimestamp=o);if(this._prevKeyFrameTimestamp&&A>e){let c=A-e,d=(o-this._prevKeyFrameTimestamp)/1e3/c;this._keyFrameIntervals.push(d)}this._prevKeyFrameTimestamp=o;let a=o-this._keyFrameStartTimestamp;if(a>=16e3){let c=A-this._keyFrameStartCount,d=c>0?a/1e3/c:0,C="".concat(c," keyframes in 16s ").concat(d," [").concat(this._keyFrameIntervals.map(S=>S.toFixed(1)).join(","),"] keyFramesDecoded ").concat(A),y=d<=2.5?"debug":"info";this.log[y](C),this._keyFrameCountLogged=!0}}},b5=class extends nL{constructor(A,e){super(A,e,2),Y(this,"mediaType",2),Y(this,"objectFit","contain")}get isRemotePublished(){return this.user.muteState.hasAuxiliary}},g_=new Map;function Jg(A,e){let o=Qo(mi({},e),{timestamp:kf()});g_.has(A)?g_.get(A).push(o):g_.set(A,[o])}function k5(){for(var A=arguments.length,e=new Array(A),o=0;ofunction(){for(var d=arguments.length,C=new Array(d),y=0;yjf(b)?XS(b):Yn(b)?b:Cg(b))},fnName:c,value:o},link:{className:d,fnName:c}})})}else if(!Je(e.type)&&Cg(o)!==e.type)throw new si({code:Et.INVALID_PARAMETER,message:Xo({key:Mo.INVALID_PARAMETER_TYPE,data:{key:a,rule:e,fnName:c,value:o},link:{className:d,fnName:c}})});if(e.allowEmpty===!1){let S=bn(o)&&(o===0||Number.isNaN(o)),b=Yn(o)&&o.trim()==="";if(S||b)throw new si({code:Et.INVALID_PARAMETER,message:Xo({key:Mo.INVALID_PARAMETER_EMPTY,data:{key:a,rule:e,fnName:c,value:o},link:{className:d,fnName:c}})})}if(e.notLessThanZero&&bn(o)&&o<0)throw new si({code:Et.INVALID_PARAMETER,message:Xo({key:Mo.CANNOT_LESS_THAN_ZERO,data:{key:a,rule:e,fnName:c,value:o},link:{className:d,fnName:c}})});if(!Je(e.min)&&bn(o)&&oe.max)throw new si({code:Et.INVALID_PARAMETER,message:Xo({key:Mo.INVALID_PARAMETER_MAX,data:{key:a,rule:e,fnName:c,value:o},link:{className:d,fnName:c}})});if(Yn(e.instanceOf)){if(!o||o._name!==e.instanceOf)throw new si({code:Et.INVALID_PARAMETER,message:Xo({key:Mo.INVALID_PARAMETER_INSTANCE,data:{key:a,rule:e,fnName:c,value:o},link:{className:d,fnName:c}})})}else if(Ra(e.instanceOf)&&!(o instanceof e.instanceOf))throw new si({code:Et.INVALID_PARAMETER,message:Xo({key:Mo.INVALID_PARAMETER_INSTANCE,data:{key:a,rule:e,fnName:c,value:o},link:{className:d,fnName:c}})});if(e.values&&!e.values.includes(o))throw new si({code:Et.INVALID_PARAMETER,message:Xo({key:Mo.INVALID_PARAMETER_RANGE,data:{key:a,rule:e,fnName:c,value:o},link:{className:d,fnName:c}})});let{properties:C}=e;aE(C)&&WE(o)&&Object.keys(C).forEach(S=>{s1.call(this,{rule:C[S],value:o&&o[S],key:"".concat(a,".").concat(S),fnName:c,className:d})});let{arrayItem:y}=e;aE(y)&&wa(o)&&o.forEach((S,b)=>{s1.call(this,{rule:y,value:S,key:"".concat(a,"[").concat(b,"]"),fnName:c,className:d})}),Ra(e.validate)&&e.validate.call(this,o,a,c,d,this)}F.on(sA.JOIN_SUCCESS,A=>{let{room:e}=A;Jg(e.userId,{eventId:32788})}),F.on(sA.LEAVE_START,A=>{let{room:e}=A;Jg(e.userId,{eventId:32789})}),F.on(sA.LOCAL_TRACK_PUBLISHED,A=>{let{track:e}=A;if(e.room){let o=32769;e.mediaType===4?o=32768:e.mediaType===2&&(o=32805),Jg(e.room.userId,{eventId:o})}}),F.on(sA.LOCAL_TRACK_UNPUBLISHED,A=>{let{track:e}=A;if(e.room){let o=32771;e.mediaType===4?o=32770:e.mediaType===2&&(o=32806),Jg(e.room.userId,{eventId:o})}}),F.on(sA.TRACK_MUTED,A=>{let{track:e}=A;e.room&&(e.kind===YA.AUDIO?Jg(e.room.userId,{eventId:e.isRemote?32785:32772,remoteUserId:e.isRemote?e.userId:void 0}):Jg(e.room.userId,{eventId:e.isRemote?32784:32773,remoteUserId:e.isRemote?e.userId:void 0}))}),F.on(sA.TRACK_UNMUTED,A=>{let{track:e}=A;e.room&&(e.kind===YA.AUDIO?Jg(e.room.userId,{eventId:e.isRemote?32787:32774,remoteUserId:e.isRemote?e.userId:void 0}):Jg(e.room.userId,{eventId:e.isRemote?32786:32775,remoteUserId:e.isRemote?e.userId:void 0}))}),F.on(sA.REMOTE_TRACK_SUBSCRIBED,A=>{let{track:e}=A;e.room&&(e.mediaType===1&&Jg(e.room.userId,{eventId:32777,remoteUserId:e.userId}),e.mediaType===4&&Jg(e.room.userId,{eventId:32776,remoteUserId:e.userId}),e.mediaType===8&&Jg(e.room.userId,{eventId:32803,remoteUserId:e.userId}))}),F.on(sA.REMOTE_TRACK_UNSUBSCRIBED,A=>{let{track:e}=A;e.room&&(e.mediaType===1&&Jg(e.room.userId,{eventId:32779,remoteUserId:e.userId}),e.mediaType===4&&Jg(e.room.userId,{eventId:32778,remoteUserId:e.userId}),e.mediaType===8&&Jg(e.room.userId,{eventId:32804,remoteUserId:e.userId}))}),F.on(sA.SWITCH_DEVICE_SUCCESS,A=>{let{track:e}=A;e.room&&Jg(e.room.userId,{eventId:e.kind===YA.VIDEO?32780:32781})}),F.on(sA.LOCAL_TRACK_REPLACED,A=>{let{track:e}=A;e.room&&Jg(e.room.userId,{eventId:e.kind===YA.VIDEO?32782:32783})}),F.on(sA.SIGNAL_CONNECTION_STATE_CHANGED,A=>{let e,{room:o,prevState:a,state:c}=A;switch(c){case"CONNECTED":e=a==="RECONNECTING"?32795:32791;break;case"DISCONNECTED":e=a==="RECONNECTING"?32796:32790;break;case"RECONNECTING":e=32794}e&&Jg(o.userId,{eventId:e})}),F.on(sA.PEER_CONNECTION_STATE_CHANGED,A=>{let e,{room:o,prevState:a,state:c,remoteUserId:d}=A,C=!!d;switch(c){case"CONNECTED":e=a==="RECONNECTING"?C?32801:32798:C?32793:32792;break;case"DISCONNECTED":a==="RECONNECTING"&&(e=C?32802:32799);break;case"RECONNECTING":e=C?32800:32797}e&&Jg(o.userId,{eventId:e,remoteUserId:d})}),F.on(sA.VIDEO_CODEC_IMPLEMENTATION_CHANGED,A=>{let{implementation:e,userId:o,remoteUserId:a,codec:c,isHWCodec:d,prevImplementation:C,streamType:y}=A,S=d?1:0;C||(S=d?3:2);let b={H264:0,H265:1,VP8:2}[c.toUpperCase()],V={eventId:4004,param1:S,param2:b,streamType:y||2};a&&(V.remoteUserId=a,V.eventId=4005),Jg(o,V),Ai.addEnum({key:a?514701:513701,value:S}),Ai.addEnum({key:a?514700:513700,value:b})}),F.on(sA.LOCAL_TRACK_RECAPTURE,A=>{let{track:e,error:o}=A;if(e.userId){let a={eventId:2003,param1:0};e.kind===YA.AUDIO?(a.streamType=1,o&&(a.param1=2)):(a.streamType=e.streamType==="auxiliary"?7:2,o&&(a.param1=8)),Jg(e.userId,a)}});var XtA=gc(ql(),1),$tA=class extends XtA.EventEmitter{constructor(A,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"userId";super(),this.mySelfId=A,this._log=e,this.key=o,Y(this,"userMap",new Map),Y(this,"remotePublishedUserMap",new Map),Y(this,"asrRobotUserMap",new Map)}get hasRobotUser(){return!![...this.remotePublishedUserMap.values()].find(A=>A.isRobot)}getPublishedUser(A){return this.remotePublishedUserMap.get(A)}addUser(A){let e=A[this.key],{userId:o,tinyId:a,role:c,fromType:d}=A;if(d===l0)return void this.addAsrRobotUser(A);if(this.userMap.has(e))return;let C={userId:o,tinyId:a,role:c===20?"anchor":"audience"};this.userMap.set(e,C),this.emit("1",C)}addAsrRobotUser(A){let e=A[this.key],{userId:o,tinyId:a,role:c}=A;if(this.asrRobotUserMap.has(e))return;let d={userId:o,tinyId:a,role:c===20?"anchor":"audience"};this.asrRobotUserMap.set(e,d),this.emit("8",d)}deleteUser(A,e){let o=this.userMap.get(A);if(!o)return;if(this.asrRobotUserMap.has(A))return void this.deleteAsrRobotUser(A);let a="peer leave [".concat(A,"]");Je(e)||(a+=":".concat(qx[e])),this._log.info(a);let c=this.remotePublishedUserMap.get(A);if(c){let d=c.muteState;c.flag=0,this.emit("5",c.userId),this.deleteRemotePublishedUser(A),this.emit("6",{prevMuteState:d,muteState:c.muteState,flag:0})}this.userMap.delete(A),this.emit("2",{userId:o.userId,reason:e})}deleteAsrRobotUser(A){if(!this.asrRobotUserMap.has(A))return;let e=this.asrRobotUserMap.get(A);e&&(this.asrRobotUserMap.delete(A),this.emit("9",e))}setUserList(A){this.userMap.forEach(e=>{A.findIndex(o=>o[this.key]===e[this.key])<0&&this.deleteUser(e[this.key],0)}),A.forEach(e=>{!this.userMap.has(e[this.key])&&e[this.key]!==this.mySelfId&&this.addUser(e)})}addRemotePublishedUser(A){this.remotePublishedUserMap.has(A[this.key])||this.remotePublishedUserMap.set(A[this.key],A)}deleteRemotePublishedUser(A){this.remotePublishedUserMap.has(A)&&this.remotePublishedUserMap.delete(A)}setRemotePublishedUserList(A){this.remotePublishedUserMap.forEach(e=>{let o=e[this.key];if(A.findIndex(a=>a[this.key]===e[this.key])<0){this._log.info("remote [".concat(o,"] unpublish"));let a=e.muteState;e.flag=0,this.emit("5",e.userId),this.deleteRemotePublishedUser(o),this.emit("6",{prevMuteState:a,muteState:e.muteState,flag:0})}}),A.forEach(e=>{var o;let a=e[this.key];if(a===this.mySelfId)return void this.emit("7",e);let{flag:c,userId:d,tinyId:C,fromType:y}=e,S=Rp(c,d),b=(o=this.remotePublishedUserMap.get(a))==null?void 0:o.muteState;if(b){let V=this.remotePublishedUserMap.get(a);V&&V.flag!==c&&(V.flag=c,this._log.info("remote publish updated: ".concat(JSON.stringify(V.muteState))),this.emit("6",{prevMuteState:b,muteState:S,flag:c}))}else this._log.info("remote publish. state: ".concat(JSON.stringify(S))),this.addUser({userId:d,tinyId:C,role:20,fromType:y}),this.emit("3",e),this.emit("6",{prevMuteState:Rp(0,d),muteState:S,flag:c})})}clear(){this.userMap.clear(),this.remotePublishedUserMap.clear()}},AiA=gc(ql(),1),eiA=class extends AiA.default{constructor(){super(...arguments),Y(this,"_connectionTimeoutCount",0),Y(this,"_isFirewallRestrictionEventEmitted",!1)}increaseTimeoutCount(){this._connectionTimeoutCount+=1,this.checkAndEmitFirewallRestriction()}resetTimeoutCount(){this._connectionTimeoutCount=0}checkAndEmitFirewallRestriction(){this._connectionTimeoutCount>=3&&!this._isFirewallRestrictionEventEmitted&&(this._isFirewallRestrictionEventEmitted=!0,this.emit("firewall-restriction"))}destroy(){this._connectionTimeoutCount=0,this._isFirewallRestrictionEventEmitted=!1,this.removeAllListeners()}};function L5(A){let{timesInSecond:e,maxSizeInSecond:o,getSize:a}=A;return jr((c,d)=>{let C=new WeakMap;return F.on(sA.ROOM_DESTROY,y=>{let{room:S}=y;return C.delete(S)}),function(){let y=C.get(this);for(var S=arguments.length,b=new Array(S),V=0;V1e3&&(y.timestamp=Date.now(),y.callCountInSecond=0,y.totalSizeInSecond=0),a&&(y.totalSizeInSecond+=a(...b)),y.timestamp!==0&&Date.now()-y.timestamp<1e3&&(y.callCountInSecond>=e||y.totalSizeInSecond>o))throw new si({code:Et.INVALID_OPERATION,message:Xo({key:Mo.CALL_FREQUENCY_LIMIT,data:{isTimes:y.callCountInSecond>=e,isSize:y.totalSizeInSecond>o,name:d,timesInSecond:e,maxSizeInSecond:o}})});y.callCountInSecond++,c.call(this,...b)}})}var yt,U5=!0,rL={SCENE_LIVE:"live",SCENE_RTC:"rtc",ROLE_ANCHOR:"anchor",ROLE_AUDIENCE:"audience",STREAM_TYPE_MAIN:"main",STREAM_TYPE_SUB:"sub",AUDIO_PROFILE_STANDARD:"standard",AUDIO_PROFILE_STANDARD_STEREO:"standard-stereo",AUDIO_PROFILE_HIGH:"high",AUDIO_PROFILE_HIGH_STEREO:"high-stereo",QOS_PREFERENCE_SMOOTH:"smooth",QOS_PREFERENCE_CLEAR:"clear",SPEAKER:"Speakerphone",HEADSET:"Headset earpiece"},Ro={INVALID_PARAMETER:5e3,INVALID_OPERATION:5100,ENV_NOT_SUPPORTED:5200,DEVICE_ERROR:5300,SERVER_ERROR:5400,OPERATION_FAILED:5500,OPERATION_ABORT:5998,UNKNOWN_ERROR:5999},n1=((yt=n1||{})[yt.INVALID_PARAMETER=5e3]="INVALID_PARAMETER",yt[yt.INVALID_PARAMETER_REQUIRED=5001]="INVALID_PARAMETER_REQUIRED",yt[yt.INVALID_PARAMETER_TYPE=5002]="INVALID_PARAMETER_TYPE",yt[yt.INVALID_PARAMETER_EMPTY=5003]="INVALID_PARAMETER_EMPTY",yt[yt.INVALID_PARAMETER_INSTANCE=5004]="INVALID_PARAMETER_INSTANCE",yt[yt.INVALID_PARAMETER_RANGE=5005]="INVALID_PARAMETER_RANGE",yt[yt.INVALID_PARAMETER_LESS_THAN_ZERO=5006]="INVALID_PARAMETER_LESS_THAN_ZERO",yt[yt.INVALID_PARAMETER_MIN=5007]="INVALID_PARAMETER_MIN",yt[yt.INVALID_PARAMETER_MAX=5008]="INVALID_PARAMETER_MAX",yt[yt.INVALID_ELEMENT_ID=5009]="INVALID_ELEMENT_ID",yt[yt.INVALID_ELEMENT_ID_TYPE=5010]="INVALID_ELEMENT_ID_TYPE",yt[yt.INVALID_STREAM_ID=5011]="INVALID_STREAM_ID",yt[yt.INVALID_ROOM_ID_STRING=5012]="INVALID_ROOM_ID_STRING",yt[yt.INVALID_ROOM_ID_INTEGER=5013]="INVALID_ROOM_ID_INTEGER",yt[yt.INVALID_STREAM_TYPE=5014]="INVALID_STREAM_TYPE",yt[yt.INVALID_ROOM_ID_REQUIRED=5015]="INVALID_ROOM_ID_REQUIRED",yt[yt.INVALID_ROOM_ID_INTEGER_STRING=5016]="INVALID_ROOM_ID_INTEGER_STRING",yt[yt.INVALID_BUFFER_EMPTY=5017]="INVALID_BUFFER_EMPTY",yt[yt.INVALID_BUFFER_OVERSIZE=5018]="INVALID_BUFFER_OVERSIZE",yt[yt.INVALID_ROOM_ID_TYPE_MISMATCH=5019]="INVALID_ROOM_ID_TYPE_MISMATCH",yt[yt.INVALID_ROOM_ID_DUPLICATE=5020]="INVALID_ROOM_ID_DUPLICATE",yt[yt.INVALID_OPERATION=5100]="INVALID_OPERATION",yt[yt.INVALID_OPERATION_NOT_JOINED=5101]="INVALID_OPERATION_NOT_JOINED",yt[yt.INVALID_OPERATION_REMOTE_USER_NOT_EXIST=5102]="INVALID_OPERATION_REMOTE_USER_NOT_EXIST",yt[yt.INVALID_OPERATION_STREAM_TYPE_NOT_EXIST=5103]="INVALID_OPERATION_STREAM_TYPE_NOT_EXIST",yt[yt.INVALID_OPERATION_REPEAT_CALL=5104]="INVALID_OPERATION_REPEAT_CALL",yt[yt.INVALID_OPERATION_NEED_VIDEO=5105]="INVALID_OPERATION_NEED_VIDEO",yt[yt.INVALID_OPERATION_NEED_AUDIO=5106]="INVALID_OPERATION_NEED_AUDIO",yt[yt.INVALID_ROLE_AUDIENCE=5107]="INVALID_ROLE_AUDIENCE",yt[yt.INVALID_NOT_ENABLE_SEI=5108]="INVALID_NOT_ENABLE_SEI",yt[yt.INVALID_NEED_CALL_PUBLISHED=5109]="INVALID_NEED_CALL_PUBLISHED",yt[yt.ENV_NOT_SUPPORTED=5200]="ENV_NOT_SUPPORTED",yt[yt.NOT_SUPPORTED_HTTP=5201]="NOT_SUPPORTED_HTTP",yt[yt.NOT_SUPPORTED_WEBRTC=5202]="NOT_SUPPORTED_WEBRTC",yt[yt.NOT_SUPPORTED_H264_ENCODE=5203]="NOT_SUPPORTED_H264_ENCODE",yt[yt.NOT_SUPPORTED_H264_DECODE=5204]="NOT_SUPPORTED_H264_DECODE",yt[yt.NOT_SUPPORTED_SCREEN_SHARE=5205]="NOT_SUPPORTED_SCREEN_SHARE",yt[yt.NOT_SUPPORTED_SMALL_VIDEO=5206]="NOT_SUPPORTED_SMALL_VIDEO",yt[yt.NOT_SUPPORTED_SEI=5207]="NOT_SUPPORTED_SEI",yt[yt.NOT_SUPPORTED_WEBGL=5208]="NOT_SUPPORTED_WEBGL",yt[yt.NOT_SUPPORTED_CHROME_VERSION=5209]="NOT_SUPPORTED_CHROME_VERSION",yt[yt.NOT_SUPPORTED_PLUGIN=5210]="NOT_SUPPORTED_PLUGIN",yt[yt.DEVICE_ERROR=5300]="DEVICE_ERROR",yt[yt.DEVICE_NOT_FOUND_ERROR=5301]="DEVICE_NOT_FOUND_ERROR",yt[yt.DEVICE_NOT_ALLOWED_ERROR=5302]="DEVICE_NOT_ALLOWED_ERROR",yt[yt.DEVICE_NOT_READABLE_ERROR=5303]="DEVICE_NOT_READABLE_ERROR",yt[yt.DEVICE_OVERCONSTRAINED_ERROR=5304]="DEVICE_OVERCONSTRAINED_ERROR",yt[yt.DEVICE_INVALID_STATE_ERROR=5305]="DEVICE_INVALID_STATE_ERROR",yt[yt.DEVICE_SECURITY_ERROR=5306]="DEVICE_SECURITY_ERROR",yt[yt.DEVICE_ABORT_ERROR=5307]="DEVICE_ABORT_ERROR",yt[yt.CAMERA_RECOVER_FAILED=5308]="CAMERA_RECOVER_FAILED",yt[yt.MICROPHONE_RECOVER_FAILED=5309]="MICROPHONE_RECOVER_FAILED",yt[yt.NOT_SUPPORTED_MISMATCH_SAMPLE_RATE_IN_FIREFOX=5310]="NOT_SUPPORTED_MISMATCH_SAMPLE_RATE_IN_FIREFOX",yt[yt.SERVER_ERROR=5400]="SERVER_ERROR",yt[yt.NEED_TO_BUY=5401]="NEED_TO_BUY",yt[yt.ACCOUNT_NO_MONEY=-100013]="ACCOUNT_NO_MONEY",yt[yt.OPERATION_FAILED=5500]="OPERATION_FAILED",yt[yt.FIREWALL_RESTRICTION=5501]="FIREWALL_RESTRICTION",yt[yt.REJOIN_FAILED=5502]="REJOIN_FAILED",yt[yt.EVENT_HANDLER_ERROR=5503]="EVENT_HANDLER_ERROR",yt[yt.VIDEO_CONTEXT_ERROR=5504]="VIDEO_CONTEXT_ERROR",yt[yt.VIDEO_ENCODE_FAILED=5505]="VIDEO_ENCODE_FAILED",yt[yt.AUDIO_ENCODE_FAILED=5506]="AUDIO_ENCODE_FAILED",yt[yt.VIDEO_DECODE_FAILED=5507]="VIDEO_DECODE_FAILED",yt[yt.AUDIO_DECODE_FAILED=5508]="AUDIO_DECODE_FAILED",yt[yt.OPERATION_ABORT=5998]="OPERATION_ABORT",yt[yt.UNKNOWN_ERROR=5999]="UNKNOWN_ERROR",yt),F5=Qo(mi({},cc),{INVALID_PARAMETER(A){let{fnName:e}=A;return"the parameters of the '".concat(e,"' you called does not meet the requirements, please check the API documentation.")},INVALID_PARAMETER_REQUIRED(A){let{key:e,rule:o,fnName:a,value:c}=A;return"'".concat(e||o.name,"' is a required param when calling ").concat(a,"(), received: ").concat(c,".")},INVALID_PARAMETER_TYPE(A){let{key:e,rule:o,fnName:a,value:c}=A,d="".concat(e||o.name),C="";return C=Array.isArray(o.type)?o.type.join("|"):o.type,"'".concat(d,"' must be type of ").concat(C," when calling ").concat(a,"(), received type: ").concat(Cg(c),".")},INVALID_PARAMETER_EMPTY(A){let{key:e,rule:o,fnName:a,value:c}=A;return"'".concat(e||o.name,"' cannot be '").concat(c,"' when calling ").concat(a,"().")},INVALID_PARAMETER_INSTANCE(A){let{key:e,rule:o,fnName:a,value:c}=A,d="".concat(e||o.name),C="".concat(o.instanceOf.name||o.instanceOf);return"'".concat(d,"' must be instanceof ").concat(C," when calling ").concat(a,"(), received type: ").concat(Cg(c),".")},INVALID_PARAMETER_RANGE(A){let{key:e,rule:o,fnName:a,value:c}=A;return"'".concat(e||o.name,"' must be one of ").concat(o.values.join("|")," when calling ").concat(a,"(), received: ").concat(c,".")},INVALID_PARAMETER_LESS_THAN_ZERO(A){let{key:e,rule:o,fnName:a}=A;return"'".concat(e||o.name,"' cannot be less than 0 when calling ").concat(a,"().")},INVALID_PARAMETER_MIN(A){let{key:e,rule:o,value:a}=A;return"the min value of ".concat(e||o.name," is ").concat(o.min,", received: ").concat(a,".")},INVALID_PARAMETER_MAX(A){let{key:e,rule:o,value:a}=A;return"the max value of ".concat(e||o.name," is ").concat(o.max,", received: ").concat(a,".")},INVALID_ELEMENT_ID(A){let{key:e,fnName:o}=A;return"'".concat(e,"' is not found in the document object when calling ").concat(o,"().")},INVALID_ELEMENT_ID_TYPE(A){let{key:e,fnName:o,type:a}=A;return"the element corresponding to '".concat(e,"' must be instanceof HTMLElement when calling ").concat(o,"(), received: ").concat(a,".")},INVALID_STREAM_ID(A){let{key:e}=A;return"'".concat(e,"' can only consist of uppercase and lowercase english letters (a-zA-Z), numbers (0-9), hyphens and underscores.")},INVALID_ROOM_ID_STRING(A){let{key:e}=A;return"'".concat(e,"' must be a valid string.")},INVALID_ROOM_ID_INTEGER(A){let{key:e}=A;return"'".concat(e,"' must be an integer between [1, 4294967294].")},INVALID_ROOM_ID_INTEGER_STRING(A){let{key:e}=A;return"'".concat(e,"' must be an integer but go a string, use 'parseInt' to convert it or use 'strRoomId' instead.")},INVALID_ROOM_ID_REQUIRED:()=>"at least one of 'roomId'(between [1, 4294967294]) and 'strRoomId'(not empty) is required.",INVALID_ROOM_ID_TYPE_MISMATCH(A){let{key:e}=A;return"The type of target roomId must match the current roomId. Current room is using '".concat(e,"', but received '").concat(e==="strRoomId"?"roomId":"strRoomId","'.")},INVALID_ROOM_ID_DUPLICATE(A){let{key:e}=A;return"the target '".concat(e,"' must not be the same as the current '").concat(e,"'.")},INVALID_STREAM_TYPE:A=>{let{fnName:e}=A;return"'streamType' is required when 'userId' is not '*', calling ".concat(e,"()")},INVALID_IMAGE_URL:"The 'src' param must be filled in when the background type is image.",INVALID_OPERATION(A){let{fnName:e}=A;return"the API '".concat(e,"' you called does not meet the requirements, please check the API documentation.")},INVALID_OPERATION_NOT_JOINED(A){let{fnName:e}=A;return"cannot ".concat(e," because you are not enter room yet.")},INVALID_OPERATION_REMOTE_USER_NOT_EXIST(A){let{fnName:e,value:o}=A;return"cannot ".concat(e," because remote user(userId: ").concat(o.userId,") does not publishing stream.")},INVALID_OPERATION_STREAM_TYPE_NOT_EXIST(A){let{fnName:e,value:o}=A;return"cannot ".concat(e," because remote user(userId: ").concat(o.userId,") does not publishing ").concat(o.streamType," video.")},INVALID_OPERATION_REPEAT_CALL(A){let{fnName:e}=A;return"you are already ".concat(e,"(), cannot repeated call '").concat(e,"'.")},INVALID_OPERATION_NEED_VIDEO(A){let{fnName:e}=A;return"cannot call '".concat(e,"' because the camera is not turned on.")},INVALID_OPERATION_NEED_AUDIO(A){let{fnName:e}=A;return"cannot call '".concat(e,"' because the microphone or screen share is not turned on.")},INVALID_BUFFER_EMPTY:A=>{let{key:e}=A;return"the buffer size of paramerter '".concat(e,"' cannot be empty")},INVALID_BUFFER_OVERSIZE:()=>"buffer size is over 1000 Bytes",INVALID_ROLE_AUDIENCE:()=>"role: 'audience' cannot call this api.",INVALID_NOT_ENABLE_SEI:()=>"you need to enable SEI in TRTC.create({ enableSEI: true })",INVALID_NEED_CALL_PUBLISHED:A=>{let{fnName:e}=A;return"you need to call ".concat(e,"() after publish stream.")},ENV_NOT_SUPPORTED(A){let{fnName:e}=A;return"the current browser does not support the capability of the function '".concat(e,"' you are calling, please check the API documentation.")},NOT_SUPPORTED_WEBRTC:"the current browser does not support WebRTC capability, please check the SDK documentation.",NOT_SUPPORTED_H264_ENCODE:"this browser does not support H264 encode.",NOT_SUPPORTED_H264_DECODE:"this browser does not support H264 decode.",NOT_SUPPORTED_SCREEN_SHARE:"this browser does not support screen share, please check the browser version.",NOT_SUPPORTED_SMALL_VIDEO:"this browser does not support small video, please check the browser version.",NOT_SUPPORTED_SEI:"this browser does not support SEI, please check the browser version.",NOT_SUPPORTED_WEBGL:"this browser does not support WebGL, please check the browser version.",NOT_SUPPORTED_CHROME_VERSION(A){let{fnName:e}=A;return"cannot call ".concat(e," because the browser version is too low, please upgrade to the latest version")},DEVICE_ERROR(A){let{fnName:e,error:o}=A;return"'".concat(e,"' got device exception").concat(o?", error: ".concat(o.toString(),"."):".")},DEVICE_NOT_FOUND_ERROR(A){let{fnName:e,deviceType:o=VM(e),error:a}=A;return"NotFoundError, no ".concat(o," detected, please check your device and the configuration on '").concat(e,"'").concat(a?", error: ".concat(a.toString(),"."):".")},DEVICE_NOT_ALLOWED_ERROR(A){let{fnName:e,deviceType:o=VM(e),error:a}=A;return"NotAllowedError, you have disabled ".concat(o," access, please allow the current application to use the ").concat(o).concat(a?", error: ".concat(a.toString(),"."):".")},DEVICE_NOT_READABLE_ERROR(A){let{fnName:e,deviceType:o=VM(e),error:a}=A;return"NotReadableError, the ".concat(o," maybe in use by another APP, please check if the device is pre-occupied by another APP.")},DEVICE_OVERCONSTRAINED_ERROR(A){let{fnName:e,deviceType:o=VM(e),error:a}=A;return"OverconstrainedError, the device ID is incorrect, please check whether the device ID passed in is correct".concat(a?", error: ".concat(a.toString(),"."):".")},DEVICE_INVALID_STATE_ERROR(A){let{fnName:e,deviceType:o=VM(e),error:a}=A;return"InvalidStateError, after the user clicks and interacts with the page, turn on the ".concat(o).concat(a?", error: ".concat(a.toString(),"."):".")},DEVICE_SECURITY_ERROR(A){let{fnName:e,deviceType:o=VM(e),error:a}=A;return"SecurityError, check whether the system security policy restricts the use of the ".concat(o,", and it is recommended to turn on the ").concat(o," after the user interacts with the page").concat(a?", error: ".concat(a.toString(),"."):".")},DEVICE_ABORT_ERROR(A){let{fnName:e,deviceType:o=VM(e),error:a}=A;return"AbortError, an unknown exception in the system makes the device unusable, recommended to change the device or browser and re-check whether the device is normal".concat(a?" error: ".concat(a.toString(),"."):".")},CAMERA_RECOVER_FAILED(A){let{error:e}=A;return"camera recover capture failed ".concat(e?.name||"",": ").concat(e?.originMessage||e?.message)},MICROPHONE_RECOVER_FAILED(A){let{error:e}=A;return"microphone recover capture failed ".concat(e?.name||"",": ").concat(e?.originMessage||e?.message)},OPERATION_FAILED(A){let{fnName:e,error:o}=A;return"'".concat(e,"' failed, reason: ").concat(o?.toString())},FIREWALL_RESTRICTION:()=>"media connection failure due to firewall restrictions, please try to change your network.",EVENT_HANDLER_ERROR(A){let{eventName:e}=A;return"an error was caught on trtc.on('".concat(e,"', handler), please check your code on 'handler'.")},VIDEO_CONTEXT_ERROR(A){let{reason:e,error:o}=A;return"video context error ".concat(e," ").concat(o?.name||""," ").concat(o?.message||"")},SERVER_ERROR(A){let{fnName:e,error:o}=A;return"'".concat(e,"' got server error: ").concat(o?.toString(),", please check the SDK documentation.")},NEED_TO_BUY(A){let{value:e,url:o}=A;return"You need to buy packages for ".concat(e,". Refer to: ").concat(o)},ACCOUNT_NO_MONEY:A=>{let{fnParams:e}=A;return"your TRTC account run out of credit, please recharge.".concat(e.sdkAppId?" SDKAppId: ".concat(e.sdkAppId):"")},OPERATION_ABORT(A){let{fnName:e}=A;return"'".concat(e,"' abort")},UNKNOWN_ERROR(A){let{fnName:e,error:o}=A;return"'".concat(e,"' throw unknown exception").concat(o?", error: ".concat(o.toString(),"."):".")}});function VM(A){if(!A)return"camera";let e=A.toLowerCase();return e.includes("screen")?"screen share":e.includes("audio")?"microphone":"camera"}var tiA=class iY extends Error{constructor(e){let{code:o,extraCode:a,message:c="",messageParams:d,fnName:C="",originError:y,data:S}=e;var b;let V;V=c||function(J){let gA,{code:CA,params:MA,enableDocLink:$A=!1}=J,he="",Ye=n1[CA];try{gA=F5[Ye]}catch{gA=F5.UNKNOWN_ERROR}return Ra(gA)?he=gA(MA):Yn(gA)&&(he=gA),MA.fnName&&!he.includes(MA.fnName)&&(he[he.length-1]!=="."&&(he+="."),he+=" thrown from ".concat(MA.fnName,"()")),$A&&(he+=" doc:"),he}({code:o===Ro.SERVER_ERROR?o:a||o,params:mi({fnName:C,error:y},d)}),super(V),Y(this,"name","RtcError"),Y(this,"code"),Y(this,"extraCode"),Y(this,"functionName"),Y(this,"message"),Y(this,"data"),Y(this,"handler"),Y(this,"originError"),this.name=n1[o],this.code=o,this.extraCode=a,this.functionName=C,this.originError=y,this.message=V,this.data=S,this.extraCode===5302&&(b=this.originError)!=null&&b.message.includes("system")&&(this.handler=()=>{let J=document.createElement("a");ey?J.href="ms-settings:privacy-".concat({startLocalVideo:"webcam",startLocalAudio:"microphone"}[this.functionName]):tQ&&(J.href="x-apple.systempreferences:com.apple.preference.security?Privacy_".concat({startLocalVideo:"Camera",startLocalAudio:"Microphone",startScreenShare:"ScreenCapture"}[this.functionName])),J.href.length>0&&J.click()})}static convertFrom(e,o,a){let c=e;if(e instanceof si){let{stack:d}=e,C={code:Ro.UNKNOWN_ERROR,fnName:o,originError:e};switch(e.getCode()){case Et.INVALID_PARAMETER:C.code=Ro.INVALID_PARAMETER,C.message=e.message;break;case Et.INVALID_OPERATION:C.code=Ro.INVALID_OPERATION,C.message=e.message;break;case Et.NOT_SUPPORTED:case Et.NOT_SUPPORTED_H264:C.code=Ro.ENV_NOT_SUPPORTED,e.getCode()===Et.NOT_SUPPORTED_H264&&(C.extraCode=e.message.includes(cc.NOT_SUPPORTED_H264ENCODE)?5203:5204);break;case Et.JOIN_ROOM_FAILED:C.messageParams={fnParams:a};case Et.SERVER_TIMEOUT:case Et.SWITCH_ROLE_FAILED:case Et.SWITCH_ROOM_FAILED:C.code=Ro.SERVER_ERROR,C.extraCode=e.getExtraCode();break;case Et.API_CALL_ABORTED:C.code=Ro.OPERATION_ABORT;break;case Et.DEVICE_NOT_FOUND:case Et.DEVICE_AUTO_RECOVER_FAILED:case Et.INITIALIZE_FAILED:C.code=5300,e.name&&(C.extraCode=function(y){let S;switch(y){case"NotFoundError":S=5301;break;case"NotAllowedError":S=5302;break;case"NotReadableError":S=5303;break;case"OverconstrainedError":S=5304;break;case"InvalidStateError":S=5305;break;case"SecurityError":S=5306;break;case"AbortError":S=5307;break;default:S=5300}return S}(e.name));break;case Et.VIDEO_ENCODE_FAILED:C.extraCode=5505;case Et.AUDIO_ENCODE_FAILED:C.extraCode=5506,C.code=Ro.OPERATION_FAILED;break;case Et.UNKNOWN:break;default:C.code=Ro.OPERATION_FAILED}c=new iY(C),d&&(c.stack+=d.substr(d.indexOf(` +`)))}else{if(e instanceof iY)return e;c=new iY({code:Ro.UNKNOWN_ERROR,fnName:o,originError:e})}return c}},wo=tiA;function AC(A){return A==="sub"?"auxiliary":A==="auxiliary"?"sub":"main"}function r1(A){return A===rL.QOS_PREFERENCE_CLEAR?"detail":A===rL.QOS_PREFERENCE_SMOOTH?"motion":""}function a1(A,e){let o=e?kx:PS;return I2(A)?mi(mi({},o),A):bC[A]?bC[A]:o}var O5={type:"object",properties:{cameraId:{type:"string"},useFrontCamera:{type:"boolean"},fillMode:{type:"string",values:["contain","cover","fill"]},mirror:{type:["string","boolean"],values:[!0,!1,"view","publish","both"]},small:{type:["string","object","boolean"],properties:{width:{type:"number"},height:{type:"number"},frameRate:{type:"number"},bitrate:{type:"number"}}},videoTrack:{instanceOf:MediaStreamTrack}}},P5={type:"object",properties:{systemAudio:{type:"boolean"},fillMode:{type:"string",values:["contain","cover","fill"]},profile:{type:["string","object"],properties:{width:{type:"number"},height:{type:"number"},frameRate:{type:"number"},bitrate:{type:"number"}}},videoTrack:{instanceOf:MediaStreamTrack},audioTrack:{instanceOf:MediaStreamTrack}}},c_={type:["string",HTMLElement,null,"array"],arrayItem:{instanceOf:HTMLElement},validate(A,e,o){if(Yn(A)&&!document.getElementById(A))throw new wo({code:Ro.INVALID_PARAMETER,extraCode:5009,fnName:o,messageParams:{key:e}})}},x5={name:"userId",required:!0,type:"string"},Y5={type:"object",properties:{microphoneId:{type:"string"},audioTrack:{instanceOf:MediaStreamTrack},captureVolume:{type:"number",min:0},earMonitorVolume:{type:"number",min:0,max:100},profile:{type:["string","object"],properties:{bitrate:{type:"number"},channelCount:{type:"number"}}},echoCancellation:{values:[!0,!1,"remote-only","all"]},autoGainControl:{type:"boolean"},noiseSuppression:{type:"boolean"}}};function l_(A,e){if(!A)throw new wo({code:Ro.INVALID_OPERATION,extraCode:5101,fnName:e})}function V5(A,e,o){if(!A)throw new wo({code:Ro.INVALID_OPERATION,extraCode:5102,fnName:e,messageParams:{value:o}})}function J5(A,e,o){if(!(/^[1-9]\d*$/.test(String(A))&&A<4294967295))throw new wo({code:Ro.INVALID_PARAMETER,extraCode:5013,fnName:e,messageParams:{key:o}})}function H5(A,e,o){if(!/^[A-Za-z\d\s!#$%&()+\-:;<=.>?@[\]^_{}|~,]{1,64}$/.test(A))throw new wo({code:Ro.INVALID_PARAMETER,extraCode:5012,fnName:e,messageParams:{key:o}})}function q5(A){var e;if((e=A?.option)==null||!e.small)return;if(!vM())return QA.warn("small stream is not supported"),void delete A.option.small;let o=a1(A.option.profile),a=a1(A.option.small,!0);return((c,d)=>c.width*c.height>=d.width*d.height&&c.frameRate>=d.frameRate&&c.bitrate>=d.bitrate)(o,a)?void 0:(QA.warn("small stream profile must be less than big stream profile. Big: ".concat(JSON.stringify(o),", Small: ").concat(JSON.stringify(a))),void delete A.option.small)}var iiA={create:[{name:"RoomConfig",instanceOf:Function},{name:"CreateConfig",type:"object",properties:{plugins:{type:"array",arrayItem:{instanceOf:Function}}}}],enterRoom:{name:"EnterRoomConfig",type:"object",required:!0,validate(A,e,o){if(this._room.isJoined)throw new wo({code:Ro.INVALID_OPERATION,extraCode:5104,fnName:o});if(A.roomId){if(Yn(A.roomId))throw new wo({code:Ro.INVALID_PARAMETER,extraCode:5016,fnName:o,messageParams:{key:e}});J5(A.roomId,o,e)}else{if(!A.strRoomId)throw new wo({code:Ro.INVALID_PARAMETER,extraCode:5015,fnName:o});H5(A.strRoomId,o,e)}},properties:{sdkAppId:{required:!0,type:"number",allowEmpty:!1},userId:{required:!0,type:"string",allowEmpty:!1},userSig:{required:!0,type:"string",allowEmpty:!1},scene:{type:"string",values:["live","rtc"]},role:{type:"string",values:["audience","anchor"]},roomId:{type:["string","number"]},strRoomId:{type:"string"},proxy:{type:["object","string"],properties:{websocketProxy:{type:"string"},turnServer:{type:["object","array"],properties:{url:{required:!0,type:"string"},username:{type:"string"},credential:{type:"string"},credentialType:{type:"string",values:["password"]}}},loggerProxy:{type:"string"},webtransportProxy:{type:"string"}}},enableAutoPlayDialog:{type:"boolean"},userDefineRecordId:{type:"string"},latencyLevel:{type:"number"},playoutDelay:{type:"object",properties:{min:{type:"number",min:0,max:1e3},max:{type:"number",min:0,max:1e4}}}}},startLocalVideo:{name:"LocalVideoConfig",type:"object",properties:{view:c_,mute:{type:["boolean","string"]},publish:{type:"boolean"},capture:{required:!1,type:"boolean"},option:O5},validate(A){var e,o;if(((e=A?.option)==null||!e.videoTrack)&&uu())throw new wo({code:Ro.ENV_NOT_SUPPORTED,extraCode:5201});(o=A?.option)!=null&&o.small&&q5(A)}},updateLocalVideo:{name:"updateLocalVideoConfig",type:"object",required:!0,properties:{view:Qo(mi({},c_),{required:!1}),publish:{type:"boolean"},capture:{required:!1,type:"boolean"},mute:{type:["boolean","string"]},option:O5},validate(A){var e;(e=A?.option)!=null&&e.small&&q5(A)}},startLocalAudio:{name:"LocalAudioConfig",type:"object",properties:{publish:{type:"boolean"},mute:{type:["boolean","string"],values:[!0,!1,"microphone"]},muteKeepVolumeDetection:{type:"boolean"},option:Y5},validate(A){var e;if(((e=A?.option)==null||!e.audioTrack)&&uu())throw new wo({code:Ro.ENV_NOT_SUPPORTED,extraCode:5201})}},updateLocalAudio:{name:"updateLocalAudioConfig",type:"object",required:!0,properties:{publish:{type:"boolean"},mute:{type:["boolean","string"],values:[!0,!1,"microphone"]},muteKeepVolumeDetection:{type:"boolean"},option:Y5}},startScreenShare:{name:"ScreenShareConfig",type:"object",properties:{view:c_,publish:{type:"boolean"},option:P5},validate(A,e,o,a,c){var d;if((d=A?.option)==null||!d.videoTrack){if(uu())throw new wo({code:Ro.ENV_NOT_SUPPORTED,extraCode:5201});if(!Hp())throw new wo({code:Ro.ENV_NOT_SUPPORTED,fnName:o,extraCode:5205})}}},updateScreenShare:{name:"updateScreenShareConfig",type:"object",required:!0,properties:{view:c_,publish:{type:"boolean"},option:P5}},muteRemoteAudio:[x5,{name:"mute",required:!0,type:"boolean"}],setRemoteAudioVolume:[x5,{name:"volume",required:!0,type:"number",min:0}],startRemoteVideo:{name:"startRemoteVideoConfig",type:"object",required:!0,properties:{view:c_,userId:{type:"string",required:!0},streamType:{values:["main","sub"],required:!0},option:{type:"object",properties:{fillMode:{type:"string",values:["contain","cover","fill"]},mirror:{type:"boolean"}}}},validate(A,e,o){l_(this._room.isJoined,o);let a=this._room.remotePublishedUserMap.get(A.userId);if(V5(!!a,o,A),a&&(A.streamType==="main"&&!a.muteState.videoAvailable||A.streamType==="sub"&&!a.muteState.hasAuxiliary))throw new wo({code:Ro.INVALID_OPERATION,extraCode:5103,fnName:o,messageParams:{value:A}})}},updateRemoteVideo:{name:"updateRemoteVideoConfig",type:"object",required:!0,properties:{view:Qo(mi({},c_),{required:!1}),userId:{type:"string",required:!0},streamType:{values:["main","sub"],required:!0},option:{type:"object",properties:{fillMode:{type:"string",values:["contain","cover","fill"]},mirror:{type:"boolean"}}}},validate(A,e,o){l_(this._room.isJoined,o);let a=this._room.remotePublishedUserMap.get(A.userId);if(V5(!!a,o,A),a){if(A.streamType==="main"&&!a.muteState.videoAvailable||A.streamType==="sub"&&!a.muteState.hasAuxiliary)throw new wo({code:Ro.INVALID_OPERATION,extraCode:5103,fnName:o,messageParams:{value:A}});if(A.option){let c=A.streamType==="main"?a.remoteVideoTrack:a.remoteAuxiliaryTrack;if((A.option.pictureInPicture||A.option.fullScreen||A.option.fullScreen)&&(!c.isSubscribed||!c.player.isPlaying))throw new wo({code:Ro.INVALID_OPERATION,message:"cannot set pictureInPicture or fullScreen when remote video is not playing"})}}}},stopRemoteVideo:{name:"stopRemoteVideoConfig",type:"object",required:!0,properties:{userId:{type:"string",required:!0},streamType:{values:["main","sub"]}},validate(A,e,o){if(A.userId!=="*"&&Je(A.streamType))throw new wo({code:Ro.INVALID_PARAMETER,extraCode:5014,fnName:o})}},switchRole:{name:"role",required:!0,values:["anchor","audience"],validate(A,e,o){l_(this._room.isJoining||this._room.isJoined,o)}},enableAudioVolumeEvaluation:[{name:"interval",type:"number"},{name:"enableInBackground",type:"boolean"}],sendSEIMessage:[{name:"buffer",required:!0,instanceOf:ArrayBuffer,validate(A,e,o,a){if(!Uk)throw new wo({code:Ro.ENV_NOT_SUPPORTED,fnName:o,extraCode:5207});if(!this._room.enableSEI)throw new wo({code:Ro.INVALID_OPERATION,fnName:o,extraCode:5108});if(A.byteLength>1e3)throw new wo({code:Ro.INVALID_PARAMETER,extraCode:5018,fnName:o});if(A.byteLength===0)throw new wo({code:Ro.INVALID_PARAMETER,extraCode:5017,messageParams:{key:e},fnName:o});l_(this._room.isJoined,o)}},{name:"options",type:"object",properties:{seiPayloadType:{type:"number",values:[5,243]},toSubStream:{type:"boolean",validate(A,e,o){if(!A&&!this._room.isMainStreamPublished||A&&!this._room.isAuxStreamPublished)throw new wo({code:Ro.INVALID_OPERATION,extraCode:5109,messageParams:{key:e},fnName:o})}}}}],sendCustomMessage:{name:"message",required:!0,type:"object",properties:{cmdId:{type:"number",required:!0,min:1,max:10},data:{instanceOf:ArrayBuffer,required:!0,validate(A,e,o,a){if(A.byteLength>1e3)throw new wo({code:Ro.INVALID_PARAMETER,extraCode:5018,fnName:o});if(A.byteLength===0)throw new wo({code:Ro.INVALID_PARAMETER,extraCode:5017,fnName:o,messageParams:{key:e}})}}},validate(A,e,o){if(l_(this._room.isJoined,o),this._room.scene==="live"&&this._room.role==="audience")throw new wo({code:Ro.INVALID_OPERATION,extraCode:5107,fnName:o,messageParams:{key:e}})}},switchRoom:{name:"switchRoomConfig",type:"object",required:!0,validate(A,e,o){if(l_(this._room.isJoined,o),this._room.useStringRoomId&&A.strRoomId===this._room.roomId||!this._room.useStringRoomId&&A.roomId===Number(this._room.roomId))throw new wo({code:Ro.INVALID_PARAMETER,extraCode:5020,fnName:o,messageParams:{key:this._room.useStringRoomId?"strRoomId":"roomId"}});if(A.roomId&&this._room.useStringRoomId||!A.roomId&&A.strRoomId&&!this._room.useStringRoomId)throw new wo({code:Ro.INVALID_PARAMETER,extraCode:5019,fnName:o,messageParams:{key:this._room.useStringRoomId?"strRoomId":"roomId"}});if(A.roomId)J5(A.roomId,o,e);else{if(!A.strRoomId)throw new wo({code:Ro.INVALID_PARAMETER,extraCode:5015,fnName:o});H5(A.strRoomId,o,e)}},properties:{roomId:{type:"number"},strRoomId:{type:"string"},privateMapKey:{type:"string"},userSig:{type:"string",required:!0},autoSubscribeCount:{type:"number",min:0,max:50}}}},Wl={TRTC:iiA},eC=class extends Error{};function oiA(A,e){let o=Wf(A);for(let a=0;a!0),Y(this,"mergeUpdate",oiA);let a=M_.instances.get(e);a?a.set(o,this):M_.instances.set(e,new Map([[o,this]]))}static get(e,o){if(!o)return;let a=M_.instances.get(e);return a&&a.get(o)||new M_(e,o)}static gets(e,o){let a=M_.instances.get(e),c=[];return a&&a.forEach((d,C)=>{o.test(C)&&c.push(d)}),c}action(e,o,a){let c=y=>{var S;return e===0?this.started=!0:e===3&&(this.started=!1),this.ops.shift(),(S=this.currentOp)==null||S.action(),y},d=y=>{var S,b;throw this.ops.shift(),e===0&&((S=this.currentOp)==null?void 0:S.type)===2&&this.ops.shift().reject(new eC("start failed")),(b=this.currentOp)==null||b.action(),y},C={type:e,action:()=>o(...C.args).then(c,d),args:a,resolve:siA,reject:niA};try{switch(this.state){case 1:if(e===0)throw new eC("already started");break;case 4:if(e===2)throw new eC("not started");break;default:return this.cacheOp(C)}}catch(y){return Promise.reject(y)}return this.ops.push(C),C.promise=o(...C.args).then(c,d)}cacheOp(e){if(this.ops.length===1)switch(this.state){case 0:case 2:if(e.type===0)throw new eC("already start");break;case 3:switch(e.type){case 2:throw new eC("update not allowed when stopping");case 3:return this.currentOp.promise}break;default:throw new eC("unknown state")}else switch(e.type){case 3:if(this.lastOpType===3)return this.lastOp.promise;{let a=new eC("keep stop");if(this.ops.slice(1).forEach(c=>c.reject(a)),this.ops=this.ops.slice(0,1),this.state===3)return this.currentOp.promise}break;case 2:switch(this.lastOpType){case 2:return this.lastOp.args=this.mergeUpdate(this.lastOp.args,e.args),this.lastOp.promise;case 3:throw new eC("update not allowed after stop")}break;case 0:switch(this.lastOpType){case 2:throw new eC("start not allowed after update");case 0:throw new eC("duplicate start");case 3:if(this.startSame(this.currentOp.args,e.args))throw this.ops.pop().reject(new eC("keep start")),new eC("already start")}}e.promise=new Promise((a,c)=>{e._resolve?e._resolve.then(a):e.resolve=a,e._reject?e._reject.catch(c):e.reject=c});let{action:o}=e;return e.action=()=>o().then(e.resolve,e.reject),this.ops.push(e),e.promise}get lastOp(){return this.ops[this.ops.length-1]}get lastOpType(){return this.lastOp.type}get currentOp(){return this.ops[0]}get state(){return this.currentOp?this.currentOp.type:this.started?1:4}};Y(K5,"instances",new WeakMap);var aL=K5,g1=new WeakMap,c1=(A,e)=>{if(e instanceof eC){let{stack:o}=e;e=new wo({code:Ro.OPERATION_ABORT,message:"".concat(A," abort: ").concat(e.message),fnName:A}),o&&(e.stack+=o.substr(o.indexOf(` +`)))}throw e};function JM(A,e){return jr((o,a)=>function(){for(var c=arguments.length,d=new Array(c),C=0;Cfunction(){for(var C=arguments.length,y=new Array(C),S=0;S{var MA,$A;let he=(MA=g1.get(this))==null?void 0:MA.get(J(...y));if(he){let{timeoutId:Me,resolve:yi}=he;clearTimeout(Me),yi()}let Ye=setTimeout(()=>{if(b.state===3||b.state===4)return gA();b.action(2,c.bind(this),y).catch(c1.bind(null,d)).then(gA,CA)},V);g1.has(this)?($A=g1.get(this))==null||$A.set(J(...y),{timeoutId:Ye,resolve:gA}):g1.set(this,new Map([[J(...y),{timeoutId:Ye,resolve:gA}]]))})}return b.action(2,c.bind(this),y).catch(c1.bind(null,d))})}function HM(A){return jr((e,o)=>function(){for(var a=arguments.length,c=new Array(a),d=0;dS.action(3,()=>Promise.resolve(),c))).then(()=>e.call(this,...c));let y=aL.get(this,C);return y?y.action(3,e.bind(this),c).catch(c1.bind(null,o)):e.apply(this,c)})}function qM(){return function(A,e,o){return A.prototype[e]=function(){let a=this._log||console,c='"'.concat(e,'" is a static method. Use TRTC.').concat(e,"() instead. See: ").concat(Hh,"/en/TRTC.html#.").concat(e);a.warn(c)},o}}var Hi={ERROR:"error",AUTOPLAY_FAILED:"autoplay-failed",KICKED_OUT:"kicked-out",REMOTE_USER_ENTER:"remote-user-enter",REMOTE_USER_EXIT:"remote-user-exit",REMOTE_AUDIO_AVAILABLE:"remote-audio-available",REMOTE_AUDIO_UNAVAILABLE:"remote-audio-unavailable",REMOTE_VIDEO_AVAILABLE:"remote-video-available",REMOTE_VIDEO_UNAVAILABLE:"remote-video-unavailable",AUDIO_VOLUME:"audio-volume",AUDIO_FRAME:"audio-frame",NETWORK_QUALITY:"network-quality",CONNECTION_STATE_CHANGED:"connection-state-changed",AUDIO_PLAY_STATE_CHANGED:"audio-play-state-changed",VIDEO_PLAY_STATE_CHANGED:"video-play-state-changed",SCREEN_SHARE_STOPPED:"screen-share-stopped",DEVICE_CHANGED:"device-changed",PUBLISH_STATE_CHANGED:"publish-state-changed",TRACK:"track",STATISTICS:"statistics",SEI_MESSAGE:"sei-message",CUSTOM_MESSAGE:"custom-message",VIDEO_DECODE_DOWNGRADE_STATE_CHANGED:"video-decode-downgrade-state-changed",LAYER_DATA:"layerData",FIRST_VIDEO_FRAME:"first-video-frame",PERMISSION_STATE_CHANGE:"permission-state-change",VIDEO_SIZE_CHANGED:"video-size-changed",REALTIME_TRANSCRIBER_MESSAGE:"realtime-transcriber-message",REALTIME_TRANSCRIBER_STATE_CHANGED:"realtime-transcriber-state-changed",PICTURE_IN_PICTURE_STATE_CHANGED:"picture-in-picture-state-changed",FULL_SCREEN_STATE_CHANGED:"full-screen-state-changed"},riA=new Set([Hi.AUDIO_VOLUME,Hi.AUDIO_FRAME,Hi.NETWORK_QUALITY,Hi.STATISTICS,Hi.SEI_MESSAGE,Hi.CUSTOM_MESSAGE,Hi.LAYER_DATA]),j5={};Jh(j5,{ScheduleRequestType:()=>Z5,getAbilityConfig:()=>aiA,getScheduleDomain:()=>ZK,isNeedToSchedule:()=>gL,scheduleProxy:()=>Am,sendScheduleRequest:()=>z5,setIsNeedToSchedule:()=>CQ,setScheduleProxy:()=>zK});var l1=null,I1=0,W5=72e5,u1="trtc_schedule_cache",gL=!0;function CQ(A){_r(A)&&A!==gL&&(gL=A,QA.info("setIsNeedToSchedule ".concat(A)),A?function(){if(typeof window<"u"&&typeof localStorage<"u")try{localStorage.removeItem(u1)}catch(e){QA.error("clearScheduleCache error",e)}}():I1=Date.now()+W5)}function z5(A){return KA(this,arguments,function(e){let{userId:o,sdkAppId:a,useStringRoomId:c,roomId:d,userSig:C,version:y,frameWorkType:S,role:b,latencyLevel:V}=e;return function*(){var J;if(!gL&&l1&&I1>Date.now())return{isCached:!0,result:l1};let gA={delta:0,count:[1,1],msg:[],detail:[]};try{let CA=new FormData;CA.append("userId",String(o)),CA.append("sdkAppId",String(a)),CA.append("isStrGroupId",String(c)),CA.append("groupId",String(d)),CA.append("sdkVersion",y),CA.append("userSig",String(C));let MA=((J=yield hM())==null?void 0:J.model)||dk();MA&&CA.append("model",MA);let $A=xp();$A&&CA.append("osString",$A);let he=Op();he&&CA.append("gpu",he),b&&CA.append("role",String(b)),V&&CA.append("latencyLevel",String(V)),S&&CA.append("frameWorkType",String(S));let Ye=ko(),Me=yield function(Ge,ht,Ci){return new Promise((Di,Vo)=>{let Jo=null;$S([X5(Qn=>ht.count[0]=Qn+1,Qn=>{let{error:Ho,retry:Ns,retriedCount:pg,retryFuncArgs:fa}=Qn;ht.msg[0]=Ho.message,Jo||(pg>=1&&(fa[0]=Sy(Ci,"config",YA.MAIN,!0)),Ns())})(Sy(Ci,"config",YA.MAIN),Ge,{get timeout(){return 1e3*qf(2+ht.count[0])}}),X5(Qn=>ht.count[1]=Qn+1,Qn=>{let{error:Ho,retry:Ns,retriedCount:pg,retryFuncArgs:fa}=Qn;ht.msg[1]=Ho.message,Jo||(pg>=2&&(fa[0]=Sy(Ci,"config",YA.BACKUP,!0)),Ns())})(Sy(Ci,"config",YA.BACKUP),Ge,{get timeout(){return 1e3*qf(2+ht.count[1])}})]).then(Qn=>{Jo=Qn,Di(Jo)}).catch(Vo)})}(CA,gA,a);Me.config&&(Me.config.loggerDomain&&FS(Me.config.loggerDomain),_r(Me.config.scheduleCache)&&CQ(!Me.config.scheduleCache)),gA.delta=ko()-Ye;let yi=function(Ge,ht,Ci){let Di={totalCost:0,local:0,dns:0,tcp:0,tls:0,request:0,response:0};try{let Vo=performance.getEntriesByType("resource"),Jo=Sy(Ge,"config",YA.MAIN),Qn=Sy(Ge,"config",YA.BACKUP);for(let Ho of Vo)if(Ho.startTime>=Ci&&(Ho.name===Jo||Ho.name===Qn)&&Ho.transferSize>0){let Ns=Ho.name===Jo?YA.MAIN:YA.BACKUP,pg=Math.round(Ho.duration),fa=Math.round(Ho.domainLookupStart-Ho.startTime),Cu=Ho.redirectStart>0?Math.round(Ho.redirectEnd-Ho.redirectStart):0,EL=Ho.fetchStart>0?Math.round(Ho.domainLookupStart-Ho.fetchStart):0,h_=Math.round(Ho.domainLookupEnd-Ho.domainLookupStart),Zz=Math.round(Ho.requestStart-Ho.secureConnectionStart),Xz=Math.round(Ho.secureConnectionStart-Ho.connectStart),$z=Math.round(Ho.responseStart-Ho.requestStart),A8=Math.round(Ho.responseEnd-Ho.responseStart),koA=[h_,Zz,Xz,$z,A8];sn.uploadEvent({log:"stat-schedule-net:".concat(pg,"(").concat(fa,"(").concat(Cu,"->").concat(EL,")->").concat(koA.join("->"),") ").concat(Ns),userId:ht}),Di=Qo(mi({},Di),{totalCost:pg,local:fa,dns:h_,tcp:Xz,tls:Zz,request:$z,response:A8});break}}catch(Vo){QA.error("getScheduleDetailCost error",Vo)}return Di}(Number(a),o,Ye);return l1=Me,function(Ge){if(typeof window<"u"&&typeof localStorage<"u")try{let ht=Date.now()+W5;localStorage.setItem(u1,JSON.stringify({result:Ge,expireIn:ht})),I1=ht}catch(ht){QA.error("saveScheduleToLocalStorage error",ht)}}(Me),{isCached:!1,result:Me,detailCost:yi}}catch(CA){let MA=wa(CA)?CA[0]:CA,$A=bn(MA.code)?MA.code:0,he="schedule failed".concat(MA.message?": ".concat(MA.message):""),Ye=new si({code:Et.SCHEDULE_FAILED,extraCode:$A,message:Xo({key:Mo.JOIN_ROOM_FAILED,data:{error:he,code:$A}})});throw QA.error(he,$A),Ye}}()})}typeof document<"u"&&document.head.insertAdjacentHTML("beforeend",Object.values(ZB).map(A=>'')).join(`\r +`)),function(){if(typeof window<"u"&&typeof localStorage<"u")try{let A=localStorage.getItem(u1);if(A){let{result:e,expireIn:o}=JSON.parse(A);o>Date.now()?(l1=e,I1=o,gL=!1):localStorage.removeItem(u1)}}catch(A){QA.error("loadScheduleFromLocalStorage error",A)}}(),F.on("28",()=>CQ(!0)),F.on("63",()=>CQ(!0)),F.on("84",()=>CQ(!0)),F.on("201",A=>{A.state==="RECONNECTING"&&CQ(!0)}),F.on("202",A=>{A.state==="RECONNECTING"&&CQ(!0)});var Am={main:"",backup:""};function zK(A){wa(A)?(Am.main=A[0],Am.backup=A[1]):(Am.main=A,Am.backup=A)}var Z5=(A=>(A.CONFIG="config",A.TRTC_AUTO_CONF="trtcAutoConf",A.AUDIO_AI_AUTH="audioAiAuth",A))(Z5||{});function Sy(A,e){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:YA.MAIN,a=arguments.length>3&&arguments[3]!==void 0&&arguments[3];return"https://".concat(Am[o]||ZK(A,o,a),"/api/v1/").concat(e)}function aiA(A,e,o){let a=Sy(A,e),c=Sy(A,e,YA.BACKUP),d=new URLSearchParams(o).toString(),C=fetch("".concat(a,"?").concat(d)).then(S=>S.json()),y=fetch("".concat(c,"?").concat(d)).then(S=>S.json());return $S([C,y])}function ZK(A){let e,o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:YA.MAIN,a=arguments.length>2&&arguments[2]!==void 0&&arguments[2];return e=qd(A)?a?o===YA.MAIN?ZB.MAIN_OVERSEA_BACKUP:ZB.BACKUP_OVERSEA:o===YA.MAIN?ZB.MAIN_OVERSEA:ZB.BACKUP_OVERSEA:o===YA.MAIN?ZB.MAIN:ZB.BACKUP,e}function giA(A,e,o){return new Promise((a,c)=>{AQ({url:A,body:e,timeout:o.timeout,priority:"high"}).then(d=>{d.data.code===0?a(d.data.data):c({code:d.data.code,message:d.data.msg})}).catch(c)})}var X5=(A,e)=>oM({retryFunction:giA,settings:{retries:3,timeout:0},onError:e,onRetrying:A}),XK=class{constructor(){Y(this,"_log"),this._log=QA.createLogger({id:"fd"})}download(A,e){return KA(this,null,function*(){let{type:o="blob"}=e||{};A=Jb(A);try{let a,c=ko();if(a=Ra(fetch)?yield this.downloadWithFetch(A,o):yield this.downloadWithXHR(A,o),!a||!a.data)throw new Error("data is empty");let d=ko()-c;return this._log.info("downloaded: ".concat(A,", return type: ").concat(o,", cost: ").concat(d,"ms")),Ai.addSuccessEvent({key:522700,cost:ko()-c}),a.data}catch(a){throw this._log.error("failed to download: ".concat(A,", error: ").concat(a)),Ai.addFailedEvent({key:522700,error:a}),a}})}downloadWithFetch(A,e){return KA(this,null,function*(){this._log.info("download with fetch: ".concat(A,", return type: ").concat(e));try{let o,a=yield fetch(A);if(!a.ok){let c=new Error("network response was not ok: ".concat(a.status));throw c.status=a.status,c}return o=e==="arraybuffer"?yield a.arrayBuffer():yield a.blob(),{data:o}}catch(o){throw o}})}downloadWithXHR(A,e){return this._log.info("download with xhr: ".concat(A,", return type: ").concat(e)),new Promise((o,a)=>{let c=new XMLHttpRequest;c.open("GET",A,!0),c.responseType=e,c.onload=()=>{if(c.status===200||c.status===0&&c.response)o({data:c.response});else{let d=new Error("XHR failed, status: ".concat(c.status));d.status=c.status,a(d)}},c.onerror=a,c.send(null)})}loadWasm(A,e){return KA(this,null,function*(){this._log.info("loadWasm ".concat(A,", importObject: ").concat(JSON.stringify(e)));let o=ko(),a=null,c=null;if(Ra(WebAssembly.instantiateStreaming)&&!A.startsWith("data:application/octet-stream;base64,")&&!(d=>d.startsWith("file://"))(A)&&Ra(fetch))try{let d=fetch(A);a=(yield WebAssembly.instantiateStreaming(d,e)).instance}catch(d){c=d}if(!a)try{let d=yield this.download(A,{type:"arraybuffer"});a=(yield WebAssembly.instantiate(d,e)).instance}catch(d){c=d}if(a){let d=ko()-o;return this._log.info("loadedWasm ".concat(A,", cost: ").concat(d,"ms")),Ai.addSuccessEvent({key:522701,cost:d}),a}throw this._log.error("failed to loadWasm ".concat(A,", error: ").concat(c)),Ai.addFailedEvent({key:522701,error:c}),c})}loadScript(A){this._log.info("loadScript ".concat(A));let e=ko();return new Promise((o,a)=>{let c=document.createElement("script");c.type="text/javascript",c.onload=()=>{this._log.info("loadedScript ".concat(A,", cost: ").concat(ko()-e,"ms")),Ai.addSuccessEvent({key:522702,cost:ko()-e,split:1e3}),o(c)},c.onerror=d=>{this._log.error("failed to loadScript ".concat(A,", error: ").concat(d?.message||JSON.stringify(d))),Ai.addFailedEvent({key:522702}),a(d)},c.crossOrigin="anonymous",c.src=A,document.head.append?document.head.append(c):document.getElementsByTagName("head")[0].appendChild(c)})}};di([Xh({settings:{timeout:0,retries:3},onError(A,e,o){var a;A?.status===404||(a=A?.message)!=null&&a.includes("404")?(this._log.warn("download 404, stop retry"),o(A)):e()},onRetrying(A){this._log.warn("download retrying: ".concat(A))}})],XK.prototype,"download"),di([Xh({settings:{timeout:3e3,retries:3},onRetrying(A){this._log.warn("loadScript retrying: ".concat(A))}})],XK.prototype,"loadScript");var $K=new XK;function $5(A){let[e,o]=A,a=o.byteLength,c=parseInt(String(a/255),10),d=a%255,C=[];C.push(0,0,0,1,6,e);for(let S=0;SV+J.dataView.byteLength,0),C=new ArrayBuffer(d+e.data.byteLength),y=new DataView(C),S=new DataView(e.data),b=0;for(let V=0;Vc.isSEI);o?.(a.reverse())}catch{}return e}function sz(A){let{seiMessageList:e,isAudio:o,getNtpTime:a,isMain:c}=A;return new TransformStream({transform(d,C){let y=d;o?audioEncodePipeline.forEach(S=>{y=S({frame:y,ntp:a(),onDump:()=>{self.postMessage({type:"dump",isAudio:o,data:y.data,userId:""})}})}):videoEncodePipeline.forEach(S=>{y=S({frame:y,seiMessageList:e,onDump:()=>{self.postMessage({type:"dump",isAudio:o,data:y.data,userId:"",streamType:c?"main":"auxiliary"})}})}),C.enqueue(y)}})}function nz(A){let{userId:e,streamType:o,isAudio:a}=A;return new TransformStream({transform(c,d){let C=c;a?(audioDecodePipeline.forEach(y=>{C=y({frame:C,onAudioFrameNTPTime:S=>{self.postMessage({type:"audio-ntp",data:S,userId:e,streamType:o})},onDump:()=>{self.postMessage({type:"dump",isAudio:a,data:C.data,userId:e})}})}),d.enqueue(C)):videoDecodePipeline.forEach(y=>{C=y({frame:C,onSEI:S=>{S.forEach(b=>{self.postMessage({type:"sei",seiPayloadType:b.seiPayloadType,data:b.seiPayload.buffer,userId:e,streamType:o})})},onDump:()=>{self.postMessage({type:"dump",isAudio:a,data:C.data,userId:e,streamType:o})}})}),d.enqueue(C)}})}function rz(A){let e=[t1],o=[tz,Az,v5,ez,$5,sz,nz,v0,iM,e1],a="const videoEncodePipeline=[".concat(A.videoEncodePipeline.toString(),`]; const videoDecodePipeline=[`).concat(A.videoDecodePipeline.toString(),`]; const audioEncodePipeline = [`).concat(A.audioEncodePipeline.toString(),`]; const audioDecodePipeline = [`).concat(A.audioDecodePipeline.toString(),"];"),c="(()=>{".concat(e.map(S=>"const ".concat(S.name,"=(()=>").concat(S.toString(),")()")).join(` `),` `).concat(o.map(S=>S.toString()).join(` -`),";(").concat(()=>{let S=[],b=[],V=[],J=0;self.onmessage=gA=>{switch(gA.data.type){case"sei":gA.data.isMain?(S.push(gA.data.data),gA.data.small&&V.push(gA.data.data)):b.push(gA.data.data);break;case"ntp-offset":J=gA.data.data}},self.onrtctransform=gA=>{let{options:CA}=gA.transformer,MA=CA.isReceiver?y5({userId:CA.userId,streamType:CA.streamType,isAudio:CA.isAudio}):f5({getNtpTime:()=>Date.now()+J,isAudio:CA.isAudio,isMain:CA.isMain,seiMessageList:CA.isMain?CA.small?V:S:b});gA.transformer.readable.pipeThrough(MA).pipeTo(gA.transformer.writable)}},")();").concat(a,"})()"),d=new Blob([c],{type:"text/javascript"}),C=URL.createObjectURL(d),y=new Worker(C);return URL.revokeObjectURL(C),y}var S5,SK=class{constructor(A){Y(this,"audioPlayer"),Y(this,"videoPlayer"),Y(this,"log"),this.audioPlayer=A.audioPlayer,this.videoPlayer=A.videoPlayer,this.log=A.log.createChild({id:"pip"}),this.videoPlayer.on(mo.USER_RESUME_IN_PIP_OR_FULL_SCREEN,this.handleUserResumeInPIPOrFullScreen,this),this.videoPlayer.on(mo.USER_PAUSE_IN_PIP_OR_FULL_SCREEN,this.handleUserPauseInPIPOrFullScreen,this),this.videoPlayer.on(mo.ENTER_PICTURE_IN_PICTURE,this.handleEnterPIPOrFullScreen,this),this.videoPlayer.on(mo.ENTER_FULL_SCREEN,this.handleEnterPIPOrFullScreen,this),this.videoPlayer.on(mo.LEAVE_PICTURE_IN_PICTURE,this.handleLeavePIP,this),this.videoPlayer.on(mo.LEAVE_FULL_SCREEN,this.handleLeaveFullScreen,this),this.videoPlayer.on(mo.VOLUME_CHANGE,this.handleVolumeChange,this)}handleUserResumeInPIPOrFullScreen(){this.audioPlayer.isPaused&&(this.log.warn("resume audio in ".concat(this.videoPlayer.isPictureInPicture()?"pip":"fullscreen")),this.audioPlayer.doResume()),Ja&&Ay&&this.videoPlayer.resetSrcObjectToReplay()}handleUserPauseInPIPOrFullScreen(){this.audioPlayer.isPaused||(this.log.warn("pause audio in ".concat(this.videoPlayer.isPictureInPicture()?"pip":"fullscreen")),this.audioPlayer.doPause())}handleEnterPIPOrFullScreen(){this.videoPlayer.element&&this.audioPlayer.muted!==this.videoPlayer.element.muted&&(this.log.warn("sync video muted to ".concat(this.audioPlayer.muted," when enter ").concat(this.videoPlayer.isPictureInPicture()?"pip":"fullscreen")),this.videoPlayer.element.muted=this.audioPlayer.muted)}handleLeavePIP(){this.audioPlayer.isPaused&&!this.audioPlayer.isPausedByUserCall&&(this.log.warn("resume after leave pip"),this.audioPlayer.doResume()),this.videoPlayer.isPaused&&!this.videoPlayer.isPausedByUserCall&&(this.log.warn("resume video after leave pip"),this.videoPlayer.doResume())}handleLeaveFullScreen(){this.audioPlayer.isPaused&&!this.audioPlayer.isPausedByUserCall&&(this.log.warn("resume audio after leave fullscreen"),this.audioPlayer.doResume()),this.videoPlayer.isPaused&&!this.videoPlayer.isPausedByUserCall&&(this.log.warn("resume video after leave fullscreen"),Ja&&Ay?this.videoPlayer.resetSrcObjectToReplay():this.videoPlayer.doResume())}handleVolumeChange(A){A.muted!==void 0&&this.audioPlayer.muted!==A.muted&&(this.log.warn("sync audio muted to ".concat(A.muted," in ").concat(this.videoPlayer.isPictureInPicture()?"pip":"fullscreen")),this.audioPlayer.setMuted(A.muted))}destroy(){this.videoPlayer.off(mo.USER_RESUME_IN_PIP_OR_FULL_SCREEN,this.handleUserResumeInPIPOrFullScreen,this),this.videoPlayer.off(mo.USER_PAUSE_IN_PIP_OR_FULL_SCREEN,this.handleUserPauseInPIPOrFullScreen,this),this.videoPlayer.off(mo.ENTER_PICTURE_IN_PICTURE,this.handleEnterPIPOrFullScreen,this),this.videoPlayer.off(mo.ENTER_FULL_SCREEN,this.handleEnterPIPOrFullScreen,this),this.videoPlayer.off(mo.LEAVE_PICTURE_IN_PICTURE,this.handleLeavePIP,this),this.videoPlayer.off(mo.LEAVE_FULL_SCREEN,this.handleLeaveFullScreen,this),this.videoPlayer.off(mo.VOLUME_CHANGE,this.handleVolumeChange,this)}},M5=!1;function DtA(A){var e=this;let{TRTC:o,room:a,errorModule:c,assetsPath:d}=A;return{TRTC:o,LocalMixVideoTrack:CK,LocalVideoTrack:IQ,LocalScreenTrack:bM,room:a,assetsPath:d,fileDownloader:DK,innerEmitter:U,INNER_EVENT:sA,constants:sx,environment:Vx,utils:q4,eventLogger:sn,log:this.room.getLogger(),loggerManager:QA,errorModule:c,kvStatManager:Ai,rtcDectection:oe,trtc:this,rx:m4,enums:ke,schedule:l5,getDevices:m2,initVisionTaskRegistry:function(C,y){let S=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"/mediapipe/vision.js";return KA(e,null,function*(){!window.VisionTaskRegistry&&!M5&&(M5=!0,S5=DK.loadScript("".concat(C,"/").concat(S).replace(/([^:]\/)\/+/g,"$1"))),yield S5,yield(yield window.VisionTaskRegistry.getInstance(C)).preloadModels(y)})},audioContext:bI(),deviceDetector:Pc,AudioPlayer:tK,RemoteAudioPlayer:d4,VideoPlayer:Mo,showAutoPlayDialog:LC,Timer:_r,clearStarted:(C,y)=>{let S=C.getAlias(),b=qk.instances.get(this);if(b)if(y){let V=b.get(S+y);if(!V)return;V.started=!1}else b.forEach((V,J)=>{J.startsWith(S)&&(V.started=!1)})},startGetPCM:pK,createAudioNode:B2,getNetworkTimeOffset:ix,validateSourceNode:()=>{var C;if(er&&((C=this.room.audioManager._localAudioPipline)==null||!C.source.node))throw new Ro({code:vo.DEVICE_ERROR,extraCode:5310,message:"The audio processing plugin cannot be used due to the microphone's sampling rate is not 48KHz in Firefox. Please switch to another browser such as Chrome."})},createScriptTransformWorker:D5,AVPlayerStateSyncManager:SK,PlayerEvent:mo}}var i_=new WeakMap,v5="5.15.3-beta.12";function lu(){for(var A=arguments.length,e=new Array(A),o=0;ofunction(){for(var d=arguments.length,C=new Array(d),y=0;yfunction(){for(var d=arguments.length,C=new Array(d),y=0;yJf(V)?HS(V):Yn(V)?V:Cg(V))},value:o}})}else if(!Ye(e.type)&&Cg(o)!==e.type)throw new Ro(C(5002));if(e.allowEmpty===!1){let b=bn(o)&&(o===0||Number.isNaN(o)),V=Yn(o)&&o.trim()==="";if(b||V)throw new Ro(C(5003))}if(e.notLessThanZero&&bn(o)&&o<0)throw new Ro(C(5006));if(!Ye(e.min)&&bn(o)&&oe.max)throw new Ro(C(5008));if(Yn(e.instanceOf)){if(!o||o._name!==e.instanceOf)throw new Ro(C(5004))}else if(va(e.instanceOf)&&!(o instanceof e.instanceOf))throw new Ro(C(5004));if(Array.isArray(e.values)&&!e.values.includes(o))throw new Ro(C(5005));let{properties:y}=e;oE(y)&&JE(o)&&Object.keys(y).forEach(b=>{J2.call(this,{rule:y[b],value:o&&o[b],key:"".concat(b),fnName:c,className:d})});let{arrayItem:S}=e;oE(S)&&Ra(o)&&o.forEach((b,V)=>{J2.call(this,{rule:S,value:b,key:"".concat(a,"[").concat(V,"]"),fnName:c,className:d})}),va(e.validate)&&e.validate.call(this,o,a,c,d,this)}var StA=0;function pa(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{getRemoteId:e=()=>"",replaceArg:o,getKVReportKey:a,ignoreLog:c,ignoreErrorLog:d}=A;return Hr((C,y)=>function(){for(var S=arguments.length,b=new Array(S),V=0;V0?ee.info("".concat(y,"() ").concat(Be," ").concat(JSON.stringify(b,(fi,Ge)=>MA(fi,Ge,["userSig","privateMapKey"])))):ee.info("".concat(y,"() ").concat(Be));let Pe=a?a(...b):o2[y],Me=d?.(...b)||!1;try{let fi=C.apply(this,b),Ge=bo();if(Vf(fi)){let dt="".concat(y.includes("Plugin")?"".concat(((gA=(J=b[0]).getName)==null?void 0:gA.call(J))||""," "):" ");return fi.then(Ci=>(ee.info("".concat(y,"() success ").concat(Be," ").concat(dt).concat(e.call(this,...b))),Ai.addSuccessEvent({key:Pe,cost:bo()-Ge}),Ci)).catch(Ci=>{var yi;let Yo=(Ci=Ro.convertFrom.call(this,Ci,y,b.length===1?b[0]:b)).extraCode||Ci.code,Vo=(yi=Ci.message)!=null&&yi.includes(Yo)?"":" code:".concat(Yo),Qn=Ci?.code===vo.OPERATION_ABORT;throw Me||ee[Qn?"warn":"error"]("".concat(y,"() failed ").concat(Be," ").concat(dt).concat(e.call(this,...b)," ").concat(Ci).concat(Vo," params: ").concat(JSON.stringify(b,MA))),Ai.addFailedEvent({key:Pe,error:Ci}),Ci})}return Ai.addSuccessEvent({key:Pe}),fi}catch(fi){let Ge=(fi=Ro.convertFrom.call(this,fi,y)).extraCode||fi.code,dt=(CA=fi.message)!=null&&CA.includes(Ge)?"":" code:".concat(Ge),Ci=fi?.code===vo.OPERATION_ABORT;throw Me||ee[Ci?"warn":"error"]("".concat(y,"() failed ").concat(Be," ").concat(fi).concat(dt," params: ").concat(JSON.stringify(b,MA))),Ai.addFailedEvent({key:Pe,error:fi}),fi}})}var vK,RK=A=>Hr((e,o)=>function(a,c){return KA(this,null,function*(){let d=this._plugins.get(a);if(!d)throw this._log.error("plugin ".concat(String(a)," is not found")),new Ro({code:vo.OPERATION_ABORT,message:"plugin ".concat(String(a)," is not found"),fnName:o});if(va(d.constructor.isSupported)&&!d.constructor.isSupported())throw this._log.error("plugin ".concat(String(a)," is not supported")),new Ro({code:vo.ENV_NOT_SUPPORTED,message:"plugin ".concat(String(a)," is not supported"),extraCode:5210,fnName:o});return MK.call(this,d.getValidateRule(A),[c],o,"TRTC"),e.call(this,d,c)})}),wK=0,H2=class IL{constructor(e){this.core=e,Y(this,"log"),Y(this,"customAudioReferenceMap",new Map),Y(this,"audioRefId",0),Y(this,"audioContext",bI()),Y(this,"localAudioWorkletNode"),Y(this,"screenAudioWorkletNode"),Y(this,"mixNode"),Y(this,"silentNode"),wK+=1,this.log=e.log.createChild({id:"".concat(this.getAlias()).concat(wK)}),this.log.info("created id=".concat(this.getAlias()).concat(wK)),this.installEvent()}static getStartValidateRule(e){return{name:"options",required:!0,type:"object",properties:{sdkAppId:{type:"number",required:!0},userId:{type:"string",required:!0},userSig:{type:"string",required:!0}},validate(o,a,c,d){if(!e.room.audioManager.hasAudioTrack&&!e.room.audioManager.hasScreenAudioTrack)throw new Ro({code:vo.INVALID_OPERATION,extraCode:5106,fnName:c})}}}preload(e){return vK||(vK=this.doPreload(e)),vK}doPreload(e){return KA(this,null,function*(){let o=yield this.core.fileDownloader.download(e,{type:"blob"}),a=URL.createObjectURL(o);try{yield Vg(this.audioContext,a)}catch(c){this.log.error("preload audioProcessor failed. ".concat(c))}finally{URL.revokeObjectURL(a)}})}getName(){return IL.Name}getAlias(){return"ap"}getGroup(){return"ap"}getValidateRule(e){switch(e){case"start":return IL.getStartValidateRule(this.core);case"update":return IL.updateValidateRule;case"stop":return IL.stopValidateRule}}start(e){return KA(this,null,function*(){var o,a,c,d;let{room:C}=this.core,{sdkAppId:y,userId:S,userSig:b,assetsPath:V=this.core.assetsPath,audioReference:J,processLevel:gA,enableDump:CA,isLocalAudioNeedAudioProcess:MA=!0,isScreenAudioNeedAudioProcess:ee=!1}=e;if(this.core.room.audioManager.isLocalAudioNeedAudioProcess=MA,this.core.room.audioManager.isScreenAudioNeedAudioProcess=ee,!V)throw new Ro({code:vo.INVALID_PARAMETER,message:"you need to deploy the assets of the npm package and set assetsPath param in TRTC.create()"});if(this.core.validateSourceNode(),yield this.preload("".concat(V,"/audioProcessor-wasm.js")),MA&&!this.localAudioWorkletNode){let{sign:Be,status:Pe,timestamp:Me}=yield this.getAuthData(y,S,b);this.localAudioWorkletNode=new AudioWorkletNode(this.audioContext,"trtc-audio-processor",{numberOfInputs:2,numberOfOutputs:1}),this.initWorkletNode(this.localAudioWorkletNode,"localAudio",y,S,Me,Be,Pe,C)}if(ee&&!this.screenAudioWorkletNode){let{sign:Be,status:Pe,timestamp:Me}=yield this.getAuthData(y,S,b);this.screenAudioWorkletNode=new AudioWorkletNode(this.audioContext,"trtc-audio-processor",{numberOfInputs:2,numberOfOutputs:1}),this.initWorkletNode(this.screenAudioWorkletNode,"screenAudio",y,S,Me,Be,Pe,C)}this.mixNode||(this.mixNode=this.audioContext.createGain(),this.mixNode.gain.value=1),this.silentNode||(this.silentNode=this.audioContext.createConstantSource(),this.silentNode.offset.setValueAtTime(0,this.audioContext.currentTime),this.silentNode.start()),(o=this.localAudioWorkletNode)==null||o.port.postMessage({type:"enable"}),(a=this.screenAudioWorkletNode)==null||a.port.postMessage({type:"enable"}),C.audioManager.addAudioProcessor(this.mixNode,this.silentNode,this.localAudioWorkletNode,this.screenAudioWorkletNode),Ye(J)||J.forEach(Be=>{this.customAudioReferenceMap.set(Be,"o-".concat(this.audioRefId++)),this.core.room.audioManager.updateAudioReference({type:"add",audioReference:Be,refId:"o-".concat(this.audioRefId++)})}),Ye(gA)||(c=this.localAudioWorkletNode)==null||c.port.postMessage({type:"setConfig",data:{aecEnable:1,aecNlpLevel:gA}}),Ye(CA)||(d=this.localAudioWorkletNode)==null||d.port.postMessage({type:"dump",data:{enable:CA}})})}update(e){return KA(this,null,function*(){var o,a,c;let{audioReference:d,enableDump:C,processLevel:y}=e;Ye(d)||(this.customAudioReferenceMap.forEach((S,b)=>{this.customAudioReferenceMap.delete(b),this.core.room.audioManager.updateAudioReference({type:"remove",refId:S})}),d.forEach(S=>{this.customAudioReferenceMap.set(S,"o-".concat(this.audioRefId++)),this.core.room.audioManager.updateAudioReference({type:"add",audioReference:S,refId:"o-".concat(this.audioRefId++)})})),Ye(y)||(o=this.localAudioWorkletNode)==null||o.port.postMessage({type:"setConfig",data:{aecEnable:1,aecNlpLevel:y}}),Ye(C)||((a=this.localAudioWorkletNode)==null||a.port.postMessage({type:"dump",data:{enable:C}}),(c=this.screenAudioWorkletNode)==null||c.port.postMessage({type:"dump",data:{enable:C}}))})}stop(){return KA(this,null,function*(){var e,o;let{room:a}=this.core;(e=this.localAudioWorkletNode)==null||e.port.postMessage({type:"disable"}),(o=this.screenAudioWorkletNode)==null||o.port.postMessage({type:"disable"}),yield a.audioManager.removeAudioProcessor(this.localAudioWorkletNode,this.screenAudioWorkletNode)})}destroy(){this.localAudioWorkletNode&&(this.localAudioWorkletNode.port.onmessage=null),this.screenAudioWorkletNode&&(this.screenAudioWorkletNode.port.onmessage=null),this.uninstallEvent()}getAuthData(e,o,a){return KA(this,null,function*(){let c=String(Date.now()).slice(0,-3),{auth:d,sign:C,status:y,message:S}=yield function(b){return KA(this,arguments,function(V){let{sdkAppId:J,userId:gA,userSig:CA,timestamp:MA}=V;return function*(){let ee="".concat(function(Yo){let Vo=arguments.length>1&&arguments[1]!==void 0?arguments[1]:YA.MAIN;return"https://".concat(zp[Vo]||fK(Yo,Vo),"/api/v1/audioAiAuth")}(J),"?sdkAppId=").concat(J,"&userId=").concat(gA,"&userSig=").concat(CA,"×tamp=").concat(MA),Be=yield fetch(ee),{data:{errCode:Pe,errMsg:Me,sign:fi,status:Ge}}=yield Be.json();if(Ge==="1")return{auth:!0,sign:fi,status:Ge,message:Me};let dt=xd(J)?"https://trtc.io/document/42734?platform=web&product=rtcengine&menulabel=coresdk":"https://cloud.tencent.com/document/product/647/44247",Ci="Init RTCAudioProcessor failed.",yi="";switch(Pe){case 1:yi="Please check your params.";break;case 2:yi="You need to buy packages. Refer to: ".concat(dt);break;case 3:yi="Server is invalid. Please contact our engineer. ";break;case 4:yi="Your packages is not active. Refer to: ".concat(dt);break;case 5:yi="Your packages is expired. Refer to: ".concat(dt);break;case 6:yi="Your version is not supported."}return{auth:!1,status:Ge,message:Me?"".concat(Ci," Reason: ").concat(Me,". ").concat(yi):"".concat(Ci,", ").concat(yi)}}()})}({sdkAppId:e,userSig:a,userId:o,timestamp:c});if(!d)throw this.log.info("audioProcessor: ".concat(o," auth result: ").concat(d,". Message: ").concat(S)),new Ro({code:vo.INVALID_PARAMETER,message:S});return{sign:C,status:y,timestamp:c}})}initWorkletNode(e,o,a,c,d,C,y,S){e.port.postMessage({type:"init",data:{sdkAppId:String(a),userId:c,timestamp:d,sign:C,status:y}}),e.port.onmessage=b=>{var V;let{data:J}=b;switch(J.type){case"cost":let gA=J?.value>10?"info":"debug";return void this.log[gA]("".concat(o==="localAudio"?"":"[".concat(o,"] "),"avg cost: ").concat(J.value," max: ").concat(J?.max,"(").concat(eb(new Date(J?.maxCostTimestamp)),") hist: ").concat((V=J?.hist)==null?void 0:V.join(" ")));case"log":return void this.log[J.logLevel]("".concat(o==="localAudio"?"":"[".concat(o,"] ")).concat(J.value));case"dump":return void U.emit("265",{room:S,data:J.value,type:o==="localAudio"?"dump":"dump-screen-audio"});case"detectEcho":return void this.log.warn("".concat(o==="localAudio"?"":"[".concat(o,"] "),"detect echo: ").concat(N0()?oQ():Up()))}}}handleLocalAudioStarted(e){return KA(this,null,function*(){var o;if(this.hitTest(e.room)&&((o=this.core.room.scheduleResult.config)==null?void 0:o.audioProcessor)===!0)try{yield this.core.trtc.startPlugin("AudioProcessor",{sdkAppId:this.core.room.sdkAppId,userId:this.core.room.userId,userSig:this.core.room.userSig}),this.log.warn("audio processor auto start success")}catch(a){this.log.warn("audio processor auto start failed, error: ".concat(a))}})}handleLocalAudioStopped(e){return KA(this,null,function*(){var o;!this.hitTest(e.room)||((o=this.core.room.scheduleResult.config)==null?void 0:o.audioProcessor)!==!0||(yield this.core.trtc.stopPlugin("AudioProcessor"))})}installEvent(){this.core.innerEmitter.on("104",this.handleLocalAudioStarted,this),this.core.innerEmitter.on("114",this.handleLocalAudioStopped,this)}uninstallEvent(){this.core.innerEmitter.off("104",this.handleLocalAudioStarted,this),this.core.innerEmitter.off("114",this.handleLocalAudioStopped,this)}hitTest(e){return e===this.core.room}};Y(H2,"updateValidateRule",{type:"object"}),Y(H2,"stopValidateRule",{type:"object"}),Y(H2,"Name","AudioProcessor");var MtA=H2,_K=0,vtA=class{constructor(A,e){Y(this,"audioObjectURL"),Y(this,"player"),Y(this,"publisher"),Y(this,"mixInput"),this.mixInput=new a4(e),A.url?(this.player=new Audio(A.url),this.player.crossOrigin="anonymous",this.publisher=new Audio(A.url),this.publisher.crossOrigin="anonymous",this.mixInput.replaceSource(this.publisher)):this.mixInput.replaceSource(A.track),this.mixInput.connect()}updateSettings(A){this.player&&(Ye(A.volume)||(this.volume=A.volume),Ye(A.loop)||(this.loop=A.loop),Ye(A.playbackRate)||(this.playbackRate=A.playbackRate))}updateListener(A){if(this.player){if(A.onDurationChange){let{onDurationChange:e}=A;this.player.ondurationchange=o=>{e(o.target.duration)}}if(A.onTimeUpdate){let e=A.onTimeUpdate,{player:o}=this;o.ontimeupdate=()=>{e(o.currentTime,o.duration)}}A.onEnded&&(this.player.onended=A.onEnded)}}reload(A){return KA(this,null,function*(){if(A.url){let e=yield DK.download(A.url,{retries:3,type:"blob"});this.audioObjectURL&&URL.revokeObjectURL(this.audioObjectURL),this.audioObjectURL=URL.createObjectURL(e),this.player&&this.publisher?(this.player.src=this.audioObjectURL,this.publisher.src=this.audioObjectURL):(this.player=new Audio(this.audioObjectURL),this.player.crossOrigin="anonymous",this.publisher=new Audio(this.audioObjectURL),this.publisher.crossOrigin="anonymous",this.mixInput.replaceSource(this.publisher),this.updateListener(A),this.updateSettings(A))}else this.mixInput.replaceSource(A.track)})}reset(){this.seek(0),this.mixInput.connect()}seek(A){this.player&&(A<0&&A>this.player.duration||(this.player.currentTime=A,this.publisher.currentTime=A))}play(){var A,e;return Promise.all([(A=this.player)==null?void 0:A.play(),(e=this.publisher)==null?void 0:e.play()])}pause(){var A,e;(A=this.player)==null||A.pause(),(e=this.publisher)==null||e.pause()}stop(){var A;(A=this.player)==null||A.pause(),this.mixInput.disconnect()}setOperation(A){A==="pause"&&this.pause(),A==="resume"&&(this.pause(),this.play()),A==="stop"&&(this.pause(),this.seek(0))}set volume(A){!this.player||!this.publisher||(this.player.volume=A,this.publisher.volume=A)}set loop(A){!this.player||!this.publisher||(this.player.loop=A,this.publisher.loop=A)}set playbackRate(A){!this.player||!this.publisher||(this.player.playbackRate=A,this.publisher.playbackRate=A)}};function o_(A,e){if(e&&typeof e!="function")throw new Ro({code:vo.INVALID_PARAMETER,message:"start audioMixer plugin: param ".concat(A," should be a function.")})}var jk=class uL{constructor(e){this.core=e,Y(this,"log"),Y(this,"mixedMusicMap",new Map),Y(this,"cacheMusicMap",new Map),_K+=1,this.log=e.log.createChild({id:"".concat(this.getAlias()).concat(_K)}),this.log.info("created id=".concat(this.getAlias()).concat(_K))}getName(){return uL.Name}getAlias(){return"ax"}getGroup(e){return e?.id}getValidateRule(e){switch(e){case"start":return uL.startValidateRule;case"update":return uL.updateValidateRule;case"stop":return uL.stopValidateRule}}start(e){return KA(this,null,function*(){let{room:o}=this.core;this.core.validateSourceNode(),this.log.info("add music source, id: ".concat(e.id," url: ").concat(e.url,", track: ").concat(e.track));let{id:a,url:c}=e;if(this.mixedMusicMap.has(a))return;let d=this.cacheMusicMap.get(a);d?e.url?d.reset():(d.mixInput.replaceSource(e.track),d.mixInput.connect()):(d=new vtA(e,o.audioManager),this.cacheMusicMap.set(a,d)),d.updateListener(e),d.updateSettings(e);try{yield d.play()}catch(C){yield this.handleAutoPlayFailed(d,e,C)}this.mixedMusicMap.set(a,d),d.mixInput.source.node&&this.core.room.audioManager.updateAudioReference({type:"add",audioReference:d.mixInput.source.node,refId:"ax-".concat(a)}),this.log.info("start mix audio track ".concat(a," success.")),Ai.addEnum({key:502700,value:3}),this.kvUpload(e)})}handleAutoPlayFailed(e,o,a){return KA(this,null,function*(){if(a.name==="NotSupportedError")this.log.error("play failed, try to reload source. error: ".concat(a)),yield e.reload(o),yield e.play();else{if(a.name!=="NotAllowedError")throw a;if(this.core.room.enableAutoPlayDialog){let c=()=>{var d;(d=e.play())==null||d.finally(()=>{U.off("154",c,this)})};U.on("154",c,this),LC()}else this.core.trtc.emit(Hi.AUTOPLAY_FAILED,{userId:"",mediaType:"audio",resume:()=>KA(this,null,function*(){return e.play()})})}})}update(e){return KA(this,null,function*(){let{id:o,operation:a,seekFrom:c,playbackRate:d}=e;this.log.info("update music source, ".concat(JSON.stringify(e)));let C=this.mixedMusicMap.get(o);C?(C.updateSettings(e),C.updateListener(e),Ye(a)||C.setOperation(a),Ye(c)||C.seek(c),this.kvUpload(e)):this.log.warn("update music source failed, music id: ".concat(o," not found."))})}stop(e){return KA(this,arguments,function(o){var a=this;let{id:c}=o;return function*(){if(a.mixedMusicMap.has(c)){a.log.info("remove music source, music id: ".concat(c));let d=a.mixedMusicMap.get(c);d!=null&&d.mixInput.source.node&&a.core.room.audioManager.updateAudioReference({type:"remove",audioReference:d.mixInput.source.node,refId:"ax-".concat(c)}),d?.stop(),a.mixedMusicMap.delete(c)}c==="*"&&a.destroyAllMusic()}()})}kvUpload(e){let{track:o,loop:a,volume:c,playbackRate:d,operation:C,seekFrom:y,onTimeUpdate:S,onDurationChange:b,onEnded:V}=e;o&&Ai.addCount({key:502009}),a&&Ai.addCount({key:502001}),c&&Ai.addCount({key:502002}),d&&Ai.addCount({key:502003}),C&&Ai.addCount({key:502004}),y&&Ai.addCount({key:502005}),typeof S!="function"&&Ai.addCount({key:502007}),typeof V!="function"&&Ai.addCount({key:502008}),typeof b!="function"&&Ai.addCount({key:502006})}destroyAllMusic(){this.log.info("destroy all music source."),this.mixedMusicMap.forEach((e,o)=>{e!=null&&e.mixInput.track&&this.core.room.audioManager.updateAudioReference({type:"remove",audioReference:e.mixInput.track,refId:o}),this.stop({id:o})})}destroyAllCache(){this.log.info("destroy all music cache."),this.cacheMusicMap.clear()}destroy(){this.log.info("destroy audio mixer plugin."),this.destroyAllMusic(),this.destroyAllCache()}};Y(jk,"startValidateRule",{name:"options",required:!0,type:"object",properties:{id:{type:"string",required:!0},url:{type:"string",required:!1},track:{required:!1},loop:{type:"boolean"},volume:{type:"number"}},validate(A,e,o){if(A.url&&A.url!=="*"){let a=A.url.split("?")[0],c=["mp3","ogg","wav","flac"],d=a.split(".").pop(),C=c.indexOf(d)>=0,y=a.startsWith("blob"),S=a.startsWith("data");if(!(C||y||S))throw new Ro({code:vo.INVALID_PARAMETER,message:"start audioMixer plugin: music url is invalid, please check your file format.",fnName:o})}if(!A.url&&!A.track)throw new Ro({code:vo.INVALID_PARAMETER,message:"start audioMixer plugin: param url or track is required.",fnName:o});o_("onTimeUpdate",A.onTimeUpdate),o_("onEnded",A.onEnded),o_("onDurationChange",A.onDurationChange)}}),Y(jk,"updateValidateRule",{name:"options",required:!0,type:"object",properties:{id:{type:"string",required:!0},loop:{type:"boolean"},volume:{type:"number"},seekFrom:{type:"number"},operation:{type:"string",values:["pause","resume","stop"]}},validate(A,e,o){o_("onTimeUpdate",A.onTimeUpdate),o_("onEnded",A.onEnded),o_("onDurationChange",A.onDurationChange)}}),Y(jk,"stopValidateRule",{name:"options",type:"object",required:!0,properties:{id:{type:"string",required:!0}}}),Y(jk,"Name","AudioMixer");var TK,RtA=jk,NK=0,q2=class EL{constructor(e){this.core=e,Y(this,"log"),Y(this,"audioContext",bI()),Y(this,"workletNode"),Y(this,"config",{enableFarFieldReduce:!1,farFieldReduceThreshold:.5}),NK+=1,this.log=e.log.createChild({id:"".concat(this.getAlias()).concat(NK)}),this.log.info("created id=".concat(this.getAlias()).concat(NK))}static startValidateRule(e){return{name:"options",required:!0,type:"object",properties:{sdkAppId:{type:"number",required:!0},userId:{type:"string",required:!0},userSig:{type:"string",required:!0},mode:{type:"number",required:!1,values:[0,1]},farFieldReduceThreshold:{type:"number",required:!1,min:0,max:1}},validate(o,a,c,d){if(!e.room.audioManager.hasAudioTrack)throw new Ro({code:vo.INVALID_OPERATION,extraCode:5106,fnName:c})}}}preload(e){return TK||(TK=this.doPreload(e)),TK}doPreload(e){return KA(this,null,function*(){let o=yield this.core.fileDownloader.download(e,{type:"blob"}),a=URL.createObjectURL(o);try{yield Vg(this.audioContext,a)}catch(c){throw this.log.error("load worklet failed",c),c}finally{URL.revokeObjectURL(a)}})}getName(){return EL.Name}getAlias(){return"ad"}getGroup(){return"AIDenoiser"}getValidateRule(e){switch(e){case"start":return EL.startValidateRule(this.core);case"update":return EL.updateValidateRule;case"stop":return EL.stopValidateRule}}start(e){return KA(this,null,function*(){let{room:o,schedule:a}=this.core,{assetsPath:c=this.core.assetsPath}=e;if(!c)throw new Ro({code:vo.INVALID_PARAMETER,message:"you need to deploy the assets of the npm package and set assetsPath param in TRTC.create()"});if(this.core.validateSourceNode(),yield this.preload("".concat(c,"/denoiser-wasm").concat(fM()?"":"-nosimd",".js")),!this.workletNode){let d=String(Date.now()).slice(0,-3),{auth:C,sign:y,status:S,message:b}=yield function(V,J){return KA(this,arguments,function(gA,CA){let{sdkAppId:MA,userId:ee,userSig:Be,timestamp:Pe}=CA;return function*(){try{let{data:{errCode:Me,errMsg:fi,sign:Ge,status:dt}}=yield gA.getAbilityConfig(MA,gA.ScheduleRequestType.AUDIO_AI_AUTH,{sdkAppId:MA,userId:ee,userSig:Be,timestamp:Pe});if(dt==="1")return{auth:!0,sign:Ge,status:dt,message:fi};let Ci=xd(MA)?"https://trtc.io/document/42734?platform=web&product=rtcengine&menulabel=coresdk":"https://cloud.tencent.com/document/product/647/44247",yi="Init RTCAIDenoiser failed.",Yo="";switch(Me){case 1:Yo="Please check your params.";break;case 2:Yo="You need to buy packages. Refer to: ".concat(Ci);break;case 3:Yo="Server is invalid. Please contact our engineer. ";break;case 4:Yo="Your packages is not active. Refer to: ".concat(Ci);break;case 5:Yo="Your packages is expired. Refer to: ".concat(Ci);break;case 6:Yo="Your version is not supported."}return{auth:!1,status:dt,message:fi?"".concat(yi," Reason: ").concat(fi,". ").concat(Yo):"".concat(yi,", ").concat(Yo)}}catch(Me){return{auth:!1,status:"0",message:"Init RTCAIDenoiser failed. All requests failed. ".concat(Me)}}}()})}(a,Bo(pi({},e),{timestamp:d}));if(!C)throw this.log.info("RTCAIDenoiser: ".concat(e.userId," auth result: ").concat(C,". Message: ").concat(b)),new Ro({code:vo.INVALID_PARAMETER,message:b});this.workletNode=new AudioWorkletNode(this.audioContext,"trtc-denoiser-processor",{numberOfInputs:1,numberOfOutputs:1}),this.workletNode.port.postMessage({type:"init",data:{sdkAppId:String(e.sdkAppId),userId:e.userId,timestamp:d,sign:y,status:S}}),this.workletNode.port.onmessage=V=>{var J;let{data:gA}=V;if(gA.type==="cost"){let CA=gA?.max>20?"warn":gA?.max>10?"info":"debug";this.log[CA]("avg cost: ".concat(gA.value," max: ").concat(gA?.max,"(").concat(eb(new Date(gA?.maxCostTimestamp)),") hist: ").concat((J=gA?.hist)==null?void 0:J.join(" ")))}else gA.type==="log"&&this.log[gA.logLevel]("".concat(gA.value))}}this.updateConfig(e),this.workletNode.port.postMessage({type:"enable"}),o.audioManager.addDenoiser(this.workletNode),o.sendAbilityStatus({ai_denoise:1})})}update(e){return KA(this,null,function*(){this.updateConfig(e)})}stop(){return KA(this,null,function*(){if(!this.workletNode)return;let{room:e}=this.core;this.workletNode.port.postMessage({type:"disable"}),yield e.audioManager.removeDenoiser(this.workletNode)})}updateConfig(e){if(!this.workletNode)return;let o=!1;Ye(e.mode)||(e.mode===0?this.config.enableFarFieldReduce=!1:e.mode===1&&(this.config.enableFarFieldReduce=!0),o=!0),Ye(e.farFieldReduceThreshold)||(this.config.farFieldReduceThreshold=e.farFieldReduceThreshold,o=!0),o&&this.workletNode.port.postMessage({type:"setConfig",data:this.config})}destroy(){this.workletNode&&(this.workletNode.port.onmessage=null)}};Y(q2,"updateValidateRule",{type:"object",properties:{mode:{type:"number",required:!1,values:[0,1]},farFieldReduceThreshold:{type:"number",required:!1,min:0,max:1}}}),Y(q2,"stopValidateRule",{type:"object"}),Y(q2,"Name","AIDenoiser");var wtA=q2,_tA=gc(Hl(),1),TtA=class extends _tA.EventEmitter{constructor(){super(),Y(this,"observer"),Y(this,"state","nominal"),this.onPressureChange=this.onPressureChange.bind(this)}get stateNum(){switch(this.state){case"nominal":return 1;case"fair":return 2;case"serious":return 3;case"critical":return 4}}start(){return KA(this,null,function*(){if(!this.observer)try{"PressureObserver"in window&&!Ja&&(this.observer=new PressureObserver(this.onPressureChange),yield this.observer.observe("cpu",{sampleInterval:2e3}))}catch(A){sn.uploadEvent({log:"stat-pressure-detector-start-failed",error:A})}})}onPressureChange(A){let e=this.stateNum,o=A[A.length-1];this.state=o.state,(this.stateNum>3||e>3)&&QA.info("".concat(o.source,": ").concat(o.state)),this.emit("state-changed",{type:o.source,state:this.state})}destroy(){var A;try{(A=this.observer)==null||A.disconnect(),this.observer=null}catch(e){sn.uploadEvent({log:"stat-pressure-detector-destroy-failed",error:e})}}},w5=new TtA,GK=0,bK=class j6{constructor(e){this.core=e,Y(this,"log"),Y(this,"_seiMessageList",[]),Y(this,"_smallSeiMessageList",[]),Y(this,"_subStreamSeiMessageList",[]),GK++,this.log=e.log.createChild({id:"".concat(this.getAlias()).concat(GK)}),this.log.info("[sei] created id=".concat(this.getAlias()).concat(GK)),this.encode=this.encode.bind(this),this.decode=this.decode.bind(this)}encode(e){let{frame:o,mediaType:a}=e;try{return p5({frame:o,seiMessageList:a===8?this._smallSeiMessageList:a===2?this._subStreamSeiMessageList:this._seiMessageList})}catch(c){this.log.warn(c)}return o}decode(e){let{frame:o,track:a}=e;return m5({frame:o,onSEI:c=>{c.forEach(d=>{a!=null&&a.userId?this.core.trtc.emit(Hi.SEI_MESSAGE,{seiPayloadType:d.seiPayloadType,data:d.seiPayload.buffer,userId:a.userId,streamType:a.mediaType===2?"sub":"main"}):this.core.innerEmitter.emit(this.core.INNER_EVENT.SEI_MESSAGE,{room:this.core.room,nalu:d})})}})}destroy(){this.log.debug("destroy"),this.stop(),delete this.core}getValidateRule(e){switch(e){case"start":case"update":case"stop":return{type:"object"}}}start(){this.core.room.videoManager.addEncodeProcessor({processor:Yp?this.encode:p5,type:2}),this.core.room.videoManager.addDecodeProcessor({processor:Yp?this.decode:m5,type:2})}stop(){this.core.room.videoManager.removeEncodeProcessor({type:2}),this.core.room.videoManager.removeDecodeProcessor({type:2})}update(e){let{buffer:o,options:a}=e;var c;let d=[a.seiPayloadType,o],C=!!a.small;a.toSubStream?this._subStreamSeiMessageList.push(d):(this._seiMessageList.push(d),C&&this._smallSeiMessageList.push(d)),(c=this.core.room.scriptTransformWorker)==null||c.postMessage({type:"sei",data:d,isMain:!a.toSubStream,small:C})}getName(){return j6.Name}getAlias(){return"sei"}getGroup(){return"sei"}};Y(bK,"autoStart",!0),Y(bK,"Name","SEI");var K2,NtA=bK,GtA=0,kK=class W6{constructor(e){this.core=e,Y(this,"_core"),Y(this,"log"),Y(this,"dialog"),this._core=e,this.log=e.log.createChild({id:"".concat(this.getAlias()).concat(++GtA)}),this.log.info("created")}getName(){return W6.Name}getAlias(){return"dm"}getGroup(){return"dm"}getValidateRule(e){switch(e){case"start":return{name:"StartDebugOptions",required:!1};case"update":return{name:"UpdateDebugOptions",required:!1};case"stop":return{name:"StopDebugOptions",required:!1}}}start(){return KA(this,null,function*(){var e;!new URLSearchParams(location.search).has("trtcDebug")&&((e=window.sessionStorage)==null?void 0:e.getItem("TRTC_ENABLE_DEBUG_PLUGIN"))!=="true"||(yield this.openDebugDiaLog())})}update(e){return KA(this,arguments,function(o){var a=this;let{visible:c}=o;return function*(){c?yield a.openDebugDiaLog():a.closeDebugDiaLog()}()})}stop(){this.closeDebugDiaLog()}destroy(){this.stop()}openDebugDiaLog(){return KA(this,null,function*(){var e;if(!this.dialog)try{if(K2)yield K2;else{let o=new URLSearchParams(location.search).get("trtcDebugDialogPath")||((e=window.sessionStorage)==null?void 0:e.getItem("TRTC_DEBUG_DIALOG_PATH"))||"https://unpkg.com/".concat("trtc-sdk-v5","@").concat(Pd,"/assets/debug-dialog.js");K2=this._core.fileDownloader.loadScript(o),yield K2}this.dialog=new TRTCDebugDialog(this._core,this.log),this._core.kvStatManager.addSuccessEvent({key:592705})}catch(o){this._core.kvStatManager.addFailedEvent({key:592705}),this.log.error("load debug dialog script failed: ",JSON.stringify(o))}})}closeDebugDiaLog(){this.dialog&&(this.dialog.closeDialog(),this.dialog=null)}};Y(kK,"Name","Debug"),Y(kK,"autoStart",!0);var btA=kK,_5=A=>{switch(A){case"webCodecs":return 504703;case"wasm":return 504704}throw new Error("decoder type not supported")},T5=class{constructor(A,e,o){Y(this,"trackDoneOB"),Y(this,"startOB"),Y(this,"stopOB"),Y(this,"inputFrameCount",0),Y(this,"decodedFrameCount",0),Y(this,"type","auto"),Y(this,"config"),Y(this,"decoder"),Y(this,"_decodeSink");let{kvStatManager:a,trtc:c}=A;this.config=o.config,this.trackDoneOB=ga(e,Zs.INIT),this.stopOB=lQ(),this.startOB=lQ(),o.type==="auto"?this.type="webCodecs":this.type=o.type;let d=lQ();Qa(this.startOB,nK(0),R2(C=>{let y=this.pipe(e);return d.next("STARTING"),e.log.info("decoder type: ".concat(this.type)),Qa(y,rE(this.stopOB),hl(()=>{},S=>{e.log.error(S),a.addFailedEvent({key:_5(this.type),error:S}),C>4?this.startOB.error(S):this.startOB.next(C+1)})),Qa(y,Z0(1),V4(gK))}),rE(this.stopOB),hl(()=>{e.player.setOutput(),d.next("STARTED")},C=>{d.next("FAILED")},()=>{a.addSuccessEvent({key:_5(this.type)}),a.addSuccessEvent({key:504702})}))}mock(A){this._decodeSink?this._decodeSink.error(A):this.startOB.next(0)}close(A){this.stopOB.next(A)}pipe(A){return bk()(e=>KA(this,null,function*(){this._decodeSink=e,e.defer(()=>{var a;(a=this.decoder)==null||a.close()});let{type:o}=this;try{o==="webCodecs"&&(this.decoder=new AudioDecoder({error:a=>{A.log.error(a),e.error(4)},output:a=>{this.decodedFrameCount++,e.next(a),A.player.write(a)}})),this.decoder.configure(this.config)}catch(a){A.log.error(a),e.error(o==="webCodecs"?2:6)}}))}decodeFrame(A){var e;this.inputFrameCount++,((e=this.decoder)==null?void 0:e.state)==="configured"&&this.decoder.decode(new EncodedAudioChunk({data:A.data,timestamp:A.timestamp,type:"key"}))}},ktA={type:"object"},N5=class s3{constructor(e){this.core=e,Y(this,"log"),Y(this,"contextMap",new Map),Y(this,"decodeProcessorMap",new WeakMap),this.log=e.log.createChild({id:"".concat(this.getAlias())})}getAlias(){return s3.Name}getGroup(e){return e.track.userId+e.track.streamType}getName(){return s3.Name}getValidateRule(e){return ktA}start(e){let{track:o}=e;this.decodeProcessorMap.set(o,this.decode(e)),this.core.room.audioManager.addDecodeProcessor({processor:a=>{let{frame:c,track:d}=a;return this.decodeProcessorMap.has(d)?this.decodeProcessorMap.get(d)({frame:c,track:d}):c},type:3})}decode(e){return o=>{let{frame:a,track:c}=o;if(c!==e.track)return a;if(this.contextMap.has(c))return this.contextMap.get(c).decodeFrame(a);let d=new T5(this.core,c,e);return Qa(d.trackDoneOB,Z0(1),hl(()=>{this.core.clearStarted(this,this.getGroup(e)),this.stop({track:c})})),this.contextMap.set(c,d),d.decodeFrame(a)}}stop(e){let{track:o}=e,a=this.contextMap.get(o);a&&(a.close("stop"),this.contextMap.delete(o),this.contextMap.size===0&&this.core.room.audioManager.removeDecodeProcessor({type:3}))}update(e){let o=this.contextMap.get(e.track);if(o){if(e.type==="mock")return void o.mock(10);o.close("update"),this.contextMap.set(e.track,new T5(this.core,e.track,e))}}};Y(N5,"Name","TRTCAudioDecoder");var G5=N5,LtA={rttPoorLimit:150,lossPoorLimit:20,rttGoodLimit:100,lossGoodLimit:10,fpsPoorLimit:5,cooldownTime:1e4,poorCount:3,goodCount:5,maxUpgradeFailCount:3},UtA=class{constructor(){Y(this,"log"),Y(this,"autoMode",{enabled:!1,instance:null,config:LtA,sortedStreamList:[],currentQualityIndex:0}),Y(this,"switchControl",{isInternal:!1,isSwitching:!1,lastSwitchTime:0,boundOnStatistics:null}),Y(this,"networkMetrics",{frameRate:0,rtt:0,loss:0}),Y(this,"counters",{rttUnder:0,lossUnder:0,downgradeCondition:0,upgradeFail:0}),Y(this,"onStatistics",A=>{var e,o;if(!this.autoMode.instance)return;let{config:a}=this.autoMode;if(this.networkMetrics.rtt=A.rtt,this.networkMetrics.loss=A.downLoss,this.counters.rttUnder=A.rttV.userId===d);if((o=y?.video)==null||!o.length)return;let S=C==="sub"?"sub":"big",b=y.video.find(V=>V.videoType===S);b?(this.networkMetrics.frameRate=b.frameRate||0,this.checkAndSwitchQuality()):this.log.warn("onStatistics: videoStat not found for userId=".concat(d,", streamType=").concat(C))}),this.log=QA.createLogger({id:"pqs"})}getCurrentPlayingStream(A){var e,o;let a=A,c=a._playbackQualityList;if(!c||c.length===0)return this.log.warn("getCurrentPlayingStream: streamList is empty"),null;for(let d of c){let C=A.room.remotePublishedUserMap.get(d.userId);if(!C)continue;let y=(e=d.streamType)!=null?e:"main";if((y==="sub"?C.remoteAuxiliaryTrack:C.remoteVideoTrack).isPlayCalled){let S=(o=a._remoteVideoConfigMap.get("".concat(d.userId,"_").concat(y)))==null?void 0:o.config;if(S)return{userId:d.userId,streamType:y,config:S}}}return null}switchPlaybackQuality(A){return KA(this,null,function*(){var e;let{trtcInstance:o,streamList:a,quality:c}=A;this.log.info("switchPlaybackQuality quality: ".concat(c,", streamList: ").concat(JSON.stringify(a)));let d=o;if(a&&a.length>0&&(d._playbackQualityList=a.map(MA=>{var ee;return Bo(pi({},MA),{streamType:(ee=MA.streamType)!=null?ee:"main"})})),c==="auto")return void(yield this.startAutoMode(o));if(this.autoMode.enabled&&c&&!this.switchControl.isInternal&&this.stopAutoMode(),!c)return;if(!d._playbackQualityList||d._playbackQualityList.length<=0)return void this.log.warn("switchPlaybackQuality: streamList is empty, please call with streamList first");let C=d._playbackQualityList.find(MA=>MA.name===c);if(!C)return void this.log.warn('switchPlaybackQuality: quality "'.concat(c,'" not found in streamList'));let y=this.getCurrentPlayingStream(o);if(this.log.info("currentPlaying userId: ".concat(y?.userId,", streamType: ").concat(y?.streamType)),!y)return;let S=(e=C.streamType)!=null?e:"main";if(y.userId===C.userId&&y.streamType===S)return void this.log.info("switchPlaybackQuality: already playing target stream");let b=pi({},y.config);b.streamType==="main"&&S==="main"&&(yield o.muteRemoteAudio(b.userId,!0));let V,J=new Promise(MA=>{V=MA}),gA=MA=>{MA.userId===C.userId&&MA.streamType===S&&MA.state==="PLAYING"&&MA.reason==="playing"&&V("success")};o.on(Hi.VIDEO_PLAY_STATE_CHANGED,gA);let CA=new Promise(MA=>setTimeout(()=>MA("timeout"),1e4));try{if(yield o.startRemoteVideo(Bo(pi({},y.config),{userId:C.userId,streamType:S,option:Bo(pi({},y.config.option),{isLiveStream:!0})})),(yield Promise.race([J,CA]))==="timeout"){this.log.error("switchPlaybackQuality: VIDEO_PLAY_STATE_CHANGED timeout, rollback");try{yield o.stopRemoteVideo({userId:C.userId,streamType:S})}catch(ee){this.log.warn("switchPlaybackQuality: rollback stopRemoteVideo failed",ee)}throw b.streamType==="main"&&S==="main"&&(yield o.muteRemoteAudio(b.userId,!1).catch(ee=>{this.log.warn("switchPlaybackQuality: rollback muteRemoteAudio failed",ee)})),new oi({code:lt.SUBSCRIPTION_TIMEOUT,message:Zo({key:So.SWITCH_PLAYBACK_QUALITY_TIMEOUT,data:{userId:C.userId}})})}let MA=o.stopRemoteVideo(b);b.streamType==="main"&&S==="main"?yield Promise.all([o.muteRemoteAudio(C.userId,!1).catch(ee=>{this.log.warn("muteRemoteAudio(new, false) failed",ee)}),MA]):yield MA,d._currentLiveUserId=C.userId,d._currentLiveStreamType=S}finally{o.off(Hi.VIDEO_PLAY_STATE_CHANGED,gA)}})}startAutoMode(A){return KA(this,null,function*(){if(this.autoMode.enabled)return void this.log.info("auto mode already enabled");let e=A;if(!e._playbackQualityList||e._playbackQualityList.length<=1)return void this.log.warn("startAutoMode: need at least 2 streams in streamList for auto mode");this.autoMode.enabled=!0,this.autoMode.instance=A,this.counters.rttUnder=0,this.counters.lossUnder=0,this.counters.downgradeCondition=0,this.counters.upgradeFail=0,this.switchControl.lastSwitchTime=0;let o=e._playbackQualityList||[];this.autoMode.sortedStreamList=[...o].sort((c,d)=>d.bitrate-c.bitrate),this.log.info("auto mode streams: ".concat(this.autoMode.sortedStreamList.map(c=>"".concat(c.name,"(").concat(c.bitrate,"kbps)")).join(" > ")));let a=this.getCurrentPlayingStream(A);if(a){let{userId:c,streamType:d}=a,C=this.autoMode.sortedStreamList.findIndex(y=>{var S;return y.userId===c&&((S=y.streamType)!=null?S:"main")===d});this.autoMode.currentQualityIndex=C>=0?C:0}else this.autoMode.currentQualityIndex=0;this.switchControl.boundOnStatistics=this.onStatistics,A.on(Hi.STATISTICS,this.switchControl.boundOnStatistics),this.log.info("auto mode started")})}stopAutoMode(){this.autoMode.enabled&&(this.autoMode.instance&&this.switchControl.boundOnStatistics&&this.autoMode.instance.off(Hi.STATISTICS,this.switchControl.boundOnStatistics),this.switchControl.boundOnStatistics=null,this.autoMode.enabled=!1,this.autoMode.instance=null,this.autoMode.sortedStreamList=[],this.autoMode.currentQualityIndex=0,this.counters.rttUnder=0,this.counters.lossUnder=0,this.counters.downgradeCondition=0,this.counters.upgradeFail=0,this.networkMetrics.frameRate=0,this.networkMetrics.rtt=0,this.networkMetrics.loss=0,this.switchControl.isSwitching=!1,this.log.info("auto mode stopped"))}checkAndSwitchQuality(){var A;if(!this.autoMode.enabled||!this.autoMode.instance||this.switchControl.isSwitching)return;let{config:e}=this.autoMode,o=Date.now()-this.switchControl.lastSwitchTime0,C=this.networkMetrics.frameRate<=e.fpsPoorLimit,y=this.networkMetrics.loss>=e.lossPoorLimit||this.networkMetrics.rtt>=e.rttPoorLimit,S=C&&y;this.counters.downgradeCondition=S?this.counters.downgradeCondition+1:0;let b=this.counters.rttUnder>=e.goodCount&&this.counters.lossUnder>=e.goodCount,V=this.counters.upgradeFail{if(V.remoteAudioTrack.isAvailable){if(S.get(V.userId))return;let J=y.getPCM(gA=>{e.emit(Hi.AUDIO_FRAME,gA)},V.userId);S.set(V.userId,J)}});else{if(S.get(a))return;let V=y.getPCM(J=>{e.emit(Hi.AUDIO_FRAME,J)},a);S.set(a,V)}else if(a==="*")e.room.remotePublishedUserMap.forEach(V=>{if(V.remoteAudioTrack.isSubscribed){let{userId:J}=V,gA=S.get(J);gA?.abort("disable"),S.delete(J)}});else{let V=S.get(a);V?.abort("disable"),S.delete(a)}})}resumeRemotePlayer(A){return KA(this,null,function*(){if(A.userId==="*"){let o=[];return A.trtcInstance.room.remotePublishedUserMap.forEach(a=>{let{remoteAudioTrack:c,remoteVideoTrack:d,remoteAuxiliaryTrack:C}=a;A.streamType?A.streamType==="main"?(c.isAvailable&&o.push(c.player.resume()),d.isAvailable&&o.push(d.player.resume())):C.isAvailable&&o.push(C.player.resume()):(c.isAvailable&&o.push(c.player.resume()),d.isAvailable&&o.push(d.player.resume()),C.isAvailable&&o.push(C.player.resume()))}),Promise.all(o)}let e=A.trtcInstance.room.remotePublishedUserMap.get(A.userId);if(e)return A.streamType==="main"?Promise.all([e.remoteAudioTrack.player.resume(),e.remoteVideoTrack.player.resume()]):e.remoteAuxiliaryTrack.player.resume()})}pauseRemotePlayer(A){if(A.userId==="*")A.trtcInstance.room.remotePublishedUserMap.forEach(e=>{let{remoteAudioTrack:o,remoteVideoTrack:a,remoteAuxiliaryTrack:c}=e;A.streamType?A.streamType==="main"?(o.isAvailable&&o.player.pause(),a.isAvailable&&a.player.pause(!1)):c.isAvailable&&c.player.pause(!1):(o.isAvailable&&o.player.pause(),a.isAvailable&&a.player.pause(!1),c.isAvailable&&c.player.pause(!1))});else{let e=A.trtcInstance.room.remotePublishedUserMap.get(A.userId);e&&(A.streamType==="main"?(e.remoteAudioTrack.player.pause(),e.remoteVideoTrack.player.pause(!1)):e.remoteAuxiliaryTrack.player.pause(!1))}}requestPictureInPicture(A){let e=[...A.trtcInstance.room.remotePublishedUserMap.values()].find(o=>o.remoteVideoTrack.isAvailable);return e?A.enable?e.remoteVideoTrack.player.enterPictureInPicture():e.remoteVideoTrack.player.exitPictureInPicture():Promise.reject(new oi({code:lt.INVALID_OPERATION,message:"no available remote video"}))}requestFullScreen(A){let e=[...A.trtcInstance.room.remotePublishedUserMap.values()].find(o=>o.remoteVideoTrack.isAvailable);return e?A.enable?e.remoteVideoTrack.player.enterFullscreen():e.remoteVideoTrack.player.exitFullscreen():Promise.reject(new oi({code:lt.INVALID_OPERATION,message:"no available remote video"}))}switchPlaybackQuality(A){return KA(this,null,function*(){let e=A.trtcInstance;return e._playbackQualitySwitcher||(e._playbackQualitySwitcher=new UtA),e._playbackQualitySwitcher.switchPlaybackQuality(A)})}prelink(A){return KA(this,null,function*(){let{trtcInstance:e}=A;return A.enable?e.room.prelink(A.sdkAppId,A.userId,A.userSig,zk.frameWorkType,A.roomId,A.strRoomId):e.room.closePrelink()})}};di([X4({name:"options",type:"object",required:!0,properties:{enable:{required:!0,type:"boolean"},userId:{required:!0,type:"string"},sampleRate:{type:"number",values:[8e3,16e3,32e3,44100,48e3]},channelCount:{type:"number",values:[1,2]},port:{type:"messageport"}}})],LK.prototype,"enableAudioFrameEvent"),di([X4({name:"options",type:"object",required:!0,properties:{enable:{required:!0,type:"boolean"},userId:{required:!1,type:"string"},sdkAppId:{required:!1,type:"number"},userSig:{required:!1,type:"string"},roomId:{required:!1,type:"number"},strRoomId:{required:!1,type:"string"}}})],LK.prototype,"prelink");var FtA=new LK,OtA=gc(Hl(),1),PtA=class extends OtA.EventEmitter{constructor(){super(),Y(this,"states",{}),Y(this,"permissionChangeHandler"),Y(this,"log"),this.log=QA.createLogger({id:"pm"}),this.permissionChangeHandler=()=>{var A,e;this.emit("permission-state-change",{camera:(A=this.states.camera)==null?void 0:A.state,microphone:(e=this.states.microphone)==null?void 0:e.state})}}request(A){return KA(this,null,function*(){if(this.log.info("request ".concat(A.join(", "))),A.length===0)return Promise.resolve();(yield navigator.mediaDevices.getUserMedia({video:A.includes("camera"),audio:A.includes("microphone")})).getTracks().forEach(e=>e.stop())})}get(A){return KA(this,null,function*(){try{return this.states[A]||(this.states[A]=yield navigator.permissions.query({name:A}),this.states[A].addEventListener("change",this.permissionChangeHandler)),this.log.info("get ".concat(A," permission state: ").concat(this.states[A].state)),this.states[A].state}catch(e){return this.log.error("get ".concat(A," permission failed, error: ").concat(e instanceof Error?e.message:e)),null}})}destroy(){Object.values(this.states).forEach(A=>{A?.removeEventListener("change",this.permissionChangeHandler)}),this.states={}}},j2=new PtA,b5=0,Wk=new Set,Wl=null;nx(v5),jA.checkStorage();var Ss=class em extends Dq.EventEmitter{constructor(e,o){super(),Y(this,"_room"),Y(this,"_eventListened",new Set),Y(this,"_localVideoTrack",null),Y(this,"_localAudioTrack",null),Y(this,"_localScreenTrack",null),Y(this,"_localScreenAudioTrack",null),Y(this,"_localVideoConfig",null),Y(this,"_localScreenConfig",null),Y(this,"_localAudioConfig",null),Y(this,"_remoteVideoConfigMap",new Map),Y(this,"_remoteAudioConfigMap",new Map),Y(this,"_remoteAudioVolumeMap",new Map),Y(this,"_remoteAudioMuteMap",new Map),Y(this,"_mediaTrackMap",new WeakMap),Y(this,"_log",QA.createLogger({id:"t".concat(++b5)})),Y(this,"_plugins",new Map),Y(this,"_networkQuality",null),Y(this,"_speakerId"),Y(this,"enterRoomParams"),Y(this,"_enableAutoSwitchWhenRecapturing",!0),Y(this,"_autoSubscribeDataChannel",!1),Y(this,"_playbackQualityList",[]),this._room=new e(pi({logger:this._log,frameWorkType:em.frameWorkType},o)),this._room.videoDecodeFallbackType=o.videoDecodeFallback,wr(o.enableAutoSwitchWhenRecapturing)&&(this._enableAutoSwitchWhenRecapturing=o.enableAutoSwitchWhenRecapturing),this._log.info("create() ".concat(JSON.stringify(o,(a,c)=>a==="plugins"?c.map(d=>d.Name):c))),Object.defineProperties(this,{dumpAudio:{enumerable:!1,value(a){return this._room.audioManager.dump(a)}}}),o.plugins&&o.plugins.forEach(a=>{this._use(a,o.assetsPath)}),this._use(RtA,o.assetsPath),this._use(MtA,o.assetsPath),this._use(wtA,o.assetsPath),this._use(G5,o.assetsPath),this._use(btA),o.enableSEI&&mk&&this._use(NtA),this._room.on("audio-volume",a=>{var c,d;!a.find(C=>C.userId==="")&&this._localAudioTrack&&a.push({userId:"",volume:Math.floor(100*((c=this._localAudioTrack.getInternalAudioLevelAfter3A())!=null?c:this._localAudioTrack.getAudioLevel())),floatVolume:(d=this._localAudioTrack.getInternalAudioLevelAfter3A())!=null?d:this._localAudioTrack.getInternalAudioLevel()}),o.volumeType===1&&a.forEach(C=>{var y;let S=C.userId===""?this._localAudioTrack:(y=this.room.remotePublishedUserMap.get(C.userId))==null?void 0:y.remoteAudioTrack;S&&(C.volume=S.dbVolume)}),o.enableDbVolume&&a.forEach(C=>{var y;let S=C.userId===""?this._localAudioTrack:(y=this.room.remotePublishedUserMap.get(C.userId))==null?void 0:y.remoteAudioTrack;S&&(C.volume=S.dbVolume)}),this.emit(Hi.AUDIO_VOLUME,{result:a.sort((C,y)=>y.volume-C.volume)})}),this._room.videoManager.on("error",a=>{this._log.error(new Ro({code:vo.OPERATION_FAILED,extraCode:5504,message:a.message,originError:a}))}),this._listenEvents(),this._initActiveSpeaker(),((a,c)=>{let{emit:d}=a;a.emit=function(){for(var C=arguments.length,y=new Array(C),S=0;S{let S=[],b=[],V=[],J=0;self.onmessage=gA=>{switch(gA.data.type){case"sei":gA.data.isMain?(S.push(gA.data.data),gA.data.small&&V.push(gA.data.data)):b.push(gA.data.data);break;case"ntp-offset":J=gA.data.data}},self.onrtctransform=gA=>{let{options:CA}=gA.transformer,MA=CA.isReceiver?nz({userId:CA.userId,streamType:CA.streamType,isAudio:CA.isAudio}):sz({getNtpTime:()=>Date.now()+J,isAudio:CA.isAudio,isMain:CA.isMain,seiMessageList:CA.isMain?CA.small?V:S:b});gA.transformer.readable.pipeThrough(MA).pipeTo(gA.transformer.writable)}},")();").concat(a,"})()"),d=new Blob([c],{type:"text/javascript"}),C=URL.createObjectURL(d),y=new Worker(C);return URL.revokeObjectURL(C),y}var az,Aj=class{constructor(A){Y(this,"audioPlayer"),Y(this,"videoPlayer"),Y(this,"log"),this.audioPlayer=A.audioPlayer,this.videoPlayer=A.videoPlayer,this.log=A.log.createChild({id:"pip"}),this.videoPlayer.on(fo.USER_RESUME_IN_PIP_OR_FULL_SCREEN,this.handleUserResumeInPIPOrFullScreen,this),this.videoPlayer.on(fo.USER_PAUSE_IN_PIP_OR_FULL_SCREEN,this.handleUserPauseInPIPOrFullScreen,this),this.videoPlayer.on(fo.ENTER_PICTURE_IN_PICTURE,this.handleEnterPIPOrFullScreen,this),this.videoPlayer.on(fo.ENTER_FULL_SCREEN,this.handleEnterPIPOrFullScreen,this),this.videoPlayer.on(fo.LEAVE_PICTURE_IN_PICTURE,this.handleLeavePIP,this),this.videoPlayer.on(fo.LEAVE_FULL_SCREEN,this.handleLeaveFullScreen,this),this.videoPlayer.on(fo.VOLUME_CHANGE,this.handleVolumeChange,this)}handleUserResumeInPIPOrFullScreen(){this.audioPlayer.isPaused&&(this.log.warn("resume audio in ".concat(this.videoPlayer.isPictureInPicture()?"pip":"fullscreen")),this.audioPlayer.doResume()),Ha&&oy&&this.videoPlayer.resetSrcObjectToReplay()}handleUserPauseInPIPOrFullScreen(){this.audioPlayer.isPaused||(this.log.warn("pause audio in ".concat(this.videoPlayer.isPictureInPicture()?"pip":"fullscreen")),this.audioPlayer.doPause())}handleEnterPIPOrFullScreen(){this.videoPlayer.element&&this.audioPlayer.muted!==this.videoPlayer.element.muted&&(this.log.warn("sync video muted to ".concat(this.audioPlayer.muted," when enter ").concat(this.videoPlayer.isPictureInPicture()?"pip":"fullscreen")),this.videoPlayer.element.muted=this.audioPlayer.muted)}handleLeavePIP(){this.audioPlayer.isPaused&&!this.audioPlayer.isPausedByUserCall&&(this.log.warn("resume after leave pip"),this.audioPlayer.doResume()),this.videoPlayer.isPaused&&!this.videoPlayer.isPausedByUserCall&&(this.log.warn("resume video after leave pip"),this.videoPlayer.doResume())}handleLeaveFullScreen(){this.audioPlayer.isPaused&&!this.audioPlayer.isPausedByUserCall&&(this.log.warn("resume audio after leave fullscreen"),this.audioPlayer.doResume()),this.videoPlayer.isPaused&&!this.videoPlayer.isPausedByUserCall&&(this.log.warn("resume video after leave fullscreen"),Ha&&oy?this.videoPlayer.resetSrcObjectToReplay():this.videoPlayer.doResume())}handleVolumeChange(A){A.muted!==void 0&&this.audioPlayer.muted!==A.muted&&(this.log.warn("sync audio muted to ".concat(A.muted," in ").concat(this.videoPlayer.isPictureInPicture()?"pip":"fullscreen")),this.audioPlayer.setMuted(A.muted))}destroy(){this.videoPlayer.off(fo.USER_RESUME_IN_PIP_OR_FULL_SCREEN,this.handleUserResumeInPIPOrFullScreen,this),this.videoPlayer.off(fo.USER_PAUSE_IN_PIP_OR_FULL_SCREEN,this.handleUserPauseInPIPOrFullScreen,this),this.videoPlayer.off(fo.ENTER_PICTURE_IN_PICTURE,this.handleEnterPIPOrFullScreen,this),this.videoPlayer.off(fo.ENTER_FULL_SCREEN,this.handleEnterPIPOrFullScreen,this),this.videoPlayer.off(fo.LEAVE_PICTURE_IN_PICTURE,this.handleLeavePIP,this),this.videoPlayer.off(fo.LEAVE_FULL_SCREEN,this.handleLeaveFullScreen,this),this.videoPlayer.off(fo.VOLUME_CHANGE,this.handleVolumeChange,this)}},gz=!1;function ciA(A){var e=this;let{TRTC:o,room:a,errorModule:c,assetsPath:d}=A;return{TRTC:o,LocalMixVideoTrack:HK,LocalVideoTrack:EQ,LocalScreenTrack:xM,room:a,assetsPath:d,fileDownloader:$K,innerEmitter:F,INNER_EVENT:sA,constants:_x,environment:u2,utils:w5,eventLogger:sn,log:this.room.getLogger(),loggerManager:QA,errorModule:c,kvStatManager:Ai,rtcDectection:te,trtc:this,rx:o5,enums:ke,schedule:j5,getDevices:H2,initVisionTaskRegistry:function(C,y){let S=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"/mediapipe/vision.js";return KA(e,null,function*(){!window.VisionTaskRegistry&&!gz&&(gz=!0,az=$K.loadScript("".concat(C,"/").concat(S).replace(/([^:]\/)\/+/g,"$1"))),yield az,yield(yield window.VisionTaskRegistry.getInstance(C)).preloadModels(y)})},audioContext:UI(),deviceDetector:Pc,AudioPlayer:TK,RemoteAudioPlayer:X4,VideoPlayer:vo,showAutoPlayDialog:xC,Timer:Tr,clearStarted:(C,y)=>{let S=C.getAlias(),b=aL.instances.get(this);if(b)if(y){let V=b.get(S+y);if(!V)return;V.started=!1}else b.forEach((V,J)=>{J.startsWith(S)&&(V.started=!1)})},startGetPCM:WK,createAudioNode:Y2,getNetworkTimeOffset:vx,validateSourceNode:()=>{var C;if(er&&((C=this.room.audioManager._localAudioPipline)==null||!C.source.node))throw new wo({code:Ro.DEVICE_ERROR,extraCode:5310,message:"The audio processing plugin cannot be used due to the microphone's sampling rate is not 48KHz in Firefox. Please switch to another browser such as Chrome."})},createScriptTransformWorker:rz,AVPlayerStateSyncManager:Aj,PlayerEvent:fo}}var u_=new WeakMap,cz="5.15.3-beta.12";function du(){for(var A=arguments.length,e=new Array(A),o=0;ofunction(){for(var d=arguments.length,C=new Array(d),y=0;yfunction(){for(var d=arguments.length,C=new Array(d),y=0;yjf(V)?XS(V):Yn(V)?V:Cg(V))},value:o}})}else if(!Je(e.type)&&Cg(o)!==e.type)throw new wo(C(5002));if(e.allowEmpty===!1){let b=bn(o)&&(o===0||Number.isNaN(o)),V=Yn(o)&&o.trim()==="";if(b||V)throw new wo(C(5003))}if(e.notLessThanZero&&bn(o)&&o<0)throw new wo(C(5006));if(!Je(e.min)&&bn(o)&&oe.max)throw new wo(C(5008));if(Yn(e.instanceOf)){if(!o||o._name!==e.instanceOf)throw new wo(C(5004))}else if(Ra(e.instanceOf)&&!(o instanceof e.instanceOf))throw new wo(C(5004));if(Array.isArray(e.values)&&!e.values.includes(o))throw new wo(C(5005));let{properties:y}=e;aE(y)&&WE(o)&&Object.keys(y).forEach(b=>{E1.call(this,{rule:y[b],value:o&&o[b],key:"".concat(b),fnName:c,className:d})});let{arrayItem:S}=e;aE(S)&&wa(o)&&o.forEach((b,V)=>{E1.call(this,{rule:S,value:b,key:"".concat(a,"[").concat(V,"]"),fnName:c,className:d})}),Ra(e.validate)&&e.validate.call(this,o,a,c,d,this)}var liA=0;function ma(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{getRemoteId:e=()=>"",replaceArg:o,getKVReportKey:a,ignoreLog:c,ignoreErrorLog:d}=A;return jr((C,y)=>function(){for(var S=arguments.length,b=new Array(S),V=0;V0?$A.info("".concat(y,"() ").concat(he," ").concat(JSON.stringify(b,(yi,Ge)=>MA(yi,Ge,["userSig","privateMapKey"])))):$A.info("".concat(y,"() ").concat(he));let Ye=a?a(...b):R2[y],Me=d?.(...b)||!1;try{let yi=C.apply(this,b),Ge=ko();if(Kf(yi)){let ht="".concat(y.includes("Plugin")?"".concat(((gA=(J=b[0]).getName)==null?void 0:gA.call(J))||""," "):" ");return yi.then(Ci=>($A.info("".concat(y,"() success ").concat(he," ").concat(ht).concat(e.call(this,...b))),Ai.addSuccessEvent({key:Ye,cost:ko()-Ge}),Ci)).catch(Ci=>{var Di;let Vo=(Ci=wo.convertFrom.call(this,Ci,y,b.length===1?b[0]:b)).extraCode||Ci.code,Jo=(Di=Ci.message)!=null&&Di.includes(Vo)?"":" code:".concat(Vo),Qn=Ci?.code===Ro.OPERATION_ABORT;throw Me||$A[Qn?"warn":"error"]("".concat(y,"() failed ").concat(he," ").concat(ht).concat(e.call(this,...b)," ").concat(Ci).concat(Jo," params: ").concat(JSON.stringify(b,MA))),Ai.addFailedEvent({key:Ye,error:Ci}),Ci})}return Ai.addSuccessEvent({key:Ye}),yi}catch(yi){let Ge=(yi=wo.convertFrom.call(this,yi,y)).extraCode||yi.code,ht=(CA=yi.message)!=null&&CA.includes(Ge)?"":" code:".concat(Ge),Ci=yi?.code===Ro.OPERATION_ABORT;throw Me||$A[Ci?"warn":"error"]("".concat(y,"() failed ").concat(he," ").concat(yi).concat(ht," params: ").concat(JSON.stringify(b,MA))),Ai.addFailedEvent({key:Ye,error:yi}),yi}})}var tj,ij=A=>jr((e,o)=>function(a,c){return KA(this,null,function*(){let d=this._plugins.get(a);if(!d)throw this._log.error("plugin ".concat(String(a)," is not found")),new wo({code:Ro.OPERATION_ABORT,message:"plugin ".concat(String(a)," is not found"),fnName:o});if(Ra(d.constructor.isSupported)&&!d.constructor.isSupported())throw this._log.error("plugin ".concat(String(a)," is not supported")),new wo({code:Ro.ENV_NOT_SUPPORTED,message:"plugin ".concat(String(a)," is not supported"),extraCode:5210,fnName:o});return ej.call(this,d.getValidateRule(A),[c],o,"TRTC"),e.call(this,d,c)})}),oj=0,d1=class wL{constructor(e){this.core=e,Y(this,"log"),Y(this,"customAudioReferenceMap",new Map),Y(this,"audioRefId",0),Y(this,"audioContext",UI()),Y(this,"localAudioWorkletNode"),Y(this,"screenAudioWorkletNode"),Y(this,"mixNode"),Y(this,"silentNode"),oj+=1,this.log=e.log.createChild({id:"".concat(this.getAlias()).concat(oj)}),this.log.info("created id=".concat(this.getAlias()).concat(oj)),this.installEvent()}static getStartValidateRule(e){return{name:"options",required:!0,type:"object",properties:{sdkAppId:{type:"number",required:!0},userId:{type:"string",required:!0},userSig:{type:"string",required:!0}},validate(o,a,c,d){if(!e.room.audioManager.hasAudioTrack&&!e.room.audioManager.hasScreenAudioTrack)throw new wo({code:Ro.INVALID_OPERATION,extraCode:5106,fnName:c})}}}preload(e){return tj||(tj=this.doPreload(e)),tj}doPreload(e){return KA(this,null,function*(){let o=yield this.core.fileDownloader.download(e,{type:"blob"}),a=URL.createObjectURL(o);try{yield Vg(this.audioContext,a)}catch(c){this.log.error("preload audioProcessor failed. ".concat(c))}finally{URL.revokeObjectURL(a)}})}getName(){return wL.Name}getAlias(){return"ap"}getGroup(){return"ap"}getValidateRule(e){switch(e){case"start":return wL.getStartValidateRule(this.core);case"update":return wL.updateValidateRule;case"stop":return wL.stopValidateRule}}start(e){return KA(this,null,function*(){var o,a,c,d;let{room:C}=this.core,{sdkAppId:y,userId:S,userSig:b,assetsPath:V=this.core.assetsPath,audioReference:J,processLevel:gA,enableDump:CA,isLocalAudioNeedAudioProcess:MA=!0,isScreenAudioNeedAudioProcess:$A=!1}=e;if(this.core.room.audioManager.isLocalAudioNeedAudioProcess=MA,this.core.room.audioManager.isScreenAudioNeedAudioProcess=$A,!V)throw new wo({code:Ro.INVALID_PARAMETER,message:"you need to deploy the assets of the npm package and set assetsPath param in TRTC.create()"});if(this.core.validateSourceNode(),yield this.preload("".concat(V,"/audioProcessor-wasm.js")),MA&&!this.localAudioWorkletNode){let{sign:he,status:Ye,timestamp:Me}=yield this.getAuthData(y,S,b);this.localAudioWorkletNode=new AudioWorkletNode(this.audioContext,"trtc-audio-processor",{numberOfInputs:2,numberOfOutputs:1}),this.initWorkletNode(this.localAudioWorkletNode,"localAudio",y,S,Me,he,Ye,C)}if($A&&!this.screenAudioWorkletNode){let{sign:he,status:Ye,timestamp:Me}=yield this.getAuthData(y,S,b);this.screenAudioWorkletNode=new AudioWorkletNode(this.audioContext,"trtc-audio-processor",{numberOfInputs:2,numberOfOutputs:1}),this.initWorkletNode(this.screenAudioWorkletNode,"screenAudio",y,S,Me,he,Ye,C)}this.mixNode||(this.mixNode=this.audioContext.createGain(),this.mixNode.gain.value=1),this.silentNode||(this.silentNode=this.audioContext.createConstantSource(),this.silentNode.offset.setValueAtTime(0,this.audioContext.currentTime),this.silentNode.start()),(o=this.localAudioWorkletNode)==null||o.port.postMessage({type:"enable"}),(a=this.screenAudioWorkletNode)==null||a.port.postMessage({type:"enable"}),C.audioManager.addAudioProcessor(this.mixNode,this.silentNode,this.localAudioWorkletNode,this.screenAudioWorkletNode),Je(J)||J.forEach(he=>{this.customAudioReferenceMap.set(he,"o-".concat(this.audioRefId++)),this.core.room.audioManager.updateAudioReference({type:"add",audioReference:he,refId:"o-".concat(this.audioRefId++)})}),Je(gA)||(c=this.localAudioWorkletNode)==null||c.port.postMessage({type:"setConfig",data:{aecEnable:1,aecNlpLevel:gA}}),Je(CA)||(d=this.localAudioWorkletNode)==null||d.port.postMessage({type:"dump",data:{enable:CA}})})}update(e){return KA(this,null,function*(){var o,a,c;let{audioReference:d,enableDump:C,processLevel:y}=e;Je(d)||(this.customAudioReferenceMap.forEach((S,b)=>{this.customAudioReferenceMap.delete(b),this.core.room.audioManager.updateAudioReference({type:"remove",refId:S})}),d.forEach(S=>{this.customAudioReferenceMap.set(S,"o-".concat(this.audioRefId++)),this.core.room.audioManager.updateAudioReference({type:"add",audioReference:S,refId:"o-".concat(this.audioRefId++)})})),Je(y)||(o=this.localAudioWorkletNode)==null||o.port.postMessage({type:"setConfig",data:{aecEnable:1,aecNlpLevel:y}}),Je(C)||((a=this.localAudioWorkletNode)==null||a.port.postMessage({type:"dump",data:{enable:C}}),(c=this.screenAudioWorkletNode)==null||c.port.postMessage({type:"dump",data:{enable:C}}))})}stop(){return KA(this,null,function*(){var e,o;let{room:a}=this.core;(e=this.localAudioWorkletNode)==null||e.port.postMessage({type:"disable"}),(o=this.screenAudioWorkletNode)==null||o.port.postMessage({type:"disable"}),yield a.audioManager.removeAudioProcessor(this.localAudioWorkletNode,this.screenAudioWorkletNode)})}destroy(){this.localAudioWorkletNode&&(this.localAudioWorkletNode.port.onmessage=null),this.screenAudioWorkletNode&&(this.screenAudioWorkletNode.port.onmessage=null),this.uninstallEvent()}getAuthData(e,o,a){return KA(this,null,function*(){let c=String(Date.now()).slice(0,-3),{auth:d,sign:C,status:y,message:S}=yield function(b){return KA(this,arguments,function(V){let{sdkAppId:J,userId:gA,userSig:CA,timestamp:MA}=V;return function*(){let $A="".concat(function(Vo){let Jo=arguments.length>1&&arguments[1]!==void 0?arguments[1]:YA.MAIN;return"https://".concat(Am[Jo]||ZK(Vo,Jo),"/api/v1/audioAiAuth")}(J),"?sdkAppId=").concat(J,"&userId=").concat(gA,"&userSig=").concat(CA,"×tamp=").concat(MA),he=yield fetch($A),{data:{errCode:Ye,errMsg:Me,sign:yi,status:Ge}}=yield he.json();if(Ge==="1")return{auth:!0,sign:yi,status:Ge,message:Me};let ht=qd(J)?"https://trtc.io/document/42734?platform=web&product=rtcengine&menulabel=coresdk":"https://cloud.tencent.com/document/product/647/44247",Ci="Init RTCAudioProcessor failed.",Di="";switch(Ye){case 1:Di="Please check your params.";break;case 2:Di="You need to buy packages. Refer to: ".concat(ht);break;case 3:Di="Server is invalid. Please contact our engineer. ";break;case 4:Di="Your packages is not active. Refer to: ".concat(ht);break;case 5:Di="Your packages is expired. Refer to: ".concat(ht);break;case 6:Di="Your version is not supported."}return{auth:!1,status:Ge,message:Me?"".concat(Ci," Reason: ").concat(Me,". ").concat(Di):"".concat(Ci,", ").concat(Di)}}()})}({sdkAppId:e,userSig:a,userId:o,timestamp:c});if(!d)throw this.log.info("audioProcessor: ".concat(o," auth result: ").concat(d,". Message: ").concat(S)),new wo({code:Ro.INVALID_PARAMETER,message:S});return{sign:C,status:y,timestamp:c}})}initWorkletNode(e,o,a,c,d,C,y,S){e.port.postMessage({type:"init",data:{sdkAppId:String(a),userId:c,timestamp:d,sign:C,status:y}}),e.port.onmessage=b=>{var V;let{data:J}=b;switch(J.type){case"cost":let gA=J?.value>10?"info":"debug";return void this.log[gA]("".concat(o==="localAudio"?"":"[".concat(o,"] "),"avg cost: ").concat(J.value," max: ").concat(J?.max,"(").concat(hb(new Date(J?.maxCostTimestamp)),") hist: ").concat((V=J?.hist)==null?void 0:V.join(" ")));case"log":return void this.log[J.logLevel]("".concat(o==="localAudio"?"":"[".concat(o,"] ")).concat(J.value));case"dump":return void F.emit("265",{room:S,data:J.value,type:o==="localAudio"?"dump":"dump-screen-audio"});case"detectEcho":return void this.log.warn("".concat(o==="localAudio"?"":"[".concat(o,"] "),"detect echo: ").concat(Y0()?nQ():xp()))}}}handleLocalAudioStarted(e){return KA(this,null,function*(){var o;if(this.hitTest(e.room)&&((o=this.core.room.scheduleResult.config)==null?void 0:o.audioProcessor)===!0)try{yield this.core.trtc.startPlugin("AudioProcessor",{sdkAppId:this.core.room.sdkAppId,userId:this.core.room.userId,userSig:this.core.room.userSig}),this.log.warn("audio processor auto start success")}catch(a){this.log.warn("audio processor auto start failed, error: ".concat(a))}})}handleLocalAudioStopped(e){return KA(this,null,function*(){var o;!this.hitTest(e.room)||((o=this.core.room.scheduleResult.config)==null?void 0:o.audioProcessor)!==!0||(yield this.core.trtc.stopPlugin("AudioProcessor"))})}installEvent(){this.core.innerEmitter.on("104",this.handleLocalAudioStarted,this),this.core.innerEmitter.on("114",this.handleLocalAudioStopped,this)}uninstallEvent(){this.core.innerEmitter.off("104",this.handleLocalAudioStarted,this),this.core.innerEmitter.off("114",this.handleLocalAudioStopped,this)}hitTest(e){return e===this.core.room}};Y(d1,"updateValidateRule",{type:"object"}),Y(d1,"stopValidateRule",{type:"object"}),Y(d1,"Name","AudioProcessor");var IiA=d1,sj=0,uiA=class{constructor(A,e){Y(this,"audioObjectURL"),Y(this,"player"),Y(this,"publisher"),Y(this,"mixInput"),this.mixInput=new H4(e),A.url?(this.player=new Audio(A.url),this.player.crossOrigin="anonymous",this.publisher=new Audio(A.url),this.publisher.crossOrigin="anonymous",this.mixInput.replaceSource(this.publisher)):this.mixInput.replaceSource(A.track),this.mixInput.connect()}updateSettings(A){this.player&&(Je(A.volume)||(this.volume=A.volume),Je(A.loop)||(this.loop=A.loop),Je(A.playbackRate)||(this.playbackRate=A.playbackRate))}updateListener(A){if(this.player){if(A.onDurationChange){let{onDurationChange:e}=A;this.player.ondurationchange=o=>{e(o.target.duration)}}if(A.onTimeUpdate){let e=A.onTimeUpdate,{player:o}=this;o.ontimeupdate=()=>{e(o.currentTime,o.duration)}}A.onEnded&&(this.player.onended=A.onEnded)}}reload(A){return KA(this,null,function*(){if(A.url){let e=yield $K.download(A.url,{retries:3,type:"blob"});this.audioObjectURL&&URL.revokeObjectURL(this.audioObjectURL),this.audioObjectURL=URL.createObjectURL(e),this.player&&this.publisher?(this.player.src=this.audioObjectURL,this.publisher.src=this.audioObjectURL):(this.player=new Audio(this.audioObjectURL),this.player.crossOrigin="anonymous",this.publisher=new Audio(this.audioObjectURL),this.publisher.crossOrigin="anonymous",this.mixInput.replaceSource(this.publisher),this.updateListener(A),this.updateSettings(A))}else this.mixInput.replaceSource(A.track)})}reset(){this.seek(0),this.mixInput.connect()}seek(A){this.player&&(A<0&&A>this.player.duration||(this.player.currentTime=A,this.publisher.currentTime=A))}play(){var A,e;return Promise.all([(A=this.player)==null?void 0:A.play(),(e=this.publisher)==null?void 0:e.play()])}pause(){var A,e;(A=this.player)==null||A.pause(),(e=this.publisher)==null||e.pause()}stop(){var A;(A=this.player)==null||A.pause(),this.mixInput.disconnect()}setOperation(A){A==="pause"&&this.pause(),A==="resume"&&(this.pause(),this.play()),A==="stop"&&(this.pause(),this.seek(0))}set volume(A){!this.player||!this.publisher||(this.player.volume=A,this.publisher.volume=A)}set loop(A){!this.player||!this.publisher||(this.player.loop=A,this.publisher.loop=A)}set playbackRate(A){!this.player||!this.publisher||(this.player.playbackRate=A,this.publisher.playbackRate=A)}};function E_(A,e){if(e&&typeof e!="function")throw new wo({code:Ro.INVALID_PARAMETER,message:"start audioMixer plugin: param ".concat(A," should be a function.")})}var cL=class _L{constructor(e){this.core=e,Y(this,"log"),Y(this,"mixedMusicMap",new Map),Y(this,"cacheMusicMap",new Map),sj+=1,this.log=e.log.createChild({id:"".concat(this.getAlias()).concat(sj)}),this.log.info("created id=".concat(this.getAlias()).concat(sj))}getName(){return _L.Name}getAlias(){return"ax"}getGroup(e){return e?.id}getValidateRule(e){switch(e){case"start":return _L.startValidateRule;case"update":return _L.updateValidateRule;case"stop":return _L.stopValidateRule}}start(e){return KA(this,null,function*(){let{room:o}=this.core;this.core.validateSourceNode(),this.log.info("add music source, id: ".concat(e.id," url: ").concat(e.url,", track: ").concat(e.track));let{id:a,url:c}=e;if(this.mixedMusicMap.has(a))return;let d=this.cacheMusicMap.get(a);d?e.url?d.reset():(d.mixInput.replaceSource(e.track),d.mixInput.connect()):(d=new uiA(e,o.audioManager),this.cacheMusicMap.set(a,d)),d.updateListener(e),d.updateSettings(e);try{yield d.play()}catch(C){yield this.handleAutoPlayFailed(d,e,C)}this.mixedMusicMap.set(a,d),d.mixInput.source.node&&this.core.room.audioManager.updateAudioReference({type:"add",audioReference:d.mixInput.source.node,refId:"ax-".concat(a)}),this.log.info("start mix audio track ".concat(a," success.")),Ai.addEnum({key:502700,value:3}),this.kvUpload(e)})}handleAutoPlayFailed(e,o,a){return KA(this,null,function*(){if(a.name==="NotSupportedError")this.log.error("play failed, try to reload source. error: ".concat(a)),yield e.reload(o),yield e.play();else{if(a.name!=="NotAllowedError")throw a;if(this.core.room.enableAutoPlayDialog){let c=()=>{var d;(d=e.play())==null||d.finally(()=>{F.off("154",c,this)})};F.on("154",c,this),xC()}else this.core.trtc.emit(Hi.AUTOPLAY_FAILED,{userId:"",mediaType:"audio",resume:()=>KA(this,null,function*(){return e.play()})})}})}update(e){return KA(this,null,function*(){let{id:o,operation:a,seekFrom:c,playbackRate:d}=e;this.log.info("update music source, ".concat(JSON.stringify(e)));let C=this.mixedMusicMap.get(o);C?(C.updateSettings(e),C.updateListener(e),Je(a)||C.setOperation(a),Je(c)||C.seek(c),this.kvUpload(e)):this.log.warn("update music source failed, music id: ".concat(o," not found."))})}stop(e){return KA(this,arguments,function(o){var a=this;let{id:c}=o;return function*(){if(a.mixedMusicMap.has(c)){a.log.info("remove music source, music id: ".concat(c));let d=a.mixedMusicMap.get(c);d!=null&&d.mixInput.source.node&&a.core.room.audioManager.updateAudioReference({type:"remove",audioReference:d.mixInput.source.node,refId:"ax-".concat(c)}),d?.stop(),a.mixedMusicMap.delete(c)}c==="*"&&a.destroyAllMusic()}()})}kvUpload(e){let{track:o,loop:a,volume:c,playbackRate:d,operation:C,seekFrom:y,onTimeUpdate:S,onDurationChange:b,onEnded:V}=e;o&&Ai.addCount({key:502009}),a&&Ai.addCount({key:502001}),c&&Ai.addCount({key:502002}),d&&Ai.addCount({key:502003}),C&&Ai.addCount({key:502004}),y&&Ai.addCount({key:502005}),typeof S!="function"&&Ai.addCount({key:502007}),typeof V!="function"&&Ai.addCount({key:502008}),typeof b!="function"&&Ai.addCount({key:502006})}destroyAllMusic(){this.log.info("destroy all music source."),this.mixedMusicMap.forEach((e,o)=>{e!=null&&e.mixInput.track&&this.core.room.audioManager.updateAudioReference({type:"remove",audioReference:e.mixInput.track,refId:o}),this.stop({id:o})})}destroyAllCache(){this.log.info("destroy all music cache."),this.cacheMusicMap.clear()}destroy(){this.log.info("destroy audio mixer plugin."),this.destroyAllMusic(),this.destroyAllCache()}};Y(cL,"startValidateRule",{name:"options",required:!0,type:"object",properties:{id:{type:"string",required:!0},url:{type:"string",required:!1},track:{required:!1},loop:{type:"boolean"},volume:{type:"number"}},validate(A,e,o){if(A.url&&A.url!=="*"){let a=A.url.split("?")[0],c=["mp3","ogg","wav","flac"],d=a.split(".").pop(),C=c.indexOf(d)>=0,y=a.startsWith("blob"),S=a.startsWith("data");if(!(C||y||S))throw new wo({code:Ro.INVALID_PARAMETER,message:"start audioMixer plugin: music url is invalid, please check your file format.",fnName:o})}if(!A.url&&!A.track)throw new wo({code:Ro.INVALID_PARAMETER,message:"start audioMixer plugin: param url or track is required.",fnName:o});E_("onTimeUpdate",A.onTimeUpdate),E_("onEnded",A.onEnded),E_("onDurationChange",A.onDurationChange)}}),Y(cL,"updateValidateRule",{name:"options",required:!0,type:"object",properties:{id:{type:"string",required:!0},loop:{type:"boolean"},volume:{type:"number"},seekFrom:{type:"number"},operation:{type:"string",values:["pause","resume","stop"]}},validate(A,e,o){E_("onTimeUpdate",A.onTimeUpdate),E_("onEnded",A.onEnded),E_("onDurationChange",A.onDurationChange)}}),Y(cL,"stopValidateRule",{name:"options",type:"object",required:!0,properties:{id:{type:"string",required:!0}}}),Y(cL,"Name","AudioMixer");var nj,EiA=cL,rj=0,C1=class TL{constructor(e){this.core=e,Y(this,"log"),Y(this,"audioContext",UI()),Y(this,"workletNode"),Y(this,"config",{enableFarFieldReduce:!1,farFieldReduceThreshold:.5}),rj+=1,this.log=e.log.createChild({id:"".concat(this.getAlias()).concat(rj)}),this.log.info("created id=".concat(this.getAlias()).concat(rj))}static startValidateRule(e){return{name:"options",required:!0,type:"object",properties:{sdkAppId:{type:"number",required:!0},userId:{type:"string",required:!0},userSig:{type:"string",required:!0},mode:{type:"number",required:!1,values:[0,1]},farFieldReduceThreshold:{type:"number",required:!1,min:0,max:1}},validate(o,a,c,d){if(!e.room.audioManager.hasAudioTrack)throw new wo({code:Ro.INVALID_OPERATION,extraCode:5106,fnName:c})}}}preload(e){return nj||(nj=this.doPreload(e)),nj}doPreload(e){return KA(this,null,function*(){let o=yield this.core.fileDownloader.download(e,{type:"blob"}),a=URL.createObjectURL(o);try{yield Vg(this.audioContext,a)}catch(c){throw this.log.error("load worklet failed",c),c}finally{URL.revokeObjectURL(a)}})}getName(){return TL.Name}getAlias(){return"ad"}getGroup(){return"AIDenoiser"}getValidateRule(e){switch(e){case"start":return TL.startValidateRule(this.core);case"update":return TL.updateValidateRule;case"stop":return TL.stopValidateRule}}start(e){return KA(this,null,function*(){let{room:o,schedule:a}=this.core,{assetsPath:c=this.core.assetsPath}=e;if(!c)throw new wo({code:Ro.INVALID_PARAMETER,message:"you need to deploy the assets of the npm package and set assetsPath param in TRTC.create()"});if(this.core.validateSourceNode(),yield this.preload("".concat(c,"/denoiser-wasm").concat(wM()?"":"-nosimd",".js")),!this.workletNode){let d=String(Date.now()).slice(0,-3),{auth:C,sign:y,status:S,message:b}=yield function(V,J){return KA(this,arguments,function(gA,CA){let{sdkAppId:MA,userId:$A,userSig:he,timestamp:Ye}=CA;return function*(){try{let{data:{errCode:Me,errMsg:yi,sign:Ge,status:ht}}=yield gA.getAbilityConfig(MA,gA.ScheduleRequestType.AUDIO_AI_AUTH,{sdkAppId:MA,userId:$A,userSig:he,timestamp:Ye});if(ht==="1")return{auth:!0,sign:Ge,status:ht,message:yi};let Ci=qd(MA)?"https://trtc.io/document/42734?platform=web&product=rtcengine&menulabel=coresdk":"https://cloud.tencent.com/document/product/647/44247",Di="Init RTCAIDenoiser failed.",Vo="";switch(Me){case 1:Vo="Please check your params.";break;case 2:Vo="You need to buy packages. Refer to: ".concat(Ci);break;case 3:Vo="Server is invalid. Please contact our engineer. ";break;case 4:Vo="Your packages is not active. Refer to: ".concat(Ci);break;case 5:Vo="Your packages is expired. Refer to: ".concat(Ci);break;case 6:Vo="Your version is not supported."}return{auth:!1,status:ht,message:yi?"".concat(Di," Reason: ").concat(yi,". ").concat(Vo):"".concat(Di,", ").concat(Vo)}}catch(Me){return{auth:!1,status:"0",message:"Init RTCAIDenoiser failed. All requests failed. ".concat(Me)}}}()})}(a,Qo(mi({},e),{timestamp:d}));if(!C)throw this.log.info("RTCAIDenoiser: ".concat(e.userId," auth result: ").concat(C,". Message: ").concat(b)),new wo({code:Ro.INVALID_PARAMETER,message:b});this.workletNode=new AudioWorkletNode(this.audioContext,"trtc-denoiser-processor",{numberOfInputs:1,numberOfOutputs:1}),this.workletNode.port.postMessage({type:"init",data:{sdkAppId:String(e.sdkAppId),userId:e.userId,timestamp:d,sign:y,status:S}}),this.workletNode.port.onmessage=V=>{var J;let{data:gA}=V;if(gA.type==="cost"){let CA=gA?.max>20?"warn":gA?.max>10?"info":"debug";this.log[CA]("avg cost: ".concat(gA.value," max: ").concat(gA?.max,"(").concat(hb(new Date(gA?.maxCostTimestamp)),") hist: ").concat((J=gA?.hist)==null?void 0:J.join(" ")))}else gA.type==="log"&&this.log[gA.logLevel]("".concat(gA.value))}}this.updateConfig(e),this.workletNode.port.postMessage({type:"enable"}),o.audioManager.addDenoiser(this.workletNode),o.sendAbilityStatus({ai_denoise:1})})}update(e){return KA(this,null,function*(){this.updateConfig(e)})}stop(){return KA(this,null,function*(){if(!this.workletNode)return;let{room:e}=this.core;this.workletNode.port.postMessage({type:"disable"}),yield e.audioManager.removeDenoiser(this.workletNode)})}updateConfig(e){if(!this.workletNode)return;let o=!1;Je(e.mode)||(e.mode===0?this.config.enableFarFieldReduce=!1:e.mode===1&&(this.config.enableFarFieldReduce=!0),o=!0),Je(e.farFieldReduceThreshold)||(this.config.farFieldReduceThreshold=e.farFieldReduceThreshold,o=!0),o&&this.workletNode.port.postMessage({type:"setConfig",data:this.config})}destroy(){this.workletNode&&(this.workletNode.port.onmessage=null)}};Y(C1,"updateValidateRule",{type:"object",properties:{mode:{type:"number",required:!1,values:[0,1]},farFieldReduceThreshold:{type:"number",required:!1,min:0,max:1}}}),Y(C1,"stopValidateRule",{type:"object"}),Y(C1,"Name","AIDenoiser");var diA=C1,CiA=gc(ql(),1),hiA=class extends CiA.EventEmitter{constructor(){super(),Y(this,"observer"),Y(this,"state","nominal"),this.onPressureChange=this.onPressureChange.bind(this)}get stateNum(){switch(this.state){case"nominal":return 1;case"fair":return 2;case"serious":return 3;case"critical":return 4}}start(){return KA(this,null,function*(){if(!this.observer)try{"PressureObserver"in window&&!Ha&&(this.observer=new PressureObserver(this.onPressureChange),yield this.observer.observe("cpu",{sampleInterval:2e3}))}catch(A){sn.uploadEvent({log:"stat-pressure-detector-start-failed",error:A})}})}onPressureChange(A){let e=this.stateNum,o=A[A.length-1];this.state=o.state,(this.stateNum>3||e>3)&&QA.info("".concat(o.source,": ").concat(o.state)),this.emit("state-changed",{type:o.source,state:this.state})}destroy(){var A;try{(A=this.observer)==null||A.disconnect(),this.observer=null}catch(e){sn.uploadEvent({log:"stat-pressure-detector-destroy-failed",error:e})}}},Iz=new hiA,aj=0,gj=class T9{constructor(e){this.core=e,Y(this,"log"),Y(this,"_seiMessageList",[]),Y(this,"_smallSeiMessageList",[]),Y(this,"_subStreamSeiMessageList",[]),aj++,this.log=e.log.createChild({id:"".concat(this.getAlias()).concat(aj)}),this.log.info("[sei] created id=".concat(this.getAlias()).concat(aj)),this.encode=this.encode.bind(this),this.decode=this.decode.bind(this)}encode(e){let{frame:o,mediaType:a}=e;try{return iz({frame:o,seiMessageList:a===8?this._smallSeiMessageList:a===2?this._subStreamSeiMessageList:this._seiMessageList})}catch(c){this.log.warn(c)}return o}decode(e){let{frame:o,track:a}=e;return oz({frame:o,onSEI:c=>{c.forEach(d=>{a!=null&&a.userId?this.core.trtc.emit(Hi.SEI_MESSAGE,{seiPayloadType:d.seiPayloadType,data:d.seiPayload.buffer,userId:a.userId,streamType:a.mediaType===2?"sub":"main"}):this.core.innerEmitter.emit(this.core.INNER_EVENT.SEI_MESSAGE,{room:this.core.room,nalu:d})})}})}destroy(){this.log.debug("destroy"),this.stop(),delete this.core}getValidateRule(e){switch(e){case"start":case"update":case"stop":return{type:"object"}}}start(){this.core.room.videoManager.addEncodeProcessor({processor:qp?this.encode:iz,type:2}),this.core.room.videoManager.addDecodeProcessor({processor:qp?this.decode:oz,type:2})}stop(){this.core.room.videoManager.removeEncodeProcessor({type:2}),this.core.room.videoManager.removeDecodeProcessor({type:2})}update(e){let{buffer:o,options:a}=e;var c;let d=[a.seiPayloadType,o],C=!!a.small;a.toSubStream?this._subStreamSeiMessageList.push(d):(this._seiMessageList.push(d),C&&this._smallSeiMessageList.push(d)),(c=this.core.room.scriptTransformWorker)==null||c.postMessage({type:"sei",data:d,isMain:!a.toSubStream,small:C})}getName(){return T9.Name}getAlias(){return"sei"}getGroup(){return"sei"}};Y(gj,"autoStart",!0),Y(gj,"Name","SEI");var h1,BiA=gj,QiA=0,cj=class N9{constructor(e){this.core=e,Y(this,"_core"),Y(this,"log"),Y(this,"dialog"),this._core=e,this.log=e.log.createChild({id:"".concat(this.getAlias()).concat(++QiA)}),this.log.info("created")}getName(){return N9.Name}getAlias(){return"dm"}getGroup(){return"dm"}getValidateRule(e){switch(e){case"start":return{name:"StartDebugOptions",required:!1};case"update":return{name:"UpdateDebugOptions",required:!1};case"stop":return{name:"StopDebugOptions",required:!1}}}start(){return KA(this,null,function*(){var e;!new URLSearchParams(location.search).has("trtcDebug")&&((e=window.sessionStorage)==null?void 0:e.getItem("TRTC_ENABLE_DEBUG_PLUGIN"))!=="true"||(yield this.openDebugDiaLog())})}update(e){return KA(this,arguments,function(o){var a=this;let{visible:c}=o;return function*(){c?yield a.openDebugDiaLog():a.closeDebugDiaLog()}()})}stop(){this.closeDebugDiaLog()}destroy(){this.stop()}openDebugDiaLog(){return KA(this,null,function*(){var e;if(!this.dialog)try{if(h1)yield h1;else{let o=new URLSearchParams(location.search).get("trtcDebugDialogPath")||((e=window.sessionStorage)==null?void 0:e.getItem("TRTC_DEBUG_DIALOG_PATH"))||"https://unpkg.com/".concat("trtc-sdk-v5","@").concat(Hd,"/assets/debug-dialog.js");h1=this._core.fileDownloader.loadScript(o),yield h1}this.dialog=new TRTCDebugDialog(this._core,this.log),this._core.kvStatManager.addSuccessEvent({key:592705})}catch(o){this._core.kvStatManager.addFailedEvent({key:592705}),this.log.error("load debug dialog script failed: ",JSON.stringify(o))}})}closeDebugDiaLog(){this.dialog&&(this.dialog.closeDialog(),this.dialog=null)}};Y(cj,"Name","Debug"),Y(cj,"autoStart",!0);var piA=cj,uz=A=>{switch(A){case"webCodecs":return 504703;case"wasm":return 504704}throw new Error("decoder type not supported")},Ez=class{constructor(A,e,o){Y(this,"trackDoneOB"),Y(this,"startOB"),Y(this,"stopOB"),Y(this,"inputFrameCount",0),Y(this,"decodedFrameCount",0),Y(this,"type","auto"),Y(this,"config"),Y(this,"decoder"),Y(this,"_decodeSink");let{kvStatManager:a,trtc:c}=A;this.config=o.config,this.trackDoneOB=ca(e,Zs.INIT),this.stopOB=uQ(),this.startOB=uQ(),o.type==="auto"?this.type="webCodecs":this.type=o.type;let d=uQ();pa(this.startOB,kK(0),X2(C=>{let y=this.pipe(e);return d.next("STARTING"),e.log.info("decoder type: ".concat(this.type)),pa(y,lE(this.stopOB),hl(()=>{},S=>{e.log.error(S),a.addFailedEvent({key:uz(this.type),error:S}),C>4?this.startOB.error(S):this.startOB.next(C+1)})),pa(y,r_(1),M5(FK))}),lE(this.stopOB),hl(()=>{e.player.setOutput(),d.next("STARTED")},C=>{d.next("FAILED")},()=>{a.addSuccessEvent({key:uz(this.type)}),a.addSuccessEvent({key:504702})}))}mock(A){this._decodeSink?this._decodeSink.error(A):this.startOB.next(0)}close(A){this.stopOB.next(A)}pipe(A){return zk()(e=>KA(this,null,function*(){this._decodeSink=e,e.defer(()=>{var a;(a=this.decoder)==null||a.close()});let{type:o}=this;try{o==="webCodecs"&&(this.decoder=new AudioDecoder({error:a=>{A.log.error(a),e.error(4)},output:a=>{this.decodedFrameCount++,e.next(a),A.player.write(a)}})),this.decoder.configure(this.config)}catch(a){A.log.error(a),e.error(o==="webCodecs"?2:6)}}))}decodeFrame(A){var e;this.inputFrameCount++,((e=this.decoder)==null?void 0:e.state)==="configured"&&this.decoder.decode(new EncodedAudioChunk({data:A.data,timestamp:A.timestamp,type:"key"}))}},miA={type:"object"},dz=class b3{constructor(e){this.core=e,Y(this,"log"),Y(this,"contextMap",new Map),Y(this,"decodeProcessorMap",new WeakMap),this.log=e.log.createChild({id:"".concat(this.getAlias())})}getAlias(){return b3.Name}getGroup(e){return e.track.userId+e.track.streamType}getName(){return b3.Name}getValidateRule(e){return miA}start(e){let{track:o}=e;this.decodeProcessorMap.set(o,this.decode(e)),this.core.room.audioManager.addDecodeProcessor({processor:a=>{let{frame:c,track:d}=a;return this.decodeProcessorMap.has(d)?this.decodeProcessorMap.get(d)({frame:c,track:d}):c},type:3})}decode(e){return o=>{let{frame:a,track:c}=o;if(c!==e.track)return a;if(this.contextMap.has(c))return this.contextMap.get(c).decodeFrame(a);let d=new Ez(this.core,c,e);return pa(d.trackDoneOB,r_(1),hl(()=>{this.core.clearStarted(this,this.getGroup(e)),this.stop({track:c})})),this.contextMap.set(c,d),d.decodeFrame(a)}}stop(e){let{track:o}=e,a=this.contextMap.get(o);a&&(a.close("stop"),this.contextMap.delete(o),this.contextMap.size===0&&this.core.room.audioManager.removeDecodeProcessor({type:3}))}update(e){let o=this.contextMap.get(e.track);if(o){if(e.type==="mock")return void o.mock(10);o.close("update"),this.contextMap.set(e.track,new Ez(this.core,e.track,e))}}};Y(dz,"Name","TRTCAudioDecoder");var Cz=dz,fiA={rttPoorLimit:150,lossPoorLimit:20,rttGoodLimit:100,lossGoodLimit:10,fpsPoorLimit:5,cooldownTime:1e4,poorCount:3,goodCount:5,maxUpgradeFailCount:3},yiA=class{constructor(){Y(this,"log"),Y(this,"autoMode",{enabled:!1,instance:null,config:fiA,sortedStreamList:[],currentQualityIndex:0}),Y(this,"switchControl",{isInternal:!1,isSwitching:!1,lastSwitchTime:0,boundOnStatistics:null}),Y(this,"networkMetrics",{frameRate:0,rtt:0,loss:0}),Y(this,"counters",{rttUnder:0,lossUnder:0,downgradeCondition:0,upgradeFail:0}),Y(this,"onStatistics",A=>{var e,o;if(!this.autoMode.instance)return;let{config:a}=this.autoMode;if(this.networkMetrics.rtt=A.rtt,this.networkMetrics.loss=A.downLoss,this.counters.rttUnder=A.rttV.userId===d);if((o=y?.video)==null||!o.length)return;let S=C==="sub"?"sub":"big",b=y.video.find(V=>V.videoType===S);b?(this.networkMetrics.frameRate=b.frameRate||0,this.checkAndSwitchQuality()):this.log.warn("onStatistics: videoStat not found for userId=".concat(d,", streamType=").concat(C))}),this.log=QA.createLogger({id:"pqs"})}getCurrentPlayingStream(A){var e,o;let a=A,c=a._playbackQualityList;if(!c||c.length===0)return this.log.warn("getCurrentPlayingStream: streamList is empty"),null;for(let d of c){let C=A.room.remotePublishedUserMap.get(d.userId);if(!C)continue;let y=(e=d.streamType)!=null?e:"main";if((y==="sub"?C.remoteAuxiliaryTrack:C.remoteVideoTrack).isPlayCalled){let S=(o=a._remoteVideoConfigMap.get("".concat(d.userId,"_").concat(y)))==null?void 0:o.config;if(S)return{userId:d.userId,streamType:y,config:S}}}return null}switchPlaybackQuality(A){return KA(this,null,function*(){var e;let{trtcInstance:o,streamList:a,quality:c}=A;this.log.info("switchPlaybackQuality quality: ".concat(c,", streamList: ").concat(JSON.stringify(a)));let d=o;if(a&&a.length>0&&(d._playbackQualityList=a.map(MA=>{var $A;return Qo(mi({},MA),{streamType:($A=MA.streamType)!=null?$A:"main"})})),c==="auto")return void(yield this.startAutoMode(o));if(this.autoMode.enabled&&c&&!this.switchControl.isInternal&&this.stopAutoMode(),!c)return;if(!d._playbackQualityList||d._playbackQualityList.length<=0)return void this.log.warn("switchPlaybackQuality: streamList is empty, please call with streamList first");let C=d._playbackQualityList.find(MA=>MA.name===c);if(!C)return void this.log.warn('switchPlaybackQuality: quality "'.concat(c,'" not found in streamList'));let y=this.getCurrentPlayingStream(o);if(this.log.info("currentPlaying userId: ".concat(y?.userId,", streamType: ").concat(y?.streamType)),!y)return;let S=(e=C.streamType)!=null?e:"main";if(y.userId===C.userId&&y.streamType===S)return void this.log.info("switchPlaybackQuality: already playing target stream");let b=mi({},y.config);b.streamType==="main"&&S==="main"&&(yield o.muteRemoteAudio(b.userId,!0));let V,J=new Promise(MA=>{V=MA}),gA=MA=>{MA.userId===C.userId&&MA.streamType===S&&MA.state==="PLAYING"&&MA.reason==="playing"&&V("success")};o.on(Hi.VIDEO_PLAY_STATE_CHANGED,gA);let CA=new Promise(MA=>setTimeout(()=>MA("timeout"),1e4));try{if(yield o.startRemoteVideo(Qo(mi({},y.config),{userId:C.userId,streamType:S,option:Qo(mi({},y.config.option),{isLiveStream:!0})})),(yield Promise.race([J,CA]))==="timeout"){this.log.error("switchPlaybackQuality: VIDEO_PLAY_STATE_CHANGED timeout, rollback");try{yield o.stopRemoteVideo({userId:C.userId,streamType:S})}catch($A){this.log.warn("switchPlaybackQuality: rollback stopRemoteVideo failed",$A)}throw b.streamType==="main"&&S==="main"&&(yield o.muteRemoteAudio(b.userId,!1).catch($A=>{this.log.warn("switchPlaybackQuality: rollback muteRemoteAudio failed",$A)})),new si({code:Et.SUBSCRIPTION_TIMEOUT,message:Xo({key:Mo.SWITCH_PLAYBACK_QUALITY_TIMEOUT,data:{userId:C.userId}})})}let MA=o.stopRemoteVideo(b);b.streamType==="main"&&S==="main"?yield Promise.all([o.muteRemoteAudio(C.userId,!1).catch($A=>{this.log.warn("muteRemoteAudio(new, false) failed",$A)}),MA]):yield MA,d._currentLiveUserId=C.userId,d._currentLiveStreamType=S}finally{o.off(Hi.VIDEO_PLAY_STATE_CHANGED,gA)}})}startAutoMode(A){return KA(this,null,function*(){if(this.autoMode.enabled)return void this.log.info("auto mode already enabled");let e=A;if(!e._playbackQualityList||e._playbackQualityList.length<=1)return void this.log.warn("startAutoMode: need at least 2 streams in streamList for auto mode");this.autoMode.enabled=!0,this.autoMode.instance=A,this.counters.rttUnder=0,this.counters.lossUnder=0,this.counters.downgradeCondition=0,this.counters.upgradeFail=0,this.switchControl.lastSwitchTime=0;let o=e._playbackQualityList||[];this.autoMode.sortedStreamList=[...o].sort((c,d)=>d.bitrate-c.bitrate),this.log.info("auto mode streams: ".concat(this.autoMode.sortedStreamList.map(c=>"".concat(c.name,"(").concat(c.bitrate,"kbps)")).join(" > ")));let a=this.getCurrentPlayingStream(A);if(a){let{userId:c,streamType:d}=a,C=this.autoMode.sortedStreamList.findIndex(y=>{var S;return y.userId===c&&((S=y.streamType)!=null?S:"main")===d});this.autoMode.currentQualityIndex=C>=0?C:0}else this.autoMode.currentQualityIndex=0;this.switchControl.boundOnStatistics=this.onStatistics,A.on(Hi.STATISTICS,this.switchControl.boundOnStatistics),this.log.info("auto mode started")})}stopAutoMode(){this.autoMode.enabled&&(this.autoMode.instance&&this.switchControl.boundOnStatistics&&this.autoMode.instance.off(Hi.STATISTICS,this.switchControl.boundOnStatistics),this.switchControl.boundOnStatistics=null,this.autoMode.enabled=!1,this.autoMode.instance=null,this.autoMode.sortedStreamList=[],this.autoMode.currentQualityIndex=0,this.counters.rttUnder=0,this.counters.lossUnder=0,this.counters.downgradeCondition=0,this.counters.upgradeFail=0,this.networkMetrics.frameRate=0,this.networkMetrics.rtt=0,this.networkMetrics.loss=0,this.switchControl.isSwitching=!1,this.log.info("auto mode stopped"))}checkAndSwitchQuality(){var A;if(!this.autoMode.enabled||!this.autoMode.instance||this.switchControl.isSwitching)return;let{config:e}=this.autoMode,o=Date.now()-this.switchControl.lastSwitchTime0,C=this.networkMetrics.frameRate<=e.fpsPoorLimit,y=this.networkMetrics.loss>=e.lossPoorLimit||this.networkMetrics.rtt>=e.rttPoorLimit,S=C&&y;this.counters.downgradeCondition=S?this.counters.downgradeCondition+1:0;let b=this.counters.rttUnder>=e.goodCount&&this.counters.lossUnder>=e.goodCount,V=this.counters.upgradeFail{if(V.remoteAudioTrack.isAvailable){if(S.get(V.userId))return;let J=y.getPCM(gA=>{e.emit(Hi.AUDIO_FRAME,gA)},V.userId);S.set(V.userId,J)}});else{if(S.get(a))return;let V=y.getPCM(J=>{e.emit(Hi.AUDIO_FRAME,J)},a);S.set(a,V)}else if(a==="*")e.room.remotePublishedUserMap.forEach(V=>{if(V.remoteAudioTrack.isSubscribed){let{userId:J}=V,gA=S.get(J);gA?.abort("disable"),S.delete(J)}});else{let V=S.get(a);V?.abort("disable"),S.delete(a)}})}resumeRemotePlayer(A){return KA(this,null,function*(){if(A.userId==="*"){let o=[];return A.trtcInstance.room.remotePublishedUserMap.forEach(a=>{let{remoteAudioTrack:c,remoteVideoTrack:d,remoteAuxiliaryTrack:C}=a;A.streamType?A.streamType==="main"?(c.isAvailable&&o.push(c.player.resume()),d.isAvailable&&o.push(d.player.resume())):C.isAvailable&&o.push(C.player.resume()):(c.isAvailable&&o.push(c.player.resume()),d.isAvailable&&o.push(d.player.resume()),C.isAvailable&&o.push(C.player.resume()))}),Promise.all(o)}let e=A.trtcInstance.room.remotePublishedUserMap.get(A.userId);if(e)return A.streamType==="main"?Promise.all([e.remoteAudioTrack.player.resume(),e.remoteVideoTrack.player.resume()]):e.remoteAuxiliaryTrack.player.resume()})}pauseRemotePlayer(A){if(A.userId==="*")A.trtcInstance.room.remotePublishedUserMap.forEach(e=>{let{remoteAudioTrack:o,remoteVideoTrack:a,remoteAuxiliaryTrack:c}=e;A.streamType?A.streamType==="main"?(o.isAvailable&&o.player.pause(),a.isAvailable&&a.player.pause(!1)):c.isAvailable&&c.player.pause(!1):(o.isAvailable&&o.player.pause(),a.isAvailable&&a.player.pause(!1),c.isAvailable&&c.player.pause(!1))});else{let e=A.trtcInstance.room.remotePublishedUserMap.get(A.userId);e&&(A.streamType==="main"?(e.remoteAudioTrack.player.pause(),e.remoteVideoTrack.player.pause(!1)):e.remoteAuxiliaryTrack.player.pause(!1))}}requestPictureInPicture(A){let e=[...A.trtcInstance.room.remotePublishedUserMap.values()].find(o=>o.remoteVideoTrack.isAvailable);return e?A.enable?e.remoteVideoTrack.player.enterPictureInPicture():e.remoteVideoTrack.player.exitPictureInPicture():Promise.reject(new si({code:Et.INVALID_OPERATION,message:"no available remote video"}))}requestFullScreen(A){let e=[...A.trtcInstance.room.remotePublishedUserMap.values()].find(o=>o.remoteVideoTrack.isAvailable);return e?A.enable?e.remoteVideoTrack.player.enterFullscreen():e.remoteVideoTrack.player.exitFullscreen():Promise.reject(new si({code:Et.INVALID_OPERATION,message:"no available remote video"}))}switchPlaybackQuality(A){return KA(this,null,function*(){let e=A.trtcInstance;return e._playbackQualitySwitcher||(e._playbackQualitySwitcher=new yiA),e._playbackQualitySwitcher.switchPlaybackQuality(A)})}prelink(A){return KA(this,null,function*(){let{trtcInstance:e}=A;return A.enable?e.room.prelink(A.sdkAppId,A.userId,A.userSig,IL.frameWorkType,A.roomId,A.strRoomId):e.room.closePrelink()})}};di([k5({name:"options",type:"object",required:!0,properties:{enable:{required:!0,type:"boolean"},userId:{required:!0,type:"string"},sampleRate:{type:"number",values:[8e3,16e3,32e3,44100,48e3]},channelCount:{type:"number",values:[1,2]},port:{type:"messageport"}}})],lj.prototype,"enableAudioFrameEvent"),di([k5({name:"options",type:"object",required:!0,properties:{enable:{required:!0,type:"boolean"},userId:{required:!1,type:"string"},sdkAppId:{required:!1,type:"number"},userSig:{required:!1,type:"string"},roomId:{required:!1,type:"number"},strRoomId:{required:!1,type:"string"}}})],lj.prototype,"prelink");var DiA=new lj,SiA=gc(ql(),1),MiA=class extends SiA.EventEmitter{constructor(){super(),Y(this,"states",{}),Y(this,"permissionChangeHandler"),Y(this,"log"),this.log=QA.createLogger({id:"pm"}),this.permissionChangeHandler=()=>{var A,e;this.emit("permission-state-change",{camera:(A=this.states.camera)==null?void 0:A.state,microphone:(e=this.states.microphone)==null?void 0:e.state})}}request(A){return KA(this,null,function*(){if(this.log.info("request ".concat(A.join(", "))),A.length===0)return Promise.resolve();(yield navigator.mediaDevices.getUserMedia({video:A.includes("camera"),audio:A.includes("microphone")})).getTracks().forEach(e=>e.stop())})}get(A){return KA(this,null,function*(){try{return this.states[A]||(this.states[A]=yield navigator.permissions.query({name:A}),this.states[A].addEventListener("change",this.permissionChangeHandler)),this.log.info("get ".concat(A," permission state: ").concat(this.states[A].state)),this.states[A].state}catch(e){return this.log.error("get ".concat(A," permission failed, error: ").concat(e instanceof Error?e.message:e)),null}})}destroy(){Object.values(this.states).forEach(A=>{A?.removeEventListener("change",this.permissionChangeHandler)}),this.states={}}},B1=new MiA,hz=0,lL=new Set,zl=null;Tx(cz),jA.checkStorage();var Ss=class sm extends AK.EventEmitter{constructor(e,o){super(),Y(this,"_room"),Y(this,"_eventListened",new Set),Y(this,"_localVideoTrack",null),Y(this,"_localAudioTrack",null),Y(this,"_localScreenTrack",null),Y(this,"_localScreenAudioTrack",null),Y(this,"_localVideoConfig",null),Y(this,"_localScreenConfig",null),Y(this,"_localAudioConfig",null),Y(this,"_remoteVideoConfigMap",new Map),Y(this,"_remoteAudioConfigMap",new Map),Y(this,"_remoteAudioVolumeMap",new Map),Y(this,"_remoteAudioMuteMap",new Map),Y(this,"_mediaTrackMap",new WeakMap),Y(this,"_log",QA.createLogger({id:"t".concat(++hz)})),Y(this,"_plugins",new Map),Y(this,"_networkQuality",null),Y(this,"_speakerId"),Y(this,"enterRoomParams"),Y(this,"_enableAutoSwitchWhenRecapturing",!0),Y(this,"_autoSubscribeDataChannel",!1),Y(this,"_playbackQualityList",[]),this._room=new e(mi({logger:this._log,frameWorkType:sm.frameWorkType},o)),this._room.videoDecodeFallbackType=o.videoDecodeFallback,_r(o.enableAutoSwitchWhenRecapturing)&&(this._enableAutoSwitchWhenRecapturing=o.enableAutoSwitchWhenRecapturing),this._log.info("create() ".concat(JSON.stringify(o,(a,c)=>a==="plugins"?c.map(d=>d.Name):c))),Object.defineProperties(this,{dumpAudio:{enumerable:!1,value(a){return this._room.audioManager.dump(a)}}}),o.plugins&&o.plugins.forEach(a=>{this._use(a,o.assetsPath)}),this._use(EiA,o.assetsPath),this._use(IiA,o.assetsPath),this._use(diA,o.assetsPath),this._use(Cz,o.assetsPath),this._use(piA),o.enableSEI&&Uk&&this._use(BiA),this._room.on("audio-volume",a=>{var c,d;!a.find(C=>C.userId==="")&&this._localAudioTrack&&a.push({userId:"",volume:Math.floor(100*((c=this._localAudioTrack.getInternalAudioLevelAfter3A())!=null?c:this._localAudioTrack.getAudioLevel())),floatVolume:(d=this._localAudioTrack.getInternalAudioLevelAfter3A())!=null?d:this._localAudioTrack.getInternalAudioLevel()}),o.volumeType===1&&a.forEach(C=>{var y;let S=C.userId===""?this._localAudioTrack:(y=this.room.remotePublishedUserMap.get(C.userId))==null?void 0:y.remoteAudioTrack;S&&(C.volume=S.dbVolume)}),o.enableDbVolume&&a.forEach(C=>{var y;let S=C.userId===""?this._localAudioTrack:(y=this.room.remotePublishedUserMap.get(C.userId))==null?void 0:y.remoteAudioTrack;S&&(C.volume=S.dbVolume)}),this.emit(Hi.AUDIO_VOLUME,{result:a.sort((C,y)=>y.volume-C.volume)})}),this._room.videoManager.on("error",a=>{this._log.error(new wo({code:Ro.OPERATION_FAILED,extraCode:5504,message:a.message,originError:a}))}),this._listenEvents(),this._initActiveSpeaker(),((a,c)=>{let{emit:d}=a;a.emit=function(){for(var C=arguments.length,y=new Array(C),S=0;S{y&&QA.info(TC)})}})();let a=new em(e,o||{});return Wk.add(a),a.__v_skip=!0,a}get room(){return this._room}_listenEvents(){XE(this,this._room).add("peer-join",e=>{let{userId:o}=e;this.emit(Hi.REMOTE_USER_ENTER,{userId:o})}).add("peer-leave",e=>{let{userId:o,reason:a}=e;this.emit(Hi.REMOTE_USER_EXIT,{userId:o,reason:a})}).add("banned",e=>{EQ(!0),this._exitRoom().finally(()=>{this.emit(Hi.KICKED_OUT,{reason:e.reason})})}).add("error",e=>{this._exitRoom().finally(()=>{this.emit(Hi.ERROR,Ro.convertFrom(e))})}).add("signal-connection-state-changed",e=>{this.emit(Hi.CONNECTION_STATE_CHANGED,e)}).add("network-quality",e=>{this._networkQuality=e;let o=Bo(pi({},e),{uplinkRTT:Math.min(e.uplinkRTT,A0),downlinkRTT:Math.min(e.downlinkRTT,A0)});this.emit(Hi.NETWORK_QUALITY,o)}).add("remote-published",e=>{[e.remoteAudioTrack,e.remoteVideoTrack,e.remoteAuxiliaryTrack].forEach(o=>{XE(o,o).add("player-state-changed",a=>{let c=Bo(pi({},a),{userId:e.userId});o.kind===YA.VIDEO&&(c.streamType=Wd(o.streamType)),this.emit(o.kind===YA.AUDIO?Hi.AUDIO_PLAY_STATE_CHANGED:Hi.VIDEO_PLAY_STATE_CHANGED,c)}).add("error",a=>{a.getCode()===lt.PLAY_NOT_ALLOWED&&this.emit(Hi.AUTOPLAY_FAILED,{userId:o.userId,mediaType:o.strMediaType,resume:()=>o.player.resume()})})})}).add("remote-unpublished",e=>{[e.remoteAudioTrack,e.remoteVideoTrack,e.remoteAuxiliaryTrack].forEach(o=>{kn(o)})}).add("remote-publish-state-changed",e=>{let{prevMuteState:o,muteState:a}=e,{userId:c}=a,d=o.audioAvailable,C=o.videoAvailable,{audioAvailable:y,videoAvailable:S}=a;y||this._remoteAudioConfigMap.delete(c),S||this._removeRemoteVideoConfig(c,"main"),a.hasAuxiliary||this._removeRemoteVideoConfig(c,"sub"),C!==S&&(S?this._onVideoAvailable({userId:c,streamType:"main"}):this._onVideoUnavailable({userId:c,streamType:"main"}),this.emit(S?Hi.REMOTE_VIDEO_AVAILABLE:Hi.REMOTE_VIDEO_UNAVAILABLE,{userId:c,streamType:"main"})),d!==y&&(y?this._onAudioAvailable({userId:c}):this._onAudioUnavailable({userId:c,muteState:a}),this.emit(y?Hi.REMOTE_AUDIO_AVAILABLE:Hi.REMOTE_AUDIO_UNAVAILABLE,{userId:c})),o.hasAuxiliary!==a.hasAuxiliary&&(a.hasAuxiliary?this._onVideoAvailable({userId:c,streamType:"sub"}):this._onVideoUnavailable({userId:c,streamType:"sub"}),this.emit(a.hasAuxiliary?Hi.REMOTE_VIDEO_AVAILABLE:Hi.REMOTE_VIDEO_UNAVAILABLE,{userId:c,streamType:"sub"})),o.hasDatachannel!==a.hasDatachannel&&a.hasDatachannel&&this._onDataChannelAvailable()}).add("sei-message",e=>{this.emit(Hi.SEI_MESSAGE,Bo(pi({},e),{streamType:Wd(e.streamType)}))}).add("firewall-restriction",()=>{this.emit(Hi.ERROR,new Ro({code:vo.OPERATION_FAILED,extraCode:5501}))}).add("heartbeat-report",e=>{var o,a,c,d,C,y,S;let b={2:"big",3:"small",7:"sub"},V={rtt:Math.min(e.msg_up_stream_info.msg_network_status.uint32_rtt||((o=e.msg_down_stream_info[0])==null?void 0:o.msg_network_status.uint32_rtt)||((a=this._networkQuality)==null?void 0:a.uplinkRTT)||((c=this._networkQuality)==null?void 0:c.downlinkRTT)||0,A0),upLoss:((d=this._networkQuality)==null?void 0:d.uplinkLoss)||0,downLoss:((C=this._networkQuality)==null?void 0:C.downlinkLoss)||0,bytesSent:e.bytes_sent||0,bytesReceived:e.bytes_received||0,localStatistics:{audio:{bitrate:(((y=e.msg_up_stream_info.msg_audio_status)==null?void 0:y.uint32_audio_codec_bitrate)||0)/1e3,audioLevel:(((S=e.msg_up_stream_info.msg_audio_status)==null?void 0:S.uint32_audio_level)||0)/WE},video:e.msg_up_stream_info.msg_video_status.filter(J=>b[J.uint32_video_stream_type]).map(J=>({bitrate:(J.uint32_video_codec_bitrate||0)/1e3,width:J.uint32_video_width,height:J.uint32_video_height,frameRate:J.uint32_video_enc_fps,videoType:b[J.uint32_video_stream_type]}))},remoteStatistics:e.msg_down_stream_info.map(J=>({userId:J.msg_user_info.str_identifier,audio:{bitrate:(J.msg_audio_status.uint32_audio_codec_bitrate||0)/1e3,audioLevel:(J.msg_audio_status.uint32_audio_level||0)/WE,point2pointDelay:(J.msg_audio_status.uint32_audio_p2p_delay||0)+(J.msg_audio_status.uint32_audio_cache_ms||0),jitterBufferDelay:J.msg_audio_status.uint32_audio_cache_ms||0},video:J.msg_video_status.map(gA=>({bitrate:(gA.uint32_video_codec_bitrate||0)/1e3,width:gA.uint32_video_width,height:gA.uint32_video_height,frameRate:gA.uint32_video_dec_fps,videoType:b[gA.uint32_video_stream_type],point2pointDelay:(gA.uint32_video_p2p_delay||0)+(gA.uint32_video_cache_ms||0),jitterBufferDelay:gA.uint32_video_cache_ms||0,codec:gA.uint32_video_codec}))}))};this.emit(Hi.STATISTICS,V)}).add("custom-message",e=>{this.emit(Hi.CUSTOM_MESSAGE,e)}).add("layerData",e=>this.emit(Hi.LAYER_DATA,e)).add("first-video-frame",e=>{this.emit(Hi.FIRST_VIDEO_FRAME,Bo(pi({},e),{streamType:Wd(e.streamType)}))}).add("audio-frame",e=>{this.emit(Hi.AUDIO_FRAME,e)}).add("data-channel-message",e=>{var o,a,c,d,C;let{data:y}=e;if(y.sender==="")return;let S={segmentId:(o=y.payload)==null?void 0:o.roundid,speakerUserId:y.sender,sourceText:(a=y.payload)==null?void 0:a.text,translationTexts:(c=y.payload)==null?void 0:c.translate_msg,timestamp:(d=y.payload)==null?void 0:d.start_utc_ms,isCompleted:(C=y.payload)==null?void 0:C.end,robotId:y.robotid};S.sourceText!==""&&this.emit(Hi.REALTIME_TRANSCRIBER_MESSAGE,S)}).add("asr-robot-peer-join",e=>{this.emit(Hi.REALTIME_TRANSCRIBER_STATE_CHANGED,{state:"started",roomId:this.room.roomId,transcriberRobotId:e.userId})}).add("asr-robot-peer-leave",e=>{this.emit(Hi.REALTIME_TRANSCRIBER_STATE_CHANGED,{state:"stopped",roomId:this.room.roomId,transcriberRobotId:e.userId})}),XE(this,Pc).add("audioInputAdded",e=>{this.emit(Hi.DEVICE_CHANGED,{type:"microphone",action:"add",device:e})}).add("audioInputRemoved",e=>{this.emit(Hi.DEVICE_CHANGED,{type:"microphone",action:"remove",device:e})}).add("videoInputAdded",e=>{this.emit(Hi.DEVICE_CHANGED,{type:"camera",action:"add",device:e})}).add("videoInputRemoved",e=>{this.emit(Hi.DEVICE_CHANGED,{type:"camera",action:"remove",device:e})}).add("audioOutputAdded",e=>KA(this,null,function*(){if(this.emit(Hi.DEVICE_CHANGED,{type:"speaker",action:"add",device:e}),Wl&&Wl.deviceId===$w){let o=(yield _M()).find(a=>a.deviceId===$w);o&&Wl.groupId!==o.groupId&&(Wl=o,this.emit(Hi.DEVICE_CHANGED,{type:"speaker",action:"active",device:o}))}})).add("audioOutputRemoved",e=>KA(this,null,function*(){this.emit(Hi.DEVICE_CHANGED,{type:"speaker",action:"remove",device:e});let o=(yield _M())[0];if(!o||!Wl||Wl.groupId===o.groupId)return;let a=Wl.deviceId===e.deviceId,c=Wl.deviceId===$w&&Wl.deviceId===o.deviceId;(a||c)&&(Wl=o,this.emit(Hi.DEVICE_CHANGED,{type:"speaker",action:"active",device:o}))})),XE(this,j2).add("permission-state-change",e=>{this.emit(Hi.PERMISSION_STATE_CHANGE,e)}),this.room.enableSEI&&this.on(Hi.SEI_MESSAGE,e=>{var o;let a=(o=this.room.remotePublishedUserMap.get(e.userId))==null?void 0:o.remoteVideoTrack;a&&a.updateAlphaRenderInfo(e)})}getNetworkTime(){return Tf()}use(e){let o,a;return"plugin"in e?(o=e.plugin,a=e.assetsPath):o=e,o.Name==="Chorus"&&(this.room.enableChorus=!0),this._use(o,a)}_use(e,o){let a=this._plugins.get(e.Name);if(a)return this._log.warn("duplicate install plugin",e.Name),a;let c=new e(DtA.call(this,{TRTC:em,room:this._room,assetsPath:o,errorModule:{RtcError:Ro,ErrorCode:vo,CoreErrorCode:lt,ErrorCodeDictionary:L2}}));return this._plugins.set(e.Name,c),c.__v_skip=!0,e.autoStart&&this.startPlugin(e.Name),c}enterRoom(e){return KA(this,null,function*(){var o,a;this.enterRoomParams=e;let{scene:c="rtc",enableAutoPlayDialog:d=!0,autoReceiveAudio:C=!0,autoReceiveVideo:y=!1}=e;e.proxy&&(this._room.setProxyServer(e.proxy),!Yn(e.proxy)&&e.proxy.turnServer&&((a=(o=this._room).setTurnServer)==null||a.call(o,e.proxy.turnServer,e.proxy.iceTransportPolicy))),this._room.enableAutoPlayDialog=d,this._room.autoReceiveAudio=C,this._room.autoReceiveVideo=y,wr(e.preferHW)&&(this._room.preferHW=e.preferHW),e.playoutDelay&&(this._room.playoutDelay=e.playoutDelay),e.jitterBufferDelay&&(this._room.jitterBufferDelay=e.jitterBufferDelay);let S={sdkAppId:e.sdkAppId,userId:e.userId,userSig:e.userSig,privateMapKey:e.privateMapKey||null,latencyLevel:e.latencyLevel,role:e.role==="audience"?21:20,roomId:e.roomId||0,strRoomId:e.strRoomId||"",businessInfo:e.businessInfo||null,streamId:null,userDefineRecordId:e.userDefineRecordId||null,enableDataChannel:this._plugins.has("RealtimeTranscriber"),frameWorkType:e.frameWorkType,component:e.component,language:e.language,priority:e.priority,useVp8:e.useVp8,useH265:e.useH265||!1,keepAlive:e.keepAlive};e.strRoomId&&!e.roomId?this._room.useStringRoomId=!0:this._room.useStringRoomId=!1,yield this._room.join(S,c,em.frameWorkType),this._checkTrackToPublish(),w5.start()})}exitRoom(){return KA(this,null,function*(){return yield this._exitRoom()})}switchRoom(e){return KA(this,null,function*(){if(this.room.isSwitchRoomSupported())try{this._clearRemoteTracks(),yield this._room.switchRoom(e)}catch(o){if(!(o instanceof ex)||o.code!==lt.API_CALL_TIMEOUT&&o.code!==lt.SWITCH_ROOM_FAILED)throw o;this._log.warn("switchRoom ".concat(o.code===lt.API_CALL_TIMEOUT?"timeout":"failed",", fallback to exitRoom() and enterRoom()")),yield this._rejoinRoom(e)}else yield this._rejoinRoom(e)})}_rejoinRoom(e){return KA(this,null,function*(){yield this.exitRoom();let o=pi(pi({},this.enterRoomParams),e);yield this.enterRoom(o)})}_clearRemoteTracks(){new Set([...this._remoteAudioConfigMap.keys(),...this._remoteAudioMuteMap.keys()]).forEach(e=>{this._stopRemoteAudio({userId:e}).catch(()=>{})}),[...this._remoteVideoConfigMap.keys()].forEach(e=>{let o=e.includes("main")?"main":"sub",a=e.split("_".concat(o))[0];a&&this._stopRemoteVideo({userId:a,streamType:o}).catch(()=>{})}),this._remoteVideoConfigMap.clear(),this._remoteAudioConfigMap.clear(),this._remoteAudioMuteMap.clear(),function(e){let o=i_.get(e);o&&(o.forEach(a=>clearTimeout(a)),i_.delete(e))}(this),this._room.remotePublishedUserMap.forEach(e=>{kn(e.remoteAudioTrack),kn(e.remoteVideoTrack),kn(e.remoteAuxiliaryTrack)})}switchRole(e,o){return KA(this,null,function*(){o!=null&&o.privateMapKey&&(this._room.privateMapKey=o.privateMapKey),o!=null&&o.latencyLevel&&(this._room.latencyLevel=o.latencyLevel),yield this._room.switchRole(e),e==="anchor"&&this._checkTrackToPublish()})}destroy(){this._plugins.forEach(e=>{var o;return(o=e.destroy)==null?void 0:o.call(e)}),this._plugins.clear(),kn(this),this.removeAllListeners(),this._room.destroy(),Wk.delete(this),Wk.size===0&&w5.destroy(),this._localAudioTrack&&this.stopLocalAudio(),this._localVideoTrack&&this.stopLocalVideo(),this._localScreenTrack&&this.stopScreenShare(),U.off("102",this._onLocalTrackCaptured,this)}startLocalAudio(){return KA(this,arguments,function(){var e=this;let o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{publish:!0};return function*(){if(e._localAudioTrack)return void e._log.warn("local audio is already started");let{publish:a=!0,mute:c,muteKeepVolumeDetection:d,option:C}=o,y=new GM(e._room.audioManager),S={},b={muted:!0};C&&(Ye(C.microphoneId)?Ye(C.audioTrack)||(S.customSource=C.audioTrack):S.deviceId=C.microphoneId,C&&bn(C.captureVolume)&&y.setCaptureVolume(C.captureVolume),Ye(C.profile)||(Yn(C.profile)?pp[C.profile]&&y.setProfile(pp[C.profile]):y.setProfile(C.profile)),bn(C.earMonitorVolume)&&(b.muted=!(C.earMonitorVolume>0),b.volume=C.earMonitorVolume),Ye(C.echoCancellation)||(y.profile.echoCancellation=C.echoCancellation),Ye(C.noiseSuppression)||(y.profile.noiseSuppression=C.noiseSuppression),Ye(C.autoGainControl)||(y.profile.autoGainControl=C.autoGainControl),wr(e._enableAutoSwitchWhenRecapturing)&&(y.enableAutoSwitchWhenRecapturing=e._enableAutoSwitchWhenRecapturing)),y.on("5",V=>{e.emit(Hi.ERROR,new Ro({code:vo.DEVICE_ERROR,extraCode:5309,messageParams:{error:V}}))}),y.on("2",V=>{e.emit(Hi.DEVICE_CHANGED,{type:"microphone",action:"active",device:V})}),y.on("4",V=>{let J;V.error&&(J=Ro.convertFrom(V.error)),e.emit(Hi.PUBLISH_STATE_CHANGED,Bo(pi({},V),{error:J}))}),y.on("6",()=>{}),e._listenOutputTrackChanged(y),e._speakerId&&y.setAudioOutput(e._speakerId),yield y.capture(S),Ye(c)||y.setMute(c,d),XE(y,y).add("player-state-changed",V=>{e.emit(Hi.AUDIO_PLAY_STATE_CHANGED,Bo(pi({},V),{userId:""}))}),a&&e._room.isJoined&&e._room.publish(y).catch(()=>{}),e._localAudioTrack=y,e._room.capturedLocalMainAudioTrack=y,e._localAudioConfig=Bo(pi({},o),{publish:a}),yield e._updateAudioPlayOption({playOption:b,track:y}),U.emit("113",{userId:"",room:e.room})}()})}updateLocalAudio(e){return KA(this,null,function*(){if(!this._localAudioTrack||!this._localAudioConfig)return;let{publish:o,mute:a,muteKeepVolumeDetection:c,option:d}=e,C={};d&&(d.microphoneId?yield this._localAudioTrack.switchDevice(d.microphoneId):Ye(d.audioTrack)||(yield this._localAudioTrack.setInputMediaStreamTrack(d.audioTrack)),Ye(d.captureVolume)||this._localAudioTrack.setCaptureVolume(d.captureVolume),Ye(d.earMonitorVolume)||(C.muted=!(d.earMonitorVolume>0),C.volume=d.earMonitorVolume),yield this._localAudioTrack.update3A(d)),this._room.isJoined&&!Ye(o)&&(o&&!this._localAudioConfig.publish&&this._room.publish(this._localAudioTrack).catch(()=>{}),this._localAudioConfig.publish&&!o&&this._room.unpublish(this._localAudioTrack).catch(()=>{})),Ye(a)||this._localAudioTrack.setMute(a,c),yield this._updateAudioPlayOption({playOption:C,track:this._localAudioTrack,prevConfig:this._localAudioConfig}),qh(this._localAudioConfig,e)})}stopLocalAudio(){return KA(this,null,function*(){this._localAudioTrack&&(this._room.isJoined&&(yield this._room.unpublish(this._localAudioTrack).catch(()=>{})),U.emit("114",{userId:"",room:this.room}),this._localAudioTrack.stop(),this._localAudioTrack.close(),this._room.audioManager.removeInput(this._localAudioTrack),kn(this._localAudioTrack),this._localAudioTrack=null,this._localAudioConfig=null,delete this._room.capturedLocalMainAudioTrack)})}startLocalVideo(){return KA(this,arguments,function(){var e=this;let o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{publish:!0,view:null,capture:!0};return function*(){var a,c,d;if(e._localVideoTrack)return void e._log.warn("local video is already started");let{view:C,publish:y=!0,capture:S=!0,mute:b,option:V,forcePublish:J=!1}=o,gA=y||J,CA=S,MA=new IQ(e._room.videoManager),ee={},Be={};if(V&&(wr(V.avoidCropping)&&(MA.avoidCropping=V.avoidCropping),V.cameraId?ee.deviceId=V.cameraId:Ye(V.useFrontCamera)?Ye(V.videoTrack)||(ee.customSource=V.videoTrack):ee.facingMode=V.useFrontCamera?YA.FACING_MODE_USER:YA.FACING_MODE_ENVIRONMENT,Ye(V.retryWhenExactFailed)||(ee.retryWhenExactFailed=V.retryWhenExactFailed),V.qosPreference&&(ee.contentHint=U2(V.qosPreference)),Ye(V.profile)||(Yn(V.profile)?wC[V.profile]&&MA.setProfile(wC[V.profile]):MA.setProfile(V.profile)),Ye(V.fillMode)||(Be.objectFit=V.fillMode),Ye(V.mirror)||(Be.mirror=V.mirror),Ye(V.small)||(Ye(V.smallMode)||(e._room.smallMode=V.smallMode),wr(V.small)&&V.small===!1?MA.stopSmall():MA.updateSmallConfig(F2(V.small,!0))),Ye(V.rotation)||MA.setRotation(V.rotation),wr(e._enableAutoSwitchWhenRecapturing)&&(MA.enableAutoSwitchWhenRecapturing=e._enableAutoSwitchWhenRecapturing)),MA.once("first-video-frame",Pe=>{e.emit(Hi.FIRST_VIDEO_FRAME,Bo(pi({},Pe),{streamType:Wd(Pe.streamType)}))}),MA.on("5",Pe=>{e.emit(Hi.ERROR,new Ro({code:vo.DEVICE_ERROR,extraCode:5308,messageParams:{error:Pe}}))}),MA.on("2",Pe=>{e.emit(Hi.DEVICE_CHANGED,{type:"camera",action:"active",device:Pe})}),MA.on("4",Pe=>{let Me;Pe.error&&(Me=Ro.convertFrom(Pe.error)),e.emit(Hi.PUBLISH_STATE_CHANGED,Bo(pi({},Pe),{error:Me}))}),MA.on("6",()=>{}),e._listenOutputTrackChanged(MA),ee.customSource&&Sp(ee.customSource)?(MA.setOutputMediaStreamTrack(ee.customSource),CA=!1):CA?yield MA.capture(ee):(a=MA.manager)==null||a.changeInput(MA),Ye(b)||(yield MA.setMute(b)),XE(MA,MA).add("player-state-changed",Pe=>{e.emit(Hi.VIDEO_PLAY_STATE_CHANGED,Bo(pi({},Pe),{userId:"",streamType:"main"}))}).add("video-size-changed",Pe=>{e.emit(Hi.VIDEO_SIZE_CHANGED,Bo(pi({},Pe),{streamType:Wd(Pe.streamType)}))}),gA){let Pe=e._localScreenTrack&&((c=e._localScreenConfig)==null?void 0:c.publish)&&e._localScreenConfig.streamType==="main";e._room.isJoined?!Pe||J?(e._room.publish(MA).catch(()=>{}),((d=e._localScreenConfig)==null?void 0:d.streamType)==="main"&&e._localScreenConfig&&(e._localScreenConfig.publish=!1)):(gA=!1,e._log.warn("main stream is already published, local video track will not publish")):Pe&&(gA=!1)}e._localVideoTrack=MA,e._room.capturedLocalMainVideoTrack=MA,e._localVideoConfig=Bo(pi({},o),{view:C,publish:gA,capture:CA}),yield e._updateVideoPlayOption({view:C,playOption:Be,track:MA})}()})}updateLocalVideo(e){return KA(this,null,function*(){var o,a,c,d,C,y,S;if(!this._localVideoTrack||!this._localVideoConfig)return;let{view:b,publish:V=!0,mute:J,capture:gA,option:CA,forcePublish:MA=!1}=e,ee=V||MA,Be=gA,Pe={};if(!this._localVideoConfig.capture&&Sp((o=this.localVideoTrack)==null?void 0:o.outMediaTrack)&&(CA!=null&&CA.cameraId||CA!=null&&CA.videoTrack)&&this._localVideoTrack.outMediaTrack!==CA?.videoTrack&&(Be=!0),this._localVideoConfig.capture)Be!==!1?CA!=null&&CA.cameraId?yield this._localVideoTrack.switchDevice(CA?.cameraId):Ye(CA?.useFrontCamera)?Ye(CA?.videoTrack)||(Sp(CA?.videoTrack)?CA?.videoTrack!==((a=this.localVideoTrack)==null?void 0:a.outMediaTrack)&&(yield this._localVideoTrack.setOutputMediaStreamTrack(CA?.videoTrack)):yield this._localVideoTrack.setInputMediaStreamTrack(CA?.videoTrack)):yield this._localVideoTrack.switchDevice(CA!=null&&CA.useFrontCamera?YA.FACING_MODE_USER:YA.FACING_MODE_ENVIRONMENT):this._localVideoTrack.stopCapture();else if(Be){let Me={};Me.deviceId=CA?.cameraId||((c=this._localVideoConfig.option)==null?void 0:c.cameraId),Me.facingMode=CA!=null&&CA.useFrontCamera||(d=this._localVideoConfig.option)!=null&&d.useFrontCamera?YA.FACING_MODE_USER:YA.FACING_MODE_ENVIRONMENT,Me.customSource=CA!=null&&CA.videoTrack||!Me.deviceId?(C=this._localVideoConfig.option)==null?void 0:C.videoTrack:void 0,yield this._localVideoTrack.capture(Me)}CA&&(Ye(CA.profile)||(Yn(CA.profile)?wC[CA.profile]&&this._localVideoTrack.setProfile(wC[CA.profile]):this._localVideoTrack.setProfile(CA.profile),(!CA.cameraId||!this._localVideoTrack.isNeedToSwitchDevice(CA.cameraId||CA.useFrontCamera?YA.FACING_MODE_USER:YA.FACING_MODE_ENVIRONMENT))&&(yield this._localVideoTrack.applyProfile())),Ye(CA.fillMode)||(Pe.objectFit=CA.fillMode),Ye(CA.mirror)||(Pe.mirror=CA.mirror),Ye(CA.rotation)||this._localVideoTrack.setRotation(CA.rotation),CA.qosPreference&&this._localVideoTrack.mediaTrack&&this._localVideoTrack.setContentHint(U2(CA.qosPreference)),Ye(CA.small)||(wr(CA.small)&&!CA.small?this._localVideoTrack.stopSmall():this._localVideoTrack.updateSmallConfig(F2(CA.small,!0)))),this._room.isJoined&&Ye(ee)&&this._localVideoConfig.publish&&Be&&!this._localVideoConfig.capture&&this._room.publish(this._localVideoTrack).catch(()=>{}),this._room.isJoined&&((ee??this._localVideoConfig.publish)||MA?this._localScreenTrack&&((y=this._localScreenConfig)!=null&&y.publish)&&this._localScreenConfig.streamType==="main"&&!MA?(ee=!1,this._log.warn("main stream is already published, local video track will not publish")):(this._room.publish(this._localVideoTrack).catch(()=>{}),((S=this._localScreenConfig)==null?void 0:S.streamType)==="main"&&this._localScreenConfig&&(this._localScreenConfig.publish=!1)):this._room.unpublish(this._localVideoTrack).catch(()=>{})),Ye(J)||(yield this._localVideoTrack.setMute(J)),yield this._updateVideoPlayOption({view:b,playOption:Pe,track:this._localVideoTrack,prevConfig:this._localVideoConfig}),qh(this._localVideoConfig,Bo(pi({},e),{publish:ee,capture:Be}))})}stopLocalVideo(){return KA(this,null,function*(){var e;this._localVideoTrack&&(this._room.isJoined&&(e=this._localVideoConfig)!=null&&e.publish&&(yield this._room.unpublish(this._localVideoTrack).catch(()=>{})),this._localVideoTrack.stop(),this._localVideoTrack.close(),kn(this._localVideoTrack),this._localVideoTrack=null,delete this._room.capturedLocalMainVideoTrack,this._localVideoConfig=null)})}startScreenShare(){return KA(this,arguments,function(){var e=this;let o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{publish:!0,view:null};return function*(){var a,c,d;if(e._localScreenTrack)return void e._log.warn("screen share is already started");let{view:C=null,publish:y=!0,muteSystemAudio:S,option:b}=o,V=y,J=new bM(e._room.videoManager);J.on("4",Be=>{let Pe;Be.error&&(Pe=Ro.convertFrom(Be.error)),e.emit(Hi.PUBLISH_STATE_CHANGED,Bo(pi({},Be),{error:Pe}))}),J.once("first-video-frame",Be=>{e.emit(Hi.FIRST_VIDEO_FRAME,Bo(pi({},Be),{streamType:Wd(Be.streamType)}))}),e._listenOutputTrackChanged(J),o.streamType==="main"&&(J.mediaType=4);let gA=null,CA={},MA={};b&&(Ye(b.profile)||(Yn(b.profile)?sb[b.profile]&&J.setProfile(sb[b.profile]):J.setProfile(b.profile)),b.systemAudio&&(CA.systemAudio=!0,CA.echoCancellation=b.echoCancellation,CA.noiseSuppression=b.noiseSuppression,CA.autoGainControl=b.autoGainControl),Ye(b.fillMode)||(MA.objectFit=b.fillMode),b.videoTrack&&(CA.videoTrack=b.videoTrack),b.audioTrack&&(CA.audioTrack=b.audioTrack),b.captureElement&&(CA.captureElement=b.captureElement),b.preferDisplaySurface&&(CA.preferDisplaySurface=b.preferDisplaySurface),b.qosPreference&&(CA.contentHint=U2(b.qosPreference)));let ee=yield J.capture(CA);if(J.mediaTrack.addEventListener(YA.ENDED,()=>{e._stopScreenShare(),e.emit(Hi.SCREEN_SHARE_STOPPED)}),ee.getAudioTracks()[0]){gA=new QK(e._room.audioManager);let Be=ee.getAudioTracks()[0];(a=o.option)!=null&&a.systemAudio&&!((c=o.option)!=null&&c.audioTrack)&&(gA.sourceTrack=Be),yield gA.setInputMediaStreamTrack(Be),wr(S)&&gA.mediaTrack&&(gA.mediaTrack.enabled=!S),e._speakerId&&gA.setAudioOutput(e._speakerId)}if(XE(J,J).add("player-state-changed",Be=>{e.emit(Hi.VIDEO_PLAY_STATE_CHANGED,Bo(pi({},Be),{userId:"",streamType:"sub"}))}),V){let Be=e._localVideoTrack&&((d=e._localVideoConfig)==null?void 0:d.publish),Pe=!(o.streamType==="main"&&Be);e._room.isJoined?(Pe?e._room.publish(J).catch(()=>{}):(V=!1,e._log.warn("main stream is already published, screen share main will not publish")),gA&&(e._checkScreenAudioEchoCancellation(J,gA),e._room.publish(gA).catch(()=>{}))):Pe||(V=!1)}e._localScreenTrack=J,e._room.capturedLocalAuxVideoTrack=J,e._localScreenAudioTrack=gA,e._localScreenConfig=Bo(pi({},o),{view:C,publish:V}),yield e._updateVideoPlayOption({view:C,playOption:MA,track:J})}()})}updateScreenShare(e){return KA(this,null,function*(){var o,a;if(!this._localScreenTrack||!this._localScreenConfig)return;let{view:c,publish:d,muteSystemAudio:C,option:y}=e,S=d,b={};if(y){if(Ye(y.fillMode)||(b.objectFit=y.fillMode),y.qosPreference){let V=U2(y.qosPreference);this._localScreenTrack.setContentHint(V)}y.videoTrack&&this._localScreenTrack.setInputMediaStreamTrack(y.videoTrack),y.audioTrack&&this._localScreenAudioTrack&&this._localScreenAudioTrack.setInputMediaStreamTrack(y.audioTrack)}if(this._room.isJoined&&!Ye(S)){if(S&&!this._localScreenConfig.publish){let V=this._localVideoTrack&&((o=this._localVideoConfig)==null?void 0:o.publish);this._localScreenConfig.streamType==="main"&&V?(S=!1,this._log.warn("main stream is already published, screen share main will not publish")):this._room.publish(this._localScreenTrack).catch(()=>{}),this._localScreenAudioTrack&&this._room.publish(this._localScreenAudioTrack).catch(()=>{})}if(this._localScreenConfig.publish&&!S){let V=[this._localScreenTrack];this._localScreenAudioTrack&&V.push(this._localScreenAudioTrack),V.forEach(J=>this._room.unpublish(J).catch(()=>{}))}}(a=this._localScreenAudioTrack)!=null&&a.mediaTrack&&wr(C)&&(this._localScreenAudioTrack.mediaTrack.enabled=!C),yield this._updateVideoPlayOption({view:c,playOption:b,track:this._localScreenTrack,prevConfig:this._localScreenConfig}),qh(this._localScreenConfig,Bo(pi({},e),{publish:S}))})}stopScreenShare(){return KA(this,null,function*(){return yield this._stopScreenShare()})}startRemoteVideo(e){return KA(this,null,function*(){let{view:o,userId:a,streamType:c,option:d}=e,C="".concat(a,"_").concat(c);if(this._remoteVideoConfigMap.has(C))return void this._log.warn("remote video has already started. userId:".concat(a,", streamType:").concat(c));let y=this._room.remotePublishedUserMap.get(a);if(!y)return;let S={},b=c==="main"?y.remoteVideoTrack:y.remoteAuxiliaryTrack,V=this._bindRemoteVideoTrackEvents(b);this._listenOutputTrackChanged(b),d&&(Ye(d.fillMode)||(S.objectFit=d.fillMode),Ye(d.mirror)||(S.mirror=d.mirror),Ye(d.poster)||(S.poster=d.poster),S.canvasRender=d.canvasRender,c==="main"&&!Ye(d.small)&&(!y.remoteVideoTrack.isSubscribing&&!y.remoteVideoTrack.isSubscribed&&y.remoteVideoTrack.setMediaType(d.small?8:4),this._room.changeType(d.small,b.user)),Ye(d.draggable)||b.setDraggable(d.draggable)),S.isLiveStream=!!this._playbackQualityList.find(J=>J.userId===a&&J.streamType===c),yield this._room.subscribe(b),yield this._enableVideoDecodeFallback(b,c),yield this._updateVideoPlayOption({view:o,playOption:S,track:b}),this._emitTrackEvent(b),this._remoteVideoConfigMap.set(C,{config:e,handlers:V}),d&&!Ye(d.receiveWhenViewVisible)&&this._observeView({remoteTrack:b,view:o,receiveWhenViewVisible:d.receiveWhenViewVisible,viewRoot:d?.viewRoot})})}updateRemoteVideo(e){return KA(this,null,function*(){var o,a;let{view:c,userId:d,streamType:C,option:y,mute:S}=e,b="".concat(d,"_").concat(C),V=this._remoteVideoConfigMap.get(b);if(!V||!this._room.remotePublishedUserMap.has(d))return;let J={};y&&(Ye(y.fillMode)||(J.objectFit=y.fillMode),Ye(y.mirror)||(J.mirror=y.mirror));let gA=null,CA=this._room.remotePublishedUserMap.get(d);if(C==="main"&&CA!=null&&CA.muteState.hasVideo&&(gA=CA.remoteVideoTrack),C==="sub"&&CA!=null&&CA.muteState.hasAuxiliary&&(gA=CA.remoteAuxiliaryTrack),!gA)return;let{config:MA}=V;C==="main"&&y&&!Ye(y.small)&&this._room.changeType(y.small,gA.user),y&&!Ye(y.draggable)&&gA.setDraggable(y.draggable),y&&(wr(y.pictureInPicture)&&(y.pictureInPicture?yield gA.player.enterPictureInPicture():yield gA.player.exitPictureInPicture()),wr(y.fullScreen)&&(y.fullScreen?yield gA.player.enterFullscreen():yield gA.player.exitFullscreen())),wr(S)&&(gA.ignoreUpdatePlayingState=!0,S?(yield gA.player.pause(),yield this.room.unsubscribe(gA)):(yield this.room.subscribe(gA),yield gA.player.resume(!0))),yield this._updateVideoPlayOption({view:c,playOption:J,track:gA,prevConfig:MA}),qh(MA,e);let ee=Ye(y?.receiveWhenViewVisible)?(o=MA.option)==null?void 0:o.receiveWhenViewVisible:y.receiveWhenViewVisible,Be=Ye(c)?MA.view:c,Pe=Ye(y?.viewRoot)?(a=MA.option)==null?void 0:a.viewRoot:y.viewRoot;this._observeView({remoteTrack:gA,view:Be,receiveWhenViewVisible:ee,viewRoot:Pe})})}stopRemoteVideo(e){return KA(this,null,function*(){return this._stopRemoteVideo(e)})}_stopRemoteVideo(e){let o=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1];return KA(this,null,function*(){let a=[],c=this._room.remotePublishedUserMap.get(e.userId);if(c){let{muteState:d,remoteVideoTrack:C,remoteAuxiliaryTrack:y}=c;e.streamType==="main"&&(C.stop(),d.hasVideo&&a.push(C)),e.streamType==="sub"&&(y.stop(),d.hasAuxiliary&&a.push(y))}for(let d of a)o&&(delete d.ignoreUpdatePlayingState,yield this._room.unsubscribe(d),this._mediaTrackMap.delete(d.outMediaTrack));this._removeRemoteVideoConfig(e.userId,e.streamType)})}_removeRemoteVideoConfig(e,o){let a="".concat(e,"_").concat(o),c=this._remoteVideoConfigMap.get(a);if(c&&(c.observer&&c.observer.disconnect(),c.handlers)){let d=this._room.remotePublishedUserMap.get(e);if(d){let C=o==="main"?d.remoteVideoTrack:d.remoteAuxiliaryTrack;this._unbindRemoteVideoTrackEvents(C,c.handlers)}}this._remoteVideoConfigMap.delete(a)}_bindRemoteVideoTrackEvents(e){let o={onEnterPIP:()=>KA(this,null,function*(){yield e.player.enterPIPPromise,this.emit(Hi.PICTURE_IN_PICTURE_STATE_CHANGED,{streamType:Wd(e.streamType),userId:e.userId,isPictureInPicture:!0,pictureInPictureWindow:e.player.pipWindow})}),onLeavePIP:()=>{this.emit(Hi.PICTURE_IN_PICTURE_STATE_CHANGED,{streamType:Wd(e.streamType),userId:e.userId,isPictureInPicture:!1})},onEnterFullScreen:()=>{this.emit(Hi.FULL_SCREEN_STATE_CHANGED,{streamType:Wd(e.streamType),userId:e.userId,isFullScreen:!0})},onLeaveFullScreen:()=>{this.emit(Hi.FULL_SCREEN_STATE_CHANGED,{streamType:Wd(e.streamType),userId:e.userId,isFullScreen:!1})},onDecodeFailed:()=>{this.emit(Hi.ERROR,new Ro({code:vo.OPERATION_FAILED,extraCode:5507,message:"video decode failed"}))},onVideoSizeChanged:a=>{this.emit(Hi.VIDEO_SIZE_CHANGED,Bo(pi({},a),{streamType:Wd(a.streamType)}))}};return e.player.on(mo.ENTER_PICTURE_IN_PICTURE,o.onEnterPIP),e.player.on(mo.LEAVE_PICTURE_IN_PICTURE,o.onLeavePIP),e.player.on(mo.ENTER_FULL_SCREEN,o.onEnterFullScreen),e.player.on(mo.LEAVE_FULL_SCREEN,o.onLeaveFullScreen),e.on("decode-failed",o.onDecodeFailed),e.on("video-size-changed",o.onVideoSizeChanged),o}_unbindRemoteVideoTrackEvents(e,o){e.player.off(mo.ENTER_PICTURE_IN_PICTURE,o.onEnterPIP),e.player.off(mo.LEAVE_PICTURE_IN_PICTURE,o.onLeavePIP),e.player.off(mo.ENTER_FULL_SCREEN,o.onEnterFullScreen),e.player.off(mo.LEAVE_FULL_SCREEN,o.onLeaveFullScreen),e.off("decode-failed",o.onDecodeFailed),e.off("video-size-changed",o.onVideoSizeChanged)}muteRemoteAudio(e,o){return KA(this,null,function*(){this._remoteAudioMuteMap.set(e,o);try{if(e==="*")if(o)yield this._stopRemoteAudio({userId:e});else{let a=[...this._room.remotePublishedUserMap.values()];for(let c of a)c.muteState.hasAudio&&!this._remoteAudioConfigMap.has(c.userId)&&this.room.isJoined&&(yield this._startRemoteAudio({userId:c.userId}))}else o?yield this._stopRemoteAudio({userId:e}):!this._remoteAudioConfigMap.has(e)&&this.room.isJoined&&(yield this._startRemoteAudio({userId:e}))}catch(a){throw a.code!==vo.OPERATION_ABORT&&this._remoteAudioMuteMap.delete(e),a}})}setRemoteAudioVolume(e,o){if(e==="*"){this._remoteAudioVolumeMap.set("*",o),this._remoteAudioVolumeMap.forEach((c,d)=>this._remoteAudioVolumeMap.set(d,o));let a=[...this._room.remotePublishedUserMap.values()];for(let c of a)this._remoteAudioVolumeMap.set(c.userId,o),c.remoteAudioTrack.isSubscribed&&this._updateAudioPlayOption({playOption:{volume:o},track:c.remoteAudioTrack})}else if(e){let a=this._room.remotePublishedUserMap.get(e);this._remoteAudioVolumeMap.set(e,o),a&&a.remoteAudioTrack.isSubscribed&&this._updateAudioPlayOption({playOption:{volume:o},track:a.remoteAudioTrack})}}startPlugin(e,o){return KA(this,null,function*(){return e.start(o)})}updatePlugin(e,o){return KA(this,null,function*(){return e.update(o)})}stopPlugin(e,o){return KA(this,null,function*(){return e.stop(o)})}enableAudioVolumeEvaluation(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:2e3,o=arguments.length>1&&arguments[1]!==void 0&&arguments[1];this._room.enableAudioVolumeEvaluation(e,o)}on(e,o,a){if(this.listeners(e).includes(o))return this;if(this._log.debug("on",e),super.on(e,o,a),this._eventListened.add(e),this.listeners(Hi.AUDIO_FRAME).length>0){let{audioFrameEventConfigMap:c}=this.room.audioManager;c.get("")||c.set("",{enable:!0}),this._localAudioTrack&&this.room.audioManager.handleLocalTrackStarted({userId:"",room:this.room})}return e==="realtime-transcriber-message"&&this._room.subscribeDataChannel(),this}emit(e){for(var o=arguments.length,a=new Array(o>1?o-1:0),c=1;c{d?.abort("off")}),c.clear()}return this}getAudioTrack(){let e,o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{userId:"",streamType:"main"},a=null,c="main",d=!1;if(Yn(o)?e=o:(e=o.userId,d=o.processed===!0,o.streamType&&(c=o.streamType)),e){let C=this._room.remotePublishedUserMap.get(e);C&&(a=C.remoteAudioTrack)}else a=c==="sub"?this._localScreenAudioTrack:this._localAudioTrack;return a?d&&a.outMediaTrack&&a.outMediaTrack!==a.mediaTrack?a.outMediaTrack.clone():a.mediaTrack:null}getVideoTrack(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{userId:"",streamType:"main"},{userId:o="",streamType:a="main",processed:c=!1}=e,d=null;if(o==="")a==="main"&&this._localVideoTrack&&(d=this._localVideoTrack),a==="sub"&&this._localScreenTrack&&(d=this._localScreenTrack);else{let C=this._room.remotePublishedUserMap.get(o);C&&(d=a==="main"?C.remoteVideoTrack:C.remoteAuxiliaryTrack)}return d?c&&d.outMediaTrack&&d.outMediaTrack!==d.mediaTrack?d.outMediaTrack.clone():d.mediaTrack:null}getVideoSnapshot(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{userId:o,streamType:a="main"}=e;if(o){let c=this._room.remotePublishedUserMap.get(o);if(a==="main"&&c!=null&&c.muteState.hasVideo)return c.remoteVideoTrack.getVideoFrame();if(a==="sub"&&c!=null&&c.muteState.hasAuxiliary)return c.remoteAuxiliaryTrack.getVideoFrame()}else{if(a==="main"&&this._localVideoTrack)return this._localVideoTrack.getVideoFrame();if(a==="sub"&&this._localScreenTrack)return this._localScreenTrack.getVideoFrame()}return""}_setCurrentSpeaker(e){var o,a;this._speakerId=e,(o=this._localAudioTrack)==null||o.setAudioOutput(e),(a=this._localScreenAudioTrack)==null||a.setAudioOutput(e),this._room.remotePublishedUserMap.forEach(c=>c.remoteAudioTrack.setAudioOutput(e))}setCurrentSpeaker(e){return KA(this,null,function*(){(yield _M()).forEach(o=>{o.deviceId===e&&(this._setCurrentSpeaker(e),this.emit(Hi.DEVICE_CHANGED,{type:"speaker",action:"active",device:o}),Wl=o)}),this._log.warn('the "setCurrentSpeaker" method of the instance will be deprecated in the future, please use "TRTC.setCurrentSpeaker" instead. For more information, please visit: '.concat(Vh,"/en/TRTC.html#.setCurrentSpeaker"))})}_startRemoteAudio(e){return this._doStartRemoteAudio(e)}_doStartRemoteAudio(e){return KA(this,null,function*(){var o;let{userId:a}=e;if(this._remoteAudioConfigMap.has(a))return void this._log.warn("remote audio has already started. userId:".concat(a));let c=this._room.remotePublishedUserMap.get(a);if(!c)return;let d={},C=c.remoteAudioTrack;C.on("decode-failed",y=>{this.emit(Hi.ERROR,new Ro({code:vo.OPERATION_FAILED,extraCode:5508,message:"audio decode failed"}))}),this._listenOutputTrackChanged(C),this._speakerId&&C.setAudioOutput(this._speakerId);try{let y=(o=this._remoteAudioVolumeMap.get(a))!=null?o:this._remoteAudioVolumeMap.get("*"),S=bn(y)?y:100;d.volume=S,this._remoteAudioConfigMap.set(a,e),yield this._room.subscribe(C),Qa(ga(C,"decode-failed"),rE(ga(C,Zs.INIT)),hl(()=>{this.startPlugin(G5.Name,{track:C,type:"auto",config:{codec:"opus",sampleRate:48e3,numberOfChannels:1}})})),yield this._updateAudioPlayOption({playOption:d,track:C}),U.emit("115",{userId:a,room:this.room}),C.outMediaTrack&&this.room.audioManager.updateAudioReference({type:"add",audioReference:C.outMediaTrack,refId:"ra-".concat(a)})}catch(y){throw this._remoteAudioConfigMap.delete(a),y}this._emitTrackEvent(C)})}_stopRemoteAudio(e){let o=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1];return KA(this,null,function*(){let a=this._room.remotePublishedUserMap.get(e.userId);a&&(a.remoteAudioTrack.stop(),a.muteState.hasAudio&&o&&(yield this._room.unsubscribe(a.remoteAudioTrack)),this._mediaTrackMap.delete(a.remoteAudioTrack.outMediaTrack)),this._remoteAudioConfigMap.delete("".concat(e.userId)),U.emit("116",{userId:e.userId,room:this.room}),this.room.audioManager.updateAudioReference({type:"remove",refId:"ra-".concat(e.userId)})})}_enableVideoDecodeFallback(e,o){let a,c=this._room.videoDecodeFallbackType;c&&this._plugins.has("TRTCVideoDecoder")&&(e.log.debug("remote video will fall back when decode failed",e.id),Qa(ga(e,"decode-failed"),rE(ga(e,Zs.INIT)),IK(()=>{this._room.downlinkVideoCodec!=="h265"&&this.startPlugin("TRTCVideoDecoder",{type:"auto",renderer:"videoFrame",track:e,config:{codec:"avc1.420028"},fallback:c})}),_2(ga(e,"decode-downgrade-state-changed")),hl(d=>{a=d.state,this.emit(Hi.VIDEO_DECODE_DOWNGRADE_STATE_CHANGED,Bo(pi({},d),{streamType:o,userId:e.userId}))},d=>{e.log.error("fallback",d)},()=>{a==="STARTED"&&e.log.info("fallback complete")})))}_updateVideoPlayOption(e){return KA(this,arguments,function(o){let{view:a,playOption:c,track:d,prevConfig:C}=o;return function*(){if(d.setMirror(c.mirror),Ye(a)&&C&&C.view&&!l0(c)){let y=jS(C.view);y.length>0&&(yield d.play(y,c))}if(!Ye(a)){let y=jS(a);y.length>0?yield d.play(y,c):d.stop()}}()})}_updateAudioPlayOption(e){return KA(this,arguments,function(o){var a=this;let{playOption:c={},track:d,prevConfig:C}=o;return function*(){if(!d.isPlayCalled)try{yield d.play(null,c)}catch{}if(Ye(c.muted)||d.setPlayerMute(c.muted),Ye(c.volume)||d.setAudioVolume(c.volume/100),d instanceof GM&&d.mediaTrack){let y=c.muted===!1&&!Ye(c.volume)&&c.volume>0?"add":"remove";a.room.audioManager.updateAudioReference({type:y,audioReference:d.mediaTrack,refId:"em"})}else if(d instanceof b2){let y=c.muted?0:c.volume;if(Ye(y))return;a.room.audioManager.updateAudioReference({type:"updateVolume",refId:"ra-".concat(d.userId),volume:c.volume})}}()})}_listenOutputTrackChanged(e){e.listeners("output-media-track-changed").length===0&&e.on("output-media-track-changed",()=>this._emitTrackEvent(e,!1))}_emitTrackEvent(e){let o=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1],a=e.isRemote?e.userId:"";e.outMediaTrack&&(o&&this._mediaTrackMap.get(e.outMediaTrack)===a||(this._mediaTrackMap.set(e.outMediaTrack,a),this.emit(Hi.TRACK,{userId:a,streamType:Wd(e.streamType),track:e.outMediaTrack,sourceTrack:e.mediaTrack})))}_checkTrackToPublish(){var e,o,a;let c=[];if((e=this._localAudioConfig)!=null&&e.publish&&this._localAudioTrack&&c.push(this._localAudioTrack),(o=this._localVideoConfig)!=null&&o.publish&&this._localVideoTrack&&c.push(this._localVideoTrack),(a=this._localScreenConfig)!=null&&a.publish&&(this._localScreenTrack&&c.push(this._localScreenTrack),this._localScreenAudioTrack&&c.push(this._localScreenAudioTrack),this._checkScreenAudioEchoCancellation(this._localScreenTrack,this._localScreenAudioTrack)),c.length!==0)return Promise.all(c.map(d=>this._room.publish(d).catch(()=>{})))}_observeView(e){let{remoteTrack:o,view:a,receiveWhenViewVisible:c,viewRoot:d}=e;if(Ye(a)||Ye(c))return;let C=this._remoteVideoConfigMap.get("".concat(o.userId,"_").concat(Wd(o.streamType)));if(!C)return;let y=C.observer||void 0;if(a===null||Ra(a)&&a.length===0||!c)return y?.disconnect(),void(o.isSubscribed||(this._log.info("_observeView observer disconnect, resubscribe",o.userId,o.strMediaType),this._room.subscribe(o).catch(()=>{})));let S=C.visibleViewMap||new Map,b=-1;(!y||y.root!==d)&&(y?.disconnect(),S.clear(),y=new IntersectionObserver(J=>{J.forEach(gA=>{S.set(gA.target,gA.isIntersecting),o.log.info("view ".concat(gA.target.id," is").concat(gA.isIntersecting?"":" not"," visible"))}),clearTimeout(b),b=window.setTimeout(()=>{[...S.values()].find(gA=>gA)?o.isSubscribed||this._room.subscribe(o).catch(()=>{}):o.isSubscribed&&this._room.unsubscribe(o).catch(()=>{})},200)},{root:d}));let V=new Set(jS(a));S.forEach((J,gA)=>{V.has(gA)||(y.unobserve(gA),S.delete(gA))}),V.forEach(J=>{S.set(J,!0),y.observe(J)}),y.takeRecords().forEach(J=>{S.set(J.target,J.isIntersecting)}),C.visibleViewMap=S,C.observer=y}_exitRoom(){return KA(this,null,function*(){this._room.isJoined&&(yield this._room.leave()),this._clearRemoteTracks()})}_stopScreenShare(){return KA(this,null,function*(){var e,o;if(this._localScreenTrack){if(this._room.isJoined){let a=[];(e=this._localScreenConfig)!=null&&e.publish&&a.push(this._localScreenTrack),this._localScreenAudioTrack&&a.push(this._localScreenAudioTrack),yield Promise.all(a.map(c=>this._room.unpublish(c).catch(()=>{})))}this._localScreenTrack.stop(),this._localScreenTrack.close(),this._localScreenAudioTrack&&(((o=this._localScreenAudioTrack.trackSettings)==null?void 0:o.echoCancellation)===!1&&this.stopPlugin("AudioProcessor"),this._localScreenAudioTrack.stop(),this._localScreenAudioTrack.close(),this._room.audioManager.removeInput(this._localScreenAudioTrack),this._localScreenAudioTrack=null),kn(this._localScreenTrack),this._localScreenTrack=null,delete this._room.capturedLocalAuxVideoTrack,this._localScreenConfig=null}})}_checkScreenAudioEchoCancellation(e,o){return KA(this,null,function*(){var a,c;if(!e||!o)return;let d=(a=e.trackSettings)==null?void 0:a.displaySurface;if(((c=o.trackSettings)==null?void 0:c.echoCancellation)===!1&&(d==="monitor"||d==="browser"&&e.isShareCurrentTab)){this._log.warn("echoCancellation of screen audio track is disable. Try starting audioProcessor plugin");try{yield this.startPlugin("AudioProcessor",{sdkAppId:Number(this.room.sdkAppId),userId:this._room.userId,userSig:this.room.userSig,isScreenAudioNeedAudioProcess:!0,isLocalAudioNeedAudioProcess:!1})}catch(C){this._log.warn("start audioProcessor plugin failed: ",C)}}})}_onLocalTrackCaptured(e){let{track:o}=e;o.kind==="audio"&&(!Wl||Nk(Wl))&&(this._initActiveSpeaker(),U.off("102",this._onLocalTrackCaptured,this))}_initActiveSpeaker(){return KA(this,null,function*(){if(Wl&&!Nk(Wl))this.emit(Hi.DEVICE_CHANGED,{type:"speaker",action:"active",device:Wl});else{let e=yield _M();e[0]&&!Nk(e[0])?(Wl=e[0],this.emit(Hi.DEVICE_CHANGED,{type:"speaker",action:"active",device:e[0]})):U.on("102",this._onLocalTrackCaptured,this)}})}_onAudioAvailable(e){let{userId:o}=e,a=this._remoteAudioMuteMap.has(o)?this._remoteAudioMuteMap.get(o):this._remoteAudioMuteMap.get("*");(a===!1||this._room.autoReceiveAudio&&!a)&&this._doStartRemoteAudio({userId:o}).catch(()=>{})}_onVideoAvailable(e){let{userId:o,streamType:a}=e;if(!this._room.autoReceiveVideo)return;let c=this._room.remotePublishedUserMap.get(o);if(c){let d=a==="main"?c.remoteVideoTrack:c.remoteAuxiliaryTrack,C=[d];this._room.autoReceiveAudio&&c.remoteAudioTrack.isAvailable&&C.push(c.remoteAudioTrack),this._room.subscribe(...C).then(()=>{this._emitTrackEvent(d)}).catch(()=>{})}}_onAudioUnavailable(e){let{userId:o,muteState:a}=e;a.hasAudio&&a.audioMuted||this._stopRemoteAudio({userId:o},!1).catch(()=>{})}_onVideoUnavailable(e){let{userId:o,streamType:a}=e;this._stopRemoteVideo({userId:o,streamType:a},!1).catch(()=>{})}_onDataChannelAvailable(){if(this.listeners("realtime-transcriber-message").length>0)return this._room.subscribeDataChannel()}sendSEIMessage(e,o){var a;let c=this._plugins.get("SEI");c&&(c.update({buffer:e,options:Bo(pi({seiPayloadType:243},o),{small:!((a=this._localVideoTrack)==null||!a.small)})}),Ai.addCount({key:5e5,useUV:!0}))}sendCustomMessage(e){var o,a;(a=(o=this._room).sendCustomMessage)==null||a.call(o,e),Ai.addCount({key:500001,useUV:!0})}callExperimentalAPI(e,o){return KA(this,null,function*(){return this._log.info("callExperimentalAPI(".concat(e,", ").concat(JSON.stringify(o),")")),FtA.call(e,pi({trtcInstance:this},o))})}static setLogLevel(e,o){QA.setLogLevel(e),Ye(o)||(o?QA.enableUploadLog():QA.disableUploadLog())}static isSupported(){return Ik(em.frameWorkType)}static getPermissions(e){return KA(this,arguments,function(o){let{request:a=!0,types:c=["camera","microphone"]}=o;return function*(){a&&(yield j2.request(c).catch(y=>{var S;return QA.error("getPermissions request failed, error: ".concat((S=y?.message)!=null?S:y))}));let[d,C]=yield Promise.all([j2.get("camera"),j2.get("microphone")]);return{camera:d,microphone:C}}()})}static getCameraList(){return jp(!(arguments.length>0&&arguments[0]!==void 0)||arguments[0])}static getMicrophoneList(){return Kp(!(arguments.length>0&&arguments[0]!==void 0)||arguments[0])}static getSpeakerList(){return _M(!(arguments.length>0&&arguments[0]!==void 0)||arguments[0])}static setCurrentSpeaker(e){return KA(this,null,function*(){if(Ja&&(e===Hk.SPEAKER||e===Hk.HEADSET)){let o=yield em.getMicrophoneList(),a="";return o.forEach(c=>{c.label===e&&(a=c.deviceId)}),a?void Wk.forEach(c=>KA(null,null,function*(){c._localAudioTrack&&(yield c.updateLocalAudio({option:{microphoneId:a}}))})):void 0}(yield _M()).forEach(o=>{o.deviceId===e&&(Wk.forEach(a=>{a._setCurrentSpeaker(e),a.emit(Hi.DEVICE_CHANGED,{type:"speaker",action:"active",device:o})}),Wl=o)})})}static _addKVStat(e){let{type:o,key:a,value:c,base:d,useUV:C,version:y,max:S}=e;switch(y&&(jh.version=y),o){case"count":jh.addCount({key:a,useUV:C});break;case"enum":jh.addEnum({key:a,value:c,useUV:C});break;case"number":jh.addNumber({key:a,value:c,split:d,max:S})}}get localVideoTrack(){return this._localVideoTrack}get localScreenTrack(){return this._localScreenTrack}get localScreenAudioTrack(){return this._localScreenAudioTrack}};Y(Ss,"VERSION",v5),Y(Ss,"_loggerManager",QA),Y(Ss,"EVENT",Hi),Y(Ss,"ERROR_CODE",vo),Y(Ss,"TYPE",Hk),Y(Ss,"frameWorkType",30),di([pa({replaceArg:A=>({argIndex:0,value:{name:"plugin"in A?A.plugin.Name:A.Name,assetsPath:"assetsPath"in A?A?.assetsPath:"default"}})})],Ss.prototype,"use"),di([lu(jl.TRTC.enterRoom),UM("room",(A,e)=>{let[o]=A,[a]=e;return(o.roomId||o.strRoomId)===(a.roomId||a.strRoomId)&&o.userId===a.userId&&o.sdkAppId===a.sdkAppId}),Hr(A=>function(e){return this._log.setUserId(e.userId),this._log.setSdkAppId(e.sdkAppId),A.call(this,e)}),pa()],Ss.prototype,"enterRoom"),di([pa()],Ss.prototype,"exitRoom"),di([lu(jl.TRTC.switchRoom),pa(),Gk()],Ss.prototype,"switchRoom"),di([lu(jl.TRTC.switchRole),t_("room",{merge:(A,e)=>e}),pa()],Ss.prototype,"switchRole"),di([pa()],Ss.prototype,"destroy"),di([lu(jl.TRTC.startLocalAudio),UM("audio",(A,e)=>{let[o]=A,[a]=e;var c,d;return((c=o?.option)==null?void 0:c.microphoneId)===((d=a?.option)==null?void 0:d.microphoneId)}),pa()],Ss.prototype,"startLocalAudio"),di([lu(jl.TRTC.updateLocalAudio),t_("audio",{debounce:{delay:200,getKey:()=>"".concat(b5,"-localAudio"),isNeedToDebounce:A=>{var e;return!Ye((e=A.option)==null?void 0:e.captureVolume)}}}),pa()],Ss.prototype,"updateLocalAudio"),di([FM("audio"),pa()],Ss.prototype,"stopLocalAudio"),di([lu(jl.TRTC.startLocalVideo),UM("video",(A,e)=>{let[o]=A,[a]=e;var c,d;return((c=o?.option)==null?void 0:c.cameraId)===((d=a?.option)==null?void 0:d.cameraId)}),pa()],Ss.prototype,"startLocalVideo"),di([lu(jl.TRTC.updateLocalVideo),t_("video"),pa()],Ss.prototype,"updateLocalVideo"),di([FM("video"),pa()],Ss.prototype,"stopLocalVideo"),di([lu(jl.TRTC.startScreenShare),UM("screen",()=>!0),pa()],Ss.prototype,"startScreenShare"),di([lu(jl.TRTC.updateScreenShare),t_("screen"),pa()],Ss.prototype,"updateScreenShare"),di([pa()],Ss.prototype,"stopScreenShare"),di([lu(jl.TRTC.startRemoteVideo),UM(A=>"v".concat(A.userId).concat(A.streamType),()=>!0),pa({getRemoteId:A=>"".concat(A.userId,"_").concat(A.streamType)})],Ss.prototype,"startRemoteVideo"),di([lu(jl.TRTC.updateRemoteVideo),t_(A=>"v".concat(A.userId).concat(A.streamType)),pa({getRemoteId:A=>"".concat(A.userId,"_").concat(A.streamType)})],Ss.prototype,"updateRemoteVideo"),di([lu(jl.TRTC.stopRemoteVideo),Hr(A=>function(e){return KA(this,null,function*(){if(e.userId==="*"){let o=[];return this._room.remotePublishedUserMap.forEach(a=>{this._remoteVideoConfigMap.has("".concat(a.userId,"_main"))&&o.push(this.stopRemoteVideo({streamType:"main",userId:a.userId}).catch(()=>{})),this._remoteVideoConfigMap.has("".concat(a.userId,"_sub"))&&o.push(this.stopRemoteVideo({streamType:"sub",userId:a.userId}).catch(()=>{}))}),Promise.all(o)}return A.call(this,e)})}),pa({getRemoteId:A=>"".concat(A.userId,"_").concat(A.streamType)})],Ss.prototype,"stopRemoteVideo"),di([FM(A=>"v".concat(A.userId).concat(A.streamType))],Ss.prototype,"_stopRemoteVideo"),di([lu(...jl.TRTC.muteRemoteAudio),pa({getRemoteId:A=>A})],Ss.prototype,"muteRemoteAudio"),di([R5(...jl.TRTC.setRemoteAudioVolume),function(A,e){return Hr((o,a)=>function(){for(var c=arguments.length,d=new Array(c),C=0;C{var J;(J=i_.get(this))==null||J.delete(S)},A);y.set(S,V)}else{clearTimeout(b);let V=window.setTimeout(()=>{var J;o.apply(this,d),(J=i_.get(this))==null||J.delete(S)},A);y.set(S,V)}})}(200,A=>A),pa({getRemoteId:A=>A})],Ss.prototype,"setRemoteAudioVolume"),di([RK("start"),TM(A=>{var e;return(e=A.afterStart)==null?void 0:e.call(A)}),UM((A,e)=>A.disableRandomCall?null:A.getAlias()+A.getGroup(e)),pa({replaceArg:A=>({argIndex:0,value:A.getName()}),getKVReportKey:A=>s2[A.getName()],ignoreLog:A=>A.getName()==="Debug",ignoreErrorLog:A=>A.getName()==="AudioProcessor"})],Ss.prototype,"startPlugin"),di([RK("update"),t_((A,e)=>A.disableRandomCall?null:A.getAlias()+A.getGroup(e),{merge:(A,e)=>(qh(A[1],e[1]),A)}),pa({replaceArg:A=>({argIndex:0,value:A.getName()}),getKVReportKey:A=>ay[A.getName()]})],Ss.prototype,"updatePlugin"),di([RK("stop"),FM((A,e)=>{if(A.disableRandomCall)return null;let o=A.getGroup(e),a=A.getAlias();return o==="*"?new RegExp("".concat(a,".*")):a+o}),pa({replaceArg:A=>({argIndex:0,value:A.getName()}),getKVReportKey:A=>F0[A.getName()]})],Ss.prototype,"stopPlugin"),di([R5(...jl.TRTC.enableAudioVolumeEvaluation)],Ss.prototype,"enableAudioVolumeEvaluation"),di([pa()],Ss.prototype,"getVideoSnapshot"),di([pa()],Ss.prototype,"_setCurrentSpeaker"),di([UM(A=>"a".concat(A.userId),()=>!0)],Ss.prototype,"_startRemoteAudio"),di([Hr(A=>function(e){return KA(this,null,function*(){return e.userId==="*"?Promise.all([...this._room.remotePublishedUserMap.values()].map(o=>this._stopRemoteAudio(Bo(pi({},e),{userId:o.userId})).catch(()=>{}))):A.call(this,e)})}),FM(A=>"a".concat(A.userId))],Ss.prototype,"_stopRemoteAudio"),di([FM("room")],Ss.prototype,"_exitRoom"),di([FM("screen")],Ss.prototype,"_stopScreenShare"),di([lu(...jl.TRTC.sendSEIMessage),$4({timesInSecond:30,maxSizeInSecond:8e3,getSize:function(){for(var A=arguments.length,e=new Array(A),o=0;oA.data.byteLength})],Ss.prototype,"sendCustomMessage"),di([pa()],Ss.prototype,"callExperimentalAPI"),di([OM()],Ss,"create"),di([lu(jl.TRTC.create)],Ss,"_create"),di([OM()],Ss,"setLogLevel"),di([OM()],Ss,"isSupported"),di([OM(),pa()],Ss,"getPermissions"),di([OM()],Ss,"getCameraList"),di([OM()],Ss,"getMicrophoneList"),di([OM()],Ss,"getSpeakerList");var zk=Ss,xtA=class{constructor(){Y(this,"_set",new Set),U.on(sA.LEAVE_SUCCESS,this.delete,this),U.on(sA.SWITCH_ROOM_SUCCESS,this.handleSwitchRoomSuccess,this)}add(A){let{room:e,roomId:o}=A;if(e.scene==="rtc")return;let a=this.getKey(e.userId,o||e.roomId,e.sdkAppId,e.useStringRoomId);this._set.add(a)}delete(A){let{room:e,roomId:o}=A;if(e.scene==="rtc")return;let a=this.getKey(e.userId,e.roomId||o,e.sdkAppId,e.useStringRoomId);this._set.delete(a)}getKey(A,e,o,a){return"".concat(o,"_").concat(e,"_").concat(A,"_").concat(a)}isJoined(A){let{userId:e,roomId:o,sdkAppId:a,room:c}=A;return c.scene!=="rtc"&&this._set.has(this.getKey(e,o,a,c.useStringRoomId))}handleSwitchRoomSuccess(A){let{room:e,currentRoomId:o,targetRoomId:a}=A;e.scene!=="rtc"&&(this._set.delete(this.getKey(e.userId,o,e.sdkAppId,e.useStringRoomId)),this._set.add(this.getKey(e.userId,a,e.sdkAppId,e.useStringRoomId)))}};function YtA(){return KA(this,null,function*(){let A,e;try{let CA=yield Kp();A=CA&&CA.length}catch{}try{let CA=yield jp();e=CA&&CA.length}catch{}let o={microphone:A,camera:e},{isH264EncodeSupported:a,isVp8EncodeSupported:c,isH264DecodeSupported:d,isVp8DecodeSupported:C,isH265EncodeSupported:y,isH265DecodeSupported:S}=this.checkSystemResult.detail,b=oe.basis(),V={webRTC:b.isWebRTCSupported,getUserMedia:b.isGetUserMediaSupported,webSocket:b.isWebSocketsSupported,screenShare:b.isScreenShareSupported,webAudio:b.isWebAudioSupported,h264Encode:a,h264Decode:d,vp8Encode:c,vp8Decode:C,h265Encode:y,h265Decode:S},J={browser:b.browser,os:b.os,trtc:V,devices:o},gA={isWebCodecSupported:b.isWebCodecSupported,isMediaSessionSupported:b.isMediaSessionSupported,isWebTransportSupported:b.isWebTransportSupported};sn.uploadEvent({log:"trtcstats-".concat(JSON.stringify(J)),userId:this.userId}),this._log.info("TrtcStats-".concat(JSON.stringify(J))),sn.uploadEvent({log:"trtcadvancedstats-".concat(JSON.stringify(gA)),userId:this.userId}),yM()})}var VtA=gc(Hl()),k5="1",UK="2",Zk="3",JtA="4",W2="5",HtA="6",z2="7",L5="8",Xh={CLIENT_BANNED:9,CHANNEL_SETUP_RESULT:19,CHANNEL_RECONNECT_RESULT:514,JOIN_ROOM_RESULT:20,PEER_JOIN:4134,PEER_LEAVE:4135,STREAM_ADDED:16,STREAM_REMOVED:18,UPLINK_NETWORK_STATS:22,UPDATE_REMOTE_MUTE_STAT:23,PUBLISH_RESULT:4098,PUBLISH_STATE_CHANGE_RESULT:4112,UNPUBLISH_RESULT:4100,SUBSCRIBE_RESULT:4102,UNSUBSCRIBE_RESULT:4104,SUBSCRIBE_CHANGE_RESULT:4106,MUTE_RESULT:4108,UPDATE_OFFER_RESULT:4128,START_PUBLISH_TENCENT_CDN_RES:1286,STOP_PUBLISH_TENCENT_CDN_RES:1288,START_PUBLISH_GIVEN_CDN_RES:777,STOP_PUBLISH_GIVEN_CDN_RES:779,START_MIX_TRANSCODE_RES:781,STOP_MIX_TRANSCODE_RES:783,START_PUBLISH_CDN_STREAM_RES:8196,UPDATE_PUBLISH_CDN_STREAM_RES:8198,STOP_PUBLISH_CDN_STREAM_RES:8200,USER_LIST_RES:4137,SWITCH_ROLE_RES:4110,UPDATE_CONSTRAINT_CONFIG_RES:772,REBUILD_PEER_CONNECTION_RES:4150,SPC_PUBLISH_RESULT:4146,SPC_SUBSCRIBE_RESULT:4156,ABILITY_STATUS_REPORT_RESULT:4158,SERVER_FIRST_PACKAGE_RECEIVED:5e3,RECEIVE_CUSTOM_MSG:4140,FALLBACK_CODEC:66,SEND_SWITCH_ROOM_RES:4160,SEND_SWITCH_ROOM_SUBED_REQ:4161,UPDATE_NETWORK_TIME_RESULT:5001,CUSTOM_CMD_RES:8220},qtA=[Xh.UPDATE_REMOTE_MUTE_STAT,Xh.UPLINK_NETWORK_STATS,Xh.USER_LIST_RES,Xh.MUTE_RESULT,Xh.SERVER_FIRST_PACKAGE_RECEIVED,Xh.RECEIVE_CUSTOM_MSG,Xh.UPDATE_NETWORK_TIME_RESULT],ls={CLIENT_BANNED:"client-banned",CHANNEL_SETUP_RESULT:"channel-setup-result",CHANNEL_RECONNECT_RESULT:"channel-reconnect-result",JOIN_ROOM_RESULT:"join-room-result",PEER_JOIN:"peer-join",PEER_LEAVE:"peer-leave",STREAM_ADDED:"stream-added",STREAM_REMOVED:"stream-removed",UPLINK_NETWORK_STATS:"uplink-network-stats",UPDATE_REMOTE_MUTE_STAT:"update-remote-mute-stat",PUBLISH_RESULT:"publish-result",PUBLISH_STATE_CHANGE_RESULT:"publish-state-change-result",UNPUBLISH_RESULT:"unpublish-result",SUBSCRIBE_RESULT:"subscribe-result",SUBSCRIBE_CHANGE_RESULT:"subscribe-change-result",UNSUBSCRIBE_RESULT:"unsubscribe-result",UPDATE_OFFER_RESULT:"update-offer-result",START_PUBLISH_TENCENT_CDN_RES:"start-publish-tencent-cdn-res",STOP_PUBLISH_TENCENT_CDN_RES:"stop-publish-tencent-cdn-res",START_PUBLISH_GIVEN_CDN_RES:"start-publish-given-cdn-res",STOP_PUBLISH_GIVEN_CDN_RES:"stop-publish-given-cdn-res",START_MIX_TRANSCODE_RES:"start-mix-transcode-res",STOP_MIX_TRANSCODE_RES:"stop-mix-transcode-res",START_PUBLISH_CDN_STREAM_RES:"start-publish-cdn-stream-res",UPDATE_PUBLISH_CDN_STREAM_RES:"update-publish-cdn-stream-res",STOP_PUBLISH_CDN_STREAM_RES:"stop-publish-cdn-stream-res",USER_LIST_RES:"user-list-res",SWITCH_ROLE_RES:"switch_role_res",MUTE_RESULT:"mute-result",UPDATE_CONSTRAINT_CONFIG_RES:"update-contraint-config-res",REBUILD_PEER_CONNECTION_RES:"rebuild-pc-res",SPC_PUBLISH_RESULT:"spc-publish-result",SPC_SUBSCRIBE_RESULT:"spc-subscribe-result",ABILITY_STATUS_REPORT_RESULT:"ability-status-report",SERVER_FIRST_PACKAGE_RECEIVED:"first-pkg-received",RECEIVE_CUSTOM_MSG:"receive-custom-msg",FALLBACK_CODEC:"fallback-codec",SEND_SWITCH_ROOM_RES:"send-switch-room-res",SEND_SWITCH_ROOM_SUBED_REQ:"send-switch-room-subed-res",UPDATE_NETWORK_TIME_RESULT:"update_network_time_result",CUSTOM_CMD_RES:"custom-cmd-res"},U5="publish_change",KtA="join",jtA="leave",WtA="quality_report",F5="mute_uplink",O5="publish",FK="publish_state_change",Z2="unpublish",P5="subscribe",OK="unsubscribe",PK="subscribe_change",ztA="start_publishing",ZtA="stop_publishing",XtA="start_push_user_cdn",$tA="stop_push_user_cdn",AiA="start_mcu_mix",eiA="stop_mcu_mix",tiA="start_publish_cdn_stream",iiA="update_publish_cdn_stream",oiA="stop_publish_cdn_stream",siA="get_user_list",niA="change_role",xK="update_constraint_config",riA="rebuild_pc",aiA="join/v2",x5="publish/v2",Y5="subscribe/v3",giA="ability_status_report",ciA="reconnect",liA="channel_msg",IiA="switch_room",uiA="update_network_time",EiA=new Set([O5,U5,FK,Z2,P5,PK,OK,x5,Y5]),X2=new Set,diA=["autoTest","relayInnerIp","relayOuterIp","mcd","newRelay","clientIp"],CiA=0,V5=class extends VtA.default{constructor(A){var e,o,a;super(),Y(this,"room"),Y(this,"sdkAppId"),Y(this,"userId"),Y(this,"userSig"),Y(this,"url"),Y(this,"backupUrl"),Y(this,"destroyed",!1),Y(this,"_socketInUse"),Y(this,"_socket"),Y(this,"_backupSocket"),Y(this,"_signalInfo",{tinyId:void 0,clientIp:"",signalIp:"",relayIp:"",relayInnerIp:"",relayPort:0,endReportExtend:void 0,bakRelayIps:[],reportToken:void 0}),Y(this,"_currentState","DISCONNECTED"),Y(this,"_isReconnecting",!1),Y(this,"_seq",0),Y(this,"_log"),Y(this,"_lastMessageTime",-1),Y(this,"_connectStartTime",-1),Y(this,"_stopConnectRetry"),Y(this,"_isFirstConnect",!0),Y(this,"bytesSent",0),Y(this,"bytesReceived",0),Y(this,"keepAlive",!1),Y(this,"signalDomainWhenUnifiedProxy"),Y(this,"stopKeepAliveTimeout"),Y(this,"stopPrelinkTimeout"),Y(this,"rtt",0),Y(this,"prelink",!1),Y(this,"_prelinkConfig"),this.room=A.room,this.sdkAppId=A.sdkAppId,this.userId=A.userId,this.userSig=A.userSig,this.signalDomainWhenUnifiedProxy=A.signalDomainWhenUnifiedProxy,this.prelink=A.prelink||!1;let c=((o=(e=this.room.scheduleResult)==null?void 0:e.config)==null?void 0:o.keepAliveClient)||0;(a=this.room.joinParams)!=null&&a.keepAlive&&!c&&(c=1),c-X2.size>0&&this.room.enableSPC&&(this.keepAlive=!0,X2.add(this)),this.url=A.url,this.backupUrl=A.backupUrl,this._seq=0,this._log=QA.createLogger({parent:this.room.getLogger(),id:"ws".concat(++CiA),userId:this.userId,sdkAppId:this.sdkAppId}),this.onmessage=this.onmessage.bind(this),this.onerror=this.onerror.bind(this),this.onclose=this.onclose.bind(this)}get race(){return this.room.enableSPC&&!this.room.proxy_ws}get urlParam(){let A="?sdkAppId=".concat(encodeURIComponent(this.sdkAppId),"&userId=").concat(encodeURIComponent(this.userId),"&userSig=").concat(encodeURIComponent(this.userSig),"&keepAlive=").concat(encodeURIComponent(Number(this.keepAlive)));this.signalDomainWhenUnifiedProxy&&(A+="&signalDomain=".concat(encodeURIComponent(this.signalDomainWhenUnifiedProxy))),this.prelink&&(A+="&prelink=1");let e=new URLSearchParams(location.search);return diA.forEach(o=>{let a=e.get("trtc_".concat(o));a&&(A+="&".concat(o,"=").concat(encodeURIComponent(a)))}),this.race?"".concat(A,"&race=1"):A}get _urlWithParam(){return"".concat(this.url).concat(this.race?"/v2/ws":"").concat(this.urlParam)}get _backupUrlWithParam(){return"".concat(this.backupUrl).concat(this.race?"/v2/ws":"").concat(this.urlParam)}get isConnected(){return this._currentState==="CONNECTED"}get isConnecting(){return this._currentState==="CONNECTING"}get isOnline(){return this._currentState==="CONNECTED"&&Date.now()-this._lastMessageTime<12e3}connect(){return KA(this,arguments,function(){var A=this;let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:1e4;return function*(){if(A.isConnected)return Promise.resolve();A._log.info("connect to [".concat(A.url,", ").concat(A.backupUrl,"] ").concat(A.race?"race":"").concat(e?" timeout: ".concat(e):""," keepAlive: ").concat(Number(A.keepAlive))),A.emitConnectionStateChanged("CONNECTING"),A._connectStartTime=bo();let o=[A.connectWS({url:A._urlWithParam,isMain:!0,timeout:e})];A.race&&A._backupUrlWithParam!==A._urlWithParam&&o.push(A.connectWS({url:A._backupUrlWithParam,isMain:!1,timeout:e})),A._socketInUse=yield qS(o),A.unbindAndCloseSocket(A._socketInUse===A._socket?YA.BACKUP:YA.MAIN),A._isFirstConnect&&(Ai.addSuccessEvent({key:521720}),A._isFirstConnect=!1),A.emitConnectionStateChanged("CONNECTED")}()})}connectWS(A){let{url:e,timeout:o,isMain:a}=A,c=new WebSocket(e);this.bindSocket(c),a?this._socket=c:this._backupSocket=c;let d=-1;return new Promise((C,y)=>{c.onclose=y,c.onerror=y,c.onopen=()=>C(c),o&&(d=setTimeout(()=>{this.unbindAndCloseSocket(a?YA.MAIN:YA.BACKUP),y(new oi({code:lt.SIGNAL_CHANNEL_SETUP_FAILED,message:"ws connect timeout"}))},o))}).finally(()=>{c.onclose=null,c.onerror=null,c.onopen=null,clearTimeout(d)})}bindSocket(A){A.addEventListener("close",this.onclose),A.addEventListener("error",this.onerror),A.addEventListener("message",this.onmessage)}unbindSocket(A){A.removeEventListener("close",this.onclose),A.removeEventListener("error",this.onerror),A.removeEventListener("message",this.onmessage)}unbindAndCloseSocket(A){if(A===YA.MAIN){if(this._socket){this.unbindSocket(this._socket);try{this._socket.close(1e3)}catch{}this._socket=null}}else if(this._backupSocket){this.unbindSocket(this._backupSocket);try{this._backupSocket.close(1e3)}catch{}this._backupSocket=null}}onclose(A){A.target===this._socketInUse&&(this._log.warn("".concat(A.target===this._socket?"main":"backup"," is closed code:").concat(A.code," ").concat(A.reason)),this.emitConnectionStateChanged("DISCONNECTED"),(!A.wasClean||A.code!==1e3&&A.code!==4013)&&this.startReconnection(),this.prelink&&A.code===4013&&this.room.clearNetworkQuality(),this.room.isJoining&&this.emit(W2,new oi({code:lt.SIGNAL_CHANNEL_SETUP_FAILED,message:"websocket onclose"})))}onerror(A){this._log.error("".concat(A.target===this._socket?"main":"backup"," error observed")),this.emitConnectionStateChanged("DISCONNECTED"),A.target===this._socketInUse&&(this.unbindAndCloseSocket(YA.MAIN),this.unbindAndCloseSocket(YA.BACKUP),this._socketInUse=null,this.reconnect()),this.room.isJoining&&this.emit(W2,new oi({code:lt.SIGNAL_CHANNEL_SETUP_FAILED,message:"websocket onerror"}))}onmessage(A){if(!this.isConnected)return;let{isOnline:e}=this;this._lastMessageTime=Date.now(),e||this.emit(L5),this.bytesReceived+=u0(A.data);let o=JSON.parse(A.data),{cmd:a,data:c}=o,d=Object.values(Xh),C=Object.keys(Xh)[d.indexOf(a)],y=ls[C]||a;switch(qtA.includes(a)||(this._log.debug("received ".concat(a," msg: ").concat(A.data)),y&&this._log.info("Received event: [ ".concat(y," ]"))),a){case Xh.CHANNEL_SETUP_RESULT:if(o.code===0)this._signalInfo.clientIp=c.clientIp,this._signalInfo.signalIp=c.signalInnerIp,c.svrTime&&JB(c.svrTime-new Date().getTime()),this._log.info("ChannelSetup Success ".concat(bo()-this._connectStartTime)),Ai.addSuccessEvent({key:521701,cost:bo()-this._connectStartTime}),this._connectStartTime=-1,this.room.firewallDetector.resetTimeoutCount(),this.emit(k5,{signalInfo:this._signalInfo});else{let S=new oi({code:lt.SIGNAL_CHANNEL_SETUP_FAILED,extraCode:o.code,message:Zo({key:So.SIGNAL_CHANNEL_SETUP_FAILED,data:{errorCode:o.code,errorMsg:o.message}})});this._log.error("".concat(o.code,", ").concat(o.message)),this.close(),Ai.addFailedEvent({key:521701,error:S}),this.emit(W2,S)}break;case Xh.JOIN_ROOM_RESULT:o.code===0&&(this._signalInfo.relayIp=c.relayOuterIp,this._signalInfo.relayInnerIp=c.relayInnerIp,this._signalInfo.bakRelayIps=c.bakRelayIps,this._signalInfo.relayPort=c.relayPort,this._signalInfo.tinyId=o.tinyId,this._signalInfo.endReportExtend=c.endReportExtend,this._signalInfo.reportToken=c.reportToken,this._log.info("signalIp:".concat(this._signalInfo.signalIp," clientIp:").concat(this._signalInfo.clientIp," relayIp: ").concat(this._signalInfo.relayIp))),this.emit(y,{data:o});break;default:this.emit(String(y),{data:o})}}reGetSignalChannelUrl(){return KA(this,null,function*(){try{if(!this.room.joinParams)return;EQ(!0),yield this.room.schedule(this.room.joinParams);let{mainUrl:A,backupUrl:e}=this.room.getSignalChannelUrl();this.url=A,this.backupUrl=e}catch{}})}startReconnection(){if(!this._socketInUse)return;this._socketInUse.onclose=null,this._socketInUse.close(4011);let A=this._socketInUse===this._socket;this.unbindAndCloseSocket(A?YA.MAIN:YA.BACKUP),this._socketInUse=null,this.emitConnectionStateChanged("DISCONNECTED"),this.reconnect()}reconnect(){return KA(this,null,function*(){if(!this._isReconnecting){if(!this.room.isJoined&&this.keepAlive)return void this.close();this._isReconnecting=!0;try{this._log.warn("reconnect"),yield this.connect();let{roomId:A,useStringRoomId:e}=this.room,{relayIp:o,relayInnerIp:a,relayPort:c}=this._signalInfo,{data:d}=yield this.sendWaitForResponse({command:ciA,data:{roomId:A,useStringRoomId:e,relayInnerIp:a,relayOuterIp:o,relayPort:c},responseCommand:ls.CHANNEL_RECONNECT_RESULT});d.code===0?(this._log.warn("reconnect success"),this.stopReconnection(),Ai.addSuccessEvent({key:521702,cost:bo()-this._connectStartTime}),this._connectStartTime=-1,this.room.syncUserList(),this.room.checkConnectionsToReconnect()):(Ai.addFailedEvent({key:521702,error:d.code}),this._log.warn("reconnect failed, ".concat(d.code," ").concat(d.message)),this.room.reJoin())}catch(A){this._log.error(A),this.room.reJoin()}}})}send(A){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(this.isConnected&&!this.room.isLeft){let o={cmd:A,data:e,userId:this.userId,tinyId:this._signalInfo.tinyId,seq:++this._seq},a=JSON.stringify(o);return this._socketInUse.send(a),EiA.has(A)&&this._log.info("send",A,e),this.bytesSent+=u0(a),o.seq}}sendWaitForResponse(A){let{command:e,data:o,timeout:a=5e3,responseCommand:c,commandDesc:d,enableLog:C=!0,addReceiveTime:y=!1}=A;return new Promise((S,b)=>{let V=()=>{clearTimeout(J),b(new oi({code:lt.API_CALL_ABORTED,message:"".concat(e," aborted due to connection closed")}))};this.once(z2,V);let J=setTimeout(()=>{this.off(c,gA),this.off(z2,V);let MA=new oi({code:lt.API_CALL_TIMEOUT,message:Zo({key:So.API_CALL_TIMEOUT,data:{commandDesc:d,command:e}})});C&&this._log.warn(MA),b(MA)},a),gA=MA=>{MA.data.seq===CA&&(clearTimeout(J),this.off(c,gA),this.off(z2,V),y&&(MA.data.receiveTime=Date.now()),S(MA))};this.on(c,gA);let CA=this.send(e,o)})}sendWaitForResponseWithRetry(A){let{commandDesc:e,command:o,retries:a=0,retryTimeout:c=0}=A;return ZS({retryFunction:this.sendWaitForResponse,onError:d=>{let{retry:C,reject:y,error:S}=d;!this.room.isJoined||this.destroyed||S.code===lt.API_CALL_ABORTED?y(S):this.isOnline?C():(this._log.warn("retry ".concat(o," when connected")),this.once(L5,C))},onRetrying:d=>{this._log.warn("".concat(e||o," timeout observed, retrying [").concat(d,"/").concat(a,"]"))},settings:{retries:a,timeout:c},context:this})(A)}getCurrentState(){return this._currentState}getSignalInfo(){return this._signalInfo}stopReconnection(){this._isReconnecting=!1,this._stopConnectRetry&&this._stopConnectRetry()}close(){this._log.info("closed"),clearTimeout(this.stopKeepAliveTimeout),clearTimeout(this.stopPrelinkTimeout),X2.delete(this),this.stopReconnection(),this._signalInfo={tinyId:void 0,clientIp:"",signalIp:"",relayIp:"",relayInnerIp:"",relayPort:0,bakRelayIps:[],endReportExtend:void 0,reportToken:void 0},this._socketInUse=null,this.bytesSent=0,this.bytesReceived=0,this._stopConnectRetry&&this._stopConnectRetry(),this.unbindAndCloseSocket(YA.MAIN),this.unbindAndCloseSocket(YA.BACKUP),this.emitConnectionStateChanged("DISCONNECTED"),this.emit(z2)}destroy(){this.close(),this.destroyed=!0}getBackupRelayIpPair(){var A;let e=(A=this._signalInfo.bakRelayIps)==null?void 0:A.shift();return e&&(e.relayPort=e.relayPort||this._signalInfo.relayPort),e}clearBakRelayIps(){this._signalInfo.bakRelayIps=[]}stopKeepAliveIn(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:3600;if(this.keepAlive){this._log.info("stopKeepAlive in ".concat(A,"s")),this.stopKeepAliveTimeout=setTimeout(()=>{this.keepAlive=!1,this._log.info("close due to not used ".concat(A,"s")),this.close(),this.off(ls.JOIN_ROOM_RESULT,e)},1e3*A);let e=o=>{o.data.code===0&&(this._log.info("stopKeepAlive clear timeout"),clearTimeout(this.stopKeepAliveTimeout),this.off(ls.JOIN_ROOM_RESULT,e))};this.on(ls.JOIN_ROOM_RESULT,e)}}stopPrelinkIn(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:300;if(this.keepAlive)return;this._log.info("stopPrelink in ".concat(A,"s")),this.stopPrelinkTimeout=setTimeout(()=>{this._log.info("close prelink due to not used in ".concat(A,"s")),this.close(),this.room.clearNetworkQuality(),this.off(ls.JOIN_ROOM_RESULT,e)},1e3*A);let e=o=>{o.data.code===0&&(this._log.info("stopPrelink clear timeout"),clearTimeout(this.stopPrelinkTimeout),this.off(ls.JOIN_ROOM_RESULT,e))};this.on(ls.JOIN_ROOM_RESULT,e)}markPrelinkConnected(A){this._prelinkConfig=Bo(pi({},A),{linkedTime:Date.now()})}isPrelinkValid(A,e,o){return!(!this.prelink||!this._prelinkConfig)&&(A!==this._prelinkConfig.sdkAppId||e!==this._prelinkConfig.userId||o!==this._prelinkConfig.userSig?(this._log.warn("prelink params not match"),!1):!!this.isConnected||(this._log.warn("prelink is not connected"),!1))}consumePrelink(){this.prelink=!1,this._prelinkConfig=void 0}emitConnectionStateChanged(A){if(A===this._currentState)return;this._log.info("".concat(this._currentState," -> ").concat(A));let e={prevState:this._currentState,state:A};A==="CONNECTING"&&(e.isReconnecting=this._isReconnecting),this.emit(UK,e),this._currentState=A,A==="CONNECTED"?this.emit(Zk):A==="DISCONNECTED"&&this.emit(HtA)}};di([zh({settings:{retries:1/0,timeout:2e3},onError(A,e){!this.room.isDestroyed&&!this.destroyed&&(this._isFirstConnect&&(Ai.addFailedEvent({key:521720,error:A}),this._isFirstConnect=!1),this.room.firewallDetector.increaseTimeoutCount(),e())},onRetrying(A,e){this._log.warn("retrying to connect ".concat(A)),A>=3&&A%3==0&&this.reGetSignalChannelUrl(),e&&(this._stopConnectRetry=e,(this.room.isDestroyed||this.destroyed)&&e())}})],V5.prototype,"connect");var hiA=gc(Hl()),J5=!1,Zp=class{constructor(A){Y(this,"userId"),Y(this,"tinyId"),Y(this,"_sdpSemantics"),Y(this,"_isUplink"),Y(this,"_room"),Y(this,"_log"),Y(this,"_signalChannel"),Y(this,"_isErrorObserved",!1),Y(this,"_waitForPeerConnectionConnectedPromise"),Y(this,"_waitForPeerConnectionConnectedPromiseReject",null),Y(this,"_peerConnection",null),Y(this,"_emitter",new hiA.default),Y(this,"_currentState","DISCONNECTED"),Y(this,"_isReconnecting",!1),Y(this,"_reconnectionCount",0),Y(this,"_reconnectionTimer",-1),Y(this,"_isFirstConnection",!0),Y(this,"_prevTime",-1),Y(this,"_localAddress"),Y(this,"_remoteAddress"),Y(this,"isDestoyed",!1),this.userId=A.userId,this.tinyId=A.tinyId,this._room=A.room,this._sdpSemantics=A.room.sdpSemantics,this._isUplink=A.isUplink,this._log=A.room.getLogger().createChild({id:"n-mpc",userId:this._room.userId,remoteUserId:this.userId,sdkAppId:this._room.sdkAppId,isLocal:this._isUplink}),this._signalChannel=A.signalChannel}beforeConnect(){this._prevTime<0&&(this._prevTime=bo())}afterConnect(){try{this._isFirstConnection?(this._isFirstConnection=!1,Ai.addSuccessEvent({key:521705,cost:Math.min(bo()-this._prevTime,3e4)})):this._isReconnecting&&Ai.addSuccessEvent({key:521706,cost:bo()-this._prevTime}),this._prevTime=-1}catch(A){throw this._isFirstConnection?(this._isFirstConnection=!1,Ai.addFailedEvent({key:521705,error:A})):this._isReconnecting&&this._reconnectionCount>=3&&Ai.addFailedEvent({key:521706,error:A}),A}}initialize(){let A={iceServers:this._room.getIceServers(),iceTransportPolicy:this._room.getIceTransportPolicy(),sdpSemantics:this._sdpSemantics,bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",tcpCandidatePolicy:"disable",IceTransportsType:"nohost"};this._peerConnection=new RTCPeerConnection(A),this._peerConnection.onconnectionstatechange=this.onConnectionStateChange.bind(this)}close(A){this._log.info("close connection"),this._emitter.emit("closed",A),this._isReconnecting&&this.stopReconnection(),this.closePeerConnection()}destroy(){this.isDestoyed=!0}closePeerConnection(){let A=arguments.length>0&&arguments[0]!==void 0&&arguments[0];this._peerConnection&&(this._log.info("close pc"),this._peerConnection.onconnectionstatechange=null,this._peerConnection.close(),this._peerConnection=null,A&&this.emitConnectionStateChangedEvent("DISCONNECTED")),this._waitForPeerConnectionConnectedPromiseReject&&this._waitForPeerConnectionConnectedPromiseReject(new oi({code:lt.API_CALL_ABORTED,message:"connection closed"}))}getDTLSTransportState(){if(!this._peerConnection)return Jh;let A=null;if(this._isUplink){if(!NI()||this._peerConnection.getSenders().length===0)return Jh;A=this._peerConnection.getSenders()[0].transport}else{if(!cy()||this._peerConnection.getReceivers().length===0)return Jh;A=this._peerConnection.getReceivers()[0].transport}return A?A.state:Jh}onConnectionStateChange(A){let e=this._peerConnection.iceConnectionState,o=this.getDTLSTransportState();if(this._log.info("connectionState: ".concat(A.target.connectionState,", ICE: ").concat(e,", DTLS: ").concat(o)),A.target.connectionState===Eo.CONNECTING&&this.emitConnectionStateChangedEvent("CONNECTING"),A.target.connectionState===Eo.FAILED||A.target.connectionState===Eo.CLOSED){let a="connection ".concat(A.target.connectionState,". ICE Transport state: ").concat(e,", DTLS Transport state: ").concat(o),c=new oi({message:a,code:lt.ICE_TRANSPORT_ERROR});this.emitConnectionStateChangedEvent("DISCONNECTED"),this.startReconnection(),this._isErrorObserved||this._emitter.emit("error",c)}(A.target.connectionState===Eo.CONNECTED||A.target.connectionState===Eo.COMPLETED)&&(this.logSelectedCandidate(),sn.logSuccessEvent({userId:this._room.userId,eventType:Va.ICE_CONNECTION_STATE}),this.emitConnectionStateChangedEvent("CONNECTED"))}emitConnectionStateChangedEvent(A){return A!==this._currentState&&(A==="CONNECTED"&&(this._room.firewallDetector.resetTimeoutCount(),J5=!0),U.emit(sA.PEER_CONNECTION_STATE_CHANGED,{room:this._room,prevState:this._currentState,state:A,remoteUserId:this._isUplink?void 0:this.userId}),this._emitter.emit("connection-state-changed",{prevState:this._currentState,state:A}),this._currentState=A,!0)}getPeerConnection(){return this._peerConnection}getRoom(){return this._room}getUserId(){return this.userId}getTinyId(){return this.tinyId}logSelectedCandidate(){return KA(this,null,function*(){if(!this._peerConnection)return;let A=yield this._peerConnection.getStats();for(let[,e]of A)if(BM(e)){let o=A.get(e.localCandidateId),a=A.get(e.remoteCandidateId);o&&(this._log.info("local candidate: ".concat(o.candidateType," ").concat(o.protocol,":").concat(o.ip||o.address,":").concat(o.port," ").concat(o.networkType||""," ").concat(o.candidateType==="relay"?"relayProtocol:".concat(o.relayProtocol):"")),this._localAddress="".concat(o.ip||o.address,":").concat(o.port)),a&&(this._log.info("remote candidate: ".concat(a.candidateType," ").concat(a.protocol,":").concat(a.ip||a.address,":").concat(a.port)),this._remoteAddress="".concat(a.protocol,":").concat(a.ip||a.address));break}})}getCurrentState(){return this._currentState}waitForPeerConnectionConnected(){return this._waitForPeerConnectionConnectedPromise||(this._waitForPeerConnectionConnectedPromise=new Promise((A,e)=>{if(this._currentState==="CONNECTED")return A();this._waitForPeerConnectionConnectedPromiseReject=e;let o=C=>{C.state==="CONNECTED"&&(clearTimeout(d),c(),A())},a=C=>{let{room:y}=C;y===this._room&&(clearTimeout(d),c(),e(new oi({code:lt.API_CALL_ABORTED,message:Zo({key:So.CONNECTION_ABORTED,data:"leave room"})})))},c=()=>{U.off(sA.LEAVE_SUCCESS,a,this),this._emitter.off("connection-state-changed",o,this)},d=setTimeout(()=>{c();let C=new oi({code:lt.API_CALL_TIMEOUT,message:"connection timeout"});this._room.firewallDetector.increaseTimeoutCount(),e(C)},Ib);U.on(sA.LEAVE_SUCCESS,a,this),this._emitter.on("connection-state-changed",o,this)}),this._waitForPeerConnectionConnectedPromise=this._waitForPeerConnectionConnectedPromise.finally(()=>{this._waitForPeerConnectionConnectedPromise=null,this._waitForPeerConnectionConnectedPromiseReject=null})),this._waitForPeerConnectionConnectedPromise}getReconnectionCount(){return this._reconnectionCount}startReconnection(){this._isReconnecting=!0,this.reconnect()}clearReconnectionTimer(){this._reconnectionTimer!==-1&&(clearTimeout(this._reconnectionTimer),this._reconnectionTimer=-1)}stopReconnection(){this._log.info("stop reconnection"),this._isReconnecting=!1,this._reconnectionCount=0,this.clearReconnectionTimer(),this._signalChannel.off(Zk,this.reconnect,this)}beforeReconnect(){if(this._reconnectionTimer!==-1)return this._log.warn("reconnect() is reconnecting, ignore"),-1;if(this._reconnectionCount>=Lf()){this._log.warn("SDK has tried reconnect for ".concat(this._reconnectionCount," times, but all failed, please check your network")),this.stopReconnection();let A=new oi({code:this._isUplink?lt.UPLINK_RECONNECTION_FAILED:lt.DOWNLINK_RECONNECTION_FAILED,message:Zo({key:this._isUplink?So.UPLINK_RECONNECTION_FAILED:So.DOWNLINK_RECONNECTION_FAILED})});return this.emitConnectionStateChangedEvent("DISCONNECTED"),this._emitter.emit("error",A),-1}return this._signalChannel.isConnected?(this._reconnectionCount+=1,this._log.warn("reconnect() trying [".concat(this._reconnectionCount,"]")),1):(this._log.warn("reconnect() signal channel is not connected, suspend reconnection until signal is connected"),this._signalChannel.once(Zk,this.reconnect,this),-1)}on(A,e,o){this._emitter.on(A,e,o)}off(A,e,o){this._emitter.off(A,e,o)}getIsReconnecting(){return this._isReconnecting}get isH264(){var A,e;return!((e=(A=this._peerConnection)==null?void 0:A.remoteDescription)==null||!e.sdp.includes("H264"))}setOffer(A){var e;return(e=this._peerConnection)==null?void 0:e.setLocalDescription(A)}setAnswer(A){var e;return(e=this._peerConnection)==null?void 0:e.setRemoteDescription(A)}};di([Cy(521712,!1)],Zp.prototype,"setOffer"),di([Cy(521713,!1)],Zp.prototype,"setAnswer");var H5=gc($G()),uc=function(A){return H5.default.parse(A)},fy=function(A){return H5.default.write(A)};function YK(A){return Object.keys(A).filter(e=>A[e])}var $2=class z6 extends Zp{constructor(e){super(Bo(pi({},e),{isUplink:!1})),Y(this,"_flag",0),Y(this,"isRobot",!1),Y(this,"role","anchor"),Y(this,"remoteAudioTrack"),Y(this,"remoteVideoTrack"),Y(this,"remoteAuxiliaryTrack"),Y(this,"avPlayerStateSyncManager"),Y(this,"ssrc",{audio:0,video:0,auxiliary:0}),Y(this,"_isSDPExchanging",!1),Y(this,"_videoCodec"),Y(this,"fromType"),this.flag=e.flag,this.isRobot=e.isRobot||!1,this.remoteAudioTrack=e.remoteAudioTrack||new b2(this._room,this),this.remoteVideoTrack=e.remoteVideoTrack||new Jk(this._room,this),this.remoteAuxiliaryTrack=e.remoteAuxiliaryTrack||new Z4(this._room,this),this.avPlayerStateSyncManager=new SK({log:this._log,audioPlayer:this.remoteAudioTrack.player,videoPlayer:this.remoteVideoTrack.player})}get videoCodec(){var e,o;let a=(o=(e=this._peerConnection)==null?void 0:e.remoteDescription)==null?void 0:o.sdp;return a?a.includes("H264")?"h264":"vp8":this._videoCodec||"h264"}set videoCodec(e){this._videoCodec=e}get subscribeState(){let e={audio:!1,video:!1,auxiliary:!1,smallVideo:!1};return this.remoteVideoTrack.isSubscribed&&(8&this.remoteVideoTrack.mediaType?e.smallVideo=!0:e.video=!0),this.remoteAudioTrack.isSubscribed&&(e.audio=!0),this.remoteAuxiliaryTrack.isSubscribed&&(e.auxiliary=!0),e}get muteState(){return Dp(this.flag,this.userId)}get flag(){return this._flag}set flag(e){var o,a,c;e!==this._flag&&(this._flag=e,(o=this.remoteAudioTrack)==null||o.onFlagChanged(),(a=this.remoteVideoTrack)==null||a.onFlagChanged(),(c=this.remoteAuxiliaryTrack)==null||c.onFlagChanged())}get hasMainStream(){return this.muteState.hasAudio||this.muteState.hasVideo||this.muteState.hasSmall}get hasAuxStream(){return this.muteState.hasAuxiliary}get isMainStreamSubscribed(){return(this.subscribeState.audio||this.subscribeState.video||this.subscribeState.smallVideo)&&(this.muteState.hasAudio||this.muteState.hasVideo||this.muteState.hasSmall)}get isAuxStreamSubscribed(){return this.subscribeState.auxiliary&&this.muteState.hasAuxiliary}get isSmallStreamSubscribed(){return this.subscribeState.smallVideo&&this.muteState.hasSmall}get isBigStreamSubscribed(){return this.subscribeState.video&&this.muteState.hasVideo}isStreamUnpublished(e){return e===YA.MAIN?!this.muteState.hasAudio&&!this.muteState.hasVideo:!this.muteState.hasAuxiliary}initialize(){super.initialize(),this.installEvents(),this._peerConnection.ontrack=this.onTrack.bind(this)}close(e){super.close(e),this.emitConnectionStateChangedEvent("DISCONNECTED"),this.remoteAudioTrack.close(),this.remoteVideoTrack.close(),this.remoteAuxiliaryTrack.close(),this.avPlayerStateSyncManager.destroy(),this.uninstallEvents()}installEvents(){}uninstallEvents(){this._emitter.removeAllListeners()}emitConnectionStateChangedEvent(e){var o,a;let c=this._currentState,d=super.emitConnectionStateChangedEvent(e);return d&&c!==e&&((o=this.remoteVideoTrack)==null||o.emit("connection-state-changed",{prevState:c,state:e}),(a=this.remoteAuxiliaryTrack)==null||a.emit("connection-state-changed",{prevState:c,state:e})),d}onTrack(e){let o=e.streams[0],{track:a}=e,c=o.id===ru?YA.MAIN:YA.AUXILIARY;this._log.debug("ontrack ".concat(c," ").concat(a.kind));let d=YA.AUDIO;a.kind===YA.VIDEO&&(d=c===YA.MAIN?YA.VIDEO:YA.AUXILIARY);let C=this.remoteAudioTrack;d===YA.VIDEO?C=this.remoteVideoTrack:d===YA.AUXILIARY&&(C=this.remoteAuxiliaryTrack),C.setInputMediaStreamTrack(a)}addRRTRLine(e){let o=e.split(`\r +`).concat(b.stack)),!1}}})(this,"trtc")}static create(e){}static _create(e,o){(function(){var c;if(U5){U5=!1,QA.getLogLevel()!==5&&(console.info("******************************************************************************"),console.info("* TRTC Web SDK"),console.info("* API Document: ".concat(Hh,"/en/index.html")),console.info("* Changelog: ".concat(Hh,"/en/tutorial-01-info-changelog.html")),console.info("* Report issues: https://github.com/LiteAVSDK/TRTC_Web/issues"),console.info("******************************************************************************")),QA.info("TRTC Web SDK Version:",Hd),Fp||QA.debug("Build Time:","2026-02-28 12:18:13");let d="UA: ".concat(navigator.userAgent,` +CPU core: `).concat(navigator.hardwareConcurrency,", GPU: ").concat(Op());if(eg&&window.screen&&(window.screen.width||window.screen.height)){let y="".concat(window.screen.width,"x").concat(window.screen.height,"@").concat(window.devicePixelRatio);d+=", screen: ".concat(y)}let C=navigator.deviceMemory;C&&(d+=", minRAM: ".concat(C,"GB")),QA.info(d),QA.info("URL: ".concat(location.href).concat(((c=self.frameElement)==null?void 0:c.tagName)==="IFRAME"?" in iframe":"")),hM().then(y=>{y&&QA.info(LC)})}})();let a=new sm(e,o||{});return lL.add(a),a.__v_skip=!0,a}get room(){return this._room}_listenEvents(){id(this,this._room).add("peer-join",e=>{let{userId:o}=e;this.emit(Hi.REMOTE_USER_ENTER,{userId:o})}).add("peer-leave",e=>{let{userId:o,reason:a}=e;this.emit(Hi.REMOTE_USER_EXIT,{userId:o,reason:a})}).add("banned",e=>{CQ(!0),this._exitRoom().finally(()=>{this.emit(Hi.KICKED_OUT,{reason:e.reason})})}).add("error",e=>{this._exitRoom().finally(()=>{this.emit(Hi.ERROR,wo.convertFrom(e))})}).add("signal-connection-state-changed",e=>{this.emit(Hi.CONNECTION_STATE_CHANGED,e)}).add("network-quality",e=>{this._networkQuality=e;let o=Qo(mi({},e),{uplinkRTT:Math.min(e.uplinkRTT,c0),downlinkRTT:Math.min(e.downlinkRTT,c0)});this.emit(Hi.NETWORK_QUALITY,o)}).add("remote-published",e=>{[e.remoteAudioTrack,e.remoteVideoTrack,e.remoteAuxiliaryTrack].forEach(o=>{id(o,o).add("player-state-changed",a=>{let c=Qo(mi({},a),{userId:e.userId});o.kind===YA.VIDEO&&(c.streamType=AC(o.streamType)),this.emit(o.kind===YA.AUDIO?Hi.AUDIO_PLAY_STATE_CHANGED:Hi.VIDEO_PLAY_STATE_CHANGED,c)}).add("error",a=>{a.getCode()===Et.PLAY_NOT_ALLOWED&&this.emit(Hi.AUTOPLAY_FAILED,{userId:o.userId,mediaType:o.strMediaType,resume:()=>o.player.resume()})})})}).add("remote-unpublished",e=>{[e.remoteAudioTrack,e.remoteVideoTrack,e.remoteAuxiliaryTrack].forEach(o=>{kn(o)})}).add("remote-publish-state-changed",e=>{let{prevMuteState:o,muteState:a}=e,{userId:c}=a,d=o.audioAvailable,C=o.videoAvailable,{audioAvailable:y,videoAvailable:S}=a;y||this._remoteAudioConfigMap.delete(c),S||this._removeRemoteVideoConfig(c,"main"),a.hasAuxiliary||this._removeRemoteVideoConfig(c,"sub"),C!==S&&(S?this._onVideoAvailable({userId:c,streamType:"main"}):this._onVideoUnavailable({userId:c,streamType:"main"}),this.emit(S?Hi.REMOTE_VIDEO_AVAILABLE:Hi.REMOTE_VIDEO_UNAVAILABLE,{userId:c,streamType:"main"})),d!==y&&(y?this._onAudioAvailable({userId:c}):this._onAudioUnavailable({userId:c,muteState:a}),this.emit(y?Hi.REMOTE_AUDIO_AVAILABLE:Hi.REMOTE_AUDIO_UNAVAILABLE,{userId:c})),o.hasAuxiliary!==a.hasAuxiliary&&(a.hasAuxiliary?this._onVideoAvailable({userId:c,streamType:"sub"}):this._onVideoUnavailable({userId:c,streamType:"sub"}),this.emit(a.hasAuxiliary?Hi.REMOTE_VIDEO_AVAILABLE:Hi.REMOTE_VIDEO_UNAVAILABLE,{userId:c,streamType:"sub"})),o.hasDatachannel!==a.hasDatachannel&&a.hasDatachannel&&this._onDataChannelAvailable()}).add("sei-message",e=>{this.emit(Hi.SEI_MESSAGE,Qo(mi({},e),{streamType:AC(e.streamType)}))}).add("firewall-restriction",()=>{this.emit(Hi.ERROR,new wo({code:Ro.OPERATION_FAILED,extraCode:5501}))}).add("heartbeat-report",e=>{var o,a,c,d,C,y,S;let b={2:"big",3:"small",7:"sub"},V={rtt:Math.min(e.msg_up_stream_info.msg_network_status.uint32_rtt||((o=e.msg_down_stream_info[0])==null?void 0:o.msg_network_status.uint32_rtt)||((a=this._networkQuality)==null?void 0:a.uplinkRTT)||((c=this._networkQuality)==null?void 0:c.downlinkRTT)||0,c0),upLoss:((d=this._networkQuality)==null?void 0:d.uplinkLoss)||0,downLoss:((C=this._networkQuality)==null?void 0:C.downlinkLoss)||0,bytesSent:e.bytes_sent||0,bytesReceived:e.bytes_received||0,localStatistics:{audio:{bitrate:(((y=e.msg_up_stream_info.msg_audio_status)==null?void 0:y.uint32_audio_codec_bitrate)||0)/1e3,audioLevel:(((S=e.msg_up_stream_info.msg_audio_status)==null?void 0:S.uint32_audio_level)||0)/Ad},video:e.msg_up_stream_info.msg_video_status.filter(J=>b[J.uint32_video_stream_type]).map(J=>({bitrate:(J.uint32_video_codec_bitrate||0)/1e3,width:J.uint32_video_width,height:J.uint32_video_height,frameRate:J.uint32_video_enc_fps,videoType:b[J.uint32_video_stream_type]}))},remoteStatistics:e.msg_down_stream_info.map(J=>({userId:J.msg_user_info.str_identifier,audio:{bitrate:(J.msg_audio_status.uint32_audio_codec_bitrate||0)/1e3,audioLevel:(J.msg_audio_status.uint32_audio_level||0)/Ad,point2pointDelay:(J.msg_audio_status.uint32_audio_p2p_delay||0)+(J.msg_audio_status.uint32_audio_cache_ms||0),jitterBufferDelay:J.msg_audio_status.uint32_audio_cache_ms||0},video:J.msg_video_status.map(gA=>({bitrate:(gA.uint32_video_codec_bitrate||0)/1e3,width:gA.uint32_video_width,height:gA.uint32_video_height,frameRate:gA.uint32_video_dec_fps,videoType:b[gA.uint32_video_stream_type],point2pointDelay:(gA.uint32_video_p2p_delay||0)+(gA.uint32_video_cache_ms||0),jitterBufferDelay:gA.uint32_video_cache_ms||0,codec:gA.uint32_video_codec}))}))};this.emit(Hi.STATISTICS,V)}).add("custom-message",e=>{this.emit(Hi.CUSTOM_MESSAGE,e)}).add("layerData",e=>this.emit(Hi.LAYER_DATA,e)).add("first-video-frame",e=>{this.emit(Hi.FIRST_VIDEO_FRAME,Qo(mi({},e),{streamType:AC(e.streamType)}))}).add("audio-frame",e=>{this.emit(Hi.AUDIO_FRAME,e)}).add("data-channel-message",e=>{var o,a,c,d,C;let{data:y}=e;if(y.sender==="")return;let S={segmentId:(o=y.payload)==null?void 0:o.roundid,speakerUserId:y.sender,sourceText:(a=y.payload)==null?void 0:a.text,translationTexts:(c=y.payload)==null?void 0:c.translate_msg,timestamp:(d=y.payload)==null?void 0:d.start_utc_ms,isCompleted:(C=y.payload)==null?void 0:C.end,robotId:y.robotid};S.sourceText!==""&&this.emit(Hi.REALTIME_TRANSCRIBER_MESSAGE,S)}).add("asr-robot-peer-join",e=>{this.emit(Hi.REALTIME_TRANSCRIBER_STATE_CHANGED,{state:"started",roomId:this.room.roomId,transcriberRobotId:e.userId})}).add("asr-robot-peer-leave",e=>{this.emit(Hi.REALTIME_TRANSCRIBER_STATE_CHANGED,{state:"stopped",roomId:this.room.roomId,transcriberRobotId:e.userId})}),id(this,Pc).add("audioInputAdded",e=>{this.emit(Hi.DEVICE_CHANGED,{type:"microphone",action:"add",device:e})}).add("audioInputRemoved",e=>{this.emit(Hi.DEVICE_CHANGED,{type:"microphone",action:"remove",device:e})}).add("videoInputAdded",e=>{this.emit(Hi.DEVICE_CHANGED,{type:"camera",action:"add",device:e})}).add("videoInputRemoved",e=>{this.emit(Hi.DEVICE_CHANGED,{type:"camera",action:"remove",device:e})}).add("audioOutputAdded",e=>KA(this,null,function*(){if(this.emit(Hi.DEVICE_CHANGED,{type:"speaker",action:"add",device:e}),zl&&zl.deviceId===g0){let o=(yield UM()).find(a=>a.deviceId===g0);o&&zl.groupId!==o.groupId&&(zl=o,this.emit(Hi.DEVICE_CHANGED,{type:"speaker",action:"active",device:o}))}})).add("audioOutputRemoved",e=>KA(this,null,function*(){this.emit(Hi.DEVICE_CHANGED,{type:"speaker",action:"remove",device:e});let o=(yield UM())[0];if(!o||!zl||zl.groupId===o.groupId)return;let a=zl.deviceId===e.deviceId,c=zl.deviceId===g0&&zl.deviceId===o.deviceId;(a||c)&&(zl=o,this.emit(Hi.DEVICE_CHANGED,{type:"speaker",action:"active",device:o}))})),id(this,B1).add("permission-state-change",e=>{this.emit(Hi.PERMISSION_STATE_CHANGE,e)}),this.room.enableSEI&&this.on(Hi.SEI_MESSAGE,e=>{var o;let a=(o=this.room.remotePublishedUserMap.get(e.userId))==null?void 0:o.remoteVideoTrack;a&&a.updateAlphaRenderInfo(e)})}getNetworkTime(){return kf()}use(e){let o,a;return"plugin"in e?(o=e.plugin,a=e.assetsPath):o=e,o.Name==="Chorus"&&(this.room.enableChorus=!0),this._use(o,a)}_use(e,o){let a=this._plugins.get(e.Name);if(a)return this._log.warn("duplicate install plugin",e.Name),a;let c=new e(ciA.call(this,{TRTC:sm,room:this._room,assetsPath:o,errorModule:{RtcError:wo,ErrorCode:Ro,CoreErrorCode:Et,ErrorCodeDictionary:n1}}));return this._plugins.set(e.Name,c),c.__v_skip=!0,e.autoStart&&this.startPlugin(e.Name),c}enterRoom(e){return KA(this,null,function*(){var o,a;this.enterRoomParams=e;let{scene:c="rtc",enableAutoPlayDialog:d=!0,autoReceiveAudio:C=!0,autoReceiveVideo:y=!1}=e;e.proxy&&(this._room.setProxyServer(e.proxy),!Yn(e.proxy)&&e.proxy.turnServer&&((a=(o=this._room).setTurnServer)==null||a.call(o,e.proxy.turnServer,e.proxy.iceTransportPolicy))),this._room.enableAutoPlayDialog=d,this._room.autoReceiveAudio=C,this._room.autoReceiveVideo=y,_r(e.preferHW)&&(this._room.preferHW=e.preferHW),e.playoutDelay&&(this._room.playoutDelay=e.playoutDelay),e.jitterBufferDelay&&(this._room.jitterBufferDelay=e.jitterBufferDelay);let S={sdkAppId:e.sdkAppId,userId:e.userId,userSig:e.userSig,privateMapKey:e.privateMapKey||null,latencyLevel:e.latencyLevel,role:e.role==="audience"?21:20,roomId:e.roomId||0,strRoomId:e.strRoomId||"",businessInfo:e.businessInfo||null,streamId:null,userDefineRecordId:e.userDefineRecordId||null,enableDataChannel:this._plugins.has("RealtimeTranscriber"),frameWorkType:e.frameWorkType,component:e.component,language:e.language,priority:e.priority,useVp8:e.useVp8,useH265:e.useH265||!1,keepAlive:e.keepAlive};e.strRoomId&&!e.roomId?this._room.useStringRoomId=!0:this._room.useStringRoomId=!1,yield this._room.join(S,c,sm.frameWorkType),this._checkTrackToPublish(),Iz.start()})}exitRoom(){return KA(this,null,function*(){return yield this._exitRoom()})}switchRoom(e){return KA(this,null,function*(){if(this.room.isSwitchRoomSupported())try{this._clearRemoteTracks(),yield this._room.switchRoom(e)}catch(o){if(!(o instanceof Sx)||o.code!==Et.API_CALL_TIMEOUT&&o.code!==Et.SWITCH_ROOM_FAILED)throw o;this._log.warn("switchRoom ".concat(o.code===Et.API_CALL_TIMEOUT?"timeout":"failed",", fallback to exitRoom() and enterRoom()")),yield this._rejoinRoom(e)}else yield this._rejoinRoom(e)})}_rejoinRoom(e){return KA(this,null,function*(){yield this.exitRoom();let o=mi(mi({},this.enterRoomParams),e);yield this.enterRoom(o)})}_clearRemoteTracks(){new Set([...this._remoteAudioConfigMap.keys(),...this._remoteAudioMuteMap.keys()]).forEach(e=>{this._stopRemoteAudio({userId:e}).catch(()=>{})}),[...this._remoteVideoConfigMap.keys()].forEach(e=>{let o=e.includes("main")?"main":"sub",a=e.split("_".concat(o))[0];a&&this._stopRemoteVideo({userId:a,streamType:o}).catch(()=>{})}),this._remoteVideoConfigMap.clear(),this._remoteAudioConfigMap.clear(),this._remoteAudioMuteMap.clear(),function(e){let o=u_.get(e);o&&(o.forEach(a=>clearTimeout(a)),u_.delete(e))}(this),this._room.remotePublishedUserMap.forEach(e=>{kn(e.remoteAudioTrack),kn(e.remoteVideoTrack),kn(e.remoteAuxiliaryTrack)})}switchRole(e,o){return KA(this,null,function*(){o!=null&&o.privateMapKey&&(this._room.privateMapKey=o.privateMapKey),o!=null&&o.latencyLevel&&(this._room.latencyLevel=o.latencyLevel),yield this._room.switchRole(e),e==="anchor"&&this._checkTrackToPublish()})}destroy(){this._plugins.forEach(e=>{var o;return(o=e.destroy)==null?void 0:o.call(e)}),this._plugins.clear(),kn(this),this.removeAllListeners(),this._room.destroy(),lL.delete(this),lL.size===0&&Iz.destroy(),this._localAudioTrack&&this.stopLocalAudio(),this._localVideoTrack&&this.stopLocalVideo(),this._localScreenTrack&&this.stopScreenShare(),F.off("102",this._onLocalTrackCaptured,this)}startLocalAudio(){return KA(this,arguments,function(){var e=this;let o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{publish:!0};return function*(){if(e._localAudioTrack)return void e._log.warn("local audio is already started");let{publish:a=!0,mute:c,muteKeepVolumeDetection:d,option:C}=o,y=new PM(e._room.audioManager),S={},b={muted:!0};C&&(Je(C.microphoneId)?Je(C.audioTrack)||(S.customSource=C.audioTrack):S.deviceId=C.microphoneId,C&&bn(C.captureVolume)&&y.setCaptureVolume(C.captureVolume),Je(C.profile)||(Yn(C.profile)?Dp[C.profile]&&y.setProfile(Dp[C.profile]):y.setProfile(C.profile)),bn(C.earMonitorVolume)&&(b.muted=!(C.earMonitorVolume>0),b.volume=C.earMonitorVolume),Je(C.echoCancellation)||(y.profile.echoCancellation=C.echoCancellation),Je(C.noiseSuppression)||(y.profile.noiseSuppression=C.noiseSuppression),Je(C.autoGainControl)||(y.profile.autoGainControl=C.autoGainControl),_r(e._enableAutoSwitchWhenRecapturing)&&(y.enableAutoSwitchWhenRecapturing=e._enableAutoSwitchWhenRecapturing)),y.on("5",V=>{e.emit(Hi.ERROR,new wo({code:Ro.DEVICE_ERROR,extraCode:5309,messageParams:{error:V}}))}),y.on("2",V=>{e.emit(Hi.DEVICE_CHANGED,{type:"microphone",action:"active",device:V})}),y.on("4",V=>{let J;V.error&&(J=wo.convertFrom(V.error)),e.emit(Hi.PUBLISH_STATE_CHANGED,Qo(mi({},V),{error:J}))}),y.on("6",()=>{}),e._listenOutputTrackChanged(y),e._speakerId&&y.setAudioOutput(e._speakerId),yield y.capture(S),Je(c)||y.setMute(c,d),id(y,y).add("player-state-changed",V=>{e.emit(Hi.AUDIO_PLAY_STATE_CHANGED,Qo(mi({},V),{userId:""}))}),a&&e._room.isJoined&&e._room.publish(y).catch(()=>{}),e._localAudioTrack=y,e._room.capturedLocalMainAudioTrack=y,e._localAudioConfig=Qo(mi({},o),{publish:a}),yield e._updateAudioPlayOption({playOption:b,track:y}),F.emit("113",{userId:"",room:e.room})}()})}updateLocalAudio(e){return KA(this,null,function*(){if(!this._localAudioTrack||!this._localAudioConfig)return;let{publish:o,mute:a,muteKeepVolumeDetection:c,option:d}=e,C={};d&&(d.microphoneId?yield this._localAudioTrack.switchDevice(d.microphoneId):Je(d.audioTrack)||(yield this._localAudioTrack.setInputMediaStreamTrack(d.audioTrack)),Je(d.captureVolume)||this._localAudioTrack.setCaptureVolume(d.captureVolume),Je(d.earMonitorVolume)||(C.muted=!(d.earMonitorVolume>0),C.volume=d.earMonitorVolume),yield this._localAudioTrack.update3A(d)),this._room.isJoined&&!Je(o)&&(o&&!this._localAudioConfig.publish&&this._room.publish(this._localAudioTrack).catch(()=>{}),this._localAudioConfig.publish&&!o&&this._room.unpublish(this._localAudioTrack).catch(()=>{})),Je(a)||this._localAudioTrack.setMute(a,c),yield this._updateAudioPlayOption({playOption:C,track:this._localAudioTrack,prevConfig:this._localAudioConfig}),jh(this._localAudioConfig,e)})}stopLocalAudio(){return KA(this,null,function*(){this._localAudioTrack&&(this._room.isJoined&&(yield this._room.unpublish(this._localAudioTrack).catch(()=>{})),F.emit("114",{userId:"",room:this.room}),this._localAudioTrack.stop(),this._localAudioTrack.close(),this._room.audioManager.removeInput(this._localAudioTrack),kn(this._localAudioTrack),this._localAudioTrack=null,this._localAudioConfig=null,delete this._room.capturedLocalMainAudioTrack)})}startLocalVideo(){return KA(this,arguments,function(){var e=this;let o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{publish:!0,view:null,capture:!0};return function*(){var a,c,d;if(e._localVideoTrack)return void e._log.warn("local video is already started");let{view:C,publish:y=!0,capture:S=!0,mute:b,option:V,forcePublish:J=!1}=o,gA=y||J,CA=S,MA=new EQ(e._room.videoManager),$A={},he={};if(V&&(_r(V.avoidCropping)&&(MA.avoidCropping=V.avoidCropping),V.cameraId?$A.deviceId=V.cameraId:Je(V.useFrontCamera)?Je(V.videoTrack)||($A.customSource=V.videoTrack):$A.facingMode=V.useFrontCamera?YA.FACING_MODE_USER:YA.FACING_MODE_ENVIRONMENT,Je(V.retryWhenExactFailed)||($A.retryWhenExactFailed=V.retryWhenExactFailed),V.qosPreference&&($A.contentHint=r1(V.qosPreference)),Je(V.profile)||(Yn(V.profile)?bC[V.profile]&&MA.setProfile(bC[V.profile]):MA.setProfile(V.profile)),Je(V.fillMode)||(he.objectFit=V.fillMode),Je(V.mirror)||(he.mirror=V.mirror),Je(V.small)||(Je(V.smallMode)||(e._room.smallMode=V.smallMode),_r(V.small)&&V.small===!1?MA.stopSmall():MA.updateSmallConfig(a1(V.small,!0))),Je(V.rotation)||MA.setRotation(V.rotation),_r(e._enableAutoSwitchWhenRecapturing)&&(MA.enableAutoSwitchWhenRecapturing=e._enableAutoSwitchWhenRecapturing)),MA.once("first-video-frame",Ye=>{e.emit(Hi.FIRST_VIDEO_FRAME,Qo(mi({},Ye),{streamType:AC(Ye.streamType)}))}),MA.on("5",Ye=>{e.emit(Hi.ERROR,new wo({code:Ro.DEVICE_ERROR,extraCode:5308,messageParams:{error:Ye}}))}),MA.on("2",Ye=>{e.emit(Hi.DEVICE_CHANGED,{type:"camera",action:"active",device:Ye})}),MA.on("4",Ye=>{let Me;Ye.error&&(Me=wo.convertFrom(Ye.error)),e.emit(Hi.PUBLISH_STATE_CHANGED,Qo(mi({},Ye),{error:Me}))}),MA.on("6",()=>{}),e._listenOutputTrackChanged(MA),$A.customSource&&wp($A.customSource)?(MA.setOutputMediaStreamTrack($A.customSource),CA=!1):CA?yield MA.capture($A):(a=MA.manager)==null||a.changeInput(MA),Je(b)||(yield MA.setMute(b)),id(MA,MA).add("player-state-changed",Ye=>{e.emit(Hi.VIDEO_PLAY_STATE_CHANGED,Qo(mi({},Ye),{userId:"",streamType:"main"}))}).add("video-size-changed",Ye=>{e.emit(Hi.VIDEO_SIZE_CHANGED,Qo(mi({},Ye),{streamType:AC(Ye.streamType)}))}),gA){let Ye=e._localScreenTrack&&((c=e._localScreenConfig)==null?void 0:c.publish)&&e._localScreenConfig.streamType==="main";e._room.isJoined?!Ye||J?(e._room.publish(MA).catch(()=>{}),((d=e._localScreenConfig)==null?void 0:d.streamType)==="main"&&e._localScreenConfig&&(e._localScreenConfig.publish=!1)):(gA=!1,e._log.warn("main stream is already published, local video track will not publish")):Ye&&(gA=!1)}e._localVideoTrack=MA,e._room.capturedLocalMainVideoTrack=MA,e._localVideoConfig=Qo(mi({},o),{view:C,publish:gA,capture:CA}),yield e._updateVideoPlayOption({view:C,playOption:he,track:MA})}()})}updateLocalVideo(e){return KA(this,null,function*(){var o,a,c,d,C,y,S;if(!this._localVideoTrack||!this._localVideoConfig)return;let{view:b,publish:V=!0,mute:J,capture:gA,option:CA,forcePublish:MA=!1}=e,$A=V||MA,he=gA,Ye={};if(!this._localVideoConfig.capture&&wp((o=this.localVideoTrack)==null?void 0:o.outMediaTrack)&&(CA!=null&&CA.cameraId||CA!=null&&CA.videoTrack)&&this._localVideoTrack.outMediaTrack!==CA?.videoTrack&&(he=!0),this._localVideoConfig.capture)he!==!1?CA!=null&&CA.cameraId?yield this._localVideoTrack.switchDevice(CA?.cameraId):Je(CA?.useFrontCamera)?Je(CA?.videoTrack)||(wp(CA?.videoTrack)?CA?.videoTrack!==((a=this.localVideoTrack)==null?void 0:a.outMediaTrack)&&(yield this._localVideoTrack.setOutputMediaStreamTrack(CA?.videoTrack)):yield this._localVideoTrack.setInputMediaStreamTrack(CA?.videoTrack)):yield this._localVideoTrack.switchDevice(CA!=null&&CA.useFrontCamera?YA.FACING_MODE_USER:YA.FACING_MODE_ENVIRONMENT):this._localVideoTrack.stopCapture();else if(he){let Me={};Me.deviceId=CA?.cameraId||((c=this._localVideoConfig.option)==null?void 0:c.cameraId),Me.facingMode=CA!=null&&CA.useFrontCamera||(d=this._localVideoConfig.option)!=null&&d.useFrontCamera?YA.FACING_MODE_USER:YA.FACING_MODE_ENVIRONMENT,Me.customSource=CA!=null&&CA.videoTrack||!Me.deviceId?(C=this._localVideoConfig.option)==null?void 0:C.videoTrack:void 0,yield this._localVideoTrack.capture(Me)}CA&&(Je(CA.profile)||(Yn(CA.profile)?bC[CA.profile]&&this._localVideoTrack.setProfile(bC[CA.profile]):this._localVideoTrack.setProfile(CA.profile),(!CA.cameraId||!this._localVideoTrack.isNeedToSwitchDevice(CA.cameraId||CA.useFrontCamera?YA.FACING_MODE_USER:YA.FACING_MODE_ENVIRONMENT))&&(yield this._localVideoTrack.applyProfile())),Je(CA.fillMode)||(Ye.objectFit=CA.fillMode),Je(CA.mirror)||(Ye.mirror=CA.mirror),Je(CA.rotation)||this._localVideoTrack.setRotation(CA.rotation),CA.qosPreference&&this._localVideoTrack.mediaTrack&&this._localVideoTrack.setContentHint(r1(CA.qosPreference)),Je(CA.small)||(_r(CA.small)&&!CA.small?this._localVideoTrack.stopSmall():this._localVideoTrack.updateSmallConfig(a1(CA.small,!0)))),this._room.isJoined&&Je($A)&&this._localVideoConfig.publish&&he&&!this._localVideoConfig.capture&&this._room.publish(this._localVideoTrack).catch(()=>{}),this._room.isJoined&&(($A??this._localVideoConfig.publish)||MA?this._localScreenTrack&&((y=this._localScreenConfig)!=null&&y.publish)&&this._localScreenConfig.streamType==="main"&&!MA?($A=!1,this._log.warn("main stream is already published, local video track will not publish")):(this._room.publish(this._localVideoTrack).catch(()=>{}),((S=this._localScreenConfig)==null?void 0:S.streamType)==="main"&&this._localScreenConfig&&(this._localScreenConfig.publish=!1)):this._room.unpublish(this._localVideoTrack).catch(()=>{})),Je(J)||(yield this._localVideoTrack.setMute(J)),yield this._updateVideoPlayOption({view:b,playOption:Ye,track:this._localVideoTrack,prevConfig:this._localVideoConfig}),jh(this._localVideoConfig,Qo(mi({},e),{publish:$A,capture:he}))})}stopLocalVideo(){return KA(this,null,function*(){var e;this._localVideoTrack&&(this._room.isJoined&&(e=this._localVideoConfig)!=null&&e.publish&&(yield this._room.unpublish(this._localVideoTrack).catch(()=>{})),this._localVideoTrack.stop(),this._localVideoTrack.close(),kn(this._localVideoTrack),this._localVideoTrack=null,delete this._room.capturedLocalMainVideoTrack,this._localVideoConfig=null)})}startScreenShare(){return KA(this,arguments,function(){var e=this;let o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{publish:!0,view:null};return function*(){var a,c,d;if(e._localScreenTrack)return void e._log.warn("screen share is already started");let{view:C=null,publish:y=!0,muteSystemAudio:S,option:b}=o,V=y,J=new xM(e._room.videoManager);J.on("4",he=>{let Ye;he.error&&(Ye=wo.convertFrom(he.error)),e.emit(Hi.PUBLISH_STATE_CHANGED,Qo(mi({},he),{error:Ye}))}),J.once("first-video-frame",he=>{e.emit(Hi.FIRST_VIDEO_FRAME,Qo(mi({},he),{streamType:AC(he.streamType)}))}),e._listenOutputTrackChanged(J),o.streamType==="main"&&(J.mediaType=4);let gA=null,CA={},MA={};b&&(Je(b.profile)||(Yn(b.profile)?mb[b.profile]&&J.setProfile(mb[b.profile]):J.setProfile(b.profile)),b.systemAudio&&(CA.systemAudio=!0,CA.echoCancellation=b.echoCancellation,CA.noiseSuppression=b.noiseSuppression,CA.autoGainControl=b.autoGainControl),Je(b.fillMode)||(MA.objectFit=b.fillMode),b.videoTrack&&(CA.videoTrack=b.videoTrack),b.audioTrack&&(CA.audioTrack=b.audioTrack),b.captureElement&&(CA.captureElement=b.captureElement),b.preferDisplaySurface&&(CA.preferDisplaySurface=b.preferDisplaySurface),b.qosPreference&&(CA.contentHint=r1(b.qosPreference)));let $A=yield J.capture(CA);if(J.mediaTrack.addEventListener(YA.ENDED,()=>{e._stopScreenShare(),e.emit(Hi.SCREEN_SHARE_STOPPED)}),$A.getAudioTracks()[0]){gA=new jK(e._room.audioManager);let he=$A.getAudioTracks()[0];(a=o.option)!=null&&a.systemAudio&&!((c=o.option)!=null&&c.audioTrack)&&(gA.sourceTrack=he),yield gA.setInputMediaStreamTrack(he),_r(S)&&gA.mediaTrack&&(gA.mediaTrack.enabled=!S),e._speakerId&&gA.setAudioOutput(e._speakerId)}if(id(J,J).add("player-state-changed",he=>{e.emit(Hi.VIDEO_PLAY_STATE_CHANGED,Qo(mi({},he),{userId:"",streamType:"sub"}))}),V){let he=e._localVideoTrack&&((d=e._localVideoConfig)==null?void 0:d.publish),Ye=!(o.streamType==="main"&&he);e._room.isJoined?(Ye?e._room.publish(J).catch(()=>{}):(V=!1,e._log.warn("main stream is already published, screen share main will not publish")),gA&&(e._checkScreenAudioEchoCancellation(J,gA),e._room.publish(gA).catch(()=>{}))):Ye||(V=!1)}e._localScreenTrack=J,e._room.capturedLocalAuxVideoTrack=J,e._localScreenAudioTrack=gA,e._localScreenConfig=Qo(mi({},o),{view:C,publish:V}),yield e._updateVideoPlayOption({view:C,playOption:MA,track:J})}()})}updateScreenShare(e){return KA(this,null,function*(){var o,a;if(!this._localScreenTrack||!this._localScreenConfig)return;let{view:c,publish:d,muteSystemAudio:C,option:y}=e,S=d,b={};if(y){if(Je(y.fillMode)||(b.objectFit=y.fillMode),y.qosPreference){let V=r1(y.qosPreference);this._localScreenTrack.setContentHint(V)}y.videoTrack&&this._localScreenTrack.setInputMediaStreamTrack(y.videoTrack),y.audioTrack&&this._localScreenAudioTrack&&this._localScreenAudioTrack.setInputMediaStreamTrack(y.audioTrack)}if(this._room.isJoined&&!Je(S)){if(S&&!this._localScreenConfig.publish){let V=this._localVideoTrack&&((o=this._localVideoConfig)==null?void 0:o.publish);this._localScreenConfig.streamType==="main"&&V?(S=!1,this._log.warn("main stream is already published, screen share main will not publish")):this._room.publish(this._localScreenTrack).catch(()=>{}),this._localScreenAudioTrack&&this._room.publish(this._localScreenAudioTrack).catch(()=>{})}if(this._localScreenConfig.publish&&!S){let V=[this._localScreenTrack];this._localScreenAudioTrack&&V.push(this._localScreenAudioTrack),V.forEach(J=>this._room.unpublish(J).catch(()=>{}))}}(a=this._localScreenAudioTrack)!=null&&a.mediaTrack&&_r(C)&&(this._localScreenAudioTrack.mediaTrack.enabled=!C),yield this._updateVideoPlayOption({view:c,playOption:b,track:this._localScreenTrack,prevConfig:this._localScreenConfig}),jh(this._localScreenConfig,Qo(mi({},e),{publish:S}))})}stopScreenShare(){return KA(this,null,function*(){return yield this._stopScreenShare()})}startRemoteVideo(e){return KA(this,null,function*(){let{view:o,userId:a,streamType:c,option:d}=e,C="".concat(a,"_").concat(c);if(this._remoteVideoConfigMap.has(C))return void this._log.warn("remote video has already started. userId:".concat(a,", streamType:").concat(c));let y=this._room.remotePublishedUserMap.get(a);if(!y)return;let S={},b=c==="main"?y.remoteVideoTrack:y.remoteAuxiliaryTrack,V=this._bindRemoteVideoTrackEvents(b);this._listenOutputTrackChanged(b),d&&(Je(d.fillMode)||(S.objectFit=d.fillMode),Je(d.mirror)||(S.mirror=d.mirror),Je(d.poster)||(S.poster=d.poster),S.canvasRender=d.canvasRender,c==="main"&&!Je(d.small)&&(!y.remoteVideoTrack.isSubscribing&&!y.remoteVideoTrack.isSubscribed&&y.remoteVideoTrack.setMediaType(d.small?8:4),this._room.changeType(d.small,b.user)),Je(d.draggable)||b.setDraggable(d.draggable)),S.isLiveStream=!!this._playbackQualityList.find(J=>J.userId===a&&J.streamType===c),yield this._room.subscribe(b),yield this._enableVideoDecodeFallback(b,c),yield this._updateVideoPlayOption({view:o,playOption:S,track:b}),this._emitTrackEvent(b),this._remoteVideoConfigMap.set(C,{config:e,handlers:V}),d&&!Je(d.receiveWhenViewVisible)&&this._observeView({remoteTrack:b,view:o,receiveWhenViewVisible:d.receiveWhenViewVisible,viewRoot:d?.viewRoot})})}updateRemoteVideo(e){return KA(this,null,function*(){var o,a;let{view:c,userId:d,streamType:C,option:y,mute:S}=e,b="".concat(d,"_").concat(C),V=this._remoteVideoConfigMap.get(b);if(!V||!this._room.remotePublishedUserMap.has(d))return;let J={};y&&(Je(y.fillMode)||(J.objectFit=y.fillMode),Je(y.mirror)||(J.mirror=y.mirror));let gA=null,CA=this._room.remotePublishedUserMap.get(d);if(C==="main"&&CA!=null&&CA.muteState.hasVideo&&(gA=CA.remoteVideoTrack),C==="sub"&&CA!=null&&CA.muteState.hasAuxiliary&&(gA=CA.remoteAuxiliaryTrack),!gA)return;let{config:MA}=V;C==="main"&&y&&!Je(y.small)&&this._room.changeType(y.small,gA.user),y&&!Je(y.draggable)&&gA.setDraggable(y.draggable),y&&(_r(y.pictureInPicture)&&(y.pictureInPicture?yield gA.player.enterPictureInPicture():yield gA.player.exitPictureInPicture()),_r(y.fullScreen)&&(y.fullScreen?yield gA.player.enterFullscreen():yield gA.player.exitFullscreen())),_r(S)&&(gA.ignoreUpdatePlayingState=!0,S?(yield gA.player.pause(),yield this.room.unsubscribe(gA)):(yield this.room.subscribe(gA),yield gA.player.resume(!0))),yield this._updateVideoPlayOption({view:c,playOption:J,track:gA,prevConfig:MA}),jh(MA,e);let $A=Je(y?.receiveWhenViewVisible)?(o=MA.option)==null?void 0:o.receiveWhenViewVisible:y.receiveWhenViewVisible,he=Je(c)?MA.view:c,Ye=Je(y?.viewRoot)?(a=MA.option)==null?void 0:a.viewRoot:y.viewRoot;this._observeView({remoteTrack:gA,view:he,receiveWhenViewVisible:$A,viewRoot:Ye})})}stopRemoteVideo(e){return KA(this,null,function*(){return this._stopRemoteVideo(e)})}_stopRemoteVideo(e){let o=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1];return KA(this,null,function*(){let a=[],c=this._room.remotePublishedUserMap.get(e.userId);if(c){let{muteState:d,remoteVideoTrack:C,remoteAuxiliaryTrack:y}=c;e.streamType==="main"&&(C.stop(),d.hasVideo&&a.push(C)),e.streamType==="sub"&&(y.stop(),d.hasAuxiliary&&a.push(y))}for(let d of a)o&&(delete d.ignoreUpdatePlayingState,yield this._room.unsubscribe(d),this._mediaTrackMap.delete(d.outMediaTrack));this._removeRemoteVideoConfig(e.userId,e.streamType)})}_removeRemoteVideoConfig(e,o){let a="".concat(e,"_").concat(o),c=this._remoteVideoConfigMap.get(a);if(c&&(c.observer&&c.observer.disconnect(),c.handlers)){let d=this._room.remotePublishedUserMap.get(e);if(d){let C=o==="main"?d.remoteVideoTrack:d.remoteAuxiliaryTrack;this._unbindRemoteVideoTrackEvents(C,c.handlers)}}this._remoteVideoConfigMap.delete(a)}_bindRemoteVideoTrackEvents(e){let o={onEnterPIP:()=>KA(this,null,function*(){yield e.player.enterPIPPromise,this.emit(Hi.PICTURE_IN_PICTURE_STATE_CHANGED,{streamType:AC(e.streamType),userId:e.userId,isPictureInPicture:!0,pictureInPictureWindow:e.player.pipWindow})}),onLeavePIP:()=>{this.emit(Hi.PICTURE_IN_PICTURE_STATE_CHANGED,{streamType:AC(e.streamType),userId:e.userId,isPictureInPicture:!1})},onEnterFullScreen:()=>{this.emit(Hi.FULL_SCREEN_STATE_CHANGED,{streamType:AC(e.streamType),userId:e.userId,isFullScreen:!0})},onLeaveFullScreen:()=>{this.emit(Hi.FULL_SCREEN_STATE_CHANGED,{streamType:AC(e.streamType),userId:e.userId,isFullScreen:!1})},onDecodeFailed:()=>{this.emit(Hi.ERROR,new wo({code:Ro.OPERATION_FAILED,extraCode:5507,message:"video decode failed"}))},onVideoSizeChanged:a=>{this.emit(Hi.VIDEO_SIZE_CHANGED,Qo(mi({},a),{streamType:AC(a.streamType)}))}};return e.player.on(fo.ENTER_PICTURE_IN_PICTURE,o.onEnterPIP),e.player.on(fo.LEAVE_PICTURE_IN_PICTURE,o.onLeavePIP),e.player.on(fo.ENTER_FULL_SCREEN,o.onEnterFullScreen),e.player.on(fo.LEAVE_FULL_SCREEN,o.onLeaveFullScreen),e.on("decode-failed",o.onDecodeFailed),e.on("video-size-changed",o.onVideoSizeChanged),o}_unbindRemoteVideoTrackEvents(e,o){e.player.off(fo.ENTER_PICTURE_IN_PICTURE,o.onEnterPIP),e.player.off(fo.LEAVE_PICTURE_IN_PICTURE,o.onLeavePIP),e.player.off(fo.ENTER_FULL_SCREEN,o.onEnterFullScreen),e.player.off(fo.LEAVE_FULL_SCREEN,o.onLeaveFullScreen),e.off("decode-failed",o.onDecodeFailed),e.off("video-size-changed",o.onVideoSizeChanged)}muteRemoteAudio(e,o){return KA(this,null,function*(){this._remoteAudioMuteMap.set(e,o);try{if(e==="*")if(o)yield this._stopRemoteAudio({userId:e});else{let a=[...this._room.remotePublishedUserMap.values()];for(let c of a)c.muteState.hasAudio&&!this._remoteAudioConfigMap.has(c.userId)&&this.room.isJoined&&(yield this._startRemoteAudio({userId:c.userId}))}else o?yield this._stopRemoteAudio({userId:e}):!this._remoteAudioConfigMap.has(e)&&this.room.isJoined&&(yield this._startRemoteAudio({userId:e}))}catch(a){throw a.code!==Ro.OPERATION_ABORT&&this._remoteAudioMuteMap.delete(e),a}})}setRemoteAudioVolume(e,o){if(e==="*"){this._remoteAudioVolumeMap.set("*",o),this._remoteAudioVolumeMap.forEach((c,d)=>this._remoteAudioVolumeMap.set(d,o));let a=[...this._room.remotePublishedUserMap.values()];for(let c of a)this._remoteAudioVolumeMap.set(c.userId,o),c.remoteAudioTrack.isSubscribed&&this._updateAudioPlayOption({playOption:{volume:o},track:c.remoteAudioTrack})}else if(e){let a=this._room.remotePublishedUserMap.get(e);this._remoteAudioVolumeMap.set(e,o),a&&a.remoteAudioTrack.isSubscribed&&this._updateAudioPlayOption({playOption:{volume:o},track:a.remoteAudioTrack})}}startPlugin(e,o){return KA(this,null,function*(){return e.start(o)})}updatePlugin(e,o){return KA(this,null,function*(){return e.update(o)})}stopPlugin(e,o){return KA(this,null,function*(){return e.stop(o)})}enableAudioVolumeEvaluation(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:2e3,o=arguments.length>1&&arguments[1]!==void 0&&arguments[1];this._room.enableAudioVolumeEvaluation(e,o)}on(e,o,a){if(this.listeners(e).includes(o))return this;if(this._log.debug("on",e),super.on(e,o,a),this._eventListened.add(e),this.listeners(Hi.AUDIO_FRAME).length>0){let{audioFrameEventConfigMap:c}=this.room.audioManager;c.get("")||c.set("",{enable:!0}),this._localAudioTrack&&this.room.audioManager.handleLocalTrackStarted({userId:"",room:this.room})}return e==="realtime-transcriber-message"&&this._room.subscribeDataChannel(),this}emit(e){for(var o=arguments.length,a=new Array(o>1?o-1:0),c=1;c{d?.abort("off")}),c.clear()}return this}getAudioTrack(){let e,o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{userId:"",streamType:"main"},a=null,c="main",d=!1;if(Yn(o)?e=o:(e=o.userId,d=o.processed===!0,o.streamType&&(c=o.streamType)),e){let C=this._room.remotePublishedUserMap.get(e);C&&(a=C.remoteAudioTrack)}else a=c==="sub"?this._localScreenAudioTrack:this._localAudioTrack;return a?d&&a.outMediaTrack&&a.outMediaTrack!==a.mediaTrack?a.outMediaTrack.clone():a.mediaTrack:null}getVideoTrack(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{userId:"",streamType:"main"},{userId:o="",streamType:a="main",processed:c=!1}=e,d=null;if(o==="")a==="main"&&this._localVideoTrack&&(d=this._localVideoTrack),a==="sub"&&this._localScreenTrack&&(d=this._localScreenTrack);else{let C=this._room.remotePublishedUserMap.get(o);C&&(d=a==="main"?C.remoteVideoTrack:C.remoteAuxiliaryTrack)}return d?c&&d.outMediaTrack&&d.outMediaTrack!==d.mediaTrack?d.outMediaTrack.clone():d.mediaTrack:null}getVideoSnapshot(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{userId:o,streamType:a="main"}=e;if(o){let c=this._room.remotePublishedUserMap.get(o);if(a==="main"&&c!=null&&c.muteState.hasVideo)return c.remoteVideoTrack.getVideoFrame();if(a==="sub"&&c!=null&&c.muteState.hasAuxiliary)return c.remoteAuxiliaryTrack.getVideoFrame()}else{if(a==="main"&&this._localVideoTrack)return this._localVideoTrack.getVideoFrame();if(a==="sub"&&this._localScreenTrack)return this._localScreenTrack.getVideoFrame()}return""}_setCurrentSpeaker(e){var o,a;this._speakerId=e,(o=this._localAudioTrack)==null||o.setAudioOutput(e),(a=this._localScreenAudioTrack)==null||a.setAudioOutput(e),this._room.remotePublishedUserMap.forEach(c=>c.remoteAudioTrack.setAudioOutput(e))}setCurrentSpeaker(e){return KA(this,null,function*(){(yield UM()).forEach(o=>{o.deviceId===e&&(this._setCurrentSpeaker(e),this.emit(Hi.DEVICE_CHANGED,{type:"speaker",action:"active",device:o}),zl=o)}),this._log.warn('the "setCurrentSpeaker" method of the instance will be deprecated in the future, please use "TRTC.setCurrentSpeaker" instead. For more information, please visit: '.concat(Hh,"/en/TRTC.html#.setCurrentSpeaker"))})}_startRemoteAudio(e){return this._doStartRemoteAudio(e)}_doStartRemoteAudio(e){return KA(this,null,function*(){var o;let{userId:a}=e;if(this._remoteAudioConfigMap.has(a))return void this._log.warn("remote audio has already started. userId:".concat(a));let c=this._room.remotePublishedUserMap.get(a);if(!c)return;let d={},C=c.remoteAudioTrack;C.on("decode-failed",y=>{this.emit(Hi.ERROR,new wo({code:Ro.OPERATION_FAILED,extraCode:5508,message:"audio decode failed"}))}),this._listenOutputTrackChanged(C),this._speakerId&&C.setAudioOutput(this._speakerId);try{let y=(o=this._remoteAudioVolumeMap.get(a))!=null?o:this._remoteAudioVolumeMap.get("*"),S=bn(y)?y:100;d.volume=S,this._remoteAudioConfigMap.set(a,e),yield this._room.subscribe(C),pa(ca(C,"decode-failed"),lE(ca(C,Zs.INIT)),hl(()=>{this.startPlugin(Cz.Name,{track:C,type:"auto",config:{codec:"opus",sampleRate:48e3,numberOfChannels:1}})})),yield this._updateAudioPlayOption({playOption:d,track:C}),F.emit("115",{userId:a,room:this.room}),C.outMediaTrack&&this.room.audioManager.updateAudioReference({type:"add",audioReference:C.outMediaTrack,refId:"ra-".concat(a)})}catch(y){throw this._remoteAudioConfigMap.delete(a),y}this._emitTrackEvent(C)})}_stopRemoteAudio(e){let o=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1];return KA(this,null,function*(){let a=this._room.remotePublishedUserMap.get(e.userId);a&&(a.remoteAudioTrack.stop(),a.muteState.hasAudio&&o&&(yield this._room.unsubscribe(a.remoteAudioTrack)),this._mediaTrackMap.delete(a.remoteAudioTrack.outMediaTrack)),this._remoteAudioConfigMap.delete("".concat(e.userId)),F.emit("116",{userId:e.userId,room:this.room}),this.room.audioManager.updateAudioReference({type:"remove",refId:"ra-".concat(e.userId)})})}_enableVideoDecodeFallback(e,o){let a,c=this._room.videoDecodeFallbackType;c&&this._plugins.has("TRTCVideoDecoder")&&(e.log.debug("remote video will fall back when decode failed",e.id),pa(ca(e,"decode-failed"),lE(ca(e,Zs.INIT)),xK(()=>{this._room.downlinkVideoCodec!=="h265"&&this.startPlugin("TRTCVideoDecoder",{type:"auto",renderer:"videoFrame",track:e,config:{codec:"avc1.420028"},fallback:c})}),A1(ca(e,"decode-downgrade-state-changed")),hl(d=>{a=d.state,this.emit(Hi.VIDEO_DECODE_DOWNGRADE_STATE_CHANGED,Qo(mi({},d),{streamType:o,userId:e.userId}))},d=>{e.log.error("fallback",d)},()=>{a==="STARTED"&&e.log.info("fallback complete")})))}_updateVideoPlayOption(e){return KA(this,arguments,function(o){let{view:a,playOption:c,track:d,prevConfig:C}=o;return function*(){if(d.setMirror(c.mirror),Je(a)&&C&&C.view&&!m0(c)){let y=eM(C.view);y.length>0&&(yield d.play(y,c))}if(!Je(a)){let y=eM(a);y.length>0?yield d.play(y,c):d.stop()}}()})}_updateAudioPlayOption(e){return KA(this,arguments,function(o){var a=this;let{playOption:c={},track:d,prevConfig:C}=o;return function*(){if(!d.isPlayCalled)try{yield d.play(null,c)}catch{}if(Je(c.muted)||d.setPlayerMute(c.muted),Je(c.volume)||d.setAudioVolume(c.volume/100),d instanceof PM&&d.mediaTrack){let y=c.muted===!1&&!Je(c.volume)&&c.volume>0?"add":"remove";a.room.audioManager.updateAudioReference({type:y,audioReference:d.mediaTrack,refId:"em"})}else if(d instanceof o1){let y=c.muted?0:c.volume;if(Je(y))return;a.room.audioManager.updateAudioReference({type:"updateVolume",refId:"ra-".concat(d.userId),volume:c.volume})}}()})}_listenOutputTrackChanged(e){e.listeners("output-media-track-changed").length===0&&e.on("output-media-track-changed",()=>this._emitTrackEvent(e,!1))}_emitTrackEvent(e){let o=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1],a=e.isRemote?e.userId:"";e.outMediaTrack&&(o&&this._mediaTrackMap.get(e.outMediaTrack)===a||(this._mediaTrackMap.set(e.outMediaTrack,a),this.emit(Hi.TRACK,{userId:a,streamType:AC(e.streamType),track:e.outMediaTrack,sourceTrack:e.mediaTrack})))}_checkTrackToPublish(){var e,o,a;let c=[];if((e=this._localAudioConfig)!=null&&e.publish&&this._localAudioTrack&&c.push(this._localAudioTrack),(o=this._localVideoConfig)!=null&&o.publish&&this._localVideoTrack&&c.push(this._localVideoTrack),(a=this._localScreenConfig)!=null&&a.publish&&(this._localScreenTrack&&c.push(this._localScreenTrack),this._localScreenAudioTrack&&c.push(this._localScreenAudioTrack),this._checkScreenAudioEchoCancellation(this._localScreenTrack,this._localScreenAudioTrack)),c.length!==0)return Promise.all(c.map(d=>this._room.publish(d).catch(()=>{})))}_observeView(e){let{remoteTrack:o,view:a,receiveWhenViewVisible:c,viewRoot:d}=e;if(Je(a)||Je(c))return;let C=this._remoteVideoConfigMap.get("".concat(o.userId,"_").concat(AC(o.streamType)));if(!C)return;let y=C.observer||void 0;if(a===null||wa(a)&&a.length===0||!c)return y?.disconnect(),void(o.isSubscribed||(this._log.info("_observeView observer disconnect, resubscribe",o.userId,o.strMediaType),this._room.subscribe(o).catch(()=>{})));let S=C.visibleViewMap||new Map,b=-1;(!y||y.root!==d)&&(y?.disconnect(),S.clear(),y=new IntersectionObserver(J=>{J.forEach(gA=>{S.set(gA.target,gA.isIntersecting),o.log.info("view ".concat(gA.target.id," is").concat(gA.isIntersecting?"":" not"," visible"))}),clearTimeout(b),b=window.setTimeout(()=>{[...S.values()].find(gA=>gA)?o.isSubscribed||this._room.subscribe(o).catch(()=>{}):o.isSubscribed&&this._room.unsubscribe(o).catch(()=>{})},200)},{root:d}));let V=new Set(eM(a));S.forEach((J,gA)=>{V.has(gA)||(y.unobserve(gA),S.delete(gA))}),V.forEach(J=>{S.set(J,!0),y.observe(J)}),y.takeRecords().forEach(J=>{S.set(J.target,J.isIntersecting)}),C.visibleViewMap=S,C.observer=y}_exitRoom(){return KA(this,null,function*(){this._room.isJoined&&(yield this._room.leave()),this._clearRemoteTracks()})}_stopScreenShare(){return KA(this,null,function*(){var e,o;if(this._localScreenTrack){if(this._room.isJoined){let a=[];(e=this._localScreenConfig)!=null&&e.publish&&a.push(this._localScreenTrack),this._localScreenAudioTrack&&a.push(this._localScreenAudioTrack),yield Promise.all(a.map(c=>this._room.unpublish(c).catch(()=>{})))}this._localScreenTrack.stop(),this._localScreenTrack.close(),this._localScreenAudioTrack&&(((o=this._localScreenAudioTrack.trackSettings)==null?void 0:o.echoCancellation)===!1&&this.stopPlugin("AudioProcessor"),this._localScreenAudioTrack.stop(),this._localScreenAudioTrack.close(),this._room.audioManager.removeInput(this._localScreenAudioTrack),this._localScreenAudioTrack=null),kn(this._localScreenTrack),this._localScreenTrack=null,delete this._room.capturedLocalAuxVideoTrack,this._localScreenConfig=null}})}_checkScreenAudioEchoCancellation(e,o){return KA(this,null,function*(){var a,c;if(!e||!o)return;let d=(a=e.trackSettings)==null?void 0:a.displaySurface;if(((c=o.trackSettings)==null?void 0:c.echoCancellation)===!1&&(d==="monitor"||d==="browser"&&e.isShareCurrentTab)){this._log.warn("echoCancellation of screen audio track is disable. Try starting audioProcessor plugin");try{yield this.startPlugin("AudioProcessor",{sdkAppId:Number(this.room.sdkAppId),userId:this._room.userId,userSig:this.room.userSig,isScreenAudioNeedAudioProcess:!0,isLocalAudioNeedAudioProcess:!1})}catch(C){this._log.warn("start audioProcessor plugin failed: ",C)}}})}_onLocalTrackCaptured(e){let{track:o}=e;o.kind==="audio"&&(!zl||jk(zl))&&(this._initActiveSpeaker(),F.off("102",this._onLocalTrackCaptured,this))}_initActiveSpeaker(){return KA(this,null,function*(){if(zl&&!jk(zl))this.emit(Hi.DEVICE_CHANGED,{type:"speaker",action:"active",device:zl});else{let e=yield UM();e[0]&&!jk(e[0])?(zl=e[0],this.emit(Hi.DEVICE_CHANGED,{type:"speaker",action:"active",device:e[0]})):F.on("102",this._onLocalTrackCaptured,this)}})}_onAudioAvailable(e){let{userId:o}=e,a=this._remoteAudioMuteMap.has(o)?this._remoteAudioMuteMap.get(o):this._remoteAudioMuteMap.get("*");(a===!1||this._room.autoReceiveAudio&&!a)&&this._doStartRemoteAudio({userId:o}).catch(()=>{})}_onVideoAvailable(e){let{userId:o,streamType:a}=e;if(!this._room.autoReceiveVideo)return;let c=this._room.remotePublishedUserMap.get(o);if(c){let d=a==="main"?c.remoteVideoTrack:c.remoteAuxiliaryTrack,C=[d];this._room.autoReceiveAudio&&c.remoteAudioTrack.isAvailable&&C.push(c.remoteAudioTrack),this._room.subscribe(...C).then(()=>{this._emitTrackEvent(d)}).catch(()=>{})}}_onAudioUnavailable(e){let{userId:o,muteState:a}=e;a.hasAudio&&a.audioMuted||this._stopRemoteAudio({userId:o},!1).catch(()=>{})}_onVideoUnavailable(e){let{userId:o,streamType:a}=e;this._stopRemoteVideo({userId:o,streamType:a},!1).catch(()=>{})}_onDataChannelAvailable(){if(this.listeners("realtime-transcriber-message").length>0)return this._room.subscribeDataChannel()}sendSEIMessage(e,o){var a;let c=this._plugins.get("SEI");c&&(c.update({buffer:e,options:Qo(mi({seiPayloadType:243},o),{small:!((a=this._localVideoTrack)==null||!a.small)})}),Ai.addCount({key:5e5,useUV:!0}))}sendCustomMessage(e){var o,a;(a=(o=this._room).sendCustomMessage)==null||a.call(o,e),Ai.addCount({key:500001,useUV:!0})}callExperimentalAPI(e,o){return KA(this,null,function*(){return this._log.info("callExperimentalAPI(".concat(e,", ").concat(JSON.stringify(o),")")),DiA.call(e,mi({trtcInstance:this},o))})}static setLogLevel(e,o){QA.setLogLevel(e),Je(o)||(o?QA.enableUploadLog():QA.disableUploadLog())}static isSupported(){return Rk(sm.frameWorkType)}static getPermissions(e){return KA(this,arguments,function(o){let{request:a=!0,types:c=["camera","microphone"]}=o;return function*(){a&&(yield B1.request(c).catch(y=>{var S;return QA.error("getPermissions request failed, error: ".concat((S=y?.message)!=null?S:y))}));let[d,C]=yield Promise.all([B1.get("camera"),B1.get("microphone")]);return{camera:d,microphone:C}}()})}static getCameraList(){return Xp(!(arguments.length>0&&arguments[0]!==void 0)||arguments[0])}static getMicrophoneList(){return Zp(!(arguments.length>0&&arguments[0]!==void 0)||arguments[0])}static getSpeakerList(){return UM(!(arguments.length>0&&arguments[0]!==void 0)||arguments[0])}static setCurrentSpeaker(e){return KA(this,null,function*(){if(Ha&&(e===rL.SPEAKER||e===rL.HEADSET)){let o=yield sm.getMicrophoneList(),a="";return o.forEach(c=>{c.label===e&&(a=c.deviceId)}),a?void lL.forEach(c=>KA(null,null,function*(){c._localAudioTrack&&(yield c.updateLocalAudio({option:{microphoneId:a}}))})):void 0}(yield UM()).forEach(o=>{o.deviceId===e&&(lL.forEach(a=>{a._setCurrentSpeaker(e),a.emit(Hi.DEVICE_CHANGED,{type:"speaker",action:"active",device:o})}),zl=o)})})}static _addKVStat(e){let{type:o,key:a,value:c,base:d,useUV:C,version:y,max:S}=e;switch(y&&(zh.version=y),o){case"count":zh.addCount({key:a,useUV:C});break;case"enum":zh.addEnum({key:a,value:c,useUV:C});break;case"number":zh.addNumber({key:a,value:c,split:d,max:S})}}get localVideoTrack(){return this._localVideoTrack}get localScreenTrack(){return this._localScreenTrack}get localScreenAudioTrack(){return this._localScreenAudioTrack}};Y(Ss,"VERSION",cz),Y(Ss,"_loggerManager",QA),Y(Ss,"EVENT",Hi),Y(Ss,"ERROR_CODE",Ro),Y(Ss,"TYPE",rL),Y(Ss,"frameWorkType",30),di([ma({replaceArg:A=>({argIndex:0,value:{name:"plugin"in A?A.plugin.Name:A.Name,assetsPath:"assetsPath"in A?A?.assetsPath:"default"}})})],Ss.prototype,"use"),di([du(Wl.TRTC.enterRoom),JM("room",(A,e)=>{let[o]=A,[a]=e;return(o.roomId||o.strRoomId)===(a.roomId||a.strRoomId)&&o.userId===a.userId&&o.sdkAppId===a.sdkAppId}),jr(A=>function(e){return this._log.setUserId(e.userId),this._log.setSdkAppId(e.sdkAppId),A.call(this,e)}),ma()],Ss.prototype,"enterRoom"),di([ma()],Ss.prototype,"exitRoom"),di([du(Wl.TRTC.switchRoom),ma(),Wk()],Ss.prototype,"switchRoom"),di([du(Wl.TRTC.switchRole),I_("room",{merge:(A,e)=>e}),ma()],Ss.prototype,"switchRole"),di([ma()],Ss.prototype,"destroy"),di([du(Wl.TRTC.startLocalAudio),JM("audio",(A,e)=>{let[o]=A,[a]=e;var c,d;return((c=o?.option)==null?void 0:c.microphoneId)===((d=a?.option)==null?void 0:d.microphoneId)}),ma()],Ss.prototype,"startLocalAudio"),di([du(Wl.TRTC.updateLocalAudio),I_("audio",{debounce:{delay:200,getKey:()=>"".concat(hz,"-localAudio"),isNeedToDebounce:A=>{var e;return!Je((e=A.option)==null?void 0:e.captureVolume)}}}),ma()],Ss.prototype,"updateLocalAudio"),di([HM("audio"),ma()],Ss.prototype,"stopLocalAudio"),di([du(Wl.TRTC.startLocalVideo),JM("video",(A,e)=>{let[o]=A,[a]=e;var c,d;return((c=o?.option)==null?void 0:c.cameraId)===((d=a?.option)==null?void 0:d.cameraId)}),ma()],Ss.prototype,"startLocalVideo"),di([du(Wl.TRTC.updateLocalVideo),I_("video"),ma()],Ss.prototype,"updateLocalVideo"),di([HM("video"),ma()],Ss.prototype,"stopLocalVideo"),di([du(Wl.TRTC.startScreenShare),JM("screen",()=>!0),ma()],Ss.prototype,"startScreenShare"),di([du(Wl.TRTC.updateScreenShare),I_("screen"),ma()],Ss.prototype,"updateScreenShare"),di([ma()],Ss.prototype,"stopScreenShare"),di([du(Wl.TRTC.startRemoteVideo),JM(A=>"v".concat(A.userId).concat(A.streamType),()=>!0),ma({getRemoteId:A=>"".concat(A.userId,"_").concat(A.streamType)})],Ss.prototype,"startRemoteVideo"),di([du(Wl.TRTC.updateRemoteVideo),I_(A=>"v".concat(A.userId).concat(A.streamType)),ma({getRemoteId:A=>"".concat(A.userId,"_").concat(A.streamType)})],Ss.prototype,"updateRemoteVideo"),di([du(Wl.TRTC.stopRemoteVideo),jr(A=>function(e){return KA(this,null,function*(){if(e.userId==="*"){let o=[];return this._room.remotePublishedUserMap.forEach(a=>{this._remoteVideoConfigMap.has("".concat(a.userId,"_main"))&&o.push(this.stopRemoteVideo({streamType:"main",userId:a.userId}).catch(()=>{})),this._remoteVideoConfigMap.has("".concat(a.userId,"_sub"))&&o.push(this.stopRemoteVideo({streamType:"sub",userId:a.userId}).catch(()=>{}))}),Promise.all(o)}return A.call(this,e)})}),ma({getRemoteId:A=>"".concat(A.userId,"_").concat(A.streamType)})],Ss.prototype,"stopRemoteVideo"),di([HM(A=>"v".concat(A.userId).concat(A.streamType))],Ss.prototype,"_stopRemoteVideo"),di([du(...Wl.TRTC.muteRemoteAudio),ma({getRemoteId:A=>A})],Ss.prototype,"muteRemoteAudio"),di([lz(...Wl.TRTC.setRemoteAudioVolume),function(A,e){return jr((o,a)=>function(){for(var c=arguments.length,d=new Array(c),C=0;C{var J;(J=u_.get(this))==null||J.delete(S)},A);y.set(S,V)}else{clearTimeout(b);let V=window.setTimeout(()=>{var J;o.apply(this,d),(J=u_.get(this))==null||J.delete(S)},A);y.set(S,V)}})}(200,A=>A),ma({getRemoteId:A=>A})],Ss.prototype,"setRemoteAudioVolume"),di([ij("start"),FM(A=>{var e;return(e=A.afterStart)==null?void 0:e.call(A)}),JM((A,e)=>A.disableRandomCall?null:A.getAlias()+A.getGroup(e)),ma({replaceArg:A=>({argIndex:0,value:A.getName()}),getKVReportKey:A=>w2[A.getName()],ignoreLog:A=>A.getName()==="Debug",ignoreErrorLog:A=>A.getName()==="AudioProcessor"})],Ss.prototype,"startPlugin"),di([ij("update"),I_((A,e)=>A.disableRandomCall?null:A.getAlias()+A.getGroup(e),{merge:(A,e)=>(jh(A[1],e[1]),A)}),ma({replaceArg:A=>({argIndex:0,value:A.getName()}),getKVReportKey:A=>Iy[A.getName()]})],Ss.prototype,"updatePlugin"),di([ij("stop"),HM((A,e)=>{if(A.disableRandomCall)return null;let o=A.getGroup(e),a=A.getAlias();return o==="*"?new RegExp("".concat(a,".*")):a+o}),ma({replaceArg:A=>({argIndex:0,value:A.getName()}),getKVReportKey:A=>j0[A.getName()]})],Ss.prototype,"stopPlugin"),di([lz(...Wl.TRTC.enableAudioVolumeEvaluation)],Ss.prototype,"enableAudioVolumeEvaluation"),di([ma()],Ss.prototype,"getVideoSnapshot"),di([ma()],Ss.prototype,"_setCurrentSpeaker"),di([JM(A=>"a".concat(A.userId),()=>!0)],Ss.prototype,"_startRemoteAudio"),di([jr(A=>function(e){return KA(this,null,function*(){return e.userId==="*"?Promise.all([...this._room.remotePublishedUserMap.values()].map(o=>this._stopRemoteAudio(Qo(mi({},e),{userId:o.userId})).catch(()=>{}))):A.call(this,e)})}),HM(A=>"a".concat(A.userId))],Ss.prototype,"_stopRemoteAudio"),di([HM("room")],Ss.prototype,"_exitRoom"),di([HM("screen")],Ss.prototype,"_stopScreenShare"),di([du(...Wl.TRTC.sendSEIMessage),L5({timesInSecond:30,maxSizeInSecond:8e3,getSize:function(){for(var A=arguments.length,e=new Array(A),o=0;oA.data.byteLength})],Ss.prototype,"sendCustomMessage"),di([ma()],Ss.prototype,"callExperimentalAPI"),di([qM()],Ss,"create"),di([du(Wl.TRTC.create)],Ss,"_create"),di([qM()],Ss,"setLogLevel"),di([qM()],Ss,"isSupported"),di([qM(),ma()],Ss,"getPermissions"),di([qM()],Ss,"getCameraList"),di([qM()],Ss,"getMicrophoneList"),di([qM()],Ss,"getSpeakerList");var IL=Ss,viA=class{constructor(){Y(this,"_set",new Set),F.on(sA.LEAVE_SUCCESS,this.delete,this),F.on(sA.SWITCH_ROOM_SUCCESS,this.handleSwitchRoomSuccess,this)}add(A){let{room:e,roomId:o}=A;if(e.scene==="rtc")return;let a=this.getKey(e.userId,o||e.roomId,e.sdkAppId,e.useStringRoomId);this._set.add(a)}delete(A){let{room:e,roomId:o}=A;if(e.scene==="rtc")return;let a=this.getKey(e.userId,e.roomId||o,e.sdkAppId,e.useStringRoomId);this._set.delete(a)}getKey(A,e,o,a){return"".concat(o,"_").concat(e,"_").concat(A,"_").concat(a)}isJoined(A){let{userId:e,roomId:o,sdkAppId:a,room:c}=A;return c.scene!=="rtc"&&this._set.has(this.getKey(e,o,a,c.useStringRoomId))}handleSwitchRoomSuccess(A){let{room:e,currentRoomId:o,targetRoomId:a}=A;e.scene!=="rtc"&&(this._set.delete(this.getKey(e.userId,o,e.sdkAppId,e.useStringRoomId)),this._set.add(this.getKey(e.userId,a,e.sdkAppId,e.useStringRoomId)))}};function RiA(){return KA(this,null,function*(){let A,e;try{let CA=yield Zp();A=CA&&CA.length}catch{}try{let CA=yield Xp();e=CA&&CA.length}catch{}let o={microphone:A,camera:e},{isH264EncodeSupported:a,isVp8EncodeSupported:c,isH264DecodeSupported:d,isVp8DecodeSupported:C,isH265EncodeSupported:y,isH265DecodeSupported:S}=this.checkSystemResult.detail,b=te.basis(),V={webRTC:b.isWebRTCSupported,getUserMedia:b.isGetUserMediaSupported,webSocket:b.isWebSocketsSupported,screenShare:b.isScreenShareSupported,webAudio:b.isWebAudioSupported,h264Encode:a,h264Decode:d,vp8Encode:c,vp8Decode:C,h265Encode:y,h265Decode:S},J={browser:b.browser,os:b.os,trtc:V,devices:o},gA={isWebCodecSupported:b.isWebCodecSupported,isMediaSessionSupported:b.isMediaSessionSupported,isWebTransportSupported:b.isWebTransportSupported};sn.uploadEvent({log:"trtcstats-".concat(JSON.stringify(J)),userId:this.userId}),this._log.info("TrtcStats-".concat(JSON.stringify(J))),sn.uploadEvent({log:"trtcadvancedstats-".concat(JSON.stringify(gA)),userId:this.userId}),_M()})}var wiA=gc(ql()),Bz="1",Ij="2",uL="3",_iA="4",Q1="5",TiA="6",p1="7",Qz="8",AB={CLIENT_BANNED:9,CHANNEL_SETUP_RESULT:19,CHANNEL_RECONNECT_RESULT:514,JOIN_ROOM_RESULT:20,PEER_JOIN:4134,PEER_LEAVE:4135,STREAM_ADDED:16,STREAM_REMOVED:18,UPLINK_NETWORK_STATS:22,UPDATE_REMOTE_MUTE_STAT:23,PUBLISH_RESULT:4098,PUBLISH_STATE_CHANGE_RESULT:4112,UNPUBLISH_RESULT:4100,SUBSCRIBE_RESULT:4102,UNSUBSCRIBE_RESULT:4104,SUBSCRIBE_CHANGE_RESULT:4106,MUTE_RESULT:4108,UPDATE_OFFER_RESULT:4128,START_PUBLISH_TENCENT_CDN_RES:1286,STOP_PUBLISH_TENCENT_CDN_RES:1288,START_PUBLISH_GIVEN_CDN_RES:777,STOP_PUBLISH_GIVEN_CDN_RES:779,START_MIX_TRANSCODE_RES:781,STOP_MIX_TRANSCODE_RES:783,START_PUBLISH_CDN_STREAM_RES:8196,UPDATE_PUBLISH_CDN_STREAM_RES:8198,STOP_PUBLISH_CDN_STREAM_RES:8200,USER_LIST_RES:4137,SWITCH_ROLE_RES:4110,UPDATE_CONSTRAINT_CONFIG_RES:772,REBUILD_PEER_CONNECTION_RES:4150,SPC_PUBLISH_RESULT:4146,SPC_SUBSCRIBE_RESULT:4156,ABILITY_STATUS_REPORT_RESULT:4158,SERVER_FIRST_PACKAGE_RECEIVED:5e3,RECEIVE_CUSTOM_MSG:4140,FALLBACK_CODEC:66,SEND_SWITCH_ROOM_RES:4160,SEND_SWITCH_ROOM_SUBED_REQ:4161,UPDATE_NETWORK_TIME_RESULT:5001,CUSTOM_CMD_RES:8220},NiA=[AB.UPDATE_REMOTE_MUTE_STAT,AB.UPLINK_NETWORK_STATS,AB.USER_LIST_RES,AB.MUTE_RESULT,AB.SERVER_FIRST_PACKAGE_RECEIVED,AB.RECEIVE_CUSTOM_MSG,AB.UPDATE_NETWORK_TIME_RESULT],ls={CLIENT_BANNED:"client-banned",CHANNEL_SETUP_RESULT:"channel-setup-result",CHANNEL_RECONNECT_RESULT:"channel-reconnect-result",JOIN_ROOM_RESULT:"join-room-result",PEER_JOIN:"peer-join",PEER_LEAVE:"peer-leave",STREAM_ADDED:"stream-added",STREAM_REMOVED:"stream-removed",UPLINK_NETWORK_STATS:"uplink-network-stats",UPDATE_REMOTE_MUTE_STAT:"update-remote-mute-stat",PUBLISH_RESULT:"publish-result",PUBLISH_STATE_CHANGE_RESULT:"publish-state-change-result",UNPUBLISH_RESULT:"unpublish-result",SUBSCRIBE_RESULT:"subscribe-result",SUBSCRIBE_CHANGE_RESULT:"subscribe-change-result",UNSUBSCRIBE_RESULT:"unsubscribe-result",UPDATE_OFFER_RESULT:"update-offer-result",START_PUBLISH_TENCENT_CDN_RES:"start-publish-tencent-cdn-res",STOP_PUBLISH_TENCENT_CDN_RES:"stop-publish-tencent-cdn-res",START_PUBLISH_GIVEN_CDN_RES:"start-publish-given-cdn-res",STOP_PUBLISH_GIVEN_CDN_RES:"stop-publish-given-cdn-res",START_MIX_TRANSCODE_RES:"start-mix-transcode-res",STOP_MIX_TRANSCODE_RES:"stop-mix-transcode-res",START_PUBLISH_CDN_STREAM_RES:"start-publish-cdn-stream-res",UPDATE_PUBLISH_CDN_STREAM_RES:"update-publish-cdn-stream-res",STOP_PUBLISH_CDN_STREAM_RES:"stop-publish-cdn-stream-res",USER_LIST_RES:"user-list-res",SWITCH_ROLE_RES:"switch_role_res",MUTE_RESULT:"mute-result",UPDATE_CONSTRAINT_CONFIG_RES:"update-contraint-config-res",REBUILD_PEER_CONNECTION_RES:"rebuild-pc-res",SPC_PUBLISH_RESULT:"spc-publish-result",SPC_SUBSCRIBE_RESULT:"spc-subscribe-result",ABILITY_STATUS_REPORT_RESULT:"ability-status-report",SERVER_FIRST_PACKAGE_RECEIVED:"first-pkg-received",RECEIVE_CUSTOM_MSG:"receive-custom-msg",FALLBACK_CODEC:"fallback-codec",SEND_SWITCH_ROOM_RES:"send-switch-room-res",SEND_SWITCH_ROOM_SUBED_REQ:"send-switch-room-subed-res",UPDATE_NETWORK_TIME_RESULT:"update_network_time_result",CUSTOM_CMD_RES:"custom-cmd-res"},pz="publish_change",GiA="join",biA="leave",kiA="quality_report",mz="mute_uplink",fz="publish",uj="publish_state_change",m1="unpublish",yz="subscribe",Ej="unsubscribe",dj="subscribe_change",LiA="start_publishing",UiA="stop_publishing",FiA="start_push_user_cdn",OiA="stop_push_user_cdn",PiA="start_mcu_mix",xiA="stop_mcu_mix",YiA="start_publish_cdn_stream",ViA="update_publish_cdn_stream",JiA="stop_publish_cdn_stream",HiA="get_user_list",qiA="change_role",Cj="update_constraint_config",KiA="rebuild_pc",jiA="join/v2",Dz="publish/v2",Sz="subscribe/v3",WiA="ability_status_report",ziA="reconnect",ZiA="channel_msg",XiA="switch_room",$iA="update_network_time",AoA=new Set([fz,pz,uj,m1,yz,dj,Ej,Dz,Sz]),f1=new Set,eoA=["autoTest","relayInnerIp","relayOuterIp","mcd","newRelay","clientIp"],toA=0,Mz=class extends wiA.default{constructor(A){var e,o,a;super(),Y(this,"room"),Y(this,"sdkAppId"),Y(this,"userId"),Y(this,"userSig"),Y(this,"url"),Y(this,"backupUrl"),Y(this,"destroyed",!1),Y(this,"_socketInUse"),Y(this,"_socket"),Y(this,"_backupSocket"),Y(this,"_signalInfo",{tinyId:void 0,clientIp:"",signalIp:"",relayIp:"",relayInnerIp:"",relayPort:0,endReportExtend:void 0,bakRelayIps:[],reportToken:void 0}),Y(this,"_currentState","DISCONNECTED"),Y(this,"_isReconnecting",!1),Y(this,"_seq",0),Y(this,"_log"),Y(this,"_lastMessageTime",-1),Y(this,"_connectStartTime",-1),Y(this,"_stopConnectRetry"),Y(this,"_isFirstConnect",!0),Y(this,"bytesSent",0),Y(this,"bytesReceived",0),Y(this,"keepAlive",!1),Y(this,"signalDomainWhenUnifiedProxy"),Y(this,"stopKeepAliveTimeout"),Y(this,"stopPrelinkTimeout"),Y(this,"rtt",0),Y(this,"prelink",!1),Y(this,"_prelinkConfig"),this.room=A.room,this.sdkAppId=A.sdkAppId,this.userId=A.userId,this.userSig=A.userSig,this.signalDomainWhenUnifiedProxy=A.signalDomainWhenUnifiedProxy,this.prelink=A.prelink||!1;let c=((o=(e=this.room.scheduleResult)==null?void 0:e.config)==null?void 0:o.keepAliveClient)||0;(a=this.room.joinParams)!=null&&a.keepAlive&&!c&&(c=1),c-f1.size>0&&this.room.enableSPC&&(this.keepAlive=!0,f1.add(this)),this.url=A.url,this.backupUrl=A.backupUrl,this._seq=0,this._log=QA.createLogger({parent:this.room.getLogger(),id:"ws".concat(++toA),userId:this.userId,sdkAppId:this.sdkAppId}),this.onmessage=this.onmessage.bind(this),this.onerror=this.onerror.bind(this),this.onclose=this.onclose.bind(this)}get race(){return this.room.enableSPC&&!this.room.proxy_ws}get urlParam(){let A="?sdkAppId=".concat(encodeURIComponent(this.sdkAppId),"&userId=").concat(encodeURIComponent(this.userId),"&userSig=").concat(encodeURIComponent(this.userSig),"&keepAlive=").concat(encodeURIComponent(Number(this.keepAlive)));this.signalDomainWhenUnifiedProxy&&(A+="&signalDomain=".concat(encodeURIComponent(this.signalDomainWhenUnifiedProxy))),this.prelink&&(A+="&prelink=1");let e=new URLSearchParams(location.search);return eoA.forEach(o=>{let a=e.get("trtc_".concat(o));a&&(A+="&".concat(o,"=").concat(encodeURIComponent(a)))}),this.race?"".concat(A,"&race=1"):A}get _urlWithParam(){return"".concat(this.url).concat(this.race?"/v2/ws":"").concat(this.urlParam)}get _backupUrlWithParam(){return"".concat(this.backupUrl).concat(this.race?"/v2/ws":"").concat(this.urlParam)}get isConnected(){return this._currentState==="CONNECTED"}get isConnecting(){return this._currentState==="CONNECTING"}get isOnline(){return this._currentState==="CONNECTED"&&Date.now()-this._lastMessageTime<12e3}connect(){return KA(this,arguments,function(){var A=this;let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:1e4;return function*(){if(A.isConnected)return Promise.resolve();A._log.info("connect to [".concat(A.url,", ").concat(A.backupUrl,"] ").concat(A.race?"race":"").concat(e?" timeout: ".concat(e):""," keepAlive: ").concat(Number(A.keepAlive))),A.emitConnectionStateChanged("CONNECTING"),A._connectStartTime=ko();let o=[A.connectWS({url:A._urlWithParam,isMain:!0,timeout:e})];A.race&&A._backupUrlWithParam!==A._urlWithParam&&o.push(A.connectWS({url:A._backupUrlWithParam,isMain:!1,timeout:e})),A._socketInUse=yield $S(o),A.unbindAndCloseSocket(A._socketInUse===A._socket?YA.BACKUP:YA.MAIN),A._isFirstConnect&&(Ai.addSuccessEvent({key:521720}),A._isFirstConnect=!1),A.emitConnectionStateChanged("CONNECTED")}()})}connectWS(A){let{url:e,timeout:o,isMain:a}=A,c=new WebSocket(e);this.bindSocket(c),a?this._socket=c:this._backupSocket=c;let d=-1;return new Promise((C,y)=>{c.onclose=y,c.onerror=y,c.onopen=()=>C(c),o&&(d=setTimeout(()=>{this.unbindAndCloseSocket(a?YA.MAIN:YA.BACKUP),y(new si({code:Et.SIGNAL_CHANNEL_SETUP_FAILED,message:"ws connect timeout"}))},o))}).finally(()=>{c.onclose=null,c.onerror=null,c.onopen=null,clearTimeout(d)})}bindSocket(A){A.addEventListener("close",this.onclose),A.addEventListener("error",this.onerror),A.addEventListener("message",this.onmessage)}unbindSocket(A){A.removeEventListener("close",this.onclose),A.removeEventListener("error",this.onerror),A.removeEventListener("message",this.onmessage)}unbindAndCloseSocket(A){if(A===YA.MAIN){if(this._socket){this.unbindSocket(this._socket);try{this._socket.close(1e3)}catch{}this._socket=null}}else if(this._backupSocket){this.unbindSocket(this._backupSocket);try{this._backupSocket.close(1e3)}catch{}this._backupSocket=null}}onclose(A){A.target===this._socketInUse&&(this._log.warn("".concat(A.target===this._socket?"main":"backup"," is closed code:").concat(A.code," ").concat(A.reason)),this.emitConnectionStateChanged("DISCONNECTED"),(!A.wasClean||A.code!==1e3&&A.code!==4013)&&this.startReconnection(),this.prelink&&A.code===4013&&this.room.clearNetworkQuality(),this.room.isJoining&&this.emit(Q1,new si({code:Et.SIGNAL_CHANNEL_SETUP_FAILED,message:"websocket onclose"})))}onerror(A){this._log.error("".concat(A.target===this._socket?"main":"backup"," error observed")),this.emitConnectionStateChanged("DISCONNECTED"),A.target===this._socketInUse&&(this.unbindAndCloseSocket(YA.MAIN),this.unbindAndCloseSocket(YA.BACKUP),this._socketInUse=null,this.reconnect()),this.room.isJoining&&this.emit(Q1,new si({code:Et.SIGNAL_CHANNEL_SETUP_FAILED,message:"websocket onerror"}))}onmessage(A){if(!this.isConnected)return;let{isOnline:e}=this;this._lastMessageTime=Date.now(),e||this.emit(Qz),this.bytesReceived+=y0(A.data);let o=JSON.parse(A.data),{cmd:a,data:c}=o,d=Object.values(AB),C=Object.keys(AB)[d.indexOf(a)],y=ls[C]||a;switch(NiA.includes(a)||(this._log.debug("received ".concat(a," msg: ").concat(A.data)),y&&this._log.info("Received event: [ ".concat(y," ]"))),a){case AB.CHANNEL_SETUP_RESULT:if(o.code===0)this._signalInfo.clientIp=c.clientIp,this._signalInfo.signalIp=c.signalInnerIp,c.svrTime&&qB(c.svrTime-new Date().getTime()),this._log.info("ChannelSetup Success ".concat(ko()-this._connectStartTime)),Ai.addSuccessEvent({key:521701,cost:ko()-this._connectStartTime}),this._connectStartTime=-1,this.room.firewallDetector.resetTimeoutCount(),this.emit(Bz,{signalInfo:this._signalInfo});else{let S=new si({code:Et.SIGNAL_CHANNEL_SETUP_FAILED,extraCode:o.code,message:Xo({key:Mo.SIGNAL_CHANNEL_SETUP_FAILED,data:{errorCode:o.code,errorMsg:o.message}})});this._log.error("".concat(o.code,", ").concat(o.message)),this.close(),Ai.addFailedEvent({key:521701,error:S}),this.emit(Q1,S)}break;case AB.JOIN_ROOM_RESULT:o.code===0&&(this._signalInfo.relayIp=c.relayOuterIp,this._signalInfo.relayInnerIp=c.relayInnerIp,this._signalInfo.bakRelayIps=c.bakRelayIps,this._signalInfo.relayPort=c.relayPort,this._signalInfo.tinyId=o.tinyId,this._signalInfo.endReportExtend=c.endReportExtend,this._signalInfo.reportToken=c.reportToken,this._log.info("signalIp:".concat(this._signalInfo.signalIp," clientIp:").concat(this._signalInfo.clientIp," relayIp: ").concat(this._signalInfo.relayIp))),this.emit(y,{data:o});break;default:this.emit(String(y),{data:o})}}reGetSignalChannelUrl(){return KA(this,null,function*(){try{if(!this.room.joinParams)return;CQ(!0),yield this.room.schedule(this.room.joinParams);let{mainUrl:A,backupUrl:e}=this.room.getSignalChannelUrl();this.url=A,this.backupUrl=e}catch{}})}startReconnection(){if(!this._socketInUse)return;this._socketInUse.onclose=null,this._socketInUse.close(4011);let A=this._socketInUse===this._socket;this.unbindAndCloseSocket(A?YA.MAIN:YA.BACKUP),this._socketInUse=null,this.emitConnectionStateChanged("DISCONNECTED"),this.reconnect()}reconnect(){return KA(this,null,function*(){if(!this._isReconnecting){if(!this.room.isJoined&&this.keepAlive)return void this.close();this._isReconnecting=!0;try{this._log.warn("reconnect"),yield this.connect();let{roomId:A,useStringRoomId:e}=this.room,{relayIp:o,relayInnerIp:a,relayPort:c}=this._signalInfo,{data:d}=yield this.sendWaitForResponse({command:ziA,data:{roomId:A,useStringRoomId:e,relayInnerIp:a,relayOuterIp:o,relayPort:c},responseCommand:ls.CHANNEL_RECONNECT_RESULT});d.code===0?(this._log.warn("reconnect success"),this.stopReconnection(),Ai.addSuccessEvent({key:521702,cost:ko()-this._connectStartTime}),this._connectStartTime=-1,this.room.syncUserList(),this.room.checkConnectionsToReconnect()):(Ai.addFailedEvent({key:521702,error:d.code}),this._log.warn("reconnect failed, ".concat(d.code," ").concat(d.message)),this.room.reJoin())}catch(A){this._log.error(A),this.room.reJoin()}}})}send(A){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(this.isConnected&&!this.room.isLeft){let o={cmd:A,data:e,userId:this.userId,tinyId:this._signalInfo.tinyId,seq:++this._seq},a=JSON.stringify(o);return this._socketInUse.send(a),AoA.has(A)&&this._log.info("send",A,e),this.bytesSent+=y0(a),o.seq}}sendWaitForResponse(A){let{command:e,data:o,timeout:a=5e3,responseCommand:c,commandDesc:d,enableLog:C=!0,addReceiveTime:y=!1}=A;return new Promise((S,b)=>{let V=()=>{clearTimeout(J),b(new si({code:Et.API_CALL_ABORTED,message:"".concat(e," aborted due to connection closed")}))};this.once(p1,V);let J=setTimeout(()=>{this.off(c,gA),this.off(p1,V);let MA=new si({code:Et.API_CALL_TIMEOUT,message:Xo({key:Mo.API_CALL_TIMEOUT,data:{commandDesc:d,command:e}})});C&&this._log.warn(MA),b(MA)},a),gA=MA=>{MA.data.seq===CA&&(clearTimeout(J),this.off(c,gA),this.off(p1,V),y&&(MA.data.receiveTime=Date.now()),S(MA))};this.on(c,gA);let CA=this.send(e,o)})}sendWaitForResponseWithRetry(A){let{commandDesc:e,command:o,retries:a=0,retryTimeout:c=0}=A;return oM({retryFunction:this.sendWaitForResponse,onError:d=>{let{retry:C,reject:y,error:S}=d;!this.room.isJoined||this.destroyed||S.code===Et.API_CALL_ABORTED?y(S):this.isOnline?C():(this._log.warn("retry ".concat(o," when connected")),this.once(Qz,C))},onRetrying:d=>{this._log.warn("".concat(e||o," timeout observed, retrying [").concat(d,"/").concat(a,"]"))},settings:{retries:a,timeout:c},context:this})(A)}getCurrentState(){return this._currentState}getSignalInfo(){return this._signalInfo}stopReconnection(){this._isReconnecting=!1,this._stopConnectRetry&&this._stopConnectRetry()}close(){this._log.info("closed"),clearTimeout(this.stopKeepAliveTimeout),clearTimeout(this.stopPrelinkTimeout),f1.delete(this),this.stopReconnection(),this._signalInfo={tinyId:void 0,clientIp:"",signalIp:"",relayIp:"",relayInnerIp:"",relayPort:0,bakRelayIps:[],endReportExtend:void 0,reportToken:void 0},this._socketInUse=null,this.bytesSent=0,this.bytesReceived=0,this._stopConnectRetry&&this._stopConnectRetry(),this.unbindAndCloseSocket(YA.MAIN),this.unbindAndCloseSocket(YA.BACKUP),this.emitConnectionStateChanged("DISCONNECTED"),this.emit(p1)}destroy(){this.close(),this.destroyed=!0}getBackupRelayIpPair(){var A;let e=(A=this._signalInfo.bakRelayIps)==null?void 0:A.shift();return e&&(e.relayPort=e.relayPort||this._signalInfo.relayPort),e}clearBakRelayIps(){this._signalInfo.bakRelayIps=[]}stopKeepAliveIn(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:3600;if(this.keepAlive){this._log.info("stopKeepAlive in ".concat(A,"s")),this.stopKeepAliveTimeout=setTimeout(()=>{this.keepAlive=!1,this._log.info("close due to not used ".concat(A,"s")),this.close(),this.off(ls.JOIN_ROOM_RESULT,e)},1e3*A);let e=o=>{o.data.code===0&&(this._log.info("stopKeepAlive clear timeout"),clearTimeout(this.stopKeepAliveTimeout),this.off(ls.JOIN_ROOM_RESULT,e))};this.on(ls.JOIN_ROOM_RESULT,e)}}stopPrelinkIn(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:300;if(this.keepAlive)return;this._log.info("stopPrelink in ".concat(A,"s")),this.stopPrelinkTimeout=setTimeout(()=>{this._log.info("close prelink due to not used in ".concat(A,"s")),this.close(),this.room.clearNetworkQuality(),this.off(ls.JOIN_ROOM_RESULT,e)},1e3*A);let e=o=>{o.data.code===0&&(this._log.info("stopPrelink clear timeout"),clearTimeout(this.stopPrelinkTimeout),this.off(ls.JOIN_ROOM_RESULT,e))};this.on(ls.JOIN_ROOM_RESULT,e)}markPrelinkConnected(A){this._prelinkConfig=Qo(mi({},A),{linkedTime:Date.now()})}isPrelinkValid(A,e,o){return!(!this.prelink||!this._prelinkConfig)&&(A!==this._prelinkConfig.sdkAppId||e!==this._prelinkConfig.userId||o!==this._prelinkConfig.userSig?(this._log.warn("prelink params not match"),!1):!!this.isConnected||(this._log.warn("prelink is not connected"),!1))}consumePrelink(){this.prelink=!1,this._prelinkConfig=void 0}emitConnectionStateChanged(A){if(A===this._currentState)return;this._log.info("".concat(this._currentState," -> ").concat(A));let e={prevState:this._currentState,state:A};A==="CONNECTING"&&(e.isReconnecting=this._isReconnecting),this.emit(Ij,e),this._currentState=A,A==="CONNECTED"?this.emit(uL):A==="DISCONNECTED"&&this.emit(TiA)}};di([Xh({settings:{retries:1/0,timeout:2e3},onError(A,e){!this.room.isDestroyed&&!this.destroyed&&(this._isFirstConnect&&(Ai.addFailedEvent({key:521720,error:A}),this._isFirstConnect=!1),this.room.firewallDetector.increaseTimeoutCount(),e())},onRetrying(A,e){this._log.warn("retrying to connect ".concat(A)),A>=3&&A%3==0&&this.reGetSignalChannelUrl(),e&&(this._stopConnectRetry=e,(this.room.isDestroyed||this.destroyed)&&e())}})],Mz.prototype,"connect");var ioA=gc(ql()),vz=!1,em=class{constructor(A){Y(this,"userId"),Y(this,"tinyId"),Y(this,"_sdpSemantics"),Y(this,"_isUplink"),Y(this,"_room"),Y(this,"_log"),Y(this,"_signalChannel"),Y(this,"_isErrorObserved",!1),Y(this,"_waitForPeerConnectionConnectedPromise"),Y(this,"_waitForPeerConnectionConnectedPromiseReject",null),Y(this,"_peerConnection",null),Y(this,"_emitter",new ioA.default),Y(this,"_currentState","DISCONNECTED"),Y(this,"_isReconnecting",!1),Y(this,"_reconnectionCount",0),Y(this,"_reconnectionTimer",-1),Y(this,"_isFirstConnection",!0),Y(this,"_prevTime",-1),Y(this,"_localAddress"),Y(this,"_remoteAddress"),Y(this,"isDestoyed",!1),this.userId=A.userId,this.tinyId=A.tinyId,this._room=A.room,this._sdpSemantics=A.room.sdpSemantics,this._isUplink=A.isUplink,this._log=A.room.getLogger().createChild({id:"n-mpc",userId:this._room.userId,remoteUserId:this.userId,sdkAppId:this._room.sdkAppId,isLocal:this._isUplink}),this._signalChannel=A.signalChannel}beforeConnect(){this._prevTime<0&&(this._prevTime=ko())}afterConnect(){try{this._isFirstConnection?(this._isFirstConnection=!1,Ai.addSuccessEvent({key:521705,cost:Math.min(ko()-this._prevTime,3e4)})):this._isReconnecting&&Ai.addSuccessEvent({key:521706,cost:ko()-this._prevTime}),this._prevTime=-1}catch(A){throw this._isFirstConnection?(this._isFirstConnection=!1,Ai.addFailedEvent({key:521705,error:A})):this._isReconnecting&&this._reconnectionCount>=3&&Ai.addFailedEvent({key:521706,error:A}),A}}initialize(){let A={iceServers:this._room.getIceServers(),iceTransportPolicy:this._room.getIceTransportPolicy(),sdpSemantics:this._sdpSemantics,bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",tcpCandidatePolicy:"disable",IceTransportsType:"nohost"};this._peerConnection=new RTCPeerConnection(A),this._peerConnection.onconnectionstatechange=this.onConnectionStateChange.bind(this)}close(A){this._log.info("close connection"),this._emitter.emit("closed",A),this._isReconnecting&&this.stopReconnection(),this.closePeerConnection()}destroy(){this.isDestoyed=!0}closePeerConnection(){let A=arguments.length>0&&arguments[0]!==void 0&&arguments[0];this._peerConnection&&(this._log.info("close pc"),this._peerConnection.onconnectionstatechange=null,this._peerConnection.close(),this._peerConnection=null,A&&this.emitConnectionStateChangedEvent("DISCONNECTED")),this._waitForPeerConnectionConnectedPromiseReject&&this._waitForPeerConnectionConnectedPromiseReject(new si({code:Et.API_CALL_ABORTED,message:"connection closed"}))}getDTLSTransportState(){if(!this._peerConnection)return qh;let A=null;if(this._isUplink){if(!kI()||this._peerConnection.getSenders().length===0)return qh;A=this._peerConnection.getSenders()[0].transport}else{if(!Ey()||this._peerConnection.getReceivers().length===0)return qh;A=this._peerConnection.getReceivers()[0].transport}return A?A.state:qh}onConnectionStateChange(A){let e=this._peerConnection.iceConnectionState,o=this.getDTLSTransportState();if(this._log.info("connectionState: ".concat(A.target.connectionState,", ICE: ").concat(e,", DTLS: ").concat(o)),A.target.connectionState===Eo.CONNECTING&&this.emitConnectionStateChangedEvent("CONNECTING"),A.target.connectionState===Eo.FAILED||A.target.connectionState===Eo.CLOSED){let a="connection ".concat(A.target.connectionState,". ICE Transport state: ").concat(e,", DTLS Transport state: ").concat(o),c=new si({message:a,code:Et.ICE_TRANSPORT_ERROR});this.emitConnectionStateChangedEvent("DISCONNECTED"),this.startReconnection(),this._isErrorObserved||this._emitter.emit("error",c)}(A.target.connectionState===Eo.CONNECTED||A.target.connectionState===Eo.COMPLETED)&&(this.logSelectedCandidate(),sn.logSuccessEvent({userId:this._room.userId,eventType:Ja.ICE_CONNECTION_STATE}),this.emitConnectionStateChangedEvent("CONNECTED"))}emitConnectionStateChangedEvent(A){return A!==this._currentState&&(A==="CONNECTED"&&(this._room.firewallDetector.resetTimeoutCount(),vz=!0),F.emit(sA.PEER_CONNECTION_STATE_CHANGED,{room:this._room,prevState:this._currentState,state:A,remoteUserId:this._isUplink?void 0:this.userId}),this._emitter.emit("connection-state-changed",{prevState:this._currentState,state:A}),this._currentState=A,!0)}getPeerConnection(){return this._peerConnection}getRoom(){return this._room}getUserId(){return this.userId}getTinyId(){return this.tinyId}logSelectedCandidate(){return KA(this,null,function*(){if(!this._peerConnection)return;let A=yield this._peerConnection.getStats();for(let[,e]of A)if(SM(e)){let o=A.get(e.localCandidateId),a=A.get(e.remoteCandidateId);o&&(this._log.info("local candidate: ".concat(o.candidateType," ").concat(o.protocol,":").concat(o.ip||o.address,":").concat(o.port," ").concat(o.networkType||""," ").concat(o.candidateType==="relay"?"relayProtocol:".concat(o.relayProtocol):"")),this._localAddress="".concat(o.ip||o.address,":").concat(o.port)),a&&(this._log.info("remote candidate: ".concat(a.candidateType," ").concat(a.protocol,":").concat(a.ip||a.address,":").concat(a.port)),this._remoteAddress="".concat(a.protocol,":").concat(a.ip||a.address));break}})}getCurrentState(){return this._currentState}waitForPeerConnectionConnected(){return this._waitForPeerConnectionConnectedPromise||(this._waitForPeerConnectionConnectedPromise=new Promise((A,e)=>{if(this._currentState==="CONNECTED")return A();this._waitForPeerConnectionConnectedPromiseReject=e;let o=C=>{C.state==="CONNECTED"&&(clearTimeout(d),c(),A())},a=C=>{let{room:y}=C;y===this._room&&(clearTimeout(d),c(),e(new si({code:Et.API_CALL_ABORTED,message:Xo({key:Mo.CONNECTION_ABORTED,data:"leave room"})})))},c=()=>{F.off(sA.LEAVE_SUCCESS,a,this),this._emitter.off("connection-state-changed",o,this)},d=setTimeout(()=>{c();let C=new si({code:Et.API_CALL_TIMEOUT,message:"connection timeout"});this._room.firewallDetector.increaseTimeoutCount(),e(C)},Rb);F.on(sA.LEAVE_SUCCESS,a,this),this._emitter.on("connection-state-changed",o,this)}),this._waitForPeerConnectionConnectedPromise=this._waitForPeerConnectionConnectedPromise.finally(()=>{this._waitForPeerConnectionConnectedPromise=null,this._waitForPeerConnectionConnectedPromiseReject=null})),this._waitForPeerConnectionConnectedPromise}getReconnectionCount(){return this._reconnectionCount}startReconnection(){this._isReconnecting=!0,this.reconnect()}clearReconnectionTimer(){this._reconnectionTimer!==-1&&(clearTimeout(this._reconnectionTimer),this._reconnectionTimer=-1)}stopReconnection(){this._log.info("stop reconnection"),this._isReconnecting=!1,this._reconnectionCount=0,this.clearReconnectionTimer(),this._signalChannel.off(uL,this.reconnect,this)}beforeReconnect(){if(this._reconnectionTimer!==-1)return this._log.warn("reconnect() is reconnecting, ignore"),-1;if(this._reconnectionCount>=Pf()){this._log.warn("SDK has tried reconnect for ".concat(this._reconnectionCount," times, but all failed, please check your network")),this.stopReconnection();let A=new si({code:this._isUplink?Et.UPLINK_RECONNECTION_FAILED:Et.DOWNLINK_RECONNECTION_FAILED,message:Xo({key:this._isUplink?Mo.UPLINK_RECONNECTION_FAILED:Mo.DOWNLINK_RECONNECTION_FAILED})});return this.emitConnectionStateChangedEvent("DISCONNECTED"),this._emitter.emit("error",A),-1}return this._signalChannel.isConnected?(this._reconnectionCount+=1,this._log.warn("reconnect() trying [".concat(this._reconnectionCount,"]")),1):(this._log.warn("reconnect() signal channel is not connected, suspend reconnection until signal is connected"),this._signalChannel.once(uL,this.reconnect,this),-1)}on(A,e,o){this._emitter.on(A,e,o)}off(A,e,o){this._emitter.off(A,e,o)}getIsReconnecting(){return this._isReconnecting}get isH264(){var A,e;return!((e=(A=this._peerConnection)==null?void 0:A.remoteDescription)==null||!e.sdp.includes("H264"))}setOffer(A){var e;return(e=this._peerConnection)==null?void 0:e.setLocalDescription(A)}setAnswer(A){var e;return(e=this._peerConnection)==null?void 0:e.setRemoteDescription(A)}};di([py(521712,!1)],em.prototype,"setOffer"),di([py(521713,!1)],em.prototype,"setAnswer");var Rz=gc(db()),uc=function(A){return Rz.default.parse(A)},My=function(A){return Rz.default.write(A)};function hj(A){return Object.keys(A).filter(e=>A[e])}var y1=class G9 extends em{constructor(e){super(Qo(mi({},e),{isUplink:!1})),Y(this,"_flag",0),Y(this,"isRobot",!1),Y(this,"role","anchor"),Y(this,"remoteAudioTrack"),Y(this,"remoteVideoTrack"),Y(this,"remoteAuxiliaryTrack"),Y(this,"avPlayerStateSyncManager"),Y(this,"ssrc",{audio:0,video:0,auxiliary:0}),Y(this,"_isSDPExchanging",!1),Y(this,"_videoCodec"),Y(this,"fromType"),this.flag=e.flag,this.isRobot=e.isRobot||!1,this.remoteAudioTrack=e.remoteAudioTrack||new o1(this._room,this),this.remoteVideoTrack=e.remoteVideoTrack||new nL(this._room,this),this.remoteAuxiliaryTrack=e.remoteAuxiliaryTrack||new b5(this._room,this),this.avPlayerStateSyncManager=new Aj({log:this._log,audioPlayer:this.remoteAudioTrack.player,videoPlayer:this.remoteVideoTrack.player})}get videoCodec(){var e,o;let a=(o=(e=this._peerConnection)==null?void 0:e.remoteDescription)==null?void 0:o.sdp;return a?a.includes("H264")?"h264":"vp8":this._videoCodec||"h264"}set videoCodec(e){this._videoCodec=e}get subscribeState(){let e={audio:!1,video:!1,auxiliary:!1,smallVideo:!1};return this.remoteVideoTrack.isSubscribed&&(8&this.remoteVideoTrack.mediaType?e.smallVideo=!0:e.video=!0),this.remoteAudioTrack.isSubscribed&&(e.audio=!0),this.remoteAuxiliaryTrack.isSubscribed&&(e.auxiliary=!0),e}get muteState(){return Rp(this.flag,this.userId)}get flag(){return this._flag}set flag(e){var o,a,c;e!==this._flag&&(this._flag=e,(o=this.remoteAudioTrack)==null||o.onFlagChanged(),(a=this.remoteVideoTrack)==null||a.onFlagChanged(),(c=this.remoteAuxiliaryTrack)==null||c.onFlagChanged())}get hasMainStream(){return this.muteState.hasAudio||this.muteState.hasVideo||this.muteState.hasSmall}get hasAuxStream(){return this.muteState.hasAuxiliary}get isMainStreamSubscribed(){return(this.subscribeState.audio||this.subscribeState.video||this.subscribeState.smallVideo)&&(this.muteState.hasAudio||this.muteState.hasVideo||this.muteState.hasSmall)}get isAuxStreamSubscribed(){return this.subscribeState.auxiliary&&this.muteState.hasAuxiliary}get isSmallStreamSubscribed(){return this.subscribeState.smallVideo&&this.muteState.hasSmall}get isBigStreamSubscribed(){return this.subscribeState.video&&this.muteState.hasVideo}isStreamUnpublished(e){return e===YA.MAIN?!this.muteState.hasAudio&&!this.muteState.hasVideo:!this.muteState.hasAuxiliary}initialize(){super.initialize(),this.installEvents(),this._peerConnection.ontrack=this.onTrack.bind(this)}close(e){super.close(e),this.emitConnectionStateChangedEvent("DISCONNECTED"),this.remoteAudioTrack.close(),this.remoteVideoTrack.close(),this.remoteAuxiliaryTrack.close(),this.avPlayerStateSyncManager.destroy(),this.uninstallEvents()}installEvents(){}uninstallEvents(){this._emitter.removeAllListeners()}emitConnectionStateChangedEvent(e){var o,a;let c=this._currentState,d=super.emitConnectionStateChangedEvent(e);return d&&c!==e&&((o=this.remoteVideoTrack)==null||o.emit("connection-state-changed",{prevState:c,state:e}),(a=this.remoteAuxiliaryTrack)==null||a.emit("connection-state-changed",{prevState:c,state:e})),d}onTrack(e){let o=e.streams[0],{track:a}=e,c=o.id===lu?YA.MAIN:YA.AUXILIARY;this._log.debug("ontrack ".concat(c," ").concat(a.kind));let d=YA.AUDIO;a.kind===YA.VIDEO&&(d=c===YA.MAIN?YA.VIDEO:YA.AUXILIARY);let C=this.remoteAudioTrack;d===YA.VIDEO?C=this.remoteVideoTrack:d===YA.AUXILIARY&&(C=this.remoteAuxiliaryTrack),C.setInputMediaStreamTrack(a)}addRRTRLine(e){let o=e.split(`\r `),a=new Map;o.forEach((d,C)=>{/^a=rtcp-fb:/.test(d)&&o[C+1]&&!/^a=rtcp-fb:/.test(o[C+1])&&a.set(C+1,"".concat(d.match(/^a=rtcp-fb:\d+/)[0]," rrtr"))});let c=[...a];for(let d=0;d{a.type===YA.VIDEO&&a.fmtp.forEach(c=>{c.config+=";sps-pps-idr-in-keyframe=1"})}),fy(o)}removeSDESDescription(e){let o=["urn:ietf:params:rtp-hdrext:sdes:mid","urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id","urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id"],a=uc(e);return a.media.forEach(c=>{c.ext&&(c.ext=c.ext.filter(d=>!o.includes(d.uri)))}),fy(a)}isSubscriptionStateNotChanged(e){return JSON.stringify(e)===JSON.stringify(this.subscribeState)}subscribe(e,o){return KA(this,null,function*(){var a,c;try{if((((a=this._peerConnection)==null?void 0:a.connectionState)===Eo.NEW||((c=this._peerConnection)==null?void 0:c.connectionState)===Eo.CONNECTING)&&(yield this.waitForPeerConnectionConnected()),this.isSubscriptionStateNotChanged(e))return void(this._peerConnection||(this.initialize(),yield this.connect(e)));if(this._log.info("subscribe ".concat(o," ").concat(JSON.stringify(e))),this._peerConnection||this._isSDPExchanging){let d="subscribe_change";Object.values(e).find(C=>C===!0)||(d="unsubscribe"),yield this.sendSubscription(d,e)}else this.initialize(),yield this.connect(e)}catch(d){throw this._room.isJoined&&this.isStreamUnpublished(o)?(this._log.warn("".concat(d.message," ").concat(JSON.stringify(this.muteState))),new oi({code:lt.REMOTE_STREAM_NOT_EXIST,message:"remote user ".concat(this.userId," unpublished stream")})):d}})}unsubscribe(e){return KA(this,arguments,function(o){var a=this;let{remoteTracks:c,streamType:d}=o;return function*(){if(a._currentState==="CONNECTED"&&(d==="main"&&!a.isMainStreamSubscribed||d==="auxiliary"&&!a.isAuxStreamSubscribed))return void a._log.info("".concat(d," stream already unsubscribed"));let C=pi({},a.subscribeState);c.forEach(S=>{switch(S.mediaType){case 1:C.audio=!1;break;case 4:C.video=!1;break;case 8:C.smallVideo=!1;break;case 2:C.auxiliary=!1}});let y="subscribe_change";Object.values(C).find(S=>S===!0)||(y="unsubscribe"),a._log.info("".concat(y==="unsubscribe"?y:"subscribe"," ").concat(d," [").concat(YK(C),"]")),yield a.sendSubscription(y,C),y==="unsubscribe"&&(a.closePeerConnection(),a.emitConnectionStateChangedEvent("DISCONNECTED"))}()})}unsubscribeDataChannel(){return KA(this,null,function*(){})}sendSubscription(e){let o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.subscribeState,a={srcTinyId:this.tinyId,srcUserId:this.userId},c=OK,d=ls.UNSUBSCRIBE_RESULT;return e==="subscribe_change"&&(a={audio:o.audio,bigVideo:o.video,auxVideo:o.auxiliary,smallVideo:o.smallVideo,srcTinyId:this.tinyId},c=PK,d=ls.SUBSCRIBE_CHANGE_RESULT),this._signalChannel.sendWaitForResponse({command:c,data:a,responseCommand:d,timeout:1e4}).then(C=>{let{data:y}=C;if(y.code!==0){let S=new oi({code:y.code,message:Zo({key:So.ERROR_MESSAGE,data:{type:e,message:y.message}})});throw this._log.error(S),S}})}connect(){return KA(this,arguments,function(){var e=this;let o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.subscribeState;return function*(){try{yield e.exchangeSDP(o),yield e.waitForPeerConnectionConnected()}catch(a){throw e.closePeerConnection(!0),a}}()})}exchangeSDP(e){return KA(this,null,function*(){try{this._isSDPExchanging=!0,yield this.createOffer(),this._log.info("createOffer success, sending offer");let{type:o,sdp:a}=this._peerConnection.localDescription,c={type:o,sdp:a,srcUserId:this.userId,srcTinyId:this.tinyId,audio:e.audio,bigVideo:e.video,auxVideo:e.auxiliary,smallVideo:e.smallVideo},d=yield this._signalChannel.sendWaitForResponse({command:P5,commandDesc:"exchange sdp",data:c,responseCommand:ls.SUBSCRIBE_RESULT,timeout:hx});if(!this._peerConnection){let C=new oi({code:lt.INVALID_OPERATION,message:Zo({key:So.CONNECTION_CLOSED})});throw this._log.warn(C),C}yield this.onSubscribeResult(d),this._isSDPExchanging=!1}catch(o){throw this._isSDPExchanging=!1,o}})}createOffer(){return KA(this,null,function*(){let e={voiceActivityDetection:!1};Hd()&&this._sdpSemantics===FS?(this._peerConnection.addTransceiver(YA.AUDIO,{direction:zn.RECVONLY}),this._peerConnection.addTransceiver(YA.VIDEO,{direction:zn.RECVONLY}),this._peerConnection.addTransceiver(YA.VIDEO,{direction:zn.RECVONLY})):(e.offerToReceiveAudio=!0,e.offerToReceiveVideo=!0);let o=yield this._peerConnection.createOffer(e);if(o.sdp){let{isH264DecodeSupported:a}=yield lk();a||(this._log.warn("remove h264 desc from sdp"),o.sdp=function(c){let d=uc(c);return d.media.forEach(C=>{var y,S;if(C.type===YA.VIDEO){let b=new Set;C.rtp.forEach(J=>{let{payload:gA,codec:CA}=J;return CA==="H264"&&b.add(gA)}),C.fmtp.forEach(J=>{let{payload:gA,config:CA}=J,MA=CA.match(/apt=(\d+)/);MA&&MA[1]&&b.has(Number(MA[1]))&&b.add(gA)});let V=J=>{let{payload:gA}=J;return!b.has(gA)};C.rtp=C.rtp.filter(V),C.rtcpFb=(y=C.rtcpFb)==null?void 0:y.filter(V),C.fmtp=C.fmtp.filter(V),C.payloads=(S=C.payloads)==null?void 0:S.split(" ").filter(J=>!b.has(Number(J))).join(" ")}}),fy(d)}(o.sdp)),o.sdp=this.addRRTRLine(o.sdp),o.sdp=this.addSPSDescription(o.sdp),o.sdp=function(c){let d=uc(c);return d.media.forEach(C=>{C.type===YA.AUDIO&&C.fmtp.forEach(y=>{y.config+=";sprop-stereo=1;stereo=1"})}),fy(d)}(o.sdp),this._sdpSemantics===FS&&(o.sdp=this.removeSDESDescription(o.sdp))}yield this.setOffer(o)})}onSubscribeResult(e){return KA(this,null,function*(){let{code:o,message:a=""}=e&&e.data||{},{type:c,sdp:d}=e&&e.data&&e.data.data||{};if(o===Xw)throw new oi({code:lt.NOT_SUPPORTED_H264,message:Zo({key:So.NOT_SUPPORTED_H264DECODE})});try{if(o!==0)throw new oi({code:o,message:Zo({key:So.EXCHANGE_SDP_FAILED,data:{errMsg:a}})});this._log.debug("accept remote answer: ".concat(d)),yield this.setAnswer({type:c,sdp:d}),this.updateSSRC(d)}catch(C){throw this._log.error(C),C}})}updateSSRC(e){try{uc(e).media.forEach(o=>{if(o.ssrcs)if(o.type===YA.AUDIO){let a=o.ssrcs.find(c=>{var d;return(d=c.value)==null?void 0:d.includes(ru)});a&&(this.ssrc.audio=Number(a.id))}else{let a=o.ssrcs.find(d=>{var C;return(C=d.value)==null?void 0:C.includes(ru)}),c=o.ssrcs.find(d=>{var C;return(C=d.value)==null?void 0:C.includes(Ix)});a&&(this.ssrc.video=Number(a.id)),c&&(this.ssrc.auxiliary=Number(c.id))}})}catch{}}getMainStreamVideoTrackId(){return this.remoteVideoTrack&&this.remoteVideoTrack.mediaTrack?this.remoteVideoTrack.mediaTrack.id:""}getAuxStreamVideoTrackId(){return this.remoteAuxiliaryTrack&&this.remoteAuxiliaryTrack.mediaTrack?this.remoteAuxiliaryTrack.mediaTrack.id:""}reconnect(){return KA(this,null,function*(){if(!(RI(z6.prototype,this,"beforeReconnect").call(this)<0))try{this.closePeerConnection(),this.initialize(),yield this.connect(),this.stopReconnection(),this._log.warn("reconnect() success")}catch{let o=yp(this._reconnectionCount);this._log.warn("reconnect() timeout, try again after ".concat(o/1e3,"s")),this._reconnectionTimer=setTimeout(()=>{this.clearReconnectionTimer(),this.reconnect()},o)}})}getIsReconnecting(){return this._isReconnecting}clearReconnectionTimer(){this._reconnectionTimer!==-1&&(clearTimeout(this._reconnectionTimer),this._reconnectionTimer=-1)}getCurrentState(){return this._currentState}setDelay(e){let{audioDelay:o,videoDelay:a}=e;this.remoteAudioTrack.stat.end2EndDelay=o,this.remoteVideoTrack.stat.end2EndDelay=a}get audioReceiver(){var e;return((e=this._peerConnection)==null?void 0:e.getReceivers()[0])||null}};di([Hr(A=>function(){for(var e=arguments.length,o=new Array(e),a=0;a{let C=y=>{this._emitter.off("closed",C),d(new oi({code:lt.API_CALL_ABORTED,message:Zo({key:So.CONNECTION_ABORTED,data:y})}))};this._emitter.on("closed",C),A.apply(this,o).then(c,d).finally(()=>{this._emitter.off("closed",C)})})})],$2.prototype,"subscribe"),di([Cy(521717,!1)],$2.prototype,"unsubscribe"),di([TM(Zp.prototype.afterConnect),h4(Zp.prototype.beforeConnect)],$2.prototype,"connect");var q5=$2,K5={voiceActivityDetection:!1},A1=class Z6 extends Zp{constructor(e){super(Bo(pi({},e),{isUplink:!0})),Y(this,"localMainAudioTrack",null),Y(this,"localMainVideoTrack",null),Y(this,"localAuxAudioTrack",null),Y(this,"localAuxVideoTrack",null),Y(this,"ssrc",{audio:0,video:0,small:0,auxiliary:0}),Y(this,"_isPublishingAux",!1),Y(this,"_publishingLocalAudioTrack"),Y(this,"_publishingLocalVideoTrack"),Y(this,"_mediaSettings",{videoCodec:"",videoWidth:0,videoHeight:0,videoBps:0,videoFps:0,audioCodec:"opus",audioFs:0,audioChannel:0,audioBps:0,smallVideoWidth:0,smallVideoHeight:0,smallVideoFps:0,smallVideoBps:0,auxVideoWidth:0,auxVideoHeight:0,auxVideoFps:0,auxVideoBps:0}),Y(this,"flag",0)}get videoCodec(){return this._mediaSettings.videoCodec.toLowerCase()||"h264"}get isMainStreamPublished(){return!(!this.localMainAudioTrack&&!this.localMainVideoTrack)}get isAuxStreamPublished(){return!(!this.localAuxVideoTrack&&!this.localAuxAudioTrack)}initialize(){super.initialize(),this.installEvents()}reset(){this._isReconnecting&&this.stopReconnection(),this.closePeerConnection(),this.uninstallEvents()}close(e){super.close(e),this.reset(),this.emitConnectionStateChangedEvent("DISCONNECTED")}installEvents(){this._emitter.listeners("connection-state-changed").includes(this.handleConnectionStateChange)||this._emitter.on("connection-state-changed",this.handleConnectionStateChange,this)}uninstallEvents(){this._emitter.off("connection-state-changed",this.handleConnectionStateChange,this)}emitConnectionStateChangedEvent(e,o){var a,c,d;let C=this._currentState,y=super.emitConnectionStateChangedEvent(e);return y&&C!==e&&(o?o.emit("connection-state-changed",{prevState:C,state:e}):((a=this.localMainVideoTrack)==null||a.emit("connection-state-changed",{prevState:C,state:e}),(c=this.localAuxVideoTrack)==null||c.emit("connection-state-changed",{prevState:C,state:e}),(d=this._publishingLocalVideoTrack)==null||d.emit("connection-state-changed",{prevState:C,state:e}))),y}publish(e){return KA(this,arguments,function(o){var a=this;let{localAudioTrack:c,localVideoTrack:d,isAuxiliary:C}=o;return function*(){let y;a._peerConnection||a.initialize(),c&&(a._publishingLocalAudioTrack=c),d&&(a._publishingLocalVideoTrack=d),a._isPublishingAux=C,d&&!C&&d.small&&(y=a._room.videoManager.smallTrack),a.sendMediaSettings(),Hd()?yield a.publishByTransceiver({localAudioTrack:c,localVideoTrack:d,smallTrack:y,isAuxiliary:C}):yield a.publishByAddTrack({localAudioTrack:c,localVideoTrack:d,smallTrack:y}),a._publishingLocalAudioTrack=null,a._publishingLocalVideoTrack=null,a._isPublishingAux=!1,C?(d&&(a.localAuxVideoTrack=d),c&&(a.localAuxAudioTrack=c)):(d&&(a.localMainVideoTrack=d),c&&(a.localMainAudioTrack=c)),a.installTrackMuteEvents(c,d),a.sendMutedFlag()}()})}publishByTransceiver(e){return KA(this,arguments,function(o){var a=this;let{localAudioTrack:c,localVideoTrack:d,smallTrack:C,isAuxiliary:y}=o;return function*(){a._log.info("publish by transceiver");let S=new MediaStream,b=d?.outMediaTrack,V=c?.outMediaTrack;V&&S.addTrack(V),b&&S.addTrack(b);let J=a._peerConnection.getTransceivers();if(J.length===0)a._peerConnection.addTransceiver(V||YA.AUDIO,{direction:zn.SENDONLY,streams:[S]}),a._peerConnection.addTransceiver(y?YA.VIDEO:b||YA.VIDEO,{direction:zn.SENDONLY,streams:[S]}),a._peerConnection.addTransceiver(C||YA.VIDEO,{direction:zn.SENDONLY,streams:[S]}),a._peerConnection.addTransceiver(y&&b||YA.VIDEO,{direction:zn.SENDONLY,streams:[S]}),yield a.connect();else{let gA=[];if(V&&(J[0].sender.track||gA.push(0),yield J[0].sender.replaceTrack(V),yield a.setBandwidth({bandwidth:c?.profile.bitrate||40,type:YA.AUDIO})),b){let CA=y?3:1;yield J[CA].sender.replaceTrack(b),yield a.setBandwidth({bandwidth:d.profile.bitrate,type:YA.VIDEO,videoType:y?YA.AUXILIARY:YA.BIG}),gA.push(CA),C&&(yield J[2].sender.replaceTrack(C),yield a.setBandwidth({bandwidth:d.small.bitrate,type:YA.VIDEO,videoType:YA.SMALL}),gA.push(2))}yield a.setTransceiverDirection(zn.SENDONLY,gA),yield a.doPublishChange(),d?.emit("connection-state-changed",{prevState:"DISCONNECTED",state:"CONNECTING"}),d?.emit("connection-state-changed",{prevState:"CONNECTING",state:"CONNECTED"})}}()})}publishByAddTrack(e){return KA(this,arguments,function(o){var a=this;let{localAudioTrack:c,localVideoTrack:d,smallTrack:C}=o;return function*(){a._log.info("publish by addtrack");let y=d?.outMediaTrack,S=c?.outMediaTrack;if(a._peerConnection&&a._peerConnection.connectionState!=="new")return c&&S&&(yield a.addTrack(c)),void(y&&(yield a.addTrack(d)));let b=new MediaStream;if(S&&b.addTrack(S),y&&b.addTrack(y),S&&a._peerConnection.addTrack(S,b),y&&(a._peerConnection.addTrack(y,b),C)){let V=new MediaStream;V.addTrack(C),a._peerConnection.addTrack(C,V)}yield a.connect()}()})}enableSmall(e){return KA(this,null,function*(){let o=this._peerConnection.getTransceivers();e?this._room.videoManager.smallTrack&&(yield o[2].sender.replaceTrack(this._room.videoManager.smallTrack),yield this.setTransceiverDirection(zn.SENDONLY,[2])):(yield o[2].sender.replaceTrack(null),yield this.setTransceiverDirection(zn.INACTIVE,[2])),this.updateMediaSettings(),yield this.doPublishChange()})}installTrackMuteEvents(){for(var e=arguments.length,o=new Array(e),a=0;a{c&&(c?.on("mute",this.sendMutedFlag,this),c?.on("unmute",this.sendMutedFlag,this))})}uninstallTrackMuteEvents(){for(var e=arguments.length,o=new Array(e),a=0;a{c&&(c?.off("mute",this.sendMutedFlag,this),c?.off("unmute",this.sendMutedFlag,this))})}unpublish(e){return KA(this,arguments,function(o){var a=this;let{localAudioTrack:c,localVideoTrack:d}=o;return function*(){if(!gQ())return c&&c.outMediaTrack&&!d&&a.localMainVideoTrack?(yield a.removeTrack(c),void(a.localMainAudioTrack=null)):d&&d.outMediaTrack&&!c&&a.localMainAudioTrack?(yield a.removeTrack(d),void(a.localMainVideoTrack=null)):(yield a.doUnpublish(),a.uninstallTrackMuteEvents(c,d),void a.emitConnectionStateChangedEvent("DISCONNECTED",d));let C=d&&d===a.localAuxVideoTrack,y=d?.outMediaTrack,S=a._peerConnection.getSenders(),b=[];c&&(C?a.localAuxAudioTrack=null:a.localMainAudioTrack=null,!a.localAuxAudioTrack&&!a.localMainAudioTrack&&(yield S[0].replaceTrack(null),b.push(0))),y&&(C?(yield S[3].replaceTrack(null),a.localAuxVideoTrack=null,a._mediaSettings=Bo(pi({},a._mediaSettings),{auxVideoBps:0,auxVideoFps:0,auxVideoWidth:0,auxVideoHeight:0}),b.push(3)):(yield S[1].replaceTrack(null),yield S[2].replaceTrack(null),a.localMainVideoTrack=null,a._mediaSettings=Bo(pi({},a._mediaSettings),{videoWidth:0,videoHeight:0,videoBps:0,videoFps:0,audioFs:0,audioChannel:0,audioBps:0,smallVideoWidth:0,smallVideoHeight:0,smallVideoFps:0,smallVideoBps:0}),b.push(1,2))),a.isMainStreamPublished||a.isAuxStreamPublished?(yield a.setTransceiverDirection(zn.INACTIVE,b),yield a.doPublishChange(!1)):yield a.doUnpublish(),a.uninstallTrackMuteEvents(c,d),d?.emit("connection-state-changed",{prevState:a._currentState,state:"DISCONNECTED"})}()})}doPublishChange(){let e=!(arguments.length>0&&arguments[0]!==void 0)||arguments[0];return KA(this,null,function*(){let o={state:this._room.publishState,constraintConfig:this._mediaSettings},a=yield this._signalChannel.sendWaitForResponse({command:FK,data:o,responseCommand:ls.PUBLISH_STATE_CHANGE_RESULT,enableLog:e});this.checkPublishResultCode(a.data.code,a.data.message)})}doUnpublish(){let e=arguments.length>0&&arguments[0]!==void 0&&arguments[0];return this._signalChannel.sendWaitForResponse({command:Z2,commandDesc:"unpublish",responseCommand:ls.UNPUBLISH_RESULT,enableLog:e}).catch(o=>{if(o.getCode()===lt.API_CALL_TIMEOUT)return Promise.resolve();throw o})}updateMediaSettings(){let{detail:{isH264EncodeSupported:e,isVp8EncodeSupported:o}}=this._room.checkSystemResult;e?this._mediaSettings.videoCodec="H264":o&&(this._mediaSettings.videoCodec="VP8");let a=this._publishingLocalAudioTrack||this.localMainAudioTrack||this.localAuxAudioTrack,{localMainVideoTrack:c,localAuxVideoTrack:d}=this;if(this._publishingLocalVideoTrack&&(this._isPublishingAux?d=this._publishingLocalVideoTrack:c=this._publishingLocalVideoTrack),ly){if(a&&a.outMediaTrack){let C=a.outMediaTrack.getSettings();this._mediaSettings.audioChannel=C.channelCount||1,this._mediaSettings.audioBps=1e3*a.profile.bitrate,this._mediaSettings.audioFs=C.sampleRate||0}if(c&&c.outMediaTrack){let C=c.outMediaTrack.getSettings();this._mediaSettings.videoWidth=C.width||0,this._mediaSettings.videoHeight=C.height||0,this._mediaSettings.videoFps=C.frameRate||0,this._mediaSettings.videoBps=1e3*c.profile.bitrate,c.small&&(this._mediaSettings.smallVideoWidth=c.small.width,this._mediaSettings.smallVideoHeight=c.small.height,this._mediaSettings.smallVideoFps=c.small.frameRate,this._mediaSettings.smallVideoBps=1e3*c.small.bitrate)}if(d&&d.outMediaTrack){let C=d.outMediaTrack.getSettings();this._mediaSettings.auxVideoWidth=C.width||0,this._mediaSettings.auxVideoHeight=C.height||0,this._mediaSettings.auxVideoFps=C.frameRate||0,this._mediaSettings.auxVideoBps=1e3*d.profile.bitrate}}else a&&a.outMediaTrack&&(this._mediaSettings.audioChannel=a.profile.channelCount,this._mediaSettings.audioBps=1e3*a.profile.bitrate,this._mediaSettings.audioFs=a.profile.sampleRate),c&&c.outMediaTrack&&(this._mediaSettings.videoWidth=c.profile.width,this._mediaSettings.videoHeight=c.profile.height,this._mediaSettings.videoFps=c.profile.frameRate,this._mediaSettings.videoBps=1e3*c.profile.bitrate);this._log.info("updateMediaSettings: ".concat(JSON.stringify(this._mediaSettings)))}sendMediaSettings(){this.updateMediaSettings(),this._signalChannel.sendWaitForResponse({command:xK,data:this._mediaSettings,responseCommand:ls.UPDATE_CONSTRAINT_CONFIG_RES}).then(e=>{e.data.code!==0&&this._log.warn(e.data.message)}).catch(()=>{})}addTrack(e){return KA(this,null,function*(){if(!this._peerConnection)return;let o=e===this.localAuxAudioTrack||e===this.localAuxVideoTrack;this._log.info("is adding ".concat(e.kind," track to current published local ").concat(o?YA.AUXILIARY:YA.MAIN," stream")),Hd()?yield this.addTrackByTransceiver(e,o):yield this.addTrackBySender(e)})}addTrackByTransceiver(e,o){return KA(this,null,function*(){var a;if(!e.mediaTrack)return;let c=this._peerConnection.getTransceivers();if(e.kind===YA.AUDIO)yield c[0].sender.replaceTrack(e.outMediaTrack);else{let d=o?3:1;yield c[d].sender.replaceTrack(e.outMediaTrack),d===1&&(a=this.localMainVideoTrack)!=null&&a.small&&(yield c[2].sender.replaceTrack(this._room.videoManager.smallTrack)),c[d].direction===zn.INACTIVE&&(yield this.setTransceiverDirection(zn.SENDONLY,[d]))}this.updateMediaSettings(),yield this.doPublishChange()})}addTrackBySender(e){return KA(this,null,function*(){if(!e.outMediaTrack)return;let o=e.outMediaTrack;gQ()&&this._peerConnection.getTransceivers().findIndex(c=>c.direction==="stopped")>=0&&(this._log.warn("transceiver is stopping, negotiate sdp first"),yield this.updateOffer("remove",o));let a=this._peerConnection.getSenders().find(c=>c.track&&c.track.kind===o.kind);if(a&&a.track){this._log.warn("sender already exists, remove sender first");let c=a.track;this.removeSender(a),yield this.updateOffer("remove",c)}if(o&&this._peerConnection.addTrack(o,new MediaStream([o])),o.kind===YA.VIDEO&&e instanceof IQ&&e.small){let c=new MediaStream,{smallTrack:d}=this._room.videoManager;c.addTrack(d),this._peerConnection.addTrack(d,c)}yield this.updateOffer("add",o)})}isNeedToResetOfferOrder(){if(this._sdpSemantics===Zw||!this._peerConnection||!this._peerConnection.localDescription)return!1;let{sdp:e}=this._peerConnection.localDescription,o=uc(e);for(let a=0;aa.sender&&a.sender.track===e.track)),this._peerConnection.removeTrack(e),o&&va(o.stop)&&(this._log.info("stop transceiver"),o.stop())}removeTrack(e){return KA(this,null,function*(){if(!this._peerConnection)return;let o=e===this.localAuxAudioTrack||e===this.localAuxVideoTrack;this._log.info("is removing ".concat(e.kind," track from current published local ").concat(o?YA.AUXILIARY:YA.MAIN," stream")),Hd()?yield this.removeTrackByTransceiver(e,o):yield this.removeTrackBySender(e)})}removeTrackByTransceiver(e,o){return KA(this,null,function*(){if(!e.outMediaTrack)return;let a=this._peerConnection.getTransceivers();if(e.kind===YA.AUDIO)yield a[0].sender.replaceTrack(null);else{let c=o?3:1;yield a[c].sender.replaceTrack(null),c===1&&e.small&&(yield a[2].sender.replaceTrack(null)),yield this.setTransceiverDirection(zn.INACTIVE,[c])}this.updateMediaSettings(),yield this.doPublishChange()})}setTransceiverDirection(e,o){return KA(this,null,function*(){if(!er)return;let a=!1,c=!1;this._log.info("setting transceiver ".concat(o.join(",")," direction to ").concat(e));let d=this._peerConnection.getTransceivers();if(o.forEach(S=>{d[S].direction!==e&&(d[S].direction=e,a=!0)}),a){this._log.info("updating offer");let S=yield this._peerConnection.createOffer();yield this.setOffer(S)}let C=-1,y=this._peerConnection.remoteDescription.sdp.split(`\r +`)}addSPSDescription(e){let o=uc(e);return o.media.forEach(a=>{a.type===YA.VIDEO&&a.fmtp.forEach(c=>{c.config+=";sps-pps-idr-in-keyframe=1"})}),My(o)}removeSDESDescription(e){let o=["urn:ietf:params:rtp-hdrext:sdes:mid","urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id","urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id"],a=uc(e);return a.media.forEach(c=>{c.ext&&(c.ext=c.ext.filter(d=>!o.includes(d.uri)))}),My(a)}isSubscriptionStateNotChanged(e){return JSON.stringify(e)===JSON.stringify(this.subscribeState)}subscribe(e,o){return KA(this,null,function*(){var a,c;try{if((((a=this._peerConnection)==null?void 0:a.connectionState)===Eo.NEW||((c=this._peerConnection)==null?void 0:c.connectionState)===Eo.CONNECTING)&&(yield this.waitForPeerConnectionConnected()),this.isSubscriptionStateNotChanged(e))return void(this._peerConnection||(this.initialize(),yield this.connect(e)));if(this._log.info("subscribe ".concat(o," ").concat(JSON.stringify(e))),this._peerConnection||this._isSDPExchanging){let d="subscribe_change";Object.values(e).find(C=>C===!0)||(d="unsubscribe"),yield this.sendSubscription(d,e)}else this.initialize(),yield this.connect(e)}catch(d){throw this._room.isJoined&&this.isStreamUnpublished(o)?(this._log.warn("".concat(d.message," ").concat(JSON.stringify(this.muteState))),new si({code:Et.REMOTE_STREAM_NOT_EXIST,message:"remote user ".concat(this.userId," unpublished stream")})):d}})}unsubscribe(e){return KA(this,arguments,function(o){var a=this;let{remoteTracks:c,streamType:d}=o;return function*(){if(a._currentState==="CONNECTED"&&(d==="main"&&!a.isMainStreamSubscribed||d==="auxiliary"&&!a.isAuxStreamSubscribed))return void a._log.info("".concat(d," stream already unsubscribed"));let C=mi({},a.subscribeState);c.forEach(S=>{switch(S.mediaType){case 1:C.audio=!1;break;case 4:C.video=!1;break;case 8:C.smallVideo=!1;break;case 2:C.auxiliary=!1}});let y="subscribe_change";Object.values(C).find(S=>S===!0)||(y="unsubscribe"),a._log.info("".concat(y==="unsubscribe"?y:"subscribe"," ").concat(d," [").concat(hj(C),"]")),yield a.sendSubscription(y,C),y==="unsubscribe"&&(a.closePeerConnection(),a.emitConnectionStateChangedEvent("DISCONNECTED"))}()})}unsubscribeDataChannel(){return KA(this,null,function*(){})}sendSubscription(e){let o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.subscribeState,a={srcTinyId:this.tinyId,srcUserId:this.userId},c=Ej,d=ls.UNSUBSCRIBE_RESULT;return e==="subscribe_change"&&(a={audio:o.audio,bigVideo:o.video,auxVideo:o.auxiliary,smallVideo:o.smallVideo,srcTinyId:this.tinyId},c=dj,d=ls.SUBSCRIBE_CHANGE_RESULT),this._signalChannel.sendWaitForResponse({command:c,data:a,responseCommand:d,timeout:1e4}).then(C=>{let{data:y}=C;if(y.code!==0){let S=new si({code:y.code,message:Xo({key:Mo.ERROR_MESSAGE,data:{type:e,message:y.message}})});throw this._log.error(S),S}})}connect(){return KA(this,arguments,function(){var e=this;let o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.subscribeState;return function*(){try{yield e.exchangeSDP(o),yield e.waitForPeerConnectionConnected()}catch(a){throw e.closePeerConnection(!0),a}}()})}exchangeSDP(e){return KA(this,null,function*(){try{this._isSDPExchanging=!0,yield this.createOffer(),this._log.info("createOffer success, sending offer");let{type:o,sdp:a}=this._peerConnection.localDescription,c={type:o,sdp:a,srcUserId:this.userId,srcTinyId:this.tinyId,audio:e.audio,bigVideo:e.video,auxVideo:e.auxiliary,smallVideo:e.smallVideo},d=yield this._signalChannel.sendWaitForResponse({command:yz,commandDesc:"exchange sdp",data:c,responseCommand:ls.SUBSCRIBE_RESULT,timeout:Yx});if(!this._peerConnection){let C=new si({code:Et.INVALID_OPERATION,message:Xo({key:Mo.CONNECTION_CLOSED})});throw this._log.warn(C),C}yield this.onSubscribeResult(d),this._isSDPExchanging=!1}catch(o){throw this._isSDPExchanging=!1,o}})}createOffer(){return KA(this,null,function*(){let e={voiceActivityDetection:!1};Zd()&&this._sdpSemantics===HS?(this._peerConnection.addTransceiver(YA.AUDIO,{direction:zn.RECVONLY}),this._peerConnection.addTransceiver(YA.VIDEO,{direction:zn.RECVONLY}),this._peerConnection.addTransceiver(YA.VIDEO,{direction:zn.RECVONLY})):(e.offerToReceiveAudio=!0,e.offerToReceiveVideo=!0);let o=yield this._peerConnection.createOffer(e);if(o.sdp){let{isH264DecodeSupported:a}=yield vk();a||(this._log.warn("remove h264 desc from sdp"),o.sdp=function(c){let d=uc(c);return d.media.forEach(C=>{var y,S;if(C.type===YA.VIDEO){let b=new Set;C.rtp.forEach(J=>{let{payload:gA,codec:CA}=J;return CA==="H264"&&b.add(gA)}),C.fmtp.forEach(J=>{let{payload:gA,config:CA}=J,MA=CA.match(/apt=(\d+)/);MA&&MA[1]&&b.has(Number(MA[1]))&&b.add(gA)});let V=J=>{let{payload:gA}=J;return!b.has(gA)};C.rtp=C.rtp.filter(V),C.rtcpFb=(y=C.rtcpFb)==null?void 0:y.filter(V),C.fmtp=C.fmtp.filter(V),C.payloads=(S=C.payloads)==null?void 0:S.split(" ").filter(J=>!b.has(Number(J))).join(" ")}}),My(d)}(o.sdp)),o.sdp=this.addRRTRLine(o.sdp),o.sdp=this.addSPSDescription(o.sdp),o.sdp=function(c){let d=uc(c);return d.media.forEach(C=>{C.type===YA.AUDIO&&C.fmtp.forEach(y=>{y.config+=";sprop-stereo=1;stereo=1"})}),My(d)}(o.sdp),this._sdpSemantics===HS&&(o.sdp=this.removeSDESDescription(o.sdp))}yield this.setOffer(o)})}onSubscribeResult(e){return KA(this,null,function*(){let{code:o,message:a=""}=e&&e.data||{},{type:c,sdp:d}=e&&e.data&&e.data.data||{};if(o===a0)throw new si({code:Et.NOT_SUPPORTED_H264,message:Xo({key:Mo.NOT_SUPPORTED_H264DECODE})});try{if(o!==0)throw new si({code:o,message:Xo({key:Mo.EXCHANGE_SDP_FAILED,data:{errMsg:a}})});this._log.debug("accept remote answer: ".concat(d)),yield this.setAnswer({type:c,sdp:d}),this.updateSSRC(d)}catch(C){throw this._log.error(C),C}})}updateSSRC(e){try{uc(e).media.forEach(o=>{if(o.ssrcs)if(o.type===YA.AUDIO){let a=o.ssrcs.find(c=>{var d;return(d=c.value)==null?void 0:d.includes(lu)});a&&(this.ssrc.audio=Number(a.id))}else{let a=o.ssrcs.find(d=>{var C;return(C=d.value)==null?void 0:C.includes(lu)}),c=o.ssrcs.find(d=>{var C;return(C=d.value)==null?void 0:C.includes(Ux)});a&&(this.ssrc.video=Number(a.id)),c&&(this.ssrc.auxiliary=Number(c.id))}})}catch{}}getMainStreamVideoTrackId(){return this.remoteVideoTrack&&this.remoteVideoTrack.mediaTrack?this.remoteVideoTrack.mediaTrack.id:""}getAuxStreamVideoTrackId(){return this.remoteAuxiliaryTrack&&this.remoteAuxiliaryTrack.mediaTrack?this.remoteAuxiliaryTrack.mediaTrack.id:""}reconnect(){return KA(this,null,function*(){if(!(TI(G9.prototype,this,"beforeReconnect").call(this)<0))try{this.closePeerConnection(),this.initialize(),yield this.connect(),this.stopReconnection(),this._log.warn("reconnect() success")}catch{let o=vp(this._reconnectionCount);this._log.warn("reconnect() timeout, try again after ".concat(o/1e3,"s")),this._reconnectionTimer=setTimeout(()=>{this.clearReconnectionTimer(),this.reconnect()},o)}})}getIsReconnecting(){return this._isReconnecting}clearReconnectionTimer(){this._reconnectionTimer!==-1&&(clearTimeout(this._reconnectionTimer),this._reconnectionTimer=-1)}getCurrentState(){return this._currentState}setDelay(e){let{audioDelay:o,videoDelay:a}=e;this.remoteAudioTrack.stat.end2EndDelay=o,this.remoteVideoTrack.stat.end2EndDelay=a}get audioReceiver(){var e;return((e=this._peerConnection)==null?void 0:e.getReceivers()[0])||null}};di([jr(A=>function(){for(var e=arguments.length,o=new Array(e),a=0;a{let C=y=>{this._emitter.off("closed",C),d(new si({code:Et.API_CALL_ABORTED,message:Xo({key:Mo.CONNECTION_ABORTED,data:y})}))};this._emitter.on("closed",C),A.apply(this,o).then(c,d).finally(()=>{this._emitter.off("closed",C)})})})],y1.prototype,"subscribe"),di([py(521717,!1)],y1.prototype,"unsubscribe"),di([FM(em.prototype.afterConnect),A5(em.prototype.beforeConnect)],y1.prototype,"connect");var wz=y1,_z={voiceActivityDetection:!1},D1=class b9 extends em{constructor(e){super(Qo(mi({},e),{isUplink:!0})),Y(this,"localMainAudioTrack",null),Y(this,"localMainVideoTrack",null),Y(this,"localAuxAudioTrack",null),Y(this,"localAuxVideoTrack",null),Y(this,"ssrc",{audio:0,video:0,small:0,auxiliary:0}),Y(this,"_isPublishingAux",!1),Y(this,"_publishingLocalAudioTrack"),Y(this,"_publishingLocalVideoTrack"),Y(this,"_mediaSettings",{videoCodec:"",videoWidth:0,videoHeight:0,videoBps:0,videoFps:0,audioCodec:"opus",audioFs:0,audioChannel:0,audioBps:0,smallVideoWidth:0,smallVideoHeight:0,smallVideoFps:0,smallVideoBps:0,auxVideoWidth:0,auxVideoHeight:0,auxVideoFps:0,auxVideoBps:0}),Y(this,"flag",0)}get videoCodec(){return this._mediaSettings.videoCodec.toLowerCase()||"h264"}get isMainStreamPublished(){return!(!this.localMainAudioTrack&&!this.localMainVideoTrack)}get isAuxStreamPublished(){return!(!this.localAuxVideoTrack&&!this.localAuxAudioTrack)}initialize(){super.initialize(),this.installEvents()}reset(){this._isReconnecting&&this.stopReconnection(),this.closePeerConnection(),this.uninstallEvents()}close(e){super.close(e),this.reset(),this.emitConnectionStateChangedEvent("DISCONNECTED")}installEvents(){this._emitter.listeners("connection-state-changed").includes(this.handleConnectionStateChange)||this._emitter.on("connection-state-changed",this.handleConnectionStateChange,this)}uninstallEvents(){this._emitter.off("connection-state-changed",this.handleConnectionStateChange,this)}emitConnectionStateChangedEvent(e,o){var a,c,d;let C=this._currentState,y=super.emitConnectionStateChangedEvent(e);return y&&C!==e&&(o?o.emit("connection-state-changed",{prevState:C,state:e}):((a=this.localMainVideoTrack)==null||a.emit("connection-state-changed",{prevState:C,state:e}),(c=this.localAuxVideoTrack)==null||c.emit("connection-state-changed",{prevState:C,state:e}),(d=this._publishingLocalVideoTrack)==null||d.emit("connection-state-changed",{prevState:C,state:e}))),y}publish(e){return KA(this,arguments,function(o){var a=this;let{localAudioTrack:c,localVideoTrack:d,isAuxiliary:C}=o;return function*(){let y;a._peerConnection||a.initialize(),c&&(a._publishingLocalAudioTrack=c),d&&(a._publishingLocalVideoTrack=d),a._isPublishingAux=C,d&&!C&&d.small&&(y=a._room.videoManager.smallTrack),a.sendMediaSettings(),Zd()?yield a.publishByTransceiver({localAudioTrack:c,localVideoTrack:d,smallTrack:y,isAuxiliary:C}):yield a.publishByAddTrack({localAudioTrack:c,localVideoTrack:d,smallTrack:y}),a._publishingLocalAudioTrack=null,a._publishingLocalVideoTrack=null,a._isPublishingAux=!1,C?(d&&(a.localAuxVideoTrack=d),c&&(a.localAuxAudioTrack=c)):(d&&(a.localMainVideoTrack=d),c&&(a.localMainAudioTrack=c)),a.installTrackMuteEvents(c,d),a.sendMutedFlag()}()})}publishByTransceiver(e){return KA(this,arguments,function(o){var a=this;let{localAudioTrack:c,localVideoTrack:d,smallTrack:C,isAuxiliary:y}=o;return function*(){a._log.info("publish by transceiver");let S=new MediaStream,b=d?.outMediaTrack,V=c?.outMediaTrack;V&&S.addTrack(V),b&&S.addTrack(b);let J=a._peerConnection.getTransceivers();if(J.length===0)a._peerConnection.addTransceiver(V||YA.AUDIO,{direction:zn.SENDONLY,streams:[S]}),a._peerConnection.addTransceiver(y?YA.VIDEO:b||YA.VIDEO,{direction:zn.SENDONLY,streams:[S]}),a._peerConnection.addTransceiver(C||YA.VIDEO,{direction:zn.SENDONLY,streams:[S]}),a._peerConnection.addTransceiver(y&&b||YA.VIDEO,{direction:zn.SENDONLY,streams:[S]}),yield a.connect();else{let gA=[];if(V&&(J[0].sender.track||gA.push(0),yield J[0].sender.replaceTrack(V),yield a.setBandwidth({bandwidth:c?.profile.bitrate||40,type:YA.AUDIO})),b){let CA=y?3:1;yield J[CA].sender.replaceTrack(b),yield a.setBandwidth({bandwidth:d.profile.bitrate,type:YA.VIDEO,videoType:y?YA.AUXILIARY:YA.BIG}),gA.push(CA),C&&(yield J[2].sender.replaceTrack(C),yield a.setBandwidth({bandwidth:d.small.bitrate,type:YA.VIDEO,videoType:YA.SMALL}),gA.push(2))}yield a.setTransceiverDirection(zn.SENDONLY,gA),yield a.doPublishChange(),d?.emit("connection-state-changed",{prevState:"DISCONNECTED",state:"CONNECTING"}),d?.emit("connection-state-changed",{prevState:"CONNECTING",state:"CONNECTED"})}}()})}publishByAddTrack(e){return KA(this,arguments,function(o){var a=this;let{localAudioTrack:c,localVideoTrack:d,smallTrack:C}=o;return function*(){a._log.info("publish by addtrack");let y=d?.outMediaTrack,S=c?.outMediaTrack;if(a._peerConnection&&a._peerConnection.connectionState!=="new")return c&&S&&(yield a.addTrack(c)),void(y&&(yield a.addTrack(d)));let b=new MediaStream;if(S&&b.addTrack(S),y&&b.addTrack(y),S&&a._peerConnection.addTrack(S,b),y&&(a._peerConnection.addTrack(y,b),C)){let V=new MediaStream;V.addTrack(C),a._peerConnection.addTrack(C,V)}yield a.connect()}()})}enableSmall(e){return KA(this,null,function*(){let o=this._peerConnection.getTransceivers();e?this._room.videoManager.smallTrack&&(yield o[2].sender.replaceTrack(this._room.videoManager.smallTrack),yield this.setTransceiverDirection(zn.SENDONLY,[2])):(yield o[2].sender.replaceTrack(null),yield this.setTransceiverDirection(zn.INACTIVE,[2])),this.updateMediaSettings(),yield this.doPublishChange()})}installTrackMuteEvents(){for(var e=arguments.length,o=new Array(e),a=0;a{c&&(c?.on("mute",this.sendMutedFlag,this),c?.on("unmute",this.sendMutedFlag,this))})}uninstallTrackMuteEvents(){for(var e=arguments.length,o=new Array(e),a=0;a{c&&(c?.off("mute",this.sendMutedFlag,this),c?.off("unmute",this.sendMutedFlag,this))})}unpublish(e){return KA(this,arguments,function(o){var a=this;let{localAudioTrack:c,localVideoTrack:d}=o;return function*(){if(!lQ())return c&&c.outMediaTrack&&!d&&a.localMainVideoTrack?(yield a.removeTrack(c),void(a.localMainAudioTrack=null)):d&&d.outMediaTrack&&!c&&a.localMainAudioTrack?(yield a.removeTrack(d),void(a.localMainVideoTrack=null)):(yield a.doUnpublish(),a.uninstallTrackMuteEvents(c,d),void a.emitConnectionStateChangedEvent("DISCONNECTED",d));let C=d&&d===a.localAuxVideoTrack,y=d?.outMediaTrack,S=a._peerConnection.getSenders(),b=[];c&&(C?a.localAuxAudioTrack=null:a.localMainAudioTrack=null,!a.localAuxAudioTrack&&!a.localMainAudioTrack&&(yield S[0].replaceTrack(null),b.push(0))),y&&(C?(yield S[3].replaceTrack(null),a.localAuxVideoTrack=null,a._mediaSettings=Qo(mi({},a._mediaSettings),{auxVideoBps:0,auxVideoFps:0,auxVideoWidth:0,auxVideoHeight:0}),b.push(3)):(yield S[1].replaceTrack(null),yield S[2].replaceTrack(null),a.localMainVideoTrack=null,a._mediaSettings=Qo(mi({},a._mediaSettings),{videoWidth:0,videoHeight:0,videoBps:0,videoFps:0,audioFs:0,audioChannel:0,audioBps:0,smallVideoWidth:0,smallVideoHeight:0,smallVideoFps:0,smallVideoBps:0}),b.push(1,2))),a.isMainStreamPublished||a.isAuxStreamPublished?(yield a.setTransceiverDirection(zn.INACTIVE,b),yield a.doPublishChange(!1)):yield a.doUnpublish(),a.uninstallTrackMuteEvents(c,d),d?.emit("connection-state-changed",{prevState:a._currentState,state:"DISCONNECTED"})}()})}doPublishChange(){let e=!(arguments.length>0&&arguments[0]!==void 0)||arguments[0];return KA(this,null,function*(){let o={state:this._room.publishState,constraintConfig:this._mediaSettings},a=yield this._signalChannel.sendWaitForResponse({command:uj,data:o,responseCommand:ls.PUBLISH_STATE_CHANGE_RESULT,enableLog:e});this.checkPublishResultCode(a.data.code,a.data.message)})}doUnpublish(){let e=arguments.length>0&&arguments[0]!==void 0&&arguments[0];return this._signalChannel.sendWaitForResponse({command:m1,commandDesc:"unpublish",responseCommand:ls.UNPUBLISH_RESULT,enableLog:e}).catch(o=>{if(o.getCode()===Et.API_CALL_TIMEOUT)return Promise.resolve();throw o})}updateMediaSettings(){let{detail:{isH264EncodeSupported:e,isVp8EncodeSupported:o}}=this._room.checkSystemResult;e?this._mediaSettings.videoCodec="H264":o&&(this._mediaSettings.videoCodec="VP8");let a=this._publishingLocalAudioTrack||this.localMainAudioTrack||this.localAuxAudioTrack,{localMainVideoTrack:c,localAuxVideoTrack:d}=this;if(this._publishingLocalVideoTrack&&(this._isPublishingAux?d=this._publishingLocalVideoTrack:c=this._publishingLocalVideoTrack),dy){if(a&&a.outMediaTrack){let C=a.outMediaTrack.getSettings();this._mediaSettings.audioChannel=C.channelCount||1,this._mediaSettings.audioBps=1e3*a.profile.bitrate,this._mediaSettings.audioFs=C.sampleRate||0}if(c&&c.outMediaTrack){let C=c.outMediaTrack.getSettings();this._mediaSettings.videoWidth=C.width||0,this._mediaSettings.videoHeight=C.height||0,this._mediaSettings.videoFps=C.frameRate||0,this._mediaSettings.videoBps=1e3*c.profile.bitrate,c.small&&(this._mediaSettings.smallVideoWidth=c.small.width,this._mediaSettings.smallVideoHeight=c.small.height,this._mediaSettings.smallVideoFps=c.small.frameRate,this._mediaSettings.smallVideoBps=1e3*c.small.bitrate)}if(d&&d.outMediaTrack){let C=d.outMediaTrack.getSettings();this._mediaSettings.auxVideoWidth=C.width||0,this._mediaSettings.auxVideoHeight=C.height||0,this._mediaSettings.auxVideoFps=C.frameRate||0,this._mediaSettings.auxVideoBps=1e3*d.profile.bitrate}}else a&&a.outMediaTrack&&(this._mediaSettings.audioChannel=a.profile.channelCount,this._mediaSettings.audioBps=1e3*a.profile.bitrate,this._mediaSettings.audioFs=a.profile.sampleRate),c&&c.outMediaTrack&&(this._mediaSettings.videoWidth=c.profile.width,this._mediaSettings.videoHeight=c.profile.height,this._mediaSettings.videoFps=c.profile.frameRate,this._mediaSettings.videoBps=1e3*c.profile.bitrate);this._log.info("updateMediaSettings: ".concat(JSON.stringify(this._mediaSettings)))}sendMediaSettings(){this.updateMediaSettings(),this._signalChannel.sendWaitForResponse({command:Cj,data:this._mediaSettings,responseCommand:ls.UPDATE_CONSTRAINT_CONFIG_RES}).then(e=>{e.data.code!==0&&this._log.warn(e.data.message)}).catch(()=>{})}addTrack(e){return KA(this,null,function*(){if(!this._peerConnection)return;let o=e===this.localAuxAudioTrack||e===this.localAuxVideoTrack;this._log.info("is adding ".concat(e.kind," track to current published local ").concat(o?YA.AUXILIARY:YA.MAIN," stream")),Zd()?yield this.addTrackByTransceiver(e,o):yield this.addTrackBySender(e)})}addTrackByTransceiver(e,o){return KA(this,null,function*(){var a;if(!e.mediaTrack)return;let c=this._peerConnection.getTransceivers();if(e.kind===YA.AUDIO)yield c[0].sender.replaceTrack(e.outMediaTrack);else{let d=o?3:1;yield c[d].sender.replaceTrack(e.outMediaTrack),d===1&&(a=this.localMainVideoTrack)!=null&&a.small&&(yield c[2].sender.replaceTrack(this._room.videoManager.smallTrack)),c[d].direction===zn.INACTIVE&&(yield this.setTransceiverDirection(zn.SENDONLY,[d]))}this.updateMediaSettings(),yield this.doPublishChange()})}addTrackBySender(e){return KA(this,null,function*(){if(!e.outMediaTrack)return;let o=e.outMediaTrack;lQ()&&this._peerConnection.getTransceivers().findIndex(c=>c.direction==="stopped")>=0&&(this._log.warn("transceiver is stopping, negotiate sdp first"),yield this.updateOffer("remove",o));let a=this._peerConnection.getSenders().find(c=>c.track&&c.track.kind===o.kind);if(a&&a.track){this._log.warn("sender already exists, remove sender first");let c=a.track;this.removeSender(a),yield this.updateOffer("remove",c)}if(o&&this._peerConnection.addTrack(o,new MediaStream([o])),o.kind===YA.VIDEO&&e instanceof EQ&&e.small){let c=new MediaStream,{smallTrack:d}=this._room.videoManager;c.addTrack(d),this._peerConnection.addTrack(d,c)}yield this.updateOffer("add",o)})}isNeedToResetOfferOrder(){if(this._sdpSemantics===r0||!this._peerConnection||!this._peerConnection.localDescription)return!1;let{sdp:e}=this._peerConnection.localDescription,o=uc(e);for(let a=0;aa.sender&&a.sender.track===e.track)),this._peerConnection.removeTrack(e),o&&Ra(o.stop)&&(this._log.info("stop transceiver"),o.stop())}removeTrack(e){return KA(this,null,function*(){if(!this._peerConnection)return;let o=e===this.localAuxAudioTrack||e===this.localAuxVideoTrack;this._log.info("is removing ".concat(e.kind," track from current published local ").concat(o?YA.AUXILIARY:YA.MAIN," stream")),Zd()?yield this.removeTrackByTransceiver(e,o):yield this.removeTrackBySender(e)})}removeTrackByTransceiver(e,o){return KA(this,null,function*(){if(!e.outMediaTrack)return;let a=this._peerConnection.getTransceivers();if(e.kind===YA.AUDIO)yield a[0].sender.replaceTrack(null);else{let c=o?3:1;yield a[c].sender.replaceTrack(null),c===1&&e.small&&(yield a[2].sender.replaceTrack(null)),yield this.setTransceiverDirection(zn.INACTIVE,[c])}this.updateMediaSettings(),yield this.doPublishChange()})}setTransceiverDirection(e,o){return KA(this,null,function*(){if(!er)return;let a=!1,c=!1;this._log.info("setting transceiver ".concat(o.join(",")," direction to ").concat(e));let d=this._peerConnection.getTransceivers();if(o.forEach(S=>{d[S].direction!==e&&(d[S].direction=e,a=!0)}),a){this._log.info("updating offer");let S=yield this._peerConnection.createOffer();yield this.setOffer(S)}let C=-1,y=this._peerConnection.remoteDescription.sdp.split(`\r `).map(S=>{if(S.match(new RegExp("a=(".concat(zn.INACTIVE,"|").concat(zn.RECVONLY,"|").concat(zn.SENDONLY,")")))&&C++,o.includes(C)){if(e===zn.INACTIVE&&S.includes("a=".concat(zn.RECVONLY)))return c=!0,"a=".concat(e);if(e===zn.SENDONLY&&S.includes("a=".concat(zn.INACTIVE)))return c=!0,"a=".concat(zn.RECVONLY)}return S}).join(`\r -`);c&&(this._log.info("updating answer"),yield this.setAnswer({type:"answer",sdp:y}))})}removeTrackBySender(e){return KA(this,null,function*(){if(!e.outMediaTrack)return;if(e.kind===YA.VIDEO&&this.isNeedToResetOfferOrder()&&this.localMainAudioTrack)return this.reset(),this.initialize(),void(yield this.publish({localAudioTrack:this.localMainAudioTrack,isAuxiliary:!1}));let o=this._peerConnection.getSenders().find(a=>a.track===e.outMediaTrack);o&&(this.removeSender(o),e.kind===YA.VIDEO&&e.small&&this._peerConnection.getSenders().forEach(a=>{a.track&&a.track.kind===YA.VIDEO&&this.removeSender(a)})),yield this.updateOffer("remove",e.outMediaTrack)})}replaceTrack(e){return KA(this,null,function*(){var o;let a,c=(o=this._peerConnection)==null?void 0:o.getSenders();if(!c||c.length===0||!e.mediaTrack||(a=Hd()?e.kind===YA.AUDIO?c[0]:c[1]:c.find(C=>C.track&&C.track.kind===e.kind),!a))return!1;let d=e===this.localAuxAudioTrack||e===this.localAuxVideoTrack;return this._log.info("is replacing ".concat(e.kind," track on ").concat(d?YA.AUXILIARY:YA.MAIN," stream")),e.kind===YA.AUDIO?yield a.replaceTrack(e.outMediaTrack):e.kind===YA.VIDEO&&(d?c[3]&&(yield c[3].replaceTrack(e.outMediaTrack)):yield a.replaceTrack(e.outMediaTrack)),!0})}updateOffer(e,o){return KA(this,null,function*(){try{let a=yield this._peerConnection.createOffer(K5);er&&a.sdp&&(a.sdp=this.setSDPDirection(a.sdp,"sendrecv")),yield this.setOffer(a);let c=this.updateMediaSettings(),d={action:e,trackId:o.id,kind:o.kind===YA.VIDEO?"bigVideo":o.kind,type:"offer",sdp:this._peerConnection.localDescription.sdp,constraintConfig:c,state:this._room.publishState};this._log.info("createOffer success, sending updated offer to remote server"),this._log.debug("updatedOffer: ".concat(d.sdp));let C=yield this._signalChannel.sendWaitForResponse({command:U5,data:d,responseCommand:ls.UPDATE_OFFER_RESULT,timeout:Cx,commandDesc:"update offer"}),{code:y,message:S}=C.data;y!==0&&this.checkPublishResultCode(y,S),yield this.acceptAnswer(C.data.data),a.sdp&&this.updateSSRC(a.sdp)}catch(a){throw this._log.error(a),a}})}setBandwidth(e){return KA(this,arguments,function(o){var a=this;let{bandwidth:c,type:d,videoType:C,sdp:y}=o;return function*(){if(!Qk())return y?d===YA.VIDEO?a.updateVideoBandwidthRestriction(y,c,C):a.updateAudioBandwidthRestriction(y,c):void 0;let S,b=a._peerConnection.getSenders();if(Hd()){let V=0;d===YA.VIDEO&&(V=C===YA.SMALL?2:C===YA.AUXILIARY?3:1),S=b[V]}else S=b.find(V=>V.track&&V.track.kind===d);if(S){let V=S.getParameters();(!V.encodings||V.encodings.length===0)&&(V.encodings=[{}]),V.encodings[0].maxBitrate=1e3*c;try{return yield S.setParameters(V),a._log.info("".concat(C||"").concat(d," bandwidth ").concat(c," kbps")),y}catch(J){if(a._log.info("failed to set bandwidth by setting maxBitrate: ".concat(J)),y)return d===YA.VIDEO?a.updateVideoBandwidthRestriction(y,c,C):a.updateAudioBandwidthRestriction(y,c)}}return y}()})}updateVideoBandwidthRestriction(e,o,a){let c="AS";er&&(c="TIAS",o*=1e3);let d=0,C=-1;return a===YA.SMALL?d=1:a===YA.AUXILIARY&&(d=2),e=e.replace(/m=video (.*)\r\nc=IN (.*)\r\n/g,y=>(C+=1,C===d?"".concat(y,"b=").concat(c,":").concat(o,`\r +`);c&&(this._log.info("updating answer"),yield this.setAnswer({type:"answer",sdp:y}))})}removeTrackBySender(e){return KA(this,null,function*(){if(!e.outMediaTrack)return;if(e.kind===YA.VIDEO&&this.isNeedToResetOfferOrder()&&this.localMainAudioTrack)return this.reset(),this.initialize(),void(yield this.publish({localAudioTrack:this.localMainAudioTrack,isAuxiliary:!1}));let o=this._peerConnection.getSenders().find(a=>a.track===e.outMediaTrack);o&&(this.removeSender(o),e.kind===YA.VIDEO&&e.small&&this._peerConnection.getSenders().forEach(a=>{a.track&&a.track.kind===YA.VIDEO&&this.removeSender(a)})),yield this.updateOffer("remove",e.outMediaTrack)})}replaceTrack(e){return KA(this,null,function*(){var o;let a,c=(o=this._peerConnection)==null?void 0:o.getSenders();if(!c||c.length===0||!e.mediaTrack||(a=Zd()?e.kind===YA.AUDIO?c[0]:c[1]:c.find(C=>C.track&&C.track.kind===e.kind),!a))return!1;let d=e===this.localAuxAudioTrack||e===this.localAuxVideoTrack;return this._log.info("is replacing ".concat(e.kind," track on ").concat(d?YA.AUXILIARY:YA.MAIN," stream")),e.kind===YA.AUDIO?yield a.replaceTrack(e.outMediaTrack):e.kind===YA.VIDEO&&(d?c[3]&&(yield c[3].replaceTrack(e.outMediaTrack)):yield a.replaceTrack(e.outMediaTrack)),!0})}updateOffer(e,o){return KA(this,null,function*(){try{let a=yield this._peerConnection.createOffer(_z);er&&a.sdp&&(a.sdp=this.setSDPDirection(a.sdp,"sendrecv")),yield this.setOffer(a);let c=this.updateMediaSettings(),d={action:e,trackId:o.id,kind:o.kind===YA.VIDEO?"bigVideo":o.kind,type:"offer",sdp:this._peerConnection.localDescription.sdp,constraintConfig:c,state:this._room.publishState};this._log.info("createOffer success, sending updated offer to remote server"),this._log.debug("updatedOffer: ".concat(d.sdp));let C=yield this._signalChannel.sendWaitForResponse({command:pz,data:d,responseCommand:ls.UPDATE_OFFER_RESULT,timeout:xx,commandDesc:"update offer"}),{code:y,message:S}=C.data;y!==0&&this.checkPublishResultCode(y,S),yield this.acceptAnswer(C.data.data),a.sdp&&this.updateSSRC(a.sdp)}catch(a){throw this._log.error(a),a}})}setBandwidth(e){return KA(this,arguments,function(o){var a=this;let{bandwidth:c,type:d,videoType:C,sdp:y}=o;return function*(){if(!kk())return y?d===YA.VIDEO?a.updateVideoBandwidthRestriction(y,c,C):a.updateAudioBandwidthRestriction(y,c):void 0;let S,b=a._peerConnection.getSenders();if(Zd()){let V=0;d===YA.VIDEO&&(V=C===YA.SMALL?2:C===YA.AUXILIARY?3:1),S=b[V]}else S=b.find(V=>V.track&&V.track.kind===d);if(S){let V=S.getParameters();(!V.encodings||V.encodings.length===0)&&(V.encodings=[{}]),V.encodings[0].maxBitrate=1e3*c;try{return yield S.setParameters(V),a._log.info("".concat(C||"").concat(d," bandwidth ").concat(c," kbps")),y}catch(J){if(a._log.info("failed to set bandwidth by setting maxBitrate: ".concat(J)),y)return d===YA.VIDEO?a.updateVideoBandwidthRestriction(y,c,C):a.updateAudioBandwidthRestriction(y,c)}}return y}()})}updateVideoBandwidthRestriction(e,o,a){let c="AS";er&&(c="TIAS",o*=1e3);let d=0,C=-1;return a===YA.SMALL?d=1:a===YA.AUXILIARY&&(d=2),e=e.replace(/m=video (.*)\r\nc=IN (.*)\r\n/g,y=>(C+=1,C===d?"".concat(y,"b=").concat(c,":").concat(o,`\r `):y)),e}updateAudioBandwidthRestriction(e,o){let a="AS";return er&&(a="TIAS",o*=1e3),e=e.replace(/m=audio (.*)\r\nc=IN (.*)\r\n/,`m=audio $1\r c=IN $2\r b=`.concat(a,":").concat(o,`\r -`))}removeBandwidthRestriction(e){return e.replace(/b=AS:.*\r\n/,"").replace(/b=TIAS:.*\r\n/,"")}removeVideoOrientation(e){return e.replace(/urn:3gpp:video-orientation/,"")}connect(){return KA(this,null,function*(){try{yield this.exchangeSDP(),yield this.waitForPeerConnectionConnected()}catch(e){throw this.closePeerConnection(!0),this.uninstallEvents(),e}})}exchangeSDP(){return KA(this,null,function*(){try{yield this.createOffer(),this._log.info("createOffer success, sending offer to remote server"),yield this.doExchangeSDP()}catch(e){throw e}})}createOffer(){return KA(this,null,function*(){try{let e=yield this._peerConnection.createOffer(K5);yield this.setOffer(e),e.sdp&&this.updateSSRC(e.sdp)}catch(e){throw e}})}doExchangeSDP(){let e={command:O5,responseCommand:ls.PUBLISH_RESULT,data:{type:this._peerConnection.localDescription.type,sdp:this.removeVideoOrientation(this._peerConnection.localDescription.sdp),screen:this.localMainVideoTrack instanceof bM||this.localAuxVideoTrack instanceof bM,state:this._room.publishState,constraintConfig:this._mediaSettings},enableLog:!1};return this._log.debug("sending sdp offer: ".concat(e.data.sdp)),this._signalChannel.sendWaitForResponse(e).then(o=>{let{code:a,message:c,data:d}=o.data;return a===0?this.acceptAnswer(d):this.checkPublishResultCode(a,c)})}setSDPDirection(e,o){let a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"all",c=uc(e);return c.media.forEach(d=>{(a==="all"||d.type===a)&&(d.direction=o)}),fy(c)}acceptAnswer(e){return KA(this,null,function*(){var o,a,c,d,C;try{let y;if(this._publishingLocalAudioTrack||this._publishingLocalVideoTrack||this.isMainStreamPublished){let b=((o=this._publishingLocalVideoTrack)==null?void 0:o.profile.bitrate)||((a=this.localMainVideoTrack)==null?void 0:a.profile.bitrate),V=((c=this._publishingLocalAudioTrack)==null?void 0:c.profile.bitrate)||((d=this.localMainAudioTrack)==null?void 0:d.profile.bitrate);if(b){let J=this._isPublishingAux?YA.AUXILIARY:YA.BIG;y=yield this.setBandwidth({bandwidth:b,type:YA.VIDEO,sdp:y,videoType:J})}V&&(y=yield this.setBandwidth({bandwidth:V,type:YA.AUDIO,sdp:y}))}if(y=this.removeVideoOrientation(e.sdp),(C=this._publishingLocalVideoTrack)!=null&&C.small){let{smallStreamConfig:b}=this._room;y=yield this.setBandwidth({bandwidth:this._publishingLocalVideoTrack.small.bitrate||b.bitrate,type:YA.VIDEO,videoType:YA.SMALL,sdp:y})}let S={type:e.type,sdp:y};yield this.setAnswer(S),this._log.debug("accepted answer: ".concat(y))}catch(y){throw this._log.error("failed to accept remote answer ".concat(y)),y}})}sendMutedFlag(e){e===this.localAuxAudioTrack||e===this.localAuxVideoTrack||(this._log.info("send muted state: ".concat(JSON.stringify(this._room.muteState))),this._signalChannel.send(F5,this._room.muteState))}getIsReconnecting(){return this._isReconnecting}reconnect(){return KA(this,null,function*(){if(!(RI(Z6.prototype,this,"beforeReconnect").call(this)<0))try{yield this._signalChannel.sendWaitForResponse({command:Z2,responseCommand:ls.UNPUBLISH_RESULT,enableLog:!1}),this.closePeerConnection(),this.initialize(),this.isMainStreamPublished&&(yield this.publish({localAudioTrack:this.localMainAudioTrack,localVideoTrack:this.localMainVideoTrack,isAuxiliary:!1})),this.isAuxStreamPublished&&(yield this.publish({localAudioTrack:this.localAuxAudioTrack,localVideoTrack:this.localAuxVideoTrack,isAuxiliary:!0})),this._log.warn("reconnect() uplink reconnect successfully"),this.stopReconnection()}catch{let o=yp(this._reconnectionCount);this._log.warn("reconnect() timeout, try again after ".concat(o/1e3,"s")),this._reconnectionTimer=setTimeout(()=>{this.clearReconnectionTimer(),this.reconnect()},o)}})}handleConnectionStateChange(e){e.state==="CONNECTED"&&(this.localMainVideoTrack||this._publishingLocalVideoTrack&&!this._isPublishingAux)&&U.emit(sA.SEND_FIRST_VIDEO_FRAME,{room:this._room})}updateSSRC(e){try{uc(e).media.forEach((o,a)=>{if(o.type===YA.AUDIO){let c=o.ssrcs&&o.ssrcs[0];c&&(this.ssrc.audio=Number(c.id))}else{if(this._sdpSemantics===Zw&&o.ssrcGroups)return void o.ssrcGroups.forEach((d,C)=>{let y=Number(d.ssrcs.split(" ")[0]);C===0?this.ssrc.video=y:C===1&&(this.ssrc.small=y)});let c=o.ssrcs&&o.ssrcs[0];if(!c)return;switch(a){case 1:this.ssrc.video=Number(c.id);break;case 2:this.ssrc.small=Number(c.id);break;case 3:this.ssrc.auxiliary=Number(c.id)}}})}catch{}}getVideoTrackId(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:YA.VIDEO;if(this._peerConnection){let o=this._peerConnection.getSenders();if(e===YA.AUXILIARY&&o[3]&&o[3].track)return o[3].track.id;if(e===YA.VIDEO&&o[1]&&o[1].track)return o[1].track.id}if(this.localMainVideoTrack&&e===YA.VIDEO){let o=this.localMainVideoTrack.mediaTrack;if(o)return o.id}if(this.localAuxVideoTrack&&e===YA.AUXILIARY){let o=this.localAuxVideoTrack.mediaTrack;if(o)return o.id}return""}getSSRC(){return this.ssrc}checkPublishResultCode(e,o){if(e!==0)throw e===Xw?(this._log.error(cc.NOT_SUPPORTED_H264ENCODE),new oi({code:lt.NOT_SUPPORTED_H264,message:Zo({key:So.NOT_SUPPORTED_H264ENCODE})})):new oi({code:lt.UNKNOWN,message:Zo({key:So.SIGNAL_RESPONSE_FAILED,data:{signalResponse:ls.PUBLISH_RESULT,code:e,message:o}})})}};di([Hr(A=>function(){for(var e=arguments.length,o=new Array(e),a=0;a{let C=y=>{this._emitter.off("closed",C),d(new oi({code:lt.API_CALL_ABORTED,message:Zo({key:So.CONNECTION_ABORTED,data:y})}))};this._emitter.on("closed",C),A.apply(this,o).then(c,d).finally(()=>{this._emitter.off("closed",C)})})})],A1.prototype,"publish"),di([Cy(521715,!1)],A1.prototype,"unpublish"),di([TM(Zp.prototype.afterConnect),h4(Zp.prototype.beforeConnect)],A1.prototype,"connect");var e1=A1,BiA=class{constructor(A,e){this.room=A,Y(this,"_log"),Y(this,"_prevReportTime",0),Y(this,"_prevReport",{}),Y(this,"_prevStats",null),Y(this,"_prevEncoderImplementation",""),Y(this,"_prevAuxEncoderImpl",""),Y(this,"_prevQualityLimitationReason",""),Y(this,"_prevAuxQualityLimitationReason",""),Y(this,"_prevDecoderImplementationMap",new Map),Y(this,"_decodeMap",new Map),Y(this,"_prevQpSum",0),Y(this,"_prevAuxQpSum",0),Y(this,"totalBytesSent",0),Y(this,"totalBytesReceived",0),Y(this,"_spcStats",null),this._log=e}get statInterval(){return this._prevReportTime===0?2:(Date.now()-this._prevReportTime)/1e3}getSenderStats(A){return KA(this,null,function*(){var e,o,a,c,d,C,y;let S={audio:{bytesSent:0,packetsSent:0,audioLevel:0,totalAudioEnergy:0},video:{bytesSent:0,packetsSent:0,framesEncoded:0,frameWidth:0,frameHeight:0,framesSent:0,fpsCapture:0},small:{bytesSent:0,packetsSent:0,framesEncoded:0,frameWidth:0,frameHeight:0,framesSent:0,fpsCapture:0},auxiliary:{bytesSent:0,packetsSent:0,framesEncoded:0,frameWidth:0,frameHeight:0,framesSent:0,fpsCapture:0},rtt:0},b=A.getPeerConnection(),V=A.getSSRC();if(b)try{if((this._spcStats||(yield b.getStats())).forEach(J=>{var gA,CA,MA,ee,Be,Pe,Me,fi,Ge,dt,Ci,yi,Yo;let Vo,Qn;if(J.type==="outbound-rtp")if((J.mediaType||J.kind)===YA.VIDEO){if(J.ssrc===V.video?(Vo=YA.VIDEO,Qn=A.localMainVideoTrack):J.ssrc===V.small?Vo=YA.SMALL:J.ssrc===V.auxiliary&&(Qn=A.localAuxVideoTrack,Vo=YA.AUXILIARY),!Vo)return;S[Vo].bytesSent=J.bytesSent,S[Vo].packetsSent=J.packetsSent,S[Vo].framesEncoded=J.framesEncoded,Ye(J.keyFramesEncoded)||(S[Vo].keyFramesEncoded=J.keyFramesEncoded),Ye(J.nackCount)||(S[Vo].nackCount=J.nackCount),Ye(J.pliCount)||(S[Vo].pliCount=J.pliCount),Ye(J.retransmittedPacketsSent)||(S[Vo].retransmittedPacketsSent=J.retransmittedPacketsSent),Ye(J.totalEncodeTime)||(S[Vo].totalEncodeTime=J.totalEncodeTime),Ye(J.totalPacketSendDelay)||(S[Vo].totalPacketSendDelay=J.totalPacketSendDelay);let Jo=0;if(!Ye(J.qpSum)&&!Ye(J.framesEncoded)&&J.framesEncoded>0){let Ns=J.qpSum,pg=J.framesEncoded,ma=Vo===YA.VIDEO?this._prevQpSum:this._prevAuxQpSum,Iu=Vo===YA.VIDEO?((CA=(gA=A.localMainVideoTrack)==null?void 0:gA.stat)==null?void 0:CA.framesEncoded)||0:((ee=(MA=A.localAuxVideoTrack)==null?void 0:MA.stat)==null?void 0:ee.framesEncoded)||0;if(pg>Iu&&Ns>ma){let Xk=Ns-ma,r_=pg-Iu;Jo=Math.round(Xk/r_),Jo>35&&A.videoCodec==="h264"&&this._log.warn("".concat(Vo===YA.AUXILIARY?"aux ":"","video encoder QP is high: ").concat(Jo,", resolution: ").concat(J.frameWidth,"x").concat(J.frameHeight,", codec: ").concat(A.videoCodec,", "))}Vo===YA.VIDEO?this._prevQpSum=Ns:Vo===YA.AUXILIARY&&(this._prevAuxQpSum=Ns)}if(!Ye(J.encoderImplementation)&&(Vo===YA.VIDEO&&this._prevEncoderImplementation!==J.encoderImplementation||Vo===YA.AUXILIARY&&this._prevAuxEncoderImpl!==J.encoderImplementation)){let Ns=2,pg=this._prevEncoderImplementation;Vo===YA.AUXILIARY&&(Ns=7,pg=this._prevAuxEncoderImpl),U.emit("262",{userId:A.userId,streamType:Ns,prevImplementation:pg,implementation:J.encoderImplementation,codec:A.videoCodec,isHWCodec:J.powerEfficientEncoder}),this[Vo===YA.VIDEO?"_prevEncoderImplementation":"_prevAuxEncoderImpl"]=J.encoderImplementation,Qn?.log.info("encoderImplementation change to ".concat(J.encoderImplementation,"(").concat(A.videoCodec,") HWEncoder: ").concat(J.powerEfficientEncoder))}J.ssrc===V.video?!Ye(J.qualityLimitationReason)&&J.bytesSent!==0&&this._prevQualityLimitationReason!==J.qualityLimitationReason&&(Qn?.log.info("qualityLimitationReason change to ".concat(J.qualityLimitationReason)),U.emit("263",{userId:A.userId,reason:J.qualityLimitationReason,prevReason:this._prevQualityLimitationReason,streamType:2,isQosClearFirst:(Be=A.localMainVideoTrack)==null?void 0:Be.isQosClearFirst}),this._prevQualityLimitationReason=J.qualityLimitationReason):J.ssrc===V.auxiliary&&!Ye(J.qualityLimitationReason)&&J.bytesSent!==0&&this._prevAuxQualityLimitationReason!==J.qualityLimitationReason&&(this._log.info("aux qualityLimitationReason change to ".concat(J.qualityLimitationReason)),U.emit("263",{userId:A.userId,reason:J.qualityLimitationReason,prevReason:this._prevAuxQualityLimitationReason,streamType:7,isQosClearFirst:(Pe=A.localAuxVideoTrack)==null?void 0:Pe.isQosClearFirst}),this._prevAuxQualityLimitationReason=J.qualityLimitationReason)}else S.audio.bytesSent=J.bytesSent,S.audio.packetsSent=J.packetsSent;else if(J.type==="candidate-pair")BM(J)&&(this.totalBytesSent=J.bytesSent,bn(J.currentRoundTripTime)&&(S.rtt=Math.floor(1e3*J.currentRoundTripTime)));else if(J.type==="media-source"){if(J.kind===YA.AUDIO)S.audio.audioLevel=J.audioLevel||0,S.audio.totalAudioEnergy=J.totalAudioEnergy||0,J.echoReturnLoss,Ye((Ge=(fi=(Me=A.localMainAudioTrack)==null?void 0:Me.sourceTrack)==null?void 0:fi.stats)==null?void 0:Ge.deliveredFramesDuration)?J.totalSamplesDuration&&(S.audio.totalSamplesDuration=J.totalSamplesDuration):S.audio.totalSamplesDuration=A.localMainAudioTrack.sourceTrack.stats.deliveredFramesDuration/1e3;else if(J.kind===YA.VIDEO)if(J.trackIdentifier===A.getVideoTrackId(YA.VIDEO))if((yi=(Ci=(dt=A.localMainVideoTrack)==null?void 0:dt.sourceTrack)==null?void 0:Ci.stats)!=null&&yi.deliveredFrames){let{deliveredFrames:Jo}=A.localMainVideoTrack.sourceTrack.stats;S.video.framesCaptured=Jo,A.localMainVideoTrack.stat.framesCaptured&&A.localMainVideoTrack.stat.framesCaptured>0&&Jo>=A.localMainVideoTrack.stat.framesCaptured?S.video.fpsCapture=Math.floor((Jo-A.localMainVideoTrack.stat.framesCaptured)/this.statInterval):S.video.fpsCapture=J.framesPerSecond}else S.video.fpsCapture=J.framesPerSecond;else J.trackIdentifier===A.getVideoTrackId(YA.AUXILIARY)?S.auxiliary.fpsCapture=J.framesPerSecond:S.small.fpsCapture=J.framesPerSecond}if(!Ye(J.audioLevel)&&(Yo=A.localMainAudioTrack)!=null&&Yo.mediaTrack&&J.trackIdentifier===A.localMainAudioTrack.mediaTrack.id&&(S.audio.audioLevel=J.audioLevel||0),!Ye(J.frameWidth)){let Jo=YA.SMALL;J.trackIdentifier===A.getVideoTrackId(YA.VIDEO)||J.ssrc===V.video?Jo=YA.VIDEO:(J.trackIdentifier===A.getVideoTrackId(YA.AUXILIARY)||J.ssrc===V.auxiliary)&&(Jo=YA.AUXILIARY),S[Jo].frameWidth=J.frameWidth,S[Jo].frameHeight=J.frameHeight,S[Jo].framesSent=J.framesSent}}),A.localMainAudioTrack||A.getRoom().capturedLocalMainAudioTrack){let J=A.localMainAudioTrack||A.getRoom().capturedLocalMainAudioTrack;if(J){let gA=J.getInternalAudioLevel(),CA=J.getInternalAudioLevelAfter3A();S.audio.audioCaptureEnergyAfter3a=CA,S.audio.micAudioLevel=gA,S.audio.audioLevel===0&&A.localMainAudioTrack&&(S.audio.audioLevel=CA??gA),!A.localMainAudioTrack&&!Ye((o=(e=J.sourceTrack)==null?void 0:e.stats)==null?void 0:o.deliveredFramesDuration)&&(S.audio.totalSamplesDuration=J.sourceTrack.stats.deliveredFramesDuration/1e3)}}if(!A.localMainVideoTrack&&A.getRoom().capturedLocalMainVideoTrack){let J=A.getRoom().capturedLocalMainVideoTrack;if((c=(a=J?.sourceTrack)==null?void 0:a.stats)!=null&&c.deliveredFrames){let{deliveredFrames:gA}=J.sourceTrack.stats;S.video.framesCaptured=gA,J.stat.framesCaptured&&J.stat.framesCaptured>0&&gA>=J.stat.framesCaptured&&(S.video.fpsCapture=Math.floor((gA-J.stat.framesCaptured)/this.statInterval)),J.stat.framesCaptured=gA}}if(!A.localAuxVideoTrack&&A.getRoom().capturedLocalAuxVideoTrack){let J=A.getRoom().capturedLocalAuxVideoTrack;if((C=(d=J?.sourceTrack)==null?void 0:d.stats)!=null&&C.deliveredFrames){let{deliveredFrames:gA}=J.sourceTrack.stats;S.auxiliary.framesCaptured=gA,J.stat.framesCaptured&&J.stat.framesCaptured>0&&gA>=J.stat.framesCaptured&&(S.auxiliary.fpsCapture=Math.floor((gA-J.stat.framesCaptured)/this.statInterval)),J.stat.framesCaptured=gA}}this.totalBytesSent||(this.totalBytesSent+=S.audio.bytesSent+S.video.bytesSent+S.auxiliary.bytesSent),Object.keys(S).forEach(J=>{J===YA.AUDIO?(A.localMainAudioTrack&&(A.localMainAudioTrack.stat=S[J]),A.localAuxAudioTrack&&(A.localAuxAudioTrack.stat=S[J])):J===YA.VIDEO?A.localMainVideoTrack&&(A.localMainVideoTrack.stat=S[J]):J===YA.AUXILIARY&&A.localAuxVideoTrack&&(A.localAuxVideoTrack.stat=S[J])})}catch(J){this._log.warn("failed to getStats on sender connection ".concat(J))}return S.rtt===0&&(S.rtt=((y=this.room.networkQuality)==null?void 0:y.uplinkRTT)||0),S})}getReceiverStats(A){return KA(this,null,function*(){var e,o,a;let c={tinyId:A.tinyId,userId:A.userId,rtt:0,hasAudio:!1,hasVideo:!1,hasAuxiliary:!1,isSmallSubscribed:!1,avSyncDelay:0,audio:{bytesReceived:0,packetsReceived:0,packetsLost:0,p2pDelay:0,totalJitter:0,totalJitterCount:0,audioLevel:0,totalAudioEnergy:0,insertedSamplesForDeceleration:0,removedSamplesForAcceleration:0},video:{bytesReceived:0,packetsReceived:0,packetsLost:0,framesReceived:0,framesDecoded:0,frameWidth:0,frameHeight:0,fpsDecoded:0,freezeCount:0,totalFreezesDuration:0,totalJitter:0,totalJitterCount:0,p2pDelay:0,codec:""},auxiliary:{bytesReceived:0,packetsReceived:0,packetsLost:0,framesReceived:0,framesDecoded:0,frameWidth:0,frameHeight:0,fpsDecoded:0,totalJitter:0,totalJitterCount:0,p2pDelay:0,codec:""}},d=A.getPeerConnection();if(d)try{let{ssrc:C}=A,{muteState:y,subscribeState:S}=A;(this._spcStats||(yield d.getStats())).forEach(J=>{var gA,CA;if(J.type==="codec"&&this._decodeMap.set(J.id,J),J.type==="inbound-rtp"){let MA=(J.mediaType||J.kind)===YA.AUDIO;if(MA){if(J.ssrc!==C.audio||!y.hasAudio)return;c.audio.packetsReceived=J.packetsReceived,c.audio.bytesReceived=J.bytesReceived,c.audio.packetsLost=J.packetsLost,J.insertedSamplesForDeceleration&&(c.audio.insertedSamplesForDeceleration=J.insertedSamplesForDeceleration),J.removedSamplesForAcceleration&&(c.audio.removedSamplesForAcceleration=J.removedSamplesForAcceleration),J.totalSamplesDuration&&(c.audio.totalSamplesDuration=J.totalSamplesDuration),J.totalSamplesReceived&&(c.audio.totalSamplesReceived=J.totalSamplesReceived),J.concealedSamples&&(c.audio.concealedSamples=J.concealedSamples),J.silentConcealedSamples&&(c.audio.silentConcealedSamples=J.silentConcealedSamples);let{remoteAudioTrack:ee}=A;ee.stat.packetsReceived=J.packetsReceived,ee.stat.bytesReceived=J.bytesReceived,ee.stat.packetsLost=J.packetsLost,c.audio.p2pDelay=ee.stat.end2EndDelay,c.hasAudio=!0}else{if(er&&J.bytesReceived===0)return;let ee;J.ssrc===C.video&&y.hasVideo&&(c.video.packetsReceived=J.packetsReceived,c.video.bytesReceived=J.bytesReceived,c.video.packetsLost=J.packetsLost,c.video.framesReceived=J.framesReceived,c.video.framesDecoded=J.framesDecoded,c.video.fpsDecoded=J.framesPerSecond,c.hasVideo=!0,A.videoCodec=dl[(gA=this._decodeMap.get(J.codecId))==null?void 0:gA.mimeType.split("/")[1]]||"h264",c.video.codec=A.videoCodec,ee=A.remoteVideoTrack,y.hasSmall&&S.smallVideo&&(c.isSmallSubscribed=!0),J.decoderImplementation&&(!this._prevDecoderImplementationMap.has(c.userId)||this._prevDecoderImplementationMap.get(c.userId)!==J.decoderImplementation)&&(ee.log.info("decoderImplementation change to ".concat(J.decoderImplementation,"(").concat(A.videoCodec,") HWDecoder: ").concat(J.powerEfficientDecoder)),U.emit("262",{userId:this.room.userId,remoteUserId:c.userId,prevImplementation:this._prevDecoderImplementationMap.get(c.userId),implementation:J.decoderImplementation,codec:A.videoCodec,isHWCodec:J.powerEfficientDecoder}),this._prevDecoderImplementationMap.set(c.userId,J.decoderImplementation)),Ye(J.keyFramesDecoded)||ee.updateKeyFramesDecoded(J.keyFramesDecoded)),J.ssrc===C.auxiliary&&y.hasAuxiliary&&(c.auxiliary.packetsReceived=J.packetsReceived,c.auxiliary.bytesReceived=J.bytesReceived,c.auxiliary.packetsLost=J.packetsLost,c.auxiliary.framesReceived=J.framesReceived,c.auxiliary.framesDecoded=J.framesDecoded,c.auxiliary.fpsDecoded=J.framesPerSecond,ee=A.remoteAuxiliaryTrack,c.auxiliary.p2pDelay=ee.stat.end2EndDelay,c.hasAuxiliary=!0,c.video.codec=((CA=this._decodeMap.get(J.codecId))==null?void 0:CA.mimeType.split("/")[1].toLowerCase())||"h264",Ye(J.keyFramesDecoded)||ee.updateKeyFramesDecoded(J.keyFramesDecoded)),ee&&(ee.stat.packetsReceived=J.packetsReceived,ee.stat.bytesReceived=J.bytesReceived,ee.stat.packetsLost=J.packetsLost,ee.stat.framesReceived=J.framesReceived,ee.stat.framesDecoded=J.framesDecoded,J.jitterBufferDelay&&(ee.stat.jitterBufferDelay=Math.floor(J.jitterBufferDelay/J.jitterBufferEmittedCount*1e3)),c.video.p2pDelay=ee.stat.end2EndDelay)}J.jitterBufferDelay&&(MA?(c.audio.totalJitter=J.jitterBufferDelay,c.audio.totalJitterCount=J.jitterBufferEmittedCount,c.audio.estimatedPlayoutTimestamp=J.estimatedPlayoutTimestamp):J.ssrc===C.video&&y.hasVideo?(c.video.totalJitter=J.jitterBufferDelay,c.video.totalJitterCount=J.jitterBufferEmittedCount,c.video.estimatedPlayoutTimestamp=J.estimatedPlayoutTimestamp):J.ssrc===C.auxiliary&&y.hasAuxiliary&&(c.auxiliary.totalJitter=J.jitterBufferDelay,c.auxiliary.totalJitterCount=J.jitterBufferEmittedCount))}else J.type==="candidate-pair"&&BM(J)&&(this.totalBytesReceived=J.bytesReceived,bn(J.currentRoundTripTime)&&(c.rtt=Math.floor(1e3*J.currentRoundTripTime)));Ye(J.frameWidth)||((J.trackIdentifier===A.getMainStreamVideoTrackId()||J.ssrc===C.video)&&(c.video.frameWidth=J.frameWidth,c.video.frameHeight=J.frameHeight,A.remoteVideoTrack.stat.frameWidth=J.frameWidth,A.remoteVideoTrack.stat.frameHeight=J.frameHeight),(J.trackIdentifier===A.getAuxStreamVideoTrackId()||J.ssrc===C.auxiliary)&&(c.auxiliary.frameWidth=J.frameWidth,c.auxiliary.frameHeight=J.frameHeight,A.remoteAuxiliaryTrack.stat.frameWidth=J.frameWidth,A.remoteAuxiliaryTrack.stat.frameHeight=J.frameHeight)),!Ye(J.audioLevel)&&A.muteState.audioAvailable&&A.remoteAudioTrack.mediaTrack&&J.trackIdentifier===A.remoteAudioTrack.mediaTrack.id&&(c.audio.audioLevel=J.audioLevel||0,c.audio.totalAudioEnergy=J.totalAudioEnergy||0)}),c.audio.audioLevel===0&&A.muteState.audioAvailable&&(c.audio.audioLevel=A.remoteAudioTrack.getInternalAudioLevel()||0),this.totalBytesReceived||(this.totalBytesReceived+=c.audio.bytesReceived+c.video.bytesReceived+c.auxiliary.bytesReceived),Ye((e=A.remoteVideoTrack.player.stat)==null?void 0:e.fps)||(c.video.fpsRender=A.remoteVideoTrack.player.stat.fps),Ye((o=A.remoteAuxiliaryTrack.player.stat)==null?void 0:o.fps)||(c.auxiliary.fpsRender=A.remoteAuxiliaryTrack.player.stat.fps);let b=c.audio.estimatedPlayoutTimestamp,V=c.video.estimatedPlayoutTimestamp;if(b&&V&&A.remoteAudioTrack.isAvailable&&A.remoteVideoTrack.isAvailable){let J=V-b;Math.abs(J)<=1e4&&(c.avSyncDelay=J,Math.abs(J)>150&&this._log.warn("av sync delay",J))}}catch(C){this._log.warn("failed to getStats on receiver connection ".concat(C))}return c.rtt===0&&(c.rtt=((a=this.room.networkQuality)==null?void 0:a.uplinkRTT)||0),c})}getStats(A,e){return KA(this,null,function*(){let o,a={},c=[];if(this.room.singlePC){let d=this.room.singlePC.getPeerConnection();if(!d)return{senderStats:a,receiverStats:c};let C=bo(),y=yield d.getStats(),S=bo();S-C>2e3&&this._log.warn("getStats cost ".concat(S-C,"ms"));let b=[],V=new Set(["inbound-rtp","outbound-rtp","track","candidate-pair","media-source","codec","media-playout"]);y.forEach(J=>V.has(J.type)&&b.push(J)),this._spcStats=b}A&&(a=yield this.getSenderStats(A));for(let[d,C]of e){let y=yield this.getReceiverStats(C);y&&c.push(y)}return e.size&&(o=this.getMediaPlayoutStats(this._spcStats)),{senderStats:a,receiverStats:c,mediaPlayoutStats:o}})}getDifferenceValue(A,e){if(Wp(A))return e;let o=e-A;return o<0?0:o}prepareReport(A){let{stats:e,report:o,freezeMap:a,uplinkConnection:c}=A;var d,C,y,S,b,V,J,gA,CA;if(!Wp(e.senderStats)){let Ge={uint32_audio_level:e.senderStats.audio.audioLevel*WE,uint32_audio_energy:1e6*(e.senderStats.audio.totalAudioEnergy||0),uint32_audio_codec_bitrate:e.senderStats.audio.bytesSent};e.senderStats.audio.micAudioLevel&&(Ge.uint32_mic_audio_level=e.senderStats.audio.micAudioLevel*WE),Ye(e.senderStats.audio.audioCaptureEnergyAfter3a)||(Ge.uint32_audio_capture_energy_after3a=e.senderStats.audio.audioCaptureEnergyAfter3a*WE),e.senderStats.audio.totalSamplesDuration&&(o.msg_device_info.uint32_audio_capture_cost=e.senderStats.audio.totalSamplesDuration);let dt=[];if(e.senderStats.video.bytesSent){let yi={uint32_video_stream_type:2,uint32_video_codec_fps:e.senderStats.video.framesSent,uint32_video_capture_fps:e.senderStats.video.fpsCapture,uint32_video_width:e.senderStats.video.frameWidth,uint32_video_height:e.senderStats.video.frameHeight,uint32_video_codec_bitrate:e.senderStats.video.bytesSent,uint32_video_enc_fps:e.senderStats.video.framesEncoded,uint32_key_frame_count:e.senderStats.video.keyFramesEncoded,uint32_nack_count:e.senderStats.video.nackCount,uint32_pli_count:e.senderStats.video.pliCount,uint32_encode_cost:1e3*(e.senderStats.video.totalEncodeTime||0),uint32_send_packet_cost:1e3*(e.senderStats.video.totalPacketSendDelay||0),uint32_video_arq_packets:e.senderStats.video.retransmittedPacketsSent};dt.push(yi)}if(e.senderStats.small.bytesSent){let yi={uint32_video_stream_type:3,uint32_video_codec_fps:e.senderStats.small.framesSent||0,uint32_video_capture_fps:e.senderStats.small.fpsCapture||0,uint32_video_width:e.senderStats.small.frameWidth||0,uint32_video_height:e.senderStats.small.frameHeight||0,uint32_video_codec_bitrate:e.senderStats.small.bytesSent,uint32_video_enc_fps:e.senderStats.small.framesEncoded||0,uint32_key_frame_count:e.senderStats.small.keyFramesEncoded,uint32_nack_count:e.senderStats.small.nackCount,uint32_pli_count:e.senderStats.small.pliCount,uint32_encode_cost:1e3*(e.senderStats.small.totalEncodeTime||0),uint32_send_packet_cost:1e3*(e.senderStats.small.totalPacketSendDelay||0),uint32_video_arq_packets:e.senderStats.small.retransmittedPacketsSent};dt.push(yi)}if(e.senderStats.auxiliary.bytesSent){let yi={uint32_video_stream_type:7,uint32_video_codec_fps:e.senderStats.auxiliary.framesSent||0,uint32_video_capture_fps:e.senderStats.auxiliary.fpsCapture||0,uint32_video_width:e.senderStats.auxiliary.frameWidth||0,uint32_video_height:e.senderStats.auxiliary.frameHeight||0,uint32_video_codec_bitrate:e.senderStats.auxiliary.bytesSent,uint32_video_enc_fps:e.senderStats.auxiliary.framesEncoded||0,uint32_key_frame_count:e.senderStats.auxiliary.keyFramesEncoded,uint32_nack_count:e.senderStats.auxiliary.nackCount,uint32_pli_count:e.senderStats.auxiliary.pliCount,uint32_encode_cost:1e3*(e.senderStats.auxiliary.totalEncodeTime||0),uint32_send_packet_cost:1e3*(e.senderStats.auxiliary.totalPacketSendDelay||0),uint32_video_arq_packets:e.senderStats.auxiliary.retransmittedPacketsSent};dt.push(yi)}let Ci={uint32_bitrate:0,uint32_lost:0,uint32_rtt:e.senderStats.rtt};o.msg_up_stream_info={msg_audio_status:Ge,msg_video_status:dt,msg_network_status:Ci}}let{statInterval:MA}=this;o.msg_down_stream_info=[],e.receiverStats.forEach(Ge=>{let dt={msg_user_info:{str_identifier:Ge.userId,uint64_tinyid:Ge.tinyId},msg_network_status:{uint32_rtt:Ge.rtt,uint32_bitrate:0,uint32_lost:0},msg_audio_status:{},msg_video_status:[]};if(Ge.hasAudio){let Ci={uint32_audio_p2p_delay:Ge.audio.p2pDelay,uint32_audio_cache_ms:Ge.audio.totalJitter,uint32_audio_cache_ms_count:Ge.audio.totalJitterCount,uint32_audio_codec_bitrate:Ge.audio.bytesReceived,uint32_audio_total_bitrate:Ge.audio.bytesReceived,uint32_audio_level:1e8*Ge.audio.audioLevel,uint32_audio_energy:1e6*Ge.audio.totalAudioEnergy,uint32_audio_receive:Ge.audio.packetsReceived,uint32_audio_origin_lost:Ge.audio.packetsLost};dt.msg_audio_status=Ci}if(Ge.hasVideo){let Ci=a.get("".concat(Ge.userId,"_").concat(jw)),yi=Ci?Ci.duration:0,Yo={uint32_video_stream_type:Ge.isSmallSubscribed?3:2,uint32_video_receive_fps:Ge.video.framesReceived,uint32_video_width:Ge.video.frameWidth,uint32_video_height:Ge.video.frameHeight,uint32_video_codec_bitrate:Ge.video.bytesReceived,uint32_video_receive:Ge.video.packetsReceived,uint32_video_origin_lost:Ge.video.packetsLost,uint32_video_block_time:yi,uint32_video_dec_fps:Ge.video.framesDecoded,uint32_video_codec_fps:Ge.video.fpsRender,uint32_video_cache_ms:Ge.video.totalJitter,uint32_video_cache_ms_count:Ge.video.totalJitterCount,uint32_video_p2p_delay:Ge.video.p2pDelay,uint32_video_codec:Ge.video.codec,int32_video_audio_relative_delay:Ge.avSyncDelay+5e3};dt.msg_video_status.push(Yo)}if(Ge.hasAuxiliary){let Ci=a.get("".concat(Ge.userId,"_").concat(ab)),yi=Ci?Ci.duration:0,Yo={uint32_video_stream_type:7,uint32_video_receive_fps:Ge.auxiliary.framesReceived,uint32_video_width:Ge.auxiliary.frameWidth,uint32_video_height:Ge.auxiliary.frameHeight,uint32_video_codec_bitrate:Ge.auxiliary.bytesReceived,uint32_video_receive:Ge.auxiliary.packetsReceived+Ge.auxiliary.packetsLost,uint32_video_origin_lost:Ge.auxiliary.packetsLost,uint32_video_block_time:yi,uint32_video_dec_fps:Ge.auxiliary.framesDecoded,uint32_video_codec_fps:Ge.video.fpsRender,uint32_video_cache_ms:Ge.auxiliary.totalJitter,uint32_video_cache_ms_count:Ge.auxiliary.totalJitterCount,uint32_video_p2p_delay:Ge.auxiliary.p2pDelay,uint32_video_codec:Ge.video.codec};dt.msg_video_status.push(Yo)}o.msg_down_stream_info.push(dt)}),e.mediaPlayoutStats&&!Wp(e.mediaPlayoutStats)&&(e.mediaPlayoutStats.synthesizedSamplesDuration*=1e3,e.mediaPlayoutStats.totalSamplesDuration*=1e3);let ee=this._prevReport,Be=this._prevStats;if(this._prevReport=JSON.parse(JSON.stringify(o)),this._prevStats=JSON.parse(JSON.stringify(e)),o.msg_up_stream_info.msg_audio_status&&ee.msg_up_stream_info.msg_audio_status){let Ge=ee.msg_up_stream_info.msg_audio_status,dt=o.msg_up_stream_info.msg_audio_status;if(Ge.uint32_audio_codec_bitrate===0)dt.uint32_audio_codec_bitrate=0;else{let Ci=this.getDifferenceValue(Ge.uint32_audio_codec_bitrate,dt.uint32_audio_codec_bitrate);dt.uint32_audio_codec_bitrate=Math.round(8*Ci/MA),o.msg_up_stream_info.msg_network_status.uint32_bitrate+=dt.uint32_audio_codec_bitrate}(d=ee.msg_device_info)!=null&&d.uint32_audio_capture_cost?(o.msg_device_info.uint32_audio_capture_cost=2*Math.floor(1e3*this.getDifferenceValue(ee.msg_device_info.uint32_audio_capture_cost,o.msg_device_info.uint32_audio_capture_cost)/MA),o.msg_device_info.uint32_audio_capture_cost>0&&((y=c?.localMainAudioTrack)==null||y.updateAfter3aSilenceStartTime((C=e.senderStats.audio.audioCaptureEnergyAfter3a)!=null?C:e.senderStats.audio.micAudioLevel))):delete o.msg_device_info.uint32_audio_capture_cost}let Pe=ee.msg_up_stream_info.msg_video_status;o.msg_up_stream_info.msg_video_status.forEach(Ge=>{let dt=Pe.find(Qn=>Qn.uint32_video_stream_type===Ge.uint32_video_stream_type);if(!dt||dt.uint32_video_codec_bitrate===0)return Ge.uint32_video_codec_bitrate=0,Ge.uint32_video_enc_fps=0,void(Ge.uint32_video_codec_fps=0);let Ci=0,yi=0,Yo=0;dt&&Ge.uint32_video_codec_bitrate>=dt.uint32_video_codec_bitrate&&(Ci=dt.uint32_video_codec_bitrate,yi=dt.uint32_video_enc_fps,Yo=dt.uint32_video_codec_fps);let Vo=this.getDifferenceValue(Ci,Ge.uint32_video_codec_bitrate);Ge.uint32_video_codec_bitrate=Math.round(8*Vo/MA),o.msg_up_stream_info.msg_network_status.uint32_bitrate+=Ge.uint32_video_codec_bitrate,Ge.uint32_video_enc_fps=Math.round(this.getDifferenceValue(yi,Ge.uint32_video_enc_fps)/MA),Ge.uint32_video_codec_fps=Math.round(this.getDifferenceValue(Yo,Ge.uint32_video_codec_fps)/MA),dt.uint32_video_width===0&&dt.uint32_video_height===0&&dt.uint32_video_codec_fps===0&&(Ge.uint32_video_codec_fps=Ge.uint32_video_enc_fps),Ye(dt.uint32_key_frame_count)||(Ge.uint32_key_frame_count=Math.round(this.getDifferenceValue(dt.uint32_key_frame_count,Ge.uint32_key_frame_count))),Ye(dt.uint32_nack_count)||(Ge.uint32_nack_count=Math.round(this.getDifferenceValue(dt.uint32_nack_count,Ge.uint32_nack_count))),Ye(dt.uint32_pli_count)||(Ge.uint32_pli_count=Math.round(this.getDifferenceValue(dt.uint32_pli_count,Ge.uint32_pli_count))),Ye(dt.uint32_video_arq_packets)||(Ge.uint32_video_arq_packets=Math.round(this.getDifferenceValue(dt.uint32_video_arq_packets,Ge.uint32_video_arq_packets))),Ye(dt.uint32_encode_cost)||(Ge.uint32_encode_cost=Math.round(this.getDifferenceValue(dt.uint32_encode_cost,Ge.uint32_encode_cost)/MA)),Ye(dt.uint32_send_packet_cost)||(Ge.uint32_send_packet_cost=Math.round(this.getDifferenceValue(dt.uint32_send_packet_cost,Ge.uint32_send_packet_cost)/MA))});let Me=ee.msg_down_stream_info;o.msg_down_stream_info=o.msg_down_stream_info.filter(Ge=>Me.find(dt=>dt.msg_user_info.uint64_tinyid===Ge.msg_user_info.uint64_tinyid));let fi=o.msg_down_stream_info;if(fi.forEach(Ge=>{let dt=Me.find(Ci=>Ci.msg_user_info.uint64_tinyid===Ge.msg_user_info.uint64_tinyid);if(Wp(Ge.msg_audio_status)||Wp(dt.msg_audio_status))Ge.msg_audio_status={};else{let Ci=Ge.msg_audio_status,yi=dt.msg_audio_status,Yo=this.getDifferenceValue(yi.uint32_audio_cache_ms_count,Ci.uint32_audio_cache_ms_count);delete Ci.uint32_audio_cache_ms_count,Ci.uint32_audio_cache_ms=Math.floor(1e3*this.getDifferenceValue(yi.uint32_audio_cache_ms,Ci.uint32_audio_cache_ms)/Yo)||0;let Vo=this.room.remotePublishedUserMap.get(Ge.msg_user_info.str_identifier);Vo&&(Vo.remoteAudioTrack.stat.jitterBufferDelay=Ci.uint32_audio_cache_ms),Ci.uint32_audio_origin_lost=this.getDifferenceValue(yi.uint32_audio_origin_lost,Ci.uint32_audio_origin_lost),Ci.uint32_audio_receive=this.getDifferenceValue(yi.uint32_audio_receive,Ci.uint32_audio_receive),Ci.uint32_audio_receive+=Ci.uint32_audio_origin_lost;let Qn=this.getDifferenceValue(yi.uint32_audio_codec_bitrate,Ci.uint32_audio_codec_bitrate);Ci.uint32_audio_codec_bitrate=Math.round(8*Qn/MA),Ci.uint32_audio_total_bitrate=Math.round(8*Qn/MA)}if(Ge.msg_video_status&&dt.msg_video_status){let Ci=dt.msg_video_status;Ge.msg_video_status=Ge.msg_video_status.filter(yi=>Ci.find(Yo=>Yo.uint32_video_stream_type===yi.uint32_video_stream_type)),Ge.msg_video_status.forEach(yi=>{let Yo=Ci.find(r_=>r_.uint32_video_stream_type===yi.uint32_video_stream_type),Vo=Yo.uint32_video_receive,Qn=Yo.uint32_video_origin_lost,Jo=Yo.uint32_video_codec_bitrate,Ns=Yo.uint32_video_receive_fps,pg=Yo.uint32_video_dec_fps;yi.uint32_video_origin_lost=this.getDifferenceValue(Qn,yi.uint32_video_origin_lost),yi.uint32_video_receive=this.getDifferenceValue(Vo,yi.uint32_video_receive)+yi.uint32_video_origin_lost;let ma=this.getDifferenceValue(Jo,yi.uint32_video_codec_bitrate);yi.uint32_video_codec_bitrate=Math.round(8*ma/MA);let Iu=this.getDifferenceValue(Ns,yi.uint32_video_receive_fps);yi.uint32_video_receive_fps=Math.round(Iu/MA),yi.uint32_video_dec_fps=Math.round(this.getDifferenceValue(pg,yi.uint32_video_dec_fps)/MA);let Xk=this.getDifferenceValue(Yo.uint32_video_cache_ms_count,yi.uint32_video_cache_ms_count);delete yi.uint32_video_cache_ms_count,yi.uint32_video_cache_ms=Math.floor(1e3*this.getDifferenceValue(Yo.uint32_video_cache_ms,yi.uint32_video_cache_ms)/Xk)||0})}}),!Ye((S=Be?.mediaPlayoutStats)==null?void 0:S.totalSamplesDuration)&&!Ye((b=e.mediaPlayoutStats)==null?void 0:b.totalSamplesDuration)){let Ge=2*Math.floor(this.getDifferenceValue((V=Be?.mediaPlayoutStats)==null?void 0:V.synthesizedSamplesDuration,(J=e.mediaPlayoutStats)==null?void 0:J.synthesizedSamplesDuration)/MA),dt=2*Math.floor(this.getDifferenceValue((gA=Be?.mediaPlayoutStats)==null?void 0:gA.totalSamplesDuration,(CA=e.mediaPlayoutStats)==null?void 0:CA.totalSamplesDuration)/MA);o.msg_device_info.uint32_audio_play_cost=dt-Ge}return Be&&e.receiverStats.forEach(Ge=>{if(Ge.audio.concealedSamples&&Ge.audio.totalSamplesReceived){let dt=Be.receiverStats.find(Ci=>Ci.userId===Ge.userId);if(dt&&dt.audio.concealedSamples&&dt.audio.totalSamplesReceived){let Ci=(Ge.audio.silentConcealedSamples||0)-(dt.audio.silentConcealedSamples||0),yi=Ge.audio.concealedSamples-dt.audio.concealedSamples,Yo=Ge.audio.totalSamplesReceived-dt.audio.totalSamplesReceived,Vo=Math.floor((yi-Ci)/Yo*1e3*MA);if(Vo>1e3*MA/5){let Qn=fi.find(Jo=>Jo.msg_user_info.str_identifier===Ge.userId);Qn&&(Qn.msg_audio_status.uint32_audio_block_time=Vo)}}}}),o.msg_down_stream_info.forEach(Ge=>{Ge.msg_video_status.forEach(dt=>{dt.uint32_video_codec_bitrate===0&&dt.uint32_video_receive_fps===0&&(dt.uint32_video_width=0,dt.uint32_video_height=0)})}),o}getStatsReport(A){return KA(this,arguments,function(e){var o=this;let{uplinkConnection:a,downlinkConnections:c,freezeMap:d}=e;return function*(){let C={msg_device_info:{},msg_up_stream_info:{msg_audio_status:{uint32_audio_format:11,uint32_audio_sample_rate:0,uint32_audio_codec_bitrate:0,uint32_audio_receive:0,uint32_audio_origin_lost:0,uint32_audio_level:0,uint32_audio_energy:0,uint32_audio_capture_energy_after3a:0},msg_video_status:[],msg_network_status:{uint32_bitrate:0,uint32_rtt:0,uint32_lost:0}},msg_down_stream_info:[{msg_user_info:{str_identifier:"",uint64_tinyid:0},msg_audio_status:{uint32_audio_cache_ms:0,uint32_audio_format:11,uint32_audio_sample_rate:0,uint32_audio_codec_bitrate:0,uint32_audio_total_bitrate:0,uint32_audio_level:0,uint32_audio_energy:0,uint32_audio_receive:0,uint32_audio_origin_lost:0,uint32_audio_final_lost:0},msg_video_status:[{uint32_video_cache_ms:0,uint32_video_stream_type:0,uint32_video_receive_fps:0,uint32_video_width:0,uint32_video_height:0,uint32_video_codec_bitrate:0,uint32_video_receive:0,uint32_video_origin_lost:0,uint32_video_block_time:0,uint32_video_dec_fps:0,uint32_video_codec_fps:0}],msg_network_status:{uint32_bitrate:0,uint32_rtt:0,uint32_lost:0}}]},y=yield o.getStats(a,c);return JSON.stringify(o._prevReport)==="{}"&&(o._prevReport=JSON.parse(JSON.stringify(C))),o.prepareReport({stats:y,report:C,freezeMap:d,uplinkConnection:a}),o._prevReportTime=Date.now(),C}()})}getMediaPlayoutStats(A){let e;if(Ra(A)){for(let o of A)if(o.type==="media-playout"){let{synthesizedSamplesDuration:a,totalSamplesDuration:c}=o;e={synthesizedSamplesDuration:a,totalSamplesDuration:c};break}return e}}reset(){this._prevReportTime=0,this._prevReport={},this._prevEncoderImplementation="",this._prevQualityLimitationReason="",this._prevDecoderImplementationMap=new Map,[this.room.localMainVideoTrack,this.room.capturedLocalMainVideoTrack,this.room.localAuxVideoTrack,this.room.capturedLocalAuxVideoTrack].forEach(A=>{A!=null&&A.stat&&(A.stat.framesCaptured=0)})}},QiA=gc(Hl());function piA(A){return new Promise(e=>KA(null,null,function*(){let o=setTimeout(()=>{e({totalCost:1e4,local:0,dns:0,tcp:0,tls:0,request:0,response:0})},1e4),a=Date.now(),c="https://".concat(A,"/?t=").concat(a);try{yield fetch(c)}catch{}clearTimeout(o);let d=function(C){let y={totalCost:0,local:0,redirect:0,httpCache:0,dns:0,tcp:0,tls:0,request:0,response:0};try{let S=performance.getEntriesByType("resource").reverse();for(let b of S)if(b.name===C){let V=Math.round(b.duration),J=Math.max(Math.round(b.domainLookupStart-b.startTime),0),gA=b.redirectStart>0?Math.max(Math.round(b.redirectEnd-b.redirectStart),0):0,CA=b.fetchStart>0?Math.max(Math.round(b.domainLookupStart-b.fetchStart),0):0,MA=Math.round(b.domainLookupEnd-b.domainLookupStart),ee=Math.round(b.requestStart-b.secureConnectionStart),Be=Math.round(b.secureConnectionStart-b.connectStart),Pe=Math.round(b.responseStart-b.requestStart),Me=Math.round(b.responseEnd-(b.responseStart||b.startTime));y=Bo(pi({},y),{totalCost:V,local:J,redirect:gA,httpCache:CA,dns:MA,tcp:Be,tls:ee,request:Pe,response:Me});break}}catch{}return y}(c);d.totalCost===0&&(d.totalCost=Date.now()-a),e(d)}))}var t1=class h_ extends QiA.default{constructor(e){let{signalChannel:o,room:a}=e;super(),Y(this,"_room"),Y(this,"_signalChannel"),Y(this,"_log"),Y(this,"uplinkRTT",0),Y(this,"uplinkLoss",0),Y(this,"downlinkRTT",0),Y(this,"downlinkLoss",0),Y(this,"pingResults",{}),Y(this,"_downlinkPrevStatMap",new Map),Y(this,"_downlinkLossAndRTTMap",new Map),Y(this,"_interval",-1),Y(this,"_uplinkNetworkQuality",0),Y(this,"_downlinkNetworkQuality",0),Y(this,"_uplinkQualityHistory",[]),Y(this,"_downlinkQualityHistory",[]),this._room=a,this._signalChannel=o,this._log=QA.createLogger({parent:a.getLogger(),id:"q",userId:this._room.userId,sdkAppId:this._room.sdkAppId}),this.initialize()}get uplinkNetworkQuality(){return this._uplinkNetworkQuality}set uplinkNetworkQuality(e){e!==this._uplinkNetworkQuality&&this._log.info("uplink ".concat(this.uplinkNetworkQuality," -> ").concat(e,", rtt: ").concat(this.uplinkRTT,", loss: ").concat(this.uplinkLoss," ws-rtt: ").concat(this._signalChannel.rtt)),this._uplinkNetworkQuality=e,this._uplinkQualityHistory.push(e),this._uplinkQualityHistory.length>h_.HISTORY_SIZE&&this._uplinkQualityHistory.shift()}get downlinkNetworkQuality(){return this._downlinkNetworkQuality}set downlinkNetworkQuality(e){if(e!==this._downlinkNetworkQuality){let{rtt:o,loss:a}=this.getAverageLossAndRTT([...this._downlinkLossAndRTTMap.values()]);this._log.info("downlink ".concat(this.downlinkNetworkQuality," -> ").concat(e,", rtt: ").concat(o,", loss: ").concat(a," ws-rtt: ").concat(this._signalChannel.rtt))}this._downlinkNetworkQuality=e,this._downlinkQualityHistory.push(e),this._downlinkQualityHistory.length>h_.HISTORY_SIZE&&this._downlinkQualityHistory.shift()}initialize(){this._signalChannel.on(ls.UPLINK_NETWORK_STATS,e=>{this.handleUplinkNetworkQuality(e)}),this._signalChannel.on(UK,this.handleSignalConnectionStateChange.bind(this)),this.start()}handleUplinkNetworkQuality(e){var o,a;if(e.data.code!==0)return;let c=e.data.data;if(c.delay&&this.updateDelay(c.delay),this._room.signalChannel&&c.wsRtt&&(this._room.signalChannel.rtt=c.wsRtt),!this._room.uplinkConnection)return this.uplinkNetworkQuality=0,this.uplinkLoss=0,void(this.uplinkRTT=0);let d=(a=(o=this._room)==null?void 0:o.uplinkConnection)==null?void 0:a.getPeerConnection();if(d&&this.isPeerConnectionDisconnected(d))return this.uplinkNetworkQuality=6,this.uplinkLoss=0,void(this.uplinkRTT=0);let C=c.expectAudPkg+c.expectVidPkg,y=c.recvAudPkg+c.recvVidPkg,S=C-y;C===0&&y===0||(this.uplinkLoss=S<=0?0:Math.round(S/C*100),this.uplinkRTT=c.rtt,this.uplinkNetworkQuality=this.getNetworkQuality(this.uplinkLoss,this.uplinkRTT))}handleDownlinkNetworkQuality(){return KA(this,null,function*(){if(this._room.remotePublishedUserMap.size===0)return void(this.downlinkNetworkQuality=0);let e=[...this._room.remotePublishedUserMap.values()],o=new Set,a=e.filter(y=>{let S=y.getPeerConnection();return!(!S||o.has(S))&&(o.add(S),!0)}),c=a.filter(y=>{var S;return((S=y.getPeerConnection())==null?void 0:S.connectionState)===Eo.CONNECTED});if(a.filter(y=>this.isPeerConnectionDisconnected(y.getPeerConnection())).length===e.length)return void(this.downlinkNetworkQuality=6);for(let y=0;y{this.isPeerConnectionDisconnected(y)&&(this._downlinkPrevStatMap.delete(y),this._downlinkLossAndRTTMap.delete(y))}),this._downlinkLossAndRTTMap.size===0)return this.downlinkRTT=0,this.downlinkLoss=0,void(this.downlinkNetworkQuality=0);let{rtt:d,loss:C}=this.getAverageLossAndRTT([...this._downlinkLossAndRTTMap.values()]);this.downlinkRTT=d,this.downlinkLoss=C,this.downlinkNetworkQuality=this.getNetworkQuality(C,d)})}getStat(e){return KA(this,null,function*(){let o={rtt:0,totalPacketsLost:0,totalPacketsReceived:0};if(!e||!cy())return o;let a=e.getReceivers();try{for(let c=0;c{d.type==="candidate-pair"&&bn(d.currentRoundTripTime)&&(o.rtt=Math.round(1e3*d.currentRoundTripTime)),d.type==="inbound-rtp"&&(d.mediaType===YA.AUDIO||d.mediaType===YA.VIDEO)&&(o.totalPacketsLost+=d.packetsLost,o.totalPacketsReceived+=d.packetsReceived)});return o.rtt===0&&(o.rtt=this.uplinkRTT),o}catch{return o}})}getAverageLossAndRTT(e){let o={rtt:0,loss:0};return Array.isArray(e)&&e.length>0&&(e.forEach(a=>{o.rtt+=a.rtt,o.loss+=a.loss}),Object.keys(o).forEach(a=>{o[a]=Math.round(o[a]/e.length)})),o}getNetworkQuality(e,o){return e>50||o>500?5:e>30||o>350?4:e>20||o>200?3:e>10||o>100?2:e>=0||o>=0?1:0}handleSignalConnectionStateChange(e){e.state==="DISCONNECTED"?(this.uplinkRTT=0,this.uplinkLoss=0,this.uplinkNetworkQuality=6):e.state==="CONNECTED"&&this.uplinkNetworkQuality===6&&(this.uplinkNetworkQuality=1)}handleUplinkConnectionStateChange(e){let{state:o}=e;o==="DISCONNECTED"?(this.uplinkLoss=0,this.uplinkRTT=0,this.uplinkNetworkQuality=6):o==="CONNECTED"&&this.uplinkNetworkQuality===6&&(this.uplinkNetworkQuality=5)}isPeerConnectionDisconnected(e){return!(!e||e.connectionState!==Eo.DISCONNECTED&&e.connectionState!==Eo.FAILED&&e.connectionState!==Eo.CLOSED)}setUplinkConnection(e){this._room.uplinkConnection=e,this._room.uplinkConnection?this._room.uplinkConnection.on("connection-state-changed",this.handleUplinkConnectionStateChange.bind(this)):(this.uplinkNetworkQuality=0,this.uplinkRTT=0,this.uplinkLoss=0)}start(){this._interval===-1?(this._log.debug("start network quality calculating"),this._interval=_r.run("ric",()=>{var e;this.handleDownlinkNetworkQuality();let o=[...this._downlinkLossAndRTTMap.values()];U.emit(sA.NETWORK_QUALITY,{room:this._room,uplink:{rtt:this.uplinkRTT,loss:this.uplinkLoss},downlinks:o});let a=(e=this._room.scheduleResult.config)==null?void 0:e.pingDomainInfo,c={uplinkNetworkQuality:this.uplinkNetworkQuality,downlinkNetworkQuality:this.downlinkNetworkQuality,uplinkRTT:this.uplinkRTT,uplinkLoss:this.uplinkLoss,downlinkRTT:this.downlinkRTT,downlinkLoss:this.downlinkLoss};a&&(c=Bo(pi({},c),{pingResults:this.uplinkRTT>a.rttThreshold||this.downlinkRTT>a.rttThreshold?this.pingResults:{}})),this.emit(h_.EVENT_NETWORK_QUALITY,c);let d=Date.now();if(a&&(this.uplinkRTT>a.rttThreshold||this.downlinkRTT>a.rttThreshold)&&d-h_.lastPingTime>1e3*a.interval){h_.lastPingTime=Date.now();let C=a.domain.map(y=>piA(y).then(S=>({domain:y,cost:S.totalCost})));Promise.all(C).then(y=>{this.pingResults.isPoorNetwork=y.some(S=>S.cost>700),this.pingResults.timestamp=d,this.pingResults.data=y,y.forEach(S=>{Ai.addSuccessEvent({key:521718,cost:S.cost})}),this._log.warn("All ping results: ".concat(JSON.stringify(y)))}).catch(y=>{this._log.warn("Error during pinging domains: ".concat(y))})}},{delay:2e3})):this._log.info("network quality calculating is already started")}hadRecentBadUplink(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:2;return this._uplinkQualityHistory.some(o=>o>e)}hadRecentBadDownlink(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:2;return this._downlinkQualityHistory.some(o=>o>e)}stop(){this._log.debug("stopped"),this._interval!==-1&&(_r.clearTask(this._interval),this._interval=-1),this._downlinkLossAndRTTMap.clear(),this._downlinkPrevStatMap.clear()}updateDelay(e){let{tinyIdToUserIdMap:o}=this._room;e.forEach(a=>{let{srcTinyId:c,videoDelay:d,audioDelay:C}=a,y=o.get(c);if(y){let S=this._room.remotePublishedUserMap.get(y);S?.setDelay({videoDelay:d,audioDelay:C})}})}};Y(t1,"HISTORY_SIZE",10),Y(t1,"EVENT_NETWORK_QUALITY","0"),Y(t1,"lastPingTime",0);var j5=t1,W5=class{constructor(A){Y(this,"_frameWorkType"),Y(this,"_component"),Y(this,"_language"),Y(this,"connectionType"),Y(this,"_room"),Y(this,"_signalInfo",{tinyId:void 0,clientIp:"",signalIp:"",relayIp:"",relayInnerIp:"",relayPort:0,endReportExtend:void 0,reportToken:void 0}),Y(this,"_keyPrefix"),Y(this,"_log"),Y(this,"_intervalId"),Y(this,"_firstPublishedUserList"),Y(this,"_networkQuality"),Y(this,"_basicInfo"),Y(this,"_pathJoinRoom"),Y(this,"_pathLeaveRoom"),Y(this,"_pathMainVideoMap"),Y(this,"_pathMainAudioMap"),Y(this,"_pathAuxiliaryMap"),Y(this,"_remoteStreamStatMap"),Y(this,"_localStreamStat"),Y(this,"_eventMap",new Map),Y(this,"_captureCostSum",0),Y(this,"_captureCostCount",0),Y(this,"isDestroyed",!1),this._frameWorkType=A.frameWorkType||30,this._component=A.component||0,this.connectionType=A.connectionType||1,this._language=A.language||0,this._room=A.room,this._keyPrefix="key_point",this._log=QA.createLogger({parent:this._room.getLogger(),id:"kpm",userId:this._room.userId,sdkAppId:this._room.sdkAppId}),Object.getOwnPropertyNames(this.__proto__).forEach(e=>{e.startsWith("handle")&&va(this[e])&&(this[e]=function(o){let{fn:a,context:c}=o;return function(){try{for(var d=arguments.length,C=new Array(d),y=0;yQA.error("".concat(a.name,"() error observed ").concat(b))):S}catch(S){QA.error("".concat(a.name,"() error observed ").concat(S))}}}({fn:this[e],context:this}))}),this.initData(),this.installEvents()}initData(){this._firstPublishedUserList=[],this._networkQuality={totalUplinkRTT:0,totalUplinkLoss:0,count:0,totalDownlinkRTTAndLossMap:new Map},this._basicInfo={string_sdk_version:Pd,uint32_os_type:15,string_device_name:"",string_http_user_agent:navigator.userAgent,string_os_version:"",uint32_avg_rtt:0,uint32_avg_up_loss:0,uint32_scene:this._room.scene==="live"?1:0,uint32_joining_duration:0,uint32_networkType:0,uint32_framework:this._frameWorkType,uint32_component:this._component,uint32_connection_type:this.connectionType,uint32_caller_coding_language:this._language,string_domain:location.hostname},this._pathJoinRoom={uint64_start_time:0,uint64_send_request_acc_ip_cmd_start_time:0,uint64_send_request_acc_ip_cmd_end_time:0,uint64_send_request_enter_room_cmd_start_time:0,uint64_send_request_enter_room_cmd_end_time:0,uint64_send_first_video_frame_time:0,uint64_recv_userlist_time:0,uint64_end_time:0,int32_send_request_acc_ip_cmd_ret:0,int32_send_request_enter_room_cmd_ret:0,int32_end_ret:0},this._pathLeaveRoom={uint64_start_time:0,uint64_send_request_exit_room_cmd_start_time:0,uint64_send_request_exit_room_cmd_end_time:0,uint64_end_time:0,int32_send_request_exit_room_cmd_ret:0,int32_end_ret:0},this._localStreamStat={totalVideoBitrate:0,totalVideoFPS:0,totalVideoHeight:0,totalVideoWidth:0,totalAudioLevel:0,videoCount:0,audioLevelCount:0,publishStartTime:0,statsToReport:{uint32_audio_capture_db:0,uint32_video_big_capture_fps:0,uint32_video_big_bitrate:0,uint32_video_big_resolution:0,uint32_audio_capture_thread_health_zero_cnt:0,uint32_after3a_silence_duration:0}},this._pathMainVideoMap=new Map,this._pathMainAudioMap=new Map,this._pathAuxiliaryMap=new Map,this._remoteStreamStatMap=new Map,cM().then(()=>{this._basicInfo.string_os_version=Up(),this._basicInfo.string_device_name=oQ()||this._basicInfo.string_os_version})}addEvent(A,e){return this._eventMap.set(A,e),U.on(A,e),this}installEvents(){this.handleUnload=this.handleUnload.bind(this),window.addEventListener("pagehide",this.handleUnload),this._room.once("banned",()=>this.handleLeaveSuccess({room:this._room,roomId:this._room.roomId})),this.addEvent(sA.JOIN_START,this.handleJoinStart).addEvent(sA.JOIN_SCHEDULE_SUCCESS,this.handleJoinScheduleSuccess).addEvent(sA.JOIN_SIGNAL_CONNECTION_START,this.handleSignalConnectionStart).addEvent(sA.JOIN_SIGNAL_CONNECTION_END,this.handleSignalConnectionEnd).addEvent(sA.JOIN_SEND_CMD,this.handleJoinSendCMD).addEvent(sA.JOIN_RECEIVED_CMD_RES,this.handleJoinReceivedCMDResponce).addEvent(sA.JOIN_SUCCESS,this.handleJoinSuccess).addEvent(sA.JOIN_FAILED,this.handleJoinFailed).addEvent(sA.LEAVE_START,this.handleLeaveStart).addEvent(sA.LEAVE_SUCCESS,this.handleLeaveSuccess).addEvent(sA.LEAVE_SEND_CMD,this.handleLeaveSendCMD).addEvent(sA.LOCAL_TRACK_CAPTURE_START,this.handleTrackCaptureStart).addEvent(sA.LOCAL_TRACK_CAPTURE_SUCCESS,this.handleTrackCaptureSuccess).addEvent(sA.LOCAL_TRACK_CAPTURE_FAILED,this.handleTrackCaptureFailed).addEvent(sA.PUBLISH_START,this.handlePublishStart).addEvent(sA.SEND_FIRST_VIDEO_FRAME,this.handleSendFirstVideoFrame).addEvent(sA.SUBSCRIBE_START,this.handleSubscribeStart).addEvent(sA.SUBSCRIBE_SUCCESS,this.handleSubscribed).addEvent(sA.PLAY_TRACK_START,this.handlePlayStart).addEvent(sA.VIDEO_LOADED_DATA,this.handleVideoLoadedData).addEvent(sA.PLAYER_STATE_CHANGED,A=>{let{track:e,state:o,type:a}=A;!e.isRemote||!this.hitTest(e.room)||o==="PLAYING"&&(a===YA.AUDIO?this.handleAudioPlaying(e):this.handleVideoPlaying(e))}).addEvent(sA.SWITCH_ROOM_START,this.handleSwitchRoomStart).addEvent(sA.SWITCH_ROOM_SUCCESS,this.handleSwitchRoomSuccess).addEvent(sA.SWITCH_ROOM_FAILED,this.handleSwitchRoomFailed).addEvent(sA.NETWORK_QUALITY,this.handleNetworkQuality).addEvent(sA.HEARTBEAT_REPORT,this.handleHeartbeatStats).addEvent(sA.RECEIVED_PUBLISHED_USER_LIST,this.handleReceivedPublishUserList).addEvent(sA.REMOTE_PUBLISH_STATE_CHANGED,A=>{let{room:e,prevMuteState:o,muteState:a}=A;if(!this.hitTest(e))return;let c=o.hasAudio||o.hasVideo||o.hasSmall,d=o.hasAuxiliary,C=a.hasAudio||a.hasVideo||a.hasSmall,y=a.hasAuxiliary;!c&&C&&this.handleRemoteStreamAdded(a.userId,"main"),!d&&y&&this.handleRemoteStreamAdded(a.userId,"auxiliary")}).addEvent(sA.SINGLE_CONNECTION_STAT,A=>{let{room:e,stat:o}=A;this.hitTest(e)&&(this._pathJoinRoom.int32_ice_cost=o.ice,this._pathJoinRoom.int32_dtls_cost=o.dtls,this._pathJoinRoom.int32_peer_connection_cost=o.peerConnection)})}uninstallEvents(){window.removeEventListener("pagehide",this.handleUnload),this._eventMap.forEach((A,e)=>U.off(e,A)),this._eventMap.clear()}destroy(){this.uninstallEvents(),_r.clearTask(this._intervalId),this._pathJoinRoom.uint64_start_time===0&&(this._room=null),this.isDestroyed=!0}handleUnload(){this._room.isJoined&&this.handleLeaveSuccess({room:this._room,roomId:this._room.roomId})}handleJoinStart(A){this.hitTest(A.room)&&(this._pathJoinRoom.uint64_start_time===0&&(this._pathJoinRoom.uint64_start_time=Date.now()),A.params&&(Ye(A.params.frameWorkType)||(this._frameWorkType=A.params.frameWorkType,this._basicInfo.uint32_framework=this._frameWorkType),Ye(A.params.component)||(this._component=A.params.component,this._basicInfo.uint32_component=this._component),Ye(A.params.language)||(this._language=A.params.language,this._basicInfo.uint32_caller_coding_language=this._language)))}handleJoinScheduleSuccess(A){let{room:e,detailCost:o}=A;if(this.hitTest(e)&&o){let{totalCost:a,local:c,dns:d,tcp:C,tls:y,request:S,response:b}=o;this._pathJoinRoom.int32_schedule_cost=a,this._pathJoinRoom.int32_schedule_local=c,this._pathJoinRoom.int32_schedule_dns=d,this._pathJoinRoom.int32_schedule_tcp=C,this._pathJoinRoom.int32_schedule_tls=y,this._pathJoinRoom.int32_schedule_request=S,this._pathJoinRoom.int32_schedule_response=b}}handleSignalConnectionStart(A){let{room:e}=A;this.hitTest(e)&&this._pathJoinRoom.uint64_send_request_acc_ip_cmd_start_time===0&&(this._pathJoinRoom.uint64_send_request_acc_ip_cmd_start_time=Date.now())}handleSignalConnectionEnd(A){let{room:e,error:o}=A;this.hitTest(e)&&this._pathJoinRoom.uint64_send_request_acc_ip_cmd_end_time===0&&(this._pathJoinRoom.uint64_send_request_acc_ip_cmd_end_time=Date.now(),o&&(this._pathJoinRoom.int32_send_request_acc_ip_cmd_ret=o instanceof oi?Number(o.getExtraCode()||o.getCode()):lt.UNKNOWN,this._pathJoinRoom.int32_end_ret=this._pathJoinRoom.int32_send_request_acc_ip_cmd_ret))}handleJoinSendCMD(A){this.hitTest(A.room)&&this._pathJoinRoom.uint64_send_request_enter_room_cmd_start_time===0&&(this._pathJoinRoom.uint64_send_request_enter_room_cmd_start_time=Date.now())}handleJoinReceivedCMDResponce(A){this.hitTest(A.room)&&this._pathJoinRoom.uint64_send_request_enter_room_cmd_end_time===0&&(this._pathJoinRoom.uint64_send_request_enter_room_cmd_end_time=Date.now(),this._pathJoinRoom.int32_send_request_enter_room_cmd_ret=A.code,A.code!==0&&(this._pathJoinRoom.int32_end_ret=this._pathJoinRoom.int32_send_request_enter_room_cmd_ret))}handleJoinSuccess(A){this.hitTest(A.room)&&this._pathJoinRoom.uint64_end_time===0&&(this._pathJoinRoom.uint64_end_time=Date.now(),this._pathJoinRoom.int32_end_ret=0,this._signalInfo=A.room.getSignalInfo())}handleJoinFailed(A){let{room:e,error:o}=A;this.hitTest(e)&&(this._pathJoinRoom.uint64_end_time=Date.now(),this._pathJoinRoom.int32_end_ret===0&&(this._pathJoinRoom.int32_end_ret=o.code||this._pathJoinRoom.int32_send_request_enter_room_cmd_ret||this._pathJoinRoom.int32_send_request_acc_ip_cmd_ret),setTimeout(()=>{this.report()}))}handleReceivedPublishUserList(A){this.hitTest(A.room)&&this._pathJoinRoom.uint64_recv_userlist_time===0&&(this._pathJoinRoom.uint64_recv_userlist_time=Date.now(),this._firstPublishedUserList=A.publishedUserList||[])}handleSendFirstVideoFrame(A){let{room:e}=A;this.hitTest(e)&&this._pathJoinRoom.uint64_send_first_video_frame_time===0&&this._pathJoinRoom.uint64_start_time!==0&&(this._pathJoinRoom.uint64_send_first_video_frame_time=Date.now())}handleLeaveStart(A){this.hitTest(A.room)&&(this._pathLeaveRoom.uint64_start_time=Date.now())}handleLeaveSuccess(A){var e;if(this.hitTest(A.room)&&this._pathLeaveRoom.uint64_end_time===0){if(this._pathLeaveRoom.uint64_end_time=Date.now(),this._pathJoinRoom.uint64_end_time!==0){this._basicInfo.uint32_joining_duration=this._pathLeaveRoom.uint64_end_time-this._pathJoinRoom.uint64_end_time;let o=(e=this._room.audioManager.localAudioTrack)==null?void 0:e.after3aSilenceStartTime;o&&(this._localStreamStat.statsToReport.uint32_after3a_silence_duration=bo()-o)}else this._log.warn("pathJoinRoom endTime is 0");this.report()}}handleLeaveSendCMD(A){this.hitTest(A.room)&&(this._pathLeaveRoom.uint64_send_request_exit_room_cmd_start_time=Date.now(),this._pathLeaveRoom.uint64_send_request_exit_room_cmd_end_time=Date.now())}handleSwitchRoomStart(A){if(this.hitTest(A.room)){let e=Date.now();this.report().then(()=>{this._pathJoinRoom.uint64_start_time=e,this._pathJoinRoom.uint64_send_request_enter_room_cmd_start_time=e})}}handleSwitchRoomSuccess(A){let{room:e}=A;if(this.hitTest(e)&&this._pathJoinRoom.uint64_end_time===0){let o=Date.now();this._pathJoinRoom.uint64_send_request_enter_room_cmd_end_time=o,this._pathJoinRoom.uint64_end_time=o,this._pathJoinRoom.int32_end_ret}}handleSwitchRoomFailed(A){let{room:e,error:o}=A;if(this.hitTest(e)){let a=Date.now();this._pathJoinRoom.uint64_send_request_enter_room_cmd_end_time=a,this._pathJoinRoom.uint64_end_time=a,o&&(this._pathJoinRoom.int32_end_ret=o instanceof oi?Number(o.getExtraCode()||o.getCode()):lt.UNKNOWN)}}handleRemoteStreamAdded(A,e){var o;let a="".concat(A,"_").concat(e);if(!this._remoteStreamStatMap.has(a)){let c={userId:A,totalVideoFPS:0,totalVideoBitrate:0,totalAudioLevel:0,totalAudioBitrate:0,totalLoss:0,audioCount:0,audioLevelCount:0,videoCount:0,networkQualityCount:0,streamAddedTime:Date.now(),subscribeStartTime:0,subscribedTime:0,playStreamTime:0,statsToReport:Bo(pi({},miA),{msg_user_info:new VK({userId:A,tinyId:(o=this._room.remotePublishedUserMap.get(A))==null?void 0:o.tinyId,role:20})})};c.statsToReport.uint32_stream_type=e==="main"?2:7,this._remoteStreamStatMap.set(a,c)}}handleSubscribeStart(A){let{room:e,remotePublishedUser:o,streamType:a,subscribeState:c}=A;if(!this.hitTest(e))return;let{userId:d,tinyId:C,role:y}=o,S=new VK({userId:d,tinyId:C,role:y==="anchor"?20:21}),b=Date.now(),V="".concat(d,"_").concat(a),J=this._remoteStreamStatMap.get(V);J&&J.subscribeStartTime===0&&(J.subscribeStartTime=b),a==="main"?(o.muteState.hasVideo&&(c.video||c.smallVideo)&&!this._pathMainVideoMap.has(V)&&this._pathMainVideoMap.set(V,{statsToReport:{msg_user_info:S,uint64_start_enter_time:this._pathJoinRoom.uint64_start_time,uint64_render_first_frame_time:0,uint64_combine_first_frame_time:0},userId:d,sendSubscribeCMDTime:b}),o.muteState.hasAudio&&c.audio&&!this._pathMainAudioMap.has(V)&&this._pathMainAudioMap.set(V,{statsToReport:{msg_user_info:S,uint64_start_enter_time:this._pathJoinRoom.uint64_start_time,uint64_play_first_frame_time:0},userId:d,sendSubscribeCMDTime:b})):o.muteState.hasAuxiliary&&c.auxiliary&&!this._pathAuxiliaryMap.has(V)&&this._pathAuxiliaryMap.set(V,{sendSubscribeCMDTime:b})}handleSubscribed(A){let{room:e,remotePublishedUser:o,streamType:a}=A;if(this.hitTest(e)){let c="".concat(o.userId,"_").concat(a),d=this._remoteStreamStatMap.get(c);d&&d.subscribedTime===0&&(d.subscribedTime=Date.now())}}handlePlayStart(A){let{track:e}=A;if(!e.isRemote||!this.hitTest(e.room))return;let o="".concat(e.userId,"_").concat(e.streamType),a=this._remoteStreamStatMap.get(o);a?.playStreamTime===0&&(a.playStreamTime=Date.now())}handleVideoLoadedData(A){let{track:e}=A;if(!e.isRemote||!this.hitTest(e.room))return;let o="".concat(e.userId,"_").concat(e.streamType),a=this._pathMainVideoMap.get(o);a&&a.statsToReport.uint64_combine_first_frame_time===0&&(a.statsToReport.uint64_combine_first_frame_time=Date.now())}handleVideoPlaying(A){let e="".concat(A.userId,"_").concat(A.streamType),o=Date.now(),a=this._pathMainVideoMap.get(e),c=this._remoteStreamStatMap.get(e);if(c){let{statsToReport:d}=c;if(d.uint32_video_render_first||A.streamType!=="main"?this.hasAuxFlag(A.userId):this.hasVideoFlag(A.userId)){let C=o-this._pathJoinRoom.uint64_start_time;d.uint32_video_render_first=C,Ai.addNumber({key:516820,value:C})}}a?.statsToReport.uint64_render_first_frame_time===0&&(a.statsToReport.uint64_render_first_frame_time=o)}handleAudioPlaying(A){let e="".concat(A.userId,"_").concat(A.streamType),o=this._pathMainAudioMap.get(e);o&&o.statsToReport.uint64_play_first_frame_time===0&&(o.statsToReport.uint64_play_first_frame_time=Date.now())}handleNetworkQuality(A){this.hitTest(A.room)&&(this._networkQuality.totalUplinkLoss+=A.uplink.loss,this._networkQuality.totalUplinkRTT+=A.uplink.rtt,this._networkQuality.count++,A.downlinks.forEach(e=>{let{rtt:o,loss:a,userId:c,videoDelay:d,audioDelay:C}=e,y=this._networkQuality.totalDownlinkRTTAndLossMap.get(c);if(y)y.totalRTT+=o,y.totalLoss+=a,d&&(y.totalVideoDelay=(y.totalVideoDelay||0)+d,y.videoDelayCount=(y.videoDelayCount||0)+1),C&&(y.totalAudioDelay=(y.totalAudioDelay||0)+C,y.audioDelayCount=(y.audioDelayCount||0)+1),y.count++;else{let S,b,V,J;d&&(b=d,V=1),C&&(S=C,J=1),this._networkQuality.totalDownlinkRTTAndLossMap.set(c,{totalRTT:o,totalLoss:a,count:1,totalAudioDelay:S,totalVideoDelay:b,audioDelayCount:J,videoDelayCount:V})}}))}handleHeartbeatStats(A){var e;if(this.hitTest(A.room)){let{msg_device_info:o,msg_up_stream_info:a,msg_down_stream_info:c}=A.report;if(a.msg_video_status[0]){let{uint32_video_codec_bitrate:d,uint32_video_enc_fps:C,uint32_video_width:y,uint32_video_height:S}=a.msg_video_status[0];this._localStreamStat.totalVideoBitrate+=d,this._localStreamStat.totalVideoFPS+=C,this._localStreamStat.totalVideoWidth+=y,this._localStreamStat.totalVideoHeight+=S,this._localStreamStat.videoCount++}if(a.msg_audio_status){let{uint32_audio_level:d}=a.msg_audio_status;Math.floor(d/WE*100)>0&&(this._localStreamStat.totalAudioLevel+=d/WE,this._localStreamStat.audioLevelCount++)}c.forEach(d=>{let{msg_user_info:C,msg_audio_status:y,msg_video_status:S}=d,b=C.str_identifier,V=this._room.remotePublishedUserMap.get(b);if(S.forEach(J=>{let gA=J.uint32_video_stream_type===2,CA=J.uint32_video_stream_type===7,MA="".concat(b,"_").concat(gA?"main":"auxiliary"),ee=this._remoteStreamStatMap.get(MA);if(ee&&(gA&&V!=null&&V.remoteVideoTrack.isSubscribed||CA&&V!=null&&V.remoteAuxiliaryTrack)){ee.totalVideoFPS+=J.uint32_video_receive_fps,ee.totalVideoBitrate+=J.uint32_video_codec_bitrate,ee.videoCount++,ee.statsToReport.uint32_video_width===0&&(ee.statsToReport.uint32_video_width=J.uint32_video_width),ee.statsToReport.uint32_video_height===0&&(ee.statsToReport.uint32_video_height=J.uint32_video_height);let Be=gA?V.remoteVideoTrack:V.remoteAuxiliaryTrack;Be.stat.jitterBufferDelay&&(ee.videoJitterBufferDelay=Be.stat.jitterBufferDelay),Be.stat.framesReceived&&(ee.statsToReport.uint32_video_consume_render_rate=Math.floor(Be.stat.framesDecoded/Be.stat.framesReceived*wS(10,6)))}}),!l0(y)){let J="".concat(b,"_main"),gA=this._remoteStreamStatMap.get(J);this._remoteStreamStatMap.has(J)&&gA&&V!=null&&V.remoteAudioTrack.isSubscribed&&(gA.totalAudioBitrate+=y.uint32_audio_codec_bitrate,gA.audioCount++,V.remoteAudioTrack.stat.jitterBufferDelay&&(gA.audioJitterBufferDelay=V.remoteAudioTrack.stat.jitterBufferDelay),Math.floor(y.uint32_audio_level/WE*100)>0&&(gA.totalAudioLevel+=y.uint32_audio_level/WE,gA.audioLevelCount++),y.uint32_audio_block_time&&(gA.statsToReport.uint32_audio_block_time+=y.uint32_audio_block_time))}}),o.uint32_audio_capture_cost&&(this._captureCostSum+=o.uint32_audio_capture_cost,this._captureCostCount+=1,this._captureCostCount>=100&&(this._basicInfo.uint32_audio_capture_cost=Math.floor(this._captureCostSum/this._captureCostCount),this._captureCostSum=0,this._captureCostCount=0)),o.uint32_audio_capture_cost===0&&((e=this._room.audioManager.localAudioTrack)==null?void 0:e.muted)===!1&&(this._localStreamStat.statsToReport.uint32_audio_capture_thread_health_zero_cnt+=1)}}handlePublishStart(A){let{room:e}=A;this.hitTest(e)&&this._localStreamStat.publishStartTime===0&&(this._localStreamStat.publishStartTime=Date.now())}handleTrackCaptureStart(A){let{track:e}=A;e.mediaType===1&&!this._pathJoinRoom.uint64_init_audio_start_time&&(this._pathJoinRoom.uint64_init_audio_start_time=Date.now()),e.mediaType===4&&!this._pathJoinRoom.uint64_init_camera_start_time&&(this._pathJoinRoom.uint64_init_camera_start_time=Date.now())}handleTrackCaptureSuccess(A){let{track:e}=A;e.mediaType===1&&!this._pathJoinRoom.uint64_init_audio_end_time&&(this._pathJoinRoom.int32_init_audio_ret=0,this._pathJoinRoom.uint64_init_audio_end_time=Date.now()),e.mediaType===4&&!this._pathJoinRoom.uint64_init_camera_end_time&&(this._pathJoinRoom.int32_init_camera_ret=0,this._pathJoinRoom.uint64_init_camera_end_time=Date.now())}handleTrackCaptureFailed(A){let{track:e,error:o}=A,a={NotFoundError:1,NotAllowedError:2,NotReadableError:3,OverConstrainedError:4,AbortError:5,InvalidStateError:6,SecurityError:7,TypeError:8}[o.name]||(o instanceof oi?o.getExtraCode()||o.getCode():lt.UNKNOWN);e.mediaType===1&&!this._pathJoinRoom.uint64_init_audio_end_time&&(this._pathJoinRoom.int32_init_audio_ret=a,this._pathJoinRoom.uint64_init_audio_end_time=Date.now()),e.mediaType===4&&!this._pathJoinRoom.uint64_init_camera_end_time&&(this._pathJoinRoom.int32_init_camera_ret=a,this._pathJoinRoom.uint64_init_camera_end_time=Date.now())}hasVideoFlag(A){return this._firstPublishedUserList.findIndex(e=>e.userId===A&&e.flag&bS)>=0}hasAudioFlag(A){return this._firstPublishedUserList.findIndex(e=>e.userId===A&&e.flag&LS)>=0}hasAuxFlag(A){return this._firstPublishedUserList.findIndex(e=>e.userId===A&&e.flag&kS)>=0}hitTest(A){return A===this._room}prepareReport(){if(this._captureCostCount>0&&!this._basicInfo.uint32_audio_capture_cost&&(this._basicInfo.uint32_audio_capture_cost=Math.floor(this._captureCostSum/this._captureCostCount),this._captureCostSum=0,this._captureCostCount=0),this._networkQuality.count>0&&(this._basicInfo.uint32_avg_rtt=Math.floor(this._networkQuality.totalUplinkRTT/this._networkQuality.count),this._basicInfo.uint32_avg_up_loss=Math.floor(this._networkQuality.totalUplinkLoss/this._networkQuality.count)),this._localStreamStat.videoCount>0){this._localStreamStat.statsToReport.uint32_video_big_capture_fps=Math.floor(this._localStreamStat.totalVideoFPS/this._localStreamStat.videoCount),this._localStreamStat.statsToReport.uint32_video_big_bitrate=Math.floor(this._localStreamStat.totalVideoBitrate/this._localStreamStat.videoCount);let A=Math.floor(this._localStreamStat.totalVideoWidth/this._localStreamStat.videoCount),e=Math.floor(this._localStreamStat.totalVideoHeight/this._localStreamStat.videoCount);this._localStreamStat.statsToReport.uint32_video_big_resolution=A<<16|e}this._localStreamStat.audioLevelCount>0&&(this._localStreamStat.statsToReport.uint32_audio_capture_db=Math.floor(this._localStreamStat.totalAudioLevel/this._localStreamStat.audioLevelCount*100)),this._remoteStreamStatMap.forEach((A,e)=>{let{userId:o}=A,a=this._networkQuality.totalDownlinkRTTAndLossMap.get(o);if(a){let{totalLoss:b,count:V,audioDelayCount:J,videoDelayCount:gA,totalAudioDelay:CA,totalVideoDelay:MA}=a;A.statsToReport.uint32_avg_down_loss=Math.floor(b/V),J&&CA&&(A.statsToReport.uint32_audio_network_p2p_delay=Math.floor(CA/J),A.audioJitterBufferDelay&&(A.statsToReport.uint32_p2p_delay=Math.floor(A.statsToReport.uint32_audio_network_p2p_delay+A.audioJitterBufferDelay))),gA&&MA&&(A.statsToReport.uint32_video_network_p2p_delay=Math.floor(MA/gA))}A.videoCount>0&&(A.statsToReport.uint32_video_avg_fps=Math.floor(A.totalVideoFPS/A.videoCount),A.statsToReport.uint32_video_avg_bitrate=Math.floor(A.totalVideoBitrate/A.videoCount)),A.audioCount>0&&(A.statsToReport.uint32_audio_recv_bitrate=A.statsToReport.uint32_audio_bitrate=Math.floor(A.totalAudioBitrate/A.audioCount)),A.audioLevelCount>0&&(A.statsToReport.uint32_audio_play_db=Math.floor(A.totalAudioLevel/A.audioLevelCount*100));let{callDurationCalculator:c}=this._room;c&&(A.statsToReport.uint32_audio_play_time=c.getDuration(e,YA.AUDIO),A.statsToReport.uint32_video_play_time=c.getDuration(e,YA.VIDEO)),A.statsToReport.uint32_video_render_first&&(A.statsToReport.uint32_video_render_first=Math.min(A.statsToReport.uint32_video_render_first,PM));let{badCaseDetector:d}=this._room,{dataFreeze:C,count:y}=d.getDataFreezeDuration(e),{renderFreeze:S}=d.getRenderFreezeDuration(e);A.statsToReport.uint32_video_block_count=y,A.statsToReport.uint32_video_block_time=Math.min(C,A.statsToReport.uint32_video_play_time),A.statsToReport.uint32_video_external_block_time=Math.min(S,A.statsToReport.uint32_video_play_time),A.statsToReport.uint32_audio_block_time=Math.min(A.statsToReport.uint32_audio_block_time,A.statsToReport.uint32_audio_play_time),d.isBlackStream(e)&&A.statsToReport.uint32_video_avg_fps===0?A.statsToReport.uint32_video_black_screen_subjective=1:A.statsToReport.uint32_video_black_screen_subjective=0}),this._pathMainAudioMap.forEach((A,e)=>{this.hasAudioFlag(A.userId)?A.statsToReport.uint64_play_first_frame_time-A.statsToReport.uint64_start_enter_time>PM&&(A.statsToReport.uint64_play_first_frame_time=A.statsToReport.uint64_start_enter_time+PM):this._pathMainAudioMap.delete(e)}),this._pathMainVideoMap.forEach((A,e)=>{this.hasVideoFlag(A.userId)?A.statsToReport.uint64_render_first_frame_time-A.statsToReport.uint64_start_enter_time>PM&&(A.statsToReport.uint64_render_first_frame_time=A.statsToReport.uint64_start_enter_time+PM):this._pathMainVideoMap.delete(e)}),this._pathJoinRoom.uint64_end_time-this._pathJoinRoom.uint64_start_time>PM&&(this._pathJoinRoom.uint64_end_time=this._pathJoinRoom.uint64_start_time+PM)}getReportData(){this._basicInfo.uint32_networkType=xf();let A={uint32_sdk_app_id:Number(this._room.sdkAppId),msg_user_info:new VK({userId:this._room.userId,tinyId:this._room.tinyId,role:this._room.role==="anchor"?20:21}),msg_basic_info:this._basicInfo,uint32_acc_ip:KS(this._signalInfo.relayIp),uint32_client_ip:KS(this._signalInfo.clientIp,!1),uint32_acc_port:this._signalInfo.relayPort||0,uint64_timestamp:Date.now(),uint32_seq:Math.floor(Math.random()*wS(2,31)),msg_path_enter_room:this._pathJoinRoom,msg_path_exit_room:this._pathLeaveRoom,msg_path_recv_video:[...this._pathMainVideoMap.values()].map(e=>e.statsToReport),msg_quality_statistics:[...this._remoteStreamStatMap.values()].map(e=>e.statsToReport),str_room_name:String(this._room.roomId||0),msg_path_recv_audio:[...this._pathMainAudioMap.values()].map(e=>e.statsToReport),uint32_info_client_ip:KS(this._signalInfo.clientIp,!1),error_code:[],msg_local_statistics:this._localStreamStat.statsToReport,bytes_report_buf_from_0x1:this._signalInfo.endReportExtend,str_user_sig:this._room.userSig,bytes_report_token:this._signalInfo.reportToken};return E0(A),A}report(){return KA(this,null,function*(){try{this.prepareReport();let A=this.getReportData();yield this.upload(A),this.initData()}catch(A){this._log.warn(A)}finally{this.isDestroyed&&(this._room=null)}})}upload(A){return KA(this,null,function*(){if(A.msg_path_enter_room.uint64_start_time===0)return;let e=Number(this._room.sdkAppId),o=_A.enable?ZB(A,2001,e):yield _b(A),a=o instanceof ArrayBuffer,c="".concat(Pf(e,_I.KEY_POINT),"&gzip=").concat(+a),d=!1;navigator.sendBeacon&&(d=navigator.sendBeacon(c,o));let C=[this.uploadKVStat(Ai),this.uploadKVStat(jh)];d||C.push(XB({url:c,body:o,priority:"low"})),yield Promise.all(C)})}setConnectionType(A){this.connectionType=A,this._basicInfo.uint32_connection_type=A}uploadKVStat(A){return KA(this,arguments,function(e){var o=this;let a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this._room.sdkAppId;return function*(){var c,d;let C=e.getReportData((c=o._room)==null?void 0:c.userSig,(d=o._signalInfo)==null?void 0:d.reportToken);if(C.stats_count.length===0&&C.stats_distribution.length===0)return;C.msg_sdk_basic_info=Bo(pi({},C.msg_sdk_basic_info),{bytes_device_name:o._basicInfo.string_device_name||"",bytes_os_version:o._basicInfo.string_os_version||"",uint32_framework:o._frameWorkType,uint32_network_type:o._basicInfo.uint32_networkType||0}),o._log.debug(C);let y=_A.enable?ZB(C,2003,a):yield _b(C),S=y instanceof ArrayBuffer,b="".concat(Pf(+a,_I.KV_STAT),"&gzip=").concat(+S),V=!1;navigator.sendBeacon&&(V=navigator.sendBeacon(b,y)),V||XB({url:b,body:y})}()})}};di([zh({settings:{timeout:500,retries:3}})],W5.prototype,"upload");var PM=5e3,miA={msg_user_info:null,uint32_video_avg_fps:0,uint32_video_width:0,uint32_video_height:0,uint32_video_avg_bitrate:0,uint32_video_block_time:0,uint32_video_play_time:0,uint32_audio_block_time:0,uint32_audio_play_time:0,uint32_audio_play_db:0,uint32_avg_down_loss:0,uint32_stream_type:0,uint32_video_block_count:0,uint32_audio_block_count:0,uint32_audio_bitrate:0,uint32_video_black_screen_subjective:0,uint32_audio_recv_bitrate:0,uint32_video_external_block_time:0,uint32_video_consume_render_rate:0},VK=class{constructor(A){Y(this,"str_identifier"),Y(this,"str_tinyid"),Y(this,"uint32_role"),this.str_identifier=String(A.userId),this.str_tinyid=String(A.tinyId||0),this.uint32_role=A.role}},fiA=W5,z5=class{constructor(){Y(this,"_startTime"),Y(this,"_endTime"),this._startTime=0,this._endTime=0,this.start()}start(){this._startTime===0&&(this._startTime=bo())}stop(){this._endTime===0&&(this._endTime=bo())}getDuration(){return this._endTime===0?bo()-this._startTime:this._endTime-this._startTime}get startTime(){return this._startTime}get endTime(){return this._endTime}},yiA=class{constructor(A){Y(this,"_room",null),Y(this,"_durationMap"),Y(this,"_eventMap",new Map),this._room=A.room,this._durationMap=new Map,this.installEvents()}installEvents(){this._eventMap.set(sA.REMOTE_TRACK_SUBSCRIBED,this.handleSubscribed).set(sA.REMOTE_TRACK_UNSUBSCRIBED,this.handleUnsubscribed).set(sA.REMOTE_PUBLISH_STATE_CHANGED,A=>{let{room:e,prevMuteState:o,muteState:a}=A;var c;let{userId:d}=a;if(!this.hitTest(e))return;o.hasAudio&&!a.hasAudio&&this.stopDurationItem("".concat(d,"_main"),YA.AUDIO),o.hasVideo&&!a.hasVideo&&this.stopDurationItem("".concat(d,"_main"),YA.VIDEO),o.hasAuxiliary&&!a.hasAuxiliary&&this.stopDurationItem("".concat(d,"_auxiliary"),YA.VIDEO);let C=(c=this._room)==null?void 0:c.remotePublishedUserMap.get(d);C&&(!o.hasAudio&&a.hasAudio&&C.remoteAudioTrack.isSubscribed&&this.addDuractionItem(d,YA.AUDIO,"main"),!o.hasVideo&&a.hasVideo&&C.remoteVideoTrack.isSubscribed&&this.addDuractionItem(d,YA.VIDEO,"main"),!o.hasAuxiliary&&a.hasAuxiliary&&C.remoteAuxiliaryTrack.isSubscribed&&this.addDuractionItem(d,YA.VIDEO,"auxiliary"))}),this._eventMap.forEach((A,e)=>U.on(e,A,this))}uninstallEvents(){this._eventMap.forEach((A,e)=>U.off(e,A,this)),this._eventMap.clear()}handleSubscribed(A){let{track:e}=A;if(!this.hitTest(e.room))return;let{userId:o,streamType:a,kind:c}=e;e.isSubscribed?this.addDuractionItem(o,c,a):this.stopDurationItem("".concat(o,"_").concat(a),c)}handleUnsubscribed(A){let{track:e}=A;this.hitTest(e.room)&&this.stopDurationItem("".concat(e.userId,"_").concat(e.streamType),e.kind)}isRecording(A){return A.findIndex(e=>e.endTime===0)>=0}addDuractionItem(A,e,o){let a="".concat(A,"_").concat(o),c=new z5,d=this._durationMap.get(a);d?this.isRecording(d[e])||d[e].push(c):this._durationMap.set(a,{userId:A,type:o,audio:e===YA.AUDIO?[c]:[],video:e===YA.AUDIO?[]:[c]})}stopDurationItem(A,e){if(this._durationMap.has(A)){let o=this._durationMap.get(A)[e].find(a=>a.endTime===0);o&&o.stop()}}hitTest(A){return this._room===A}getDuration(A,e){return this._durationMap.has(A)?this._durationMap.get(A)[e].reduce((o,a)=>o+a.getDuration(),0):0}getDurationMap(){return this._durationMap}reset(){this._durationMap.clear()}destroy(){this._room=null,this.uninstallEvents()}},DiA=class{constructor(){Y(this,"renderFreezeMap",new Map),Y(this,"dataFreezeMap",new Map)}get(A,e){let o=this.renderFreezeMap.get(A),a=this.dataFreezeMap.get(A);return e?e==="data"?a:o:(Bg||er)&&o&&a&&o.duration>a.duration?o:a}set(A,e,o){o==="data"?this.dataFreezeMap.set(A,e):this.renderFreezeMap.set(A,e)}clear(){this.renderFreezeMap.clear(),this.dataFreezeMap.clear()}},SiA=class{constructor(A){Y(this,"_room"),Y(this,"_renderFreezeMap",new Map),Y(this,"_isVideoPlayingEventFiredMap",new Map),Y(this,"_dataFreezeMap",new Map),Y(this,"_monitorFreezeData",new DiA),Y(this,"_eventMap",new Map),Y(this,"_videoEncodeFailedCount",0),Y(this,"_audioEncodeFailedCount",0),Y(this,"_encodeFailedThreshold",3),Y(this,"ABNORMAL_TIME_LOWER_LIMIT",3e3),Y(this,"ABNORMAL_TIME_UPPER_LIMIT",5e3),Y(this,"_videoAbnormalTimestampMap",new Map),Y(this,"_remoteVideoAbnormalTimestampMap",new Map),Y(this,"_audioAbnormalTimestampMap",new Map),Y(this,"eventListenerMap",new Map),this._room=A.room,this.installEvents()}getRenderFreezeMap(){return this._renderFreezeMap}getDataFreezeMap(){return this._dataFreezeMap}installEvents(){this._eventMap.set(sA.LEAVE_SUCCESS,A=>{let{room:e}=A;this.hitTest(e)&&this.stop()}).set(sA.PLAY_TRACK_START,this.onPlayTrackStart).set(sA.UNSUBSCRIBE_SUCCESS,A=>{let{room:e,streamType:o,remotePublishedUser:a}=A;if(!this.hitTest(e))return;let{userId:c}=a,d="".concat(c,"_").concat(o);this.stopDataFreeze({key:d,userId:c,type:o})}).set(sA.REMOTE_PUBLISH_STATE_CHANGED,A=>{let{room:e,prevMuteState:o,muteState:a}=A;if(!this.hitTest(e))return;let{userId:c}=a;if(o.hasVideo&&!a.hasVideo){let d="main",C="".concat(a.userId,"_").concat(d);this.stopDataFreeze({key:C,userId:c,type:d})}if(o.hasAuxiliary&&!a.hasAuxiliary){let d="auxiliary",C="".concat(a.userId,"_").concat(d);this.stopDataFreeze({key:C,userId:c,type:d})}}).set(sA.PLAYER_STATE_CHANGED,A=>{let{track:e,state:o,reason:a,type:c}=A;if(e.isRemote&&e.room&&this.hitTest(e.room)&&c===YA.VIDEO){if(o==="PLAYING"){let d="".concat(e.userId,"_").concat(e.streamType);this._isVideoPlayingEventFiredMap.set(d,!0)}a===YA.MUTE?this.onVideoTrackMuted(e):a===YA.UNMUTE&&this.onVideoTrackUnmuted(e)}}).set(sA.HEARTBEAT_REPORT,this.onHearBeatReport).set(sA.REMOTE_VIDEO_PLAY_START,this.onRemoteVideoPlayStart).set(sA.REMOTE_VIDEO_PLAY_FINISH,this.onRemoteVideoPlayEnd),this._eventMap.forEach((A,e)=>U.on(e,A,this))}uninstallEvents(){this._eventMap.forEach((A,e)=>U.off(e,A,this)),this._eventMap.clear()}stop(){this._renderFreezeMap.clear(),this._dataFreezeMap.clear(),this._isVideoPlayingEventFiredMap.clear()}onVideoTrackMuted(A){if(!A.isSubscribed)return;let{userId:e,streamType:o}=A,a="".concat(e,"_").concat(o),c=this._dataFreezeMap.get(a),d=new z5;c?c.durationItemList.push(d):this._dataFreezeMap.set(a,{userId:e,type:o,durationItemList:[d],isFreezing(){let C=this.durationItemList[this.durationItemList.length-1];return C&&C.endTime===0}})}onVideoTrackUnmuted(A){if(!A.isSubscribed)return;let{userId:e,streamType:o}=A,a="".concat(e,"_").concat(o);this.stopDataFreeze({key:a,userId:e,type:o})}onHearBeatReport(A){let{room:e,report:o}=A;this.hitTest(e)&&(this.localMediaTrackDetector(o),this.remoteMediaTrackDetector(o))}remoteMediaTrackDetector(A){A.msg_down_stream_info.length>0&&A.msg_down_stream_info.forEach(e=>{var o;if(e.msg_video_status.length===0)return;let a=e.msg_user_info.str_identifier,c=(o=this._room.remotePublishedUserMap.get(a))==null?void 0:o.remoteVideoTrack;e.msg_video_status.forEach(d=>{let C=bo();if(d.uint32_video_codec_bitrate!==void 0&&d.uint32_video_codec_bitrate>0&&d.uint32_video_receive_fps===0&&c!=null&&c.muted)if(this._remoteVideoAbnormalTimestampMap.has("".concat(a,"-decode"))){let y=this._remoteVideoAbnormalTimestampMap.get("".concat(a,"-decode"));y&&C-y>this.ABNORMAL_TIME_LOWER_LIMIT&&C-y=this.ABNORMAL_TIME_UPPER_LIMIT&&(sn.uploadEvent({userId:this._room.userId,log:"stat-".concat(Va.VIDEO_DECODE_RESUME_DURING_CALL)}),this._remoteVideoAbnormalTimestampMap.delete("".concat(a,"-decode")))}if(d.uint32_video_codec_bitrate!==void 0&&d.uint32_video_codec_bitrate>5e5&&d.uint32_video_dec_fps!==void 0&&d.uint32_video_dec_fps<=5)if(this._remoteVideoAbnormalTimestampMap.has("".concat(a,"-hardware"))){let y=this._remoteVideoAbnormalTimestampMap.get("".concat(a,"-hardware"));if(y&&C-y>this.ABNORMAL_TIME_LOWER_LIMIT/2&&C-y<2*this.ABNORMAL_TIME_UPPER_LIMIT){sn.uploadEvent({userId:this._room.userId,log:"stat-".concat(Va.VIDEO_HARDWARE_DECODE_FAILED)});let S=this._room.remotePublishedUserMap.get(a);if(S){let b=d.uint32_video_stream_type===2?S.remoteVideoTrack:S.remoteAuxiliaryTrack;b&&(b.log.warn("decode failed during call"),b.emit("decode-failed-during-call"))}}}else this._remoteVideoAbnormalTimestampMap.set("".concat(a,"-hardware"),C);else{let y=this._remoteVideoAbnormalTimestampMap.get("".concat(a,"-hardware"));y&&C-y>=2*this.ABNORMAL_TIME_UPPER_LIMIT&&(sn.uploadEvent({userId:this._room.userId,log:"stat-".concat(Va.VIDEO_HARDWARE_DECODE_RESUME)}),this._remoteVideoAbnormalTimestampMap.delete("".concat(a,"-hardware")))}})})}localMediaTrackDetector(A){if(A.msg_up_stream_info.msg_video_status){let e=A.msg_up_stream_info.msg_video_status,o=Array.from(this._room.localTracks).find(c=>c.kind==="video"&&!c.isScreen),a=o?.stat.bytesSent||0;if(o?.isMediaTrackActive===!1||a<=0||o!=null&&o.isUseCustomSource)return;e.forEach(c=>{let d=bo();if(c.uint32_video_stream_type===2)if(c.uint32_video_capture_fps!==0&&c.uint32_video_codec_bitrate===0&&c.uint32_video_enc_fps===0&&o!=null&&o.isPublished)if(this._videoAbnormalTimestampMap.has("local-encode")){let C=this._videoAbnormalTimestampMap.get("local-encode");C&&d-C>this.ABNORMAL_TIME_LOWER_LIMIT&&d-C=this.ABNORMAL_TIME_UPPER_LIMIT&&sn.uploadEvent({userId:this._room.userId,log:"stat-".concat(Va.VIDEO_ENCODE_RESUME_DURING_CALL)}),this._videoAbnormalTimestampMap.delete("local-encode")}})}if(A.msg_up_stream_info.msg_audio_status){let e=A.msg_up_stream_info.msg_audio_status,o=Array.from(this._room.localTracks).find(d=>d.kind==="audio"),a=o?.stat.bytesSent||0;if(o?.isMediaTrackActive===!1||a<=0||o!=null&&o.isUseCustomSource)return;let c=bo();if(e.uint32_audio_codec_bitrate===0&&o!=null&&o.isPublished)if(this._audioAbnormalTimestampMap.has("local-encode")){let d=this._audioAbnormalTimestampMap.get("local-encode");d&&c-d>this.ABNORMAL_TIME_LOWER_LIMIT&&c-d=this.ABNORMAL_TIME_UPPER_LIMIT&&sn.uploadEvent({userId:this._room.userId,log:"stat-".concat(Va.AUDIO_ENCODE_RESUME_DURING_CALL)}),this._audioAbnormalTimestampMap.delete("local-encode")}}}stopDataFreeze(A){let{key:e,userId:o,type:a}=A,c=this._dataFreezeMap.get(e);if(!c||!c.isFreezing())return;let d=c.durationItemList[c.durationItemList.length-1];d.stop();let C=d.getDuration();if(C>lb){let y=this._monitorFreezeData.get(e,"data");this._monitorFreezeData.set(e,{userId:o,type:a,duration:y?y.duration+C:C},"data")}else c.durationItemList.pop()}getTotalDuration(A){return A.reduce((e,o)=>{let a=o.getDuration();return e+Math.min(a,5e3)},0)}onPlayTrackStart(A){let{track:e}=A;if(!e.isRemote||!this.hitTest(e.room)||e.kind!==YA.VIDEO||!e.isRemotePublished)return;let o="".concat(e.userId,"_").concat(e.streamType);this._isVideoPlayingEventFiredMap.has(o)||this._isVideoPlayingEventFiredMap.set(o,!1)}getDataFreezeDuration(A){let e={dataFreeze:0,count:0},o=this._dataFreezeMap.get(A);if(o){if(o.isFreezing()){let a=o.durationItemList[o.durationItemList.length-1];a.stop(),a.getDuration(){document.hidden||(c=0)};document.addEventListener("visibilitychange",d);let C=(y,S)=>{var b;if(c){let V=e.decodeFPS,J=V>0&&V<=5?600+1e3/V:600,gA=S.presentationTime-c;if(gA>J){gA=Math.min(gA,5e3);let CA="".concat(e.userId,"_").concat(e.streamType),MA=this._monitorFreezeData.get(CA,"render");MA?MA.duration+=gA:this._monitorFreezeData.set(CA,{userId:e.userId,type:e.streamType,duration:gA},"render");let ee=this._renderFreezeMap.get(CA);ee?(ee.totalDuration+=gA,ee.count+=1):this._renderFreezeMap.set(CA,{userId:e.userId,type:e.streamType,totalDuration:gA,count:1})}}c=S.presentationTime,(b=o.element)==null||b.requestVideoFrameCallback(C)};(a=o.element)==null||a.requestVideoFrameCallback(C),this.eventListenerMap.set("".concat(e.userId,"_").concat(e.streamType),{onVisibilityChange:d})}onRemoteVideoPlayEnd(A){let{track:e,player:o}=A,a="".concat(e.userId,"_").concat(e.streamType),c=this.eventListenerMap.get(a);c&&document.removeEventListener("visibilitychange",c.onVisibilityChange)}resetMonitor(){this._monitorFreezeData.clear()}hitTest(A){return A===this._room}destroy(){this.uninstallEvents()}},MiA=gc(Hl(),1),viA=class{constructor(A,e,o,a,c){let d=arguments.length>5&&arguments[5]!==void 0?arguments[5]:1.3333333333333333;this.vbMode=A,this.faceDetectorHash=o,this.visionTaskRegistry=a,this.logger=c,Y(this,"animationState"),Y(this,"originalAspect"),Y(this,"totalOffsetX",0),Y(this,"totalOffsetY",0),Y(this,"defaultScaleRatio",.1),Y(this,"isRecovering",!1),Y(this,"boundaryY",280),Y(this,"lastActionTime",0),Y(this,"restTime",400),this.animationState={current:null,target:null,animating:!1,debounceTimer:null,startTime:0,duration:3e3,debounceTime:150,movementThreshold:30,debounceThreshold:15},this.addEvent(this.vbMode,!!this.faceDetectorHash),this.originalAspect=d||4/3,this.visionTaskRegistry.setVideo(this.faceDetectorHash,e)}addEvent(A,e,o){let a=[{key:570704,error:o??(e?void 0:11)},{key:570705,error:o??(e?void 0:22)}][A-1];a&&(e?Ai.addSuccessEvent({key:a.key}):Ai.addFailedEvent({key:a.key,error:a.error}))}actionCentering(A){let e=Date.now();if(this.animation(),!this.faceDetectorHash||e-this.lastActionTimee/2?(c=e-o-a,d=o-c):(c=o,d=0),{min:c,offset:d}}calculateTargetPosition(A,e,o,a,c,d){let C,y,S=arguments.length>6&&arguments[6]!==void 0?arguments[6]:.4,b=A+o/2,V=e+a/2,{min:J,offset:gA}=this.calculateBoundary(b,c,A,o),{min:CA,offset:MA}=this.calculateBoundary(V,d,e,a);return C=2*J+o,y=2*CA+a,C/y>this.originalAspect?(C=y*this.originalAspect,gA=b-C/2):(y=C/this.originalAspect,MA=V-y/2),o/c>S&&(gA=0,MA=0,C=c,y=d),gA=Math.max(0,Math.min(gA,c-C)),MA=Math.max(0,Math.min(MA,d-y)),{sx:gA,sy:MA,cropWidth:C,cropHeight:y,timestamp:Date.now()}}processFacePositionCrop(A,e,o){if(!this.animationState.current||!this.animationState.target){let C={sx:0,sy:0,cropWidth:e,cropHeight:o,timestamp:Date.now()};return this.animationState.current=C,void(this.animationState.target=C)}let a=this.positionDistance(this.animationState.target,A),c=this.positionDistance(this.animationState.current,A),d=this.animationState.current.cropWidth/e;a>this.animationState.debounceThreshold*d&&(clearTimeout(this.animationState.debounceTimer),this.animationState.animating=!1),!this.animationState.animating&&c>this.animationState.movementThreshold*d&&(this.animationState.target=A,this.animationState.debounceTimer=setTimeout(()=>{this.animationState.startTime=Date.now(),this.animationState.animating=!0},this.animationState.debounceTime))}processFacePositionPortrait(A){if(!this.animationState.current||!this.animationState.target)return this.animationState.current=pi({},A),void(this.animationState.target=pi({},A));let e=this.positionDistance(this.animationState.current,A),o=this.positionDistance(this.animationState.target,A);e>this.animationState.debounceThreshold&&(clearTimeout(this.animationState.debounceTimer),this.animationState.animating=!1),!this.animationState.animating&&o>this.animationState.movementThreshold&&(this.animationState.current=A,this.animationState.debounceTimer=setTimeout(()=>{this.animationState.startTime=Date.now(),this.animationState.animating=!0},this.animationState.debounceTime))}animation(){if(!this.animationState.animating)return;let A=Date.now()-this.animationState.startTime,e=Math.min(A/this.animationState.duration,1),o=a=>a<.5?2*a*a:(4-2*a)*a-1;if(this.animationState.current&&this.animationState.target){let a=(this.animationState.target.sx-this.animationState.current.sx)*o(e);this.animationState.current.sx+=a,this.totalOffsetX+=a;let c=(this.animationState.target.sy-this.animationState.current.sy)*o(e);if(this.animationState.current.sy+=c,this.totalOffsetY+=c,this.animationState.current.cropWidth+=(this.animationState.target.cropWidth-this.animationState.current.cropWidth)*o(e),this.animationState.current.cropHeight+=(this.animationState.target.cropHeight-this.animationState.current.cropHeight)*o(e),this.animationState.current.scaleRatio&&this.animationState.target.scaleRatio&&(this.animationState.current.scaleRatio+=(this.animationState.target.scaleRatio-this.animationState.current.scaleRatio)*o(e)),bn(this.animationState.current.scaleOffsetX)&&bn(this.animationState.target.scaleOffsetX)&&bn(this.animationState.current.scaleOffsetY)&&bn(this.animationState.target.scaleOffsetY)){let d=(this.animationState.target.scaleOffsetX-this.animationState.current.scaleOffsetX)*o(e);this.animationState.current.scaleOffsetX+=d;let C=(this.animationState.target.scaleOffsetY-this.animationState.current.scaleOffsetY)*o(e);this.animationState.current.scaleOffsetY+=C}}e>=1&&(this.animationState.animating=!1,this.animationState.current=this.animationState.target,this.isRecovering=!1)}positionDistance(A,e){return Math.sqrt(wS(A.sx-e.sx,2)+wS(A.sy-e.sy,2))}recoverOriginal(A,e){this.animationState.target={sx:0,sy:0,cropWidth:A,cropHeight:e,timestamp:Date.now()},this.animationState.animating=!0,this.animationState.startTime=Date.now(),this.isRecovering=!0}dualStageCropping(A,e,o,a,c,d){let C=arguments.length>6&&arguments[6]!==void 0?arguments[6]:.3;if(this.isRecovering)return;let y=this.calculateTargetPosition(o,a,c,d,A,e);this.processFacePositionCrop(y,A,e),c*d/y.cropWidth/y.cropHeight>C&&this.recoverOriginal(A,e)}movingPortrait(A,e,o,a,c,d){var C,y,S,b,V,J,gA,CA,MA,ee,Be,Pe;let Me={sx:o+c/2+this.totalOffsetX,sy:a+d/2+this.totalOffsetY,cropWidth:A,cropHeight:e,scaleRatio:(y=(C=this.animationState.current)==null?void 0:C.scaleRatio)!=null?y:1,scaleOffsetX:(b=(S=this.animationState.current)==null?void 0:S.scaleOffsetX)!=null?b:0,scaleOffsetY:(J=(V=this.animationState.current)==null?void 0:V.scaleOffsetY)!=null?J:0,timestamp:Date.now()};this.animationState.target={sx:A/2,sy:a+d/2,cropWidth:A,cropHeight:e,scaleRatio:(CA=(gA=this.animationState.target)==null?void 0:gA.scaleRatio)!=null?CA:1,scaleOffsetX:(ee=(MA=this.animationState.target)==null?void 0:MA.scaleOffsetX)!=null?ee:0,scaleOffsetY:(Pe=(Be=this.animationState.target)==null?void 0:Be.scaleOffsetY)!=null?Pe:0,timestamp:Date.now()},this.animationState.animating||(this.animationState.target.scaleRatio=Math.sqrt(c*d/A/e/this.defaultScaleRatio),this.animationState.target.scaleOffsetX=-this.animationState.target.scaleRatio/2+.5,this.animationState.target.scaleOffsetY=1-this.animationState.target.scaleRatio,(this.animationState.target.sy-this.animationState.target.scaleOffsetY*this.animationState.target.cropHeight)/this.animationState.target.scaleRatio{A.log.error(o),A.destroy(new oi({code:lt.VIDEO_MANAGER_ERROR,extraCode:6,message:"init vb node error ".concat(o.message||o)})),this.resolvePreditReady()})}init(A){return KA(this,null,function*(){var e,o,a;this.predictReady=new Promise(y=>{this.resolvePreditReady=y});let c=A.Wasm,d=this.context.ctx;if(A.color&&(this._color=A.color),A.mat4&&(this._mat4=A.mat4),A.postProcessing&&(this._postProcessing=A.postProcessing),this._enableFaceCentering=(e=A.enableFaceCentering)!=null&&e,this._enableEffectOptimization=(o=A.enableEffectOptimization)!=null&&o,this.wasm=new c.AllIn1(d),this.wasm.blurRadius=A.blurRadius||3,this.wasm.mirror=!!A.mirror,this.wasm.rotation=A.rotation||0,this.wasm.vbMode=A.bg==="blur"?1:A.bg instanceof HTMLImageElement?2:A.bg==="color"?3:0,this._onAbort=A.onAbort,A.bg||this.resolvePreditReady(),A.waterMark){let{x:y,y:S,width:b,height:V}=A.waterMark;this.wasm.setWaterMark(y,S,b,V)}if(A.beautyParams){let{beauty:y,brightness:S,ruddy:b}=A.beautyParams;this.wasm.setBeauty(y,S,b,A?.width,A?.height)}this.program=this.wasm.init(),this.useProgram(),this.setAttributes(this.positionBuffer,this.texCoordBuffer),d.uniform1i(d.getUniformLocation(this.program,"mask"),1),A.bg instanceof HTMLImageElement&&(d.uniform1i(d.getUniformLocation(this.program,"bg"),2),this._bgTexture=this.createTexture(A.bg)),A.waterMark&&(d.uniform1i(d.getUniformLocation(this.program,"waterMark"),3),this._waterMarkTexture=this.createTexture(A.waterMark.image));let C=new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]);if(this._textureMatrixLocation=d.getUniformLocation(this.program,"u_textureMatrix"),d.uniformMatrix4fv(this._textureMatrixLocation,!1,C),this._offsetMatrixLocation=d.getUniformLocation(this.program,"u_offsetMatrix"),d.uniformMatrix4fv(this._offsetMatrixLocation,!1,C),this._colorLocation=d.getUniformLocation(this.program,"u_color"),d.uniform1i(d.getUniformLocation(this.program,"lastMask"),4),this._weixin){let y=this.context.createShader(d.FRAGMENT_SHADER,`#version 300 es +`))}removeBandwidthRestriction(e){return e.replace(/b=AS:.*\r\n/,"").replace(/b=TIAS:.*\r\n/,"")}removeVideoOrientation(e){return e.replace(/urn:3gpp:video-orientation/,"")}connect(){return KA(this,null,function*(){try{yield this.exchangeSDP(),yield this.waitForPeerConnectionConnected()}catch(e){throw this.closePeerConnection(!0),this.uninstallEvents(),e}})}exchangeSDP(){return KA(this,null,function*(){try{yield this.createOffer(),this._log.info("createOffer success, sending offer to remote server"),yield this.doExchangeSDP()}catch(e){throw e}})}createOffer(){return KA(this,null,function*(){try{let e=yield this._peerConnection.createOffer(_z);yield this.setOffer(e),e.sdp&&this.updateSSRC(e.sdp)}catch(e){throw e}})}doExchangeSDP(){let e={command:fz,responseCommand:ls.PUBLISH_RESULT,data:{type:this._peerConnection.localDescription.type,sdp:this.removeVideoOrientation(this._peerConnection.localDescription.sdp),screen:this.localMainVideoTrack instanceof xM||this.localAuxVideoTrack instanceof xM,state:this._room.publishState,constraintConfig:this._mediaSettings},enableLog:!1};return this._log.debug("sending sdp offer: ".concat(e.data.sdp)),this._signalChannel.sendWaitForResponse(e).then(o=>{let{code:a,message:c,data:d}=o.data;return a===0?this.acceptAnswer(d):this.checkPublishResultCode(a,c)})}setSDPDirection(e,o){let a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"all",c=uc(e);return c.media.forEach(d=>{(a==="all"||d.type===a)&&(d.direction=o)}),My(c)}acceptAnswer(e){return KA(this,null,function*(){var o,a,c,d,C;try{let y;if(this._publishingLocalAudioTrack||this._publishingLocalVideoTrack||this.isMainStreamPublished){let b=((o=this._publishingLocalVideoTrack)==null?void 0:o.profile.bitrate)||((a=this.localMainVideoTrack)==null?void 0:a.profile.bitrate),V=((c=this._publishingLocalAudioTrack)==null?void 0:c.profile.bitrate)||((d=this.localMainAudioTrack)==null?void 0:d.profile.bitrate);if(b){let J=this._isPublishingAux?YA.AUXILIARY:YA.BIG;y=yield this.setBandwidth({bandwidth:b,type:YA.VIDEO,sdp:y,videoType:J})}V&&(y=yield this.setBandwidth({bandwidth:V,type:YA.AUDIO,sdp:y}))}if(y=this.removeVideoOrientation(e.sdp),(C=this._publishingLocalVideoTrack)!=null&&C.small){let{smallStreamConfig:b}=this._room;y=yield this.setBandwidth({bandwidth:this._publishingLocalVideoTrack.small.bitrate||b.bitrate,type:YA.VIDEO,videoType:YA.SMALL,sdp:y})}let S={type:e.type,sdp:y};yield this.setAnswer(S),this._log.debug("accepted answer: ".concat(y))}catch(y){throw this._log.error("failed to accept remote answer ".concat(y)),y}})}sendMutedFlag(e){e===this.localAuxAudioTrack||e===this.localAuxVideoTrack||(this._log.info("send muted state: ".concat(JSON.stringify(this._room.muteState))),this._signalChannel.send(mz,this._room.muteState))}getIsReconnecting(){return this._isReconnecting}reconnect(){return KA(this,null,function*(){if(!(TI(b9.prototype,this,"beforeReconnect").call(this)<0))try{yield this._signalChannel.sendWaitForResponse({command:m1,responseCommand:ls.UNPUBLISH_RESULT,enableLog:!1}),this.closePeerConnection(),this.initialize(),this.isMainStreamPublished&&(yield this.publish({localAudioTrack:this.localMainAudioTrack,localVideoTrack:this.localMainVideoTrack,isAuxiliary:!1})),this.isAuxStreamPublished&&(yield this.publish({localAudioTrack:this.localAuxAudioTrack,localVideoTrack:this.localAuxVideoTrack,isAuxiliary:!0})),this._log.warn("reconnect() uplink reconnect successfully"),this.stopReconnection()}catch{let o=vp(this._reconnectionCount);this._log.warn("reconnect() timeout, try again after ".concat(o/1e3,"s")),this._reconnectionTimer=setTimeout(()=>{this.clearReconnectionTimer(),this.reconnect()},o)}})}handleConnectionStateChange(e){e.state==="CONNECTED"&&(this.localMainVideoTrack||this._publishingLocalVideoTrack&&!this._isPublishingAux)&&F.emit(sA.SEND_FIRST_VIDEO_FRAME,{room:this._room})}updateSSRC(e){try{uc(e).media.forEach((o,a)=>{if(o.type===YA.AUDIO){let c=o.ssrcs&&o.ssrcs[0];c&&(this.ssrc.audio=Number(c.id))}else{if(this._sdpSemantics===r0&&o.ssrcGroups)return void o.ssrcGroups.forEach((d,C)=>{let y=Number(d.ssrcs.split(" ")[0]);C===0?this.ssrc.video=y:C===1&&(this.ssrc.small=y)});let c=o.ssrcs&&o.ssrcs[0];if(!c)return;switch(a){case 1:this.ssrc.video=Number(c.id);break;case 2:this.ssrc.small=Number(c.id);break;case 3:this.ssrc.auxiliary=Number(c.id)}}})}catch{}}getVideoTrackId(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:YA.VIDEO;if(this._peerConnection){let o=this._peerConnection.getSenders();if(e===YA.AUXILIARY&&o[3]&&o[3].track)return o[3].track.id;if(e===YA.VIDEO&&o[1]&&o[1].track)return o[1].track.id}if(this.localMainVideoTrack&&e===YA.VIDEO){let o=this.localMainVideoTrack.mediaTrack;if(o)return o.id}if(this.localAuxVideoTrack&&e===YA.AUXILIARY){let o=this.localAuxVideoTrack.mediaTrack;if(o)return o.id}return""}getSSRC(){return this.ssrc}checkPublishResultCode(e,o){if(e!==0)throw e===a0?(this._log.error(cc.NOT_SUPPORTED_H264ENCODE),new si({code:Et.NOT_SUPPORTED_H264,message:Xo({key:Mo.NOT_SUPPORTED_H264ENCODE})})):new si({code:Et.UNKNOWN,message:Xo({key:Mo.SIGNAL_RESPONSE_FAILED,data:{signalResponse:ls.PUBLISH_RESULT,code:e,message:o}})})}};di([jr(A=>function(){for(var e=arguments.length,o=new Array(e),a=0;a{let C=y=>{this._emitter.off("closed",C),d(new si({code:Et.API_CALL_ABORTED,message:Xo({key:Mo.CONNECTION_ABORTED,data:y})}))};this._emitter.on("closed",C),A.apply(this,o).then(c,d).finally(()=>{this._emitter.off("closed",C)})})})],D1.prototype,"publish"),di([py(521715,!1)],D1.prototype,"unpublish"),di([FM(em.prototype.afterConnect),A5(em.prototype.beforeConnect)],D1.prototype,"connect");var S1=D1,ooA=class{constructor(A,e){this.room=A,Y(this,"_log"),Y(this,"_prevReportTime",0),Y(this,"_prevReport",{}),Y(this,"_prevStats",null),Y(this,"_prevEncoderImplementation",""),Y(this,"_prevAuxEncoderImpl",""),Y(this,"_prevQualityLimitationReason",""),Y(this,"_prevAuxQualityLimitationReason",""),Y(this,"_prevDecoderImplementationMap",new Map),Y(this,"_decodeMap",new Map),Y(this,"_prevQpSum",0),Y(this,"_prevAuxQpSum",0),Y(this,"totalBytesSent",0),Y(this,"totalBytesReceived",0),Y(this,"_spcStats",null),this._log=e}get statInterval(){return this._prevReportTime===0?2:(Date.now()-this._prevReportTime)/1e3}getSenderStats(A){return KA(this,null,function*(){var e,o,a,c,d,C,y;let S={audio:{bytesSent:0,packetsSent:0,audioLevel:0,totalAudioEnergy:0},video:{bytesSent:0,packetsSent:0,framesEncoded:0,frameWidth:0,frameHeight:0,framesSent:0,fpsCapture:0},small:{bytesSent:0,packetsSent:0,framesEncoded:0,frameWidth:0,frameHeight:0,framesSent:0,fpsCapture:0},auxiliary:{bytesSent:0,packetsSent:0,framesEncoded:0,frameWidth:0,frameHeight:0,framesSent:0,fpsCapture:0},rtt:0},b=A.getPeerConnection(),V=A.getSSRC();if(b)try{if((this._spcStats||(yield b.getStats())).forEach(J=>{var gA,CA,MA,$A,he,Ye,Me,yi,Ge,ht,Ci,Di,Vo;let Jo,Qn;if(J.type==="outbound-rtp")if((J.mediaType||J.kind)===YA.VIDEO){if(J.ssrc===V.video?(Jo=YA.VIDEO,Qn=A.localMainVideoTrack):J.ssrc===V.small?Jo=YA.SMALL:J.ssrc===V.auxiliary&&(Qn=A.localAuxVideoTrack,Jo=YA.AUXILIARY),!Jo)return;S[Jo].bytesSent=J.bytesSent,S[Jo].packetsSent=J.packetsSent,S[Jo].framesEncoded=J.framesEncoded,Je(J.keyFramesEncoded)||(S[Jo].keyFramesEncoded=J.keyFramesEncoded),Je(J.nackCount)||(S[Jo].nackCount=J.nackCount),Je(J.pliCount)||(S[Jo].pliCount=J.pliCount),Je(J.retransmittedPacketsSent)||(S[Jo].retransmittedPacketsSent=J.retransmittedPacketsSent),Je(J.totalEncodeTime)||(S[Jo].totalEncodeTime=J.totalEncodeTime),Je(J.totalPacketSendDelay)||(S[Jo].totalPacketSendDelay=J.totalPacketSendDelay);let Ho=0;if(!Je(J.qpSum)&&!Je(J.framesEncoded)&&J.framesEncoded>0){let Ns=J.qpSum,pg=J.framesEncoded,fa=Jo===YA.VIDEO?this._prevQpSum:this._prevAuxQpSum,Cu=Jo===YA.VIDEO?((CA=(gA=A.localMainVideoTrack)==null?void 0:gA.stat)==null?void 0:CA.framesEncoded)||0:(($A=(MA=A.localAuxVideoTrack)==null?void 0:MA.stat)==null?void 0:$A.framesEncoded)||0;if(pg>Cu&&Ns>fa){let EL=Ns-fa,h_=pg-Cu;Ho=Math.round(EL/h_),Ho>35&&A.videoCodec==="h264"&&this._log.warn("".concat(Jo===YA.AUXILIARY?"aux ":"","video encoder QP is high: ").concat(Ho,", resolution: ").concat(J.frameWidth,"x").concat(J.frameHeight,", codec: ").concat(A.videoCodec,", "))}Jo===YA.VIDEO?this._prevQpSum=Ns:Jo===YA.AUXILIARY&&(this._prevAuxQpSum=Ns)}if(!Je(J.encoderImplementation)&&(Jo===YA.VIDEO&&this._prevEncoderImplementation!==J.encoderImplementation||Jo===YA.AUXILIARY&&this._prevAuxEncoderImpl!==J.encoderImplementation)){let Ns=2,pg=this._prevEncoderImplementation;Jo===YA.AUXILIARY&&(Ns=7,pg=this._prevAuxEncoderImpl),F.emit("262",{userId:A.userId,streamType:Ns,prevImplementation:pg,implementation:J.encoderImplementation,codec:A.videoCodec,isHWCodec:J.powerEfficientEncoder}),this[Jo===YA.VIDEO?"_prevEncoderImplementation":"_prevAuxEncoderImpl"]=J.encoderImplementation,Qn?.log.info("encoderImplementation change to ".concat(J.encoderImplementation,"(").concat(A.videoCodec,") HWEncoder: ").concat(J.powerEfficientEncoder))}J.ssrc===V.video?!Je(J.qualityLimitationReason)&&J.bytesSent!==0&&this._prevQualityLimitationReason!==J.qualityLimitationReason&&(Qn?.log.info("qualityLimitationReason change to ".concat(J.qualityLimitationReason)),F.emit("263",{userId:A.userId,reason:J.qualityLimitationReason,prevReason:this._prevQualityLimitationReason,streamType:2,isQosClearFirst:(he=A.localMainVideoTrack)==null?void 0:he.isQosClearFirst}),this._prevQualityLimitationReason=J.qualityLimitationReason):J.ssrc===V.auxiliary&&!Je(J.qualityLimitationReason)&&J.bytesSent!==0&&this._prevAuxQualityLimitationReason!==J.qualityLimitationReason&&(this._log.info("aux qualityLimitationReason change to ".concat(J.qualityLimitationReason)),F.emit("263",{userId:A.userId,reason:J.qualityLimitationReason,prevReason:this._prevAuxQualityLimitationReason,streamType:7,isQosClearFirst:(Ye=A.localAuxVideoTrack)==null?void 0:Ye.isQosClearFirst}),this._prevAuxQualityLimitationReason=J.qualityLimitationReason)}else S.audio.bytesSent=J.bytesSent,S.audio.packetsSent=J.packetsSent;else if(J.type==="candidate-pair")SM(J)&&(this.totalBytesSent=J.bytesSent,bn(J.currentRoundTripTime)&&(S.rtt=Math.floor(1e3*J.currentRoundTripTime)));else if(J.type==="media-source"){if(J.kind===YA.AUDIO)S.audio.audioLevel=J.audioLevel||0,S.audio.totalAudioEnergy=J.totalAudioEnergy||0,J.echoReturnLoss,Je((Ge=(yi=(Me=A.localMainAudioTrack)==null?void 0:Me.sourceTrack)==null?void 0:yi.stats)==null?void 0:Ge.deliveredFramesDuration)?J.totalSamplesDuration&&(S.audio.totalSamplesDuration=J.totalSamplesDuration):S.audio.totalSamplesDuration=A.localMainAudioTrack.sourceTrack.stats.deliveredFramesDuration/1e3;else if(J.kind===YA.VIDEO)if(J.trackIdentifier===A.getVideoTrackId(YA.VIDEO))if((Di=(Ci=(ht=A.localMainVideoTrack)==null?void 0:ht.sourceTrack)==null?void 0:Ci.stats)!=null&&Di.deliveredFrames){let{deliveredFrames:Ho}=A.localMainVideoTrack.sourceTrack.stats;S.video.framesCaptured=Ho,A.localMainVideoTrack.stat.framesCaptured&&A.localMainVideoTrack.stat.framesCaptured>0&&Ho>=A.localMainVideoTrack.stat.framesCaptured?S.video.fpsCapture=Math.floor((Ho-A.localMainVideoTrack.stat.framesCaptured)/this.statInterval):S.video.fpsCapture=J.framesPerSecond}else S.video.fpsCapture=J.framesPerSecond;else J.trackIdentifier===A.getVideoTrackId(YA.AUXILIARY)?S.auxiliary.fpsCapture=J.framesPerSecond:S.small.fpsCapture=J.framesPerSecond}if(!Je(J.audioLevel)&&(Vo=A.localMainAudioTrack)!=null&&Vo.mediaTrack&&J.trackIdentifier===A.localMainAudioTrack.mediaTrack.id&&(S.audio.audioLevel=J.audioLevel||0),!Je(J.frameWidth)){let Ho=YA.SMALL;J.trackIdentifier===A.getVideoTrackId(YA.VIDEO)||J.ssrc===V.video?Ho=YA.VIDEO:(J.trackIdentifier===A.getVideoTrackId(YA.AUXILIARY)||J.ssrc===V.auxiliary)&&(Ho=YA.AUXILIARY),S[Ho].frameWidth=J.frameWidth,S[Ho].frameHeight=J.frameHeight,S[Ho].framesSent=J.framesSent}}),A.localMainAudioTrack||A.getRoom().capturedLocalMainAudioTrack){let J=A.localMainAudioTrack||A.getRoom().capturedLocalMainAudioTrack;if(J){let gA=J.getInternalAudioLevel(),CA=J.getInternalAudioLevelAfter3A();S.audio.audioCaptureEnergyAfter3a=CA,S.audio.micAudioLevel=gA,S.audio.audioLevel===0&&A.localMainAudioTrack&&(S.audio.audioLevel=CA??gA),!A.localMainAudioTrack&&!Je((o=(e=J.sourceTrack)==null?void 0:e.stats)==null?void 0:o.deliveredFramesDuration)&&(S.audio.totalSamplesDuration=J.sourceTrack.stats.deliveredFramesDuration/1e3)}}if(!A.localMainVideoTrack&&A.getRoom().capturedLocalMainVideoTrack){let J=A.getRoom().capturedLocalMainVideoTrack;if((c=(a=J?.sourceTrack)==null?void 0:a.stats)!=null&&c.deliveredFrames){let{deliveredFrames:gA}=J.sourceTrack.stats;S.video.framesCaptured=gA,J.stat.framesCaptured&&J.stat.framesCaptured>0&&gA>=J.stat.framesCaptured&&(S.video.fpsCapture=Math.floor((gA-J.stat.framesCaptured)/this.statInterval)),J.stat.framesCaptured=gA}}if(!A.localAuxVideoTrack&&A.getRoom().capturedLocalAuxVideoTrack){let J=A.getRoom().capturedLocalAuxVideoTrack;if((C=(d=J?.sourceTrack)==null?void 0:d.stats)!=null&&C.deliveredFrames){let{deliveredFrames:gA}=J.sourceTrack.stats;S.auxiliary.framesCaptured=gA,J.stat.framesCaptured&&J.stat.framesCaptured>0&&gA>=J.stat.framesCaptured&&(S.auxiliary.fpsCapture=Math.floor((gA-J.stat.framesCaptured)/this.statInterval)),J.stat.framesCaptured=gA}}this.totalBytesSent||(this.totalBytesSent+=S.audio.bytesSent+S.video.bytesSent+S.auxiliary.bytesSent),Object.keys(S).forEach(J=>{J===YA.AUDIO?(A.localMainAudioTrack&&(A.localMainAudioTrack.stat=S[J]),A.localAuxAudioTrack&&(A.localAuxAudioTrack.stat=S[J])):J===YA.VIDEO?A.localMainVideoTrack&&(A.localMainVideoTrack.stat=S[J]):J===YA.AUXILIARY&&A.localAuxVideoTrack&&(A.localAuxVideoTrack.stat=S[J])})}catch(J){this._log.warn("failed to getStats on sender connection ".concat(J))}return S.rtt===0&&(S.rtt=((y=this.room.networkQuality)==null?void 0:y.uplinkRTT)||0),S})}getReceiverStats(A){return KA(this,null,function*(){var e,o,a;let c={tinyId:A.tinyId,userId:A.userId,rtt:0,hasAudio:!1,hasVideo:!1,hasAuxiliary:!1,isSmallSubscribed:!1,avSyncDelay:0,audio:{bytesReceived:0,packetsReceived:0,packetsLost:0,p2pDelay:0,totalJitter:0,totalJitterCount:0,audioLevel:0,totalAudioEnergy:0,insertedSamplesForDeceleration:0,removedSamplesForAcceleration:0},video:{bytesReceived:0,packetsReceived:0,packetsLost:0,framesReceived:0,framesDecoded:0,frameWidth:0,frameHeight:0,fpsDecoded:0,freezeCount:0,totalFreezesDuration:0,totalJitter:0,totalJitterCount:0,p2pDelay:0,codec:""},auxiliary:{bytesReceived:0,packetsReceived:0,packetsLost:0,framesReceived:0,framesDecoded:0,frameWidth:0,frameHeight:0,fpsDecoded:0,totalJitter:0,totalJitterCount:0,p2pDelay:0,codec:""}},d=A.getPeerConnection();if(d)try{let{ssrc:C}=A,{muteState:y,subscribeState:S}=A;(this._spcStats||(yield d.getStats())).forEach(J=>{var gA,CA;if(J.type==="codec"&&this._decodeMap.set(J.id,J),J.type==="inbound-rtp"){let MA=(J.mediaType||J.kind)===YA.AUDIO;if(MA){if(J.ssrc!==C.audio||!y.hasAudio)return;c.audio.packetsReceived=J.packetsReceived,c.audio.bytesReceived=J.bytesReceived,c.audio.packetsLost=J.packetsLost,J.insertedSamplesForDeceleration&&(c.audio.insertedSamplesForDeceleration=J.insertedSamplesForDeceleration),J.removedSamplesForAcceleration&&(c.audio.removedSamplesForAcceleration=J.removedSamplesForAcceleration),J.totalSamplesDuration&&(c.audio.totalSamplesDuration=J.totalSamplesDuration),J.totalSamplesReceived&&(c.audio.totalSamplesReceived=J.totalSamplesReceived),J.concealedSamples&&(c.audio.concealedSamples=J.concealedSamples),J.silentConcealedSamples&&(c.audio.silentConcealedSamples=J.silentConcealedSamples);let{remoteAudioTrack:$A}=A;$A.stat.packetsReceived=J.packetsReceived,$A.stat.bytesReceived=J.bytesReceived,$A.stat.packetsLost=J.packetsLost,c.audio.p2pDelay=$A.stat.end2EndDelay,c.hasAudio=!0}else{if(er&&J.bytesReceived===0)return;let $A;J.ssrc===C.video&&y.hasVideo&&(c.video.packetsReceived=J.packetsReceived,c.video.bytesReceived=J.bytesReceived,c.video.packetsLost=J.packetsLost,c.video.framesReceived=J.framesReceived,c.video.framesDecoded=J.framesDecoded,c.video.fpsDecoded=J.framesPerSecond,c.hasVideo=!0,A.videoCodec=dl[(gA=this._decodeMap.get(J.codecId))==null?void 0:gA.mimeType.split("/")[1]]||"h264",c.video.codec=A.videoCodec,$A=A.remoteVideoTrack,y.hasSmall&&S.smallVideo&&(c.isSmallSubscribed=!0),J.decoderImplementation&&(!this._prevDecoderImplementationMap.has(c.userId)||this._prevDecoderImplementationMap.get(c.userId)!==J.decoderImplementation)&&($A.log.info("decoderImplementation change to ".concat(J.decoderImplementation,"(").concat(A.videoCodec,") HWDecoder: ").concat(J.powerEfficientDecoder)),F.emit("262",{userId:this.room.userId,remoteUserId:c.userId,prevImplementation:this._prevDecoderImplementationMap.get(c.userId),implementation:J.decoderImplementation,codec:A.videoCodec,isHWCodec:J.powerEfficientDecoder}),this._prevDecoderImplementationMap.set(c.userId,J.decoderImplementation)),Je(J.keyFramesDecoded)||$A.updateKeyFramesDecoded(J.keyFramesDecoded)),J.ssrc===C.auxiliary&&y.hasAuxiliary&&(c.auxiliary.packetsReceived=J.packetsReceived,c.auxiliary.bytesReceived=J.bytesReceived,c.auxiliary.packetsLost=J.packetsLost,c.auxiliary.framesReceived=J.framesReceived,c.auxiliary.framesDecoded=J.framesDecoded,c.auxiliary.fpsDecoded=J.framesPerSecond,$A=A.remoteAuxiliaryTrack,c.auxiliary.p2pDelay=$A.stat.end2EndDelay,c.hasAuxiliary=!0,c.video.codec=((CA=this._decodeMap.get(J.codecId))==null?void 0:CA.mimeType.split("/")[1].toLowerCase())||"h264",Je(J.keyFramesDecoded)||$A.updateKeyFramesDecoded(J.keyFramesDecoded)),$A&&($A.stat.packetsReceived=J.packetsReceived,$A.stat.bytesReceived=J.bytesReceived,$A.stat.packetsLost=J.packetsLost,$A.stat.framesReceived=J.framesReceived,$A.stat.framesDecoded=J.framesDecoded,J.jitterBufferDelay&&($A.stat.jitterBufferDelay=Math.floor(J.jitterBufferDelay/J.jitterBufferEmittedCount*1e3)),c.video.p2pDelay=$A.stat.end2EndDelay)}J.jitterBufferDelay&&(MA?(c.audio.totalJitter=J.jitterBufferDelay,c.audio.totalJitterCount=J.jitterBufferEmittedCount,c.audio.estimatedPlayoutTimestamp=J.estimatedPlayoutTimestamp):J.ssrc===C.video&&y.hasVideo?(c.video.totalJitter=J.jitterBufferDelay,c.video.totalJitterCount=J.jitterBufferEmittedCount,c.video.estimatedPlayoutTimestamp=J.estimatedPlayoutTimestamp):J.ssrc===C.auxiliary&&y.hasAuxiliary&&(c.auxiliary.totalJitter=J.jitterBufferDelay,c.auxiliary.totalJitterCount=J.jitterBufferEmittedCount))}else J.type==="candidate-pair"&&SM(J)&&(this.totalBytesReceived=J.bytesReceived,bn(J.currentRoundTripTime)&&(c.rtt=Math.floor(1e3*J.currentRoundTripTime)));Je(J.frameWidth)||((J.trackIdentifier===A.getMainStreamVideoTrackId()||J.ssrc===C.video)&&(c.video.frameWidth=J.frameWidth,c.video.frameHeight=J.frameHeight,A.remoteVideoTrack.stat.frameWidth=J.frameWidth,A.remoteVideoTrack.stat.frameHeight=J.frameHeight),(J.trackIdentifier===A.getAuxStreamVideoTrackId()||J.ssrc===C.auxiliary)&&(c.auxiliary.frameWidth=J.frameWidth,c.auxiliary.frameHeight=J.frameHeight,A.remoteAuxiliaryTrack.stat.frameWidth=J.frameWidth,A.remoteAuxiliaryTrack.stat.frameHeight=J.frameHeight)),!Je(J.audioLevel)&&A.muteState.audioAvailable&&A.remoteAudioTrack.mediaTrack&&J.trackIdentifier===A.remoteAudioTrack.mediaTrack.id&&(c.audio.audioLevel=J.audioLevel||0,c.audio.totalAudioEnergy=J.totalAudioEnergy||0)}),c.audio.audioLevel===0&&A.muteState.audioAvailable&&(c.audio.audioLevel=A.remoteAudioTrack.getInternalAudioLevel()||0),this.totalBytesReceived||(this.totalBytesReceived+=c.audio.bytesReceived+c.video.bytesReceived+c.auxiliary.bytesReceived),Je((e=A.remoteVideoTrack.player.stat)==null?void 0:e.fps)||(c.video.fpsRender=A.remoteVideoTrack.player.stat.fps),Je((o=A.remoteAuxiliaryTrack.player.stat)==null?void 0:o.fps)||(c.auxiliary.fpsRender=A.remoteAuxiliaryTrack.player.stat.fps);let b=c.audio.estimatedPlayoutTimestamp,V=c.video.estimatedPlayoutTimestamp;if(b&&V&&A.remoteAudioTrack.isAvailable&&A.remoteVideoTrack.isAvailable){let J=V-b;Math.abs(J)<=1e4&&(c.avSyncDelay=J,Math.abs(J)>150&&this._log.warn("av sync delay",J))}}catch(C){this._log.warn("failed to getStats on receiver connection ".concat(C))}return c.rtt===0&&(c.rtt=((a=this.room.networkQuality)==null?void 0:a.uplinkRTT)||0),c})}getStats(A,e){return KA(this,null,function*(){let o,a={},c=[];if(this.room.singlePC){let d=this.room.singlePC.getPeerConnection();if(!d)return{senderStats:a,receiverStats:c};let C=ko(),y=yield d.getStats(),S=ko();S-C>2e3&&this._log.warn("getStats cost ".concat(S-C,"ms"));let b=[],V=new Set(["inbound-rtp","outbound-rtp","track","candidate-pair","media-source","codec","media-playout"]);y.forEach(J=>V.has(J.type)&&b.push(J)),this._spcStats=b}A&&(a=yield this.getSenderStats(A));for(let[d,C]of e){let y=yield this.getReceiverStats(C);y&&c.push(y)}return e.size&&(o=this.getMediaPlayoutStats(this._spcStats)),{senderStats:a,receiverStats:c,mediaPlayoutStats:o}})}getDifferenceValue(A,e){if($p(A))return e;let o=e-A;return o<0?0:o}prepareReport(A){let{stats:e,report:o,freezeMap:a,uplinkConnection:c}=A;var d,C,y,S,b,V,J,gA,CA;if(!$p(e.senderStats)){let Ge={uint32_audio_level:e.senderStats.audio.audioLevel*Ad,uint32_audio_energy:1e6*(e.senderStats.audio.totalAudioEnergy||0),uint32_audio_codec_bitrate:e.senderStats.audio.bytesSent};e.senderStats.audio.micAudioLevel&&(Ge.uint32_mic_audio_level=e.senderStats.audio.micAudioLevel*Ad),Je(e.senderStats.audio.audioCaptureEnergyAfter3a)||(Ge.uint32_audio_capture_energy_after3a=e.senderStats.audio.audioCaptureEnergyAfter3a*Ad),e.senderStats.audio.totalSamplesDuration&&(o.msg_device_info.uint32_audio_capture_cost=e.senderStats.audio.totalSamplesDuration);let ht=[];if(e.senderStats.video.bytesSent){let Di={uint32_video_stream_type:2,uint32_video_codec_fps:e.senderStats.video.framesSent,uint32_video_capture_fps:e.senderStats.video.fpsCapture,uint32_video_width:e.senderStats.video.frameWidth,uint32_video_height:e.senderStats.video.frameHeight,uint32_video_codec_bitrate:e.senderStats.video.bytesSent,uint32_video_enc_fps:e.senderStats.video.framesEncoded,uint32_key_frame_count:e.senderStats.video.keyFramesEncoded,uint32_nack_count:e.senderStats.video.nackCount,uint32_pli_count:e.senderStats.video.pliCount,uint32_encode_cost:1e3*(e.senderStats.video.totalEncodeTime||0),uint32_send_packet_cost:1e3*(e.senderStats.video.totalPacketSendDelay||0),uint32_video_arq_packets:e.senderStats.video.retransmittedPacketsSent};ht.push(Di)}if(e.senderStats.small.bytesSent){let Di={uint32_video_stream_type:3,uint32_video_codec_fps:e.senderStats.small.framesSent||0,uint32_video_capture_fps:e.senderStats.small.fpsCapture||0,uint32_video_width:e.senderStats.small.frameWidth||0,uint32_video_height:e.senderStats.small.frameHeight||0,uint32_video_codec_bitrate:e.senderStats.small.bytesSent,uint32_video_enc_fps:e.senderStats.small.framesEncoded||0,uint32_key_frame_count:e.senderStats.small.keyFramesEncoded,uint32_nack_count:e.senderStats.small.nackCount,uint32_pli_count:e.senderStats.small.pliCount,uint32_encode_cost:1e3*(e.senderStats.small.totalEncodeTime||0),uint32_send_packet_cost:1e3*(e.senderStats.small.totalPacketSendDelay||0),uint32_video_arq_packets:e.senderStats.small.retransmittedPacketsSent};ht.push(Di)}if(e.senderStats.auxiliary.bytesSent){let Di={uint32_video_stream_type:7,uint32_video_codec_fps:e.senderStats.auxiliary.framesSent||0,uint32_video_capture_fps:e.senderStats.auxiliary.fpsCapture||0,uint32_video_width:e.senderStats.auxiliary.frameWidth||0,uint32_video_height:e.senderStats.auxiliary.frameHeight||0,uint32_video_codec_bitrate:e.senderStats.auxiliary.bytesSent,uint32_video_enc_fps:e.senderStats.auxiliary.framesEncoded||0,uint32_key_frame_count:e.senderStats.auxiliary.keyFramesEncoded,uint32_nack_count:e.senderStats.auxiliary.nackCount,uint32_pli_count:e.senderStats.auxiliary.pliCount,uint32_encode_cost:1e3*(e.senderStats.auxiliary.totalEncodeTime||0),uint32_send_packet_cost:1e3*(e.senderStats.auxiliary.totalPacketSendDelay||0),uint32_video_arq_packets:e.senderStats.auxiliary.retransmittedPacketsSent};ht.push(Di)}let Ci={uint32_bitrate:0,uint32_lost:0,uint32_rtt:e.senderStats.rtt};o.msg_up_stream_info={msg_audio_status:Ge,msg_video_status:ht,msg_network_status:Ci}}let{statInterval:MA}=this;o.msg_down_stream_info=[],e.receiverStats.forEach(Ge=>{let ht={msg_user_info:{str_identifier:Ge.userId,uint64_tinyid:Ge.tinyId},msg_network_status:{uint32_rtt:Ge.rtt,uint32_bitrate:0,uint32_lost:0},msg_audio_status:{},msg_video_status:[]};if(Ge.hasAudio){let Ci={uint32_audio_p2p_delay:Ge.audio.p2pDelay,uint32_audio_cache_ms:Ge.audio.totalJitter,uint32_audio_cache_ms_count:Ge.audio.totalJitterCount,uint32_audio_codec_bitrate:Ge.audio.bytesReceived,uint32_audio_total_bitrate:Ge.audio.bytesReceived,uint32_audio_level:1e8*Ge.audio.audioLevel,uint32_audio_energy:1e6*Ge.audio.totalAudioEnergy,uint32_audio_receive:Ge.audio.packetsReceived,uint32_audio_origin_lost:Ge.audio.packetsLost};ht.msg_audio_status=Ci}if(Ge.hasVideo){let Ci=a.get("".concat(Ge.userId,"_").concat(o0)),Di=Ci?Ci.duration:0,Vo={uint32_video_stream_type:Ge.isSmallSubscribed?3:2,uint32_video_receive_fps:Ge.video.framesReceived,uint32_video_width:Ge.video.frameWidth,uint32_video_height:Ge.video.frameHeight,uint32_video_codec_bitrate:Ge.video.bytesReceived,uint32_video_receive:Ge.video.packetsReceived,uint32_video_origin_lost:Ge.video.packetsLost,uint32_video_block_time:Di,uint32_video_dec_fps:Ge.video.framesDecoded,uint32_video_codec_fps:Ge.video.fpsRender,uint32_video_cache_ms:Ge.video.totalJitter,uint32_video_cache_ms_count:Ge.video.totalJitterCount,uint32_video_p2p_delay:Ge.video.p2pDelay,uint32_video_codec:Ge.video.codec,int32_video_audio_relative_delay:Ge.avSyncDelay+5e3};ht.msg_video_status.push(Vo)}if(Ge.hasAuxiliary){let Ci=a.get("".concat(Ge.userId,"_").concat(Db)),Di=Ci?Ci.duration:0,Vo={uint32_video_stream_type:7,uint32_video_receive_fps:Ge.auxiliary.framesReceived,uint32_video_width:Ge.auxiliary.frameWidth,uint32_video_height:Ge.auxiliary.frameHeight,uint32_video_codec_bitrate:Ge.auxiliary.bytesReceived,uint32_video_receive:Ge.auxiliary.packetsReceived+Ge.auxiliary.packetsLost,uint32_video_origin_lost:Ge.auxiliary.packetsLost,uint32_video_block_time:Di,uint32_video_dec_fps:Ge.auxiliary.framesDecoded,uint32_video_codec_fps:Ge.video.fpsRender,uint32_video_cache_ms:Ge.auxiliary.totalJitter,uint32_video_cache_ms_count:Ge.auxiliary.totalJitterCount,uint32_video_p2p_delay:Ge.auxiliary.p2pDelay,uint32_video_codec:Ge.video.codec};ht.msg_video_status.push(Vo)}o.msg_down_stream_info.push(ht)}),e.mediaPlayoutStats&&!$p(e.mediaPlayoutStats)&&(e.mediaPlayoutStats.synthesizedSamplesDuration*=1e3,e.mediaPlayoutStats.totalSamplesDuration*=1e3);let $A=this._prevReport,he=this._prevStats;if(this._prevReport=JSON.parse(JSON.stringify(o)),this._prevStats=JSON.parse(JSON.stringify(e)),o.msg_up_stream_info.msg_audio_status&&$A.msg_up_stream_info.msg_audio_status){let Ge=$A.msg_up_stream_info.msg_audio_status,ht=o.msg_up_stream_info.msg_audio_status;if(Ge.uint32_audio_codec_bitrate===0)ht.uint32_audio_codec_bitrate=0;else{let Ci=this.getDifferenceValue(Ge.uint32_audio_codec_bitrate,ht.uint32_audio_codec_bitrate);ht.uint32_audio_codec_bitrate=Math.round(8*Ci/MA),o.msg_up_stream_info.msg_network_status.uint32_bitrate+=ht.uint32_audio_codec_bitrate}(d=$A.msg_device_info)!=null&&d.uint32_audio_capture_cost?(o.msg_device_info.uint32_audio_capture_cost=2*Math.floor(1e3*this.getDifferenceValue($A.msg_device_info.uint32_audio_capture_cost,o.msg_device_info.uint32_audio_capture_cost)/MA),o.msg_device_info.uint32_audio_capture_cost>0&&((y=c?.localMainAudioTrack)==null||y.updateAfter3aSilenceStartTime((C=e.senderStats.audio.audioCaptureEnergyAfter3a)!=null?C:e.senderStats.audio.micAudioLevel))):delete o.msg_device_info.uint32_audio_capture_cost}let Ye=$A.msg_up_stream_info.msg_video_status;o.msg_up_stream_info.msg_video_status.forEach(Ge=>{let ht=Ye.find(Qn=>Qn.uint32_video_stream_type===Ge.uint32_video_stream_type);if(!ht||ht.uint32_video_codec_bitrate===0)return Ge.uint32_video_codec_bitrate=0,Ge.uint32_video_enc_fps=0,void(Ge.uint32_video_codec_fps=0);let Ci=0,Di=0,Vo=0;ht&&Ge.uint32_video_codec_bitrate>=ht.uint32_video_codec_bitrate&&(Ci=ht.uint32_video_codec_bitrate,Di=ht.uint32_video_enc_fps,Vo=ht.uint32_video_codec_fps);let Jo=this.getDifferenceValue(Ci,Ge.uint32_video_codec_bitrate);Ge.uint32_video_codec_bitrate=Math.round(8*Jo/MA),o.msg_up_stream_info.msg_network_status.uint32_bitrate+=Ge.uint32_video_codec_bitrate,Ge.uint32_video_enc_fps=Math.round(this.getDifferenceValue(Di,Ge.uint32_video_enc_fps)/MA),Ge.uint32_video_codec_fps=Math.round(this.getDifferenceValue(Vo,Ge.uint32_video_codec_fps)/MA),ht.uint32_video_width===0&&ht.uint32_video_height===0&&ht.uint32_video_codec_fps===0&&(Ge.uint32_video_codec_fps=Ge.uint32_video_enc_fps),Je(ht.uint32_key_frame_count)||(Ge.uint32_key_frame_count=Math.round(this.getDifferenceValue(ht.uint32_key_frame_count,Ge.uint32_key_frame_count))),Je(ht.uint32_nack_count)||(Ge.uint32_nack_count=Math.round(this.getDifferenceValue(ht.uint32_nack_count,Ge.uint32_nack_count))),Je(ht.uint32_pli_count)||(Ge.uint32_pli_count=Math.round(this.getDifferenceValue(ht.uint32_pli_count,Ge.uint32_pli_count))),Je(ht.uint32_video_arq_packets)||(Ge.uint32_video_arq_packets=Math.round(this.getDifferenceValue(ht.uint32_video_arq_packets,Ge.uint32_video_arq_packets))),Je(ht.uint32_encode_cost)||(Ge.uint32_encode_cost=Math.round(this.getDifferenceValue(ht.uint32_encode_cost,Ge.uint32_encode_cost)/MA)),Je(ht.uint32_send_packet_cost)||(Ge.uint32_send_packet_cost=Math.round(this.getDifferenceValue(ht.uint32_send_packet_cost,Ge.uint32_send_packet_cost)/MA))});let Me=$A.msg_down_stream_info;o.msg_down_stream_info=o.msg_down_stream_info.filter(Ge=>Me.find(ht=>ht.msg_user_info.uint64_tinyid===Ge.msg_user_info.uint64_tinyid));let yi=o.msg_down_stream_info;if(yi.forEach(Ge=>{let ht=Me.find(Ci=>Ci.msg_user_info.uint64_tinyid===Ge.msg_user_info.uint64_tinyid);if($p(Ge.msg_audio_status)||$p(ht.msg_audio_status))Ge.msg_audio_status={};else{let Ci=Ge.msg_audio_status,Di=ht.msg_audio_status,Vo=this.getDifferenceValue(Di.uint32_audio_cache_ms_count,Ci.uint32_audio_cache_ms_count);delete Ci.uint32_audio_cache_ms_count,Ci.uint32_audio_cache_ms=Math.floor(1e3*this.getDifferenceValue(Di.uint32_audio_cache_ms,Ci.uint32_audio_cache_ms)/Vo)||0;let Jo=this.room.remotePublishedUserMap.get(Ge.msg_user_info.str_identifier);Jo&&(Jo.remoteAudioTrack.stat.jitterBufferDelay=Ci.uint32_audio_cache_ms),Ci.uint32_audio_origin_lost=this.getDifferenceValue(Di.uint32_audio_origin_lost,Ci.uint32_audio_origin_lost),Ci.uint32_audio_receive=this.getDifferenceValue(Di.uint32_audio_receive,Ci.uint32_audio_receive),Ci.uint32_audio_receive+=Ci.uint32_audio_origin_lost;let Qn=this.getDifferenceValue(Di.uint32_audio_codec_bitrate,Ci.uint32_audio_codec_bitrate);Ci.uint32_audio_codec_bitrate=Math.round(8*Qn/MA),Ci.uint32_audio_total_bitrate=Math.round(8*Qn/MA)}if(Ge.msg_video_status&&ht.msg_video_status){let Ci=ht.msg_video_status;Ge.msg_video_status=Ge.msg_video_status.filter(Di=>Ci.find(Vo=>Vo.uint32_video_stream_type===Di.uint32_video_stream_type)),Ge.msg_video_status.forEach(Di=>{let Vo=Ci.find(h_=>h_.uint32_video_stream_type===Di.uint32_video_stream_type),Jo=Vo.uint32_video_receive,Qn=Vo.uint32_video_origin_lost,Ho=Vo.uint32_video_codec_bitrate,Ns=Vo.uint32_video_receive_fps,pg=Vo.uint32_video_dec_fps;Di.uint32_video_origin_lost=this.getDifferenceValue(Qn,Di.uint32_video_origin_lost),Di.uint32_video_receive=this.getDifferenceValue(Jo,Di.uint32_video_receive)+Di.uint32_video_origin_lost;let fa=this.getDifferenceValue(Ho,Di.uint32_video_codec_bitrate);Di.uint32_video_codec_bitrate=Math.round(8*fa/MA);let Cu=this.getDifferenceValue(Ns,Di.uint32_video_receive_fps);Di.uint32_video_receive_fps=Math.round(Cu/MA),Di.uint32_video_dec_fps=Math.round(this.getDifferenceValue(pg,Di.uint32_video_dec_fps)/MA);let EL=this.getDifferenceValue(Vo.uint32_video_cache_ms_count,Di.uint32_video_cache_ms_count);delete Di.uint32_video_cache_ms_count,Di.uint32_video_cache_ms=Math.floor(1e3*this.getDifferenceValue(Vo.uint32_video_cache_ms,Di.uint32_video_cache_ms)/EL)||0})}}),!Je((S=he?.mediaPlayoutStats)==null?void 0:S.totalSamplesDuration)&&!Je((b=e.mediaPlayoutStats)==null?void 0:b.totalSamplesDuration)){let Ge=2*Math.floor(this.getDifferenceValue((V=he?.mediaPlayoutStats)==null?void 0:V.synthesizedSamplesDuration,(J=e.mediaPlayoutStats)==null?void 0:J.synthesizedSamplesDuration)/MA),ht=2*Math.floor(this.getDifferenceValue((gA=he?.mediaPlayoutStats)==null?void 0:gA.totalSamplesDuration,(CA=e.mediaPlayoutStats)==null?void 0:CA.totalSamplesDuration)/MA);o.msg_device_info.uint32_audio_play_cost=ht-Ge}return he&&e.receiverStats.forEach(Ge=>{if(Ge.audio.concealedSamples&&Ge.audio.totalSamplesReceived){let ht=he.receiverStats.find(Ci=>Ci.userId===Ge.userId);if(ht&&ht.audio.concealedSamples&&ht.audio.totalSamplesReceived){let Ci=(Ge.audio.silentConcealedSamples||0)-(ht.audio.silentConcealedSamples||0),Di=Ge.audio.concealedSamples-ht.audio.concealedSamples,Vo=Ge.audio.totalSamplesReceived-ht.audio.totalSamplesReceived,Jo=Math.floor((Di-Ci)/Vo*1e3*MA);if(Jo>1e3*MA/5){let Qn=yi.find(Ho=>Ho.msg_user_info.str_identifier===Ge.userId);Qn&&(Qn.msg_audio_status.uint32_audio_block_time=Jo)}}}}),o.msg_down_stream_info.forEach(Ge=>{Ge.msg_video_status.forEach(ht=>{ht.uint32_video_codec_bitrate===0&&ht.uint32_video_receive_fps===0&&(ht.uint32_video_width=0,ht.uint32_video_height=0)})}),o}getStatsReport(A){return KA(this,arguments,function(e){var o=this;let{uplinkConnection:a,downlinkConnections:c,freezeMap:d}=e;return function*(){let C={msg_device_info:{},msg_up_stream_info:{msg_audio_status:{uint32_audio_format:11,uint32_audio_sample_rate:0,uint32_audio_codec_bitrate:0,uint32_audio_receive:0,uint32_audio_origin_lost:0,uint32_audio_level:0,uint32_audio_energy:0,uint32_audio_capture_energy_after3a:0},msg_video_status:[],msg_network_status:{uint32_bitrate:0,uint32_rtt:0,uint32_lost:0}},msg_down_stream_info:[{msg_user_info:{str_identifier:"",uint64_tinyid:0},msg_audio_status:{uint32_audio_cache_ms:0,uint32_audio_format:11,uint32_audio_sample_rate:0,uint32_audio_codec_bitrate:0,uint32_audio_total_bitrate:0,uint32_audio_level:0,uint32_audio_energy:0,uint32_audio_receive:0,uint32_audio_origin_lost:0,uint32_audio_final_lost:0},msg_video_status:[{uint32_video_cache_ms:0,uint32_video_stream_type:0,uint32_video_receive_fps:0,uint32_video_width:0,uint32_video_height:0,uint32_video_codec_bitrate:0,uint32_video_receive:0,uint32_video_origin_lost:0,uint32_video_block_time:0,uint32_video_dec_fps:0,uint32_video_codec_fps:0}],msg_network_status:{uint32_bitrate:0,uint32_rtt:0,uint32_lost:0}}]},y=yield o.getStats(a,c);return JSON.stringify(o._prevReport)==="{}"&&(o._prevReport=JSON.parse(JSON.stringify(C))),o.prepareReport({stats:y,report:C,freezeMap:d,uplinkConnection:a}),o._prevReportTime=Date.now(),C}()})}getMediaPlayoutStats(A){let e;if(wa(A)){for(let o of A)if(o.type==="media-playout"){let{synthesizedSamplesDuration:a,totalSamplesDuration:c}=o;e={synthesizedSamplesDuration:a,totalSamplesDuration:c};break}return e}}reset(){this._prevReportTime=0,this._prevReport={},this._prevEncoderImplementation="",this._prevQualityLimitationReason="",this._prevDecoderImplementationMap=new Map,[this.room.localMainVideoTrack,this.room.capturedLocalMainVideoTrack,this.room.localAuxVideoTrack,this.room.capturedLocalAuxVideoTrack].forEach(A=>{A!=null&&A.stat&&(A.stat.framesCaptured=0)})}},soA=gc(ql());function noA(A){return new Promise(e=>KA(null,null,function*(){let o=setTimeout(()=>{e({totalCost:1e4,local:0,dns:0,tcp:0,tls:0,request:0,response:0})},1e4),a=Date.now(),c="https://".concat(A,"/?t=").concat(a);try{yield fetch(c)}catch{}clearTimeout(o);let d=function(C){let y={totalCost:0,local:0,redirect:0,httpCache:0,dns:0,tcp:0,tls:0,request:0,response:0};try{let S=performance.getEntriesByType("resource").reverse();for(let b of S)if(b.name===C){let V=Math.round(b.duration),J=Math.max(Math.round(b.domainLookupStart-b.startTime),0),gA=b.redirectStart>0?Math.max(Math.round(b.redirectEnd-b.redirectStart),0):0,CA=b.fetchStart>0?Math.max(Math.round(b.domainLookupStart-b.fetchStart),0):0,MA=Math.round(b.domainLookupEnd-b.domainLookupStart),$A=Math.round(b.requestStart-b.secureConnectionStart),he=Math.round(b.secureConnectionStart-b.connectStart),Ye=Math.round(b.responseStart-b.requestStart),Me=Math.round(b.responseEnd-(b.responseStart||b.startTime));y=Qo(mi({},y),{totalCost:V,local:J,redirect:gA,httpCache:CA,dns:MA,tcp:he,tls:$A,request:Ye,response:Me});break}}catch{}return y}(c);d.totalCost===0&&(d.totalCost=Date.now()-a),e(d)}))}var M1=class v_ extends soA.default{constructor(e){let{signalChannel:o,room:a}=e;super(),Y(this,"_room"),Y(this,"_signalChannel"),Y(this,"_log"),Y(this,"uplinkRTT",0),Y(this,"uplinkLoss",0),Y(this,"downlinkRTT",0),Y(this,"downlinkLoss",0),Y(this,"pingResults",{}),Y(this,"_downlinkPrevStatMap",new Map),Y(this,"_downlinkLossAndRTTMap",new Map),Y(this,"_interval",-1),Y(this,"_uplinkNetworkQuality",0),Y(this,"_downlinkNetworkQuality",0),Y(this,"_uplinkQualityHistory",[]),Y(this,"_downlinkQualityHistory",[]),this._room=a,this._signalChannel=o,this._log=QA.createLogger({parent:a.getLogger(),id:"q",userId:this._room.userId,sdkAppId:this._room.sdkAppId}),this.initialize()}get uplinkNetworkQuality(){return this._uplinkNetworkQuality}set uplinkNetworkQuality(e){e!==this._uplinkNetworkQuality&&this._log.info("uplink ".concat(this.uplinkNetworkQuality," -> ").concat(e,", rtt: ").concat(this.uplinkRTT,", loss: ").concat(this.uplinkLoss," ws-rtt: ").concat(this._signalChannel.rtt)),this._uplinkNetworkQuality=e,this._uplinkQualityHistory.push(e),this._uplinkQualityHistory.length>v_.HISTORY_SIZE&&this._uplinkQualityHistory.shift()}get downlinkNetworkQuality(){return this._downlinkNetworkQuality}set downlinkNetworkQuality(e){if(e!==this._downlinkNetworkQuality){let{rtt:o,loss:a}=this.getAverageLossAndRTT([...this._downlinkLossAndRTTMap.values()]);this._log.info("downlink ".concat(this.downlinkNetworkQuality," -> ").concat(e,", rtt: ").concat(o,", loss: ").concat(a," ws-rtt: ").concat(this._signalChannel.rtt))}this._downlinkNetworkQuality=e,this._downlinkQualityHistory.push(e),this._downlinkQualityHistory.length>v_.HISTORY_SIZE&&this._downlinkQualityHistory.shift()}initialize(){this._signalChannel.on(ls.UPLINK_NETWORK_STATS,e=>{this.handleUplinkNetworkQuality(e)}),this._signalChannel.on(Ij,this.handleSignalConnectionStateChange.bind(this)),this.start()}handleUplinkNetworkQuality(e){var o,a;if(e.data.code!==0)return;let c=e.data.data;if(c.delay&&this.updateDelay(c.delay),this._room.signalChannel&&c.wsRtt&&(this._room.signalChannel.rtt=c.wsRtt),!this._room.uplinkConnection)return this.uplinkNetworkQuality=0,this.uplinkLoss=0,void(this.uplinkRTT=0);let d=(a=(o=this._room)==null?void 0:o.uplinkConnection)==null?void 0:a.getPeerConnection();if(d&&this.isPeerConnectionDisconnected(d))return this.uplinkNetworkQuality=6,this.uplinkLoss=0,void(this.uplinkRTT=0);let C=c.expectAudPkg+c.expectVidPkg,y=c.recvAudPkg+c.recvVidPkg,S=C-y;C===0&&y===0||(this.uplinkLoss=S<=0?0:Math.round(S/C*100),this.uplinkRTT=c.rtt,this.uplinkNetworkQuality=this.getNetworkQuality(this.uplinkLoss,this.uplinkRTT))}handleDownlinkNetworkQuality(){return KA(this,null,function*(){if(this._room.remotePublishedUserMap.size===0)return void(this.downlinkNetworkQuality=0);let e=[...this._room.remotePublishedUserMap.values()],o=new Set,a=e.filter(y=>{let S=y.getPeerConnection();return!(!S||o.has(S))&&(o.add(S),!0)}),c=a.filter(y=>{var S;return((S=y.getPeerConnection())==null?void 0:S.connectionState)===Eo.CONNECTED});if(a.filter(y=>this.isPeerConnectionDisconnected(y.getPeerConnection())).length===e.length)return void(this.downlinkNetworkQuality=6);for(let y=0;y{this.isPeerConnectionDisconnected(y)&&(this._downlinkPrevStatMap.delete(y),this._downlinkLossAndRTTMap.delete(y))}),this._downlinkLossAndRTTMap.size===0)return this.downlinkRTT=0,this.downlinkLoss=0,void(this.downlinkNetworkQuality=0);let{rtt:d,loss:C}=this.getAverageLossAndRTT([...this._downlinkLossAndRTTMap.values()]);this.downlinkRTT=d,this.downlinkLoss=C,this.downlinkNetworkQuality=this.getNetworkQuality(C,d)})}getStat(e){return KA(this,null,function*(){let o={rtt:0,totalPacketsLost:0,totalPacketsReceived:0};if(!e||!Ey())return o;let a=e.getReceivers();try{for(let c=0;c{d.type==="candidate-pair"&&bn(d.currentRoundTripTime)&&(o.rtt=Math.round(1e3*d.currentRoundTripTime)),d.type==="inbound-rtp"&&(d.mediaType===YA.AUDIO||d.mediaType===YA.VIDEO)&&(o.totalPacketsLost+=d.packetsLost,o.totalPacketsReceived+=d.packetsReceived)});return o.rtt===0&&(o.rtt=this.uplinkRTT),o}catch{return o}})}getAverageLossAndRTT(e){let o={rtt:0,loss:0};return Array.isArray(e)&&e.length>0&&(e.forEach(a=>{o.rtt+=a.rtt,o.loss+=a.loss}),Object.keys(o).forEach(a=>{o[a]=Math.round(o[a]/e.length)})),o}getNetworkQuality(e,o){return e>50||o>500?5:e>30||o>350?4:e>20||o>200?3:e>10||o>100?2:e>=0||o>=0?1:0}handleSignalConnectionStateChange(e){e.state==="DISCONNECTED"?(this.uplinkRTT=0,this.uplinkLoss=0,this.uplinkNetworkQuality=6):e.state==="CONNECTED"&&this.uplinkNetworkQuality===6&&(this.uplinkNetworkQuality=1)}handleUplinkConnectionStateChange(e){let{state:o}=e;o==="DISCONNECTED"?(this.uplinkLoss=0,this.uplinkRTT=0,this.uplinkNetworkQuality=6):o==="CONNECTED"&&this.uplinkNetworkQuality===6&&(this.uplinkNetworkQuality=5)}isPeerConnectionDisconnected(e){return!(!e||e.connectionState!==Eo.DISCONNECTED&&e.connectionState!==Eo.FAILED&&e.connectionState!==Eo.CLOSED)}setUplinkConnection(e){this._room.uplinkConnection=e,this._room.uplinkConnection?this._room.uplinkConnection.on("connection-state-changed",this.handleUplinkConnectionStateChange.bind(this)):(this.uplinkNetworkQuality=0,this.uplinkRTT=0,this.uplinkLoss=0)}start(){this._interval===-1?(this._log.debug("start network quality calculating"),this._interval=Tr.run("ric",()=>{var e;this.handleDownlinkNetworkQuality();let o=[...this._downlinkLossAndRTTMap.values()];F.emit(sA.NETWORK_QUALITY,{room:this._room,uplink:{rtt:this.uplinkRTT,loss:this.uplinkLoss},downlinks:o});let a=(e=this._room.scheduleResult.config)==null?void 0:e.pingDomainInfo,c={uplinkNetworkQuality:this.uplinkNetworkQuality,downlinkNetworkQuality:this.downlinkNetworkQuality,uplinkRTT:this.uplinkRTT,uplinkLoss:this.uplinkLoss,downlinkRTT:this.downlinkRTT,downlinkLoss:this.downlinkLoss};a&&(c=Qo(mi({},c),{pingResults:this.uplinkRTT>a.rttThreshold||this.downlinkRTT>a.rttThreshold?this.pingResults:{}})),this.emit(v_.EVENT_NETWORK_QUALITY,c);let d=Date.now();if(a&&(this.uplinkRTT>a.rttThreshold||this.downlinkRTT>a.rttThreshold)&&d-v_.lastPingTime>1e3*a.interval){v_.lastPingTime=Date.now();let C=a.domain.map(y=>noA(y).then(S=>({domain:y,cost:S.totalCost})));Promise.all(C).then(y=>{this.pingResults.isPoorNetwork=y.some(S=>S.cost>700),this.pingResults.timestamp=d,this.pingResults.data=y,y.forEach(S=>{Ai.addSuccessEvent({key:521718,cost:S.cost})}),this._log.warn("All ping results: ".concat(JSON.stringify(y)))}).catch(y=>{this._log.warn("Error during pinging domains: ".concat(y))})}},{delay:2e3})):this._log.info("network quality calculating is already started")}hadRecentBadUplink(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:2;return this._uplinkQualityHistory.some(o=>o>e)}hadRecentBadDownlink(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:2;return this._downlinkQualityHistory.some(o=>o>e)}stop(){this._log.debug("stopped"),this._interval!==-1&&(Tr.clearTask(this._interval),this._interval=-1),this._downlinkLossAndRTTMap.clear(),this._downlinkPrevStatMap.clear()}updateDelay(e){let{tinyIdToUserIdMap:o}=this._room;e.forEach(a=>{let{srcTinyId:c,videoDelay:d,audioDelay:C}=a,y=o.get(c);if(y){let S=this._room.remotePublishedUserMap.get(y);S?.setDelay({videoDelay:d,audioDelay:C})}})}};Y(M1,"HISTORY_SIZE",10),Y(M1,"EVENT_NETWORK_QUALITY","0"),Y(M1,"lastPingTime",0);var Tz=M1,Nz=class{constructor(A){Y(this,"_frameWorkType"),Y(this,"_component"),Y(this,"_language"),Y(this,"connectionType"),Y(this,"_room"),Y(this,"_signalInfo",{tinyId:void 0,clientIp:"",signalIp:"",relayIp:"",relayInnerIp:"",relayPort:0,endReportExtend:void 0,reportToken:void 0}),Y(this,"_keyPrefix"),Y(this,"_log"),Y(this,"_intervalId"),Y(this,"_firstPublishedUserList"),Y(this,"_networkQuality"),Y(this,"_basicInfo"),Y(this,"_pathJoinRoom"),Y(this,"_pathLeaveRoom"),Y(this,"_pathMainVideoMap"),Y(this,"_pathMainAudioMap"),Y(this,"_pathAuxiliaryMap"),Y(this,"_remoteStreamStatMap"),Y(this,"_localStreamStat"),Y(this,"_eventMap",new Map),Y(this,"_captureCostSum",0),Y(this,"_captureCostCount",0),Y(this,"isDestroyed",!1),this._frameWorkType=A.frameWorkType||30,this._component=A.component||0,this.connectionType=A.connectionType||1,this._language=A.language||0,this._room=A.room,this._keyPrefix="key_point",this._log=QA.createLogger({parent:this._room.getLogger(),id:"kpm",userId:this._room.userId,sdkAppId:this._room.sdkAppId}),Object.getOwnPropertyNames(this.__proto__).forEach(e=>{e.startsWith("handle")&&Ra(this[e])&&(this[e]=function(o){let{fn:a,context:c}=o;return function(){try{for(var d=arguments.length,C=new Array(d),y=0;yQA.error("".concat(a.name,"() error observed ").concat(b))):S}catch(S){QA.error("".concat(a.name,"() error observed ").concat(S))}}}({fn:this[e],context:this}))}),this.initData(),this.installEvents()}initData(){this._firstPublishedUserList=[],this._networkQuality={totalUplinkRTT:0,totalUplinkLoss:0,count:0,totalDownlinkRTTAndLossMap:new Map},this._basicInfo={string_sdk_version:Hd,uint32_os_type:15,string_device_name:"",string_http_user_agent:navigator.userAgent,string_os_version:"",uint32_avg_rtt:0,uint32_avg_up_loss:0,uint32_scene:this._room.scene==="live"?1:0,uint32_joining_duration:0,uint32_networkType:0,uint32_framework:this._frameWorkType,uint32_component:this._component,uint32_connection_type:this.connectionType,uint32_caller_coding_language:this._language,string_domain:location.hostname},this._pathJoinRoom={uint64_start_time:0,uint64_send_request_acc_ip_cmd_start_time:0,uint64_send_request_acc_ip_cmd_end_time:0,uint64_send_request_enter_room_cmd_start_time:0,uint64_send_request_enter_room_cmd_end_time:0,uint64_send_first_video_frame_time:0,uint64_recv_userlist_time:0,uint64_end_time:0,int32_send_request_acc_ip_cmd_ret:0,int32_send_request_enter_room_cmd_ret:0,int32_end_ret:0},this._pathLeaveRoom={uint64_start_time:0,uint64_send_request_exit_room_cmd_start_time:0,uint64_send_request_exit_room_cmd_end_time:0,uint64_end_time:0,int32_send_request_exit_room_cmd_ret:0,int32_end_ret:0},this._localStreamStat={totalVideoBitrate:0,totalVideoFPS:0,totalVideoHeight:0,totalVideoWidth:0,totalAudioLevel:0,videoCount:0,audioLevelCount:0,publishStartTime:0,statsToReport:{uint32_audio_capture_db:0,uint32_video_big_capture_fps:0,uint32_video_big_bitrate:0,uint32_video_big_resolution:0,uint32_audio_capture_thread_health_zero_cnt:0,uint32_after3a_silence_duration:0}},this._pathMainVideoMap=new Map,this._pathMainAudioMap=new Map,this._pathAuxiliaryMap=new Map,this._remoteStreamStatMap=new Map,hM().then(()=>{this._basicInfo.string_os_version=xp(),this._basicInfo.string_device_name=nQ()||this._basicInfo.string_os_version})}addEvent(A,e){return this._eventMap.set(A,e),F.on(A,e),this}installEvents(){this.handleUnload=this.handleUnload.bind(this),window.addEventListener("pagehide",this.handleUnload),this._room.once("banned",()=>this.handleLeaveSuccess({room:this._room,roomId:this._room.roomId})),this.addEvent(sA.JOIN_START,this.handleJoinStart).addEvent(sA.JOIN_SCHEDULE_SUCCESS,this.handleJoinScheduleSuccess).addEvent(sA.JOIN_SIGNAL_CONNECTION_START,this.handleSignalConnectionStart).addEvent(sA.JOIN_SIGNAL_CONNECTION_END,this.handleSignalConnectionEnd).addEvent(sA.JOIN_SEND_CMD,this.handleJoinSendCMD).addEvent(sA.JOIN_RECEIVED_CMD_RES,this.handleJoinReceivedCMDResponce).addEvent(sA.JOIN_SUCCESS,this.handleJoinSuccess).addEvent(sA.JOIN_FAILED,this.handleJoinFailed).addEvent(sA.LEAVE_START,this.handleLeaveStart).addEvent(sA.LEAVE_SUCCESS,this.handleLeaveSuccess).addEvent(sA.LEAVE_SEND_CMD,this.handleLeaveSendCMD).addEvent(sA.LOCAL_TRACK_CAPTURE_START,this.handleTrackCaptureStart).addEvent(sA.LOCAL_TRACK_CAPTURE_SUCCESS,this.handleTrackCaptureSuccess).addEvent(sA.LOCAL_TRACK_CAPTURE_FAILED,this.handleTrackCaptureFailed).addEvent(sA.PUBLISH_START,this.handlePublishStart).addEvent(sA.SEND_FIRST_VIDEO_FRAME,this.handleSendFirstVideoFrame).addEvent(sA.SUBSCRIBE_START,this.handleSubscribeStart).addEvent(sA.SUBSCRIBE_SUCCESS,this.handleSubscribed).addEvent(sA.PLAY_TRACK_START,this.handlePlayStart).addEvent(sA.VIDEO_LOADED_DATA,this.handleVideoLoadedData).addEvent(sA.PLAYER_STATE_CHANGED,A=>{let{track:e,state:o,type:a}=A;!e.isRemote||!this.hitTest(e.room)||o==="PLAYING"&&(a===YA.AUDIO?this.handleAudioPlaying(e):this.handleVideoPlaying(e))}).addEvent(sA.SWITCH_ROOM_START,this.handleSwitchRoomStart).addEvent(sA.SWITCH_ROOM_SUCCESS,this.handleSwitchRoomSuccess).addEvent(sA.SWITCH_ROOM_FAILED,this.handleSwitchRoomFailed).addEvent(sA.NETWORK_QUALITY,this.handleNetworkQuality).addEvent(sA.HEARTBEAT_REPORT,this.handleHeartbeatStats).addEvent(sA.RECEIVED_PUBLISHED_USER_LIST,this.handleReceivedPublishUserList).addEvent(sA.REMOTE_PUBLISH_STATE_CHANGED,A=>{let{room:e,prevMuteState:o,muteState:a}=A;if(!this.hitTest(e))return;let c=o.hasAudio||o.hasVideo||o.hasSmall,d=o.hasAuxiliary,C=a.hasAudio||a.hasVideo||a.hasSmall,y=a.hasAuxiliary;!c&&C&&this.handleRemoteStreamAdded(a.userId,"main"),!d&&y&&this.handleRemoteStreamAdded(a.userId,"auxiliary")}).addEvent(sA.SINGLE_CONNECTION_STAT,A=>{let{room:e,stat:o}=A;this.hitTest(e)&&(this._pathJoinRoom.int32_ice_cost=o.ice,this._pathJoinRoom.int32_dtls_cost=o.dtls,this._pathJoinRoom.int32_peer_connection_cost=o.peerConnection)})}uninstallEvents(){window.removeEventListener("pagehide",this.handleUnload),this._eventMap.forEach((A,e)=>F.off(e,A)),this._eventMap.clear()}destroy(){this.uninstallEvents(),Tr.clearTask(this._intervalId),this._pathJoinRoom.uint64_start_time===0&&(this._room=null),this.isDestroyed=!0}handleUnload(){this._room.isJoined&&this.handleLeaveSuccess({room:this._room,roomId:this._room.roomId})}handleJoinStart(A){this.hitTest(A.room)&&(this._pathJoinRoom.uint64_start_time===0&&(this._pathJoinRoom.uint64_start_time=Date.now()),A.params&&(Je(A.params.frameWorkType)||(this._frameWorkType=A.params.frameWorkType,this._basicInfo.uint32_framework=this._frameWorkType),Je(A.params.component)||(this._component=A.params.component,this._basicInfo.uint32_component=this._component),Je(A.params.language)||(this._language=A.params.language,this._basicInfo.uint32_caller_coding_language=this._language)))}handleJoinScheduleSuccess(A){let{room:e,detailCost:o}=A;if(this.hitTest(e)&&o){let{totalCost:a,local:c,dns:d,tcp:C,tls:y,request:S,response:b}=o;this._pathJoinRoom.int32_schedule_cost=a,this._pathJoinRoom.int32_schedule_local=c,this._pathJoinRoom.int32_schedule_dns=d,this._pathJoinRoom.int32_schedule_tcp=C,this._pathJoinRoom.int32_schedule_tls=y,this._pathJoinRoom.int32_schedule_request=S,this._pathJoinRoom.int32_schedule_response=b}}handleSignalConnectionStart(A){let{room:e}=A;this.hitTest(e)&&this._pathJoinRoom.uint64_send_request_acc_ip_cmd_start_time===0&&(this._pathJoinRoom.uint64_send_request_acc_ip_cmd_start_time=Date.now())}handleSignalConnectionEnd(A){let{room:e,error:o}=A;this.hitTest(e)&&this._pathJoinRoom.uint64_send_request_acc_ip_cmd_end_time===0&&(this._pathJoinRoom.uint64_send_request_acc_ip_cmd_end_time=Date.now(),o&&(this._pathJoinRoom.int32_send_request_acc_ip_cmd_ret=o instanceof si?Number(o.getExtraCode()||o.getCode()):Et.UNKNOWN,this._pathJoinRoom.int32_end_ret=this._pathJoinRoom.int32_send_request_acc_ip_cmd_ret))}handleJoinSendCMD(A){this.hitTest(A.room)&&this._pathJoinRoom.uint64_send_request_enter_room_cmd_start_time===0&&(this._pathJoinRoom.uint64_send_request_enter_room_cmd_start_time=Date.now())}handleJoinReceivedCMDResponce(A){this.hitTest(A.room)&&this._pathJoinRoom.uint64_send_request_enter_room_cmd_end_time===0&&(this._pathJoinRoom.uint64_send_request_enter_room_cmd_end_time=Date.now(),this._pathJoinRoom.int32_send_request_enter_room_cmd_ret=A.code,A.code!==0&&(this._pathJoinRoom.int32_end_ret=this._pathJoinRoom.int32_send_request_enter_room_cmd_ret))}handleJoinSuccess(A){this.hitTest(A.room)&&this._pathJoinRoom.uint64_end_time===0&&(this._pathJoinRoom.uint64_end_time=Date.now(),this._pathJoinRoom.int32_end_ret=0,this._signalInfo=A.room.getSignalInfo())}handleJoinFailed(A){let{room:e,error:o}=A;this.hitTest(e)&&(this._pathJoinRoom.uint64_end_time=Date.now(),this._pathJoinRoom.int32_end_ret===0&&(this._pathJoinRoom.int32_end_ret=o.code||this._pathJoinRoom.int32_send_request_enter_room_cmd_ret||this._pathJoinRoom.int32_send_request_acc_ip_cmd_ret),setTimeout(()=>{this.report()}))}handleReceivedPublishUserList(A){this.hitTest(A.room)&&this._pathJoinRoom.uint64_recv_userlist_time===0&&(this._pathJoinRoom.uint64_recv_userlist_time=Date.now(),this._firstPublishedUserList=A.publishedUserList||[])}handleSendFirstVideoFrame(A){let{room:e}=A;this.hitTest(e)&&this._pathJoinRoom.uint64_send_first_video_frame_time===0&&this._pathJoinRoom.uint64_start_time!==0&&(this._pathJoinRoom.uint64_send_first_video_frame_time=Date.now())}handleLeaveStart(A){this.hitTest(A.room)&&(this._pathLeaveRoom.uint64_start_time=Date.now())}handleLeaveSuccess(A){var e;if(this.hitTest(A.room)&&this._pathLeaveRoom.uint64_end_time===0){if(this._pathLeaveRoom.uint64_end_time=Date.now(),this._pathJoinRoom.uint64_end_time!==0){this._basicInfo.uint32_joining_duration=this._pathLeaveRoom.uint64_end_time-this._pathJoinRoom.uint64_end_time;let o=(e=this._room.audioManager.localAudioTrack)==null?void 0:e.after3aSilenceStartTime;o&&(this._localStreamStat.statsToReport.uint32_after3a_silence_duration=ko()-o)}else this._log.warn("pathJoinRoom endTime is 0");this.report()}}handleLeaveSendCMD(A){this.hitTest(A.room)&&(this._pathLeaveRoom.uint64_send_request_exit_room_cmd_start_time=Date.now(),this._pathLeaveRoom.uint64_send_request_exit_room_cmd_end_time=Date.now())}handleSwitchRoomStart(A){if(this.hitTest(A.room)){let e=Date.now();this.report().then(()=>{this._pathJoinRoom.uint64_start_time=e,this._pathJoinRoom.uint64_send_request_enter_room_cmd_start_time=e})}}handleSwitchRoomSuccess(A){let{room:e}=A;if(this.hitTest(e)&&this._pathJoinRoom.uint64_end_time===0){let o=Date.now();this._pathJoinRoom.uint64_send_request_enter_room_cmd_end_time=o,this._pathJoinRoom.uint64_end_time=o,this._pathJoinRoom.int32_end_ret}}handleSwitchRoomFailed(A){let{room:e,error:o}=A;if(this.hitTest(e)){let a=Date.now();this._pathJoinRoom.uint64_send_request_enter_room_cmd_end_time=a,this._pathJoinRoom.uint64_end_time=a,o&&(this._pathJoinRoom.int32_end_ret=o instanceof si?Number(o.getExtraCode()||o.getCode()):Et.UNKNOWN)}}handleRemoteStreamAdded(A,e){var o;let a="".concat(A,"_").concat(e);if(!this._remoteStreamStatMap.has(a)){let c={userId:A,totalVideoFPS:0,totalVideoBitrate:0,totalAudioLevel:0,totalAudioBitrate:0,totalLoss:0,audioCount:0,audioLevelCount:0,videoCount:0,networkQualityCount:0,streamAddedTime:Date.now(),subscribeStartTime:0,subscribedTime:0,playStreamTime:0,statsToReport:Qo(mi({},roA),{msg_user_info:new Bj({userId:A,tinyId:(o=this._room.remotePublishedUserMap.get(A))==null?void 0:o.tinyId,role:20})})};c.statsToReport.uint32_stream_type=e==="main"?2:7,this._remoteStreamStatMap.set(a,c)}}handleSubscribeStart(A){let{room:e,remotePublishedUser:o,streamType:a,subscribeState:c}=A;if(!this.hitTest(e))return;let{userId:d,tinyId:C,role:y}=o,S=new Bj({userId:d,tinyId:C,role:y==="anchor"?20:21}),b=Date.now(),V="".concat(d,"_").concat(a),J=this._remoteStreamStatMap.get(V);J&&J.subscribeStartTime===0&&(J.subscribeStartTime=b),a==="main"?(o.muteState.hasVideo&&(c.video||c.smallVideo)&&!this._pathMainVideoMap.has(V)&&this._pathMainVideoMap.set(V,{statsToReport:{msg_user_info:S,uint64_start_enter_time:this._pathJoinRoom.uint64_start_time,uint64_render_first_frame_time:0,uint64_combine_first_frame_time:0},userId:d,sendSubscribeCMDTime:b}),o.muteState.hasAudio&&c.audio&&!this._pathMainAudioMap.has(V)&&this._pathMainAudioMap.set(V,{statsToReport:{msg_user_info:S,uint64_start_enter_time:this._pathJoinRoom.uint64_start_time,uint64_play_first_frame_time:0},userId:d,sendSubscribeCMDTime:b})):o.muteState.hasAuxiliary&&c.auxiliary&&!this._pathAuxiliaryMap.has(V)&&this._pathAuxiliaryMap.set(V,{sendSubscribeCMDTime:b})}handleSubscribed(A){let{room:e,remotePublishedUser:o,streamType:a}=A;if(this.hitTest(e)){let c="".concat(o.userId,"_").concat(a),d=this._remoteStreamStatMap.get(c);d&&d.subscribedTime===0&&(d.subscribedTime=Date.now())}}handlePlayStart(A){let{track:e}=A;if(!e.isRemote||!this.hitTest(e.room))return;let o="".concat(e.userId,"_").concat(e.streamType),a=this._remoteStreamStatMap.get(o);a?.playStreamTime===0&&(a.playStreamTime=Date.now())}handleVideoLoadedData(A){let{track:e}=A;if(!e.isRemote||!this.hitTest(e.room))return;let o="".concat(e.userId,"_").concat(e.streamType),a=this._pathMainVideoMap.get(o);a&&a.statsToReport.uint64_combine_first_frame_time===0&&(a.statsToReport.uint64_combine_first_frame_time=Date.now())}handleVideoPlaying(A){let e="".concat(A.userId,"_").concat(A.streamType),o=Date.now(),a=this._pathMainVideoMap.get(e),c=this._remoteStreamStatMap.get(e);if(c){let{statsToReport:d}=c;if(d.uint32_video_render_first||A.streamType!=="main"?this.hasAuxFlag(A.userId):this.hasVideoFlag(A.userId)){let C=o-this._pathJoinRoom.uint64_start_time;d.uint32_video_render_first=C,Ai.addNumber({key:516820,value:C})}}a?.statsToReport.uint64_render_first_frame_time===0&&(a.statsToReport.uint64_render_first_frame_time=o)}handleAudioPlaying(A){let e="".concat(A.userId,"_").concat(A.streamType),o=this._pathMainAudioMap.get(e);o&&o.statsToReport.uint64_play_first_frame_time===0&&(o.statsToReport.uint64_play_first_frame_time=Date.now())}handleNetworkQuality(A){this.hitTest(A.room)&&(this._networkQuality.totalUplinkLoss+=A.uplink.loss,this._networkQuality.totalUplinkRTT+=A.uplink.rtt,this._networkQuality.count++,A.downlinks.forEach(e=>{let{rtt:o,loss:a,userId:c,videoDelay:d,audioDelay:C}=e,y=this._networkQuality.totalDownlinkRTTAndLossMap.get(c);if(y)y.totalRTT+=o,y.totalLoss+=a,d&&(y.totalVideoDelay=(y.totalVideoDelay||0)+d,y.videoDelayCount=(y.videoDelayCount||0)+1),C&&(y.totalAudioDelay=(y.totalAudioDelay||0)+C,y.audioDelayCount=(y.audioDelayCount||0)+1),y.count++;else{let S,b,V,J;d&&(b=d,V=1),C&&(S=C,J=1),this._networkQuality.totalDownlinkRTTAndLossMap.set(c,{totalRTT:o,totalLoss:a,count:1,totalAudioDelay:S,totalVideoDelay:b,audioDelayCount:J,videoDelayCount:V})}}))}handleHeartbeatStats(A){var e;if(this.hitTest(A.room)){let{msg_device_info:o,msg_up_stream_info:a,msg_down_stream_info:c}=A.report;if(a.msg_video_status[0]){let{uint32_video_codec_bitrate:d,uint32_video_enc_fps:C,uint32_video_width:y,uint32_video_height:S}=a.msg_video_status[0];this._localStreamStat.totalVideoBitrate+=d,this._localStreamStat.totalVideoFPS+=C,this._localStreamStat.totalVideoWidth+=y,this._localStreamStat.totalVideoHeight+=S,this._localStreamStat.videoCount++}if(a.msg_audio_status){let{uint32_audio_level:d}=a.msg_audio_status;Math.floor(d/Ad*100)>0&&(this._localStreamStat.totalAudioLevel+=d/Ad,this._localStreamStat.audioLevelCount++)}c.forEach(d=>{let{msg_user_info:C,msg_audio_status:y,msg_video_status:S}=d,b=C.str_identifier,V=this._room.remotePublishedUserMap.get(b);if(S.forEach(J=>{let gA=J.uint32_video_stream_type===2,CA=J.uint32_video_stream_type===7,MA="".concat(b,"_").concat(gA?"main":"auxiliary"),$A=this._remoteStreamStatMap.get(MA);if($A&&(gA&&V!=null&&V.remoteVideoTrack.isSubscribed||CA&&V!=null&&V.remoteAuxiliaryTrack)){$A.totalVideoFPS+=J.uint32_video_receive_fps,$A.totalVideoBitrate+=J.uint32_video_codec_bitrate,$A.videoCount++,$A.statsToReport.uint32_video_width===0&&($A.statsToReport.uint32_video_width=J.uint32_video_width),$A.statsToReport.uint32_video_height===0&&($A.statsToReport.uint32_video_height=J.uint32_video_height);let he=gA?V.remoteVideoTrack:V.remoteAuxiliaryTrack;he.stat.jitterBufferDelay&&($A.videoJitterBufferDelay=he.stat.jitterBufferDelay),he.stat.framesReceived&&($A.statsToReport.uint32_video_consume_render_rate=Math.floor(he.stat.framesDecoded/he.stat.framesReceived*LS(10,6)))}}),!m0(y)){let J="".concat(b,"_main"),gA=this._remoteStreamStatMap.get(J);this._remoteStreamStatMap.has(J)&&gA&&V!=null&&V.remoteAudioTrack.isSubscribed&&(gA.totalAudioBitrate+=y.uint32_audio_codec_bitrate,gA.audioCount++,V.remoteAudioTrack.stat.jitterBufferDelay&&(gA.audioJitterBufferDelay=V.remoteAudioTrack.stat.jitterBufferDelay),Math.floor(y.uint32_audio_level/Ad*100)>0&&(gA.totalAudioLevel+=y.uint32_audio_level/Ad,gA.audioLevelCount++),y.uint32_audio_block_time&&(gA.statsToReport.uint32_audio_block_time+=y.uint32_audio_block_time))}}),o.uint32_audio_capture_cost&&(this._captureCostSum+=o.uint32_audio_capture_cost,this._captureCostCount+=1,this._captureCostCount>=100&&(this._basicInfo.uint32_audio_capture_cost=Math.floor(this._captureCostSum/this._captureCostCount),this._captureCostSum=0,this._captureCostCount=0)),o.uint32_audio_capture_cost===0&&((e=this._room.audioManager.localAudioTrack)==null?void 0:e.muted)===!1&&(this._localStreamStat.statsToReport.uint32_audio_capture_thread_health_zero_cnt+=1)}}handlePublishStart(A){let{room:e}=A;this.hitTest(e)&&this._localStreamStat.publishStartTime===0&&(this._localStreamStat.publishStartTime=Date.now())}handleTrackCaptureStart(A){let{track:e}=A;e.mediaType===1&&!this._pathJoinRoom.uint64_init_audio_start_time&&(this._pathJoinRoom.uint64_init_audio_start_time=Date.now()),e.mediaType===4&&!this._pathJoinRoom.uint64_init_camera_start_time&&(this._pathJoinRoom.uint64_init_camera_start_time=Date.now())}handleTrackCaptureSuccess(A){let{track:e}=A;e.mediaType===1&&!this._pathJoinRoom.uint64_init_audio_end_time&&(this._pathJoinRoom.int32_init_audio_ret=0,this._pathJoinRoom.uint64_init_audio_end_time=Date.now()),e.mediaType===4&&!this._pathJoinRoom.uint64_init_camera_end_time&&(this._pathJoinRoom.int32_init_camera_ret=0,this._pathJoinRoom.uint64_init_camera_end_time=Date.now())}handleTrackCaptureFailed(A){let{track:e,error:o}=A,a={NotFoundError:1,NotAllowedError:2,NotReadableError:3,OverConstrainedError:4,AbortError:5,InvalidStateError:6,SecurityError:7,TypeError:8}[o.name]||(o instanceof si?o.getExtraCode()||o.getCode():Et.UNKNOWN);e.mediaType===1&&!this._pathJoinRoom.uint64_init_audio_end_time&&(this._pathJoinRoom.int32_init_audio_ret=a,this._pathJoinRoom.uint64_init_audio_end_time=Date.now()),e.mediaType===4&&!this._pathJoinRoom.uint64_init_camera_end_time&&(this._pathJoinRoom.int32_init_camera_ret=a,this._pathJoinRoom.uint64_init_camera_end_time=Date.now())}hasVideoFlag(A){return this._firstPublishedUserList.findIndex(e=>e.userId===A&&e.flag&xS)>=0}hasAudioFlag(A){return this._firstPublishedUserList.findIndex(e=>e.userId===A&&e.flag&VS)>=0}hasAuxFlag(A){return this._firstPublishedUserList.findIndex(e=>e.userId===A&&e.flag&YS)>=0}hitTest(A){return A===this._room}prepareReport(){if(this._captureCostCount>0&&!this._basicInfo.uint32_audio_capture_cost&&(this._basicInfo.uint32_audio_capture_cost=Math.floor(this._captureCostSum/this._captureCostCount),this._captureCostSum=0,this._captureCostCount=0),this._networkQuality.count>0&&(this._basicInfo.uint32_avg_rtt=Math.floor(this._networkQuality.totalUplinkRTT/this._networkQuality.count),this._basicInfo.uint32_avg_up_loss=Math.floor(this._networkQuality.totalUplinkLoss/this._networkQuality.count)),this._localStreamStat.videoCount>0){this._localStreamStat.statsToReport.uint32_video_big_capture_fps=Math.floor(this._localStreamStat.totalVideoFPS/this._localStreamStat.videoCount),this._localStreamStat.statsToReport.uint32_video_big_bitrate=Math.floor(this._localStreamStat.totalVideoBitrate/this._localStreamStat.videoCount);let A=Math.floor(this._localStreamStat.totalVideoWidth/this._localStreamStat.videoCount),e=Math.floor(this._localStreamStat.totalVideoHeight/this._localStreamStat.videoCount);this._localStreamStat.statsToReport.uint32_video_big_resolution=A<<16|e}this._localStreamStat.audioLevelCount>0&&(this._localStreamStat.statsToReport.uint32_audio_capture_db=Math.floor(this._localStreamStat.totalAudioLevel/this._localStreamStat.audioLevelCount*100)),this._remoteStreamStatMap.forEach((A,e)=>{let{userId:o}=A,a=this._networkQuality.totalDownlinkRTTAndLossMap.get(o);if(a){let{totalLoss:b,count:V,audioDelayCount:J,videoDelayCount:gA,totalAudioDelay:CA,totalVideoDelay:MA}=a;A.statsToReport.uint32_avg_down_loss=Math.floor(b/V),J&&CA&&(A.statsToReport.uint32_audio_network_p2p_delay=Math.floor(CA/J),A.audioJitterBufferDelay&&(A.statsToReport.uint32_p2p_delay=Math.floor(A.statsToReport.uint32_audio_network_p2p_delay+A.audioJitterBufferDelay))),gA&&MA&&(A.statsToReport.uint32_video_network_p2p_delay=Math.floor(MA/gA))}A.videoCount>0&&(A.statsToReport.uint32_video_avg_fps=Math.floor(A.totalVideoFPS/A.videoCount),A.statsToReport.uint32_video_avg_bitrate=Math.floor(A.totalVideoBitrate/A.videoCount)),A.audioCount>0&&(A.statsToReport.uint32_audio_recv_bitrate=A.statsToReport.uint32_audio_bitrate=Math.floor(A.totalAudioBitrate/A.audioCount)),A.audioLevelCount>0&&(A.statsToReport.uint32_audio_play_db=Math.floor(A.totalAudioLevel/A.audioLevelCount*100));let{callDurationCalculator:c}=this._room;c&&(A.statsToReport.uint32_audio_play_time=c.getDuration(e,YA.AUDIO),A.statsToReport.uint32_video_play_time=c.getDuration(e,YA.VIDEO)),A.statsToReport.uint32_video_render_first&&(A.statsToReport.uint32_video_render_first=Math.min(A.statsToReport.uint32_video_render_first,KM));let{badCaseDetector:d}=this._room,{dataFreeze:C,count:y}=d.getDataFreezeDuration(e),{renderFreeze:S}=d.getRenderFreezeDuration(e);A.statsToReport.uint32_video_block_count=y,A.statsToReport.uint32_video_block_time=Math.min(C,A.statsToReport.uint32_video_play_time),A.statsToReport.uint32_video_external_block_time=Math.min(S,A.statsToReport.uint32_video_play_time),A.statsToReport.uint32_audio_block_time=Math.min(A.statsToReport.uint32_audio_block_time,A.statsToReport.uint32_audio_play_time),d.isBlackStream(e)&&A.statsToReport.uint32_video_avg_fps===0?A.statsToReport.uint32_video_black_screen_subjective=1:A.statsToReport.uint32_video_black_screen_subjective=0}),this._pathMainAudioMap.forEach((A,e)=>{this.hasAudioFlag(A.userId)?A.statsToReport.uint64_play_first_frame_time-A.statsToReport.uint64_start_enter_time>KM&&(A.statsToReport.uint64_play_first_frame_time=A.statsToReport.uint64_start_enter_time+KM):this._pathMainAudioMap.delete(e)}),this._pathMainVideoMap.forEach((A,e)=>{this.hasVideoFlag(A.userId)?A.statsToReport.uint64_render_first_frame_time-A.statsToReport.uint64_start_enter_time>KM&&(A.statsToReport.uint64_render_first_frame_time=A.statsToReport.uint64_start_enter_time+KM):this._pathMainVideoMap.delete(e)}),this._pathJoinRoom.uint64_end_time-this._pathJoinRoom.uint64_start_time>KM&&(this._pathJoinRoom.uint64_end_time=this._pathJoinRoom.uint64_start_time+KM)}getReportData(){this._basicInfo.uint32_networkType=Hf();let A={uint32_sdk_app_id:Number(this._room.sdkAppId),msg_user_info:new Bj({userId:this._room.userId,tinyId:this._room.tinyId,role:this._room.role==="anchor"?20:21}),msg_basic_info:this._basicInfo,uint32_acc_ip:AM(this._signalInfo.relayIp),uint32_client_ip:AM(this._signalInfo.clientIp,!1),uint32_acc_port:this._signalInfo.relayPort||0,uint64_timestamp:Date.now(),uint32_seq:Math.floor(Math.random()*LS(2,31)),msg_path_enter_room:this._pathJoinRoom,msg_path_exit_room:this._pathLeaveRoom,msg_path_recv_video:[...this._pathMainVideoMap.values()].map(e=>e.statsToReport),msg_quality_statistics:[...this._remoteStreamStatMap.values()].map(e=>e.statsToReport),str_room_name:String(this._room.roomId||0),msg_path_recv_audio:[...this._pathMainAudioMap.values()].map(e=>e.statsToReport),uint32_info_client_ip:AM(this._signalInfo.clientIp,!1),error_code:[],msg_local_statistics:this._localStreamStat.statsToReport,bytes_report_buf_from_0x1:this._signalInfo.endReportExtend,str_user_sig:this._room.userSig,bytes_report_token:this._signalInfo.reportToken};return D0(A),A}report(){return KA(this,null,function*(){try{this.prepareReport();let A=this.getReportData();yield this.upload(A),this.initData()}catch(A){this._log.warn(A)}finally{this.isDestroyed&&(this._room=null)}})}upload(A){return KA(this,null,function*(){if(A.msg_path_enter_room.uint64_start_time===0)return;let e=Number(this._room.sdkAppId),o=_A.enable?$B(A,2001,e):yield qb(A),a=o instanceof ArrayBuffer,c="".concat(Jf(e,GI.KEY_POINT),"&gzip=").concat(+a),d=!1;navigator.sendBeacon&&(d=navigator.sendBeacon(c,o));let C=[this.uploadKVStat(Ai),this.uploadKVStat(zh)];d||C.push(AQ({url:c,body:o,priority:"low"})),yield Promise.all(C)})}setConnectionType(A){this.connectionType=A,this._basicInfo.uint32_connection_type=A}uploadKVStat(A){return KA(this,arguments,function(e){var o=this;let a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this._room.sdkAppId;return function*(){var c,d;let C=e.getReportData((c=o._room)==null?void 0:c.userSig,(d=o._signalInfo)==null?void 0:d.reportToken);if(C.stats_count.length===0&&C.stats_distribution.length===0)return;C.msg_sdk_basic_info=Qo(mi({},C.msg_sdk_basic_info),{bytes_device_name:o._basicInfo.string_device_name||"",bytes_os_version:o._basicInfo.string_os_version||"",uint32_framework:o._frameWorkType,uint32_network_type:o._basicInfo.uint32_networkType||0}),o._log.debug(C);let y=_A.enable?$B(C,2003,a):yield qb(C),S=y instanceof ArrayBuffer,b="".concat(Jf(+a,GI.KV_STAT),"&gzip=").concat(+S),V=!1;navigator.sendBeacon&&(V=navigator.sendBeacon(b,y)),V||AQ({url:b,body:y})}()})}};di([Xh({settings:{timeout:500,retries:3}})],Nz.prototype,"upload");var KM=5e3,roA={msg_user_info:null,uint32_video_avg_fps:0,uint32_video_width:0,uint32_video_height:0,uint32_video_avg_bitrate:0,uint32_video_block_time:0,uint32_video_play_time:0,uint32_audio_block_time:0,uint32_audio_play_time:0,uint32_audio_play_db:0,uint32_avg_down_loss:0,uint32_stream_type:0,uint32_video_block_count:0,uint32_audio_block_count:0,uint32_audio_bitrate:0,uint32_video_black_screen_subjective:0,uint32_audio_recv_bitrate:0,uint32_video_external_block_time:0,uint32_video_consume_render_rate:0},Bj=class{constructor(A){Y(this,"str_identifier"),Y(this,"str_tinyid"),Y(this,"uint32_role"),this.str_identifier=String(A.userId),this.str_tinyid=String(A.tinyId||0),this.uint32_role=A.role}},aoA=Nz,Gz=class{constructor(){Y(this,"_startTime"),Y(this,"_endTime"),this._startTime=0,this._endTime=0,this.start()}start(){this._startTime===0&&(this._startTime=ko())}stop(){this._endTime===0&&(this._endTime=ko())}getDuration(){return this._endTime===0?ko()-this._startTime:this._endTime-this._startTime}get startTime(){return this._startTime}get endTime(){return this._endTime}},goA=class{constructor(A){Y(this,"_room",null),Y(this,"_durationMap"),Y(this,"_eventMap",new Map),this._room=A.room,this._durationMap=new Map,this.installEvents()}installEvents(){this._eventMap.set(sA.REMOTE_TRACK_SUBSCRIBED,this.handleSubscribed).set(sA.REMOTE_TRACK_UNSUBSCRIBED,this.handleUnsubscribed).set(sA.REMOTE_PUBLISH_STATE_CHANGED,A=>{let{room:e,prevMuteState:o,muteState:a}=A;var c;let{userId:d}=a;if(!this.hitTest(e))return;o.hasAudio&&!a.hasAudio&&this.stopDurationItem("".concat(d,"_main"),YA.AUDIO),o.hasVideo&&!a.hasVideo&&this.stopDurationItem("".concat(d,"_main"),YA.VIDEO),o.hasAuxiliary&&!a.hasAuxiliary&&this.stopDurationItem("".concat(d,"_auxiliary"),YA.VIDEO);let C=(c=this._room)==null?void 0:c.remotePublishedUserMap.get(d);C&&(!o.hasAudio&&a.hasAudio&&C.remoteAudioTrack.isSubscribed&&this.addDuractionItem(d,YA.AUDIO,"main"),!o.hasVideo&&a.hasVideo&&C.remoteVideoTrack.isSubscribed&&this.addDuractionItem(d,YA.VIDEO,"main"),!o.hasAuxiliary&&a.hasAuxiliary&&C.remoteAuxiliaryTrack.isSubscribed&&this.addDuractionItem(d,YA.VIDEO,"auxiliary"))}),this._eventMap.forEach((A,e)=>F.on(e,A,this))}uninstallEvents(){this._eventMap.forEach((A,e)=>F.off(e,A,this)),this._eventMap.clear()}handleSubscribed(A){let{track:e}=A;if(!this.hitTest(e.room))return;let{userId:o,streamType:a,kind:c}=e;e.isSubscribed?this.addDuractionItem(o,c,a):this.stopDurationItem("".concat(o,"_").concat(a),c)}handleUnsubscribed(A){let{track:e}=A;this.hitTest(e.room)&&this.stopDurationItem("".concat(e.userId,"_").concat(e.streamType),e.kind)}isRecording(A){return A.findIndex(e=>e.endTime===0)>=0}addDuractionItem(A,e,o){let a="".concat(A,"_").concat(o),c=new Gz,d=this._durationMap.get(a);d?this.isRecording(d[e])||d[e].push(c):this._durationMap.set(a,{userId:A,type:o,audio:e===YA.AUDIO?[c]:[],video:e===YA.AUDIO?[]:[c]})}stopDurationItem(A,e){if(this._durationMap.has(A)){let o=this._durationMap.get(A)[e].find(a=>a.endTime===0);o&&o.stop()}}hitTest(A){return this._room===A}getDuration(A,e){return this._durationMap.has(A)?this._durationMap.get(A)[e].reduce((o,a)=>o+a.getDuration(),0):0}getDurationMap(){return this._durationMap}reset(){this._durationMap.clear()}destroy(){this._room=null,this.uninstallEvents()}},coA=class{constructor(){Y(this,"renderFreezeMap",new Map),Y(this,"dataFreezeMap",new Map)}get(A,e){let o=this.renderFreezeMap.get(A),a=this.dataFreezeMap.get(A);return e?e==="data"?a:o:(Bg||er)&&o&&a&&o.duration>a.duration?o:a}set(A,e,o){o==="data"?this.dataFreezeMap.set(A,e):this.renderFreezeMap.set(A,e)}clear(){this.renderFreezeMap.clear(),this.dataFreezeMap.clear()}},loA=class{constructor(A){Y(this,"_room"),Y(this,"_renderFreezeMap",new Map),Y(this,"_isVideoPlayingEventFiredMap",new Map),Y(this,"_dataFreezeMap",new Map),Y(this,"_monitorFreezeData",new coA),Y(this,"_eventMap",new Map),Y(this,"_videoEncodeFailedCount",0),Y(this,"_audioEncodeFailedCount",0),Y(this,"_encodeFailedThreshold",3),Y(this,"ABNORMAL_TIME_LOWER_LIMIT",3e3),Y(this,"ABNORMAL_TIME_UPPER_LIMIT",5e3),Y(this,"_videoAbnormalTimestampMap",new Map),Y(this,"_remoteVideoAbnormalTimestampMap",new Map),Y(this,"_audioAbnormalTimestampMap",new Map),Y(this,"eventListenerMap",new Map),this._room=A.room,this.installEvents()}getRenderFreezeMap(){return this._renderFreezeMap}getDataFreezeMap(){return this._dataFreezeMap}installEvents(){this._eventMap.set(sA.LEAVE_SUCCESS,A=>{let{room:e}=A;this.hitTest(e)&&this.stop()}).set(sA.PLAY_TRACK_START,this.onPlayTrackStart).set(sA.UNSUBSCRIBE_SUCCESS,A=>{let{room:e,streamType:o,remotePublishedUser:a}=A;if(!this.hitTest(e))return;let{userId:c}=a,d="".concat(c,"_").concat(o);this.stopDataFreeze({key:d,userId:c,type:o})}).set(sA.REMOTE_PUBLISH_STATE_CHANGED,A=>{let{room:e,prevMuteState:o,muteState:a}=A;if(!this.hitTest(e))return;let{userId:c}=a;if(o.hasVideo&&!a.hasVideo){let d="main",C="".concat(a.userId,"_").concat(d);this.stopDataFreeze({key:C,userId:c,type:d})}if(o.hasAuxiliary&&!a.hasAuxiliary){let d="auxiliary",C="".concat(a.userId,"_").concat(d);this.stopDataFreeze({key:C,userId:c,type:d})}}).set(sA.PLAYER_STATE_CHANGED,A=>{let{track:e,state:o,reason:a,type:c}=A;if(e.isRemote&&e.room&&this.hitTest(e.room)&&c===YA.VIDEO){if(o==="PLAYING"){let d="".concat(e.userId,"_").concat(e.streamType);this._isVideoPlayingEventFiredMap.set(d,!0)}a===YA.MUTE?this.onVideoTrackMuted(e):a===YA.UNMUTE&&this.onVideoTrackUnmuted(e)}}).set(sA.HEARTBEAT_REPORT,this.onHearBeatReport).set(sA.REMOTE_VIDEO_PLAY_START,this.onRemoteVideoPlayStart).set(sA.REMOTE_VIDEO_PLAY_FINISH,this.onRemoteVideoPlayEnd),this._eventMap.forEach((A,e)=>F.on(e,A,this))}uninstallEvents(){this._eventMap.forEach((A,e)=>F.off(e,A,this)),this._eventMap.clear()}stop(){this._renderFreezeMap.clear(),this._dataFreezeMap.clear(),this._isVideoPlayingEventFiredMap.clear()}onVideoTrackMuted(A){if(!A.isSubscribed)return;let{userId:e,streamType:o}=A,a="".concat(e,"_").concat(o),c=this._dataFreezeMap.get(a),d=new Gz;c?c.durationItemList.push(d):this._dataFreezeMap.set(a,{userId:e,type:o,durationItemList:[d],isFreezing(){let C=this.durationItemList[this.durationItemList.length-1];return C&&C.endTime===0}})}onVideoTrackUnmuted(A){if(!A.isSubscribed)return;let{userId:e,streamType:o}=A,a="".concat(e,"_").concat(o);this.stopDataFreeze({key:a,userId:e,type:o})}onHearBeatReport(A){let{room:e,report:o}=A;this.hitTest(e)&&(this.localMediaTrackDetector(o),this.remoteMediaTrackDetector(o))}remoteMediaTrackDetector(A){A.msg_down_stream_info.length>0&&A.msg_down_stream_info.forEach(e=>{var o;if(e.msg_video_status.length===0)return;let a=e.msg_user_info.str_identifier,c=(o=this._room.remotePublishedUserMap.get(a))==null?void 0:o.remoteVideoTrack;e.msg_video_status.forEach(d=>{let C=ko();if(d.uint32_video_codec_bitrate!==void 0&&d.uint32_video_codec_bitrate>0&&d.uint32_video_receive_fps===0&&c!=null&&c.muted)if(this._remoteVideoAbnormalTimestampMap.has("".concat(a,"-decode"))){let y=this._remoteVideoAbnormalTimestampMap.get("".concat(a,"-decode"));y&&C-y>this.ABNORMAL_TIME_LOWER_LIMIT&&C-y=this.ABNORMAL_TIME_UPPER_LIMIT&&(sn.uploadEvent({userId:this._room.userId,log:"stat-".concat(Ja.VIDEO_DECODE_RESUME_DURING_CALL)}),this._remoteVideoAbnormalTimestampMap.delete("".concat(a,"-decode")))}if(d.uint32_video_codec_bitrate!==void 0&&d.uint32_video_codec_bitrate>5e5&&d.uint32_video_dec_fps!==void 0&&d.uint32_video_dec_fps<=5)if(this._remoteVideoAbnormalTimestampMap.has("".concat(a,"-hardware"))){let y=this._remoteVideoAbnormalTimestampMap.get("".concat(a,"-hardware"));if(y&&C-y>this.ABNORMAL_TIME_LOWER_LIMIT/2&&C-y<2*this.ABNORMAL_TIME_UPPER_LIMIT){sn.uploadEvent({userId:this._room.userId,log:"stat-".concat(Ja.VIDEO_HARDWARE_DECODE_FAILED)});let S=this._room.remotePublishedUserMap.get(a);if(S){let b=d.uint32_video_stream_type===2?S.remoteVideoTrack:S.remoteAuxiliaryTrack;b&&(b.log.warn("decode failed during call"),b.emit("decode-failed-during-call"))}}}else this._remoteVideoAbnormalTimestampMap.set("".concat(a,"-hardware"),C);else{let y=this._remoteVideoAbnormalTimestampMap.get("".concat(a,"-hardware"));y&&C-y>=2*this.ABNORMAL_TIME_UPPER_LIMIT&&(sn.uploadEvent({userId:this._room.userId,log:"stat-".concat(Ja.VIDEO_HARDWARE_DECODE_RESUME)}),this._remoteVideoAbnormalTimestampMap.delete("".concat(a,"-hardware")))}})})}localMediaTrackDetector(A){if(A.msg_up_stream_info.msg_video_status){let e=A.msg_up_stream_info.msg_video_status,o=Array.from(this._room.localTracks).find(c=>c.kind==="video"&&!c.isScreen),a=o?.stat.bytesSent||0;if(o?.isMediaTrackActive===!1||a<=0||o!=null&&o.isUseCustomSource)return;e.forEach(c=>{let d=ko();if(c.uint32_video_stream_type===2)if(c.uint32_video_capture_fps!==0&&c.uint32_video_codec_bitrate===0&&c.uint32_video_enc_fps===0&&o!=null&&o.isPublished)if(this._videoAbnormalTimestampMap.has("local-encode")){let C=this._videoAbnormalTimestampMap.get("local-encode");C&&d-C>this.ABNORMAL_TIME_LOWER_LIMIT&&d-C=this.ABNORMAL_TIME_UPPER_LIMIT&&sn.uploadEvent({userId:this._room.userId,log:"stat-".concat(Ja.VIDEO_ENCODE_RESUME_DURING_CALL)}),this._videoAbnormalTimestampMap.delete("local-encode")}})}if(A.msg_up_stream_info.msg_audio_status){let e=A.msg_up_stream_info.msg_audio_status,o=Array.from(this._room.localTracks).find(d=>d.kind==="audio"),a=o?.stat.bytesSent||0;if(o?.isMediaTrackActive===!1||a<=0||o!=null&&o.isUseCustomSource)return;let c=ko();if(e.uint32_audio_codec_bitrate===0&&o!=null&&o.isPublished)if(this._audioAbnormalTimestampMap.has("local-encode")){let d=this._audioAbnormalTimestampMap.get("local-encode");d&&c-d>this.ABNORMAL_TIME_LOWER_LIMIT&&c-d=this.ABNORMAL_TIME_UPPER_LIMIT&&sn.uploadEvent({userId:this._room.userId,log:"stat-".concat(Ja.AUDIO_ENCODE_RESUME_DURING_CALL)}),this._audioAbnormalTimestampMap.delete("local-encode")}}}stopDataFreeze(A){let{key:e,userId:o,type:a}=A,c=this._dataFreezeMap.get(e);if(!c||!c.isFreezing())return;let d=c.durationItemList[c.durationItemList.length-1];d.stop();let C=d.getDuration();if(C>vb){let y=this._monitorFreezeData.get(e,"data");this._monitorFreezeData.set(e,{userId:o,type:a,duration:y?y.duration+C:C},"data")}else c.durationItemList.pop()}getTotalDuration(A){return A.reduce((e,o)=>{let a=o.getDuration();return e+Math.min(a,5e3)},0)}onPlayTrackStart(A){let{track:e}=A;if(!e.isRemote||!this.hitTest(e.room)||e.kind!==YA.VIDEO||!e.isRemotePublished)return;let o="".concat(e.userId,"_").concat(e.streamType);this._isVideoPlayingEventFiredMap.has(o)||this._isVideoPlayingEventFiredMap.set(o,!1)}getDataFreezeDuration(A){let e={dataFreeze:0,count:0},o=this._dataFreezeMap.get(A);if(o){if(o.isFreezing()){let a=o.durationItemList[o.durationItemList.length-1];a.stop(),a.getDuration(){document.hidden||(c=0)};document.addEventListener("visibilitychange",d);let C=(y,S)=>{var b;if(c){let V=e.decodeFPS,J=V>0&&V<=5?600+1e3/V:600,gA=S.presentationTime-c;if(gA>J){gA=Math.min(gA,5e3);let CA="".concat(e.userId,"_").concat(e.streamType),MA=this._monitorFreezeData.get(CA,"render");MA?MA.duration+=gA:this._monitorFreezeData.set(CA,{userId:e.userId,type:e.streamType,duration:gA},"render");let $A=this._renderFreezeMap.get(CA);$A?($A.totalDuration+=gA,$A.count+=1):this._renderFreezeMap.set(CA,{userId:e.userId,type:e.streamType,totalDuration:gA,count:1})}}c=S.presentationTime,(b=o.element)==null||b.requestVideoFrameCallback(C)};(a=o.element)==null||a.requestVideoFrameCallback(C),this.eventListenerMap.set("".concat(e.userId,"_").concat(e.streamType),{onVisibilityChange:d})}onRemoteVideoPlayEnd(A){let{track:e,player:o}=A,a="".concat(e.userId,"_").concat(e.streamType),c=this.eventListenerMap.get(a);c&&document.removeEventListener("visibilitychange",c.onVisibilityChange)}resetMonitor(){this._monitorFreezeData.clear()}hitTest(A){return A===this._room}destroy(){this.uninstallEvents()}},IoA=gc(ql(),1),uoA=class{constructor(A,e,o,a,c){let d=arguments.length>5&&arguments[5]!==void 0?arguments[5]:1.3333333333333333;this.vbMode=A,this.faceDetectorHash=o,this.visionTaskRegistry=a,this.logger=c,Y(this,"animationState"),Y(this,"originalAspect"),Y(this,"totalOffsetX",0),Y(this,"totalOffsetY",0),Y(this,"defaultScaleRatio",.1),Y(this,"isRecovering",!1),Y(this,"boundaryY",280),Y(this,"lastActionTime",0),Y(this,"restTime",400),this.animationState={current:null,target:null,animating:!1,debounceTimer:null,startTime:0,duration:3e3,debounceTime:150,movementThreshold:30,debounceThreshold:15},this.addEvent(this.vbMode,!!this.faceDetectorHash),this.originalAspect=d||4/3,this.visionTaskRegistry.setVideo(this.faceDetectorHash,e)}addEvent(A,e,o){let a=[{key:570704,error:o??(e?void 0:11)},{key:570705,error:o??(e?void 0:22)}][A-1];a&&(e?Ai.addSuccessEvent({key:a.key}):Ai.addFailedEvent({key:a.key,error:a.error}))}actionCentering(A){let e=Date.now();if(this.animation(),!this.faceDetectorHash||e-this.lastActionTimee/2?(c=e-o-a,d=o-c):(c=o,d=0),{min:c,offset:d}}calculateTargetPosition(A,e,o,a,c,d){let C,y,S=arguments.length>6&&arguments[6]!==void 0?arguments[6]:.4,b=A+o/2,V=e+a/2,{min:J,offset:gA}=this.calculateBoundary(b,c,A,o),{min:CA,offset:MA}=this.calculateBoundary(V,d,e,a);return C=2*J+o,y=2*CA+a,C/y>this.originalAspect?(C=y*this.originalAspect,gA=b-C/2):(y=C/this.originalAspect,MA=V-y/2),o/c>S&&(gA=0,MA=0,C=c,y=d),gA=Math.max(0,Math.min(gA,c-C)),MA=Math.max(0,Math.min(MA,d-y)),{sx:gA,sy:MA,cropWidth:C,cropHeight:y,timestamp:Date.now()}}processFacePositionCrop(A,e,o){if(!this.animationState.current||!this.animationState.target){let C={sx:0,sy:0,cropWidth:e,cropHeight:o,timestamp:Date.now()};return this.animationState.current=C,void(this.animationState.target=C)}let a=this.positionDistance(this.animationState.target,A),c=this.positionDistance(this.animationState.current,A),d=this.animationState.current.cropWidth/e;a>this.animationState.debounceThreshold*d&&(clearTimeout(this.animationState.debounceTimer),this.animationState.animating=!1),!this.animationState.animating&&c>this.animationState.movementThreshold*d&&(this.animationState.target=A,this.animationState.debounceTimer=setTimeout(()=>{this.animationState.startTime=Date.now(),this.animationState.animating=!0},this.animationState.debounceTime))}processFacePositionPortrait(A){if(!this.animationState.current||!this.animationState.target)return this.animationState.current=mi({},A),void(this.animationState.target=mi({},A));let e=this.positionDistance(this.animationState.current,A),o=this.positionDistance(this.animationState.target,A);e>this.animationState.debounceThreshold&&(clearTimeout(this.animationState.debounceTimer),this.animationState.animating=!1),!this.animationState.animating&&o>this.animationState.movementThreshold&&(this.animationState.current=A,this.animationState.debounceTimer=setTimeout(()=>{this.animationState.startTime=Date.now(),this.animationState.animating=!0},this.animationState.debounceTime))}animation(){if(!this.animationState.animating)return;let A=Date.now()-this.animationState.startTime,e=Math.min(A/this.animationState.duration,1),o=a=>a<.5?2*a*a:(4-2*a)*a-1;if(this.animationState.current&&this.animationState.target){let a=(this.animationState.target.sx-this.animationState.current.sx)*o(e);this.animationState.current.sx+=a,this.totalOffsetX+=a;let c=(this.animationState.target.sy-this.animationState.current.sy)*o(e);if(this.animationState.current.sy+=c,this.totalOffsetY+=c,this.animationState.current.cropWidth+=(this.animationState.target.cropWidth-this.animationState.current.cropWidth)*o(e),this.animationState.current.cropHeight+=(this.animationState.target.cropHeight-this.animationState.current.cropHeight)*o(e),this.animationState.current.scaleRatio&&this.animationState.target.scaleRatio&&(this.animationState.current.scaleRatio+=(this.animationState.target.scaleRatio-this.animationState.current.scaleRatio)*o(e)),bn(this.animationState.current.scaleOffsetX)&&bn(this.animationState.target.scaleOffsetX)&&bn(this.animationState.current.scaleOffsetY)&&bn(this.animationState.target.scaleOffsetY)){let d=(this.animationState.target.scaleOffsetX-this.animationState.current.scaleOffsetX)*o(e);this.animationState.current.scaleOffsetX+=d;let C=(this.animationState.target.scaleOffsetY-this.animationState.current.scaleOffsetY)*o(e);this.animationState.current.scaleOffsetY+=C}}e>=1&&(this.animationState.animating=!1,this.animationState.current=this.animationState.target,this.isRecovering=!1)}positionDistance(A,e){return Math.sqrt(LS(A.sx-e.sx,2)+LS(A.sy-e.sy,2))}recoverOriginal(A,e){this.animationState.target={sx:0,sy:0,cropWidth:A,cropHeight:e,timestamp:Date.now()},this.animationState.animating=!0,this.animationState.startTime=Date.now(),this.isRecovering=!0}dualStageCropping(A,e,o,a,c,d){let C=arguments.length>6&&arguments[6]!==void 0?arguments[6]:.3;if(this.isRecovering)return;let y=this.calculateTargetPosition(o,a,c,d,A,e);this.processFacePositionCrop(y,A,e),c*d/y.cropWidth/y.cropHeight>C&&this.recoverOriginal(A,e)}movingPortrait(A,e,o,a,c,d){var C,y,S,b,V,J,gA,CA,MA,$A,he,Ye;let Me={sx:o+c/2+this.totalOffsetX,sy:a+d/2+this.totalOffsetY,cropWidth:A,cropHeight:e,scaleRatio:(y=(C=this.animationState.current)==null?void 0:C.scaleRatio)!=null?y:1,scaleOffsetX:(b=(S=this.animationState.current)==null?void 0:S.scaleOffsetX)!=null?b:0,scaleOffsetY:(J=(V=this.animationState.current)==null?void 0:V.scaleOffsetY)!=null?J:0,timestamp:Date.now()};this.animationState.target={sx:A/2,sy:a+d/2,cropWidth:A,cropHeight:e,scaleRatio:(CA=(gA=this.animationState.target)==null?void 0:gA.scaleRatio)!=null?CA:1,scaleOffsetX:($A=(MA=this.animationState.target)==null?void 0:MA.scaleOffsetX)!=null?$A:0,scaleOffsetY:(Ye=(he=this.animationState.target)==null?void 0:he.scaleOffsetY)!=null?Ye:0,timestamp:Date.now()},this.animationState.animating||(this.animationState.target.scaleRatio=Math.sqrt(c*d/A/e/this.defaultScaleRatio),this.animationState.target.scaleOffsetX=-this.animationState.target.scaleRatio/2+.5,this.animationState.target.scaleOffsetY=1-this.animationState.target.scaleRatio,(this.animationState.target.sy-this.animationState.target.scaleOffsetY*this.animationState.target.cropHeight)/this.animationState.target.scaleRatio{A.log.error(o),A.destroy(new si({code:Et.VIDEO_MANAGER_ERROR,extraCode:6,message:"init vb node error ".concat(o.message||o)})),this.resolvePreditReady()})}init(A){return KA(this,null,function*(){var e,o,a;this.predictReady=new Promise(y=>{this.resolvePreditReady=y});let c=A.Wasm,d=this.context.ctx;if(A.color&&(this._color=A.color),A.mat4&&(this._mat4=A.mat4),A.postProcessing&&(this._postProcessing=A.postProcessing),this._enableFaceCentering=(e=A.enableFaceCentering)!=null&&e,this._enableEffectOptimization=(o=A.enableEffectOptimization)!=null&&o,this.wasm=new c.AllIn1(d),this.wasm.blurRadius=A.blurRadius||3,this.wasm.mirror=!!A.mirror,this.wasm.rotation=A.rotation||0,this.wasm.vbMode=A.bg==="blur"?1:A.bg instanceof HTMLImageElement?2:A.bg==="color"?3:0,this._onAbort=A.onAbort,A.bg||this.resolvePreditReady(),A.waterMark){let{x:y,y:S,width:b,height:V}=A.waterMark;this.wasm.setWaterMark(y,S,b,V)}if(A.beautyParams){let{beauty:y,brightness:S,ruddy:b}=A.beautyParams;this.wasm.setBeauty(y,S,b,A?.width,A?.height)}this.program=this.wasm.init(),this.useProgram(),this.setAttributes(this.positionBuffer,this.texCoordBuffer),d.uniform1i(d.getUniformLocation(this.program,"mask"),1),A.bg instanceof HTMLImageElement&&(d.uniform1i(d.getUniformLocation(this.program,"bg"),2),this._bgTexture=this.createTexture(A.bg)),A.waterMark&&(d.uniform1i(d.getUniformLocation(this.program,"waterMark"),3),this._waterMarkTexture=this.createTexture(A.waterMark.image));let C=new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]);if(this._textureMatrixLocation=d.getUniformLocation(this.program,"u_textureMatrix"),d.uniformMatrix4fv(this._textureMatrixLocation,!1,C),this._offsetMatrixLocation=d.getUniformLocation(this.program,"u_offsetMatrix"),d.uniformMatrix4fv(this._offsetMatrixLocation,!1,C),this._colorLocation=d.getUniformLocation(this.program,"u_color"),d.uniform1i(d.getUniformLocation(this.program,"lastMask"),4),this._weixin){let y=this.context.createShader(d.FRAGMENT_SHADER,`#version 300 es precision highp float; uniform sampler2D u_texture; uniform sampler2D mask; @@ -336,7 +336,7 @@ out vec2 v_texCoord; void main() { gl_Position = vec4(a_position.x, a_position.y, 0, 1); v_texCoord = a_texCoord; -}`);this._prePrograme=this.context.createProgram(S,y),d.useProgram(this._prePrograme),this.setAttributes(this.positionBuffer,this.texCoordBuffer),d.uniform1i(d.getUniformLocation(this._prePrograme,"mask"),1)}!this._enableEffectOptimization||this.wasm.vbMode!==2&&this.wasm.vbMode!==3?this._postProcessing=void 0:N0()?(this._postProcessing=void 0,this.log.warn("Virtual background post-processing isn't allowed on mobile.")):(a=this._postProcessing)==null||a.init(d,this.positionBuffer,this.texCoordBuffer,4/3),yield this.initVisionTasks(A)})}initVisionTasks(A){return KA(this,null,function*(){if(A.bg){if(this._visionTaskRegistry=yield window.VisionTaskRegistry.getInstance(),!window.VisionTaskRegistry||!this._visionTaskRegistry||!this._visionTaskRegistry.visionWasm)throw new Error("Virtual background assets not found. Please redeploy the assets of the npm package.");if(this._selfieSegmentationHash=yield this._visionTaskRegistry.register(window.VisionTaskType.ImageSegmenter,{canvas:this.context._canvas}),this._visionTaskRegistry.setVideo(this._selfieSegmentationHash,this.image),this._enableFaceCentering)try{this._visionTaskRegistry.models.has(window.VisionTaskType.FaceDetector)||(yield this._visionTaskRegistry.preloadModels([window.VisionTaskType.FaceDetector]));let e=yield this._visionTaskRegistry.register(window.VisionTaskType.FaceDetector);if(!e)return;this._centerFace=new viA(this.wasm.vbMode,this.image,e,this._visionTaskRegistry,this.context.log)}catch{this.log.error("Face detector model not found. Please redeploy the assets of the npm package.")}}})}onPredict(A){let e=this.context.ctx;this._weixin&&(this._lastMaskTexture||(this._lastMaskTexture=this.createTexture(this.image),this._lastMaskFbo=this.createFramebuffer(this._lastMaskTexture)));let o=this.getMaskTexture(A);if(!o)return;let a=o;this._postProcessing&&(this._postProcessing.ratio=this.image.videoWidth/this.image.videoHeight,a=this._postProcessing.postProcessing(o)),this.useProgram(),this.setAttributes(this.positionBuffer,this.texCoordBuffer),this.useTexture(),e.activeTexture(e.TEXTURE1),e.bindTexture(e.TEXTURE_2D,a||null),e.activeTexture(e.TEXTURE2),e.bindTexture(e.TEXTURE_2D,this._bgTexture||null),e.activeTexture(e.TEXTURE3),e.bindTexture(e.TEXTURE_2D,this._waterMarkTexture||null),this.wasm.vbMode===3&&e.uniform3fv(this._colorLocation,this._color),this.useBufferFrame(),this._segmentationMask=A,this.totalFrames++,this.centerFace(),zB(this.wasm.rotation)&&this.resize(this.image.height,this.image.width),e.viewport(0,0,e.canvas.width,e.canvas.height),e.drawArrays(e.TRIANGLE_STRIP,0,4),A.close()}getMaskTexture(A){return A.confidenceMasks?A.confidenceMasks[0].getAsWebGLTexture():void 0}onFirstFrame(){this.waitingFirstFrame=!1;let A=this.context.ctx;this.useTexture(),A.texImage2D(A.TEXTURE_2D,0,A.RGBA,A.RGBA,A.UNSIGNED_BYTE,this.image)}render(A){let e=this.context.ctx,{image:o}=this;this.tryVideoFrameCallback();let{videoWidth:a,videoHeight:c}=o;if(zB(this.wasm.rotation)&&!this._visionTaskRegistry&&([a,c]=[c,a]),a===0||c===0||!this.available)return!1;o.width=a,o.height=c;let d=!1;if(this.totalFrames)this.useTexture(),d=this._selfieTextureValid,this._selfieTextureValid=!0;else{if(!this.program)return!1;this.useTexture(),d=this._textureValid,this._textureValid=!0}if(this.width===a&&this.height===c&&d?e.texSubImage2D(e.TEXTURE_2D,0,0,0,e.RGBA,e.UNSIGNED_BYTE,o):(this.resize(a,c),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,o)),this._weixin){if(e.useProgram(this._prePrograme),this.useTexture(),this._segmentationMask){let C=this.getMaskTexture(this._segmentationMask);e.activeTexture(e.TEXTURE1),e.bindTexture(e.TEXTURE_2D,C||null),e.bindFramebuffer(e.FRAMEBUFFER,this._lastMaskFbo||null)}e.drawArrays(e.TRIANGLE_STRIP,0,4),this.useTexture(),this._segmentationMask?e.copyTexSubImage2D(e.TEXTURE_2D,0,0,0,0,0,a,c):e.copyTexImage2D(e.TEXTURE_2D,0,e.RGBA,0,0,a,c,0)}try{if(this._selfieSegmentationHash&&this._visionTaskRegistry){let C=this._visionTaskRegistry.getResult(this._selfieSegmentationHash);this.totalFrames===1&&this.context._canvas&&this.resolvePreditReady(),this.onPredict(C)}}catch(C){this._onAbort&&this._onAbort(C)}return this.totalFrames||(e.activeTexture(e.TEXTURE2),e.bindTexture(e.TEXTURE_2D,this._bgTexture||null),e.activeTexture(e.TEXTURE3),e.bindTexture(e.TEXTURE_2D,this._waterMarkTexture||null),e.drawArrays(e.TRIANGLE_STRIP,0,4)),this._visionTaskRegistry&&this._visionTaskRegistry.resetHashResults(),!1}centerFace(){if(!this._centerFace||!this._enableFaceCentering)return;let A=this.context.ctx;this._centerFace.aspectRatio=A.canvas.width/A.canvas.height,this._centerFace.actionCentering(this.image);let{current:e,offset:o}=this._centerFace;if(e&&(this.wasm.vbMode===1&&this.drawImage(e.sx,e.sy,e.cropWidth,e.cropHeight),o&&this.wasm.vbMode===2)){if(!this._mat4)return;let a=this._mat4.create(),{scaleRatio:c=1,scaleOffsetX:d=0,scaleOffsetY:C=0}=e;this._mat4.fromTranslation(a,[-o.offsetX/A.canvas.width+d,C,0]),this._mat4.scale(a,a,[c,c,1]),A.uniformMatrix4fv(this._offsetMatrixLocation,!1,a)}}drawImage(A,e,o,a){let c=this.context.ctx;if(!this._mat4)return;let{width:d,height:C}=c.canvas,y=this._mat4.create();this._mat4.fromTranslation(y,[A/d,1-(e+a)/C,0]),this._mat4.scale(y,y,[o/d,a/C,1]),c.uniformMatrix4fv(this._textureMatrixLocation,!1,y)}close(){var A;super.close();let e=this.context.ctx;this._bgTexture&&e.deleteTexture(this._bgTexture),this._waterMarkTexture&&e.deleteTexture(this._waterMarkTexture),this._lastMaskTexture&&e.deleteTexture(this._lastMaskTexture),this._lastMaskFbo&&e.deleteFramebuffer(this._lastMaskFbo),this._prePrograme&&e.deleteProgram(this._prePrograme),this._postProcessing&&this._postProcessing.close(),(A=this.wasm)==null||A.close()}},wiA=class extends Kd{constructor(A){super(A,{name:"yuv-source",useDefaultProgram:!1,create2d:!1,useFbo:!1,createTexture:!1,logger:A.log,fragmentShaderSource:` +}`);this._prePrograme=this.context.createProgram(S,y),d.useProgram(this._prePrograme),this.setAttributes(this.positionBuffer,this.texCoordBuffer),d.uniform1i(d.getUniformLocation(this._prePrograme,"mask"),1)}!this._enableEffectOptimization||this.wasm.vbMode!==2&&this.wasm.vbMode!==3?this._postProcessing=void 0:Y0()?(this._postProcessing=void 0,this.log.warn("Virtual background post-processing isn't allowed on mobile.")):(a=this._postProcessing)==null||a.init(d,this.positionBuffer,this.texCoordBuffer,4/3),yield this.initVisionTasks(A)})}initVisionTasks(A){return KA(this,null,function*(){if(A.bg){if(this._visionTaskRegistry=yield window.VisionTaskRegistry.getInstance(),!window.VisionTaskRegistry||!this._visionTaskRegistry||!this._visionTaskRegistry.visionWasm)throw new Error("Virtual background assets not found. Please redeploy the assets of the npm package.");if(this._selfieSegmentationHash=yield this._visionTaskRegistry.register(window.VisionTaskType.ImageSegmenter,{canvas:this.context._canvas}),this._visionTaskRegistry.setVideo(this._selfieSegmentationHash,this.image),this._enableFaceCentering)try{this._visionTaskRegistry.models.has(window.VisionTaskType.FaceDetector)||(yield this._visionTaskRegistry.preloadModels([window.VisionTaskType.FaceDetector]));let e=yield this._visionTaskRegistry.register(window.VisionTaskType.FaceDetector);if(!e)return;this._centerFace=new uoA(this.wasm.vbMode,this.image,e,this._visionTaskRegistry,this.context.log)}catch{this.log.error("Face detector model not found. Please redeploy the assets of the npm package.")}}})}onPredict(A){let e=this.context.ctx;this._weixin&&(this._lastMaskTexture||(this._lastMaskTexture=this.createTexture(this.image),this._lastMaskFbo=this.createFramebuffer(this._lastMaskTexture)));let o=this.getMaskTexture(A);if(!o)return;let a=o;this._postProcessing&&(this._postProcessing.ratio=this.image.videoWidth/this.image.videoHeight,a=this._postProcessing.postProcessing(o)),this.useProgram(),this.setAttributes(this.positionBuffer,this.texCoordBuffer),this.useTexture(),e.activeTexture(e.TEXTURE1),e.bindTexture(e.TEXTURE_2D,a||null),e.activeTexture(e.TEXTURE2),e.bindTexture(e.TEXTURE_2D,this._bgTexture||null),e.activeTexture(e.TEXTURE3),e.bindTexture(e.TEXTURE_2D,this._waterMarkTexture||null),this.wasm.vbMode===3&&e.uniform3fv(this._colorLocation,this._color),this.useBufferFrame(),this._segmentationMask=A,this.totalFrames++,this.centerFace(),XB(this.wasm.rotation)&&this.resize(this.image.height,this.image.width),e.viewport(0,0,e.canvas.width,e.canvas.height),e.drawArrays(e.TRIANGLE_STRIP,0,4),A.close()}getMaskTexture(A){return A.confidenceMasks?A.confidenceMasks[0].getAsWebGLTexture():void 0}onFirstFrame(){this.waitingFirstFrame=!1;let A=this.context.ctx;this.useTexture(),A.texImage2D(A.TEXTURE_2D,0,A.RGBA,A.RGBA,A.UNSIGNED_BYTE,this.image)}render(A){let e=this.context.ctx,{image:o}=this;this.tryVideoFrameCallback();let{videoWidth:a,videoHeight:c}=o;if(XB(this.wasm.rotation)&&!this._visionTaskRegistry&&([a,c]=[c,a]),a===0||c===0||!this.available)return!1;o.width=a,o.height=c;let d=!1;if(this.totalFrames)this.useTexture(),d=this._selfieTextureValid,this._selfieTextureValid=!0;else{if(!this.program)return!1;this.useTexture(),d=this._textureValid,this._textureValid=!0}if(this.width===a&&this.height===c&&d?e.texSubImage2D(e.TEXTURE_2D,0,0,0,e.RGBA,e.UNSIGNED_BYTE,o):(this.resize(a,c),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,o)),this._weixin){if(e.useProgram(this._prePrograme),this.useTexture(),this._segmentationMask){let C=this.getMaskTexture(this._segmentationMask);e.activeTexture(e.TEXTURE1),e.bindTexture(e.TEXTURE_2D,C||null),e.bindFramebuffer(e.FRAMEBUFFER,this._lastMaskFbo||null)}e.drawArrays(e.TRIANGLE_STRIP,0,4),this.useTexture(),this._segmentationMask?e.copyTexSubImage2D(e.TEXTURE_2D,0,0,0,0,0,a,c):e.copyTexImage2D(e.TEXTURE_2D,0,e.RGBA,0,0,a,c,0)}try{if(this._selfieSegmentationHash&&this._visionTaskRegistry){let C=this._visionTaskRegistry.getResult(this._selfieSegmentationHash);this.totalFrames===1&&this.context._canvas&&this.resolvePreditReady(),this.onPredict(C)}}catch(C){this._onAbort&&this._onAbort(C)}return this.totalFrames||(e.activeTexture(e.TEXTURE2),e.bindTexture(e.TEXTURE_2D,this._bgTexture||null),e.activeTexture(e.TEXTURE3),e.bindTexture(e.TEXTURE_2D,this._waterMarkTexture||null),e.drawArrays(e.TRIANGLE_STRIP,0,4)),this._visionTaskRegistry&&this._visionTaskRegistry.resetHashResults(),!1}centerFace(){if(!this._centerFace||!this._enableFaceCentering)return;let A=this.context.ctx;this._centerFace.aspectRatio=A.canvas.width/A.canvas.height,this._centerFace.actionCentering(this.image);let{current:e,offset:o}=this._centerFace;if(e&&(this.wasm.vbMode===1&&this.drawImage(e.sx,e.sy,e.cropWidth,e.cropHeight),o&&this.wasm.vbMode===2)){if(!this._mat4)return;let a=this._mat4.create(),{scaleRatio:c=1,scaleOffsetX:d=0,scaleOffsetY:C=0}=e;this._mat4.fromTranslation(a,[-o.offsetX/A.canvas.width+d,C,0]),this._mat4.scale(a,a,[c,c,1]),A.uniformMatrix4fv(this._offsetMatrixLocation,!1,a)}}drawImage(A,e,o,a){let c=this.context.ctx;if(!this._mat4)return;let{width:d,height:C}=c.canvas,y=this._mat4.create();this._mat4.fromTranslation(y,[A/d,1-(e+a)/C,0]),this._mat4.scale(y,y,[o/d,a/C,1]),c.uniformMatrix4fv(this._textureMatrixLocation,!1,y)}close(){var A;super.close();let e=this.context.ctx;this._bgTexture&&e.deleteTexture(this._bgTexture),this._waterMarkTexture&&e.deleteTexture(this._waterMarkTexture),this._lastMaskTexture&&e.deleteTexture(this._lastMaskTexture),this._lastMaskFbo&&e.deleteFramebuffer(this._lastMaskFbo),this._prePrograme&&e.deleteProgram(this._prePrograme),this._postProcessing&&this._postProcessing.close(),(A=this.wasm)==null||A.close()}},doA=class extends $d{constructor(A){super(A,{name:"yuv-source",useDefaultProgram:!1,create2d:!1,useFbo:!1,createTexture:!1,logger:A.log,fragmentShaderSource:` precision highp float; uniform sampler2D ySampler; uniform sampler2D uSampler; @@ -361,29 +361,29 @@ void main() { void main() { gl_Position = vertexPos; textureCoord = texturePos; - }`}),Y(this,"yTextureRef"),Y(this,"uTextureRef"),Y(this,"vTextureRef"),Y(this,"Y"),Y(this,"U"),Y(this,"V"),this.useProgram();let e=this.context.ctx;e.pixelStorei(e.PACK_ALIGNMENT,1),e.pixelStorei(e.UNPACK_ALIGNMENT,1),this.setTexBuffer([0,1,1,1,0,0,1,0]),this.yTextureRef=this._initTexture("ySampler",0),this.uTextureRef=this._initTexture("uSampler",1),this.vTextureRef=this._initTexture("vSampler",2),this._canvas=A._canvas}_initTexture(A,e){let o=this.context.ctx,a=o.createTexture();return o.bindTexture(o.TEXTURE_2D,a),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_MAG_FILTER,o.LINEAR),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_MIN_FILTER,o.LINEAR),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_S,o.CLAMP_TO_EDGE),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_T,o.CLAMP_TO_EDGE),o.bindTexture(o.TEXTURE_2D,null),o.uniform1i(o.getUniformLocation(this.program,A),e),a}render(A){let e=this.context.ctx,o=this.width,a=this.height;return this.useProgram(),e.viewport(0,0,o,a),e.activeTexture(e.TEXTURE0),e.bindTexture(e.TEXTURE_2D,this.yTextureRef),e.texSubImage2D(e.TEXTURE_2D,0,0,0,o,a,e.LUMINANCE,e.UNSIGNED_BYTE,this.Y),e.activeTexture(e.TEXTURE1),e.bindTexture(e.TEXTURE_2D,this.uTextureRef),e.texSubImage2D(e.TEXTURE_2D,0,0,0,o/2,a/2,e.LUMINANCE,e.UNSIGNED_BYTE,this.U),e.activeTexture(e.TEXTURE2),e.bindTexture(e.TEXTURE_2D,this.vTextureRef),e.texSubImage2D(e.TEXTURE_2D,0,0,0,o/2,a/2,e.LUMINANCE,e.UNSIGNED_BYTE,this.V),this.draw(),!0}resize(A,e){super.resize(A,e);let o=this.context.ctx;o.activeTexture(o.TEXTURE0),o.bindTexture(o.TEXTURE_2D,this.yTextureRef),o.texImage2D(o.TEXTURE_2D,0,o.LUMINANCE,A,e,0,o.LUMINANCE,o.UNSIGNED_BYTE,null),o.activeTexture(o.TEXTURE1),o.bindTexture(o.TEXTURE_2D,this.uTextureRef),o.texImage2D(o.TEXTURE_2D,0,o.LUMINANCE,A/2,e/2,0,o.LUMINANCE,o.UNSIGNED_BYTE,null),o.activeTexture(o.TEXTURE2),o.bindTexture(o.TEXTURE_2D,this.vTextureRef),o.texImage2D(o.TEXTURE_2D,0,o.LUMINANCE,A/2,e/2,0,o.LUMINANCE,o.UNSIGNED_BYTE,null)}},Z5=(A,e)=>{switch(A){case"webCodecs":return e==="videoFrame"?514705:514706;case"wasm":return e==="webgl"?514707:e==="videoFrame"?514708:514709}throw new Error("decoder type not supported")},_iA=0,TiA=class{constructor(A){Y(this,"id",_iA++),Y(this,"trackDoneOB"),Y(this,"startOB"),Y(this,"stopOB"),Y(this,"decoder"),Y(this,"videoContext"),Y(this,"gop",0),Y(this,"gop_helper",0),Y(this,"waitFirstKeyFrame",!0),Y(this,"startTimestamp",0),Y(this,"startTime",0),Y(this,"startPerformanceTime",0),Y(this,"inputFrameCount",0),Y(this,"decodedFrameCount",0),Y(this,"decodeFrameCount",0),Y(this,"downgradeLevel",0),Y(this,"lastDowngradeTime",0),Y(this,"lastFrameDiff",0),Y(this,"lastDecodeFrameTimestamp",0),Y(this,"config"),Y(this,"gop_before_configure",[]),Y(this,"videoElement"),Y(this,"type","wasm"),Y(this,"goodType"),Y(this,"renderer","2d"),Y(this,"wasmOption"),Y(this,"createDecoder"),Y(this,"_decodeSink"),Y(this,"isReported",!1),Y(this,"track"),Y(this,"stateChangeOB"),Y(this,"failedReason");let{track:e,createDecoder:o}=A;if(this.stateChangeOB=lQ(),this.track=e,this.createDecoder=o,this.wasmOption={yuvMode:A.renderer==="webgl",wasmPath:A.wasmPath,workerMode:A.workerMode,canvas:A.canvas},this.config=A.config,this.videoElement=A.videoElement,this.renderer=A.renderer,this.trackDoneOB=ga(e.availableState,Zs.OFF),this.stopOB=lQ(),A.type==="auto"){switch(A.fallback){case"wasm":this.type="wasm",this.renderer="webgl";break;case"wasm_2d":this.type="wasm",this.renderer="2d";break;case"wasm_video":this.type="wasm",this.renderer="videoFrame";break;default:this.type="webCodecs"}this.wasmOption.yuvMode=this.renderer==="webgl"}else this.type=A.type;this.changeRenderer(this.renderer),Qa(this.stateChangeOB,L4((a,c)=>(a!==c&&e.onDecodeDowngradeStateChanged({type:this.type,renderer:this.renderer,reason:this.failedReason,prevState:a,state:c}),c),"INITIALIZED"),rE(this.stopOB),hl()),this.start()}start(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;this.waitFirstKeyFrame=!0,this.stateChangeOB.next("STARTING");let e=Qa(this.pipe(this.track),rE(this.stopOB),bk());Qa(e,hl(()=>{this.track.stat.framesDecoded++},o=>{if(this.track.log.error("".concat(this.id," play failed: ").concat(o," retryCount: ").concat(A)),Ai.addFailedEvent({key:Z5(this.type,this.renderer),error:o}),A>4)this.failedReason=o,this.stateChangeOB.next("FAILED"),Ai.addFailedEvent({key:514704});else{if(this.goodType)return void this.start(A);switch(this.type){case"webCodecs":this.type="wasm",this.changeRenderer("webgl");break;case"wasm":this.renderer==="webgl"&&this.changeRenderer("videoFrame")}this.start(A+1)}},()=>{this.track.log.warn("".concat(this.id," decoderOB completed")),Ai.addSuccessEvent({key:Z5(this.type,this.renderer)}),Ai.addSuccessEvent({key:514704})})),Qa(e,Z0(1),hl(()=>{this.track.player.handlePlaying("canvas"),this.goodType=this.type,this.stateChangeOB.next("STARTED")}))}mock(A){this._decodeSink?this._decodeSink.error(A):this.start()}close(A){this.stopOB.next(A)}changeRenderer(A){this.renderer=A,this.renderer==="videoFrame"&&!CM()&&(this.renderer="2d"),this.wasmOption.yuvMode=this.renderer==="webgl"}decode(A){let e=arguments.length>1&&arguments[1]!==void 0&&arguments[1];var o,a;if(this.failedReason)return;this.inputFrameCount++;let c=new Uint8Array(A.data);if((d=c)[0]!==0||d[1]!==0||d[2]!==0||d[3]!==1||c.length<5)return this.stateChangeOB.next("FAILED"),this.close("not h26x frame ".concat(c.subarray(0,5))),A;var d;let C=!1;switch(31&c[4]){case 5:case 7:C=!0}if(((o=this.decoder)==null?void 0:o.state)!=="configured")return this.track.log.debug("not configured ".concat(this.inputFrameCount)),C&&(this.gop_before_configure=[]),this.gop_before_configure.push({data:A.data,timestamp:A.timestamp,type:A.type}),A;this.gop_before_configure.length>0&&!e&&(this.gop_before_configure.forEach(S=>this.decode(S,!0)),this.gop_before_configure=[]);let{timestamp:y}=A;if(C?(this.gop=this.gop_helper,this.gop_helper=0):this.gop_helper++,this.decoder){if(this.waitFirstKeyFrame){if(!C)return void this.track.log.debug("wait first key frame ".concat(this.inputFrameCount," ").concat(c.subarray(0,5).join(" ")));this.waitFirstKeyFrame=!1,this.startTimestamp=y,this.startTime=Date.now(),this.startPerformanceTime=bo()}switch(this.downgradeLevel){case 0:case 1:break;case 2:if(this.gop_helper>this.gop>>1)return;break;case 3:if(this.gop_helper>0)return;break;default:return}return(this.decodeFrameCount<10||this.decodeFrameCount%500==0)&&this.track.log.debug("decode ".concat(this.decodeFrameCount," gop: ").concat(this.gop," ").concat(y," ").concat((a=A.getMetadata)==null?void 0:a.call(A).rtpTimestamp)),this.decodeFrameCount++,this.lastDecodeFrameTimestamp=y,void this.decoder.decode({data:A.data,type:A.type,timestamp:this.lastDecodeFrameTimestamp})}return A}checkDowngradeByFrameDiff(){let A=this.downgradeLevel,e=this.decodeFrameCount-this.decodedFrameCount;e>this.lastFrameDiff?(this.downgradeLevel++,this.downgradeLevel>4&&(this.downgradeLevel=4)):e<=this.lastFrameDiff&&this.downgradeLevel>0&&this.downgradeLevel--,this.downgradeLevel!==A&&this.track.log.debug("downgrade level ".concat(A," to ").concat(this.downgradeLevel," ").concat(this.decodeFrameCount," frameDiff: ").concat(e,", lastFrameDiff: ").concat(this.lastFrameDiff)),this.lastFrameDiff=e,this.lastDowngradeTime=Date.now()}checkDowngradeByTimestampDiff(A){let e=this.downgradeLevel;this.lastDecodeFrameTimestamp-A>9e4?(this.downgradeLevel++,this.downgradeLevel>4&&(this.downgradeLevel=4)):this.downgradeLevel>0&&this.downgradeLevel--,this.downgradeLevel!==e&&this.track.log.debug("downgrade level ".concat(e," to ").concat(this.downgradeLevel))}pipe(A){return e=>KA(this,null,function*(){this._decodeSink=e;let o,a=A.mediaTrack;e.defer(()=>{var C;a&&(A.player.setCanvas(),A.setInputMediaStreamTrack(a)),o?.close(),(C=this.videoContext)==null||C.destroy(),delete this._decodeSink});let{renderer:c,type:d}=this;A.log.info("decoder type: ".concat(this.type," renderer: ").concat(this.renderer));try{switch(d){case"wasm":o=this.createDecoder(d,this.wasmOption);break;case"webCodecs":o=this.createDecoder(d);break;default:throw new Error("not supported yet")}let C=0;if(o.on("videoFrame",y=>{this.decodedFrameCount++,C++,(C<=10||C%500==0)&&A.log.debug("frame ".concat(C," ").concat(this.decodedFrameCount,"/").concat(this.decodeFrameCount," decoded ").concat(y.timestamp)),Date.now()-this.lastDowngradeTime>5e3&&(this.type==="webCodecs"?this.checkDowngradeByFrameDiff():this.type==="wasm"&&this.checkDowngradeByTimestampDiff(y.timestamp)),e.next(y)}),o.on("error",y=>{A.log.error(y),e.error(d==="webCodecs"?4:8)}),yield o.initialize(this.videoElement),!this._decodeSink)return;if(o.configure(this.config),d==="wasm"&&c==="webgl"){this.videoContext=new UC({frameRate:15,logger:A.log,name:A.userId}),this.videoContext.create(),this.videoContext.on(UC.UNAVAILABLE,S=>{A.log.error(S),e.error(7)});let y=new wiA(this.videoContext);o.on("videoCodecInfo",S=>y.resize(S.width,S.height)),o.on("videoFrame",S=>{({y:y.Y,u:y.U,v:y.V}=S),this.downgradeLevel===1?this.decodedFrameCount%2==0&&y.render(this.decodedFrameCount):y.render(this.decodedFrameCount)}),A.source=y,A.player.setCanvas(this.videoContext._canvas,2)}else if(c==="videoFrame"){A.player.setCanvas();let y=new MediaStreamTrackGenerator({kind:"video"}),S=y.writable.getWriter();A.setInputMediaStreamTrack(y),o.on("videoFrame",b=>S.write(b))}else{this.videoContext=new uQ({frameRate:15,logger:A.log,name:A.userId}),this.videoContext.create({alpha:!1});let y=this.videoContext.createVideoImageSource();o.on("videoFrame",b=>{try{y.image=b,y.update()}catch(V){delete this.goodType,A.log.error(V),e.error(11)}});let S=new EK(this.videoContext,{name:"remotePlayer",logger:A.log});y.connect(S),A.source=y,A.player.setCanvas(this.videoContext._canvas,2)}this.decoder=o}catch(C){A.log.error(C),e.error(d==="webCodecs"?2:6)}})}},X5=Promise.resolve(),$5=class extends MiA.EventEmitter{constructor(A){super(),this.room=A,Y(this,"videoContext"),Y(this,"_glVideoContext"),Y(this,"_2dVideoContext"),Y(this,"destination"),Y(this,"smallVideoContext"),Y(this,"smallDestination"),Y(this,"smallTrackSource"),Y(this,"smallImageSource"),Y(this,"_isMirror",!1),Y(this,"_rotation",0),Y(this,"cameraTrack"),Y(this,"cameraNode"),Y(this,"transformNode"),Y(this,"mixNode"),Y(this,"screenTrack"),Y(this,"screenNode"),Y(this,"selfModel",!1),Y(this,"blurRadius",3),Y(this,"arTrack"),Y(this,"_enableFaceCentering",!1),Y(this,"_enableEffectOptimization",!1),Y(this,"onAbort"),Y(this,"_color"),Y(this,"Wasm"),Y(this,"waterMarkNode"),Y(this,"_waterMarkOption"),Y(this,"watermarkImageList",[]),Y(this,"_beautyParams"),Y(this,"isUsingArTrack",!1),Y(this,"mixTrack"),Y(this,"_isMixScreen",!1),Y(this,"_virtualBackground"),Y(this,"_virtualBackgroundAbortCallback"),Y(this,"virtualBackgroundInstance"),Y(this,"_bgAssetPath"),Y(this,"log"),Y(this,"_mat4"),Y(this,"_postProcessing"),Y(this,"_checkId",0),Y(this,"_use2d",!1),Y(this,"_autoSwitchRenderMode",!0),Y(this,"encodePipeline",[]),Y(this,"decodePipeline",[]),Y(this,"updated",X5),Y(this,"_updateFlag",!1),this.log=QA.createLogger({parent:A?.getLogger(),id:"vm",userId:A?.userId,sdkAppId:A?.sdkAppId}),this.smallVideoContext=new uQ({frameRate:15,logger:this.log,name:"s"}),this.enablePrintDetail()}get smallMode(){var A;return((A=this.room)==null?void 0:A.smallMode)||"canvas"}get _hasVirtualBg(){return!!this._virtualBackground}get _hasWaterMark(){return this.watermarkImageList.length>0}get _isRotate(){return this._rotation!==0}get _isTransform(){return this._isMirror||this._isRotate}get renderMode(){return this._autoSwitchRenderMode?"auto":this._use2d?"2d":"webgl"}set renderMode(A){if(this._autoSwitchRenderMode=A==="auto",this._autoSwitchRenderMode)return;let e=A==="2d";this._use2d!==e&&(this._use2d=e,this.clear(),this.videoContext=this._use2d?this.get2dVideoContext():this.getGlVideoContext(),this.update())}get cameraResolution(){var A;let{width:e,height:o}=((A=this.cameraTrack)==null?void 0:A.settings)||{};return zB(this._rotation)?{width:o,height:e}:{width:e,height:o}}get2dVideoContext(){return this._2dVideoContext?this._2dVideoContext.destroy():this._2dVideoContext=new uQ({frameRate:15,logger:this.log,name:"m"}),this._2dVideoContext.create({alpha:this._hasWaterMark||this._hasVirtualBg}),this._2dVideoContext}getGlVideoContext(){if(this._glVideoContext){if(this._glVideoContext.available)return this._glVideoContext}else this._glVideoContext=new UC({frameRate:15,logger:this.log,name:"m"});return this.initializeGlVideoContext(),this._glVideoContext}initializeGlVideoContext(){try{this._glVideoContext.create(zx<=22),this._glVideoContext.on(UC.UNAVAILABLE,A=>{var e;this.emit("error",A),this.log.warn("video context unavailable",A),(e=this._virtualBackgroundAbortCallback)==null||e.call(this,A),this.update().catch(o=>{this.log.error(o)})})}catch(A){this.emit("error",A)}}initVirtualBackground(A,e,o){this.onAbort=A,this._mat4=e,this._postProcessing=o}enablePrintDetail(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:2e3;this._checkId=_r.run("interval",()=>{this.destination&&this.log.debug(this.destination.getInfo())},{delay:A})}destroy(){var A,e;(A=this._2dVideoContext)==null||A.destroy(),(e=this._glVideoContext)==null||e.destroy(),this.smallVideoContext.destroy(),_r.clearTask(this._checkId)}get needAlpha(){return this._hasWaterMark||this._hasVirtualBg}get active(){return(Gp||this._isMixScreen||this._isTransform||this._hasWaterMark||this._hasVirtualBg||this._beautyParams)&&this.checkOrCreateVideoContext()}sendCreateResult(){let A=arguments.length>1?arguments[1]:void 0,e=(arguments.length>0&&arguments[0]!==void 0?arguments[0]:"videoCtxGl")==="videoCtxGl"?512700:512701;A?Ai.addFailedEvent({key:e,error:A}):Ai.addSuccessEvent({key:e})}checkOrCreateVideoContext(){let A=this._use2d;if(this._autoSwitchRenderMode&&(this._use2d=!this._hasVirtualBg),this.videoContext)if(this.videoContext.available){let e=!this.videoContext.hasAlpha&&this.needAlpha;if(this._autoSwitchRenderMode&&A===this._hasVirtualBg)this.clear();else{if(!e||!this._use2d)return!0;this.clear()}}else{if(this._glVideoContext=new UC({frameRate:15,logger:this.log,name:"m"}),this.initializeGlVideoContext(),this._glVideoContext.available)return this.videoContext=this._glVideoContext,this.videoContext.available;this.log.warn("webgl is still not available"),this.clear(),this._use2d=!0}return this.videoContext=this._use2d?this.get2dVideoContext():this.getGlVideoContext(),this.videoContext.available}get smallTrack(){var A;return(A=this.smallDestination)==null?void 0:A.videoTrack}get hasSmall(){return!!this.smallTrack}get initialTrack(){var A;return(A=this.cameraTrack)==null?void 0:A.mediaTrack}setSmallVideo(A,e){if(this.smallMode!=="api")if(A){if(!this.smallVideoContext.available){if(this.smallVideoContext.create({alpha:!1}),!this.smallVideoContext.available)return;this.smallDestination=new itA(this.smallVideoContext,A,this.log),this.smallVideoContext.on(UC.UNAVAILABLE,o=>{this.log.warn("small video context lost",o)})}if(this.smallVideoContext.frameRate=A.frameRate,this.smallDestination.resolution=A,e)this.smallTrackSource&&(this.smallTrackSource.close(),delete this.smallTrackSource),this.smallImageSource?this.smallImageSource.image=e:(this.smallImageSource=this.smallVideoContext.createVideoImageSource(e),this.smallImageSource.resize(e.width,e.height),this.smallImageSource.connect(this.smallDestination));else if(this.smallImageSource&&(this.smallImageSource.close(),delete this.smallImageSource),this.smallTrackSource)this.smallTrackSource.replaceTrack(this.initialTrack);else{this.smallTrackSource=this.smallVideoContext.createVideoTrackSource(this.initialTrack,"smallTrackSource");let{width:o,height:a}=this.cameraTrack.settings;this.smallTrackSource.resize(o,a),this.smallTrackSource.connect(this.smallDestination)}}else this.smallVideoContext.available&&(this.smallVideoContext.destroy(),delete this.smallDestination,delete this.smallTrackSource,delete this.smallImageSource)}_setMainOutput(A){var e,o;try{let a=this.cameraTrack,{small:c,player:d}=a;Gp&&d.setCanvas(A);let C=A&&((e=this.destination)==null?void 0:e.videoTrack)||this.initialTrack;return this.isUsingArTrack&&this.arTrack&&(this.emit("output-track-changed"),C=this.arTrack),this.log.info("set main output ".concat(C?C.label:"no output track")),this.setSmallVideo(c,A),U.emit(sA.LOCAL_VIDEO_TRACK_PREPROCESSED,{mediaTrack:C,profile:(o=this.cameraTrack)==null?void 0:o.profile,room:this.room}),a.setOutputMediaStreamTrack(C)}catch(a){this.log.error("set main output failed",a)}}update(){let A=arguments.length>0&&arguments[0]!==void 0&&arguments[0];return KA(this,null,function*(){var e;if(!this.cameraTrack||!this.initialTrack)return;if(!this.active)return this.cameraNode&&this.clear(),this._setMainOutput();let{settings:o,profile:a}=this.cameraTrack;if(this._use2d||!this._virtualBackground&&!this._beautyParams)this.destination||(this.destination=this.videoContext.createVideoTrackDestination({name:"mainDestination2d",logger:this.log}),this.destination.on(Kd.RENDER,c=>{var d;(d=this.cameraTrack)==null||d.emit("render",c)})),Jd===16?this.initialTrack instanceof CanvasCaptureMediaStreamTrack?(this.cameraNode&&(this.cameraNode instanceof X0?(this.cameraNode.close(),delete this.cameraNode):this.cameraNode.image=this.initialTrack.canvas),this.cameraNode||(this.cameraNode=this.videoContext.createVideoImageSource(this.initialTrack.canvas,{name:"cameraCanvasSource",logger:this.log}))):(this.cameraNode&&(this.cameraNode instanceof X0?this.cameraNode.replaceTrack(this.initialTrack):(this.cameraNode.close(),delete this.cameraNode)),this.cameraNode||(this.cameraNode=this.videoContext.createVideoTrackSource(this.initialTrack,"cameraTrackSource"))):this.cameraNode?this.cameraNode.replaceTrack(this.initialTrack):this.cameraNode=this.videoContext.createVideoTrackSource(this.initialTrack,"cameraNodeSource"),this.cameraNode.resize(o.width,o.height);else if(A&&this.cameraNode&&this.destination)this.cameraNode.replaceTrack(this.initialTrack);else{this.cameraNode&&this.cameraNode.close(),this.destination?this.destination.disableCheckMute():(this.destination=new ttA(this.videoContext,{name:"mainDestination",logger:this.log}),this.destination.on(Kd.RENDER,y=>{var S;(S=this.cameraTrack)==null||S.emit("render",y)}));let{width:c,height:d}=this.cameraResolution,C=yield this.getWatermarkImage(c,d);this._waterMarkOption={x:0,y:0,width:C.width,height:C.height,image:C},this.cameraNode=new RiA(this.videoContext,{input:this.initialTrack,width:c,height:d,mirror:this._isMirror,rotation:this._rotation,bg:this._virtualBackground,selfModel:this.selfModel,waterMark:this._waterMarkOption,beautyParams:this._beautyParams,useTflite:!0,blurRadius:this.blurRadius,assetPath:this._bgAssetPath,Wasm:this.Wasm,enableFaceCentering:this._enableFaceCentering,enableEffectOptimization:this._enableEffectOptimization,onAbort:this.onAbort,mat4:this._mat4,postProcessing:this._postProcessing,color:this._color}),this.cameraNode.connect(this.destination),this.destination.enableCheckMute(),yield this.cameraNode.predictReady}if(this.videoContext.frameRate=a.frameRate,this._use2d){let c=this.cameraNode;if(c.disconnect(),this._isTransform&&(this.transformNode?(this.transformNode.mirror=this._isMirror,this.transformNode.rotation=this._rotation):this.transformNode=new Qy(this.videoContext,this.log,this._isMirror,this._rotation),c=c.connect(this.transformNode),c.disconnect(),this.log.info("start mirror ".concat(this._isMirror," rotate ").concat(this.rotation))),this.mixNode&&this.mixNode.close(),delete this.mixNode,this._isMixScreen||this._hasWaterMark){if(this.mixNode=new W4(this.videoContext,this.log),c.connect(this.mixNode,{zIndex:1}),this._hasWaterMark&&!this.waterMarkNode&&this._waterMarkOption)this.waterMarkNode=this.videoContext.createVideoImageSource(this._waterMarkOption.image,{autoResize:!1,logger:this.log}),this.waterMarkNode.resize(this._waterMarkOption.width,this._waterMarkOption.height),this.waterMarkNode.x=this._waterMarkOption.x,this.waterMarkNode.y=this._waterMarkOption.y;else if(this.waterMarkNode){let{width:d,height:C}=this.cameraResolution;this.waterMarkNode.image=yield this.getWatermarkImage(d,C),d&&C&&this.waterMarkNode.resize(d,C)}(e=this.waterMarkNode)==null||e.connect(this.mixNode,{zIndex:2}),this._isMixScreen&&this.screenTrack&&(this.screenNode||(this.screenNode=this.videoContext.createVideoTrackSource(this.screenTrack.mediaTrack,"screenNodeSource"),this.screenNode.resize(this.screenTrack.settings.width,this.screenTrack.settings.height)),this.screenNode.shouldUpdate=!1,this.screenNode.connect(this.mixNode,{zIndex:0})),c=this.mixNode,this.log.info("start mix","".concat(this.mixNode.width,"x").concat(this.mixNode.height))}c.connect(this.destination)}return this.log.info("update ".concat(this._use2d?"2d":"webgl")),this._setMainOutput(this.videoContext.canvas)})}clearLastFrame(){var A;this.destination&&((A=this.destination.ctx2d)==null||A.clearRect(0,0,this.destination.width,this.destination.height))}changeInput(A){var e,o,a,c,d;if(A instanceof bM)return this.log.info("change screen input",(e=A.mediaTrack)==null?void 0:e.label),this.setScreenTrack(A);if(A instanceof IQ)return this.log.info("change video input",(o=A.mediaTrack)==null?void 0:o.label),this.setCameraTrack(A);if(A instanceof Jk){this.log.info("change remote input",(a=A.mediaTrack)==null?void 0:a.label);let C=A.mediaTrack;return A.setOutputMediaStreamTrack(C)}if(A instanceof CK)return this.log.info("change mix input",(c=A.outMediaTrack)==null?void 0:c.label),this.setMixTrack(A);this.log.warn("change unknown input",(d=A.mediaTrack)==null?void 0:d.label)}removeInput(A){var e;A instanceof bM?((e=this.screenNode)==null||e.close(),delete this.screenNode,delete this.screenTrack,this.update()):A instanceof IQ?this._isMixScreen?(delete this.cameraNode,this.cameraTrack._inputTrack=null,this.update()):(this.clear(),delete this.cameraTrack,this.smallImageSource&&(this.smallImageSource.close(),delete this.smallImageSource),this.smallTrackSource&&(this.smallTrackSource.close(),delete this.smallTrackSource)):A instanceof Jk?A.source&&A.source.context.destroy():A instanceof CK&&(delete this.mixTrack,this.update())}setMixTrack(A){this.mixTrack=A}setCameraTrack(A){return this.cameraTrack=A,this.update(!0)}setScreenTrack(A){return KA(this,null,function*(){return this.screenTrack=A,this._isMixScreen&&(this.screenNode?this.screenNode.replaceTrack(A.mediaTrack):yield this.update()),A.setOutputMediaStreamTrack(A.mediaTrack)})}getWatermarkImage(A,e){return KA(this,null,function*(){let o=document.createElement("canvas");e&&A&&(o.height=e,o.width=A);let a=o.getContext("2d");if(!a)throw new oi({code:lt.NOT_SUPPORTED,message:"Make image failed because of canvas context is null"});return this.watermarkImageList.sort((c,d)=>c.zIndex-d.zIndex),this.watermarkImageList.forEach(c=>{let{image:d,x:C,y,width:S,height:b,fillVideo:V}=c,J=V&&A||S,gA=V&&e||b,CA=V?0:C,MA=V?0:y;a.drawImage(d,CA,MA,J,gA)}),WS(o.toDataURL())})}pushWaterMarkImageList(A){let{type:e}=A;this.watermarkImageList.some(o=>o.imageUrl===A.imageUrl&&o.height===A.height&&o.width===A.width&&o.x===A.x&&o.y===A.y&&o.type===A.type&&o.zIndex===A.zIndex&&o.fillVideo===A.fillVideo)||((e==="mute"||e==="watermark")&&(this.watermarkImageList=this.watermarkImageList.filter(o=>o.type!==e)),this.watermarkImageList.push(A))}setBeautyParams(A){return KA(this,null,function*(){this._beautyParams=A,this.update()})}stopBeauty(){return KA(this,null,function*(){this._beautyParams=void 0,this.update()})}setWatermark(A){return KA(this,null,function*(){let e;try{e=yield WS(A?.imageElement||A.imageUrl)}catch{throw new oi({code:lt.INVALID_PARAMETER,message:"load image failed, url: ".concat(A.imageUrl)})}let{x:o=0,y:a=0,width:c=e.width,height:d=e.height,type:C="watermark",zIndex:y=2,fillVideo:S=!1}=A;this.watermarkImageList.some(b=>b.type===C)?(this.watermarkImageList=this.watermarkImageList.filter(b=>b.type!==C),this.pushWaterMarkImageList({x:o,y:a,width:c,height:d,image:e,zIndex:y,type:C,imageUrl:A.imageUrl,fillVideo:S}),e=yield this.getWatermarkImage(this.cameraResolution.width,this.cameraResolution.height),this._waterMarkOption={x:0,y:0,width:e.width,height:e.height,image:e},this.waterMarkNode?(this.waterMarkNode.x=0,this.waterMarkNode.y=0,this.waterMarkNode.resize(e.width,e.height),this.waterMarkNode.image=e):this.update()):(this.pushWaterMarkImageList({x:o,y:a,width:c,height:d,image:e,zIndex:y,type:C,imageUrl:A.imageUrl,fillVideo:S}),yield this.freshWatermark()),this.log.info("set watermark",JSON.stringify(this.watermarkImageList,(b,V)=>b==="imageUrl"?void 0:V))})}deleteWatermark(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"watermark";return KA(this,null,function*(){this.watermarkImageList=this.watermarkImageList.filter(e=>e.type!==A),this.log.info("delete watermark",A,JSON.stringify(this.watermarkImageList,(e,o)=>e==="imageUrl"?void 0:o)),yield this.freshWatermark()})}freshWatermark(){return KA(this,null,function*(){var A;(A=this.waterMarkNode)==null||A.close(),delete this.waterMarkNode,delete this._waterMarkOption;let{width:e,height:o}=this.cameraResolution,a=yield this.getWatermarkImage(e,o);this._waterMarkOption={x:0,y:0,width:a.width,height:a.height,image:a},this.update()})}setVirtualBackground(A){return KA(this,null,function*(){var e,o,a;if(A){if(A.onAbort&&(this._virtualBackgroundAbortCallback=A.onAbort),this._use2d&&!this._autoSwitchRenderMode)return Promise.reject(new Error("not support virtual background in 2d mode"));this._bgAssetPath=A.assetPath,A.type==="image"?this._virtualBackground=yield WS(A.imageUrl):(this.blurRadius=A.blurLevel||this.blurRadius||3,this._virtualBackground=A.type),this._enableFaceCentering=(e=A.enableFaceCentering)!=null?e:this._enableFaceCentering,this._enableEffectOptimization=(o=A.enableEffectOptimization)!=null?o:this._enableEffectOptimization,this._color=(a=A.color)!=null?a:[0,1,0]}else delete this._virtualBackground,delete this._virtualBackgroundAbortCallback;if(this.log.info("".concat(this._virtualBackground?"start":"stop"," virtual background, ").concat(A?.type||"",", ").concat(this.blurRadius||"")),yield this.update(),this._virtualBackground&&!this._glVideoContext.available)throw new oi({code:lt.INVALID_OPERATION,message:"webgl context create failed, ".concat(this._glVideoContext.error)})})}get mixScreen(){return this._isMixScreen}set mixScreen(A){var e;this._isMixScreen=A,this._isMixScreen||((e=this.screenNode)==null||e.close(),delete this.screenNode),this.update()}set mirror(A){var e;this._isMirror!==A&&(this._isMirror=A,this._isTransform||((e=this.transformNode)==null||e.close(),delete this.transformNode),this.update())}get mirror(){return this._isMirror}set rotation(A){var e;this._rotation!==A&&(this._rotation=A,this._isTransform||((e=this.transformNode)==null||e.close(),delete this.transformNode),this.update())}get rotation(){return this._rotation}enableAr(A){this.arTrack=A,this.isUsingArTrack=!0,this.update()}updateAr(){return KA(this,null,function*(){var A;(A=this.cameraTrack)!=null&&A.mediaTrack&&(yield this.virtualBackgroundInstance.ar.updateInputTrack(this.cameraTrack.mediaTrack.clone()))})}disableAr(){var A;this.isUsingArTrack=!1,(A=this.arTrack)==null||A.stop(),this.arTrack=void 0,this.update()}createDecodeContext(A){return new TiA(A)}clear(){var A,e;(A=this.videoContext)==null||A.disconnect(),(e=this.destination)==null||e.removeAllListeners(),delete this.destination,delete this.cameraNode,delete this.transformNode,delete this.screenNode,delete this.waterMarkNode}addEncodeProcessor(A){let{processor:e,type:o}=A;var a;this.encodePipeline.includes(e)||(this.encodePipeline[o]=e,(a=this.room)==null||a.enableInsertableStreams())}addDecodeProcessor(A){let{processor:e,type:o}=A;var a;this.decodePipeline.includes(e)||(this.decodePipeline[o]=e,(a=this.room)==null||a.enableInsertableStreams())}removeEncodeProcessor(A){let{type:e}=A;this.encodePipeline[e]=void 0}removeDecodeProcessor(A){let{type:e}=A;this.decodePipeline[e]=void 0}};di([B4(function(A){this.log.error("update failed",A)}),Hr(A=>function(){for(var e=arguments.length,o=new Array(e),a=0;a{A.apply(this,o).then(c,d),setTimeout(d,5e3,new oi({code:lt.API_CALL_TIMEOUT,message:"update timeout"}))}),this._updateFlag=!1,yield this.updated)})})],$5.prototype,"update");var NiA=0,GiA=class extends Zs{constructor(A){super("room"),Y(this,"seq",++NiA),Y(this,"sdkAppId"),Y(this,"userId"),Y(this,"userSig"),Y(this,"privateMapKey"),Y(this,"latencyLevel"),Y(this,"tinyId"),Y(this,"scene"),Y(this,"roomId"),Y(this,"useStringRoomId"),Y(this,"role","anchor"),Y(this,"joinParams",null),Y(this,"localPublishFlag",0),Y(this,"localTracks",new Set),Y(this,"enableAutoPlayDialog",!0),Y(this,"autoReceiveAudio",!0),Y(this,"autoReceiveVideo",!0),Y(this,"proxy_ws"),Y(this,"proxy_wt"),Y(this,"proxy_unified"),Y(this,"checkSystemResult",{result:!0,detail:{isBrowserSupported:!0,isWebRTCSupported:!0,isWebCodecsSupported:!0,isMediaDevicesSupported:!0,isScreenShareSupported:!0,isSmallStreamSupported:!0,isH264EncodeSupported:!0,isVp8EncodeSupported:!0,isH264DecodeSupported:!0,isVp8DecodeSupported:!0,isH265EncodeSupported:!0,isH265DecodeSupported:!0}}),Y(this,"keyPointManager"),Y(this,"audioManager"),Y(this,"videoManager"),Y(this,"callDurationCalculator"),Y(this,"badCaseDetector"),Y(this,"scheduleResult",{domains:null,iceServers:null,iceTransportPolicy:null,trtcAutoConf:null}),Y(this,"videoDecodeFallbackType"),Y(this,"smallMode","canvas"),Y(this,"prelinkPromise",null),Y(this,"enableChorus",!1),Y(this,"_isUsingCachedSchedule",!1),Y(this,"_log"),Y(this,"_joinedTimestamp",0),Y(this,"_sdkType"),Y(this,"heartbeatReport"),Y(this,"heartbeatCount",0),Y(this,"quality"),Y(this,"enableSEI"),Y(this,"isDestroyed",!1),this._log=QA.createLogger({parent:A.logger,id:"r".concat(this.seq)}),this.useStringRoomId=!!A.useStringRoomId,wr(A.autoReceiveAudio)&&(this.autoReceiveAudio=A.autoReceiveAudio),wr(A.autoReceiveVideo)&&(this.autoReceiveVideo=A.autoReceiveVideo),wr(A.enableAutoPlayDialog)&&(this.enableAutoPlayDialog=A.enableAutoPlayDialog),this._sdkType=A.sdkType,this.keyPointManager=new fiA({room:this,frameWorkType:A.frameWorkType,component:A.component,language:A.language}),this.callDurationCalculator=new yiA({room:this}),this.badCaseDetector=new SiA({room:this}),this.audioManager=new gtA(this),this.videoManager=new $5(this)}get videoCodec(){return"h264"}get scriptTransformWorker(){}get isMainStreamPublished(){for(let A of this.localTracks)if(4&A.mediaType)return!0;return!1}get isAuxStreamPublished(){for(let A of this.localTracks)if(2&A.mediaType)return!0;return!1}get hasAuxStream(){for(let A of this.remotePublishedUserMap.values())if(A.muteState.hasAuxiliary)return!0;return this.isAuxStreamPublished}get localMainAudioTrack(){for(let A of this.localTracks)if(1&A.mediaType)return A;return null}get localMainVideoTrack(){for(let A of this.localTracks)if(4&A.mediaType)return A;return null}get localAuxVideoTrack(){for(let A of this.localTracks)if(2&A.mediaType)return A;return null}get publishState(){let A={audio:!1,bigVideo:!1,smallVideo:!1,auxVideo:!1};return this.localTracks.forEach(e=>{if(e.isPublished||e.isPublishing)switch(e.mediaType){case 1:A.audio=!0;break;case 4:A.bigVideo=!0,A.smallVideo=e.hasSmall;break;case 2:A.auxVideo=!0}}),A}get muteState(){var A,e,o;return{audio:!((A=this.localMainAudioTrack)==null||!A.muted),bigVideo:!((e=this.localMainVideoTrack)==null||!e.muted),auxVideo:!((o=this.localAuxVideoTrack)==null||!o.muted)}}getLogger(){return this._log}get isJoining(){return this.state.toString()==="joining"}get isJoined(){return this.state==="joined"}get isLeft(){return this.state==="left"}addTrack(A){return KA(this,null,function*(){return this.publish(A)})}removeTrack(A){return KA(this,null,function*(){return this.unpublish(A)})}replaceTrack(A){return KA(this,null,function*(){})}setEncodedDataProcessingListener(A){throw new Error("Method not implemented.")}enableAIVoice(A){throw new Error("Method not implemented.")}setProxyServer(A){if(Yn(A))/^wss?:\/\//i.test(A)?this.proxy_ws=A:/^https?:\/\//i.test(A)&&(this.proxy_wt=A);else if(oE(A)){let{websocketProxy:e,webtransportProxy:o,loggerProxy:a,scheduleProxy:c,unifiedProxy:d}=A;this.proxy_ws=e,this.proxy_wt=o,this.proxy_unified=d,d?(mK([d,d]),TS("https://".concat(d))):(a&&TS(a),c&&mK(c))}U.once(sA.JOIN_RECEIVED_CMD_RES,()=>this.sendAbilityStatus({sched_domain:zp.main,sched_back_domain:zp.backup,signal_domain:this.proxy_ws||this.proxy_wt||""}))}getRemoteAudioStats(){return KA(this,null,function*(){let A={};return this.remotePublishedUserMap.forEach(e=>{A[e.userId]=e.remoteAudioTrack.stat}),A})}getTransportStats(){return KA(this,null,function*(){var A;let e={rtt:((A=this.quality)==null?void 0:A.uplinkRTT)||0,downlinksRTT:{}};if(this.quality)for(let o of this.quality.downlinkInfo)e.downlinksRTT[o.userId]=o.rtt;return e})}getRemoteVideoStats(){return KA(this,arguments,function(){var A=this;let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"main";return function*(){let o={};return A.remotePublishedUserMap.forEach(a=>{let c=e==="auxiliary"?a.remoteAuxiliaryTrack:a.remoteVideoTrack;o[a.userId]=c.stat}),o}()})}checkDestroy(){if(this.isDestroyed)throw new oi({code:lt.INVALID_OPERATION,message:Zo({key:So.CLIENT_DESTROYED,data:{funName:"join"}})})}destroy(){if(this.isJoined)throw this._log.warn(cc.INVALID_DESTROY),new oi({code:lt.INVALID_OPERATION,message:Zo({key:So.INVALID_DESTROY})});this._log.info("destroy room"),this.audioManager.destroy(),this.videoManager.destroy(),this.keyPointManager.destroy(),this.callDurationCalculator.destroy(),this.badCaseDetector.destroy(),this.isDestroyed=!0,U.emit(sA.ROOM_DESTROY,{room:this})}schedule(A,e){return KA(this,null,function*(){var o,a,c,d;let C=bo();try{let{isCached:y,result:S,detailCost:b}=yield u5({userId:this.userId,sdkAppId:this.sdkAppId,roomId:this.useStringRoomId?A.strRoomId:A.roomId,useStringRoomId:this.useStringRoomId,version:Pd,userSig:this.userSig,role:this.scene==="live"?A.role:void 0,frameWorkType:e,latencyLevel:A.latencyLevel});this._isUsingCachedSchedule=y,this._log.info("schedule cache:".concat(+y," ").concat(Vd(S,{keysToExclude:["username","credential"]}))),y&&U.once(sA.JOIN_RECEIVED_CMD_RES,()=>this.sendAbilityStatus({scheduleCache:1})),this.scheduleResult=pi(pi({},this.scheduleResult),S),bn((o=S.config)==null?void 0:o.retryCount)&&zw(S.config.retryCount),Yn((a=S.config)==null?void 0:a.loggerDomain)&&TS(S.config.loggerDomain),this.videoDecodeFallbackType=((c=S.config)==null?void 0:c.videoDecodeFallback)||this.videoDecodeFallbackType,this.smallMode=((d=S.config)==null?void 0:d.smallMode)||this.smallMode,U.emit(sA.JOIN_SCHEDULE_SUCCESS,{room:this,schedule:this.scheduleResult,detailCost:b}),Ai.addSuccessEvent({key:521700,cost:bo()-C})}catch(y){throw Ai.addFailedEvent({key:521700,error:y}),y}})}sendAbilityStatus(A){}enableInsertableStreams(){return Promise.resolve()}switchRoom(A){return Promise.reject()}isSwitchRoomSupported(){return!1}prelink(A,e,o,a,c,d){return KA(this,null,function*(){return Promise.resolve()})}closePrelink(){return KA(this,null,function*(){return Promise.resolve()})}},biA=gc(Hl()),Az=gc($G());function ez(A){var e;let o=[];for(let a=0;ad.payload===A.rtp[a].payload)[0];o.push({payload:A.rtp[a].payload,codec:A.rtp[a].codec,fmtp:c?c.config:"",rate:A.rtp[a].rate,rtx:((e=A.rtp[a+1])==null?void 0:e.codec)==="rtx"?A.rtp[a+1].payload:0,rtcpfb:(A?.rtcpFb||[]).filter(d=>d.payload===A.rtp[a].payload).map(d=>{let{type:C,subtype:y}=d;return{id:C,params:y?[y]:[]}})})}return o}var kiA=(A,e,o)=>KA(null,null,function*(){var a;let c=uc(A),d={ice:{ufrag:"",password:""},dtls:{hash:"",fingerprint:"",setup:""},audio:{codecs:[],extensions:[]},video:{codecs:[],decoders:[],extensions:[]},useDataChannel:o};d.ice.ufrag=String(c.media[0].iceUfrag),d.ice.password=c.media[0].icePwd||"",c.fingerprint&&(d.dtls.hash=c.fingerprint.type,d.dtls.fingerprint=c.fingerprint.hash,d.dtls.setup=c.setup||""),c.media[0].fingerprint&&(d.dtls.hash=c.media[0].fingerprint.type,d.dtls.fingerprint=c.media[0].fingerprint.hash),d.dtls.setup=c.media[0].setup||"";let C=c.media[0],y=c.media[1];C.ext&&(d.audio.extensions=C.ext.map(b=>({id:b.value,uri:b.uri}))),y.ext&&(d.video.extensions=y.ext.map(b=>({id:b.value,uri:b.uri})));for(let b of C.rtp){if(b.codec!=="opus")continue;let V=C.fmtp.find(gA=>gA.payload===b.payload);if(!V)continue;let J={codec:b.codec,fmtp:V.config,payload:V.payload,rate:b.rate,channels:b.encoding,rtcpfb:[],rtx:0};(a=C.rtcpFb)==null||a.forEach(gA=>{let{payload:CA,type:MA,subtype:ee}=gA;if(CA===J.payload){let Be={id:MA,params:[]};ee&&Be.params.push(ee),J.rtcpfb.push(Be)}}),d.audio.codecs.push(J);break}let S=["h264","vp8","h265"];return e&&S.shift(),d.video.codecs=[...ez(y)].filter(b=>S.includes(b.codec.toLocaleLowerCase())),d.video.decoders=(yield function(){return KA(this,null,function*(){let b=new RTCPeerConnection;b.addTransceiver(YA.VIDEO,{direction:YA.TRANSCEIVER_DIRECTION_RECVONLY});let V=yield b.createOffer();if(!V.sdp)return[];let J=ez(uc(V.sdp).media[0]);return b.close(),J})}()).filter(b=>["h264","vp8","h265"].includes(b.codec.toLocaleLowerCase())),d}),tz=(A,e)=>{let o=(A||"").trim(),a=(e||"").trim(),c="profile-level-id",d="".concat(c,"=[0-9a-fA-F]{6}");if(new RegExp(d).test(o)){let y=new RegExp(d,"g");return o.replace(y,"".concat(c,"=").concat(a))}if(!o)return"".concat(c,"=").concat(a);let C=o.endsWith(";")?"":";";return"".concat(o).concat(C).concat(c,"=").concat(a)},LiA=A=>{let{serverAbility:e,clientAbility:o,offerSDP:a,enableCustomMessage:c,profileLevelIdConfig:d}=A,C=uc(a),y={extmapAllowMixed:"extmap-allow-mixed",groups:C.groups,icelite:"ice-lite",media:[],msidSemantic:{semantic:"",token:"WMS"},name:"-",origin:{address:"127.0.0.1",username:"-",sessionId:String(Date.now()),sessionVersion:1,netType:"IN",ipVer:4},timing:{start:0,stop:0},version:0},S={candidates:e.candidates.map(V=>({component:1,foundation:"1",generation:0,ip:V.ip,port:V.port,priority:V.priority,transport:V.foundation,type:V.type})),connection:{version:4,ip:"0.0.0.0"},direction:YA.TRANSCEIVER_DIRECTION_RECVONLY,ext:e.audio.extensions.map(V=>({value:V.id,uri:V.uri})),fingerprint:{type:e.dtls.hash,hash:e.dtls.fingerprint},fmtp:[{payload:e.audio.codecs[0].payload,config:e.audio.codecs[0].fmtp}],icePwd:e.ice.password,iceUfrag:e.ice.ufrag,mid:"0",payloads:String(e.audio.codecs[0].payload),port:C.media[0].port,protocol:C.media[0].protocol,type:YA.AUDIO,setup:e.dtls.setup,rtcpFb:e.audio.codecs[0].rtcpfb.map(V=>({payload:e.audio.codecs[0].payload,type:V.id,subtype:V.params[0]})),rtcpMux:"rtcp-mux",rtcpRsize:"rtcp-rsize",rtp:[{payload:e.audio.codecs[0].payload,codec:e.audio.codecs[0].codec,rate:e.audio.codecs[0].rate,encoding:e.audio.codecs[0].channels}]};y.media.push(S);let b=[d?.big,d?.small,d?.aux];return[1,2,3].forEach((V,J)=>{y.media.push(iz({mid:V,serverAbility:e,clientAbility:o,parsedOffer:C,profileLevelId:b[J]}))}),c&&y.media.push(C.media.find(V=>V.mid==="dc")),fy(y)},iz=A=>{let{mid:e,serverAbility:o,clientAbility:a,parsedOffer:c,isDownlink:d=!1,profileLevelId:C}=A,y={candidates:o.candidates.map(S=>({component:1,foundation:"1",generation:0,ip:S.ip,port:S.port,priority:S.priority,transport:S.foundation,type:S.type})),connection:{version:4,ip:"0.0.0.0"},direction:YA.TRANSCEIVER_DIRECTION_RECVONLY,ext:o.video.extensions.map(S=>({value:S.id,uri:S.uri})),fingerprint:{type:o.dtls.hash,hash:o.dtls.fingerprint},fmtp:[],icePwd:o.ice.password,iceUfrag:o.ice.ufrag,mid:String(e),payloads:"",port:c.media[0].port,protocol:c.media[0].protocol,type:YA.VIDEO,setup:o.dtls.setup,rtcpFb:[],rtcpMux:"rtcp-mux",rtcpRsize:"rtcp-rsize",rtp:[]};if(d){let S=o.video.decoders;(!S||S.length===0)&&(S=o.video.codecs),(!S||S.length===0)&&(S=a.video.decoders),S.forEach(b=>{s_(y,b)})}else{let S;S=o.useH265?o.video.codecs.findIndex(V=>V.codec.toLowerCase()==="h265"):o.video.codecs.findIndex(V=>V.codec.toLowerCase()===(o.useVp8?"vp8":"h264"));let b=o.video.codecs[S]||a.video.codecs[0];s_(y,b)}if(!d&&C){let S=y.fmtp,b=y.rtp.find(V=>{var J;return((J=V.codec)==null?void 0:J.toLowerCase())==="h264"});if(b){let V=S.find(J=>String(J.payload)===String(b.payload));V&&(V.config=tz(V.config,C))}}return y},s_=(A,e)=>{A.payloads="".concat(A.payloads," ").concat(e.payload).trim(),A.fmtp.push({payload:e.payload,config:e.fmtp}),A.rtcpFb=[...A.rtcpFb||[],...e.rtcpfb.map(o=>({payload:e.payload,type:o.id,subtype:o.params[0]}))],A.rtp.push({payload:e.payload,codec:e.codec.toUpperCase(),rate:e.rate}),e.rtx&&(A.payloads="".concat(A.payloads," ").concat(e.rtx),A.fmtp.push({payload:e.rtx,config:"apt=".concat(e.payload)}),A.rtp.push({payload:e.rtx,codec:"rtx",rate:e.rate}))},UiA=(A,e,o)=>{let a=Az.default.parse(A);return a.media.forEach((c,d)=>{var C;if((c.type===YA.AUDIO||c.type===YA.VIDEO)&&(function(y){if(!y.rtcpFb)return;let S=[];y.rtcpFb.forEach((b,V)=>{var J;S.push(b),y.rtcpFb&&((J=y.rtcpFb[V+1])==null?void 0:J.payload)!==b.payload&&b.type!=="rrtr"&&S.push({payload:b.payload,type:"rrtr"})}),y.rtcpFb=S}(c),function(y){y.type===YA.VIDEO&&y.fmtp&&y.fmtp.forEach(S=>{S.config.includes("apt")||(S.config+=";sps-pps-idr-in-keyframe=1")})}(c),function(y){y.type===YA.AUDIO&&y.fmtp&&y.fmtp.forEach(S=>{S.config+=";sprop-stereo=1;stereo=1"})}(c),function(y){let S=new Set(["urn:ietf:params:rtp-hdrext:sdes:mid","urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id","urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id"]);y.ext&&(y.ext=y.ext.filter(b=>!S.has(b.uri)))}(c),c.type===YA.VIDEO)){if(d<4)c.payloads="",c.fmtp=[],c.rtp=[],c.rtcpFb=[],e.video.codecs.forEach(y=>s_(c,y));else if(o){c.payloads="",c.fmtp=[],c.rtp=[],c.rtcpFb=[];let y=o.video.decoders;(!y||y.length===0)&&(y=o.video.codecs),(!y||y.length===0)&&(y=e.video.decoders),y.forEach(S=>s_(c,S))}}(C=c.payloads)!=null&&C.includes("datachannel")&&a.groups&&c.mid&&(a.groups[0].mids=a.groups[0].mids.replace(c.mid,"dc"),c.mid="dc")}),Az.default.write(a)};function JK(A){var e,o;let a=/profile-level-id=([0-9a-fA-F]{6})/.exec(A);return(o=(e=a?.[1])==null?void 0:e.toLowerCase())!=null?o:null}function HK(A){let e=A.toLowerCase();if(!/^[0-9a-f]{6}$/.test(e))return"unknown";let o=parseInt(e.slice(0,2),16);return o===66?"baseline":o===77?"main":o===100?"high":"unknown"}function oz(A,e){if(!e)return"";let o=A.trim().toLowerCase().replace(/_/g,"-");if(!o)return"";if(/^[0-9a-f]{6}$/.test(o))return o;if(o!=="baseline"&&o!=="main"&&o!=="high")return"";for(let a of e.video.codecs){let c=JK(a.fmtp);if(c&&HK(c)===o)return c}return""}var FiA=gc(Hl()),sz=class extends FiA.EventEmitter{constructor(A){super(),this.room=A,Y(this,"mainFpsHealth",1),Y(this,"mainBitrateHealth",1),Y(this,"badMainBitrateHealthCount",0),Y(this,"lastEmitBadHealthTime",0),Y(this,"log"),!Ja&&sE&&U.on("262",this.onVideoCodecChanged,this),this.log=A.getLogger().createChild({id:"h-d"})}onVideoCodecChanged(A){let{remoteUserId:e,streamType:o,isHWCodec:a,codec:c}=A;if(!e&&o!==7&&c==="h264"){if(!a)return void this.room.off("heartbeat-report",this.onHeartbeatReport,this);this.room.listeners("heartbeat-report").includes(this.onHeartbeatReport)||this.room.on("heartbeat-report",this.onHeartbeatReport,this)}}onHeartbeatReport(A){Date.now()-this.lastEmitBadHealthTime<3e4||(A.msg_up_stream_info.msg_video_status.forEach(e=>{if(e.uint32_video_enc_fps&&e.uint32_video_capture_fps){let o=e.uint32_video_enc_fps/e.uint32_video_capture_fps;e.uint32_video_stream_type===2&&(this.mainFpsHealth=o)}if(e.uint32_video_codec_bitrate&&e.uint32_video_stream_type===2){let{localMainVideoTrack:o}=this.room;o&&(this.mainBitrateHealth=e.uint32_video_codec_bitrate/1e3/o.profile.bitrate)}}),this.log.debug("mainBitrateHealth: ".concat(this.mainBitrateHealth," mainFpsHealth: ").concat(this.mainFpsHealth)),this.mainBitrateHealth>.5&&(this.badMainBitrateHealthCount=0),this.mainFpsHealth>.9&&this.mainBitrateHealth<.5&&(this.badMainBitrateHealthCount++,this.badMainBitrateHealthCount>3&&(this.badMainBitrateHealthCount=0,this.lastEmitBadHealthTime=Date.now(),this.log.warn("bad main bitrate health: ".concat(this.mainBitrateHealth)),this.emit("1",{isAux:!1}))))}destroy(){U.off("262",this.onVideoCodecChanged,this),this.room.off("heartbeat-report",this.onHeartbeatReport,this)}};Y(sz,"EVENT_BAD_HEALTH","bad_health");var OiA=sz,n_=(A=>(A.TRACK="track",A.DATA_CHANNEL_MESSAGE="data_channel_msg",A[A.CONNECTION_STATE_CHANGED="connection-state-changed"]="CONNECTION_STATE_CHANGED",A[A.FIREWALL_RESTRICTION="firewall-restriction"]="FIREWALL_RESTRICTION",A.RECONNECTED="spc-reconnected",A.RECONNECT_FAILED="spc-reconnect-failed",A.ERROR="error",A.SEI_MESSAGE="sei-message",A.DUMP="dump",A))(n_||{}),PiA=1,yy=class extends biA.default{constructor(A){let{signalChannel:e,room:o,enableDataChannel:a}=A;super(),Y(this,"stat",{iceStartTime:0,iceEndTime:0,dtlsStartTime:0,dtlsEndTime:0,peerConnectionStartTime:0,peerConnectionEndTime:0}),Y(this,"isDestroyed",!1),Y(this,"currentState","DISCONNECTED"),Y(this,"_room"),Y(this,"_signalChannel"),Y(this,"_peerConnection",null),Y(this,"_datachannel",null),Y(this,"_enableDataChannel"),Y(this,"_log"),Y(this,"_downlinkMIDMap",new Map),Y(this,"_downlinkMIDUserIDMap",new Map),Y(this,"_reconnectionTimer",-1),Y(this,"reconnectionCount",0),Y(this,"clientAbility"),Y(this,"_serverAbility",null),Y(this,"addDownlinkQueue",new Set),Y(this,"removeDownlinkQueue",new Set),Y(this,"_parsedAnswer",null),Y(this,"_updateSDPPromise",null),Y(this,"_waitForPCConnectedPromise"),Y(this,"clearWaitForConnectedPromise"),Y(this,"clearConnectTimeout"),Y(this,"_isSDPLogged",!1),Y(this,"enableInsertableStreams",!1),Y(this,"insertableStreamsAbortMap",new Map),Y(this,"receiverRemoteTrackMap",new WeakMap),Y(this,"scriptTransformWorker"),Y(this,"_isRelayTried",!1),Y(this,"_rttOverCount",0),Y(this,"originOffer",null),Y(this,"autoSubscribedSsrcGroups",new Map),Y(this,"autoSubscribedUserMap",new Map),Y(this,"_h265DecodeFailed",!1),this._room=o,this._enableDataChannel=a,this._signalChannel=e,this._log=QA.createLogger({parent:this._room.getLogger(),id:"spc".concat(PiA++),userId:this._room.userId,sdkAppId:this._room.sdkAppId}),this._room.enableCodecPipeline&&(Yp?this.enableInsertableStreams=!0:this.initScriptTransformWorker()),this._room.healthDetector.on("1",this.onBadHealth,this)}get isH264EncodeSupported(){let A=this._room.checkSystemResult.detail.isH264EncodeSupported;return this._serverAbility&&(A=A&&!!this._serverAbility.video.codecs.find(e=>e.codec.toLowerCase()==="h264")),A}addAbortController(A,e){var o;(o=this.insertableStreamsAbortMap.get(A))==null||o.abort("destroy"),this.insertableStreamsAbortMap.set(A,e)}get isVP8EncodeSupported(){let A=this._room.checkSystemResult.detail.isVp8EncodeSupported;return this._serverAbility&&(A=A&&this._serverAbility.video.codecs.find(e=>e.codec.toLowerCase()==="vp8")),A}get isH265EncodeSupported(){let A=this._room.checkSystemResult.detail.isH265EncodeSupported;return this._serverAbility&&(A=A&&!!this._serverAbility.video.codecs.find(e=>e.codec.toLowerCase()==="h265")),A}get videoCodec(){var A,e,o;let a=(A=this._parsedAnswer)==null?void 0:A.media[1].rtp.find(c=>["h264","vp8","h265"].includes(c.codec.toLowerCase()));return a?a.codec.toLowerCase():(e=this._serverAbility)!=null&&e.useH265?"h265":(o=this._serverAbility)!=null&&o.useVp8?"vp8":"h264"}get downlinkVideoCodec(){var A,e,o;return(A=this._serverAbility)!=null&&A.useH265&&(e=this._serverAbility)!=null&&e.video.decoders.find(a=>a.codec.toLowerCase()==="h265")&&!this._h265DecodeFailed?"h265":(o=this._serverAbility)!=null&&o.video.decoders.find(a=>a.codec.toLowerCase()==="h264")?"h264":"vp8"}get isUsingH264(){return this.videoCodec==="h264"}get isUsingH265(){return this.videoCodec==="h265"}get isUsingVP8(){return this.videoCodec==="vp8"}get is42001fSupported(){return!!this.clientAbility&&!!this.clientAbility.video.codecs.find(A=>A.fmtp.includes("42001f"))}isProfileLevelIdSupported(A){return!!this.clientAbility&&!!this.clientAbility.video.codecs.find(e=>e.fmtp.includes(A))}get uplinkSSRC(){return this._peerConnection&&this._peerConnection.localDescription?(A=>{let e=uc(A),o={audioSsrc:0,audioRtxSsrc:0,bigVideoSsrc:0,bigVideoRtxSsrc:0,smallVideoSsrc:0,smallVideoRtxSsrc:0,auxVideoSsrc:0,auxVideoRtxSsrc:0};return e.media.forEach((a,c)=>{var d;if(a.ssrcs&&!Ye(a.ssrcs[0].id)){let C=Number(a.ssrcs[0].id),y=Number((d=a.ssrcs.filter(S=>S.attribute==="cname")[1])==null?void 0:d.id);switch(c){case 0:o.audioSsrc=C;break;case 1:o.bigVideoSsrc=C,o.bigVideoRtxSsrc=y;break;case 2:o.smallVideoSsrc=C,o.smallVideoRtxSsrc=y;break;case 3:o.auxVideoSsrc=C,o.auxVideoRtxSsrc=y}}}),o})(this._peerConnection.localDescription.sdp):{audioSsrc:0,audioRtxSsrc:0,bigVideoSsrc:0,bigVideoRtxSsrc:0,smallVideoSsrc:0,smallVideoRtxSsrc:0,auxVideoSsrc:0,auxVideoRtxSsrc:0}}onBadHealth(A){}initScriptTransformWorker(){x0&&(this.scriptTransformWorker=D5({videoEncodePipeline:this._room.videoManager.encodePipeline,videoDecodePipeline:this._room.videoManager.decodePipeline,audioEncodePipeline:this._room.audioManager.encodePipeline,audioDecodePipeline:this._room.audioManager.decodePipeline}),this.scriptTransformWorker.onmessage=A=>{A.data.type==="sei"?this.emit("sei-message",A.data):A.data.type,A.data.type==="dump"&&this.emit("dump",A.data)},this.scriptTransformWorker.onerror=A=>{this._log.error("scriptTransformWorker error: ",A.message)})}get isReconnecting(){return this.currentState==="RECONNECTING"||this._reconnectionTimer>0||this.reconnectionCount>0}get dtlsTransport(){if(!this._peerConnection)return null;let A=this._peerConnection.getSenders();return A.length===0?null:A[0].transport}getPeerConnectionConfig(A){var e;let o={encodedInsertableStreams:this.enableInsertableStreams,offerExtmapAllowMixed:!0,iceServers:A,iceTransportPolicy:this._room.getIceTransportPolicy(),sdpSemantics:this._room.sdpSemantics,bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",tcpCandidatePolicy:"disable",IceTransportsType:"nohost"},a=(e=this._peerConnection)==null?void 0:e.getConfiguration().encodedInsertableStreams;return xx(a)&&(o.encodedInsertableStreams=a),this._log.debug("getPeerConnectionConfig",JSON.stringify(o)),o}initialize(A){return KA(this,null,function*(){var e;let o;try{return this._peerConnection=new RTCPeerConnection(this.getPeerConnectionConfig(A)),this._peerConnection.oniceconnectionstatechange=()=>{if(!this._peerConnection)return;let a=this._peerConnection.iceConnectionState;this._log.debug("ice state: ".concat(a)),a==="checking"&&this.stat.iceStartTime===0?this.stat.iceStartTime=Date.now():a==="connected"&&this.stat.iceEndTime===0?(this.stat.iceEndTime=Date.now(),this._signalChannel.clearBakRelayIps(),Ai.addSuccessEvent({key:521711,cost:this.stat.iceEndTime-this.stat.iceStartTime})):a==="failed"&&Ai.addFailedEvent({key:521711})},this._peerConnection.onsignalingstatechange=()=>{var a;let c=((a=this._peerConnection)==null?void 0:a.signalingState)||"";this._log[c==="closed"?"debug":"info"]("signaling state: ".concat(c))},this._peerConnection.onconnectionstatechange=this.onConnectionStateChange.bind(this),this._peerConnection.ontrack=a=>this.emit("track",a),this._enableDataChannel&&(this._datachannel=this._peerConnection.createDataChannel("".concat(this._room.userId,"dc")),this._datachannel.binaryType="arraybuffer",this._datachannel.onopen=()=>{this._log.info("datachannel open")},this._datachannel.onclose=()=>{this._log.warn("datachannel close")},this._datachannel.onmessage=a=>{let c=new YiA(a.data);this.emit("data_channel_msg",{data:c})},this._datachannel.onerror=a=>{this._log.warn("datachannel error",a)}),this._peerConnection.addTransceiver(YA.AUDIO,{direction:YA.TRANSCEIVER_DIRECTION_SENDONLY}),this._peerConnection.addTransceiver(YA.VIDEO,{direction:YA.TRANSCEIVER_DIRECTION_SENDONLY}),this._peerConnection.addTransceiver(YA.VIDEO,{direction:YA.TRANSCEIVER_DIRECTION_SENDONLY}),this._peerConnection.addTransceiver(YA.VIDEO,{direction:YA.TRANSCEIVER_DIRECTION_SENDONLY}),o=yield this._peerConnection.createOffer(),this.clientAbility=yield kiA(o.sdp,((e=this._room.scheduleResult.config)==null?void 0:e.remove264FromSDP)||!1,this._enableDataChannel),this.originOffer=o,this.dtlsTransport&&(this.dtlsTransport.onstatechange=()=>{let{dtlsTransport:a}=this;a&&(this._log.debug("dtls state: ".concat(a.state)),a.state==="connecting"&&this.stat.dtlsStartTime===0?this.stat.dtlsStartTime=Date.now():a.state==="connected"&&this.stat.dtlsEndTime===0&&(this.stat.dtlsEndTime=Date.now()))}),Ai.addSuccessEvent({key:521707}),this.clientAbility}catch(a){throw Ai.addFailedEvent({key:521707,error:a}),this._log.error("initialize failed ".concat(a,` -offer: `).concat(o?.sdp)),a}})}setIceServers(A){return KA(this,null,function*(){var e;if(this._peerConnection&&A.length!==0)try{if(this._log.info("setIceServers",JSON.stringify(A,(o,a)=>o==="username"||o==="credential"?"hided":a)),this._peerConnection.setConfiguration(this.getPeerConnectionConfig(A)),(e=this._peerConnection)!=null&&e.localDescription||!this.originOffer)return void this._log.warn("setIceServers already has localDescription or no origin Offer");yield this.setOffer(this.originOffer)}catch(o){this._log.warn("setIceServers error ",o)}})}setPriority(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"high";if(this._peerConnection)try{this._peerConnection.getSenders().forEach(e=>{let o=e.getParameters();o.encodings[0]&&(o.encodings[0].priority=A,o.encodings[0].networkPriority=A,e.setParameters(o).catch(a=>{this._log.warn("setPriority error ",a)}))})}catch(e){this._log.warn("setPriority error ",e)}}connect(A){let e=arguments.length>1&&arguments[1]!==void 0&&arguments[1];return KA(this,null,function*(){var o,a,c;try{if(this.currentState==="CONNECTED")return;((o=this._peerConnection)==null||!o.localDescription)&&this.originOffer&&(yield this.setOffer(this.originOffer));let d=bo(),C=this.getProfileLevelIdConfig(),y={type:"answer",sdp:LiA({serverAbility:A,clientAbility:this.clientAbility,offerSDP:this._peerConnection.localDescription.sdp,enableCustomMessage:this._enableDataChannel,profileLevelIdConfig:C})};this._serverAbility=A,yield this.setAnswer(y),yield this.waitForPeerConnectionConnected(),this._room.firewallDetector.resetTimeoutCount();let S=((a=this._room.scheduleResult.config)==null?void 0:a.priority)||((c=this._room.joinParams)==null?void 0:c.priority)||new URLSearchParams(location.search).get("priority");S&&this.setPriority(S),e||Ai.addSuccessEvent({key:521703,cost:bo()-d})}catch(d){let C=d instanceof oi&&d.code===lt.API_CALL_ABORTED;throw C||this._log.error("connect failed: ".concat(d),A),this.reset(),!C&&!this.isReconnecting&&!this.isDestroyed&&(Ai.addFailedEvent({key:521703,error:d}),this.emitConnectionStateChangedEvent("DISCONNECTED"),this.startReconnection()),d}})}reconnect(){return KA(this,null,function*(){if(this._reconnectionTimer===-1){if(!this._signalChannel.isConnected)return this._log.warn("reconnect() wait signal channel is connected"),void this._signalChannel.once(Zk,this.reconnect,this);try{this.reconnectionCount+=1,this._log.warn("reconnect() trying [".concat(this.reconnectionCount,"]")),this.reset();let A=this._signalChannel.getBackupRelayIpPair(),e=yield this.initialize(this._room.getIceServers(A!=null&&A.iceServer?[A.iceServer]:[])),o=pi({ability:e},A),a=yield this._signalChannel.sendWaitForResponse({command:riA,responseCommand:ls.REBUILD_PEER_CONNECTION_RES,data:o,enableLog:!1});if(a.data.code!==0)throw new oi({code:a.data.code,message:a.data.message});yield this.connect(a.data.data.ability,!0),Ai.addSuccessEvent({key:521704}),this._log.warn("reconnect() success"),this.stopReconnection(),U.emit(sA.SPC_RECONNECTED,{room:this._room}),this.emit("spc-reconnected")}catch(A){if(!this.isReconnecting||this.isDestroyed)return;if(A!=null&&A.message.includes("timeout")){let e=yp(this.reconnectionCount);this._log.warn("reconnect() timeout, try again after ".concat(e/1e3,"s")),yield _C(e,o=>{this._reconnectionTimer=o}),this.clearReconnectionTimer(),yield this.reconnect()}else this._log.error("reconnect() failed ".concat(A?.code," ").concat(A)),Ai.addFailedEvent({key:521704,error:A}),this.reconnectionCount>=Lf()&&this._log.warn("SDK has tried reconnect for ".concat(Lf()," times, but all failed, please check your network")),this.stopReconnection(),this.emitConnectionStateChangedEvent("DISCONNECTED"),this.emit("error")}}else this._log.warn("reconnect() is reconnecting, ignore current reconnection")})}getPeerConnection(){return this._peerConnection}startReconnection(){return KA(this,null,function*(){this.isReconnecting||(this._log.warn("start reconnect"),this._updateSDPPromise=null,this.emitConnectionStateChangedEvent("RECONNECTING"),yield this.reconnect())})}stopReconnection(){var A;this.isReconnecting&&(this._log.info("stop reconnect"),this.reconnectionCount=0,this.clearReconnectionTimer(),(A=this.clearConnectTimeout)==null||A.call(this),this._signalChannel.off(Zk,this.reconnect,this),this.currentState==="RECONNECTING"&&this.emitConnectionStateChangedEvent("DISCONNECTED"))}checkPeerConnectionToReconnect(){var A;!this.isReconnecting&&((A=this._peerConnection)==null?void 0:A.connectionState)===Eo.CLOSED&&this.startReconnection()}clearReconnectionTimer(){this._reconnectionTimer!==-1&&(clearTimeout(this._reconnectionTimer),this._reconnectionTimer=-1)}onConnectionStateChange(A){var e;let o=((e=this._peerConnection)==null?void 0:e.iceConnectionState)||"closed",a=this.getDTLSTransportState();this._log.info("connectionState: ".concat(A.target.connectionState," ICE: ").concat(o," DTLS: ").concat(a)),A.target.connectionState===Eo.CONNECTING&&(this.stat.peerConnectionStartTime===0&&(this.stat.peerConnectionStartTime=Date.now()),this.emitConnectionStateChangedEvent("CONNECTING")),(A.target.connectionState===Eo.FAILED||A.target.connectionState===Eo.CLOSED)&&(this.emitConnectionStateChangedEvent("DISCONNECTED"),this._room.forceRelay?this.switchRelay(!1):this.startReconnection()),(A.target.connectionState===Eo.CONNECTED||A.target.connectionState===Eo.COMPLETED)&&(this.stat.peerConnectionEndTime===0&&(this.stat.peerConnectionEndTime=Date.now()),U.emit(sA.SINGLE_CONNECTION_STAT,{room:this._room,stat:{ice:this.stat.iceEndTime-this.stat.iceStartTime,dtls:this.stat.dtlsEndTime-this.stat.dtlsStartTime,peerConnection:this.stat.peerConnectionEndTime-this.stat.peerConnectionStartTime}}),this.logSelectedCandidate(),this.emitConnectionStateChangedEvent("CONNECTED"))}getDTLSTransportState(){if(!this._peerConnection)return Jh;let A=null;return NI()&&this._peerConnection.getSenders().length!==0?(A=this._peerConnection.getSenders()[0].transport,cy()&&this._peerConnection.getReceivers().length!==0&&A?A.state:Jh):Jh}emitConnectionStateChangedEvent(A){A!==this.currentState&&(this.currentState==="RECONNECTING"&&A==="CONNECTING"||(this.emit(n_.CONNECTION_STATE_CHANGED,{prevState:this.currentState,state:A}),this.currentState=A))}logSelectedCandidate(){return KA(this,null,function*(){if(!this._peerConnection)return;let A=yield this._peerConnection.getStats();for(let[e,o]of A)if(BM(o)){let a=A.get(o.localCandidateId),c=A.get(o.remoteCandidateId);a&&(this._log.info("local candidate: ".concat(a.candidateType," ").concat(a.protocol,":").concat(a.ip||a.address,":").concat(a.port," ").concat(a.networkType||""," ").concat(a.relayProtocol?"relayProtocol:".concat(a.relayProtocol," url: ").concat(a.url):"")),a.networkType&&a0(a.networkType)),c&&this._log.info("remote candidate: ".concat(c.candidateType," ").concat(c.protocol,":").concat(c.ip||c.address,":").concat(c.port));break}})}waitForPeerConnectionConnected(){return this._waitForPCConnectedPromise||(this._waitForPCConnectedPromise=new Promise((A,e)=>{if(this.currentState==="CONNECTED")return A();let o=C=>{C.state==="CONNECTED"&&(clearTimeout(d),c(),A())},a=C=>{let{room:y}=C;y===this._room&&(clearTimeout(d),c(),e(new oi({code:lt.API_CALL_ABORTED,message:Zo({key:So.CONNECTION_ABORTED,data:"leave room"})})))},c=()=>{U.off(sA.LEAVE_SUCCESS,a,this),this.off(n_.CONNECTION_STATE_CHANGED,o,this)},d=setTimeout(()=>{c();let C=new oi({code:lt.API_CALL_TIMEOUT,message:"connection timeout"});this._room.firewallDetector.increaseTimeoutCount(),e(C)},Ib);this.clearConnectTimeout=()=>{c(),clearTimeout(d),delete this.clearConnectTimeout},this.clearWaitForConnectedPromise=()=>{this._waitForPCConnectedPromise=null,e(new oi({code:lt.API_CALL_TIMEOUT,message:"connection timeout"}))},U.on(sA.LEAVE_SUCCESS,a,this),this.on(n_.CONNECTION_STATE_CHANGED,o,this)}),this._waitForPCConnectedPromise=this._waitForPCConnectedPromise.finally(()=>{this._waitForPCConnectedPromise=null,delete this.clearConnectTimeout})),this._waitForPCConnectedPromise}waitForReconnected(){return this.isReconnecting?new Promise((A,e)=>{this.once("spc-reconnected",A),this.once("error",e)}):Promise.resolve()}addDownlink(A){return KA(this,null,function*(){if(this._log.info("addDownlink(".concat(A.userId,") trying")),this.isReconnecting&&(yield this.waitForReconnected()),this._updateSDPPromise&&(yield this._updateSDPPromise),this.updateLocalAndRemoteSDPConfig(A),this.addDownlinkQueue.size===0)try{yield this.updateSDP(),this._log.info("addDownlink(".concat(A.userId,") done"))}catch(e){this._log.error("addDownlink(".concat(A.userId,") failed ").concat(e)),yield this.startReconnection()}})}updateLocalAndRemoteSDPConfig(A){let{ssrc:e,userId:o,tinyId:a,prevMids:c}=A;if(!this._peerConnection)return;this._log.info("updateLocalAndRemoteSDPConfig ".concat(o," ").concat(JSON.stringify(e))),this._parsedAnswer||(this._parsedAnswer=uc(this._peerConnection.remoteDescription.sdp));let d,C,y,S=this._parsedAnswer.media.filter(J=>{var gA;return(gA=J.ssrcs)==null?void 0:gA.find(CA=>{var MA;return(MA=CA.value)==null?void 0:MA.includes(a)})});if(S.length===3)d=S[0],C=S[1],y=S[2];else{let J,gA=this._peerConnection.getTransceivers().slice(4);if(c?.length===3&&c.every(MA=>{var ee;return((ee=gA.find(Be=>Number(Be.mid)===MA))==null?void 0:ee.direction)==="inactive"})?(J=c,this._log.info("reusing previous mids for ".concat(o,": ").concat(J.join(","))),gA.forEach(MA=>{J.includes(Number(MA.mid))&&(MA.direction=YA.TRANSCEIVER_DIRECTION_RECVONLY)})):J=gA.filter(MA=>MA.direction==="inactive").slice(0,3).map(MA=>(MA.direction=YA.TRANSCEIVER_DIRECTION_RECVONLY,Number(MA.mid))),J.length===3)d=this._parsedAnswer.media.find(MA=>Number(MA.mid)===Number(J[0])),C=this._parsedAnswer.media.find(MA=>Number(MA.mid)===Number(J[1])),y=this._parsedAnswer.media.find(MA=>Number(MA.mid)===Number(J[2]));else if(J.length===0){this._peerConnection.addTransceiver(YA.AUDIO,{direction:YA.TRANSCEIVER_DIRECTION_RECVONLY}),this._peerConnection.addTransceiver(YA.VIDEO,{direction:YA.TRANSCEIVER_DIRECTION_RECVONLY}),this._peerConnection.addTransceiver(YA.VIDEO,{direction:YA.TRANSCEIVER_DIRECTION_RECVONLY}),d=JSON.parse(JSON.stringify(this._parsedAnswer.media[0]));let MA=iz({mid:1,serverAbility:this._serverAbility,clientAbility:this.clientAbility,parsedOffer:uc(this._peerConnection.localDescription.sdp),isDownlink:!0});C=JSON.parse(JSON.stringify(MA)),y=JSON.parse(JSON.stringify(MA)),d.mid=this._parsedAnswer.media.length,this._parsedAnswer.media.push(d),C.mid=this._parsedAnswer.media.length,this._parsedAnswer.media.push(C),y.mid=this._parsedAnswer.media.length,this._parsedAnswer.media.push(y)}}d.direction=YA.TRANSCEIVER_DIRECTION_SENDONLY;let b="".concat(a,"-").concat(e.audio);d.ssrcs=[{id:e.audio,attribute:"cname",value:"".concat(b)},{id:e.audio,attribute:"msid",value:"".concat(b,"-").concat(YA.MAIN," ").concat(b,"-audio")}],C.direction=YA.TRANSCEIVER_DIRECTION_SENDONLY,C.ssrcs=[{id:e.video,attribute:"cname",value:"".concat(b)},{id:e.video,attribute:"msid",value:"".concat(b,"-").concat(YA.MAIN," ").concat(b,"-bigvideo")},{id:e.videoRtx,attribute:"cname",value:"".concat(b)},{id:e.videoRtx,attribute:"msid",value:"".concat(b,"-").concat(YA.MAIN," ").concat(b,"-bigvideo")}],C.ssrcGroups=[{semantics:"FID",ssrcs:"".concat(e.video," ").concat(e.videoRtx)}],y.direction=YA.TRANSCEIVER_DIRECTION_SENDONLY;let V="".concat(b,"-aux");y.ssrcs=[{id:e.auxiliary,attribute:"cname",value:V},{id:e.auxiliary,attribute:"msid",value:"".concat(V," ").concat(b,"-aux").concat(YA.VIDEO)},{id:e.auxiliaryRtx,attribute:"cname",value:"".concat(V," ").concat(b,"-aux").concat(YA.VIDEO)},{id:e.auxiliaryRtx,attribute:"msid",value:"".concat(V," ").concat(b,"-aux").concat(YA.VIDEO)}],y.ssrcGroups=[{semantics:"FID",ssrcs:"".concat(e.auxiliary," ").concat(e.auxiliaryRtx)}],this._parsedAnswer.groups&&(this._parsedAnswer.groups[0].mids=this._parsedAnswer.media.map(J=>J.mid).join(" ")),this._downlinkMIDMap.set(o,[d.mid,C.mid,y.mid]),this._downlinkMIDUserIDMap.set(d.mid,o),this._downlinkMIDUserIDMap.set(C.mid,o),this._downlinkMIDUserIDMap.set(y.mid,o)}removeDownlink(A){return KA(this,null,function*(){if(!this._downlinkMIDMap.has(A)||!this._peerConnection)return;this._log.info("removeDownlink(".concat(A,") trying")),this.isReconnecting&&(yield this.waitForReconnected()),this._updateSDPPromise&&(yield this._updateSDPPromise);let e=this._downlinkMIDMap.get(A),o=!1;return this._peerConnection.getTransceivers().forEach(a=>{e!=null&&e.includes(Number(a.mid))&&(o=!0,a.direction="inactive")}),this._parsedAnswer||(this._parsedAnswer=uc(this._peerConnection.remoteDescription.sdp)),this._parsedAnswer.media.forEach(a=>{e!=null&&e.includes(Number(a.mid))&&(o=!0,a.direction="inactive",a.ssrcs=[],a.ssrcGroups=[])}),this.removeDownlinkQueue.size===0&&o&&(yield this.updateSDP()),this._downlinkMIDMap.delete(A),e?.forEach(a=>this._downlinkMIDUserIDMap.delete(a)),this._log.info("removeDownlink(".concat(A,") done")),e})}setBandwidth(A){return KA(this,null,function*(){if(!this._peerConnection)return;let{audio:e,bigVideo:o,smallVideo:a,auxVideo:c}=A;try{if(Qk()){let d=this._peerConnection.getSenders().slice(0,4);for(let y=0;y5e3?5e3:e),!0)}setSenderMaxBitrate(A,e){let o=A.getParameters();if((!o.encodings||o.encodings.length===0)&&(o.encodings=[{}]),e==="unlimited")delete o.encodings[0].maxBitrate;else{if(o.encodings[0].maxBitrate===1e3*e)return;o.encodings[0].maxBitrate=1e3*e}return A.setParameters(o)}setBandwidthBySDP(A){let{audio:e,bigVideo:o,smallVideo:a,auxVideo:c}=A;if(!this._peerConnection||!this._peerConnection.localDescription)return;let d=uc(this._peerConnection.localDescription.sdp);this._parsedAnswer||(this._parsedAnswer=uc(this._peerConnection.remoteDescription.sdp));let C=er?"TIAS":"AS";e&&(d.media[0].bandwidth=[{type:C,limit:er?1e3*e:e}],this._parsedAnswer.media[0].bandwidth=[{type:C,limit:er?1e3*e:e}]),o&&(d.media[1].bandwidth=[{type:C,limit:er?1e3*o:o}],this._parsedAnswer.media[1].bandwidth=[{type:C,limit:er?1e3*o:o}]),a&&(d.media[2].bandwidth=[{type:C,limit:er?1e3*a:a}],this._parsedAnswer.media[2].bandwidth=[{type:C,limit:er?1e3*a:a}]),c&&(d.media[3].bandwidth=[{type:C,limit:er?1e3*c:c}],this._parsedAnswer.media[3].bandwidth=[{type:C,limit:er?1e3*c:c}]);let y={type:"offer",sdp:fy(d)};return this.updateSDP({localDescription:y})}setScaleResolutionDownBy(A,e,o){let a=A.getParameters();(!a.encodings||a.encodings.length===0)&&(a.encodings=[{}]);let c=a.encodings[0].scaleResolutionDownBy;if(Ye(c)?e===1:e===c)return;let d="setScaleResolutionDownBy ".concat(o," ").concat(e);return c&&(d+=" prevScale: ".concat(c)),this._log.warn(d),a.encodings[0].scaleResolutionDownBy=e,A.setParameters(a)}setDegradationPreference(A,e,o){if(sE&&jE<83||Ag&&Zb(TI,"12.1")||er&&f0<138)return;let a=A.getParameters(),c="balanced";if(e==="motion"?c="maintain-framerate":e==="detail"&&(c="maintain-resolution"),a.degradationPreference===c)return;let d="setDegradationPreference ".concat(o," ").concat(c);return this._log.info(d),a.degradationPreference=c,A.setParameters(a).catch(C=>this._log.warn("".concat(d," failed: ").concat(C)))}updateSDP(){let{localDescription:A}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!this._parsedAnswer)return Promise.resolve();let e=fy(this._parsedAnswer);return this._updateSDPPromise=new Promise((o,a)=>KA(this,null,function*(){var c,d;try{!A&&this._peerConnection&&(this._log.info("creating offer"),A=yield this._peerConnection.createOffer()),A&&(yield this.setOffer(A)),yield this.setAnswer({type:"answer",sdp:e}),this._updateSDPPromise=null,o()}catch(C){this._log.error(C),!this._isSDPLogged&&this._peerConnection&&(this._log.warn("current offer: ".concat(this.filterSDPDirection((c=this._peerConnection.localDescription)==null?void 0:c.sdp),` + }`}),Y(this,"yTextureRef"),Y(this,"uTextureRef"),Y(this,"vTextureRef"),Y(this,"Y"),Y(this,"U"),Y(this,"V"),this.useProgram();let e=this.context.ctx;e.pixelStorei(e.PACK_ALIGNMENT,1),e.pixelStorei(e.UNPACK_ALIGNMENT,1),this.setTexBuffer([0,1,1,1,0,0,1,0]),this.yTextureRef=this._initTexture("ySampler",0),this.uTextureRef=this._initTexture("uSampler",1),this.vTextureRef=this._initTexture("vSampler",2),this._canvas=A._canvas}_initTexture(A,e){let o=this.context.ctx,a=o.createTexture();return o.bindTexture(o.TEXTURE_2D,a),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_MAG_FILTER,o.LINEAR),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_MIN_FILTER,o.LINEAR),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_S,o.CLAMP_TO_EDGE),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_T,o.CLAMP_TO_EDGE),o.bindTexture(o.TEXTURE_2D,null),o.uniform1i(o.getUniformLocation(this.program,A),e),a}render(A){let e=this.context.ctx,o=this.width,a=this.height;return this.useProgram(),e.viewport(0,0,o,a),e.activeTexture(e.TEXTURE0),e.bindTexture(e.TEXTURE_2D,this.yTextureRef),e.texSubImage2D(e.TEXTURE_2D,0,0,0,o,a,e.LUMINANCE,e.UNSIGNED_BYTE,this.Y),e.activeTexture(e.TEXTURE1),e.bindTexture(e.TEXTURE_2D,this.uTextureRef),e.texSubImage2D(e.TEXTURE_2D,0,0,0,o/2,a/2,e.LUMINANCE,e.UNSIGNED_BYTE,this.U),e.activeTexture(e.TEXTURE2),e.bindTexture(e.TEXTURE_2D,this.vTextureRef),e.texSubImage2D(e.TEXTURE_2D,0,0,0,o/2,a/2,e.LUMINANCE,e.UNSIGNED_BYTE,this.V),this.draw(),!0}resize(A,e){super.resize(A,e);let o=this.context.ctx;o.activeTexture(o.TEXTURE0),o.bindTexture(o.TEXTURE_2D,this.yTextureRef),o.texImage2D(o.TEXTURE_2D,0,o.LUMINANCE,A,e,0,o.LUMINANCE,o.UNSIGNED_BYTE,null),o.activeTexture(o.TEXTURE1),o.bindTexture(o.TEXTURE_2D,this.uTextureRef),o.texImage2D(o.TEXTURE_2D,0,o.LUMINANCE,A/2,e/2,0,o.LUMINANCE,o.UNSIGNED_BYTE,null),o.activeTexture(o.TEXTURE2),o.bindTexture(o.TEXTURE_2D,this.vTextureRef),o.texImage2D(o.TEXTURE_2D,0,o.LUMINANCE,A/2,e/2,0,o.LUMINANCE,o.UNSIGNED_BYTE,null)}},bz=(A,e)=>{switch(A){case"webCodecs":return e==="videoFrame"?514705:514706;case"wasm":return e==="webgl"?514707:e==="videoFrame"?514708:514709}throw new Error("decoder type not supported")},CoA=0,hoA=class{constructor(A){Y(this,"id",CoA++),Y(this,"trackDoneOB"),Y(this,"startOB"),Y(this,"stopOB"),Y(this,"decoder"),Y(this,"videoContext"),Y(this,"gop",0),Y(this,"gop_helper",0),Y(this,"waitFirstKeyFrame",!0),Y(this,"startTimestamp",0),Y(this,"startTime",0),Y(this,"startPerformanceTime",0),Y(this,"inputFrameCount",0),Y(this,"decodedFrameCount",0),Y(this,"decodeFrameCount",0),Y(this,"downgradeLevel",0),Y(this,"lastDowngradeTime",0),Y(this,"lastFrameDiff",0),Y(this,"lastDecodeFrameTimestamp",0),Y(this,"config"),Y(this,"gop_before_configure",[]),Y(this,"videoElement"),Y(this,"type","wasm"),Y(this,"goodType"),Y(this,"renderer","2d"),Y(this,"wasmOption"),Y(this,"createDecoder"),Y(this,"_decodeSink"),Y(this,"isReported",!1),Y(this,"track"),Y(this,"stateChangeOB"),Y(this,"failedReason");let{track:e,createDecoder:o}=A;if(this.stateChangeOB=uQ(),this.track=e,this.createDecoder=o,this.wasmOption={yuvMode:A.renderer==="webgl",wasmPath:A.wasmPath,workerMode:A.workerMode,canvas:A.canvas},this.config=A.config,this.videoElement=A.videoElement,this.renderer=A.renderer,this.trackDoneOB=ca(e.availableState,Zs.OFF),this.stopOB=uQ(),A.type==="auto"){switch(A.fallback){case"wasm":this.type="wasm",this.renderer="webgl";break;case"wasm_2d":this.type="wasm",this.renderer="2d";break;case"wasm_video":this.type="wasm",this.renderer="videoFrame";break;default:this.type="webCodecs"}this.wasmOption.yuvMode=this.renderer==="webgl"}else this.type=A.type;this.changeRenderer(this.renderer),pa(this.stateChangeOB,Q5((a,c)=>(a!==c&&e.onDecodeDowngradeStateChanged({type:this.type,renderer:this.renderer,reason:this.failedReason,prevState:a,state:c}),c),"INITIALIZED"),lE(this.stopOB),hl()),this.start()}start(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;this.waitFirstKeyFrame=!0,this.stateChangeOB.next("STARTING");let e=pa(this.pipe(this.track),lE(this.stopOB),zk());pa(e,hl(()=>{this.track.stat.framesDecoded++},o=>{if(this.track.log.error("".concat(this.id," play failed: ").concat(o," retryCount: ").concat(A)),Ai.addFailedEvent({key:bz(this.type,this.renderer),error:o}),A>4)this.failedReason=o,this.stateChangeOB.next("FAILED"),Ai.addFailedEvent({key:514704});else{if(this.goodType)return void this.start(A);switch(this.type){case"webCodecs":this.type="wasm",this.changeRenderer("webgl");break;case"wasm":this.renderer==="webgl"&&this.changeRenderer("videoFrame")}this.start(A+1)}},()=>{this.track.log.warn("".concat(this.id," decoderOB completed")),Ai.addSuccessEvent({key:bz(this.type,this.renderer)}),Ai.addSuccessEvent({key:514704})})),pa(e,r_(1),hl(()=>{this.track.player.handlePlaying("canvas"),this.goodType=this.type,this.stateChangeOB.next("STARTED")}))}mock(A){this._decodeSink?this._decodeSink.error(A):this.start()}close(A){this.stopOB.next(A)}changeRenderer(A){this.renderer=A,this.renderer==="videoFrame"&&!yM()&&(this.renderer="2d"),this.wasmOption.yuvMode=this.renderer==="webgl"}decode(A){let e=arguments.length>1&&arguments[1]!==void 0&&arguments[1];var o,a;if(this.failedReason)return;this.inputFrameCount++;let c=new Uint8Array(A.data);if((d=c)[0]!==0||d[1]!==0||d[2]!==0||d[3]!==1||c.length<5)return this.stateChangeOB.next("FAILED"),this.close("not h26x frame ".concat(c.subarray(0,5))),A;var d;let C=!1;switch(31&c[4]){case 5:case 7:C=!0}if(((o=this.decoder)==null?void 0:o.state)!=="configured")return this.track.log.debug("not configured ".concat(this.inputFrameCount)),C&&(this.gop_before_configure=[]),this.gop_before_configure.push({data:A.data,timestamp:A.timestamp,type:A.type}),A;this.gop_before_configure.length>0&&!e&&(this.gop_before_configure.forEach(S=>this.decode(S,!0)),this.gop_before_configure=[]);let{timestamp:y}=A;if(C?(this.gop=this.gop_helper,this.gop_helper=0):this.gop_helper++,this.decoder){if(this.waitFirstKeyFrame){if(!C)return void this.track.log.debug("wait first key frame ".concat(this.inputFrameCount," ").concat(c.subarray(0,5).join(" ")));this.waitFirstKeyFrame=!1,this.startTimestamp=y,this.startTime=Date.now(),this.startPerformanceTime=ko()}switch(this.downgradeLevel){case 0:case 1:break;case 2:if(this.gop_helper>this.gop>>1)return;break;case 3:if(this.gop_helper>0)return;break;default:return}return(this.decodeFrameCount<10||this.decodeFrameCount%500==0)&&this.track.log.debug("decode ".concat(this.decodeFrameCount," gop: ").concat(this.gop," ").concat(y," ").concat((a=A.getMetadata)==null?void 0:a.call(A).rtpTimestamp)),this.decodeFrameCount++,this.lastDecodeFrameTimestamp=y,void this.decoder.decode({data:A.data,type:A.type,timestamp:this.lastDecodeFrameTimestamp})}return A}checkDowngradeByFrameDiff(){let A=this.downgradeLevel,e=this.decodeFrameCount-this.decodedFrameCount;e>this.lastFrameDiff?(this.downgradeLevel++,this.downgradeLevel>4&&(this.downgradeLevel=4)):e<=this.lastFrameDiff&&this.downgradeLevel>0&&this.downgradeLevel--,this.downgradeLevel!==A&&this.track.log.debug("downgrade level ".concat(A," to ").concat(this.downgradeLevel," ").concat(this.decodeFrameCount," frameDiff: ").concat(e,", lastFrameDiff: ").concat(this.lastFrameDiff)),this.lastFrameDiff=e,this.lastDowngradeTime=Date.now()}checkDowngradeByTimestampDiff(A){let e=this.downgradeLevel;this.lastDecodeFrameTimestamp-A>9e4?(this.downgradeLevel++,this.downgradeLevel>4&&(this.downgradeLevel=4)):this.downgradeLevel>0&&this.downgradeLevel--,this.downgradeLevel!==e&&this.track.log.debug("downgrade level ".concat(e," to ").concat(this.downgradeLevel))}pipe(A){return e=>KA(this,null,function*(){this._decodeSink=e;let o,a=A.mediaTrack;e.defer(()=>{var C;a&&(A.player.setCanvas(),A.setInputMediaStreamTrack(a)),o?.close(),(C=this.videoContext)==null||C.destroy(),delete this._decodeSink});let{renderer:c,type:d}=this;A.log.info("decoder type: ".concat(this.type," renderer: ").concat(this.renderer));try{switch(d){case"wasm":o=this.createDecoder(d,this.wasmOption);break;case"webCodecs":o=this.createDecoder(d);break;default:throw new Error("not supported yet")}let C=0;if(o.on("videoFrame",y=>{this.decodedFrameCount++,C++,(C<=10||C%500==0)&&A.log.debug("frame ".concat(C," ").concat(this.decodedFrameCount,"/").concat(this.decodeFrameCount," decoded ").concat(y.timestamp)),Date.now()-this.lastDowngradeTime>5e3&&(this.type==="webCodecs"?this.checkDowngradeByFrameDiff():this.type==="wasm"&&this.checkDowngradeByTimestampDiff(y.timestamp)),e.next(y)}),o.on("error",y=>{A.log.error(y),e.error(d==="webCodecs"?4:8)}),yield o.initialize(this.videoElement),!this._decodeSink)return;if(o.configure(this.config),d==="wasm"&&c==="webgl"){this.videoContext=new YC({frameRate:15,logger:A.log,name:A.userId}),this.videoContext.create(),this.videoContext.on(YC.UNAVAILABLE,S=>{A.log.error(S),e.error(7)});let y=new doA(this.videoContext);o.on("videoCodecInfo",S=>y.resize(S.width,S.height)),o.on("videoFrame",S=>{({y:y.Y,u:y.U,v:y.V}=S),this.downgradeLevel===1?this.decodedFrameCount%2==0&&y.render(this.decodedFrameCount):y.render(this.decodedFrameCount)}),A.source=y,A.player.setCanvas(this.videoContext._canvas,2)}else if(c==="videoFrame"){A.player.setCanvas();let y=new MediaStreamTrackGenerator({kind:"video"}),S=y.writable.getWriter();A.setInputMediaStreamTrack(y),o.on("videoFrame",b=>S.write(b))}else{this.videoContext=new dQ({frameRate:15,logger:A.log,name:A.userId}),this.videoContext.create({alpha:!1});let y=this.videoContext.createVideoImageSource();o.on("videoFrame",b=>{try{y.image=b,y.update()}catch(V){delete this.goodType,A.log.error(V),e.error(11)}});let S=new VK(this.videoContext,{name:"remotePlayer",logger:A.log});y.connect(S),A.source=y,A.player.setCanvas(this.videoContext._canvas,2)}this.decoder=o}catch(C){A.log.error(C),e.error(d==="webCodecs"?2:6)}})}},kz=Promise.resolve(),Lz=class extends IoA.EventEmitter{constructor(A){super(),this.room=A,Y(this,"videoContext"),Y(this,"_glVideoContext"),Y(this,"_2dVideoContext"),Y(this,"destination"),Y(this,"smallVideoContext"),Y(this,"smallDestination"),Y(this,"smallTrackSource"),Y(this,"smallImageSource"),Y(this,"_isMirror",!1),Y(this,"_rotation",0),Y(this,"cameraTrack"),Y(this,"cameraNode"),Y(this,"transformNode"),Y(this,"mixNode"),Y(this,"screenTrack"),Y(this,"screenNode"),Y(this,"selfModel",!1),Y(this,"blurRadius",3),Y(this,"arTrack"),Y(this,"_enableFaceCentering",!1),Y(this,"_enableEffectOptimization",!1),Y(this,"onAbort"),Y(this,"_color"),Y(this,"Wasm"),Y(this,"waterMarkNode"),Y(this,"_waterMarkOption"),Y(this,"watermarkImageList",[]),Y(this,"_beautyParams"),Y(this,"isUsingArTrack",!1),Y(this,"mixTrack"),Y(this,"_isMixScreen",!1),Y(this,"_virtualBackground"),Y(this,"_virtualBackgroundAbortCallback"),Y(this,"virtualBackgroundInstance"),Y(this,"_bgAssetPath"),Y(this,"log"),Y(this,"_mat4"),Y(this,"_postProcessing"),Y(this,"_checkId",0),Y(this,"_use2d",!1),Y(this,"_autoSwitchRenderMode",!0),Y(this,"encodePipeline",[]),Y(this,"decodePipeline",[]),Y(this,"updated",kz),Y(this,"_updateFlag",!1),this.log=QA.createLogger({parent:A?.getLogger(),id:"vm",userId:A?.userId,sdkAppId:A?.sdkAppId}),this.smallVideoContext=new dQ({frameRate:15,logger:this.log,name:"s"}),this.enablePrintDetail()}get smallMode(){var A;return((A=this.room)==null?void 0:A.smallMode)||"canvas"}get _hasVirtualBg(){return!!this._virtualBackground}get _hasWaterMark(){return this.watermarkImageList.length>0}get _isRotate(){return this._rotation!==0}get _isTransform(){return this._isMirror||this._isRotate}get renderMode(){return this._autoSwitchRenderMode?"auto":this._use2d?"2d":"webgl"}set renderMode(A){if(this._autoSwitchRenderMode=A==="auto",this._autoSwitchRenderMode)return;let e=A==="2d";this._use2d!==e&&(this._use2d=e,this.clear(),this.videoContext=this._use2d?this.get2dVideoContext():this.getGlVideoContext(),this.update())}get cameraResolution(){var A;let{width:e,height:o}=((A=this.cameraTrack)==null?void 0:A.settings)||{};return XB(this._rotation)?{width:o,height:e}:{width:e,height:o}}get2dVideoContext(){return this._2dVideoContext?this._2dVideoContext.destroy():this._2dVideoContext=new dQ({frameRate:15,logger:this.log,name:"m"}),this._2dVideoContext.create({alpha:this._hasWaterMark||this._hasVirtualBg}),this._2dVideoContext}getGlVideoContext(){if(this._glVideoContext){if(this._glVideoContext.available)return this._glVideoContext}else this._glVideoContext=new YC({frameRate:15,logger:this.log,name:"m"});return this.initializeGlVideoContext(),this._glVideoContext}initializeGlVideoContext(){try{this._glVideoContext.create(p2<=22),this._glVideoContext.on(YC.UNAVAILABLE,A=>{var e;this.emit("error",A),this.log.warn("video context unavailable",A),(e=this._virtualBackgroundAbortCallback)==null||e.call(this,A),this.update().catch(o=>{this.log.error(o)})})}catch(A){this.emit("error",A)}}initVirtualBackground(A,e,o){this.onAbort=A,this._mat4=e,this._postProcessing=o}enablePrintDetail(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:2e3;this._checkId=Tr.run("interval",()=>{this.destination&&this.log.debug(this.destination.getInfo())},{delay:A})}destroy(){var A,e;(A=this._2dVideoContext)==null||A.destroy(),(e=this._glVideoContext)==null||e.destroy(),this.smallVideoContext.destroy(),Tr.clearTask(this._checkId)}get needAlpha(){return this._hasWaterMark||this._hasVirtualBg}get active(){return(Up||this._isMixScreen||this._isTransform||this._hasWaterMark||this._hasVirtualBg||this._beautyParams)&&this.checkOrCreateVideoContext()}sendCreateResult(){let A=arguments.length>1?arguments[1]:void 0,e=(arguments.length>0&&arguments[0]!==void 0?arguments[0]:"videoCtxGl")==="videoCtxGl"?512700:512701;A?Ai.addFailedEvent({key:e,error:A}):Ai.addSuccessEvent({key:e})}checkOrCreateVideoContext(){let A=this._use2d;if(this._autoSwitchRenderMode&&(this._use2d=!this._hasVirtualBg),this.videoContext)if(this.videoContext.available){let e=!this.videoContext.hasAlpha&&this.needAlpha;if(this._autoSwitchRenderMode&&A===this._hasVirtualBg)this.clear();else{if(!e||!this._use2d)return!0;this.clear()}}else{if(this._glVideoContext=new YC({frameRate:15,logger:this.log,name:"m"}),this.initializeGlVideoContext(),this._glVideoContext.available)return this.videoContext=this._glVideoContext,this.videoContext.available;this.log.warn("webgl is still not available"),this.clear(),this._use2d=!0}return this.videoContext=this._use2d?this.get2dVideoContext():this.getGlVideoContext(),this.videoContext.available}get smallTrack(){var A;return(A=this.smallDestination)==null?void 0:A.videoTrack}get hasSmall(){return!!this.smallTrack}get initialTrack(){var A;return(A=this.cameraTrack)==null?void 0:A.mediaTrack}setSmallVideo(A,e){if(this.smallMode!=="api")if(A){if(!this.smallVideoContext.available){if(this.smallVideoContext.create({alpha:!1}),!this.smallVideoContext.available)return;this.smallDestination=new VtA(this.smallVideoContext,A,this.log),this.smallVideoContext.on(YC.UNAVAILABLE,o=>{this.log.warn("small video context lost",o)})}if(this.smallVideoContext.frameRate=A.frameRate,this.smallDestination.resolution=A,e)this.smallTrackSource&&(this.smallTrackSource.close(),delete this.smallTrackSource),this.smallImageSource?this.smallImageSource.image=e:(this.smallImageSource=this.smallVideoContext.createVideoImageSource(e),this.smallImageSource.resize(e.width,e.height),this.smallImageSource.connect(this.smallDestination));else if(this.smallImageSource&&(this.smallImageSource.close(),delete this.smallImageSource),this.smallTrackSource)this.smallTrackSource.replaceTrack(this.initialTrack);else{this.smallTrackSource=this.smallVideoContext.createVideoTrackSource(this.initialTrack,"smallTrackSource");let{width:o,height:a}=this.cameraTrack.settings;this.smallTrackSource.resize(o,a),this.smallTrackSource.connect(this.smallDestination)}}else this.smallVideoContext.available&&(this.smallVideoContext.destroy(),delete this.smallDestination,delete this.smallTrackSource,delete this.smallImageSource)}_setMainOutput(A){var e,o;try{let a=this.cameraTrack,{small:c,player:d}=a;Up&&d.setCanvas(A);let C=A&&((e=this.destination)==null?void 0:e.videoTrack)||this.initialTrack;return this.isUsingArTrack&&this.arTrack&&(this.emit("output-track-changed"),C=this.arTrack),this.log.info("set main output ".concat(C?C.label:"no output track")),this.setSmallVideo(c,A),F.emit(sA.LOCAL_VIDEO_TRACK_PREPROCESSED,{mediaTrack:C,profile:(o=this.cameraTrack)==null?void 0:o.profile,room:this.room}),a.setOutputMediaStreamTrack(C)}catch(a){this.log.error("set main output failed",a)}}update(){let A=arguments.length>0&&arguments[0]!==void 0&&arguments[0];return KA(this,null,function*(){var e;if(!this.cameraTrack||!this.initialTrack)return;if(!this.active)return this.cameraNode&&this.clear(),this._setMainOutput();let{settings:o,profile:a}=this.cameraTrack;if(this._use2d||!this._virtualBackground&&!this._beautyParams)this.destination||(this.destination=this.videoContext.createVideoTrackDestination({name:"mainDestination2d",logger:this.log}),this.destination.on($d.RENDER,c=>{var d;(d=this.cameraTrack)==null||d.emit("render",c)})),zd===16?this.initialTrack instanceof CanvasCaptureMediaStreamTrack?(this.cameraNode&&(this.cameraNode instanceof a_?(this.cameraNode.close(),delete this.cameraNode):this.cameraNode.image=this.initialTrack.canvas),this.cameraNode||(this.cameraNode=this.videoContext.createVideoImageSource(this.initialTrack.canvas,{name:"cameraCanvasSource",logger:this.log}))):(this.cameraNode&&(this.cameraNode instanceof a_?this.cameraNode.replaceTrack(this.initialTrack):(this.cameraNode.close(),delete this.cameraNode)),this.cameraNode||(this.cameraNode=this.videoContext.createVideoTrackSource(this.initialTrack,"cameraTrackSource"))):this.cameraNode?this.cameraNode.replaceTrack(this.initialTrack):this.cameraNode=this.videoContext.createVideoTrackSource(this.initialTrack,"cameraNodeSource"),this.cameraNode.resize(o.width,o.height);else if(A&&this.cameraNode&&this.destination)this.cameraNode.replaceTrack(this.initialTrack);else{this.cameraNode&&this.cameraNode.close(),this.destination?this.destination.disableCheckMute():(this.destination=new YtA(this.videoContext,{name:"mainDestination",logger:this.log}),this.destination.on($d.RENDER,y=>{var S;(S=this.cameraTrack)==null||S.emit("render",y)}));let{width:c,height:d}=this.cameraResolution,C=yield this.getWatermarkImage(c,d);this._waterMarkOption={x:0,y:0,width:C.width,height:C.height,image:C},this.cameraNode=new EoA(this.videoContext,{input:this.initialTrack,width:c,height:d,mirror:this._isMirror,rotation:this._rotation,bg:this._virtualBackground,selfModel:this.selfModel,waterMark:this._waterMarkOption,beautyParams:this._beautyParams,useTflite:!0,blurRadius:this.blurRadius,assetPath:this._bgAssetPath,Wasm:this.Wasm,enableFaceCentering:this._enableFaceCentering,enableEffectOptimization:this._enableEffectOptimization,onAbort:this.onAbort,mat4:this._mat4,postProcessing:this._postProcessing,color:this._color}),this.cameraNode.connect(this.destination),this.destination.enableCheckMute(),yield this.cameraNode.predictReady}if(this.videoContext.frameRate=a.frameRate,this._use2d){let c=this.cameraNode;if(c.disconnect(),this._isTransform&&(this.transformNode?(this.transformNode.mirror=this._isMirror,this.transformNode.rotation=this._rotation):this.transformNode=new Dy(this.videoContext,this.log,this._isMirror,this._rotation),c=c.connect(this.transformNode),c.disconnect(),this.log.info("start mirror ".concat(this._isMirror," rotate ").concat(this.rotation))),this.mixNode&&this.mixNode.close(),delete this.mixNode,this._isMixScreen||this._hasWaterMark){if(this.mixNode=new N5(this.videoContext,this.log),c.connect(this.mixNode,{zIndex:1}),this._hasWaterMark&&!this.waterMarkNode&&this._waterMarkOption)this.waterMarkNode=this.videoContext.createVideoImageSource(this._waterMarkOption.image,{autoResize:!1,logger:this.log}),this.waterMarkNode.resize(this._waterMarkOption.width,this._waterMarkOption.height),this.waterMarkNode.x=this._waterMarkOption.x,this.waterMarkNode.y=this._waterMarkOption.y;else if(this.waterMarkNode){let{width:d,height:C}=this.cameraResolution;this.waterMarkNode.image=yield this.getWatermarkImage(d,C),d&&C&&this.waterMarkNode.resize(d,C)}(e=this.waterMarkNode)==null||e.connect(this.mixNode,{zIndex:2}),this._isMixScreen&&this.screenTrack&&(this.screenNode||(this.screenNode=this.videoContext.createVideoTrackSource(this.screenTrack.mediaTrack,"screenNodeSource"),this.screenNode.resize(this.screenTrack.settings.width,this.screenTrack.settings.height)),this.screenNode.shouldUpdate=!1,this.screenNode.connect(this.mixNode,{zIndex:0})),c=this.mixNode,this.log.info("start mix","".concat(this.mixNode.width,"x").concat(this.mixNode.height))}c.connect(this.destination)}return this.log.info("update ".concat(this._use2d?"2d":"webgl")),this._setMainOutput(this.videoContext.canvas)})}clearLastFrame(){var A;this.destination&&((A=this.destination.ctx2d)==null||A.clearRect(0,0,this.destination.width,this.destination.height))}changeInput(A){var e,o,a,c,d;if(A instanceof xM)return this.log.info("change screen input",(e=A.mediaTrack)==null?void 0:e.label),this.setScreenTrack(A);if(A instanceof EQ)return this.log.info("change video input",(o=A.mediaTrack)==null?void 0:o.label),this.setCameraTrack(A);if(A instanceof nL){this.log.info("change remote input",(a=A.mediaTrack)==null?void 0:a.label);let C=A.mediaTrack;return A.setOutputMediaStreamTrack(C)}if(A instanceof HK)return this.log.info("change mix input",(c=A.outMediaTrack)==null?void 0:c.label),this.setMixTrack(A);this.log.warn("change unknown input",(d=A.mediaTrack)==null?void 0:d.label)}removeInput(A){var e;A instanceof xM?((e=this.screenNode)==null||e.close(),delete this.screenNode,delete this.screenTrack,this.update()):A instanceof EQ?this._isMixScreen?(delete this.cameraNode,this.cameraTrack._inputTrack=null,this.update()):(this.clear(),delete this.cameraTrack,this.smallImageSource&&(this.smallImageSource.close(),delete this.smallImageSource),this.smallTrackSource&&(this.smallTrackSource.close(),delete this.smallTrackSource)):A instanceof nL?A.source&&A.source.context.destroy():A instanceof HK&&(delete this.mixTrack,this.update())}setMixTrack(A){this.mixTrack=A}setCameraTrack(A){return this.cameraTrack=A,this.update(!0)}setScreenTrack(A){return KA(this,null,function*(){return this.screenTrack=A,this._isMixScreen&&(this.screenNode?this.screenNode.replaceTrack(A.mediaTrack):yield this.update()),A.setOutputMediaStreamTrack(A.mediaTrack)})}getWatermarkImage(A,e){return KA(this,null,function*(){let o=document.createElement("canvas");e&&A&&(o.height=e,o.width=A);let a=o.getContext("2d");if(!a)throw new si({code:Et.NOT_SUPPORTED,message:"Make image failed because of canvas context is null"});return this.watermarkImageList.sort((c,d)=>c.zIndex-d.zIndex),this.watermarkImageList.forEach(c=>{let{image:d,x:C,y,width:S,height:b,fillVideo:V}=c,J=V&&A||S,gA=V&&e||b,CA=V?0:C,MA=V?0:y;a.drawImage(d,CA,MA,J,gA)}),tM(o.toDataURL())})}pushWaterMarkImageList(A){let{type:e}=A;this.watermarkImageList.some(o=>o.imageUrl===A.imageUrl&&o.height===A.height&&o.width===A.width&&o.x===A.x&&o.y===A.y&&o.type===A.type&&o.zIndex===A.zIndex&&o.fillVideo===A.fillVideo)||((e==="mute"||e==="watermark")&&(this.watermarkImageList=this.watermarkImageList.filter(o=>o.type!==e)),this.watermarkImageList.push(A))}setBeautyParams(A){return KA(this,null,function*(){this._beautyParams=A,this.update()})}stopBeauty(){return KA(this,null,function*(){this._beautyParams=void 0,this.update()})}setWatermark(A){return KA(this,null,function*(){let e;try{e=yield tM(A?.imageElement||A.imageUrl)}catch{throw new si({code:Et.INVALID_PARAMETER,message:"load image failed, url: ".concat(A.imageUrl)})}let{x:o=0,y:a=0,width:c=e.width,height:d=e.height,type:C="watermark",zIndex:y=2,fillVideo:S=!1}=A;this.watermarkImageList.some(b=>b.type===C)?(this.watermarkImageList=this.watermarkImageList.filter(b=>b.type!==C),this.pushWaterMarkImageList({x:o,y:a,width:c,height:d,image:e,zIndex:y,type:C,imageUrl:A.imageUrl,fillVideo:S}),e=yield this.getWatermarkImage(this.cameraResolution.width,this.cameraResolution.height),this._waterMarkOption={x:0,y:0,width:e.width,height:e.height,image:e},this.waterMarkNode?(this.waterMarkNode.x=0,this.waterMarkNode.y=0,this.waterMarkNode.resize(e.width,e.height),this.waterMarkNode.image=e):this.update()):(this.pushWaterMarkImageList({x:o,y:a,width:c,height:d,image:e,zIndex:y,type:C,imageUrl:A.imageUrl,fillVideo:S}),yield this.freshWatermark()),this.log.info("set watermark",JSON.stringify(this.watermarkImageList,(b,V)=>b==="imageUrl"?void 0:V))})}deleteWatermark(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"watermark";return KA(this,null,function*(){this.watermarkImageList=this.watermarkImageList.filter(e=>e.type!==A),this.log.info("delete watermark",A,JSON.stringify(this.watermarkImageList,(e,o)=>e==="imageUrl"?void 0:o)),yield this.freshWatermark()})}freshWatermark(){return KA(this,null,function*(){var A;(A=this.waterMarkNode)==null||A.close(),delete this.waterMarkNode,delete this._waterMarkOption;let{width:e,height:o}=this.cameraResolution,a=yield this.getWatermarkImage(e,o);this._waterMarkOption={x:0,y:0,width:a.width,height:a.height,image:a},this.update()})}setVirtualBackground(A){return KA(this,null,function*(){var e,o,a;if(A){if(A.onAbort&&(this._virtualBackgroundAbortCallback=A.onAbort),this._use2d&&!this._autoSwitchRenderMode)return Promise.reject(new Error("not support virtual background in 2d mode"));this._bgAssetPath=A.assetPath,A.type==="image"?this._virtualBackground=yield tM(A.imageUrl):(this.blurRadius=A.blurLevel||this.blurRadius||3,this._virtualBackground=A.type),this._enableFaceCentering=(e=A.enableFaceCentering)!=null?e:this._enableFaceCentering,this._enableEffectOptimization=(o=A.enableEffectOptimization)!=null?o:this._enableEffectOptimization,this._color=(a=A.color)!=null?a:[0,1,0]}else delete this._virtualBackground,delete this._virtualBackgroundAbortCallback;if(this.log.info("".concat(this._virtualBackground?"start":"stop"," virtual background, ").concat(A?.type||"",", ").concat(this.blurRadius||"")),yield this.update(),this._virtualBackground&&!this._glVideoContext.available)throw new si({code:Et.INVALID_OPERATION,message:"webgl context create failed, ".concat(this._glVideoContext.error)})})}get mixScreen(){return this._isMixScreen}set mixScreen(A){var e;this._isMixScreen=A,this._isMixScreen||((e=this.screenNode)==null||e.close(),delete this.screenNode),this.update()}set mirror(A){var e;this._isMirror!==A&&(this._isMirror=A,this._isTransform||((e=this.transformNode)==null||e.close(),delete this.transformNode),this.update())}get mirror(){return this._isMirror}set rotation(A){var e;this._rotation!==A&&(this._rotation=A,this._isTransform||((e=this.transformNode)==null||e.close(),delete this.transformNode),this.update())}get rotation(){return this._rotation}enableAr(A){this.arTrack=A,this.isUsingArTrack=!0,this.update()}updateAr(){return KA(this,null,function*(){var A;(A=this.cameraTrack)!=null&&A.mediaTrack&&(yield this.virtualBackgroundInstance.ar.updateInputTrack(this.cameraTrack.mediaTrack.clone()))})}disableAr(){var A;this.isUsingArTrack=!1,(A=this.arTrack)==null||A.stop(),this.arTrack=void 0,this.update()}createDecodeContext(A){return new hoA(A)}clear(){var A,e;(A=this.videoContext)==null||A.disconnect(),(e=this.destination)==null||e.removeAllListeners(),delete this.destination,delete this.cameraNode,delete this.transformNode,delete this.screenNode,delete this.waterMarkNode}addEncodeProcessor(A){let{processor:e,type:o}=A;var a;this.encodePipeline.includes(e)||(this.encodePipeline[o]=e,(a=this.room)==null||a.enableInsertableStreams())}addDecodeProcessor(A){let{processor:e,type:o}=A;var a;this.decodePipeline.includes(e)||(this.decodePipeline[o]=e,(a=this.room)==null||a.enableInsertableStreams())}removeEncodeProcessor(A){let{type:e}=A;this.encodePipeline[e]=void 0}removeDecodeProcessor(A){let{type:e}=A;this.decodePipeline[e]=void 0}};di([e5(function(A){this.log.error("update failed",A)}),jr(A=>function(){for(var e=arguments.length,o=new Array(e),a=0;a{A.apply(this,o).then(c,d),setTimeout(d,5e3,new si({code:Et.API_CALL_TIMEOUT,message:"update timeout"}))}),this._updateFlag=!1,yield this.updated)})})],Lz.prototype,"update");var BoA=0,QoA=class extends Zs{constructor(A){super("room"),Y(this,"seq",++BoA),Y(this,"sdkAppId"),Y(this,"userId"),Y(this,"userSig"),Y(this,"privateMapKey"),Y(this,"latencyLevel"),Y(this,"tinyId"),Y(this,"scene"),Y(this,"roomId"),Y(this,"useStringRoomId"),Y(this,"role","anchor"),Y(this,"joinParams",null),Y(this,"localPublishFlag",0),Y(this,"localTracks",new Set),Y(this,"enableAutoPlayDialog",!0),Y(this,"autoReceiveAudio",!0),Y(this,"autoReceiveVideo",!0),Y(this,"proxy_ws"),Y(this,"proxy_wt"),Y(this,"proxy_unified"),Y(this,"checkSystemResult",{result:!0,detail:{isBrowserSupported:!0,isWebRTCSupported:!0,isWebCodecsSupported:!0,isMediaDevicesSupported:!0,isScreenShareSupported:!0,isSmallStreamSupported:!0,isH264EncodeSupported:!0,isVp8EncodeSupported:!0,isH264DecodeSupported:!0,isVp8DecodeSupported:!0,isH265EncodeSupported:!0,isH265DecodeSupported:!0}}),Y(this,"keyPointManager"),Y(this,"audioManager"),Y(this,"videoManager"),Y(this,"callDurationCalculator"),Y(this,"badCaseDetector"),Y(this,"scheduleResult",{domains:null,iceServers:null,iceTransportPolicy:null,trtcAutoConf:null}),Y(this,"videoDecodeFallbackType"),Y(this,"smallMode","canvas"),Y(this,"prelinkPromise",null),Y(this,"enableChorus",!1),Y(this,"_isUsingCachedSchedule",!1),Y(this,"_log"),Y(this,"_joinedTimestamp",0),Y(this,"_sdkType"),Y(this,"heartbeatReport"),Y(this,"heartbeatCount",0),Y(this,"quality"),Y(this,"enableSEI"),Y(this,"isDestroyed",!1),this._log=QA.createLogger({parent:A.logger,id:"r".concat(this.seq)}),this.useStringRoomId=!!A.useStringRoomId,_r(A.autoReceiveAudio)&&(this.autoReceiveAudio=A.autoReceiveAudio),_r(A.autoReceiveVideo)&&(this.autoReceiveVideo=A.autoReceiveVideo),_r(A.enableAutoPlayDialog)&&(this.enableAutoPlayDialog=A.enableAutoPlayDialog),this._sdkType=A.sdkType,this.keyPointManager=new aoA({room:this,frameWorkType:A.frameWorkType,component:A.component,language:A.language}),this.callDurationCalculator=new goA({room:this}),this.badCaseDetector=new loA({room:this}),this.audioManager=new WtA(this),this.videoManager=new Lz(this)}get videoCodec(){return"h264"}get scriptTransformWorker(){}get isMainStreamPublished(){for(let A of this.localTracks)if(4&A.mediaType)return!0;return!1}get isAuxStreamPublished(){for(let A of this.localTracks)if(2&A.mediaType)return!0;return!1}get hasAuxStream(){for(let A of this.remotePublishedUserMap.values())if(A.muteState.hasAuxiliary)return!0;return this.isAuxStreamPublished}get localMainAudioTrack(){for(let A of this.localTracks)if(1&A.mediaType)return A;return null}get localMainVideoTrack(){for(let A of this.localTracks)if(4&A.mediaType)return A;return null}get localAuxVideoTrack(){for(let A of this.localTracks)if(2&A.mediaType)return A;return null}get publishState(){let A={audio:!1,bigVideo:!1,smallVideo:!1,auxVideo:!1};return this.localTracks.forEach(e=>{if(e.isPublished||e.isPublishing)switch(e.mediaType){case 1:A.audio=!0;break;case 4:A.bigVideo=!0,A.smallVideo=e.hasSmall;break;case 2:A.auxVideo=!0}}),A}get muteState(){var A,e,o;return{audio:!((A=this.localMainAudioTrack)==null||!A.muted),bigVideo:!((e=this.localMainVideoTrack)==null||!e.muted),auxVideo:!((o=this.localAuxVideoTrack)==null||!o.muted)}}getLogger(){return this._log}get isJoining(){return this.state.toString()==="joining"}get isJoined(){return this.state==="joined"}get isLeft(){return this.state==="left"}addTrack(A){return KA(this,null,function*(){return this.publish(A)})}removeTrack(A){return KA(this,null,function*(){return this.unpublish(A)})}replaceTrack(A){return KA(this,null,function*(){})}setEncodedDataProcessingListener(A){throw new Error("Method not implemented.")}enableAIVoice(A){throw new Error("Method not implemented.")}setProxyServer(A){if(Yn(A))/^wss?:\/\//i.test(A)?this.proxy_ws=A:/^https?:\/\//i.test(A)&&(this.proxy_wt=A);else if(aE(A)){let{websocketProxy:e,webtransportProxy:o,loggerProxy:a,scheduleProxy:c,unifiedProxy:d}=A;this.proxy_ws=e,this.proxy_wt=o,this.proxy_unified=d,d?(zK([d,d]),FS("https://".concat(d))):(a&&FS(a),c&&zK(c))}F.once(sA.JOIN_RECEIVED_CMD_RES,()=>this.sendAbilityStatus({sched_domain:Am.main,sched_back_domain:Am.backup,signal_domain:this.proxy_ws||this.proxy_wt||""}))}getRemoteAudioStats(){return KA(this,null,function*(){let A={};return this.remotePublishedUserMap.forEach(e=>{A[e.userId]=e.remoteAudioTrack.stat}),A})}getTransportStats(){return KA(this,null,function*(){var A;let e={rtt:((A=this.quality)==null?void 0:A.uplinkRTT)||0,downlinksRTT:{}};if(this.quality)for(let o of this.quality.downlinkInfo)e.downlinksRTT[o.userId]=o.rtt;return e})}getRemoteVideoStats(){return KA(this,arguments,function(){var A=this;let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"main";return function*(){let o={};return A.remotePublishedUserMap.forEach(a=>{let c=e==="auxiliary"?a.remoteAuxiliaryTrack:a.remoteVideoTrack;o[a.userId]=c.stat}),o}()})}checkDestroy(){if(this.isDestroyed)throw new si({code:Et.INVALID_OPERATION,message:Xo({key:Mo.CLIENT_DESTROYED,data:{funName:"join"}})})}destroy(){if(this.isJoined)throw this._log.warn(cc.INVALID_DESTROY),new si({code:Et.INVALID_OPERATION,message:Xo({key:Mo.INVALID_DESTROY})});this._log.info("destroy room"),this.audioManager.destroy(),this.videoManager.destroy(),this.keyPointManager.destroy(),this.callDurationCalculator.destroy(),this.badCaseDetector.destroy(),this.isDestroyed=!0,F.emit(sA.ROOM_DESTROY,{room:this})}schedule(A,e){return KA(this,null,function*(){var o,a,c,d;let C=ko();try{let{isCached:y,result:S,detailCost:b}=yield z5({userId:this.userId,sdkAppId:this.sdkAppId,roomId:this.useStringRoomId?A.strRoomId:A.roomId,useStringRoomId:this.useStringRoomId,version:Hd,userSig:this.userSig,role:this.scene==="live"?A.role:void 0,frameWorkType:e,latencyLevel:A.latencyLevel});this._isUsingCachedSchedule=y,this._log.info("schedule cache:".concat(+y," ").concat(Wd(S,{keysToExclude:["username","credential"]}))),y&&F.once(sA.JOIN_RECEIVED_CMD_RES,()=>this.sendAbilityStatus({scheduleCache:1})),this.scheduleResult=mi(mi({},this.scheduleResult),S),bn((o=S.config)==null?void 0:o.retryCount)&&n0(S.config.retryCount),Yn((a=S.config)==null?void 0:a.loggerDomain)&&FS(S.config.loggerDomain),this.videoDecodeFallbackType=((c=S.config)==null?void 0:c.videoDecodeFallback)||this.videoDecodeFallbackType,this.smallMode=((d=S.config)==null?void 0:d.smallMode)||this.smallMode,F.emit(sA.JOIN_SCHEDULE_SUCCESS,{room:this,schedule:this.scheduleResult,detailCost:b}),Ai.addSuccessEvent({key:521700,cost:ko()-C})}catch(y){throw Ai.addFailedEvent({key:521700,error:y}),y}})}sendAbilityStatus(A){}enableInsertableStreams(){return Promise.resolve()}switchRoom(A){return Promise.reject()}isSwitchRoomSupported(){return!1}prelink(A,e,o,a,c,d){return KA(this,null,function*(){return Promise.resolve()})}closePrelink(){return KA(this,null,function*(){return Promise.resolve()})}},poA=gc(ql()),Uz=gc(db());function Fz(A){var e;let o=[];for(let a=0;ad.payload===A.rtp[a].payload)[0];o.push({payload:A.rtp[a].payload,codec:A.rtp[a].codec,fmtp:c?c.config:"",rate:A.rtp[a].rate,rtx:((e=A.rtp[a+1])==null?void 0:e.codec)==="rtx"?A.rtp[a+1].payload:0,rtcpfb:(A?.rtcpFb||[]).filter(d=>d.payload===A.rtp[a].payload).map(d=>{let{type:C,subtype:y}=d;return{id:C,params:y?[y]:[]}})})}return o}var moA=(A,e,o)=>KA(null,null,function*(){var a;let c=uc(A),d={ice:{ufrag:"",password:""},dtls:{hash:"",fingerprint:"",setup:""},audio:{codecs:[],extensions:[]},video:{codecs:[],decoders:[],extensions:[]},useDataChannel:o};d.ice.ufrag=String(c.media[0].iceUfrag),d.ice.password=c.media[0].icePwd||"",c.fingerprint&&(d.dtls.hash=c.fingerprint.type,d.dtls.fingerprint=c.fingerprint.hash,d.dtls.setup=c.setup||""),c.media[0].fingerprint&&(d.dtls.hash=c.media[0].fingerprint.type,d.dtls.fingerprint=c.media[0].fingerprint.hash),d.dtls.setup=c.media[0].setup||"";let C=c.media[0],y=c.media[1];C.ext&&(d.audio.extensions=C.ext.map(b=>({id:b.value,uri:b.uri}))),y.ext&&(d.video.extensions=y.ext.map(b=>({id:b.value,uri:b.uri})));for(let b of C.rtp){if(b.codec!=="opus")continue;let V=C.fmtp.find(gA=>gA.payload===b.payload);if(!V)continue;let J={codec:b.codec,fmtp:V.config,payload:V.payload,rate:b.rate,channels:b.encoding,rtcpfb:[],rtx:0};(a=C.rtcpFb)==null||a.forEach(gA=>{let{payload:CA,type:MA,subtype:$A}=gA;if(CA===J.payload){let he={id:MA,params:[]};$A&&he.params.push($A),J.rtcpfb.push(he)}}),d.audio.codecs.push(J);break}let S=["h264","vp8","h265"];return e&&S.shift(),d.video.codecs=[...Fz(y)].filter(b=>S.includes(b.codec.toLocaleLowerCase())),d.video.decoders=(yield function(){return KA(this,null,function*(){let b=new RTCPeerConnection;b.addTransceiver(YA.VIDEO,{direction:YA.TRANSCEIVER_DIRECTION_RECVONLY});let V=yield b.createOffer();if(!V.sdp)return[];let J=Fz(uc(V.sdp).media[0]);return b.close(),J})}()).filter(b=>["h264","vp8","h265"].includes(b.codec.toLocaleLowerCase())),d}),Oz=(A,e)=>{let o=(A||"").trim(),a=(e||"").trim(),c="profile-level-id",d="".concat(c,"=[0-9a-fA-F]{6}");if(new RegExp(d).test(o)){let y=new RegExp(d,"g");return o.replace(y,"".concat(c,"=").concat(a))}if(!o)return"".concat(c,"=").concat(a);let C=o.endsWith(";")?"":";";return"".concat(o).concat(C).concat(c,"=").concat(a)},foA=A=>{let{serverAbility:e,clientAbility:o,offerSDP:a,enableCustomMessage:c,profileLevelIdConfig:d}=A,C=uc(a),y={extmapAllowMixed:"extmap-allow-mixed",groups:C.groups,icelite:"ice-lite",media:[],msidSemantic:{semantic:"",token:"WMS"},name:"-",origin:{address:"127.0.0.1",username:"-",sessionId:String(Date.now()),sessionVersion:1,netType:"IN",ipVer:4},timing:{start:0,stop:0},version:0},S={candidates:e.candidates.map(V=>({component:1,foundation:"1",generation:0,ip:V.ip,port:V.port,priority:V.priority,transport:V.foundation,type:V.type})),connection:{version:4,ip:"0.0.0.0"},direction:YA.TRANSCEIVER_DIRECTION_RECVONLY,ext:e.audio.extensions.map(V=>({value:V.id,uri:V.uri})),fingerprint:{type:e.dtls.hash,hash:e.dtls.fingerprint},fmtp:[{payload:e.audio.codecs[0].payload,config:e.audio.codecs[0].fmtp}],icePwd:e.ice.password,iceUfrag:e.ice.ufrag,mid:"0",payloads:String(e.audio.codecs[0].payload),port:C.media[0].port,protocol:C.media[0].protocol,type:YA.AUDIO,setup:e.dtls.setup,rtcpFb:e.audio.codecs[0].rtcpfb.map(V=>({payload:e.audio.codecs[0].payload,type:V.id,subtype:V.params[0]})),rtcpMux:"rtcp-mux",rtcpRsize:"rtcp-rsize",rtp:[{payload:e.audio.codecs[0].payload,codec:e.audio.codecs[0].codec,rate:e.audio.codecs[0].rate,encoding:e.audio.codecs[0].channels}]};y.media.push(S);let b=[d?.big,d?.small,d?.aux];return[1,2,3].forEach((V,J)=>{y.media.push(Pz({mid:V,serverAbility:e,clientAbility:o,parsedOffer:C,profileLevelId:b[J]}))}),c&&y.media.push(C.media.find(V=>V.mid==="dc")),My(y)},Pz=A=>{let{mid:e,serverAbility:o,clientAbility:a,parsedOffer:c,isDownlink:d=!1,profileLevelId:C}=A,y={candidates:o.candidates.map(S=>({component:1,foundation:"1",generation:0,ip:S.ip,port:S.port,priority:S.priority,transport:S.foundation,type:S.type})),connection:{version:4,ip:"0.0.0.0"},direction:YA.TRANSCEIVER_DIRECTION_RECVONLY,ext:o.video.extensions.map(S=>({value:S.id,uri:S.uri})),fingerprint:{type:o.dtls.hash,hash:o.dtls.fingerprint},fmtp:[],icePwd:o.ice.password,iceUfrag:o.ice.ufrag,mid:String(e),payloads:"",port:c.media[0].port,protocol:c.media[0].protocol,type:YA.VIDEO,setup:o.dtls.setup,rtcpFb:[],rtcpMux:"rtcp-mux",rtcpRsize:"rtcp-rsize",rtp:[]};if(d){let S=o.video.decoders;(!S||S.length===0)&&(S=o.video.codecs),(!S||S.length===0)&&(S=a.video.decoders),S.forEach(b=>{d_(y,b)})}else{let S;S=o.useH265?o.video.codecs.findIndex(V=>V.codec.toLowerCase()==="h265"):o.video.codecs.findIndex(V=>V.codec.toLowerCase()===(o.useVp8?"vp8":"h264"));let b=o.video.codecs[S]||a.video.codecs[0];d_(y,b)}if(!d&&C){let S=y.fmtp,b=y.rtp.find(V=>{var J;return((J=V.codec)==null?void 0:J.toLowerCase())==="h264"});if(b){let V=S.find(J=>String(J.payload)===String(b.payload));V&&(V.config=Oz(V.config,C))}}return y},d_=(A,e)=>{A.payloads="".concat(A.payloads," ").concat(e.payload).trim(),A.fmtp.push({payload:e.payload,config:e.fmtp}),A.rtcpFb=[...A.rtcpFb||[],...e.rtcpfb.map(o=>({payload:e.payload,type:o.id,subtype:o.params[0]}))],A.rtp.push({payload:e.payload,codec:e.codec.toUpperCase(),rate:e.rate}),e.rtx&&(A.payloads="".concat(A.payloads," ").concat(e.rtx),A.fmtp.push({payload:e.rtx,config:"apt=".concat(e.payload)}),A.rtp.push({payload:e.rtx,codec:"rtx",rate:e.rate}))},yoA=(A,e,o)=>{let a=Uz.default.parse(A);return a.media.forEach((c,d)=>{var C;if((c.type===YA.AUDIO||c.type===YA.VIDEO)&&(function(y){if(!y.rtcpFb)return;let S=[];y.rtcpFb.forEach((b,V)=>{var J;S.push(b),y.rtcpFb&&((J=y.rtcpFb[V+1])==null?void 0:J.payload)!==b.payload&&b.type!=="rrtr"&&S.push({payload:b.payload,type:"rrtr"})}),y.rtcpFb=S}(c),function(y){y.type===YA.VIDEO&&y.fmtp&&y.fmtp.forEach(S=>{S.config.includes("apt")||(S.config+=";sps-pps-idr-in-keyframe=1")})}(c),function(y){y.type===YA.AUDIO&&y.fmtp&&y.fmtp.forEach(S=>{S.config+=";sprop-stereo=1;stereo=1"})}(c),function(y){let S=new Set(["urn:ietf:params:rtp-hdrext:sdes:mid","urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id","urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id"]);y.ext&&(y.ext=y.ext.filter(b=>!S.has(b.uri)))}(c),c.type===YA.VIDEO)){if(d<4)c.payloads="",c.fmtp=[],c.rtp=[],c.rtcpFb=[],e.video.codecs.forEach(y=>d_(c,y));else if(o){c.payloads="",c.fmtp=[],c.rtp=[],c.rtcpFb=[];let y=o.video.decoders;(!y||y.length===0)&&(y=o.video.codecs),(!y||y.length===0)&&(y=e.video.decoders),y.forEach(S=>d_(c,S))}}(C=c.payloads)!=null&&C.includes("datachannel")&&a.groups&&c.mid&&(a.groups[0].mids=a.groups[0].mids.replace(c.mid,"dc"),c.mid="dc")}),Uz.default.write(a)};function Qj(A){var e,o;let a=/profile-level-id=([0-9a-fA-F]{6})/.exec(A);return(o=(e=a?.[1])==null?void 0:e.toLowerCase())!=null?o:null}function pj(A){let e=A.toLowerCase();if(!/^[0-9a-f]{6}$/.test(e))return"unknown";let o=parseInt(e.slice(0,2),16);return o===66?"baseline":o===77?"main":o===100?"high":"unknown"}function xz(A,e){if(!e)return"";let o=A.trim().toLowerCase().replace(/_/g,"-");if(!o)return"";if(/^[0-9a-f]{6}$/.test(o))return o;if(o!=="baseline"&&o!=="main"&&o!=="high")return"";for(let a of e.video.codecs){let c=Qj(a.fmtp);if(c&&pj(c)===o)return c}return""}var DoA=gc(ql()),Yz=class extends DoA.EventEmitter{constructor(A){super(),this.room=A,Y(this,"mainFpsHealth",1),Y(this,"mainBitrateHealth",1),Y(this,"badMainBitrateHealthCount",0),Y(this,"lastEmitBadHealthTime",0),Y(this,"log"),!Ha&&gE&&F.on("262",this.onVideoCodecChanged,this),this.log=A.getLogger().createChild({id:"h-d"})}onVideoCodecChanged(A){let{remoteUserId:e,streamType:o,isHWCodec:a,codec:c}=A;if(!e&&o!==7&&c==="h264"){if(!a)return void this.room.off("heartbeat-report",this.onHeartbeatReport,this);this.room.listeners("heartbeat-report").includes(this.onHeartbeatReport)||this.room.on("heartbeat-report",this.onHeartbeatReport,this)}}onHeartbeatReport(A){Date.now()-this.lastEmitBadHealthTime<3e4||(A.msg_up_stream_info.msg_video_status.forEach(e=>{if(e.uint32_video_enc_fps&&e.uint32_video_capture_fps){let o=e.uint32_video_enc_fps/e.uint32_video_capture_fps;e.uint32_video_stream_type===2&&(this.mainFpsHealth=o)}if(e.uint32_video_codec_bitrate&&e.uint32_video_stream_type===2){let{localMainVideoTrack:o}=this.room;o&&(this.mainBitrateHealth=e.uint32_video_codec_bitrate/1e3/o.profile.bitrate)}}),this.log.debug("mainBitrateHealth: ".concat(this.mainBitrateHealth," mainFpsHealth: ").concat(this.mainFpsHealth)),this.mainBitrateHealth>.5&&(this.badMainBitrateHealthCount=0),this.mainFpsHealth>.9&&this.mainBitrateHealth<.5&&(this.badMainBitrateHealthCount++,this.badMainBitrateHealthCount>3&&(this.badMainBitrateHealthCount=0,this.lastEmitBadHealthTime=Date.now(),this.log.warn("bad main bitrate health: ".concat(this.mainBitrateHealth)),this.emit("1",{isAux:!1}))))}destroy(){F.off("262",this.onVideoCodecChanged,this),this.room.off("heartbeat-report",this.onHeartbeatReport,this)}};Y(Yz,"EVENT_BAD_HEALTH","bad_health");var SoA=Yz,C_=(A=>(A.TRACK="track",A.DATA_CHANNEL_MESSAGE="data_channel_msg",A[A.CONNECTION_STATE_CHANGED="connection-state-changed"]="CONNECTION_STATE_CHANGED",A[A.FIREWALL_RESTRICTION="firewall-restriction"]="FIREWALL_RESTRICTION",A.RECONNECTED="spc-reconnected",A.RECONNECT_FAILED="spc-reconnect-failed",A.ERROR="error",A.SEI_MESSAGE="sei-message",A.DUMP="dump",A))(C_||{}),MoA=1,vy=class extends poA.default{constructor(A){let{signalChannel:e,room:o,enableDataChannel:a}=A;super(),Y(this,"stat",{iceStartTime:0,iceEndTime:0,dtlsStartTime:0,dtlsEndTime:0,peerConnectionStartTime:0,peerConnectionEndTime:0}),Y(this,"isDestroyed",!1),Y(this,"currentState","DISCONNECTED"),Y(this,"_room"),Y(this,"_signalChannel"),Y(this,"_peerConnection",null),Y(this,"_datachannel",null),Y(this,"_enableDataChannel"),Y(this,"_log"),Y(this,"_downlinkMIDMap",new Map),Y(this,"_downlinkMIDUserIDMap",new Map),Y(this,"_reconnectionTimer",-1),Y(this,"reconnectionCount",0),Y(this,"clientAbility"),Y(this,"_serverAbility",null),Y(this,"addDownlinkQueue",new Set),Y(this,"removeDownlinkQueue",new Set),Y(this,"_parsedAnswer",null),Y(this,"_updateSDPPromise",null),Y(this,"_waitForPCConnectedPromise"),Y(this,"clearWaitForConnectedPromise"),Y(this,"clearConnectTimeout"),Y(this,"_isSDPLogged",!1),Y(this,"enableInsertableStreams",!1),Y(this,"insertableStreamsAbortMap",new Map),Y(this,"receiverRemoteTrackMap",new WeakMap),Y(this,"scriptTransformWorker"),Y(this,"_isRelayTried",!1),Y(this,"_rttOverCount",0),Y(this,"originOffer",null),Y(this,"autoSubscribedSsrcGroups",new Map),Y(this,"autoSubscribedUserMap",new Map),Y(this,"_h265DecodeFailed",!1),this._room=o,this._enableDataChannel=a,this._signalChannel=e,this._log=QA.createLogger({parent:this._room.getLogger(),id:"spc".concat(MoA++),userId:this._room.userId,sdkAppId:this._room.sdkAppId}),this._room.enableCodecPipeline&&(qp?this.enableInsertableStreams=!0:this.initScriptTransformWorker()),this._room.healthDetector.on("1",this.onBadHealth,this)}get isH264EncodeSupported(){let A=this._room.checkSystemResult.detail.isH264EncodeSupported;return this._serverAbility&&(A=A&&!!this._serverAbility.video.codecs.find(e=>e.codec.toLowerCase()==="h264")),A}addAbortController(A,e){var o;(o=this.insertableStreamsAbortMap.get(A))==null||o.abort("destroy"),this.insertableStreamsAbortMap.set(A,e)}get isVP8EncodeSupported(){let A=this._room.checkSystemResult.detail.isVp8EncodeSupported;return this._serverAbility&&(A=A&&this._serverAbility.video.codecs.find(e=>e.codec.toLowerCase()==="vp8")),A}get isH265EncodeSupported(){let A=this._room.checkSystemResult.detail.isH265EncodeSupported;return this._serverAbility&&(A=A&&!!this._serverAbility.video.codecs.find(e=>e.codec.toLowerCase()==="h265")),A}get videoCodec(){var A,e,o;let a=(A=this._parsedAnswer)==null?void 0:A.media[1].rtp.find(c=>["h264","vp8","h265"].includes(c.codec.toLowerCase()));return a?a.codec.toLowerCase():(e=this._serverAbility)!=null&&e.useH265?"h265":(o=this._serverAbility)!=null&&o.useVp8?"vp8":"h264"}get downlinkVideoCodec(){var A,e,o;return(A=this._serverAbility)!=null&&A.useH265&&(e=this._serverAbility)!=null&&e.video.decoders.find(a=>a.codec.toLowerCase()==="h265")&&!this._h265DecodeFailed?"h265":(o=this._serverAbility)!=null&&o.video.decoders.find(a=>a.codec.toLowerCase()==="h264")?"h264":"vp8"}get isUsingH264(){return this.videoCodec==="h264"}get isUsingH265(){return this.videoCodec==="h265"}get isUsingVP8(){return this.videoCodec==="vp8"}get is42001fSupported(){return!!this.clientAbility&&!!this.clientAbility.video.codecs.find(A=>A.fmtp.includes("42001f"))}isProfileLevelIdSupported(A){return!!this.clientAbility&&!!this.clientAbility.video.codecs.find(e=>e.fmtp.includes(A))}get uplinkSSRC(){return this._peerConnection&&this._peerConnection.localDescription?(A=>{let e=uc(A),o={audioSsrc:0,audioRtxSsrc:0,bigVideoSsrc:0,bigVideoRtxSsrc:0,smallVideoSsrc:0,smallVideoRtxSsrc:0,auxVideoSsrc:0,auxVideoRtxSsrc:0};return e.media.forEach((a,c)=>{var d;if(a.ssrcs&&!Je(a.ssrcs[0].id)){let C=Number(a.ssrcs[0].id),y=Number((d=a.ssrcs.filter(S=>S.attribute==="cname")[1])==null?void 0:d.id);switch(c){case 0:o.audioSsrc=C;break;case 1:o.bigVideoSsrc=C,o.bigVideoRtxSsrc=y;break;case 2:o.smallVideoSsrc=C,o.smallVideoRtxSsrc=y;break;case 3:o.auxVideoSsrc=C,o.auxVideoRtxSsrc=y}}}),o})(this._peerConnection.localDescription.sdp):{audioSsrc:0,audioRtxSsrc:0,bigVideoSsrc:0,bigVideoRtxSsrc:0,smallVideoSsrc:0,smallVideoRtxSsrc:0,auxVideoSsrc:0,auxVideoRtxSsrc:0}}onBadHealth(A){}initScriptTransformWorker(){Z0&&(this.scriptTransformWorker=rz({videoEncodePipeline:this._room.videoManager.encodePipeline,videoDecodePipeline:this._room.videoManager.decodePipeline,audioEncodePipeline:this._room.audioManager.encodePipeline,audioDecodePipeline:this._room.audioManager.decodePipeline}),this.scriptTransformWorker.onmessage=A=>{A.data.type==="sei"?this.emit("sei-message",A.data):A.data.type,A.data.type==="dump"&&this.emit("dump",A.data)},this.scriptTransformWorker.onerror=A=>{this._log.error("scriptTransformWorker error: ",A.message)})}get isReconnecting(){return this.currentState==="RECONNECTING"||this._reconnectionTimer>0||this.reconnectionCount>0}get dtlsTransport(){if(!this._peerConnection)return null;let A=this._peerConnection.getSenders();return A.length===0?null:A[0].transport}getPeerConnectionConfig(A){var e;let o={encodedInsertableStreams:this.enableInsertableStreams,offerExtmapAllowMixed:!0,iceServers:A,iceTransportPolicy:this._room.getIceTransportPolicy(),sdpSemantics:this._room.sdpSemantics,bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",tcpCandidatePolicy:"disable",IceTransportsType:"nohost"},a=(e=this._peerConnection)==null?void 0:e.getConfiguration().encodedInsertableStreams;return l2(a)&&(o.encodedInsertableStreams=a),this._log.debug("getPeerConnectionConfig",JSON.stringify(o)),o}initialize(A){return KA(this,null,function*(){var e;let o;try{return this._peerConnection=new RTCPeerConnection(this.getPeerConnectionConfig(A)),this._peerConnection.oniceconnectionstatechange=()=>{if(!this._peerConnection)return;let a=this._peerConnection.iceConnectionState;this._log.debug("ice state: ".concat(a)),a==="checking"&&this.stat.iceStartTime===0?this.stat.iceStartTime=Date.now():a==="connected"&&this.stat.iceEndTime===0?(this.stat.iceEndTime=Date.now(),this._signalChannel.clearBakRelayIps(),Ai.addSuccessEvent({key:521711,cost:this.stat.iceEndTime-this.stat.iceStartTime})):a==="failed"&&Ai.addFailedEvent({key:521711})},this._peerConnection.onsignalingstatechange=()=>{var a;let c=((a=this._peerConnection)==null?void 0:a.signalingState)||"";this._log[c==="closed"?"debug":"info"]("signaling state: ".concat(c))},this._peerConnection.onconnectionstatechange=this.onConnectionStateChange.bind(this),this._peerConnection.ontrack=a=>this.emit("track",a),this._enableDataChannel&&(this._datachannel=this._peerConnection.createDataChannel("".concat(this._room.userId,"dc")),this._datachannel.binaryType="arraybuffer",this._datachannel.onopen=()=>{this._log.info("datachannel open")},this._datachannel.onclose=()=>{this._log.warn("datachannel close")},this._datachannel.onmessage=a=>{let c=new RoA(a.data);this.emit("data_channel_msg",{data:c})},this._datachannel.onerror=a=>{this._log.warn("datachannel error",a)}),this._peerConnection.addTransceiver(YA.AUDIO,{direction:YA.TRANSCEIVER_DIRECTION_SENDONLY}),this._peerConnection.addTransceiver(YA.VIDEO,{direction:YA.TRANSCEIVER_DIRECTION_SENDONLY}),this._peerConnection.addTransceiver(YA.VIDEO,{direction:YA.TRANSCEIVER_DIRECTION_SENDONLY}),this._peerConnection.addTransceiver(YA.VIDEO,{direction:YA.TRANSCEIVER_DIRECTION_SENDONLY}),o=yield this._peerConnection.createOffer(),this.clientAbility=yield moA(o.sdp,((e=this._room.scheduleResult.config)==null?void 0:e.remove264FromSDP)||!1,this._enableDataChannel),this.originOffer=o,this.dtlsTransport&&(this.dtlsTransport.onstatechange=()=>{let{dtlsTransport:a}=this;a&&(this._log.debug("dtls state: ".concat(a.state)),a.state==="connecting"&&this.stat.dtlsStartTime===0?this.stat.dtlsStartTime=Date.now():a.state==="connected"&&this.stat.dtlsEndTime===0&&(this.stat.dtlsEndTime=Date.now()))}),Ai.addSuccessEvent({key:521707}),this.clientAbility}catch(a){throw Ai.addFailedEvent({key:521707,error:a}),this._log.error("initialize failed ".concat(a,` +offer: `).concat(o?.sdp)),a}})}setIceServers(A){return KA(this,null,function*(){var e;if(this._peerConnection&&A.length!==0)try{if(this._log.info("setIceServers",JSON.stringify(A,(o,a)=>o==="username"||o==="credential"?"hided":a)),this._peerConnection.setConfiguration(this.getPeerConnectionConfig(A)),(e=this._peerConnection)!=null&&e.localDescription||!this.originOffer)return void this._log.warn("setIceServers already has localDescription or no origin Offer");yield this.setOffer(this.originOffer)}catch(o){this._log.warn("setIceServers error ",o)}})}setPriority(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"high";if(this._peerConnection)try{this._peerConnection.getSenders().forEach(e=>{let o=e.getParameters();o.encodings[0]&&(o.encodings[0].priority=A,o.encodings[0].networkPriority=A,e.setParameters(o).catch(a=>{this._log.warn("setPriority error ",a)}))})}catch(e){this._log.warn("setPriority error ",e)}}connect(A){let e=arguments.length>1&&arguments[1]!==void 0&&arguments[1];return KA(this,null,function*(){var o,a,c;try{if(this.currentState==="CONNECTED")return;((o=this._peerConnection)==null||!o.localDescription)&&this.originOffer&&(yield this.setOffer(this.originOffer));let d=ko(),C=this.getProfileLevelIdConfig(),y={type:"answer",sdp:foA({serverAbility:A,clientAbility:this.clientAbility,offerSDP:this._peerConnection.localDescription.sdp,enableCustomMessage:this._enableDataChannel,profileLevelIdConfig:C})};this._serverAbility=A,yield this.setAnswer(y),yield this.waitForPeerConnectionConnected(),this._room.firewallDetector.resetTimeoutCount();let S=((a=this._room.scheduleResult.config)==null?void 0:a.priority)||((c=this._room.joinParams)==null?void 0:c.priority)||new URLSearchParams(location.search).get("priority");S&&this.setPriority(S),e||Ai.addSuccessEvent({key:521703,cost:ko()-d})}catch(d){let C=d instanceof si&&d.code===Et.API_CALL_ABORTED;throw C||this._log.error("connect failed: ".concat(d),A),this.reset(),!C&&!this.isReconnecting&&!this.isDestroyed&&(Ai.addFailedEvent({key:521703,error:d}),this.emitConnectionStateChangedEvent("DISCONNECTED"),this.startReconnection()),d}})}reconnect(){return KA(this,null,function*(){if(this._reconnectionTimer===-1){if(!this._signalChannel.isConnected)return this._log.warn("reconnect() wait signal channel is connected"),void this._signalChannel.once(uL,this.reconnect,this);try{this.reconnectionCount+=1,this._log.warn("reconnect() trying [".concat(this.reconnectionCount,"]")),this.reset();let A=this._signalChannel.getBackupRelayIpPair(),e=yield this.initialize(this._room.getIceServers(A!=null&&A.iceServer?[A.iceServer]:[])),o=mi({ability:e},A),a=yield this._signalChannel.sendWaitForResponse({command:KiA,responseCommand:ls.REBUILD_PEER_CONNECTION_RES,data:o,enableLog:!1});if(a.data.code!==0)throw new si({code:a.data.code,message:a.data.message});yield this.connect(a.data.data.ability,!0),Ai.addSuccessEvent({key:521704}),this._log.warn("reconnect() success"),this.stopReconnection(),F.emit(sA.SPC_RECONNECTED,{room:this._room}),this.emit("spc-reconnected")}catch(A){if(!this.isReconnecting||this.isDestroyed)return;if(A!=null&&A.message.includes("timeout")){let e=vp(this.reconnectionCount);this._log.warn("reconnect() timeout, try again after ".concat(e/1e3,"s")),yield kC(e,o=>{this._reconnectionTimer=o}),this.clearReconnectionTimer(),yield this.reconnect()}else this._log.error("reconnect() failed ".concat(A?.code," ").concat(A)),Ai.addFailedEvent({key:521704,error:A}),this.reconnectionCount>=Pf()&&this._log.warn("SDK has tried reconnect for ".concat(Pf()," times, but all failed, please check your network")),this.stopReconnection(),this.emitConnectionStateChangedEvent("DISCONNECTED"),this.emit("error")}}else this._log.warn("reconnect() is reconnecting, ignore current reconnection")})}getPeerConnection(){return this._peerConnection}startReconnection(){return KA(this,null,function*(){this.isReconnecting||(this._log.warn("start reconnect"),this._updateSDPPromise=null,this.emitConnectionStateChangedEvent("RECONNECTING"),yield this.reconnect())})}stopReconnection(){var A;this.isReconnecting&&(this._log.info("stop reconnect"),this.reconnectionCount=0,this.clearReconnectionTimer(),(A=this.clearConnectTimeout)==null||A.call(this),this._signalChannel.off(uL,this.reconnect,this),this.currentState==="RECONNECTING"&&this.emitConnectionStateChangedEvent("DISCONNECTED"))}checkPeerConnectionToReconnect(){var A;!this.isReconnecting&&((A=this._peerConnection)==null?void 0:A.connectionState)===Eo.CLOSED&&this.startReconnection()}clearReconnectionTimer(){this._reconnectionTimer!==-1&&(clearTimeout(this._reconnectionTimer),this._reconnectionTimer=-1)}onConnectionStateChange(A){var e;let o=((e=this._peerConnection)==null?void 0:e.iceConnectionState)||"closed",a=this.getDTLSTransportState();this._log.info("connectionState: ".concat(A.target.connectionState," ICE: ").concat(o," DTLS: ").concat(a)),A.target.connectionState===Eo.CONNECTING&&(this.stat.peerConnectionStartTime===0&&(this.stat.peerConnectionStartTime=Date.now()),this.emitConnectionStateChangedEvent("CONNECTING")),(A.target.connectionState===Eo.FAILED||A.target.connectionState===Eo.CLOSED)&&(this.emitConnectionStateChangedEvent("DISCONNECTED"),this._room.forceRelay?this.switchRelay(!1):this.startReconnection()),(A.target.connectionState===Eo.CONNECTED||A.target.connectionState===Eo.COMPLETED)&&(this.stat.peerConnectionEndTime===0&&(this.stat.peerConnectionEndTime=Date.now()),F.emit(sA.SINGLE_CONNECTION_STAT,{room:this._room,stat:{ice:this.stat.iceEndTime-this.stat.iceStartTime,dtls:this.stat.dtlsEndTime-this.stat.dtlsStartTime,peerConnection:this.stat.peerConnectionEndTime-this.stat.peerConnectionStartTime}}),this.logSelectedCandidate(),this.emitConnectionStateChangedEvent("CONNECTED"))}getDTLSTransportState(){if(!this._peerConnection)return qh;let A=null;return kI()&&this._peerConnection.getSenders().length!==0?(A=this._peerConnection.getSenders()[0].transport,Ey()&&this._peerConnection.getReceivers().length!==0&&A?A.state:qh):qh}emitConnectionStateChangedEvent(A){A!==this.currentState&&(this.currentState==="RECONNECTING"&&A==="CONNECTING"||(this.emit(C_.CONNECTION_STATE_CHANGED,{prevState:this.currentState,state:A}),this.currentState=A))}logSelectedCandidate(){return KA(this,null,function*(){if(!this._peerConnection)return;let A=yield this._peerConnection.getStats();for(let[e,o]of A)if(SM(o)){let a=A.get(o.localCandidateId),c=A.get(o.remoteCandidateId);a&&(this._log.info("local candidate: ".concat(a.candidateType," ").concat(a.protocol,":").concat(a.ip||a.address,":").concat(a.port," ").concat(a.networkType||""," ").concat(a.relayProtocol?"relayProtocol:".concat(a.relayProtocol," url: ").concat(a.url):"")),a.networkType&&B0(a.networkType)),c&&this._log.info("remote candidate: ".concat(c.candidateType," ").concat(c.protocol,":").concat(c.ip||c.address,":").concat(c.port));break}})}waitForPeerConnectionConnected(){return this._waitForPCConnectedPromise||(this._waitForPCConnectedPromise=new Promise((A,e)=>{if(this.currentState==="CONNECTED")return A();let o=C=>{C.state==="CONNECTED"&&(clearTimeout(d),c(),A())},a=C=>{let{room:y}=C;y===this._room&&(clearTimeout(d),c(),e(new si({code:Et.API_CALL_ABORTED,message:Xo({key:Mo.CONNECTION_ABORTED,data:"leave room"})})))},c=()=>{F.off(sA.LEAVE_SUCCESS,a,this),this.off(C_.CONNECTION_STATE_CHANGED,o,this)},d=setTimeout(()=>{c();let C=new si({code:Et.API_CALL_TIMEOUT,message:"connection timeout"});this._room.firewallDetector.increaseTimeoutCount(),e(C)},Rb);this.clearConnectTimeout=()=>{c(),clearTimeout(d),delete this.clearConnectTimeout},this.clearWaitForConnectedPromise=()=>{this._waitForPCConnectedPromise=null,e(new si({code:Et.API_CALL_TIMEOUT,message:"connection timeout"}))},F.on(sA.LEAVE_SUCCESS,a,this),this.on(C_.CONNECTION_STATE_CHANGED,o,this)}),this._waitForPCConnectedPromise=this._waitForPCConnectedPromise.finally(()=>{this._waitForPCConnectedPromise=null,delete this.clearConnectTimeout})),this._waitForPCConnectedPromise}waitForReconnected(){return this.isReconnecting?new Promise((A,e)=>{this.once("spc-reconnected",A),this.once("error",e)}):Promise.resolve()}addDownlink(A){return KA(this,null,function*(){if(this._log.info("addDownlink(".concat(A.userId,") trying")),this.isReconnecting&&(yield this.waitForReconnected()),this._updateSDPPromise&&(yield this._updateSDPPromise),this.updateLocalAndRemoteSDPConfig(A),this.addDownlinkQueue.size===0)try{yield this.updateSDP(),this._log.info("addDownlink(".concat(A.userId,") done"))}catch(e){this._log.error("addDownlink(".concat(A.userId,") failed ").concat(e)),yield this.startReconnection()}})}updateLocalAndRemoteSDPConfig(A){let{ssrc:e,userId:o,tinyId:a,prevMids:c}=A;if(!this._peerConnection)return;this._log.info("updateLocalAndRemoteSDPConfig ".concat(o," ").concat(JSON.stringify(e))),this._parsedAnswer||(this._parsedAnswer=uc(this._peerConnection.remoteDescription.sdp));let d,C,y,S=this._parsedAnswer.media.filter(J=>{var gA;return(gA=J.ssrcs)==null?void 0:gA.find(CA=>{var MA;return(MA=CA.value)==null?void 0:MA.includes(a)})});if(S.length===3)d=S[0],C=S[1],y=S[2];else{let J,gA=this._peerConnection.getTransceivers().slice(4);if(c?.length===3&&c.every(MA=>{var $A;return(($A=gA.find(he=>Number(he.mid)===MA))==null?void 0:$A.direction)==="inactive"})?(J=c,this._log.info("reusing previous mids for ".concat(o,": ").concat(J.join(","))),gA.forEach(MA=>{J.includes(Number(MA.mid))&&(MA.direction=YA.TRANSCEIVER_DIRECTION_RECVONLY)})):J=gA.filter(MA=>MA.direction==="inactive").slice(0,3).map(MA=>(MA.direction=YA.TRANSCEIVER_DIRECTION_RECVONLY,Number(MA.mid))),J.length===3)d=this._parsedAnswer.media.find(MA=>Number(MA.mid)===Number(J[0])),C=this._parsedAnswer.media.find(MA=>Number(MA.mid)===Number(J[1])),y=this._parsedAnswer.media.find(MA=>Number(MA.mid)===Number(J[2]));else if(J.length===0){this._peerConnection.addTransceiver(YA.AUDIO,{direction:YA.TRANSCEIVER_DIRECTION_RECVONLY}),this._peerConnection.addTransceiver(YA.VIDEO,{direction:YA.TRANSCEIVER_DIRECTION_RECVONLY}),this._peerConnection.addTransceiver(YA.VIDEO,{direction:YA.TRANSCEIVER_DIRECTION_RECVONLY}),d=JSON.parse(JSON.stringify(this._parsedAnswer.media[0]));let MA=Pz({mid:1,serverAbility:this._serverAbility,clientAbility:this.clientAbility,parsedOffer:uc(this._peerConnection.localDescription.sdp),isDownlink:!0});C=JSON.parse(JSON.stringify(MA)),y=JSON.parse(JSON.stringify(MA)),d.mid=this._parsedAnswer.media.length,this._parsedAnswer.media.push(d),C.mid=this._parsedAnswer.media.length,this._parsedAnswer.media.push(C),y.mid=this._parsedAnswer.media.length,this._parsedAnswer.media.push(y)}}d.direction=YA.TRANSCEIVER_DIRECTION_SENDONLY;let b="".concat(a,"-").concat(e.audio);d.ssrcs=[{id:e.audio,attribute:"cname",value:"".concat(b)},{id:e.audio,attribute:"msid",value:"".concat(b,"-").concat(YA.MAIN," ").concat(b,"-audio")}],C.direction=YA.TRANSCEIVER_DIRECTION_SENDONLY,C.ssrcs=[{id:e.video,attribute:"cname",value:"".concat(b)},{id:e.video,attribute:"msid",value:"".concat(b,"-").concat(YA.MAIN," ").concat(b,"-bigvideo")},{id:e.videoRtx,attribute:"cname",value:"".concat(b)},{id:e.videoRtx,attribute:"msid",value:"".concat(b,"-").concat(YA.MAIN," ").concat(b,"-bigvideo")}],C.ssrcGroups=[{semantics:"FID",ssrcs:"".concat(e.video," ").concat(e.videoRtx)}],y.direction=YA.TRANSCEIVER_DIRECTION_SENDONLY;let V="".concat(b,"-aux");y.ssrcs=[{id:e.auxiliary,attribute:"cname",value:V},{id:e.auxiliary,attribute:"msid",value:"".concat(V," ").concat(b,"-aux").concat(YA.VIDEO)},{id:e.auxiliaryRtx,attribute:"cname",value:"".concat(V," ").concat(b,"-aux").concat(YA.VIDEO)},{id:e.auxiliaryRtx,attribute:"msid",value:"".concat(V," ").concat(b,"-aux").concat(YA.VIDEO)}],y.ssrcGroups=[{semantics:"FID",ssrcs:"".concat(e.auxiliary," ").concat(e.auxiliaryRtx)}],this._parsedAnswer.groups&&(this._parsedAnswer.groups[0].mids=this._parsedAnswer.media.map(J=>J.mid).join(" ")),this._downlinkMIDMap.set(o,[d.mid,C.mid,y.mid]),this._downlinkMIDUserIDMap.set(d.mid,o),this._downlinkMIDUserIDMap.set(C.mid,o),this._downlinkMIDUserIDMap.set(y.mid,o)}removeDownlink(A){return KA(this,null,function*(){if(!this._downlinkMIDMap.has(A)||!this._peerConnection)return;this._log.info("removeDownlink(".concat(A,") trying")),this.isReconnecting&&(yield this.waitForReconnected()),this._updateSDPPromise&&(yield this._updateSDPPromise);let e=this._downlinkMIDMap.get(A),o=!1;return this._peerConnection.getTransceivers().forEach(a=>{e!=null&&e.includes(Number(a.mid))&&(o=!0,a.direction="inactive")}),this._parsedAnswer||(this._parsedAnswer=uc(this._peerConnection.remoteDescription.sdp)),this._parsedAnswer.media.forEach(a=>{e!=null&&e.includes(Number(a.mid))&&(o=!0,a.direction="inactive",a.ssrcs=[],a.ssrcGroups=[])}),this.removeDownlinkQueue.size===0&&o&&(yield this.updateSDP()),this._downlinkMIDMap.delete(A),e?.forEach(a=>this._downlinkMIDUserIDMap.delete(a)),this._log.info("removeDownlink(".concat(A,") done")),e})}setBandwidth(A){return KA(this,null,function*(){if(!this._peerConnection)return;let{audio:e,bigVideo:o,smallVideo:a,auxVideo:c}=A;try{if(kk()){let d=this._peerConnection.getSenders().slice(0,4);for(let y=0;y5e3?5e3:e),!0)}setSenderMaxBitrate(A,e){let o=A.getParameters();if((!o.encodings||o.encodings.length===0)&&(o.encodings=[{}]),e==="unlimited")delete o.encodings[0].maxBitrate;else{if(o.encodings[0].maxBitrate===1e3*e)return;o.encodings[0].maxBitrate=1e3*e}return A.setParameters(o)}setBandwidthBySDP(A){let{audio:e,bigVideo:o,smallVideo:a,auxVideo:c}=A;if(!this._peerConnection||!this._peerConnection.localDescription)return;let d=uc(this._peerConnection.localDescription.sdp);this._parsedAnswer||(this._parsedAnswer=uc(this._peerConnection.remoteDescription.sdp));let C=er?"TIAS":"AS";e&&(d.media[0].bandwidth=[{type:C,limit:er?1e3*e:e}],this._parsedAnswer.media[0].bandwidth=[{type:C,limit:er?1e3*e:e}]),o&&(d.media[1].bandwidth=[{type:C,limit:er?1e3*o:o}],this._parsedAnswer.media[1].bandwidth=[{type:C,limit:er?1e3*o:o}]),a&&(d.media[2].bandwidth=[{type:C,limit:er?1e3*a:a}],this._parsedAnswer.media[2].bandwidth=[{type:C,limit:er?1e3*a:a}]),c&&(d.media[3].bandwidth=[{type:C,limit:er?1e3*c:c}],this._parsedAnswer.media[3].bandwidth=[{type:C,limit:er?1e3*c:c}]);let y={type:"offer",sdp:My(d)};return this.updateSDP({localDescription:y})}setScaleResolutionDownBy(A,e,o){let a=A.getParameters();(!a.encodings||a.encodings.length===0)&&(a.encodings=[{}]);let c=a.encodings[0].scaleResolutionDownBy;if(Je(c)?e===1:e===c)return;let d="setScaleResolutionDownBy ".concat(o," ").concat(e);return c&&(d+=" prevScale: ".concat(c)),this._log.warn(d),a.encodings[0].scaleResolutionDownBy=e,A.setParameters(a)}setDegradationPreference(A,e,o){if(gE&&$E<83||eg&&uk(bI,"12.1")||er&&N0<138)return;let a=A.getParameters(),c="balanced";if(e==="motion"?c="maintain-framerate":e==="detail"&&(c="maintain-resolution"),a.degradationPreference===c)return;let d="setDegradationPreference ".concat(o," ").concat(c);return this._log.info(d),a.degradationPreference=c,A.setParameters(a).catch(C=>this._log.warn("".concat(d," failed: ").concat(C)))}updateSDP(){let{localDescription:A}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!this._parsedAnswer)return Promise.resolve();let e=My(this._parsedAnswer);return this._updateSDPPromise=new Promise((o,a)=>KA(this,null,function*(){var c,d;try{!A&&this._peerConnection&&(this._log.info("creating offer"),A=yield this._peerConnection.createOffer()),A&&(yield this.setOffer(A)),yield this.setAnswer({type:"answer",sdp:e}),this._updateSDPPromise=null,o()}catch(C){this._log.error(C),!this._isSDPLogged&&this._peerConnection&&(this._log.warn("current offer: ".concat(this.filterSDPDirection((c=this._peerConnection.localDescription)==null?void 0:c.sdp),` next offer: `).concat(this.filterSDPDirection(A?.sdp))),this._log.warn("current answer: ".concat(this.filterSDPDirection((d=this._peerConnection.remoteDescription)==null?void 0:d.sdp),` -next answer: `).concat(this.filterSDPDirection(e))),this._log.warn("offer: ".concat(A?.sdp)),this._log.warn("answer: ".concat(e)),this._log.warn("transceivers: ".concat(JSON.stringify(this._peerConnection.getTransceivers().map(y=>{let{mid:S,currentDirection:b,direction:V,stopped:J}=y;return{mid:S,currentDirection:b,direction:V,stopped:J}})))),this._log.warn("parsedAnswer: ".concat(JSON.stringify(this._parsedAnswer))),this._isSDPLogged=!0),this._updateSDPPromise=null,a(C)}})),this._updateSDPPromise}setTransceiverDirection(A,e){return KA(this,null,function*(){if(!er||!this._peerConnection||!this._parsedAnswer)return;this._log.info("setting transceiver ".concat(e.join(",")," direction to ").concat(A));let o=this._peerConnection.getTransceivers();e.forEach(a=>{o[a].direction!==A&&(o[a].direction=A)});for(let a of e){let c=this._parsedAnswer.media[a].direction;A===zn.INACTIVE&&c===zn.RECVONLY&&(this._parsedAnswer.media[a].direction=A),A===zn.SENDONLY&&c===zn.INACTIVE&&(this._parsedAnswer.media[a].direction=zn.RECVONLY)}yield this.updateSDP()})}filterSDPDirection(){return uc(arguments.length>0&&arguments[0]!==void 0?arguments[0]:"").media.map(A=>A.direction)}setOffer(A){this._log.info("setting offer");let e=UiA(A.sdp,this.clientAbility,this._serverAbility);return this._log.debug(e),this._peerConnection.setLocalDescription({type:"offer",sdp:e})}setAnswer(A){return this._log.info("setting answer"),this._log.debug(A.sdp),this._peerConnection.setRemoteDescription(A)}switchVideoEncoder(A){return KA(this,null,function*(){if(this._parsedAnswer||(this._parsedAnswer=uc(this._peerConnection.remoteDescription.sdp)),!this._peerConnection||!this._parsedAnswer||!this._serverAbility)return;let e=!1;this._parsedAnswer.media.forEach(o=>{var a;if(o.type===YA.VIDEO){let c=this._serverAbility.video.codecs.find(d=>d.codec.toLowerCase()===A);c&&((a=o.payloads)==null||!a.includes(String(c.payload)))&&(o.fmtp=[],o.payloads="",o.rtp=[],o.rtcpFb=[],s_(o,c),e=!0)}}),e&&(this._log.warn("switch video encoder to ".concat(A)),yield this.updateSDP())})}getScheduleProfileLevelId(A){var e;try{let o=(e=this._room.scheduleResult.config)==null?void 0:e.profileLevelId,a="";if(A===2?a=Tb(o?.big)?o.big:"":A===3?a=Tb(o?.small)?o.small:"":A===7&&(a=Tb(o?.aux)?o.aux:""),!a)return"";let c=oz(a,this.clientAbility);return c?this._log.info("use schedule profile level id: streamType=".concat(A,", raw=").concat(a,", resolved=").concat(c)):this._log.warn("schedule profile level id not resolved: streamType=".concat(A,", raw=").concat(a)),c}catch(o){return this._log.warn("getScheduleProfileLevelId error: ".concat(o)),""}}getProfileLevelIdConfig(){try{let A=new URLSearchParams(location.search).get("profileLevelId")||"",e=oz(A,this.clientAbility);if(e)return this._log.info("use url profile level id: raw=".concat(A,", resolved=").concat(e)),{big:e,small:e,aux:e};let o=this.getScheduleProfileLevelId(2),a=this.getScheduleProfileLevelId(3),c=this.getScheduleProfileLevelId(7);if(!o&&!a&&!c)return;let d={};return o&&(d.big=o),a&&(d.small=a),c&&(d.aux=c),d}catch(A){return void this._log.warn("getProfileLevelIdConfig error: ".concat(A))}}setH264ProfileLevelId(A,e){return KA(this,null,function*(){if(!this._peerConnection||!this._serverAbility)return;this._updateSDPPromise&&(yield this._updateSDPPromise),this._log.info("set H264 profile-level-id to ".concat(e?"high":"default"," for ").concat(A)),this._parsedAnswer||(this._parsedAnswer=uc(this._peerConnection.remoteDescription.sdp));let o=A==="main"?1:3,a=this._parsedAnswer.media[o];if(!a||a.type!==YA.VIDEO)return;let c=a.rtp||[],d=a.fmtp||[],C=c.find(gA=>{var CA;return((CA=gA.codec)==null?void 0:CA.toLowerCase())==="h264"});if(!C)return;let y=d.find(gA=>String(gA.payload)===String(C.payload));if(!y)return;let S=JK(y.config);if(!S)return;let b=HK(S)==="high";if(e&&b||!e&&!b)return;let V=this._serverAbility.video.codecs.map(gA=>JK(gA.fmtp)).filter(Boolean).find(gA=>{let CA=HK(gA);return e?CA==="high":CA!=="high"});if(!V)return;let J=y.config;y.config=tz(y.config,V),y.config!==J&&(yield this.updateSDP(),this._log.info("set H264 profile-level-id to ".concat(e?"high":"default"," success")))})}useHWEncoder(){let A=!(arguments.length>0&&arguments[0]!==void 0)||arguments[0],e=arguments.length>1?arguments[1]:void 0;return KA(this,null,function*(){if(!this._peerConnection||!this._parsedAnswer||!this._serverAbility)return;let o=!1,a=[];Ye(e)?a=this._parsedAnswer.media.slice(1,4):e===2?a.push(this._parsedAnswer.media[1]):e===3?a.push(this._parsedAnswer.media[2]):e===7&&a.push(this._parsedAnswer.media[3]),a.forEach(c=>{var d;if(c.type===YA.VIDEO){let C;A&&this.is42001fSupported?C=this.clientAbility.video.codecs.find(y=>y.fmtp.includes("42001f")):A||(C=this._serverAbility.video.codecs.find(y=>y.codec.toLowerCase()===(this._serverAbility.useVp8?"vp8":"h264"))),C&&((d=c.payloads)==null||!d.includes(String(C.payload)))&&(c.fmtp=[],c.payloads="",c.rtp=[],c.rtcpFb=[],s_(c,C),o=!0)}}),o&&(this._log.warn("use ".concat(A?"hw":"sw"," encoder")),yield this.updateSDP())})}sendDataChannelMessage(A){var e;(e=this._datachannel)==null||e.send(A)}reset(){var A;this._peerConnection&&(this._peerConnection.close(),this._peerConnection.removeEventListener("track",this._peerConnection._onaddstreampoly,this),this._peerConnection._onaddstreampoly=null,this._peerConnection=null),this._datachannel=null,(A=this.clearWaitForConnectedPromise)==null||A.call(this),this._parsedAnswer=null,this.originOffer=null}close(){this._log.info("close pc"),this.isDestroyed=!0,this.removeRTCListener(),this.insertableStreamsAbortMap.forEach(A=>vp(A.abort)&&A.abort("destroy")),this.insertableStreamsAbortMap.clear(),this.reset(),this.emitConnectionStateChangedEvent("DISCONNECTED"),this._downlinkMIDMap.clear(),this.stopReconnection(),this.removeAllListeners(),this._room.healthDetector.off("1",this.onBadHealth,this)}getReceiversByUserId(A){if(!this._peerConnection)return[];let e=this._peerConnection.getReceivers();return(this._downlinkMIDMap.get(A)||[]).map(o=>e[o])}get isUsingRelay(){return this._room.getIceTransportPolicy()==="relay"}detectTCPAndUDP(A){let{uplinkRTT:e,downlinkRTT:o}=A;var a;if(this.currentState!=="CONNECTED"||this._isRelayTried&&!this._room.forceRelay||this._room.getIceServers().length===0)return;let c=this._signalChannel.rtt,d=Math.max(e,o),{rttRatioThreshold:C,rttThreshold:y}=((a=this._room.scheduleResult.config)==null?void 0:a.useTurnTcpInfo)||{};if(!(C&&y&&c&&d))return;let S=Math.floor(d/c),b=(this._isRelayTried||S>C)&&d>y;b?++this._rttOverCount<5||(this._log.warn("detectTCPAndUDP ws-rtt: ".concat(c," upRTT: ").concat(e," downRTT: ").concat(o," ratio: ").concat(S," over-count: ").concat(this._rttOverCount," isOver: ").concat(b," isRelayTried: ").concat(this._isRelayTried," force-relay: ").concat(this._room.forceRelay)),this.isUsingRelay||this._isRelayTried?this._room.forceRelay&&this.switchRelay(!1):(this._isRelayTried=!0,this._rttOverCount=0,this.switchRelay(!0))):this._rttOverCount=0}switchRelay(A){let e=arguments.length>1&&arguments[1]!==void 0&&arguments[1];return KA(this,null,function*(){if(this.isUsingRelay===A)return;let o=A?"relay":"udp",a=A?521709:521710;try{this._room.forceRelay=A,this._log.warn("switchRelay ".concat(o));let c=Date.now();yield this.doSwitchRelay(o),this._log.warn("switchRelay ".concat(o," success")),Ai.addSuccessEvent({key:a,cost:Date.now()-c})}catch(c){this._log.warn("switchRelay ".concat(o," failed"),c),Ai.addFailedEvent({key:a,error:c}),e?this._room.reJoin():yield this.switchRelay(!A,!0)}})}doSwitchRelay(A){return new Promise((e,o)=>{let a=setTimeout(()=>{this.stopReconnection(),o(new Error("switch ".concat(A," timeout")))},1e4);this.startReconnection().then(e,o).finally(()=>clearTimeout(a))})}removeRTCListener(){this._peerConnection&&(this._peerConnection.oniceconnectionstatechange=null,this._peerConnection.onconnectionstatechange=null,this._peerConnection.onsignalingstatechange=null,this._peerConnection.ontrack=null),this.dtlsTransport&&(this.dtlsTransport.onstatechange=null)}requestRemoteFallbackToH264(){this._log.warn("H265 decode failed, remote need to fallback h264"),this._h265DecodeFailed=!0,this._signalChannel.sendWaitForResponse({command:xK,data:{videoDecCodec:"h264"},responseCommand:ls.UPDATE_CONSTRAINT_CONFIG_RES}).then(A=>{A.data.code!==0&&this._log.warn(A.data.message)})}};di([p4("reconnect")],yy.prototype,"startReconnection"),di([dy(A=>A.userId)],yy.prototype,"addDownlink"),di([dy(A=>A)],yy.prototype,"removeDownlink"),di([Gk(!0)],yy.prototype,"updateSDP"),di([Cy(521712,!1),G2(10,0)],yy.prototype,"setOffer"),di([Cy(521713,!1),G2(10,0)],yy.prototype,"setAnswer"),di([Hr((A,e)=>function(){for(var o=arguments.length,a=new Array(o),c=0;cclearTimeout(d)),this._checkPendingPromiseSet.clear()),A.apply(this,a)})],yy.prototype,"close");var xiA=class{constructor(A){Y(this,"tag"),Y(this,"len"),Y(this,"data");let e=new DataView(A);this.tag=e.getUint16(),this.len=e.getUint16(2),this.data=new Uint8Array(A).slice(4,4+this.len).buffer}},YiA=class{constructor(A){Y(this,"tinyId"),Y(this,"data");let e=new DataView(A),o=0,a=[];for(;o{S.tag===1?this.tinyId=new TextDecoder().decode(S.data):S.tag===2&&c.push(S.data)});let d=c.reduce((S,b)=>S+b.byteLength,0),C=new Uint8Array(d),y=0;c.forEach(S=>{C.set(new Uint8Array(S),y),y+=S.byteLength}),this.data=C.buffer}},nz=new Set;function $h(){let A=Math.floor(4294967296*Math.random());return nz.has(A)?$h():(nz.add(A),A)}var ViA=gc(Hl()),rz=class extends ViA.default{constructor(A){super(),Y(this,"userId"),Y(this,"tinyId"),Y(this,"_sdpSemantics"),Y(this,"_isUplink"),Y(this,"_room"),Y(this,"_log"),Y(this,"_currentState","DISCONNECTED"),Y(this,"_prevTime",-1),Y(this,"_blackSmallVideoDetectionId"),Y(this,"isDestroyed",!1),this.userId=A.userId,this.tinyId=A.tinyId,this._room=A.room,this._sdpSemantics=A.room.sdpSemantics,this._isUplink=A.isUplink,this._log=QA.createLogger({parent:this._room.getLogger(),id:"n",userId:this._room.userId,remoteUserId:this._isUplink?void 0:this.userId,sdkAppId:this._room.sdkAppId,isLocal:this._isUplink})}get _peerConnection(){var A;return((A=this.singlePC)==null?void 0:A.getPeerConnection())||null}get singlePC(){return this._room.singlePC}get _signalChannel(){return this._room.signalChannel}close(A){this._log.info("close connection"),this.emit("closed",A)}destroy(){this.isDestroyed=!0}emitConnectionStateChangedEvent(A){return A!==this._currentState&&(U.emit(sA.PEER_CONNECTION_STATE_CHANGED,{room:this._room,prevState:this._currentState,state:A,remoteUserId:this._isUplink?void 0:this.userId}),this.emit("connection-state-changed",{prevState:this._currentState,state:A}),this._currentState=A,!0)}getPeerConnection(){return this._peerConnection}getRoom(){return this._room}getUserId(){return this.userId}getTinyId(){return this.tinyId}getCurrentState(){return this._currentState}get isH264(){var A,e;return!((e=(A=this._peerConnection)==null?void 0:A.remoteDescription)==null||!e.sdp.includes("H264"))}};function az(A){let{when:e,onSkip:o}=A;return Hr((a,c)=>function(){for(var d=arguments.length,C=new Array(d),y=0;y{let{mid:S,currentDirection:b,direction:V,stopped:J}=y;return{mid:S,currentDirection:b,direction:V,stopped:J}})))),this._log.warn("parsedAnswer: ".concat(JSON.stringify(this._parsedAnswer))),this._isSDPLogged=!0),this._updateSDPPromise=null,a(C)}})),this._updateSDPPromise}setTransceiverDirection(A,e){return KA(this,null,function*(){if(!er||!this._peerConnection||!this._parsedAnswer)return;this._log.info("setting transceiver ".concat(e.join(",")," direction to ").concat(A));let o=this._peerConnection.getTransceivers();e.forEach(a=>{o[a].direction!==A&&(o[a].direction=A)});for(let a of e){let c=this._parsedAnswer.media[a].direction;A===zn.INACTIVE&&c===zn.RECVONLY&&(this._parsedAnswer.media[a].direction=A),A===zn.SENDONLY&&c===zn.INACTIVE&&(this._parsedAnswer.media[a].direction=zn.RECVONLY)}yield this.updateSDP()})}filterSDPDirection(){return uc(arguments.length>0&&arguments[0]!==void 0?arguments[0]:"").media.map(A=>A.direction)}setOffer(A){this._log.info("setting offer");let e=yoA(A.sdp,this.clientAbility,this._serverAbility);return this._log.debug(e),this._peerConnection.setLocalDescription({type:"offer",sdp:e})}setAnswer(A){return this._log.info("setting answer"),this._log.debug(A.sdp),this._peerConnection.setRemoteDescription(A)}switchVideoEncoder(A){return KA(this,null,function*(){if(this._parsedAnswer||(this._parsedAnswer=uc(this._peerConnection.remoteDescription.sdp)),!this._peerConnection||!this._parsedAnswer||!this._serverAbility)return;let e=!1;this._parsedAnswer.media.forEach(o=>{var a;if(o.type===YA.VIDEO){let c=this._serverAbility.video.codecs.find(d=>d.codec.toLowerCase()===A);c&&((a=o.payloads)==null||!a.includes(String(c.payload)))&&(o.fmtp=[],o.payloads="",o.rtp=[],o.rtcpFb=[],d_(o,c),e=!0)}}),e&&(this._log.warn("switch video encoder to ".concat(A)),yield this.updateSDP())})}getScheduleProfileLevelId(A){var e;try{let o=(e=this._room.scheduleResult.config)==null?void 0:e.profileLevelId,a="";if(A===2?a=Kb(o?.big)?o.big:"":A===3?a=Kb(o?.small)?o.small:"":A===7&&(a=Kb(o?.aux)?o.aux:""),!a)return"";let c=xz(a,this.clientAbility);return c?this._log.info("use schedule profile level id: streamType=".concat(A,", raw=").concat(a,", resolved=").concat(c)):this._log.warn("schedule profile level id not resolved: streamType=".concat(A,", raw=").concat(a)),c}catch(o){return this._log.warn("getScheduleProfileLevelId error: ".concat(o)),""}}getProfileLevelIdConfig(){try{let A=new URLSearchParams(location.search).get("profileLevelId")||"",e=xz(A,this.clientAbility);if(e)return this._log.info("use url profile level id: raw=".concat(A,", resolved=").concat(e)),{big:e,small:e,aux:e};let o=this.getScheduleProfileLevelId(2),a=this.getScheduleProfileLevelId(3),c=this.getScheduleProfileLevelId(7);if(!o&&!a&&!c)return;let d={};return o&&(d.big=o),a&&(d.small=a),c&&(d.aux=c),d}catch(A){return void this._log.warn("getProfileLevelIdConfig error: ".concat(A))}}setH264ProfileLevelId(A,e){return KA(this,null,function*(){if(!this._peerConnection||!this._serverAbility)return;this._updateSDPPromise&&(yield this._updateSDPPromise),this._log.info("set H264 profile-level-id to ".concat(e?"high":"default"," for ").concat(A)),this._parsedAnswer||(this._parsedAnswer=uc(this._peerConnection.remoteDescription.sdp));let o=A==="main"?1:3,a=this._parsedAnswer.media[o];if(!a||a.type!==YA.VIDEO)return;let c=a.rtp||[],d=a.fmtp||[],C=c.find(gA=>{var CA;return((CA=gA.codec)==null?void 0:CA.toLowerCase())==="h264"});if(!C)return;let y=d.find(gA=>String(gA.payload)===String(C.payload));if(!y)return;let S=Qj(y.config);if(!S)return;let b=pj(S)==="high";if(e&&b||!e&&!b)return;let V=this._serverAbility.video.codecs.map(gA=>Qj(gA.fmtp)).filter(Boolean).find(gA=>{let CA=pj(gA);return e?CA==="high":CA!=="high"});if(!V)return;let J=y.config;y.config=Oz(y.config,V),y.config!==J&&(yield this.updateSDP(),this._log.info("set H264 profile-level-id to ".concat(e?"high":"default"," success")))})}useHWEncoder(){let A=!(arguments.length>0&&arguments[0]!==void 0)||arguments[0],e=arguments.length>1?arguments[1]:void 0;return KA(this,null,function*(){if(!this._peerConnection||!this._parsedAnswer||!this._serverAbility)return;let o=!1,a=[];Je(e)?a=this._parsedAnswer.media.slice(1,4):e===2?a.push(this._parsedAnswer.media[1]):e===3?a.push(this._parsedAnswer.media[2]):e===7&&a.push(this._parsedAnswer.media[3]),a.forEach(c=>{var d;if(c.type===YA.VIDEO){let C;A&&this.is42001fSupported?C=this.clientAbility.video.codecs.find(y=>y.fmtp.includes("42001f")):A||(C=this._serverAbility.video.codecs.find(y=>y.codec.toLowerCase()===(this._serverAbility.useVp8?"vp8":"h264"))),C&&((d=c.payloads)==null||!d.includes(String(C.payload)))&&(c.fmtp=[],c.payloads="",c.rtp=[],c.rtcpFb=[],d_(c,C),o=!0)}}),o&&(this._log.warn("use ".concat(A?"hw":"sw"," encoder")),yield this.updateSDP())})}sendDataChannelMessage(A){var e;(e=this._datachannel)==null||e.send(A)}reset(){var A;this._peerConnection&&(this._peerConnection.close(),this._peerConnection.removeEventListener("track",this._peerConnection._onaddstreampoly,this),this._peerConnection._onaddstreampoly=null,this._peerConnection=null),this._datachannel=null,(A=this.clearWaitForConnectedPromise)==null||A.call(this),this._parsedAnswer=null,this.originOffer=null}close(){this._log.info("close pc"),this.isDestroyed=!0,this.removeRTCListener(),this.insertableStreamsAbortMap.forEach(A=>Tp(A.abort)&&A.abort("destroy")),this.insertableStreamsAbortMap.clear(),this.reset(),this.emitConnectionStateChangedEvent("DISCONNECTED"),this._downlinkMIDMap.clear(),this.stopReconnection(),this.removeAllListeners(),this._room.healthDetector.off("1",this.onBadHealth,this)}getReceiversByUserId(A){if(!this._peerConnection)return[];let e=this._peerConnection.getReceivers();return(this._downlinkMIDMap.get(A)||[]).map(o=>e[o])}get isUsingRelay(){return this._room.getIceTransportPolicy()==="relay"}detectTCPAndUDP(A){let{uplinkRTT:e,downlinkRTT:o}=A;var a;if(this.currentState!=="CONNECTED"||this._isRelayTried&&!this._room.forceRelay||this._room.getIceServers().length===0)return;let c=this._signalChannel.rtt,d=Math.max(e,o),{rttRatioThreshold:C,rttThreshold:y}=((a=this._room.scheduleResult.config)==null?void 0:a.useTurnTcpInfo)||{};if(!(C&&y&&c&&d))return;let S=Math.floor(d/c),b=(this._isRelayTried||S>C)&&d>y;b?++this._rttOverCount<5||(this._log.warn("detectTCPAndUDP ws-rtt: ".concat(c," upRTT: ").concat(e," downRTT: ").concat(o," ratio: ").concat(S," over-count: ").concat(this._rttOverCount," isOver: ").concat(b," isRelayTried: ").concat(this._isRelayTried," force-relay: ").concat(this._room.forceRelay)),this.isUsingRelay||this._isRelayTried?this._room.forceRelay&&this.switchRelay(!1):(this._isRelayTried=!0,this._rttOverCount=0,this.switchRelay(!0))):this._rttOverCount=0}switchRelay(A){let e=arguments.length>1&&arguments[1]!==void 0&&arguments[1];return KA(this,null,function*(){if(this.isUsingRelay===A)return;let o=A?"relay":"udp",a=A?521709:521710;try{this._room.forceRelay=A,this._log.warn("switchRelay ".concat(o));let c=Date.now();yield this.doSwitchRelay(o),this._log.warn("switchRelay ".concat(o," success")),Ai.addSuccessEvent({key:a,cost:Date.now()-c})}catch(c){this._log.warn("switchRelay ".concat(o," failed"),c),Ai.addFailedEvent({key:a,error:c}),e?this._room.reJoin():yield this.switchRelay(!A,!0)}})}doSwitchRelay(A){return new Promise((e,o)=>{let a=setTimeout(()=>{this.stopReconnection(),o(new Error("switch ".concat(A," timeout")))},1e4);this.startReconnection().then(e,o).finally(()=>clearTimeout(a))})}removeRTCListener(){this._peerConnection&&(this._peerConnection.oniceconnectionstatechange=null,this._peerConnection.onconnectionstatechange=null,this._peerConnection.onsignalingstatechange=null,this._peerConnection.ontrack=null),this.dtlsTransport&&(this.dtlsTransport.onstatechange=null)}requestRemoteFallbackToH264(){this._log.warn("H265 decode failed, remote need to fallback h264"),this._h265DecodeFailed=!0,this._signalChannel.sendWaitForResponse({command:Cj,data:{videoDecCodec:"h264"},responseCommand:ls.UPDATE_CONSTRAINT_CONFIG_RES}).then(A=>{A.data.code!==0&&this._log.warn(A.data.message)})}};di([i5("reconnect")],vy.prototype,"startReconnection"),di([Qy(A=>A.userId)],vy.prototype,"addDownlink"),di([Qy(A=>A)],vy.prototype,"removeDownlink"),di([Wk(!0)],vy.prototype,"updateSDP"),di([py(521712,!1),i1(10,0)],vy.prototype,"setOffer"),di([py(521713,!1),i1(10,0)],vy.prototype,"setAnswer"),di([jr((A,e)=>function(){for(var o=arguments.length,a=new Array(o),c=0;cclearTimeout(d)),this._checkPendingPromiseSet.clear()),A.apply(this,a)})],vy.prototype,"close");var voA=class{constructor(A){Y(this,"tag"),Y(this,"len"),Y(this,"data");let e=new DataView(A);this.tag=e.getUint16(),this.len=e.getUint16(2),this.data=new Uint8Array(A).slice(4,4+this.len).buffer}},RoA=class{constructor(A){Y(this,"tinyId"),Y(this,"data");let e=new DataView(A),o=0,a=[];for(;o{S.tag===1?this.tinyId=new TextDecoder().decode(S.data):S.tag===2&&c.push(S.data)});let d=c.reduce((S,b)=>S+b.byteLength,0),C=new Uint8Array(d),y=0;c.forEach(S=>{C.set(new Uint8Array(S),y),y+=S.byteLength}),this.data=C.buffer}},Vz=new Set;function eB(){let A=Math.floor(4294967296*Math.random());return Vz.has(A)?eB():(Vz.add(A),A)}var woA=gc(ql()),Jz=class extends woA.default{constructor(A){super(),Y(this,"userId"),Y(this,"tinyId"),Y(this,"_sdpSemantics"),Y(this,"_isUplink"),Y(this,"_room"),Y(this,"_log"),Y(this,"_currentState","DISCONNECTED"),Y(this,"_prevTime",-1),Y(this,"_blackSmallVideoDetectionId"),Y(this,"isDestroyed",!1),this.userId=A.userId,this.tinyId=A.tinyId,this._room=A.room,this._sdpSemantics=A.room.sdpSemantics,this._isUplink=A.isUplink,this._log=QA.createLogger({parent:this._room.getLogger(),id:"n",userId:this._room.userId,remoteUserId:this._isUplink?void 0:this.userId,sdkAppId:this._room.sdkAppId,isLocal:this._isUplink})}get _peerConnection(){var A;return((A=this.singlePC)==null?void 0:A.getPeerConnection())||null}get singlePC(){return this._room.singlePC}get _signalChannel(){return this._room.signalChannel}close(A){this._log.info("close connection"),this.emit("closed",A)}destroy(){this.isDestroyed=!0}emitConnectionStateChangedEvent(A){return A!==this._currentState&&(F.emit(sA.PEER_CONNECTION_STATE_CHANGED,{room:this._room,prevState:this._currentState,state:A,remoteUserId:this._isUplink?void 0:this.userId}),this.emit("connection-state-changed",{prevState:this._currentState,state:A}),this._currentState=A,!0)}getPeerConnection(){return this._peerConnection}getRoom(){return this._room}getUserId(){return this.userId}getTinyId(){return this.tinyId}getCurrentState(){return this._currentState}get isH264(){var A,e;return!((e=(A=this._peerConnection)==null?void 0:A.remoteDescription)==null||!e.sdp.includes("H264"))}};function Hz(A){let{when:e,onSkip:o}=A;return jr((a,c)=>function(){for(var d=arguments.length,C=new Array(d),y=0;ypostMessage({type:"log",message:"[worker] "+t.join(" ")});function startDetection(e,t,a){if(!tracks.has(e)){const c={reader:a.getReader(),blackCount:0,timeoutId:null,intervalId:null};tracks.set(e,c),c.timeoutId=setTimeout(()=>stopDetection(e,"timeout"),t),c.intervalId=setInterval(async()=>{try{await isFrameBlack(e)?(c.blackCount++,postMessage({type:"blackCount",trackId:e,count:c.blackCount}),3<=c.blackCount&&(postMessage({type:"black",trackId:e}),stopDetection(e,"black"))):c.blackCount=0}catch(t){log("check black video error:",t.message),stopDetection(e,"error")}},1e3)}}function stopDetection(t,e){var a=tracks.get(t);a&&(a.timeoutId&&clearTimeout(a.timeoutId),a.intervalId&&clearInterval(a.intervalId),a.reader&&a.reader.cancel(),tracks.delete(t),postMessage({type:e,trackId:t}))}async function isFrameBlack(t){t=tracks.get(t);if(!t)return!1;var t=t.reader,{done:t,value:e}=await t.read();if(!e||t)return!1;canvas||(canvas=new OffscreenCanvas(e.codedWidth,e.codedHeight),ctx=canvas.getContext("2d",{willReadFrequently:!0})),canvas.width===e.codedWidth&&canvas.height===e.codedHeight||(canvas.width=e.codedWidth,canvas.height=e.codedHeight,ctx=canvas.getContext("2d",{willReadFrequently:!0})),ctx.drawImage(e,0,0,canvas.width,canvas.height);t=getFrameBlackRatio(ctx.getImageData(0,0,canvas.width,canvas.height));return e.close(),1===t}function getFrameBlackRatio(t){var e=t.data;let a=0;for(let t=0;t<100;t++){var c=4*Math.floor(Math.random()*(e.length/4)),[c,r,n,o]=[e[c],e[1+c],e[2+c],e[3+c]];0{var{type:t,trackId:e,timeout:a,readable:c}=t.data;"addTrack"===t&&startDetection(e,a,c),"removeTrack"===t&&stopDetection(e)}; - `],{type:"application/javascript"}),e=URL.createObjectURL(A);this.worker=new Worker(e),URL.revokeObjectURL(e),this.worker.onerror=o=>this._log.warn("worker error:",o.message,o.filename||"unknown",o.lineno||"unknown"),this.worker.onmessage=o=>{var a;let{type:c,trackId:d,message:C,count:y}=o.data;if(c==="black")(a=this.callbacks.get(d))==null||a();else if(c==="log")this._log.warn(C);else if(c==="blackCount"){let S=this.userIdMap.get(d);this._log.warn("".concat(S||d," black count: ").concat(y))}}}return this.worker}start(A){let{track:e,isUplink:o,room:a,userId:c,onBlack:d}=A;if(this._log.debug("start detect black video",e.id),!CM()||!d||!e||typeof Worker>"u")return void this._log.warn("black video detector not supported");let C=y=>{var S,b,V,J;let gA;if(o)gA=(b=(S=y.msg_up_stream_info)==null?void 0:S.msg_video_status)==null?void 0:b.filter(CA=>CA.uint32_video_stream_type===3)[0];else{let CA=(V=y.msg_down_stream_info)==null?void 0:V.filter(MA=>{var ee;return((ee=MA.msg_user_info)==null?void 0:ee.str_identifier)===c})[0];gA=(J=CA?.msg_video_status)==null?void 0:J.filter(MA=>MA.uint32_video_stream_type===3)[0]}if(gA){let CA=(gA.uint32_video_codec_bitrate||0)/1e3;if(this.sleep[e.id]&&this.sleep[e.id]>0)return void(this.sleep[e.id]-=1);CA>0&&CA<10&&(this.sleep[e.id]=30,this._log.info("track bitrate",CA,"start check"),this.checkOnce(e,3e4))}};return a.on("heartbeat-report",C),this.heartbeatListenerCleaner.set(e.id,()=>a.off("heartbeat-report",C)),this.callbacks.set(e.id,d),this.userIdMap.set(e.id,c),e.id}checkOnce(A,e){try{let o=this.getWorker();if(!o)throw new Error("Worker not available");let a=new MediaStreamTrackProcessor({track:A});o.postMessage({type:"addTrack",trackId:A.id,timeout:e,readable:a.readable},[a.readable])}catch(o){this._log.warn("check error:",o),this.stop(A.id)}}stop(A){if(A){this.worker&&this.worker.postMessage({type:"removeTrack",trackId:A}),this.callbacks.delete(A),delete this.sleep[A];let e=this.heartbeatListenerCleaner.get(A);e&&e(),this.heartbeatListenerCleaner.delete(A),this.userIdMap.delete(A)}}destroy(){this.callbacks.forEach((A,e)=>this.stop(e)),this.worker&&(this.worker.terminate(),this.worker=null)}},i1=class extends rz{constructor(A){super(Bo(pi({},A),{isUplink:!0})),Y(this,"localMainAudioTrack",null),Y(this,"localMainVideoTrack",null),Y(this,"localAuxAudioTrack",null),Y(this,"localAuxVideoTrack",null),Y(this,"_isPublishingAux",!1),Y(this,"_publishingLocalAudioTrack"),Y(this,"_publishingLocalVideoTrack"),Y(this,"_mediaSettings",{videoCodec:"",videoWidth:0,videoHeight:0,videoBps:0,videoFps:0,videoDecCodec:"",audioCodec:"opus",audioFs:0,audioChannel:0,audioBps:0,smallVideoWidth:0,smallVideoHeight:0,smallVideoFps:0,smallVideoBps:0,auxVideoWidth:0,auxVideoHeight:0,auxVideoFps:0,auxVideoBps:0}),Y(this,"_flag",0),Y(this,"_checkPublishStateTimeoutId",-1),this.initialize()}get videoCodec(){var A;return((A=this.singlePC)==null?void 0:A.videoCodec)||"h264"}get ssrc(){if(!this.singlePC)return{audio:0,video:0,videoRtx:0,small:0,smallRtx:0,auxiliary:0,auxiliaryRtx:0};let{audioSsrc:A,bigVideoSsrc:e,bigVideoRtxSsrc:o,smallVideoSsrc:a,smallVideoRtxSsrc:c,auxVideoSsrc:d,auxVideoRtxSsrc:C}=this.singlePC.uplinkSSRC;return{audio:A||0,video:e||0,videoRtx:o||0,small:a||0,smallRtx:c||0,auxiliary:d||0,auxiliaryRtx:C||0}}get flag(){return this._flag}set flag(A){this._flag!==A&&(this._flag=A,this.checkPublishState())}checkPublishState(){let A=arguments.length>0&&arguments[0]!==void 0&&arguments[0];try{if(!A&&this._checkPublishStateTimeoutId>0)return;let{serverPublishState:e}=this,{publishState:o}=this._room,a=Object.keys(o).filter(c=>{if(o[c]!==e[c]&&o[c])switch(c){case"audio":return!(!this.localMainAudioTrack||!this.localMainAudioTrack.isMediaTrackActive);case"bigVideo":case"smallVideo":return!(!this.localMainVideoTrack||!this.localMainVideoTrack.isMediaTrackActive);case"auxVideo":return!(!this.localAuxVideoTrack||!this.localAuxVideoTrack.isMediaTrackActive)}return!1});if(a.length>0){if(!A)return void(this._checkPublishStateTimeoutId=_r.run("timeout",()=>this.checkPublishState(!0),{delay:1e4,count:1}));Ai.addCount({key:521e3}),a.forEach(c=>{this._log.warn("".concat(c," publish failed during call ").concat(Up()," ").concat(oQ())),Ai.addEnum({key:521719,value:gz[c]})}),_r.clearTask(this._checkPublishStateTimeoutId),this._checkPublishStateTimeoutId=-1}}catch(e){this._log.warn("checkPublishState failed",e)}}get isMainStreamPublished(){return!(!this.localMainAudioTrack&&!this.localMainVideoTrack)}get isAuxStreamPublished(){return!(!this.localAuxVideoTrack&&!this.localAuxAudioTrack)}get serverPublishState(){return{audio:!!(this.flag&LS),bigVideo:!!(this.flag&bS),smallVideo:!!(this.flag&nb),auxVideo:!!(this.flag&kS)}}initialize(){this.installEvents()}close(A){var e;let o=((e=this._peerConnection)==null?void 0:e.getSenders())||[];for(let a of o)a.replaceTrack(null);super.close(A),this.uninstallEvents(),this.uninstallTrackMuteEvents(this.localMainAudioTrack,this.localMainVideoTrack,this.localAuxVideoTrack),this.emitConnectionStateChangedEvent("DISCONNECTED")}installEvents(){this.listeners("connection-state-changed").includes(this.handleConnectionStateChange)||this.on("connection-state-changed",this.handleConnectionStateChange,this),this.installSPCEvents()}installSPCEvents(){var A,e;(A=this.singlePC)!=null&&A.listeners("spc-reconnected").includes(this.onSinglePCReconnected)||(e=this.singlePC)==null||e.on("spc-reconnected",this.onSinglePCReconnected,this)}uninstallSPCEvents(){var A;(A=this.singlePC)==null||A.off("spc-reconnected",this.onSinglePCReconnected,this)}uninstallEvents(){this.off("connection-state-changed",this.handleConnectionStateChange,this),this.uninstallSPCEvents()}emitConnectionStateChangedEvent(A,e){var o,a,c;let d=this._currentState,C=super.emitConnectionStateChangedEvent(A);return C&&d!==A&&(e?e.emit("connection-state-changed",{prevState:d,state:A}):((o=this.localMainVideoTrack)==null||o.emit("connection-state-changed",{prevState:d,state:A}),(a=this.localAuxVideoTrack)==null||a.emit("connection-state-changed",{prevState:d,state:A}),(c=this._publishingLocalVideoTrack)==null||c.emit("connection-state-changed",{prevState:d,state:A}))),C}onVideoEncodeFailed(A){return KA(this,null,function*(){if(!A||!A.isMediaTrackActive)return;let{videoCodec:e,singlePC:o}=this;if(!o)return;let a={h265:{supported:o.isH264EncodeSupported,target:"h264",log:"h265 encoder not working"},h264:{supported:o.isVP8EncodeSupported,target:"vp8",log:"h264 encoder not working"},vp8:{supported:!1,target:"vp8",log:"vp8 encoder not working, no fallback available"}};if(e==="vp9"||e==="av1")return;let c=a[e];this._log.warn(c.log),c!=null&&c.supported&&(yield o.switchVideoEncoder(c.target))})}publish(A){return KA(this,arguments,function(e){var o=this;let{localAudioTrack:a,localVideoTrack:c,isAuxiliary:d}=e;return function*(){var C,y,S,b,V,J,gA;if(!o.singlePC)return;if(o.installEvents(),o.installTrackMuteEvents(a,c),c&&(c.retryEncodeFailed=o.onVideoEncodeFailed.bind(o),Ag&&(ey(TI,"26.2",!0)||ey(eQ,"26.2",!0)||$B&&ey(TI,"18.7",!0)))){o._log.warn("detectH264Supported for fallback 26.2 video encode issue");try{yield oe.detectH264SupportedByFakeStreaming(500)}catch{}}if(yield o.singlePC.waitForPeerConnectionConnected(),a&&(o._publishingLocalAudioTrack=a),c){if(!o.singlePC.isH264EncodeSupported&&!o.singlePC.isVP8EncodeSupported)throw new oi({code:lt.NOT_SUPPORTED_H264,message:Zo({key:So.NOT_SUPPORTED_H264ENCODE})});o.singlePC.isUsingH264&&!o.singlePC.isH264EncodeSupported&&o.singlePC.isVP8EncodeSupported&&(o._log.warn("h264 encoder not supported"),yield o.singlePC.switchVideoEncoder("vp8")),Ja&&aM()===115&&c.profile.width*c.profile.height<=230400&&(o._log.warn("fallback video to defaultBigVideoProfile: ".concat(JSON.stringify(GS))),c.setProfile(GS),yield c.applyProfile()),o._publishingLocalVideoTrack=c}let CA;if(o._isPublishingAux=d,c&&!d&&c.small&&(CA=o._room.videoManager.smallTrack),yield o._signalChannel.sendWaitForResponseWithRetry({command:x5,responseCommand:ls.SPC_PUBLISH_RESULT,data:Bo(pi({},o.singlePC.uplinkSSRC),{state:o._room.publishState,muteState:o._room.muteState}),retries:3}),c&&(yield o.checkHighProfile({streamType:c.streamType,newWidth:c.settings.width,newHeight:c.settings.height})),yield o.publishByTransceiver({localAudioTrack:a,localVideoTrack:c,smallTrack:CA,isAuxiliary:d}),o._publishingLocalAudioTrack=null,o._publishingLocalVideoTrack=null,o._isPublishingAux=!1,c){o[d?"localAuxVideoTrack":"localMainVideoTrack"]=c,yield o.singlePC.setDegradationPreference(o._peerConnection.getSenders()[d?3:1],c.contentHint,c.streamType);let{scaleResolutionDownBy:ee}=c;yield o.singlePC.setScaleResolutionDownBy(o._peerConnection.getSenders()[d?3:1],ee,c.streamType)}a&&(o[d?"localAuxAudioTrack":"localMainAudioTrack"]=a),yield o.singlePC.setBandwidth({audio:((C=o.localMainAudioTrack)==null?void 0:C.profile.bitrate)||((y=o.localAuxAudioTrack)==null?void 0:y.profile.bitrate),bigVideo:(S=o.localMainVideoTrack)==null?void 0:S.profile.bitrate,smallVideo:(V=(b=o.localMainVideoTrack)==null?void 0:b.small)==null?void 0:V.bitrate,auxVideo:(J=o.localAuxVideoTrack)==null?void 0:J.profile.bitrate}),o.sendMediaSettings();let MA=d?7:2;(o._room.preferHW||(gA=o._room.scheduleResult.config)!=null&&gA.preferHW)&&c&&c.profile.width*c.profile.height>=921600&&o.singlePC.useHWEncoder(!0,MA)}()})}publishByTransceiver(A){let{localAudioTrack:e,localVideoTrack:o,smallTrack:a,isAuxiliary:c}=A;if(!Hd())return;this._log.info("publish by transceiver");let d=o?.outMediaTrack,C=e?.outMediaTrack,y=this._peerConnection.getTransceivers(),S=[],b=[],V=(gA,CA,MA)=>{var ee;let Be=y[CA].sender.replaceTrack(MA);b.push(CA),(ee=this.singlePC)!=null&&ee.enableInsertableStreams&&Be.then(()=>this.createEncodedStreams(y[CA].sender,gA)),this.initSenderTransform(y[CA].sender,gA),S.push(Be)};C&&V(e.mediaType,0,C),d&&V(o.mediaType,c?3:1,d),o!=null&&o.small&&S.push(this.publishSmall(this._room.videoManager.smallMode,o));let J=this.singlePC.setTransceiverDirection(zn.SENDONLY,b);return S.push(J),Promise.all(S)}getTrackByMediaType(A){switch(A){case 1:return this.localMainAudioTrack||this._room.localMainAudioTrack;case 4:case 8:return this.localMainVideoTrack||this._room.localMainVideoTrack;case 2:return this.localAuxVideoTrack||this._room.localAuxVideoTrack;default:return null}}createEncodedStreams(A,e){var o,a;if(this.singlePC.insertableStreamsAbortMap.has(A))return;let c=A.createEncodedStreams(),d=new AbortController;(o=this.singlePC)==null||o.addAbortController(A,d),((a=this.getTrackByMediaType(e))!=null&&a.enableEncodeFrame?c.readable.pipeThrough(new TransformStream({transform:(C,y)=>{var S,b;let V=this.getTrackByMediaType(e);if(!V||!V.encodeFrame)return y.enqueue(C);V.isAudio?y.enqueue(V.enableEncodeFrame?V.encodeFrame(C):C):y.enqueue((S=this.singlePC)!=null&&S.isUsingH264||(b=this.singlePC)!=null&&b.isUsingH265?V.encodeFrame(C,e===8):C)}}),d):c.readable).pipeTo(c.writable,d).catch(C=>{this._log.debug("encoded stream error",C),C!=="destroy"&&this._log.warn(C)})}initSenderTransform(A,e){if(!(this._peerConnection&&this.singlePC&&this.singlePC.scriptTransformWorker&&x0))return;let o=e!==2,a=e===8;A.transform||(A.transform=new RTCRtpScriptTransform(this.singlePC.scriptTransformWorker,{isReceiver:!1,isAudio:e===1,isMain:o,isSmall:a}))}enableSmall(A){return KA(this,null,function*(){A?yield this.publishSmall(this._room.videoManager.smallMode):yield this.unpublishSmall()})}publishSmall(A){return KA(this,arguments,function(e){var o=this;let a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.localMainVideoTrack;return function*(){var c;if(!o.singlePC)return;if(e==="canvas"&&!P0())return void o._log.warn("canvas mode small stream is not supported");let d=o._peerConnection.getTransceivers(),{sender:C}=d[2],y=yield o.doPublishSmall(e,a),S=e==="canvas"?524700:524701;Ai.addSuccessEvent({key:S}),y?((c=o.singlePC)!=null&&c.enableInsertableStreams&&o.createEncodedStreams(C,8),o.initSenderTransform(C,8),yield o.singlePC.setTransceiverDirection(zn.SENDONLY,[2]),o.updateMediaSettings(),yield o.doPublishChange(),C.track&&(o._blackSmallVideoDetectionId=xM.start({track:C.track,room:o._room,isUplink:!0,userId:o.userId,onBlack:()=>{o._log.warn("small video is black");let b=e==="canvas"?524700:524701;Ai.addFailedEvent({key:b,error:10002}),xM.stop(o._blackSmallVideoDetectionId),o._blackSmallVideoDetectionId=void 0}}))):Ai.addFailedEvent({key:S,error:10001})}()})}doPublishSmall(A){return KA(this,arguments,function(e){var o=this;let a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.localMainVideoTrack;return function*(){if(!o.singlePC)return null;o._log.info("publish small",e);let c=o._peerConnection.getTransceivers(),{sender:d}=c[2];if(e==="canvas"&&o._room.videoManager.smallTrack)return yield d.replaceTrack(o._room.videoManager.smallTrack),"canvas";if(e==="api"&&a!=null&&a.outMediaTrack&&a!=null&&a.small){yield d.replaceTrack(a?.outMediaTrack);let C=d.getParameters(),y=d0(a?.profile,a?.small);return o._log.info("small scaleResolutionDownBy",y),C.encodings[0].scaleResolutionDownBy=y,d.setParameters(C),"api"}return o._log.warn("small track can not be enabled, smallMode: ".concat(o._room.videoManager.smallMode,", smallTrack: ").concat(!!o._room.videoManager.smallTrack,", bigVideoTrack: ").concat(!(a==null||!a.outMediaTrack))),null}()})}unpublishSmall(){return KA(this,null,function*(){this.singlePC&&(this._log.info("unpublish small"),yield this._peerConnection.getTransceivers()[2].sender.replaceTrack(null),yield this.singlePC.setTransceiverDirection(zn.INACTIVE,[2]),this.updateMediaSettings(),yield this.doPublishChange(),xM.stop(this._blackSmallVideoDetectionId),this._blackSmallVideoDetectionId=void 0)})}checkHighProfile(A){return KA(this,null,function*(){var e,o;if((((e=this._room.scheduleResult.config)==null?void 0:e.profileLevelId)||{})[A.streamType==="main"?"big":"aux"]!=="high")return;let a=A.newWidth*A.newHeight>=921600&&!ty();try{yield(o=this.singlePC)==null?void 0:o.setH264ProfileLevelId(A.streamType,a)}catch(c){this._log.warn("setH264ProfileLevelId failed, ignore",c)}})}installTrackMuteEvents(){for(var A=arguments.length,e=new Array(A),o=0;o{a&&(a?.on("mute",this.sendMutedFlag,this),a?.on("unmute",this.sendMutedFlag,this))})}uninstallTrackMuteEvents(){for(var A=arguments.length,e=new Array(A),o=0;o{a&&(a?.off("mute",this.sendMutedFlag,this),a?.off("unmute",this.sendMutedFlag,this))})}unpublish(A){return KA(this,arguments,function(e){var o=this;let{localAudioTrack:a,localVideoTrack:c}=e;return function*(){var d;yield(d=o.singlePC)==null?void 0:d.waitForPeerConnectionConnected();let C=c&&c===o.localAuxVideoTrack||a&&a===o.localAuxAudioTrack,y=c?.outMediaTrack,S=o._peerConnection.getSenders(),b=[];a&&(C?o.localAuxAudioTrack=null:o.localMainAudioTrack=null,!o.localMainAudioTrack&&!o.localAuxAudioTrack&&(yield S[0].replaceTrack(null),b.push(0))),y&&(C?(yield S[3].replaceTrack(null),o.localAuxVideoTrack=null,o._mediaSettings=Bo(pi({},o._mediaSettings),{auxVideoBps:0,auxVideoFps:0,auxVideoWidth:0,auxVideoHeight:0}),b.push(3)):(yield S[1].replaceTrack(null),yield S[2].replaceTrack(null),o.localMainVideoTrack=null,o._mediaSettings=Bo(pi({},o._mediaSettings),{videoWidth:0,videoHeight:0,videoBps:0,videoFps:0,audioFs:0,audioChannel:0,audioBps:0,smallVideoWidth:0,smallVideoHeight:0,smallVideoFps:0,smallVideoBps:0}),b.push(1,2))),o.isMainStreamPublished||o.isAuxStreamPublished?(yield o.singlePC.setTransceiverDirection(zn.INACTIVE,b),yield o.doPublishChange(!1)):yield o.doUnpublish(),o.uninstallTrackMuteEvents(a,c),c?.emit("connection-state-changed",{prevState:o._currentState,state:"DISCONNECTED"})}()})}doPublishChange(){let A=!(arguments.length>0&&arguments[0]!==void 0)||arguments[0];return KA(this,null,function*(){let e={state:this._room.publishState,constraintConfig:this._mediaSettings},o=yield this._signalChannel.sendWaitForResponseWithRetry({command:FK,data:e,responseCommand:ls.PUBLISH_STATE_CHANGE_RESULT,enableLog:A,retries:3});this.checkPublishResultCode(o.data.code,o.data.message)})}doUnpublish(){let A=arguments.length>0&&arguments[0]!==void 0&&arguments[0];return this._signalChannel.sendWaitForResponse({command:Z2,commandDesc:"unpublish",responseCommand:ls.UNPUBLISH_RESULT,enableLog:A}).catch(e=>{if(e.getCode()===lt.API_CALL_TIMEOUT||e.getCode()===lt.API_CALL_ABORTED)return Promise.resolve();throw e})}updateMediaSettings(){var A,e;this._mediaSettings.videoCodec=((A=this.singlePC)==null?void 0:A.videoCodec)||"h264",this._mediaSettings.videoDecCodec=((e=this.singlePC)==null?void 0:e.downlinkVideoCodec)||"h264";let o=this._publishingLocalAudioTrack||this.localMainAudioTrack||this.localAuxAudioTrack,{localMainVideoTrack:a,localAuxVideoTrack:c}=this;if(this._publishingLocalVideoTrack&&(this._isPublishingAux?c=this._publishingLocalVideoTrack:a=this._publishingLocalVideoTrack),ly){if(o&&o.outMediaTrack){let d=o.outMediaTrack.getSettings();this._mediaSettings.audioChannel=d.channelCount||1,this._mediaSettings.audioBps=1e3*o.profile.bitrate,this._mediaSettings.audioFs=d.sampleRate||0}if(a&&a.outMediaTrack){let d=a.outMediaTrack.getSettings(),{scaleResolutionDownBy:C}=a;this._mediaSettings.videoWidth=(d.width||0)/C||0,this._mediaSettings.videoHeight=(d.height||0)/C||0,this._mediaSettings.videoFps=d.frameRate||0,this._mediaSettings.videoBps=1e3*a.profile.bitrate,a.small&&(this._mediaSettings.smallVideoWidth=a.small.width,this._mediaSettings.smallVideoHeight=a.small.height,this._mediaSettings.smallVideoFps=a.small.frameRate,this._mediaSettings.smallVideoBps=1e3*a.small.bitrate)}if(c&&c.outMediaTrack){let d=c.outMediaTrack.getSettings(),{scaleResolutionDownBy:C}=c;this._mediaSettings.auxVideoWidth=(d.width||0)/C||0,this._mediaSettings.auxVideoHeight=(d.height||0)/C||0,this._mediaSettings.auxVideoFps=d.frameRate||0,this._mediaSettings.auxVideoBps=1e3*c.profile.bitrate}}else o&&o.outMediaTrack&&(this._mediaSettings.audioChannel=o.profile.channelCount,this._mediaSettings.audioBps=1e3*o.profile.bitrate,this._mediaSettings.audioFs=o.profile.sampleRate),a&&a.outMediaTrack&&(this._mediaSettings.videoWidth=a.profile.width,this._mediaSettings.videoHeight=a.profile.height,this._mediaSettings.videoFps=a.profile.frameRate,this._mediaSettings.videoBps=1e3*a.profile.bitrate);this._log.info("updateMediaSettings: ".concat(JSON.stringify(this._mediaSettings)))}sendMediaSettings(){this.updateMediaSettings(),this._signalChannel.sendWaitForResponse({command:xK,data:this._mediaSettings,responseCommand:ls.UPDATE_CONSTRAINT_CONFIG_RES}).then(A=>{A.data.code!==0&&this._log.warn(A.data.message)}).catch(()=>{})}addTrack(A){return KA(this,null,function*(){if(!this._peerConnection)return;let e=A===this.localAuxAudioTrack||A===this.localAuxVideoTrack;this._log.info("is adding ".concat(A.kind," track to current published local ").concat(e?YA.AUXILIARY:YA.MAIN," stream")),gQ()&&(yield this.addTrackByTransceiver(A,e))})}addTrackByTransceiver(A,e){return KA(this,null,function*(){var o;if(!A.mediaTrack)return;let a=this._peerConnection.getTransceivers();if(A.kind===YA.AUDIO)yield a[0].sender.replaceTrack(A.outMediaTrack);else{let c=e?3:1;yield a[c].sender.replaceTrack(A.outMediaTrack),c===1&&(o=this.localMainVideoTrack)!=null&&o.small&&this._room.videoManager.smallTrack&&(yield a[2].sender.replaceTrack(this._room.videoManager.smallTrack)),a[c].direction===zn.INACTIVE&&(yield this.singlePC.setTransceiverDirection(zn.SENDONLY,[c]))}this.updateMediaSettings(),yield this.doPublishChange()})}removeTrack(A){return KA(this,null,function*(){if(!this._peerConnection)return;let e=A===this.localAuxAudioTrack||A===this.localAuxVideoTrack;this._log.info("is removing ".concat(A.kind," track from current published local ").concat(e?YA.AUXILIARY:YA.MAIN," stream")),gQ()&&(yield this.removeTrackByTransceiver(A,e))})}removeTrackByTransceiver(A,e){return KA(this,null,function*(){if(!A.mediaTrack)return;let o=this._peerConnection.getTransceivers();if(A.kind===YA.AUDIO)yield o[0].sender.replaceTrack(null);else{let a=e?3:1;yield o[a].sender.replaceTrack(null),a===1&&this._room.videoManager.hasSmall&&(yield o[2].sender.replaceTrack(null)),yield this.singlePC.setTransceiverDirection(zn.INACTIVE,[a])}this.updateMediaSettings(),yield this.doPublishChange()})}replaceTrack(A){return KA(this,null,function*(){var e;let o=(e=this._peerConnection)==null?void 0:e.getSenders(),a=A.outMediaTrack||A.mediaTrack;if(!o||o.length===0||!a||o.find(d=>d.track===a))return!1;let c=A.mediaType===2||A===this.localAuxAudioTrack||A===this.localAuxVideoTrack;return this._log.info("is replacing ".concat(a.kind," track ").concat(a.id," ").concat(a.label," on ").concat(c?YA.AUXILIARY:YA.MAIN," stream")),a.kind===YA.AUDIO&&o[0]&&(yield o[0].replaceTrack(a)),a.kind===YA.VIDEO&&(!c&&o[1]&&(yield o[1].replaceTrack(a)),c&&o[3]&&(yield o[3].replaceTrack(a))),!0})}setBandwidth(A){return KA(this,arguments,function(e){var o=this;let{bandwidth:a,type:c,videoType:d}=e;return function*(){if(o.singlePC){let C={};c===YA.AUDIO?C.audio=a:d==="big"?C.bigVideo=a:d==="small"?C.smallVideo=a:C.auxVideo=a,yield o.singlePC.setBandwidth(C)}}()})}sendMutedFlag(A){A===this.localAuxAudioTrack||A===this.localAuxVideoTrack||(this._log.info("send muted state: ".concat(JSON.stringify(this._room.muteState))),this._signalChannel.sendWaitForResponseWithRetry({command:F5,responseCommand:ls.MUTE_RESULT,data:this._room.muteState,retries:3}).catch(()=>{}))}handleConnectionStateChange(A){A.state==="CONNECTED"&&(this.localMainVideoTrack||this._publishingLocalVideoTrack&&!this._isPublishingAux)&&U.emit(sA.SEND_FIRST_VIDEO_FRAME,{room:this._room})}getVideoTrackId(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:YA.VIDEO;if(this._peerConnection){let e=this._peerConnection.getSenders();if(A===YA.AUXILIARY&&e[3]&&e[3].track)return e[3].track.id;if(A===YA.VIDEO&&e[1]&&e[1].track)return e[1].track.id}if(this.localMainVideoTrack&&A===YA.VIDEO){let e=this.localMainVideoTrack.mediaTrack;if(e)return e.id}if(this.localAuxVideoTrack&&A===YA.AUXILIARY){let e=this.localAuxVideoTrack.mediaTrack;if(e)return e.id}return""}getSSRC(){return this.ssrc}checkPublishResultCode(A,e){if(A!==0)throw A===Xw?(this._log.error(cc.NOT_SUPPORTED_H264ENCODE),new oi({code:lt.NOT_SUPPORTED_H264,message:Zo({key:So.NOT_SUPPORTED_H264ENCODE})})):new oi({code:lt.UNKNOWN,message:Zo({key:So.SIGNAL_RESPONSE_FAILED,data:{signalResponse:ls.PUBLISH_RESULT,code:A,message:e}})})}onSinglePCReconnected(){return KA(this,null,function*(){this.isMainStreamPublished&&(this._log.warn("republish main stream"),yield this.publish({localAudioTrack:this.localMainAudioTrack,localVideoTrack:this.localMainVideoTrack,isAuxiliary:!1})),this.isAuxStreamPublished&&(this._log.warn("republish aux stream"),yield this.publish({localAudioTrack:this.localAuxAudioTrack,localVideoTrack:this.localAuxVideoTrack,isAuxiliary:!0}))})}};di([TM(A=>{let{localVideoTrack:e}=A;e==null||delete e.retryEncodeFailed})],i1.prototype,"unpublish"),di([az({when(){return this.isDestroyed}})],i1.prototype,"doPublishChange"),di([az({when(){return this.isDestroyed}})],i1.prototype,"doUnpublish");var gz=(A=>(A[A.audio=1]="audio",A[A.bigVideo=2]="bigVideo",A[A.smallVideo=3]="smallVideo",A[A.auxVideo=4]="auxVideo",A))(gz||{}),cz=i1;function lz(A){return Object.keys(A).filter(e=>A[e])}var o1=class extends rz{constructor(A){super(Bo(pi({},A),{isUplink:!1})),Y(this,"_flag",0),Y(this,"isRobot",!1),Y(this,"role","anchor"),Y(this,"fromType"),Y(this,"remoteAudioTrack"),Y(this,"remoteVideoTrack"),Y(this,"remoteAuxiliaryTrack"),Y(this,"ssrc",{audio:0,video:0,videoRtx:0,auxiliary:0,auxiliaryRtx:0}),Y(this,"_prevMids"),Y(this,"jitterBufferTimeoutId",-1),Y(this,"_jitterBufferResolve"),Y(this,"_videoCodec"),Y(this,"avPlayerStateSyncManager"),Y(this,"isDataChannelSubscribed",!1),this.flag=A.flag,this.isRobot=A.isRobot||!1,this.fromType=A.fromType,this.remoteAudioTrack=new b2(this._room,this),this.remoteVideoTrack=new Jk(this._room,this),this.remoteAuxiliaryTrack=new Z4(this._room,this),this.avPlayerStateSyncManager=new SK({log:this._log,audioPlayer:this.remoteAudioTrack.player,videoPlayer:this.remoteVideoTrack.player}),this.initialize()}get videoCodec(){var A;return this._videoCodec||((A=this.singlePC)==null?void 0:A.downlinkVideoCodec)||"h264"}set videoCodec(A){this._videoCodec=A}get subscribeState(){return{audio:this.remoteAudioTrack.isSubscribed||this.remoteAudioTrack.isSubscribing,video:this.remoteVideoTrack.isBig&&(this.remoteVideoTrack.isSubscribed||this.remoteVideoTrack.isSubscribing),smallVideo:this.remoteVideoTrack.isSmall&&(this.remoteVideoTrack.isSubscribed||this.remoteVideoTrack.isSubscribing),auxiliary:this.remoteAuxiliaryTrack.isSubscribed||this.remoteAuxiliaryTrack.isSubscribing,datachannel:this.isDataChannelSubscribed}}get muteState(){return Dp(this.flag,this.userId)}get flag(){return this._flag}set flag(A){var e,o,a;A!==this._flag&&(this._flag=A,(e=this.remoteAudioTrack)==null||e.onFlagChanged(),(o=this.remoteVideoTrack)==null||o.onFlagChanged(),(a=this.remoteAuxiliaryTrack)==null||a.onFlagChanged())}get hasMainStream(){return this.muteState.hasAudio||this.muteState.hasVideo||this.muteState.hasSmall}get hasAuxStream(){return this.muteState.hasAuxiliary}get isMainStreamSubscribed(){return(this.subscribeState.audio||this.subscribeState.video||this.subscribeState.smallVideo)&&(this.muteState.hasAudio||this.muteState.hasVideo||this.muteState.hasSmall)}get isAuxStreamSubscribed(){return this.subscribeState.auxiliary&&this.muteState.hasAuxiliary}get isSmallStreamSubscribed(){return this.subscribeState.smallVideo&&this.muteState.hasSmall}get isBigStreamSubscribed(){return this.subscribeState.video&&this.muteState.hasVideo}isStreamUnpublished(A){return A===YA.MAIN?!this.muteState.hasAudio&&!this.muteState.hasVideo:!this.muteState.hasAuxiliary}initialize(){this.installEvents()}close(A){clearTimeout(this.jitterBufferTimeoutId),super.close(A),this.emitConnectionStateChangedEvent("DISCONNECTED"),this.remoteAudioTrack.close(),this.remoteVideoTrack.close(),this.remoteAuxiliaryTrack.close(),this.avPlayerStateSyncManager.destroy(),this.uninstallEvents(),this.removeDownlink()}installEvents(){this.singlePC&&(this.listeners("track").includes(this.onTrack)||this.singlePC.on("track",this.onTrack,this),this.listeners("spc-reconnected").includes(this.onSinglePCReconnected)||this.singlePC.on("spc-reconnected",this.onSinglePCReconnected,this),this.remoteVideoTrack.on("decode-failed",this.onDecodeFailed,this))}uninstallEvents(){this.singlePC&&(this.singlePC.off("track",this.onTrack,this),this.singlePC.off("spc-reconnected",this.onSinglePCReconnected,this),this.remoteVideoTrack.off("decode-failed",this.onDecodeFailed,this))}emitConnectionStateChangedEvent(A){var e,o;let a=this._currentState,c=super.emitConnectionStateChangedEvent(A);return c&&a!==A&&((e=this.remoteVideoTrack)==null||e.emit("connection-state-changed",{prevState:a,state:A}),(o=this.remoteAuxiliaryTrack)==null||o.emit("connection-state-changed",{prevState:a,state:A})),c}onTrack(A){var e,o;let a=A.streams[0],{track:c,receiver:d}=A;if(!a.id.includes(this.tinyId))return;let C=a.id.includes("aux")?"auxiliary":"main";this._log.debug("ontrack ".concat(C," ").concat(c.kind));let y=YA.AUDIO;c.kind===YA.VIDEO&&(y=C===YA.MAIN?YA.VIDEO:YA.AUXILIARY);let S=this.remoteAudioTrack;y===YA.VIDEO?S=this.remoteVideoTrack:y===YA.AUXILIARY&&(S=this.remoteAuxiliaryTrack),(e=this.singlePC)==null||e.receiverRemoteTrackMap.set(d,S),(o=this.singlePC)!=null&&o.scriptTransformWorker&&this.initReceiverTransform(d,C,c.kind===YA.AUDIO),this.singlePC.enableInsertableStreams&&this.createEncodedStreams(d),S.setInputMediaStreamTrack(c)}createEncodedStreams(A){if(!this.singlePC.insertableStreamsAbortMap.has(A)){let e=A.createEncodedStreams(),o=new AbortController,a={abortController:o,enqueue:c=>{var d,C,y;let S=(d=this.singlePC)==null?void 0:d.receiverRemoteTrackMap.get(A);return S&&(S.kind!=="video"||(C=this.singlePC)!=null&&C.isUsingH264||(y=this.singlePC)!=null&&y.isUsingH265)?S.decodeFrame(c):c}};e.readable.pipeThrough(new TransformStream({transform:(c,d)=>{let C=a.enqueue(c);C&&d.enqueue(C)}})).pipeTo(e.writable,o).catch(c=>{c!=="destroy"&&this._log.warn(c)}),this.singlePC.addAbortController(A,o)}}initReceiverTransform(A,e,o){!this._peerConnection||!this.singlePC||!this.singlePC.scriptTransformWorker||A.transform||(A.transform=new RTCRtpScriptTransform(this.singlePC.scriptTransformWorker,{isReceiver:!0,isAudio:o,userId:this.userId,streamType:e}))}subscribe(A,e){return KA(this,null,function*(){var o,a;try{let c=!0;if(this._log.info("subscribe ".concat(e," ").concat(lz(A))),this.hasSSRC){let y="subscribe_change";Object.values(A).find(S=>S===!0)||(y="unsubscribe"),yield this.sendSubscription(y,A)}else{if(yield this._room.switchRoomSubedReq,(o=this.singlePC)!=null&&o.autoSubscribedUserMap.size){let y=this.singlePC.autoSubscribedUserMap.get(this.userId);if(y){this.singlePC.autoSubscribedUserMap.delete(this.userId);let S=(a=this.singlePC.autoSubscribedSsrcGroups.get(this._room.roomId))==null?void 0:a[y.groupIndex];S&&(this.ssrc={audio:S.audioSsrc,video:S.bigVideoSsrc,videoRtx:S.bigVideoRtxSsrc,auxiliary:S.auxVideoSsrc,auxiliaryRtx:S.auxVideoRtxSsrc},c=!1)}}yield this.doSubscribe(A,c),this.checkTrackEnded(A)}let{user:d,mediaTrack:C}=this.remoteVideoTrack;A.smallVideo&&C?(Ai.addSuccessEvent({key:524702}),this._blackSmallVideoDetectionId=xM.start({track:C,isUplink:!1,room:this._room,userId:this.userId,onBlack:()=>{this._log.warn("small video is black, auto change to big"),this._room.changeType(!1,d),Ai.addFailedEvent({key:524702}),xM.stop(this._blackSmallVideoDetectionId),this._blackSmallVideoDetectionId=void 0}})):(xM.stop(this._blackSmallVideoDetectionId),this._blackSmallVideoDetectionId=void 0)}catch(c){throw this._room.isJoined&&this.isStreamUnpublished(e)?(this._log.warn("".concat(c.message," ").concat(JSON.stringify(this.muteState))),new oi({code:lt.REMOTE_STREAM_NOT_EXIST,message:"remote user ".concat(this.userId," unpublished stream")})):c}})}checkTrackEnded(A){var e,o,a;if((A.audio&&((e=this.remoteAudioTrack.mediaTrack)==null?void 0:e.readyState)==="ended"||A.video&&((o=this.remoteVideoTrack.mediaTrack)==null?void 0:o.readyState)==="ended"||A.auxiliary&&((a=this.remoteAuxiliaryTrack.mediaTrack)==null?void 0:a.readyState)==="ended")&&this.singlePC&&!this.singlePC.isReconnecting){if(this._log.warn("remote track ended start spc reconnect"),sE&&jE<92)return;this.singlePC.startReconnection()}}unsubscribe(A){return KA(this,arguments,function(e){var o=this;let{remoteTracks:a,streamType:c}=e;return function*(){var d;if(c==="main"&&!o.isMainStreamSubscribed||c==="auxiliary"&&!o.isAuxStreamSubscribed)return void o._log.info("".concat(c," stream already unsubscribed"));let C=pi({},o.subscribeState);a.forEach(S=>{switch(S.mediaType){case 1:C.audio=!1;break;case 4:C.video=!1;break;case 8:C.smallVideo=!1;break;case 2:C.auxiliary=!1}});let y="subscribe_change";Object.values(C).find(S=>S===!0)||(y="unsubscribe"),o._log.info("".concat(y==="unsubscribe"?y:"subscribe"," ").concat(c," [").concat(lz(C),"]")),y==="unsubscribe"&&((d=o.singlePC)==null||d.removeDownlinkQueue.add(o.tinyId)),yield o.sendSubscription(y,C),c==="main"&&(xM.stop(o._blackSmallVideoDetectionId),o._blackSmallVideoDetectionId=void 0),y==="unsubscribe"&&(yield o.removeDownlink())}()})}subscribeDataChannel(){return KA(this,null,function*(){if(!this.singlePC)return;yield this.singlePC.waitForPeerConnectionConnected();let A=Bo(pi({},this.subscribeState),{datachannel:!0});yield this.doSubscribe(A)})}unsubscribeDataChannel(){return KA(this,null,function*(){let A=Bo(pi({},this.subscribeState),{datachannel:!1});yield this.sendSubscription("unsubscribe",A),yield this.removeDownlink()})}sendSubscription(A){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.subscribeState,o={srcTinyId:this.tinyId,srcUserId:this.userId},a=OK,c=ls.UNSUBSCRIBE_RESULT;return A==="subscribe_change"&&(o={audio:e.audio,bigVideo:e.video,auxVideo:e.auxiliary,smallVideo:e.smallVideo,customData:e.datachannel,srcTinyId:this.tinyId},a=PK,c=ls.SUBSCRIBE_CHANGE_RESULT),this._signalChannel.sendWaitForResponseWithRetry({command:a,data:o,responseCommand:c,timeout:1e4,retries:3}).then(d=>{let{data:C}=d;if(C.code!==0){let y=new oi({code:C.code,message:Zo({key:So.ERROR_MESSAGE,data:{type:A,message:C.message}})});throw this._log.error(y),y}})}getMainStreamVideoTrackId(){return this.remoteVideoTrack&&this.remoteVideoTrack.mediaTrack?this.remoteVideoTrack.mediaTrack.id:""}getAuxStreamVideoTrackId(){return this.remoteAuxiliaryTrack&&this.remoteAuxiliaryTrack.mediaTrack?this.remoteAuxiliaryTrack.mediaTrack.id:""}setDelay(A){let{audioDelay:e,videoDelay:o}=A;this.remoteAudioTrack.stat.end2EndDelay=e,this.remoteVideoTrack.stat.end2EndDelay=o}onSinglePCReconnected(){return KA(this,null,function*(){(this.ssrc.audio||this.ssrc.video||this.ssrc.auxiliary||this.isDataChannelSubscribed)&&(this._log.warn("resubscribe ".concat(JSON.stringify(this.subscribeState))),yield this.doSubscribe(this.subscribeState),this.remoteAudioTrack.checkDecodeResult(),this.remoteVideoTrack.checkDecodeResult(),this.remoteAuxiliaryTrack.checkDecodeResult())})}get hasSSRC(){return this.ssrc.audio&&this.ssrc.video&&this.ssrc.auxiliary}doSubscribe(){return KA(this,arguments,function(){var A=this;let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.subscribeState,o=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1];return function*(){var a,c;if(A.singlePC){A.singlePC.addDownlinkQueue.add(A.tinyId),yield A.singlePC.waitForPeerConnectionConnected();try{if(o||!A.hasSSRC){let d={audioSsrc:$h(),bigVideoSsrc:$h(),bigVideoRtxSsrc:$h(),auxVideoSsrc:$h(),auxVideoRtxSsrc:$h()},{audioSsrc:C,bigVideoSsrc:y,bigVideoRtxSsrc:S,auxVideoSsrc:b,auxVideoRtxSsrc:V}=d;A.ssrc={audio:C,video:y,videoRtx:S,auxiliary:b,auxiliaryRtx:V},A.singlePC.addDownlinkQueue.delete(A.tinyId),yield A.singlePC.addDownlink({userId:A.userId,tinyId:A.tinyId,ssrc:A.ssrc,prevMids:A._prevMids});try{let J=yield A._signalChannel.sendWaitForResponseWithRetry({command:Y5,responseCommand:ls.SPC_SUBSCRIBE_RESULT,data:{srcUserId:A.userId,srcTinyId:A.tinyId,audio:e.audio,bigVideo:e.video,auxVideo:e.auxiliary,smallVideo:e.smallVideo,customData:(a=e.datachannel)!=null&&a,ssrc:d},retries:3,retryTimeout:0});if(J.data.code!==0&&J.data.code!==-10036)throw new oi({code:J.data.code,message:J.data.message});A.isDataChannelSubscribed=(c=e.datachannel)!=null&&c}catch(J){throw yield A.removeDownlink(),J}return}A.singlePC.addDownlinkQueue.delete(A.tinyId),yield A.singlePC.addDownlink({userId:A.userId,tinyId:A.tinyId,ssrc:A.ssrc,prevMids:A._prevMids})}finally{if((e.audio||e.video||e.smallVideo||e.auxiliary||!e.datachannel)&&cQ){let{main:d,aux:C}=A._room.jitterBufferDelay||{},{jitterDelay:y=d,jitterDelayAux:S=C}=A._room.scheduleResult.config||{};(bn(y)||bn(S))&&A.setJitterBufferDelay({mainDelay:y,auxDelay:S})}}}}()})}removeDownlink(){return KA(this,null,function*(){this.singlePC&&(this.isDataChannelSubscribed=!1,this.ssrc={audio:0,video:0,videoRtx:0,auxiliary:0,auxiliaryRtx:0},this.singlePC.removeDownlinkQueue.delete(this.tinyId),clearTimeout(this.jitterBufferTimeoutId),this._jitterBufferResolve&&(this._jitterBufferResolve(),this._jitterBufferResolve=void 0),this.setJitterBufferDelay({mainDelay:0,auxDelay:0}),this._prevMids=yield this.singlePC.removeDownlink(this.userId))})}setJitterBufferDelay(A){let{mainDelay:e,auxDelay:o}=A;if(!cQ||!this.singlePC||!this._peerConnection||HE(e)&&HE(o))return Promise.resolve();this._log.info("set jitterBuffer main: ".concat(e," aux: ").concat(o));let a=this.singlePC.getReceiversByUserId(this.userId);return bn(e)&&(this.remoteAudioTrack.jitterBufferDelay=e,this.remoteVideoTrack.jitterBufferDelay=e),bn(o)&&(this.remoteAuxiliaryTrack.jitterBufferDelay=o,HE(e)&&(this.remoteAudioTrack.jitterBufferDelay=o)),new Promise(c=>{this._jitterBufferResolve=c,this.doSetJitterBufferDelay({mainDelay:e,auxDelay:o,receivers:a,resolve:c})})}doSetJitterBufferDelay(A){let{mainDelay:e,auxDelay:o,receivers:a,resolve:c}=A;try{if(e===0&&o===0)return a.forEach(d=>d.jitterBufferTarget=0),this._jitterBufferResolve=void 0,c();if(a.forEach(d=>{var C;let y=d.track===this.remoteAuxiliaryTrack.outMediaTrack||HE(e)&&d.track===this.remoteAudioTrack.outMediaTrack;if(y&&HE(o)||!y&&HE(e))return;let S=y?o||0:e,b=(d.jitterBufferTarget||0)+100;b>S||(d.jitterBufferTarget=b,this._log.debug("set ".concat(y?"aux ":"").concat((C=d?.track)==null?void 0:C.kind," jitterBuffer delay ").concat(b," -> ").concat(S)))}),!a.find(d=>{let C=d.track===this.remoteAuxiliaryTrack.outMediaTrack?o||0:e;return d.jitterBufferTarget{this.doSetJitterBufferDelay({mainDelay:e,auxDelay:o,receivers:a,resolve:c})},1e3)}catch(d){this._log.warn("set jitterBuffer delay error: ".concat(d)),clearTimeout(this.jitterBufferTimeoutId),this._jitterBufferResolve=void 0,c()}}get audioReceiver(){var A;return((A=this.singlePC)==null?void 0:A.getReceiversByUserId(this.userId)[0])||null}onDecodeFailed(){this._room.downlinkVideoCodec==="h265"&&this._room.requestRemoteFallbackToH264()}};di([Gk(),Hr(A=>function(){for(var e=arguments.length,o=new Array(e),a=0;a{let C=y=>{this.off("closed",C),d(new oi({code:lt.API_CALL_ABORTED,message:Zo({key:So.CONNECTION_ABORTED,data:y})}))};this.on("closed",C),A.apply(this,o).then(c,d).finally(()=>{this.off("closed",C)})})})],o1.prototype,"subscribe"),di([Gk()],o1.prototype,"unsubscribe"),di([dy(()=>"jitter")],o1.prototype,"setJitterBufferDelay");var JiA=o1,HiA=gc(Hl()),Iz=class X6 extends HiA.EventEmitter{constructor(e,o){super(),this.room=e,this.signalChannel=o,Y(this,"log"),Y(this,"cmdIdSeqMap",new Map),Y(this,"messageMap",new Map),this.log=QA.createLogger({parent:e.getLogger(),id:"cmm",userId:e.userId}),this.onReceiveMsg=this.onReceiveMsg.bind(this),o.on(ls.RECEIVE_CUSTOM_MSG,this.onReceiveMsg),this.room.on("peer-leave",a=>{let{userId:c}=a;[...this.messageMap.keys()].forEach(d=>{d.split("_").slice(0,-1).join("_")===c&&this.messageMap.delete(d)})})}send(e){let{cmdId:o,data:a}=e,c=this.cmdIdSeqMap.get(o)||Math.floor(16383*Math.random()),d={cmdId:o,msg:btoa(String.fromCharCode(...new Uint8Array(a))),ordered:!0,reliable:!0,streamSeq:c};this.cmdIdSeqMap.set(o,c+1),this.signalChannel.send(liA,d),this.log.debug("send custom msg: ".concat(JSON.stringify(d)))}onReceiveMsg(e){let{data:o}=e.data,a=this.room.tinyIdToUserIdMap.get(o.srcTinyId);if(a){let c={userId:a,cmdId:o.cmdId,seq:o.streamSeq,data:Uint8Array.from(atob(o.msg),d=>d.charCodeAt(0)).buffer};if(o.ordered){let d="".concat(a,"_").concat(c.cmdId),C=this.messageMap.get(d);if(C&&C.lastSeq!==0)if(Math.abs(C.lastSeq-c.seq)>X6.SEQ_INTERVAL)this.messageMap.set(d,{lastSeq:c.seq,cachedMessageMap:new Map}),this.emitMessage(c);else if(c.seq>C.lastSeq){if(c.seq===C.lastSeq+1)this.emitMessage(c);else if(!C.cachedMessageMap.has(c.seq)){let y=setTimeout(()=>this.emitMessage(c,!0),5e3);C.cachedMessageMap.set(c.seq,{message:c,timeoutId:y})}}else this.log.debug("drop message ".concat(c.userId,"-").concat(c.cmdId,"-").concat(c.seq));else C||(C={lastSeq:0,cachedMessageMap:new Map},this.messageMap.set(d,C),setTimeout(()=>this.emitMessage(c,!0),100)),C.cachedMessageMap.set(c.seq,{message:c})}else this.emit("message",c)}else{this.log.warn("receive msg from unknown user, wait peer-join tinyId: ".concat(o.srcTinyId));let c=d=>{d.tinyId===o.srcTinyId&&(this.room.off("peer-join",c),this.onReceiveMsg(e))};this.room.on("peer-join",c),_C(2e3).then(()=>this.room.off("peer-join",c))}}emitMessage(e){let o=arguments.length>1&&arguments[1]!==void 0&&arguments[1];var a;let c=this.messageMap.get("".concat(e.userId,"_").concat(e.cmdId)),d=e;if(c){if(o){let y=[...c.cachedMessageMap.values()].sort((S,b)=>S.message.seq-b.message.seq);y[0]&&(d=y[0].message)}c.lastSeq!==0&&d.seq-c.lastSeq>1&&this.log.debug("msg lost userId: ".concat(d.userId," seq: ").concat(c.lastSeq," -> ").concat(d.seq)),c.lastSeq=d.seq,clearTimeout((a=c.cachedMessageMap.get(d.seq))==null?void 0:a.timeoutId),c.cachedMessageMap.delete(d.seq)}this.log.debug("receive custom msg: ".concat(JSON.stringify(d))),this.emit("message",d);let C=c?.cachedMessageMap.get(d.seq+1);C&&this.emitMessage(C.message)}};Y(Iz,"SEQ_INTERVAL",300);var qiA=Iz,{isString:uz,isUndefined:YM,getNetworkType:KiA,isEmpty:jiA}=Od,Dy=class extends GiA{constructor(A){super(A),Y(this,"_businessInfo"),Y(this,"userManager"),Y(this,"_version"),Y(this,"_heartbeat",-1),Y(this,"_lastHeartBeatTime",-1),Y(this,"_stats"),Y(this,"_joinTimeout",-1),Y(this,"_firstPublishedList",null),Y(this,"_joinReject",null),Y(this,"_isRelayChanged",!1),Y(this,"sdpSemantics"),Y(this,"signalChannel",null),Y(this,"uplinkConnection",null),Y(this,"singlePC",null),Y(this,"enableSPC",mM),Y(this,"_changeBigSmallRecords",new Map),Y(this,"networkQuality"),Y(this,"_iceTransportPolicy"),Y(this,"forceRelay",!1),Y(this,"_turnServers",[]),Y(this,"_iceServersFromJoin"),Y(this,"_syncUserListInterval",-1),Y(this,"_smallStreamConfig",{bitrate:100,frameRate:15,height:120,width:160}),Y(this,"enableSEI",!1),Y(this,"_enableAudioVolumeEvaluation",!1),Y(this,"_audioVolumeIntervalId",0),Y(this,"_enableMultiAuxStream",!1),Y(this,"_pureAudioPushMode",!1),Y(this,"_customMessageManager"),Y(this,"_enableDataChannel",!1),Y(this,"preferHW",!1),Y(this,"healthDetector"),Y(this,"playoutDelay"),Y(this,"jitterBufferDelay"),Y(this,"_updateAudioLevelTaskId",-1),Y(this,"switchRoomSubedReq"),Y(this,"resolveSwitchRoomSubedReq"),Y(this,"enableVolumeControlInIOS"),Y(this,"capturedLocalMainAudioTrack"),Y(this,"capturedLocalMainVideoTrack"),Y(this,"capturedLocalAuxVideoTrack"),Y(this,"PRELINK_EXPIRED_TIME",3e5),Y(this,"PRELINK_TIMEOUT",1e4),Y(this,"prelinkTimeoutId",null),Y(this,"firewallDetector"),this.firewallDetector=new dtA,this.firewallDetector.on("firewall-restriction",()=>{this._log.warn("firewall restriction"),this.emit("firewall-restriction")}),this._stats=new BiA(this,this._log),this.userManager=new utA(this.userId,this._log),this._version=Pd,this.sdpSemantics=Zw,YM(A.sdpSemantics)?oe.isUnifiedPlanDefault()&&(this.sdpSemantics=FS):this.sdpSemantics=A.sdpSemantics,this._log.info("sdpSemantics: ".concat(this.sdpSemantics,", netType: ").concat(KiA())),A.iceTransportPolicy&&(this._iceTransportPolicy=A.iceTransportPolicy),this._enableMultiAuxStream=!YM(A.enableMultiAuxStream)&&A.enableMultiAuxStream,this.enableSEI=A.enableSEI&&mM,!YM(A.enableSPC)&&mM&&(this.enableSPC=A.enableSPC),this.preferHW=!!A.preferHW,this.enableVolumeControlInIOS=A.enableVolumeControlInIOS,this._initBusinessInfo(A),this.healthDetector=new OiA(this)}get isMainStreamPublished(){var A;return!((A=this.uplinkConnection)==null||!A.isMainStreamPublished)}get isMainAudioPublished(){var A;return!((A=this.uplinkConnection)==null||!A.localMainAudioTrack)}get isAuxStreamPublished(){var A;return!((A=this.uplinkConnection)==null||!A.isAuxStreamPublished)}get hasAuxStream(){return[...this.remotePublishedUserMap.values()].findIndex(A=>A.muteState.hasAuxiliary)>=0}get userMap(){return this.userManager.userMap}get remotePublishedUserMap(){return this.userManager.remotePublishedUserMap}get tinyIdToUserIdMap(){return new Map([...this.userMap.values()].map(A=>[A.tinyId,A.userId]))}get videoCodec(){var A;return((A=this.singlePC)==null?void 0:A.videoCodec)||"h264"}get downlinkVideoCodec(){var A;return((A=this.singlePC)==null?void 0:A.downlinkVideoCodec)||"h264"}join(A,e,o){return KA(this,null,function*(){return this.userManager.mySelfId=this.userId,this.userManager.on("1",a=>{this.emit("peer-join",a)}),this.userManager.on("8",a=>{this.emit("asr-robot-peer-join",a)}),this.userManager.on("9",a=>{this.emit("asr-robot-peer-leave",a)}),this.userManager.on("2",a=>{let{userId:c,reason:d}=a;this.closeDownLinkConnection(c,"remote user exitRoom"),this.emit("peer-leave",{userId:c,reason:d})}),this.userManager.on("3",this.createDownlinkConnection,this),this.userManager.on("5",this.closeDownLinkConnection,this),this.userManager.on("6",a=>{var c=XP(a,[]);U.emit(sA.REMOTE_PUBLISH_STATE_CHANGED,pi({room:this},c)),this.emit("remote-publish-state-changed",pi({},c))}),this.joinParams=A,wr(A.enableDataChannel)&&(this._enableDataChannel=A.enableDataChannel),new Promise((a,c)=>KA(this,null,function*(){var d,C;this._joinReject=c;try{this.checkDestroy();try{yield Promise.all([this.initialize(),this.initSinglePC()])}catch(S){if(!(S instanceof oi&&S.code===lt.SPC_INITIALIZED_FAILED))return c(S);(d=this.signalChannel)==null||d.destroy(),yield this.initialize()}let y=bo();yield this.doJoin(A,(C=this.singlePC)==null?void 0:C.clientAbility),Ai.addSuccessEvent({key:521708,cost:bo()-y}),a(),this._firstPublishedList&&this.onPublishedUserList({data:{userList:this._firstPublishedList}})}catch(y){Ai.addFailedEvent({key:521708,error:y}),c(y)}this._joinReject=null}))})}initSinglePC(){return KA(this,null,function*(){if(this.enableSPC&&!this.singlePC){this.singlePC=new yy({signalChannel:this.signalChannel,room:this,enableDataChannel:this._enableDataChannel}),this.singlePC.on("sei-message",A=>this.emit("sei-message",A)),this.singlePC.on("dump",A=>this.emit("dump",A)),this.singlePC.once("error",()=>this.fallbackToMPC()),this.singlePC.on("data_channel_msg",A=>{let e=new TextDecoder().decode(A.data.data||A.data);try{this.emit("data-channel-message",{data:JSON.parse(e)})}catch{}});try{return yield this.singlePC.initialize()}catch(A){throw this.fallbackToMPC(),new oi({code:lt.SPC_INITIALIZED_FAILED,message:A?.message})}}})}doJoin(A,e){return new Promise((o,a)=>KA(this,null,function*(){var c,d,C,y,S,b,V,J;A.privateMapKey&&(this.privateMapKey=A.privateMapKey),A.latencyLevel&&(this.latencyLevel=A.latencyLevel),this.signalChannel.once(W2,MA=>{this.clearJoinTimeout(),U.emit(sA.JOIN_SIGNAL_CONNECTION_END,{room:this,error:MA}),a(MA)}),wr((d=(c=this.scheduleResult)==null?void 0:c.config)==null?void 0:d.singlePC)&&mM&&(this.enableSPC=this.scheduleResult.config.singlePC),this.keyPointManager.setConnectionType(this.singlePC?1:2),(!((y=(C=this.scheduleResult)==null?void 0:C.config)!=null&&y.jitterDelay)&&!((b=(S=this.scheduleResult)==null?void 0:S.config)!=null&&b.jitterDelayAux)||!cQ)&&e&&this.playoutDelay&&(this._log.info("set playoutDelay",JSON.stringify(this.playoutDelay)),e.playoutDelay=this.playoutDelay);let gA={roomId:String(A.roomId||A.strRoomId),useStringRoomId:this.useStringRoomId,privateMapKey:this.privateMapKey,latencyLevel:this.latencyLevel,trtcRole:A.role,trtcScene:this.scene==="live"?2:1,sdpSemantics:this.sdpSemantics,version:this._version,ua:navigator&&navigator.userAgent||"",terminalType:Cn(),netType:xf(),bussinessInfo:this._businessInfo,ability:e,sdkType:this._sdkType,userSig:this.userSig,receiveMix:!0,isChorus:!!this.enableChorus,enableNtpAudioFrame:!!this.enableChorus&&O0(),transcription:this._enableDataChannel,downUseVp8:((V=this.scheduleResult.config)==null?void 0:V.downUseVp8)||!1};this._log.debug("join room signal data: ".concat(JSON.stringify(gA)));let CA=5e3;(J=this.scheduleResult.config)!=null&&J.enterRoomTimeout&&this.scheduleResult.config.enterRoomTimeout>=1&&(CA=1e3*this.scheduleResult.config.enterRoomTimeout),this._joinTimeout=window.setTimeout(()=>{a(new oi({code:lt.JOIN_ROOM_FAILED,message:Zo({key:So.JOIN_ROOM_TIMEOUT})}))},CA),U.emit(sA.JOIN_SEND_CMD,{room:this}),this.signalChannel.send(this.singlePC?aiA:KtA,gA),this.signalChannel.once(ls.JOIN_ROOM_RESULT,MA=>KA(this,null,function*(){this.clearJoinTimeout();let{code:ee,message:Be,data:Pe,tinyId:Me}=MA.data;U.emit(sA.JOIN_RECEIVED_CMD_RES,{room:this,code:ee}),ee===0?(this._log.info("Join room success, start heartbeat"),Me&&(this.tinyId=Me),this.startHeartbeat(),this.syncUserList(),this.startSyncUserListInterval(),this._firstPublishedList=Pe.publishers,this._iceServersFromJoin=Pe.iceServer?[Pe.iceServer]:[],this.singlePC&&this.singlePC.setIceServers(this.getIceServers()).then(()=>{var fi;(fi=this.singlePC)==null||fi.connect(Bo(pi({},Pe.ability),{useVp8:Pe.ability.useVp8||!!A.useVp8,useH265:Pe.ability.useH265&&!!A.useH265})).catch(()=>{})}),o()):(this._log.error("Join room failed result: ".concat(ee," error: ").concat(Be)),a(new oi({code:lt.JOIN_ROOM_FAILED,extraCode:ee,message:Zo({key:So.JOIN_ROOM_FAILED,data:{error:Be,code:ee}})})))}))}))}reJoin(){return KA(this,null,function*(){if(this.isJoined)try{this._log.warn("reJoin pending: ".concat(this.joinParams.roomId));let A,e=[];if(this.singlePC&&(this.singlePC.close(),this.singlePC=null,e.push(this.initSinglePC().then(o=>(A=o,o)))),this.signalChannel&&(this.signalChannel.close(),e.push(this.signalChannel.connect())),yield Promise.all(e),yield this.doJoin(Bo(pi({},this.joinParams),{role:this.role==="anchor"?20:21,privateMapKey:this.privateMapKey,latencyLevel:this.latencyLevel}),A),this._log.warn("reJoin success"),sn.logSuccessEvent({userId:this.userId,eventType:Va.REJOIN}),this.singlePC){let o=a=>{var c;a.state==="CONNECTED"&&((c=this.singlePC)==null||c.off(n_.CONNECTION_STATE_CHANGED,o),this.uplinkConnection instanceof cz&&(this.uplinkConnection.installEvents(),this.uplinkConnection.onSinglePCReconnected()),this.remotePublishedUserMap.forEach(d=>{d.installEvents(),d.onSinglePCReconnected()}))};this.singlePC.on(n_.CONNECTION_STATE_CHANGED,o),this.checkConnectionsToReconnect(),this.uplinkConnection instanceof e1&&!this.uplinkConnection.getIsReconnecting()&&this.uplinkConnection.startReconnection()}}catch(A){this._log.warn("reJoin fail ".concat(A)),this.reset(),sn.logFailedEvent({userId:this.userId,eventType:Va.REJOIN,error:A}),this.emit("error",new oi({code:lt.JOIN_ROOM_FAILED,message:Zo({key:So.REJOIN_ROOM_FAILED,data:{roomId:this.joinParams.roomId}})}))}else this._log.warn("reJoin abort")})}initialize(A){return KA(this,null,function*(){var e,o;if(!(A!=null&&A.isPrelink)&&this.prelinkPromise&&(yield this.prelinkPromise),(e=this.signalChannel)!=null&&e.isPrelinkValid(this.sdkAppId,this.userId,this.userSig))return this._log.info("reuse prelink signal channel"),void this.signalChannel.consumePrelink();(o=this.signalChannel)!=null&&o.prelink&&this.signalChannel.close();let a,{mainUrl:c,backupUrl:d}=this.getSignalChannelUrl(),C=this.signalChannel||function(S){return[...X2.values()].find(V=>V.room.userId===S&&!V.room.isJoined)||null}(this.userId),y=!!(C&&C.isConnected&&C.keepAlive&&C.userId===this.userId);return Array.isArray(this.scheduleResult.domains)&&this.scheduleResult.domains.length>0&&(a=this.scheduleResult.domains[0]),this._log.info("".concat(y?"reuse":"setup"," signal channel")),y?(C.url=c,C.backupUrl=d,C.room.setSignalChannel(null),C.room=this,this.signalChannel=C):(C&&C.close(),this.signalChannel=new V5({sdkAppId:this.sdkAppId,userId:this.userId,userSig:this.userSig,url:c,backupUrl:d,room:this,signalDomainWhenUnifiedProxy:this.proxy_unified?a:void 0,prelink:A?.isPrelink}),this._customMessageManager=new qiA(this,this.signalChannel),this._customMessageManager.on("message",S=>{this.emit("custom-message",S)})),this.networkQuality||(this.networkQuality=new j5({signalChannel:this.signalChannel,room:this}),this.networkQuality.on(j5.EVENT_NETWORK_QUALITY,S=>{var b;this.emit("network-quality",S),(b=this.singlePC)==null||b.detectTCPAndUDP(S)})),XE(this,this.signalChannel).add(UK,S=>{U.emit(sA.SIGNAL_CONNECTION_STATE_CHANGED,pi({room:this},S)),this.emit("signal-connection-state-changed",S)}).add(JtA,S=>{this.reset(),this.emit("error",S)}).add(ls.PEER_JOIN,S=>{let{srcTinyId:b,userId:V,role:J,fromType:gA}=S.data.data;this.userManager.addUser({userId:V,tinyId:b,role:J,fromType:gA})}).add(ls.PEER_LEAVE,S=>{let{userId:b,reason:V=0}=S.data.data;this.userManager.deleteUser(b,V)}).add(ls.UPDATE_REMOTE_MUTE_STAT,S=>{this._lastHeartBeatTime>0&&Date.now()-this._lastHeartBeatTime>=1e4&&this.doHeartbeat(),this.onPublishedUserList(S.data)}).add(ls.CLIENT_BANNED,S=>{let b=S.data.data,{reason:V}=b;if(sn.uploadEvent({log:"stat-banned:".concat(V),userId:this.userId}),V==="user_time_out")return this._log.warn("".concat(V," last heart beat time: ").concat(this._lastHeartBeatTime," interval: ").concat(Date.now()-this._lastHeartBeatTime,", visibility: ").concat(document.visibilityState)),void this.reJoin();this._log[V==="kick"?"error":"info"]("user was banned because of [".concat(V,"]")),this.reset(),this.emit("banned",{reason:V})}).add(ls.SEND_SWITCH_ROOM_SUBED_REQ,S=>{if(!this.singlePC)return;let{subList:b}=S.data.data;this._log.info("auto subscribe ".concat(Vd(b,{keysToInclude:["userId"]}))),b.forEach(V=>{this.singlePC.autoSubscribedUserMap.set(V.userId,V)}),this.resolveSwitchRoomSubedReq()}).add(ls.FALLBACK_CODEC,S=>KA(this,null,function*(){var b,V,J,gA,CA;let MA=S.data.data;((b=MA.videoControlInfo)==null?void 0:b.enableH265Enc)===0&&((V=this.singlePC)==null?void 0:V.videoCodec)==="h265"&&(this._log.warn("fallback codec enableH265Enc: ".concat((J=MA.videoControlInfo)==null?void 0:J.enableH265Enc)),Ai.addCount({key:513e3}),yield(gA=this.singlePC)==null?void 0:gA.switchVideoEncoder("h264"),yield(CA=this.uplinkConnection)==null?void 0:CA.sendMediaSettings())})),this.signalChannel.once(k5,S=>{this.tinyId=S.signalInfo.tinyId,U.emit(sA.JOIN_SIGNAL_CONNECTION_END,{room:this})}),U.emit(sA.JOIN_SIGNAL_CONNECTION_START,{room:this}),yield this.signalChannel.connect(),y&&U.emit(sA.JOIN_SIGNAL_CONNECTION_END,{room:this}),y})}setSignalChannel(A){this.signalChannel=A,A||kn(this)}leave(){return KA(this,null,function*(){var A;try{yield this.doHeartbeat()}catch{}this._log.info("leave() => leaving room"),U.emit(sA.LEAVE_SEND_CMD,{room:this}),(A=this.signalChannel)==null||A.send(jtA),this.switchRoomSubedReq=void 0,this._changeBigSmallRecords.clear()})}clearNetworkQuality(){this.networkQuality&&(this.networkQuality.stop(),delete this.networkQuality)}closeConnections(){this.remotePublishedUserMap.forEach(A=>{this.closeDownLinkConnection(A.userId,"you exitRoom")})}clearJoinTimeout(){clearTimeout(this._joinTimeout),this._joinTimeout=-1}startHeartbeat(){this._heartbeat===-1&&(this._heartbeat=_r.run("ric",this.doHeartbeat.bind(this),{delay:2e3}),this.enableChorus&&this.startUpdateNTPTime())}stopHeartbeat(){this._heartbeat!==-1&&(this._log.info("stopHeartbeat"),_r.clearTask(this._heartbeat),this._heartbeat=-1,this._lastHeartBeatTime=-1)}doHeartbeat(){return KA(this,null,function*(){var A;let e=this.badCaseDetector.getMonitorFreeze(),o=yield this._stats.getStatsReport({uplinkConnection:this.uplinkConnection,downlinkConnections:this.remotePublishedUserMap,freezeMap:e});this.badCaseDetector.resetMonitor();let a=(A=this.signalChannel)!=null&&A.isConnected?function(d){if($0.has(d)){let C=$0.get(d).map(y=>({uint32_event_id:y.eventId,uint64_date:y.timestamp,str_userid:y.remoteUserId,uint32_param1:y.param1,uint32_param2:y.param2,uint32_video_stream_type:y.streamType}));return $0.delete(d),C}return[]}(this.userId):[],c=Bo(pi({str_sdk_version:Yw,uint64_datetime:new Date().getTime(),msg_user_info:{str_identifier:this.userId,uint64_tinyid:this.tinyId},msg_event_msg:a,str_acc_ip:this.getSignalInfo().relayIp,str_client_ip:this.getSignalInfo().clientIp},o),{msg_device_info:pi({uint32_terminal_type:15,str_device_name:oQ(),str_os_version:"",uint32_net_type:xf()},o.msg_device_info)});if(this.heartbeatReport=c,this.heartbeatCount++,U.emit(sA.HEARTBEAT_REPORT,{room:this,report:c}),this.signalChannel){if(this.signalChannel.isConnected){this.signalChannel.send(WtA,c);let d=Date.now();this._lastHeartBeatTime>0&&d-this._lastHeartBeatTime>1e4&&this._log.warn("heartbeat took ".concat(d-this._lastHeartBeatTime)),this._lastHeartBeatTime=d,this.signalChannel.isOnline||(this._log.warn("signal channel is not online"),this.signalChannel.startReconnection())}this.emit("heartbeat-report",Bo(pi({},c),{bytes_sent:this._stats.totalBytesSent+this.signalChannel.bytesSent,bytes_received:this._stats.totalBytesReceived+this.signalChannel.bytesReceived}))}!this._isRelayChanged&&this.isRelayMaybeFailed()&&(this.reJoin(),this._isRelayChanged=!0)})}onPublishedUserList(A){if(!this.isJoined)return;let e=!1,o=A.data.userList||[],a=A.data.mixRobotList||[],c=[];for(let C of o){if(C.flag===rb)continue;let{userId:y,srcTinyId:S,flag:b,fromType:V}=C;y===this.userId&&(e=!0,this.uplinkConnection&&(this.uplinkConnection.flag=b),this.localPublishFlag!==b&&(this.localPublishFlag=b,this.emit("local-publish-flag-changed",b))),c.push({userId:y,tinyId:S,flag:b,fromType:V})}let d=[...a.map(C=>{let{userId:y,srcTinyId:S,flag:b,mixUserList:V,fromType:J}=C;return{userId:y,tinyId:S,flag:b,isRobot:!0,mixUserList:V,fromType:J}}),...c];d.forEach(C=>{let{userId:y}=C,S=this.remotePublishedUserMap.get(y);S&&this.checkSubscribeBigSmallVideo(S)}),A.data.fakeMixUser&&(A.data.fakeMixUser.tinyId=A.data.fakeMixUser.srcTinyId,d.push(A.data.fakeMixUser)),U.emit(sA.RECEIVED_PUBLISHED_USER_LIST,{room:this,publishedUserList:d}),e||(this.localPublishFlag=0,this.emit("local-publish-flag-changed",0)),this.userManager.setRemotePublishedUserList(d)}closeUplink(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"you unpublished";this.uplinkConnection&&(this.localTracks.size>0&&this.uplinkConnection.doUnpublish().catch(()=>{}),this.uplinkConnection.close(A),A==="you exitRoom"&&(this.uplinkConnection.destroy(),this.uplinkConnection=null),this.uplinkConnection instanceof e1&&(this.uplinkConnection=null)),this.localTracks.forEach(e=>e.unpublish()),this.localTracks.clear()}createDownlinkConnection(A){let{userId:e,tinyId:o,flag:a,isRobot:c,fromType:d}=A,C=new(this.singlePC?JiA:q5)({userId:e,tinyId:o,room:this,signalChannel:this.signalChannel,enableSEI:this.enableSEI,flag:a,isRobot:c,fromType:d});this.userManager.addRemotePublishedUser(C),this.installDownlinkEvents(C,e),this.emit("remote-published",C)}closeDownLinkConnection(A){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"remote user unpublished",o=this.remotePublishedUserMap.get(A);o&&(o.close(e),this.emit("remote-unpublished",o))}installDownlinkEvents(A,e){A.on("error",o=>{let a=o.getCode();a!==lt.ICE_TRANSPORT_ERROR&&(a===lt.DOWNLINK_RECONNECTION_FAILED&&this.closeDownLinkConnection(e),this.emit("error",o))}),A.on("connection-state-changed",o=>{this.emit("media-connection-state-changed",Bo(pi({},o),{userId:A.userId}))})}startSyncUserListInterval(){this._syncUserListInterval===-1&&(this._syncUserListInterval=_r.run("ric",this.syncUserList.bind(this)))}stopSyncUserListInterval(){_r.clearTask(this._syncUserListInterval),this._syncUserListInterval=-1}syncUserList(){return this.getUserList().then(A=>{this.userManager.setUserList(A)}).catch(A=>{this._log.debug("sync user list failed: ".concat(A))})}getUserList(){var A;return(A=this.signalChannel)!=null&&A.isConnected?this.signalChannel.sendWaitForResponse({command:siA,responseCommand:ls.USER_LIST_RES,enableLog:!1,timeout:2e3}).then(e=>{let{data:o}=e,{code:a,message:c}=o;if(a===0)return(o.data&&o.data.userList||[]).map(d=>{let{userId:C,srcTinyId:y,role:S,fromType:b}=d;return{userId:C,tinyId:y,role:S,fromType:b}});throw Zo({key:So.SIGNAL_RESPONSE_FAILED,data:{signalResponse:ls.USER_LIST_RES,code:a,message:c}})}):Promise.reject("not connected")}getAllConnections(){let A=[...this.remotePublishedUserMap.values()];return this.uplinkConnection&&A.push(this.uplinkConnection),A}isRelayMaybeFailed(){if(this.signalChannel&&!this.signalChannel.isOnline||!J5)return!1;if(this.singlePC)return this.singlePC.reconnectionCount>6;let A=this.getAllConnections();if(A.length===0)return!1;for(let e=0;e{if(e instanceof Zp&&!e.getIsReconnecting()){let o=e.getPeerConnection();o&&o.connectionState===Eo.CLOSED&&(this._log.warn("[".concat(e.getUserId(),"] pc is closed but not reconnect")),e.startReconnection())}})}fallbackToMPC(){return KA(this,null,function*(){var A;if(this._log.warn("fallback to multi pc"),sn.uploadEvent({log:"stat-fallback",userId:this.userId}),this.enableSPC=!1,(A=this.singlePC)==null||A.close(),this.singlePC=null,this.isJoined&&(yield this.reJoin()),this.uplinkConnection){let e=this.uplinkConnection;this.uplinkConnection=new e1({userId:this.userId,tinyId:this.tinyId,room:this,signalChannel:this.signalChannel,enableSEI:this.enableSEI}),e.isMainStreamPublished&&(yield this.uplinkConnection.publish({localAudioTrack:e.localMainAudioTrack,localVideoTrack:e.localMainVideoTrack,isAuxiliary:!1})),e.isAuxStreamPublished&&(yield this.uplinkConnection.publish({localAudioTrack:e.localAuxAudioTrack,localVideoTrack:e.localAuxVideoTrack,isAuxiliary:!0})),e.close()}for(let e of[...this.remotePublishedUserMap.values()]){let o=new q5({userId:e.userId,tinyId:e.tinyId,room:this,signalChannel:this.signalChannel,enableSEI:this.enableSEI,flag:e.flag,remoteAudioTrack:e.remoteAudioTrack,remoteVideoTrack:e.remoteVideoTrack,remoteAuxiliaryTrack:e.remoteAuxiliaryTrack});this.installDownlinkEvents(o,e.userId),this.remotePublishedUserMap.set(e.userId,o),e.isMainStreamSubscribed&&(yield o.subscribe(e.subscribeState,"main")),e.isAuxStreamSubscribed&&(yield o.subscribe(e.subscribeState,"auxiliary"))}})}destroy(){this.isDestroyed||(this.signalChannel&&(this._log.info("destroying SignalChannel"),this.signalChannel.close(),this.signalChannel=null),super.destroy(),this._joinReject&&(this._joinReject(new oi({code:lt.INVALID_OPERATION,message:Zo({key:So.CLIENT_DESTROYED,data:{funName:"join"}})})),this.clearJoinTimeout(),this.reset()),this.firewallDetector.destroy(),this.removeAllListeners(),this.healthDetector.destroy(),_r.clearTask(this._audioVolumeIntervalId))}switchRole(A){return KA(this,null,function*(){this.role!==A&&(A==="audience"&&this.uplinkConnection&&this.closeUplink("you switch role to audience"),yield this.doSwitchRole(A))})}doSwitchRole(A){let e={command:niA,data:{role:A==="anchor"?20:21,privateMapKey:this.privateMapKey,latencyLevel:this.latencyLevel},responseCommand:ls.SWITCH_ROLE_RES,retries:1};return this._log.info("switchRole signal data: ".concat(JSON.stringify(e.data))),this.signalChannel.sendWaitForResponseWithRetry(e).then(o=>{let{code:a,message:c}=o.data;if(a!==0)throw new oi({code:lt.SWITCH_ROLE_FAILED,message:Zo({key:So.SWITCH_ROLE_FAILED,data:{message:c,code:a}})});this.role=A}).catch(o=>{throw o instanceof oi&&o.getCode()===lt.API_CALL_TIMEOUT&&(o=new oi({code:lt.SWITCH_ROLE_FAILED,message:Zo({key:So.SWITCH_ROLE_TIMEOUT})})),this._log.error(o),o})}subscribeDataChannel(){return KA(this,null,function*(){if(this.remotePublishedUserMap.size===0)return;let A=[...this.remotePublishedUserMap.values()].filter(e=>e.fromType===e0);this._log.info("subscribeDataChannel",A.map(e=>e.userId)),yield Promise.all(A.map(e=>KA(this,null,function*(){try{yield e.subscribe(Bo(pi({},e.subscribeState),{datachannel:!0}),"main")}catch(o){this._log.error("subscribeDataChannel failed:",e.userId,o)}})))})}unsubscribeDataChannel(){return KA(this,null,function*(){if(this.remotePublishedUserMap.size===0)return;let A=[...this.remotePublishedUserMap.values()].filter(e=>e.fromType===e0);this._log.info("unsubscribeDataChannel",A.map(e=>e.userId)),yield Promise.all(A.map(e=>e.unsubscribeDataChannel()))})}_initUplinkConnection(){this.uplinkConnection=this.singlePC?new cz({userId:this.userId,tinyId:this.tinyId,room:this}):new e1({userId:this.userId,tinyId:this.tinyId,room:this,signalChannel:this.signalChannel,enableSEI:this.enableSEI}),this.uplinkConnection.on("connection-state-changed",A=>{this.emit("media-connection-state-changed",Bo(pi({},A),{userId:this.userId}))}),this.uplinkConnection.on("error",A=>{let e=A.getCode();e!==lt.ICE_TRANSPORT_ERROR&&(e===lt.UPLINK_RECONNECTION_FAILED&&this.closeUplink(),this.emit("error",A))})}publish(A){return KA(this,null,function*(){var e;this.uplinkConnection||this._initUplinkConnection();let o="".concat(A.streamType," ").concat(A.isAudio&&A.isScreen?"screen":"").concat(A.kind);this._log.info("publish() => ".concat(o)),yield(e=this.singlePC)==null?void 0:e.waitForPeerConnectionConnected(),yield this.uplinkConnection.publish({localAudioTrack:A instanceof GM?A:null,localVideoTrack:A instanceof IQ?A:null,isAuxiliary:A.streamType==="auxiliary"})})}unpublish(A){return KA(this,null,function*(){if((this.scene!=="live"||this.role==="anchor")&&(this.isMainStreamPublished||this.isAuxStreamPublished)&&this.uplinkConnection){try{let e="".concat(A.streamType," ").concat(A.isAudio&&A.isScreen?"screen":"").concat(A.kind);this._log.info("unpublish() => ".concat(e)),yield this.uplinkConnection.unpublish({localAudioTrack:A instanceof GM?A:null,localVideoTrack:A instanceof IQ?A:null})}catch{}this.localTracks.size===0&&this.closeUplink("you unpublished")}})}addTrack(A){if(!this.uplinkConnection||!A.mediaTrack)return Promise.resolve();let e=this.uplinkConnection.addTrack(A);return A.publish(this,e),e}removeTrack(A){return this.uplinkConnection&&A.mediaTrack?(A.unpublish(),this.uplinkConnection.removeTrack(A)):Promise.resolve()}replaceTrack(A){return this.uplinkConnection&&A.mediaTrack&&g2()?this.uplinkConnection.replaceTrack(A).then(e=>{e&&U.emit(sA.LOCAL_TRACK_REPLACED,{track:A})}):Promise.resolve()}setBandWidth(A){return KA(this,null,function*(){this.uplinkConnection&&(yield this.uplinkConnection.setBandwidth(A),yield this.uplinkConnection.sendMediaSettings())})}enableSmall(A){return KA(this,null,function*(){if(!this.uplinkConnection||!this.uplinkConnection.localMainVideoTrack)return Promise.resolve();A&&this.uplinkConnection.localMainVideoTrack.small&&(yield this.setBandWidth({type:YA.VIDEO,videoType:YA.SMALL,bandwidth:this.uplinkConnection.localMainVideoTrack.small.bitrate})),yield this.uplinkConnection.enableSmall(A)})}subscribe(){for(var A=arguments.length,e=new Array(A),o=0;o!C.isSubscribed),e.length===0)return;let{userId:a}=e[0],c=this.remotePublishedUserMap.get(a);if(!c)return;let d=e.find(C=>C.mediaType===2)?"auxiliary":"main";try{let C=pi({},c.subscribeState);e.forEach(S=>{switch(S.mediaType){case 1:C.audio=!0;break;case 4:C.video=!0;break;case 8:C.smallVideo=!0;break;case 2:C.auxiliary=!0}});let y=this._changeBigSmallRecords.get(a);y&&y.options.smallVideo&&c.muteState.hasSmall&&C.video&&(C.video=!1,C.smallVideo=!0),U.emit(sA.SUBSCRIBE_START,{room:this,streamType:d,remotePublishedUser:c,subscribeState:C}),this._log.info("subscribe() => ".concat(a," ").concat(d," ").concat(e.map(S=>S.strMediaType).join(",")," [").concat(YK(C),"] prev: [").concat(YK(c.subscribeState),"]")),yield c.subscribe(C,d),this._log.info("subscribe ".concat(a," ").concat(d," done"));for(let S of e)S.mediaTrack||(yield S.waitHasMediaTrack());U.emit(sA.SUBSCRIBE_SUCCESS,{room:this,streamType:d,remotePublishedUser:c})}catch(C){let y=C instanceof oi?C.getCode():lt.UNKNOWN,S=C;throw C instanceof oi?y===lt.REMOTE_STREAM_NOT_EXIST&&(S=new oi({code:lt.API_CALL_ABORTED,message:Zo({key:So.API_CALL_ABORTED,data:{message:C.message,userId:a,streamType:d}})}),this._log.warn(S)):(S=new oi({code:y,message:Zo({key:So.SUBSCRIBE_FAILED,data:{message:C.message,userId:a,streamType:d}})}),this._log.error(S)),S}})}unsubscribe(){for(var A=arguments.length,e=new Array(A),o=0;oC.mediaType===2)?"auxiliary":"main";this._log.info("unsubscribe() => ".concat(a," ").concat(d," ").concat(e.map(C=>C.strMediaType).join(",")));try{yield c.unsubscribe({remoteTracks:e,streamType:d})}catch(C){this._log.warn("unsubscribe() => failed ".concat(C))}e.forEach(C=>{C.unsubscribe(),C.mediaType===8&&C.setMediaType(4)}),U.emit(sA.UNSUBSCRIBE_SUCCESS,{room:this,streamType:d,remotePublishedUser:c})})}setEncodedDataProcessingListener(A){throw new Error("Method not implemented.")}enableAudioVolumeEvaluation(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:2e3,e=arguments.length>1?arguments[1]:void 0;if(A<=0)return this._enableAudioVolumeEvaluation=!1,void _r.clearTask(this._audioVolumeIntervalId);A=Math.floor(Math.max(A,100)),U.emit(sA.AUDIO_LEVEL_INTERVAL,{interval:A}),this._audioVolumeIntervalId&&_r.clearTask(this._audioVolumeIntervalId),this._enableAudioVolumeEvaluation=!0,this._audioVolumeIntervalId=_r.run("intervalInWorker",()=>{var o;p2.isRunning?this.stopUpdateAudioLevelFromSenderStat():this.updateAudioLevelFromSenderStat(A,e);let a=[];(o=this.remotePublishedUserMap)==null||o.forEach(c=>{if(c.muteState.hasAudio){!p2.isRunning&&c.muteState.audioAvailable&&c.remoteAudioTrack.isSubscribed?this.updateDownlinkAudioLevelFromReceiver(c):c.remoteAudioTrack.volume=0;let d=Math.floor(100*c.remoteAudioTrack.getAudioLevel());a.push({userId:c.userId,volume:d,floatVolume:c.remoteAudioTrack.getInternalAudioLevel()})}}),this.emit("audio-volume",a)},{delay:A,backgroundTask:e})}updateAudioLevelFromSenderStat(A,e){return KA(this,null,function*(){var o;if(!this.uplinkConnection||!this.uplinkConnection.localMainAudioTrack||this._updateAudioLevelTaskId!==-1)return;let a=(o=this.uplinkConnection.getPeerConnection())==null?void 0:o.getSenders()[0];if(!a)return;let c=Math.max(A,500);this._log.warn("updateAudioLevelFromSenderStat ".concat(c)),this._updateAudioLevelTaskId=_r.run("intervalInWorker",()=>KA(this,null,function*(){if(!this.uplinkConnection||!this.uplinkConnection.localMainAudioTrack)return void this.stopUpdateAudioLevelFromSenderStat();let d=yield a.getStats();if(this._updateAudioLevelTaskId<0)return;let{localMainAudioTrack:C}=this.uplinkConnection;d.forEach(y=>{y.type==="media-source"&&y.audioLevel&&(C.volume=y.audioLevel)})}),{delay:c,backgroundTask:e})})}stopUpdateAudioLevelFromSenderStat(){var A;this._updateAudioLevelTaskId!==-1&&(this._log.warn("stopUpdateAudioLevelFromSenderStat"),_r.clearTask(this._updateAudioLevelTaskId),this._updateAudioLevelTaskId=-1,(A=this.uplinkConnection)!=null&&A.localMainAudioTrack&&(this.uplinkConnection.localMainAudioTrack.volume=0))}updateDownlinkAudioLevelFromReceiver(A){var e;let{audioReceiver:o}=A;if(!pk||!o)return;let a=(e=o.getSynchronizationSources()[0])==null?void 0:e.audioLevel;bn(a)?A.remoteAudioTrack.volume=Math.min(2*a,1):o.getStats().then(c=>{c.forEach(d=>{d.type==="inbound-rtp"&&bn(d.audioLevel)&&(A.remoteAudioTrack.volume=d.audioLevel)})})}getLocalAudioStats(){return KA(this,null,function*(){var A;let e={};return e[this.userId]={bytesSent:0,packetsSent:0,audioLevel:0},(A=this.uplinkConnection)!=null&&A.localMainAudioTrack&&(e[this.userId]=this.uplinkConnection.localMainAudioTrack.stat),e})}getLocalVideoStats(){return KA(this,null,function*(){var A,e;let o={};return o[this.userId]=((e=(A=this.uplinkConnection)==null?void 0:A.localMainVideoTrack)==null?void 0:e.stat)||{bytesSent:0,packetsSent:0,framesEncoded:0,framesSent:0,frameWidth:0,frameHeight:0,fpsCapture:0},o})}getTransportStats(){return KA(this,null,function*(){let A={rtt:0,downlinksRTT:{}};if(this.uplinkConnection){let e=yield this._stats.getSenderStats(this.uplinkConnection);A.rtt=e.rtt}for(let[,e]of this.remotePublishedUserMap){let o=yield this._stats.getReceiverStats(e);A.downlinksRTT[o.userId]=o.rtt}return A})}getRemoteVideoStats(A){return KA(this,null,function*(){let e={};for(let[o,a]of this.remotePublishedUserMap)A==="main"&&a.muteState.hasVideo&&(e[o]=a.remoteVideoTrack.stat),A==="auxiliary"&&a.muteState.hasAuxiliary&&(e[o]=a.remoteAuxiliaryTrack.stat);return e})}getRemoteAudioStats(){return KA(this,null,function*(){let A={};for(let[e,o]of this.remotePublishedUserMap)o.muteState.hasAudio&&(A[e]=o.remoteAudioTrack.stat);return A})}setTurnServer(A,e){this._log.info("set turn server: ".concat(JSON.stringify(A)," ").concat(e||""));let o=[];Array.isArray(A)?A.forEach(a=>o.push(Od.getTurnServer(a))):Od.isPlainObject(A)&&o.push(Od.getTurnServer(A)),this._turnServers=o,e&&(this._iceTransportPolicy=e)}sendStartMixTranscode(A){return this.signalChannel.sendWaitForResponse({command:AiA,data:A,timeout:5e3,responseCommand:ls.START_MIX_TRANSCODE_RES,commandDesc:"startMixTranscode"}).catch(e=>{if(e.code!==lt.API_CALL_ABORTED)throw e})}sendStopMixTranscode(A){return this.signalChannel.sendWaitForResponse({command:eiA,data:A,timeout:5e3,responseCommand:ls.STOP_MIX_TRANSCODE_RES,commandDesc:"stopMixTranscode"}).catch(e=>{if(e.code!==lt.API_CALL_ABORTED)throw e})}sendStartPublishCDN(A){let e=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1];return this.signalChannel.sendWaitForResponse({command:e?ztA:XtA,data:A,timeout:5e3,responseCommand:e?ls.START_PUBLISH_TENCENT_CDN_RES:ls.START_PUBLISH_GIVEN_CDN_RES,commandDesc:"startPublishCDN"}).catch(o=>{if(o.code!==lt.API_CALL_ABORTED)throw o})}sendStopPublishCDN(A){let e=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1];return this.signalChannel.sendWaitForResponse({command:e?ZtA:$tA,data:A,timeout:5e3,responseCommand:e?ls.STOP_PUBLISH_TENCENT_CDN_RES:ls.STOP_PUBLISH_GIVEN_CDN_RES,commandDesc:"stopPublishCDN"}).catch(o=>{if(o.code!==lt.API_CALL_ABORTED)throw o})}sendStartPushStreamToRoom(A){return this.signalChannel.sendWaitForResponse({command:tiA,data:A,timeout:5e3,responseCommand:ls.START_PUBLISH_CDN_STREAM_RES,commandDesc:"startPublishCDNStream"}).catch(e=>{if(e.code!==lt.API_CALL_ABORTED)throw e})}sendUpdatePushStreamToRoom(A){return this.signalChannel.sendWaitForResponse({command:iiA,data:A,timeout:5e3,responseCommand:ls.UPDATE_PUBLISH_CDN_STREAM_RES,commandDesc:"updatePublishCDNStream"}).catch(e=>{if(e.code!==lt.API_CALL_ABORTED)throw e})}sendStopPushStreamToRoom(A){return this.signalChannel.sendWaitForResponse({command:oiA,data:A,timeout:5e3,responseCommand:ls.STOP_PUBLISH_CDN_STREAM_RES,commandDesc:"stopPublishCDNStream"}).catch(e=>{if(e.code!==lt.API_CALL_ABORTED)throw e})}sendAbilityStatus(A){var e;(e=this.signalChannel)==null||e.sendWaitForResponse({command:giA,data:A,timeout:5e3,responseCommand:ls.ABILITY_STATUS_REPORT_RESULT,commandDesc:"ability status report"}).catch(o=>{})}getIceServers(A){var e,o;return this._turnServers.length>0?this._turnServers:(e=this.scheduleResult.iceServers)!=null&&e.length?this.scheduleResult.iceServers:A!=null&&A.length?A:(o=this._iceServersFromJoin)!=null&&o.length?this._iceServersFromJoin:[]}getIceTransportPolicy(){return this.forceRelay?"relay":this._iceTransportPolicy||this.scheduleResult.iceTransportPolicy||"all"}getLogger(){return this._log}enableAIVoice(){throw new Error("Method not implemented.")}getSignalChannelUrl(){let A={mainUrl:"",backupUrl:""},e=Od.getEnv();return e?(A.mainUrl="wss://".concat(Od.getTestSignalDomain(e)),A.backupUrl=A.mainUrl):this.proxy_ws?(A.mainUrl=this.proxy_ws,A.backupUrl=A.mainUrl):this.proxy_unified?(A.mainUrl="wss://".concat(this.proxy_unified),A.backupUrl=A.mainUrl):Array.isArray(this.scheduleResult.domains)&&this.scheduleResult.domains.length>0&&(A.mainUrl="wss://".concat(this.scheduleResult.domains[0]),A.backupUrl=A.mainUrl,this.scheduleResult.domains[1]&&(A.backupUrl="wss://".concat(this.scheduleResult.domains[1]))),A}getSignalInfo(){var A;return((A=this.signalChannel)==null?void 0:A.getSignalInfo())||{clientIp:"",relayIp:""}}reset(){let A=arguments.length>0&&arguments[0]!==void 0&&arguments[0];this.stopSyncUserListInterval(),this.stopHeartbeat(),this.closeConnections(),this.clearNetworkQuality(),this.closeUplink("you exitRoom"),this.signalChannel&&(A&&this.signalChannel.keepAlive&&this.signalChannel.isConnected?this.signalChannel.stopKeepAliveIn(3600):(this.signalChannel.close(),this.setSignalChannel(null))),this.localPublishFlag=0,this.heartbeatCount=0,this._stats.reset(),this.userManager.clear(),this.userManager.removeAllListeners(),this.singlePC&&(this.singlePC.close(),this.singlePC=null),this.scheduleResult={domains:null,iceServers:null,iceTransportPolicy:null,trtcAutoConf:null},this.clearPrelinkTimeout(),this.prelinkPromise=null}prelink(A,e,o,a,c,d){return KA(this,null,function*(){var C;if(this.isJoined)throw new oi({code:lt.INVALID_OPERATION,message:"already joined room"});if(!c&&!d)throw new oi({code:lt.INVALID_OPERATION,message:"roomId or strRoomId is required"});if((C=this.signalChannel)!=null&&C.prelink){if(this.signalChannel.isConnecting)return void this._log.warn("prelink is connecting, please wait");if(this.signalChannel.isConnected)return void this._log.warn("prelink is already connected")}return this.userId=e,this.sdkAppId=A,this.userSig=o,this.roomId=String(c||d),this.useStringRoomId=!(!d||c),this._log.setSdkAppId(this.sdkAppId),this._log.setUserId(this.userId),this.prelinkPromise=Promise.race([this.doPrelink(A,e,o,a,c,d),new Promise((y,S)=>{this.prelinkTimeoutId=setTimeout(()=>{S(new oi({code:lt.INVALID_OPERATION,message:"prelink timeout after ".concat(this.PRELINK_TIMEOUT,"ms")}))},this.PRELINK_TIMEOUT)})]).then(()=>{this.clearPrelinkTimeout()}).catch(y=>{throw this.clearPrelinkTimeout(),this.closePrelink().catch(()=>{}),y}),this.prelinkPromise})}doPrelink(A,e,o,a,c,d){return KA(this,null,function*(){var C,y,S;try{if(!this.proxy_ws&&!this.proxy_wt&&!this.scheduleResult.domains&&!Od.getEnv()&&(yield this.schedule({sdkAppId:A,userId:e,userSig:o,roomId:c,strRoomId:d,role:20,privateMapKey:null,businessInfo:null,streamId:null,userDefineRecordId:null},a)),(C=this.scheduleResult.config)==null||!C.prelink)throw new oi({code:lt.INVALID_OPERATION,message:"prelink failed: your sdkAppId is not supported, please contact us [https://trtc.io/contact] to enable it."});yield this.initialize({isPrelink:!0}),(y=this.signalChannel)==null||y.markPrelinkConnected({sdkAppId:A,userId:e,userSig:o}),(S=this.signalChannel)==null||S.stopPrelinkIn(this.PRELINK_EXPIRED_TIME/1e3),this._log.info("prelink success")}catch(b){throw this._log.error("prelink failed",b),b}})}clearPrelinkTimeout(){this.prelinkTimeoutId&&(clearTimeout(this.prelinkTimeoutId),this.prelinkTimeoutId=null)}closePrelink(){return KA(this,null,function*(){var A;if(this.isJoined)throw new oi({code:lt.INVALID_OPERATION,message:"close prelink failed: has joined room"});if((A=this.signalChannel)!=null&&A.prelink){if(this.signalChannel.keepAlive)return void this._log.info("skip close prelink: use keepAlive");this.reset()}})}checkSubscribeBigSmallVideo(A){return KA(this,null,function*(){let{subscribeState:e,userId:o,muteState:{hasSmall:a,hasVideo:c}}=A;if(!a&&!c||!e.video&&!e.smallVideo)return;let d=this._changeBigSmallRecords.get(o);if(!d||d.isSubscribing||d.reSubscribeCount<=0)return;let{options:C,reSubscribeCount:y}=d;if(C.video&&e.video||C.smallVideo&&e.smallVideo&&a)return;let S={audio:A.remoteAudioTrack.isSubscribed||A.remoteAudioTrack.isSubscribing,auxiliary:A.remoteAuxiliaryTrack.isSubscribed||A.remoteAuxiliaryTrack.isSubscribing,video:C.video,smallVideo:C.smallVideo,datachannel:A.subscribeState.datachannel};try{if(!a&&S.smallVideo&&(S.video=!0,S.smallVideo=!1),S.smallVideo===e.smallVideo&&S.video===e.video)return;d.isSubscribing=!0,d.reSubscribeCount=y-1,yield A.subscribe(S,"main"),A.remoteVideoTrack.setMediaType(S.smallVideo?8:4),this._log.info("change [".concat(o,"] to ").concat(S.smallVideo?"small":"big"," video successfully. count ").concat(PS-d.reSubscribeCount,".")),d.isSubscribing=!1,d.reSubscribeCount=PS}catch(b){this._log.info("change [".concat(o,"] to ").concat(S.smallVideo?"small":"big"," video failed. count ").concat(PS-d.reSubscribeCount,". reason: ").concat(b)),d.isSubscribing=!1,d.reSubscribeCount===0&&this._changeBigSmallRecords.delete(o)}})}changeType(A,e){let o={options:{video:!A,smallVideo:A},isSubscribing:!1,reSubscribeCount:PS};this._changeBigSmallRecords.set(e.userId,o),this._log.info("set [".concat(e.userId,"] video prefer type: ").concat(A?"small":"big")),this.emit("subscribe-small-video-changed",{userId:e.userId,isSmall:A});let a=this.remotePublishedUserMap.get(e.userId);a&&this.checkSubscribeBigSmallVideo(a)}get smallStreamConfig(){return this._smallStreamConfig}_initBusinessInfo(A){this._businessInfo=A.businessInfo;let e={};if(uz(A.businessInfo)&&(e=JSON.parse(A.businessInfo)),!YM(A.pureAudioPushMode)){if(!Number.isInteger(Number(A.pureAudioPushMode)))throw new oi({code:lt.INVALID_PARAMETER,message:Zo({key:So.INVALID_PURE_AUDIO})});this._pureAudioPushMode=A.pureAudioPushMode,e.Str_uc_params||(e.Str_uc_params={}),e.Str_uc_params.pure_audio_push_mod=this._pureAudioPushMode}if(!YM(A.userDefineRecordId)){let o=/^[A-Za-z0-9_-]{1,64}$/gi;if(A.userDefineRecordId.match(o)===null)throw new oi({code:lt.INVALID_PARAMETER,message:Zo({key:So.INVALID_USER_DEFINE_RECORDID})});e.Str_uc_params||(e.Str_uc_params={}),e.Str_uc_params.userdefine_record_id=A.userDefineRecordId}if(!YM(A.userDefinePushArgs)){if(!(uz(A.userDefinePushArgs)&&String(A.userDefinePushArgs)&&String(A.userDefinePushArgs).length<=256))throw new oi({code:lt.INVALID_PARAMETER,message:Zo({key:So.INVALID_USER_DEFINE_PUSH_ARGS})});e.Str_uc_params||(e.Str_uc_params={}),e.Str_uc_params.userdefine_push_args=A.userDefinePushArgs}jiA(e)||(this._businessInfo=JSON.stringify(e))}sendCustomMessage(A){var e;(e=this._customMessageManager)==null||e.send(A)}enableInsertableStreams(){return KA(this,null,function*(){if(this.singlePC&&!this.singlePC.enableInsertableStreams&&Yp)return this.singlePC.enableInsertableStreams=!0,yield this.singlePC.waitForPeerConnectionConnected(),yield this.singlePC.startReconnection()})}sendSignalMessage(A){var e;return this.signalChannel?(e=this.signalChannel)==null?void 0:e.sendWaitForResponseWithRetry(A):Promise.reject(new oi({code:lt.INVALID_OPERATION,message:"not join"}))}get enableCodecPipeline(){return this.videoManager.encodePipeline.length>0||this.videoManager.decodePipeline.length>0||this.audioManager.encodePipeline.length>0||this.audioManager.decodePipeline.length>0}get scriptTransformWorker(){var A;return(A=this.singlePC)==null?void 0:A.scriptTransformWorker}switchRoom(A){return KA(this,null,function*(){var e;if(!this.signalChannel||!this.singlePC)return;let{roomId:o,strRoomId:a,userSig:c,privateMapKey:d}=A,C=((e=this.scheduleResult.config)==null?void 0:e.autoSubscribeCount)||A?.autoSubscribeCount||1,y=String(this.useStringRoomId?a:o),S=[];for(let gA=0;gA{this.resolveSwitchRoomSubedReq=gA,_C(5e3).then(gA)}),U.emit(sA.SWITCH_ROOM_START,{room:this}),yield this.singlePC.waitForPeerConnectionConnected();try{this.userManager.clear(),V=yield this.signalChannel.sendWaitForResponse({command:IiA,responseCommand:ls.SEND_SWITCH_ROOM_RES,data:b});let{code:gA,message:CA}=V.data;if(gA!==0){this._log.error("switch room failed. result: ".concat(gA," error: ").concat(CA));let MA=new oi({code:lt.SWITCH_ROOM_FAILED,extraCode:gA,message:CA});throw U.emit(sA.SWITCH_ROOM_FAILED,{room:this,error:MA}),MA}this.userSig=c,YM(d)||(this.privateMapKey=d),U.emit(sA.SWITCH_ROOM_SUCCESS,{room:this,currentRoomId:J,targetRoomId:y})}catch(gA){throw this.singlePC.autoSubscribedSsrcGroups.clear(),this.roomId=J,this.resolveSwitchRoomSubedReq(),gA}})}isSwitchRoomSupported(){var A;let e="unable to use switchRoom API, fallback to exitRoom and enterRoom.";return((A=this.scheduleResult.config)==null?void 0:A.switchRoom)!==!0?(this._log.warn("".concat(e," Reason: this sdkAppId is not supported, please contact us [https://trtc.io/contact] to enable it.")),!1):this.scene!=="live"?(this._log.warn("".concat(e," Reason: the scene is not 'live'.")),!1):this.role!=="audience"?(this._log.warn("".concat(e," Reason: the role is not 'audience'.")),!1):!!this.singlePC||(this._log.warn("".concat(e," Reason: is not using single peerConnection.")),!1)}requestRemoteFallbackToH264(){var A;(A=this.singlePC)==null||A.requestRemoteFallbackToH264()}startUpdateNTPTime(){if(!this.signalChannel)return;let A=[];for(let e=0;e<5;e++)A.push(this.updateNTPTime());return Promise.all(A).then(e=>{var o;let a=e[0].offset,c=e[0].offset;e.forEach(y=>{a=Math.min(y.offset,a),c=Math.max(y.offset,c)});let d=Math.floor(e.reduce((y,S)=>y+S.rtt,0)/e.length),C=Math.floor(e.reduce((y,S)=>y+S.offset,0)/e.length);(c-a>30||d>50)&&setTimeout(()=>this.startUpdateNTPTime(),5e3),JB(C),(o=this.scriptTransformWorker)==null||o.postMessage({type:"ntp-offset",data:C}),this._log.debug("ntp updated offset: ".concat(C)),this.emit("ntp-time-updated")}).catch(e=>{this._log.warn("ntp updated failed: ".concat(e))})}updateNTPTime(){let A=Date.now();return this.signalChannel.sendWaitForResponse({command:uiA,responseCommand:ls.UPDATE_NETWORK_TIME_RESULT,addReceiveTime:!0,data:{clientSendTime:String(A)},enableLog:!1}).then(e=>{let o=Number(e.data.data.serverSendTime),a=Number(e.data.data.serverRecvTime),c=e.data.receiveTime||Date.now();return{rtt:c-A-(a-o),offset:(a-A+(o-c))/2}})}};return di([lc(["left",Zs.INIT],"joined"),zh({settings:{retries:1,timeout:0},onRetrying(A){this._log.warn("join retry ".concat(A))},onRetryFailed(A){this._log.error("join failed",A)},onError(A,e){this._isUsingCachedSchedule&&!this.isDestroyed?(this._log.warn("is using cached schedule, retry join"),EQ(!0),this.reset(),e()):this.signalChannel&&this.signalChannel.isConnected&&this.signalChannel.keepAlive?(this._log.warn("is using keepAlive ws, retry join"),this.signalChannel.close(),this.reset(),e()):(this.reset(),e())}}),Hr(A=>{let e=new xtA;return function(o,a,c){return KA(this,null,function*(){let d=String(o.roomId||o.strRoomId);if(this.userId=o.userId,this.sdkAppId=o.sdkAppId,this.userSig=o.userSig,this._log.setSdkAppId(this.sdkAppId),this._log.setUserId(this.userId),this.scene=a,o.privateMapKey=o.privateMapKey||"",this.isJoined)throw new oi({code:lt.INVALID_OPERATION,message:Zo({key:So.INVALID_JOIN})});if(this.checkDestroy(),e.isJoined({userId:this.userId,roomId:d,sdkAppId:this.sdkAppId,room:this}))throw new oi({code:lt.INVALID_OPERATION,message:Zo({key:So.REPEAT_JOIN,data:this.userId})});e.add({room:this,roomId:d}),this.role=o.role===21?"audience":"anchor",this._log.info("Join() => joining room: ".concat(d," useStringRoomId: ").concat(this.useStringRoomId," scene: ").concat(this.scene," role: ").concat(this.role)),U.emit(sA.JOIN_START,{room:this,roomId:d,params:o});let C=Od.getEnv();C||(C=HB.QCLOUD,this.proxy_ws&&(this.proxy_ws.startsWith(Nf.OLD_CLOUD_LADDER)?C=HB.OLD_CLOUD_LADDER:this.proxy_ws.startsWith(Nf.WEBRTC)&&(C=HB.WEBRTC))),sn.setConfig({env:C,sdkAppId:String(this.sdkAppId),userId:this.userId,roomId:d}),oe.checkSystemRequirementsInternal(c).then(y=>{this.checkSystemResult=y,YtA.call(this)});try{!this.prelinkPromise&&!this.proxy_ws&&!this.proxy_wt&&!this.scheduleResult.domains&&!Od.getEnv()&&(yield this.schedule(o,c));let y=yield A.call(this,o,a,c);return this.roomId=d,this._joinedTimestamp=Od.performanceNow(),U.emit(sA.JOIN_SUCCESS,{room:this}),c===30&&!o.component&&sn.uploadEvent({log:"stat-conv-".concat(Number(bp),"-").concat(location.hostname),userId:this.userId}),y}catch(y){throw e.delete({room:this,roomId:d}),U.emit(sA.JOIN_FAILED,{room:this,error:y}),y}})}})],Dy.prototype,"join"),di([lc("joined","left",{ignoreError:!0,success(){this.reset(!0)}}),Hr(A=>function(){for(var e=arguments.length,o=new Array(e),a=0;aA.mediaType),Hr(A=>function(){for(var e=arguments.length,o=new Array(e),a=0;ad.outMediaTrack&&d.state==="ready"),!o.length))return;U.emit("61",{room:this});let c=A.apply(this,o);return Promise.all(o.map(d=>d.publish(this,c)))})}),zh({settings:{retries:Lf,timeout:A=>yp(A)},onError(A,e,o,a){let[c]=a;var d;(d=A.message)!=null&&d.includes("timeout")?(this._log.warn("publish ".concat(c.strMediaType," timeout"),A),e()):(this._log.error("publish ".concat(c.strMediaType," failed: ").concat(A)),o(A),U.emit(sA.PUBLISH_FAILED,{room:this}))}})],Dy.prototype,"publish"),di([q0({fnName:"publish"}),dy(A=>A.mediaType),Hr(A=>function(){for(var e=arguments.length,o=new Array(e),a=0;ad.unpublish()),c}),TM(function(){var A,e;this.localTracks.size===0&&NI()&&((e=(A=this.singlePC)==null?void 0:A.getPeerConnection())==null||e.getSenders().forEach(o=>o.track&&o.replaceTrack(null)))})],Dy.prototype,"unpublish"),di([B4(A=>{if(A.code!==lt.API_CALL_ABORTED)throw A}),dy(A=>A.userId)],Dy.prototype,"replaceTrack"),di([dy(function(){for(var A=arguments.length,e=new Array(A),o=0;ofunction(){for(var e=arguments.length,o=new Array(e),a=0;a!d.isSubscribed&&d.subscribe(c)),c}),zh({settings:{retries:Lf,timeout:A=>yp(A)},onError(A,e,o,a){if(A.message.includes("timeout"))this._log.warn("subscribe timeout"),e();else{let c=A?.code===lt.API_CALL_ABORTED;this._log[c?"warn":"error"]("subscribe failed ".concat(a.map(d=>d.strMediaType).join(","),": ").concat(A)),o(A),U.emit(sA.SUBSCRIBE_FAILED,{room:this,remoteTracks:a})}}})],Dy.prototype,"subscribe"),di([q0({fnName:"subscribe",callback(){for(var A=arguments.length,e=new Array(A),o=0;o{let c=this.remotePublishedUserMap.get(a.userId);c&&!c.isMainStreamSubscribed&&!c.isAuxStreamSubscribed&&c.close("you unsubscribed")})}}),dy(function(){for(var A=arguments.length,e=new Array(A),o=0;oi in t?LY(t,i,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[i]=r,JnA=(t,i)=>{for(var r in i||(i={}))e9.call(i,r)&&n3(t,r,i[r]);if(r8)for(var r of r8(i))VnA.call(i,r)&&n3(t,r,i[r]);return t},HnA=(t,i)=>function(){return i||(0,t[A9(t)[0]])((i={exports:{}}).exports,i),i.exports},qnA=(t,i,r,l)=>{if(i&&typeof i=="object"||typeof i=="function")for(let u of A9(i))e9.call(t,u)||u===r||LY(t,u,{get:()=>i[u],enumerable:!(l=$6(i,u))||l.enumerable});return t},KnA=(t,i,r)=>(r=t!=null?xnA(YnA(t)):{},qnA(LY(r,"default",{value:t,enumerable:!0}),t)),S_=(t,i,r,l)=>{for(var u,B=$6(i,r),f=t.length-1;f>=0;f--)(u=t[f])&&(B=u(i,r,B)||B);return B&&LY(i,r,B),B},pn=(t,i,r)=>n3(t,typeof i!="symbol"?i+"":i,r),jnA=HnA({"../node_modules/.pnpm/eventemitter3@4.0.7/node_modules/eventemitter3/index.js"(t,i){var r=Object.prototype.hasOwnProperty,l="~";function u(){}function B(k,F,j){this.fn=k,this.context=F,this.once=j||!1}function f(k,F,j,IA,rA){if(typeof j!="function")throw new TypeError("The listener must be a function");var pA=new B(j,IA||k,rA),lA=l?l+F:F;return k._events[lA]?k._events[lA].fn?k._events[lA]=[k._events[lA],pA]:k._events[lA].push(pA):(k._events[lA]=pA,k._eventsCount++),k}function w(k,F){--k._eventsCount===0?k._events=new u:delete k._events[F]}function _(){this._events=new u,this._eventsCount=0}Object.create&&(u.prototype=Object.create(null),new u().__proto__||(l=!1)),_.prototype.eventNames=function(){var k,F,j=[];if(this._eventsCount===0)return j;for(F in k=this._events)r.call(k,F)&&j.push(l?F.slice(1):F);return Object.getOwnPropertySymbols?j.concat(Object.getOwnPropertySymbols(k)):j},_.prototype.listeners=function(k){var F=l?l+k:k,j=this._events[F];if(!j)return[];if(j.fn)return[j.fn];for(var IA=0,rA=j.length,pA=new Array(rA);IA{if(!navigator.userAgent.includes("Firefox"))return t;const i=t.split(`\r -`),r=[],l=[];i.forEach(f=>{const w=f.toLowerCase();w.includes("a=rtpmap")&&w.includes("h264")&&r.push(f)}),r.length>1&&l.push(...r.slice(1));const u=l.map(f=>{const w=/a=rtpmap:(\d+)\s/.exec(f);return w&&w.length>1?w[1]:null}).filter(f=>f!==null),B=[];return i.forEach(f=>{let w=f;if(f.includes("a=setup")&&(w="a=setup:passive"),(f.includes("m=audio")||f.includes("m=video"))&&(w=f.split(" ").filter((_,k)=>k<3||!u.includes(_)).join(" ")),f.includes("a=fmtp")||f.includes("a=rtcp-fb")||f.includes("a=rtpmap")){const _=/a=(?:fmtp|rtcp-fb|rtpmap):(\d+)\s/.exec(f);if(_&&_.length>1&&u.includes(_[1]))return}B.push(w)}),B.join(`\r -`)},a8=t=>{const i=t.split(`\r -`),r=[];i.forEach(f=>{const w=f.toLowerCase();w.includes("a=rtpmap")&&w.includes("h264")&&r.push(f)});const l=r.map(f=>{const w=/a=rtpmap:(\d+)\s/.exec(f);return w&&w.length>1?w[1]:null}).filter(f=>f!==null),u=[];i.forEach(f=>{let w=f;if(f.includes("a=fmtp:111")&&(w=`${f};stereo=1`),f.includes("a=fmtp")){const _=/a=fmtp:(\d+)\s/.exec(f);_&&_.length>1&&l.includes(_[1])&&(w=`${f};sps-pps-idr-in-keyframe=1`)}u.push(w)});const B=u.join(`\r -`);return znA(B)},ZnA="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict",nj=(t=21)=>{let i="",r=crypto.getRandomValues(new Uint8Array(t|=0));for(;t--;)i+=ZnA[63&r[t]];return i},B_=t=>typeof t=="function",XnA=0,$nA=1,g8=2;function ArA({retryFunction:t,settings:i,onError:r,onRetrying:l,onRetryFailed:u,onRetrySuccess:B,context:f}){return function(...w){const{retries:_=5,timeout:k=1e3}=i;let F=0,j=-1,IA=XnA;const rA=async(pA,lA)=>{const cA=f||this;try{const TA=await t.apply(cA,w);F>0&&B&&B.call(this,F),F=0,pA(TA)}catch(TA){const WA=()=>{clearTimeout(j),F=0,IA=g8,lA(TA)},zA=()=>{IA!==g8&&F<(B_(_)?_():_)?(F++,IA=$nA,B_(l)&&l.call(this,F,WA),j=window.setTimeout(()=>{j=-1,rA(pA,lA)},B_(k)?k(F):k)):(WA(),B_(u)&&u.call(this,TA))};B_(r)?r.call(this,{error:TA,retry:zA,reject:lA,retryFuncArgs:w,retriedCount:F}):zA()}};return new Promise(rA)}}var erA=ArA,hQ=new WeakMap;function trA({settings:t={retries:5,timeout:2e3},onError:i,onRetrying:r,onRetryFailed:l}){return function(u,B,f){const w=erA({retryFunction:f.value,settings:t,onError({error:_,retry:k,reject:F,retryFuncArgs:j}){var IA;i?i.call(this,_,()=>{var rA;(rA=hQ.get(u))!=null&&rA.has(B)?k():F(_)},F,j):(IA=hQ.get(u))!=null&&IA.has(B)?k():F(_)},onRetrying(_,k){var F;B_(r)&&r.call(this,_,k),(F=hQ.get(u))!=null&&F.has(B)&&(hQ.get(u).get(B).stopRetry=k)},onRetryFailed:l});return f.value=function(..._){const k=hQ.get(u);return k?k.set(B,{args:_}):hQ.set(u,new Map([[B,{args:_}]])),w.apply(this,_).finally(()=>{var F;return(F=hQ.get(u))==null?void 0:F.delete(B)})},f}}function irA({fnName:t,callback:i,validateArgs:r=!0}){return function(l,u,B){const f=B.value;return B.value=function(...w){var _,k;if((_=hQ.get(l))!=null&&_.has(t)){const{stopRetry:F,args:j}=hQ.get(l).get(t);let IA=!0;if(r){for(const rA of j)if(!w.find(pA=>pA===rA)){IA=!1;break}}IA&&(i&&i.apply(this,w),F&&F(),(k=hQ.get(l))==null||k.delete(t))}return f.apply(this,w)},B}}var orA=class{constructor(t,i){this.core=i,pn(this,"peerConnection"),pn(this,"audioTransceiver",null),pn(this,"videoTransceiver",null),pn(this,"timerId",null),pn(this,"callback",null),pn(this,"previousRawStats",null),pn(this,"_prevReportTime",0),pn(this,"_prevDecoderImplementation",""),pn(this,"_decodeMap",new Map),this.peerConnection=t,this.findTransceivers()}get statInterval(){return this._prevReportTime===0?2:(Date.now()-this._prevReportTime)/1e3}findTransceivers(){const t=this.peerConnection.getTransceivers();for(const i of t)if(i.receiver&&i.receiver.track){const{track:r}=i.receiver;r.kind==="audio"?this.audioTransceiver=i:r.kind==="video"&&(this.videoTransceiver=i)}}start(t,i=2e3){this.stop(),this.callback=t,this.collectStats(),this.timerId=window.setInterval(()=>{this.collectStats()},i)}stop(){this.timerId!==null&&(clearInterval(this.timerId),this.timerId=null),this.callback=null,this.previousRawStats=null,this._prevReportTime=0}async collectStats(){if(this.callback)try{const t=await this.peerConnection.getStats(),i=new Set(["inbound-rtp","track","candidate-pair","media-source","codec"]),r=[];t.forEach(w=>i.has(w.type)&&r.push(w));const l=Date.now(),u=this.parseAudioStats(r),B=this.parseVideoStats(r),f=this.parseNetworkStats(r);this._prevReportTime=l,this.callback({audio:u,video:B,network:f})}catch(t){this.core.log.error("Failed to collect WebRTC stats:",t)}}getDifferenceValue(t,i){if(this.core.utils.isUndefined(t))return i;const r=(i||0)-t;return r<0?0:r}parseAudioStats(t){var i,r,l,u;const B={bitrate:0,volume:0,packetLossRate:0,jitterBufferDelay:0,bytesReceived:0,packetsReceived:0,packetsLost:0};for(const f of t){if(f.type==="inbound-rtp"&&(f.mediaType==="audio"||f.kind==="audio")){if(B.bytesReceived=f.bytesReceived||0,B.packetsReceived=f.packetsReceived||0,B.packetsLost=f.packetsLost||0,this.previousRawStats&&this.previousRawStats.audio){const k=this.getDifferenceValue(this.previousRawStats.audio.bytesReceived,B.bytesReceived);B.bitrate=Math.round(8*k/this.statInterval/1e3)}const w=this.getDifferenceValue((i=this.previousRawStats)==null?void 0:i.audio.packetsLost,B.packetsLost),_=this.getDifferenceValue((r=this.previousRawStats)==null?void 0:r.audio.packetsReceived,B.packetsReceived)+w;if(_>0&&(B.packetLossRate=Math.round(w/_*100)),this.core.utils.isUndefined(f.audioLevel)||(B.volume=f.audioLevel||0),f.jitterBufferDelay&&f.jitterBufferEmittedCount){let{jitterBufferEmittedCount:k}=f,{jitterBufferDelay:F}=f;(l=this.previousRawStats)!=null&&l.audio&&(k=this.getDifferenceValue(this.previousRawStats.audio.jitterBufferEmittedCount,f.jitterBufferEmittedCount),F=this.getDifferenceValue(this.previousRawStats.audio.jitterBufferDelay,f.jitterBufferDelay)),k>0&&(B.jitterBufferDelay=Math.floor(F/k*1e3)),this.previousRawStats||this.initPreviousRawStats(),this.previousRawStats.audio.jitterBufferDelay=f.jitterBufferDelay,this.previousRawStats.audio.jitterBufferEmittedCount=f.jitterBufferEmittedCount}this.previousRawStats||this.initPreviousRawStats(),this.previousRawStats.audio.bytesReceived=B.bytesReceived,this.previousRawStats.audio.packetsReceived=B.packetsReceived,this.previousRawStats.audio.packetsLost=B.packetsLost}!this.core.utils.isUndefined(f.audioLevel)&&((u=this.audioTransceiver)!=null&&u.receiver.track)&&f.trackIdentifier===this.audioTransceiver.receiver.track.id&&(B.volume=f.audioLevel||0)}return B}parseVideoStats(t){var i,r,l,u,B;const f={bitrate:0,frameRate:0,width:0,height:0,packetLossRate:0,jitterBufferDelay:0,bytesReceived:0,packetsReceived:0,packetsLost:0,framesDecoded:0};for(const w of t){if(w.type==="codec"&&this._decodeMap.set(w.id,w),w.type==="inbound-rtp"&&(w.mediaType==="video"||w.kind==="video")){if(f.bytesReceived=w.bytesReceived||0,f.packetsReceived=w.packetsReceived||0,f.packetsLost=w.packetsLost||0,f.framesDecoded=w.framesDecoded||0,this.core.utils.isUndefined(w.framesPerSecond)||(f.frameRate=Math.round(w.framesPerSecond)),w.decoderImplementation&&this._prevDecoderImplementation!==w.decoderImplementation){const F=this._decodeMap.get(w.codecId),j=((i=F?.mimeType)==null?void 0:i.split("/")[1])||"unknown",IA=w.powerEfficientDecoder;this.core.log.info(`decoderImplementation change to ${w.decoderImplementation}(${j}) HWDecoder: ${IA}`),this._prevDecoderImplementation=w.decoderImplementation}if(this.previousRawStats&&this.previousRawStats.video){const F=this.getDifferenceValue(this.previousRawStats.video.bytesReceived,f.bytesReceived);f.bitrate=Math.round(8*F/this.statInterval/1e3)}const _=this.getDifferenceValue((r=this.previousRawStats)==null?void 0:r.video.packetsLost,f.packetsLost),k=this.getDifferenceValue((l=this.previousRawStats)==null?void 0:l.video.packetsReceived,f.packetsReceived)+_;if(k>0&&(f.packetLossRate=Math.round(_/k*100)),w.jitterBufferDelay&&w.jitterBufferEmittedCount){let{jitterBufferEmittedCount:F}=w,{jitterBufferDelay:j}=w;(u=this.previousRawStats)!=null&&u.video&&(F=this.getDifferenceValue(this.previousRawStats.video.jitterBufferEmittedCount,w.jitterBufferEmittedCount),j=this.getDifferenceValue(this.previousRawStats.video.jitterBufferDelay,w.jitterBufferDelay)),F>0&&(f.jitterBufferDelay=Math.floor(j/F*1e3)),this.previousRawStats||this.initPreviousRawStats(),this.previousRawStats.video.jitterBufferDelay=w.jitterBufferDelay,this.previousRawStats.video.jitterBufferEmittedCount=w.jitterBufferEmittedCount}this.previousRawStats||this.initPreviousRawStats(),this.previousRawStats.video.bytesReceived=f.bytesReceived,this.previousRawStats.video.packetsReceived=f.packetsReceived,this.previousRawStats.video.packetsLost=f.packetsLost}!this.core.utils.isUndefined(w.frameWidth)&&((B=this.videoTransceiver)!=null&&B.receiver.track)&&w.trackIdentifier===this.videoTransceiver.receiver.track.id&&(f.width=w.frameWidth,f.height=w.frameHeight)}return f}parseNetworkStats(t){const i={rtt:0};for(const r of t)if(r.type==="candidate-pair"&&(r.selected||r.state==="succeeded")&&this.core.utils.isNumber(r.currentRoundTripTime)){i.rtt=Math.floor(1e3*r.currentRoundTripTime);break}return i}initPreviousRawStats(){this.previousRawStats={timestamp:Date.now(),audio:{bytesReceived:0,packetsReceived:0,packetsLost:0},video:{bytesReceived:0,packetsReceived:0,packetsLost:0}}}},srA=KnA(jnA()),c8=Symbol("instance"),c1=Symbol("cacheResult"),rj=class{constructor(i,r,l){this.oldState=i,this.newState=r,this.action=l,this.aborted=!1}abort(i){this.aborted=!0,GL.call(i,this.oldState,new Error(`action '${this.action}' aborted`))}toString(){return`${this.action}ing`}},aj=class extends Error{constructor(i,r,l){super(r),this.state=i,this.message=r,this.cause=l}};function nrA(t){return typeof t=="object"&&t&&"then"in t}var NL=new Map;function l1(t,i,r={}){return(l,u,B)=>{const f=r.action||u;if(!r.context){const _=NL.get(l)||[];NL.has(l)||NL.set(l,_),_.push({from:t,to:i,action:f})}const w=B.value;B.value=function(..._){let k=this;if(r.context&&(k=KC.get(typeof r.context=="function"?r.context.call(this,..._):r.context)),k.state===i)return r.sync?k[c1]:Promise.resolve(k[c1]);k.state instanceof rj&&k.state.action==r.abortAction&&k.state.abort(k);let F=null;Array.isArray(t)?t.length==0?k.state instanceof rj&&k.state.abort(k):typeof k.state=="string"&&t.includes(k.state)||(F=new aj(k._state,`${k.name} ${f} to ${i} failed: current state ${k._state} not from ${t.join("|")}`)):t!==k.state&&(F=new aj(k._state,`${k.name} ${f} to ${i} failed: current state ${k._state} not from ${t}`));const j=cA=>{if(r.fail&&r.fail.call(this,cA),r.sync){if(r.ignoreError)return cA;throw cA}return r.ignoreError?Promise.resolve(cA):Promise.reject(cA)};if(F)return j(F);const IA=k.state,rA=new rj(IA,i,f);GL.call(k,rA);const pA=cA=>{var TA;return k[c1]=cA,rA.aborted||(GL.call(k,i),(TA=r.success)===null||TA===void 0||TA.call(this,k[c1])),cA},lA=cA=>(GL.call(k,IA,cA),j(cA));try{const cA=w.apply(this,_);return nrA(cA)?cA.then(pA).catch(lA):r.sync?pA(cA):Promise.resolve(pA(cA))}catch(cA){return lA(new aj(k._state,`${k.name} ${f} from ${t} to ${i} failed: ${cA}`,cA instanceof Error?cA:new Error(String(cA))))}}}}var rrA=typeof window<"u"&&window.__AFSM__?(r,l)=>{window.dispatchEvent(new CustomEvent(r,{detail:l}))}:typeof importScripts<"u"?(r,l)=>{postMessage({type:r,payload:l})}:()=>{};function GL(t,i){const r=this._state;this._state=t;const l=t.toString();t&&this.emit(l,r),this.emit(KC.STATECHANGED,t,r,i),this.updateDevTools({value:t,old:r,err:i instanceof Error?i.message:String(i)})}var KC=class YC extends srA.default{constructor(i,r,l){super(),this.name=i,this.groupName=r,this._state=YC.INIT,i||(i=Date.now().toString(36)),l?Object.setPrototypeOf(this,l):l=Object.getPrototypeOf(this),r||(this.groupName=this.constructor.name);const u=l[c8];u?this.name=u.name+"-"+u.count++:l[c8]={name:this.name,count:0},this.updateDevTools({diagram:this.stateDiagram})}get stateDiagram(){const i=Object.getPrototypeOf(this),r=NL.get(i)||[];let l=new Set,u=[],B=[];const f=new Set,w=Object.getPrototypeOf(i);NL.has(w)&&(w.stateDiagram.forEach(k=>l.add(k)),w.allStates.forEach(k=>f.add(k))),r.forEach(({from:k,to:F,action:j})=>{typeof k=="string"?u.push({from:k,to:F,action:j}):k.length?k.forEach(IA=>{u.push({from:IA,to:F,action:j})}):B.push({to:F,action:j})}),u.forEach(({from:k,to:F,action:j})=>{f.add(k),f.add(F),f.add(j+"ing"),l.add(`${k} --> ${j}ing : ${j}`),l.add(`${j}ing --> ${F} : ${j} 🟢`),l.add(`${j}ing --> ${k} : ${j} 🔴`)}),B.forEach(({to:k,action:F})=>{l.add(`${F}ing --> ${k} : ${F} 🟢`),f.forEach(j=>{j!==k&&l.add(`${j} --> ${F}ing : ${F}`)})});const _=[...l];return Object.defineProperties(i,{stateDiagram:{value:_},allStates:{value:f}}),_}static get(i){let r;return typeof i=="string"?(r=YC.instances.get(i),r||YC.instances.set(i,r=new YC(i,void 0,Object.create(YC.prototype)))):(r=YC.instances2.get(i),r||YC.instances2.set(i,r=new YC(i.constructor.name,void 0,Object.create(YC.prototype)))),r}static getState(i){var r;return(r=YC.get(i))===null||r===void 0?void 0:r.state}updateDevTools(i={}){rrA(YC.UPDATEAFSM,Object.assign({name:this.name,group:this.groupName},i))}get state(){return this._state}set state(i){GL.call(this,i)}};KC.STATECHANGED="stateChanged",KC.UPDATEAFSM="updateAFSM",KC.INIT="[*]",KC.ON="on",KC.OFF="off",KC.instances=new Map,KC.instances2=new WeakMap;var dL=class extends KC{constructor(i,r){super(),this.core=i,pn(this,"audioPlayer"),pn(this,"videoPlayer"),pn(this,"callback"),pn(this,"avPlayerStateSyncManager"),pn(this,"_log"),pn(this,"_videoPlayerLog"),pn(this,"_audioPlayerLog"),pn(this,"lastPausedReason"),pn(this,"muted",!1),this._log=r,this._videoPlayerLog=this._log.createChild({id:"vp"}),this._audioPlayerLog=this._log.createChild({id:"ap"}),this.videoPlayer=new i.VideoPlayer({id:"vp",log:this._videoPlayerLog,track:null,muted:!1,container:null,enableLogTrackState:!0}),this.audioPlayer=new i.RemoteAudioPlayer({id:"ap",log:this._audioPlayerLog,track:null,muted:!1,container:null,enableVolumeControlInIOS:!0,enableLogTrackState:!0}),this.audioPlayer.on(i.PlayerEvent.AUTOPLAY_FAILED,l=>this.handleAutoPlayFailed(this.audioPlayer,l)),this.videoPlayer.on(i.PlayerEvent.LOAD_START,()=>this.handleLoadStart("video")),this.audioPlayer.on(i.PlayerEvent.LOAD_START,()=>this.handleLoadStart("audio")),this.videoPlayer.on(i.PlayerEvent.PLAYER_STATE_CHANGED,this.handlePlayerStateChanged,this),this.audioPlayer.on(i.PlayerEvent.PLAYER_STATE_CHANGED,this.handlePlayerStateChanged,this),this.videoPlayer.on(i.PlayerEvent.ENTER_PICTURE_IN_PICTURE,this.handleEnterPictureInPicture,this),this.videoPlayer.on(i.PlayerEvent.LEAVE_PICTURE_IN_PICTURE,this.handleLeavePictureInPicture,this),this.videoPlayer.on(i.PlayerEvent.ENTER_FULL_SCREEN,this.handleEnterFullScreen,this),this.videoPlayer.on(i.PlayerEvent.LEAVE_FULL_SCREEN,this.handleLeaveFullScreen,this),this.avPlayerStateSyncManager=new i.AVPlayerStateSyncManager({log:this._log,audioPlayer:this.audioPlayer,videoPlayer:this.videoPlayer})}get isPlaying(){return this.videoPlayer.isPlaying&&this.audioPlayer.isPlaying}get isPaused(){return this.videoPlayer.isPaused&&this.audioPlayer.isPaused}get isStopped(){return this.videoPlayer.isStopped&&this.audioPlayer.isStopped}setCallback(i){this.callback=i}updateLogConfig(i){this._audioPlayerLog.setSdkAppId(i.sdkAppId),this._audioPlayerLog.setUserId(i.userId),this._videoPlayerLog.setSdkAppId(i.sdkAppId),this._videoPlayerLog.setUserId(i.userId)}handleLoadStart(i){this.onLoadStart()}handlePlayerStateChanged(i){i.state==="PLAYING"&&this.isPlaying&&this.onPlaying(),i.state==="PAUSED"&&this.isPaused&&this.onPaused(i.reason),i.state==="STOPPED"&&this.isStopped&&this.onStopped()}async handleEnterPictureInPicture(){var i,r;await this.videoPlayer.enterPIPPromise,(r=(i=this.callback)==null?void 0:i.onPictureInPictureStateChanged)==null||r.call(i,{isPictureInPicture:!0,pictureInPictureWindow:this.videoPlayer.pipWindow})}handleLeavePictureInPicture(){var i,r;(r=(i=this.callback)==null?void 0:i.onPictureInPictureStateChanged)==null||r.call(i,{isPictureInPicture:!1})}handleEnterFullScreen(){var i,r;(r=(i=this.callback)==null?void 0:i.onFullScreenStateChanged)==null||r.call(i,{isFullScreen:!0})}handleLeaveFullScreen(){var i,r;(r=(i=this.callback)==null?void 0:i.onFullScreenStateChanged)==null||r.call(i,{isFullScreen:!1})}onLoadStart(){}onPlaying(){}onPaused(i){this.lastPausedReason=i}onStopped(){}setVideoContainer(i){if(this.core.utils.isString(i)){const r=document.getElementById(i);r&&this.videoPlayer.setContainer(r)}else this.videoPlayer.setContainer(i)}setVolume(i){this.core.utils.isUndefined(i)||this.audioPlayer.setVolume(i/100)}setMuted(i){this.core.utils.isUndefined(i)||(this.muted=i,this.audioPlayer.setMuted(i))}setFillMode(i){i&&this.videoPlayer.setObjectFit(i)}setAudioTrack(i){this.audioPlayer.setTrack(i)}setVideoTrack(i){this.videoPlayer.setTrack(i)}async play(){const i=this.videoPlayer.play().catch(l=>{this.handleAutoPlayFailed(this.videoPlayer,l,"video")}),r=this.audioPlayer.play().catch(l=>{this.handleAutoPlayFailed(this.audioPlayer,l)});await Promise.all([i,r])}handleAutoPlayFailed(i,r,l="audio"){var u,B;this._log.warn("handleAutoPlayFailed",r);const f=()=>{this.audioPlayer.resume().then(()=>{document.removeEventListener("click",f,!0)})};document.addEventListener("click",f,!0),(B=(u=this.callback)==null?void 0:u.onAutoPlayFailed)==null||B.call(u,{type:l,resume:()=>i.resume()})}pause(){this.videoPlayer.pause(!0),this.audioPlayer.setMuted(!0),this.audioPlayer.pause()}resume(){this.videoPlayer.resume(!0),this.audioPlayer.setMuted(this.muted),this.audioPlayer.resume()}async enterFullscreen(){await this.videoPlayer.enterFullscreen()}async exitFullscreen(){await this.videoPlayer.exitFullscreen()}async enterPictureInPicture(){await this.videoPlayer.enterPictureInPicture()}async exitPictureInPicture(){await this.videoPlayer.exitPictureInPicture()}stop(){this.videoPlayer&&this.videoPlayer.stop(),this.audioPlayer&&(this.audioPlayer.stop(),this.audioPlayer.setMuted(!1))}};S_([l1([KC.INIT,"PAUSED"],"LOADSTART",{ignoreError:!0,sync:!0,success(){var t,i;(i=(t=this.callback)==null?void 0:t.onLoadStart)==null||i.call(t)},fail(t){this._log.warn("onLoadStart",t)}})],dL.prototype,"onLoadStart"),S_([l1(["LOADSTART","PAUSED"],"PLAYING",{ignoreError:!0,sync:!0,success(){var t,i;(i=(t=this.callback)==null?void 0:t.onPlaying)==null||i.call(t)},fail(t){this._log.warn("onPlaying",t)}})],dL.prototype,"onPlaying"),S_([l1("PLAYING","PAUSED",{ignoreError:!0,sync:!0,success(){var t,i;(i=(t=this.callback)==null?void 0:t.onPaused)==null||i.call(t,{reason:this.lastPausedReason})},fail(t){this._log.warn("onPaused",t)}})],dL.prototype,"onPaused"),S_([l1([],KC.INIT,{ignoreError:!0,sync:!0,success(){var t,i;(i=(t=this.callback)==null?void 0:t.onStopped)==null||i.call(t)},fail(t){this._log.warn("onStopped",t)}})],dL.prototype,"onStopped");var l8=dL,arA=["overseas-webrtc.tlivewebrtc.com","oswebrtc-lint.tliveplay.com"],b1=class t9{constructor(i){this.core=i,pn(this,"_sdkAppId"),pn(this,"_userId"),pn(this,"connectedRoomIdSet",new Set),pn(this,"updateSeq",0),pn(this,"_log"),pn(this,"player"),pn(this,"peerConnection"),pn(this,"svrSig"),pn(this,"streamURL"),pn(this,"signalURL"),pn(this,"insertableStreamsAbortMap",new Map),pn(this,"scriptTransformWorker"),pn(this,"connectionState","disconnected"),pn(this,"isStarted",!1),pn(this,"isStopped",!0),pn(this,"isReconnecting",!1),pn(this,"callback"),pn(this,"isFireWallErrorEmitted",!1),pn(this,"stat"),pn(this,"isH264DecodeSupported"),pn(this,"connectionTimeoutId"),pn(this,"streamHealthCheckTimeoutId"),pn(this,"streamHealthCheckReject"),i.loggerManager.startUpload(),this._log=this.core.log.createChild({id:`${this.getAlias()}`}),this.player=new l8(i,this._log),i.innerEmitter.on(i.INNER_EVENT.SEI_MESSAGE,this.onSEIMessage,this)}getName(){return t9.Name}getAlias(){return"LEB"}getGroup(){return""}getValidateRule(i){switch(i){case"start":return WnA;case"update":case"stop":return{}}}get enableSEI(){return this.core.room.enableSEI&&(this.core.rtcDectection.IS_INSERTABLE_STREAM_SUPPORTED||this.core.rtcDectection.IS_SCRIPT_TRANSFORM_SUPPORTED)}wrapCallback(i){if(!i)return;const r={},l=["onStats","onSEIMessage"];for(const u of Object.keys(i)){const B=i[u];typeof B=="function"&&(l.includes(u)?r[u]=B:r[u]=(...f)=>(this._log.debug(`callback ${u} called`,f.length>0?f[0]:""),B(...f)))}return r}async start(i){var r;this.isStopped=!1;const{view:l,url:u,volume:B,muted:f,fillMode:w,loggerConfig:_,callback:k}=i;this.callback=this.wrapCallback(k),this.player.setCallback(this.callback);const{errorModule:{RtcError:F,ErrorCode:j,ErrorCodeDictionary:IA},loggerManager:rA,rtcDectection:pA}=this.core;if(this._sdkAppId=_.sdkAppId,this._userId=_.userId,this._log.setSdkAppId(_.sdkAppId),this._log.setUserId(_.userId),this.player.updateLogConfig(_),rA.addJoinedUser(_),!pA.isWebRTCSupported()||!pA.isAddTransceiverSupported())throw new F({code:j.ENV_NOT_SUPPORTED,extraCode:IA.NOT_SUPPORTED_WEBRTC,message:"webrtc not supported"});if(!(await pA.decodeSupportStatus()).isH264DecodeSupported||this.isH264DecodeSupported===!1)throw this.isH264DecodeSupported=!1,new F({code:j.ENV_NOT_SUPPORTED,extraCode:IA.NOT_SUPPORTED_H264_DECODE,message:"h264 not supported"});!pA.IS_SEI_SUPPORTED&&k?.onSEIMessage&&((r=k.onError)==null||r.call(k,new F({code:j.ENV_NOT_SUPPORTED,extraCode:IA.NOT_SUPPORTED_SEI,message:"sei not supported"}))),this.player.setVideoContainer(l),this.player.setMuted(f),this.player.setFillMode(w);try{await this.connect(u),this.stat=new orA(this.peerConnection,this.core),this.stat.start(TA=>{var WA,zA;return(zA=(WA=this.callback)==null?void 0:WA.onStats)==null?void 0:zA.call(WA,TA)});const lA=this.player.play();this.player.setVolume(B);const cA=this.createStreamHealthCheckPromise();await Promise.race([lA,cA]),this.clearStreamHealthCheck(),this.isStarted=!0}catch(lA){throw this.stop(),lA}}async update(i){const{view:r,url:l,volume:u,muted:B,fillMode:f,action:w,fullScreen:_,pictureInPicture:k}=i;l&&l!==this.streamURL&&await this.switchStream(l),this.player.setMuted(B),this.player.setVolume(u),this.player.setFillMode(f),r&&this.player.videoPlayer.setContainer(this.core.utils.isString(r)?document.getElementById(r):r),w==="pause"?this.player.pause():w==="resume"&&this.player.resume(),this.core.utils.isBoolean(_)&&(_?await this.player.enterFullscreen():await this.player.exitFullscreen()),this.core.utils.isBoolean(k)&&(k?await this.player.enterPictureInPicture():await this.player.exitPictureInPicture())}async switchStream(i){this._log.info("switchStream",i);const r=this.peerConnection,l=this.streamURL,u=this.signalURL,B=this.svrSig,f=new Map(this.insertableStreamsAbortMap),w=this.player;delete this.peerConnection,delete this.streamURL,delete this.signalURL,delete this.svrSig,this.insertableStreamsAbortMap.clear();const _=new l8(this.core,this._log);_.setVideoContainer(w.videoPlayer.container),_.setFillMode(w.videoPlayer.objectFit),_.setMuted(w.muted),_.setCallback(this.callback);const k=F=>{const{track:j}=F;this.createEncodedStreams(F.receiver),this.initReceiverTransform(F.receiver,j.kind==="audio"),j.kind==="audio"?_.setAudioTrack(j):_.setVideoTrack(j)};try{await this.connectForSwitch(i,k),this._log.info("switchStream: new connection established"),await this.waitForNewPlayerFirstFrame(_),this._log.info("switchStream: new stream first frame received"),w.audioPlayer.setMuted(!0),w.stop(),this.player=_,r&&(clearTimeout(this.connectionTimeoutId),r.close(),r.getReceivers().forEach(F=>f.delete(F)),l&&B&&u&&this.fetchStopStreamWithParams(l,u,B).catch(F=>{this._log.warn("switchStream: stop old stream failed",F)})),this._log.info("switchStream: switch completed successfully")}catch(F){this._log.error("switchStream failed",F),_.stop();const j=this.peerConnection;throw j&&(j.close(),j.getReceivers().forEach(IA=>this.insertableStreamsAbortMap.delete(IA))),this.peerConnection=r,this.streamURL=l,this.signalURL=u,this.svrSig=B,this.insertableStreamsAbortMap=f,this.player=w,w.audioPlayer.setMuted(w.muted),F}}waitForNewPlayerFirstFrame(i){return new Promise((r,l)=>{let u=0,B=!1;const f=i.videoPlayer.getElement();if(!f)return void l(new Error("VideoPlayer has no video element"));const w=()=>{B=!0,clearInterval(F),f.removeEventListener("loadeddata",_),f.removeEventListener("playing",k)},_=()=>{B||(this._log.info("waitForNewPlayerFirstFrame: loadeddata event fired"),w(),r())},k=()=>{B||(this._log.info("waitForNewPlayerFirstFrame: playing event fired"),w(),r())};f.addEventListener("loadeddata",_,{once:!0}),f.addEventListener("playing",k,{once:!0}),i.play().catch(j=>{this._log.warn("waitForNewPlayerFirstFrame: play failed",j)});const F=setInterval(()=>{if(!B){if(u+=100,f.videoWidth>0&&f.videoHeight>0)return this._log.info(`waitForNewPlayerFirstFrame: video has valid dimensions ${f.videoWidth}x${f.videoHeight}`),w(),void r();u>=1e4&&(w(),l(new Error("waitForNewPlayerFirstFrame timeout")))}},100)})}connectForSwitch(i,r){return new Promise((l,u)=>{try{this.initScriptTransformWorker();const B={encodedInsertableStreams:this.enableSEI,iceServers:[],sdpSemantics:"unified-plan",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",tcpCandidatePolicy:"disable",IceTransportsType:"nohost"},f=new RTCPeerConnection(B);this.peerConnection=f,f.onconnectionstatechange=()=>{this.connectionState=f.connectionState,this._log.info("connectForSwitch connectionState",f.connectionState),f.connectionState!=="failed"&&f.connectionState!=="closed"||u(new Error(`connection is ${f.connectionState}`)),f.connectionState==="connected"&&(this.logSelectedCandidate(),l())},f.ontrack=r,f.addTransceiver("audio",{direction:"recvonly"}),f.addTransceiver("video",{direction:"recvonly"}),this._log.info("connectForSwitch createOffer"),f.createOffer({offerToReceiveAudio:!0,offerToReceiveVideo:!0,voiceActivityDetection:!1}).then(w=>(w.sdp=a8(w.sdp),this._log.info("connectForSwitch setOffer"),f.setLocalDescription(w))).then(()=>{const w={sessionId:nj(),streamurl:i,clientinfo:this.core.environment.getOSString(),localsdp:f.localDescription};return this.exchangeSDP(i,w)}).then(w=>(this._log.info("connectForSwitch setAnswer"),f.setRemoteDescription(w))).catch(u)}catch(B){u(B)}this.connectionTimeoutId=setTimeout(()=>u(new Error("connection timeout")),1e4)})}async fetchStopStreamWithParams(i,r,l){try{const u=`${r}/webrtc/v1/stopstream`,B=await I1(u,{streamurl:i,svrsig:l},{timeout:3}),{errcode:f,errmsg:w}=B;if(f!==0)throw new Error(`errCode:${f}, errmsg:${w}`);return B}catch(u){this._log.error("fetchStopStreamWithParams error",u)}}async stop(){this.isStopped=!0,this.clearStreamHealthCheck(),this.player.stop(),this.peerConnection&&(clearTimeout(this.connectionTimeoutId),this.peerConnection.close(),this.peerConnection.getReceivers().forEach(i=>this.insertableStreamsAbortMap.delete(i)),delete this.peerConnection,await this.fetchStopStream(),delete this.streamURL,delete this.signalURL,delete this.svrSig),this.stat&&(this.stat.stop(),delete this.stat),this.core.room.keyPointManager.uploadKVStat(this.core.kvStatManager,this._sdkAppId)}destroy(){this.stop(),this.core.innerEmitter.off(this.core.INNER_EVENT.SEI_MESSAGE,this.onSEIMessage,this)}createStreamHealthCheckPromise(){return new Promise((i,r)=>{this.streamHealthCheckReject=r,this.streamHealthCheckTimeoutId=window.setTimeout(()=>this.checkStreamHealth(r),5e3)})}clearStreamHealthCheck(){this.streamHealthCheckTimeoutId&&(clearTimeout(this.streamHealthCheckTimeoutId),delete this.streamHealthCheckTimeoutId),delete this.streamHealthCheckReject}async checkStreamHealth(i){if(!this.isStopped&&this.peerConnection)try{const r=this.peerConnection.getReceivers().find(j=>{var IA;return((IA=j.track)==null?void 0:IA.kind)==="video"});if(!r)return void this._log.warn("checkStreamHealth: no video receiver found");const l=await r.getStats();let u=0,B=0;l.forEach(j=>{j.type==="inbound-rtp"&&(j.mediaType==="video"||j.kind==="video")&&(u=j.bytesReceived||0,B=j.framesDecoded||0)});const{isPlaying:f}=this.player,w=f||B>0;this._log.info(`checkStreamHealth: bytesReceived=${u}, framesDecoded=${B}, isPlaying=${f}`);const{RtcError:_,ErrorCode:k,ErrorCodeDictionary:F}=this.core.errorModule;u===0?(this._log.warn("checkStreamHealth: no stream data received after 5s"),i(new _({code:k.OPERATION_FAILED,message:"no stream data received"}))):w||(this._log.warn("checkStreamHealth: decode failed"),this.isH264DecodeSupported=!1,i(new _({code:k.ENV_NOT_SUPPORTED,extraCode:F.NOT_SUPPORTED_H264_DECODE,message:"h264 decode failed"})))}catch(r){this._log.warn("checkStreamHealth error",r)}}connect(i){return new Promise((r,l)=>{try{this.initScriptTransformWorker();const u={encodedInsertableStreams:this.enableSEI,iceServers:[],sdpSemantics:"unified-plan",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",tcpCandidatePolicy:"disable",IceTransportsType:"nohost"},B=new RTCPeerConnection(u);this.peerConnection=B,B.onconnectionstatechange=()=>{this.connectionState=B.connectionState,this._log.info("connectionState",B.connectionState),B.connectionState!=="failed"&&B.connectionState!=="closed"||(this.isStarted?this.reconnect(i):l(new Error(`connection is ${B.connectionState}`))),B.connectionState==="connected"&&(this.logSelectedCandidate(),r())},B.ontrack=f=>this.onTrack(f),B.addTransceiver("audio",{direction:"recvonly"}),B.addTransceiver("video",{direction:"recvonly"}),this._log.info("createOffer"),B.createOffer({offerToReceiveAudio:!0,offerToReceiveVideo:!0,voiceActivityDetection:!1}).then(f=>(f.sdp=a8(f.sdp),this._log.info("setOffer"),B.setLocalDescription(f))).then(()=>{const f={sessionId:nj(),streamurl:i,clientinfo:this.core.environment.getOSString(),localsdp:B.localDescription};return this.exchangeSDP(i,f)}).then(f=>(this._log.info("setAnswer"),B.setRemoteDescription(f))).catch(l)}catch(u){l(u)}this.connectionTimeoutId=setTimeout(()=>l(new Error("connection timeout")),1e4)})}async exchangeSDP(i,r){let l,u,B;try{this._log.info("exchangeSDP");const f=grA(i);if(!f)throw new Error("streamDomain is empty");const{signalDomain:w,cached:_}=await this.fetchSignalDomain(f);if(!w)throw new Error("signalDomain is empty");{this._log.info("try exchangeSDP signalDomain:",w,_);const k=await this.doExchangeSDP(`https://${w}`,r,3);l=k.url,u=k.remoteSdp,B=k.svrSig}}catch(f){this._log.warn("exchangeSDP failed, fallback",f);try{const w=await this.core.utils.promiseAny(arA.map(_=>this.doExchangeSDP(`https://${_}`,r,3)));l=w.url,u=w.remoteSdp,B=w.svrSig}catch(w){throw this._log.error("exchangeSDP failed",w),w[0]||w}}return this.streamURL=i,this.signalURL=l,this.svrSig=B,u}async reconnect(i){var r,l;if(!this.isReconnecting){this.isReconnecting=!0;try{this._log.warn("start reconnect"),await this.connect(i),this._log.warn("reconnect success")}catch(u){this._log.error("reconnect error",u);const{RtcError:B,ErrorCode:f}=this.core.errorModule;(l=(r=this.callback)==null?void 0:r.onError)==null||l.call(r,new B({code:f.OPERATION_FAILED,message:"reconnect failed"}))}finally{this.isReconnecting=!1}}}async logSelectedCandidate(){if(!this.peerConnection)return;const i=await this.peerConnection.getStats();for(const[r,l]of i)if(this.core.rtcDectection.isSelectedCandidatePair(l)){const u=i.get(l.localCandidateId),B=i.get(l.remoteCandidateId);u&&this._log.info(`local candidate: ${u.candidateType} ${u.protocol}:${u.ip||u.address}:${u.port} ${u.networkType||""} ${u.relayProtocol?`relayProtocol:${u.relayProtocol} url: ${u.url}`:""}`),B&&this._log.info(`remote candidate: ${B.candidateType} ${B.protocol}:${B.ip||B.address}:${B.port}`);break}}async doExchangeSDP(i,r,l){const u=`${i}/webrtc/v1/pullstream`,B=await I1(u,r,{timeout:l}),{errcode:f,errmsg:w,remotesdp:_,svrsig:k}=B;if(f!==0){const F=new Error(`errCode:${f}, errMsg:${w}`);throw F.name="RequestSignalError",F}return{url:i,remoteSdp:_,svrSig:k}}createEncodedStreams(i){var r;if(this.enableSEI&&this.core.rtcDectection.IS_INSERTABLE_STREAM_SUPPORTED)try{if(this._log.warn("enableSEI",this.enableSEI),!this.insertableStreamsAbortMap.has(i)){const l=i.createEncodedStreams(),u=new AbortController,B={abortController:u,enqueue:f=>i.track.kind==="audio"?f:this.decodeVideoFrame(f)};l.readable.pipeThrough(new TransformStream({transform:(f,w)=>{const _=B.enqueue(f);_&&w.enqueue(_)}})).pipeTo(l.writable,u).catch(f=>{f!=="destroy"&&this._log.warn(f)}),(r=this.insertableStreamsAbortMap.get(i))==null||r.abort("destroy"),this.insertableStreamsAbortMap.set(i,u)}}catch(l){this._log.warn(`createEncodedStreams ${i.track.kind} failed`,l)}}initReceiverTransform(i,r){this.peerConnection&&this.enableSEI&&this.scriptTransformWorker&&!i.transform&&(i.transform=new RTCRtpScriptTransform(this.scriptTransformWorker,{isReceiver:!0,isAudio:r,userId:"",streamType:this.core.enums.RemoteStreamType.Main}))}initScriptTransformWorker(){const{room:i,rtcDectection:r,createScriptTransformWorker:l,trtc:u,TRTC:B}=this.core;!this.enableSEI||r.IS_INSERTABLE_STREAM_SUPPORTED||this.scriptTransformWorker||r.IS_SCRIPT_TRANSFORM_SUPPORTED&&(this._log.info("initScriptTransformWorker"),this.scriptTransformWorker=l({videoEncodePipeline:i.videoManager.encodePipeline,videoDecodePipeline:i.videoManager.decodePipeline,audioEncodePipeline:i.audioManager.encodePipeline,audioDecodePipeline:i.audioManager.decodePipeline}),this.scriptTransformWorker.onmessage=f=>{var w,_;f.data.type==="sei"&&((_=(w=this.callback)==null?void 0:w.onSEIMessage)==null||_.call(w,{data:f.data.data,seiPayloadType:f.data.seiPayloadType}))},this.scriptTransformWorker.onerror=f=>{this._log.error("scriptTransformWorker error: ",f.message)})}decodeVideoFrame(i){if(!this.core.room.videoManager)return i;for(const r of this.core.room.videoManager.decodePipeline)if(r&&!(i=r({frame:i})))return;return i}async fetchStopStream(){if(this.streamURL&&this.svrSig&&this.signalURL)try{const i=`${this.signalURL}/webrtc/v1/stopstream`,r=await I1(i,{streamurl:this.streamURL,svrsig:this.svrSig},{timeout:3}),{errcode:l,errmsg:u}=r;if(l!==0)throw new Error(`errCode:${l}, errmsg:${u}`);return r}catch(i){this._log.error("fetchStopStream error",i)}}onTrack(i){const{track:r}=i;this.createEncodedStreams(i.receiver),this.initReceiverTransform(i.receiver,r.kind==="audio"),r.kind==="audio"?this.player.setAudioTrack(r):this.player.setVideoTrack(r)}onSEIMessage({room:i,nalu:r}){var l,u;i===this.core.room&&((u=(l=this.callback)==null?void 0:l.onSEIMessage)==null||u.call(l,{data:r.seiPayload.buffer,seiPayloadType:r.seiPayloadType}))}async fetchSignalDomain(i,r=u1[0]){var l;const u=`https://${r}/signal_query`;try{const B=window.localStorage.getItem(gj);if(B){const F=JSON.parse(B);if(((l=F[i])==null?void 0:l.expire)-new Date().getTime()>0)return{signalDomain:F[i].signal,cached:!0}}const f=await I1(u,{domain:i,requestid:nj(16),client_type:"Web",client_info:window.navigator.userAgent}),{errcode:w,errmsg:_,data:k}=f;if(w===0){const{signal_domain:F,cache_time:j}=k;let IA={};const rA=window.localStorage.getItem(gj);rA&&(IA=JSON.parse(rA)),IA[i]={signal:F,expire:new Date().getTime()+1e3*j};try{window.localStorage.setItem(gj,JSON.stringify(IA))}catch{}return{signalDomain:F,cached:!1}}throw new Error(`errCode:${w} errmsg:${_}`)}catch(B){return this._log.error("fetchSignalDomain error",B),u1[1]&&r!==u1[1]?this.fetchSignalDomain(i,u1[1]):{signalDomain:"",cached:!1}}}};pn(b1,"Name","LEBPlayer"),S_([irA({fnName:"connect"})],b1.prototype,"stop"),S_([trA({settings:{retries:1/0,timeout:2e3},onRetrying(t){var i;if(this._log.warn(`retry connect ${t}`),t>=3&&((i=this.callback)==null?void 0:i.onError)&&!this.isFireWallErrorEmitted){const{RtcError:r,ErrorCode:l,ErrorCodeDictionary:u}=this.core.errorModule;this.isFireWallErrorEmitted=!0,this.callback.onError(new r({code:l.OPERATION_FAILED,extraCode:u.FIREWALL_RESTRICTION,message:"firewall restriction"}))}},onError(t,i,r,l){var u;if(this._log.warn("connect failed",t),this.peerConnection&&(this.peerConnection.close(),delete this.peerConnection),!this.isStopped&&((u=t.message||t)==null?void 0:u.includes("connection")))i();else{const{RtcError:B,ErrorCode:f}=this.core.errorModule;r(new B({code:f.UNKNOWN_ERROR,message:t.message}))}}})],b1.prototype,"connect");var i9=b1,I1=async(t,i,r={})=>{const{timeout:l=10}=r;let u,B=0,f={};window.AbortController&&(u=new window.AbortController,f={signal:u.signal},B=window.setTimeout(()=>u.abort(),1e3*l));const w=await fetch(t,JnA({body:JSON.stringify(i),cache:"no-cache",credentials:"same-origin",headers:{"content-type":"text/plain;charset=utf-8"},method:"POST",mode:"cors"},f));if(B&&window.clearTimeout(B),w.status!==200)throw new Error(`Network Error, status code:${w.status}`);return w.json()},u1=["webrtc-signal-scheduler.tlivesource.com","bak-webrtc-signal-scheduler.tlivesource.com"],gj="LEB_PLAYER_STORAGE_KEY",grA=t=>{const i=/^(?:webrtc:\/\/)([0-9.\-A-Za-z_]+)(?:\/)(?:[0-9.\-A-Za-z_=]+)(?:\/)(?:[^?#]*)(?:\?*)(?:[^?#]*)/.exec(t);return i?i[1]:""},crA=i9;const lrA=Object.freeze(Object.defineProperty({__proto__:null,LEBPlayer:i9,default:crA},Symbol.toStringTag,{value:"Module"})),IrA=gU(lrA);var o9=Object.defineProperty,urA=Object.defineProperties,ErA=Object.getOwnPropertyDescriptors,I8=Object.getOwnPropertySymbols,drA=Object.prototype.hasOwnProperty,CrA=Object.prototype.propertyIsEnumerable,r3=(t,i,r)=>i in t?o9(t,i,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[i]=r,hrA=(t,i)=>{for(var r in i||(i={}))drA.call(i,r)&&r3(t,r,i[r]);if(I8)for(var r of I8(i))CrA.call(i,r)&&r3(t,r,i[r]);return t},BrA=(t,i)=>urA(t,ErA(i)),QrA=(t,i)=>{for(var r in i)o9(t,r,{get:i[r],enumerable:!0})},Hg=(t,i,r)=>r3(t,typeof i!="symbol"?i+"":i,r);async function prA({sdkAppId:t,userId:i,userSig:r,core:l}){var u;const B=Math.round(new Date().getTime()/1e3);try{const f=await l.schedule.getAbilityConfig(t,l.schedule.ScheduleRequestType.TRTC_AUTO_CONF,{sdkAppId:t,userId:i,userSig:r,timestamp:B});l.log.info(`virtual background ability response: ${JSON.stringify(f)}`);const{data:w}=f;return(u=w?.trtcAutoConf)!=null&&u.web_ar?{auth:!0,timestamp:B}:{auth:!1}}catch(f){return l.log.error("virtual background fetch error",f),{auth:!1}}}var mrA={sdkAppId:{required:!0,type:"number"},userId:{required:!0,type:"string"},userSig:{required:!0,type:"string"}};function frA(t){return{name:"VirtualBackgroundOptions",type:"object",required:!0,allowEmpty:!1,properties:BrA(hrA({},mrA),{type:{required:!1,type:"string",values:["image","blur","color"]},src:{required:!1,type:"string"},blurLevel:{required:!1,type:"number",min:1,max:10},onAbort:{required:!1},color:{required:!1,type:["array","string"]},enableFaceCentering:{required:!1,type:"boolean"},enableEffectOptimization:{required:!1,type:"boolean"}}),validate(i,r,l,u){var B;const{RtcError:f,ErrorCode:w,ErrorCodeDictionary:_}=t.errorModule;if(!i)return;const{type:k,src:F,onAbort:j}=i;if(k==="image"&&!F)throw new f({code:w.INVALID_PARAMETER,extraCode:_.INVALID_PARAMETER_REQUIRED,fnName:l,messageParams:{key:"src"}});if(j&&!t.utils.isFunction(j))throw new f({code:w.INVALID_PARAMETER,extraCode:_.INVALID_PARAMETER_TYPE,fnName:l,messageParams:{key:"onAbort",value:typeof j,rule:{type:"Function"}}});if(!((B=t.room.videoManager.cameraTrack)!=null&&B.mediaTrack))throw new f({code:w.INVALID_OPERATION,extraCode:_.INVALID_OPERATION_NEED_VIDEO,fnName:l})}}}function yrA(t){return{name:"UpdateVirtualBackgroundOptions",type:"object",required:!0,allowEmpty:!1,properties:{type:{required:!0,type:"string",values:["image","blur","color"]},src:{required:!1,type:"string"},blurLevel:{required:!1,type:"number",min:1,max:10},color:{required:!1,type:["array","string"]},enableFaceCentering:{required:!1,type:"boolean"},enableEffectOptimization:{required:!1,type:"boolean"}},validate(i,r,l,u){if(!i)return;const{RtcError:B,ErrorCode:f,ErrorCodeDictionary:w}=t.errorModule,{type:_,src:k}=i;if(_==="image"&&!k)throw new B({code:f.INVALID_PARAMETER,extraCode:w.INVALID_PARAMETER_REQUIRED,fnName:l,messageParams:{key:"src"}})}}}function DrA(t){return{name:"StopVirtualBackgroundOptions",required:!1}}var SrA=(()=>{var t=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return function(i={}){var r,l,u=i;u.ready=new Promise(($,K)=>{r=$,l=K});var B=Object.assign({},u),f="";typeof document<"u"&&document.currentScript&&(f=document.currentScript.src),t&&(f=t),f=f.indexOf("blob:")!==0?f.substr(0,f.replace(/[?#].*/,"").lastIndexOf("/")+1):"";var w,_,k=u.print||console.log.bind(console),F=u.printErr||console.error.bind(console);function j($){if(ni($))return function(K){for(var vA=atob(K),qA=new Uint8Array(vA.length),te=0;te$.startsWith(ft);function Vt($){return Promise.resolve().then(()=>function(K){if(K==ge&&w)return new Uint8Array(w);var vA=j(K);if(vA)return vA;throw"both async and sync fetching of the wasm failed"}($))}function gi($,K,vA,qA){return function(te,pe,Oe){return Vt(te).then(Fe=>WebAssembly.instantiate(Fe,pe)).then(Fe=>Fe).then(Oe,Fe=>{F(`failed to asynchronously prepare wasm: ${Fe}`),It(Fe)})}(K,vA,qA)}ni(ge="data:application/octet-stream;base64,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IAEoAgA2AgAgAiABKAIENgIEIAIgASgCCDYCCCACIAEoAgw2AgwgAiABKAIQNgIQIAIgASgCFDYCFCACIAEoAhg2AhggAiABKAIcNgIcIAIgASgCIDYCICACIAEoAiQ2AiQgAiABKAIoNgIoIAIgASgCLDYCLCACIAEoAjA2AjAgAiABKAI0NgI0IAIgASgCODYCOCACIAEoAjw2AjwgAUFAayEBIAJBQGsiAiAFTQ0ACwsgAiAETw0BA0AgAiABKAIANgIAIAFBBGohASACQQRqIgIgBEkNAAsMAQsgA0EESQRAIAAhAgwBCyAAIANBBGsiBEsEQCAAIQIMAQsgACECA0AgAiABLQAAOgAAIAIgAS0AAToAASACIAEtAAI6AAIgAiABLQADOgADIAFBBGohASACQQRqIgIgBE0NAAsLIAIgA0kEQANAIAIgAS0AADoAACABQQFqIQEgAkEBaiICIANHDQALCyAACwsAIAEgAiAAEEIaCxIAIAFBAXRB8MoAakECIAAQQgv5AQEEfwJ/IAEQKiECIwBBEGsiBSQAAn8gAC0AC0EHdgRAIAAoAgQMAQsgAC0AC0H/AHELIgRBAE8EQAJAIAIgAC0AC0EHdgR/IAAoAghB/////wdxQQFrBUEKCyIDIARrTQRAIAJFDQECfyAALQALQQd2BEAgACgCAAwBCyAACyIDIAQEfyACIANqIAMgBBBFIAEgAkEAIAMgBGogAUsbQQAgASADTxtqBSABCyACEEUgACACIARqIgEQMSAFQQA6AA8gASADaiAFLQAPOgAADAELIAAgAyACIARqIANrIARBACACIAEQRAsgBUEQaiQAIAAMAQsQJwALC/ICAgJ/AX4CQCACRQ0AIAAgAToAACAAIAJqIgNBAWsgAToAACACQQNJDQAgACABOgACIAAgAToAASADQQNrIAE6AAAgA0ECayABOgAAIAJBB0kNACAAIAE6AAMgA0EEayABOgAAIAJBCUkNACAAQQAgAGtBA3EiBGoiAyABQf8BcUGBgoQIbCIBNgIAIAMgAiAEa0F8cSIEaiICQQRrIAE2AgAgBEEJSQ0AIAMgATYCCCADIAE2AgQgAkEIayABNgIAIAJBDGsgATYCACAEQRlJDQAgAyABNgIYIAMgATYCFCADIAE2AhAgAyABNgIMIAJBEGsgATYCACACQRRr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ACACQQA6AA8DQCABBEAgACACLQAPOgAAIAFBAWshASAAQQFqIQAMAQsLIAJBEGokAAsaACAALQALQQd2BEAgACgCCBogACgCABAZCwvmAQEFfyMAQRBrIgUkACMAQSBrIgMkACMAQRBrIgQkACAEIAA2AgwgBCAAIAFqNgIIIAMgBCgCDDYCGCADIAQoAgg2AhwgBEEQaiQAIAMoAhghBCADKAIcIQYjAEEQayIBJAAgASAGNgIMIAIgBCAGIARrIgQQQyABIAIgBGo2AgggAyABKAIMNgIQIAMgASgCCDYCFCABQRBqJAAgAyAAIAMoAhAgAGtqNgIMIAMgAiADKAIUIAJrajYCCCAFIAMoAgw2AgggBSADKAIINgIMIANBIGokACAFKAIMIQcgBUEQaiQAIAcLDwAgAgRAIAAgASACEDILC/UCAQV/IwBBEGsiByQAIAIgAUF/c0Hv////B2pNBEACfyAALQALQQd2BEAgACgCAAwBCyAACyEIIAdBBGoiCSAAIAFB5////wNJBH8gByABQQF0NgIMIAcgASACajYCBCMAQRBrIgIkACAJKAIAIAdBDGoiCigCAEkhCyACQRBqJAAgCiAJIAsbKAIAIgJBC08EfyACQRBqQXBxIgIgAkEBayICIAJBC0YbBUEKC0EBagVB7////wcLEDAgBygCBCECIAcoAggaIAQEQCACIAggBBAjCyAFBEAgAiAEaiAGIAUQIwsgAyAEayEGIAMgBEcEQCACIARqIAVqIAQgCGogBhAjCyABQQpHBEAgCBAZCyAAIAI2AgAgACAAKAIIQYCAgIB4cSAHKAIIQf////8HcXI2AgggACAAKAIIQYCAgIB4cjYCCCAAIAQgBWogBmoiADYCBCAHQQA6AAwgACACaiAHLQAMOgAAIAdBEGokAA8LECcACwoAIAAgASACEEMLuQEBBH8jAEEQayIEJAAgBCACNgIMIwBBoAFrIgMkACADIAAgA0GeAWogARsiBjYClAFBfyEFIAMgAUEBayIAQQAgACABTRs2ApgBIANBAEGQARAmIgBBfzYCTCAAQSA2AiQgAEF/NgJQIAAgAEGfAWo2AiwgACAAQZQBajYCVAJAIAFBAEgEQEHo3gBBPTYCAAwBCyAGQQA6AAAgAEH9CiACQR8QTSEFCyAAQaABaiQAIARBEGokACAFCwQA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KAIARQ0AIAIgBCgCGDYCAAsgAEEBRiEFDAELQQAhBQsgBEFAayQAIAULMQAgACABKAIIQQAQHgRAIAEgAiADED0PCyAAKAIIIgAgASACIAMgACgCACgCHBEGAAsYACAAIAEoAghBABAeBEAgASACIAMQPQsLnQEBAn8jAEFAaiIDJAACf0EBIAAgAUEAEB4NABpBACABRQ0AGkEAIAFBjM0AECAiAUUNABogA0EMakEAQTQQJhogA0EBNgI4IANBfzYCFCADIAA2AhAgAyABNgIIIAEgA0EIaiACKAIAQQEgASgCACgCHBEGACADKAIgIgBBAUYEQCACIAMoAhg2AgALIABBAUYLIQQgA0FAayQAIAQLCgAgACABQQAQHgtOAgF/AXwjAEEQayICJAAgAkEANgIMIAEoAgRB1M8AIAJBDGoQCSEDIAIoAgwiAQRAIAEQAQsgACADRAAAAAAAAAAAYjoAOCACQRBqJAALNwEBfyMAQRBrIgIkACACIAEtADg2AgggAEHUzwAgAkEIahAHNgIEIABB1NUANgIAIAJBEGokAAuoAQEFfyAAKAJUIgMoAgAhBSADKAIEIgQgACgCFCAAKAIcIgdrIgYgBCAGSRsiBgRAIAUgByAGECIaIAMgAygCACAGaiIFNgIAIAMgAygCBCAGayIENgIECyAEIAIgAiAESxsiBARAIAUgASAEECIaIAMgAygCACAEaiIFNgIAIAMgAygCBCAEazYCBAsgBUEAOgAAIAAgACgCLCIBNgIcIAAgATYCFCACC5wBAQJ/IwBBEGsiAiQAQcgAEBwhASAAKAIEIgAQAiACIAA2AgggAUHMLSACQQhqEAc2AgQgAUHU1QA2AgAgAUEBNgIcIAFB1NUANgIYIAFBATYCFCABQdTVADYCECABQQE2AgwgAUHU1QA2AgggAUEAOgAgIAFBADYCRCABQoCAgIAwNwI8IAFBADsANyABQQA7ACsgAkEQaiQAIAELigUCBn4CfyABIAEoAgBBB2pBeHEiAUEQajYCACAAIQkgASkDACEDIAEpAwghBSMAQSBrIgAkAAJAIAVC////////////AIMiBEKAgICAgIDAgDx9IARCgICAgICAwP/DAH1UBEAgBUIEhiADQjyIhCEEIANC//////////8PgyIDQoGAgICAgICACFoEQCAEQoGAgICAgICAwAB8IQIMAgsgBEKAgICAgICAgEB9IQIgA0KAgICAgICAgAhSDQEgAiAEQgGDfCECDAELIANQIARCgICAgICAwP//AFQgBEKAgICAgIDA//8AURtFBEAgBUIEhiADQjyIhEL/////////A4NCgICAgICAgPz/AIQhAgwBC0KAgICAgICA+P8AIQIgBEL///////+//8MAVg0AQgAhAiAEQjCIpyIBQZH3AEkNACADIQIgBUL///////8/g0KAgICAgIDAAIQiBCEGAkAgAUGB9wBrIghBwABxBEAgAyAIQUBqrYYhBkIAIQIMAQsgCEUNACAGIAitIgeGIAJBwAAgCGutiIQhBiACIAeGIQILIAAgAjcDECAAIAY3AxgCQEGB+AAgAWsiAUHAAHEEQCAEIAFBQGqtiCEDQgAhBAwBCyABRQ0AIARBwAAgAWuthiADIAGtIgKIhCEDIAQgAoghBAsgACADNwMAIAAgBDcDCCAAKQMIQgSGIAApAwAiA0I8iIQhAiAAKQMQIAApAxiEQgBSrSADQv//////////D4OEIgNCgYCAgICAgIAIWgRAIAJCAXwhAgwBCyADQoCAgICAgICACFINACACQgGDIAJ8IQILIABBIGokACAJIAIgBUKAgICAgICAgIB/g4S/OQMAC0ABAn8jAEEQayICJAAgAiABNgIMIAJB1NUANgIIIAJBCGogABEBACEDIAIoAgwiAQRAIAEQAwsgAkEQaiQAIAMLBABCAAsEAEEAC/YCAQh/IwBBIGsiAyQAIAMgACgCHCIENgIQIAAoAhQhBSADIAI2AhwgAyABNgIYIAMgBSAEayIBNgIUIAEgAmohBUECIQcCfwJAAkACQCAAKAI8IANBEGoiAUECIANBDGoQDSIEBH9B6N4AIAQ2AgBBfwVBAAsEQCABIQQMAQsDQCAFIAMoAgwiBkYNAiAGQQBIBEAgASEEDAQLIAEgBiABKAIEIghLIglBA3RqIgQgBiAIQQAgCRtrIgggBCgCAGo2AgAgAUEMQQQgCRtqIgEgASgCACAIazYCACAFIAZrIQUgACgCPCAEIgEgByAJayIHIANBDGoQDSIGBH9B6N4AIAY2AgBBfwVBAAtFDQALCyAFQX9HDQELIAAgACgCLCIBNgIcIAAgATYCFCAAIAEgACgCMGo2AhAgAgwBCyAAQQA2AhwgAEIANwMQIAAgACgCAEEgcjYCAEEAIAdBAkYNABogAiAEKAIEawshCiADQSBqJAAgCgt+AQF/IAAEQCAALAA3QQBIBEAgACgCLBAZCyAALAArQQBIBEAgACgCIBAZCyAAKAIcIgEEQCABEAMgAEEANgIcCyAAKAIUIgEEQCABEAMgAEEANgIUCyAAKAIMIgEEQCABEAMgAEEANgIMCyAAKAIEIgEEQCABEAMLIAAQGQsLJAECfyAAKAIEIgAQKkEBaiIBEC0iAgR/IAIgACABECIFQQALC/AeAw1/AnwBfSMAQUBqIgMkACADQaADEBwiAjYCHCADQp2DgICAtICAgH83AiAgAkGuHkGdAxAiQQA6AJ0DIANBHGoiAkGVEUGAESABLQA4GxAaGgJAIAICf0GAEiABKAJEIgJB2gBGDQAaIAJBjgJHBEAgAkG0AUcNAkHGEQwBC0HmEQsQGhoLIANBHGpBtyYQGhoCQAJAAkACQAJAIAEoAjxBAWsOAwABAgMLIANBKGohDSABKAJAIQwjAEGgAWsiBiQAIwBBEGsiBCQAIARBADYCDCAEQgA3AgQgBEE4EBwiAjYCBCAEIAJBOGoiBTYCDCACQQBBOBAmGiAEIAU2AggCfyAGQZQBaiIFQQA2AgggBUIANwIAIAVB1AAQHCICNgIEIAUgAjYCACAFIAJB1ABqIgg2AggCQAJAIAQoAggiByAEKAIEIglGBEAgAkEAQdQAECYaDAELIAcgCWsiCkEDdSIHQYCAgIACTw0BIAdBA3QhCwNAIAJBADYCCCACQgA3AgAgAiAKEBwiBzYCBCACIAc2AgAgAiAHIAtqIg42AgggByAJIAoQIhogAiAONgIEIAJBDGoiAiAIRw0ACwsgBSAINgIEIAUMAQsgAkEANgIIIAJCADcCAEHiCBBSAAshCSAEKAIEIgIEQCAEIAI2AgggAhAZC0EAIQIDQCAJKAIAIAJBDGxqIQcgAiACbCEIAkAgAkUEQEEAIQUDQCAFIAVsIAhqt58iD0QAAAAAAAAcQGUEQCAHKAIAIAVBA3RqIA8gD5qiRAAAAAAAADJAoxA2RAMkJUW5G5I/oiIPOQMAIA8gEKAhEAsgBUEBaiIFQQdHDQALDAELIAi3nyIPRAAAAAAAABxAZQRAIA8gD5qiRAAAAAAAADJAoxA2IQ8gBygCACAPRAMkJUW5G5I/oiIPOQMAIA8gEKAhEAtBASEFA0AgBSAFbCAIarefIg9EAAAAAAAAHEBlBEAgBygCACAFQQN0aiAPIA+aokQAAAAAAAAyQKMQNkQDJCVFuRuSP6IiDzkDACAPRAAAAAAAABBAoiAQoCEQCyAFQQFqIgVBB0cNAAsLIAJBAWoiAkEHRw0ACyAJKAIAIQlBACECA0AgCSACQQxsaigCACEHQQAhBUEAIQgDQCAHIAVBA3QiCmoiCyALKwMAIBCjOQMAIAcgCkEIcmoiCiAKKwMAIBCjOQMAIAVBAmohBSAIQQJqIghBBkcNAAsgByAFQQN0aiIFIAUrAwAgEKM5AwAgAkEBaiICQQdHDQALIARBEGokACAGQQA6AIgBIAZBADoAkwFBeiEFA0AgBSAMbCEHIAUgBUEfdSICcyACa0EMbCEIQXohAgNAAkAgBigClAEgCGooAgAgAiACQR91IgRzIARrQQN0aisDALYiEUMAAAAAXkUNACAGQRxqIgQgBxAvIAYgBEHNFhAlIgQoAgg2AjAgBiAEKQIANwMoIARCADcCACAEQQA2AgggBkFAayAGQShqQaMSEBoiBCgCCDYCACAGIAQpAgA3AzggBEIANwIAIARBADYCCCAGQRBqIgQgAiAMbBAvIAYgBkE4aiAGKAIQIAQgBi0AGyIEwEEASCIJGyAGKAIUIAQgCRsQGyIEKAIINgJQIAYgBCkCADcDSCAEQgA3AgAgBEEANgIIIAYgBkHIAGpBpxIQGiIEKAIINgJgIAYgBCkCADcDWCAEQgA3AgAgBEEANgIIIAZBBGoiBCAREC4gBiAGQdgAaiAGKAIEIAQgBi0ADyIEwEEASCIJGyAGKAIIIAQgCRsQGyIEKAIINgJwIAYgBCkCADcDaCAEQgA3AgAgBEEANgIIIAYgBkHoAGpBmBIQGiIEKAIINgKAASAGIAQpAgA3A3ggBEIANwIAIARBADYCCCAGQYgBaiAGKAJ4IAZB+ABqIAYtAIMBIgTAQQBIIgkbIAYoAnwgBCAJGxAbGiAGLACDAUEASARAIAYoAngQGQsgBiwAc0EASARAIAYoAmgQGQsgBiwAD0EASARAIAYoAgQQGQsgBiwAY0EASARAIAYoAlgQGQsgBiwAU0EASARAIAYoAkgQGQsgBiwAG0EASARAIAYoAhAQGQsgBiwAQ0EASARAIAYoAjgQGQsgBiwAM0EASARAIAYoAigQGQsgBiwAJ0EATg0AIAYoAhwQGQsgAkEBaiICQQdHDQALIAVBAWoiBUEHRw0ACyMAQRBrIgwkAEGZJhAqIQcCfyAGQYgBaiIFLQALQQd2BEAgBSgCBAwBCyAFLQALQf8AcQshCAJ/An8jAEEQayIJJAAgBkH4AGohAiAHIAhqIgRB7////wdNBEACQCAEQQtJBEAgAkIANwIAIAJBADYCCCACIAItAAtBgAFxIARB/wBxcjoACyACIAItAAtB/wBxOgALDAELIARBC08EfyAEQRBqQXBxIgogCkEBayIKIApBC0YbBUEKC0EBaiIKEBwhCyACIAIoAghBgICAgHhxIApB/////wdxcjYCCCACIAIoAghBgICAgHhyNgIIIAIgCzYCACACIAQ2AgQLIAlBEGokACACDAELECcACyIELQALQQd2BEAgBCgCAAwBCyAECyIEQZkmIAcQIyAEIAdqIgQCfyAFLQALQQd2BEAgBSgCAAwBCyAFCyAIECMgBCAIakEBEEAgDEEQaiQAIA0gAkHzKRAaIgIpAgA3AgAgDSACKAIINgIIIAJCADcCACACQQA2AgggBiwAgwFBAEgEQCAGKAJ4EBkLIAYsAJMBQQBIBEAgBigCiAEQGQsgBigClAEiBQRAIAYoApgBIgQgBSICRwRAA0AgBEEMayICKAIAIgcEQCAEQQhrIAc2AgAgBxAZCyACIgQgBUcNAAsgBigClAEhAgsgBiAFNgKYASACEBkLIAZBoAFqJAAgA0EcaiADKAIoIA0gAy0AMyICwEEASCIFGyADKAIsIAIgBRsQGxogAywAM0EATg0DIAMoAigQGQwDCyADQRxqQcwhEBoaDAILIANBHGpBrywQGhoMAQsgA0EcakGYLBAaGgsCQAJAIAEoAjAgAS0ANyICIALAIgZBAEgbIgRBAWoiBUHw////B0kEQAJAAkAgBUELTwRAIAVBD3JBAWoiBxAcIQIgAyAFNgIsIAMgAjYCKCADIAdBgICAgHhyNgIwDAELIANBADYCMCADQgA3AyggAyAFOgAzIANBKGohAiAERQ0BCyACIAFBLGoiBSgCACAFIAZBAEgbIAQQMgsgAiAEakEKOwAAIANBHGogAygCKCADQShqIAMtADMiAsBBAEgiBRsgAygCLCACIAUbEBsaIAMsADNBAEgEQCADKAIoEBkLIAEoAiQgAS0AKyICIALAIgZBAEgbIgRBAmoiBUHw////B08NAQJAAkAgBUELTwRAIAVBD3JBAWoiBxAcIQIgAyAFNgIsIAMgAjYCKCADIAdBgICAgHhyNgIwDAELIANBADYCMCADQgA3AyggAyAFOgAzIANBKGohAiAERQ0BCyACIAFBIGoiBSgCACAFIAZBAEgbIAQQMgsgAiAEaiICQQA6AAIgAkH9FDsAACADQRxqIAMoAiggA0EoaiADLQAzIgLAQQBIIgUbIAMoAiwgAiAFGxAbGiADLAAzQQBIBEAgAygCKBAZC0HA0wAoAgAiBBAqIgJB8P///wdPDQICQAJAIAJBC08EQCACQQ9yQQFqIgYQHCEFIAMgBkGAgICAeHI2AhggAyAFNgIQIAMgAjYCFAwBCyADIAI6ABsgA0EQaiEFIAJFDQELIAUgBCACEDILIAIgBWpBADoAACADQShqIAFBsZYCIANBEGoQUyADKAIsIQIgA0EANgIsIAMoAighBQJAIAEoAhQiBEUEQCABIAI2AhQgASAFNgIQDAELIAQQAyADKAIsIQQgASACNgIUIAEgBTYCECAERQ0AIAQQAyADQQA2AiwLIAMsABtBAEgEQCADKAIQEBkLAkAgAywAJ0EATgRAIAMgAygCJDYCCCADIAMpAhw3AwAMAQsgAygCHCEGIAMoAiAhBSMAQRBrIgQkAAJAAkACQCAFQQtJBEAgAyECIAMgAy0AC0GAAXEgBUH/AHFyOgALIAMgAy0AC0H/AHE6AAsMAQsgBUHv////B0sNASAEQQhqIAMgBUELTwR/IAVBEGpBcHEiAiACQQFrIgIgAkELRhsFQQoLQQFqEDAgBCgCDBogAyAEKAIIIgI2AgAgAyADKAIIQYCAgIB4cSAEKAIMQf////8HcXI2AgggAyADKAIIQYCAgIB4cjYCCCADIAU2AgQLIAIgBiAFQQFqECMgBEEQaiQADAELECcACwsgA0EoaiABQbCWAiADEFMgAygCLCECIANBADYCLCADKAIoIQUCQCABKAIMIgRFBEAgASACNgIMIAEgBTYCCAwBCyAEEAMgAygCLCEEIAEgAjYCDCABIAU2AgggBEUNACAEEAMgA0EANgIsCyADLAALQQBIBEAgAygCABAZCyADQQA2AihBhNUALQAAQQFxRQRAQQFBqC9BABAFIQJBhNUAQQE6AABBgNUAIAI2AgALAn9BgNUAKAIAIAEoAgRB6QkgA0EoakEAEAQiEEQAAAAAAADwQWMgEEQAAAAAAAAAAGZxBEAgEKsMAQtBAAshAiADKAIoIgUEQCAFEAELIAEoAhwiBQRAIAUQAwsgASACNgIcIAFB1NUANgIYIAIQAiADIAI2AiggASgCFCICEAIgAyACNgIwIANBADYCPEGM1QAtAABBAXFFBEBBA0GsL0EAEAUhAkGM1QBBAToAAEGI1QAgAjYCAAtBiNUAKAIAIAEoAgRB8AggA0E8aiADQShqEAQaIAMoAjwiAgRAIAIQAQsgASgCHCICEAIgAyACNgIoIAEoAgwiAhACIAMgAjYCMCADQQA2AjxBjNUALQAAQQFxRQRAQQNBrC9BABAFIQJBjNUAQQE6AABBiNUAIAI2AgALQYjVACgCACABKAIEQfAIIANBPGogA0EoahAEGiADKAI8IgIEQCACEAELIAEoAhwiAhACIAMgAjYCKCADQQA2AjxB7NQALQAAQQFxRQRAQQJBvC5BABAFIQJB7NQAQQE6AABB6NQAIAI2AgALQejUACgCACABKAIEQc8JIANBPGogA0EoahAEGiADKAI8IgIEQCACEAELIAAgASgCHCIBNgIEIABB1NUANgIAIAEQAiADLAAnQQBIBEAgAygCHBAZCyADQUBrJAAPCxA3AAsQNwALEDcAC9gCAQJ/IwBBEGsiASQAIAAoAhQiAhACIAEgAjYCCCABQQA2AgRB7NQALQAAQQFxRQRAQQJBvC5BABAFIQJB7NQAQQE6AABB6NQAIAI2AgALQejUACgCACAAKAIEQf0IIAFBBGogAUEIahAEGiABKAIEIgIEQCACEAELIAAoAgwiAhACIAEgAjYCCCABQQA2AgRB7NQALQAAQQFxRQRAQQJBvC5BABAFIQJB7NQAQQE6AABB6NQAIAI2AgALQejUACgCACAAKAIEQf0IIAFBBGogAUEIahAEGiABKAIEIgIEQCACEAELIAAoAhwiAhACIAEgAjYCCCABQQA2AgRB7NQALQAAQQFxRQRAQQJBvC5BABAFIQJB7NQAQQE6AABB6NQAIAI2AgALQejUACgCACAAKAIEQdsJIAFBBGogAUEIahAEGiABKAIEIgAEQCAAEAELIAFBEGokAAs1AQF/IAEgACgCBCICQQF1aiEBIAAoAgAhACABIAJBAXEEfyABKAIAIABqKAIABSAACxEDAAsvAAJ/IAAsACtBAEgEQCAAQQA2AiQgACgCIAwBCyAAQQA6ACsgAEEgagtBADoAAAsFAEHoLAs9AQF/IAEgACgCBCIGQQF1aiEBIAAoAgAhACABIAIgAyAEIAUgBkEBcQR/IAEoAgAgAGooAgAFIAALEQ0AC7wJAgR/AXwjAEEQayIIJAAgASEJIAAoAkQhBiMAQYACayIFJAACQAJAIAZBjgJGDQAgBkHaAEYNACADIQEgBCEDDAELIAQhAQsgBUHEAGoiBiAJECEgBSAGQdsSECUiBigCCDYCWCAFIAYpAgA3A1AgBkIANwIAIAZBADYCCCAFIAVB0ABqQfEUEBoiBigCCDYCaCAFIAYpAgA3A2AgBkIANwIAIAZBADYCCCAFQThqIgYgAhAhIAUgBUHgAGogBSgCOCAGIAUtAEMiBsBBAEgiBxsgBSgCPCAGIAcbEBsiBigCCDYCeCAFIAYpAgA3A3AgBkIANwIAIAZBADYCCCAFIAVB8ABqQbYSEBoiBigCCDYCiAEgBSAGKQIANwOAASAGQgA3AgAgBkEANgIIIAVBLGoiBiABIAmgECEgBSAFQYABaiAFKAIsIAYgBS0ANyIGwEEASCIHGyAFKAIwIAYgBxsQGyIGKAIINgKYASAFIAYpAgA3A5ABIAZCADcCACAGQQA2AgggBSAFQZABakHxFBAaIgYoAgg2AqgBIAUgBikCADcDoAEgBkIANwIAIAZBADYCCCAFQSBqIgYgAyACoBAhIAUgBUGgAWogBSgCICAGIAUtACsiBsBBAEgiBxsgBSgCJCAGIAcbEBsiBigCCDYCuAEgBSAGKQIANwOwASAGQgA3AgAgBkEANgIIIAUgBUGwAWpByhMQGiIGKAIINgLIASAFIAYpAgA3A8ABIAZCADcCACAGQQA2AgggBUEUaiIGIAEQISAFIAVBwAFqIAUoAhQgBiAFLQAfIgbAQQBIIgcbIAUoAhggBiAHGxAbIgYoAgg2AtgBIAUgBikCADcD0AEgBkIANwIAIAZBADYCCCAFIAVB0AFqQagTEBoiBigCCDYC6AEgBSAGKQIANwPgASAGQgA3AgAgBkEANgIIIAVBCGoiBiADECEgBSAFQeABaiAFKAIIIAYgBS0AEyIGwEEASCIHGyAFKAIMIAYgBxsQGyIGKAIINgL4ASAFIAYpAgA3A/ABIAZCADcCACAGQQA2AgggCCAFQfABakGEHRAaIgYpAgA3AgQgCCAGKAIINgIMIAZCADcCACAGQQA2AgggBSwA+wFBAEgEQCAFKALwARAZCyAFLAATQQBIBEAgBSgCCBAZCyAFLADrAUEASARAIAUoAuABEBkLIAUsANsBQQBIBEAgBSgC0AEQGQsgBSwAH0EASARAIAUoAhQQGQsgBSwAywFBAEgEQCAFKALAARAZCyAFLAC7AUEASARAIAUoArABEBkLIAUsACtBAEgEQCAFKAIgEBkLIAUsAKsBQQBIBEAgBSgCoAEQGQsgBSwAmwFBAEgEQCAFKAKQARAZCyAFLAA3QQBIBEAgBSgCLBAZCyAFLACLAUEASARAIAUoAoABEBkLIAUsAHtBAEgEQCAFKAJwEBkLIAUsAENBAEgEQCAFKAI4EBkLIAUsAGtBAEgEQCAFKAJgEBkLIAUsAFtBAEgEQCAFKAJQEBkLIAUsAE9BAEgEQCAFKAJEEBkLIAVBgAJqJAAgACwAK0EASARAIAAoAiAQGQsgACAIKQIENwIgIAAgCCgCDDYCKCAIQRBqJAALPwEBfyABIAAoAgQiB0EBdWohASAAKAIAIQAgASACIAMgBCAFIAYgB0EBcQR/IAEoAgAgAGooAgAFIAALEQ4AC88bAgd/AXwjAEFAaiIJJAAgCSAFOQMgIAkgBDkDGCAJIAM5AxAgCSACOQMIIAkgATkDACMAQRBrIgYkACAGIAk2AgxByNMAQf4rIAlBABBNGiAGQRBqJAAjAEGABGsiBiQAIAlBNGoiC0EAOgAAIAtBADoACwJAIAFEAAAAAAAAAABkRQ0AIAZBADoA8AMgBkEAOgD7AyAGQQA6AOQDIAZBADoA7wMgBkKAgICAhICAgMAANwPYAyAGQoCAgICEgICAQDcD0AMgBkKAgICAjICAgMAANwPIAyAGQoCAgICMgICAQDcDwAMgBkKAgICEhICAwMAANwO4AyAGQoCAgISEgIDAQDcDsAMgBkKAgICEjICAwMAANwOoAyAGQoCAgISMgIDAQDcDoAMgBkKAgICGDDcDmAMgBkKAgICGBDcDkAMgBkKAgICAgICA4MAANwOIAyAGQoCAgICAgIDgQDcDgAMgBkKAgICIjICA0EA3A/gCIAZCgICAiIyAgNDAADcD8AIgBkKAgICIhICA0MAANwPoAiAGQoCAgIiEgIDQQDcD4AIgBkKAgICFjICAgEE3A9gCIAZCgICAhYyAgIDBADcD0AIgBkKAgICFhICAgMEANwPIAiAGQoCAgIWEgICAQTcDwAIgBkKAgICJBDcDuAIgBkKAgICJDDcDsAIgBkKAgICAgICAkMEANwOoAiAGQoCAgICAgICQQTcDoAJEAAAAAAAAAEAgBKMhBCABRJqZmZmZmem/okQAAAAAAADwP6AhDQNAIAZBsAFqIgggBxAvIAYgCEHECxAlIggoAgg2AsgBIAYgCCkCADcDwAEgCEIANwIAIAhBADYCCCAGIAZBwAFqQfQWEBoiCCgCCDYC2AEgBiAIKQIANwPQASAIQgA3AgAgCEEANgIIIAZBoAFqIgggBkGgAmogB0EDdGoiCioCABAuIAYgBkHQAWogBigCoAEgCCAGLQCrASIIwEEASCIMGyAGKAKkASAIIAwbEBsiCCgCCDYC6AEgBiAIKQIANwPgASAIQgA3AgAgCEEANgIIIAYgBkHgAWpB+RwQGiIIKAIINgL4ASAGIAgpAgA3A/ABIAhCADcCACAIQQA2AgggBkGQAWoiCCAKKgIEEC4gBiAGQfABaiAGKAKQASAIIAYtAJsBIgjAQQBIIgobIAYoApQBIAggChsQGyIIKAIINgKIAiAGIAgpAgA3A4ACIAhCADcCACAIQQA2AgggBiAGQYACakGXEhAaIggoAgg2ApgCIAYgCCkCADcDkAIgCEIANwIAIAhBADYCCCAGQeQDaiAGKAKQAiAGQZACaiAGLQCbAiIIwEEASCIKGyAGKAKUAiAIIAobEBsaIAYsAJsCQQBIBEAgBigCkAIQGQsgBiwAiwJBAEgEQCAGKAKAAhAZCyAGLACbAUEASARAIAYoApABEBkLIAYsAPsBQQBIBEAgBigC8AEQGQsgBiwA6wFBAEgEQCAGKALgARAZCyAGLACrAUEASARAIAYoAqABEBkLIAYsANsBQQBIBEAgBigC0AEQGQsgBiwAywFBAEgEQCAGKALAARAZCyAGLAC7AUEASARAIAYoArABEBkLIAZB0AFqIgggBxAvIAYgCEGmCxAlIggoAgg2AugBIAYgCCkCADcD4AEgCEIANwIAIAhBADYCCCAGIAZB4AFqQfwcEBoiCCgCCDYC+AEgBiAIKQIANwPwASAIQgA3AgAgCEEANgIIIAZBwAFqIghDAAAAQEMAAEBAQwAAgD8gB0ETSxsgB0EMa0EISRsQLiAGIAZB8AFqIAYoAsABIAggBi0AywEiCMBBAEgiChsgBigCxAEgCCAKGxAbIggoAgg2AogCIAYgCCkCADcDgAIgCEIANwIAIAhBADYCCCAGIAZBgAJqQZcXEBoiCCgCCDYCmAIgBiAIKQIANwOQAiAIQgA3AgAgCEEANgIIIAZB8ANqIAYoApACIAZBkAJqIAYtAJsCIgjAQQBIIgobIAYoApQCIAggChsQGxogBiwAmwJBAEgEQCAGKAKQAhAZCyAGLACLAkEASARAIAYoAoACEBkLIAYsAMsBQQBIBEAgBigCwAEQGQsgBiwA+wFBAEgEQCAGKALwARAZCyAGLADrAUEASARAIAYoAuABEBkLIAYsANsBQQBIBEAgBigC0AEQGQsgB0EBaiIHQRhHDQALIAZBNGoiByAEECEgBiAHQdoWECUiBygCCDYCSCAGIAcpAgA3A0AgB0IANwIAIAdBADYCCCAGIAZBQGtBpRIQGiIHKAIINgJYIAYgBykCADcDUCAHQgA3AgAgB0EANgIIIAZBKGoiB0QAAAAAAAAAQCAFoxAhIAYgBkHQAGogBigCKCAHIAYtADMiB8BBAEgiCBsgBigCLCAHIAgbEBsiBygCCDYCaCAGIAcpAgA3A2AgB0IANwIAIAdBADYCCCAGIAZB4ABqQdIdEBoiBygCCDYCeCAGIAcpAgA3A3AgB0IANwIAIAdBADYCCCAGIAZB8ABqIAYoAuQDIAZB5ANqIAYtAO8DIgfAQQBIIggbIAYoAugDIAcgCBsQGyIHKAIINgKIASAGIAcpAgA3A4ABIAdCADcCACAHQQA2AgggBiAGQYABakH6HRAaIgcoAgg2ApgBIAYgBykCADcDkAEgB0IANwIAIAdBADYCCCAGIAZBkAFqIAYoAvADIAZB8ANqIAYtAPsDIgfAQQBIIggbIAYoAvQDIAcgCBsQGyIHKAIINgKoASAGIAcpAgA3A6ABIAdCADcCACAHQQA2AgggBiAGQaABakGYGxAaIgcoAgg2ArgBIAYgBykCADcDsAEgB0IANwIAIAdBADYCCCAGQRxqIgcgDRAhIAYgBkGwAWogBigCHCAHIAYtACciB8BBAEgiCBsgBigCICAHIAgbEBsiBygCCDYCyAEgBiAHKQIANwPAASAHQgA3AgAgB0EANgIIIAYgBkHAAWpBlxUQGiIHKAIINgLYASAGIAcpAgA3A9ABIAdCADcCACAHQQA2AgggBkEQaiIHIAFEMzMzMzMz47+iRAAAAAAAAPA/oBAhIAYgBkHQAWogBigCECAHIAYtABsiB8BBAEgiCBsgBigCFCAHIAgbEBsiBygCCDYC6AEgBiAHKQIANwPgASAHQgA3AgAgB0EANgIIIAYgBkHgAWpBmhcQGiIHKAIINgL4ASAGIAcpAgA3A/ABIAdCADcCACAHQQA2AgggBkEEaiIHIAEQISAGIAZB8AFqIAYoAgQgByAGLQAPIgfAQQBIIggbIAYoAgggByAIGxAbIgcoAgg2AogCIAYgBykCADcDgAIgB0IANwIAIAdBADYCCCAGIAZBgAJqQcsdEBoiBygCCDYCmAIgBiAHKQIANwOQAiAHQgA3AgAgB0EANgIIIAsgBigCkAIgBkGQAmogBi0AmwIiB8BBAEgiCBsgBigClAIgByAIGxAbGiAGLACbAkEASARAIAYoApACEBkLIAYsAIsCQQBIBEAgBigCgAIQGQsgBiwAD0EASARAIAYoAgQQGQsgBiwA+wFBAEgEQCAGKALwARAZCyAGLADrAUEASARAIAYoAuABEBkLIAYsABtBAEgEQCAGKAIQEBkLIAYsANsBQQBIBEAgBigC0AEQGQsgBiwAywFBAEgEQCAGKALAARAZCyAGLAAnQQBIBEAgBigCHBAZCyAGLAC7AUEASARAIAYoArABEBkLIAYsAKsBQQBIBEAgBigCoAEQGQsgBiwAmwFBAEgEQCAGKAKQARAZCyAGLACLAUEASARAIAYoAoABEBkLIAYsAHtBAEgEQCAGKAJwEBkLIAYsAGtBAEgEQCAGKAJgEBkLIAYsADNBAEgEQCAGKAIoEBkLIAYsAFtBAEgEQCAGKAJQEBkLIAYsAEtBAEgEQCAGKAJAEBkLIAYsAD9BAEgEQCAGKAI0EBkLIAYsAO8DQQBIBEAgBigC5AMQGQsgBiwA+wNBAE4NACAGKALwAxAZCwJAIANEAAAAAAAAAABkRQ0AIAZB5ANqIgcgA0TNzMzMzMzcP6JEmpmZmZmZuT+gECEgBiAHQcEZECUiBygCCDYC+AMgBiAHKQIANwPwAyAHQgA3AgAgB0EANgIIIAYgBkHwA2pB6ykQGiIHKAIINgKoAiAGIAcpAgA3A6ACIAdCADcCACAHQQA2AgggCyAGKAKgAiAGQaACaiAGLQCrAiIHwEEASCIIGyAGKAKkAiAHIAgbEBsaIAYsAKsCQQBIBEAgBigCoAIQGQsgBiwA+wNBAEgEQCAGKALwAxAZCyAGLADvA0EATg0AIAYoAuQDEBkLAkAgAkQAAAAAAAAAAGRFDQAgBkHkA2oiByACRLgehetRuL4/ohAhIAYgB0GBFRAlIgcoAgg2AvgDIAYgBykCADcD8AMgB0IANwIAIAdBADYCCCAGIAZB8ANqQdssEBoiBygCCDYCqAIgBiAHKQIANwOgAiAHQgA3AgAgB0EANgIIIAsgBigCoAIgBkGgAmogBi0AqwIiB8BBAEgiCxsgBigCpAIgByALGxAbGiAGLACrAkEASARAIAYoAqACEBkLIAYsAPsDQQBIBEAgBigC8AMQGQsgBiwA7wNBAE4NACAGKALkAxAZCyAGQYAEaiQAIAAsADdBAEgEQCAAKAIsEBkLIAAgCSkCNDcCLCAAIAkoAjw2AjQgCUFAayQAC2ACAX8BfCMAQRBrIgIkACACQQA2AgwgASgCBEGc0AAgAkEMahAJIQMgAigCDCIBBEAgARABCyAAAn8gA5lEAAAAAAAA4EFjBEAgA6oMAQtBgICAgHgLNgJEIAJBEGokAAs3AQF/IwBBEGsiAiQAIAIgASgCRDYCCCAAQZzQACACQQhqEAc2AgQgAEHU1QA2AgAgAkEQaiQAC2ACAX8BfCMAQRBrIgIkACACQQA2AgwgASgCBEGc0AAgAkEMahAJIQMgAigCDCIBBEAgARABCyAAAn8gA5lEAAAAAAAA4EFjBEAgA6oMAQtBgICAgHgLNgJAIAJBEGokAAs3AQF/IwBBEGsiAiQAIAIgASgCQDYCCCAAQZzQACACQQhqEAc2AgQgAEHU1QA2AgAgAkEQaiQAC2ACAX8BfCMAQRBrIgIkACACQQA2AgwgASgCBEGc0AAgAkEMahAJIQMgAigCDCIBBEAgARABCyAAAn8gA5lEAAAAAAAA4EFjBEAgA6oMAQtBgICAgHgLNgI8IAJBEGokAAsiAQF+IAEgAq0gA61CIIaEIAQgABEMACIFQiCIpyQBIAWnCzcBAX8jAEEQayICJAAgAiABKAI8NgIIIABBnNAAIAJBCGoQBzYCBCAAQdTVADYCACACQRBqJAALC/NKFQBBgAgLhCZzZXRCZWF1dHkALSsgICAwWDB4AC0wWCswWCAwWC0weCsweCAweAB1bnNpZ25lZCBzaG9ydAB1bnNpZ25lZCBpbnQAaW5pdABmbG9hdAB1aW50NjRfdABibHVyUmFkaXVzAHZlY3RvcgBtaXJyb3IAYXR0YWNoU2hhZGVyAGRlbGV0ZVNoYWRlcgBjcmVhdGVTaGFkZXIAY29tcGlsZVNoYWRlcgB1bnNpZ25lZCBjaGFyAHN0ZDo6ZXhjZXB0aW9uAHJvdGF0aW9uAG5hbgBsaW5rUHJvZ3JhbQBkZWxldGVQcm9ncmFtAGNyZWF0ZVByb2dyYW0AYm9vbABlbXNjcmlwdGVuOjp2YWwAc2V0V2F0ZXJNYXJrAHN0b3BXYXRlck1hcmsAdW5zaWduZWQgbG9uZwBzdGQ6OndzdHJpbmcAYmFzaWNfc3RyaW5nAHN0ZDo6c3RyaW5nAHN0ZDo6dTE2c3RyaW5nAHN0ZDo6dTMyc3RyaW5nAGluZgAlZgBjbG9zZQBkb3VibGUAdmJNb2RlAHNoYWRlclNvdXJjZQB2b2lkAHNhbXBsZUNvbG9yICs9IHRleHR1cmUoZnJhbWUsIGJsdXJDb29yZGluYXRlc1sATkFOAElORgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxzaG9ydD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgc2hvcnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgaW50PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxmbG9hdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dWludDhfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50OF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50MTZfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50MTZfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dWludDY0X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludDY0X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQzMl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQzMl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxjaGFyPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBjaGFyPgBzdGQ6OmJhc2ljX3N0cmluZzx1bnNpZ25lZCBjaGFyPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxzaWduZWQgY2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8bG9uZz4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgbG9uZz4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8ZG91YmxlPgB2ZWMyIGMgPSB2X3RleENvb3JkOwB2ZWMyIGMgPSB2ZWMyKDEuMCAtIHZfdGV4Q29vcmQueCwgdl90ZXhDb29yZC55KTsAYyA9IHZlYzIoMS4wIC0gYy54LCAxLjAgLSBjLnkpOwBjID0gdmVjMihjLnksIDEuMCAtIGMueCk7AGMgPSB2ZWMyKDEuMCAtIGMueSwgYy54KTsAQWxsSW4xAC4ALjAsAC4wKSpvKSoAKG51bGwpACkqby55KTsgICAgdmVjMiBjb29yZDIgPSB2ZWMyKGZsb2F0KAAgICAgYyA9IHZlYzIodl90ZXhDb29yZC54LCAxLjAgLSB2X3RleENvb3JkLnkpOyAgICB2ZWMyIGNvb3JkMSA9IHZlYzIoZmxvYXQoACksIChjLnkgLWNvb3JkMS55KSAvIG8ueSAvIGZsb2F0KAApKm8ueSk7ICAgIGlmIChjLnggPiBjb29yZDEueCAmJiBjLnggPCBjb29yZDIueCAmJiBjLnkgPiBjb29yZDEueSAmJiBjLnkgPCBjb29yZDIueSkgeyAgICAgIHZlYzQgd2F0ZXJDb2xvciA9IHRleHR1cmUod2F0ZXJNYXJrLCB2ZWMyKChjLnggLSBjb29yZDEueCkgIC8gby54IC8gZmxvYXQoACkgKiBvLngsIGZsb2F0KABvdXRDb2xvci5yZ2IgKz0gdmVjMygAKTsgICAgICAgdmVjMyBzbW9vdGhDb2xvciA9IG91dENvbG9yLnJnYiArIChvdXRDb2xvci5yZ2ItdmVjMyhoaWdoUGFzcykpKmFscGhhKjAuMTsgICAgICAgc21vb3RoQ29sb3IgPSBtYXgoc21vb3RoQ29sb3IsIHZlYzMoMC4wKSk7ICAgICAgIHNtb290aENvbG9yID0gY2xhbXAocG93KHNtb290aENvbG9yLCB2ZWMzKABnKz1HKGMsdmVjMigAICAgICAgdmVjMiBvZmZzZXQgPSB2ZWMyKABdID0gdl90ZXhDb29yZC54eSArIG9mZnNldCAqIHZlYzIoADsgACkpLCB2ZWMzKDAuMCksIHZlYzMoMS4wKSk7ICAgICAgdmVjMyBzY3JlZW4gPSB2ZWMzKDEuMCkgLSAodmVjMygxLjApLXNtb290aENvbG9yKSAqICh2ZWMzKDEuMCktb3V0Q29sb3IucmdiKTsgICAgICAgdmVjMyBsaWdodGVuID0gbWF4KHNtb290aENvbG9yLCBvdXRDb2xvci5yZ2IpOyAgICAgICB2ZWMzIGJlYXV0eUNvbG9yID0gbWl4KG1peChvdXRDb2xvci5yZ2IsIHNjcmVlbiwgYWxwaGEpLCBsaWdodGVuLCBhbHBoYSk7ICAgICAgb3V0Q29sb3IucmdiID0gbWl4KG91dENvbG9yLnJnYiwgYmVhdXR5Q29sb3IsIAAKICAgICAgY29uc3QgbWF0MyBzYXR1cmF0ZU1hdHJpeCA9IG1hdDMoMS4xMTAyLC0wLjA1OTgsLTAuMDYxLC0wLjA3NzQsMS4wODI2LC0wLjExODYsLTAuMDIyOCwtMC4wMjI4LDEuMTc3Mik7CiAgICAgIHZlYzMgd2FybUNvbG9yID0gb3V0Q29sb3IucmdiICogc2F0dXJhdGVNYXRyaXg7CiAgICAgIG91dENvbG9yLnJnYiA9IG1peChvdXRDb2xvci5yZ2IsIHdhcm1Db2xvciwgACAgICAgIHNhbXBsZUNvbG9yID0gc2FtcGxlQ29sb3IgLyA2Mi4wOyAgICAgICBmbG9hdCBoaWdoUGFzcyA9IG91dENvbG9yLmcgLSBzYW1wbGVDb2xvciArIDAuNTsgICAgICAgY29uc3QgaGlnaHAgdmVjMyBXID0gdmVjMygwLjI5OSwwLjU4NywwLjExNCk7ICAgICAgZmxvYXQgbHVtaW5hbmNlID0gZG90KG91dENvbG9yLnJnYiwgVyk7ICAgICAgIGZsb2F0IGFscGhhID0gcG93KGx1bWluYW5jZSwgAF0pLmcgKiAAKSkpOyAgICAgIG91dENvbG9yID0gbWl4KG91dENvbG9yLHdhdGVyQ29sb3IsICB3YXRlckNvbG9yLmEpOyAgICB9ICAgIAApOyAgICAAKTsgICAgICB2ZWMyIGJsdXJDb29yZGluYXRlc1syNF07ICAgICAgACAgICAgIGZsb2F0IHNhbXBsZUNvbG9yID0gb3V0Q29sb3IuZyAqIDIyLjA7ICAgICAgIAAjdmVyc2lvbiAzMDAgZXMKICAgIHByZWNpc2lvbiBoaWdocCBmbG9hdDsKICAgIHVuaWZvcm0gc2FtcGxlcjJEIGZyYW1lOwogICAgdW5pZm9ybSBzYW1wbGVyMkQgbWFzazsKICAgIHVuaWZvcm0gc2FtcGxlcjJEIGJnOwogICAgdW5pZm9ybSBzYW1wbGVyMkQgd2F0ZXJNYXJrOwogICAgdW5pZm9ybSBzYW1wbGVyMkQgbGFzdE1hc2s7CiAgICB1bmlmb3JtIG1hdDQgdV9vZmZzZXRNYXRyaXg7CiAgICB1bmlmb3JtIHZlYzMgdV9jb2xvcjsKICAgIGluIHZlYzIgdl90ZXhDb29yZDsKICAgIG91dCB2ZWM0IG91dENvbG9yOwogICAgdmVjNCBHKHZlYzIgYyx2ZWMyIHMpewogICAgICByZXR1cm4gdGV4dHVyZShmcmFtZSx0ZXh0dXJlKG1hc2ssYytzKS5yPjAuMz9jOmMrcyk7CiAgICB9CiAgICB2b2lkIG1haW4oKSB7CiAgICAgIAAKICAgICAgdmVjMiBvZmZzZXRNYXNrVVYgPSAodV9vZmZzZXRNYXRyaXggKiB2ZWM0KGMsIDAsIDEpKS54eTsKICAgICAgZmxvYXQgaXNJbnNpZGVYID0gKG9mZnNldE1hc2tVVi54ID49IDAuMCkgJiYgKG9mZnNldE1hc2tVVi54IDw9IDEuMCkgPyAxLjAgOiAwLjA7CiAgICAgIGZsb2F0IGlzSW5zaWRlWSA9IChvZmZzZXRNYXNrVVYueSA+PSAwLjApICYmIChvZmZzZXRNYXNrVVYueSA8PSAxLjApID8gMS4wIDogMC4wOwogICAgICBmbG9hdCBpc0luc2lkZSA9IGlzSW5zaWRlWCAqIGlzSW5zaWRlWTsKICAgICAgZmxvYXQgbWFza2VkQWxwaGEgPSB0ZXh0dXJlKG1hc2ssIG9mZnNldE1hc2tVVikuciAqIGlzSW5zaWRlOwogICAgICBtYXNrZWRBbHBoYSA9IG1hc2tlZEFscGhhPDAuNT8yLjAqbWFza2VkQWxwaGEqbWFza2VkQWxwaGE6MS4wLTIuMCooMS4wLW1hc2tlZEFscGhhKSooMS4wLW1hc2tlZEFscGhhKTsKICAgICAgc3JjX2NvbG9yID0gdGV4dHVyZShmcmFtZSwgb2Zmc2V0TWFza1VWICwgaXNJbnNpZGUpOwogICAgICBvdXRDb2xvciA9IG1peCh0ZXh0dXJlKGJnLCBjKSwgc3JjX2NvbG9yLCBtYXNrZWRBbHBoYSk7CiAgICAACiAgICB2ZWM0IGcgPSB2ZWM0KDAuMCk7CiAgICAACiAgICAgIGMueSA9IDEuMCAtIGMueTsKICAgICAgdmVjNCBzcmNfY29sb3IgPSB0ZXh0dXJlKGZyYW1lLCBjKTsKICAgICAgZmxvYXQgYSA9IHRleHR1cmUobWFzaywgYykucjsKICAgICAgYSA9IGE8MC41PzIuMCphKmE6MS4wLTIuMCooMS4wLWEpKigxLjAtYSk7CiAgICAgIC8vIGZsb2F0IGEyID0gdGV4dHVyZShsYXN0TWFzaywgYykuYTsKICAgICAgLy8gYTIgPSBhMjwwLjU/Mi4wKmEyKmEyOjEuMC0yLjAqKDEuMC1hMikqKDEuMC1hMik7CiAgICAgIC8vIGZsb2F0IGRlbHRhID0gYSAtIGEyOwogICAgICAvLyBpZiAoZGVsdGEgPCAwLjI1ICYmIGRlbHRhID4gLTAuMjUpCiAgICAgIC8vIHsKICAgICAgLy8gICAgIGEgPSBhICsgMC41KmRlbHRhOwogICAgICAvLyB9CiAgICAgIAogICAgICB2ZWMyIG8gPSAxLjAgLyB2ZWMyKHRleHR1cmVTaXplKGZyYW1lLCAwKSk7CiAgICAACiAgICAgIG91dENvbG9yID0gZzsKICAAI3ZlcnNpb24gMzAwIGVzCmluIHZlYzIgYV9wb3NpdGlvbjsKaW4gdmVjMiBhX3RleENvb3JkOwoKdW5pZm9ybSBtYXQ0IHVfdGV4dHVyZU1hdHJpeDsKCm91dCB2ZWMyIHZfdGV4Q29vcmQ7CnZvaWQgbWFpbigpIHsKICBnbF9Qb3NpdGlvbiA9IHZlYzQoYV9wb3NpdGlvbi54LCBhX3Bvc2l0aW9uLnksIDAsIDEpOwogIHZfdGV4Q29vcmQgPSh1X3RleHR1cmVNYXRyaXggKiB2ZWM0KGFfdGV4Q29vcmQsIDAsIDEpKS54eTsKfQoAc2V0QmVhdXR5ICVmICVmICVmICVmICVmCgBvdXRDb2xvciA9IHNyY19jb2xvcjsKAG91dENvbG9yID0gbWl4KHZlYzQodV9jb2xvciwxLjApLHNyY19jb2xvcixhKTsKADZBbGxJbjEAAIAoAABfFgAAUDZBbGxJbjEAAAAABCkAAHAWAAAAAAAAaBYAAFBLNkFsbEluMQAAAAQpAACMFgAAAQAAAGgWAABpaQB2AHZpAHwWAADMFgAATjEwZW1zY3JpcHRlbjN2YWxFAACAKAAAuBYAAGlpaQB2aWlpAAAAALwnAAB8FgAAcCgAAHAoAABwKAAAcCgAAHAoAAB2aWlkZGRkZABBkC4LyAi8JwAAfBYAAHAoAABwKAAAcCgAAHAoAAB2aWlkZGRkALwnAAB8FgAAdmlpALwnAADMFgAAzBYAAHwWAADMFgAAHCgAALwnAADMFgAAoBcAAE5TdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFAACAKAAAYBcAAMwWAAC8JwAAzBYAAMwWAABOU3QzX18yMTJiYXNpY19zdHJpbmdJaE5TXzExY2hhcl90cmFpdHNJaEVFTlNfOWFsbG9jYXRvckloRUVFRQAAgCgAALgXAABOU3QzX18yMTJiYXNpY19zdHJpbmdJd05TXzExY2hhcl90cmFpdHNJd0VFTlNfOWFsbG9jYXRvckl3RUVFRQAAgCgAAAAYAABOU3QzX18yMTJiYXNpY19zdHJpbmdJRHNOU18xMWNoYXJfdHJhaXRzSURzRUVOU185YWxsb2NhdG9ySURzRUVFRQAAAIAoAABIGAAATlN0M19fMjEyYmFzaWNfc3RyaW5nSURpTlNfMTFj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")||(qe=ge,ge=u.locateFile?u.locateFile(qe,f):f+qe);var Fi=$=>{for(;$.length>0;)$.shift()(u)};u.noExitRuntime;function _o($){this.excPtr=$,this.ptr=$-24,this.set_type=function(K){TA[this.ptr+4>>2]=K},this.get_type=function(){return TA[this.ptr+4>>2]},this.set_destructor=function(K){TA[this.ptr+8>>2]=K},this.get_destructor=function(){return TA[this.ptr+8>>2]},this.set_caught=function(K){K=K?1:0,IA[this.ptr+12|0]=K},this.get_caught=function(){return IA[this.ptr+12|0]!=0},this.set_rethrown=function(K){K=K?1:0,IA[this.ptr+13|0]=K},this.get_rethrown=function(){return IA[this.ptr+13|0]!=0},this.init=function(K,vA){this.set_adjusted_ptr(0),this.set_type(K),this.set_destructor(vA)},this.set_adjusted_ptr=function(K){TA[this.ptr+16>>2]=K},this.get_adjusted_ptr=function(){return TA[this.ptr+16>>2]},this.get_exception_ptr=function(){if(Ga(this.get_type()))return TA[this.excPtr>>2];var K=this.get_adjusted_ptr();return K!==0?K:this.excPtr}}var to,uo,Vs,ki=$=>{for(var K="",vA=$;rA[vA];)K+=to[rA[vA++]];return K},ns={},Ko={},$i={},jt=$=>{throw new uo($)},io=$=>{throw new Vs($)},bi=($,K,vA)=>{function qA(Fe){var ot=vA(Fe);ot.length!==$.length&&io("Mismatched type converter count");for(var ut=0;ut<$.length;++ut)vs($[ut],ot[ut])}$.forEach(function(Fe){$i[Fe]=K});var te=new Array(K.length),pe=[],Oe=0;K.forEach((Fe,ot)=>{Ko.hasOwnProperty(Fe)?te[ot]=Ko[Fe]:(pe.push(Fe),ns.hasOwnProperty(Fe)||(ns[Fe]=[]),ns[Fe].push(()=>{te[ot]=Ko[Fe],++Oe===pe.length&&qA(te)}))}),pe.length===0&&qA(te)};function vs($,K,vA={}){if(!("argPackAdvance"in K))throw new TypeError("registerType registeredInstance requires argPackAdvance");return function(qA,te,pe={}){var Oe=te.name;if(qA||jt(`type "${Oe}" must have a positive integer typeid pointer`),Ko.hasOwnProperty(qA)){if(pe.ignoreDuplicateRegistrations)return;jt(`Cannot register type '${Oe}' twice`)}if(Ko[qA]=te,delete $i[qA],ns.hasOwnProperty(qA)){var Fe=ns[qA];delete ns[qA],Fe.forEach(ot=>ot())}}($,K,vA)}var HA,le=$=>{jt($.$$.ptrType.registeredClass.name+" instance already deleted")},xe=!1,Lt=$=>{},it=$=>{$.count.value-=1,$.count.value===0&&(K=>{K.smartPtr?K.smartPtrType.rawDestructor(K.smartPtr):K.ptrType.registeredClass.rawDestructor(K.ptr)})($)},gt=($,K,vA)=>{if(K===vA)return $;if(vA.baseClass===void 0)return null;var qA=gt($,K,vA.baseClass);return qA===null?null:vA.downcast(qA)},Xt={},$t=()=>Object.keys(Oi).length,be=()=>{var $=[];for(var K in Oi)Oi.hasOwnProperty(K)&&$.push(Oi[K]);return $},je=[],Mt=()=>{for(;je.length;){var $=je.pop();$.$$.deleteScheduled=!1,$.delete()}},Rt=$=>{HA=$,je.length&&HA&&HA(Mt)},Oi={},Qo=($,K)=>(K=((vA,qA)=>{for(qA===void 0&&jt("ptr should not be undefined");vA.baseClass;)qA=vA.upcast(qA),vA=vA.baseClass;return qA})($,K),Oi[K]),To=($,K)=>(K.ptrType&&K.ptr||io("makeClassHandle requires ptr and ptrType"),!!K.smartPtrType!=!!K.smartPtr&&io("Both smartPtrType and smartPtr must be specified"),K.count={value:1},No(Object.create($,{$$:{value:K}})));function oo($){var K=this.getPointee($);if(!K)return this.destructor($),null;var vA=Qo(this.registeredClass,K);if(vA!==void 0){if(vA.$$.count.value===0)return vA.$$.ptr=K,vA.$$.smartPtr=$,vA.clone();var qA=vA.clone();return this.destructor($),qA}function te(){return this.isSmartPointer?To(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:K,smartPtrType:this,smartPtr:$}):To(this.registeredClass.instancePrototype,{ptrType:this,ptr:$})}var pe,Oe=this.registeredClass.getActualType(K),Fe=Xt[Oe];if(!Fe)return te.call(this);pe=this.isConst?Fe.constPointerType:Fe.pointerType;var ot=gt(K,this.registeredClass,pe.registeredClass);return ot===null?te.call(this):this.isSmartPointer?To(pe.registeredClass.instancePrototype,{ptrType:pe,ptr:ot,smartPtrType:this,smartPtr:$}):To(pe.registeredClass.instancePrototype,{ptrType:pe,ptr:ot})}var No=$=>typeof FinalizationRegistry>"u"?(No=K=>K,$):(xe=new FinalizationRegistry(K=>{it(K.$$)}),Lt=K=>xe.unregister(K),(No=K=>{var vA=K.$$;if(vA.smartPtr){var qA={$$:vA};xe.register(K,qA,K)}return K})($));function An(){}var rn=($,K)=>Object.defineProperty(K,"name",{value:$}),Es=($,K,vA)=>{if($[K].overloadTable===void 0){var qA=$[K];$[K]=function(){return $[K].overloadTable.hasOwnProperty(arguments.length)||jt(`Function '${vA}' called with an invalid number of arguments (${arguments.length}) - expects one of (${$[K].overloadTable})!`),$[K].overloadTable[arguments.length].apply(this,arguments)},$[K].overloadTable=[],$[K].overloadTable[qA.argCount]=qA}};function an($,K,vA,qA,te,pe,Oe,Fe){this.name=$,this.constructor=K,this.instancePrototype=vA,this.rawDestructor=qA,this.baseClass=te,this.getActualType=pe,this.upcast=Oe,this.downcast=Fe,this.pureVirtualFunctions=[]}var yo=($,K,vA)=>{for(;K!==vA;)K.upcast||jt(`Expected null or instance of ${vA.name}, got an instance of ${K.name}`),$=K.upcast($),K=K.baseClass;return $};function mA($,K){if(K===null)return this.isReference&&jt(`null is not a valid ${this.name}`),0;K.$$||jt(`Cannot pass "${as(K)}" as a ${this.name}`),K.$$.ptr||jt(`Cannot pass deleted object as a pointer of type ${this.name}`);var vA=K.$$.ptrType.registeredClass;return yo(K.$$.ptr,vA,this.registeredClass)}function Jn($,K){var vA;if(K===null)return this.isReference&&jt(`null is not a valid ${this.name}`),this.isSmartPointer?(vA=this.rawConstructor(),$!==null&&$.push(this.rawDestructor,vA),vA):0;K.$$||jt(`Cannot pass "${as(K)}" as a ${this.name}`),K.$$.ptr||jt(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&K.$$.ptrType.isConst&&jt(`Cannot convert argument of type ${K.$$.smartPtrType?K.$$.smartPtrType.name:K.$$.ptrType.name} to parameter type ${this.name}`);var qA=K.$$.ptrType.registeredClass;if(vA=yo(K.$$.ptr,qA,this.registeredClass),this.isSmartPointer)switch(K.$$.smartPtr===void 0&&jt("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:K.$$.smartPtrType===this?vA=K.$$.smartPtr:jt(`Cannot convert argument of type ${K.$$.smartPtrType?K.$$.smartPtrType.name:K.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:vA=K.$$.smartPtr;break;case 2:if(K.$$.smartPtrType===this)vA=K.$$.smartPtr;else{var te=K.clone();vA=this.rawShare(vA,cn.toHandle(()=>te.delete())),$!==null&&$.push(this.rawDestructor,vA)}break;default:jt("Unsupporting sharing policy")}return vA}function Br($,K){if(K===null)return this.isReference&&jt(`null is not a valid ${this.name}`),0;K.$$||jt(`Cannot pass "${as(K)}" as a ${this.name}`),K.$$.ptr||jt(`Cannot pass deleted object as a pointer of type ${this.name}`),K.$$.ptrType.isConst&&jt(`Cannot convert argument of type ${K.$$.ptrType.name} to parameter type ${this.name}`);var vA=K.$$.ptrType.registeredClass;return yo(K.$$.ptr,vA,this.registeredClass)}function ds($){return this.fromWireType(TA[$>>2])}function jr($,K,vA,qA,te,pe,Oe,Fe,ot,ut,St){this.name=$,this.registeredClass=K,this.isReference=vA,this.isConst=qA,this.isSmartPointer=te,this.pointeeType=pe,this.sharingPolicy=Oe,this.rawGetPointee=Fe,this.rawConstructor=ot,this.rawShare=ut,this.rawDestructor=St,te||K.baseClass!==void 0?this.toWireType=Jn:qA?(this.toWireType=mA,this.destructorFunction=null):(this.toWireType=Br,this.destructorFunction=null)}var Pi,Rs,ir=[],en=$=>{var K=ir[$];return K||($>=ir.length&&(ir.length=$+1),ir[$]=K=Pi.get($)),K},wn=($,K,vA)=>$.includes("j")?((qA,te,pe)=>{var Oe=u["dynCall_"+qA];return pe&&pe.length?Oe.apply(null,[te].concat(pe)):Oe.call(null,te)})($,K,vA):en(K).apply(null,vA),Jt=($,K)=>{var vA,qA,te,pe=($=ki($)).includes("j")?(vA=$,qA=K,te=[],function(){return te.length=0,Object.assign(te,arguments),wn(vA,qA,te)}):en(K);return typeof pe!="function"&&jt(`unknown function pointer with signature ${$}: ${K}`),pe},yg=$=>{var K=Ia($),vA=ki(K);return yn(K),vA},On=($,K)=>{var vA=[],qA={};throw K.forEach(function te(pe){qA[pe]||Ko[pe]||($i[pe]?$i[pe].forEach(te):(vA.push(pe),qA[pe]=!0))}),new Rs(`${$}: `+vA.map(yg).join([", "]))},Gn=($,K)=>{for(var vA=[],qA=0;qA<$;qA++)vA.push(TA[K+4*qA>>2]);return vA},Js=$=>{for(;$.length;){var K=$.pop();$.pop()(K)}};function Qr($,K,vA,qA,te,pe){var Oe=K.length;Oe<2&&jt("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var Fe=K[1]!==null&&vA!==null,ot=!1,ut=1;ut($ instanceof Object||jt(`${vA} with invalid "this": ${$}`),$ instanceof K.registeredClass.constructor||jt(`${vA} incompatible with "this" of type ${$.constructor.name}`),$.$$.ptr||jt(`cannot call emscripten binding method ${vA} on deleted object`),yo($.$$.ptr,$.$$.ptrType.registeredClass,K.registeredClass));function pr(){this.allocated=[void 0],this.freelist=[]}var po=new pr,gn=$=>{$>=po.reserved&&--po.get($).refcount===0&&po.free($)},yl=()=>{for(var $=0,K=po.reserved;K($||jt("Cannot use deleted val. handle = "+$),po.get($).value),toHandle:$=>{switch($){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return po.allocate({refcount:1,value:$})}}};function mr($){return this.fromWireType(cA[$>>2])}var Ls,Vc,ms,as=$=>{if($===null)return"null";var K=typeof $;return K==="object"||K==="array"||K==="function"?$.toString():""+$},mu=($,K)=>{switch(K){case 4:return function(vA){return this.fromWireType(WA[vA>>2])};case 8:return function(vA){return this.fromWireType(zA[vA>>3])};default:throw new TypeError(`invalid float width (${K}): ${$}`)}},ja=($,K,vA)=>{switch(K){case 1:return vA?qA=>IA[qA|0]:qA=>rA[qA|0];case 2:return vA?qA=>pA[qA>>1]:qA=>lA[qA>>1];case 4:return vA?qA=>cA[qA>>2]:qA=>TA[qA>>2];default:throw new TypeError(`invalid integer width (${K}): ${$}`)}},Cs=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,sg=($,K,vA)=>{for(var qA=K+vA,te=K;$[te]&&!(te>=qA);)++te;if(te-K>16&&$.buffer&&Cs)return Cs.decode($.subarray(K,te));for(var pe="";K>10,56320|1023&ut)}}else pe+=String.fromCharCode((31&Oe)<<6|Fe)}else pe+=String.fromCharCode(Oe)}return pe},OI=($,K)=>$?sg(rA,$,K):"",Xo=typeof TextDecoder<"u"?new TextDecoder("utf-16le"):void 0,Zi=($,K)=>{for(var vA=$,qA=vA>>1,te=qA+K/2;!(qA>=te)&&lA[qA];)++qA;if((vA=qA<<1)-$>32&&Xo)return Xo.decode(rA.subarray($,vA));for(var pe="",Oe=0;!(Oe>=K/2);++Oe){var Fe=pA[$+2*Oe>>1];if(Fe==0)break;pe+=String.fromCharCode(Fe)}return pe},pc=($,K,vA)=>{if(vA===void 0&&(vA=2147483647),vA<2)return 0;for(var qA=K,te=(vA-=2)<2*$.length?vA/2:$.length,pe=0;pe>1]=Oe,K+=2}return pA[K>>1]=0,K-qA},ng=$=>2*$.length,Dg=($,K)=>{for(var vA=0,qA="";!(vA>=K/4);){var te=cA[$+4*vA>>2];if(te==0)break;if(++vA,te>=65536){var pe=te-65536;qA+=String.fromCharCode(55296|pe>>10,56320|1023&pe)}else qA+=String.fromCharCode(te)}return qA},la=($,K,vA)=>{if(vA===void 0&&(vA=2147483647),vA<4)return 0;for(var qA=K,te=qA+vA-4,pe=0;pe<$.length;++pe){var Oe=$.charCodeAt(pe);if(Oe>=55296&&Oe<=57343&&(Oe=65536+((1023&Oe)<<10)|1023&$.charCodeAt(++pe)),cA[K>>2]=Oe,(K+=4)+4>te)break}return cA[K>>2]=0,K-qA},Go=$=>{for(var K=0,vA=0;vA<$.length;++vA){var qA=$.charCodeAt(vA);qA>=55296&&qA<=57343&&++vA,K+=4}return K},Wr=($,K)=>{var vA=Ko[$];return vA===void 0&&jt(K+" has unknown type "+yg($)),vA},wo=($,K,vA)=>{var qA=[],te=$.toWireType(qA,vA);return qA.length&&(TA[K>>2]=cn.toHandle(qA)),te},Jc={},Hn=[],Hs=Reflect.construct,Sg=[null,[],[]],mc=($,K)=>{var vA=Sg[$];K===0||K===10?(($===1?k:F)(sg(vA,0)),vA.length=0):vA.push(K)};(()=>{for(var $=new Array(256),K=0;K<256;++K)$[K]=String.fromCharCode(K);to=$})(),uo=u.BindingError=class extends Error{constructor($){super($),this.name="BindingError"}},Vs=u.InternalError=class extends Error{constructor($){super($),this.name="InternalError"}},Object.assign(An.prototype,{isAliasOf($){if(!(this instanceof An)||!($ instanceof An))return!1;var K=this.$$.ptrType.registeredClass,vA=this.$$.ptr;$.$$=$.$$;for(var qA=$.$$.ptrType.registeredClass,te=$.$$.ptr;K.baseClass;)vA=K.upcast(vA),K=K.baseClass;for(;qA.baseClass;)te=qA.upcast(te),qA=qA.baseClass;return K===qA&&vA===te},clone(){if(this.$$.ptr||le(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var $,K=No(Object.create(Object.getPrototypeOf(this),{$$:{value:($=this.$$,{count:$.count,deleteScheduled:$.deleteScheduled,preservePointerOnDelete:$.preservePointerOnDelete,ptr:$.ptr,ptrType:$.ptrType,smartPtr:$.smartPtr,smartPtrType:$.smartPtrType})}}));return K.$$.count.value+=1,K.$$.deleteScheduled=!1,K},delete(){this.$$.ptr||le(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&jt("Object already scheduled for deletion"),Lt(this),it(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||le(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&jt("Object already scheduled for deletion"),je.push(this),je.length===1&&HA&&HA(Mt),this.$$.deleteScheduled=!0,this}}),u.getInheritedInstanceCount=$t,u.getLiveInheritedInstances=be,u.flushPendingDeletes=Mt,u.setDelayFunction=Rt,Object.assign(jr.prototype,{getPointee($){return this.rawGetPointee&&($=this.rawGetPointee($)),$},destructor($){this.rawDestructor&&this.rawDestructor($)},argPackAdvance:8,readValueFromPointer:ds,deleteObject($){$!==null&&$.delete()},fromWireType:oo}),Rs=u.UnboundTypeError=(Ls=Error,(ms=rn(Vc="UnboundTypeError",function($){this.name=Vc,this.message=$;var K=new Error($).stack;K!==void 0&&(this.stack=this.toString()+` -`+K.replace(/^Error(:[^\n]*)?\n/,""))})).prototype=Object.create(Ls.prototype),ms.prototype.constructor=ms,ms.prototype.toString=function(){return this.message===void 0?this.name:`${this.name}: ${this.message}`},ms),Object.assign(pr.prototype,{get($){return this.allocated[$]},has($){return this.allocated[$]!==void 0},allocate($){var K=this.freelist.pop()||this.allocated.length;return this.allocated[K]=$,K},free($){this.allocated[$]=void 0,this.freelist.push($)}}),po.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),po.reserved=po.allocated.length,u.count_emval_handles=yl;var fn,Na={w:($,K,vA)=>{throw new _o($).init(K,vA),$},q:($,K,vA,qA,te)=>{},u:($,K,vA,qA)=>{vs($,{name:K=ki(K),fromWireType:function(te){return!!te},toWireType:function(te,pe){return pe?vA:qA},argPackAdvance:8,readValueFromPointer:function(te){return this.fromWireType(rA[te])},destructorFunction:null})},y:($,K,vA,qA,te,pe,Oe,Fe,ot,ut,St,Ot,li)=>{St=ki(St),pe=Jt(te,pe),Fe&&(Fe=Jt(Oe,Fe)),ut&&(ut=Jt(ot,ut)),li=Jt(Ot,li);var nt=(Ft=>{if(Ft===void 0)return"_unknown";var Ji=(Ft=Ft.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return Ji>=48&&Ji<=57?`_${Ft}`:Ft})(St);((Ft,Ji,qi)=>{u.hasOwnProperty(Ft)?(jt(`Cannot register public name '${Ft}' twice`),Es(u,Ft,Ft),u.hasOwnProperty(qi)&&jt(`Cannot register multiple overloads of a function with the same number of arguments (${qi})!`),u[Ft].overloadTable[qi]=Ji):u[Ft]=Ji})(nt,function(){On(`Cannot construct ${St} due to unbound types`,[qA])}),bi([$,K,vA],qA?[qA]:[],function(Ft){var Ji,qi;Ft=Ft[0],qi=qA?(Ji=Ft.registeredClass).instancePrototype:An.prototype;var qs=rn(St,function(){if(Object.getPrototypeOf(this)!==Mi)throw new uo("Use 'new' to construct "+St);if(Wo.constructor_body===void 0)throw new uo(St+" has no accessible constructor");var xn=Wo.constructor_body[arguments.length];if(xn===void 0)throw new uo(`Tried to invoke ctor of ${St} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(Wo.constructor_body).toString()}) parameters instead!`);return xn.apply(this,arguments)}),Mi=Object.create(qi,{constructor:{value:qs}});qs.prototype=Mi;var Wo=new an(St,qs,Mi,li,Ji,pe,Fe,ut);Wo.baseClass&&(Wo.baseClass.__derivedClasses===void 0&&(Wo.baseClass.__derivedClasses=[]),Wo.baseClass.__derivedClasses.push(Wo));var Mg=new jr(St,Wo,!0,!1,!1),or=new jr(St+"*",Wo,!1,!1,!1),fr=new jr(St+" const*",Wo,!1,!0,!1);return Xt[$]={pointerType:or,constPointerType:fr},((xn,Dl,Ks)=>{u.hasOwnProperty(xn)||io("Replacing nonexistant public symbol"),u[xn].overloadTable!==void 0&&Ks!==void 0?u[xn].overloadTable[Ks]=Dl:(u[xn]=Dl,u[xn].argCount=Ks)})(nt,qs),[Mg,or,fr]})},x:($,K,vA,qA,te,pe)=>{var Oe=Gn(K,vA);te=Jt(qA,te),bi([],[$],function(Fe){var ot=`constructor ${(Fe=Fe[0]).name}`;if(Fe.registeredClass.constructor_body===void 0&&(Fe.registeredClass.constructor_body=[]),Fe.registeredClass.constructor_body[K-1]!==void 0)throw new uo(`Cannot register multiple constructors with identical number of parameters (${K-1}) for class '${Fe.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return Fe.registeredClass.constructor_body[K-1]=()=>{On(`Cannot construct ${Fe.name} due to unbound types`,Oe)},bi([],Oe,ut=>(ut.splice(1,0,null),Fe.registeredClass.constructor_body[K-1]=Qr(ot,ut,null,te,pe),[])),[]})},i:($,K,vA,qA,te,pe,Oe,Fe,ot)=>{var ut=Gn(vA,qA);K=(St=>{const Ot=(St=St.trim()).indexOf("(");return Ot!==-1?St.substr(0,Ot):St})(K=ki(K)),pe=Jt(te,pe),bi([],[$],function(St){var Ot=`${(St=St[0]).name}.${K}`;function li(){On(`Cannot call ${Ot} due to unbound types`,ut)}K.startsWith("@@")&&(K=Symbol[K.substring(2)]),Fe&&St.registeredClass.pureVirtualFunctions.push(K);var nt=St.registeredClass.instancePrototype,Ft=nt[K];return Ft===void 0||Ft.overloadTable===void 0&&Ft.className!==St.name&&Ft.argCount===vA-2?(li.argCount=vA-2,li.className=St.name,nt[K]=li):(Es(nt,K,Ot),nt[K].overloadTable[vA-2]=li),bi([],ut,function(Ji){var qi=Qr(Ot,Ji,St,pe,Oe);return nt[K].overloadTable===void 0?(qi.argCount=vA-2,nt[K]=qi):nt[K].overloadTable[vA-2]=qi,[]}),[]})},k:($,K,vA,qA,te,pe,Oe,Fe,ot,ut)=>{K=ki(K),te=Jt(qA,te),bi([],[$],function(St){var Ot=`${(St=St[0]).name}.${K}`,li={get(){On(`Cannot access ${Ot} due to unbound types`,[vA,Oe])},enumerable:!0,configurable:!0};return li.set=ot?()=>On(`Cannot access ${Ot} due to unbound types`,[vA,Oe]):nt=>jt(Ot+" is a read-only property"),Object.defineProperty(St.registeredClass.instancePrototype,K,li),bi([],ot?[vA,Oe]:[vA],function(nt){var Ft=nt[0],Ji={get(){var qs=Pn(this,St,Ot+" getter");return Ft.fromWireType(te(pe,qs))},enumerable:!0};if(ot){ot=Jt(Fe,ot);var qi=nt[1];Ji.set=function(qs){var Mi=Pn(this,St,Ot+" setter"),Wo=[];ot(ut,Mi,qi.toWireType(Wo,qs)),Js(Wo)}}return Object.defineProperty(St.registeredClass.instancePrototype,K,Ji),[]}),[]})},t:($,K)=>{vs($,{name:K=ki(K),fromWireType:vA=>{var qA=cn.toValue(vA);return gn(vA),qA},toWireType:(vA,qA)=>cn.toHandle(qA),argPackAdvance:8,readValueFromPointer:mr,destructorFunction:null})},p:($,K,vA)=>{vs($,{name:K=ki(K),fromWireType:qA=>qA,toWireType:(qA,te)=>te,argPackAdvance:8,readValueFromPointer:mu(K,vA),destructorFunction:null})},g:($,K,vA,qA,te)=>{K=ki(K);var pe=ot=>ot;if(qA===0){var Oe=32-8*vA;pe=ot=>ot<>>Oe}var Fe=K.includes("unsigned");vs($,{name:K,fromWireType:pe,toWireType:Fe?function(ot,ut){return this.name,ut>>>0}:function(ot,ut){return this.name,ut},argPackAdvance:8,readValueFromPointer:ja(K,vA,qA!==0),destructorFunction:null})},a:($,K,vA)=>{var qA=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][K];function te(pe){var Oe=TA[pe>>2],Fe=TA[pe+4>>2];return new qA(IA.buffer,Fe,Oe)}vs($,{name:vA=ki(vA),fromWireType:te,argPackAdvance:8,readValueFromPointer:te},{ignoreDuplicateRegistrations:!0})},o:($,K)=>{var vA=(K=ki(K))==="std::string";vs($,{name:K,fromWireType(qA){var te,pe=TA[qA>>2],Oe=qA+4;if(vA)for(var Fe=Oe,ot=0;ot<=pe;++ot){var ut=Oe+ot;if(ot==pe||rA[ut]==0){var St=OI(Fe,ut-Fe);te===void 0?te=St:(te+="\0",te+=St),Fe=ut+1}}else{var Ot=new Array(pe);for(ot=0;ot{for(var li=0,nt=0;nt=55296&&Ft<=57343?(li+=4,++nt):li+=3}return li})(te):te.length;var Fe=fs(4+pe+1),ot=Fe+4;if(TA[Fe>>2]=pe,vA&&Oe)((Ot,li,nt,Ft)=>{if(!(Ft>0))return 0;for(var Ji=nt,qi=nt+Ft-1,qs=0;qs=55296&&Mi<=57343&&(Mi=65536+((1023&Mi)<<10)|1023&Ot.charCodeAt(++qs)),Mi<=127){if(nt>=qi)break;li[nt++]=Mi}else if(Mi<=2047){if(nt+1>=qi)break;li[nt++]=192|Mi>>6,li[nt++]=128|63&Mi}else if(Mi<=65535){if(nt+2>=qi)break;li[nt++]=224|Mi>>12,li[nt++]=128|Mi>>6&63,li[nt++]=128|63&Mi}else{if(nt+3>=qi)break;li[nt++]=240|Mi>>18,li[nt++]=128|Mi>>12&63,li[nt++]=128|Mi>>6&63,li[nt++]=128|63&Mi}}li[nt]=0})(te,rA,ot,pe+1);else if(Oe)for(var ut=0;ut255&&(yn(ot),jt("String has UTF-16 code units that do not fit in 8 bits")),rA[ot+ut]=St}else for(ut=0;ut{var qA,te,pe,Oe,Fe;vA=ki(vA),K===2?(qA=Zi,te=pc,Oe=ng,pe=()=>lA,Fe=1):K===4&&(qA=Dg,te=la,Oe=Go,pe=()=>TA,Fe=2),vs($,{name:vA,fromWireType:ot=>{for(var ut,St=TA[ot>>2],Ot=pe(),li=ot+4,nt=0;nt<=St;++nt){var Ft=ot+4+nt*K;if(nt==St||Ot[Ft>>Fe]==0){var Ji=qA(li,Ft-li);ut===void 0?ut=Ji:(ut+="\0",ut+=Ji),li=Ft+K}}return yn(ot),ut},toWireType:(ot,ut)=>{typeof ut!="string"&&jt(`Cannot pass non-string to C++ string type ${vA}`);var St=Oe(ut),Ot=fs(4+St+K);return TA[Ot>>2]=St>>Fe,te(ut,Ot+4,St+K),ot!==null&&ot.push(yn,Ot),Ot},argPackAdvance:8,readValueFromPointer:mr,destructorFunction(ot){yn(ot)}})},v:($,K)=>{vs($,{isVoid:!0,name:K=ki(K),argPackAdvance:0,fromWireType:()=>{},toWireType:(vA,qA)=>{}})},j:($,K,vA)=>($=cn.toValue($),K=Wr(K,"emval::as"),wo(K,vA,$)),e:($,K,vA,qA,te)=>{var pe,Oe;return($=Hn[$])(K=cn.toValue(K),K[vA=(Oe=Jc[pe=vA])===void 0?ki(pe):Oe],qA,te)},d:gn,f:($,K,vA)=>{var qA=((ut,St)=>{for(var Ot=new Array(ut),li=0;li>2],"parameter "+li);return Ot})($,K),te=qA.shift();$--;var pe,Oe,Fe=new Array($),ot=`methodCaller<(${qA.map(ut=>ut.name).join(", ")}) => ${te.name}>`;return pe=rn(ot,(ut,St,Ot,li)=>{for(var nt=0,Ft=0;Ft<$;++Ft)Fe[Ft]=qA[Ft].readValueFromPointer(li+nt),nt+=qA[Ft].argPackAdvance;var Ji=vA===1?Hs(St,Fe):St.apply(ut,Fe);for(Ft=0;Ft<$;++Ft)qA[Ft].deleteObject&&qA[Ft].deleteObject(Fe[Ft]);return wo(te,Ot,Ji)}),Oe=Hn.length,Hn.push(pe),Oe},c:$=>{$>4&&(po.get($).refcount+=1)},b:$=>{var K=cn.toValue($);Js(K),gn($)},h:($,K)=>{var vA=($=Wr($,"_emval_take_value")).readValueFromPointer(K);return cn.toHandle(vA)},m:()=>{It("")},s:($,K,vA)=>rA.copyWithin($,K,K+vA),r:$=>{rA.length,It("OOM")},n:($,K,vA,qA)=>{for(var te=0,pe=0;pe>2],Fe=TA[K+4>>2];K+=8;for(var ot=0;ot>2]=te,0}},In=function(){var $={a:Na};function K(vA,qA){var te,pe;return In=vA.exports,_=In.z,te=_.buffer,u.HEAP8=IA=new Int8Array(te),u.HEAP16=pA=new Int16Array(te),u.HEAPU8=rA=new Uint8Array(te),u.HEAPU16=lA=new Uint16Array(te),u.HEAP32=cA=new Int32Array(te),u.HEAPU32=TA=new Uint32Array(te),u.HEAPF32=WA=new Float32Array(te),u.HEAPF64=zA=new Float64Array(te),Pi=In.C,pe=In.A,Ce.unshift(pe),function(){if(Dt--,u.monitorRunDependencies&&u.monitorRunDependencies(Dt),Dt==0&&qt){var Oe=qt;qt=null,Oe()}}(),In}if(Dt++,u.monitorRunDependencies&&u.monitorRunDependencies(Dt),u.instantiateWasm)try{return u.instantiateWasm($,K)}catch(vA){F(`Module.instantiateWasm callback failed with error: ${vA}`),l(vA)}return gi(0,ge,$,function(vA){K(vA.instance)}).catch(l),{}}(),fs=$=>(fs=In.B)($),Ia=$=>(Ia=In.D)($),yn=$=>(yn=In.E)($),Ga=$=>(Ga=In.F)($);u.dynCall_jiji=($,K,vA,qA,te)=>(u.dynCall_jiji=In.G)($,K,vA,qA,te),u._vertexShaderSource=10688;function Da(){function $(){fn||(fn=!0,u.calledRun=!0,$A||(Fi(Ce),r(u),u.onRuntimeInitialized&&u.onRuntimeInitialized(),function(){if(u.postRun)for(typeof u.postRun=="function"&&(u.postRun=[u.postRun]);u.postRun.length;)Ke(u.postRun.shift());Fi(ct)}()))}Dt>0||(function(){if(u.preRun)for(typeof u.preRun=="function"&&(u.preRun=[u.preRun]);u.preRun.length;)mt(u.preRun.shift());Fi(De)}(),Dt>0||(u.setStatus?(u.setStatus("Running..."),setTimeout(function(){setTimeout(function(){u.setStatus("")},1),$()},1)):$()))}if(qt=function $(){fn||Da(),fn||(qt=$)},u.preInit)for(typeof u.preInit=="function"&&(u.preInit=[u.preInit]);u.preInit.length>0;)u.preInit.pop()();return Da(),i.ready}})(),MrA=SrA,am=typeof navigator>"u"?"":navigator.userAgent,xs=t=>new RegExp(t,"i").test(am),Bc=t=>{if(xs(t)){const i=new RegExp(`${t}\\/([\\d.]+)`),r=am.match(i);if(r&&r[1])return r[1]}return""},UY=t=>{if(xs(t)){const i=new RegExp(`${t}\\/(\\d+)`),r=am.match(i);if(r&&r[1])return parseFloat(r[1])}return NaN},u8=/AppleWebKit\/([\d.]+)/i.exec(am);u8&&parseFloat(u8[1]);var s9=xs("iPad"),n9=typeof navigator<"u"&&navigator.maxTouchPoints&&navigator.maxTouchPoints>2&&xs("Macintosh"),r9=xs("iPhone")&&!s9,vrA=xs("iPod"),a9=r9||s9||vrA||n9,eW=xs("Android"),RrA=function(){if(eW){const t=am.match(/Android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i);if(t){const i=t[1]&&parseFloat(t[1]),r=t[2]&&parseFloat(t[2]);if(i&&r)return parseFloat(`${t[1]}.${t[2]}`);if(i)return i}}return NaN}();eW&&xs("webkit")&&RrA<2.3;var wrA=xs("Firefox"),_rA=Bc("Firefox");UY("Firefox");var g9=xs("Edge"),TrA=Bc("Edge"),c9=xs("Edg"),NrA=Bc("Edg");UY("Edg");var l9=xs("SogouMobileBrowser"),GrA=Bc("SogouMobileBrowser"),I9=xs("MetaSr\\s"),brA=Bc("MetaSr\\s"),fv=xs("TBS"),krA=Bc("TBS"),u9=xs("XWEB"),LrA=Bc("XWEB");xs("MSIE\\s8\\.0");var UrA=xs("MSIE\\/\\d+");(function(){if(UrA){const t=/MSIE\s(\d+)\.\d/.exec(am);let i=t&&parseFloat(t[1]);return!i&&/Trident\/7.0/i.test(am)&&/rv:11.0/.test(am)&&(i=11),i}return NaN})();var FrA=xs("(micromessenger|webbrowser)"),OrA=Bc("MicroMessenger"),tW=!fv&&xs("MQQBrowser")&&xs("COVC"),iW=!fv&&xs("MQQBrowser")&&!xs("COVC"),E8=iW||tW?Bc("MQQBrowser"):"",E9=!fv&&xs(" QQBrowser"),PrA=Bc(" QQBrowser"),d9=!fv&&xs("QQBrowserLite"),xrA=Bc("QQBrowserLite"),C9=!fv&&xs("MQBHD"),YrA=Bc("MQBHD");xs("Windows");!a9&&xs("MAC OS X");!eW&&xs("Linux");xs("CrOS");xs("MicroMessenger");xs("UCBrowser");xs("Electron");var h9=xs("MiuiBrowser"),VrA=Bc("MiuiBrowser"),B9=xs("HuaweiBrowser");xs("Huawei")||xs("HUAWEI");xs("Honor")||xs("HONOR");var JrA=Bc("HuaweiBrowser"),Q9=xs("SamsungBrowser"),HrA=Bc("SamsungBrowser"),p9=xs("HeyTapBrowser"),qrA=Bc("HeyTapBrowser"),m9=xs("VivoBrowser"),KrA=Bc("VivoBrowser");xs("OpenHarmony");Bc("OpenHarmony");var jrA=()=>UY("Chrome"),d8=xs("CriOS"),f9=xs("Chrome"),WrA=!g9&&!I9&&!l9&&!fv&&!u9&&!c9&&!E9&&!h9&&!B9&&!Q9&&!p9&&!m9&&f9;xs("HeadlessChrome");var zrA=jrA(),ZrA=Bc("Chrome");UY("Electron");var XrA=!f9&&!iW&&!tW&&!d9&&!C9&&xs("Safari"),y9=Bc("Version"),D9=(()=>{if(n9)return y9;if(a9){const t=am.match(/OS (\d+)_(\d+)/i);if(t&&t[1]){let i=t[1];return t[2]&&(i+=`.${t[2]}`),i}}return""})();Number(D9.split(".")[0]);(()=>{const t=Number(D9.split(".")[0]);return t===14||t===13})();$rA();function $rA(){const t=new Map([[wrA,["Firefox",_rA]],[c9,["Edg",NrA]],[WrA,["Chrome",ZrA]],[d8,["ChiOS",Bc("CriOS")]],[XrA&&!d8,["Safari",y9]],[fv,["TBS",krA]],[u9,["XWEB",LrA]],[FrA&&r9,["WeChat",OrA]],[E9,["QQ(Win)",PrA]],[iW,["QQ(Mobile)",E8]],[tW,["QQ(Mobile X5)",E8]],[d9,["QQ(Mac)",xrA]],[C9,["QQ(iPad)",YrA]],[h9,["MI",VrA]],[B9,["HW",JrA]],[Q9,["Samsung",HrA]],[p9,["OPPO",qrA]],[m9,["VIVO",KrA]],[g9,["EDGE",TrA]],[l9,["SogouMobile",GrA]],[I9,["Sogou",brA]]]);let i="unknown",r="unknown";return t.has(!0)&&([i,r]=t.get(!0)),{name:i,version:r}}var dc=1e-6,P_=typeof Float32Array<"u"?Float32Array:Array,S9={};function AaA(){var t=new P_(16);return P_!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0),t[0]=1,t[5]=1,t[10]=1,t[15]=1,t}function eaA(t){var i=new P_(16);return i[0]=t[0],i[1]=t[1],i[2]=t[2],i[3]=t[3],i[4]=t[4],i[5]=t[5],i[6]=t[6],i[7]=t[7],i[8]=t[8],i[9]=t[9],i[10]=t[10],i[11]=t[11],i[12]=t[12],i[13]=t[13],i[14]=t[14],i[15]=t[15],i}function taA(t,i){return t[0]=i[0],t[1]=i[1],t[2]=i[2],t[3]=i[3],t[4]=i[4],t[5]=i[5],t[6]=i[6],t[7]=i[7],t[8]=i[8],t[9]=i[9],t[10]=i[10],t[11]=i[11],t[12]=i[12],t[13]=i[13],t[14]=i[14],t[15]=i[15],t}function iaA(t,i,r,l,u,B,f,w,_,k,F,j,IA,rA,pA,lA){var cA=new P_(16);return cA[0]=t,cA[1]=i,cA[2]=r,cA[3]=l,cA[4]=u,cA[5]=B,cA[6]=f,cA[7]=w,cA[8]=_,cA[9]=k,cA[10]=F,cA[11]=j,cA[12]=IA,cA[13]=rA,cA[14]=pA,cA[15]=lA,cA}function oaA(t,i,r,l,u,B,f,w,_,k,F,j,IA,rA,pA,lA,cA){return t[0]=i,t[1]=r,t[2]=l,t[3]=u,t[4]=B,t[5]=f,t[6]=w,t[7]=_,t[8]=k,t[9]=F,t[10]=j,t[11]=IA,t[12]=rA,t[13]=pA,t[14]=lA,t[15]=cA,t}function M9(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function saA(t,i){if(t===i){var r=i[1],l=i[2],u=i[3],B=i[6],f=i[7],w=i[11];t[1]=i[4],t[2]=i[8],t[3]=i[12],t[4]=r,t[6]=i[9],t[7]=i[13],t[8]=l,t[9]=B,t[11]=i[14],t[12]=u,t[13]=f,t[14]=w}else t[0]=i[0],t[1]=i[4],t[2]=i[8],t[3]=i[12],t[4]=i[1],t[5]=i[5],t[6]=i[9],t[7]=i[13],t[8]=i[2],t[9]=i[6],t[10]=i[10],t[11]=i[14],t[12]=i[3],t[13]=i[7],t[14]=i[11],t[15]=i[15];return t}function naA(t,i){var r=i[0],l=i[1],u=i[2],B=i[3],f=i[4],w=i[5],_=i[6],k=i[7],F=i[8],j=i[9],IA=i[10],rA=i[11],pA=i[12],lA=i[13],cA=i[14],TA=i[15],WA=r*w-l*f,zA=r*_-u*f,$A=r*k-B*f,De=l*_-u*w,Ce=l*k-B*w,ct=u*k-B*_,mt=F*lA-j*pA,Ke=F*cA-IA*pA,Dt=F*TA-rA*pA,qt=j*cA-IA*lA,It=j*TA-rA*lA,ge=IA*TA-rA*cA,qe=WA*ge-zA*It+$A*qt+De*Dt-Ce*Ke+ct*mt;return qe?(qe=1/qe,t[0]=(w*ge-_*It+k*qt)*qe,t[1]=(u*It-l*ge-B*qt)*qe,t[2]=(lA*ct-cA*Ce+TA*De)*qe,t[3]=(IA*Ce-j*ct-rA*De)*qe,t[4]=(_*Dt-f*ge-k*Ke)*qe,t[5]=(r*ge-u*Dt+B*Ke)*qe,t[6]=(cA*$A-pA*ct-TA*zA)*qe,t[7]=(F*ct-IA*$A+rA*zA)*qe,t[8]=(f*It-w*Dt+k*mt)*qe,t[9]=(l*Dt-r*It-B*mt)*qe,t[10]=(pA*Ce-lA*$A+TA*WA)*qe,t[11]=(j*$A-F*Ce-rA*WA)*qe,t[12]=(w*Ke-f*qt-_*mt)*qe,t[13]=(r*qt-l*Ke+u*mt)*qe,t[14]=(lA*zA-pA*De-cA*WA)*qe,t[15]=(F*De-j*zA+IA*WA)*qe,t):null}function raA(t,i){var r=i[0],l=i[1],u=i[2],B=i[3],f=i[4],w=i[5],_=i[6],k=i[7],F=i[8],j=i[9],IA=i[10],rA=i[11],pA=i[12],lA=i[13],cA=i[14],TA=i[15],WA=r*w-l*f,zA=r*_-u*f,$A=r*k-B*f,De=l*_-u*w,Ce=l*k-B*w,ct=u*k-B*_,mt=F*lA-j*pA,Ke=F*cA-IA*pA,Dt=F*TA-rA*pA,qt=j*cA-IA*lA,It=j*TA-rA*lA,ge=IA*TA-rA*cA;return t[0]=w*ge-_*It+k*qt,t[1]=u*It-l*ge-B*qt,t[2]=lA*ct-cA*Ce+TA*De,t[3]=IA*Ce-j*ct-rA*De,t[4]=_*Dt-f*ge-k*Ke,t[5]=r*ge-u*Dt+B*Ke,t[6]=cA*$A-pA*ct-TA*zA,t[7]=F*ct-IA*$A+rA*zA,t[8]=f*It-w*Dt+k*mt,t[9]=l*Dt-r*It-B*mt,t[10]=pA*Ce-lA*$A+TA*WA,t[11]=j*$A-F*Ce-rA*WA,t[12]=w*Ke-f*qt-_*mt,t[13]=r*qt-l*Ke+u*mt,t[14]=lA*zA-pA*De-cA*WA,t[15]=F*De-j*zA+IA*WA,t}function aaA(t){var i=t[0],r=t[1],l=t[2],u=t[3],B=t[4],f=t[5],w=t[6],_=t[7],k=t[8],F=t[9],j=t[10],IA=t[11],rA=t[12],pA=t[13],lA=t[14],cA=i*f-r*B,TA=i*w-l*B,WA=r*w-l*f,zA=k*pA-F*rA,$A=k*lA-j*rA,De=F*lA-j*pA;return _*(i*De-r*$A+l*zA)-u*(B*De-f*$A+w*zA)+t[15]*(k*WA-F*TA+j*cA)-IA*(rA*WA-pA*TA+lA*cA)}function v9(t,i,r){var l=i[0],u=i[1],B=i[2],f=i[3],w=i[4],_=i[5],k=i[6],F=i[7],j=i[8],IA=i[9],rA=i[10],pA=i[11],lA=i[12],cA=i[13],TA=i[14],WA=i[15],zA=r[0],$A=r[1],De=r[2],Ce=r[3];return t[0]=zA*l+$A*w+De*j+Ce*lA,t[1]=zA*u+$A*_+De*IA+Ce*cA,t[2]=zA*B+$A*k+De*rA+Ce*TA,t[3]=zA*f+$A*F+De*pA+Ce*WA,zA=r[4],$A=r[5],De=r[6],Ce=r[7],t[4]=zA*l+$A*w+De*j+Ce*lA,t[5]=zA*u+$A*_+De*IA+Ce*cA,t[6]=zA*B+$A*k+De*rA+Ce*TA,t[7]=zA*f+$A*F+De*pA+Ce*WA,zA=r[8],$A=r[9],De=r[10],Ce=r[11],t[8]=zA*l+$A*w+De*j+Ce*lA,t[9]=zA*u+$A*_+De*IA+Ce*cA,t[10]=zA*B+$A*k+De*rA+Ce*TA,t[11]=zA*f+$A*F+De*pA+Ce*WA,zA=r[12],$A=r[13],De=r[14],Ce=r[15],t[12]=zA*l+$A*w+De*j+Ce*lA,t[13]=zA*u+$A*_+De*IA+Ce*cA,t[14]=zA*B+$A*k+De*rA+Ce*TA,t[15]=zA*f+$A*F+De*pA+Ce*WA,t}function gaA(t,i,r){var l,u,B,f,w,_,k,F,j,IA,rA,pA,lA=r[0],cA=r[1],TA=r[2];return i===t?(t[12]=i[0]*lA+i[4]*cA+i[8]*TA+i[12],t[13]=i[1]*lA+i[5]*cA+i[9]*TA+i[13],t[14]=i[2]*lA+i[6]*cA+i[10]*TA+i[14],t[15]=i[3]*lA+i[7]*cA+i[11]*TA+i[15]):(l=i[0],u=i[1],B=i[2],f=i[3],w=i[4],_=i[5],k=i[6],F=i[7],j=i[8],IA=i[9],rA=i[10],pA=i[11],t[0]=l,t[1]=u,t[2]=B,t[3]=f,t[4]=w,t[5]=_,t[6]=k,t[7]=F,t[8]=j,t[9]=IA,t[10]=rA,t[11]=pA,t[12]=l*lA+w*cA+j*TA+i[12],t[13]=u*lA+_*cA+IA*TA+i[13],t[14]=B*lA+k*cA+rA*TA+i[14],t[15]=f*lA+F*cA+pA*TA+i[15]),t}function caA(t,i,r){var l=r[0],u=r[1],B=r[2];return t[0]=i[0]*l,t[1]=i[1]*l,t[2]=i[2]*l,t[3]=i[3]*l,t[4]=i[4]*u,t[5]=i[5]*u,t[6]=i[6]*u,t[7]=i[7]*u,t[8]=i[8]*B,t[9]=i[9]*B,t[10]=i[10]*B,t[11]=i[11]*B,t[12]=i[12],t[13]=i[13],t[14]=i[14],t[15]=i[15],t}function laA(t,i,r,l){var u,B,f,w,_,k,F,j,IA,rA,pA,lA,cA,TA,WA,zA,$A,De,Ce,ct,mt,Ke,Dt,qt,It=l[0],ge=l[1],qe=l[2],ft=Math.sqrt(It*It+ge*ge+qe*qe);return ft0?(r[0]=2*(w*f+F*l+_*B-k*u)/j,r[1]=2*(_*f+F*u+k*l-w*B)/j,r[2]=2*(k*f+F*B+w*u-_*l)/j):(r[0]=2*(w*f+F*l+_*B-k*u),r[1]=2*(_*f+F*u+k*l-w*B),r[2]=2*(k*f+F*B+w*u-_*l)),R9(t,i,r),t}function faA(t,i){return t[0]=i[12],t[1]=i[13],t[2]=i[14],t}function w9(t,i){var r=i[0],l=i[1],u=i[2],B=i[4],f=i[5],w=i[6],_=i[8],k=i[9],F=i[10];return t[0]=Math.sqrt(r*r+l*l+u*u),t[1]=Math.sqrt(B*B+f*f+w*w),t[2]=Math.sqrt(_*_+k*k+F*F),t}function yaA(t,i){var r=new P_(3);w9(r,i);var l=1/r[0],u=1/r[1],B=1/r[2],f=i[0]*l,w=i[1]*u,_=i[2]*B,k=i[4]*l,F=i[5]*u,j=i[6]*B,IA=i[8]*l,rA=i[9]*u,pA=i[10]*B,lA=f+F+pA,cA=0;return lA>0?(cA=2*Math.sqrt(lA+1),t[3]=.25*cA,t[0]=(j-rA)/cA,t[1]=(IA-_)/cA,t[2]=(w-k)/cA):f>F&&f>pA?(cA=2*Math.sqrt(1+f-F-pA),t[3]=(j-rA)/cA,t[0]=.25*cA,t[1]=(w+k)/cA,t[2]=(IA+_)/cA):F>pA?(cA=2*Math.sqrt(1+F-f-pA),t[3]=(IA-_)/cA,t[0]=(w+k)/cA,t[1]=.25*cA,t[2]=(j+rA)/cA):(cA=2*Math.sqrt(1+pA-f-F),t[3]=(w-k)/cA,t[0]=(IA+_)/cA,t[1]=(j+rA)/cA,t[2]=.25*cA),t}function DaA(t,i,r,l){i[0]=l[12],i[1]=l[13],i[2]=l[14];var u=l[0],B=l[1],f=l[2],w=l[4],_=l[5],k=l[6],F=l[8],j=l[9],IA=l[10];r[0]=Math.sqrt(u*u+B*B+f*f),r[1]=Math.sqrt(w*w+_*_+k*k),r[2]=Math.sqrt(F*F+j*j+IA*IA);var rA=1/r[0],pA=1/r[1],lA=1/r[2],cA=u*rA,TA=B*pA,WA=f*lA,zA=w*rA,$A=_*pA,De=k*lA,Ce=F*rA,ct=j*pA,mt=IA*lA,Ke=cA+$A+mt,Dt=0;return Ke>0?(Dt=2*Math.sqrt(Ke+1),t[3]=.25*Dt,t[0]=(De-ct)/Dt,t[1]=(Ce-WA)/Dt,t[2]=(TA-zA)/Dt):cA>$A&&cA>mt?(Dt=2*Math.sqrt(1+cA-$A-mt),t[3]=(De-ct)/Dt,t[0]=.25*Dt,t[1]=(TA+zA)/Dt,t[2]=(Ce+WA)/Dt):$A>mt?(Dt=2*Math.sqrt(1+$A-cA-mt),t[3]=(Ce-WA)/Dt,t[0]=(TA+zA)/Dt,t[1]=.25*Dt,t[2]=(De+ct)/Dt):(Dt=2*Math.sqrt(1+mt-cA-$A),t[3]=(TA-zA)/Dt,t[0]=(Ce+WA)/Dt,t[1]=(De+ct)/Dt,t[2]=.25*Dt),t}function SaA(t,i,r,l){var u=i[0],B=i[1],f=i[2],w=i[3],_=u+u,k=B+B,F=f+f,j=u*_,IA=u*k,rA=u*F,pA=B*k,lA=B*F,cA=f*F,TA=w*_,WA=w*k,zA=w*F,$A=l[0],De=l[1],Ce=l[2];return t[0]=(1-(pA+cA))*$A,t[1]=(IA+zA)*$A,t[2]=(rA-WA)*$A,t[3]=0,t[4]=(IA-zA)*De,t[5]=(1-(j+cA))*De,t[6]=(lA+TA)*De,t[7]=0,t[8]=(rA+WA)*Ce,t[9]=(lA-TA)*Ce,t[10]=(1-(j+pA))*Ce,t[11]=0,t[12]=r[0],t[13]=r[1],t[14]=r[2],t[15]=1,t}function MaA(t,i,r,l,u){var B=i[0],f=i[1],w=i[2],_=i[3],k=B+B,F=f+f,j=w+w,IA=B*k,rA=B*F,pA=B*j,lA=f*F,cA=f*j,TA=w*j,WA=_*k,zA=_*F,$A=_*j,De=l[0],Ce=l[1],ct=l[2],mt=u[0],Ke=u[1],Dt=u[2],qt=(1-(lA+TA))*De,It=(rA+$A)*De,ge=(pA-zA)*De,qe=(rA-$A)*Ce,ft=(1-(IA+TA))*Ce,ni=(cA+WA)*Ce,Vt=(pA+zA)*ct,gi=(cA-WA)*ct,Fi=(1-(IA+lA))*ct;return t[0]=qt,t[1]=It,t[2]=ge,t[3]=0,t[4]=qe,t[5]=ft,t[6]=ni,t[7]=0,t[8]=Vt,t[9]=gi,t[10]=Fi,t[11]=0,t[12]=r[0]+mt-(qt*mt+qe*Ke+Vt*Dt),t[13]=r[1]+Ke-(It*mt+ft*Ke+gi*Dt),t[14]=r[2]+Dt-(ge*mt+ni*Ke+Fi*Dt),t[15]=1,t}function vaA(t,i){var r=i[0],l=i[1],u=i[2],B=i[3],f=r+r,w=l+l,_=u+u,k=r*f,F=l*f,j=l*w,IA=u*f,rA=u*w,pA=u*_,lA=B*f,cA=B*w,TA=B*_;return t[0]=1-j-pA,t[1]=F+TA,t[2]=IA-cA,t[3]=0,t[4]=F-TA,t[5]=1-k-pA,t[6]=rA+lA,t[7]=0,t[8]=IA+cA,t[9]=rA-lA,t[10]=1-k-j,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function RaA(t,i,r,l,u,B,f){var w=1/(r-i),_=1/(u-l),k=1/(B-f);return t[0]=2*B*w,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=2*B*_,t[6]=0,t[7]=0,t[8]=(r+i)*w,t[9]=(u+l)*_,t[10]=(f+B)*k,t[11]=-1,t[12]=0,t[13]=0,t[14]=f*B*2*k,t[15]=0,t}function _9(t,i,r,l,u){var B=1/Math.tan(i/2);if(t[0]=B/r,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=B,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=-1,t[12]=0,t[13]=0,t[15]=0,u!=null&&u!==1/0){var f=1/(l-u);t[10]=(u+l)*f,t[14]=2*u*l*f}else t[10]=-1,t[14]=-2*l;return t}QrA(S9,{add:()=>FaA,adjoint:()=>raA,clone:()=>eaA,copy:()=>taA,create:()=>AaA,decompose:()=>DaA,determinant:()=>aaA,equals:()=>YaA,exactEquals:()=>xaA,frob:()=>UaA,fromQuat:()=>vaA,fromQuat2:()=>maA,fromRotation:()=>haA,fromRotationTranslation:()=>R9,fromRotationTranslationScale:()=>SaA,fromRotationTranslationScaleOrigin:()=>MaA,fromScaling:()=>CaA,fromTranslation:()=>daA,fromValues:()=>iaA,fromXRotation:()=>BaA,fromYRotation:()=>QaA,fromZRotation:()=>paA,frustum:()=>RaA,getRotation:()=>yaA,getScaling:()=>w9,getTranslation:()=>faA,identity:()=>M9,invert:()=>naA,lookAt:()=>baA,mul:()=>VaA,multiply:()=>v9,multiplyScalar:()=>OaA,multiplyScalarAndAdd:()=>PaA,ortho:()=>NaA,orthoNO:()=>T9,orthoZO:()=>GaA,perspective:()=>waA,perspectiveFromFieldOfView:()=>TaA,perspectiveNO:()=>_9,perspectiveZO:()=>_aA,rotate:()=>laA,rotateX:()=>IaA,rotateY:()=>uaA,rotateZ:()=>EaA,scale:()=>caA,set:()=>oaA,str:()=>LaA,sub:()=>JaA,subtract:()=>N9,targetTo:()=>kaA,translate:()=>gaA,transpose:()=>saA});var waA=_9;function _aA(t,i,r,l,u){var B=1/Math.tan(i/2);if(t[0]=B/r,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=B,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=-1,t[12]=0,t[13]=0,t[15]=0,u!=null&&u!==1/0){var f=1/(l-u);t[10]=u*f,t[14]=u*l*f}else t[10]=-1,t[14]=-l;return t}function TaA(t,i,r,l){var u=Math.tan(i.upDegrees*Math.PI/180),B=Math.tan(i.downDegrees*Math.PI/180),f=Math.tan(i.leftDegrees*Math.PI/180),w=Math.tan(i.rightDegrees*Math.PI/180),_=2/(f+w),k=2/(u+B);return t[0]=_,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=k,t[6]=0,t[7]=0,t[8]=-(f-w)*_*.5,t[9]=(u-B)*k*.5,t[10]=l/(r-l),t[11]=-1,t[12]=0,t[13]=0,t[14]=l*r/(r-l),t[15]=0,t}function T9(t,i,r,l,u,B,f){var w=1/(i-r),_=1/(l-u),k=1/(B-f);return t[0]=-2*w,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*_,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=2*k,t[11]=0,t[12]=(i+r)*w,t[13]=(u+l)*_,t[14]=(f+B)*k,t[15]=1,t}var NaA=T9;function GaA(t,i,r,l,u,B,f){var w=1/(i-r),_=1/(l-u),k=1/(B-f);return t[0]=-2*w,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*_,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=k,t[11]=0,t[12]=(i+r)*w,t[13]=(u+l)*_,t[14]=B*k,t[15]=1,t}function baA(t,i,r,l){var u,B,f,w,_,k,F,j,IA,rA,pA=i[0],lA=i[1],cA=i[2],TA=l[0],WA=l[1],zA=l[2],$A=r[0],De=r[1],Ce=r[2];return Math.abs(pA-$A)0&&(F*=rA=1/Math.sqrt(rA),j*=rA,IA*=rA);var pA=_*IA-k*j,lA=k*F-w*IA,cA=w*j-_*F;return(rA=pA*pA+lA*lA+cA*cA)>0&&(pA*=rA=1/Math.sqrt(rA),lA*=rA,cA*=rA),t[0]=pA,t[1]=lA,t[2]=cA,t[3]=0,t[4]=j*cA-IA*lA,t[5]=IA*pA-F*cA,t[6]=F*lA-j*pA,t[7]=0,t[8]=F,t[9]=j,t[10]=IA,t[11]=0,t[12]=u,t[13]=B,t[14]=f,t[15]=1,t}function LaA(t){return"mat4("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+", "+t[4]+", "+t[5]+", "+t[6]+", "+t[7]+", "+t[8]+", "+t[9]+", "+t[10]+", "+t[11]+", "+t[12]+", "+t[13]+", "+t[14]+", "+t[15]+")"}function UaA(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]+t[3]*t[3]+t[4]*t[4]+t[5]*t[5]+t[6]*t[6]+t[7]*t[7]+t[8]*t[8]+t[9]*t[9]+t[10]*t[10]+t[11]*t[11]+t[12]*t[12]+t[13]*t[13]+t[14]*t[14]+t[15]*t[15])}function FaA(t,i,r){return t[0]=i[0]+r[0],t[1]=i[1]+r[1],t[2]=i[2]+r[2],t[3]=i[3]+r[3],t[4]=i[4]+r[4],t[5]=i[5]+r[5],t[6]=i[6]+r[6],t[7]=i[7]+r[7],t[8]=i[8]+r[8],t[9]=i[9]+r[9],t[10]=i[10]+r[10],t[11]=i[11]+r[11],t[12]=i[12]+r[12],t[13]=i[13]+r[13],t[14]=i[14]+r[14],t[15]=i[15]+r[15],t}function N9(t,i,r){return t[0]=i[0]-r[0],t[1]=i[1]-r[1],t[2]=i[2]-r[2],t[3]=i[3]-r[3],t[4]=i[4]-r[4],t[5]=i[5]-r[5],t[6]=i[6]-r[6],t[7]=i[7]-r[7],t[8]=i[8]-r[8],t[9]=i[9]-r[9],t[10]=i[10]-r[10],t[11]=i[11]-r[11],t[12]=i[12]-r[12],t[13]=i[13]-r[13],t[14]=i[14]-r[14],t[15]=i[15]-r[15],t}function OaA(t,i,r){return t[0]=i[0]*r,t[1]=i[1]*r,t[2]=i[2]*r,t[3]=i[3]*r,t[4]=i[4]*r,t[5]=i[5]*r,t[6]=i[6]*r,t[7]=i[7]*r,t[8]=i[8]*r,t[9]=i[9]*r,t[10]=i[10]*r,t[11]=i[11]*r,t[12]=i[12]*r,t[13]=i[13]*r,t[14]=i[14]*r,t[15]=i[15]*r,t}function PaA(t,i,r,l){return t[0]=i[0]+r[0]*l,t[1]=i[1]+r[1]*l,t[2]=i[2]+r[2]*l,t[3]=i[3]+r[3]*l,t[4]=i[4]+r[4]*l,t[5]=i[5]+r[5]*l,t[6]=i[6]+r[6]*l,t[7]=i[7]+r[7]*l,t[8]=i[8]+r[8]*l,t[9]=i[9]+r[9]*l,t[10]=i[10]+r[10]*l,t[11]=i[11]+r[11]*l,t[12]=i[12]+r[12]*l,t[13]=i[13]+r[13]*l,t[14]=i[14]+r[14]*l,t[15]=i[15]+r[15]*l,t}function xaA(t,i){return t[0]===i[0]&&t[1]===i[1]&&t[2]===i[2]&&t[3]===i[3]&&t[4]===i[4]&&t[5]===i[5]&&t[6]===i[6]&&t[7]===i[7]&&t[8]===i[8]&&t[9]===i[9]&&t[10]===i[10]&&t[11]===i[11]&&t[12]===i[12]&&t[13]===i[13]&&t[14]===i[14]&&t[15]===i[15]}function YaA(t,i){var r=t[0],l=t[1],u=t[2],B=t[3],f=t[4],w=t[5],_=t[6],k=t[7],F=t[8],j=t[9],IA=t[10],rA=t[11],pA=t[12],lA=t[13],cA=t[14],TA=t[15],WA=i[0],zA=i[1],$A=i[2],De=i[3],Ce=i[4],ct=i[5],mt=i[6],Ke=i[7],Dt=i[8],qt=i[9],It=i[10],ge=i[11],qe=i[12],ft=i[13],ni=i[14],Vt=i[15];return Math.abs(r-WA)<=dc*Math.max(1,Math.abs(r),Math.abs(WA))&&Math.abs(l-zA)<=dc*Math.max(1,Math.abs(l),Math.abs(zA))&&Math.abs(u-$A)<=dc*Math.max(1,Math.abs(u),Math.abs($A))&&Math.abs(B-De)<=dc*Math.max(1,Math.abs(B),Math.abs(De))&&Math.abs(f-Ce)<=dc*Math.max(1,Math.abs(f),Math.abs(Ce))&&Math.abs(w-ct)<=dc*Math.max(1,Math.abs(w),Math.abs(ct))&&Math.abs(_-mt)<=dc*Math.max(1,Math.abs(_),Math.abs(mt))&&Math.abs(k-Ke)<=dc*Math.max(1,Math.abs(k),Math.abs(Ke))&&Math.abs(F-Dt)<=dc*Math.max(1,Math.abs(F),Math.abs(Dt))&&Math.abs(j-qt)<=dc*Math.max(1,Math.abs(j),Math.abs(qt))&&Math.abs(IA-It)<=dc*Math.max(1,Math.abs(IA),Math.abs(It))&&Math.abs(rA-ge)<=dc*Math.max(1,Math.abs(rA),Math.abs(ge))&&Math.abs(pA-qe)<=dc*Math.max(1,Math.abs(pA),Math.abs(qe))&&Math.abs(lA-ft)<=dc*Math.max(1,Math.abs(lA),Math.abs(ft))&&Math.abs(cA-ni)<=dc*Math.max(1,Math.abs(cA),Math.abs(ni))&&Math.abs(TA-Vt)<=dc*Math.max(1,Math.abs(TA),Math.abs(Vt))}var VaA=v9,JaA=N9,tL=`#version 300 es + `],{type:"application/javascript"}),e=URL.createObjectURL(A);this.worker=new Worker(e),URL.revokeObjectURL(e),this.worker.onerror=o=>this._log.warn("worker error:",o.message,o.filename||"unknown",o.lineno||"unknown"),this.worker.onmessage=o=>{var a;let{type:c,trackId:d,message:C,count:y}=o.data;if(c==="black")(a=this.callbacks.get(d))==null||a();else if(c==="log")this._log.warn(C);else if(c==="blackCount"){let S=this.userIdMap.get(d);this._log.warn("".concat(S||d," black count: ").concat(y))}}}return this.worker}start(A){let{track:e,isUplink:o,room:a,userId:c,onBlack:d}=A;if(this._log.debug("start detect black video",e.id),!yM()||!d||!e||typeof Worker>"u")return void this._log.warn("black video detector not supported");let C=y=>{var S,b,V,J;let gA;if(o)gA=(b=(S=y.msg_up_stream_info)==null?void 0:S.msg_video_status)==null?void 0:b.filter(CA=>CA.uint32_video_stream_type===3)[0];else{let CA=(V=y.msg_down_stream_info)==null?void 0:V.filter(MA=>{var $A;return(($A=MA.msg_user_info)==null?void 0:$A.str_identifier)===c})[0];gA=(J=CA?.msg_video_status)==null?void 0:J.filter(MA=>MA.uint32_video_stream_type===3)[0]}if(gA){let CA=(gA.uint32_video_codec_bitrate||0)/1e3;if(this.sleep[e.id]&&this.sleep[e.id]>0)return void(this.sleep[e.id]-=1);CA>0&&CA<10&&(this.sleep[e.id]=30,this._log.info("track bitrate",CA,"start check"),this.checkOnce(e,3e4))}};return a.on("heartbeat-report",C),this.heartbeatListenerCleaner.set(e.id,()=>a.off("heartbeat-report",C)),this.callbacks.set(e.id,d),this.userIdMap.set(e.id,c),e.id}checkOnce(A,e){try{let o=this.getWorker();if(!o)throw new Error("Worker not available");let a=new MediaStreamTrackProcessor({track:A});o.postMessage({type:"addTrack",trackId:A.id,timeout:e,readable:a.readable},[a.readable])}catch(o){this._log.warn("check error:",o),this.stop(A.id)}}stop(A){if(A){this.worker&&this.worker.postMessage({type:"removeTrack",trackId:A}),this.callbacks.delete(A),delete this.sleep[A];let e=this.heartbeatListenerCleaner.get(A);e&&e(),this.heartbeatListenerCleaner.delete(A),this.userIdMap.delete(A)}}destroy(){this.callbacks.forEach((A,e)=>this.stop(e)),this.worker&&(this.worker.terminate(),this.worker=null)}},v1=class extends Jz{constructor(A){super(Qo(mi({},A),{isUplink:!0})),Y(this,"localMainAudioTrack",null),Y(this,"localMainVideoTrack",null),Y(this,"localAuxAudioTrack",null),Y(this,"localAuxVideoTrack",null),Y(this,"_isPublishingAux",!1),Y(this,"_publishingLocalAudioTrack"),Y(this,"_publishingLocalVideoTrack"),Y(this,"_mediaSettings",{videoCodec:"",videoWidth:0,videoHeight:0,videoBps:0,videoFps:0,videoDecCodec:"",audioCodec:"opus",audioFs:0,audioChannel:0,audioBps:0,smallVideoWidth:0,smallVideoHeight:0,smallVideoFps:0,smallVideoBps:0,auxVideoWidth:0,auxVideoHeight:0,auxVideoFps:0,auxVideoBps:0}),Y(this,"_flag",0),Y(this,"_checkPublishStateTimeoutId",-1),this.initialize()}get videoCodec(){var A;return((A=this.singlePC)==null?void 0:A.videoCodec)||"h264"}get ssrc(){if(!this.singlePC)return{audio:0,video:0,videoRtx:0,small:0,smallRtx:0,auxiliary:0,auxiliaryRtx:0};let{audioSsrc:A,bigVideoSsrc:e,bigVideoRtxSsrc:o,smallVideoSsrc:a,smallVideoRtxSsrc:c,auxVideoSsrc:d,auxVideoRtxSsrc:C}=this.singlePC.uplinkSSRC;return{audio:A||0,video:e||0,videoRtx:o||0,small:a||0,smallRtx:c||0,auxiliary:d||0,auxiliaryRtx:C||0}}get flag(){return this._flag}set flag(A){this._flag!==A&&(this._flag=A,this.checkPublishState())}checkPublishState(){let A=arguments.length>0&&arguments[0]!==void 0&&arguments[0];try{if(!A&&this._checkPublishStateTimeoutId>0)return;let{serverPublishState:e}=this,{publishState:o}=this._room,a=Object.keys(o).filter(c=>{if(o[c]!==e[c]&&o[c])switch(c){case"audio":return!(!this.localMainAudioTrack||!this.localMainAudioTrack.isMediaTrackActive);case"bigVideo":case"smallVideo":return!(!this.localMainVideoTrack||!this.localMainVideoTrack.isMediaTrackActive);case"auxVideo":return!(!this.localAuxVideoTrack||!this.localAuxVideoTrack.isMediaTrackActive)}return!1});if(a.length>0){if(!A)return void(this._checkPublishStateTimeoutId=Tr.run("timeout",()=>this.checkPublishState(!0),{delay:1e4,count:1}));Ai.addCount({key:521e3}),a.forEach(c=>{this._log.warn("".concat(c," publish failed during call ").concat(xp()," ").concat(nQ())),Ai.addEnum({key:521719,value:qz[c]})}),Tr.clearTask(this._checkPublishStateTimeoutId),this._checkPublishStateTimeoutId=-1}}catch(e){this._log.warn("checkPublishState failed",e)}}get isMainStreamPublished(){return!(!this.localMainAudioTrack&&!this.localMainVideoTrack)}get isAuxStreamPublished(){return!(!this.localAuxVideoTrack&&!this.localAuxAudioTrack)}get serverPublishState(){return{audio:!!(this.flag&VS),bigVideo:!!(this.flag&xS),smallVideo:!!(this.flag&fb),auxVideo:!!(this.flag&YS)}}initialize(){this.installEvents()}close(A){var e;let o=((e=this._peerConnection)==null?void 0:e.getSenders())||[];for(let a of o)a.replaceTrack(null);super.close(A),this.uninstallEvents(),this.uninstallTrackMuteEvents(this.localMainAudioTrack,this.localMainVideoTrack,this.localAuxVideoTrack),this.emitConnectionStateChangedEvent("DISCONNECTED")}installEvents(){this.listeners("connection-state-changed").includes(this.handleConnectionStateChange)||this.on("connection-state-changed",this.handleConnectionStateChange,this),this.installSPCEvents()}installSPCEvents(){var A,e;(A=this.singlePC)!=null&&A.listeners("spc-reconnected").includes(this.onSinglePCReconnected)||(e=this.singlePC)==null||e.on("spc-reconnected",this.onSinglePCReconnected,this)}uninstallSPCEvents(){var A;(A=this.singlePC)==null||A.off("spc-reconnected",this.onSinglePCReconnected,this)}uninstallEvents(){this.off("connection-state-changed",this.handleConnectionStateChange,this),this.uninstallSPCEvents()}emitConnectionStateChangedEvent(A,e){var o,a,c;let d=this._currentState,C=super.emitConnectionStateChangedEvent(A);return C&&d!==A&&(e?e.emit("connection-state-changed",{prevState:d,state:A}):((o=this.localMainVideoTrack)==null||o.emit("connection-state-changed",{prevState:d,state:A}),(a=this.localAuxVideoTrack)==null||a.emit("connection-state-changed",{prevState:d,state:A}),(c=this._publishingLocalVideoTrack)==null||c.emit("connection-state-changed",{prevState:d,state:A}))),C}onVideoEncodeFailed(A){return KA(this,null,function*(){if(!A||!A.isMediaTrackActive)return;let{videoCodec:e,singlePC:o}=this;if(!o)return;let a={h265:{supported:o.isH264EncodeSupported,target:"h264",log:"h265 encoder not working"},h264:{supported:o.isVP8EncodeSupported,target:"vp8",log:"h264 encoder not working"},vp8:{supported:!1,target:"vp8",log:"vp8 encoder not working, no fallback available"}};if(e==="vp9"||e==="av1")return;let c=a[e];this._log.warn(c.log),c!=null&&c.supported&&(yield o.switchVideoEncoder(c.target))})}publish(A){return KA(this,arguments,function(e){var o=this;let{localAudioTrack:a,localVideoTrack:c,isAuxiliary:d}=e;return function*(){var C,y,S,b,V,J,gA;if(!o.singlePC)return;if(o.installEvents(),o.installTrackMuteEvents(a,c),c&&(c.retryEncodeFailed=o.onVideoEncodeFailed.bind(o),eg&&(sy(bI,"26.2",!0)||sy(iQ,"26.2",!0)||eQ&&sy(bI,"18.7",!0)))){o._log.warn("detectH264Supported for fallback 26.2 video encode issue");try{yield te.detectH264SupportedByFakeStreaming(500)}catch{}}if(yield o.singlePC.waitForPeerConnectionConnected(),a&&(o._publishingLocalAudioTrack=a),c){if(!o.singlePC.isH264EncodeSupported&&!o.singlePC.isVP8EncodeSupported)throw new si({code:Et.NOT_SUPPORTED_H264,message:Xo({key:Mo.NOT_SUPPORTED_H264ENCODE})});o.singlePC.isUsingH264&&!o.singlePC.isH264EncodeSupported&&o.singlePC.isVP8EncodeSupported&&(o._log.warn("h264 encoder not supported"),yield o.singlePC.switchVideoEncoder("vp8")),Ha&&dM()===115&&c.profile.width*c.profile.height<=230400&&(o._log.warn("fallback video to defaultBigVideoProfile: ".concat(JSON.stringify(PS))),c.setProfile(PS),yield c.applyProfile()),o._publishingLocalVideoTrack=c}let CA;if(o._isPublishingAux=d,c&&!d&&c.small&&(CA=o._room.videoManager.smallTrack),yield o._signalChannel.sendWaitForResponseWithRetry({command:Dz,responseCommand:ls.SPC_PUBLISH_RESULT,data:Qo(mi({},o.singlePC.uplinkSSRC),{state:o._room.publishState,muteState:o._room.muteState}),retries:3}),c&&(yield o.checkHighProfile({streamType:c.streamType,newWidth:c.settings.width,newHeight:c.settings.height})),yield o.publishByTransceiver({localAudioTrack:a,localVideoTrack:c,smallTrack:CA,isAuxiliary:d}),o._publishingLocalAudioTrack=null,o._publishingLocalVideoTrack=null,o._isPublishingAux=!1,c){o[d?"localAuxVideoTrack":"localMainVideoTrack"]=c,yield o.singlePC.setDegradationPreference(o._peerConnection.getSenders()[d?3:1],c.contentHint,c.streamType);let{scaleResolutionDownBy:$A}=c;yield o.singlePC.setScaleResolutionDownBy(o._peerConnection.getSenders()[d?3:1],$A,c.streamType)}a&&(o[d?"localAuxAudioTrack":"localMainAudioTrack"]=a),yield o.singlePC.setBandwidth({audio:((C=o.localMainAudioTrack)==null?void 0:C.profile.bitrate)||((y=o.localAuxAudioTrack)==null?void 0:y.profile.bitrate),bigVideo:(S=o.localMainVideoTrack)==null?void 0:S.profile.bitrate,smallVideo:(V=(b=o.localMainVideoTrack)==null?void 0:b.small)==null?void 0:V.bitrate,auxVideo:(J=o.localAuxVideoTrack)==null?void 0:J.profile.bitrate}),o.sendMediaSettings();let MA=d?7:2;(o._room.preferHW||(gA=o._room.scheduleResult.config)!=null&&gA.preferHW)&&c&&c.profile.width*c.profile.height>=921600&&o.singlePC.useHWEncoder(!0,MA)}()})}publishByTransceiver(A){let{localAudioTrack:e,localVideoTrack:o,smallTrack:a,isAuxiliary:c}=A;if(!Zd())return;this._log.info("publish by transceiver");let d=o?.outMediaTrack,C=e?.outMediaTrack,y=this._peerConnection.getTransceivers(),S=[],b=[],V=(gA,CA,MA)=>{var $A;let he=y[CA].sender.replaceTrack(MA);b.push(CA),($A=this.singlePC)!=null&&$A.enableInsertableStreams&&he.then(()=>this.createEncodedStreams(y[CA].sender,gA)),this.initSenderTransform(y[CA].sender,gA),S.push(he)};C&&V(e.mediaType,0,C),d&&V(o.mediaType,c?3:1,d),o!=null&&o.small&&S.push(this.publishSmall(this._room.videoManager.smallMode,o));let J=this.singlePC.setTransceiverDirection(zn.SENDONLY,b);return S.push(J),Promise.all(S)}getTrackByMediaType(A){switch(A){case 1:return this.localMainAudioTrack||this._room.localMainAudioTrack;case 4:case 8:return this.localMainVideoTrack||this._room.localMainVideoTrack;case 2:return this.localAuxVideoTrack||this._room.localAuxVideoTrack;default:return null}}createEncodedStreams(A,e){var o,a;if(this.singlePC.insertableStreamsAbortMap.has(A))return;let c=A.createEncodedStreams(),d=new AbortController;(o=this.singlePC)==null||o.addAbortController(A,d),((a=this.getTrackByMediaType(e))!=null&&a.enableEncodeFrame?c.readable.pipeThrough(new TransformStream({transform:(C,y)=>{var S,b;let V=this.getTrackByMediaType(e);if(!V||!V.encodeFrame)return y.enqueue(C);V.isAudio?y.enqueue(V.enableEncodeFrame?V.encodeFrame(C):C):y.enqueue((S=this.singlePC)!=null&&S.isUsingH264||(b=this.singlePC)!=null&&b.isUsingH265?V.encodeFrame(C,e===8):C)}}),d):c.readable).pipeTo(c.writable,d).catch(C=>{this._log.debug("encoded stream error",C),C!=="destroy"&&this._log.warn(C)})}initSenderTransform(A,e){if(!(this._peerConnection&&this.singlePC&&this.singlePC.scriptTransformWorker&&Z0))return;let o=e!==2,a=e===8;A.transform||(A.transform=new RTCRtpScriptTransform(this.singlePC.scriptTransformWorker,{isReceiver:!1,isAudio:e===1,isMain:o,isSmall:a}))}enableSmall(A){return KA(this,null,function*(){A?yield this.publishSmall(this._room.videoManager.smallMode):yield this.unpublishSmall()})}publishSmall(A){return KA(this,arguments,function(e){var o=this;let a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.localMainVideoTrack;return function*(){var c;if(!o.singlePC)return;if(e==="canvas"&&!z0())return void o._log.warn("canvas mode small stream is not supported");let d=o._peerConnection.getTransceivers(),{sender:C}=d[2],y=yield o.doPublishSmall(e,a),S=e==="canvas"?524700:524701;Ai.addSuccessEvent({key:S}),y?((c=o.singlePC)!=null&&c.enableInsertableStreams&&o.createEncodedStreams(C,8),o.initSenderTransform(C,8),yield o.singlePC.setTransceiverDirection(zn.SENDONLY,[2]),o.updateMediaSettings(),yield o.doPublishChange(),C.track&&(o._blackSmallVideoDetectionId=jM.start({track:C.track,room:o._room,isUplink:!0,userId:o.userId,onBlack:()=>{o._log.warn("small video is black");let b=e==="canvas"?524700:524701;Ai.addFailedEvent({key:b,error:10002}),jM.stop(o._blackSmallVideoDetectionId),o._blackSmallVideoDetectionId=void 0}}))):Ai.addFailedEvent({key:S,error:10001})}()})}doPublishSmall(A){return KA(this,arguments,function(e){var o=this;let a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.localMainVideoTrack;return function*(){if(!o.singlePC)return null;o._log.info("publish small",e);let c=o._peerConnection.getTransceivers(),{sender:d}=c[2];if(e==="canvas"&&o._room.videoManager.smallTrack)return yield d.replaceTrack(o._room.videoManager.smallTrack),"canvas";if(e==="api"&&a!=null&&a.outMediaTrack&&a!=null&&a.small){yield d.replaceTrack(a?.outMediaTrack);let C=d.getParameters(),y=S0(a?.profile,a?.small);return o._log.info("small scaleResolutionDownBy",y),C.encodings[0].scaleResolutionDownBy=y,d.setParameters(C),"api"}return o._log.warn("small track can not be enabled, smallMode: ".concat(o._room.videoManager.smallMode,", smallTrack: ").concat(!!o._room.videoManager.smallTrack,", bigVideoTrack: ").concat(!(a==null||!a.outMediaTrack))),null}()})}unpublishSmall(){return KA(this,null,function*(){this.singlePC&&(this._log.info("unpublish small"),yield this._peerConnection.getTransceivers()[2].sender.replaceTrack(null),yield this.singlePC.setTransceiverDirection(zn.INACTIVE,[2]),this.updateMediaSettings(),yield this.doPublishChange(),jM.stop(this._blackSmallVideoDetectionId),this._blackSmallVideoDetectionId=void 0)})}checkHighProfile(A){return KA(this,null,function*(){var e,o;if((((e=this._room.scheduleResult.config)==null?void 0:e.profileLevelId)||{})[A.streamType==="main"?"big":"aux"]!=="high")return;let a=A.newWidth*A.newHeight>=921600&&!ny();try{yield(o=this.singlePC)==null?void 0:o.setH264ProfileLevelId(A.streamType,a)}catch(c){this._log.warn("setH264ProfileLevelId failed, ignore",c)}})}installTrackMuteEvents(){for(var A=arguments.length,e=new Array(A),o=0;o{a&&(a?.on("mute",this.sendMutedFlag,this),a?.on("unmute",this.sendMutedFlag,this))})}uninstallTrackMuteEvents(){for(var A=arguments.length,e=new Array(A),o=0;o{a&&(a?.off("mute",this.sendMutedFlag,this),a?.off("unmute",this.sendMutedFlag,this))})}unpublish(A){return KA(this,arguments,function(e){var o=this;let{localAudioTrack:a,localVideoTrack:c}=e;return function*(){var d;yield(d=o.singlePC)==null?void 0:d.waitForPeerConnectionConnected();let C=c&&c===o.localAuxVideoTrack||a&&a===o.localAuxAudioTrack,y=c?.outMediaTrack,S=o._peerConnection.getSenders(),b=[];a&&(C?o.localAuxAudioTrack=null:o.localMainAudioTrack=null,!o.localMainAudioTrack&&!o.localAuxAudioTrack&&(yield S[0].replaceTrack(null),b.push(0))),y&&(C?(yield S[3].replaceTrack(null),o.localAuxVideoTrack=null,o._mediaSettings=Qo(mi({},o._mediaSettings),{auxVideoBps:0,auxVideoFps:0,auxVideoWidth:0,auxVideoHeight:0}),b.push(3)):(yield S[1].replaceTrack(null),yield S[2].replaceTrack(null),o.localMainVideoTrack=null,o._mediaSettings=Qo(mi({},o._mediaSettings),{videoWidth:0,videoHeight:0,videoBps:0,videoFps:0,audioFs:0,audioChannel:0,audioBps:0,smallVideoWidth:0,smallVideoHeight:0,smallVideoFps:0,smallVideoBps:0}),b.push(1,2))),o.isMainStreamPublished||o.isAuxStreamPublished?(yield o.singlePC.setTransceiverDirection(zn.INACTIVE,b),yield o.doPublishChange(!1)):yield o.doUnpublish(),o.uninstallTrackMuteEvents(a,c),c?.emit("connection-state-changed",{prevState:o._currentState,state:"DISCONNECTED"})}()})}doPublishChange(){let A=!(arguments.length>0&&arguments[0]!==void 0)||arguments[0];return KA(this,null,function*(){let e={state:this._room.publishState,constraintConfig:this._mediaSettings},o=yield this._signalChannel.sendWaitForResponseWithRetry({command:uj,data:e,responseCommand:ls.PUBLISH_STATE_CHANGE_RESULT,enableLog:A,retries:3});this.checkPublishResultCode(o.data.code,o.data.message)})}doUnpublish(){let A=arguments.length>0&&arguments[0]!==void 0&&arguments[0];return this._signalChannel.sendWaitForResponse({command:m1,commandDesc:"unpublish",responseCommand:ls.UNPUBLISH_RESULT,enableLog:A}).catch(e=>{if(e.getCode()===Et.API_CALL_TIMEOUT||e.getCode()===Et.API_CALL_ABORTED)return Promise.resolve();throw e})}updateMediaSettings(){var A,e;this._mediaSettings.videoCodec=((A=this.singlePC)==null?void 0:A.videoCodec)||"h264",this._mediaSettings.videoDecCodec=((e=this.singlePC)==null?void 0:e.downlinkVideoCodec)||"h264";let o=this._publishingLocalAudioTrack||this.localMainAudioTrack||this.localAuxAudioTrack,{localMainVideoTrack:a,localAuxVideoTrack:c}=this;if(this._publishingLocalVideoTrack&&(this._isPublishingAux?c=this._publishingLocalVideoTrack:a=this._publishingLocalVideoTrack),dy){if(o&&o.outMediaTrack){let d=o.outMediaTrack.getSettings();this._mediaSettings.audioChannel=d.channelCount||1,this._mediaSettings.audioBps=1e3*o.profile.bitrate,this._mediaSettings.audioFs=d.sampleRate||0}if(a&&a.outMediaTrack){let d=a.outMediaTrack.getSettings(),{scaleResolutionDownBy:C}=a;this._mediaSettings.videoWidth=(d.width||0)/C||0,this._mediaSettings.videoHeight=(d.height||0)/C||0,this._mediaSettings.videoFps=d.frameRate||0,this._mediaSettings.videoBps=1e3*a.profile.bitrate,a.small&&(this._mediaSettings.smallVideoWidth=a.small.width,this._mediaSettings.smallVideoHeight=a.small.height,this._mediaSettings.smallVideoFps=a.small.frameRate,this._mediaSettings.smallVideoBps=1e3*a.small.bitrate)}if(c&&c.outMediaTrack){let d=c.outMediaTrack.getSettings(),{scaleResolutionDownBy:C}=c;this._mediaSettings.auxVideoWidth=(d.width||0)/C||0,this._mediaSettings.auxVideoHeight=(d.height||0)/C||0,this._mediaSettings.auxVideoFps=d.frameRate||0,this._mediaSettings.auxVideoBps=1e3*c.profile.bitrate}}else o&&o.outMediaTrack&&(this._mediaSettings.audioChannel=o.profile.channelCount,this._mediaSettings.audioBps=1e3*o.profile.bitrate,this._mediaSettings.audioFs=o.profile.sampleRate),a&&a.outMediaTrack&&(this._mediaSettings.videoWidth=a.profile.width,this._mediaSettings.videoHeight=a.profile.height,this._mediaSettings.videoFps=a.profile.frameRate,this._mediaSettings.videoBps=1e3*a.profile.bitrate);this._log.info("updateMediaSettings: ".concat(JSON.stringify(this._mediaSettings)))}sendMediaSettings(){this.updateMediaSettings(),this._signalChannel.sendWaitForResponse({command:Cj,data:this._mediaSettings,responseCommand:ls.UPDATE_CONSTRAINT_CONFIG_RES}).then(A=>{A.data.code!==0&&this._log.warn(A.data.message)}).catch(()=>{})}addTrack(A){return KA(this,null,function*(){if(!this._peerConnection)return;let e=A===this.localAuxAudioTrack||A===this.localAuxVideoTrack;this._log.info("is adding ".concat(A.kind," track to current published local ").concat(e?YA.AUXILIARY:YA.MAIN," stream")),lQ()&&(yield this.addTrackByTransceiver(A,e))})}addTrackByTransceiver(A,e){return KA(this,null,function*(){var o;if(!A.mediaTrack)return;let a=this._peerConnection.getTransceivers();if(A.kind===YA.AUDIO)yield a[0].sender.replaceTrack(A.outMediaTrack);else{let c=e?3:1;yield a[c].sender.replaceTrack(A.outMediaTrack),c===1&&(o=this.localMainVideoTrack)!=null&&o.small&&this._room.videoManager.smallTrack&&(yield a[2].sender.replaceTrack(this._room.videoManager.smallTrack)),a[c].direction===zn.INACTIVE&&(yield this.singlePC.setTransceiverDirection(zn.SENDONLY,[c]))}this.updateMediaSettings(),yield this.doPublishChange()})}removeTrack(A){return KA(this,null,function*(){if(!this._peerConnection)return;let e=A===this.localAuxAudioTrack||A===this.localAuxVideoTrack;this._log.info("is removing ".concat(A.kind," track from current published local ").concat(e?YA.AUXILIARY:YA.MAIN," stream")),lQ()&&(yield this.removeTrackByTransceiver(A,e))})}removeTrackByTransceiver(A,e){return KA(this,null,function*(){if(!A.mediaTrack)return;let o=this._peerConnection.getTransceivers();if(A.kind===YA.AUDIO)yield o[0].sender.replaceTrack(null);else{let a=e?3:1;yield o[a].sender.replaceTrack(null),a===1&&this._room.videoManager.hasSmall&&(yield o[2].sender.replaceTrack(null)),yield this.singlePC.setTransceiverDirection(zn.INACTIVE,[a])}this.updateMediaSettings(),yield this.doPublishChange()})}replaceTrack(A){return KA(this,null,function*(){var e;let o=(e=this._peerConnection)==null?void 0:e.getSenders(),a=A.outMediaTrack||A.mediaTrack;if(!o||o.length===0||!a||o.find(d=>d.track===a))return!1;let c=A.mediaType===2||A===this.localAuxAudioTrack||A===this.localAuxVideoTrack;return this._log.info("is replacing ".concat(a.kind," track ").concat(a.id," ").concat(a.label," on ").concat(c?YA.AUXILIARY:YA.MAIN," stream")),a.kind===YA.AUDIO&&o[0]&&(yield o[0].replaceTrack(a)),a.kind===YA.VIDEO&&(!c&&o[1]&&(yield o[1].replaceTrack(a)),c&&o[3]&&(yield o[3].replaceTrack(a))),!0})}setBandwidth(A){return KA(this,arguments,function(e){var o=this;let{bandwidth:a,type:c,videoType:d}=e;return function*(){if(o.singlePC){let C={};c===YA.AUDIO?C.audio=a:d==="big"?C.bigVideo=a:d==="small"?C.smallVideo=a:C.auxVideo=a,yield o.singlePC.setBandwidth(C)}}()})}sendMutedFlag(A){A===this.localAuxAudioTrack||A===this.localAuxVideoTrack||(this._log.info("send muted state: ".concat(JSON.stringify(this._room.muteState))),this._signalChannel.sendWaitForResponseWithRetry({command:mz,responseCommand:ls.MUTE_RESULT,data:this._room.muteState,retries:3}).catch(()=>{}))}handleConnectionStateChange(A){A.state==="CONNECTED"&&(this.localMainVideoTrack||this._publishingLocalVideoTrack&&!this._isPublishingAux)&&F.emit(sA.SEND_FIRST_VIDEO_FRAME,{room:this._room})}getVideoTrackId(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:YA.VIDEO;if(this._peerConnection){let e=this._peerConnection.getSenders();if(A===YA.AUXILIARY&&e[3]&&e[3].track)return e[3].track.id;if(A===YA.VIDEO&&e[1]&&e[1].track)return e[1].track.id}if(this.localMainVideoTrack&&A===YA.VIDEO){let e=this.localMainVideoTrack.mediaTrack;if(e)return e.id}if(this.localAuxVideoTrack&&A===YA.AUXILIARY){let e=this.localAuxVideoTrack.mediaTrack;if(e)return e.id}return""}getSSRC(){return this.ssrc}checkPublishResultCode(A,e){if(A!==0)throw A===a0?(this._log.error(cc.NOT_SUPPORTED_H264ENCODE),new si({code:Et.NOT_SUPPORTED_H264,message:Xo({key:Mo.NOT_SUPPORTED_H264ENCODE})})):new si({code:Et.UNKNOWN,message:Xo({key:Mo.SIGNAL_RESPONSE_FAILED,data:{signalResponse:ls.PUBLISH_RESULT,code:A,message:e}})})}onSinglePCReconnected(){return KA(this,null,function*(){this.isMainStreamPublished&&(this._log.warn("republish main stream"),yield this.publish({localAudioTrack:this.localMainAudioTrack,localVideoTrack:this.localMainVideoTrack,isAuxiliary:!1})),this.isAuxStreamPublished&&(this._log.warn("republish aux stream"),yield this.publish({localAudioTrack:this.localAuxAudioTrack,localVideoTrack:this.localAuxVideoTrack,isAuxiliary:!0}))})}};di([FM(A=>{let{localVideoTrack:e}=A;e==null||delete e.retryEncodeFailed})],v1.prototype,"unpublish"),di([Hz({when(){return this.isDestroyed}})],v1.prototype,"doPublishChange"),di([Hz({when(){return this.isDestroyed}})],v1.prototype,"doUnpublish");var qz=(A=>(A[A.audio=1]="audio",A[A.bigVideo=2]="bigVideo",A[A.smallVideo=3]="smallVideo",A[A.auxVideo=4]="auxVideo",A))(qz||{}),Kz=v1;function jz(A){return Object.keys(A).filter(e=>A[e])}var R1=class extends Jz{constructor(A){super(Qo(mi({},A),{isUplink:!1})),Y(this,"_flag",0),Y(this,"isRobot",!1),Y(this,"role","anchor"),Y(this,"fromType"),Y(this,"remoteAudioTrack"),Y(this,"remoteVideoTrack"),Y(this,"remoteAuxiliaryTrack"),Y(this,"ssrc",{audio:0,video:0,videoRtx:0,auxiliary:0,auxiliaryRtx:0}),Y(this,"_prevMids"),Y(this,"jitterBufferTimeoutId",-1),Y(this,"_jitterBufferResolve"),Y(this,"_videoCodec"),Y(this,"avPlayerStateSyncManager"),Y(this,"isDataChannelSubscribed",!1),this.flag=A.flag,this.isRobot=A.isRobot||!1,this.fromType=A.fromType,this.remoteAudioTrack=new o1(this._room,this),this.remoteVideoTrack=new nL(this._room,this),this.remoteAuxiliaryTrack=new b5(this._room,this),this.avPlayerStateSyncManager=new Aj({log:this._log,audioPlayer:this.remoteAudioTrack.player,videoPlayer:this.remoteVideoTrack.player}),this.initialize()}get videoCodec(){var A;return this._videoCodec||((A=this.singlePC)==null?void 0:A.downlinkVideoCodec)||"h264"}set videoCodec(A){this._videoCodec=A}get subscribeState(){return{audio:this.remoteAudioTrack.isSubscribed||this.remoteAudioTrack.isSubscribing,video:this.remoteVideoTrack.isBig&&(this.remoteVideoTrack.isSubscribed||this.remoteVideoTrack.isSubscribing),smallVideo:this.remoteVideoTrack.isSmall&&(this.remoteVideoTrack.isSubscribed||this.remoteVideoTrack.isSubscribing),auxiliary:this.remoteAuxiliaryTrack.isSubscribed||this.remoteAuxiliaryTrack.isSubscribing,datachannel:this.isDataChannelSubscribed}}get muteState(){return Rp(this.flag,this.userId)}get flag(){return this._flag}set flag(A){var e,o,a;A!==this._flag&&(this._flag=A,(e=this.remoteAudioTrack)==null||e.onFlagChanged(),(o=this.remoteVideoTrack)==null||o.onFlagChanged(),(a=this.remoteAuxiliaryTrack)==null||a.onFlagChanged())}get hasMainStream(){return this.muteState.hasAudio||this.muteState.hasVideo||this.muteState.hasSmall}get hasAuxStream(){return this.muteState.hasAuxiliary}get isMainStreamSubscribed(){return(this.subscribeState.audio||this.subscribeState.video||this.subscribeState.smallVideo)&&(this.muteState.hasAudio||this.muteState.hasVideo||this.muteState.hasSmall)}get isAuxStreamSubscribed(){return this.subscribeState.auxiliary&&this.muteState.hasAuxiliary}get isSmallStreamSubscribed(){return this.subscribeState.smallVideo&&this.muteState.hasSmall}get isBigStreamSubscribed(){return this.subscribeState.video&&this.muteState.hasVideo}isStreamUnpublished(A){return A===YA.MAIN?!this.muteState.hasAudio&&!this.muteState.hasVideo:!this.muteState.hasAuxiliary}initialize(){this.installEvents()}close(A){clearTimeout(this.jitterBufferTimeoutId),super.close(A),this.emitConnectionStateChangedEvent("DISCONNECTED"),this.remoteAudioTrack.close(),this.remoteVideoTrack.close(),this.remoteAuxiliaryTrack.close(),this.avPlayerStateSyncManager.destroy(),this.uninstallEvents(),this.removeDownlink()}installEvents(){this.singlePC&&(this.listeners("track").includes(this.onTrack)||this.singlePC.on("track",this.onTrack,this),this.listeners("spc-reconnected").includes(this.onSinglePCReconnected)||this.singlePC.on("spc-reconnected",this.onSinglePCReconnected,this),this.remoteVideoTrack.on("decode-failed",this.onDecodeFailed,this))}uninstallEvents(){this.singlePC&&(this.singlePC.off("track",this.onTrack,this),this.singlePC.off("spc-reconnected",this.onSinglePCReconnected,this),this.remoteVideoTrack.off("decode-failed",this.onDecodeFailed,this))}emitConnectionStateChangedEvent(A){var e,o;let a=this._currentState,c=super.emitConnectionStateChangedEvent(A);return c&&a!==A&&((e=this.remoteVideoTrack)==null||e.emit("connection-state-changed",{prevState:a,state:A}),(o=this.remoteAuxiliaryTrack)==null||o.emit("connection-state-changed",{prevState:a,state:A})),c}onTrack(A){var e,o;let a=A.streams[0],{track:c,receiver:d}=A;if(!a.id.includes(this.tinyId))return;let C=a.id.includes("aux")?"auxiliary":"main";this._log.debug("ontrack ".concat(C," ").concat(c.kind));let y=YA.AUDIO;c.kind===YA.VIDEO&&(y=C===YA.MAIN?YA.VIDEO:YA.AUXILIARY);let S=this.remoteAudioTrack;y===YA.VIDEO?S=this.remoteVideoTrack:y===YA.AUXILIARY&&(S=this.remoteAuxiliaryTrack),(e=this.singlePC)==null||e.receiverRemoteTrackMap.set(d,S),(o=this.singlePC)!=null&&o.scriptTransformWorker&&this.initReceiverTransform(d,C,c.kind===YA.AUDIO),this.singlePC.enableInsertableStreams&&this.createEncodedStreams(d),S.setInputMediaStreamTrack(c)}createEncodedStreams(A){if(!this.singlePC.insertableStreamsAbortMap.has(A)){let e=A.createEncodedStreams(),o=new AbortController,a={abortController:o,enqueue:c=>{var d,C,y;let S=(d=this.singlePC)==null?void 0:d.receiverRemoteTrackMap.get(A);return S&&(S.kind!=="video"||(C=this.singlePC)!=null&&C.isUsingH264||(y=this.singlePC)!=null&&y.isUsingH265)?S.decodeFrame(c):c}};e.readable.pipeThrough(new TransformStream({transform:(c,d)=>{let C=a.enqueue(c);C&&d.enqueue(C)}})).pipeTo(e.writable,o).catch(c=>{c!=="destroy"&&this._log.warn(c)}),this.singlePC.addAbortController(A,o)}}initReceiverTransform(A,e,o){!this._peerConnection||!this.singlePC||!this.singlePC.scriptTransformWorker||A.transform||(A.transform=new RTCRtpScriptTransform(this.singlePC.scriptTransformWorker,{isReceiver:!0,isAudio:o,userId:this.userId,streamType:e}))}subscribe(A,e){return KA(this,null,function*(){var o,a;try{let c=!0;if(this._log.info("subscribe ".concat(e," ").concat(jz(A))),this.hasSSRC){let y="subscribe_change";Object.values(A).find(S=>S===!0)||(y="unsubscribe"),yield this.sendSubscription(y,A)}else{if(yield this._room.switchRoomSubedReq,(o=this.singlePC)!=null&&o.autoSubscribedUserMap.size){let y=this.singlePC.autoSubscribedUserMap.get(this.userId);if(y){this.singlePC.autoSubscribedUserMap.delete(this.userId);let S=(a=this.singlePC.autoSubscribedSsrcGroups.get(this._room.roomId))==null?void 0:a[y.groupIndex];S&&(this.ssrc={audio:S.audioSsrc,video:S.bigVideoSsrc,videoRtx:S.bigVideoRtxSsrc,auxiliary:S.auxVideoSsrc,auxiliaryRtx:S.auxVideoRtxSsrc},c=!1)}}yield this.doSubscribe(A,c),this.checkTrackEnded(A)}let{user:d,mediaTrack:C}=this.remoteVideoTrack;A.smallVideo&&C?(Ai.addSuccessEvent({key:524702}),this._blackSmallVideoDetectionId=jM.start({track:C,isUplink:!1,room:this._room,userId:this.userId,onBlack:()=>{this._log.warn("small video is black, auto change to big"),this._room.changeType(!1,d),Ai.addFailedEvent({key:524702}),jM.stop(this._blackSmallVideoDetectionId),this._blackSmallVideoDetectionId=void 0}})):(jM.stop(this._blackSmallVideoDetectionId),this._blackSmallVideoDetectionId=void 0)}catch(c){throw this._room.isJoined&&this.isStreamUnpublished(e)?(this._log.warn("".concat(c.message," ").concat(JSON.stringify(this.muteState))),new si({code:Et.REMOTE_STREAM_NOT_EXIST,message:"remote user ".concat(this.userId," unpublished stream")})):c}})}checkTrackEnded(A){var e,o,a;if((A.audio&&((e=this.remoteAudioTrack.mediaTrack)==null?void 0:e.readyState)==="ended"||A.video&&((o=this.remoteVideoTrack.mediaTrack)==null?void 0:o.readyState)==="ended"||A.auxiliary&&((a=this.remoteAuxiliaryTrack.mediaTrack)==null?void 0:a.readyState)==="ended")&&this.singlePC&&!this.singlePC.isReconnecting){if(this._log.warn("remote track ended start spc reconnect"),gE&&$E<92)return;this.singlePC.startReconnection()}}unsubscribe(A){return KA(this,arguments,function(e){var o=this;let{remoteTracks:a,streamType:c}=e;return function*(){var d;if(c==="main"&&!o.isMainStreamSubscribed||c==="auxiliary"&&!o.isAuxStreamSubscribed)return void o._log.info("".concat(c," stream already unsubscribed"));let C=mi({},o.subscribeState);a.forEach(S=>{switch(S.mediaType){case 1:C.audio=!1;break;case 4:C.video=!1;break;case 8:C.smallVideo=!1;break;case 2:C.auxiliary=!1}});let y="subscribe_change";Object.values(C).find(S=>S===!0)||(y="unsubscribe"),o._log.info("".concat(y==="unsubscribe"?y:"subscribe"," ").concat(c," [").concat(jz(C),"]")),y==="unsubscribe"&&((d=o.singlePC)==null||d.removeDownlinkQueue.add(o.tinyId)),yield o.sendSubscription(y,C),c==="main"&&(jM.stop(o._blackSmallVideoDetectionId),o._blackSmallVideoDetectionId=void 0),y==="unsubscribe"&&(yield o.removeDownlink())}()})}subscribeDataChannel(){return KA(this,null,function*(){if(!this.singlePC)return;yield this.singlePC.waitForPeerConnectionConnected();let A=Qo(mi({},this.subscribeState),{datachannel:!0});yield this.doSubscribe(A)})}unsubscribeDataChannel(){return KA(this,null,function*(){let A=Qo(mi({},this.subscribeState),{datachannel:!1});yield this.sendSubscription("unsubscribe",A),yield this.removeDownlink()})}sendSubscription(A){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.subscribeState,o={srcTinyId:this.tinyId,srcUserId:this.userId},a=Ej,c=ls.UNSUBSCRIBE_RESULT;return A==="subscribe_change"&&(o={audio:e.audio,bigVideo:e.video,auxVideo:e.auxiliary,smallVideo:e.smallVideo,customData:e.datachannel,srcTinyId:this.tinyId},a=dj,c=ls.SUBSCRIBE_CHANGE_RESULT),this._signalChannel.sendWaitForResponseWithRetry({command:a,data:o,responseCommand:c,timeout:1e4,retries:3}).then(d=>{let{data:C}=d;if(C.code!==0){let y=new si({code:C.code,message:Xo({key:Mo.ERROR_MESSAGE,data:{type:A,message:C.message}})});throw this._log.error(y),y}})}getMainStreamVideoTrackId(){return this.remoteVideoTrack&&this.remoteVideoTrack.mediaTrack?this.remoteVideoTrack.mediaTrack.id:""}getAuxStreamVideoTrackId(){return this.remoteAuxiliaryTrack&&this.remoteAuxiliaryTrack.mediaTrack?this.remoteAuxiliaryTrack.mediaTrack.id:""}setDelay(A){let{audioDelay:e,videoDelay:o}=A;this.remoteAudioTrack.stat.end2EndDelay=e,this.remoteVideoTrack.stat.end2EndDelay=o}onSinglePCReconnected(){return KA(this,null,function*(){(this.ssrc.audio||this.ssrc.video||this.ssrc.auxiliary||this.isDataChannelSubscribed)&&(this._log.warn("resubscribe ".concat(JSON.stringify(this.subscribeState))),yield this.doSubscribe(this.subscribeState),this.remoteAudioTrack.checkDecodeResult(),this.remoteVideoTrack.checkDecodeResult(),this.remoteAuxiliaryTrack.checkDecodeResult())})}get hasSSRC(){return this.ssrc.audio&&this.ssrc.video&&this.ssrc.auxiliary}doSubscribe(){return KA(this,arguments,function(){var A=this;let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.subscribeState,o=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1];return function*(){var a,c;if(A.singlePC){A.singlePC.addDownlinkQueue.add(A.tinyId),yield A.singlePC.waitForPeerConnectionConnected();try{if(o||!A.hasSSRC){let d={audioSsrc:eB(),bigVideoSsrc:eB(),bigVideoRtxSsrc:eB(),auxVideoSsrc:eB(),auxVideoRtxSsrc:eB()},{audioSsrc:C,bigVideoSsrc:y,bigVideoRtxSsrc:S,auxVideoSsrc:b,auxVideoRtxSsrc:V}=d;A.ssrc={audio:C,video:y,videoRtx:S,auxiliary:b,auxiliaryRtx:V},A.singlePC.addDownlinkQueue.delete(A.tinyId),yield A.singlePC.addDownlink({userId:A.userId,tinyId:A.tinyId,ssrc:A.ssrc,prevMids:A._prevMids});try{let J=yield A._signalChannel.sendWaitForResponseWithRetry({command:Sz,responseCommand:ls.SPC_SUBSCRIBE_RESULT,data:{srcUserId:A.userId,srcTinyId:A.tinyId,audio:e.audio,bigVideo:e.video,auxVideo:e.auxiliary,smallVideo:e.smallVideo,customData:(a=e.datachannel)!=null&&a,ssrc:d},retries:3,retryTimeout:0});if(J.data.code!==0&&J.data.code!==-10036)throw new si({code:J.data.code,message:J.data.message});A.isDataChannelSubscribed=(c=e.datachannel)!=null&&c}catch(J){throw yield A.removeDownlink(),J}return}A.singlePC.addDownlinkQueue.delete(A.tinyId),yield A.singlePC.addDownlink({userId:A.userId,tinyId:A.tinyId,ssrc:A.ssrc,prevMids:A._prevMids})}finally{if((e.audio||e.video||e.smallVideo||e.auxiliary||!e.datachannel)&&IQ){let{main:d,aux:C}=A._room.jitterBufferDelay||{},{jitterDelay:y=d,jitterDelayAux:S=C}=A._room.scheduleResult.config||{};(bn(y)||bn(S))&&A.setJitterBufferDelay({mainDelay:y,auxDelay:S})}}}}()})}removeDownlink(){return KA(this,null,function*(){this.singlePC&&(this.isDataChannelSubscribed=!1,this.ssrc={audio:0,video:0,videoRtx:0,auxiliary:0,auxiliaryRtx:0},this.singlePC.removeDownlinkQueue.delete(this.tinyId),clearTimeout(this.jitterBufferTimeoutId),this._jitterBufferResolve&&(this._jitterBufferResolve(),this._jitterBufferResolve=void 0),this.setJitterBufferDelay({mainDelay:0,auxDelay:0}),this._prevMids=yield this.singlePC.removeDownlink(this.userId))})}setJitterBufferDelay(A){let{mainDelay:e,auxDelay:o}=A;if(!IQ||!this.singlePC||!this._peerConnection||zE(e)&&zE(o))return Promise.resolve();this._log.info("set jitterBuffer main: ".concat(e," aux: ").concat(o));let a=this.singlePC.getReceiversByUserId(this.userId);return bn(e)&&(this.remoteAudioTrack.jitterBufferDelay=e,this.remoteVideoTrack.jitterBufferDelay=e),bn(o)&&(this.remoteAuxiliaryTrack.jitterBufferDelay=o,zE(e)&&(this.remoteAudioTrack.jitterBufferDelay=o)),new Promise(c=>{this._jitterBufferResolve=c,this.doSetJitterBufferDelay({mainDelay:e,auxDelay:o,receivers:a,resolve:c})})}doSetJitterBufferDelay(A){let{mainDelay:e,auxDelay:o,receivers:a,resolve:c}=A;try{if(e===0&&o===0)return a.forEach(d=>d.jitterBufferTarget=0),this._jitterBufferResolve=void 0,c();if(a.forEach(d=>{var C;let y=d.track===this.remoteAuxiliaryTrack.outMediaTrack||zE(e)&&d.track===this.remoteAudioTrack.outMediaTrack;if(y&&zE(o)||!y&&zE(e))return;let S=y?o||0:e,b=(d.jitterBufferTarget||0)+100;b>S||(d.jitterBufferTarget=b,this._log.debug("set ".concat(y?"aux ":"").concat((C=d?.track)==null?void 0:C.kind," jitterBuffer delay ").concat(b," -> ").concat(S)))}),!a.find(d=>{let C=d.track===this.remoteAuxiliaryTrack.outMediaTrack?o||0:e;return d.jitterBufferTarget{this.doSetJitterBufferDelay({mainDelay:e,auxDelay:o,receivers:a,resolve:c})},1e3)}catch(d){this._log.warn("set jitterBuffer delay error: ".concat(d)),clearTimeout(this.jitterBufferTimeoutId),this._jitterBufferResolve=void 0,c()}}get audioReceiver(){var A;return((A=this.singlePC)==null?void 0:A.getReceiversByUserId(this.userId)[0])||null}onDecodeFailed(){this._room.downlinkVideoCodec==="h265"&&this._room.requestRemoteFallbackToH264()}};di([Wk(),jr(A=>function(){for(var e=arguments.length,o=new Array(e),a=0;a{let C=y=>{this.off("closed",C),d(new si({code:Et.API_CALL_ABORTED,message:Xo({key:Mo.CONNECTION_ABORTED,data:y})}))};this.on("closed",C),A.apply(this,o).then(c,d).finally(()=>{this.off("closed",C)})})})],R1.prototype,"subscribe"),di([Wk()],R1.prototype,"unsubscribe"),di([Qy(()=>"jitter")],R1.prototype,"setJitterBufferDelay");var _oA=R1,ToA=gc(ql()),Wz=class k9 extends ToA.EventEmitter{constructor(e,o){super(),this.room=e,this.signalChannel=o,Y(this,"log"),Y(this,"cmdIdSeqMap",new Map),Y(this,"messageMap",new Map),this.log=QA.createLogger({parent:e.getLogger(),id:"cmm",userId:e.userId}),this.onReceiveMsg=this.onReceiveMsg.bind(this),o.on(ls.RECEIVE_CUSTOM_MSG,this.onReceiveMsg),this.room.on("peer-leave",a=>{let{userId:c}=a;[...this.messageMap.keys()].forEach(d=>{d.split("_").slice(0,-1).join("_")===c&&this.messageMap.delete(d)})})}send(e){let{cmdId:o,data:a}=e,c=this.cmdIdSeqMap.get(o)||Math.floor(16383*Math.random()),d={cmdId:o,msg:btoa(String.fromCharCode(...new Uint8Array(a))),ordered:!0,reliable:!0,streamSeq:c};this.cmdIdSeqMap.set(o,c+1),this.signalChannel.send(ZiA,d),this.log.debug("send custom msg: ".concat(JSON.stringify(d)))}onReceiveMsg(e){let{data:o}=e.data,a=this.room.tinyIdToUserIdMap.get(o.srcTinyId);if(a){let c={userId:a,cmdId:o.cmdId,seq:o.streamSeq,data:Uint8Array.from(atob(o.msg),d=>d.charCodeAt(0)).buffer};if(o.ordered){let d="".concat(a,"_").concat(c.cmdId),C=this.messageMap.get(d);if(C&&C.lastSeq!==0)if(Math.abs(C.lastSeq-c.seq)>k9.SEQ_INTERVAL)this.messageMap.set(d,{lastSeq:c.seq,cachedMessageMap:new Map}),this.emitMessage(c);else if(c.seq>C.lastSeq){if(c.seq===C.lastSeq+1)this.emitMessage(c);else if(!C.cachedMessageMap.has(c.seq)){let y=setTimeout(()=>this.emitMessage(c,!0),5e3);C.cachedMessageMap.set(c.seq,{message:c,timeoutId:y})}}else this.log.debug("drop message ".concat(c.userId,"-").concat(c.cmdId,"-").concat(c.seq));else C||(C={lastSeq:0,cachedMessageMap:new Map},this.messageMap.set(d,C),setTimeout(()=>this.emitMessage(c,!0),100)),C.cachedMessageMap.set(c.seq,{message:c})}else this.emit("message",c)}else{this.log.warn("receive msg from unknown user, wait peer-join tinyId: ".concat(o.srcTinyId));let c=d=>{d.tinyId===o.srcTinyId&&(this.room.off("peer-join",c),this.onReceiveMsg(e))};this.room.on("peer-join",c),kC(2e3).then(()=>this.room.off("peer-join",c))}}emitMessage(e){let o=arguments.length>1&&arguments[1]!==void 0&&arguments[1];var a;let c=this.messageMap.get("".concat(e.userId,"_").concat(e.cmdId)),d=e;if(c){if(o){let y=[...c.cachedMessageMap.values()].sort((S,b)=>S.message.seq-b.message.seq);y[0]&&(d=y[0].message)}c.lastSeq!==0&&d.seq-c.lastSeq>1&&this.log.debug("msg lost userId: ".concat(d.userId," seq: ").concat(c.lastSeq," -> ").concat(d.seq)),c.lastSeq=d.seq,clearTimeout((a=c.cachedMessageMap.get(d.seq))==null?void 0:a.timeoutId),c.cachedMessageMap.delete(d.seq)}this.log.debug("receive custom msg: ".concat(JSON.stringify(d))),this.emit("message",d);let C=c?.cachedMessageMap.get(d.seq+1);C&&this.emitMessage(C.message)}};Y(Wz,"SEQ_INTERVAL",300);var NoA=Wz,{isString:zz,isUndefined:WM,getNetworkType:GoA,isEmpty:boA}=Jd,Ry=class extends QoA{constructor(A){super(A),Y(this,"_businessInfo"),Y(this,"userManager"),Y(this,"_version"),Y(this,"_heartbeat",-1),Y(this,"_lastHeartBeatTime",-1),Y(this,"_stats"),Y(this,"_joinTimeout",-1),Y(this,"_firstPublishedList",null),Y(this,"_joinReject",null),Y(this,"_isRelayChanged",!1),Y(this,"sdpSemantics"),Y(this,"signalChannel",null),Y(this,"uplinkConnection",null),Y(this,"singlePC",null),Y(this,"enableSPC",RM),Y(this,"_changeBigSmallRecords",new Map),Y(this,"networkQuality"),Y(this,"_iceTransportPolicy"),Y(this,"forceRelay",!1),Y(this,"_turnServers",[]),Y(this,"_iceServersFromJoin"),Y(this,"_syncUserListInterval",-1),Y(this,"_smallStreamConfig",{bitrate:100,frameRate:15,height:120,width:160}),Y(this,"enableSEI",!1),Y(this,"_enableAudioVolumeEvaluation",!1),Y(this,"_audioVolumeIntervalId",0),Y(this,"_enableMultiAuxStream",!1),Y(this,"_pureAudioPushMode",!1),Y(this,"_customMessageManager"),Y(this,"_enableDataChannel",!1),Y(this,"preferHW",!1),Y(this,"healthDetector"),Y(this,"playoutDelay"),Y(this,"jitterBufferDelay"),Y(this,"_updateAudioLevelTaskId",-1),Y(this,"switchRoomSubedReq"),Y(this,"resolveSwitchRoomSubedReq"),Y(this,"enableVolumeControlInIOS"),Y(this,"capturedLocalMainAudioTrack"),Y(this,"capturedLocalMainVideoTrack"),Y(this,"capturedLocalAuxVideoTrack"),Y(this,"PRELINK_EXPIRED_TIME",3e5),Y(this,"PRELINK_TIMEOUT",1e4),Y(this,"prelinkTimeoutId",null),Y(this,"firewallDetector"),this.firewallDetector=new eiA,this.firewallDetector.on("firewall-restriction",()=>{this._log.warn("firewall restriction"),this.emit("firewall-restriction")}),this._stats=new ooA(this,this._log),this.userManager=new $tA(this.userId,this._log),this._version=Hd,this.sdpSemantics=r0,WM(A.sdpSemantics)?te.isUnifiedPlanDefault()&&(this.sdpSemantics=HS):this.sdpSemantics=A.sdpSemantics,this._log.info("sdpSemantics: ".concat(this.sdpSemantics,", netType: ").concat(GoA())),A.iceTransportPolicy&&(this._iceTransportPolicy=A.iceTransportPolicy),this._enableMultiAuxStream=!WM(A.enableMultiAuxStream)&&A.enableMultiAuxStream,this.enableSEI=A.enableSEI&&RM,!WM(A.enableSPC)&&RM&&(this.enableSPC=A.enableSPC),this.preferHW=!!A.preferHW,this.enableVolumeControlInIOS=A.enableVolumeControlInIOS,this._initBusinessInfo(A),this.healthDetector=new SoA(this)}get isMainStreamPublished(){var A;return!((A=this.uplinkConnection)==null||!A.isMainStreamPublished)}get isMainAudioPublished(){var A;return!((A=this.uplinkConnection)==null||!A.localMainAudioTrack)}get isAuxStreamPublished(){var A;return!((A=this.uplinkConnection)==null||!A.isAuxStreamPublished)}get hasAuxStream(){return[...this.remotePublishedUserMap.values()].findIndex(A=>A.muteState.hasAuxiliary)>=0}get userMap(){return this.userManager.userMap}get remotePublishedUserMap(){return this.userManager.remotePublishedUserMap}get tinyIdToUserIdMap(){return new Map([...this.userMap.values()].map(A=>[A.tinyId,A.userId]))}get videoCodec(){var A;return((A=this.singlePC)==null?void 0:A.videoCodec)||"h264"}get downlinkVideoCodec(){var A;return((A=this.singlePC)==null?void 0:A.downlinkVideoCodec)||"h264"}join(A,e,o){return KA(this,null,function*(){return this.userManager.mySelfId=this.userId,this.userManager.on("1",a=>{this.emit("peer-join",a)}),this.userManager.on("8",a=>{this.emit("asr-robot-peer-join",a)}),this.userManager.on("9",a=>{this.emit("asr-robot-peer-leave",a)}),this.userManager.on("2",a=>{let{userId:c,reason:d}=a;this.closeDownLinkConnection(c,"remote user exitRoom"),this.emit("peer-leave",{userId:c,reason:d})}),this.userManager.on("3",this.createDownlinkConnection,this),this.userManager.on("5",this.closeDownLinkConnection,this),this.userManager.on("6",a=>{var c=fx(a,[]);F.emit(sA.REMOTE_PUBLISH_STATE_CHANGED,mi({room:this},c)),this.emit("remote-publish-state-changed",mi({},c))}),this.joinParams=A,_r(A.enableDataChannel)&&(this._enableDataChannel=A.enableDataChannel),new Promise((a,c)=>KA(this,null,function*(){var d,C;this._joinReject=c;try{this.checkDestroy();try{yield Promise.all([this.initialize(),this.initSinglePC()])}catch(S){if(!(S instanceof si&&S.code===Et.SPC_INITIALIZED_FAILED))return c(S);(d=this.signalChannel)==null||d.destroy(),yield this.initialize()}let y=ko();yield this.doJoin(A,(C=this.singlePC)==null?void 0:C.clientAbility),Ai.addSuccessEvent({key:521708,cost:ko()-y}),a(),this._firstPublishedList&&this.onPublishedUserList({data:{userList:this._firstPublishedList}})}catch(y){Ai.addFailedEvent({key:521708,error:y}),c(y)}this._joinReject=null}))})}initSinglePC(){return KA(this,null,function*(){if(this.enableSPC&&!this.singlePC){this.singlePC=new vy({signalChannel:this.signalChannel,room:this,enableDataChannel:this._enableDataChannel}),this.singlePC.on("sei-message",A=>this.emit("sei-message",A)),this.singlePC.on("dump",A=>this.emit("dump",A)),this.singlePC.once("error",()=>this.fallbackToMPC()),this.singlePC.on("data_channel_msg",A=>{let e=new TextDecoder().decode(A.data.data||A.data);try{this.emit("data-channel-message",{data:JSON.parse(e)})}catch{}});try{return yield this.singlePC.initialize()}catch(A){throw this.fallbackToMPC(),new si({code:Et.SPC_INITIALIZED_FAILED,message:A?.message})}}})}doJoin(A,e){return new Promise((o,a)=>KA(this,null,function*(){var c,d,C,y,S,b,V,J;A.privateMapKey&&(this.privateMapKey=A.privateMapKey),A.latencyLevel&&(this.latencyLevel=A.latencyLevel),this.signalChannel.once(Q1,MA=>{this.clearJoinTimeout(),F.emit(sA.JOIN_SIGNAL_CONNECTION_END,{room:this,error:MA}),a(MA)}),_r((d=(c=this.scheduleResult)==null?void 0:c.config)==null?void 0:d.singlePC)&&RM&&(this.enableSPC=this.scheduleResult.config.singlePC),this.keyPointManager.setConnectionType(this.singlePC?1:2),(!((y=(C=this.scheduleResult)==null?void 0:C.config)!=null&&y.jitterDelay)&&!((b=(S=this.scheduleResult)==null?void 0:S.config)!=null&&b.jitterDelayAux)||!IQ)&&e&&this.playoutDelay&&(this._log.info("set playoutDelay",JSON.stringify(this.playoutDelay)),e.playoutDelay=this.playoutDelay);let gA={roomId:String(A.roomId||A.strRoomId),useStringRoomId:this.useStringRoomId,privateMapKey:this.privateMapKey,latencyLevel:this.latencyLevel,trtcRole:A.role,trtcScene:this.scene==="live"?2:1,sdpSemantics:this.sdpSemantics,version:this._version,ua:navigator&&navigator.userAgent||"",terminalType:Cn(),netType:Hf(),bussinessInfo:this._businessInfo,ability:e,sdkType:this._sdkType,userSig:this.userSig,receiveMix:!0,isChorus:!!this.enableChorus,enableNtpAudioFrame:!!this.enableChorus&&W0(),transcription:this._enableDataChannel,downUseVp8:((V=this.scheduleResult.config)==null?void 0:V.downUseVp8)||!1};this._log.debug("join room signal data: ".concat(JSON.stringify(gA)));let CA=5e3;(J=this.scheduleResult.config)!=null&&J.enterRoomTimeout&&this.scheduleResult.config.enterRoomTimeout>=1&&(CA=1e3*this.scheduleResult.config.enterRoomTimeout),this._joinTimeout=window.setTimeout(()=>{a(new si({code:Et.JOIN_ROOM_FAILED,message:Xo({key:Mo.JOIN_ROOM_TIMEOUT})}))},CA),F.emit(sA.JOIN_SEND_CMD,{room:this}),this.signalChannel.send(this.singlePC?jiA:GiA,gA),this.signalChannel.once(ls.JOIN_ROOM_RESULT,MA=>KA(this,null,function*(){this.clearJoinTimeout();let{code:$A,message:he,data:Ye,tinyId:Me}=MA.data;F.emit(sA.JOIN_RECEIVED_CMD_RES,{room:this,code:$A}),$A===0?(this._log.info("Join room success, start heartbeat"),Me&&(this.tinyId=Me),this.startHeartbeat(),this.syncUserList(),this.startSyncUserListInterval(),this._firstPublishedList=Ye.publishers,this._iceServersFromJoin=Ye.iceServer?[Ye.iceServer]:[],this.singlePC&&this.singlePC.setIceServers(this.getIceServers()).then(()=>{var yi;(yi=this.singlePC)==null||yi.connect(Qo(mi({},Ye.ability),{useVp8:Ye.ability.useVp8||!!A.useVp8,useH265:Ye.ability.useH265&&!!A.useH265})).catch(()=>{})}),o()):(this._log.error("Join room failed result: ".concat($A," error: ").concat(he)),a(new si({code:Et.JOIN_ROOM_FAILED,extraCode:$A,message:Xo({key:Mo.JOIN_ROOM_FAILED,data:{error:he,code:$A}})})))}))}))}reJoin(){return KA(this,null,function*(){if(this.isJoined)try{this._log.warn("reJoin pending: ".concat(this.joinParams.roomId));let A,e=[];if(this.singlePC&&(this.singlePC.close(),this.singlePC=null,e.push(this.initSinglePC().then(o=>(A=o,o)))),this.signalChannel&&(this.signalChannel.close(),e.push(this.signalChannel.connect())),yield Promise.all(e),yield this.doJoin(Qo(mi({},this.joinParams),{role:this.role==="anchor"?20:21,privateMapKey:this.privateMapKey,latencyLevel:this.latencyLevel}),A),this._log.warn("reJoin success"),sn.logSuccessEvent({userId:this.userId,eventType:Ja.REJOIN}),this.singlePC){let o=a=>{var c;a.state==="CONNECTED"&&((c=this.singlePC)==null||c.off(C_.CONNECTION_STATE_CHANGED,o),this.uplinkConnection instanceof Kz&&(this.uplinkConnection.installEvents(),this.uplinkConnection.onSinglePCReconnected()),this.remotePublishedUserMap.forEach(d=>{d.installEvents(),d.onSinglePCReconnected()}))};this.singlePC.on(C_.CONNECTION_STATE_CHANGED,o),this.checkConnectionsToReconnect(),this.uplinkConnection instanceof S1&&!this.uplinkConnection.getIsReconnecting()&&this.uplinkConnection.startReconnection()}}catch(A){this._log.warn("reJoin fail ".concat(A)),this.reset(),sn.logFailedEvent({userId:this.userId,eventType:Ja.REJOIN,error:A}),this.emit("error",new si({code:Et.JOIN_ROOM_FAILED,message:Xo({key:Mo.REJOIN_ROOM_FAILED,data:{roomId:this.joinParams.roomId}})}))}else this._log.warn("reJoin abort")})}initialize(A){return KA(this,null,function*(){var e,o;if(!(A!=null&&A.isPrelink)&&this.prelinkPromise&&(yield this.prelinkPromise),(e=this.signalChannel)!=null&&e.isPrelinkValid(this.sdkAppId,this.userId,this.userSig))return this._log.info("reuse prelink signal channel"),void this.signalChannel.consumePrelink();(o=this.signalChannel)!=null&&o.prelink&&this.signalChannel.close();let a,{mainUrl:c,backupUrl:d}=this.getSignalChannelUrl(),C=this.signalChannel||function(S){return[...f1.values()].find(V=>V.room.userId===S&&!V.room.isJoined)||null}(this.userId),y=!!(C&&C.isConnected&&C.keepAlive&&C.userId===this.userId);return Array.isArray(this.scheduleResult.domains)&&this.scheduleResult.domains.length>0&&(a=this.scheduleResult.domains[0]),this._log.info("".concat(y?"reuse":"setup"," signal channel")),y?(C.url=c,C.backupUrl=d,C.room.setSignalChannel(null),C.room=this,this.signalChannel=C):(C&&C.close(),this.signalChannel=new Mz({sdkAppId:this.sdkAppId,userId:this.userId,userSig:this.userSig,url:c,backupUrl:d,room:this,signalDomainWhenUnifiedProxy:this.proxy_unified?a:void 0,prelink:A?.isPrelink}),this._customMessageManager=new NoA(this,this.signalChannel),this._customMessageManager.on("message",S=>{this.emit("custom-message",S)})),this.networkQuality||(this.networkQuality=new Tz({signalChannel:this.signalChannel,room:this}),this.networkQuality.on(Tz.EVENT_NETWORK_QUALITY,S=>{var b;this.emit("network-quality",S),(b=this.singlePC)==null||b.detectTCPAndUDP(S)})),id(this,this.signalChannel).add(Ij,S=>{F.emit(sA.SIGNAL_CONNECTION_STATE_CHANGED,mi({room:this},S)),this.emit("signal-connection-state-changed",S)}).add(_iA,S=>{this.reset(),this.emit("error",S)}).add(ls.PEER_JOIN,S=>{let{srcTinyId:b,userId:V,role:J,fromType:gA}=S.data.data;this.userManager.addUser({userId:V,tinyId:b,role:J,fromType:gA})}).add(ls.PEER_LEAVE,S=>{let{userId:b,reason:V=0}=S.data.data;this.userManager.deleteUser(b,V)}).add(ls.UPDATE_REMOTE_MUTE_STAT,S=>{this._lastHeartBeatTime>0&&Date.now()-this._lastHeartBeatTime>=1e4&&this.doHeartbeat(),this.onPublishedUserList(S.data)}).add(ls.CLIENT_BANNED,S=>{let b=S.data.data,{reason:V}=b;if(sn.uploadEvent({log:"stat-banned:".concat(V),userId:this.userId}),V==="user_time_out")return this._log.warn("".concat(V," last heart beat time: ").concat(this._lastHeartBeatTime," interval: ").concat(Date.now()-this._lastHeartBeatTime,", visibility: ").concat(document.visibilityState)),void this.reJoin();this._log[V==="kick"?"error":"info"]("user was banned because of [".concat(V,"]")),this.reset(),this.emit("banned",{reason:V})}).add(ls.SEND_SWITCH_ROOM_SUBED_REQ,S=>{if(!this.singlePC)return;let{subList:b}=S.data.data;this._log.info("auto subscribe ".concat(Wd(b,{keysToInclude:["userId"]}))),b.forEach(V=>{this.singlePC.autoSubscribedUserMap.set(V.userId,V)}),this.resolveSwitchRoomSubedReq()}).add(ls.FALLBACK_CODEC,S=>KA(this,null,function*(){var b,V,J,gA,CA;let MA=S.data.data;((b=MA.videoControlInfo)==null?void 0:b.enableH265Enc)===0&&((V=this.singlePC)==null?void 0:V.videoCodec)==="h265"&&(this._log.warn("fallback codec enableH265Enc: ".concat((J=MA.videoControlInfo)==null?void 0:J.enableH265Enc)),Ai.addCount({key:513e3}),yield(gA=this.singlePC)==null?void 0:gA.switchVideoEncoder("h264"),yield(CA=this.uplinkConnection)==null?void 0:CA.sendMediaSettings())})),this.signalChannel.once(Bz,S=>{this.tinyId=S.signalInfo.tinyId,F.emit(sA.JOIN_SIGNAL_CONNECTION_END,{room:this})}),F.emit(sA.JOIN_SIGNAL_CONNECTION_START,{room:this}),yield this.signalChannel.connect(),y&&F.emit(sA.JOIN_SIGNAL_CONNECTION_END,{room:this}),y})}setSignalChannel(A){this.signalChannel=A,A||kn(this)}leave(){return KA(this,null,function*(){var A;try{yield this.doHeartbeat()}catch{}this._log.info("leave() => leaving room"),F.emit(sA.LEAVE_SEND_CMD,{room:this}),(A=this.signalChannel)==null||A.send(biA),this.switchRoomSubedReq=void 0,this._changeBigSmallRecords.clear()})}clearNetworkQuality(){this.networkQuality&&(this.networkQuality.stop(),delete this.networkQuality)}closeConnections(){this.remotePublishedUserMap.forEach(A=>{this.closeDownLinkConnection(A.userId,"you exitRoom")})}clearJoinTimeout(){clearTimeout(this._joinTimeout),this._joinTimeout=-1}startHeartbeat(){this._heartbeat===-1&&(this._heartbeat=Tr.run("ric",this.doHeartbeat.bind(this),{delay:2e3}),this.enableChorus&&this.startUpdateNTPTime())}stopHeartbeat(){this._heartbeat!==-1&&(this._log.info("stopHeartbeat"),Tr.clearTask(this._heartbeat),this._heartbeat=-1,this._lastHeartBeatTime=-1)}doHeartbeat(){return KA(this,null,function*(){var A;let e=this.badCaseDetector.getMonitorFreeze(),o=yield this._stats.getStatsReport({uplinkConnection:this.uplinkConnection,downlinkConnections:this.remotePublishedUserMap,freezeMap:e});this.badCaseDetector.resetMonitor();let a=(A=this.signalChannel)!=null&&A.isConnected?function(d){if(g_.has(d)){let C=g_.get(d).map(y=>({uint32_event_id:y.eventId,uint64_date:y.timestamp,str_userid:y.remoteUserId,uint32_param1:y.param1,uint32_param2:y.param2,uint32_video_stream_type:y.streamType}));return g_.delete(d),C}return[]}(this.userId):[],c=Qo(mi({str_sdk_version:Xw,uint64_datetime:new Date().getTime(),msg_user_info:{str_identifier:this.userId,uint64_tinyid:this.tinyId},msg_event_msg:a,str_acc_ip:this.getSignalInfo().relayIp,str_client_ip:this.getSignalInfo().clientIp},o),{msg_device_info:mi({uint32_terminal_type:15,str_device_name:nQ(),str_os_version:"",uint32_net_type:Hf()},o.msg_device_info)});if(this.heartbeatReport=c,this.heartbeatCount++,F.emit(sA.HEARTBEAT_REPORT,{room:this,report:c}),this.signalChannel){if(this.signalChannel.isConnected){this.signalChannel.send(kiA,c);let d=Date.now();this._lastHeartBeatTime>0&&d-this._lastHeartBeatTime>1e4&&this._log.warn("heartbeat took ".concat(d-this._lastHeartBeatTime)),this._lastHeartBeatTime=d,this.signalChannel.isOnline||(this._log.warn("signal channel is not online"),this.signalChannel.startReconnection())}this.emit("heartbeat-report",Qo(mi({},c),{bytes_sent:this._stats.totalBytesSent+this.signalChannel.bytesSent,bytes_received:this._stats.totalBytesReceived+this.signalChannel.bytesReceived}))}!this._isRelayChanged&&this.isRelayMaybeFailed()&&(this.reJoin(),this._isRelayChanged=!0)})}onPublishedUserList(A){if(!this.isJoined)return;let e=!1,o=A.data.userList||[],a=A.data.mixRobotList||[],c=[];for(let C of o){if(C.flag===yb)continue;let{userId:y,srcTinyId:S,flag:b,fromType:V}=C;y===this.userId&&(e=!0,this.uplinkConnection&&(this.uplinkConnection.flag=b),this.localPublishFlag!==b&&(this.localPublishFlag=b,this.emit("local-publish-flag-changed",b))),c.push({userId:y,tinyId:S,flag:b,fromType:V})}let d=[...a.map(C=>{let{userId:y,srcTinyId:S,flag:b,mixUserList:V,fromType:J}=C;return{userId:y,tinyId:S,flag:b,isRobot:!0,mixUserList:V,fromType:J}}),...c];d.forEach(C=>{let{userId:y}=C,S=this.remotePublishedUserMap.get(y);S&&this.checkSubscribeBigSmallVideo(S)}),A.data.fakeMixUser&&(A.data.fakeMixUser.tinyId=A.data.fakeMixUser.srcTinyId,d.push(A.data.fakeMixUser)),F.emit(sA.RECEIVED_PUBLISHED_USER_LIST,{room:this,publishedUserList:d}),e||(this.localPublishFlag=0,this.emit("local-publish-flag-changed",0)),this.userManager.setRemotePublishedUserList(d)}closeUplink(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"you unpublished";this.uplinkConnection&&(this.localTracks.size>0&&this.uplinkConnection.doUnpublish().catch(()=>{}),this.uplinkConnection.close(A),A==="you exitRoom"&&(this.uplinkConnection.destroy(),this.uplinkConnection=null),this.uplinkConnection instanceof S1&&(this.uplinkConnection=null)),this.localTracks.forEach(e=>e.unpublish()),this.localTracks.clear()}createDownlinkConnection(A){let{userId:e,tinyId:o,flag:a,isRobot:c,fromType:d}=A,C=new(this.singlePC?_oA:wz)({userId:e,tinyId:o,room:this,signalChannel:this.signalChannel,enableSEI:this.enableSEI,flag:a,isRobot:c,fromType:d});this.userManager.addRemotePublishedUser(C),this.installDownlinkEvents(C,e),this.emit("remote-published",C)}closeDownLinkConnection(A){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"remote user unpublished",o=this.remotePublishedUserMap.get(A);o&&(o.close(e),this.emit("remote-unpublished",o))}installDownlinkEvents(A,e){A.on("error",o=>{let a=o.getCode();a!==Et.ICE_TRANSPORT_ERROR&&(a===Et.DOWNLINK_RECONNECTION_FAILED&&this.closeDownLinkConnection(e),this.emit("error",o))}),A.on("connection-state-changed",o=>{this.emit("media-connection-state-changed",Qo(mi({},o),{userId:A.userId}))})}startSyncUserListInterval(){this._syncUserListInterval===-1&&(this._syncUserListInterval=Tr.run("ric",this.syncUserList.bind(this)))}stopSyncUserListInterval(){Tr.clearTask(this._syncUserListInterval),this._syncUserListInterval=-1}syncUserList(){return this.getUserList().then(A=>{this.userManager.setUserList(A)}).catch(A=>{this._log.debug("sync user list failed: ".concat(A))})}getUserList(){var A;return(A=this.signalChannel)!=null&&A.isConnected?this.signalChannel.sendWaitForResponse({command:HiA,responseCommand:ls.USER_LIST_RES,enableLog:!1,timeout:2e3}).then(e=>{let{data:o}=e,{code:a,message:c}=o;if(a===0)return(o.data&&o.data.userList||[]).map(d=>{let{userId:C,srcTinyId:y,role:S,fromType:b}=d;return{userId:C,tinyId:y,role:S,fromType:b}});throw Xo({key:Mo.SIGNAL_RESPONSE_FAILED,data:{signalResponse:ls.USER_LIST_RES,code:a,message:c}})}):Promise.reject("not connected")}getAllConnections(){let A=[...this.remotePublishedUserMap.values()];return this.uplinkConnection&&A.push(this.uplinkConnection),A}isRelayMaybeFailed(){if(this.signalChannel&&!this.signalChannel.isOnline||!vz)return!1;if(this.singlePC)return this.singlePC.reconnectionCount>6;let A=this.getAllConnections();if(A.length===0)return!1;for(let e=0;e{if(e instanceof em&&!e.getIsReconnecting()){let o=e.getPeerConnection();o&&o.connectionState===Eo.CLOSED&&(this._log.warn("[".concat(e.getUserId(),"] pc is closed but not reconnect")),e.startReconnection())}})}fallbackToMPC(){return KA(this,null,function*(){var A;if(this._log.warn("fallback to multi pc"),sn.uploadEvent({log:"stat-fallback",userId:this.userId}),this.enableSPC=!1,(A=this.singlePC)==null||A.close(),this.singlePC=null,this.isJoined&&(yield this.reJoin()),this.uplinkConnection){let e=this.uplinkConnection;this.uplinkConnection=new S1({userId:this.userId,tinyId:this.tinyId,room:this,signalChannel:this.signalChannel,enableSEI:this.enableSEI}),e.isMainStreamPublished&&(yield this.uplinkConnection.publish({localAudioTrack:e.localMainAudioTrack,localVideoTrack:e.localMainVideoTrack,isAuxiliary:!1})),e.isAuxStreamPublished&&(yield this.uplinkConnection.publish({localAudioTrack:e.localAuxAudioTrack,localVideoTrack:e.localAuxVideoTrack,isAuxiliary:!0})),e.close()}for(let e of[...this.remotePublishedUserMap.values()]){let o=new wz({userId:e.userId,tinyId:e.tinyId,room:this,signalChannel:this.signalChannel,enableSEI:this.enableSEI,flag:e.flag,remoteAudioTrack:e.remoteAudioTrack,remoteVideoTrack:e.remoteVideoTrack,remoteAuxiliaryTrack:e.remoteAuxiliaryTrack});this.installDownlinkEvents(o,e.userId),this.remotePublishedUserMap.set(e.userId,o),e.isMainStreamSubscribed&&(yield o.subscribe(e.subscribeState,"main")),e.isAuxStreamSubscribed&&(yield o.subscribe(e.subscribeState,"auxiliary"))}})}destroy(){this.isDestroyed||(this.signalChannel&&(this._log.info("destroying SignalChannel"),this.signalChannel.close(),this.signalChannel=null),super.destroy(),this._joinReject&&(this._joinReject(new si({code:Et.INVALID_OPERATION,message:Xo({key:Mo.CLIENT_DESTROYED,data:{funName:"join"}})})),this.clearJoinTimeout(),this.reset()),this.firewallDetector.destroy(),this.removeAllListeners(),this.healthDetector.destroy(),Tr.clearTask(this._audioVolumeIntervalId))}switchRole(A){return KA(this,null,function*(){this.role!==A&&(A==="audience"&&this.uplinkConnection&&this.closeUplink("you switch role to audience"),yield this.doSwitchRole(A))})}doSwitchRole(A){let e={command:qiA,data:{role:A==="anchor"?20:21,privateMapKey:this.privateMapKey,latencyLevel:this.latencyLevel},responseCommand:ls.SWITCH_ROLE_RES,retries:1};return this._log.info("switchRole signal data: ".concat(JSON.stringify(e.data))),this.signalChannel.sendWaitForResponseWithRetry(e).then(o=>{let{code:a,message:c}=o.data;if(a!==0)throw new si({code:Et.SWITCH_ROLE_FAILED,message:Xo({key:Mo.SWITCH_ROLE_FAILED,data:{message:c,code:a}})});this.role=A}).catch(o=>{throw o instanceof si&&o.getCode()===Et.API_CALL_TIMEOUT&&(o=new si({code:Et.SWITCH_ROLE_FAILED,message:Xo({key:Mo.SWITCH_ROLE_TIMEOUT})})),this._log.error(o),o})}subscribeDataChannel(){return KA(this,null,function*(){if(this.remotePublishedUserMap.size===0)return;let A=[...this.remotePublishedUserMap.values()].filter(e=>e.fromType===l0);this._log.info("subscribeDataChannel",A.map(e=>e.userId)),yield Promise.all(A.map(e=>KA(this,null,function*(){try{yield e.subscribe(Qo(mi({},e.subscribeState),{datachannel:!0}),"main")}catch(o){this._log.error("subscribeDataChannel failed:",e.userId,o)}})))})}unsubscribeDataChannel(){return KA(this,null,function*(){if(this.remotePublishedUserMap.size===0)return;let A=[...this.remotePublishedUserMap.values()].filter(e=>e.fromType===l0);this._log.info("unsubscribeDataChannel",A.map(e=>e.userId)),yield Promise.all(A.map(e=>e.unsubscribeDataChannel()))})}_initUplinkConnection(){this.uplinkConnection=this.singlePC?new Kz({userId:this.userId,tinyId:this.tinyId,room:this}):new S1({userId:this.userId,tinyId:this.tinyId,room:this,signalChannel:this.signalChannel,enableSEI:this.enableSEI}),this.uplinkConnection.on("connection-state-changed",A=>{this.emit("media-connection-state-changed",Qo(mi({},A),{userId:this.userId}))}),this.uplinkConnection.on("error",A=>{let e=A.getCode();e!==Et.ICE_TRANSPORT_ERROR&&(e===Et.UPLINK_RECONNECTION_FAILED&&this.closeUplink(),this.emit("error",A))})}publish(A){return KA(this,null,function*(){var e;this.uplinkConnection||this._initUplinkConnection();let o="".concat(A.streamType," ").concat(A.isAudio&&A.isScreen?"screen":"").concat(A.kind);this._log.info("publish() => ".concat(o)),yield(e=this.singlePC)==null?void 0:e.waitForPeerConnectionConnected(),yield this.uplinkConnection.publish({localAudioTrack:A instanceof PM?A:null,localVideoTrack:A instanceof EQ?A:null,isAuxiliary:A.streamType==="auxiliary"})})}unpublish(A){return KA(this,null,function*(){if((this.scene!=="live"||this.role==="anchor")&&(this.isMainStreamPublished||this.isAuxStreamPublished)&&this.uplinkConnection){try{let e="".concat(A.streamType," ").concat(A.isAudio&&A.isScreen?"screen":"").concat(A.kind);this._log.info("unpublish() => ".concat(e)),yield this.uplinkConnection.unpublish({localAudioTrack:A instanceof PM?A:null,localVideoTrack:A instanceof EQ?A:null})}catch{}this.localTracks.size===0&&this.closeUplink("you unpublished")}})}addTrack(A){if(!this.uplinkConnection||!A.mediaTrack)return Promise.resolve();let e=this.uplinkConnection.addTrack(A);return A.publish(this,e),e}removeTrack(A){return this.uplinkConnection&&A.mediaTrack?(A.unpublish(),this.uplinkConnection.removeTrack(A)):Promise.resolve()}replaceTrack(A){return this.uplinkConnection&&A.mediaTrack&&G2()?this.uplinkConnection.replaceTrack(A).then(e=>{e&&F.emit(sA.LOCAL_TRACK_REPLACED,{track:A})}):Promise.resolve()}setBandWidth(A){return KA(this,null,function*(){this.uplinkConnection&&(yield this.uplinkConnection.setBandwidth(A),yield this.uplinkConnection.sendMediaSettings())})}enableSmall(A){return KA(this,null,function*(){if(!this.uplinkConnection||!this.uplinkConnection.localMainVideoTrack)return Promise.resolve();A&&this.uplinkConnection.localMainVideoTrack.small&&(yield this.setBandWidth({type:YA.VIDEO,videoType:YA.SMALL,bandwidth:this.uplinkConnection.localMainVideoTrack.small.bitrate})),yield this.uplinkConnection.enableSmall(A)})}subscribe(){for(var A=arguments.length,e=new Array(A),o=0;o!C.isSubscribed),e.length===0)return;let{userId:a}=e[0],c=this.remotePublishedUserMap.get(a);if(!c)return;let d=e.find(C=>C.mediaType===2)?"auxiliary":"main";try{let C=mi({},c.subscribeState);e.forEach(S=>{switch(S.mediaType){case 1:C.audio=!0;break;case 4:C.video=!0;break;case 8:C.smallVideo=!0;break;case 2:C.auxiliary=!0}});let y=this._changeBigSmallRecords.get(a);y&&y.options.smallVideo&&c.muteState.hasSmall&&C.video&&(C.video=!1,C.smallVideo=!0),F.emit(sA.SUBSCRIBE_START,{room:this,streamType:d,remotePublishedUser:c,subscribeState:C}),this._log.info("subscribe() => ".concat(a," ").concat(d," ").concat(e.map(S=>S.strMediaType).join(",")," [").concat(hj(C),"] prev: [").concat(hj(c.subscribeState),"]")),yield c.subscribe(C,d),this._log.info("subscribe ".concat(a," ").concat(d," done"));for(let S of e)S.mediaTrack||(yield S.waitHasMediaTrack());F.emit(sA.SUBSCRIBE_SUCCESS,{room:this,streamType:d,remotePublishedUser:c})}catch(C){let y=C instanceof si?C.getCode():Et.UNKNOWN,S=C;throw C instanceof si?y===Et.REMOTE_STREAM_NOT_EXIST&&(S=new si({code:Et.API_CALL_ABORTED,message:Xo({key:Mo.API_CALL_ABORTED,data:{message:C.message,userId:a,streamType:d}})}),this._log.warn(S)):(S=new si({code:y,message:Xo({key:Mo.SUBSCRIBE_FAILED,data:{message:C.message,userId:a,streamType:d}})}),this._log.error(S)),S}})}unsubscribe(){for(var A=arguments.length,e=new Array(A),o=0;oC.mediaType===2)?"auxiliary":"main";this._log.info("unsubscribe() => ".concat(a," ").concat(d," ").concat(e.map(C=>C.strMediaType).join(",")));try{yield c.unsubscribe({remoteTracks:e,streamType:d})}catch(C){this._log.warn("unsubscribe() => failed ".concat(C))}e.forEach(C=>{C.unsubscribe(),C.mediaType===8&&C.setMediaType(4)}),F.emit(sA.UNSUBSCRIBE_SUCCESS,{room:this,streamType:d,remotePublishedUser:c})})}setEncodedDataProcessingListener(A){throw new Error("Method not implemented.")}enableAudioVolumeEvaluation(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:2e3,e=arguments.length>1?arguments[1]:void 0;if(A<=0)return this._enableAudioVolumeEvaluation=!1,void Tr.clearTask(this._audioVolumeIntervalId);A=Math.floor(Math.max(A,100)),F.emit(sA.AUDIO_LEVEL_INTERVAL,{interval:A}),this._audioVolumeIntervalId&&Tr.clearTask(this._audioVolumeIntervalId),this._enableAudioVolumeEvaluation=!0,this._audioVolumeIntervalId=Tr.run("intervalInWorker",()=>{var o;J2.isRunning?this.stopUpdateAudioLevelFromSenderStat():this.updateAudioLevelFromSenderStat(A,e);let a=[];(o=this.remotePublishedUserMap)==null||o.forEach(c=>{if(c.muteState.hasAudio){!J2.isRunning&&c.muteState.audioAvailable&&c.remoteAudioTrack.isSubscribed?this.updateDownlinkAudioLevelFromReceiver(c):c.remoteAudioTrack.volume=0;let d=Math.floor(100*c.remoteAudioTrack.getAudioLevel());a.push({userId:c.userId,volume:d,floatVolume:c.remoteAudioTrack.getInternalAudioLevel()})}}),this.emit("audio-volume",a)},{delay:A,backgroundTask:e})}updateAudioLevelFromSenderStat(A,e){return KA(this,null,function*(){var o;if(!this.uplinkConnection||!this.uplinkConnection.localMainAudioTrack||this._updateAudioLevelTaskId!==-1)return;let a=(o=this.uplinkConnection.getPeerConnection())==null?void 0:o.getSenders()[0];if(!a)return;let c=Math.max(A,500);this._log.warn("updateAudioLevelFromSenderStat ".concat(c)),this._updateAudioLevelTaskId=Tr.run("intervalInWorker",()=>KA(this,null,function*(){if(!this.uplinkConnection||!this.uplinkConnection.localMainAudioTrack)return void this.stopUpdateAudioLevelFromSenderStat();let d=yield a.getStats();if(this._updateAudioLevelTaskId<0)return;let{localMainAudioTrack:C}=this.uplinkConnection;d.forEach(y=>{y.type==="media-source"&&y.audioLevel&&(C.volume=y.audioLevel)})}),{delay:c,backgroundTask:e})})}stopUpdateAudioLevelFromSenderStat(){var A;this._updateAudioLevelTaskId!==-1&&(this._log.warn("stopUpdateAudioLevelFromSenderStat"),Tr.clearTask(this._updateAudioLevelTaskId),this._updateAudioLevelTaskId=-1,(A=this.uplinkConnection)!=null&&A.localMainAudioTrack&&(this.uplinkConnection.localMainAudioTrack.volume=0))}updateDownlinkAudioLevelFromReceiver(A){var e;let{audioReceiver:o}=A;if(!Lk||!o)return;let a=(e=o.getSynchronizationSources()[0])==null?void 0:e.audioLevel;bn(a)?A.remoteAudioTrack.volume=Math.min(2*a,1):o.getStats().then(c=>{c.forEach(d=>{d.type==="inbound-rtp"&&bn(d.audioLevel)&&(A.remoteAudioTrack.volume=d.audioLevel)})})}getLocalAudioStats(){return KA(this,null,function*(){var A;let e={};return e[this.userId]={bytesSent:0,packetsSent:0,audioLevel:0},(A=this.uplinkConnection)!=null&&A.localMainAudioTrack&&(e[this.userId]=this.uplinkConnection.localMainAudioTrack.stat),e})}getLocalVideoStats(){return KA(this,null,function*(){var A,e;let o={};return o[this.userId]=((e=(A=this.uplinkConnection)==null?void 0:A.localMainVideoTrack)==null?void 0:e.stat)||{bytesSent:0,packetsSent:0,framesEncoded:0,framesSent:0,frameWidth:0,frameHeight:0,fpsCapture:0},o})}getTransportStats(){return KA(this,null,function*(){let A={rtt:0,downlinksRTT:{}};if(this.uplinkConnection){let e=yield this._stats.getSenderStats(this.uplinkConnection);A.rtt=e.rtt}for(let[,e]of this.remotePublishedUserMap){let o=yield this._stats.getReceiverStats(e);A.downlinksRTT[o.userId]=o.rtt}return A})}getRemoteVideoStats(A){return KA(this,null,function*(){let e={};for(let[o,a]of this.remotePublishedUserMap)A==="main"&&a.muteState.hasVideo&&(e[o]=a.remoteVideoTrack.stat),A==="auxiliary"&&a.muteState.hasAuxiliary&&(e[o]=a.remoteAuxiliaryTrack.stat);return e})}getRemoteAudioStats(){return KA(this,null,function*(){let A={};for(let[e,o]of this.remotePublishedUserMap)o.muteState.hasAudio&&(A[e]=o.remoteAudioTrack.stat);return A})}setTurnServer(A,e){this._log.info("set turn server: ".concat(JSON.stringify(A)," ").concat(e||""));let o=[];Array.isArray(A)?A.forEach(a=>o.push(Jd.getTurnServer(a))):Jd.isPlainObject(A)&&o.push(Jd.getTurnServer(A)),this._turnServers=o,e&&(this._iceTransportPolicy=e)}sendStartMixTranscode(A){return this.signalChannel.sendWaitForResponse({command:PiA,data:A,timeout:5e3,responseCommand:ls.START_MIX_TRANSCODE_RES,commandDesc:"startMixTranscode"}).catch(e=>{if(e.code!==Et.API_CALL_ABORTED)throw e})}sendStopMixTranscode(A){return this.signalChannel.sendWaitForResponse({command:xiA,data:A,timeout:5e3,responseCommand:ls.STOP_MIX_TRANSCODE_RES,commandDesc:"stopMixTranscode"}).catch(e=>{if(e.code!==Et.API_CALL_ABORTED)throw e})}sendStartPublishCDN(A){let e=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1];return this.signalChannel.sendWaitForResponse({command:e?LiA:FiA,data:A,timeout:5e3,responseCommand:e?ls.START_PUBLISH_TENCENT_CDN_RES:ls.START_PUBLISH_GIVEN_CDN_RES,commandDesc:"startPublishCDN"}).catch(o=>{if(o.code!==Et.API_CALL_ABORTED)throw o})}sendStopPublishCDN(A){let e=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1];return this.signalChannel.sendWaitForResponse({command:e?UiA:OiA,data:A,timeout:5e3,responseCommand:e?ls.STOP_PUBLISH_TENCENT_CDN_RES:ls.STOP_PUBLISH_GIVEN_CDN_RES,commandDesc:"stopPublishCDN"}).catch(o=>{if(o.code!==Et.API_CALL_ABORTED)throw o})}sendStartPushStreamToRoom(A){return this.signalChannel.sendWaitForResponse({command:YiA,data:A,timeout:5e3,responseCommand:ls.START_PUBLISH_CDN_STREAM_RES,commandDesc:"startPublishCDNStream"}).catch(e=>{if(e.code!==Et.API_CALL_ABORTED)throw e})}sendUpdatePushStreamToRoom(A){return this.signalChannel.sendWaitForResponse({command:ViA,data:A,timeout:5e3,responseCommand:ls.UPDATE_PUBLISH_CDN_STREAM_RES,commandDesc:"updatePublishCDNStream"}).catch(e=>{if(e.code!==Et.API_CALL_ABORTED)throw e})}sendStopPushStreamToRoom(A){return this.signalChannel.sendWaitForResponse({command:JiA,data:A,timeout:5e3,responseCommand:ls.STOP_PUBLISH_CDN_STREAM_RES,commandDesc:"stopPublishCDNStream"}).catch(e=>{if(e.code!==Et.API_CALL_ABORTED)throw e})}sendAbilityStatus(A){var e;(e=this.signalChannel)==null||e.sendWaitForResponse({command:WiA,data:A,timeout:5e3,responseCommand:ls.ABILITY_STATUS_REPORT_RESULT,commandDesc:"ability status report"}).catch(o=>{})}getIceServers(A){var e,o;return this._turnServers.length>0?this._turnServers:(e=this.scheduleResult.iceServers)!=null&&e.length?this.scheduleResult.iceServers:A!=null&&A.length?A:(o=this._iceServersFromJoin)!=null&&o.length?this._iceServersFromJoin:[]}getIceTransportPolicy(){return this.forceRelay?"relay":this._iceTransportPolicy||this.scheduleResult.iceTransportPolicy||"all"}getLogger(){return this._log}enableAIVoice(){throw new Error("Method not implemented.")}getSignalChannelUrl(){let A={mainUrl:"",backupUrl:""},e=Jd.getEnv();return e?(A.mainUrl="wss://".concat(Jd.getTestSignalDomain(e)),A.backupUrl=A.mainUrl):this.proxy_ws?(A.mainUrl=this.proxy_ws,A.backupUrl=A.mainUrl):this.proxy_unified?(A.mainUrl="wss://".concat(this.proxy_unified),A.backupUrl=A.mainUrl):Array.isArray(this.scheduleResult.domains)&&this.scheduleResult.domains.length>0&&(A.mainUrl="wss://".concat(this.scheduleResult.domains[0]),A.backupUrl=A.mainUrl,this.scheduleResult.domains[1]&&(A.backupUrl="wss://".concat(this.scheduleResult.domains[1]))),A}getSignalInfo(){var A;return((A=this.signalChannel)==null?void 0:A.getSignalInfo())||{clientIp:"",relayIp:""}}reset(){let A=arguments.length>0&&arguments[0]!==void 0&&arguments[0];this.stopSyncUserListInterval(),this.stopHeartbeat(),this.closeConnections(),this.clearNetworkQuality(),this.closeUplink("you exitRoom"),this.signalChannel&&(A&&this.signalChannel.keepAlive&&this.signalChannel.isConnected?this.signalChannel.stopKeepAliveIn(3600):(this.signalChannel.close(),this.setSignalChannel(null))),this.localPublishFlag=0,this.heartbeatCount=0,this._stats.reset(),this.userManager.clear(),this.userManager.removeAllListeners(),this.singlePC&&(this.singlePC.close(),this.singlePC=null),this.scheduleResult={domains:null,iceServers:null,iceTransportPolicy:null,trtcAutoConf:null},this.clearPrelinkTimeout(),this.prelinkPromise=null}prelink(A,e,o,a,c,d){return KA(this,null,function*(){var C;if(this.isJoined)throw new si({code:Et.INVALID_OPERATION,message:"already joined room"});if(!c&&!d)throw new si({code:Et.INVALID_OPERATION,message:"roomId or strRoomId is required"});if((C=this.signalChannel)!=null&&C.prelink){if(this.signalChannel.isConnecting)return void this._log.warn("prelink is connecting, please wait");if(this.signalChannel.isConnected)return void this._log.warn("prelink is already connected")}return this.userId=e,this.sdkAppId=A,this.userSig=o,this.roomId=String(c||d),this.useStringRoomId=!(!d||c),this._log.setSdkAppId(this.sdkAppId),this._log.setUserId(this.userId),this.prelinkPromise=Promise.race([this.doPrelink(A,e,o,a,c,d),new Promise((y,S)=>{this.prelinkTimeoutId=setTimeout(()=>{S(new si({code:Et.INVALID_OPERATION,message:"prelink timeout after ".concat(this.PRELINK_TIMEOUT,"ms")}))},this.PRELINK_TIMEOUT)})]).then(()=>{this.clearPrelinkTimeout()}).catch(y=>{throw this.clearPrelinkTimeout(),this.closePrelink().catch(()=>{}),y}),this.prelinkPromise})}doPrelink(A,e,o,a,c,d){return KA(this,null,function*(){var C,y,S;try{if(!this.proxy_ws&&!this.proxy_wt&&!this.scheduleResult.domains&&!Jd.getEnv()&&(yield this.schedule({sdkAppId:A,userId:e,userSig:o,roomId:c,strRoomId:d,role:20,privateMapKey:null,businessInfo:null,streamId:null,userDefineRecordId:null},a)),(C=this.scheduleResult.config)==null||!C.prelink)throw new si({code:Et.INVALID_OPERATION,message:"prelink failed: your sdkAppId is not supported, please contact us [https://trtc.io/contact] to enable it."});yield this.initialize({isPrelink:!0}),(y=this.signalChannel)==null||y.markPrelinkConnected({sdkAppId:A,userId:e,userSig:o}),(S=this.signalChannel)==null||S.stopPrelinkIn(this.PRELINK_EXPIRED_TIME/1e3),this._log.info("prelink success")}catch(b){throw this._log.error("prelink failed",b),b}})}clearPrelinkTimeout(){this.prelinkTimeoutId&&(clearTimeout(this.prelinkTimeoutId),this.prelinkTimeoutId=null)}closePrelink(){return KA(this,null,function*(){var A;if(this.isJoined)throw new si({code:Et.INVALID_OPERATION,message:"close prelink failed: has joined room"});if((A=this.signalChannel)!=null&&A.prelink){if(this.signalChannel.keepAlive)return void this._log.info("skip close prelink: use keepAlive");this.reset()}})}checkSubscribeBigSmallVideo(A){return KA(this,null,function*(){let{subscribeState:e,userId:o,muteState:{hasSmall:a,hasVideo:c}}=A;if(!a&&!c||!e.video&&!e.smallVideo)return;let d=this._changeBigSmallRecords.get(o);if(!d||d.isSubscribing||d.reSubscribeCount<=0)return;let{options:C,reSubscribeCount:y}=d;if(C.video&&e.video||C.smallVideo&&e.smallVideo&&a)return;let S={audio:A.remoteAudioTrack.isSubscribed||A.remoteAudioTrack.isSubscribing,auxiliary:A.remoteAuxiliaryTrack.isSubscribed||A.remoteAuxiliaryTrack.isSubscribing,video:C.video,smallVideo:C.smallVideo,datachannel:A.subscribeState.datachannel};try{if(!a&&S.smallVideo&&(S.video=!0,S.smallVideo=!1),S.smallVideo===e.smallVideo&&S.video===e.video)return;d.isSubscribing=!0,d.reSubscribeCount=y-1,yield A.subscribe(S,"main"),A.remoteVideoTrack.setMediaType(S.smallVideo?8:4),this._log.info("change [".concat(o,"] to ").concat(S.smallVideo?"small":"big"," video successfully. count ").concat(KS-d.reSubscribeCount,".")),d.isSubscribing=!1,d.reSubscribeCount=KS}catch(b){this._log.info("change [".concat(o,"] to ").concat(S.smallVideo?"small":"big"," video failed. count ").concat(KS-d.reSubscribeCount,". reason: ").concat(b)),d.isSubscribing=!1,d.reSubscribeCount===0&&this._changeBigSmallRecords.delete(o)}})}changeType(A,e){let o={options:{video:!A,smallVideo:A},isSubscribing:!1,reSubscribeCount:KS};this._changeBigSmallRecords.set(e.userId,o),this._log.info("set [".concat(e.userId,"] video prefer type: ").concat(A?"small":"big")),this.emit("subscribe-small-video-changed",{userId:e.userId,isSmall:A});let a=this.remotePublishedUserMap.get(e.userId);a&&this.checkSubscribeBigSmallVideo(a)}get smallStreamConfig(){return this._smallStreamConfig}_initBusinessInfo(A){this._businessInfo=A.businessInfo;let e={};if(zz(A.businessInfo)&&(e=JSON.parse(A.businessInfo)),!WM(A.pureAudioPushMode)){if(!Number.isInteger(Number(A.pureAudioPushMode)))throw new si({code:Et.INVALID_PARAMETER,message:Xo({key:Mo.INVALID_PURE_AUDIO})});this._pureAudioPushMode=A.pureAudioPushMode,e.Str_uc_params||(e.Str_uc_params={}),e.Str_uc_params.pure_audio_push_mod=this._pureAudioPushMode}if(!WM(A.userDefineRecordId)){let o=/^[A-Za-z0-9_-]{1,64}$/gi;if(A.userDefineRecordId.match(o)===null)throw new si({code:Et.INVALID_PARAMETER,message:Xo({key:Mo.INVALID_USER_DEFINE_RECORDID})});e.Str_uc_params||(e.Str_uc_params={}),e.Str_uc_params.userdefine_record_id=A.userDefineRecordId}if(!WM(A.userDefinePushArgs)){if(!(zz(A.userDefinePushArgs)&&String(A.userDefinePushArgs)&&String(A.userDefinePushArgs).length<=256))throw new si({code:Et.INVALID_PARAMETER,message:Xo({key:Mo.INVALID_USER_DEFINE_PUSH_ARGS})});e.Str_uc_params||(e.Str_uc_params={}),e.Str_uc_params.userdefine_push_args=A.userDefinePushArgs}boA(e)||(this._businessInfo=JSON.stringify(e))}sendCustomMessage(A){var e;(e=this._customMessageManager)==null||e.send(A)}enableInsertableStreams(){return KA(this,null,function*(){if(this.singlePC&&!this.singlePC.enableInsertableStreams&&qp)return this.singlePC.enableInsertableStreams=!0,yield this.singlePC.waitForPeerConnectionConnected(),yield this.singlePC.startReconnection()})}sendSignalMessage(A){var e;return this.signalChannel?(e=this.signalChannel)==null?void 0:e.sendWaitForResponseWithRetry(A):Promise.reject(new si({code:Et.INVALID_OPERATION,message:"not join"}))}get enableCodecPipeline(){return this.videoManager.encodePipeline.length>0||this.videoManager.decodePipeline.length>0||this.audioManager.encodePipeline.length>0||this.audioManager.decodePipeline.length>0}get scriptTransformWorker(){var A;return(A=this.singlePC)==null?void 0:A.scriptTransformWorker}switchRoom(A){return KA(this,null,function*(){var e;if(!this.signalChannel||!this.singlePC)return;let{roomId:o,strRoomId:a,userSig:c,privateMapKey:d}=A,C=((e=this.scheduleResult.config)==null?void 0:e.autoSubscribeCount)||A?.autoSubscribeCount||1,y=String(this.useStringRoomId?a:o),S=[];for(let gA=0;gA{this.resolveSwitchRoomSubedReq=gA,kC(5e3).then(gA)}),F.emit(sA.SWITCH_ROOM_START,{room:this}),yield this.singlePC.waitForPeerConnectionConnected();try{this.userManager.clear(),V=yield this.signalChannel.sendWaitForResponse({command:XiA,responseCommand:ls.SEND_SWITCH_ROOM_RES,data:b});let{code:gA,message:CA}=V.data;if(gA!==0){this._log.error("switch room failed. result: ".concat(gA," error: ").concat(CA));let MA=new si({code:Et.SWITCH_ROOM_FAILED,extraCode:gA,message:CA});throw F.emit(sA.SWITCH_ROOM_FAILED,{room:this,error:MA}),MA}this.userSig=c,WM(d)||(this.privateMapKey=d),F.emit(sA.SWITCH_ROOM_SUCCESS,{room:this,currentRoomId:J,targetRoomId:y})}catch(gA){throw this.singlePC.autoSubscribedSsrcGroups.clear(),this.roomId=J,this.resolveSwitchRoomSubedReq(),gA}})}isSwitchRoomSupported(){var A;let e="unable to use switchRoom API, fallback to exitRoom and enterRoom.";return((A=this.scheduleResult.config)==null?void 0:A.switchRoom)!==!0?(this._log.warn("".concat(e," Reason: this sdkAppId is not supported, please contact us [https://trtc.io/contact] to enable it.")),!1):this.scene!=="live"?(this._log.warn("".concat(e," Reason: the scene is not 'live'.")),!1):this.role!=="audience"?(this._log.warn("".concat(e," Reason: the role is not 'audience'.")),!1):!!this.singlePC||(this._log.warn("".concat(e," Reason: is not using single peerConnection.")),!1)}requestRemoteFallbackToH264(){var A;(A=this.singlePC)==null||A.requestRemoteFallbackToH264()}startUpdateNTPTime(){if(!this.signalChannel)return;let A=[];for(let e=0;e<5;e++)A.push(this.updateNTPTime());return Promise.all(A).then(e=>{var o;let a=e[0].offset,c=e[0].offset;e.forEach(y=>{a=Math.min(y.offset,a),c=Math.max(y.offset,c)});let d=Math.floor(e.reduce((y,S)=>y+S.rtt,0)/e.length),C=Math.floor(e.reduce((y,S)=>y+S.offset,0)/e.length);(c-a>30||d>50)&&setTimeout(()=>this.startUpdateNTPTime(),5e3),qB(C),(o=this.scriptTransformWorker)==null||o.postMessage({type:"ntp-offset",data:C}),this._log.debug("ntp updated offset: ".concat(C)),this.emit("ntp-time-updated")}).catch(e=>{this._log.warn("ntp updated failed: ".concat(e))})}updateNTPTime(){let A=Date.now();return this.signalChannel.sendWaitForResponse({command:$iA,responseCommand:ls.UPDATE_NETWORK_TIME_RESULT,addReceiveTime:!0,data:{clientSendTime:String(A)},enableLog:!1}).then(e=>{let o=Number(e.data.data.serverSendTime),a=Number(e.data.data.serverRecvTime),c=e.data.receiveTime||Date.now();return{rtt:c-A-(a-o),offset:(a-A+(o-c))/2}})}};return di([lc(["left",Zs.INIT],"joined"),Xh({settings:{retries:1,timeout:0},onRetrying(A){this._log.warn("join retry ".concat(A))},onRetryFailed(A){this._log.error("join failed",A)},onError(A,e){this._isUsingCachedSchedule&&!this.isDestroyed?(this._log.warn("is using cached schedule, retry join"),CQ(!0),this.reset(),e()):this.signalChannel&&this.signalChannel.isConnected&&this.signalChannel.keepAlive?(this._log.warn("is using keepAlive ws, retry join"),this.signalChannel.close(),this.reset(),e()):(this.reset(),e())}}),jr(A=>{let e=new viA;return function(o,a,c){return KA(this,null,function*(){let d=String(o.roomId||o.strRoomId);if(this.userId=o.userId,this.sdkAppId=o.sdkAppId,this.userSig=o.userSig,this._log.setSdkAppId(this.sdkAppId),this._log.setUserId(this.userId),this.scene=a,o.privateMapKey=o.privateMapKey||"",this.isJoined)throw new si({code:Et.INVALID_OPERATION,message:Xo({key:Mo.INVALID_JOIN})});if(this.checkDestroy(),e.isJoined({userId:this.userId,roomId:d,sdkAppId:this.sdkAppId,room:this}))throw new si({code:Et.INVALID_OPERATION,message:Xo({key:Mo.REPEAT_JOIN,data:this.userId})});e.add({room:this,roomId:d}),this.role=o.role===21?"audience":"anchor",this._log.info("Join() => joining room: ".concat(d," useStringRoomId: ").concat(this.useStringRoomId," scene: ").concat(this.scene," role: ").concat(this.role)),F.emit(sA.JOIN_START,{room:this,roomId:d,params:o});let C=Jd.getEnv();C||(C=KB.QCLOUD,this.proxy_ws&&(this.proxy_ws.startsWith(Lf.OLD_CLOUD_LADDER)?C=KB.OLD_CLOUD_LADDER:this.proxy_ws.startsWith(Lf.WEBRTC)&&(C=KB.WEBRTC))),sn.setConfig({env:C,sdkAppId:String(this.sdkAppId),userId:this.userId,roomId:d}),te.checkSystemRequirementsInternal(c).then(y=>{this.checkSystemResult=y,RiA.call(this)});try{!this.prelinkPromise&&!this.proxy_ws&&!this.proxy_wt&&!this.scheduleResult.domains&&!Jd.getEnv()&&(yield this.schedule(o,c));let y=yield A.call(this,o,a,c);return this.roomId=d,this._joinedTimestamp=Jd.performanceNow(),F.emit(sA.JOIN_SUCCESS,{room:this}),c===30&&!o.component&&sn.uploadEvent({log:"stat-conv-".concat(Number(Fp),"-").concat(location.hostname),userId:this.userId}),y}catch(y){throw e.delete({room:this,roomId:d}),F.emit(sA.JOIN_FAILED,{room:this,error:y}),y}})}})],Ry.prototype,"join"),di([lc("joined","left",{ignoreError:!0,success(){this.reset(!0)}}),jr(A=>function(){for(var e=arguments.length,o=new Array(e),a=0;aA.mediaType),jr(A=>function(){for(var e=arguments.length,o=new Array(e),a=0;ad.outMediaTrack&&d.state==="ready"),!o.length))return;F.emit("61",{room:this});let c=A.apply(this,o);return Promise.all(o.map(d=>d.publish(this,c)))})}),Xh({settings:{retries:Pf,timeout:A=>vp(A)},onError(A,e,o,a){let[c]=a;var d;(d=A.message)!=null&&d.includes("timeout")?(this._log.warn("publish ".concat(c.strMediaType," timeout"),A),e()):(this._log.error("publish ".concat(c.strMediaType," failed: ").concat(A)),o(A),F.emit(sA.PUBLISH_FAILED,{room:this}))}})],Ry.prototype,"publish"),di([t_({fnName:"publish"}),Qy(A=>A.mediaType),jr(A=>function(){for(var e=arguments.length,o=new Array(e),a=0;ad.unpublish()),c}),FM(function(){var A,e;this.localTracks.size===0&&kI()&&((e=(A=this.singlePC)==null?void 0:A.getPeerConnection())==null||e.getSenders().forEach(o=>o.track&&o.replaceTrack(null)))})],Ry.prototype,"unpublish"),di([e5(A=>{if(A.code!==Et.API_CALL_ABORTED)throw A}),Qy(A=>A.userId)],Ry.prototype,"replaceTrack"),di([Qy(function(){for(var A=arguments.length,e=new Array(A),o=0;ofunction(){for(var e=arguments.length,o=new Array(e),a=0;a!d.isSubscribed&&d.subscribe(c)),c}),Xh({settings:{retries:Pf,timeout:A=>vp(A)},onError(A,e,o,a){if(A.message.includes("timeout"))this._log.warn("subscribe timeout"),e();else{let c=A?.code===Et.API_CALL_ABORTED;this._log[c?"warn":"error"]("subscribe failed ".concat(a.map(d=>d.strMediaType).join(","),": ").concat(A)),o(A),F.emit(sA.SUBSCRIBE_FAILED,{room:this,remoteTracks:a})}}})],Ry.prototype,"subscribe"),di([t_({fnName:"subscribe",callback(){for(var A=arguments.length,e=new Array(A),o=0;o{let c=this.remotePublishedUserMap.get(a.userId);c&&!c.isMainStreamSubscribed&&!c.isAuxStreamSubscribed&&c.close("you unsubscribed")})}}),Qy(function(){for(var A=arguments.length,e=new Array(A),o=0;oi in t?cV(t,i,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[i]=r,_rA=(t,i)=>{for(var r in i||(i={}))F9.call(i,r)&&k3(t,r,i[r]);if(J8)for(var r of J8(i))wrA.call(i,r)&&k3(t,r,i[r]);return t},TrA=(t,i)=>function(){return i||(0,t[U9(t)[0]])((i={exports:{}}).exports,i),i.exports},NrA=(t,i,r,l)=>{if(i&&typeof i=="object"||typeof i=="function")for(let I of U9(i))F9.call(t,I)||I===r||cV(t,I,{get:()=>i[I],enumerable:!(l=L9(i,I))||l.enumerable});return t},GrA=(t,i,r)=>(r=t!=null?vrA(RrA(t)):{},NrA(cV(r,"default",{value:t,enumerable:!0}),t)),L_=(t,i,r,l)=>{for(var I,h=L9(i,r),f=t.length-1;f>=0;f--)(I=t[f])&&(h=I(i,r,h)||h);return h&&cV(i,r,h),h},pn=(t,i,r)=>k3(t,typeof i!="symbol"?i+"":i,r),brA=TrA({"../node_modules/.pnpm/eventemitter3@4.0.7/node_modules/eventemitter3/index.js"(t,i){var r=Object.prototype.hasOwnProperty,l="~";function I(){}function h(k,U,j){this.fn=k,this.context=U,this.once=j||!1}function f(k,U,j,lA,rA){if(typeof j!="function")throw new TypeError("The listener must be a function");var mA=new h(j,lA||k,rA),IA=l?l+U:U;return k._events[IA]?k._events[IA].fn?k._events[IA]=[k._events[IA],mA]:k._events[IA].push(mA):(k._events[IA]=mA,k._eventsCount++),k}function w(k,U){--k._eventsCount===0?k._events=new I:delete k._events[U]}function _(){this._events=new I,this._eventsCount=0}Object.create&&(I.prototype=Object.create(null),new I().__proto__||(l=!1)),_.prototype.eventNames=function(){var k,U,j=[];if(this._eventsCount===0)return j;for(U in k=this._events)r.call(k,U)&&j.push(l?U.slice(1):U);return Object.getOwnPropertySymbols?j.concat(Object.getOwnPropertySymbols(k)):j},_.prototype.listeners=function(k){var U=l?l+k:k,j=this._events[U];if(!j)return[];if(j.fn)return[j.fn];for(var lA=0,rA=j.length,mA=new Array(rA);lA{if(!navigator.userAgent.includes("Firefox"))return t;const i=t.split(`\r +`),r=[],l=[];i.forEach(f=>{const w=f.toLowerCase();w.includes("a=rtpmap")&&w.includes("h264")&&r.push(f)}),r.length>1&&l.push(...r.slice(1));const I=l.map(f=>{const w=/a=rtpmap:(\d+)\s/.exec(f);return w&&w.length>1?w[1]:null}).filter(f=>f!==null),h=[];return i.forEach(f=>{let w=f;if(f.includes("a=setup")&&(w="a=setup:passive"),(f.includes("m=audio")||f.includes("m=video"))&&(w=f.split(" ").filter((_,k)=>k<3||!I.includes(_)).join(" ")),f.includes("a=fmtp")||f.includes("a=rtcp-fb")||f.includes("a=rtpmap")){const _=/a=(?:fmtp|rtcp-fb|rtpmap):(\d+)\s/.exec(f);if(_&&_.length>1&&I.includes(_[1]))return}h.push(w)}),h.join(`\r +`)},H8=t=>{const i=t.split(`\r +`),r=[];i.forEach(f=>{const w=f.toLowerCase();w.includes("a=rtpmap")&&w.includes("h264")&&r.push(f)});const l=r.map(f=>{const w=/a=rtpmap:(\d+)\s/.exec(f);return w&&w.length>1?w[1]:null}).filter(f=>f!==null),I=[];i.forEach(f=>{let w=f;if(f.includes("a=fmtp:111")&&(w=`${f};stereo=1`),f.includes("a=fmtp")){const _=/a=fmtp:(\d+)\s/.exec(f);_&&_.length>1&&l.includes(_[1])&&(w=`${f};sps-pps-idr-in-keyframe=1`)}I.push(w)});const h=I.join(`\r +`);return LrA(h)},UrA="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict",kj=(t=21)=>{let i="",r=crypto.getRandomValues(new Uint8Array(t|=0));for(;t--;)i+=UrA[63&r[t]];return i},R_=t=>typeof t=="function",FrA=0,OrA=1,q8=2;function PrA({retryFunction:t,settings:i,onError:r,onRetrying:l,onRetryFailed:I,onRetrySuccess:h,context:f}){return function(...w){const{retries:_=5,timeout:k=1e3}=i;let U=0,j=-1,lA=FrA;const rA=async(mA,IA)=>{const cA=f||this;try{const TA=await t.apply(cA,w);U>0&&h&&h.call(this,U),U=0,mA(TA)}catch(TA){const WA=()=>{clearTimeout(j),U=0,lA=q8,IA(TA)},ge=()=>{lA!==q8&&U<(R_(_)?_():_)?(U++,lA=OrA,R_(l)&&l.call(this,U,WA),j=window.setTimeout(()=>{j=-1,rA(mA,IA)},R_(k)?k(U):k)):(WA(),R_(I)&&I.call(this,TA))};R_(r)?r.call(this,{error:TA,retry:ge,reject:IA,retryFuncArgs:w,retriedCount:U}):ge()}};return new Promise(rA)}}var xrA=PrA,QQ=new WeakMap;function YrA({settings:t={retries:5,timeout:2e3},onError:i,onRetrying:r,onRetryFailed:l}){return function(I,h,f){const w=xrA({retryFunction:f.value,settings:t,onError({error:_,retry:k,reject:U,retryFuncArgs:j}){var lA;i?i.call(this,_,()=>{var rA;(rA=QQ.get(I))!=null&&rA.has(h)?k():U(_)},U,j):(lA=QQ.get(I))!=null&&lA.has(h)?k():U(_)},onRetrying(_,k){var U;R_(r)&&r.call(this,_,k),(U=QQ.get(I))!=null&&U.has(h)&&(QQ.get(I).get(h).stopRetry=k)},onRetryFailed:l});return f.value=function(..._){const k=QQ.get(I);return k?k.set(h,{args:_}):QQ.set(I,new Map([[h,{args:_}]])),w.apply(this,_).finally(()=>{var U;return(U=QQ.get(I))==null?void 0:U.delete(h)})},f}}function VrA({fnName:t,callback:i,validateArgs:r=!0}){return function(l,I,h){const f=h.value;return h.value=function(...w){var _,k;if((_=QQ.get(l))!=null&&_.has(t)){const{stopRetry:U,args:j}=QQ.get(l).get(t);let lA=!0;if(r){for(const rA of j)if(!w.find(mA=>mA===rA)){lA=!1;break}}lA&&(i&&i.apply(this,w),U&&U(),(k=QQ.get(l))==null||k.delete(t))}return f.apply(this,w)},h}}var JrA=class{constructor(t,i){this.core=i,pn(this,"peerConnection"),pn(this,"audioTransceiver",null),pn(this,"videoTransceiver",null),pn(this,"timerId",null),pn(this,"callback",null),pn(this,"previousRawStats",null),pn(this,"_prevReportTime",0),pn(this,"_prevDecoderImplementation",""),pn(this,"_decodeMap",new Map),this.peerConnection=t,this.findTransceivers()}get statInterval(){return this._prevReportTime===0?2:(Date.now()-this._prevReportTime)/1e3}findTransceivers(){const t=this.peerConnection.getTransceivers();for(const i of t)if(i.receiver&&i.receiver.track){const{track:r}=i.receiver;r.kind==="audio"?this.audioTransceiver=i:r.kind==="video"&&(this.videoTransceiver=i)}}start(t,i=2e3){this.stop(),this.callback=t,this.collectStats(),this.timerId=window.setInterval(()=>{this.collectStats()},i)}stop(){this.timerId!==null&&(clearInterval(this.timerId),this.timerId=null),this.callback=null,this.previousRawStats=null,this._prevReportTime=0}async collectStats(){if(this.callback)try{const t=await this.peerConnection.getStats(),i=new Set(["inbound-rtp","track","candidate-pair","media-source","codec"]),r=[];t.forEach(w=>i.has(w.type)&&r.push(w));const l=Date.now(),I=this.parseAudioStats(r),h=this.parseVideoStats(r),f=this.parseNetworkStats(r);this._prevReportTime=l,this.callback({audio:I,video:h,network:f})}catch(t){this.core.log.error("Failed to collect WebRTC stats:",t)}}getDifferenceValue(t,i){if(this.core.utils.isUndefined(t))return i;const r=(i||0)-t;return r<0?0:r}parseAudioStats(t){var i,r,l,I;const h={bitrate:0,volume:0,packetLossRate:0,jitterBufferDelay:0,bytesReceived:0,packetsReceived:0,packetsLost:0};for(const f of t){if(f.type==="inbound-rtp"&&(f.mediaType==="audio"||f.kind==="audio")){if(h.bytesReceived=f.bytesReceived||0,h.packetsReceived=f.packetsReceived||0,h.packetsLost=f.packetsLost||0,this.previousRawStats&&this.previousRawStats.audio){const k=this.getDifferenceValue(this.previousRawStats.audio.bytesReceived,h.bytesReceived);h.bitrate=Math.round(8*k/this.statInterval/1e3)}const w=this.getDifferenceValue((i=this.previousRawStats)==null?void 0:i.audio.packetsLost,h.packetsLost),_=this.getDifferenceValue((r=this.previousRawStats)==null?void 0:r.audio.packetsReceived,h.packetsReceived)+w;if(_>0&&(h.packetLossRate=Math.round(w/_*100)),this.core.utils.isUndefined(f.audioLevel)||(h.volume=f.audioLevel||0),f.jitterBufferDelay&&f.jitterBufferEmittedCount){let{jitterBufferEmittedCount:k}=f,{jitterBufferDelay:U}=f;(l=this.previousRawStats)!=null&&l.audio&&(k=this.getDifferenceValue(this.previousRawStats.audio.jitterBufferEmittedCount,f.jitterBufferEmittedCount),U=this.getDifferenceValue(this.previousRawStats.audio.jitterBufferDelay,f.jitterBufferDelay)),k>0&&(h.jitterBufferDelay=Math.floor(U/k*1e3)),this.previousRawStats||this.initPreviousRawStats(),this.previousRawStats.audio.jitterBufferDelay=f.jitterBufferDelay,this.previousRawStats.audio.jitterBufferEmittedCount=f.jitterBufferEmittedCount}this.previousRawStats||this.initPreviousRawStats(),this.previousRawStats.audio.bytesReceived=h.bytesReceived,this.previousRawStats.audio.packetsReceived=h.packetsReceived,this.previousRawStats.audio.packetsLost=h.packetsLost}!this.core.utils.isUndefined(f.audioLevel)&&((I=this.audioTransceiver)!=null&&I.receiver.track)&&f.trackIdentifier===this.audioTransceiver.receiver.track.id&&(h.volume=f.audioLevel||0)}return h}parseVideoStats(t){var i,r,l,I,h;const f={bitrate:0,frameRate:0,width:0,height:0,packetLossRate:0,jitterBufferDelay:0,bytesReceived:0,packetsReceived:0,packetsLost:0,framesDecoded:0};for(const w of t){if(w.type==="codec"&&this._decodeMap.set(w.id,w),w.type==="inbound-rtp"&&(w.mediaType==="video"||w.kind==="video")){if(f.bytesReceived=w.bytesReceived||0,f.packetsReceived=w.packetsReceived||0,f.packetsLost=w.packetsLost||0,f.framesDecoded=w.framesDecoded||0,this.core.utils.isUndefined(w.framesPerSecond)||(f.frameRate=Math.round(w.framesPerSecond)),w.decoderImplementation&&this._prevDecoderImplementation!==w.decoderImplementation){const U=this._decodeMap.get(w.codecId),j=((i=U?.mimeType)==null?void 0:i.split("/")[1])||"unknown",lA=w.powerEfficientDecoder;this.core.log.info(`decoderImplementation change to ${w.decoderImplementation}(${j}) HWDecoder: ${lA}`),this._prevDecoderImplementation=w.decoderImplementation}if(this.previousRawStats&&this.previousRawStats.video){const U=this.getDifferenceValue(this.previousRawStats.video.bytesReceived,f.bytesReceived);f.bitrate=Math.round(8*U/this.statInterval/1e3)}const _=this.getDifferenceValue((r=this.previousRawStats)==null?void 0:r.video.packetsLost,f.packetsLost),k=this.getDifferenceValue((l=this.previousRawStats)==null?void 0:l.video.packetsReceived,f.packetsReceived)+_;if(k>0&&(f.packetLossRate=Math.round(_/k*100)),w.jitterBufferDelay&&w.jitterBufferEmittedCount){let{jitterBufferEmittedCount:U}=w,{jitterBufferDelay:j}=w;(I=this.previousRawStats)!=null&&I.video&&(U=this.getDifferenceValue(this.previousRawStats.video.jitterBufferEmittedCount,w.jitterBufferEmittedCount),j=this.getDifferenceValue(this.previousRawStats.video.jitterBufferDelay,w.jitterBufferDelay)),U>0&&(f.jitterBufferDelay=Math.floor(j/U*1e3)),this.previousRawStats||this.initPreviousRawStats(),this.previousRawStats.video.jitterBufferDelay=w.jitterBufferDelay,this.previousRawStats.video.jitterBufferEmittedCount=w.jitterBufferEmittedCount}this.previousRawStats||this.initPreviousRawStats(),this.previousRawStats.video.bytesReceived=f.bytesReceived,this.previousRawStats.video.packetsReceived=f.packetsReceived,this.previousRawStats.video.packetsLost=f.packetsLost}!this.core.utils.isUndefined(w.frameWidth)&&((h=this.videoTransceiver)!=null&&h.receiver.track)&&w.trackIdentifier===this.videoTransceiver.receiver.track.id&&(f.width=w.frameWidth,f.height=w.frameHeight)}return f}parseNetworkStats(t){const i={rtt:0};for(const r of t)if(r.type==="candidate-pair"&&(r.selected||r.state==="succeeded")&&this.core.utils.isNumber(r.currentRoundTripTime)){i.rtt=Math.floor(1e3*r.currentRoundTripTime);break}return i}initPreviousRawStats(){this.previousRawStats={timestamp:Date.now(),audio:{bytesReceived:0,packetsReceived:0,packetsLost:0},video:{bytesReceived:0,packetsReceived:0,packetsLost:0}}}},HrA=GrA(brA()),K8=Symbol("instance"),b1=Symbol("cacheResult"),Lj=class{constructor(i,r,l){this.oldState=i,this.newState=r,this.action=l,this.aborted=!1}abort(i){this.aborted=!0,XL.call(i,this.oldState,new Error(`action '${this.action}' aborted`))}toString(){return`${this.action}ing`}},Uj=class extends Error{constructor(i,r,l){super(r),this.state=i,this.message=r,this.cause=l}};function qrA(t){return typeof t=="object"&&t&&"then"in t}var ZL=new Map;function k1(t,i,r={}){return(l,I,h)=>{const f=r.action||I;if(!r.context){const _=ZL.get(l)||[];ZL.has(l)||ZL.set(l,_),_.push({from:t,to:i,action:f})}const w=h.value;h.value=function(..._){let k=this;if(r.context&&(k=ZC.get(typeof r.context=="function"?r.context.call(this,..._):r.context)),k.state===i)return r.sync?k[b1]:Promise.resolve(k[b1]);k.state instanceof Lj&&k.state.action==r.abortAction&&k.state.abort(k);let U=null;Array.isArray(t)?t.length==0?k.state instanceof Lj&&k.state.abort(k):typeof k.state=="string"&&t.includes(k.state)||(U=new Uj(k._state,`${k.name} ${f} to ${i} failed: current state ${k._state} not from ${t.join("|")}`)):t!==k.state&&(U=new Uj(k._state,`${k.name} ${f} to ${i} failed: current state ${k._state} not from ${t}`));const j=cA=>{if(r.fail&&r.fail.call(this,cA),r.sync){if(r.ignoreError)return cA;throw cA}return r.ignoreError?Promise.resolve(cA):Promise.reject(cA)};if(U)return j(U);const lA=k.state,rA=new Lj(lA,i,f);XL.call(k,rA);const mA=cA=>{var TA;return k[b1]=cA,rA.aborted||(XL.call(k,i),(TA=r.success)===null||TA===void 0||TA.call(this,k[b1])),cA},IA=cA=>(XL.call(k,lA,cA),j(cA));try{const cA=w.apply(this,_);return qrA(cA)?cA.then(mA).catch(IA):r.sync?mA(cA):Promise.resolve(mA(cA))}catch(cA){return IA(new Uj(k._state,`${k.name} ${f} from ${t} to ${i} failed: ${cA}`,cA instanceof Error?cA:new Error(String(cA))))}}}}var KrA=typeof window<"u"&&window.__AFSM__?(r,l)=>{window.dispatchEvent(new CustomEvent(r,{detail:l}))}:typeof importScripts<"u"?(r,l)=>{postMessage({type:r,payload:l})}:()=>{};function XL(t,i){const r=this._state;this._state=t;const l=t.toString();t&&this.emit(l,r),this.emit(ZC.STATECHANGED,t,r,i),this.updateDevTools({value:t,old:r,err:i instanceof Error?i.message:String(i)})}var ZC=class KC extends HrA.default{constructor(i,r,l){super(),this.name=i,this.groupName=r,this._state=KC.INIT,i||(i=Date.now().toString(36)),l?Object.setPrototypeOf(this,l):l=Object.getPrototypeOf(this),r||(this.groupName=this.constructor.name);const I=l[K8];I?this.name=I.name+"-"+I.count++:l[K8]={name:this.name,count:0},this.updateDevTools({diagram:this.stateDiagram})}get stateDiagram(){const i=Object.getPrototypeOf(this),r=ZL.get(i)||[];let l=new Set,I=[],h=[];const f=new Set,w=Object.getPrototypeOf(i);ZL.has(w)&&(w.stateDiagram.forEach(k=>l.add(k)),w.allStates.forEach(k=>f.add(k))),r.forEach(({from:k,to:U,action:j})=>{typeof k=="string"?I.push({from:k,to:U,action:j}):k.length?k.forEach(lA=>{I.push({from:lA,to:U,action:j})}):h.push({to:U,action:j})}),I.forEach(({from:k,to:U,action:j})=>{f.add(k),f.add(U),f.add(j+"ing"),l.add(`${k} --> ${j}ing : ${j}`),l.add(`${j}ing --> ${U} : ${j} 🟢`),l.add(`${j}ing --> ${k} : ${j} 🔴`)}),h.forEach(({to:k,action:U})=>{l.add(`${U}ing --> ${k} : ${U} 🟢`),f.forEach(j=>{j!==k&&l.add(`${j} --> ${U}ing : ${U}`)})});const _=[...l];return Object.defineProperties(i,{stateDiagram:{value:_},allStates:{value:f}}),_}static get(i){let r;return typeof i=="string"?(r=KC.instances.get(i),r||KC.instances.set(i,r=new KC(i,void 0,Object.create(KC.prototype)))):(r=KC.instances2.get(i),r||KC.instances2.set(i,r=new KC(i.constructor.name,void 0,Object.create(KC.prototype)))),r}static getState(i){var r;return(r=KC.get(i))===null||r===void 0?void 0:r.state}updateDevTools(i={}){KrA(KC.UPDATEAFSM,Object.assign({name:this.name,group:this.groupName},i))}get state(){return this._state}set state(i){XL.call(this,i)}};ZC.STATECHANGED="stateChanged",ZC.UPDATEAFSM="updateAFSM",ZC.INIT="[*]",ZC.ON="on",ZC.OFF="off",ZC.instances=new Map,ZC.instances2=new WeakMap;var NL=class extends ZC{constructor(i,r){super(),this.core=i,pn(this,"audioPlayer"),pn(this,"videoPlayer"),pn(this,"callback"),pn(this,"avPlayerStateSyncManager"),pn(this,"_log"),pn(this,"_videoPlayerLog"),pn(this,"_audioPlayerLog"),pn(this,"lastPausedReason"),pn(this,"muted",!1),this._log=r,this._videoPlayerLog=this._log.createChild({id:"vp"}),this._audioPlayerLog=this._log.createChild({id:"ap"}),this.videoPlayer=new i.VideoPlayer({id:"vp",log:this._videoPlayerLog,track:null,muted:!1,container:null,enableLogTrackState:!0}),this.audioPlayer=new i.RemoteAudioPlayer({id:"ap",log:this._audioPlayerLog,track:null,muted:!1,container:null,enableVolumeControlInIOS:!0,enableLogTrackState:!0}),this.audioPlayer.on(i.PlayerEvent.AUTOPLAY_FAILED,l=>this.handleAutoPlayFailed(this.audioPlayer,l)),this.videoPlayer.on(i.PlayerEvent.LOAD_START,()=>this.handleLoadStart("video")),this.audioPlayer.on(i.PlayerEvent.LOAD_START,()=>this.handleLoadStart("audio")),this.videoPlayer.on(i.PlayerEvent.PLAYER_STATE_CHANGED,this.handlePlayerStateChanged,this),this.audioPlayer.on(i.PlayerEvent.PLAYER_STATE_CHANGED,this.handlePlayerStateChanged,this),this.videoPlayer.on(i.PlayerEvent.ENTER_PICTURE_IN_PICTURE,this.handleEnterPictureInPicture,this),this.videoPlayer.on(i.PlayerEvent.LEAVE_PICTURE_IN_PICTURE,this.handleLeavePictureInPicture,this),this.videoPlayer.on(i.PlayerEvent.ENTER_FULL_SCREEN,this.handleEnterFullScreen,this),this.videoPlayer.on(i.PlayerEvent.LEAVE_FULL_SCREEN,this.handleLeaveFullScreen,this),this.avPlayerStateSyncManager=new i.AVPlayerStateSyncManager({log:this._log,audioPlayer:this.audioPlayer,videoPlayer:this.videoPlayer})}get isPlaying(){return this.videoPlayer.isPlaying&&this.audioPlayer.isPlaying}get isPaused(){return this.videoPlayer.isPaused&&this.audioPlayer.isPaused}get isStopped(){return this.videoPlayer.isStopped&&this.audioPlayer.isStopped}setCallback(i){this.callback=i}updateLogConfig(i){this._audioPlayerLog.setSdkAppId(i.sdkAppId),this._audioPlayerLog.setUserId(i.userId),this._videoPlayerLog.setSdkAppId(i.sdkAppId),this._videoPlayerLog.setUserId(i.userId)}handleLoadStart(i){this.onLoadStart()}handlePlayerStateChanged(i){i.state==="PLAYING"&&this.isPlaying&&this.onPlaying(),i.state==="PAUSED"&&this.isPaused&&this.onPaused(i.reason),i.state==="STOPPED"&&this.isStopped&&this.onStopped()}async handleEnterPictureInPicture(){var i,r;await this.videoPlayer.enterPIPPromise,(r=(i=this.callback)==null?void 0:i.onPictureInPictureStateChanged)==null||r.call(i,{isPictureInPicture:!0,pictureInPictureWindow:this.videoPlayer.pipWindow})}handleLeavePictureInPicture(){var i,r;(r=(i=this.callback)==null?void 0:i.onPictureInPictureStateChanged)==null||r.call(i,{isPictureInPicture:!1})}handleEnterFullScreen(){var i,r;(r=(i=this.callback)==null?void 0:i.onFullScreenStateChanged)==null||r.call(i,{isFullScreen:!0})}handleLeaveFullScreen(){var i,r;(r=(i=this.callback)==null?void 0:i.onFullScreenStateChanged)==null||r.call(i,{isFullScreen:!1})}onLoadStart(){}onPlaying(){}onPaused(i){this.lastPausedReason=i}onStopped(){}setVideoContainer(i){if(this.core.utils.isString(i)){const r=document.getElementById(i);r&&this.videoPlayer.setContainer(r)}else this.videoPlayer.setContainer(i)}setVolume(i){this.core.utils.isUndefined(i)||this.audioPlayer.setVolume(i/100)}setMuted(i){this.core.utils.isUndefined(i)||(this.muted=i,this.audioPlayer.setMuted(i))}setFillMode(i){i&&this.videoPlayer.setObjectFit(i)}setAudioTrack(i){this.audioPlayer.setTrack(i)}setVideoTrack(i){this.videoPlayer.setTrack(i)}async play(){const i=this.videoPlayer.play().catch(l=>{this.handleAutoPlayFailed(this.videoPlayer,l,"video")}),r=this.audioPlayer.play().catch(l=>{this.handleAutoPlayFailed(this.audioPlayer,l)});await Promise.all([i,r])}handleAutoPlayFailed(i,r,l="audio"){var I,h;this._log.warn("handleAutoPlayFailed",r);const f=()=>{this.audioPlayer.resume().then(()=>{document.removeEventListener("click",f,!0)})};document.addEventListener("click",f,!0),(h=(I=this.callback)==null?void 0:I.onAutoPlayFailed)==null||h.call(I,{type:l,resume:()=>i.resume()})}pause(){this.videoPlayer.pause(!0),this.audioPlayer.setMuted(!0),this.audioPlayer.pause()}resume(){this.videoPlayer.resume(!0),this.audioPlayer.setMuted(this.muted),this.audioPlayer.resume()}async enterFullscreen(){await this.videoPlayer.enterFullscreen()}async exitFullscreen(){await this.videoPlayer.exitFullscreen()}async enterPictureInPicture(){await this.videoPlayer.enterPictureInPicture()}async exitPictureInPicture(){await this.videoPlayer.exitPictureInPicture()}stop(){this.videoPlayer&&this.videoPlayer.stop(),this.audioPlayer&&(this.audioPlayer.stop(),this.audioPlayer.setMuted(!1))}};L_([k1([ZC.INIT,"PAUSED"],"LOADSTART",{ignoreError:!0,sync:!0,success(){var t,i;(i=(t=this.callback)==null?void 0:t.onLoadStart)==null||i.call(t)},fail(t){this._log.warn("onLoadStart",t)}})],NL.prototype,"onLoadStart"),L_([k1(["LOADSTART","PAUSED"],"PLAYING",{ignoreError:!0,sync:!0,success(){var t,i;(i=(t=this.callback)==null?void 0:t.onPlaying)==null||i.call(t)},fail(t){this._log.warn("onPlaying",t)}})],NL.prototype,"onPlaying"),L_([k1("PLAYING","PAUSED",{ignoreError:!0,sync:!0,success(){var t,i;(i=(t=this.callback)==null?void 0:t.onPaused)==null||i.call(t,{reason:this.lastPausedReason})},fail(t){this._log.warn("onPaused",t)}})],NL.prototype,"onPaused"),L_([k1([],ZC.INIT,{ignoreError:!0,sync:!0,success(){var t,i;(i=(t=this.callback)==null?void 0:t.onStopped)==null||i.call(t)},fail(t){this._log.warn("onStopped",t)}})],NL.prototype,"onStopped");var j8=NL,jrA=["overseas-webrtc.tlivewebrtc.com","oswebrtc-lint.tliveplay.com"],oY=class O9{constructor(i){this.core=i,pn(this,"_sdkAppId"),pn(this,"_userId"),pn(this,"connectedRoomIdSet",new Set),pn(this,"updateSeq",0),pn(this,"_log"),pn(this,"player"),pn(this,"peerConnection"),pn(this,"svrSig"),pn(this,"streamURL"),pn(this,"signalURL"),pn(this,"insertableStreamsAbortMap",new Map),pn(this,"scriptTransformWorker"),pn(this,"connectionState","disconnected"),pn(this,"isStarted",!1),pn(this,"isStopped",!0),pn(this,"isReconnecting",!1),pn(this,"callback"),pn(this,"isFireWallErrorEmitted",!1),pn(this,"stat"),pn(this,"isH264DecodeSupported"),pn(this,"connectionTimeoutId"),pn(this,"streamHealthCheckTimeoutId"),pn(this,"streamHealthCheckReject"),i.loggerManager.startUpload(),this._log=this.core.log.createChild({id:`${this.getAlias()}`}),this.player=new j8(i,this._log),i.innerEmitter.on(i.INNER_EVENT.SEI_MESSAGE,this.onSEIMessage,this)}getName(){return O9.Name}getAlias(){return"LEB"}getGroup(){return""}getValidateRule(i){switch(i){case"start":return krA;case"update":case"stop":return{}}}get enableSEI(){return this.core.room.enableSEI&&(this.core.rtcDectection.IS_INSERTABLE_STREAM_SUPPORTED||this.core.rtcDectection.IS_SCRIPT_TRANSFORM_SUPPORTED)}wrapCallback(i){if(!i)return;const r={},l=["onStats","onSEIMessage"];for(const I of Object.keys(i)){const h=i[I];typeof h=="function"&&(l.includes(I)?r[I]=h:r[I]=(...f)=>(this._log.debug(`callback ${I} called`,f.length>0?f[0]:""),h(...f)))}return r}async start(i){var r;this.isStopped=!1;const{view:l,url:I,volume:h,muted:f,fillMode:w,loggerConfig:_,callback:k}=i;this.callback=this.wrapCallback(k),this.player.setCallback(this.callback);const{errorModule:{RtcError:U,ErrorCode:j,ErrorCodeDictionary:lA},loggerManager:rA,rtcDectection:mA}=this.core;if(this._sdkAppId=_.sdkAppId,this._userId=_.userId,this._log.setSdkAppId(_.sdkAppId),this._log.setUserId(_.userId),this.player.updateLogConfig(_),rA.addJoinedUser(_),!mA.isWebRTCSupported()||!mA.isAddTransceiverSupported())throw new U({code:j.ENV_NOT_SUPPORTED,extraCode:lA.NOT_SUPPORTED_WEBRTC,message:"webrtc not supported"});if(!(await mA.decodeSupportStatus()).isH264DecodeSupported||this.isH264DecodeSupported===!1)throw this.isH264DecodeSupported=!1,new U({code:j.ENV_NOT_SUPPORTED,extraCode:lA.NOT_SUPPORTED_H264_DECODE,message:"h264 not supported"});!mA.IS_SEI_SUPPORTED&&k?.onSEIMessage&&((r=k.onError)==null||r.call(k,new U({code:j.ENV_NOT_SUPPORTED,extraCode:lA.NOT_SUPPORTED_SEI,message:"sei not supported"}))),this.player.setVideoContainer(l),this.player.setMuted(f),this.player.setFillMode(w);try{await this.connect(I),this.stat=new JrA(this.peerConnection,this.core),this.stat.start(TA=>{var WA,ge;return(ge=(WA=this.callback)==null?void 0:WA.onStats)==null?void 0:ge.call(WA,TA)});const IA=this.player.play();this.player.setVolume(h);const cA=this.createStreamHealthCheckPromise();await Promise.race([IA,cA]),this.clearStreamHealthCheck(),this.isStarted=!0}catch(IA){throw this.stop(),IA}}async update(i){const{view:r,url:l,volume:I,muted:h,fillMode:f,action:w,fullScreen:_,pictureInPicture:k}=i;l&&l!==this.streamURL&&await this.switchStream(l),this.player.setMuted(h),this.player.setVolume(I),this.player.setFillMode(f),r&&this.player.videoPlayer.setContainer(this.core.utils.isString(r)?document.getElementById(r):r),w==="pause"?this.player.pause():w==="resume"&&this.player.resume(),this.core.utils.isBoolean(_)&&(_?await this.player.enterFullscreen():await this.player.exitFullscreen()),this.core.utils.isBoolean(k)&&(k?await this.player.enterPictureInPicture():await this.player.exitPictureInPicture())}async switchStream(i){this._log.info("switchStream",i);const r=this.peerConnection,l=this.streamURL,I=this.signalURL,h=this.svrSig,f=new Map(this.insertableStreamsAbortMap),w=this.player;delete this.peerConnection,delete this.streamURL,delete this.signalURL,delete this.svrSig,this.insertableStreamsAbortMap.clear();const _=new j8(this.core,this._log);_.setVideoContainer(w.videoPlayer.container),_.setFillMode(w.videoPlayer.objectFit),_.setMuted(w.muted),_.setCallback(this.callback);const k=U=>{const{track:j}=U;this.createEncodedStreams(U.receiver),this.initReceiverTransform(U.receiver,j.kind==="audio"),j.kind==="audio"?_.setAudioTrack(j):_.setVideoTrack(j)};try{await this.connectForSwitch(i,k),this._log.info("switchStream: new connection established"),await this.waitForNewPlayerFirstFrame(_),this._log.info("switchStream: new stream first frame received"),w.audioPlayer.setMuted(!0),w.stop(),this.player=_,r&&(clearTimeout(this.connectionTimeoutId),r.close(),r.getReceivers().forEach(U=>f.delete(U)),l&&h&&I&&this.fetchStopStreamWithParams(l,I,h).catch(U=>{this._log.warn("switchStream: stop old stream failed",U)})),this._log.info("switchStream: switch completed successfully")}catch(U){this._log.error("switchStream failed",U),_.stop();const j=this.peerConnection;throw j&&(j.close(),j.getReceivers().forEach(lA=>this.insertableStreamsAbortMap.delete(lA))),this.peerConnection=r,this.streamURL=l,this.signalURL=I,this.svrSig=h,this.insertableStreamsAbortMap=f,this.player=w,w.audioPlayer.setMuted(w.muted),U}}waitForNewPlayerFirstFrame(i){return new Promise((r,l)=>{let I=0,h=!1;const f=i.videoPlayer.getElement();if(!f)return void l(new Error("VideoPlayer has no video element"));const w=()=>{h=!0,clearInterval(U),f.removeEventListener("loadeddata",_),f.removeEventListener("playing",k)},_=()=>{h||(this._log.info("waitForNewPlayerFirstFrame: loadeddata event fired"),w(),r())},k=()=>{h||(this._log.info("waitForNewPlayerFirstFrame: playing event fired"),w(),r())};f.addEventListener("loadeddata",_,{once:!0}),f.addEventListener("playing",k,{once:!0}),i.play().catch(j=>{this._log.warn("waitForNewPlayerFirstFrame: play failed",j)});const U=setInterval(()=>{if(!h){if(I+=100,f.videoWidth>0&&f.videoHeight>0)return this._log.info(`waitForNewPlayerFirstFrame: video has valid dimensions ${f.videoWidth}x${f.videoHeight}`),w(),void r();I>=1e4&&(w(),l(new Error("waitForNewPlayerFirstFrame timeout")))}},100)})}connectForSwitch(i,r){return new Promise((l,I)=>{try{this.initScriptTransformWorker();const h={encodedInsertableStreams:this.enableSEI,iceServers:[],sdpSemantics:"unified-plan",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",tcpCandidatePolicy:"disable",IceTransportsType:"nohost"},f=new RTCPeerConnection(h);this.peerConnection=f,f.onconnectionstatechange=()=>{this.connectionState=f.connectionState,this._log.info("connectForSwitch connectionState",f.connectionState),f.connectionState!=="failed"&&f.connectionState!=="closed"||I(new Error(`connection is ${f.connectionState}`)),f.connectionState==="connected"&&(this.logSelectedCandidate(),l())},f.ontrack=r,f.addTransceiver("audio",{direction:"recvonly"}),f.addTransceiver("video",{direction:"recvonly"}),this._log.info("connectForSwitch createOffer"),f.createOffer({offerToReceiveAudio:!0,offerToReceiveVideo:!0,voiceActivityDetection:!1}).then(w=>(w.sdp=H8(w.sdp),this._log.info("connectForSwitch setOffer"),f.setLocalDescription(w))).then(()=>{const w={sessionId:kj(),streamurl:i,clientinfo:this.core.environment.getOSString(),localsdp:f.localDescription};return this.exchangeSDP(i,w)}).then(w=>(this._log.info("connectForSwitch setAnswer"),f.setRemoteDescription(w))).catch(I)}catch(h){I(h)}this.connectionTimeoutId=setTimeout(()=>I(new Error("connection timeout")),1e4)})}async fetchStopStreamWithParams(i,r,l){try{const I=`${r}/webrtc/v1/stopstream`,h=await L1(I,{streamurl:i,svrsig:l},{timeout:3}),{errcode:f,errmsg:w}=h;if(f!==0)throw new Error(`errCode:${f}, errmsg:${w}`);return h}catch(I){this._log.error("fetchStopStreamWithParams error",I)}}async stop(){this.isStopped=!0,this.clearStreamHealthCheck(),this.player.stop(),this.peerConnection&&(clearTimeout(this.connectionTimeoutId),this.peerConnection.close(),this.peerConnection.getReceivers().forEach(i=>this.insertableStreamsAbortMap.delete(i)),delete this.peerConnection,await this.fetchStopStream(),delete this.streamURL,delete this.signalURL,delete this.svrSig),this.stat&&(this.stat.stop(),delete this.stat),this.core.room.keyPointManager.uploadKVStat(this.core.kvStatManager,this._sdkAppId)}destroy(){this.stop(),this.core.innerEmitter.off(this.core.INNER_EVENT.SEI_MESSAGE,this.onSEIMessage,this)}createStreamHealthCheckPromise(){return new Promise((i,r)=>{this.streamHealthCheckReject=r,this.streamHealthCheckTimeoutId=window.setTimeout(()=>this.checkStreamHealth(r),5e3)})}clearStreamHealthCheck(){this.streamHealthCheckTimeoutId&&(clearTimeout(this.streamHealthCheckTimeoutId),delete this.streamHealthCheckTimeoutId),delete this.streamHealthCheckReject}async checkStreamHealth(i){if(!this.isStopped&&this.peerConnection)try{const r=this.peerConnection.getReceivers().find(j=>{var lA;return((lA=j.track)==null?void 0:lA.kind)==="video"});if(!r)return void this._log.warn("checkStreamHealth: no video receiver found");const l=await r.getStats();let I=0,h=0;l.forEach(j=>{j.type==="inbound-rtp"&&(j.mediaType==="video"||j.kind==="video")&&(I=j.bytesReceived||0,h=j.framesDecoded||0)});const{isPlaying:f}=this.player,w=f||h>0;this._log.info(`checkStreamHealth: bytesReceived=${I}, framesDecoded=${h}, isPlaying=${f}`);const{RtcError:_,ErrorCode:k,ErrorCodeDictionary:U}=this.core.errorModule;I===0?(this._log.warn("checkStreamHealth: no stream data received after 5s"),i(new _({code:k.OPERATION_FAILED,message:"no stream data received"}))):w||(this._log.warn("checkStreamHealth: decode failed"),this.isH264DecodeSupported=!1,i(new _({code:k.ENV_NOT_SUPPORTED,extraCode:U.NOT_SUPPORTED_H264_DECODE,message:"h264 decode failed"})))}catch(r){this._log.warn("checkStreamHealth error",r)}}connect(i){return new Promise((r,l)=>{try{this.initScriptTransformWorker();const I={encodedInsertableStreams:this.enableSEI,iceServers:[],sdpSemantics:"unified-plan",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",tcpCandidatePolicy:"disable",IceTransportsType:"nohost"},h=new RTCPeerConnection(I);this.peerConnection=h,h.onconnectionstatechange=()=>{this.connectionState=h.connectionState,this._log.info("connectionState",h.connectionState),h.connectionState!=="failed"&&h.connectionState!=="closed"||(this.isStarted?this.reconnect(i):l(new Error(`connection is ${h.connectionState}`))),h.connectionState==="connected"&&(this.logSelectedCandidate(),r())},h.ontrack=f=>this.onTrack(f),h.addTransceiver("audio",{direction:"recvonly"}),h.addTransceiver("video",{direction:"recvonly"}),this._log.info("createOffer"),h.createOffer({offerToReceiveAudio:!0,offerToReceiveVideo:!0,voiceActivityDetection:!1}).then(f=>(f.sdp=H8(f.sdp),this._log.info("setOffer"),h.setLocalDescription(f))).then(()=>{const f={sessionId:kj(),streamurl:i,clientinfo:this.core.environment.getOSString(),localsdp:h.localDescription};return this.exchangeSDP(i,f)}).then(f=>(this._log.info("setAnswer"),h.setRemoteDescription(f))).catch(l)}catch(I){l(I)}this.connectionTimeoutId=setTimeout(()=>l(new Error("connection timeout")),1e4)})}async exchangeSDP(i,r){let l,I,h;try{this._log.info("exchangeSDP");const f=WrA(i);if(!f)throw new Error("streamDomain is empty");const{signalDomain:w,cached:_}=await this.fetchSignalDomain(f);if(!w)throw new Error("signalDomain is empty");{this._log.info("try exchangeSDP signalDomain:",w,_);const k=await this.doExchangeSDP(`https://${w}`,r,3);l=k.url,I=k.remoteSdp,h=k.svrSig}}catch(f){this._log.warn("exchangeSDP failed, fallback",f);try{const w=await this.core.utils.promiseAny(jrA.map(_=>this.doExchangeSDP(`https://${_}`,r,3)));l=w.url,I=w.remoteSdp,h=w.svrSig}catch(w){throw this._log.error("exchangeSDP failed",w),w[0]||w}}return this.streamURL=i,this.signalURL=l,this.svrSig=h,I}async reconnect(i){var r,l;if(!this.isReconnecting){this.isReconnecting=!0;try{this._log.warn("start reconnect"),await this.connect(i),this._log.warn("reconnect success")}catch(I){this._log.error("reconnect error",I);const{RtcError:h,ErrorCode:f}=this.core.errorModule;(l=(r=this.callback)==null?void 0:r.onError)==null||l.call(r,new h({code:f.OPERATION_FAILED,message:"reconnect failed"}))}finally{this.isReconnecting=!1}}}async logSelectedCandidate(){if(!this.peerConnection)return;const i=await this.peerConnection.getStats();for(const[r,l]of i)if(this.core.rtcDectection.isSelectedCandidatePair(l)){const I=i.get(l.localCandidateId),h=i.get(l.remoteCandidateId);I&&this._log.info(`local candidate: ${I.candidateType} ${I.protocol}:${I.ip||I.address}:${I.port} ${I.networkType||""} ${I.relayProtocol?`relayProtocol:${I.relayProtocol} url: ${I.url}`:""}`),h&&this._log.info(`remote candidate: ${h.candidateType} ${h.protocol}:${h.ip||h.address}:${h.port}`);break}}async doExchangeSDP(i,r,l){const I=`${i}/webrtc/v1/pullstream`,h=await L1(I,r,{timeout:l}),{errcode:f,errmsg:w,remotesdp:_,svrsig:k}=h;if(f!==0){const U=new Error(`errCode:${f}, errMsg:${w}`);throw U.name="RequestSignalError",U}return{url:i,remoteSdp:_,svrSig:k}}createEncodedStreams(i){var r;if(this.enableSEI&&this.core.rtcDectection.IS_INSERTABLE_STREAM_SUPPORTED)try{if(this._log.warn("enableSEI",this.enableSEI),!this.insertableStreamsAbortMap.has(i)){const l=i.createEncodedStreams(),I=new AbortController,h={abortController:I,enqueue:f=>i.track.kind==="audio"?f:this.decodeVideoFrame(f)};l.readable.pipeThrough(new TransformStream({transform:(f,w)=>{const _=h.enqueue(f);_&&w.enqueue(_)}})).pipeTo(l.writable,I).catch(f=>{f!=="destroy"&&this._log.warn(f)}),(r=this.insertableStreamsAbortMap.get(i))==null||r.abort("destroy"),this.insertableStreamsAbortMap.set(i,I)}}catch(l){this._log.warn(`createEncodedStreams ${i.track.kind} failed`,l)}}initReceiverTransform(i,r){this.peerConnection&&this.enableSEI&&this.scriptTransformWorker&&!i.transform&&(i.transform=new RTCRtpScriptTransform(this.scriptTransformWorker,{isReceiver:!0,isAudio:r,userId:"",streamType:this.core.enums.RemoteStreamType.Main}))}initScriptTransformWorker(){const{room:i,rtcDectection:r,createScriptTransformWorker:l,trtc:I,TRTC:h}=this.core;!this.enableSEI||r.IS_INSERTABLE_STREAM_SUPPORTED||this.scriptTransformWorker||r.IS_SCRIPT_TRANSFORM_SUPPORTED&&(this._log.info("initScriptTransformWorker"),this.scriptTransformWorker=l({videoEncodePipeline:i.videoManager.encodePipeline,videoDecodePipeline:i.videoManager.decodePipeline,audioEncodePipeline:i.audioManager.encodePipeline,audioDecodePipeline:i.audioManager.decodePipeline}),this.scriptTransformWorker.onmessage=f=>{var w,_;f.data.type==="sei"&&((_=(w=this.callback)==null?void 0:w.onSEIMessage)==null||_.call(w,{data:f.data.data,seiPayloadType:f.data.seiPayloadType}))},this.scriptTransformWorker.onerror=f=>{this._log.error("scriptTransformWorker error: ",f.message)})}decodeVideoFrame(i){if(!this.core.room.videoManager)return i;for(const r of this.core.room.videoManager.decodePipeline)if(r&&!(i=r({frame:i})))return;return i}async fetchStopStream(){if(this.streamURL&&this.svrSig&&this.signalURL)try{const i=`${this.signalURL}/webrtc/v1/stopstream`,r=await L1(i,{streamurl:this.streamURL,svrsig:this.svrSig},{timeout:3}),{errcode:l,errmsg:I}=r;if(l!==0)throw new Error(`errCode:${l}, errmsg:${I}`);return r}catch(i){this._log.error("fetchStopStream error",i)}}onTrack(i){const{track:r}=i;this.createEncodedStreams(i.receiver),this.initReceiverTransform(i.receiver,r.kind==="audio"),r.kind==="audio"?this.player.setAudioTrack(r):this.player.setVideoTrack(r)}onSEIMessage({room:i,nalu:r}){var l,I;i===this.core.room&&((I=(l=this.callback)==null?void 0:l.onSEIMessage)==null||I.call(l,{data:r.seiPayload.buffer,seiPayloadType:r.seiPayloadType}))}async fetchSignalDomain(i,r=U1[0]){var l;const I=`https://${r}/signal_query`;try{const h=window.localStorage.getItem(Fj);if(h){const U=JSON.parse(h);if(((l=U[i])==null?void 0:l.expire)-new Date().getTime()>0)return{signalDomain:U[i].signal,cached:!0}}const f=await L1(I,{domain:i,requestid:kj(16),client_type:"Web",client_info:window.navigator.userAgent}),{errcode:w,errmsg:_,data:k}=f;if(w===0){const{signal_domain:U,cache_time:j}=k;let lA={};const rA=window.localStorage.getItem(Fj);rA&&(lA=JSON.parse(rA)),lA[i]={signal:U,expire:new Date().getTime()+1e3*j};try{window.localStorage.setItem(Fj,JSON.stringify(lA))}catch{}return{signalDomain:U,cached:!1}}throw new Error(`errCode:${w} errmsg:${_}`)}catch(h){return this._log.error("fetchSignalDomain error",h),U1[1]&&r!==U1[1]?this.fetchSignalDomain(i,U1[1]):{signalDomain:"",cached:!1}}}};pn(oY,"Name","LEBPlayer"),L_([VrA({fnName:"connect"})],oY.prototype,"stop"),L_([YrA({settings:{retries:1/0,timeout:2e3},onRetrying(t){var i;if(this._log.warn(`retry connect ${t}`),t>=3&&((i=this.callback)==null?void 0:i.onError)&&!this.isFireWallErrorEmitted){const{RtcError:r,ErrorCode:l,ErrorCodeDictionary:I}=this.core.errorModule;this.isFireWallErrorEmitted=!0,this.callback.onError(new r({code:l.OPERATION_FAILED,extraCode:I.FIREWALL_RESTRICTION,message:"firewall restriction"}))}},onError(t,i,r,l){var I;if(this._log.warn("connect failed",t),this.peerConnection&&(this.peerConnection.close(),delete this.peerConnection),!this.isStopped&&((I=t.message||t)==null?void 0:I.includes("connection")))i();else{const{RtcError:h,ErrorCode:f}=this.core.errorModule;r(new h({code:f.UNKNOWN_ERROR,message:t.message}))}}})],oY.prototype,"connect");var P9=oY,L1=async(t,i,r={})=>{const{timeout:l=10}=r;let I,h=0,f={};window.AbortController&&(I=new window.AbortController,f={signal:I.signal},h=window.setTimeout(()=>I.abort(),1e3*l));const w=await fetch(t,_rA({body:JSON.stringify(i),cache:"no-cache",credentials:"same-origin",headers:{"content-type":"text/plain;charset=utf-8"},method:"POST",mode:"cors"},f));if(h&&window.clearTimeout(h),w.status!==200)throw new Error(`Network Error, status code:${w.status}`);return w.json()},U1=["webrtc-signal-scheduler.tlivesource.com","bak-webrtc-signal-scheduler.tlivesource.com"],Fj="LEB_PLAYER_STORAGE_KEY",WrA=t=>{const i=/^(?:webrtc:\/\/)([0-9.\-A-Za-z_]+)(?:\/)(?:[0-9.\-A-Za-z_=]+)(?:\/)(?:[^?#]*)(?:\?*)(?:[^?#]*)/.exec(t);return i?i[1]:""},zrA=P9;const ZrA=Object.freeze(Object.defineProperty({__proto__:null,LEBPlayer:P9,default:zrA},Symbol.toStringTag,{value:"Module"})),XrA=GU(ZrA);var x9=Object.defineProperty,$rA=Object.defineProperties,AaA=Object.getOwnPropertyDescriptors,W8=Object.getOwnPropertySymbols,eaA=Object.prototype.hasOwnProperty,taA=Object.prototype.propertyIsEnumerable,L3=(t,i,r)=>i in t?x9(t,i,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[i]=r,iaA=(t,i)=>{for(var r in i||(i={}))eaA.call(i,r)&&L3(t,r,i[r]);if(W8)for(var r of W8(i))taA.call(i,r)&&L3(t,r,i[r]);return t},oaA=(t,i)=>$rA(t,AaA(i)),saA=(t,i)=>{for(var r in i)x9(t,r,{get:i[r],enumerable:!0})},Hg=(t,i,r)=>L3(t,typeof i!="symbol"?i+"":i,r);async function naA({sdkAppId:t,userId:i,userSig:r,core:l}){var I;const h=Math.round(new Date().getTime()/1e3);try{const f=await l.schedule.getAbilityConfig(t,l.schedule.ScheduleRequestType.TRTC_AUTO_CONF,{sdkAppId:t,userId:i,userSig:r,timestamp:h});l.log.info(`virtual background ability response: ${JSON.stringify(f)}`);const{data:w}=f;return(I=w?.trtcAutoConf)!=null&&I.web_ar?{auth:!0,timestamp:h}:{auth:!1}}catch(f){return l.log.error("virtual background fetch error",f),{auth:!1}}}var raA={sdkAppId:{required:!0,type:"number"},userId:{required:!0,type:"string"},userSig:{required:!0,type:"string"}};function aaA(t){return{name:"VirtualBackgroundOptions",type:"object",required:!0,allowEmpty:!1,properties:oaA(iaA({},raA),{type:{required:!1,type:"string",values:["image","blur","color"]},src:{required:!1,type:"string"},blurLevel:{required:!1,type:"number",min:1,max:10},onAbort:{required:!1},color:{required:!1,type:["array","string"]},enableFaceCentering:{required:!1,type:"boolean"},enableEffectOptimization:{required:!1,type:"boolean"}}),validate(i,r,l,I){var h;const{RtcError:f,ErrorCode:w,ErrorCodeDictionary:_}=t.errorModule;if(!i)return;const{type:k,src:U,onAbort:j}=i;if(k==="image"&&!U)throw new f({code:w.INVALID_PARAMETER,extraCode:_.INVALID_PARAMETER_REQUIRED,fnName:l,messageParams:{key:"src"}});if(j&&!t.utils.isFunction(j))throw new f({code:w.INVALID_PARAMETER,extraCode:_.INVALID_PARAMETER_TYPE,fnName:l,messageParams:{key:"onAbort",value:typeof j,rule:{type:"Function"}}});if(!((h=t.room.videoManager.cameraTrack)!=null&&h.mediaTrack))throw new f({code:w.INVALID_OPERATION,extraCode:_.INVALID_OPERATION_NEED_VIDEO,fnName:l})}}}function gaA(t){return{name:"UpdateVirtualBackgroundOptions",type:"object",required:!0,allowEmpty:!1,properties:{type:{required:!0,type:"string",values:["image","blur","color"]},src:{required:!1,type:"string"},blurLevel:{required:!1,type:"number",min:1,max:10},color:{required:!1,type:["array","string"]},enableFaceCentering:{required:!1,type:"boolean"},enableEffectOptimization:{required:!1,type:"boolean"}},validate(i,r,l,I){if(!i)return;const{RtcError:h,ErrorCode:f,ErrorCodeDictionary:w}=t.errorModule,{type:_,src:k}=i;if(_==="image"&&!k)throw new h({code:f.INVALID_PARAMETER,extraCode:w.INVALID_PARAMETER_REQUIRED,fnName:l,messageParams:{key:"src"}})}}}function caA(t){return{name:"StopVirtualBackgroundOptions",required:!1}}var laA=(()=>{var t=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return function(i={}){var r,l,I=i;I.ready=new Promise(($,K)=>{r=$,l=K});var h=Object.assign({},I),f="";typeof document<"u"&&document.currentScript&&(f=document.currentScript.src),t&&(f=t),f=f.indexOf("blob:")!==0?f.substr(0,f.replace(/[?#].*/,"").lastIndexOf("/")+1):"";var w,_,k=I.print||console.log.bind(console),U=I.printErr||console.error.bind(console);function j($){if(ni($))return function(K){for(var vA=atob(K),qA=new Uint8Array(vA.length),Ae=0;Ae$.startsWith(Dt);function Jt($){return Promise.resolve().then(()=>function(K){if(K==oe&&w)return new Uint8Array(w);var vA=j(K);if(vA)return vA;throw"both async and sync fetching of the wasm failed"}($))}function gi($,K,vA,qA){return function(Ae,pe,Pe){return Jt(Ae).then(Oe=>WebAssembly.instantiate(Oe,pe)).then(Oe=>Oe).then(Pe,Oe=>{U(`failed to asynchronously prepare wasm: ${Oe}`),Le(Oe)})}(K,vA,qA)}ni(oe="data:application/octet-stream;base64,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IAEoAgA2AgAgAiABKAIENgIEIAIgASgCCDYCCCACIAEoAgw2AgwgAiABKAIQNgIQIAIgASgCFDYCFCACIAEoAhg2AhggAiABKAIcNgIcIAIgASgCIDYCICACIAEoAiQ2AiQgAiABKAIoNgIoIAIgASgCLDYCLCACIAEoAjA2AjAgAiABKAI0NgI0IAIgASgCODYCOCACIAEoAjw2AjwgAUFAayEBIAJBQGsiAiAFTQ0ACwsgAiAETw0BA0AgAiABKAIANgIAIAFBBGohASACQQRqIgIgBEkNAAsMAQsgA0EESQRAIAAhAgwBCyAAIANBBGsiBEsEQCAAIQIMAQsgACECA0AgAiABLQAAOgAAIAIgAS0AAToAASACIAEtAAI6AAIgAiABLQADOgADIAFBBGohASACQQRqIgIgBE0NAAsLIAIgA0kEQANAIAIgAS0AADoAACABQQFqIQEgAkEBaiICIANHDQALCyAACwsAIAEgAiAAEEIaCxIAIAFBAXRB8MoAakECIAAQQgv5AQEEfwJ/IAEQKiECIwBBEGsiBSQAAn8gAC0AC0EHdgRAIAAoAgQMAQsgAC0AC0H/AHELIgRBAE8EQAJAIAIgAC0AC0EHdgR/IAAoAghB/////wdxQQFrBUEKCyIDIARrTQRAIAJFDQECfyAALQALQQd2BEAgACgCAAwBCyAACyIDIAQEfyACIANqIAMgBBBFIAEgAkEAIAMgBGogAUsbQQAgASADTxtqBSABCyACEEUgACACIARqIgEQMSAFQQA6AA8gASADaiAFLQAPOgAADAELIAAgAyACIARqIANrIARBACACIAEQRAsgBUEQaiQAIAAMAQsQJwALC/ICAgJ/AX4CQCACRQ0AIAAgAToAACAAIAJqIgNBAWsgAToAACACQQNJDQAgACABOgACIAAgAToAASADQQNrIAE6AAAgA0ECayABOgAAIAJBB0kNACAAIAE6AAMgA0EEayABOgAAIAJBCUkNACAAQQAgAGtBA3EiBGoiAyABQf8BcUGBgoQIbCIBNgIAIAMgAiAEa0F8cSIEaiICQQRrIAE2AgAgBEEJSQ0AIAMgATYCCCADIAE2AgQgAkEIayABNgIAIAJBDGsgATYCACAEQRlJDQAgAyABNgIYIAMgATYCFCADIAE2AhAgAyABNgIMIAJBEGsgATYCACACQRRr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ACACQQA6AA8DQCABBEAgACACLQAPOgAAIAFBAWshASAAQQFqIQAMAQsLIAJBEGokAAsaACAALQALQQd2BEAgACgCCBogACgCABAZCwvmAQEFfyMAQRBrIgUkACMAQSBrIgMkACMAQRBrIgQkACAEIAA2AgwgBCAAIAFqNgIIIAMgBCgCDDYCGCADIAQoAgg2AhwgBEEQaiQAIAMoAhghBCADKAIcIQYjAEEQayIBJAAgASAGNgIMIAIgBCAGIARrIgQQQyABIAIgBGo2AgggAyABKAIMNgIQIAMgASgCCDYCFCABQRBqJAAgAyAAIAMoAhAgAGtqNgIMIAMgAiADKAIUIAJrajYCCCAFIAMoAgw2AgggBSADKAIINgIMIANBIGokACAFKAIMIQcgBUEQaiQAIAcLDwAgAgRAIAAgASACEDILC/UCAQV/IwBBEGsiByQAIAIgAUF/c0Hv////B2pNBEACfyAALQALQQd2BEAgACgCAAwBCyAACyEIIAdBBGoiCSAAIAFB5////wNJBH8gByABQQF0NgIMIAcgASACajYCBCMAQRBrIgIkACAJKAIAIAdBDGoiCigCAEkhCyACQRBqJAAgCiAJIAsbKAIAIgJBC08EfyACQRBqQXBxIgIgAkEBayICIAJBC0YbBUEKC0EBagVB7////wcLEDAgBygCBCECIAcoAggaIAQEQCACIAggBBAjCyAFBEAgAiAEaiAGIAUQIwsgAyAEayEGIAMgBEcEQCACIARqIAVqIAQgCGogBhAjCyABQQpHBEAgCBAZCyAAIAI2AgAgACAAKAIIQYCAgIB4cSAHKAIIQf////8HcXI2AgggACAAKAIIQYCAgIB4cjYCCCAAIAQgBWogBmoiADYCBCAHQQA6AAwgACACaiAHLQAMOgAAIAdBEGokAA8LECcACwoAIAAgASACEEMLuQEBBH8jAEEQayIEJAAgBCACNgIMIwBBoAFrIgMkACADIAAgA0GeAWogARsiBjYClAFBfyEFIAMgAUEBayIAQQAgACABTRs2ApgBIANBAEGQARAmIgBBfzYCTCAAQSA2AiQgAEF/NgJQIAAgAEGfAWo2AiwgACAAQZQBajYCVAJAIAFBAEgEQEHo3gBBPTYCAAwBCyAGQQA6AAAgAEH9CiACQR8QTSEFCyAAQaABaiQAIARBEGokACAFCwQA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KAIARQ0AIAIgBCgCGDYCAAsgAEEBRiEFDAELQQAhBQsgBEFAayQAIAULMQAgACABKAIIQQAQHgRAIAEgAiADED0PCyAAKAIIIgAgASACIAMgACgCACgCHBEGAAsYACAAIAEoAghBABAeBEAgASACIAMQPQsLnQEBAn8jAEFAaiIDJAACf0EBIAAgAUEAEB4NABpBACABRQ0AGkEAIAFBjM0AECAiAUUNABogA0EMakEAQTQQJhogA0EBNgI4IANBfzYCFCADIAA2AhAgAyABNgIIIAEgA0EIaiACKAIAQQEgASgCACgCHBEGACADKAIgIgBBAUYEQCACIAMoAhg2AgALIABBAUYLIQQgA0FAayQAIAQLCgAgACABQQAQHgtOAgF/AXwjAEEQayICJAAgAkEANgIMIAEoAgRB1M8AIAJBDGoQCSEDIAIoAgwiAQRAIAEQAQsgACADRAAAAAAAAAAAYjoAOCACQRBqJAALNwEBfyMAQRBrIgIkACACIAEtADg2AgggAEHUzwAgAkEIahAHNgIEIABB1NUANgIAIAJBEGokAAuoAQEFfyAAKAJUIgMoAgAhBSADKAIEIgQgACgCFCAAKAIcIgdrIgYgBCAGSRsiBgRAIAUgByAGECIaIAMgAygCACAGaiIFNgIAIAMgAygCBCAGayIENgIECyAEIAIgAiAESxsiBARAIAUgASAEECIaIAMgAygCACAEaiIFNgIAIAMgAygCBCAEazYCBAsgBUEAOgAAIAAgACgCLCIBNgIcIAAgATYCFCACC5wBAQJ/IwBBEGsiAiQAQcgAEBwhASAAKAIEIgAQAiACIAA2AgggAUHMLSACQQhqEAc2AgQgAUHU1QA2AgAgAUEBNgIcIAFB1NUANgIYIAFBATYCFCABQdTVADYCECABQQE2AgwgAUHU1QA2AgggAUEAOgAgIAFBADYCRCABQoCAgIAwNwI8IAFBADsANyABQQA7ACsgAkEQaiQAIAELigUCBn4CfyABIAEoAgBBB2pBeHEiAUEQajYCACAAIQkgASkDACEDIAEpAwghBSMAQSBrIgAkAAJAIAVC////////////AIMiBEKAgICAgIDAgDx9IARCgICAgICAwP/DAH1UBEAgBUIEhiADQjyIhCEEIANC//////////8PgyIDQoGAgICAgICACFoEQCAEQoGAgICAgICAwAB8IQIMAgsgBEKAgICAgICAgEB9IQIgA0KAgICAgICAgAhSDQEgAiAEQgGDfCECDAELIANQIARCgICAgICAwP//AFQgBEKAgICAgIDA//8AURtFBEAgBUIEhiADQjyIhEL/////////A4NCgICAgICAgPz/AIQhAgwBC0KAgICAgICA+P8AIQIgBEL///////+//8MAVg0AQgAhAiAEQjCIpyIBQZH3AEkNACADIQIgBUL///////8/g0KAgICAgIDAAIQiBCEGAkAgAUGB9wBrIghBwABxBEAgAyAIQUBqrYYhBkIAIQIMAQsgCEUNACAGIAitIgeGIAJBwAAgCGutiIQhBiACIAeGIQILIAAgAjcDECAAIAY3AxgCQEGB+AAgAWsiAUHAAHEEQCAEIAFBQGqtiCEDQgAhBAwBCyABRQ0AIARBwAAgAWuthiADIAGtIgKIhCEDIAQgAoghBAsgACADNwMAIAAgBDcDCCAAKQMIQgSGIAApAwAiA0I8iIQhAiAAKQMQIAApAxiEQgBSrSADQv//////////D4OEIgNCgYCAgICAgIAIWgRAIAJCAXwhAgwBCyADQoCAgICAgICACFINACACQgGDIAJ8IQILIABBIGokACAJIAIgBUKAgICAgICAgIB/g4S/OQMAC0ABAn8jAEEQayICJAAgAiABNgIMIAJB1NUANgIIIAJBCGogABEBACEDIAIoAgwiAQRAIAEQAwsgAkEQaiQAIAMLBABCAAsEAEEAC/YCAQh/IwBBIGsiAyQAIAMgACgCHCIENgIQIAAoAhQhBSADIAI2AhwgAyABNgIYIAMgBSAEayIBNgIUIAEgAmohBUECIQcCfwJAAkACQCAAKAI8IANBEGoiAUECIANBDGoQDSIEBH9B6N4AIAQ2AgBBfwVBAAsEQCABIQQMAQsDQCAFIAMoAgwiBkYNAiAGQQBIBEAgASEEDAQLIAEgBiABKAIEIghLIglBA3RqIgQgBiAIQQAgCRtrIgggBCgCAGo2AgAgAUEMQQQgCRtqIgEgASgCACAIazYCACAFIAZrIQUgACgCPCAEIgEgByAJayIHIANBDGoQDSIGBH9B6N4AIAY2AgBBfwVBAAtFDQALCyAFQX9HDQELIAAgACgCLCIBNgIcIAAgATYCFCAAIAEgACgCMGo2AhAgAgwBCyAAQQA2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EGokAAsiAQF+IAEgAq0gA61CIIaEIAQgABEMACIFQiCIpyQBIAWnCzcBAX8jAEEQayICJAAgAiABKAI8NgIIIABBnNAAIAJBCGoQBzYCBCAAQdTVADYCACACQRBqJAALC/NKFQBBgAgLhCZzZXRCZWF1dHkALSsgICAwWDB4AC0wWCswWCAwWC0weCsweCAweAB1bnNpZ25lZCBzaG9ydAB1bnNpZ25lZCBpbnQAaW5pdABmbG9hdAB1aW50NjRfdABibHVyUmFkaXVzAHZlY3RvcgBtaXJyb3IAYXR0YWNoU2hhZGVyAGRlbGV0ZVNoYWRlcgBjcmVhdGVTaGFkZXIAY29tcGlsZVNoYWRlcgB1bnNpZ25lZCBjaGFyAHN0ZDo6ZXhjZXB0aW9uAHJvdGF0aW9uAG5hbgBsaW5rUHJvZ3JhbQBkZWxldGVQcm9ncmFtAGNyZWF0ZVByb2dyYW0AYm9vbABlbXNjcmlwdGVuOjp2YWwAc2V0V2F0ZXJNYXJrAHN0b3BXYXRlck1hcmsAdW5zaWduZWQgbG9uZwBzdGQ6OndzdHJpbmcAYmFzaWNfc3RyaW5nAHN0ZDo6c3RyaW5nAHN0ZDo6dTE2c3RyaW5nAHN0ZDo6dTMyc3RyaW5nAGluZgAlZgBjbG9zZQBkb3VibGUAdmJNb2RlAHNoYWRlclNvdXJjZQB2b2lkAHNhbXBsZUNvbG9yICs9IHRleHR1cmUoZnJhbWUsIGJsdXJDb29yZGluYXRlc1sATkFOAElORgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxzaG9ydD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgc2hvcnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgaW50PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxmbG9hdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dWludDhfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50OF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50MTZfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50MTZfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dWludDY0X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludDY0X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQzMl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQzMl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxjaGFyPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBjaGFyPgBzdGQ6OmJhc2ljX3N0cmluZzx1bnNpZ25lZCBjaGFyPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxzaWduZWQgY2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8bG9uZz4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgbG9uZz4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8ZG91YmxlPgB2ZWMyIGMgPSB2X3RleENvb3JkOwB2ZWMyIGMgPSB2ZWMyKDEuMCAtIHZfdGV4Q29vcmQueCwgdl90ZXhDb29yZC55KTsAYyA9IHZlYzIoMS4wIC0gYy54LCAxLjAgLSBjLnkpOwBjID0gdmVjMihjLnksIDEuMCAtIGMueCk7AGMgPSB2ZWMyKDEuMCAtIGMueSwgYy54KTsAQWxsSW4xAC4ALjAsAC4wKSpvKSoAKG51bGwpACkqby55KTsgICAgdmVjMiBjb29yZDIgPSB2ZWMyKGZsb2F0KAAgICAgYyA9IHZlYzIodl90ZXhDb29yZC54LCAxLjAgLSB2X3RleENvb3JkLnkpOyAgICB2ZWMyIGNvb3JkMSA9IHZlYzIoZmxvYXQoACksIChjLnkgLWNvb3JkMS55KSAvIG8ueSAvIGZsb2F0KAApKm8ueSk7ICAgIGlmIChjLnggPiBjb29yZDEueCAmJiBjLnggPCBjb29yZDIueCAmJiBjLnkgPiBjb29yZDEueSAmJiBjLnkgPCBjb29yZDIueSkgeyAgICAgIHZlYzQgd2F0ZXJDb2xvciA9IHRleHR1cmUod2F0ZXJNYXJrLCB2ZWMyKChjLnggLSBjb29yZDEueCkgIC8gby54IC8gZmxvYXQoACkgKiBvLngsIGZsb2F0KABvdXRDb2xvci5yZ2IgKz0gdmVjMygAKTsgICAgICAgdmVjMyBzbW9vdGhDb2xvciA9IG91dENvbG9yLnJnYiArIChvdXRDb2xvci5yZ2ItdmVjMyhoaWdoUGFzcykpKmFscGhhKjAuMTsgICAgICAgc21vb3RoQ29sb3IgPSBtYXgoc21vb3RoQ29sb3IsIHZlYzMoMC4wKSk7ICAgICAgIHNtb290aENvbG9yID0gY2xhbXAocG93KHNtb290aENvbG9yLCB2ZWMzKABnKz1HKGMsdmVjMigAICAgICAgdmVjMiBvZmZzZXQgPSB2ZWMyKABdID0gdl90ZXhDb29yZC54eSArIG9mZnNldCAqIHZlYzIoADsgACkpLCB2ZWMzKDAuMCksIHZlYzMoMS4wKSk7ICAgICAgdmVjMyBzY3JlZW4gPSB2ZWMzKDEuMCkgLSAodmVjMygxLjApLXNtb290aENvbG9yKSAqICh2ZWMzKDEuMCktb3V0Q29sb3IucmdiKTsgICAgICAgdmVjMyBsaWdodGVuID0gbWF4KHNtb290aENvbG9yLCBvdXRDb2xvci5yZ2IpOyAgICAgICB2ZWMzIGJlYXV0eUNvbG9yID0gbWl4KG1peChvdXRDb2xvci5yZ2IsIHNjcmVlbiwgYWxwaGEpLCBsaWdodGVuLCBhbHBoYSk7ICAgICAgb3V0Q29sb3IucmdiID0gbWl4KG91dENvbG9yLnJnYiwgYmVhdXR5Q29sb3IsIAAKICAgICAgY29uc3QgbWF0MyBzYXR1cmF0ZU1hdHJpeCA9IG1hdDMoMS4xMTAyLC0wLjA1OTgsLTAuMDYxLC0wLjA3NzQsMS4wODI2LC0wLjExODYsLTAuMDIyOCwtMC4wMjI4LDEuMTc3Mik7CiAgICAgIHZlYzMgd2FybUNvbG9yID0gb3V0Q29sb3IucmdiICogc2F0dXJhdGVNYXRyaXg7CiAgICAgIG91dENvbG9yLnJnYiA9IG1peChvdXRDb2xvci5yZ2IsIHdhcm1Db2xvciwgACAgICAgIHNhbXBsZUNvbG9yID0gc2FtcGxlQ29sb3IgLyA2Mi4wOyAgICAgICBmbG9hdCBoaWdoUGFzcyA9IG91dENvbG9yLmcgLSBzYW1wbGVDb2xvciArIDAuNTsgICAgICAgY29uc3QgaGlnaHAgdmVjMyBXID0gdmVjMygwLjI5OSwwLjU4NywwLjExNCk7ICAgICAgZmxvYXQgbHVtaW5hbmNlID0gZG90KG91dENvbG9yLnJnYiwgVyk7ICAgICAgIGZsb2F0IGFscGhhID0gcG93KGx1bWluYW5jZSwgAF0pLmcgKiAAKSkpOyAgICAgIG91dENvbG9yID0gbWl4KG91dENvbG9yLHdhdGVyQ29sb3IsICB3YXRlckNvbG9yLmEpOyAgICB9ICAgIAApOyAgICAAKTsgICAgICB2ZWMyIGJsdXJDb29yZGluYXRlc1syNF07ICAgICAgACAgICAgIGZsb2F0IHNhbXBsZUNvbG9yID0gb3V0Q29sb3IuZyAqIDIyLjA7ICAgICAgIAAjdmVyc2lvbiAzMDAgZXMKICAgIHByZWNpc2lvbiBoaWdocCBmbG9hdDsKICAgIHVuaWZvcm0gc2FtcGxlcjJEIGZyYW1lOwogICAgdW5pZm9ybSBzYW1wbGVyMkQgbWFzazsKICAgIHVuaWZvcm0gc2FtcGxlcjJEIGJnOwogICAgdW5pZm9ybSBzYW1wbGVyMkQgd2F0ZXJNYXJrOwogICAgdW5pZm9ybSBzYW1wbGVyMkQgbGFzdE1hc2s7CiAgICB1bmlmb3JtIG1hdDQgdV9vZmZzZXRNYXRyaXg7CiAgICB1bmlmb3JtIHZlYzMgdV9jb2xvcjsKICAgIGluIHZlYzIgdl90ZXhDb29yZDsKICAgIG91dCB2ZWM0IG91dENvbG9yOwogICAgdmVjNCBHKHZlYzIgYyx2ZWMyIHMpewogICAgICByZXR1cm4gdGV4dHVyZShmcmFtZSx0ZXh0dXJlKG1hc2ssYytzKS5yPjAuMz9jOmMrcyk7CiAgICB9CiAgICB2b2lkIG1haW4oKSB7CiAgICAgIAAKICAgICAgdmVjMiBvZmZzZXRNYXNrVVYgPSAodV9vZmZzZXRNYXRyaXggKiB2ZWM0KGMsIDAsIDEpKS54eTsKICAgICAgZmxvYXQgaXNJbnNpZGVYID0gKG9mZnNldE1hc2tVVi54ID49IDAuMCkgJiYgKG9mZnNldE1hc2tVVi54IDw9IDEuMCkgPyAxLjAgOiAwLjA7CiAgICAgIGZsb2F0IGlzSW5zaWRlWSA9IChvZmZzZXRNYXNrVVYueSA+PSAwLjApICYmIChvZmZzZXRNYXNrVVYueSA8PSAxLjApID8gMS4wIDogMC4wOwogICAgICBmbG9hdCBpc0luc2lkZSA9IGlzSW5zaWRlWCAqIGlzSW5zaWRlWTsKICAgICAgZmxvYXQgbWFza2VkQWxwaGEgPSB0ZXh0dXJlKG1hc2ssIG9mZnNldE1hc2tVVikuciAqIGlzSW5zaWRlOwogICAgICBtYXNrZWRBbHBoYSA9IG1hc2tlZEFscGhhPDAuNT8yLjAqbWFza2VkQWxwaGEqbWFza2VkQWxwaGE6MS4wLTIuMCooMS4wLW1hc2tlZEFscGhhKSooMS4wLW1hc2tlZEFscGhhKTsKICAgICAgc3JjX2NvbG9yID0gdGV4dHVyZShmcmFtZSwgb2Zmc2V0TWFza1VWICwgaXNJbnNpZGUpOwogICAgICBvdXRDb2xvciA9IG1peCh0ZXh0dXJlKGJnLCBjKSwgc3JjX2NvbG9yLCBtYXNrZWRBbHBoYSk7CiAgICAACiAgICB2ZWM0IGcgPSB2ZWM0KDAuMCk7CiAgICAACiAgICAgIGMueSA9IDEuMCAtIGMueTsKICAgICAgdmVjNCBzcmNfY29sb3IgPSB0ZXh0dXJlKGZyYW1lLCBjKTsKICAgICAgZmxvYXQgYSA9IHRleHR1cmUobWFzaywgYykucjsKICAgICAgYSA9IGE8MC41PzIuMCphKmE6MS4wLTIuMCooMS4wLWEpKigxLjAtYSk7CiAgICAgIC8vIGZsb2F0IGEyID0gdGV4dHVyZShsYXN0TWFzaywgYykuYTsKICAgICAgLy8gYTIgPSBhMjwwLjU/Mi4wKmEyKmEyOjEuMC0yLjAqKDEuMC1hMikqKDEuMC1hMik7CiAgICAgIC8vIGZsb2F0IGRlbHRhID0gYSAtIGEyOwogICAgICAvLyBpZiAoZGVsdGEgPCAwLjI1ICYmIGRlbHRhID4gLTAuMjUpCiAgICAgIC8vIHsKICAgICAgLy8gICAgIGEgPSBhICsgMC41KmRlbHRhOwogICAgICAvLyB9CiAgICAgIAogICAgICB2ZWMyIG8gPSAxLjAgLyB2ZWMyKHRleHR1cmVTaXplKGZyYW1lLCAwKSk7CiAgICAACiAgICAgIG91dENvbG9yID0gZzsKICAAI3ZlcnNpb24gMzAwIGVzCmluIHZlYzIgYV9wb3NpdGlvbjsKaW4gdmVjMiBhX3RleENvb3JkOwoKdW5pZm9ybSBtYXQ0IHVfdGV4dHVyZU1hdHJpeDsKCm91dCB2ZWMyIHZfdGV4Q29vcmQ7CnZvaWQgbWFpbigpIHsKICBnbF9Qb3NpdGlvbiA9IHZlYzQoYV9wb3NpdGlvbi54LCBhX3Bvc2l0aW9uLnksIDAsIDEpOwogIHZfdGV4Q29vcmQgPSh1X3RleHR1cmVNYXRyaXggKiB2ZWM0KGFfdGV4Q29vcmQsIDAsIDEpKS54eTsKfQoAc2V0QmVhdXR5ICVmICVmICVmICVmICVmCgBvdXRDb2xvciA9IHNyY19jb2xvcjsKAG91dENvbG9yID0gbWl4KHZlYzQodV9jb2xvciwxLjApLHNyY19jb2xvcixhKTsKADZBbGxJbjEAAIAoAABfFgAAUDZBbGxJbjEAAAAABCkAAHAWAAAAAAAAaBYAAFBLNkFsbEluMQAAAAQpAACMFgAAAQAAAGgWAABpaQB2AHZpAHwWAADMFgAATjEwZW1zY3JpcHRlbjN2YWxFAACAKAAAuBYAAGlpaQB2aWlpAAAAALwnAAB8FgAAcCgAAHAoAABwKAAAcCgAAHAoAAB2aWlkZGRkZABBkC4LyAi8JwAAfBYAAHAoAABwKAAAcCgAAHAoAAB2aWlkZGRkALwnAAB8FgAAdmlpALwnAADMFgAAzBYAAHwWAADMFgAAHCgAALwnAADMFgAAoBcAAE5TdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFAACAKAAAYBcAAMwWAAC8JwAAzBYAAMwWAABOU3QzX18yMTJiYXNpY19zdHJpbmdJaE5TXzExY2hhcl90cmFpdHNJaEVFTlNfOWFsbG9jYXRvckloRUVFRQAAgCgAALgXAABOU3QzX18yMTJiYXNpY19zdHJpbmdJd05TXzExY2hhcl90cmFpdHNJd0VFTlNfOWFsbG9jYXRvckl3RUVFRQAAgCgAAAAYAABOU3QzX18yMTJiYXNpY19zdHJpbmdJRHNOU18xMWNoYXJfdHJhaXRzSURzRUVOU185YWxsb2NhdG9ySURzRUVFRQAAAIAoAABIGAAATlN0M19fMjEyYmFzaWNfc3RyaW5nSURpTlNfMTFj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")||(je=oe,oe=I.locateFile?I.locateFile(je,f):f+je);var Fi=$=>{for(;$.length>0;)$.shift()(I)};I.noExitRuntime;function To($){this.excPtr=$,this.ptr=$-24,this.set_type=function(K){TA[this.ptr+4>>2]=K},this.get_type=function(){return TA[this.ptr+4>>2]},this.set_destructor=function(K){TA[this.ptr+8>>2]=K},this.get_destructor=function(){return TA[this.ptr+8>>2]},this.set_caught=function(K){K=K?1:0,lA[this.ptr+12|0]=K},this.get_caught=function(){return lA[this.ptr+12|0]!=0},this.set_rethrown=function(K){K=K?1:0,lA[this.ptr+13|0]=K},this.get_rethrown=function(){return lA[this.ptr+13|0]!=0},this.init=function(K,vA){this.set_adjusted_ptr(0),this.set_type(K),this.set_destructor(vA)},this.set_adjusted_ptr=function(K){TA[this.ptr+16>>2]=K},this.get_adjusted_ptr=function(){return TA[this.ptr+16>>2]},this.get_exception_ptr=function(){if(ba(this.get_type()))return TA[this.excPtr>>2];var K=this.get_adjusted_ptr();return K!==0?K:this.excPtr}}var to,uo,Vs,ki=$=>{for(var K="",vA=$;rA[vA];)K+=to[rA[vA++]];return K},ns={},jo={},$i={},jt=$=>{throw new uo($)},io=$=>{throw new Vs($)},bi=($,K,vA)=>{function qA(Oe){var rt=vA(Oe);rt.length!==$.length&&io("Mismatched type converter count");for(var dt=0;dt<$.length;++dt)vs($[dt],rt[dt])}$.forEach(function(Oe){$i[Oe]=K});var Ae=new Array(K.length),pe=[],Pe=0;K.forEach((Oe,rt)=>{jo.hasOwnProperty(Oe)?Ae[rt]=jo[Oe]:(pe.push(Oe),ns.hasOwnProperty(Oe)||(ns[Oe]=[]),ns[Oe].push(()=>{Ae[rt]=jo[Oe],++Pe===pe.length&&qA(Ae)}))}),pe.length===0&&qA(Ae)};function vs($,K,vA={}){if(!("argPackAdvance"in K))throw new TypeError("registerType registeredInstance requires argPackAdvance");return function(qA,Ae,pe={}){var Pe=Ae.name;if(qA||jt(`type "${Pe}" must have a positive integer typeid pointer`),jo.hasOwnProperty(qA)){if(pe.ignoreDuplicateRegistrations)return;jt(`Cannot register type '${Pe}' twice`)}if(jo[qA]=Ae,delete $i[qA],ns.hasOwnProperty(qA)){var Oe=ns[qA];delete ns[qA],Oe.forEach(rt=>rt())}}($,K,vA)}var HA,ce=$=>{jt($.$$.ptrType.registeredClass.name+" instance already deleted")},Ve=!1,Ut=$=>{},nt=$=>{$.count.value-=1,$.count.value===0&&(K=>{K.smartPtr?K.smartPtrType.rawDestructor(K.smartPtr):K.ptrType.registeredClass.rawDestructor(K.ptr)})($)},It=($,K,vA)=>{if(K===vA)return $;if(vA.baseClass===void 0)return null;var qA=It($,K,vA.baseClass);return qA===null?null:vA.downcast(qA)},Xt={},$t=()=>Object.keys(Oi).length,be=()=>{var $=[];for(var K in Oi)Oi.hasOwnProperty(K)&&$.push(Oi[K]);return $},Xe=[],vt=()=>{for(;Xe.length;){var $=Xe.pop();$.$$.deleteScheduled=!1,$.delete()}},wt=$=>{HA=$,Xe.length&&HA&&HA(vt)},Oi={},po=($,K)=>(K=((vA,qA)=>{for(qA===void 0&&jt("ptr should not be undefined");vA.baseClass;)qA=vA.upcast(qA),vA=vA.baseClass;return qA})($,K),Oi[K]),No=($,K)=>(K.ptrType&&K.ptr||io("makeClassHandle requires ptr and ptrType"),!!K.smartPtrType!=!!K.smartPtr&&io("Both smartPtrType and smartPtr must be specified"),K.count={value:1},Go(Object.create($,{$$:{value:K}})));function oo($){var K=this.getPointee($);if(!K)return this.destructor($),null;var vA=po(this.registeredClass,K);if(vA!==void 0){if(vA.$$.count.value===0)return vA.$$.ptr=K,vA.$$.smartPtr=$,vA.clone();var qA=vA.clone();return this.destructor($),qA}function Ae(){return this.isSmartPointer?No(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:K,smartPtrType:this,smartPtr:$}):No(this.registeredClass.instancePrototype,{ptrType:this,ptr:$})}var pe,Pe=this.registeredClass.getActualType(K),Oe=Xt[Pe];if(!Oe)return Ae.call(this);pe=this.isConst?Oe.constPointerType:Oe.pointerType;var rt=It(K,this.registeredClass,pe.registeredClass);return rt===null?Ae.call(this):this.isSmartPointer?No(pe.registeredClass.instancePrototype,{ptrType:pe,ptr:rt,smartPtrType:this,smartPtr:$}):No(pe.registeredClass.instancePrototype,{ptrType:pe,ptr:rt})}var Go=$=>typeof FinalizationRegistry>"u"?(Go=K=>K,$):(Ve=new FinalizationRegistry(K=>{nt(K.$$)}),Ut=K=>Ve.unregister(K),(Go=K=>{var vA=K.$$;if(vA.smartPtr){var qA={$$:vA};Ve.register(K,qA,K)}return K})($));function An(){}var rn=($,K)=>Object.defineProperty(K,"name",{value:$}),Es=($,K,vA)=>{if($[K].overloadTable===void 0){var qA=$[K];$[K]=function(){return $[K].overloadTable.hasOwnProperty(arguments.length)||jt(`Function '${vA}' called with an invalid number of arguments (${arguments.length}) - expects one of (${$[K].overloadTable})!`),$[K].overloadTable[arguments.length].apply(this,arguments)},$[K].overloadTable=[],$[K].overloadTable[qA.argCount]=qA}};function an($,K,vA,qA,Ae,pe,Pe,Oe){this.name=$,this.constructor=K,this.instancePrototype=vA,this.rawDestructor=qA,this.baseClass=Ae,this.getActualType=pe,this.upcast=Pe,this.downcast=Oe,this.pureVirtualFunctions=[]}var Do=($,K,vA)=>{for(;K!==vA;)K.upcast||jt(`Expected null or instance of ${vA.name}, got an instance of ${K.name}`),$=K.upcast($),K=K.baseClass;return $};function pA($,K){if(K===null)return this.isReference&&jt(`null is not a valid ${this.name}`),0;K.$$||jt(`Cannot pass "${as(K)}" as a ${this.name}`),K.$$.ptr||jt(`Cannot pass deleted object as a pointer of type ${this.name}`);var vA=K.$$.ptrType.registeredClass;return Do(K.$$.ptr,vA,this.registeredClass)}function Jn($,K){var vA;if(K===null)return this.isReference&&jt(`null is not a valid ${this.name}`),this.isSmartPointer?(vA=this.rawConstructor(),$!==null&&$.push(this.rawDestructor,vA),vA):0;K.$$||jt(`Cannot pass "${as(K)}" as a ${this.name}`),K.$$.ptr||jt(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&K.$$.ptrType.isConst&&jt(`Cannot convert argument of type ${K.$$.smartPtrType?K.$$.smartPtrType.name:K.$$.ptrType.name} to parameter type ${this.name}`);var qA=K.$$.ptrType.registeredClass;if(vA=Do(K.$$.ptr,qA,this.registeredClass),this.isSmartPointer)switch(K.$$.smartPtr===void 0&&jt("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:K.$$.smartPtrType===this?vA=K.$$.smartPtr:jt(`Cannot convert argument of type ${K.$$.smartPtrType?K.$$.smartPtrType.name:K.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:vA=K.$$.smartPtr;break;case 2:if(K.$$.smartPtrType===this)vA=K.$$.smartPtr;else{var Ae=K.clone();vA=this.rawShare(vA,cn.toHandle(()=>Ae.delete())),$!==null&&$.push(this.rawDestructor,vA)}break;default:jt("Unsupporting sharing policy")}return vA}function Qr($,K){if(K===null)return this.isReference&&jt(`null is not a valid ${this.name}`),0;K.$$||jt(`Cannot pass "${as(K)}" as a ${this.name}`),K.$$.ptr||jt(`Cannot pass deleted object as a pointer of type ${this.name}`),K.$$.ptrType.isConst&&jt(`Cannot convert argument of type ${K.$$.ptrType.name} to parameter type ${this.name}`);var vA=K.$$.ptrType.registeredClass;return Do(K.$$.ptr,vA,this.registeredClass)}function ds($){return this.fromWireType(TA[$>>2])}function zr($,K,vA,qA,Ae,pe,Pe,Oe,rt,dt,Mt){this.name=$,this.registeredClass=K,this.isReference=vA,this.isConst=qA,this.isSmartPointer=Ae,this.pointeeType=pe,this.sharingPolicy=Pe,this.rawGetPointee=Oe,this.rawConstructor=rt,this.rawShare=dt,this.rawDestructor=Mt,Ae||K.baseClass!==void 0?this.toWireType=Jn:qA?(this.toWireType=pA,this.destructorFunction=null):(this.toWireType=Qr,this.destructorFunction=null)}var Pi,Rs,or=[],en=$=>{var K=or[$];return K||($>=or.length&&(or.length=$+1),or[$]=K=Pi.get($)),K},wn=($,K,vA)=>$.includes("j")?((qA,Ae,pe)=>{var Pe=I["dynCall_"+qA];return pe&&pe.length?Pe.apply(null,[Ae].concat(pe)):Pe.call(null,Ae)})($,K,vA):en(K).apply(null,vA),Ht=($,K)=>{var vA,qA,Ae,pe=($=ki($)).includes("j")?(vA=$,qA=K,Ae=[],function(){return Ae.length=0,Object.assign(Ae,arguments),wn(vA,qA,Ae)}):en(K);return typeof pe!="function"&&jt(`unknown function pointer with signature ${$}: ${K}`),pe},yg=$=>{var K=ua($),vA=ki(K);return yn(K),vA},On=($,K)=>{var vA=[],qA={};throw K.forEach(function Ae(pe){qA[pe]||jo[pe]||($i[pe]?$i[pe].forEach(Ae):(vA.push(pe),qA[pe]=!0))}),new Rs(`${$}: `+vA.map(yg).join([", "]))},Gn=($,K)=>{for(var vA=[],qA=0;qA<$;qA++)vA.push(TA[K+4*qA>>2]);return vA},Js=$=>{for(;$.length;){var K=$.pop();$.pop()(K)}};function pr($,K,vA,qA,Ae,pe){var Pe=K.length;Pe<2&&jt("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var Oe=K[1]!==null&&vA!==null,rt=!1,dt=1;dt($ instanceof Object||jt(`${vA} with invalid "this": ${$}`),$ instanceof K.registeredClass.constructor||jt(`${vA} incompatible with "this" of type ${$.constructor.name}`),$.$$.ptr||jt(`cannot call emscripten binding method ${vA} on deleted object`),Do($.$$.ptr,$.$$.ptrType.registeredClass,K.registeredClass));function mr(){this.allocated=[void 0],this.freelist=[]}var mo=new mr,gn=$=>{$>=mo.reserved&&--mo.get($).refcount===0&&mo.free($)},Dl=()=>{for(var $=0,K=mo.reserved;K($||jt("Cannot use deleted val. handle = "+$),mo.get($).value),toHandle:$=>{switch($){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return mo.allocate({refcount:1,value:$})}}};function fr($){return this.fromWireType(cA[$>>2])}var Ls,Vc,ms,as=$=>{if($===null)return"null";var K=typeof $;return K==="object"||K==="array"||K==="function"?$.toString():""+$},Su=($,K)=>{switch(K){case 4:return function(vA){return this.fromWireType(WA[vA>>2])};case 8:return function(vA){return this.fromWireType(ge[vA>>3])};default:throw new TypeError(`invalid float width (${K}): ${$}`)}},Wa=($,K,vA)=>{switch(K){case 1:return vA?qA=>lA[qA|0]:qA=>rA[qA|0];case 2:return vA?qA=>mA[qA>>1]:qA=>IA[qA>>1];case 4:return vA?qA=>cA[qA>>2]:qA=>TA[qA>>2];default:throw new TypeError(`invalid integer width (${K}): ${$}`)}},Cs=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,sg=($,K,vA)=>{for(var qA=K+vA,Ae=K;$[Ae]&&!(Ae>=qA);)++Ae;if(Ae-K>16&&$.buffer&&Cs)return Cs.decode($.subarray(K,Ae));for(var pe="";K>10,56320|1023&dt)}}else pe+=String.fromCharCode((31&Pe)<<6|Oe)}else pe+=String.fromCharCode(Pe)}return pe},VI=($,K)=>$?sg(rA,$,K):"",$o=typeof TextDecoder<"u"?new TextDecoder("utf-16le"):void 0,Xi=($,K)=>{for(var vA=$,qA=vA>>1,Ae=qA+K/2;!(qA>=Ae)&&IA[qA];)++qA;if((vA=qA<<1)-$>32&&$o)return $o.decode(rA.subarray($,vA));for(var pe="",Pe=0;!(Pe>=K/2);++Pe){var Oe=mA[$+2*Pe>>1];if(Oe==0)break;pe+=String.fromCharCode(Oe)}return pe},pc=($,K,vA)=>{if(vA===void 0&&(vA=2147483647),vA<2)return 0;for(var qA=K,Ae=(vA-=2)<2*$.length?vA/2:$.length,pe=0;pe>1]=Pe,K+=2}return mA[K>>1]=0,K-qA},ng=$=>2*$.length,Dg=($,K)=>{for(var vA=0,qA="";!(vA>=K/4);){var Ae=cA[$+4*vA>>2];if(Ae==0)break;if(++vA,Ae>=65536){var pe=Ae-65536;qA+=String.fromCharCode(55296|pe>>10,56320|1023&pe)}else qA+=String.fromCharCode(Ae)}return qA},Ia=($,K,vA)=>{if(vA===void 0&&(vA=2147483647),vA<4)return 0;for(var qA=K,Ae=qA+vA-4,pe=0;pe<$.length;++pe){var Pe=$.charCodeAt(pe);if(Pe>=55296&&Pe<=57343&&(Pe=65536+((1023&Pe)<<10)|1023&$.charCodeAt(++pe)),cA[K>>2]=Pe,(K+=4)+4>Ae)break}return cA[K>>2]=0,K-qA},bo=$=>{for(var K=0,vA=0;vA<$.length;++vA){var qA=$.charCodeAt(vA);qA>=55296&&qA<=57343&&++vA,K+=4}return K},Zr=($,K)=>{var vA=jo[$];return vA===void 0&&jt(K+" has unknown type "+yg($)),vA},_o=($,K,vA)=>{var qA=[],Ae=$.toWireType(qA,vA);return qA.length&&(TA[K>>2]=cn.toHandle(qA)),Ae},Jc={},Hn=[],Hs=Reflect.construct,Sg=[null,[],[]],mc=($,K)=>{var vA=Sg[$];K===0||K===10?(($===1?k:U)(sg(vA,0)),vA.length=0):vA.push(K)};(()=>{for(var $=new Array(256),K=0;K<256;++K)$[K]=String.fromCharCode(K);to=$})(),uo=I.BindingError=class extends Error{constructor($){super($),this.name="BindingError"}},Vs=I.InternalError=class extends Error{constructor($){super($),this.name="InternalError"}},Object.assign(An.prototype,{isAliasOf($){if(!(this instanceof An)||!($ instanceof An))return!1;var K=this.$$.ptrType.registeredClass,vA=this.$$.ptr;$.$$=$.$$;for(var qA=$.$$.ptrType.registeredClass,Ae=$.$$.ptr;K.baseClass;)vA=K.upcast(vA),K=K.baseClass;for(;qA.baseClass;)Ae=qA.upcast(Ae),qA=qA.baseClass;return K===qA&&vA===Ae},clone(){if(this.$$.ptr||ce(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var $,K=Go(Object.create(Object.getPrototypeOf(this),{$$:{value:($=this.$$,{count:$.count,deleteScheduled:$.deleteScheduled,preservePointerOnDelete:$.preservePointerOnDelete,ptr:$.ptr,ptrType:$.ptrType,smartPtr:$.smartPtr,smartPtrType:$.smartPtrType})}}));return K.$$.count.value+=1,K.$$.deleteScheduled=!1,K},delete(){this.$$.ptr||ce(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&jt("Object already scheduled for deletion"),Ut(this),nt(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||ce(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&jt("Object already scheduled for deletion"),Xe.push(this),Xe.length===1&&HA&&HA(vt),this.$$.deleteScheduled=!0,this}}),I.getInheritedInstanceCount=$t,I.getLiveInheritedInstances=be,I.flushPendingDeletes=vt,I.setDelayFunction=wt,Object.assign(zr.prototype,{getPointee($){return this.rawGetPointee&&($=this.rawGetPointee($)),$},destructor($){this.rawDestructor&&this.rawDestructor($)},argPackAdvance:8,readValueFromPointer:ds,deleteObject($){$!==null&&$.delete()},fromWireType:oo}),Rs=I.UnboundTypeError=(Ls=Error,(ms=rn(Vc="UnboundTypeError",function($){this.name=Vc,this.message=$;var K=new Error($).stack;K!==void 0&&(this.stack=this.toString()+` +`+K.replace(/^Error(:[^\n]*)?\n/,""))})).prototype=Object.create(Ls.prototype),ms.prototype.constructor=ms,ms.prototype.toString=function(){return this.message===void 0?this.name:`${this.name}: ${this.message}`},ms),Object.assign(mr.prototype,{get($){return this.allocated[$]},has($){return this.allocated[$]!==void 0},allocate($){var K=this.freelist.pop()||this.allocated.length;return this.allocated[K]=$,K},free($){this.allocated[$]=void 0,this.freelist.push($)}}),mo.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),mo.reserved=mo.allocated.length,I.count_emval_handles=Dl;var fn,Ga={w:($,K,vA)=>{throw new To($).init(K,vA),$},q:($,K,vA,qA,Ae)=>{},u:($,K,vA,qA)=>{vs($,{name:K=ki(K),fromWireType:function(Ae){return!!Ae},toWireType:function(Ae,pe){return pe?vA:qA},argPackAdvance:8,readValueFromPointer:function(Ae){return this.fromWireType(rA[Ae])},destructorFunction:null})},y:($,K,vA,qA,Ae,pe,Pe,Oe,rt,dt,Mt,Pt,li)=>{Mt=ki(Mt),pe=Ht(Ae,pe),Oe&&(Oe=Ht(Pe,Oe)),dt&&(dt=Ht(rt,dt)),li=Ht(Pt,li);var ct=(Ot=>{if(Ot===void 0)return"_unknown";var Ji=(Ot=Ot.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return Ji>=48&&Ji<=57?`_${Ot}`:Ot})(Mt);((Ot,Ji,qi)=>{I.hasOwnProperty(Ot)?(jt(`Cannot register public name '${Ot}' twice`),Es(I,Ot,Ot),I.hasOwnProperty(qi)&&jt(`Cannot register multiple overloads of a function with the same number of arguments (${qi})!`),I[Ot].overloadTable[qi]=Ji):I[Ot]=Ji})(ct,function(){On(`Cannot construct ${Mt} due to unbound types`,[qA])}),bi([$,K,vA],qA?[qA]:[],function(Ot){var Ji,qi;Ot=Ot[0],qi=qA?(Ji=Ot.registeredClass).instancePrototype:An.prototype;var qs=rn(Mt,function(){if(Object.getPrototypeOf(this)!==Mi)throw new uo("Use 'new' to construct "+Mt);if(zo.constructor_body===void 0)throw new uo(Mt+" has no accessible constructor");var xn=zo.constructor_body[arguments.length];if(xn===void 0)throw new uo(`Tried to invoke ctor of ${Mt} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(zo.constructor_body).toString()}) parameters instead!`);return xn.apply(this,arguments)}),Mi=Object.create(qi,{constructor:{value:qs}});qs.prototype=Mi;var zo=new an(Mt,qs,Mi,li,Ji,pe,Oe,dt);zo.baseClass&&(zo.baseClass.__derivedClasses===void 0&&(zo.baseClass.__derivedClasses=[]),zo.baseClass.__derivedClasses.push(zo));var Mg=new zr(Mt,zo,!0,!1,!1),sr=new zr(Mt+"*",zo,!1,!1,!1),yr=new zr(Mt+" const*",zo,!1,!0,!1);return Xt[$]={pointerType:sr,constPointerType:yr},((xn,Sl,Ks)=>{I.hasOwnProperty(xn)||io("Replacing nonexistant public symbol"),I[xn].overloadTable!==void 0&&Ks!==void 0?I[xn].overloadTable[Ks]=Sl:(I[xn]=Sl,I[xn].argCount=Ks)})(ct,qs),[Mg,sr,yr]})},x:($,K,vA,qA,Ae,pe)=>{var Pe=Gn(K,vA);Ae=Ht(qA,Ae),bi([],[$],function(Oe){var rt=`constructor ${(Oe=Oe[0]).name}`;if(Oe.registeredClass.constructor_body===void 0&&(Oe.registeredClass.constructor_body=[]),Oe.registeredClass.constructor_body[K-1]!==void 0)throw new uo(`Cannot register multiple constructors with identical number of parameters (${K-1}) for class '${Oe.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return Oe.registeredClass.constructor_body[K-1]=()=>{On(`Cannot construct ${Oe.name} due to unbound types`,Pe)},bi([],Pe,dt=>(dt.splice(1,0,null),Oe.registeredClass.constructor_body[K-1]=pr(rt,dt,null,Ae,pe),[])),[]})},i:($,K,vA,qA,Ae,pe,Pe,Oe,rt)=>{var dt=Gn(vA,qA);K=(Mt=>{const Pt=(Mt=Mt.trim()).indexOf("(");return Pt!==-1?Mt.substr(0,Pt):Mt})(K=ki(K)),pe=Ht(Ae,pe),bi([],[$],function(Mt){var Pt=`${(Mt=Mt[0]).name}.${K}`;function li(){On(`Cannot call ${Pt} due to unbound types`,dt)}K.startsWith("@@")&&(K=Symbol[K.substring(2)]),Oe&&Mt.registeredClass.pureVirtualFunctions.push(K);var ct=Mt.registeredClass.instancePrototype,Ot=ct[K];return Ot===void 0||Ot.overloadTable===void 0&&Ot.className!==Mt.name&&Ot.argCount===vA-2?(li.argCount=vA-2,li.className=Mt.name,ct[K]=li):(Es(ct,K,Pt),ct[K].overloadTable[vA-2]=li),bi([],dt,function(Ji){var qi=pr(Pt,Ji,Mt,pe,Pe);return ct[K].overloadTable===void 0?(qi.argCount=vA-2,ct[K]=qi):ct[K].overloadTable[vA-2]=qi,[]}),[]})},k:($,K,vA,qA,Ae,pe,Pe,Oe,rt,dt)=>{K=ki(K),Ae=Ht(qA,Ae),bi([],[$],function(Mt){var Pt=`${(Mt=Mt[0]).name}.${K}`,li={get(){On(`Cannot access ${Pt} due to unbound types`,[vA,Pe])},enumerable:!0,configurable:!0};return li.set=rt?()=>On(`Cannot access ${Pt} due to unbound types`,[vA,Pe]):ct=>jt(Pt+" is a read-only property"),Object.defineProperty(Mt.registeredClass.instancePrototype,K,li),bi([],rt?[vA,Pe]:[vA],function(ct){var Ot=ct[0],Ji={get(){var qs=Pn(this,Mt,Pt+" getter");return Ot.fromWireType(Ae(pe,qs))},enumerable:!0};if(rt){rt=Ht(Oe,rt);var qi=ct[1];Ji.set=function(qs){var Mi=Pn(this,Mt,Pt+" setter"),zo=[];rt(dt,Mi,qi.toWireType(zo,qs)),Js(zo)}}return Object.defineProperty(Mt.registeredClass.instancePrototype,K,Ji),[]}),[]})},t:($,K)=>{vs($,{name:K=ki(K),fromWireType:vA=>{var qA=cn.toValue(vA);return gn(vA),qA},toWireType:(vA,qA)=>cn.toHandle(qA),argPackAdvance:8,readValueFromPointer:fr,destructorFunction:null})},p:($,K,vA)=>{vs($,{name:K=ki(K),fromWireType:qA=>qA,toWireType:(qA,Ae)=>Ae,argPackAdvance:8,readValueFromPointer:Su(K,vA),destructorFunction:null})},g:($,K,vA,qA,Ae)=>{K=ki(K);var pe=rt=>rt;if(qA===0){var Pe=32-8*vA;pe=rt=>rt<>>Pe}var Oe=K.includes("unsigned");vs($,{name:K,fromWireType:pe,toWireType:Oe?function(rt,dt){return this.name,dt>>>0}:function(rt,dt){return this.name,dt},argPackAdvance:8,readValueFromPointer:Wa(K,vA,qA!==0),destructorFunction:null})},a:($,K,vA)=>{var qA=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][K];function Ae(pe){var Pe=TA[pe>>2],Oe=TA[pe+4>>2];return new qA(lA.buffer,Oe,Pe)}vs($,{name:vA=ki(vA),fromWireType:Ae,argPackAdvance:8,readValueFromPointer:Ae},{ignoreDuplicateRegistrations:!0})},o:($,K)=>{var vA=(K=ki(K))==="std::string";vs($,{name:K,fromWireType(qA){var Ae,pe=TA[qA>>2],Pe=qA+4;if(vA)for(var Oe=Pe,rt=0;rt<=pe;++rt){var dt=Pe+rt;if(rt==pe||rA[dt]==0){var Mt=VI(Oe,dt-Oe);Ae===void 0?Ae=Mt:(Ae+="\0",Ae+=Mt),Oe=dt+1}}else{var Pt=new Array(pe);for(rt=0;rt{for(var li=0,ct=0;ct=55296&&Ot<=57343?(li+=4,++ct):li+=3}return li})(Ae):Ae.length;var Oe=fs(4+pe+1),rt=Oe+4;if(TA[Oe>>2]=pe,vA&&Pe)((Pt,li,ct,Ot)=>{if(!(Ot>0))return 0;for(var Ji=ct,qi=ct+Ot-1,qs=0;qs=55296&&Mi<=57343&&(Mi=65536+((1023&Mi)<<10)|1023&Pt.charCodeAt(++qs)),Mi<=127){if(ct>=qi)break;li[ct++]=Mi}else if(Mi<=2047){if(ct+1>=qi)break;li[ct++]=192|Mi>>6,li[ct++]=128|63&Mi}else if(Mi<=65535){if(ct+2>=qi)break;li[ct++]=224|Mi>>12,li[ct++]=128|Mi>>6&63,li[ct++]=128|63&Mi}else{if(ct+3>=qi)break;li[ct++]=240|Mi>>18,li[ct++]=128|Mi>>12&63,li[ct++]=128|Mi>>6&63,li[ct++]=128|63&Mi}}li[ct]=0})(Ae,rA,rt,pe+1);else if(Pe)for(var dt=0;dt255&&(yn(rt),jt("String has UTF-16 code units that do not fit in 8 bits")),rA[rt+dt]=Mt}else for(dt=0;dt{var qA,Ae,pe,Pe,Oe;vA=ki(vA),K===2?(qA=Xi,Ae=pc,Pe=ng,pe=()=>IA,Oe=1):K===4&&(qA=Dg,Ae=Ia,Pe=bo,pe=()=>TA,Oe=2),vs($,{name:vA,fromWireType:rt=>{for(var dt,Mt=TA[rt>>2],Pt=pe(),li=rt+4,ct=0;ct<=Mt;++ct){var Ot=rt+4+ct*K;if(ct==Mt||Pt[Ot>>Oe]==0){var Ji=qA(li,Ot-li);dt===void 0?dt=Ji:(dt+="\0",dt+=Ji),li=Ot+K}}return yn(rt),dt},toWireType:(rt,dt)=>{typeof dt!="string"&&jt(`Cannot pass non-string to C++ string type ${vA}`);var Mt=Pe(dt),Pt=fs(4+Mt+K);return TA[Pt>>2]=Mt>>Oe,Ae(dt,Pt+4,Mt+K),rt!==null&&rt.push(yn,Pt),Pt},argPackAdvance:8,readValueFromPointer:fr,destructorFunction(rt){yn(rt)}})},v:($,K)=>{vs($,{isVoid:!0,name:K=ki(K),argPackAdvance:0,fromWireType:()=>{},toWireType:(vA,qA)=>{}})},j:($,K,vA)=>($=cn.toValue($),K=Zr(K,"emval::as"),_o(K,vA,$)),e:($,K,vA,qA,Ae)=>{var pe,Pe;return($=Hn[$])(K=cn.toValue(K),K[vA=(Pe=Jc[pe=vA])===void 0?ki(pe):Pe],qA,Ae)},d:gn,f:($,K,vA)=>{var qA=((dt,Mt)=>{for(var Pt=new Array(dt),li=0;li>2],"parameter "+li);return Pt})($,K),Ae=qA.shift();$--;var pe,Pe,Oe=new Array($),rt=`methodCaller<(${qA.map(dt=>dt.name).join(", ")}) => ${Ae.name}>`;return pe=rn(rt,(dt,Mt,Pt,li)=>{for(var ct=0,Ot=0;Ot<$;++Ot)Oe[Ot]=qA[Ot].readValueFromPointer(li+ct),ct+=qA[Ot].argPackAdvance;var Ji=vA===1?Hs(Mt,Oe):Mt.apply(dt,Oe);for(Ot=0;Ot<$;++Ot)qA[Ot].deleteObject&&qA[Ot].deleteObject(Oe[Ot]);return _o(Ae,Pt,Ji)}),Pe=Hn.length,Hn.push(pe),Pe},c:$=>{$>4&&(mo.get($).refcount+=1)},b:$=>{var K=cn.toValue($);Js(K),gn($)},h:($,K)=>{var vA=($=Zr($,"_emval_take_value")).readValueFromPointer(K);return cn.toHandle(vA)},m:()=>{Le("")},s:($,K,vA)=>rA.copyWithin($,K,K+vA),r:$=>{rA.length,Le("OOM")},n:($,K,vA,qA)=>{for(var Ae=0,pe=0;pe>2],Oe=TA[K+4>>2];K+=8;for(var rt=0;rt>2]=Ae,0}},In=function(){var $={a:Ga};function K(vA,qA){var Ae,pe;return In=vA.exports,_=In.z,Ae=_.buffer,I.HEAP8=lA=new Int8Array(Ae),I.HEAP16=mA=new Int16Array(Ae),I.HEAPU8=rA=new Uint8Array(Ae),I.HEAPU16=IA=new Uint16Array(Ae),I.HEAP32=cA=new Int32Array(Ae),I.HEAPU32=TA=new Uint32Array(Ae),I.HEAPF32=WA=new Float32Array(Ae),I.HEAPF64=ge=new Float64Array(Ae),Pi=In.C,pe=In.A,Be.unshift(pe),function(){if(_e--,I.monitorRunDependencies&&I.monitorRunDependencies(_e),_e==0&&We){var Pe=We;We=null,Pe()}}(),In}if(_e++,I.monitorRunDependencies&&I.monitorRunDependencies(_e),I.instantiateWasm)try{return I.instantiateWasm($,K)}catch(vA){U(`Module.instantiateWasm callback failed with error: ${vA}`),l(vA)}return gi(0,oe,$,function(vA){K(vA.instance)}).catch(l),{}}(),fs=$=>(fs=In.B)($),ua=$=>(ua=In.D)($),yn=$=>(yn=In.E)($),ba=$=>(ba=In.F)($);I.dynCall_jiji=($,K,vA,qA,Ae)=>(I.dynCall_jiji=In.G)($,K,vA,qA,Ae),I._vertexShaderSource=10688;function Sa(){function $(){fn||(fn=!0,I.calledRun=!0,ue||(Fi(Be),r(I),I.onRuntimeInitialized&&I.onRuntimeInitialized(),function(){if(I.postRun)for(typeof I.postRun=="function"&&(I.postRun=[I.postRun]);I.postRun.length;)ze(I.postRun.shift());Fi(ut)}()))}_e>0||(function(){if(I.preRun)for(typeof I.preRun=="function"&&(I.preRun=[I.preRun]);I.preRun.length;)pt(I.preRun.shift());Fi(xe)}(),_e>0||(I.setStatus?(I.setStatus("Running..."),setTimeout(function(){setTimeout(function(){I.setStatus("")},1),$()},1)):$()))}if(We=function $(){fn||Sa(),fn||(We=$)},I.preInit)for(typeof I.preInit=="function"&&(I.preInit=[I.preInit]);I.preInit.length>0;)I.preInit.pop()();return Sa(),i.ready}})(),IaA=laA,Im=typeof navigator>"u"?"":navigator.userAgent,xs=t=>new RegExp(t,"i").test(Im),Bc=t=>{if(xs(t)){const i=new RegExp(`${t}\\/([\\d.]+)`),r=Im.match(i);if(r&&r[1])return r[1]}return""},lV=t=>{if(xs(t)){const i=new RegExp(`${t}\\/(\\d+)`),r=Im.match(i);if(r&&r[1])return parseFloat(r[1])}return NaN},z8=/AppleWebKit\/([\d.]+)/i.exec(Im);z8&&parseFloat(z8[1]);var Y9=xs("iPad"),V9=typeof navigator<"u"&&navigator.maxTouchPoints&&navigator.maxTouchPoints>2&&xs("Macintosh"),J9=xs("iPhone")&&!Y9,uaA=xs("iPod"),H9=J9||Y9||uaA||V9,kW=xs("Android"),EaA=function(){if(kW){const t=Im.match(/Android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i);if(t){const i=t[1]&&parseFloat(t[1]),r=t[2]&&parseFloat(t[2]);if(i&&r)return parseFloat(`${t[1]}.${t[2]}`);if(i)return i}}return NaN}();kW&&xs("webkit")&&EaA<2.3;var daA=xs("Firefox"),CaA=Bc("Firefox");lV("Firefox");var q9=xs("Edge"),haA=Bc("Edge"),K9=xs("Edg"),BaA=Bc("Edg");lV("Edg");var j9=xs("SogouMobileBrowser"),QaA=Bc("SogouMobileBrowser"),W9=xs("MetaSr\\s"),paA=Bc("MetaSr\\s"),Nv=xs("TBS"),maA=Bc("TBS"),z9=xs("XWEB"),faA=Bc("XWEB");xs("MSIE\\s8\\.0");var yaA=xs("MSIE\\/\\d+");(function(){if(yaA){const t=/MSIE\s(\d+)\.\d/.exec(Im);let i=t&&parseFloat(t[1]);return!i&&/Trident\/7.0/i.test(Im)&&/rv:11.0/.test(Im)&&(i=11),i}return NaN})();var DaA=xs("(micromessenger|webbrowser)"),SaA=Bc("MicroMessenger"),LW=!Nv&&xs("MQQBrowser")&&xs("COVC"),UW=!Nv&&xs("MQQBrowser")&&!xs("COVC"),Z8=UW||LW?Bc("MQQBrowser"):"",Z9=!Nv&&xs(" QQBrowser"),MaA=Bc(" QQBrowser"),X9=!Nv&&xs("QQBrowserLite"),vaA=Bc("QQBrowserLite"),$9=!Nv&&xs("MQBHD"),RaA=Bc("MQBHD");xs("Windows");!H9&&xs("MAC OS X");!kW&&xs("Linux");xs("CrOS");xs("MicroMessenger");xs("UCBrowser");xs("Electron");var AX=xs("MiuiBrowser"),waA=Bc("MiuiBrowser"),eX=xs("HuaweiBrowser");xs("Huawei")||xs("HUAWEI");xs("Honor")||xs("HONOR");var _aA=Bc("HuaweiBrowser"),tX=xs("SamsungBrowser"),TaA=Bc("SamsungBrowser"),iX=xs("HeyTapBrowser"),NaA=Bc("HeyTapBrowser"),oX=xs("VivoBrowser"),GaA=Bc("VivoBrowser");xs("OpenHarmony");Bc("OpenHarmony");var baA=()=>lV("Chrome"),X8=xs("CriOS"),sX=xs("Chrome"),kaA=!q9&&!W9&&!j9&&!Nv&&!z9&&!K9&&!Z9&&!AX&&!eX&&!tX&&!iX&&!oX&&sX;xs("HeadlessChrome");var LaA=baA(),UaA=Bc("Chrome");lV("Electron");var FaA=!sX&&!UW&&!LW&&!X9&&!$9&&xs("Safari"),nX=Bc("Version"),rX=(()=>{if(V9)return nX;if(H9){const t=Im.match(/OS (\d+)_(\d+)/i);if(t&&t[1]){let i=t[1];return t[2]&&(i+=`.${t[2]}`),i}}return""})();Number(rX.split(".")[0]);(()=>{const t=Number(rX.split(".")[0]);return t===14||t===13})();OaA();function OaA(){const t=new Map([[daA,["Firefox",CaA]],[K9,["Edg",BaA]],[kaA,["Chrome",UaA]],[X8,["ChiOS",Bc("CriOS")]],[FaA&&!X8,["Safari",nX]],[Nv,["TBS",maA]],[z9,["XWEB",faA]],[DaA&&J9,["WeChat",SaA]],[Z9,["QQ(Win)",MaA]],[UW,["QQ(Mobile)",Z8]],[LW,["QQ(Mobile X5)",Z8]],[X9,["QQ(Mac)",vaA]],[$9,["QQ(iPad)",RaA]],[AX,["MI",waA]],[eX,["HW",_aA]],[tX,["Samsung",TaA]],[iX,["OPPO",NaA]],[oX,["VIVO",GaA]],[q9,["EDGE",haA]],[j9,["SogouMobile",QaA]],[W9,["Sogou",paA]]]);let i="unknown",r="unknown";return t.has(!0)&&([i,r]=t.get(!0)),{name:i,version:r}}var dc=1e-6,eT=typeof Float32Array<"u"?Float32Array:Array,aX={};function PaA(){var t=new eT(16);return eT!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0),t[0]=1,t[5]=1,t[10]=1,t[15]=1,t}function xaA(t){var i=new eT(16);return i[0]=t[0],i[1]=t[1],i[2]=t[2],i[3]=t[3],i[4]=t[4],i[5]=t[5],i[6]=t[6],i[7]=t[7],i[8]=t[8],i[9]=t[9],i[10]=t[10],i[11]=t[11],i[12]=t[12],i[13]=t[13],i[14]=t[14],i[15]=t[15],i}function YaA(t,i){return t[0]=i[0],t[1]=i[1],t[2]=i[2],t[3]=i[3],t[4]=i[4],t[5]=i[5],t[6]=i[6],t[7]=i[7],t[8]=i[8],t[9]=i[9],t[10]=i[10],t[11]=i[11],t[12]=i[12],t[13]=i[13],t[14]=i[14],t[15]=i[15],t}function VaA(t,i,r,l,I,h,f,w,_,k,U,j,lA,rA,mA,IA){var cA=new eT(16);return cA[0]=t,cA[1]=i,cA[2]=r,cA[3]=l,cA[4]=I,cA[5]=h,cA[6]=f,cA[7]=w,cA[8]=_,cA[9]=k,cA[10]=U,cA[11]=j,cA[12]=lA,cA[13]=rA,cA[14]=mA,cA[15]=IA,cA}function JaA(t,i,r,l,I,h,f,w,_,k,U,j,lA,rA,mA,IA,cA){return t[0]=i,t[1]=r,t[2]=l,t[3]=I,t[4]=h,t[5]=f,t[6]=w,t[7]=_,t[8]=k,t[9]=U,t[10]=j,t[11]=lA,t[12]=rA,t[13]=mA,t[14]=IA,t[15]=cA,t}function gX(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function HaA(t,i){if(t===i){var r=i[1],l=i[2],I=i[3],h=i[6],f=i[7],w=i[11];t[1]=i[4],t[2]=i[8],t[3]=i[12],t[4]=r,t[6]=i[9],t[7]=i[13],t[8]=l,t[9]=h,t[11]=i[14],t[12]=I,t[13]=f,t[14]=w}else t[0]=i[0],t[1]=i[4],t[2]=i[8],t[3]=i[12],t[4]=i[1],t[5]=i[5],t[6]=i[9],t[7]=i[13],t[8]=i[2],t[9]=i[6],t[10]=i[10],t[11]=i[14],t[12]=i[3],t[13]=i[7],t[14]=i[11],t[15]=i[15];return t}function qaA(t,i){var r=i[0],l=i[1],I=i[2],h=i[3],f=i[4],w=i[5],_=i[6],k=i[7],U=i[8],j=i[9],lA=i[10],rA=i[11],mA=i[12],IA=i[13],cA=i[14],TA=i[15],WA=r*w-l*f,ge=r*_-I*f,ue=r*k-h*f,xe=l*_-I*w,Be=l*k-h*w,ut=I*k-h*_,pt=U*IA-j*mA,ze=U*cA-lA*mA,_e=U*TA-rA*mA,We=j*cA-lA*IA,Le=j*TA-rA*IA,oe=lA*TA-rA*cA,je=WA*oe-ge*Le+ue*We+xe*_e-Be*ze+ut*pt;return je?(je=1/je,t[0]=(w*oe-_*Le+k*We)*je,t[1]=(I*Le-l*oe-h*We)*je,t[2]=(IA*ut-cA*Be+TA*xe)*je,t[3]=(lA*Be-j*ut-rA*xe)*je,t[4]=(_*_e-f*oe-k*ze)*je,t[5]=(r*oe-I*_e+h*ze)*je,t[6]=(cA*ue-mA*ut-TA*ge)*je,t[7]=(U*ut-lA*ue+rA*ge)*je,t[8]=(f*Le-w*_e+k*pt)*je,t[9]=(l*_e-r*Le-h*pt)*je,t[10]=(mA*Be-IA*ue+TA*WA)*je,t[11]=(j*ue-U*Be-rA*WA)*je,t[12]=(w*ze-f*We-_*pt)*je,t[13]=(r*We-l*ze+I*pt)*je,t[14]=(IA*ge-mA*xe-cA*WA)*je,t[15]=(U*xe-j*ge+lA*WA)*je,t):null}function KaA(t,i){var r=i[0],l=i[1],I=i[2],h=i[3],f=i[4],w=i[5],_=i[6],k=i[7],U=i[8],j=i[9],lA=i[10],rA=i[11],mA=i[12],IA=i[13],cA=i[14],TA=i[15],WA=r*w-l*f,ge=r*_-I*f,ue=r*k-h*f,xe=l*_-I*w,Be=l*k-h*w,ut=I*k-h*_,pt=U*IA-j*mA,ze=U*cA-lA*mA,_e=U*TA-rA*mA,We=j*cA-lA*IA,Le=j*TA-rA*IA,oe=lA*TA-rA*cA;return t[0]=w*oe-_*Le+k*We,t[1]=I*Le-l*oe-h*We,t[2]=IA*ut-cA*Be+TA*xe,t[3]=lA*Be-j*ut-rA*xe,t[4]=_*_e-f*oe-k*ze,t[5]=r*oe-I*_e+h*ze,t[6]=cA*ue-mA*ut-TA*ge,t[7]=U*ut-lA*ue+rA*ge,t[8]=f*Le-w*_e+k*pt,t[9]=l*_e-r*Le-h*pt,t[10]=mA*Be-IA*ue+TA*WA,t[11]=j*ue-U*Be-rA*WA,t[12]=w*ze-f*We-_*pt,t[13]=r*We-l*ze+I*pt,t[14]=IA*ge-mA*xe-cA*WA,t[15]=U*xe-j*ge+lA*WA,t}function jaA(t){var i=t[0],r=t[1],l=t[2],I=t[3],h=t[4],f=t[5],w=t[6],_=t[7],k=t[8],U=t[9],j=t[10],lA=t[11],rA=t[12],mA=t[13],IA=t[14],cA=i*f-r*h,TA=i*w-l*h,WA=r*w-l*f,ge=k*mA-U*rA,ue=k*IA-j*rA,xe=U*IA-j*mA;return _*(i*xe-r*ue+l*ge)-I*(h*xe-f*ue+w*ge)+t[15]*(k*WA-U*TA+j*cA)-lA*(rA*WA-mA*TA+IA*cA)}function cX(t,i,r){var l=i[0],I=i[1],h=i[2],f=i[3],w=i[4],_=i[5],k=i[6],U=i[7],j=i[8],lA=i[9],rA=i[10],mA=i[11],IA=i[12],cA=i[13],TA=i[14],WA=i[15],ge=r[0],ue=r[1],xe=r[2],Be=r[3];return t[0]=ge*l+ue*w+xe*j+Be*IA,t[1]=ge*I+ue*_+xe*lA+Be*cA,t[2]=ge*h+ue*k+xe*rA+Be*TA,t[3]=ge*f+ue*U+xe*mA+Be*WA,ge=r[4],ue=r[5],xe=r[6],Be=r[7],t[4]=ge*l+ue*w+xe*j+Be*IA,t[5]=ge*I+ue*_+xe*lA+Be*cA,t[6]=ge*h+ue*k+xe*rA+Be*TA,t[7]=ge*f+ue*U+xe*mA+Be*WA,ge=r[8],ue=r[9],xe=r[10],Be=r[11],t[8]=ge*l+ue*w+xe*j+Be*IA,t[9]=ge*I+ue*_+xe*lA+Be*cA,t[10]=ge*h+ue*k+xe*rA+Be*TA,t[11]=ge*f+ue*U+xe*mA+Be*WA,ge=r[12],ue=r[13],xe=r[14],Be=r[15],t[12]=ge*l+ue*w+xe*j+Be*IA,t[13]=ge*I+ue*_+xe*lA+Be*cA,t[14]=ge*h+ue*k+xe*rA+Be*TA,t[15]=ge*f+ue*U+xe*mA+Be*WA,t}function WaA(t,i,r){var l,I,h,f,w,_,k,U,j,lA,rA,mA,IA=r[0],cA=r[1],TA=r[2];return i===t?(t[12]=i[0]*IA+i[4]*cA+i[8]*TA+i[12],t[13]=i[1]*IA+i[5]*cA+i[9]*TA+i[13],t[14]=i[2]*IA+i[6]*cA+i[10]*TA+i[14],t[15]=i[3]*IA+i[7]*cA+i[11]*TA+i[15]):(l=i[0],I=i[1],h=i[2],f=i[3],w=i[4],_=i[5],k=i[6],U=i[7],j=i[8],lA=i[9],rA=i[10],mA=i[11],t[0]=l,t[1]=I,t[2]=h,t[3]=f,t[4]=w,t[5]=_,t[6]=k,t[7]=U,t[8]=j,t[9]=lA,t[10]=rA,t[11]=mA,t[12]=l*IA+w*cA+j*TA+i[12],t[13]=I*IA+_*cA+lA*TA+i[13],t[14]=h*IA+k*cA+rA*TA+i[14],t[15]=f*IA+U*cA+mA*TA+i[15]),t}function zaA(t,i,r){var l=r[0],I=r[1],h=r[2];return t[0]=i[0]*l,t[1]=i[1]*l,t[2]=i[2]*l,t[3]=i[3]*l,t[4]=i[4]*I,t[5]=i[5]*I,t[6]=i[6]*I,t[7]=i[7]*I,t[8]=i[8]*h,t[9]=i[9]*h,t[10]=i[10]*h,t[11]=i[11]*h,t[12]=i[12],t[13]=i[13],t[14]=i[14],t[15]=i[15],t}function ZaA(t,i,r,l){var I,h,f,w,_,k,U,j,lA,rA,mA,IA,cA,TA,WA,ge,ue,xe,Be,ut,pt,ze,_e,We,Le=l[0],oe=l[1],je=l[2],Dt=Math.sqrt(Le*Le+oe*oe+je*je);return Dt0?(r[0]=2*(w*f+U*l+_*h-k*I)/j,r[1]=2*(_*f+U*I+k*l-w*h)/j,r[2]=2*(k*f+U*h+w*I-_*l)/j):(r[0]=2*(w*f+U*l+_*h-k*I),r[1]=2*(_*f+U*I+k*l-w*h),r[2]=2*(k*f+U*h+w*I-_*l)),lX(t,i,r),t}function agA(t,i){return t[0]=i[12],t[1]=i[13],t[2]=i[14],t}function IX(t,i){var r=i[0],l=i[1],I=i[2],h=i[4],f=i[5],w=i[6],_=i[8],k=i[9],U=i[10];return t[0]=Math.sqrt(r*r+l*l+I*I),t[1]=Math.sqrt(h*h+f*f+w*w),t[2]=Math.sqrt(_*_+k*k+U*U),t}function ggA(t,i){var r=new eT(3);IX(r,i);var l=1/r[0],I=1/r[1],h=1/r[2],f=i[0]*l,w=i[1]*I,_=i[2]*h,k=i[4]*l,U=i[5]*I,j=i[6]*h,lA=i[8]*l,rA=i[9]*I,mA=i[10]*h,IA=f+U+mA,cA=0;return IA>0?(cA=2*Math.sqrt(IA+1),t[3]=.25*cA,t[0]=(j-rA)/cA,t[1]=(lA-_)/cA,t[2]=(w-k)/cA):f>U&&f>mA?(cA=2*Math.sqrt(1+f-U-mA),t[3]=(j-rA)/cA,t[0]=.25*cA,t[1]=(w+k)/cA,t[2]=(lA+_)/cA):U>mA?(cA=2*Math.sqrt(1+U-f-mA),t[3]=(lA-_)/cA,t[0]=(w+k)/cA,t[1]=.25*cA,t[2]=(j+rA)/cA):(cA=2*Math.sqrt(1+mA-f-U),t[3]=(w-k)/cA,t[0]=(lA+_)/cA,t[1]=(j+rA)/cA,t[2]=.25*cA),t}function cgA(t,i,r,l){i[0]=l[12],i[1]=l[13],i[2]=l[14];var I=l[0],h=l[1],f=l[2],w=l[4],_=l[5],k=l[6],U=l[8],j=l[9],lA=l[10];r[0]=Math.sqrt(I*I+h*h+f*f),r[1]=Math.sqrt(w*w+_*_+k*k),r[2]=Math.sqrt(U*U+j*j+lA*lA);var rA=1/r[0],mA=1/r[1],IA=1/r[2],cA=I*rA,TA=h*mA,WA=f*IA,ge=w*rA,ue=_*mA,xe=k*IA,Be=U*rA,ut=j*mA,pt=lA*IA,ze=cA+ue+pt,_e=0;return ze>0?(_e=2*Math.sqrt(ze+1),t[3]=.25*_e,t[0]=(xe-ut)/_e,t[1]=(Be-WA)/_e,t[2]=(TA-ge)/_e):cA>ue&&cA>pt?(_e=2*Math.sqrt(1+cA-ue-pt),t[3]=(xe-ut)/_e,t[0]=.25*_e,t[1]=(TA+ge)/_e,t[2]=(Be+WA)/_e):ue>pt?(_e=2*Math.sqrt(1+ue-cA-pt),t[3]=(Be-WA)/_e,t[0]=(TA+ge)/_e,t[1]=.25*_e,t[2]=(xe+ut)/_e):(_e=2*Math.sqrt(1+pt-cA-ue),t[3]=(TA-ge)/_e,t[0]=(Be+WA)/_e,t[1]=(xe+ut)/_e,t[2]=.25*_e),t}function lgA(t,i,r,l){var I=i[0],h=i[1],f=i[2],w=i[3],_=I+I,k=h+h,U=f+f,j=I*_,lA=I*k,rA=I*U,mA=h*k,IA=h*U,cA=f*U,TA=w*_,WA=w*k,ge=w*U,ue=l[0],xe=l[1],Be=l[2];return t[0]=(1-(mA+cA))*ue,t[1]=(lA+ge)*ue,t[2]=(rA-WA)*ue,t[3]=0,t[4]=(lA-ge)*xe,t[5]=(1-(j+cA))*xe,t[6]=(IA+TA)*xe,t[7]=0,t[8]=(rA+WA)*Be,t[9]=(IA-TA)*Be,t[10]=(1-(j+mA))*Be,t[11]=0,t[12]=r[0],t[13]=r[1],t[14]=r[2],t[15]=1,t}function IgA(t,i,r,l,I){var h=i[0],f=i[1],w=i[2],_=i[3],k=h+h,U=f+f,j=w+w,lA=h*k,rA=h*U,mA=h*j,IA=f*U,cA=f*j,TA=w*j,WA=_*k,ge=_*U,ue=_*j,xe=l[0],Be=l[1],ut=l[2],pt=I[0],ze=I[1],_e=I[2],We=(1-(IA+TA))*xe,Le=(rA+ue)*xe,oe=(mA-ge)*xe,je=(rA-ue)*Be,Dt=(1-(lA+TA))*Be,ni=(cA+WA)*Be,Jt=(mA+ge)*ut,gi=(cA-WA)*ut,Fi=(1-(lA+IA))*ut;return t[0]=We,t[1]=Le,t[2]=oe,t[3]=0,t[4]=je,t[5]=Dt,t[6]=ni,t[7]=0,t[8]=Jt,t[9]=gi,t[10]=Fi,t[11]=0,t[12]=r[0]+pt-(We*pt+je*ze+Jt*_e),t[13]=r[1]+ze-(Le*pt+Dt*ze+gi*_e),t[14]=r[2]+_e-(oe*pt+ni*ze+Fi*_e),t[15]=1,t}function ugA(t,i){var r=i[0],l=i[1],I=i[2],h=i[3],f=r+r,w=l+l,_=I+I,k=r*f,U=l*f,j=l*w,lA=I*f,rA=I*w,mA=I*_,IA=h*f,cA=h*w,TA=h*_;return t[0]=1-j-mA,t[1]=U+TA,t[2]=lA-cA,t[3]=0,t[4]=U-TA,t[5]=1-k-mA,t[6]=rA+IA,t[7]=0,t[8]=lA+cA,t[9]=rA-IA,t[10]=1-k-j,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function EgA(t,i,r,l,I,h,f){var w=1/(r-i),_=1/(I-l),k=1/(h-f);return t[0]=2*h*w,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=2*h*_,t[6]=0,t[7]=0,t[8]=(r+i)*w,t[9]=(I+l)*_,t[10]=(f+h)*k,t[11]=-1,t[12]=0,t[13]=0,t[14]=f*h*2*k,t[15]=0,t}function uX(t,i,r,l,I){var h=1/Math.tan(i/2);if(t[0]=h/r,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=h,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=-1,t[12]=0,t[13]=0,t[15]=0,I!=null&&I!==1/0){var f=1/(l-I);t[10]=(I+l)*f,t[14]=2*I*l*f}else t[10]=-1,t[14]=-2*l;return t}saA(aX,{add:()=>DgA,adjoint:()=>KaA,clone:()=>xaA,copy:()=>YaA,create:()=>PaA,decompose:()=>cgA,determinant:()=>jaA,equals:()=>RgA,exactEquals:()=>vgA,frob:()=>ygA,fromQuat:()=>ugA,fromQuat2:()=>rgA,fromRotation:()=>igA,fromRotationTranslation:()=>lX,fromRotationTranslationScale:()=>lgA,fromRotationTranslationScaleOrigin:()=>IgA,fromScaling:()=>tgA,fromTranslation:()=>egA,fromValues:()=>VaA,fromXRotation:()=>ogA,fromYRotation:()=>sgA,fromZRotation:()=>ngA,frustum:()=>EgA,getRotation:()=>ggA,getScaling:()=>IX,getTranslation:()=>agA,identity:()=>gX,invert:()=>qaA,lookAt:()=>pgA,mul:()=>wgA,multiply:()=>cX,multiplyScalar:()=>SgA,multiplyScalarAndAdd:()=>MgA,ortho:()=>BgA,orthoNO:()=>EX,orthoZO:()=>QgA,perspective:()=>dgA,perspectiveFromFieldOfView:()=>hgA,perspectiveNO:()=>uX,perspectiveZO:()=>CgA,rotate:()=>ZaA,rotateX:()=>XaA,rotateY:()=>$aA,rotateZ:()=>AgA,scale:()=>zaA,set:()=>JaA,str:()=>fgA,sub:()=>_gA,subtract:()=>dX,targetTo:()=>mgA,translate:()=>WaA,transpose:()=>HaA});var dgA=uX;function CgA(t,i,r,l,I){var h=1/Math.tan(i/2);if(t[0]=h/r,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=h,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=-1,t[12]=0,t[13]=0,t[15]=0,I!=null&&I!==1/0){var f=1/(l-I);t[10]=I*f,t[14]=I*l*f}else t[10]=-1,t[14]=-l;return t}function hgA(t,i,r,l){var I=Math.tan(i.upDegrees*Math.PI/180),h=Math.tan(i.downDegrees*Math.PI/180),f=Math.tan(i.leftDegrees*Math.PI/180),w=Math.tan(i.rightDegrees*Math.PI/180),_=2/(f+w),k=2/(I+h);return t[0]=_,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=k,t[6]=0,t[7]=0,t[8]=-(f-w)*_*.5,t[9]=(I-h)*k*.5,t[10]=l/(r-l),t[11]=-1,t[12]=0,t[13]=0,t[14]=l*r/(r-l),t[15]=0,t}function EX(t,i,r,l,I,h,f){var w=1/(i-r),_=1/(l-I),k=1/(h-f);return t[0]=-2*w,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*_,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=2*k,t[11]=0,t[12]=(i+r)*w,t[13]=(I+l)*_,t[14]=(f+h)*k,t[15]=1,t}var BgA=EX;function QgA(t,i,r,l,I,h,f){var w=1/(i-r),_=1/(l-I),k=1/(h-f);return t[0]=-2*w,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*_,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=k,t[11]=0,t[12]=(i+r)*w,t[13]=(I+l)*_,t[14]=h*k,t[15]=1,t}function pgA(t,i,r,l){var I,h,f,w,_,k,U,j,lA,rA,mA=i[0],IA=i[1],cA=i[2],TA=l[0],WA=l[1],ge=l[2],ue=r[0],xe=r[1],Be=r[2];return Math.abs(mA-ue)0&&(U*=rA=1/Math.sqrt(rA),j*=rA,lA*=rA);var mA=_*lA-k*j,IA=k*U-w*lA,cA=w*j-_*U;return(rA=mA*mA+IA*IA+cA*cA)>0&&(mA*=rA=1/Math.sqrt(rA),IA*=rA,cA*=rA),t[0]=mA,t[1]=IA,t[2]=cA,t[3]=0,t[4]=j*cA-lA*IA,t[5]=lA*mA-U*cA,t[6]=U*IA-j*mA,t[7]=0,t[8]=U,t[9]=j,t[10]=lA,t[11]=0,t[12]=I,t[13]=h,t[14]=f,t[15]=1,t}function fgA(t){return"mat4("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+", "+t[4]+", "+t[5]+", "+t[6]+", "+t[7]+", "+t[8]+", "+t[9]+", "+t[10]+", "+t[11]+", "+t[12]+", "+t[13]+", "+t[14]+", "+t[15]+")"}function ygA(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]+t[3]*t[3]+t[4]*t[4]+t[5]*t[5]+t[6]*t[6]+t[7]*t[7]+t[8]*t[8]+t[9]*t[9]+t[10]*t[10]+t[11]*t[11]+t[12]*t[12]+t[13]*t[13]+t[14]*t[14]+t[15]*t[15])}function DgA(t,i,r){return t[0]=i[0]+r[0],t[1]=i[1]+r[1],t[2]=i[2]+r[2],t[3]=i[3]+r[3],t[4]=i[4]+r[4],t[5]=i[5]+r[5],t[6]=i[6]+r[6],t[7]=i[7]+r[7],t[8]=i[8]+r[8],t[9]=i[9]+r[9],t[10]=i[10]+r[10],t[11]=i[11]+r[11],t[12]=i[12]+r[12],t[13]=i[13]+r[13],t[14]=i[14]+r[14],t[15]=i[15]+r[15],t}function dX(t,i,r){return t[0]=i[0]-r[0],t[1]=i[1]-r[1],t[2]=i[2]-r[2],t[3]=i[3]-r[3],t[4]=i[4]-r[4],t[5]=i[5]-r[5],t[6]=i[6]-r[6],t[7]=i[7]-r[7],t[8]=i[8]-r[8],t[9]=i[9]-r[9],t[10]=i[10]-r[10],t[11]=i[11]-r[11],t[12]=i[12]-r[12],t[13]=i[13]-r[13],t[14]=i[14]-r[14],t[15]=i[15]-r[15],t}function SgA(t,i,r){return t[0]=i[0]*r,t[1]=i[1]*r,t[2]=i[2]*r,t[3]=i[3]*r,t[4]=i[4]*r,t[5]=i[5]*r,t[6]=i[6]*r,t[7]=i[7]*r,t[8]=i[8]*r,t[9]=i[9]*r,t[10]=i[10]*r,t[11]=i[11]*r,t[12]=i[12]*r,t[13]=i[13]*r,t[14]=i[14]*r,t[15]=i[15]*r,t}function MgA(t,i,r,l){return t[0]=i[0]+r[0]*l,t[1]=i[1]+r[1]*l,t[2]=i[2]+r[2]*l,t[3]=i[3]+r[3]*l,t[4]=i[4]+r[4]*l,t[5]=i[5]+r[5]*l,t[6]=i[6]+r[6]*l,t[7]=i[7]+r[7]*l,t[8]=i[8]+r[8]*l,t[9]=i[9]+r[9]*l,t[10]=i[10]+r[10]*l,t[11]=i[11]+r[11]*l,t[12]=i[12]+r[12]*l,t[13]=i[13]+r[13]*l,t[14]=i[14]+r[14]*l,t[15]=i[15]+r[15]*l,t}function vgA(t,i){return t[0]===i[0]&&t[1]===i[1]&&t[2]===i[2]&&t[3]===i[3]&&t[4]===i[4]&&t[5]===i[5]&&t[6]===i[6]&&t[7]===i[7]&&t[8]===i[8]&&t[9]===i[9]&&t[10]===i[10]&&t[11]===i[11]&&t[12]===i[12]&&t[13]===i[13]&&t[14]===i[14]&&t[15]===i[15]}function RgA(t,i){var r=t[0],l=t[1],I=t[2],h=t[3],f=t[4],w=t[5],_=t[6],k=t[7],U=t[8],j=t[9],lA=t[10],rA=t[11],mA=t[12],IA=t[13],cA=t[14],TA=t[15],WA=i[0],ge=i[1],ue=i[2],xe=i[3],Be=i[4],ut=i[5],pt=i[6],ze=i[7],_e=i[8],We=i[9],Le=i[10],oe=i[11],je=i[12],Dt=i[13],ni=i[14],Jt=i[15];return Math.abs(r-WA)<=dc*Math.max(1,Math.abs(r),Math.abs(WA))&&Math.abs(l-ge)<=dc*Math.max(1,Math.abs(l),Math.abs(ge))&&Math.abs(I-ue)<=dc*Math.max(1,Math.abs(I),Math.abs(ue))&&Math.abs(h-xe)<=dc*Math.max(1,Math.abs(h),Math.abs(xe))&&Math.abs(f-Be)<=dc*Math.max(1,Math.abs(f),Math.abs(Be))&&Math.abs(w-ut)<=dc*Math.max(1,Math.abs(w),Math.abs(ut))&&Math.abs(_-pt)<=dc*Math.max(1,Math.abs(_),Math.abs(pt))&&Math.abs(k-ze)<=dc*Math.max(1,Math.abs(k),Math.abs(ze))&&Math.abs(U-_e)<=dc*Math.max(1,Math.abs(U),Math.abs(_e))&&Math.abs(j-We)<=dc*Math.max(1,Math.abs(j),Math.abs(We))&&Math.abs(lA-Le)<=dc*Math.max(1,Math.abs(lA),Math.abs(Le))&&Math.abs(rA-oe)<=dc*Math.max(1,Math.abs(rA),Math.abs(oe))&&Math.abs(mA-je)<=dc*Math.max(1,Math.abs(mA),Math.abs(je))&&Math.abs(IA-Dt)<=dc*Math.max(1,Math.abs(IA),Math.abs(Dt))&&Math.abs(cA-ni)<=dc*Math.max(1,Math.abs(cA),Math.abs(ni))&&Math.abs(TA-Jt)<=dc*Math.max(1,Math.abs(TA),Math.abs(Jt))}var wgA=cX,_gA=dX,BL=`#version 300 es in vec2 a_position; in vec2 a_texCoord; out vec2 v_texCoord; void main() { gl_Position = vec4(a_position.x, a_position.y, 0, 1); v_texCoord = a_texCoord; -}`,oW=t=>`precision highp float; +}`,FW=t=>`precision highp float; uniform sampler2D mask;in vec2 v_texCoord; out vec4 outColor; -void main() {${t}}`,HaA=`#version 300 es +void main() {${t}}`,TgA=`#version 300 es uniform sampler2D lastMask; -${oW(`highp float current = texture(mask, v_texCoord).r; +${FW(`highp float current = texture(mask, v_texCoord).r; highp float previous = texture(lastMask, v_texCoord).r; highp float diff = abs(current - previous); const float smoothFactor = 0.05; @@ -392,8 +392,8 @@ ${oW(`highp float current = texture(mask, v_texCoord).r; ? previous * (1.0 - smoothFactor) + current * smoothFactor : current; outColor = vec4(blendedMask,0.0,0.0, 1.0);`)} -`,qaA=`#version 300 es -${oW(` vec2 o = 1.0 / vec2(textureSize(mask, 0)); +`,NgA=`#version 300 es +${FW(` vec2 o = 1.0 / vec2(textureSize(mask, 0)); float size = 3.0; int sizeDb = int(size*size); float samples[9]; @@ -417,8 +417,8 @@ ${oW(` vec2 o = 1.0 / vec2(textureSize(mask, 0)); } float endR=samples[sizeDb/2]>0.5?1.0:0.0; outColor = vec4(endR, 0.0, 0.0, 1.0);`)} -`,KaA=`#version 300 es -${oW(` vec2 o = 1.0 / vec2(textureSize(mask, 0)); +`,GgA=`#version 300 es +${FW(` vec2 o = 1.0 / vec2(textureSize(mask, 0)); float size = 3.0; float side = (size - 1.0) / 2.0; float stronglyEroded = 1.0; @@ -429,7 +429,7 @@ ${oW(` vec2 o = 1.0 / vec2(textureSize(mask, 0)); } } outColor = vec4(stronglyEroded, 0.0, 0.0, 1.0);`)} -`,jaA=`#version 300 es +`,bgA=`#version 300 es precision highp float; uniform sampler2D mask; uniform sampler2D originalMask; @@ -482,7 +482,7 @@ void main() { } outColor = vec4(finalAlpha, 0.0, 0.0, 1.0); } -`,WaA=`#version 300 es +`,kgA=`#version 300 es precision highp float; uniform sampler2D mask; in vec2 v_texCoord; @@ -524,18 +524,18 @@ void main() { float edge = nmsEdge > 0.0 ? 1.0 : 0.0; outColor = vec4(edge, 0.0, 0.0, 1.0); } -`,zaA=class{constructor(){Hg(this,"gl"),Hg(this,"positionBuffer"),Hg(this,"texCoordBuffer"),Hg(this,"ratio"),Hg(this,"_tdProgram"),Hg(this,"_kcProgram"),Hg(this,"_mdProgram"),Hg(this,"_edgeProgram"),Hg(this,"_borderProgram"),Hg(this,"_lastMaskTexture")}init(t,i,r,l){this.initParams(t,i,r,l),this.initPrograms()}initParams(t,i,r,l){this.gl=t,this.positionBuffer=i,this.texCoordBuffer=r,this.ratio=l}initPrograms(){this._tdProgram=this.createProgram(tL,HaA,["mask","lastMask"]),this._mdProgram=this.createProgram(tL,qaA,["mask"]),this._kcProgram=this.createProgram(tL,KaA,["mask"]),this._borderProgram=this.createProgram(tL,jaA,["mask","maskEdge","originalMask"]),this._edgeProgram=this.createProgram(tL,WaA,["mask"])}setAttributes(...t){const{gl:i}=this;t.forEach((r,l)=>{i.enableVertexAttribArray(l),i.bindBuffer(i.ARRAY_BUFFER,r),i.vertexAttribPointer(l,2,i.FLOAT,!1,0,0)})}createShader(t,i){const{gl:r}=this,l=r.createShader(t);return r.shaderSource(l,i),r.compileShader(l),l}createProgram(t,i,r){const{gl:l}=this,u=this.createShader(l.FRAGMENT_SHADER,i),B=this.createShader(l.VERTEX_SHADER,t),f=l.createProgram();if(l.attachShader(f,B),l.attachShader(f,u),l.linkProgram(f),!l.getProgramParameter(f,l.LINK_STATUS))throw new Error(`${l.getProgramInfoLog(f)}`);return l.useProgram(f),this.setAttributes(this.positionBuffer,this.texCoordBuffer),r.forEach((w,_)=>{l.uniform1i(l.getUniformLocation(f,w),1+_)}),f}createFramebuffer(t){const{gl:i}=this,r=i.createFramebuffer();return i.bindFramebuffer(i.FRAMEBUFFER,r),i.framebufferTexture2D(i.FRAMEBUFFER,i.COLOR_ATTACHMENT0,i.TEXTURE_2D,t,0),r}getTempTexture(t,i,r=!0,l){const{gl:u}=this;let B,f;u.useProgram(t),this.ratio===16/9?(B=640,f=360):(B=640,f=480);const w=u.createTexture();u.activeTexture(u.TEXTURE0),u.bindTexture(u.TEXTURE_2D,w),u.texParameteri(u.TEXTURE_2D,u.TEXTURE_MIN_FILTER,u.LINEAR),u.texParameteri(u.TEXTURE_2D,u.TEXTURE_MAG_FILTER,u.LINEAR),u.texParameteri(u.TEXTURE_2D,u.TEXTURE_WRAP_S,u.CLAMP_TO_EDGE),u.texParameteri(u.TEXTURE_2D,u.TEXTURE_WRAP_T,u.CLAMP_TO_EDGE),u.pixelStorei(u.PACK_ALIGNMENT,1),u.pixelStorei(u.UNPACK_ALIGNMENT,1),u.texImage2D(u.TEXTURE_2D,0,u.RGBA,B,f,0,u.RGBA,u.UNSIGNED_BYTE,null);const _=this.createFramebuffer(w);return i.forEach((k,F)=>{k&&(u.activeTexture(u.TEXTURE1+F),u.bindTexture(u.TEXTURE_2D,k||null))}),this.setAttributes(this.positionBuffer,this.texCoordBuffer),u.viewport(0,0,B,f),u.drawArrays(u.TRIANGLE_STRIP,0,4),r&&i.forEach((k,F)=>{k&&l!==F&&u.deleteTexture(k)}),u.deleteFramebuffer(_),w}postProcessing(t){this._lastMaskTexture=this.getTempTexture(this._tdProgram,[t,this._lastMaskTexture]);let i=this.getTempTexture(this._kcProgram,[this._lastMaskTexture],!1);for(let r=0;r<3;r++){i=this.getTempTexture(this._mdProgram,[i]);const l=this.getTempTexture(this._edgeProgram,[i],!1);i=this.getTempTexture(this._borderProgram,[i,l,this._lastMaskTexture],!0,2)}return i}close(){const{gl:t}=this;this._borderProgram&&t.deleteProgram(this._borderProgram),this._edgeProgram&&t.deleteProgram(this._edgeProgram),this._kcProgram&&t.deleteProgram(this._kcProgram),this._mdProgram&&t.deleteProgram(this._mdProgram),this._tdProgram&&t.deleteProgram(this._tdProgram)}},ZaA=new zaA,XaA=(t=>(t[t.TRACE=0]="TRACE",t[t.DEBUG=1]="DEBUG",t[t.INFO=2]="INFO",t[t.WARN=3]="WARN",t[t.ERROR=4]="ERROR",t[t.NONE=5]="NONE",t))(XaA||{}),$aA={alpha:!0,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!0,powerPreference:"low-power"},g_=570703,cj=0,G9=class b9{constructor(i){this.core=i,Hg(this,"seq"),Hg(this,"_core"),Hg(this,"log"),Hg(this,"preLoadPromise"),Hg(this,"startResolve"),Hg(this,"startReject"),Hg(this,"mediaPipeSolutions"),Hg(this,"assetsPath"),Hg(this,"currentType"),Hg(this,"onAbort"),Hg(this,"isAborted",!1),cj+=1,this.seq=cj,this._core=i,this.log=i.log.createChild({id:`${this.getAlias()}${cj}`}),this.log.info("created"),i.assetsPath&&(this.preLoadPromise=this.preload(i.assetsPath))}static isSupported(){if(zrA<90)return!1;const i=document.createElement("canvas").getContext("webgl2",$aA);return!!(i&&i instanceof WebGL2RenderingContext)}async preload(i){try{this._core.room.videoManager.Wasm||(this._core.room.videoManager.Wasm=await MrA());const r=l=>{var u;this.core.kvStatManager.addEnum({key:g_,value:this.getKVTypeValue(!1,this.isAborted,"ABORT_IN_INFERENCE")}),this.isAborted=!0,this.log.error("mediaPipeSolutions abort",l),this.core.clearStarted(this,this.getGroup()),this.stop(),(u=this.onAbort)==null||u.call(this,l)};this._core.room.videoManager.initVirtualBackground(r,S9,ZaA),await this._core.initVisionTaskRegistry(i,["ImageSegmenter"])}catch(r){const{RtcError:l,ErrorCode:u}=this._core.errorModule;throw new l({code:u.INVALID_OPERATION,message:`VirtualBackground preload error, please redeploy the assets of the npm package. detail: ${r}`})}}getName(){return b9.Name}getAlias(){return"vb"}getValidateRule(i){switch(i){case"start":return frA(this._core);case"update":return yrA(this._core);case"stop":return DrA(this._core)}}getGroup(){return"vb"}getKVTypeValue(i=!1,r=!1,l="NONE"){let u=0;switch(this.currentType){case"blur":u|=0;break;case"image":u|=1;break;case"color":u|=2}switch(i&&(u|=256),r&&(u|=512),l){case"ABORT_IN_INFERENCE":u|=4096;break;case"ABORT_IN_VIDEO_MANAGER":u|=8192;break;case"OTHER":u|=61440}return u}hexToRgb(i){const r=i.replace("#","");return[parseInt(r.slice(0,2),16)/255,parseInt(r.slice(2,4),16)/255,parseInt(r.slice(4,6),16)/255]}async start(i){const{type:r="blur",src:l,blurLevel:u=3,onAbort:B}=i;this.currentType=r,this.onAbort=B,r==="color"&&typeof i.color=="string"&&(i.color=this.hexToRgb(i.color));const{auth:f}=await prA({sdkAppId:i.sdkAppId,userId:i.userId,userSig:i.userSig,core:this._core}),{RtcError:w,ErrorCodeDictionary:_,ErrorCode:k}=this._core.errorModule;if(!f){const F=this._core.utils.isOverseaSdkAppId(i.sdkAppId)?"https://trtc.io/document/56025":"https://cloud.tencent.com/document/product/647/85386";throw new w({code:_.NEED_TO_BUY,messageParams:{value:"Virtual Background",url:F}})}if(!this.preLoadPromise){if(!this._core.assetsPath)throw new w({code:k.INVALID_PARAMETER,message:"you need to deploy the assets of the npm package and set assetsPath param in TRTC.create()"});this.preLoadPromise=this.preload(this._core.assetsPath)}return await this.preLoadPromise,this.core.room.videoManager.setVirtualBackground({type:r,imageUrl:l,blurLevel:u,enableFaceCentering:i.enableFaceCentering,enableEffectOptimization:i.enableEffectOptimization,color:i.color,onAbort:F=>{var j;this.core.kvStatManager.addEnum({key:g_,value:this.getKVTypeValue(!0,this.isAborted,"ABORT_IN_VIDEO_MANAGER")}),this.isAborted=!0,this.core.clearStarted(this,this.getGroup()),this.stop(),delete this.preLoadPromise,(j=this.onAbort)==null||j.call(this,F)}}).then(()=>{this.core.kvStatManager.addEnum({key:g_,value:this.getKVTypeValue(!1,this.isAborted,"NONE")})}).catch(F=>{throw this.core.kvStatManager.addEnum({key:g_,value:this.getKVTypeValue(!0,this.isAborted,"OTHER")}),F})}async update(i){const{type:r,src:l}=i;return r!==this.currentType&&(this.currentType=r),r==="color"&&typeof i.color=="string"&&(i.color=this.hexToRgb(i.color)),this.core.room.videoManager.setVirtualBackground({type:r,imageUrl:l,blurLevel:i.blurLevel,enableFaceCentering:i.enableFaceCentering,enableEffectOptimization:i.enableEffectOptimization,color:i.color}).then(()=>{this.core.kvStatManager.addEnum({key:g_,value:this.getKVTypeValue(!1,!1,"NONE")})}).catch(()=>{this.core.kvStatManager.addEnum({key:g_,value:this.getKVTypeValue(!0,!1,"OTHER")})})}async stop(){return this.core.room.videoManager.setVirtualBackground()}};Hg(G9,"Name","VirtualBackground");var k9=G9,AgA=k9;const egA=Object.freeze(Object.defineProperty({__proto__:null,VirtualBackground:k9,default:AgA},Symbol.toStringTag,{value:"Module"})),tgA=gU(egA);var igA=Object.defineProperty,ogA=(t,i,r)=>i in t?igA(t,i,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[i]=r,CL=(t,i,r)=>ogA(t,typeof i!="symbol"?i+"":i,r);function sgA(t){return{name:"BasicBeautyOptions",type:"object",required:!0,allowEmpty:!1,properties:{beauty:{required:!1,type:"number"},brightness:{required:!1,type:"number"},ruddy:{required:!1,type:"number"}},validate(i,r,l,u){const{RtcError:B,ErrorCode:f,ErrorCodeDictionary:w}=t.errorModule;if(t.utils.isOverseaSdkAppId(i.sdkAppId))throw new B({code:f.INVALID_OPERATION,extraCode:w.INVALID_OPERATION,message:"This feature is not yet available in your country or region. If you have any questions, you can go to the community for consultation: https://zhiliao.qq.com/s/cWSPGIIM62CC/c3TPGIIM62CQ"})}}}function ngA(t){return{name:"StopBasicBeautyOptions",required:!1}}var rgA=(()=>{var t=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return function(i={}){var r,l,u=i;u.ready=new Promise(($,K)=>{r=$,l=K});var B=Object.assign({},u),f="";typeof document<"u"&&document.currentScript&&(f=document.currentScript.src),t&&(f=t),f=f.indexOf("blob:")!==0?f.substr(0,f.replace(/[?#].*/,"").lastIndexOf("/")+1):"";var w,_,k=u.print||console.log.bind(console),F=u.printErr||console.error.bind(console);function j($){if(ni($))return function(K){for(var vA=atob(K),qA=new Uint8Array(vA.length),te=0;te$.startsWith(ft);function Vt($){return Promise.resolve().then(()=>function(K){if(K==ge&&w)return new Uint8Array(w);var vA=j(K);if(vA)return vA;throw"both async and sync fetching of the wasm failed"}($))}function gi($,K,vA,qA){return function(te,pe,Oe){return Vt(te).then(Fe=>WebAssembly.instantiate(Fe,pe)).then(Fe=>Fe).then(Oe,Fe=>{F(`failed to asynchronously prepare wasm: ${Fe}`),It(Fe)})}(K,vA,qA)}ni(ge="data:application/octet-stream;base64,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IAEoAgA2AgAgAiABKAIENgIEIAIgASgCCDYCCCACIAEoAgw2AgwgAiABKAIQNgIQIAIgASgCFDYCFCACIAEoAhg2AhggAiABKAIcNgIcIAIgASgCIDYCICACIAEoAiQ2AiQgAiABKAIoNgIoIAIgASgCLDYCLCACIAEoAjA2AjAgAiABKAI0NgI0IAIgASgCODYCOCACIAEoAjw2AjwgAUFAayEBIAJBQGsiAiAFTQ0ACwsgAiAETw0BA0AgAiABKAIANgIAIAFBBGohASACQQRqIgIgBEkNAAsMAQsgA0EESQRAIAAhAgwBCyAAIANBBGsiBEsEQCAAIQIMAQsgACECA0AgAiABLQAAOgAAIAIgAS0AAToAASACIAEtAAI6AAIgAiABLQADOgADIAFBBGohASACQQRqIgIgBE0NAAsLIAIgA0kEQANAIAIgAS0AADoAACABQQFqIQEgAkEBaiICIANHDQALCyAACwsAIAEgAiAAEEIaCxIAIAFBAXRB8MoAakECIAAQQgv5AQEEfwJ/IAEQKiECIwBBEGsiBSQAAn8gAC0AC0EHdgRAIAAoAgQMAQsgAC0AC0H/AHELIgRBAE8EQAJAIAIgAC0AC0EHdgR/IAAoAghB/////wdxQQFrBUEKCyIDIARrTQRAIAJFDQECfyAALQALQQd2BEAgACgCAAwBCyAACyIDIAQEfyACIANqIAMgBBBFIAEgAkEAIAMgBGogAUsbQQAgASADTxtqBSABCyACEEUgACACIARqIgEQMSAFQQA6AA8gASADaiAFLQAPOgAADAELIAAgAyACIARqIANrIARBACACIAEQRAsgBUEQaiQAIAAMAQsQJwALC/ICAgJ/AX4CQCACRQ0AIAAgAToAACAAIAJqIgNBAWsgAToAACACQQNJDQAgACABOgACIAAgAToAASADQQNrIAE6AAAgA0ECayABOgAAIAJBB0kNACAAIAE6AAMgA0EEayABOgAAIAJBCUkNACAAQQAgAGtBA3EiBGoiAyABQf8BcUGBgoQIbCIBNgIAIAMgAiAEa0F8cSIEaiICQQRrIAE2AgAgBEEJSQ0AIAMgATYCCCADIAE2AgQgAkEIayABNgIAIAJBDGsgATYCACAEQRlJDQAgAyABNgIYIAMgATYCFCADIAE2AhAgAyABNgIMIAJBEGsgATYCACACQRRr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ACACQQA6AA8DQCABBEAgACACLQAPOgAAIAFBAWshASAAQQFqIQAMAQsLIAJBEGokAAsaACAALQALQQd2BEAgACgCCBogACgCABAZCwvmAQEFfyMAQRBrIgUkACMAQSBrIgMkACMAQRBrIgQkACAEIAA2AgwgBCAAIAFqNgIIIAMgBCgCDDYCGCADIAQoAgg2AhwgBEEQaiQAIAMoAhghBCADKAIcIQYjAEEQayIBJAAgASAGNgIMIAIgBCAGIARrIgQQQyABIAIgBGo2AgggAyABKAIMNgIQIAMgASgCCDYCFCABQRBqJAAgAyAAIAMoAhAgAGtqNgIMIAMgAiADKAIUIAJrajYCCCAFIAMoAgw2AgggBSADKAIINgIMIANBIGokACAFKAIMIQcgBUEQaiQAIAcLDwAgAgRAIAAgASACEDILC/UCAQV/IwBBEGsiByQAIAIgAUF/c0Hv////B2pNBEACfyAALQALQQd2BEAgACgCAAwBCyAACyEIIAdBBGoiCSAAIAFB5////wNJBH8gByABQQF0NgIMIAcgASACajYCBCMAQRBrIgIkACAJKAIAIAdBDGoiCigCAEkhCyACQRBqJAAgCiAJIAsbKAIAIgJBC08EfyACQRBqQXBxIgIgAkEBayICIAJBC0YbBUEKC0EBagVB7////wcLEDAgBygCBCECIAcoAggaIAQEQCACIAggBBAjCyAFBEAgAiAEaiAGIAUQIwsgAyAEayEGIAMgBEcEQCACIARqIAVqIAQgCGogBhAjCyABQQpHBEAgCBAZCyAAIAI2AgAgACAAKAIIQYCAgIB4cSAHKAIIQf////8HcXI2AgggACAAKAIIQYCAgIB4cjYCCCAAIAQgBWogBmoiADYCBCAHQQA6AAwgACACaiAHLQAMOgAAIAdBEGokAA8LECcACwoAIAAgASACEEMLuQEBBH8jAEEQayIEJAAgBCACNgIMIwBBoAFrIgMkACADIAAgA0GeAWogARsiBjYClAFBfyEFIAMgAUEBayIAQQAgACABTRs2ApgBIANBAEGQARAmIgBBfzYCTCAAQSA2AiQgAEF/NgJQIAAgAEGfAWo2AiwgACAAQZQBajYCVAJAIAFBAEgEQEHo3gBBPTYCAAwBCyAGQQA6AAAgAEH9CiACQR8QTSEFCyAAQaABaiQAIARBEGokACAFCwQA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KAIARQ0AIAIgBCgCGDYCAAsgAEEBRiEFDAELQQAhBQsgBEFAayQAIAULMQAgACABKAIIQQAQHgRAIAEgAiADED0PCyAAKAIIIgAgASACIAMgACgCACgCHBEGAAsYACAAIAEoAghBABAeBEAgASACIAMQPQsLnQEBAn8jAEFAaiIDJAACf0EBIAAgAUEAEB4NABpBACABRQ0AGkEAIAFBjM0AECAiAUUNABogA0EMakEAQTQQJhogA0EBNgI4IANBfzYCFCADIAA2AhAgAyABNgIIIAEgA0EIaiACKAIAQQEgASgCACgCHBEGACADKAIgIgBBAUYEQCACIAMoAhg2AgALIABBAUYLIQQgA0FAayQAIAQLCgAgACABQQAQHgtOAgF/AXwjAEEQayICJAAgAkEANgIMIAEoAgRB1M8AIAJBDGoQCSEDIAIoAgwiAQRAIAEQAQsgACADRAAAAAAAAAAAYjoAOCACQRBqJAALNwEBfyMAQRBrIgIkACACIAEtADg2AgggAEHUzwAgAkEIahAHNgIEIABB1NUANgIAIAJBEGokAAuoAQEFfyAAKAJUIgMoAgAhBSADKAIEIgQgACgCFCAAKAIcIgdrIgYgBCAGSRsiBgRAIAUgByAGECIaIAMgAygCACAGaiIFNgIAIAMgAygCBCAGayIENgIECyAEIAIgAiAESxsiBARAIAUgASAEECIaIAMgAygCACAEaiIFNgIAIAMgAygCBCAEazYCBAsgBUEAOgAAIAAgACgCLCIBNgIcIAAgATYCFCACC5wBAQJ/IwBBEGsiAiQAQcgAEBwhASAAKAIEIgAQAiACIAA2AgggAUHMLSACQQhqEAc2AgQgAUHU1QA2AgAgAUEBNgIcIAFB1NUANgIYIAFBATYCFCABQdTVADYCECABQQE2AgwgAUHU1QA2AgggAUEAOgAgIAFBADYCRCABQoCAgIAwNwI8IAFBADsANyABQQA7ACsgAkEQaiQAIAELigUCBn4CfyABIAEoAgBBB2pBeHEiAUEQajYCACAAIQkgASkDACEDIAEpAwghBSMAQSBrIgAkAAJAIAVC////////////AIMiBEKAgICAgIDAgDx9IARCgICAgICAwP/DAH1UBEAgBUIEhiADQjyIhCEEIANC//////////8PgyIDQoGAgICAgICACFoEQCAEQoGAgICAgICAwAB8IQIMAgsgBEKAgICAgICAgEB9IQIgA0KAgICAgICAgAhSDQEgAiAEQgGDfCECDAELIANQIARCgICAgICAwP//AFQgBEKAgICAgIDA//8AURtFBEAgBUIEhiADQjyIhEL/////////A4NCgICAgICAgPz/AIQhAgwBC0KAgICAgICA+P8AIQIgBEL///////+//8MAVg0AQgAhAiAEQjCIpyIBQZH3AEkNACADIQIgBUL///////8/g0KAgICAgIDAAIQiBCEGAkAgAUGB9wBrIghBwABxBEAgAyAIQUBqrYYhBkIAIQIMAQsgCEUNACAGIAitIgeGIAJBwAAgCGutiIQhBiACIAeGIQILIAAgAjcDECAAIAY3AxgCQEGB+AAgAWsiAUHAAHEEQCAEIAFBQGqtiCEDQgAhBAwBCyABRQ0AIARBwAAgAWuthiADIAGtIgKIhCEDIAQgAoghBAsgACADNwMAIAAgBDcDCCAAKQMIQgSGIAApAwAiA0I8iIQhAiAAKQMQIAApAxiEQgBSrSADQv//////////D4OEIgNCgYCAgICAgIAIWgRAIAJCAXwhAgwBCyADQoCAgICAgICACFINACACQgGDIAJ8IQILIABBIGokACAJIAIgBUKAgICAgICAgIB/g4S/OQMAC0ABAn8jAEEQayICJAAgAiABNgIMIAJB1NUANgIIIAJBCGogABEBACEDIAIoAgwiAQRAIAEQAwsgAkEQaiQAIAMLBABCAAsEAEEAC/YCAQh/IwBBIGsiAyQAIAMgACgCHCIENgIQIAAoAhQhBSADIAI2AhwgAyABNgIYIAMgBSAEayIBNgIUIAEgAmohBUECIQcCfwJAAkACQCAAKAI8IANBEGoiAUECIANBDGoQDSIEBH9B6N4AIAQ2AgBBfwVBAAsEQCABIQQMAQsDQCAFIAMoAgwiBkYNAiAGQQBIBEAgASEEDAQLIAEgBiABKAIEIghLIglBA3RqIgQgBiAIQQAgCRtrIgggBCgCAGo2AgAgAUEMQQQgCRtqIgEgASgCACAIazYCACAFIAZrIQUgACgCPCAEIgEgByAJayIHIANBDGoQDSIGBH9B6N4AIAY2AgBBfwVBAAtFDQALCyAFQX9HDQELIAAgACgCLCIBNgIcIAAgATYCFCAAIAEgACgCMGo2AhAgAgwBCyAAQQA2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EGokAAsiAQF+IAEgAq0gA61CIIaEIAQgABEMACIFQiCIpyQBIAWnCzcBAX8jAEEQayICJAAgAiABKAI8NgIIIABBnNAAIAJBCGoQBzYCBCAAQdTVADYCACACQRBqJAALC/NKFQBBgAgLhCZzZXRCZWF1dHkALSsgICAwWDB4AC0wWCswWCAwWC0weCsweCAweAB1bnNpZ25lZCBzaG9ydAB1bnNpZ25lZCBpbnQAaW5pdABmbG9hdAB1aW50NjRfdABibHVyUmFkaXVzAHZlY3RvcgBtaXJyb3IAYXR0YWNoU2hhZGVyAGRlbGV0ZVNoYWRlcgBjcmVhdGVTaGFkZXIAY29tcGlsZVNoYWRlcgB1bnNpZ25lZCBjaGFyAHN0ZDo6ZXhjZXB0aW9uAHJvdGF0aW9uAG5hbgBsaW5rUHJvZ3JhbQBkZWxldGVQcm9ncmFtAGNyZWF0ZVByb2dyYW0AYm9vbABlbXNjcmlwdGVuOjp2YWwAc2V0V2F0ZXJNYXJrAHN0b3BXYXRlck1hcmsAdW5zaWduZWQgbG9uZwBzdGQ6OndzdHJpbmcAYmFzaWNfc3RyaW5nAHN0ZDo6c3RyaW5nAHN0ZDo6dTE2c3RyaW5nAHN0ZDo6dTMyc3RyaW5nAGluZgAlZgBjbG9zZQBkb3VibGUAdmJNb2RlAHNoYWRlclNvdXJjZQB2b2lkAHNhbXBsZUNvbG9yICs9IHRleHR1cmUoZnJhbWUsIGJsdXJDb29yZGluYXRlc1sATkFOAElORgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxzaG9ydD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgc2hvcnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgaW50PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxmbG9hdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dWludDhfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50OF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50MTZfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50MTZfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dWludDY0X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludDY0X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQzMl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQzMl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxjaGFyPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBjaGFyPgBzdGQ6OmJhc2ljX3N0cmluZzx1bnNpZ25lZCBjaGFyPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxzaWduZWQgY2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8bG9uZz4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgbG9uZz4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8ZG91YmxlPgB2ZWMyIGMgPSB2X3RleENvb3JkOwB2ZWMyIGMgPSB2ZWMyKDEuMCAtIHZfdGV4Q29vcmQueCwgdl90ZXhDb29yZC55KTsAYyA9IHZlYzIoMS4wIC0gYy54LCAxLjAgLSBjLnkpOwBjID0gdmVjMihjLnksIDEuMCAtIGMueCk7AGMgPSB2ZWMyKDEuMCAtIGMueSwgYy54KTsAQWxsSW4xAC4ALjAsAC4wKSpvKSoAKG51bGwpACkqby55KTsgICAgdmVjMiBjb29yZDIgPSB2ZWMyKGZsb2F0KAAgICAgYyA9IHZlYzIodl90ZXhDb29yZC54LCAxLjAgLSB2X3RleENvb3JkLnkpOyAgICB2ZWMyIGNvb3JkMSA9IHZlYzIoZmxvYXQoACksIChjLnkgLWNvb3JkMS55KSAvIG8ueSAvIGZsb2F0KAApKm8ueSk7ICAgIGlmIChjLnggPiBjb29yZDEueCAmJiBjLnggPCBjb29yZDIueCAmJiBjLnkgPiBjb29yZDEueSAmJiBjLnkgPCBjb29yZDIueSkgeyAgICAgIHZlYzQgd2F0ZXJDb2xvciA9IHRleHR1cmUod2F0ZXJNYXJrLCB2ZWMyKChjLnggLSBjb29yZDEueCkgIC8gby54IC8gZmxvYXQoACkgKiBvLngsIGZsb2F0KABvdXRDb2xvci5yZ2IgKz0gdmVjMygAKTsgICAgICAgdmVjMyBzbW9vdGhDb2xvciA9IG91dENvbG9yLnJnYiArIChvdXRDb2xvci5yZ2ItdmVjMyhoaWdoUGFzcykpKmFscGhhKjAuMTsgICAgICAgc21vb3RoQ29sb3IgPSBtYXgoc21vb3RoQ29sb3IsIHZlYzMoMC4wKSk7ICAgICAgIHNtb290aENvbG9yID0gY2xhbXAocG93KHNtb290aENvbG9yLCB2ZWMzKABnKz1HKGMsdmVjMigAICAgICAgdmVjMiBvZmZzZXQgPSB2ZWMyKABdID0gdl90ZXhDb29yZC54eSArIG9mZnNldCAqIHZlYzIoADsgACkpLCB2ZWMzKDAuMCksIHZlYzMoMS4wKSk7ICAgICAgdmVjMyBzY3JlZW4gPSB2ZWMzKDEuMCkgLSAodmVjMygxLjApLXNtb290aENvbG9yKSAqICh2ZWMzKDEuMCktb3V0Q29sb3IucmdiKTsgICAgICAgdmVjMyBsaWdodGVuID0gbWF4KHNtb290aENvbG9yLCBvdXRDb2xvci5yZ2IpOyAgICAgICB2ZWMzIGJlYXV0eUNvbG9yID0gbWl4KG1peChvdXRDb2xvci5yZ2IsIHNjcmVlbiwgYWxwaGEpLCBsaWdodGVuLCBhbHBoYSk7ICAgICAgb3V0Q29sb3IucmdiID0gbWl4KG91dENvbG9yLnJnYiwgYmVhdXR5Q29sb3IsIAAKICAgICAgY29uc3QgbWF0MyBzYXR1cmF0ZU1hdHJpeCA9IG1hdDMoMS4xMTAyLC0wLjA1OTgsLTAuMDYxLC0wLjA3NzQsMS4wODI2LC0wLjExODYsLTAuMDIyOCwtMC4wMjI4LDEuMTc3Mik7CiAgICAgIHZlYzMgd2FybUNvbG9yID0gb3V0Q29sb3IucmdiICogc2F0dXJhdGVNYXRyaXg7CiAgICAgIG91dENvbG9yLnJnYiA9IG1peChvdXRDb2xvci5yZ2IsIHdhcm1Db2xvciwgACAgICAgIHNhbXBsZUNvbG9yID0gc2FtcGxlQ29sb3IgLyA2Mi4wOyAgICAgICBmbG9hdCBoaWdoUGFzcyA9IG91dENvbG9yLmcgLSBzYW1wbGVDb2xvciArIDAuNTsgICAgICAgY29uc3QgaGlnaHAgdmVjMyBXID0gdmVjMygwLjI5OSwwLjU4NywwLjExNCk7ICAgICAgZmxvYXQgbHVtaW5hbmNlID0gZG90KG91dENvbG9yLnJnYiwgVyk7ICAgICAgIGZsb2F0IGFscGhhID0gcG93KGx1bWluYW5jZSwgAF0pLmcgKiAAKSkpOyAgICAgIG91dENvbG9yID0gbWl4KG91dENvbG9yLHdhdGVyQ29sb3IsICB3YXRlckNvbG9yLmEpOyAgICB9ICAgIAApOyAgICAAKTsgICAgICB2ZWMyIGJsdXJDb29yZGluYXRlc1syNF07ICAgICAgACAgICAgIGZsb2F0IHNhbXBsZUNvbG9yID0gb3V0Q29sb3IuZyAqIDIyLjA7ICAgICAgIAAjdmVyc2lvbiAzMDAgZXMKICAgIHByZWNpc2lvbiBoaWdocCBmbG9hdDsKICAgIHVuaWZvcm0gc2FtcGxlcjJEIGZyYW1lOwogICAgdW5pZm9ybSBzYW1wbGVyMkQgbWFzazsKICAgIHVuaWZvcm0gc2FtcGxlcjJEIGJnOwogICAgdW5pZm9ybSBzYW1wbGVyMkQgd2F0ZXJNYXJrOwogICAgdW5pZm9ybSBzYW1wbGVyMkQgbGFzdE1hc2s7CiAgICB1bmlmb3JtIG1hdDQgdV9vZmZzZXRNYXRyaXg7CiAgICB1bmlmb3JtIHZlYzMgdV9jb2xvcjsKICAgIGluIHZlYzIgdl90ZXhDb29yZDsKICAgIG91dCB2ZWM0IG91dENvbG9yOwogICAgdmVjNCBHKHZlYzIgYyx2ZWMyIHMpewogICAgICByZXR1cm4gdGV4dHVyZShmcmFtZSx0ZXh0dXJlKG1hc2ssYytzKS5yPjAuMz9jOmMrcyk7CiAgICB9CiAgICB2b2lkIG1haW4oKSB7CiAgICAgIAAKICAgICAgdmVjMiBvZmZzZXRNYXNrVVYgPSAodV9vZmZzZXRNYXRyaXggKiB2ZWM0KGMsIDAsIDEpKS54eTsKICAgICAgZmxvYXQgaXNJbnNpZGVYID0gKG9mZnNldE1hc2tVVi54ID49IDAuMCkgJiYgKG9mZnNldE1hc2tVVi54IDw9IDEuMCkgPyAxLjAgOiAwLjA7CiAgICAgIGZsb2F0IGlzSW5zaWRlWSA9IChvZmZzZXRNYXNrVVYueSA+PSAwLjApICYmIChvZmZzZXRNYXNrVVYueSA8PSAxLjApID8gMS4wIDogMC4wOwogICAgICBmbG9hdCBpc0luc2lkZSA9IGlzSW5zaWRlWCAqIGlzSW5zaWRlWTsKICAgICAgZmxvYXQgbWFza2VkQWxwaGEgPSB0ZXh0dXJlKG1hc2ssIG9mZnNldE1hc2tVVikuciAqIGlzSW5zaWRlOwogICAgICBtYXNrZWRBbHBoYSA9IG1hc2tlZEFscGhhPDAuNT8yLjAqbWFza2VkQWxwaGEqbWFza2VkQWxwaGE6MS4wLTIuMCooMS4wLW1hc2tlZEFscGhhKSooMS4wLW1hc2tlZEFscGhhKTsKICAgICAgc3JjX2NvbG9yID0gdGV4dHVyZShmcmFtZSwgb2Zmc2V0TWFza1VWICwgaXNJbnNpZGUpOwogICAgICBvdXRDb2xvciA9IG1peCh0ZXh0dXJlKGJnLCBjKSwgc3JjX2NvbG9yLCBtYXNrZWRBbHBoYSk7CiAgICAACiAgICB2ZWM0IGcgPSB2ZWM0KDAuMCk7CiAgICAACiAgICAgIGMueSA9IDEuMCAtIGMueTsKICAgICAgdmVjNCBzcmNfY29sb3IgPSB0ZXh0dXJlKGZyYW1lLCBjKTsKICAgICAgZmxvYXQgYSA9IHRleHR1cmUobWFzaywgYykucjsKICAgICAgYSA9IGE8MC41PzIuMCphKmE6MS4wLTIuMCooMS4wLWEpKigxLjAtYSk7CiAgICAgIC8vIGZsb2F0IGEyID0gdGV4dHVyZShsYXN0TWFzaywgYykuYTsKICAgICAgLy8gYTIgPSBhMjwwLjU/Mi4wKmEyKmEyOjEuMC0yLjAqKDEuMC1hMikqKDEuMC1hMik7CiAgICAgIC8vIGZsb2F0IGRlbHRhID0gYSAtIGEyOwogICAgICAvLyBpZiAoZGVsdGEgPCAwLjI1ICYmIGRlbHRhID4gLTAuMjUpCiAgICAgIC8vIHsKICAgICAgLy8gICAgIGEgPSBhICsgMC41KmRlbHRhOwogICAgICAvLyB9CiAgICAgIAogICAgICB2ZWMyIG8gPSAxLjAgLyB2ZWMyKHRleHR1cmVTaXplKGZyYW1lLCAwKSk7CiAgICAACiAgICAgIG91dENvbG9yID0gZzsKICAAI3ZlcnNpb24gMzAwIGVzCmluIHZlYzIgYV9wb3NpdGlvbjsKaW4gdmVjMiBhX3RleENvb3JkOwoKdW5pZm9ybSBtYXQ0IHVfdGV4dHVyZU1hdHJpeDsKCm91dCB2ZWMyIHZfdGV4Q29vcmQ7CnZvaWQgbWFpbigpIHsKICBnbF9Qb3NpdGlvbiA9IHZlYzQoYV9wb3NpdGlvbi54LCBhX3Bvc2l0aW9uLnksIDAsIDEpOwogIHZfdGV4Q29vcmQgPSh1X3RleHR1cmVNYXRyaXggKiB2ZWM0KGFfdGV4Q29vcmQsIDAsIDEpKS54eTsKfQoAc2V0QmVhdXR5ICVmICVmICVmICVmICVmCgBvdXRDb2xvciA9IHNyY19jb2xvcjsKAG91dENvbG9yID0gbWl4KHZlYzQodV9jb2xvciwxLjApLHNyY19jb2xvcixhKTsKADZBbGxJbjEAAIAoAABfFgAAUDZBbGxJbjEAAAAABCkAAHAWAAAAAAAAaBYAAFBLNkFsbEluMQAAAAQpAACMFgAAAQAAAGgWAABpaQB2AHZpAHwWAADMFgAATjEwZW1zY3JpcHRlbjN2YWxFAACAKAAAuBYAAGlpaQB2aWlpAAAAALwnAAB8FgAAcCgAAHAoAABwKAAAcCgAAHAoAAB2aWlkZGRkZABBkC4LyAi8JwAAfBYAAHAoAABwKAAAcCgAAHAoAAB2aWlkZGRkALwnAAB8FgAAdmlpALwnAADMFgAAzBYAAHwWAADMFgAAHCgAALwnAADMFgAAoBcAAE5TdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFAACAKAAAYBcAAMwWAAC8JwAAzBYAAMwWAABOU3QzX18yMTJiYXNpY19zdHJpbmdJaE5TXzExY2hhcl90cmFpdHNJaEVFTlNfOWFsbG9jYXRvckloRUVFRQAAgCgAALgXAABOU3QzX18yMTJiYXNpY19zdHJpbmdJd05TXzExY2hhcl90cmFpdHNJd0VFTlNfOWFsbG9jYXRvckl3RUVFRQAAgCgAAAAYAABOU3QzX18yMTJiYXNpY19zdHJpbmdJRHNOU18xMWNoYXJfdHJhaXRzSURzRUVOU185YWxsb2NhdG9ySURzRUVFRQAAAIAoAABIGAAATlN0M19fMjEyYmFzaWNfc3RyaW5nSURpTlNfMTFjaGFyX3RyYWl0c0lEaUVFTlNfOWFsbG9jYXRvcklEaUVFRUUAAACAKAAAlBgAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWNFRQAAgCgAAOAYAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lhRUUAAIAoAAAIGQAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJaEVFAACAKAAAMBkAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SXNFRQAAgCgAAFgZAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0l0RUUAAIAoAACAGQAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJaUVFAACAKAAAqBkAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWpFRQAAgCgAANAZAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lsRUUAAIAoAAD4GQAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJbUVFAACAKAAAIBoAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SXhFRQAAgCgAAEgaAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0l5RUUAAIAoAABwGgAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJZkVFAACAKAAAmBoAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWRFRQAAgCgAAMAaAAD+gitlRxVnQAAAAAAAADhDAAD6/kIudr86O568mvcMvb39/////98/PFRVVVVVxT+RKxfPVVWlPxfQpGcREYE/AAAAAAAAyELvOfr+Qi7mPyTEgv+9v84/tfQM1whrrD/MUEbSq7KDP4Q6Tpvg11U/AEHmNgu7EPA/br+IGk87mzw1M/upPfbvP13c2JwTYHG8YYB3Pprs7z/RZocQel6QvIV/bugV4+8/E/ZnNVLSjDx0hRXTsNnvP/qO+SOAzou83vbdKWvQ7z9hyOZhTvdgPMibdRhFx+8/mdMzW+SjkDyD88bKPr7vP217g12mmpc8D4n5bFi17z/87/2SGrWOPPdHciuSrO8/0ZwvcD2+Pjyi0dMy7KPvPwtukIk0A2q8G9P+r2ab7z8OvS8qUlaVvFFbEtABk+8/VepOjO+AULzMMWzAvYrvPxb01bkjyZG84C2prpqC7z+vVVzp49OAPFGOpciYeu8/SJOl6hUbgLx7UX08uHLvPz0y3lXwH4+86o2MOPlq7z+/UxM/jImLPHXLb+tbY+8/JusRdpzZlrzUXASE4FvvP2AvOj737Jo8qrloMYdU7z+dOIbLguePvB3Z/CJQTe8/jcOmREFvijzWjGKIO0bvP30E5LAFeoA8ltx9kUk/7z+UqKjj/Y6WPDhidW56OO8/fUh08hhehzw/prJPzjHvP/LnH5grR4A83XziZUUr7z9eCHE/e7iWvIFj9eHfJO8/MasJbeH3gjzh3h/1nR7vP/q/bxqbIT28kNna0H8Y7z+0CgxygjeLPAsD5KaFEu8/j8vOiZIUbjxWLz6prwzvP7arsE11TYM8FbcxCv4G7z9MdKziAUKGPDHYTPxwAe8/SvjTXTndjzz/FmSyCPzuPwRbjjuAo4a88Z+SX8X27j9oUEvM7UqSvMupOjen8e4/ji1RG/gHmbxm2AVtruzuP9I2lD7o0XG895/lNNvn7j8VG86zGRmZvOWoE8Mt4+4/bUwqp0ifhTwiNBJMpt7uP4ppKHpgEpO8HICsBEXa7j9biRdIj6dYvCou9yEK1u4/G5pJZ5ssfLyXqFDZ9dHuPxGswmDtY0M8LYlhYAjO7j/vZAY7CWaWPFcAHe1Byu4/eQOh2uHMbjzQPMG1osbuPzASDz+O/5M83tPX8CrD7j+wr3q7zpB2PCcqNtXav+4/d+BU670dkzwN3f2ZsrzuP46jcQA0lI+8pyyddrK57j9Jo5PczN6HvEJmz6Latu4/XzgPvcbeeLyCT51WK7TuP/Zce+xGEoa8D5JdyqSx7j+O1/0YBTWTPNontTZHr+4/BZuKL7eYezz9x5fUEq3uPwlUHOLhY5A8KVRI3Qer7j/qxhlQhcc0PLdGWYomqe4/NcBkK+YylDxIIa0Vb6fuP592mWFK5Iy8Cdx2ueGl7j+oTe87xTOMvIVVOrB+pO4/rukriXhThLwgw8w0RqPuP1hYVnjdzpO8JSJVgjii7j9kGX6AqhBXPHOpTNRVoe4/KCJev++zk7zNO39mnqDuP4K5NIetEmq8v9oLdRKg7j/uqW2472djvC8aZTyyn+4/UYjgVD3cgLyElFH5fZ/uP88+Wn5kH3i8dF/s6HWf7j+wfYvASu6GvHSBpUian+4/iuZVHjIZhrzJZ0JW65/uP9PUCV7LnJA8P13eT2mg7j8dpU253DJ7vIcB63MUoe4/a8BnVP3slDwywTAB7aHuP1Vs1qvh62U8Yk7PNvOi7j9Cz7MvxaGIvBIaPlQnpO4/NDc78bZpk7wTzkyZiaXuPx7/GTqEXoC8rccjRhqn7j9uV3LYUNSUvO2SRJvZqO4/AIoOW2etkDyZZorZx6ruP7Tq8MEvt40826AqQuWs7j//58WcYLZlvIxEtRYyr+4/RF/zWYP2ezw2dxWZrrHuP4M9HqcfCZO8xv+RC1u07j8pHmyLuKldvOXFzbA3t+4/WbmQfPkjbLwPUsjLRLruP6r59CJDQ5K8UE7en4K97j9LjmbXbMqFvLoHynDxwO4/J86RK/yvcTyQ8KOCkcTuP7tzCuE10m08IyPjGWPI7j9jImIiBMWHvGXlXXtmzO4/1THi44YcizwzLUrsm9DuPxW7vNPRu5G8XSU+sgPV7j/SMe6cMcyQPFizMBOe2e4/s1pzboRphDy//XlVa97uP7SdjpfN34K8evPTv2vj7j+HM8uSdxqMPK3TWpmf6O4/+tnRSo97kLxmto0pB+7uP7qu3FbZw1W8+xVPuKLz7j9A9qY9DqSQvDpZ5Y1y+e4/NJOtOPTWaLxHXvvydv/uPzWKWGvi7pG8SgahMLAF7z/N3V8K1/90PNLBS5AeDO8/rJiS+vu9kbwJHtdbwhLvP7MMrzCubnM8nFKF3ZsZ7z+U/Z9cMuOOPHrQ/1+rIO8/rFkJ0Y/ghDxL0Vcu8SfvP2caTjivzWM8tecGlG0v7z9oGZJsLGtnPGmQ79wgN+8/0rXMgxiKgLz6w11VCz/vP2/6/z9drY+8fIkHSi1H7z9JqXU4rg2QvPKJDQiHT+8/pwc9poWjdDyHpPvcGFjvPw8iQCCekYK8mIPJFuNg7z+sksHVUFqOPIUy2wPmae8/S2sBrFk6hDxgtAHzIXPvPx8+tAch1YK8X5t7M5d87z/JDUc7uSqJvCmh9RRGhu8/04g6YAS2dDz2P4vnLpDvP3FynVHsxYM8g0zH+1Ga7z/wkdOPEvePvNqQpKKvpO8/fXQj4piujbzxZ44tSK/vPwggqkG8w448J1ph7hu67z8y66nDlCuEPJe6azcrxe8/7oXRMalkijxARW5bdtDvP+3jO+S6N468FL6crf3b7z+dzZFNO4l3PNiQnoHB5+8/icxgQcEFUzzxcY8rwvPvPwAAAAAAAAAAGQAKABkZGQAAAAAFAAAAAAAACQAAAAALAAAAAAAAAAAZABEKGRkZAwoHAAEACQsYAAAJBgsAAAsABhkAAAAZGRkAQbHHAAshDgAAAAAAAAAAGQAKDRkZGQANAAACAAkOAAAACQAOAAAOAEHrxwALAQwAQffHAAsVEwAAAAATAAAAAAkMAAAAAAAMAAAMAEGlyAALARAAQbHIAAsVDwAAAAQPAAAAAAkQAAAAAAAQAAAQAEHfyAALARIAQevIAAseEQAAAAARAAAAAAkSAAAAAAASAAASAAAaAAAAGhoaAEGiyQALDhoAAAAaGhoAAAAAAAAJAEHTyQALARQAQd/JAAsVFwAAAAAXAAAAAAkUAAAAAAAUAAAUAEGNygALARYAQZnKAAulCRUAAAAAFQAAAAAJFgAAAAAAFgAAFgAAMDEyMzQ1Njc4OUFCQ0RFRgAAAAAKAAAAZAAAAOgDAAAQJwAAoIYBAEBCDwCAlpgAAOH1BQDKmjsAAAAAAAAAADAwMDEwMjAzMDQwNTA2MDcwODA5MTAxMTEyMTMxNDE1MTYxNzE4MTkyMDIxMjIyMzI0MjUyNjI3MjgyOTMwMzEzMjMzMzQzNTM2MzczODM5NDA0MTQyNDM0NDQ1NDY0NzQ4NDk1MDUxNTI1MzU0NTU1NjU3NTg1OTYwNjE2MjYzNjQ2NTY2Njc2ODY5NzA3MTcyNzM3NDc1NzY3Nzc4Nzk4MDgxODI4Mzg0ODU4Njg3ODg4OTkwOTE5MjkzOTQ5NTk2OTc5ODk5TjEwX19jeHhhYml2MTE2X19zaGltX3R5cGVfaW5mb0UAAAAAqCgAADgmAAC4KQAATjEwX19jeHhhYml2MTE3X19jbGFzc190eXBlX2luZm9FAAAAqCgAAGgmAABcJgAATjEwX19jeHhhYml2MTE3X19wYmFzZV90eXBlX2luZm9FAAAAqCgAAJgmAABcJgAATjEwX19jeHhhYml2MTE5X19wb2ludGVyX3R5cGVfaW5mb0UAqCgAAMgmAAC8JgAATjEwX19jeHhhYml2MTIwX19mdW5jdGlvbl90eXBlX2luZm9FAAAAAKgoAAD4JgAAXCYAAE4xMF9fY3h4YWJpdjEyOV9fcG9pbnRlcl90b19tZW1iZXJfdHlwZV9pbmZvRQAAAKgoAAAsJwAAvCYAAAAAAACsJwAAIQAAACIAAAAjAAAAJAAAACUAAABOMTBfX2N4eGFiaXYxMjNfX2Z1bmRhbWVudGFsX3R5cGVfaW5mb0UAqCgAAIQnAABcJgAAdgAAAHAnAAC4JwAARG4AAHAnAADEJwAAYgAAAHAnAADQJwAAYwAAAHAnAADcJwAAaAAAAHAnAADoJwAAYQAAAHAnAAD0JwAAcwAAAHAnAAAAKAAAdAAAAHAnAAAMKAAAaQAAAHAnAAAYKAAAagAAAHAnAAAkKAAAbAAAAHAnAAAwKAAAbQAAAHAnAAA8KAAAeAAAAHAnAABIKAAAeQAAAHAnAABUKAAAZgAAAHAnAABgKAAAZAAAAHAnAABsKAAAAAAAAIwmAAAhAAAAJgAAACMAAAAkAAAAJwAAACgAAAApAAAAKgAAAAAAAADwKAAAIQAAACsAAAAjAAAAJAAAACcAAAAsAAAALQAAAC4AAABOMTBfX2N4eGFiaXYxMjBfX3NpX2NsYXNzX3R5cGVfaW5mb0UAAAAAqCgAAMgoAACMJgAAAAAAAOwmAAAhAAAALwAAACMAAAAkAAAAMAAAAAAAAAA8KQAAMQAAADIAAAAzAAAAU3Q5ZXhjZXB0aW9uAAAAAIAoAAAsKQAAAAAAAGgpAAAYAAAANAAAADUAAABTdDExbG9naWNfZXJyb3IAqCgAAFgpAAA8KQAAAAAAAJwpAAAYAAAANgAAADUAAABTdDEybGVuZ3RoX2Vycm9yAAAAAKgoAACIKQAAaCkAAFN0OXR5cGVfaW5mbwAAAACAKAAAqCkAQcDTAAsJCxUAAAAAAAAFAEHU0wALARsAQezTAAsOHAAAAB0AAABoKwAAAAQAQYTUAAsBAQBBlNQACwX/////CgBB2NQACwNgMQE=")||(qe=ge,ge=u.locateFile?u.locateFile(qe,f):f+qe);var Fi=$=>{for(;$.length>0;)$.shift()(u)};u.noExitRuntime;function _o($){this.excPtr=$,this.ptr=$-24,this.set_type=function(K){TA[this.ptr+4>>2]=K},this.get_type=function(){return TA[this.ptr+4>>2]},this.set_destructor=function(K){TA[this.ptr+8>>2]=K},this.get_destructor=function(){return TA[this.ptr+8>>2]},this.set_caught=function(K){K=K?1:0,IA[this.ptr+12|0]=K},this.get_caught=function(){return IA[this.ptr+12|0]!=0},this.set_rethrown=function(K){K=K?1:0,IA[this.ptr+13|0]=K},this.get_rethrown=function(){return IA[this.ptr+13|0]!=0},this.init=function(K,vA){this.set_adjusted_ptr(0),this.set_type(K),this.set_destructor(vA)},this.set_adjusted_ptr=function(K){TA[this.ptr+16>>2]=K},this.get_adjusted_ptr=function(){return TA[this.ptr+16>>2]},this.get_exception_ptr=function(){if(Ga(this.get_type()))return TA[this.excPtr>>2];var K=this.get_adjusted_ptr();return K!==0?K:this.excPtr}}var to,uo,Vs,ki=$=>{for(var K="",vA=$;rA[vA];)K+=to[rA[vA++]];return K},ns={},Ko={},$i={},jt=$=>{throw new uo($)},io=$=>{throw new Vs($)},bi=($,K,vA)=>{function qA(Fe){var ot=vA(Fe);ot.length!==$.length&&io("Mismatched type converter count");for(var ut=0;ut<$.length;++ut)vs($[ut],ot[ut])}$.forEach(function(Fe){$i[Fe]=K});var te=new Array(K.length),pe=[],Oe=0;K.forEach((Fe,ot)=>{Ko.hasOwnProperty(Fe)?te[ot]=Ko[Fe]:(pe.push(Fe),ns.hasOwnProperty(Fe)||(ns[Fe]=[]),ns[Fe].push(()=>{te[ot]=Ko[Fe],++Oe===pe.length&&qA(te)}))}),pe.length===0&&qA(te)};function vs($,K,vA={}){if(!("argPackAdvance"in K))throw new TypeError("registerType registeredInstance requires argPackAdvance");return function(qA,te,pe={}){var Oe=te.name;if(qA||jt(`type "${Oe}" must have a positive integer typeid pointer`),Ko.hasOwnProperty(qA)){if(pe.ignoreDuplicateRegistrations)return;jt(`Cannot register type '${Oe}' twice`)}if(Ko[qA]=te,delete $i[qA],ns.hasOwnProperty(qA)){var Fe=ns[qA];delete ns[qA],Fe.forEach(ot=>ot())}}($,K,vA)}var HA,le=$=>{jt($.$$.ptrType.registeredClass.name+" instance already deleted")},xe=!1,Lt=$=>{},it=$=>{$.count.value-=1,$.count.value===0&&(K=>{K.smartPtr?K.smartPtrType.rawDestructor(K.smartPtr):K.ptrType.registeredClass.rawDestructor(K.ptr)})($)},gt=($,K,vA)=>{if(K===vA)return $;if(vA.baseClass===void 0)return null;var qA=gt($,K,vA.baseClass);return qA===null?null:vA.downcast(qA)},Xt={},$t=()=>Object.keys(Oi).length,be=()=>{var $=[];for(var K in Oi)Oi.hasOwnProperty(K)&&$.push(Oi[K]);return $},je=[],Mt=()=>{for(;je.length;){var $=je.pop();$.$$.deleteScheduled=!1,$.delete()}},Rt=$=>{HA=$,je.length&&HA&&HA(Mt)},Oi={},Qo=($,K)=>(K=((vA,qA)=>{for(qA===void 0&&jt("ptr should not be undefined");vA.baseClass;)qA=vA.upcast(qA),vA=vA.baseClass;return qA})($,K),Oi[K]),To=($,K)=>(K.ptrType&&K.ptr||io("makeClassHandle requires ptr and ptrType"),!!K.smartPtrType!=!!K.smartPtr&&io("Both smartPtrType and smartPtr must be specified"),K.count={value:1},No(Object.create($,{$$:{value:K}})));function oo($){var K=this.getPointee($);if(!K)return this.destructor($),null;var vA=Qo(this.registeredClass,K);if(vA!==void 0){if(vA.$$.count.value===0)return vA.$$.ptr=K,vA.$$.smartPtr=$,vA.clone();var qA=vA.clone();return this.destructor($),qA}function te(){return this.isSmartPointer?To(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:K,smartPtrType:this,smartPtr:$}):To(this.registeredClass.instancePrototype,{ptrType:this,ptr:$})}var pe,Oe=this.registeredClass.getActualType(K),Fe=Xt[Oe];if(!Fe)return te.call(this);pe=this.isConst?Fe.constPointerType:Fe.pointerType;var ot=gt(K,this.registeredClass,pe.registeredClass);return ot===null?te.call(this):this.isSmartPointer?To(pe.registeredClass.instancePrototype,{ptrType:pe,ptr:ot,smartPtrType:this,smartPtr:$}):To(pe.registeredClass.instancePrototype,{ptrType:pe,ptr:ot})}var No=$=>typeof FinalizationRegistry>"u"?(No=K=>K,$):(xe=new FinalizationRegistry(K=>{it(K.$$)}),Lt=K=>xe.unregister(K),(No=K=>{var vA=K.$$;if(vA.smartPtr){var qA={$$:vA};xe.register(K,qA,K)}return K})($));function An(){}var rn=($,K)=>Object.defineProperty(K,"name",{value:$}),Es=($,K,vA)=>{if($[K].overloadTable===void 0){var qA=$[K];$[K]=function(){return $[K].overloadTable.hasOwnProperty(arguments.length)||jt(`Function '${vA}' called with an invalid number of arguments (${arguments.length}) - expects one of (${$[K].overloadTable})!`),$[K].overloadTable[arguments.length].apply(this,arguments)},$[K].overloadTable=[],$[K].overloadTable[qA.argCount]=qA}};function an($,K,vA,qA,te,pe,Oe,Fe){this.name=$,this.constructor=K,this.instancePrototype=vA,this.rawDestructor=qA,this.baseClass=te,this.getActualType=pe,this.upcast=Oe,this.downcast=Fe,this.pureVirtualFunctions=[]}var yo=($,K,vA)=>{for(;K!==vA;)K.upcast||jt(`Expected null or instance of ${vA.name}, got an instance of ${K.name}`),$=K.upcast($),K=K.baseClass;return $};function mA($,K){if(K===null)return this.isReference&&jt(`null is not a valid ${this.name}`),0;K.$$||jt(`Cannot pass "${as(K)}" as a ${this.name}`),K.$$.ptr||jt(`Cannot pass deleted object as a pointer of type ${this.name}`);var vA=K.$$.ptrType.registeredClass;return yo(K.$$.ptr,vA,this.registeredClass)}function Jn($,K){var vA;if(K===null)return this.isReference&&jt(`null is not a valid ${this.name}`),this.isSmartPointer?(vA=this.rawConstructor(),$!==null&&$.push(this.rawDestructor,vA),vA):0;K.$$||jt(`Cannot pass "${as(K)}" as a ${this.name}`),K.$$.ptr||jt(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&K.$$.ptrType.isConst&&jt(`Cannot convert argument of type ${K.$$.smartPtrType?K.$$.smartPtrType.name:K.$$.ptrType.name} to parameter type ${this.name}`);var qA=K.$$.ptrType.registeredClass;if(vA=yo(K.$$.ptr,qA,this.registeredClass),this.isSmartPointer)switch(K.$$.smartPtr===void 0&&jt("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:K.$$.smartPtrType===this?vA=K.$$.smartPtr:jt(`Cannot convert argument of type ${K.$$.smartPtrType?K.$$.smartPtrType.name:K.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:vA=K.$$.smartPtr;break;case 2:if(K.$$.smartPtrType===this)vA=K.$$.smartPtr;else{var te=K.clone();vA=this.rawShare(vA,cn.toHandle(()=>te.delete())),$!==null&&$.push(this.rawDestructor,vA)}break;default:jt("Unsupporting sharing policy")}return vA}function Br($,K){if(K===null)return this.isReference&&jt(`null is not a valid ${this.name}`),0;K.$$||jt(`Cannot pass "${as(K)}" as a ${this.name}`),K.$$.ptr||jt(`Cannot pass deleted object as a pointer of type ${this.name}`),K.$$.ptrType.isConst&&jt(`Cannot convert argument of type ${K.$$.ptrType.name} to parameter type ${this.name}`);var vA=K.$$.ptrType.registeredClass;return yo(K.$$.ptr,vA,this.registeredClass)}function ds($){return this.fromWireType(TA[$>>2])}function jr($,K,vA,qA,te,pe,Oe,Fe,ot,ut,St){this.name=$,this.registeredClass=K,this.isReference=vA,this.isConst=qA,this.isSmartPointer=te,this.pointeeType=pe,this.sharingPolicy=Oe,this.rawGetPointee=Fe,this.rawConstructor=ot,this.rawShare=ut,this.rawDestructor=St,te||K.baseClass!==void 0?this.toWireType=Jn:qA?(this.toWireType=mA,this.destructorFunction=null):(this.toWireType=Br,this.destructorFunction=null)}var Pi,Rs,ir=[],en=$=>{var K=ir[$];return K||($>=ir.length&&(ir.length=$+1),ir[$]=K=Pi.get($)),K},wn=($,K,vA)=>$.includes("j")?((qA,te,pe)=>{var Oe=u["dynCall_"+qA];return pe&&pe.length?Oe.apply(null,[te].concat(pe)):Oe.call(null,te)})($,K,vA):en(K).apply(null,vA),Jt=($,K)=>{var vA,qA,te,pe=($=ki($)).includes("j")?(vA=$,qA=K,te=[],function(){return te.length=0,Object.assign(te,arguments),wn(vA,qA,te)}):en(K);return typeof pe!="function"&&jt(`unknown function pointer with signature ${$}: ${K}`),pe},yg=$=>{var K=Ia($),vA=ki(K);return yn(K),vA},On=($,K)=>{var vA=[],qA={};throw K.forEach(function te(pe){qA[pe]||Ko[pe]||($i[pe]?$i[pe].forEach(te):(vA.push(pe),qA[pe]=!0))}),new Rs(`${$}: `+vA.map(yg).join([", "]))},Gn=($,K)=>{for(var vA=[],qA=0;qA<$;qA++)vA.push(TA[K+4*qA>>2]);return vA},Js=$=>{for(;$.length;){var K=$.pop();$.pop()(K)}};function Qr($,K,vA,qA,te,pe){var Oe=K.length;Oe<2&&jt("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var Fe=K[1]!==null&&vA!==null,ot=!1,ut=1;ut($ instanceof Object||jt(`${vA} with invalid "this": ${$}`),$ instanceof K.registeredClass.constructor||jt(`${vA} incompatible with "this" of type ${$.constructor.name}`),$.$$.ptr||jt(`cannot call emscripten binding method ${vA} on deleted object`),yo($.$$.ptr,$.$$.ptrType.registeredClass,K.registeredClass));function pr(){this.allocated=[void 0],this.freelist=[]}var po=new pr,gn=$=>{$>=po.reserved&&--po.get($).refcount===0&&po.free($)},yl=()=>{for(var $=0,K=po.reserved;K($||jt("Cannot use deleted val. handle = "+$),po.get($).value),toHandle:$=>{switch($){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return po.allocate({refcount:1,value:$})}}};function mr($){return this.fromWireType(cA[$>>2])}var Ls,Vc,ms,as=$=>{if($===null)return"null";var K=typeof $;return K==="object"||K==="array"||K==="function"?$.toString():""+$},mu=($,K)=>{switch(K){case 4:return function(vA){return this.fromWireType(WA[vA>>2])};case 8:return function(vA){return this.fromWireType(zA[vA>>3])};default:throw new TypeError(`invalid float width (${K}): ${$}`)}},ja=($,K,vA)=>{switch(K){case 1:return vA?qA=>IA[qA|0]:qA=>rA[qA|0];case 2:return vA?qA=>pA[qA>>1]:qA=>lA[qA>>1];case 4:return vA?qA=>cA[qA>>2]:qA=>TA[qA>>2];default:throw new TypeError(`invalid integer width (${K}): ${$}`)}},Cs=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,sg=($,K,vA)=>{for(var qA=K+vA,te=K;$[te]&&!(te>=qA);)++te;if(te-K>16&&$.buffer&&Cs)return Cs.decode($.subarray(K,te));for(var pe="";K>10,56320|1023&ut)}}else pe+=String.fromCharCode((31&Oe)<<6|Fe)}else pe+=String.fromCharCode(Oe)}return pe},OI=($,K)=>$?sg(rA,$,K):"",Xo=typeof TextDecoder<"u"?new TextDecoder("utf-16le"):void 0,Zi=($,K)=>{for(var vA=$,qA=vA>>1,te=qA+K/2;!(qA>=te)&&lA[qA];)++qA;if((vA=qA<<1)-$>32&&Xo)return Xo.decode(rA.subarray($,vA));for(var pe="",Oe=0;!(Oe>=K/2);++Oe){var Fe=pA[$+2*Oe>>1];if(Fe==0)break;pe+=String.fromCharCode(Fe)}return pe},pc=($,K,vA)=>{if(vA===void 0&&(vA=2147483647),vA<2)return 0;for(var qA=K,te=(vA-=2)<2*$.length?vA/2:$.length,pe=0;pe>1]=Oe,K+=2}return pA[K>>1]=0,K-qA},ng=$=>2*$.length,Dg=($,K)=>{for(var vA=0,qA="";!(vA>=K/4);){var te=cA[$+4*vA>>2];if(te==0)break;if(++vA,te>=65536){var pe=te-65536;qA+=String.fromCharCode(55296|pe>>10,56320|1023&pe)}else qA+=String.fromCharCode(te)}return qA},la=($,K,vA)=>{if(vA===void 0&&(vA=2147483647),vA<4)return 0;for(var qA=K,te=qA+vA-4,pe=0;pe<$.length;++pe){var Oe=$.charCodeAt(pe);if(Oe>=55296&&Oe<=57343&&(Oe=65536+((1023&Oe)<<10)|1023&$.charCodeAt(++pe)),cA[K>>2]=Oe,(K+=4)+4>te)break}return cA[K>>2]=0,K-qA},Go=$=>{for(var K=0,vA=0;vA<$.length;++vA){var qA=$.charCodeAt(vA);qA>=55296&&qA<=57343&&++vA,K+=4}return K},Wr=($,K)=>{var vA=Ko[$];return vA===void 0&&jt(K+" has unknown type "+yg($)),vA},wo=($,K,vA)=>{var qA=[],te=$.toWireType(qA,vA);return qA.length&&(TA[K>>2]=cn.toHandle(qA)),te},Jc={},Hn=[],Hs=Reflect.construct,Sg=[null,[],[]],mc=($,K)=>{var vA=Sg[$];K===0||K===10?(($===1?k:F)(sg(vA,0)),vA.length=0):vA.push(K)};(()=>{for(var $=new Array(256),K=0;K<256;++K)$[K]=String.fromCharCode(K);to=$})(),uo=u.BindingError=class extends Error{constructor($){super($),this.name="BindingError"}},Vs=u.InternalError=class extends Error{constructor($){super($),this.name="InternalError"}},Object.assign(An.prototype,{isAliasOf($){if(!(this instanceof An)||!($ instanceof An))return!1;var K=this.$$.ptrType.registeredClass,vA=this.$$.ptr;$.$$=$.$$;for(var qA=$.$$.ptrType.registeredClass,te=$.$$.ptr;K.baseClass;)vA=K.upcast(vA),K=K.baseClass;for(;qA.baseClass;)te=qA.upcast(te),qA=qA.baseClass;return K===qA&&vA===te},clone(){if(this.$$.ptr||le(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var $,K=No(Object.create(Object.getPrototypeOf(this),{$$:{value:($=this.$$,{count:$.count,deleteScheduled:$.deleteScheduled,preservePointerOnDelete:$.preservePointerOnDelete,ptr:$.ptr,ptrType:$.ptrType,smartPtr:$.smartPtr,smartPtrType:$.smartPtrType})}}));return K.$$.count.value+=1,K.$$.deleteScheduled=!1,K},delete(){this.$$.ptr||le(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&jt("Object already scheduled for deletion"),Lt(this),it(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||le(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&jt("Object already scheduled for deletion"),je.push(this),je.length===1&&HA&&HA(Mt),this.$$.deleteScheduled=!0,this}}),u.getInheritedInstanceCount=$t,u.getLiveInheritedInstances=be,u.flushPendingDeletes=Mt,u.setDelayFunction=Rt,Object.assign(jr.prototype,{getPointee($){return this.rawGetPointee&&($=this.rawGetPointee($)),$},destructor($){this.rawDestructor&&this.rawDestructor($)},argPackAdvance:8,readValueFromPointer:ds,deleteObject($){$!==null&&$.delete()},fromWireType:oo}),Rs=u.UnboundTypeError=(Ls=Error,(ms=rn(Vc="UnboundTypeError",function($){this.name=Vc,this.message=$;var K=new Error($).stack;K!==void 0&&(this.stack=this.toString()+` -`+K.replace(/^Error(:[^\n]*)?\n/,""))})).prototype=Object.create(Ls.prototype),ms.prototype.constructor=ms,ms.prototype.toString=function(){return this.message===void 0?this.name:`${this.name}: ${this.message}`},ms),Object.assign(pr.prototype,{get($){return this.allocated[$]},has($){return this.allocated[$]!==void 0},allocate($){var K=this.freelist.pop()||this.allocated.length;return this.allocated[K]=$,K},free($){this.allocated[$]=void 0,this.freelist.push($)}}),po.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),po.reserved=po.allocated.length,u.count_emval_handles=yl;var fn,Na={w:($,K,vA)=>{throw new _o($).init(K,vA),$},q:($,K,vA,qA,te)=>{},u:($,K,vA,qA)=>{vs($,{name:K=ki(K),fromWireType:function(te){return!!te},toWireType:function(te,pe){return pe?vA:qA},argPackAdvance:8,readValueFromPointer:function(te){return this.fromWireType(rA[te])},destructorFunction:null})},y:($,K,vA,qA,te,pe,Oe,Fe,ot,ut,St,Ot,li)=>{St=ki(St),pe=Jt(te,pe),Fe&&(Fe=Jt(Oe,Fe)),ut&&(ut=Jt(ot,ut)),li=Jt(Ot,li);var nt=(Ft=>{if(Ft===void 0)return"_unknown";var Ji=(Ft=Ft.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return Ji>=48&&Ji<=57?`_${Ft}`:Ft})(St);((Ft,Ji,qi)=>{u.hasOwnProperty(Ft)?(jt(`Cannot register public name '${Ft}' twice`),Es(u,Ft,Ft),u.hasOwnProperty(qi)&&jt(`Cannot register multiple overloads of a function with the same number of arguments (${qi})!`),u[Ft].overloadTable[qi]=Ji):u[Ft]=Ji})(nt,function(){On(`Cannot construct ${St} due to unbound types`,[qA])}),bi([$,K,vA],qA?[qA]:[],function(Ft){var Ji,qi;Ft=Ft[0],qi=qA?(Ji=Ft.registeredClass).instancePrototype:An.prototype;var qs=rn(St,function(){if(Object.getPrototypeOf(this)!==Mi)throw new uo("Use 'new' to construct "+St);if(Wo.constructor_body===void 0)throw new uo(St+" has no accessible constructor");var xn=Wo.constructor_body[arguments.length];if(xn===void 0)throw new uo(`Tried to invoke ctor of ${St} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(Wo.constructor_body).toString()}) parameters instead!`);return xn.apply(this,arguments)}),Mi=Object.create(qi,{constructor:{value:qs}});qs.prototype=Mi;var Wo=new an(St,qs,Mi,li,Ji,pe,Fe,ut);Wo.baseClass&&(Wo.baseClass.__derivedClasses===void 0&&(Wo.baseClass.__derivedClasses=[]),Wo.baseClass.__derivedClasses.push(Wo));var Mg=new jr(St,Wo,!0,!1,!1),or=new jr(St+"*",Wo,!1,!1,!1),fr=new jr(St+" const*",Wo,!1,!0,!1);return Xt[$]={pointerType:or,constPointerType:fr},((xn,Dl,Ks)=>{u.hasOwnProperty(xn)||io("Replacing nonexistant public symbol"),u[xn].overloadTable!==void 0&&Ks!==void 0?u[xn].overloadTable[Ks]=Dl:(u[xn]=Dl,u[xn].argCount=Ks)})(nt,qs),[Mg,or,fr]})},x:($,K,vA,qA,te,pe)=>{var Oe=Gn(K,vA);te=Jt(qA,te),bi([],[$],function(Fe){var ot=`constructor ${(Fe=Fe[0]).name}`;if(Fe.registeredClass.constructor_body===void 0&&(Fe.registeredClass.constructor_body=[]),Fe.registeredClass.constructor_body[K-1]!==void 0)throw new uo(`Cannot register multiple constructors with identical number of parameters (${K-1}) for class '${Fe.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return Fe.registeredClass.constructor_body[K-1]=()=>{On(`Cannot construct ${Fe.name} due to unbound types`,Oe)},bi([],Oe,ut=>(ut.splice(1,0,null),Fe.registeredClass.constructor_body[K-1]=Qr(ot,ut,null,te,pe),[])),[]})},i:($,K,vA,qA,te,pe,Oe,Fe,ot)=>{var ut=Gn(vA,qA);K=(St=>{const Ot=(St=St.trim()).indexOf("(");return Ot!==-1?St.substr(0,Ot):St})(K=ki(K)),pe=Jt(te,pe),bi([],[$],function(St){var Ot=`${(St=St[0]).name}.${K}`;function li(){On(`Cannot call ${Ot} due to unbound types`,ut)}K.startsWith("@@")&&(K=Symbol[K.substring(2)]),Fe&&St.registeredClass.pureVirtualFunctions.push(K);var nt=St.registeredClass.instancePrototype,Ft=nt[K];return Ft===void 0||Ft.overloadTable===void 0&&Ft.className!==St.name&&Ft.argCount===vA-2?(li.argCount=vA-2,li.className=St.name,nt[K]=li):(Es(nt,K,Ot),nt[K].overloadTable[vA-2]=li),bi([],ut,function(Ji){var qi=Qr(Ot,Ji,St,pe,Oe);return nt[K].overloadTable===void 0?(qi.argCount=vA-2,nt[K]=qi):nt[K].overloadTable[vA-2]=qi,[]}),[]})},k:($,K,vA,qA,te,pe,Oe,Fe,ot,ut)=>{K=ki(K),te=Jt(qA,te),bi([],[$],function(St){var Ot=`${(St=St[0]).name}.${K}`,li={get(){On(`Cannot access ${Ot} due to unbound types`,[vA,Oe])},enumerable:!0,configurable:!0};return li.set=ot?()=>On(`Cannot access ${Ot} due to unbound types`,[vA,Oe]):nt=>jt(Ot+" is a read-only property"),Object.defineProperty(St.registeredClass.instancePrototype,K,li),bi([],ot?[vA,Oe]:[vA],function(nt){var Ft=nt[0],Ji={get(){var qs=Pn(this,St,Ot+" getter");return Ft.fromWireType(te(pe,qs))},enumerable:!0};if(ot){ot=Jt(Fe,ot);var qi=nt[1];Ji.set=function(qs){var Mi=Pn(this,St,Ot+" setter"),Wo=[];ot(ut,Mi,qi.toWireType(Wo,qs)),Js(Wo)}}return Object.defineProperty(St.registeredClass.instancePrototype,K,Ji),[]}),[]})},t:($,K)=>{vs($,{name:K=ki(K),fromWireType:vA=>{var qA=cn.toValue(vA);return gn(vA),qA},toWireType:(vA,qA)=>cn.toHandle(qA),argPackAdvance:8,readValueFromPointer:mr,destructorFunction:null})},p:($,K,vA)=>{vs($,{name:K=ki(K),fromWireType:qA=>qA,toWireType:(qA,te)=>te,argPackAdvance:8,readValueFromPointer:mu(K,vA),destructorFunction:null})},g:($,K,vA,qA,te)=>{K=ki(K);var pe=ot=>ot;if(qA===0){var Oe=32-8*vA;pe=ot=>ot<>>Oe}var Fe=K.includes("unsigned");vs($,{name:K,fromWireType:pe,toWireType:Fe?function(ot,ut){return this.name,ut>>>0}:function(ot,ut){return this.name,ut},argPackAdvance:8,readValueFromPointer:ja(K,vA,qA!==0),destructorFunction:null})},a:($,K,vA)=>{var qA=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][K];function te(pe){var Oe=TA[pe>>2],Fe=TA[pe+4>>2];return new qA(IA.buffer,Fe,Oe)}vs($,{name:vA=ki(vA),fromWireType:te,argPackAdvance:8,readValueFromPointer:te},{ignoreDuplicateRegistrations:!0})},o:($,K)=>{var vA=(K=ki(K))==="std::string";vs($,{name:K,fromWireType(qA){var te,pe=TA[qA>>2],Oe=qA+4;if(vA)for(var Fe=Oe,ot=0;ot<=pe;++ot){var ut=Oe+ot;if(ot==pe||rA[ut]==0){var St=OI(Fe,ut-Fe);te===void 0?te=St:(te+="\0",te+=St),Fe=ut+1}}else{var Ot=new Array(pe);for(ot=0;ot{for(var li=0,nt=0;nt=55296&&Ft<=57343?(li+=4,++nt):li+=3}return li})(te):te.length;var Fe=fs(4+pe+1),ot=Fe+4;if(TA[Fe>>2]=pe,vA&&Oe)((Ot,li,nt,Ft)=>{if(!(Ft>0))return 0;for(var Ji=nt,qi=nt+Ft-1,qs=0;qs=55296&&Mi<=57343&&(Mi=65536+((1023&Mi)<<10)|1023&Ot.charCodeAt(++qs)),Mi<=127){if(nt>=qi)break;li[nt++]=Mi}else if(Mi<=2047){if(nt+1>=qi)break;li[nt++]=192|Mi>>6,li[nt++]=128|63&Mi}else if(Mi<=65535){if(nt+2>=qi)break;li[nt++]=224|Mi>>12,li[nt++]=128|Mi>>6&63,li[nt++]=128|63&Mi}else{if(nt+3>=qi)break;li[nt++]=240|Mi>>18,li[nt++]=128|Mi>>12&63,li[nt++]=128|Mi>>6&63,li[nt++]=128|63&Mi}}li[nt]=0})(te,rA,ot,pe+1);else if(Oe)for(var ut=0;ut255&&(yn(ot),jt("String has UTF-16 code units that do not fit in 8 bits")),rA[ot+ut]=St}else for(ut=0;ut{var qA,te,pe,Oe,Fe;vA=ki(vA),K===2?(qA=Zi,te=pc,Oe=ng,pe=()=>lA,Fe=1):K===4&&(qA=Dg,te=la,Oe=Go,pe=()=>TA,Fe=2),vs($,{name:vA,fromWireType:ot=>{for(var ut,St=TA[ot>>2],Ot=pe(),li=ot+4,nt=0;nt<=St;++nt){var Ft=ot+4+nt*K;if(nt==St||Ot[Ft>>Fe]==0){var Ji=qA(li,Ft-li);ut===void 0?ut=Ji:(ut+="\0",ut+=Ji),li=Ft+K}}return yn(ot),ut},toWireType:(ot,ut)=>{typeof ut!="string"&&jt(`Cannot pass non-string to C++ string type ${vA}`);var St=Oe(ut),Ot=fs(4+St+K);return TA[Ot>>2]=St>>Fe,te(ut,Ot+4,St+K),ot!==null&&ot.push(yn,Ot),Ot},argPackAdvance:8,readValueFromPointer:mr,destructorFunction(ot){yn(ot)}})},v:($,K)=>{vs($,{isVoid:!0,name:K=ki(K),argPackAdvance:0,fromWireType:()=>{},toWireType:(vA,qA)=>{}})},j:($,K,vA)=>($=cn.toValue($),K=Wr(K,"emval::as"),wo(K,vA,$)),e:($,K,vA,qA,te)=>{var pe,Oe;return($=Hn[$])(K=cn.toValue(K),K[vA=(Oe=Jc[pe=vA])===void 0?ki(pe):Oe],qA,te)},d:gn,f:($,K,vA)=>{var qA=((ut,St)=>{for(var Ot=new Array(ut),li=0;li>2],"parameter "+li);return Ot})($,K),te=qA.shift();$--;var pe,Oe,Fe=new Array($),ot=`methodCaller<(${qA.map(ut=>ut.name).join(", ")}) => ${te.name}>`;return pe=rn(ot,(ut,St,Ot,li)=>{for(var nt=0,Ft=0;Ft<$;++Ft)Fe[Ft]=qA[Ft].readValueFromPointer(li+nt),nt+=qA[Ft].argPackAdvance;var Ji=vA===1?Hs(St,Fe):St.apply(ut,Fe);for(Ft=0;Ft<$;++Ft)qA[Ft].deleteObject&&qA[Ft].deleteObject(Fe[Ft]);return wo(te,Ot,Ji)}),Oe=Hn.length,Hn.push(pe),Oe},c:$=>{$>4&&(po.get($).refcount+=1)},b:$=>{var K=cn.toValue($);Js(K),gn($)},h:($,K)=>{var vA=($=Wr($,"_emval_take_value")).readValueFromPointer(K);return cn.toHandle(vA)},m:()=>{It("")},s:($,K,vA)=>rA.copyWithin($,K,K+vA),r:$=>{rA.length,It("OOM")},n:($,K,vA,qA)=>{for(var te=0,pe=0;pe>2],Fe=TA[K+4>>2];K+=8;for(var ot=0;ot>2]=te,0}},In=function(){var $={a:Na};function K(vA,qA){var te,pe;return In=vA.exports,_=In.z,te=_.buffer,u.HEAP8=IA=new Int8Array(te),u.HEAP16=pA=new Int16Array(te),u.HEAPU8=rA=new Uint8Array(te),u.HEAPU16=lA=new Uint16Array(te),u.HEAP32=cA=new Int32Array(te),u.HEAPU32=TA=new Uint32Array(te),u.HEAPF32=WA=new Float32Array(te),u.HEAPF64=zA=new Float64Array(te),Pi=In.C,pe=In.A,Ce.unshift(pe),function(){if(Dt--,u.monitorRunDependencies&&u.monitorRunDependencies(Dt),Dt==0&&qt){var Oe=qt;qt=null,Oe()}}(),In}if(Dt++,u.monitorRunDependencies&&u.monitorRunDependencies(Dt),u.instantiateWasm)try{return u.instantiateWasm($,K)}catch(vA){F(`Module.instantiateWasm callback failed with error: ${vA}`),l(vA)}return gi(0,ge,$,function(vA){K(vA.instance)}).catch(l),{}}(),fs=$=>(fs=In.B)($),Ia=$=>(Ia=In.D)($),yn=$=>(yn=In.E)($),Ga=$=>(Ga=In.F)($);u.dynCall_jiji=($,K,vA,qA,te)=>(u.dynCall_jiji=In.G)($,K,vA,qA,te),u._vertexShaderSource=10688;function Da(){function $(){fn||(fn=!0,u.calledRun=!0,$A||(Fi(Ce),r(u),u.onRuntimeInitialized&&u.onRuntimeInitialized(),function(){if(u.postRun)for(typeof u.postRun=="function"&&(u.postRun=[u.postRun]);u.postRun.length;)Ke(u.postRun.shift());Fi(ct)}()))}Dt>0||(function(){if(u.preRun)for(typeof u.preRun=="function"&&(u.preRun=[u.preRun]);u.preRun.length;)mt(u.preRun.shift());Fi(De)}(),Dt>0||(u.setStatus?(u.setStatus("Running..."),setTimeout(function(){setTimeout(function(){u.setStatus("")},1),$()},1)):$()))}if(qt=function $(){fn||Da(),fn||(qt=$)},u.preInit)for(typeof u.preInit=="function"&&(u.preInit=[u.preInit]);u.preInit.length>0;)u.preInit.pop()();return Da(),i.ready}})(),agA=rgA,lj=0,L9=class U9{constructor(i){this.core=i,CL(this,"seq"),CL(this,"_core"),CL(this,"log"),CL(this,"beautyParams"),lj+=1,this.seq=lj,this._core=i,this.log=i.log.createChild({id:`${this.getAlias()}${lj}`}),this.log.info("created")}getName(){return U9.Name}getAlias(){return"bb"}getValidateRule(i){switch(i){case"start":case"update":return sgA(this._core);case"stop":return ngA(this._core)}}getGroup(){return"bb"}async start(i){this._core.room.videoManager.Wasm||(this._core.room.videoManager.Wasm=await agA()),this._core.room.videoManager.renderMode="webgl";const r=this._core.utils.isUndefined(i.beauty)?.5:i.beauty,l=this._core.utils.isUndefined(i.brightness)?.5:i.brightness,u=this._core.utils.isUndefined(i.ruddy)?.5:i.ruddy;return this._core.room.videoManager.setBeautyParams({beauty:r,brightness:l,ruddy:u})}async update(i){const r=this._core.utils.isUndefined(i.beauty)?.5:i.beauty,l=this._core.utils.isUndefined(i.brightness)?.5:i.brightness,u=this._core.utils.isUndefined(i.ruddy)?.5:i.ruddy;return this._core.room.videoManager.setBeautyParams({beauty:r,brightness:l,ruddy:u})}async stop(){return this._core.room.videoManager.renderMode="auto",this._core.room.videoManager.stopBeauty()}destroy(){this._core.room.videoManager.renderMode="auto"}};CL(L9,"Name","BasicBeauty");var F9=L9,ggA=F9;const cgA=Object.freeze(Object.defineProperty({__proto__:null,BasicBeauty:F9,default:ggA},Symbol.toStringTag,{value:"Module"})),lgA=gU(cgA);var IgA=Object.defineProperty,ugA=(t,i,r)=>i in t?IgA(t,i,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[i]=r,k1=(t,i,r)=>ugA(t,typeof i!="symbol"?i+"":i,r),EgA={name:"option",required:!0,properties:{sourceLanguage:{type:"string",required:!0},translationLanguages:{type:["string","array"],required:!1},userIdsToTranscribe:{type:["string","array"],required:!1},transcriberRobotId:{type:"string",required:!1}}},dgA={name:"option",required:!0,properties:{transcriberRobotId:{type:"string",required:!0}}},CgA=new Set([2002,4003]),O9=class P9{constructor(i){this.core=i,k1(this,"disableRandomCall",!0),k1(this,"activeTranscriberMap",new Map),k1(this,"_log"),this._log=this.core.log.createChild({id:`${this.getAlias()}`})}getName(){return P9.Name}getAlias(){return"rt-trans"}getGroup(){return"*"}getValidateRule(i){switch(i){case"start":return EgA;case"update":return{};case"stop":return dgA}}async start(i){var r;const{RtcError:l,ErrorCode:u}=this.core.errorModule;if(!this.core.room.sendSignalMessage)throw new l({code:u.ENV_NOT_SUPPORTED});const{sourceLanguage:B,translationLanguages:f,userIdsToTranscribe:w="all",transcriberRobotId:_}=i,k=_||`transcriber_${this.core.room.roomId}_robot_${this.core.room.userId}`,F={sdkappid:this.core.room.sdkAppId,roomid:String(this.core.room.roomId),roomType:this.core.room.useStringRoomId?1:0,agentParam:{cdnRobotUserid:k,lifecycleUserid:this.core.room.userId,maxIdletime:30},subscribeParams:{subUsers:[]},asrParams:{lang:B,vadSilenceTime:1e3},translationParams:{mode:1,targetLangs:[""]}};f&&f.length>0&&(F.translationParams.mode=1,F.translationParams.targetLangs=Array.isArray(f)?f:[f]),w==="all"?F.subscribeParams.subUsers=[]:Array.isArray(w)?F.subscribeParams.subUsers=w.map(j=>({userId:j,roomType:this.core.room.useStringRoomId?1:0,roomid:String(this.core.room.roomId)})):w&&(F.subscribeParams.subUsers=[{userId:w,roomType:this.core.room.useStringRoomId?1:0,roomid:String(this.core.room.roomId)}]);try{this._log.info(`start_cloud_transcription ${JSON.stringify(F)}`);const j=await this.core.room.sendSignalMessage({command:"start_cloud_transcription",responseCommand:String(8268),data:F,retries:0}),{code:IA,data:rA}=j.data;if(IA!==0){const lA=((r=j.data)==null?void 0:r.message)||"";throw this._log.error("start_cloud_transcription failed",{extraCode:IA,reason:lA,data:rA}),new l({code:u.SERVER_ERROR,extraCode:IA,message:lA})}const{taskId:pA}=rA;if(!pA)throw this._log.error("taskId is required",{data:j.data}),new l({code:u.SERVER_ERROR,message:"taskId is required"});return this.activeTranscriberMap.set(pA,i),this._log.info(`start_cloud_transcription success ${pA}, activeSize: ${this.activeTranscriberMap.size}`),pA}catch(j){throw this._log.error("start_cloud_transcription failed",{error:j}),j}}async update(){}async stop({transcriberRobotId:i}){var r;const{RtcError:l,ErrorCode:u}=this.core.errorModule;if(!this.core.room.sendSignalMessage)throw new l({code:u.ENV_NOT_SUPPORTED});try{const B=await this.core.room.sendSignalMessage({command:"stop_cloud_transcription",responseCommand:String(8270),data:{taskId:i},retries:3});if(B.data.code!==0){const f=B.data.code,w=((r=B.data)==null?void 0:r.message)||"";if(!CgA.has(f))throw this._log.error("stop_cloud_transcription failed",{extraCode:f,reason:w,data:B.data.data}),new l({code:u.SERVER_ERROR,extraCode:f,message:w});this._log.warn("stop_cloud_transcription ignored error",{extraCode:f,reason:w,data:B.data.data})}this.activeTranscriberMap.delete(i)}catch(B){throw this._log.error("stop_cloud_transcription failed",{error:B}),B}}destroy(){this.activeTranscriberMap.clear()}};k1(O9,"Name","RealtimeTranscriber");var x9=O9,hgA=x9;const BgA=Object.freeze(Object.defineProperty({__proto__:null,RealtimeTranscriber:x9,default:hgA},Symbol.toStringTag,{value:"Module"})),QgA=gU(BgA);var pgA=Object.create,uU=Object.defineProperty,mgA=Object.defineProperties,Y9=Object.getOwnPropertyDescriptor,fgA=Object.getOwnPropertyDescriptors,V9=Object.getOwnPropertyNames,$1=Object.getOwnPropertySymbols,ygA=Object.getPrototypeOf,sW=Object.prototype.hasOwnProperty,J9=Object.prototype.propertyIsEnumerable,a3=(t,i,r)=>i in t?uU(t,i,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[i]=r,Rn=(t,i)=>{for(var r in i||(i={}))sW.call(i,r)&&a3(t,r,i[r]);if($1)for(var r of $1(i))J9.call(i,r)&&a3(t,r,i[r]);return t},iB=(t,i)=>mgA(t,fgA(i)),DgA=(t,i)=>{var r={};for(var l in t)sW.call(t,l)&&i.indexOf(l)<0&&(r[l]=t[l]);if(t!=null&&$1)for(var l of $1(t))i.indexOf(l)<0&&J9.call(t,l)&&(r[l]=t[l]);return r},EU=(t,i)=>function(){return i||(0,t[V9(t)[0]])((i={exports:{}}).exports,i),i.exports},nW=(t,i)=>{for(var r in i)uU(t,r,{get:i[r],enumerable:!0})},SgA=(t,i,r,l)=>{if(i&&typeof i=="object"||typeof i=="function")for(let u of V9(i))sW.call(t,u)||u===r||uU(t,u,{get:()=>i[u],enumerable:!(l=Y9(i,u))||l.enumerable});return t},W_=(t,i,r)=>(r=t!=null?pgA(ygA(t)):{},SgA(uU(r,"default",{value:t,enumerable:!0}),t)),Cc=(t,i,r,l)=>{for(var u,B=Y9(i,r),f=t.length-1;f>=0;f--)(u=t[f])&&(B=u(i,r,B)||B);return B&&uU(i,r,B),B},de=(t,i,r)=>a3(t,typeof i!="symbol"?i+"":i,r),dU=EU({"../node_modules/.pnpm/eventemitter3@4.0.7/node_modules/eventemitter3/index.js"(t,i){var r=Object.prototype.hasOwnProperty,l="~";function u(){}function B(k,F,j){this.fn=k,this.context=F,this.once=j||!1}function f(k,F,j,IA,rA){if(typeof j!="function")throw new TypeError("The listener must be a function");var pA=new B(j,IA||k,rA),lA=l?l+F:F;return k._events[lA]?k._events[lA].fn?k._events[lA]=[k._events[lA],pA]:k._events[lA].push(pA):(k._events[lA]=pA,k._eventsCount++),k}function w(k,F){--k._eventsCount===0?k._events=new u:delete k._events[F]}function _(){this._events=new u,this._eventsCount=0}Object.create&&(u.prototype=Object.create(null),new u().__proto__||(l=!1)),_.prototype.eventNames=function(){var k,F,j=[];if(this._eventsCount===0)return j;for(F in k=this._events)r.call(k,F)&&j.push(l?F.slice(1):F);return Object.getOwnPropertySymbols?j.concat(Object.getOwnPropertySymbols(k)):j},_.prototype.listeners=function(k){var F=l?l+k:k,j=this._events[F];if(!j)return[];if(j.fn)return[j.fn];for(var IA=0,rA=j.length,pA=new Array(rA);IA1&&(f[_[0]]=void 0),f};t.parseParams=function(f){return f.split(/;\s?/).reduce(B,{})},t.parseFmtpConfig=t.parseParams,t.parsePayloads=function(f){return f.toString().split(" ").map(Number)},t.parseRemoteCandidates=function(f){for(var w=[],_=f.split(" ").map(i),k=0;k<_.length;k+=3)w.push({component:_[k],ip:_[k+1],port:_[k+2]});return w},t.parseImageAttributes=function(f){return f.split(" ").map(function(w){return w.substring(1,w.length-1).split(",").reduce(B,{})})},t.parseSimulcastStreamList=function(f){return f.split(";").map(function(w){return w.split(",").map(function(_){var k,F=!1;return _[0]!=="~"?k=i(_):(k=i(_.substring(1,_.length)),F=!0),{scid:k,paused:F}})})}}}),vgA=EU({"../node_modules/.pnpm/sdp-transform@2.15.0/node_modules/sdp-transform/lib/writer.js"(t,i){var r=rW(),l=/%[sdv%]/g,u=function(_){var k=1,F=arguments,j=F.length;return _.replace(l,function(IA){if(k>=j)return IA;var rA=F[k];switch(k+=1,IA){case"%%":return"%";case"%s":return String(rA);case"%d":return Number(rA);case"%v":return""}})},B=function(_,k,F){var j=[_+"="+(k.format instanceof Function?k.format(k.push?F:F[k.name]):k.format)];if(k.names)for(var IA=0;IA{i.enableVertexAttribArray(l),i.bindBuffer(i.ARRAY_BUFFER,r),i.vertexAttribPointer(l,2,i.FLOAT,!1,0,0)})}createShader(t,i){const{gl:r}=this,l=r.createShader(t);return r.shaderSource(l,i),r.compileShader(l),l}createProgram(t,i,r){const{gl:l}=this,I=this.createShader(l.FRAGMENT_SHADER,i),h=this.createShader(l.VERTEX_SHADER,t),f=l.createProgram();if(l.attachShader(f,h),l.attachShader(f,I),l.linkProgram(f),!l.getProgramParameter(f,l.LINK_STATUS))throw new Error(`${l.getProgramInfoLog(f)}`);return l.useProgram(f),this.setAttributes(this.positionBuffer,this.texCoordBuffer),r.forEach((w,_)=>{l.uniform1i(l.getUniformLocation(f,w),1+_)}),f}createFramebuffer(t){const{gl:i}=this,r=i.createFramebuffer();return i.bindFramebuffer(i.FRAMEBUFFER,r),i.framebufferTexture2D(i.FRAMEBUFFER,i.COLOR_ATTACHMENT0,i.TEXTURE_2D,t,0),r}getTempTexture(t,i,r=!0,l){const{gl:I}=this;let h,f;I.useProgram(t),this.ratio===16/9?(h=640,f=360):(h=640,f=480);const w=I.createTexture();I.activeTexture(I.TEXTURE0),I.bindTexture(I.TEXTURE_2D,w),I.texParameteri(I.TEXTURE_2D,I.TEXTURE_MIN_FILTER,I.LINEAR),I.texParameteri(I.TEXTURE_2D,I.TEXTURE_MAG_FILTER,I.LINEAR),I.texParameteri(I.TEXTURE_2D,I.TEXTURE_WRAP_S,I.CLAMP_TO_EDGE),I.texParameteri(I.TEXTURE_2D,I.TEXTURE_WRAP_T,I.CLAMP_TO_EDGE),I.pixelStorei(I.PACK_ALIGNMENT,1),I.pixelStorei(I.UNPACK_ALIGNMENT,1),I.texImage2D(I.TEXTURE_2D,0,I.RGBA,h,f,0,I.RGBA,I.UNSIGNED_BYTE,null);const _=this.createFramebuffer(w);return i.forEach((k,U)=>{k&&(I.activeTexture(I.TEXTURE1+U),I.bindTexture(I.TEXTURE_2D,k||null))}),this.setAttributes(this.positionBuffer,this.texCoordBuffer),I.viewport(0,0,h,f),I.drawArrays(I.TRIANGLE_STRIP,0,4),r&&i.forEach((k,U)=>{k&&l!==U&&I.deleteTexture(k)}),I.deleteFramebuffer(_),w}postProcessing(t){this._lastMaskTexture=this.getTempTexture(this._tdProgram,[t,this._lastMaskTexture]);let i=this.getTempTexture(this._kcProgram,[this._lastMaskTexture],!1);for(let r=0;r<3;r++){i=this.getTempTexture(this._mdProgram,[i]);const l=this.getTempTexture(this._edgeProgram,[i],!1);i=this.getTempTexture(this._borderProgram,[i,l,this._lastMaskTexture],!0,2)}return i}close(){const{gl:t}=this;this._borderProgram&&t.deleteProgram(this._borderProgram),this._edgeProgram&&t.deleteProgram(this._edgeProgram),this._kcProgram&&t.deleteProgram(this._kcProgram),this._mdProgram&&t.deleteProgram(this._mdProgram),this._tdProgram&&t.deleteProgram(this._tdProgram)}},UgA=new LgA,FgA=(t=>(t[t.TRACE=0]="TRACE",t[t.DEBUG=1]="DEBUG",t[t.INFO=2]="INFO",t[t.WARN=3]="WARN",t[t.ERROR=4]="ERROR",t[t.NONE=5]="NONE",t))(FgA||{}),OgA={alpha:!0,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!0,powerPreference:"low-power"},Q_=570703,Oj=0,CX=class hX{constructor(i){this.core=i,Hg(this,"seq"),Hg(this,"_core"),Hg(this,"log"),Hg(this,"preLoadPromise"),Hg(this,"startResolve"),Hg(this,"startReject"),Hg(this,"mediaPipeSolutions"),Hg(this,"assetsPath"),Hg(this,"currentType"),Hg(this,"onAbort"),Hg(this,"isAborted",!1),Oj+=1,this.seq=Oj,this._core=i,this.log=i.log.createChild({id:`${this.getAlias()}${Oj}`}),this.log.info("created"),i.assetsPath&&(this.preLoadPromise=this.preload(i.assetsPath))}static isSupported(){if(LaA<90)return!1;const i=document.createElement("canvas").getContext("webgl2",OgA);return!!(i&&i instanceof WebGL2RenderingContext)}async preload(i){try{this._core.room.videoManager.Wasm||(this._core.room.videoManager.Wasm=await IaA());const r=l=>{var I;this.core.kvStatManager.addEnum({key:Q_,value:this.getKVTypeValue(!1,this.isAborted,"ABORT_IN_INFERENCE")}),this.isAborted=!0,this.log.error("mediaPipeSolutions abort",l),this.core.clearStarted(this,this.getGroup()),this.stop(),(I=this.onAbort)==null||I.call(this,l)};this._core.room.videoManager.initVirtualBackground(r,aX,UgA),await this._core.initVisionTaskRegistry(i,["ImageSegmenter"])}catch(r){const{RtcError:l,ErrorCode:I}=this._core.errorModule;throw new l({code:I.INVALID_OPERATION,message:`VirtualBackground preload error, please redeploy the assets of the npm package. detail: ${r}`})}}getName(){return hX.Name}getAlias(){return"vb"}getValidateRule(i){switch(i){case"start":return aaA(this._core);case"update":return gaA(this._core);case"stop":return caA(this._core)}}getGroup(){return"vb"}getKVTypeValue(i=!1,r=!1,l="NONE"){let I=0;switch(this.currentType){case"blur":I|=0;break;case"image":I|=1;break;case"color":I|=2}switch(i&&(I|=256),r&&(I|=512),l){case"ABORT_IN_INFERENCE":I|=4096;break;case"ABORT_IN_VIDEO_MANAGER":I|=8192;break;case"OTHER":I|=61440}return I}hexToRgb(i){const r=i.replace("#","");return[parseInt(r.slice(0,2),16)/255,parseInt(r.slice(2,4),16)/255,parseInt(r.slice(4,6),16)/255]}async start(i){const{type:r="blur",src:l,blurLevel:I=3,onAbort:h}=i;this.currentType=r,this.onAbort=h,r==="color"&&typeof i.color=="string"&&(i.color=this.hexToRgb(i.color));const{auth:f}=await naA({sdkAppId:i.sdkAppId,userId:i.userId,userSig:i.userSig,core:this._core}),{RtcError:w,ErrorCodeDictionary:_,ErrorCode:k}=this._core.errorModule;if(!f){const U=this._core.utils.isOverseaSdkAppId(i.sdkAppId)?"https://trtc.io/document/56025":"https://cloud.tencent.com/document/product/647/85386";throw new w({code:_.NEED_TO_BUY,messageParams:{value:"Virtual Background",url:U}})}if(!this.preLoadPromise){if(!this._core.assetsPath)throw new w({code:k.INVALID_PARAMETER,message:"you need to deploy the assets of the npm package and set assetsPath param in TRTC.create()"});this.preLoadPromise=this.preload(this._core.assetsPath)}return await this.preLoadPromise,this.core.room.videoManager.setVirtualBackground({type:r,imageUrl:l,blurLevel:I,enableFaceCentering:i.enableFaceCentering,enableEffectOptimization:i.enableEffectOptimization,color:i.color,onAbort:U=>{var j;this.core.kvStatManager.addEnum({key:Q_,value:this.getKVTypeValue(!0,this.isAborted,"ABORT_IN_VIDEO_MANAGER")}),this.isAborted=!0,this.core.clearStarted(this,this.getGroup()),this.stop(),delete this.preLoadPromise,(j=this.onAbort)==null||j.call(this,U)}}).then(()=>{this.core.kvStatManager.addEnum({key:Q_,value:this.getKVTypeValue(!1,this.isAborted,"NONE")})}).catch(U=>{throw this.core.kvStatManager.addEnum({key:Q_,value:this.getKVTypeValue(!0,this.isAborted,"OTHER")}),U})}async update(i){const{type:r,src:l}=i;return r!==this.currentType&&(this.currentType=r),r==="color"&&typeof i.color=="string"&&(i.color=this.hexToRgb(i.color)),this.core.room.videoManager.setVirtualBackground({type:r,imageUrl:l,blurLevel:i.blurLevel,enableFaceCentering:i.enableFaceCentering,enableEffectOptimization:i.enableEffectOptimization,color:i.color}).then(()=>{this.core.kvStatManager.addEnum({key:Q_,value:this.getKVTypeValue(!1,!1,"NONE")})}).catch(()=>{this.core.kvStatManager.addEnum({key:Q_,value:this.getKVTypeValue(!0,!1,"OTHER")})})}async stop(){return this.core.room.videoManager.setVirtualBackground()}};Hg(CX,"Name","VirtualBackground");var BX=CX,PgA=BX;const xgA=Object.freeze(Object.defineProperty({__proto__:null,VirtualBackground:BX,default:PgA},Symbol.toStringTag,{value:"Module"})),YgA=GU(xgA);var VgA=Object.defineProperty,JgA=(t,i,r)=>i in t?VgA(t,i,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[i]=r,GL=(t,i,r)=>JgA(t,typeof i!="symbol"?i+"":i,r);function HgA(t){return{name:"BasicBeautyOptions",type:"object",required:!0,allowEmpty:!1,properties:{beauty:{required:!1,type:"number"},brightness:{required:!1,type:"number"},ruddy:{required:!1,type:"number"}},validate(i,r,l,I){const{RtcError:h,ErrorCode:f,ErrorCodeDictionary:w}=t.errorModule;if(t.utils.isOverseaSdkAppId(i.sdkAppId))throw new h({code:f.INVALID_OPERATION,extraCode:w.INVALID_OPERATION,message:"This feature is not yet available in your country or region. If you have any questions, you can go to the community for consultation: https://zhiliao.qq.com/s/cWSPGIIM62CC/c3TPGIIM62CQ"})}}}function qgA(t){return{name:"StopBasicBeautyOptions",required:!1}}var KgA=(()=>{var t=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return function(i={}){var r,l,I=i;I.ready=new Promise(($,K)=>{r=$,l=K});var h=Object.assign({},I),f="";typeof document<"u"&&document.currentScript&&(f=document.currentScript.src),t&&(f=t),f=f.indexOf("blob:")!==0?f.substr(0,f.replace(/[?#].*/,"").lastIndexOf("/")+1):"";var w,_,k=I.print||console.log.bind(console),U=I.printErr||console.error.bind(console);function j($){if(ni($))return function(K){for(var vA=atob(K),qA=new Uint8Array(vA.length),Ae=0;Ae$.startsWith(Dt);function Jt($){return Promise.resolve().then(()=>function(K){if(K==oe&&w)return new Uint8Array(w);var vA=j(K);if(vA)return vA;throw"both async and sync fetching of the wasm failed"}($))}function gi($,K,vA,qA){return function(Ae,pe,Pe){return Jt(Ae).then(Oe=>WebAssembly.instantiate(Oe,pe)).then(Oe=>Oe).then(Pe,Oe=>{U(`failed to asynchronously prepare wasm: ${Oe}`),Le(Oe)})}(K,vA,qA)}ni(oe="data:application/octet-stream;base64,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IAEoAgA2AgAgAiABKAIENgIEIAIgASgCCDYCCCACIAEoAgw2AgwgAiABKAIQNgIQIAIgASgCFDYCFCACIAEoAhg2AhggAiABKAIcNgIcIAIgASgCIDYCICACIAEoAiQ2AiQgAiABKAIoNgIoIAIgASgCLDYCLCACIAEoAjA2AjAgAiABKAI0NgI0IAIgASgCODYCOCACIAEoAjw2AjwgAUFAayEBIAJBQGsiAiAFTQ0ACwsgAiAETw0BA0AgAiABKAIANgIAIAFBBGohASACQQRqIgIgBEkNAAsMAQsgA0EESQRAIAAhAgwBCyAAIANBBGsiBEsEQCAAIQIMAQsgACECA0AgAiABLQAAOgAAIAIgAS0AAToAASACIAEtAAI6AAIgAiABLQADOgADIAFBBGohASACQQRqIgIgBE0NAAsLIAIgA0kEQANAIAIgAS0AADoAACABQQFqIQEgAkEBaiICIANHDQALCyAACwsAIAEgAiAAEEIaCxIAIAFBAXRB8MoAakECIAAQQgv5AQEEfwJ/IAEQKiECIwBBEGsiBSQAAn8gAC0AC0EHdgRAIAAoAgQMAQsgAC0AC0H/AHELIgRBAE8EQAJAIAIgAC0AC0EHdgR/IAAoAghB/////wdxQQFrBUEKCyIDIARrTQRAIAJFDQECfyAALQALQQd2BEAgACgCAAwBCyAACyIDIAQEfyACIANqIAMgBBBFIAEgAkEAIAMgBGogAUsbQQAgASADTxtqBSABCyACEEUgACACIARqIgEQMSAFQQA6AA8gASADaiAFLQAPOgAADAELIAAgAyACIARqIANrIARBACACIAEQRAsgBUEQaiQAIAAMAQsQJwALC/ICAgJ/AX4CQCACRQ0AIAAgAToAACAAIAJqIgNBAWsgAToAACACQQNJDQAgACABOgACIAAgAToAASADQQNrIAE6AAAgA0ECayABOgAAIAJBB0kNACAAIAE6AAMgA0EEayABOgAAIAJBCUkNACAAQQAgAGtBA3EiBGoiAyABQf8BcUGBgoQIbCIBNgIAIAMgAiAEa0F8cSIEaiICQQRrIAE2AgAgBEEJSQ0AIAMgATYCCCADIAE2AgQgAkEIayABNgIAIAJBDGsgATYCACAEQRlJDQAgAyABNgIYIAMgATYCFCADIAE2AhAgAyABNgIMIAJBEGsgATYCACACQRRr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ACACQQA6AA8DQCABBEAgACACLQAPOgAAIAFBAWshASAAQQFqIQAMAQsLIAJBEGokAAsaACAALQALQQd2BEAgACgCCBogACgCABAZCwvmAQEFfyMAQRBrIgUkACMAQSBrIgMkACMAQRBrIgQkACAEIAA2AgwgBCAAIAFqNgIIIAMgBCgCDDYCGCADIAQoAgg2AhwgBEEQaiQAIAMoAhghBCADKAIcIQYjAEEQayIBJAAgASAGNgIMIAIgBCAGIARrIgQQQyABIAIgBGo2AgggAyABKAIMNgIQIAMgASgCCDYCFCABQRBqJAAgAyAAIAMoAhAgAGtqNgIMIAMgAiADKAIUIAJrajYCCCAFIAMoAgw2AgggBSADKAIINgIMIANBIGokACAFKAIMIQcgBUEQaiQAIAcLDwAgAgRAIAAgASACEDILC/UCAQV/IwBBEGsiByQAIAIgAUF/c0Hv////B2pNBEACfyAALQALQQd2BEAgACgCAAwBCyAACyEIIAdBBGoiCSAAIAFB5////wNJBH8gByABQQF0NgIMIAcgASACajYCBCMAQRBrIgIkACAJKAIAIAdBDGoiCigCAEkhCyACQRBqJAAgCiAJIAsbKAIAIgJBC08EfyACQRBqQXBxIgIgAkEBayICIAJBC0YbBUEKC0EBagVB7////wcLEDAgBygCBCECIAcoAggaIAQEQCACIAggBBAjCyAFBEAgAiAEaiAGIAUQIwsgAyAEayEGIAMgBEcEQCACIARqIAVqIAQgCGogBhAjCyABQQpHBEAgCBAZCyAAIAI2AgAgACAAKAIIQYCAgIB4cSAHKAIIQf////8HcXI2AgggACAAKAIIQYCAgIB4cjYCCCAAIAQgBWogBmoiADYCBCAHQQA6AAwgACACaiAHLQAMOgAAIAdBEGokAA8LECcACwoAIAAgASACEEMLuQEBBH8jAEEQayIEJAAgBCACNgIMIwBBoAFrIgMkACADIAAgA0GeAWogARsiBjYClAFBfyEFIAMgAUEBayIAQQAgACABTRs2ApgBIANBAEGQARAmIgBBfzYCTCAAQSA2AiQgAEF/NgJQIAAgAEGfAWo2AiwgACAAQZQBajYCVAJAIAFBAEgEQEHo3gBBPTYCAAwBCyAGQQA6AAAgAEH9CiACQR8QTSEFCyAAQaABaiQAIARBEGokACAFCwQA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KAIARQ0AIAIgBCgCGDYCAAsgAEEBRiEFDAELQQAhBQsgBEFAayQAIAULMQAgACABKAIIQQAQHgRAIAEgAiADED0PCyAAKAIIIgAgASACIAMgACgCACgCHBEGAAsYACAAIAEoAghBABAeBEAgASACIAMQPQsLnQEBAn8jAEFAaiIDJAACf0EBIAAgAUEAEB4NABpBACABRQ0AGkEAIAFBjM0AECAiAUUNABogA0EMakEAQTQQJhogA0EBNgI4IANBfzYCFCADIAA2AhAgAyABNgIIIAEgA0EIaiACKAIAQQEgASgCACgCHBEGACADKAIgIgBBAUYEQCACIAMoAhg2AgALIABBAUYLIQQgA0FAayQAIAQLCgAgACABQQAQHgtOAgF/AXwjAEEQayICJAAgAkEANgIMIAEoAgRB1M8AIAJBDGoQCSEDIAIoAgwiAQRAIAEQAQsgACADRAAAAAAAAAAAYjoAOCACQRBqJAALNwEBfyMAQRBrIgIkACACIAEtADg2AgggAEHUzwAgAkEIahAHNgIEIABB1NUANgIAIAJBEGokAAuoAQEFfyAAKAJUIgMoAgAhBSADKAIEIgQgACgCFCAAKAIcIgdrIgYgBCAGSRsiBgRAIAUgByAGECIaIAMgAygCACAGaiIFNgIAIAMgAygCBCAGayIENgIECyAEIAIgAiAESxsiBARAIAUgASAEECIaIAMgAygCACAEaiIFNgIAIAMgAygCBCAEazYCBAsgBUEAOgAAIAAgACgCLCIBNgIcIAAgATYCFCACC5wBAQJ/IwBBEGsiAiQAQcgAEBwhASAAKAIEIgAQAiACIAA2AgggAUHMLSACQQhqEAc2AgQgAUHU1QA2AgAgAUEBNgIcIAFB1NUANgIYIAFBATYCFCABQdTVADYCECABQQE2AgwgAUHU1QA2AgggAUEAOgAgIAFBADYCRCABQoCAgIAwNwI8IAFBADsANyABQQA7ACsgAkEQaiQAIAELigUCBn4CfyABIAEoAgBBB2pBeHEiAUEQajYCACAAIQkgASkDACEDIAEpAwghBSMAQSBrIgAkAAJAIAVC////////////AIMiBEKAgICAgIDAgDx9IARCgICAgICAwP/DAH1UBEAgBUIEhiADQjyIhCEEIANC//////////8PgyIDQoGAgICAgICACFoEQCAEQoGAgICAgICAwAB8IQIMAgsgBEKAgICAgICAgEB9IQIgA0KAgICAgICAgAhSDQEgAiAEQgGDfCECDAELIANQIARCgICAgICAwP//AFQgBEKAgICAgIDA//8AURtFBEAgBUIEhiADQjyIhEL/////////A4NCgICAgICAgPz/AIQhAgwBC0KAgICAgICA+P8AIQIgBEL///////+//8MAVg0AQgAhAiAEQjCIpyIBQZH3AEkNACADIQIgBUL///////8/g0KAgICAgIDAAIQiBCEGAkAgAUGB9wBrIghBwABxBEAgAyAIQUBqrYYhBkIAIQIMAQsgCEUNACAGIAitIgeGIAJBwAAgCGutiIQhBiACIAeGIQILIAAgAjcDECAAIAY3AxgCQEGB+AAgAWsiAUHAAHEEQCAEIAFBQGqtiCEDQgAhBAwBCyABRQ0AIARBwAAgAWuthiADIAGtIgKIhCEDIAQgAoghBAsgACADNwMAIAAgBDcDCCAAKQMIQgSGIAApAwAiA0I8iIQhAiAAKQMQIAApAxiEQgBSrSADQv//////////D4OEIgNCgYCAgICAgIAIWgRAIAJCAXwhAgwBCyADQoCAgICAgICACFINACACQgGDIAJ8IQILIABBIGokACAJIAIgBUKAgICAgICAgIB/g4S/OQMAC0ABAn8jAEEQayICJAAgAiABNgIMIAJB1NUANgIIIAJBCGogABEBACEDIAIoAgwiAQRAIAEQAwsgAkEQaiQAIAMLBABCAAsEAEEAC/YCAQh/IwBBIGsiAyQAIAMgACgCHCIENgIQIAAoAhQhBSADIAI2AhwgAyABNgIYIAMgBSAEayIBNgIUIAEgAmohBUECIQcCfwJAAkACQCAAKAI8IANBEGoiAUECIANBDGoQDSIEBH9B6N4AIAQ2AgBBfwVBAAsEQCABIQQMAQsDQCAFIAMoAgwiBkYNAiAGQQBIBEAgASEEDAQLIAEgBiABKAIEIghLIglBA3RqIgQgBiAIQQAgCRtrIgggBCgCAGo2AgAgAUEMQQQgCRtqIgEgASgCACAIazYCACAFIAZrIQUgACgCPCAEIgEgByAJayIHIANBDGoQDSIGBH9B6N4AIAY2AgBBfwVBAAtFDQALCyAFQX9HDQELIAAgACgCLCIBNgIcIAAgATYCFCAAIAEgACgCMGo2AhAgAgwBCyAAQQA2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EGokAAsiAQF+IAEgAq0gA61CIIaEIAQgABEMACIFQiCIpyQBIAWnCzcBAX8jAEEQayICJAAgAiABKAI8NgIIIABBnNAAIAJBCGoQBzYCBCAAQdTVADYCACACQRBqJAALC/NKFQBBgAgLhCZzZXRCZWF1dHkALSsgICAwWDB4AC0wWCswWCAwWC0weCsweCAweAB1bnNpZ25lZCBzaG9ydAB1bnNpZ25lZCBpbnQAaW5pdABmbG9hdAB1aW50NjRfdABibHVyUmFkaXVzAHZlY3RvcgBtaXJyb3IAYXR0YWNoU2hhZGVyAGRlbGV0ZVNoYWRlcgBjcmVhdGVTaGFkZXIAY29tcGlsZVNoYWRlcgB1bnNpZ25lZCBjaGFyAHN0ZDo6ZXhjZXB0aW9uAHJvdGF0aW9uAG5hbgBsaW5rUHJvZ3JhbQBkZWxldGVQcm9ncmFtAGNyZWF0ZVByb2dyYW0AYm9vbABlbXNjcmlwdGVuOjp2YWwAc2V0V2F0ZXJNYXJrAHN0b3BXYXRlck1hcmsAdW5zaWduZWQgbG9uZwBzdGQ6OndzdHJpbmcAYmFzaWNfc3RyaW5nAHN0ZDo6c3RyaW5nAHN0ZDo6dTE2c3RyaW5nAHN0ZDo6dTMyc3RyaW5nAGluZgAlZgBjbG9zZQBkb3VibGUAdmJNb2RlAHNoYWRlclNvdXJjZQB2b2lkAHNhbXBsZUNvbG9yICs9IHRleHR1cmUoZnJhbWUsIGJsdXJDb29yZGluYXRlc1sATkFOAElORgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxzaG9ydD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgc2hvcnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgaW50PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxmbG9hdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dWludDhfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50OF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50MTZfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50MTZfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dWludDY0X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludDY0X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQzMl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQzMl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxjaGFyPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBjaGFyPgBzdGQ6OmJhc2ljX3N0cmluZzx1bnNpZ25lZCBjaGFyPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxzaWduZWQgY2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8bG9uZz4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgbG9uZz4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8ZG91YmxlPgB2ZWMyIGMgPSB2X3RleENvb3JkOwB2ZWMyIGMgPSB2ZWMyKDEuMCAtIHZfdGV4Q29vcmQueCwgdl90ZXhDb29yZC55KTsAYyA9IHZlYzIoMS4wIC0gYy54LCAxLjAgLSBjLnkpOwBjID0gdmVjMihjLnksIDEuMCAtIGMueCk7AGMgPSB2ZWMyKDEuMCAtIGMueSwgYy54KTsAQWxsSW4xAC4ALjAsAC4wKSpvKSoAKG51bGwpACkqby55KTsgICAgdmVjMiBjb29yZDIgPSB2ZWMyKGZsb2F0KAAgICAgYyA9IHZlYzIodl90ZXhDb29yZC54LCAxLjAgLSB2X3RleENvb3JkLnkpOyAgICB2ZWMyIGNvb3JkMSA9IHZlYzIoZmxvYXQoACksIChjLnkgLWNvb3JkMS55KSAvIG8ueSAvIGZsb2F0KAApKm8ueSk7ICAgIGlmIChjLnggPiBjb29yZDEueCAmJiBjLnggPCBjb29yZDIueCAmJiBjLnkgPiBjb29yZDEueSAmJiBjLnkgPCBjb29yZDIueSkgeyAgICAgIHZlYzQgd2F0ZXJDb2xvciA9IHRleHR1cmUod2F0ZXJNYXJrLCB2ZWMyKChjLnggLSBjb29yZDEueCkgIC8gby54IC8gZmxvYXQoACkgKiBvLngsIGZsb2F0KABvdXRDb2xvci5yZ2IgKz0gdmVjMygAKTsgICAgICAgdmVjMyBzbW9vdGhDb2xvciA9IG91dENvbG9yLnJnYiArIChvdXRDb2xvci5yZ2ItdmVjMyhoaWdoUGFzcykpKmFscGhhKjAuMTsgICAgICAgc21vb3RoQ29sb3IgPSBtYXgoc21vb3RoQ29sb3IsIHZlYzMoMC4wKSk7ICAgICAgIHNtb290aENvbG9yID0gY2xhbXAocG93KHNtb290aENvbG9yLCB2ZWMzKABnKz1HKGMsdmVjMigAICAgICAgdmVjMiBvZmZzZXQgPSB2ZWMyKABdID0gdl90ZXhDb29yZC54eSArIG9mZnNldCAqIHZlYzIoADsgACkpLCB2ZWMzKDAuMCksIHZlYzMoMS4wKSk7ICAgICAgdmVjMyBzY3JlZW4gPSB2ZWMzKDEuMCkgLSAodmVjMygxLjApLXNtb290aENvbG9yKSAqICh2ZWMzKDEuMCktb3V0Q29sb3IucmdiKTsgICAgICAgdmVjMyBsaWdodGVuID0gbWF4KHNtb290aENvbG9yLCBvdXRDb2xvci5yZ2IpOyAgICAgICB2ZWMzIGJlYXV0eUNvbG9yID0gbWl4KG1peChvdXRDb2xvci5yZ2IsIHNjcmVlbiwgYWxwaGEpLCBsaWdodGVuLCBhbHBoYSk7ICAgICAgb3V0Q29sb3IucmdiID0gbWl4KG91dENvbG9yLnJnYiwgYmVhdXR5Q29sb3IsIAAKICAgICAgY29uc3QgbWF0MyBzYXR1cmF0ZU1hdHJpeCA9IG1hdDMoMS4xMTAyLC0wLjA1OTgsLTAuMDYxLC0wLjA3NzQsMS4wODI2LC0wLjExODYsLTAuMDIyOCwtMC4wMjI4LDEuMTc3Mik7CiAgICAgIHZlYzMgd2FybUNvbG9yID0gb3V0Q29sb3IucmdiICogc2F0dXJhdGVNYXRyaXg7CiAgICAgIG91dENvbG9yLnJnYiA9IG1peChvdXRDb2xvci5yZ2IsIHdhcm1Db2xvciwgACAgICAgIHNhbXBsZUNvbG9yID0gc2FtcGxlQ29sb3IgLyA2Mi4wOyAgICAgICBmbG9hdCBoaWdoUGFzcyA9IG91dENvbG9yLmcgLSBzYW1wbGVDb2xvciArIDAuNTsgICAgICAgY29uc3QgaGlnaHAgdmVjMyBXID0gdmVjMygwLjI5OSwwLjU4NywwLjExNCk7ICAgICAgZmxvYXQgbHVtaW5hbmNlID0gZG90KG91dENvbG9yLnJnYiwgVyk7ICAgICAgIGZsb2F0IGFscGhhID0gcG93KGx1bWluYW5jZSwgAF0pLmcgKiAAKSkpOyAgICAgIG91dENvbG9yID0gbWl4KG91dENvbG9yLHdhdGVyQ29sb3IsICB3YXRlckNvbG9yLmEpOyAgICB9ICAgIAApOyAgICAAKTsgICAgICB2ZWMyIGJsdXJDb29yZGluYXRlc1syNF07ICAgICAgACAgICAgIGZsb2F0IHNhbXBsZUNvbG9yID0gb3V0Q29sb3IuZyAqIDIyLjA7ICAgICAgIAAjdmVyc2lvbiAzMDAgZXMKICAgIHByZWNpc2lvbiBoaWdocCBmbG9hdDsKICAgIHVuaWZvcm0gc2FtcGxlcjJEIGZyYW1lOwogICAgdW5pZm9ybSBzYW1wbGVyMkQgbWFzazsKICAgIHVuaWZvcm0gc2FtcGxlcjJEIGJnOwogICAgdW5pZm9ybSBzYW1wbGVyMkQgd2F0ZXJNYXJrOwogICAgdW5pZm9ybSBzYW1wbGVyMkQgbGFzdE1hc2s7CiAgICB1bmlmb3JtIG1hdDQgdV9vZmZzZXRNYXRyaXg7CiAgICB1bmlmb3JtIHZlYzMgdV9jb2xvcjsKICAgIGluIHZlYzIgdl90ZXhDb29yZDsKICAgIG91dCB2ZWM0IG91dENvbG9yOwogICAgdmVjNCBHKHZlYzIgYyx2ZWMyIHMpewogICAgICByZXR1cm4gdGV4dHVyZShmcmFtZSx0ZXh0dXJlKG1hc2ssYytzKS5yPjAuMz9jOmMrcyk7CiAgICB9CiAgICB2b2lkIG1haW4oKSB7CiAgICAgIAAKICAgICAgdmVjMiBvZmZzZXRNYXNrVVYgPSAodV9vZmZzZXRNYXRyaXggKiB2ZWM0KGMsIDAsIDEpKS54eTsKICAgICAgZmxvYXQgaXNJbnNpZGVYID0gKG9mZnNldE1hc2tVVi54ID49IDAuMCkgJiYgKG9mZnNldE1hc2tVVi54IDw9IDEuMCkgPyAxLjAgOiAwLjA7CiAgICAgIGZsb2F0IGlzSW5zaWRlWSA9IChvZmZzZXRNYXNrVVYueSA+PSAwLjApICYmIChvZmZzZXRNYXNrVVYueSA8PSAxLjApID8gMS4wIDogMC4wOwogICAgICBmbG9hdCBpc0luc2lkZSA9IGlzSW5zaWRlWCAqIGlzSW5zaWRlWTsKICAgICAgZmxvYXQgbWFza2VkQWxwaGEgPSB0ZXh0dXJlKG1hc2ssIG9mZnNldE1hc2tVVikuciAqIGlzSW5zaWRlOwogICAgICBtYXNrZWRBbHBoYSA9IG1hc2tlZEFscGhhPDAuNT8yLjAqbWFza2VkQWxwaGEqbWFza2VkQWxwaGE6MS4wLTIuMCooMS4wLW1hc2tlZEFscGhhKSooMS4wLW1hc2tlZEFscGhhKTsKICAgICAgc3JjX2NvbG9yID0gdGV4dHVyZShmcmFtZSwgb2Zmc2V0TWFza1VWICwgaXNJbnNpZGUpOwogICAgICBvdXRDb2xvciA9IG1peCh0ZXh0dXJlKGJnLCBjKSwgc3JjX2NvbG9yLCBtYXNrZWRBbHBoYSk7CiAgICAACiAgICB2ZWM0IGcgPSB2ZWM0KDAuMCk7CiAgICAACiAgICAgIGMueSA9IDEuMCAtIGMueTsKICAgICAgdmVjNCBzcmNfY29sb3IgPSB0ZXh0dXJlKGZyYW1lLCBjKTsKICAgICAgZmxvYXQgYSA9IHRleHR1cmUobWFzaywgYykucjsKICAgICAgYSA9IGE8MC41PzIuMCphKmE6MS4wLTIuMCooMS4wLWEpKigxLjAtYSk7CiAgICAgIC8vIGZsb2F0IGEyID0gdGV4dHVyZShsYXN0TWFzaywgYykuYTsKICAgICAgLy8gYTIgPSBhMjwwLjU/Mi4wKmEyKmEyOjEuMC0yLjAqKDEuMC1hMikqKDEuMC1hMik7CiAgICAgIC8vIGZsb2F0IGRlbHRhID0gYSAtIGEyOwogICAgICAvLyBpZiAoZGVsdGEgPCAwLjI1ICYmIGRlbHRhID4gLTAuMjUpCiAgICAgIC8vIHsKICAgICAgLy8gICAgIGEgPSBhICsgMC41KmRlbHRhOwogICAgICAvLyB9CiAgICAgIAogICAgICB2ZWMyIG8gPSAxLjAgLyB2ZWMyKHRleHR1cmVTaXplKGZyYW1lLCAwKSk7CiAgICAACiAgICAgIG91dENvbG9yID0gZzsKICAAI3ZlcnNpb24gMzAwIGVzCmluIHZlYzIgYV9wb3NpdGlvbjsKaW4gdmVjMiBhX3RleENvb3JkOwoKdW5pZm9ybSBtYXQ0IHVfdGV4dHVyZU1hdHJpeDsKCm91dCB2ZWMyIHZfdGV4Q29vcmQ7CnZvaWQgbWFpbigpIHsKICBnbF9Qb3NpdGlvbiA9IHZlYzQoYV9wb3NpdGlvbi54LCBhX3Bvc2l0aW9uLnksIDAsIDEpOwogIHZfdGV4Q29vcmQgPSh1X3RleHR1cmVNYXRyaXggKiB2ZWM0KGFfdGV4Q29vcmQsIDAsIDEpKS54eTsKfQoAc2V0QmVhdXR5ICVmICVmICVmICVmICVmCgBvdXRDb2xvciA9IHNyY19jb2xvcjsKAG91dENvbG9yID0gbWl4KHZlYzQodV9jb2xvciwxLjApLHNyY19jb2xvcixhKTsKADZBbGxJbjEAAIAoAABfFgAAUDZBbGxJbjEAAAAABCkAAHAWAAAAAAAAaBYAAFBLNkFsbEluMQAAAAQpAACMFgAAAQAAAGgWAABpaQB2AHZpAHwWAADMFgAATjEwZW1zY3JpcHRlbjN2YWxFAACAKAAAuBYAAGlpaQB2aWlpAAAAALwnAAB8FgAAcCgAAHAoAABwKAAAcCgAAHAoAAB2aWlkZGRkZABBkC4LyAi8JwAAfBYAAHAoAABwKAAAcCgAAHAoAAB2aWlkZGRkALwnAAB8FgAAdmlpALwnAADMFgAAzBYAAHwWAADMFgAAHCgAALwnAADMFgAAoBcAAE5TdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFAACAKAAAYBcAAMwWAAC8JwAAzBYAAMwWAABOU3QzX18yMTJiYXNpY19zdHJpbmdJaE5TXzExY2hhcl90cmFpdHNJaEVFTlNfOWFsbG9jYXRvckloRUVFRQAAgCgAALgXAABOU3QzX18yMTJiYXNpY19zdHJpbmdJd05TXzExY2hhcl90cmFpdHNJd0VFTlNfOWFsbG9jYXRvckl3RUVFRQAAgCgAAAAYAABOU3QzX18yMTJiYXNpY19zdHJpbmdJRHNOU18xMWNoYXJfdHJhaXRzSURzRUVOU185YWxsb2NhdG9ySURzRUVFRQAAAIAoAABIGAAATlN0M19fMjEyYmFzaWNfc3RyaW5nSURpTlNfMTFj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")||(je=oe,oe=I.locateFile?I.locateFile(je,f):f+je);var Fi=$=>{for(;$.length>0;)$.shift()(I)};I.noExitRuntime;function To($){this.excPtr=$,this.ptr=$-24,this.set_type=function(K){TA[this.ptr+4>>2]=K},this.get_type=function(){return TA[this.ptr+4>>2]},this.set_destructor=function(K){TA[this.ptr+8>>2]=K},this.get_destructor=function(){return TA[this.ptr+8>>2]},this.set_caught=function(K){K=K?1:0,lA[this.ptr+12|0]=K},this.get_caught=function(){return lA[this.ptr+12|0]!=0},this.set_rethrown=function(K){K=K?1:0,lA[this.ptr+13|0]=K},this.get_rethrown=function(){return lA[this.ptr+13|0]!=0},this.init=function(K,vA){this.set_adjusted_ptr(0),this.set_type(K),this.set_destructor(vA)},this.set_adjusted_ptr=function(K){TA[this.ptr+16>>2]=K},this.get_adjusted_ptr=function(){return TA[this.ptr+16>>2]},this.get_exception_ptr=function(){if(ba(this.get_type()))return TA[this.excPtr>>2];var K=this.get_adjusted_ptr();return K!==0?K:this.excPtr}}var to,uo,Vs,ki=$=>{for(var K="",vA=$;rA[vA];)K+=to[rA[vA++]];return K},ns={},jo={},$i={},jt=$=>{throw new uo($)},io=$=>{throw new Vs($)},bi=($,K,vA)=>{function qA(Oe){var rt=vA(Oe);rt.length!==$.length&&io("Mismatched type converter count");for(var dt=0;dt<$.length;++dt)vs($[dt],rt[dt])}$.forEach(function(Oe){$i[Oe]=K});var Ae=new Array(K.length),pe=[],Pe=0;K.forEach((Oe,rt)=>{jo.hasOwnProperty(Oe)?Ae[rt]=jo[Oe]:(pe.push(Oe),ns.hasOwnProperty(Oe)||(ns[Oe]=[]),ns[Oe].push(()=>{Ae[rt]=jo[Oe],++Pe===pe.length&&qA(Ae)}))}),pe.length===0&&qA(Ae)};function vs($,K,vA={}){if(!("argPackAdvance"in K))throw new TypeError("registerType registeredInstance requires argPackAdvance");return function(qA,Ae,pe={}){var Pe=Ae.name;if(qA||jt(`type "${Pe}" must have a positive integer typeid pointer`),jo.hasOwnProperty(qA)){if(pe.ignoreDuplicateRegistrations)return;jt(`Cannot register type '${Pe}' twice`)}if(jo[qA]=Ae,delete $i[qA],ns.hasOwnProperty(qA)){var Oe=ns[qA];delete ns[qA],Oe.forEach(rt=>rt())}}($,K,vA)}var HA,ce=$=>{jt($.$$.ptrType.registeredClass.name+" instance already deleted")},Ve=!1,Ut=$=>{},nt=$=>{$.count.value-=1,$.count.value===0&&(K=>{K.smartPtr?K.smartPtrType.rawDestructor(K.smartPtr):K.ptrType.registeredClass.rawDestructor(K.ptr)})($)},It=($,K,vA)=>{if(K===vA)return $;if(vA.baseClass===void 0)return null;var qA=It($,K,vA.baseClass);return qA===null?null:vA.downcast(qA)},Xt={},$t=()=>Object.keys(Oi).length,be=()=>{var $=[];for(var K in Oi)Oi.hasOwnProperty(K)&&$.push(Oi[K]);return $},Xe=[],vt=()=>{for(;Xe.length;){var $=Xe.pop();$.$$.deleteScheduled=!1,$.delete()}},wt=$=>{HA=$,Xe.length&&HA&&HA(vt)},Oi={},po=($,K)=>(K=((vA,qA)=>{for(qA===void 0&&jt("ptr should not be undefined");vA.baseClass;)qA=vA.upcast(qA),vA=vA.baseClass;return qA})($,K),Oi[K]),No=($,K)=>(K.ptrType&&K.ptr||io("makeClassHandle requires ptr and ptrType"),!!K.smartPtrType!=!!K.smartPtr&&io("Both smartPtrType and smartPtr must be specified"),K.count={value:1},Go(Object.create($,{$$:{value:K}})));function oo($){var K=this.getPointee($);if(!K)return this.destructor($),null;var vA=po(this.registeredClass,K);if(vA!==void 0){if(vA.$$.count.value===0)return vA.$$.ptr=K,vA.$$.smartPtr=$,vA.clone();var qA=vA.clone();return this.destructor($),qA}function Ae(){return this.isSmartPointer?No(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:K,smartPtrType:this,smartPtr:$}):No(this.registeredClass.instancePrototype,{ptrType:this,ptr:$})}var pe,Pe=this.registeredClass.getActualType(K),Oe=Xt[Pe];if(!Oe)return Ae.call(this);pe=this.isConst?Oe.constPointerType:Oe.pointerType;var rt=It(K,this.registeredClass,pe.registeredClass);return rt===null?Ae.call(this):this.isSmartPointer?No(pe.registeredClass.instancePrototype,{ptrType:pe,ptr:rt,smartPtrType:this,smartPtr:$}):No(pe.registeredClass.instancePrototype,{ptrType:pe,ptr:rt})}var Go=$=>typeof FinalizationRegistry>"u"?(Go=K=>K,$):(Ve=new FinalizationRegistry(K=>{nt(K.$$)}),Ut=K=>Ve.unregister(K),(Go=K=>{var vA=K.$$;if(vA.smartPtr){var qA={$$:vA};Ve.register(K,qA,K)}return K})($));function An(){}var rn=($,K)=>Object.defineProperty(K,"name",{value:$}),Es=($,K,vA)=>{if($[K].overloadTable===void 0){var qA=$[K];$[K]=function(){return $[K].overloadTable.hasOwnProperty(arguments.length)||jt(`Function '${vA}' called with an invalid number of arguments (${arguments.length}) - expects one of (${$[K].overloadTable})!`),$[K].overloadTable[arguments.length].apply(this,arguments)},$[K].overloadTable=[],$[K].overloadTable[qA.argCount]=qA}};function an($,K,vA,qA,Ae,pe,Pe,Oe){this.name=$,this.constructor=K,this.instancePrototype=vA,this.rawDestructor=qA,this.baseClass=Ae,this.getActualType=pe,this.upcast=Pe,this.downcast=Oe,this.pureVirtualFunctions=[]}var Do=($,K,vA)=>{for(;K!==vA;)K.upcast||jt(`Expected null or instance of ${vA.name}, got an instance of ${K.name}`),$=K.upcast($),K=K.baseClass;return $};function pA($,K){if(K===null)return this.isReference&&jt(`null is not a valid ${this.name}`),0;K.$$||jt(`Cannot pass "${as(K)}" as a ${this.name}`),K.$$.ptr||jt(`Cannot pass deleted object as a pointer of type ${this.name}`);var vA=K.$$.ptrType.registeredClass;return Do(K.$$.ptr,vA,this.registeredClass)}function Jn($,K){var vA;if(K===null)return this.isReference&&jt(`null is not a valid ${this.name}`),this.isSmartPointer?(vA=this.rawConstructor(),$!==null&&$.push(this.rawDestructor,vA),vA):0;K.$$||jt(`Cannot pass "${as(K)}" as a ${this.name}`),K.$$.ptr||jt(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&K.$$.ptrType.isConst&&jt(`Cannot convert argument of type ${K.$$.smartPtrType?K.$$.smartPtrType.name:K.$$.ptrType.name} to parameter type ${this.name}`);var qA=K.$$.ptrType.registeredClass;if(vA=Do(K.$$.ptr,qA,this.registeredClass),this.isSmartPointer)switch(K.$$.smartPtr===void 0&&jt("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:K.$$.smartPtrType===this?vA=K.$$.smartPtr:jt(`Cannot convert argument of type ${K.$$.smartPtrType?K.$$.smartPtrType.name:K.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:vA=K.$$.smartPtr;break;case 2:if(K.$$.smartPtrType===this)vA=K.$$.smartPtr;else{var Ae=K.clone();vA=this.rawShare(vA,cn.toHandle(()=>Ae.delete())),$!==null&&$.push(this.rawDestructor,vA)}break;default:jt("Unsupporting sharing policy")}return vA}function Qr($,K){if(K===null)return this.isReference&&jt(`null is not a valid ${this.name}`),0;K.$$||jt(`Cannot pass "${as(K)}" as a ${this.name}`),K.$$.ptr||jt(`Cannot pass deleted object as a pointer of type ${this.name}`),K.$$.ptrType.isConst&&jt(`Cannot convert argument of type ${K.$$.ptrType.name} to parameter type ${this.name}`);var vA=K.$$.ptrType.registeredClass;return Do(K.$$.ptr,vA,this.registeredClass)}function ds($){return this.fromWireType(TA[$>>2])}function zr($,K,vA,qA,Ae,pe,Pe,Oe,rt,dt,Mt){this.name=$,this.registeredClass=K,this.isReference=vA,this.isConst=qA,this.isSmartPointer=Ae,this.pointeeType=pe,this.sharingPolicy=Pe,this.rawGetPointee=Oe,this.rawConstructor=rt,this.rawShare=dt,this.rawDestructor=Mt,Ae||K.baseClass!==void 0?this.toWireType=Jn:qA?(this.toWireType=pA,this.destructorFunction=null):(this.toWireType=Qr,this.destructorFunction=null)}var Pi,Rs,or=[],en=$=>{var K=or[$];return K||($>=or.length&&(or.length=$+1),or[$]=K=Pi.get($)),K},wn=($,K,vA)=>$.includes("j")?((qA,Ae,pe)=>{var Pe=I["dynCall_"+qA];return pe&&pe.length?Pe.apply(null,[Ae].concat(pe)):Pe.call(null,Ae)})($,K,vA):en(K).apply(null,vA),Ht=($,K)=>{var vA,qA,Ae,pe=($=ki($)).includes("j")?(vA=$,qA=K,Ae=[],function(){return Ae.length=0,Object.assign(Ae,arguments),wn(vA,qA,Ae)}):en(K);return typeof pe!="function"&&jt(`unknown function pointer with signature ${$}: ${K}`),pe},yg=$=>{var K=ua($),vA=ki(K);return yn(K),vA},On=($,K)=>{var vA=[],qA={};throw K.forEach(function Ae(pe){qA[pe]||jo[pe]||($i[pe]?$i[pe].forEach(Ae):(vA.push(pe),qA[pe]=!0))}),new Rs(`${$}: `+vA.map(yg).join([", "]))},Gn=($,K)=>{for(var vA=[],qA=0;qA<$;qA++)vA.push(TA[K+4*qA>>2]);return vA},Js=$=>{for(;$.length;){var K=$.pop();$.pop()(K)}};function pr($,K,vA,qA,Ae,pe){var Pe=K.length;Pe<2&&jt("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var Oe=K[1]!==null&&vA!==null,rt=!1,dt=1;dt($ instanceof Object||jt(`${vA} with invalid "this": ${$}`),$ instanceof K.registeredClass.constructor||jt(`${vA} incompatible with "this" of type ${$.constructor.name}`),$.$$.ptr||jt(`cannot call emscripten binding method ${vA} on deleted object`),Do($.$$.ptr,$.$$.ptrType.registeredClass,K.registeredClass));function mr(){this.allocated=[void 0],this.freelist=[]}var mo=new mr,gn=$=>{$>=mo.reserved&&--mo.get($).refcount===0&&mo.free($)},Dl=()=>{for(var $=0,K=mo.reserved;K($||jt("Cannot use deleted val. handle = "+$),mo.get($).value),toHandle:$=>{switch($){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return mo.allocate({refcount:1,value:$})}}};function fr($){return this.fromWireType(cA[$>>2])}var Ls,Vc,ms,as=$=>{if($===null)return"null";var K=typeof $;return K==="object"||K==="array"||K==="function"?$.toString():""+$},Su=($,K)=>{switch(K){case 4:return function(vA){return this.fromWireType(WA[vA>>2])};case 8:return function(vA){return this.fromWireType(ge[vA>>3])};default:throw new TypeError(`invalid float width (${K}): ${$}`)}},Wa=($,K,vA)=>{switch(K){case 1:return vA?qA=>lA[qA|0]:qA=>rA[qA|0];case 2:return vA?qA=>mA[qA>>1]:qA=>IA[qA>>1];case 4:return vA?qA=>cA[qA>>2]:qA=>TA[qA>>2];default:throw new TypeError(`invalid integer width (${K}): ${$}`)}},Cs=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,sg=($,K,vA)=>{for(var qA=K+vA,Ae=K;$[Ae]&&!(Ae>=qA);)++Ae;if(Ae-K>16&&$.buffer&&Cs)return Cs.decode($.subarray(K,Ae));for(var pe="";K>10,56320|1023&dt)}}else pe+=String.fromCharCode((31&Pe)<<6|Oe)}else pe+=String.fromCharCode(Pe)}return pe},VI=($,K)=>$?sg(rA,$,K):"",$o=typeof TextDecoder<"u"?new TextDecoder("utf-16le"):void 0,Xi=($,K)=>{for(var vA=$,qA=vA>>1,Ae=qA+K/2;!(qA>=Ae)&&IA[qA];)++qA;if((vA=qA<<1)-$>32&&$o)return $o.decode(rA.subarray($,vA));for(var pe="",Pe=0;!(Pe>=K/2);++Pe){var Oe=mA[$+2*Pe>>1];if(Oe==0)break;pe+=String.fromCharCode(Oe)}return pe},pc=($,K,vA)=>{if(vA===void 0&&(vA=2147483647),vA<2)return 0;for(var qA=K,Ae=(vA-=2)<2*$.length?vA/2:$.length,pe=0;pe>1]=Pe,K+=2}return mA[K>>1]=0,K-qA},ng=$=>2*$.length,Dg=($,K)=>{for(var vA=0,qA="";!(vA>=K/4);){var Ae=cA[$+4*vA>>2];if(Ae==0)break;if(++vA,Ae>=65536){var pe=Ae-65536;qA+=String.fromCharCode(55296|pe>>10,56320|1023&pe)}else qA+=String.fromCharCode(Ae)}return qA},Ia=($,K,vA)=>{if(vA===void 0&&(vA=2147483647),vA<4)return 0;for(var qA=K,Ae=qA+vA-4,pe=0;pe<$.length;++pe){var Pe=$.charCodeAt(pe);if(Pe>=55296&&Pe<=57343&&(Pe=65536+((1023&Pe)<<10)|1023&$.charCodeAt(++pe)),cA[K>>2]=Pe,(K+=4)+4>Ae)break}return cA[K>>2]=0,K-qA},bo=$=>{for(var K=0,vA=0;vA<$.length;++vA){var qA=$.charCodeAt(vA);qA>=55296&&qA<=57343&&++vA,K+=4}return K},Zr=($,K)=>{var vA=jo[$];return vA===void 0&&jt(K+" has unknown type "+yg($)),vA},_o=($,K,vA)=>{var qA=[],Ae=$.toWireType(qA,vA);return qA.length&&(TA[K>>2]=cn.toHandle(qA)),Ae},Jc={},Hn=[],Hs=Reflect.construct,Sg=[null,[],[]],mc=($,K)=>{var vA=Sg[$];K===0||K===10?(($===1?k:U)(sg(vA,0)),vA.length=0):vA.push(K)};(()=>{for(var $=new Array(256),K=0;K<256;++K)$[K]=String.fromCharCode(K);to=$})(),uo=I.BindingError=class extends Error{constructor($){super($),this.name="BindingError"}},Vs=I.InternalError=class extends Error{constructor($){super($),this.name="InternalError"}},Object.assign(An.prototype,{isAliasOf($){if(!(this instanceof An)||!($ instanceof An))return!1;var K=this.$$.ptrType.registeredClass,vA=this.$$.ptr;$.$$=$.$$;for(var qA=$.$$.ptrType.registeredClass,Ae=$.$$.ptr;K.baseClass;)vA=K.upcast(vA),K=K.baseClass;for(;qA.baseClass;)Ae=qA.upcast(Ae),qA=qA.baseClass;return K===qA&&vA===Ae},clone(){if(this.$$.ptr||ce(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var $,K=Go(Object.create(Object.getPrototypeOf(this),{$$:{value:($=this.$$,{count:$.count,deleteScheduled:$.deleteScheduled,preservePointerOnDelete:$.preservePointerOnDelete,ptr:$.ptr,ptrType:$.ptrType,smartPtr:$.smartPtr,smartPtrType:$.smartPtrType})}}));return K.$$.count.value+=1,K.$$.deleteScheduled=!1,K},delete(){this.$$.ptr||ce(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&jt("Object already scheduled for deletion"),Ut(this),nt(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||ce(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&jt("Object already scheduled for deletion"),Xe.push(this),Xe.length===1&&HA&&HA(vt),this.$$.deleteScheduled=!0,this}}),I.getInheritedInstanceCount=$t,I.getLiveInheritedInstances=be,I.flushPendingDeletes=vt,I.setDelayFunction=wt,Object.assign(zr.prototype,{getPointee($){return this.rawGetPointee&&($=this.rawGetPointee($)),$},destructor($){this.rawDestructor&&this.rawDestructor($)},argPackAdvance:8,readValueFromPointer:ds,deleteObject($){$!==null&&$.delete()},fromWireType:oo}),Rs=I.UnboundTypeError=(Ls=Error,(ms=rn(Vc="UnboundTypeError",function($){this.name=Vc,this.message=$;var K=new Error($).stack;K!==void 0&&(this.stack=this.toString()+` +`+K.replace(/^Error(:[^\n]*)?\n/,""))})).prototype=Object.create(Ls.prototype),ms.prototype.constructor=ms,ms.prototype.toString=function(){return this.message===void 0?this.name:`${this.name}: ${this.message}`},ms),Object.assign(mr.prototype,{get($){return this.allocated[$]},has($){return this.allocated[$]!==void 0},allocate($){var K=this.freelist.pop()||this.allocated.length;return this.allocated[K]=$,K},free($){this.allocated[$]=void 0,this.freelist.push($)}}),mo.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),mo.reserved=mo.allocated.length,I.count_emval_handles=Dl;var fn,Ga={w:($,K,vA)=>{throw new To($).init(K,vA),$},q:($,K,vA,qA,Ae)=>{},u:($,K,vA,qA)=>{vs($,{name:K=ki(K),fromWireType:function(Ae){return!!Ae},toWireType:function(Ae,pe){return pe?vA:qA},argPackAdvance:8,readValueFromPointer:function(Ae){return this.fromWireType(rA[Ae])},destructorFunction:null})},y:($,K,vA,qA,Ae,pe,Pe,Oe,rt,dt,Mt,Pt,li)=>{Mt=ki(Mt),pe=Ht(Ae,pe),Oe&&(Oe=Ht(Pe,Oe)),dt&&(dt=Ht(rt,dt)),li=Ht(Pt,li);var ct=(Ot=>{if(Ot===void 0)return"_unknown";var Ji=(Ot=Ot.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return Ji>=48&&Ji<=57?`_${Ot}`:Ot})(Mt);((Ot,Ji,qi)=>{I.hasOwnProperty(Ot)?(jt(`Cannot register public name '${Ot}' twice`),Es(I,Ot,Ot),I.hasOwnProperty(qi)&&jt(`Cannot register multiple overloads of a function with the same number of arguments (${qi})!`),I[Ot].overloadTable[qi]=Ji):I[Ot]=Ji})(ct,function(){On(`Cannot construct ${Mt} due to unbound types`,[qA])}),bi([$,K,vA],qA?[qA]:[],function(Ot){var Ji,qi;Ot=Ot[0],qi=qA?(Ji=Ot.registeredClass).instancePrototype:An.prototype;var qs=rn(Mt,function(){if(Object.getPrototypeOf(this)!==Mi)throw new uo("Use 'new' to construct "+Mt);if(zo.constructor_body===void 0)throw new uo(Mt+" has no accessible constructor");var xn=zo.constructor_body[arguments.length];if(xn===void 0)throw new uo(`Tried to invoke ctor of ${Mt} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(zo.constructor_body).toString()}) parameters instead!`);return xn.apply(this,arguments)}),Mi=Object.create(qi,{constructor:{value:qs}});qs.prototype=Mi;var zo=new an(Mt,qs,Mi,li,Ji,pe,Oe,dt);zo.baseClass&&(zo.baseClass.__derivedClasses===void 0&&(zo.baseClass.__derivedClasses=[]),zo.baseClass.__derivedClasses.push(zo));var Mg=new zr(Mt,zo,!0,!1,!1),sr=new zr(Mt+"*",zo,!1,!1,!1),yr=new zr(Mt+" const*",zo,!1,!0,!1);return Xt[$]={pointerType:sr,constPointerType:yr},((xn,Sl,Ks)=>{I.hasOwnProperty(xn)||io("Replacing nonexistant public symbol"),I[xn].overloadTable!==void 0&&Ks!==void 0?I[xn].overloadTable[Ks]=Sl:(I[xn]=Sl,I[xn].argCount=Ks)})(ct,qs),[Mg,sr,yr]})},x:($,K,vA,qA,Ae,pe)=>{var Pe=Gn(K,vA);Ae=Ht(qA,Ae),bi([],[$],function(Oe){var rt=`constructor ${(Oe=Oe[0]).name}`;if(Oe.registeredClass.constructor_body===void 0&&(Oe.registeredClass.constructor_body=[]),Oe.registeredClass.constructor_body[K-1]!==void 0)throw new uo(`Cannot register multiple constructors with identical number of parameters (${K-1}) for class '${Oe.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return Oe.registeredClass.constructor_body[K-1]=()=>{On(`Cannot construct ${Oe.name} due to unbound types`,Pe)},bi([],Pe,dt=>(dt.splice(1,0,null),Oe.registeredClass.constructor_body[K-1]=pr(rt,dt,null,Ae,pe),[])),[]})},i:($,K,vA,qA,Ae,pe,Pe,Oe,rt)=>{var dt=Gn(vA,qA);K=(Mt=>{const Pt=(Mt=Mt.trim()).indexOf("(");return Pt!==-1?Mt.substr(0,Pt):Mt})(K=ki(K)),pe=Ht(Ae,pe),bi([],[$],function(Mt){var Pt=`${(Mt=Mt[0]).name}.${K}`;function li(){On(`Cannot call ${Pt} due to unbound types`,dt)}K.startsWith("@@")&&(K=Symbol[K.substring(2)]),Oe&&Mt.registeredClass.pureVirtualFunctions.push(K);var ct=Mt.registeredClass.instancePrototype,Ot=ct[K];return Ot===void 0||Ot.overloadTable===void 0&&Ot.className!==Mt.name&&Ot.argCount===vA-2?(li.argCount=vA-2,li.className=Mt.name,ct[K]=li):(Es(ct,K,Pt),ct[K].overloadTable[vA-2]=li),bi([],dt,function(Ji){var qi=pr(Pt,Ji,Mt,pe,Pe);return ct[K].overloadTable===void 0?(qi.argCount=vA-2,ct[K]=qi):ct[K].overloadTable[vA-2]=qi,[]}),[]})},k:($,K,vA,qA,Ae,pe,Pe,Oe,rt,dt)=>{K=ki(K),Ae=Ht(qA,Ae),bi([],[$],function(Mt){var Pt=`${(Mt=Mt[0]).name}.${K}`,li={get(){On(`Cannot access ${Pt} due to unbound types`,[vA,Pe])},enumerable:!0,configurable:!0};return li.set=rt?()=>On(`Cannot access ${Pt} due to unbound types`,[vA,Pe]):ct=>jt(Pt+" is a read-only property"),Object.defineProperty(Mt.registeredClass.instancePrototype,K,li),bi([],rt?[vA,Pe]:[vA],function(ct){var Ot=ct[0],Ji={get(){var qs=Pn(this,Mt,Pt+" getter");return Ot.fromWireType(Ae(pe,qs))},enumerable:!0};if(rt){rt=Ht(Oe,rt);var qi=ct[1];Ji.set=function(qs){var Mi=Pn(this,Mt,Pt+" setter"),zo=[];rt(dt,Mi,qi.toWireType(zo,qs)),Js(zo)}}return Object.defineProperty(Mt.registeredClass.instancePrototype,K,Ji),[]}),[]})},t:($,K)=>{vs($,{name:K=ki(K),fromWireType:vA=>{var qA=cn.toValue(vA);return gn(vA),qA},toWireType:(vA,qA)=>cn.toHandle(qA),argPackAdvance:8,readValueFromPointer:fr,destructorFunction:null})},p:($,K,vA)=>{vs($,{name:K=ki(K),fromWireType:qA=>qA,toWireType:(qA,Ae)=>Ae,argPackAdvance:8,readValueFromPointer:Su(K,vA),destructorFunction:null})},g:($,K,vA,qA,Ae)=>{K=ki(K);var pe=rt=>rt;if(qA===0){var Pe=32-8*vA;pe=rt=>rt<>>Pe}var Oe=K.includes("unsigned");vs($,{name:K,fromWireType:pe,toWireType:Oe?function(rt,dt){return this.name,dt>>>0}:function(rt,dt){return this.name,dt},argPackAdvance:8,readValueFromPointer:Wa(K,vA,qA!==0),destructorFunction:null})},a:($,K,vA)=>{var qA=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][K];function Ae(pe){var Pe=TA[pe>>2],Oe=TA[pe+4>>2];return new qA(lA.buffer,Oe,Pe)}vs($,{name:vA=ki(vA),fromWireType:Ae,argPackAdvance:8,readValueFromPointer:Ae},{ignoreDuplicateRegistrations:!0})},o:($,K)=>{var vA=(K=ki(K))==="std::string";vs($,{name:K,fromWireType(qA){var Ae,pe=TA[qA>>2],Pe=qA+4;if(vA)for(var Oe=Pe,rt=0;rt<=pe;++rt){var dt=Pe+rt;if(rt==pe||rA[dt]==0){var Mt=VI(Oe,dt-Oe);Ae===void 0?Ae=Mt:(Ae+="\0",Ae+=Mt),Oe=dt+1}}else{var Pt=new Array(pe);for(rt=0;rt{for(var li=0,ct=0;ct=55296&&Ot<=57343?(li+=4,++ct):li+=3}return li})(Ae):Ae.length;var Oe=fs(4+pe+1),rt=Oe+4;if(TA[Oe>>2]=pe,vA&&Pe)((Pt,li,ct,Ot)=>{if(!(Ot>0))return 0;for(var Ji=ct,qi=ct+Ot-1,qs=0;qs=55296&&Mi<=57343&&(Mi=65536+((1023&Mi)<<10)|1023&Pt.charCodeAt(++qs)),Mi<=127){if(ct>=qi)break;li[ct++]=Mi}else if(Mi<=2047){if(ct+1>=qi)break;li[ct++]=192|Mi>>6,li[ct++]=128|63&Mi}else if(Mi<=65535){if(ct+2>=qi)break;li[ct++]=224|Mi>>12,li[ct++]=128|Mi>>6&63,li[ct++]=128|63&Mi}else{if(ct+3>=qi)break;li[ct++]=240|Mi>>18,li[ct++]=128|Mi>>12&63,li[ct++]=128|Mi>>6&63,li[ct++]=128|63&Mi}}li[ct]=0})(Ae,rA,rt,pe+1);else if(Pe)for(var dt=0;dt255&&(yn(rt),jt("String has UTF-16 code units that do not fit in 8 bits")),rA[rt+dt]=Mt}else for(dt=0;dt{var qA,Ae,pe,Pe,Oe;vA=ki(vA),K===2?(qA=Xi,Ae=pc,Pe=ng,pe=()=>IA,Oe=1):K===4&&(qA=Dg,Ae=Ia,Pe=bo,pe=()=>TA,Oe=2),vs($,{name:vA,fromWireType:rt=>{for(var dt,Mt=TA[rt>>2],Pt=pe(),li=rt+4,ct=0;ct<=Mt;++ct){var Ot=rt+4+ct*K;if(ct==Mt||Pt[Ot>>Oe]==0){var Ji=qA(li,Ot-li);dt===void 0?dt=Ji:(dt+="\0",dt+=Ji),li=Ot+K}}return yn(rt),dt},toWireType:(rt,dt)=>{typeof dt!="string"&&jt(`Cannot pass non-string to C++ string type ${vA}`);var Mt=Pe(dt),Pt=fs(4+Mt+K);return TA[Pt>>2]=Mt>>Oe,Ae(dt,Pt+4,Mt+K),rt!==null&&rt.push(yn,Pt),Pt},argPackAdvance:8,readValueFromPointer:fr,destructorFunction(rt){yn(rt)}})},v:($,K)=>{vs($,{isVoid:!0,name:K=ki(K),argPackAdvance:0,fromWireType:()=>{},toWireType:(vA,qA)=>{}})},j:($,K,vA)=>($=cn.toValue($),K=Zr(K,"emval::as"),_o(K,vA,$)),e:($,K,vA,qA,Ae)=>{var pe,Pe;return($=Hn[$])(K=cn.toValue(K),K[vA=(Pe=Jc[pe=vA])===void 0?ki(pe):Pe],qA,Ae)},d:gn,f:($,K,vA)=>{var qA=((dt,Mt)=>{for(var Pt=new Array(dt),li=0;li>2],"parameter "+li);return Pt})($,K),Ae=qA.shift();$--;var pe,Pe,Oe=new Array($),rt=`methodCaller<(${qA.map(dt=>dt.name).join(", ")}) => ${Ae.name}>`;return pe=rn(rt,(dt,Mt,Pt,li)=>{for(var ct=0,Ot=0;Ot<$;++Ot)Oe[Ot]=qA[Ot].readValueFromPointer(li+ct),ct+=qA[Ot].argPackAdvance;var Ji=vA===1?Hs(Mt,Oe):Mt.apply(dt,Oe);for(Ot=0;Ot<$;++Ot)qA[Ot].deleteObject&&qA[Ot].deleteObject(Oe[Ot]);return _o(Ae,Pt,Ji)}),Pe=Hn.length,Hn.push(pe),Pe},c:$=>{$>4&&(mo.get($).refcount+=1)},b:$=>{var K=cn.toValue($);Js(K),gn($)},h:($,K)=>{var vA=($=Zr($,"_emval_take_value")).readValueFromPointer(K);return cn.toHandle(vA)},m:()=>{Le("")},s:($,K,vA)=>rA.copyWithin($,K,K+vA),r:$=>{rA.length,Le("OOM")},n:($,K,vA,qA)=>{for(var Ae=0,pe=0;pe>2],Oe=TA[K+4>>2];K+=8;for(var rt=0;rt>2]=Ae,0}},In=function(){var $={a:Ga};function K(vA,qA){var Ae,pe;return In=vA.exports,_=In.z,Ae=_.buffer,I.HEAP8=lA=new Int8Array(Ae),I.HEAP16=mA=new Int16Array(Ae),I.HEAPU8=rA=new Uint8Array(Ae),I.HEAPU16=IA=new Uint16Array(Ae),I.HEAP32=cA=new Int32Array(Ae),I.HEAPU32=TA=new Uint32Array(Ae),I.HEAPF32=WA=new Float32Array(Ae),I.HEAPF64=ge=new Float64Array(Ae),Pi=In.C,pe=In.A,Be.unshift(pe),function(){if(_e--,I.monitorRunDependencies&&I.monitorRunDependencies(_e),_e==0&&We){var Pe=We;We=null,Pe()}}(),In}if(_e++,I.monitorRunDependencies&&I.monitorRunDependencies(_e),I.instantiateWasm)try{return I.instantiateWasm($,K)}catch(vA){U(`Module.instantiateWasm callback failed with error: ${vA}`),l(vA)}return gi(0,oe,$,function(vA){K(vA.instance)}).catch(l),{}}(),fs=$=>(fs=In.B)($),ua=$=>(ua=In.D)($),yn=$=>(yn=In.E)($),ba=$=>(ba=In.F)($);I.dynCall_jiji=($,K,vA,qA,Ae)=>(I.dynCall_jiji=In.G)($,K,vA,qA,Ae),I._vertexShaderSource=10688;function Sa(){function $(){fn||(fn=!0,I.calledRun=!0,ue||(Fi(Be),r(I),I.onRuntimeInitialized&&I.onRuntimeInitialized(),function(){if(I.postRun)for(typeof I.postRun=="function"&&(I.postRun=[I.postRun]);I.postRun.length;)ze(I.postRun.shift());Fi(ut)}()))}_e>0||(function(){if(I.preRun)for(typeof I.preRun=="function"&&(I.preRun=[I.preRun]);I.preRun.length;)pt(I.preRun.shift());Fi(xe)}(),_e>0||(I.setStatus?(I.setStatus("Running..."),setTimeout(function(){setTimeout(function(){I.setStatus("")},1),$()},1)):$()))}if(We=function $(){fn||Sa(),fn||(We=$)},I.preInit)for(typeof I.preInit=="function"&&(I.preInit=[I.preInit]);I.preInit.length>0;)I.preInit.pop()();return Sa(),i.ready}})(),jgA=KgA,Pj=0,QX=class pX{constructor(i){this.core=i,GL(this,"seq"),GL(this,"_core"),GL(this,"log"),GL(this,"beautyParams"),Pj+=1,this.seq=Pj,this._core=i,this.log=i.log.createChild({id:`${this.getAlias()}${Pj}`}),this.log.info("created")}getName(){return pX.Name}getAlias(){return"bb"}getValidateRule(i){switch(i){case"start":case"update":return HgA(this._core);case"stop":return qgA(this._core)}}getGroup(){return"bb"}async start(i){this._core.room.videoManager.Wasm||(this._core.room.videoManager.Wasm=await jgA()),this._core.room.videoManager.renderMode="webgl";const r=this._core.utils.isUndefined(i.beauty)?.5:i.beauty,l=this._core.utils.isUndefined(i.brightness)?.5:i.brightness,I=this._core.utils.isUndefined(i.ruddy)?.5:i.ruddy;return this._core.room.videoManager.setBeautyParams({beauty:r,brightness:l,ruddy:I})}async update(i){const r=this._core.utils.isUndefined(i.beauty)?.5:i.beauty,l=this._core.utils.isUndefined(i.brightness)?.5:i.brightness,I=this._core.utils.isUndefined(i.ruddy)?.5:i.ruddy;return this._core.room.videoManager.setBeautyParams({beauty:r,brightness:l,ruddy:I})}async stop(){return this._core.room.videoManager.renderMode="auto",this._core.room.videoManager.stopBeauty()}destroy(){this._core.room.videoManager.renderMode="auto"}};GL(QX,"Name","BasicBeauty");var mX=QX,WgA=mX;const zgA=Object.freeze(Object.defineProperty({__proto__:null,BasicBeauty:mX,default:WgA},Symbol.toStringTag,{value:"Module"})),ZgA=GU(zgA);var XgA=Object.defineProperty,$gA=(t,i,r)=>i in t?XgA(t,i,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[i]=r,sY=(t,i,r)=>$gA(t,typeof i!="symbol"?i+"":i,r),AcA={name:"option",required:!0,properties:{sourceLanguage:{type:"string",required:!0},translationLanguages:{type:["string","array"],required:!1},userIdsToTranscribe:{type:["string","array"],required:!1},transcriberRobotId:{type:"string",required:!1}}},ecA={name:"option",required:!0,properties:{transcriberRobotId:{type:"string",required:!0}}},tcA=new Set([2002,4003]),fX=class yX{constructor(i){this.core=i,sY(this,"disableRandomCall",!0),sY(this,"activeTranscriberMap",new Map),sY(this,"_log"),this._log=this.core.log.createChild({id:`${this.getAlias()}`})}getName(){return yX.Name}getAlias(){return"rt-trans"}getGroup(){return"*"}getValidateRule(i){switch(i){case"start":return AcA;case"update":return{};case"stop":return ecA}}async start(i){var r;const{RtcError:l,ErrorCode:I}=this.core.errorModule;if(!this.core.room.sendSignalMessage)throw new l({code:I.ENV_NOT_SUPPORTED});const{sourceLanguage:h,translationLanguages:f,userIdsToTranscribe:w="all",transcriberRobotId:_}=i,k=_||`transcriber_${this.core.room.roomId}_robot_${this.core.room.userId}`,U={sdkappid:this.core.room.sdkAppId,roomid:String(this.core.room.roomId),roomType:this.core.room.useStringRoomId?1:0,agentParam:{cdnRobotUserid:k,lifecycleUserid:this.core.room.userId,maxIdletime:30},subscribeParams:{subUsers:[]},asrParams:{lang:h,vadSilenceTime:1e3},translationParams:{mode:1,targetLangs:[""]}};f&&f.length>0&&(U.translationParams.mode=1,U.translationParams.targetLangs=Array.isArray(f)?f:[f]),w==="all"?U.subscribeParams.subUsers=[]:Array.isArray(w)?U.subscribeParams.subUsers=w.map(j=>({userId:j,roomType:this.core.room.useStringRoomId?1:0,roomid:String(this.core.room.roomId)})):w&&(U.subscribeParams.subUsers=[{userId:w,roomType:this.core.room.useStringRoomId?1:0,roomid:String(this.core.room.roomId)}]);try{this._log.info(`start_cloud_transcription ${JSON.stringify(U)}`);const j=await this.core.room.sendSignalMessage({command:"start_cloud_transcription",responseCommand:String(8268),data:U,retries:0}),{code:lA,data:rA}=j.data;if(lA!==0){const IA=((r=j.data)==null?void 0:r.message)||"";throw this._log.error("start_cloud_transcription failed",{extraCode:lA,reason:IA,data:rA}),new l({code:I.SERVER_ERROR,extraCode:lA,message:IA})}const{taskId:mA}=rA;if(!mA)throw this._log.error("taskId is required",{data:j.data}),new l({code:I.SERVER_ERROR,message:"taskId is required"});return this.activeTranscriberMap.set(mA,i),this._log.info(`start_cloud_transcription success ${mA}, activeSize: ${this.activeTranscriberMap.size}`),mA}catch(j){throw this._log.error("start_cloud_transcription failed",{error:j}),j}}async update(){}async stop({transcriberRobotId:i}){var r;const{RtcError:l,ErrorCode:I}=this.core.errorModule;if(!this.core.room.sendSignalMessage)throw new l({code:I.ENV_NOT_SUPPORTED});try{const h=await this.core.room.sendSignalMessage({command:"stop_cloud_transcription",responseCommand:String(8270),data:{taskId:i},retries:3});if(h.data.code!==0){const f=h.data.code,w=((r=h.data)==null?void 0:r.message)||"";if(!tcA.has(f))throw this._log.error("stop_cloud_transcription failed",{extraCode:f,reason:w,data:h.data.data}),new l({code:I.SERVER_ERROR,extraCode:f,message:w});this._log.warn("stop_cloud_transcription ignored error",{extraCode:f,reason:w,data:h.data.data})}this.activeTranscriberMap.delete(i)}catch(h){throw this._log.error("stop_cloud_transcription failed",{error:h}),h}}destroy(){this.activeTranscriberMap.clear()}};sY(fX,"Name","RealtimeTranscriber");var DX=fX,icA=DX;const ocA=Object.freeze(Object.defineProperty({__proto__:null,RealtimeTranscriber:DX,default:icA},Symbol.toStringTag,{value:"Module"})),scA=GU(ocA);var ncA=Object.create,LU=Object.defineProperty,rcA=Object.defineProperties,SX=Object.getOwnPropertyDescriptor,acA=Object.getOwnPropertyDescriptors,MX=Object.getOwnPropertyNames,yY=Object.getOwnPropertySymbols,gcA=Object.getPrototypeOf,OW=Object.prototype.hasOwnProperty,vX=Object.prototype.propertyIsEnumerable,U3=(t,i,r)=>i in t?LU(t,i,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[i]=r,Rn=(t,i)=>{for(var r in i||(i={}))OW.call(i,r)&&U3(t,r,i[r]);if(yY)for(var r of yY(i))vX.call(i,r)&&U3(t,r,i[r]);return t},sB=(t,i)=>rcA(t,acA(i)),ccA=(t,i)=>{var r={};for(var l in t)OW.call(t,l)&&i.indexOf(l)<0&&(r[l]=t[l]);if(t!=null&&yY)for(var l of yY(t))i.indexOf(l)<0&&vX.call(t,l)&&(r[l]=t[l]);return r},UU=(t,i)=>function(){return i||(0,t[MX(t)[0]])((i={exports:{}}).exports,i),i.exports},PW=(t,i)=>{for(var r in i)LU(t,r,{get:i[r],enumerable:!0})},lcA=(t,i,r,l)=>{if(i&&typeof i=="object"||typeof i=="function")for(let I of MX(i))OW.call(t,I)||I===r||LU(t,I,{get:()=>i[I],enumerable:!(l=SX(i,I))||l.enumerable});return t},lT=(t,i,r)=>(r=t!=null?ncA(gcA(t)):{},lcA(LU(r,"default",{value:t,enumerable:!0}),t)),Cc=(t,i,r,l)=>{for(var I,h=SX(i,r),f=t.length-1;f>=0;f--)(I=t[f])&&(h=I(i,r,h)||h);return h&&LU(i,r,h),h},de=(t,i,r)=>U3(t,typeof i!="symbol"?i+"":i,r),FU=UU({"../node_modules/.pnpm/eventemitter3@4.0.7/node_modules/eventemitter3/index.js"(t,i){var r=Object.prototype.hasOwnProperty,l="~";function I(){}function h(k,U,j){this.fn=k,this.context=U,this.once=j||!1}function f(k,U,j,lA,rA){if(typeof j!="function")throw new TypeError("The listener must be a function");var mA=new h(j,lA||k,rA),IA=l?l+U:U;return k._events[IA]?k._events[IA].fn?k._events[IA]=[k._events[IA],mA]:k._events[IA].push(mA):(k._events[IA]=mA,k._eventsCount++),k}function w(k,U){--k._eventsCount===0?k._events=new I:delete k._events[U]}function _(){this._events=new I,this._eventsCount=0}Object.create&&(I.prototype=Object.create(null),new I().__proto__||(l=!1)),_.prototype.eventNames=function(){var k,U,j=[];if(this._eventsCount===0)return j;for(U in k=this._events)r.call(k,U)&&j.push(l?U.slice(1):U);return Object.getOwnPropertySymbols?j.concat(Object.getOwnPropertySymbols(k)):j},_.prototype.listeners=function(k){var U=l?l+k:k,j=this._events[U];if(!j)return[];if(j.fn)return[j.fn];for(var lA=0,rA=j.length,mA=new Array(rA);lA1&&(f[_[0]]=void 0),f};t.parseParams=function(f){return f.split(/;\s?/).reduce(h,{})},t.parseFmtpConfig=t.parseParams,t.parsePayloads=function(f){return f.toString().split(" ").map(Number)},t.parseRemoteCandidates=function(f){for(var w=[],_=f.split(" ").map(i),k=0;k<_.length;k+=3)w.push({component:_[k],ip:_[k+1],port:_[k+2]});return w},t.parseImageAttributes=function(f){return f.split(" ").map(function(w){return w.substring(1,w.length-1).split(",").reduce(h,{})})},t.parseSimulcastStreamList=function(f){return f.split(";").map(function(w){return w.split(",").map(function(_){var k,U=!1;return _[0]!=="~"?k=i(_):(k=i(_.substring(1,_.length)),U=!0),{scid:k,paused:U}})})}}}),ucA=UU({"../node_modules/.pnpm/sdp-transform@2.15.0/node_modules/sdp-transform/lib/writer.js"(t,i){var r=xW(),l=/%[sdv%]/g,I=function(_){var k=1,U=arguments,j=U.length;return _.replace(l,function(lA){if(k>=j)return lA;var rA=U[k];switch(k+=1,lA){case"%%":return"%";case"%s":return String(rA);case"%d":return Number(rA);case"%v":return""}})},h=function(_,k,U){var j=[_+"="+(k.format instanceof Function?k.format(k.push?U:U[k.name]):k.format)];if(k.names)for(var lA=0;lA({type:"object",required:i,properties:{canvasColor:{required:!1,type:["string",CanvasGradient,CanvasPattern]},width:{required:!0,type:"number",notLessThanZero:!0,min:1,max:3840},height:{required:!0,type:"number",notLessThanZero:!0,min:1,max:3840},frameRate:{required:!1,type:"number",notLessThanZero:!0,min:1,max:60}},validate(r,l,u){const{RtcError:B,ErrorCode:f,ErrorCodeDictionary:w}=t.errorModule;if(!r)return;const{width:_,height:k}=r;if(_&&k&&_*k>8294400)throw new B({code:f.INVALID_PARAMETER,message:"The mix resolution cannot be set higher than 3840 * 2160."})}}),q9=t=>({required:!1,type:["string",HTMLElement,null],validate(i,r,l){const{RtcError:u,ErrorCode:B,ErrorCodeDictionary:f}=t.errorModule;if(t.utils.isString(i)&&!document.getElementById(i))throw new u({code:B.INVALID_PARAMETER,extraCode:f.INVALID_ELEMENT_ID,fnName:l,messageParams:{key:r}})}}),CU=(t,i=!0)=>({type:"object",required:i,properties:Rn({},wgA),validate(r,l,u){const{RtcError:B,ErrorCode:f,ErrorCodeDictionary:w}=t.errorModule;if(r){if(r.fillMode&&!["contain","cover","fill"].includes(r.fillMode))throw new B({code:f.INVALID_PARAMETER,extraCode:w.INVALID_PARAMETER_TYPE,message:"The fillMode parameter must be 'contain', 'cover' or 'fill'",fnName:u});if(r.rotation&&![0,90,180,270].includes(r.rotation))throw new B({code:f.INVALID_PARAMETER,extraCode:w.INVALID_PARAMETER_TYPE,message:"The rotation parameter must be 0, 90, 180 or 270",fnName:u})}}}),K9=t=>({type:"array",required:!1,arrayItem:{type:"object",properties:{id:{required:!0,type:"string"},cameraId:{required:!1,type:"string"},videoTrack:{required:!1,instanceof:MediaStreamTrack},profile:{required:!1,type:["string","object"],properties:{width:{type:"number"},height:{type:"number"},frameRate:{type:"number"},bitrate:{type:"number"}}},layout:Rn({},CU(t))}}}),j9=t=>({type:"array",required:!1,arrayItem:{type:"object",properties:{id:{required:!0,type:"string"},profile:{required:!1,type:["string","object"],properties:{width:{type:"number"},height:{type:"number"},frameRate:{type:"number"},bitrate:{type:"number"}}},captureElement:{required:!1,type:HTMLElement},preferDisplaySurface:{required:!1,type:"string"},layout:Rn({},CU(t))},validate(i,r,l){const{RtcError:u,ErrorCode:B,ErrorCodeDictionary:f}=t.errorModule;if(!t.rtcDectection.isScreenCaptureApiAvailable())throw new u({code:B.ENV_NOT_SUPPORTED,fnName:l,extraCode:f.NOT_SUPPORTED_SCREEN_SHARE})}}}),W9=t=>({type:"array",required:!1,arrayItem:{type:"object",properties:{id:{required:!0,type:"string"},content:{required:!0,type:"string"},font:{required:!1,type:"string"},color:{required:!1,type:["string",CanvasGradient,CanvasPattern]},layout:Rn({},CU(t))}}}),z9=t=>({type:"array",required:!1,arrayItem:{type:"object",properties:{id:{required:!0,type:"string"},url:{required:!0,type:"string"},layout:Rn({},CU(t))}}}),Z9=t=>({type:"array",required:!1,arrayItem:{type:"object",properties:{id:{required:!0,type:"string"},url:{required:!0,type:"string"},layout:Rn({},CU(t))}}});function _gA(t){return{name:"VideoMixerOptions",type:"object",required:!0,allowEmpty:!1,properties:{view:Rn({},q9(t)),canvasInfo:Rn({},H9(t,!0)),camera:Rn({},K9(t)),screen:Rn({},j9(t)),text:Rn({},W9(t)),image:Rn({},z9(t)),video:Rn({},Z9(t))},validate(i,r,l,u){const{RtcError:B,ErrorCode:f,ErrorCodeDictionary:w}=t.errorModule;if(t.environment.isMobile())throw new B({code:f.ENV_NOT_SUPPORTED,message:"VideoMixer is not supported on mobile devices currently"});const{onScreenShareStop:_}=i;if(_&&!t.utils.isFunction(_))throw new B({code:f.INVALID_PARAMETER,extraCode:w.INVALID_PARAMETER_TYPE,fnName:l,messageParams:{key:"onScreenShareStop",value:typeof _,rule:{type:"Function"}}})}}}function TgA(t){return{name:"VideoMixerOptions",type:"object",required:!1,allowEmpty:!1,properties:{view:Rn({},q9(t)),canvasInfo:Rn({},H9(t)),camera:Rn({},K9(t)),screen:Rn({},j9(t)),text:Rn({},W9(t)),image:Rn({},z9(t)),video:Rn({},Z9(t))}}}function NgA(t){return{name:"StopVideoMixerOptions",required:!1}}var X9=(t=>(t[t.INVALID_PARAMETER=4096]="INVALID_PARAMETER",t[t.INVALID_OPERATION=4097]="INVALID_OPERATION",t[t.NOT_SUPPORTED=4098]="NOT_SUPPORTED",t[t.DEVICE_NOT_FOUND=4099]="DEVICE_NOT_FOUND",t[t.INITIALIZE_FAILED=4100]="INITIALIZE_FAILED",t[t.SIGNAL_CHANNEL_SETUP_FAILED=16385]="SIGNAL_CHANNEL_SETUP_FAILED",t[t.SIGNAL_CHANNEL_ERROR=16386]="SIGNAL_CHANNEL_ERROR",t[t.ICE_TRANSPORT_ERROR=16387]="ICE_TRANSPORT_ERROR",t[t.JOIN_ROOM_FAILED=16388]="JOIN_ROOM_FAILED",t[t.CREATE_OFFER_FAILED=16389]="CREATE_OFFER_FAILED",t[t.SIGNAL_CHANNEL_RECONNECTION_FAILED=16390]="SIGNAL_CHANNEL_RECONNECTION_FAILED",t[t.UPLINK_RECONNECTION_FAILED=16391]="UPLINK_RECONNECTION_FAILED",t[t.DOWNLINK_RECONNECTION_FAILED=16392]="DOWNLINK_RECONNECTION_FAILED",t[t.REMOTE_STREAM_NOT_EXIST=16400]="REMOTE_STREAM_NOT_EXIST",t[t.CLIENT_BANNED=16448]="CLIENT_BANNED",t[t.SERVER_TIMEOUT=16449]="SERVER_TIMEOUT",t[t.SUBSCRIPTION_TIMEOUT=16450]="SUBSCRIPTION_TIMEOUT",t[t.PLAY_NOT_ALLOWED=16451]="PLAY_NOT_ALLOWED",t[t.DEVICE_AUTO_RECOVER_FAILED=16452]="DEVICE_AUTO_RECOVER_FAILED",t[t.START_PUBLISH_CDN_FAILED=16453]="START_PUBLISH_CDN_FAILED",t[t.STOP_PUBLISH_CDN_FAILED=16454]="STOP_PUBLISH_CDN_FAILED",t[t.START_MIX_TRANSCODE_FAILED=16455]="START_MIX_TRANSCODE_FAILED",t[t.STOP_MIX_TRANSCODE_FAILED=16456]="STOP_MIX_TRANSCODE_FAILED",t[t.NOT_SUPPORTED_H264=16457]="NOT_SUPPORTED_H264",t[t.SWITCH_ROLE_FAILED=16458]="SWITCH_ROLE_FAILED",t[t.API_CALL_TIMEOUT=16459]="API_CALL_TIMEOUT",t[t.SCHEDULE_FAILED=16460]="SCHEDULE_FAILED",t[t.API_CALL_ABORTED=16461]="API_CALL_ABORTED",t[t.SPC_INITIALIZED_FAILED=16462]="SPC_INITIALIZED_FAILED",t[t.VIDEO_MANAGER_ERROR=16463]="VIDEO_MANAGER_ERROR",t[t.SWITCH_ROOM_FAILED=16464]="SWITCH_ROOM_FAILED",t[t.VIDEO_ENCODE_FAILED=16465]="VIDEO_ENCODE_FAILED",t[t.AUDIO_ENCODE_FAILED=16466]="AUDIO_ENCODE_FAILED",t[t.UNKNOWN=65535]="UNKNOWN",t))(X9||{}),qg=X9,GgA=function(t){for(const i in qg)if(qg[i]===t)return i;return"UNKNOWN"},bgA=class extends Error{constructor({name:t="RtcError",message:i,code:r=qg.UNKNOWN,extraCode:l=0,constraint:u}){const B=`<${GgA(r)} 0x${r.toString(16)}>`,f=`${i}${u?` constraint: ${u}`:""}${i?.includes(B)?"":` ${B}`}`;super(f),de(this,"code"),de(this,"extraCode"),de(this,"message"),de(this,"originMessage"),de(this,"name"),de(this,"constraint"),this.code=r,this.extraCode=l,this.name=t,this.message=f,this.constraint=u,this.originMessage=i}getCode(){return this.code}getExtraCode(){return this.extraCode}toString(){return this.originMessage}},Ql=bgA,kgA=0,aW=function(){return Date.now()+kgA},$9=function(){const t=new Date;return t.setTime(aW()),t.toLocaleString()},LgA=function(t){let i=String(t.getMilliseconds());return"padStart"in String.prototype&&(i=i.toString().padStart(3,"0")),`${t.toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/,"$1")}:${i}`},UgA={};nW(UgA,{REPORT_TYPE:()=>pX,buildSSOPackage:()=>IW,bytes2ms:()=>lcA,calculateScaleResolutionDownNumber:()=>BX,concatArrayBuffers:()=>LcA,convertObjectNumberToInt:()=>CX,copyProperties:()=>ccA,deepClone:()=>tY,deepCloneBasic:()=>h3,deepMerge:()=>uX,delay:()=>Y_,fibonacci:()=>lW,formatedTime:()=>wcA,getConstructorName:()=>hcA,getContainerFromElement:()=>vcA,getEnv:()=>icA,getFirst16Bits:()=>FcA,getInternalVersion:()=>mcA,getLast16Bits:()=>UcA,getLoggerUrl:()=>gW,getMediaStreamTrackInfo:()=>GcA,getMuteStateFromFlag:()=>IX,getNetworkType:()=>cW,getNumNetworkType:()=>gcA,getReconnectionTimeout:()=>EcA,getStringByteLength:()=>_cA,getTestSignalDomain:()=>scA,getTurnServer:()=>DcA,getUint32Version:()=>dX,getValueType:()=>Bv,getViewListFromView:()=>McA,glog:()=>ucA,ipv4ToUint32:()=>ScA,isArray:()=>WC,isAudioWorkletSupported:()=>BcA,isBoolean:()=>cv,isConstructor:()=>lX,isEmpty:()=>ycA,isFunction:()=>gv,isLangChinese:()=>Py,isMediaStreamTrack:()=>dcA,isNumber:()=>Qv,isObject:()=>ov,isOverseaSdkAppId:()=>eY,isPlainObject:()=>x_,isPortrait:()=>EX,isPromise:()=>cX,isRemoteTrack:()=>CcA,isRotate90Or270:()=>QX,isSetSinkIdSupported:()=>QcA,isString:()=>XC,isUndefined:()=>$n,isVideoMixerOutputTrack:()=>uW,loadImage:()=>TcA,loadVideo:()=>bcA,ms2bytes:()=>IcA,ms2samples:()=>gX,normalizeUrl:()=>NcA,performanceNow:()=>xc,promiseAny:()=>pcA,samples2ms:()=>aX,setNetworkTypeFromWebRTC:()=>acA,stringify:()=>xy,stringifyIncludeValue:()=>C3,throttlePromise:()=>hX});var AY="5.0.0",AX=typeof importScripts<"u",eX=typeof registerProcessor<"u",FgA="web.sdk.qcloud.com",g3=`https://${FgA}/trtc/webrtc/doc`,C8="https://cloud.tencent.com/document/product/647/85386",h8="https://trtc.io/document/56025",OgA="https://yun.tim.qq.com",PgA="https://apisgp.my-imcloud.com",xgA="trtc_error_assistance",tX={LOG:"jssdk_log"},Ij={QCLOUD:"qcloud"},Q_=(t=>(t[t.TRACE=0]="TRACE",t[t.DEBUG=1]="DEBUG",t[t.INFO=2]="INFO",t[t.WARN=3]="WARN",t[t.ERROR=4]="ERROR",t[t.NONE=5]="NONE",t))(Q_||{}),iX={unknown:0,wifi:1,"4g":2,"3g":3,"2g":4,wired:5,"5g":6},YgA=6048e5,VgA={"480p_2":{width:640,height:480,frameRate:15,bitrate:500}},JgA=VgA["480p_2"],zt={CANVAS:"canvas",AUDIO:"audio",VIDEO:"video",SCREEN:"screen",SMALL:"small",BIG:"big",AUXILIARY:"auxiliary",SMALL_VIDEO:"smallVideo",FACING_MODE_USER:"user",FACING_MODE_ENVIRONMENT:"environment",MUTE:"mute",UNMUTE:"unmute",ENDED:"ended",PLAYING:"playing",PAUSE:"pause",ERROR:"error",LOADSTART:"loadstart",LOADEDDATA:"loadeddata",LOADEDMETADATA:"loadedmetadata",AUDIO_INPUT:"audioinput",VIDEO_INPUT:"videoinput",DETAIL:"detail",TEXT:"text",MAIN:"main",BACKUP:"backup",BANNED:"banned",KICK:"kick",USER_TIME_OUT:"user_time_out",ROOM_DISBAND:"room_disband",SEI_MESSAGE:"sei-message",ADD:"add",REMOVE:"remove",REPLACE:"replace",TRACK:"track",SUBSCRIBE:"subscribe",UNSUBSCRIBE:"unsubscribe",TRANSCEIVER_DIRECTION_SENDONLY:"sendonly",TRANSCEIVER_DIRECTION_RECVONLY:"recvonly",ENTER_PICTURE_IN_PICTURE:"enterpictureinpicture",LEAVE_PICTURE_IN_PICTURE:"leavepictureinpicture",FULLSCREEN_CHANGE:"fullscreenchange",RESIZE:"resize",TIME_UPDATE:"timeupdate"},B8=1,HgA=2,qgA=4,Q8=8,p8=64,m8=16,KgA=256,bL={PLAYER_ERROR:"player-error",LOAD_WORKLET:"load-worklet",GET_USER_MEDIA_RETRY:"getUserMedia-retry"},jgA="unified-plan",p_=5,oX="default",E1=2e3,sX=["width","height","frameRate","facingMode","sampleRate","sampleSize","channelCount","deviceId","min","max"],WgA={alpha:!0,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!0,powerPreference:"low-power"},zgA=function(t,i,r,l){return new(r||(r=Promise))(function(u,B){function f(k){try{_(l.next(k))}catch(F){B(F)}}function w(k){try{_(l.throw(k))}catch(F){B(F)}}function _(k){var F;k.done?u(k.value):(F=k.value,F instanceof r?F:new r(function(j){j(F)})).then(f,w)}_((l=l.apply(t,[])).next())})},c3=Symbol(32),l3=Symbol(16),I3=Symbol(8),L_=class{constructor(t){this.g=t,this.consumed=0,t&&(this.need=t.next().value)}setG(t){this.g=t,this.demand(t.next().value,!0)}consume(){this.buffer&&this.consumed&&(this.buffer.copyWithin(0,this.consumed),this.buffer=this.buffer.subarray(0,this.buffer.length-this.consumed),this.consumed=0)}demand(t,i){return i&&this.consume(),this.need=t,this.flush()}read(t){return zgA(this,void 0,void 0,function*(){return this.lastReadPromise&&(yield this.lastReadPromise),this.lastReadPromise=new Promise((i,r)=>{var l;this.reject=r,this.resolve=u=>{delete this.lastReadPromise,delete this.resolve,delete this.need,i(u)},this.demand(t,!0)||(l=this.pull)===null||l===void 0||l.call(this,t)})})}readU32(){return this.read(c3)}readU16(){return this.read(l3)}readU8(){return this.read(I3)}close(){var t;this.g&&this.g.return(),this.buffer&&this.buffer.subarray(0,0),(t=this.reject)===null||t===void 0||t.call(this,new Error("EOF")),delete this.lastReadPromise}flush(){if(!this.buffer||!this.need)return;let t=null;const i=this.buffer.subarray(this.consumed);let r=0;const l=u=>i.length<(r=u);if(typeof this.need=="number"){if(l(this.need))return;t=i.subarray(0,r)}else if(this.need===c3){if(l(4))return;t=i[0]<<24|i[1]<<16|i[2]<<8|i[3]}else if(this.need===l3){if(l(2))return;t=i[0]<<8|i[1]}else if(this.need===I3){if(l(1))return;t=i[0]}else if("buffer"in this.need){if("byteOffset"in this.need){if(l(this.need.byteLength-this.need.byteOffset))return;new Uint8Array(this.need.buffer,this.need.byteOffset).set(i.subarray(0,r)),t=this.need}else if(this.g)return void this.g.throw(new Error("Unsupported type"))}else{if(l(this.need.byteLength))return;new Uint8Array(this.need).set(i.subarray(0,r)),t=this.need}return this.consumed+=r,this.g?this.demand(this.g.next(t).value,!0):this.resolve&&this.resolve(t),t}write(t){if(t instanceof Uint8Array?this.malloc(t.length).set(t):"buffer"in t?this.malloc(t.byteLength).set(new Uint8Array(t.buffer,t.byteOffset,t.byteLength)):this.malloc(t.byteLength).set(new Uint8Array(t)),!this.g&&!this.resolve)return new Promise(i=>this.pull=i);this.flush()}writeU32(t){this.malloc(4).set([t>>24&255,t>>16&255,t>>8&255,255&t]),this.flush()}writeU16(t){this.malloc(2).set([t>>8&255,255&t]),this.flush()}writeU8(t){this.malloc(1)[0]=t,this.flush()}malloc(t){if(this.buffer){const i=this.buffer.length,r=i+t;if(r<=this.buffer.buffer.byteLength-this.buffer.byteOffset)this.buffer=new Uint8Array(this.buffer.buffer,this.buffer.byteOffset,r);else{const l=new Uint8Array(r);l.set(this.buffer),this.buffer=l}return this.buffer.subarray(i,r)}return this.buffer=new Uint8Array(t),this.buffer}};L_.U32=c3,L_.U16=l3,L_.U8=I3;var ZgA=128;function uj(t){const i=new L_;for(;t>=128;)i.malloc(1)[0]=255&t|ZgA,t>>>=7;return i.malloc(1)[0]=255&t,i.buffer||new Uint8Array(0)}function u3(t,i=0){const r=new L_,l=i<<3;switch(typeof t){case"boolean":const u=r.malloc(2);u[0]=l,u[1]=t?1:0;break;case"number":r.malloc(1)[0]=l,r.write(uj(t));break;case"string":r.malloc(1)[0]=2|l;const B=new TextEncoder().encode(t);r.write(uj(B.length));const f=r.malloc(B.length);for(let _=0;_>>24&255),this.buffer.push(t>>>16&255),this.buffer.push(t>>>8&255),this.buffer.push(255&t)}writeInt16(t){this.buffer.push(t>>>8&255),this.buffer.push(255&t)}writeByte(t){this.buffer.push(255&t)}writeBytes(t){for(let i=0;i>>24&255,t[r+1]=i>>>16&255,t[r+2]=i>>>8&255,t[r+3]=255&i}function Ad(t,i){return t[i]<<24|t[i+1]<<16|t[i+2]<<8|t[i+3]}function D8(t,i){return t[i]}function iL(t,i,r){return new TextDecoder().decode(XgA(t,i,r))}function XgA(t,i,r){return t.slice(i,i+r)}var Ej=0,E3=2654435769,d3=16,S8=4,kL=2,LL=7;function $gA(t,i,r,l="AVQualityReportSvc.C2S",u=2e3,B=2,f=30){return{version:u,encryption:B,d2:"",d2Len:0,uinType:f,uin:"",uinLen:0,reqHead:{seqNumber:r,appId:t,appidAtThird:new Uint8Array(0),a2:"",a2Len:0,serviceCmd:l,serviceCmdLen:0,cookie:"",cookieLen:0,imei:"",imeiLen:0,ksid:"",ksidLen:0,clientVersionInfo:"",clientVersionInfoLen:0},busiBuff:i}}function AcA(t,i){const r=new f8,l=$gA(i,t,Ej);Ej=Ej+1&2147483647,r.writeInt32(0),r.writeInt32(l.version),r.writeByte(l.encryption);const u=new TextEncoder().encode(l.d2);r.writeInt32(u.length+4),u&&r.writeBytes(u),r.writeByte(l.uinType);const B=new TextEncoder().encode(l.uin);r.writeInt32(B.length+4),B.length&&r.writeBytes(B);const f=new f8;f.writeInt32(0),f.writeInt32(l.reqHead.seqNumber),f.writeInt32(l.reqHead.appId),f.writeByte(l.reqHead.appId>>>24&255),f.writeByte(l.reqHead.appId>>>16&255),f.writeByte(l.reqHead.appId>>>8&255),f.writeByte(255&l.reqHead.appId);for(let WA=4;WA<16;WA++)f.writeByte(0);const w=new TextEncoder().encode(l.reqHead.a2);f.writeInt32(w.length+4),w.length&&f.writeBytes(w);const _=new TextEncoder().encode(l.reqHead.serviceCmd);f.writeInt32(_.length+4),_.length&&f.writeBytes(_);const k=new TextEncoder().encode(l.reqHead.cookie);f.writeInt32(k.length+4),k.length&&f.writeBytes(k);const F=new TextEncoder().encode(l.reqHead.imei);f.writeInt32(F.length+4),F.length&&f.writeBytes(F);const j=new TextEncoder().encode(l.reqHead.ksid);f.writeInt32(j.length+4),j.length&&f.writeBytes(j);const IA=new TextEncoder().encode(l.reqHead.clientVersionInfo);f.writeInt16(IA.length+2),IA.length&&f.writeBytes(IA);const rA=f.length;f.data[0]=rA>>>24&255,f.data[1]=rA>>>16&255,f.data[2]=rA>>>8&255,f.data[3]=255&rA,XC(t)&&(t=new TextEncoder().encode(t)),f.writeInt32(t.length+4),t.length&&f.writeBytes(t);let pA=new Uint8Array(f.data),lA=null;l.encryption===1?lA=new TextEncoder().encode(l.uin):l.encryption===2&&(lA=new Uint8Array(16)),lA&&(pA=ecA(pA,lA)),r.writeBytes(pA);const cA=new Uint8Array(r.data),TA=cA.length;return cA[0]=TA>>>24&255,cA[1]=TA>>>16&255,cA[2]=TA>>>8&255,cA[3]=255&TA,cA}function ecA(t,i){const r=t.length;let l=(r+1+kL+LL)%8;l&&(l=8-l);const u=new Uint8Array(r+1+kL+LL+l);let B=0;const f=new Uint8Array(8),w=new Uint8Array(8),_=new Uint8Array(8);let k=0;f[0]=248&Math.floor(256*Math.random())|l,k=1;for(let j=0;j>>=0,u+=(B<<4)+f[0]^B+w^(B>>>5)+f[1],u>>>=0,B+=(u<<4)+f[2]^u+w^(u>>>5)+f[3],B>>>=0;y8(r,u,l),y8(r,B,l+4)}var icA=function(){return new URLSearchParams(location.search).get("trtc_env")||""},ocA=".rtc.qq.com",scA=function(t){return t.includes(".")?t:`${t}${ocA}`},eY=t=>Number(t)<14e8,gW=function(t,i){let r;return r=eY(t)?PgA:OgA,`${r}/v5/AVQualityReportSvc/C2S?random=${Math.floor(Math.random()*2**31)}&sdkappid=${t}&cmdtype=${i}`},nX="unknown";function cW(){rcA();const{userAgent:t,connection:i}=navigator;let r=(t.match(/NetType\/\S+/)||[])[0]||"";r=r.toLowerCase().replace("nettype/",""),r==="3gnet"&&(r="3g");const l=i&&i.type&&i.type.toLowerCase();let u=i&&i.effectiveType&&i.effectiveType.toLowerCase();return u==="slow-2"&&(u="2g"),l?rX(l,u):nX}function ncA(){jo.warn("netType changed",cW())}var M8=!1;function rcA(){var t;M8||(M8=!0,(t=navigator.connection)==null||t.addEventListener("typechange",ncA))}function rX(t,i){if(iX[t])return t;switch(t){case"cellular":case"wimax":return i||"unknown";case"ethernet":return"wired";default:return"unknown"}}function acA(t){nX=rX(t)}function gcA(){return iX[cW()]}function ccA(t,i){for(const r of Reflect.ownKeys(i))if(r!=="constructor"&&r!=="prototype"&&r!=="name"){const l=Object.getOwnPropertyDescriptor(i,r)||"";Object.defineProperty(t,r,l)}return t}function lcA(t,i=48e3){return aX(t/4,i)}function aX(t,i=48e3){return 1e3*t/i}function IcA(t,i=48e3){return 4*gX(t,i)}function gX(t,i=48e3){return t*i/1e3}var ucA=typeof window<"u"&&typeof window.glog=="function"?window.glog:()=>{},Py=()=>{let t=navigator.language;return t=t.substring(0,2),t==="zh"},x_=function(t){if(!t||typeof t!="object"||Object.prototype.toString.call(t)!="[object Object]")return!1;const i=Object.getPrototypeOf(t);if(i===null)return!0;const r=Object.prototype.hasOwnProperty.call(i,"constructor")&&i.constructor;return typeof r=="function"&&r instanceof r&&Function.prototype.toString.call(r)===Function.prototype.toString.call(Object)};function lW(t,i=1,r=1){return t<=1?r:lW(t-1,r,i+r)}function EcA(t){return t>8?3e4:1e3*lW(t)}function Bv(t){return Reflect.apply(Object.prototype.toString,t,[]).replace(/^\[object\s(\w+)\]$/,"$1").toLowerCase()}var gv=t=>typeof t=="function",$n=t=>t===void 0,XC=t=>typeof t=="string",Qv=t=>typeof t=="number",cv=t=>typeof t=="boolean",ov=t=>Bv(t)==="object",WC=t=>Bv(t)==="array",dcA=t=>Bv(t)==="MediaStreamTrack".toLowerCase(),CcA=t=>t.isRemote,cX=t=>Bv(t)==="promise",lX=t=>gv(t)&&t.prototype.constructor===t,hcA=t=>lX(t)?t.prototype.constructor.name:"",BcA=typeof AudioWorkletNode<"u",QcA=typeof HTMLMediaElement<"u"&&"setSinkId"in HTMLMediaElement.prototype;function pcA(t){return new Promise((i,r)=>{const l=[];t.forEach(u=>{u.then(i).catch(B=>{l.push(B),l.length===t.length&&r(l)})})})}function xc(){return performance&&performance.now?Math.floor(performance.now()):Date.now()}var v8=t=>+t<10?`0${t}`:t,mcA=t=>{const i=t.match(/^\d+\.\d+\.\d+/)[0];if(!i)return t;const r=i.split("."),l=v8(r[1])+v8(r[2]);return r[1]-15>0&&(r[1]="15"),r[2]-15>0&&(r[2]="15"),`${r.join(".")}.${l}`},fcA=Object.prototype.hasOwnProperty;function ycA(t){if(t==null)return!0;if(typeof t=="boolean")return!1;if(typeof t=="number")return t===0;if(typeof t=="string"||typeof t=="function"||Array.isArray(t))return t.length===0;if(t instanceof Error)return t.message==="";if(x_(t))switch(Object.prototype.toString.call(t)){case"[object File]":case"[object Map]":case"[object Set]":return t.size===0;case"[object Object]":for(const i in t)if(fcA.call(t,i))return!1;return!0}return!1}function IX(t,i){return{userId:i,hasAudio:!!(t&Q8),hasVideo:!!(t&B8),hasAuxiliary:!!(t&qgA),hasSmall:!!(t&HgA),audioMuted:!!(t&p8),videoMuted:!!(t&m8),audioAvailable:!(!(t&Q8)||t&p8),videoAvailable:!(!(t&B8)||t&m8),hasDatachannel:!!(t&KgA)}}function DcA(t){const i={urls:t.url.startsWith("turn:")||t.url.startsWith("turns:")?t.url:`turn:${t.url}`};return $n(t.username)||$n(t.credential)||(i.username=t.username,i.credential=t.credential,i.credentialType="password",$n(t.credentialType)||(i.credentialType=t.credentialType)),i}function ScA(t,i=!0){if(!XC(t))return 0;const r=t.split(".");return i?(Number(r[0])<<24|Number(r[1])<<16|Number(r[2])<<8|Number(r[3]))>>>0:(Number(r[3])<<24|Number(r[2])<<16|Number(r[1])<<8|Number(r[0]))>>>0}var uX=function(t,i,r,l){if(!ov(t)||!ov(i))return 0;let u=0;const B=Object.keys(i);let f;for(let w=0,_=B.length;w<_;w++)if(f=B[w],!($n(i[f])||r&&r.includes(f)))if(ov(t[f])&&ov(i[f]))u+=uX(t[f],i[f],r,l);else{if(l&&l.includes(i[f]))continue;t[f]!==i[f]&&(t[f]=tY(i[f]),u+=1)}return u};function tY(t){if(WC(t)){const i=[];return t.forEach((r,l)=>{i[l]=tY(r)}),i}if(ov(t)){const i={};return Object.keys(t).forEach(r=>{i[r]=tY(t[r])}),i}return t}var McA=t=>{let i=[];if(WC(t))i=[...t];else if(XC(t)){const r=document.getElementById(t);r&&i.push(r)}else t&&i.push(t);return i},vcA=t=>XC(t)?document.getElementById(t):t,RcA=t=>{const i=r=>r<10?`0${r}`:`${r}`;return`${t.getFullYear()}/${t.getMonth()+1}/${t.getDate()} ${i(t.getHours())}:${i(t.getMinutes())}:${i(t.getSeconds())}`},wcA=()=>RcA(new Date);function xy(t,{keysToInclude:i,keysToExclude:r}){try{if(WC(t))return`[${t.map(f=>xy(f,{keysToInclude:i,keysToExclude:r})).join(",")}]`;if(!x_(t)||!WC(i)&&!WC(r))return JSON.stringify(t);const l={},u=new Set(i),B=new Set(r);return Object.keys(t).forEach(f=>{(B.size===0&&u.has(f)||u.size===0&&!B.has(f))&&(l[f]=x_(t[f])||WC(t[f])?JSON.parse(xy(t[f],{keysToExclude:r,keysToInclude:i})):t[f])}),JSON.stringify(l)}catch{return"{}"}}function C3(t,i=!1){const r=[];return Object.keys(t).forEach(l=>{i===t[l]&&r.push(l)}),xy(t,{keysToInclude:r})}function _cA(t){return t.replace(/[\u4e00-\u9fa5]/g,"aa").length}var EX=()=>{var t,i,r,l;return(t=window.screen)!=null&&t.orientation?!!((l=(r=(i=window.screen)==null?void 0:i.orientation)==null?void 0:r.type)!=null&&l.includes("portrait")):window.orientation===0||window.orientation===180},TcA=async t=>new Promise((i,r)=>{let l;if(XC(t))l=new Image,l.crossOrigin="anonymous",l.src=t;else if(l=t,l.complete)return void i(l);l.onload=()=>i(l),l.onerror=()=>{r(new Ql({code:qg.INVALID_PARAMETER,message:`load image failed, url: ${t}`}))}}),dX=t=>{const i=t.split(".");return+i[0]<<24|+i[1]<<16|+i[2]<<8|+i[3]},CX=t=>(Object.keys(t).forEach(i=>{Qv(t[i])&&(i.startsWith("uint")||i.startsWith("int"))?t[i]=Math.floor(t[i]):(x_(t[i])||WC(t[i]))&&CX(t[i])}),t);function Y_(t,i){return new Promise(r=>{const l=setTimeout(r,t);i&&i(l)})}function hX(t,i){let r=null;return function(...l){return r||(r=t.apply(i||this,l),r.finally(()=>r=null),r)}}function NcA(t){return t.replace(/(^|[^:])\/{2,}/g,"$1/")}function GcA(t){var i;try{const{width:r,height:l,frameRate:u,sampleRate:B,sampleSize:f,channelCount:w}=(i=t.getSettings)==null?void 0:i.call(t),_=t.kind===zt.AUDIO?`${B}x${f}@${w}`:`${r}x${l}@${u}`,k=t.stats?` stats: ${JSON.stringify(t.stats).replaceAll('"',"")}`:"";return`${t.id} ${t.readyState} muted:${t.muted} ${t.kind} ${t.label} ${_}${k}`}catch{return""}}function BX(t,i){return t.width*t.height===i.width*i.height?1:EX()&&i.width>i.height&&t.height>i.width?Math.max(t.width/i.height,t.height/i.width,1):Math.max(t.width/i.width,t.height/i.height,1)}function QX(t){return t===90||t===270}async function bcA(t){return new Promise((i,r)=>{const l=document.createElement("video");l.crossOrigin="anonymous",l.src=t,l.muted=!0,l.loop=!0,l.playsInline=!0,l.play().then(()=>i(l)),l.onerror=()=>{r(l.error)}})}function h3(t,i=new WeakMap){if(typeof t!="object"||t===null)return t;if(i.has(t))return i.get(t);if(Array.isArray(t)){const r=[];return i.set(t,r),t.forEach((l,u)=>{r[u]=h3(l,i)}),r}if(Object.prototype.toString.call(t)==="[object Object]"){const r={};return i.set(t,r),Reflect.ownKeys(t).forEach(l=>{r[l]=h3(t[l],i)}),r}return t}var pX=(t=>(t[t.END_REPORT=2001]="END_REPORT",t[t.LOG=2002]="LOG",t[t.KEY_METRIC_REPORT=2003]="KEY_METRIC_REPORT",t))(pX||{});function kcA(t,i,r,l){let u={data:t,random:Math.floor(Math.random()*2147483648),sdkAppId:r};return $n(l)||(u=iB(Rn({},u),{gzip:+l})),{uint32_sdkappid:0,uint64_from_uin:0,uint32_timestamp:0,uint32_seq:0,msg_common_info:{msg_device_info:{enum_device_type:0,str_device_brand:"",str_device_model:"",str_device_board:"",str_device_cpu_abi:""},msg_system_info:{enum_os_type:0,str_os_version:"",msg_network_info:0},msg_network_info:{enum_network_type:0}},msg_report_content:{uint32_type:i,bytes_report_data:JSON.stringify(u)}}}function IW(t,i,r,l){try{const u=kcA(t,i,r,l);return AcA(u3(u),r)}catch{return JSON.stringify(t)}}function LcA(t,i){const r=new Uint8Array(t.byteLength+i.byteLength);return r.set(new Uint8Array(t),0),r.set(new Uint8Array(i),t.byteLength),r.buffer}function UcA(t){return(65535&t)>>>0}function FcA(t){return(4294901760&t)>>>0}function uW(t){return!!(t&&t instanceof CanvasCaptureMediaStreamTrack&&t.canvas.id.includes("trtc_mix"))}function OcA(t){const i=PcA(t);return i?.busiBuff}function PcA(t){try{const i={};let r=0;i.totalLength=Ad(t,r),r+=4,i.version=Ad(t,r),r+=4,i.encryption=D8(t,r),r+=1,i.uinType=D8(t,r),r+=1,i.uinLength=Ad(t,r),r+=4,i.uin=i.uinLength>4?iL(t,r,i.uinLength-4):"",r+=i.uinLength-4;const l=t.slice(r);if(i.encryption===2){const u=new Uint8Array(16).fill(0);t=xcA(l,u),i.decrypted=!0,r=0}else t=l,r=0;return i.rspHeadLength=Ad(t,r),r+=4,i.seqNo=Ad(t,r),r+=4,i.retCode=Ad(t,r),r+=4,i.retStrLength=Ad(t,r),r+=4,i.retStr=i.retStrLength?iL(t,r,i.retStrLength-4):"",r+=i.retStrLength-4,i.serviceCmdLength=Ad(t,r),r+=4,i.serviceCmd=i.serviceCmdLength?iL(t,r,i.serviceCmdLength-4):"",r+=i.serviceCmdLength-4,i.cookieLength=Ad(t,r),r+=4,i.cookie=i.cookieLength?iL(t,r,i.cookieLength-4):"",r+=i.cookieLength-4,i.flag=Ad(t,r),r+=4,i.busiBuffLength=Ad(t,r),r+=4,i.busiBuff=i.busiBuffLength?iL(t,r,i.busiBuffLength-4):"",r+=i.busiBuffLength-4,i}catch{}}function mX(t,i){let r=t[0]<<24|t[1]<<16|t[2]<<8|t[3],l=t[4]<<24|t[5]<<16|t[6]<<8|t[7];r>>>=0,l>>>=0;let u=E3*d3>>>0;for(let B=0;B>>5)+i[3],l>>>=0,r-=(l<>>5)+i[1],r>>>=0,u-=E3,u>>>=0;return new Uint8Array([r>>>24&255,r>>>16&255,r>>>8&255,255&r,l>>>24&255,l>>>16&255,l>>>8&255,255&l])}function xcA(t,i){let r=0;const l=new Uint8Array(8).fill(0);let u=mX(new Uint8Array(t.slice(0,8)),i);const B=7&u[0],f=t.length-1-B-kL-LL,w=new Uint8Array(f);let _=0,k=l,F=t.slice(0,8);r=8;let j=1;j+=B;for(let rA=1;rA<=kL;)if(j<8)j++,rA++;else if(j===8){const pA=Cj(t,r,k,F,u,i);k=pA.ivPreCrypt,F=pA.ivCurCrypt,u=pA.debiBuf,r=pA.bufPos,j=0}let IA=f;for(;IA>0;)if(j<8)w[_++]=u[j]^k[j],j++,IA--;else if(j===8){const rA=Cj(t,r,k,F,u,i);k=rA.ivPreCrypt,F=rA.ivCurCrypt,u=rA.debiBuf,r=rA.bufPos,j=0}for(let rA=1;rA<=LL;)if(j<8)u[j],k[j],j++,rA++;else if(j===8){if(r>=t.length)break;const pA=Cj(t,r,k,F,u,i);if(!pA.success)break;k=pA.ivPreCrypt,F=pA.ivCurCrypt,u=pA.debiBuf,r=pA.bufPos,j=0}return w}function Cj(t,i,r,l,u,B){if(i+8>t.length)return{success:!1};const f=new Uint8Array(l),w=t.slice(i,i+8),_=new Uint8Array(8);for(let k=0;k<8;k++)_[k]=u[k]^w[k];return{success:!0,ivPreCrypt:f,ivCurCrypt:w,debiBuf:mX(_,B),bufPos:i+8}}var R8=typeof TextDecoder<"u"?new TextDecoder:void 0;function fX({url:t,body:i,method:r="POST",timeout:l,priority:u}){return new Promise((B,f)=>{if("fetch"in window)return fetch(t,{method:r,body:i,priority:u}).then(_=>_.clone().json().then(k=>({data:k}),()=>_.arrayBuffer().then(k=>({data:OcA(new Uint8Array(k))||(R8?R8.decode(k):k)})))).then(B,f);const w=new XMLHttpRequest;w.onreadystatechange=()=>{if(w.readyState===4)if(w.status>=200&&w.status<300)try{const _=JSON.parse(w.response);B({data:_})}catch{B({data:w.response})}else f({status:w.status,statusText:w.statusText||"request failed!"})},w.timeout=l||5e3,w.open(r,t,!0),w.send(i)})}var YcA=Object.prototype.hasOwnProperty,m_=t=>typeof t=="function",c_=t=>t===void 0,VcA=t=>typeof t=="boolean",hj=t=>t.isRemote,JcA=function(t){if(!t||typeof t!="object"||Object.prototype.toString.call(t)!="[object Object]")return!1;const i=Object.getPrototypeOf(t);if(i===null)return!0;const r=Object.prototype.hasOwnProperty.call(i,"constructor")&&i.constructor;return typeof r=="function"&&r instanceof r&&Function.prototype.toString.call(r)===Function.prototype.toString.call(Object)};function HcA(t){if(t==null)return!0;if(typeof t=="boolean")return!1;if(typeof t=="number")return t===0;if(typeof t=="string"||typeof t=="function"||Array.isArray(t))return t.length===0;if(t instanceof Error)return t.message==="";if(JcA(t))switch(Object.prototype.toString.call(t)){case"[object File]":case"[object Map]":case"[object Set]":return t.size===0;case"[object Object]":for(const i in t)if(YcA.call(t,i))return!1;return!0}return!1}var qcA=0,KcA=1,w8=2;function jcA({retryFunction:t,settings:i,onError:r,onRetrying:l,onRetryFailed:u,onRetrySuccess:B,context:f}){return function(...w){const{retries:_=5,timeout:k=1e3}=i;let F=0,j=-1,IA=qcA;const rA=async(pA,lA)=>{const cA=f||this;try{const TA=await t.apply(cA,w);F>0&&B&&B.call(this,F),F=0,pA(TA)}catch(TA){const WA=()=>{clearTimeout(j),F=0,IA=w8,lA(TA)},zA=()=>{IA!==w8&&F<(m_(_)?_():_)?(F++,IA=KcA,m_(l)&&l.call(this,F,WA),j=window.setTimeout(()=>{j=-1,rA(pA,lA)},m_(k)?k(F):k)):(WA(),m_(u)&&u.call(this,TA))};m_(r)?r.call(this,{error:TA,retry:zA,reject:lA,retryFuncArgs:w,retriedCount:F}):zA()}};return new Promise(rA)}}var EW=jcA,Bj=class yX{constructor(i){de(this,"_parentPath"),de(this,"userId"),de(this,"remoteUserId"),de(this,"id"),de(this,"sdkAppId"),de(this,"type"),de(this,"isLocal"),this.id=i.id,this.userId=i.userId,this.sdkAppId=i.sdkAppId,this.remoteUserId=i.remoteUserId,this.isLocal=!VcA(i.isLocal)||i.isLocal,this.type=this.isLocal?"":i.type}getFullId(){return this._parentPath&&this.id?`${this._parentPath}-${this.id}`:this._parentPath?this._parentPath:this.id}createChild(i){const r=new yX({id:i.id,userId:c_(i.userId)?this.userId:i.userId,sdkAppId:c_(i.sdkAppId)?this.sdkAppId:i.sdkAppId,type:c_(i.type)?this.type:i.type,isLocal:c_(i.isLocal)?this.isLocal:i.isLocal,remoteUserId:c_(i.remoteUserId)?this.remoteUserId:i.remoteUserId});return r.bindParent(this),r}bindParent(i){const r=i.getFullId();this._parentPath!==r&&(this.debug(`bind logger parent: ${i.id}`),this._parentPath=r,this.userId=i.userId||this.userId,this.sdkAppId=i.sdkAppId||this.sdkAppId)}setUserId(i){this.userId=i}setSdkAppId(i){this.sdkAppId=i}log(i,r){const l=this.isLocal?this.userId:this.remoteUserId,u=this.getFullId();r.unshift(`[${this.isLocal?"↑":"↓"}${this.type&&this.type!=="main"?"*":""}${u}${l?`|${l}`:""}]`),jo.log(i,r,c_(this.userId)||HcA(this.userId),this.userId,this.sdkAppId)}info(...i){this.log(2,i)}debug(...i){this.log(1,i)}warn(...i){this.log(3,i)}error(...i){this.log(4,i)}},DQ=typeof navigator>"u"?"":navigator.userAgent,Ys=t=>new RegExp(t,"i").test(DQ),Qc=t=>{if(Ys(t)){const i=new RegExp(`${t}\\/([\\d.]+)`),r=DQ.match(i);if(r&&r[1])return r[1]}return""},FY=t=>{if(Ys(t)){const i=new RegExp(`${t}\\/(\\d+)`),r=DQ.match(i);if(r&&r[1])return parseFloat(r[1])}return NaN},_8=/AppleWebKit\/([\d.]+)/i.exec(DQ);_8&&parseFloat(_8[1]);var dW=Ys("iPad"),DX=typeof navigator<"u"&&navigator.maxTouchPoints&&navigator.maxTouchPoints>2&&Ys("Macintosh"),OY=Ys("iPhone")&&!dW,WcA=Ys("iPod"),pu=OY||dW||WcA||DX,iY=()=>{try{return pu&&navigator.maxTouchPoints>1&&navigator.vendor.includes("Apple")}catch{return pu}},tC=Ys("Android"),SX=function(){if(tC){const t=DQ.match(/Android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i);if(t){const i=t[1]&&parseFloat(t[1]),r=t[2]&&parseFloat(t[2]);if(i&&r)return parseFloat(`${t[1]}.${t[2]}`);if(i)return i}}return NaN}();tC&&Ys("webkit")&&SX<2.3;var $d=Ys("Firefox"),MX=Qc("Firefox"),vX=FY("Firefox"),hU=Ys("Edge"),RX=Qc("Edge"),PY=Ys("Edg"),wX=Qc("Edg"),zcA=FY("Edg"),CW=Ys("SogouMobileBrowser"),_X=Qc("SogouMobileBrowser"),hW=Ys("MetaSr\\s"),TX=Qc("MetaSr\\s"),um=Ys("TBS"),NX=Qc("TBS"),z_=Ys("XWEB"),GX=Qc("XWEB");Ys("MSIE\\s8\\.0");var ZcA=Ys("MSIE\\/\\d+");(function(){if(ZcA){const t=/MSIE\s(\d+)\.\d/.exec(DQ);let i=t&&parseFloat(t[1]);return!i&&/Trident\/7.0/i.test(DQ)&&/rv:11.0/.test(DQ)&&(i=11),i}return NaN})();var BU=Ys("(micromessenger|webbrowser)"),bX=Qc("MicroMessenger"),xY=!um&&Ys("MQQBrowser")&&Ys("COVC"),YY=!um&&Ys("MQQBrowser")&&!Ys("COVC"),oY=YY||xY?Qc("MQQBrowser"):"",BW=!um&&Ys(" QQBrowser"),kX=Qc(" QQBrowser"),QW=!um&&Ys("QQBrowserLite"),LX=Qc("QQBrowserLite"),pW=!um&&Ys("MQBHD"),UX=Qc("MQBHD"),FX=Ys("Windows"),VY=!pu&&Ys("MAC OS X"),OX=!tC&&Ys("Linux"),PX=Ys("CrOS");Ys("MicroMessenger");var XcA=Ys("UCBrowser");Ys("Electron");var mW=Ys("MiuiBrowser"),xX=Qc("MiuiBrowser"),fW=Ys("HuaweiBrowser"),YX=Ys("Huawei")||Ys("HUAWEI"),$cA=Ys("Honor")||Ys("HONOR"),VX=Qc("HuaweiBrowser"),yW=Ys("SamsungBrowser"),JX=Qc("SamsungBrowser"),JY=Ys("HeyTapBrowser"),HX=Qc("HeyTapBrowser"),DW=Ys("VivoBrowser"),qX=Qc("VivoBrowser"),SW=Ys("OpenHarmony");Qc("OpenHarmony");var KX=()=>FY("Chrome"),sY=Ys("CriOS"),Hy=Ys("Chrome"),MW=!hU&&!hW&&!CW&&!um&&!z_&&!PY&&!BW&&!mW&&!fW&&!yW&&!JY&&!DW&&Hy,AlA=Ys("HeadlessChrome"),qy=KX(),Qj=Hy&&qy>=128&&qy<=143,jX=Qc("Chrome");FY("Electron");var od=!Hy&&!YY&&!xY&&!QW&&!pW&&Ys("Safari"),WX=od||pu,QU=Qc("Version"),mQ=(()=>{if(DX)return QU;if(pu){const t=DQ.match(/OS (\d+)_(\d+)/i);if(t&&t[1]){let i=t[1];return t[2]&&(i+=`.${t[2]}`),i}}return""})();function elA(t,i){const r=t.split(".").map(u=>Number(u)),l=i.split(".").map(u=>Number(u));for(let u=0;uf)return!1}return!1}function zX(t,i,r=!1){const l=t.split(".").map(B=>Number(B)),u=i.split(".").map(B=>Number(B));for(let B=0;Bw)return!0;if(f{const t=Number(mQ.split(".")[0]);return t===14||t===13})(),olA=sY&&QU==="11.1.1",nY=typeof location<"u"&&(location.protocol==="file:"||location.hostname==="localhost"||location.hostname==="127.0.0.1"),l_=(()=>{let t;return()=>{if(t===void 0)try{t=!!window.localStorage}catch{t=!1}return t}})(),lv=slA();function slA(){const t=new Map([[$d,["Firefox",MX]],[PY,["Edg",wX]],[MW,["Chrome",jX]],[sY,["ChiOS",Qc("CriOS")]],[od&&!sY,["Safari",QU]],[um,["TBS",NX]],[z_,["XWEB",GX]],[BU&&OY,["WeChat",bX]],[BW,["QQ(Win)",kX]],[YY,["QQ(Mobile)",oY]],[xY,["QQ(Mobile X5)",oY]],[QW,["QQ(Mac)",LX]],[pW,["QQ(iPad)",UX]],[mW,["MI",xX]],[fW,["HW",VX]],[yW,["Samsung",JX]],[JY,["OPPO",HX]],[DW,["VIVO",qX]],[hU,["EDGE",RX]],[CW,["SogouMobile",_X]],[hW,["Sogou",TX]]]);let i="unknown",r="unknown";return t.has(!0)&&([i,r]=t.get(!0)),{name:i,version:r}}function nlA(){return tC||pu||OY||dW||SW}var rlA="";function ZX(){return alA()||""}function alA(){const t=DQ.match(/;\s*([^;)]+)\s+Build\//);return t?.[1]?t[1].trim():null}var T8=new Map([[tC,"Android"],[pu,"iOS"],[FX,"Windows"],[VY,"MacOS"],[OX,"Linux"],[PX,"ChromeOS"]]),XX=function(){return T8.get(!0)?T8.get(!0):"unknown"};function vW(){return FX?1:tC?2:VY?3:pu?4:OX?5:PX?6:SW?7:0}function glA(){return BU||z_?4:Hy?1:od?2:$d?3:0}var $X=()=>{let t=XX();return pu?t+=`/${mQ}`:tC&&(t+=`/${SX}`),t+=`/${lv.name}/${od&&!sY?lv.version:lv.version.split(".")[0]}`,t},clA=W_(dU()),llA=new clA.default,ps=llA,A7=(t=>(t.ROOM_DESTROY="1",t.JOIN_START="21",t.JOIN_SCHEDULE_SUCCESS="22",t.JOIN_SIGNAL_CONNECTION_START="23",t.JOIN_SIGNAL_CONNECTION_END="24",t.JOIN_SEND_CMD="25",t.JOIN_RECEIVED_CMD_RES="26",t.JOIN_SUCCESS="27",t.JOIN_FAILED="28",t.LEAVE_START="51",t.LEAVE_SEND_CMD="52",t.LEAVE_SUCCESS="53",t.PUBLISH_START="61",t.SEND_FIRST_VIDEO_FRAME="62",t.PUBLISH_FAILED="63",t.SUBSCRIBE_START="81",t.SUBSCRIBE_SUCCESS="82",t.SUBSCRIBE_FAILED="84",t.UNSUBSCRIBE_SUCCESS="83",t.LOCAL_TRACK_CAPTURE_START="101",t.LOCAL_TRACK_CAPTURE_SUCCESS="102",t.LOCAL_TRACK_CAPTURE_FAILED="103",t.LOCAL_TRACK_PUBLISHED="104",t.LOCAL_TRACK_UNPUBLISHED="105",t.LOCAL_TRACK_REPLACED="106",t.SWITCH_DEVICE_SUCCESS="107",t.TRACK_MUTED="108",t.TRACK_UNMUTED="109",t.REMOTE_TRACK_SUBSCRIBED="110",t.REMOTE_TRACK_UNSUBSCRIBED="111",t.LOCAL_TRACK_RECAPTURE="112",t.LOCAL_AUDIO_STARTED="113",t.LOCAL_AUDIO_STOPPED="114",t.REMOTE_AUDIO_STARTED="115",t.REMOTE_AUDIO_STOPPED="116",t.LOCAL_TRACK_STOPPED="117",t.LOCAL_VIDEO_TRACK_PREPROCESSED="118",t.PLAY_TRACK_START="151",t.PLAYER_STATE_CHANGED="152",t.VIDEO_LOADED_DATA="153",t.AUTOPLAY_DIALOG_CLICK_CONFIRM="154",t.AUDIO_CONTEXT_LONG_SUSPENDED="155",t.REMOTE_VIDEO_PLAY_START="156",t.REMOTE_VIDEO_PLAY_FINISH="157",t.SIGNAL_CONNECTION_STATE_CHANGED="201",t.PEER_CONNECTION_STATE_CHANGED="202",t.SINGLE_CONNECTION_STAT="203",t.SPC_RECONNECTED="204",t.HEARTBEAT_REPORT="251",t.RECEIVED_PUBLISHED_USER_LIST="252",t.REMOTE_PUBLISH_STATE_CHANGED="253",t.AUDIO_LEVEL_INTERVAL="260",t.NETWORK_QUALITY="261",t.VIDEO_CODEC_IMPLEMENTATION_CHANGED="262",t.QUALITY_LIMITATION_CHANGED="263",t.LOG="264",t.AUDIO_PROCESSOR_DEBUG="265",t.SSO_SWITCH="266",t.SEI_MESSAGE="267",t.USER_PAUSE_IN_PIP="268",t.USER_RESUME_IN_PIP="269",t.ENTER_PICTURE_IN_PICTURE="270",t.LEAVE_PICTURE_IN_PICTURE="271",t.SWITCH_ROOM_START="401",t.SWITCH_ROOM_SUCCESS="407",t.SWITCH_ROOM_FAILED="408",t))(A7||{}),mn=A7,IlA=class{constructor(){de(this,"enable",!1),de(this,"ssoFailCount",0),ps.on("22",({schedule:t})=>{var i;(i=t?.config)!=null&&i.sso&&ps.emit("266",{enable:!0})}),ps.on("266",({enable:t})=>{this.enable=t})}handleUploadFailed(){this.ssoFailCount++,this.ssoFailCount>3&&ps.emit("266",{enable:!1})}},B3=new IlA,ulA="%cTRTC%c%s",ElA="padding: 1px 4px;border-radius: 3px;color: #fff;background: #1E88E5;",dlA="display: inline",e7=class t7{constructor(){de(this,"_isEnableUploadLog",!0),de(this,"_localJoinedUser",new Map),de(this,"_queue",[]),de(this,"_timeoutId",-1),de(this,"_logLevel",1),de(this,"_logLevelToUpload",2),AX||eX||(this.checkURLParam(),this.installEvents())}get isAbleToUpload(){return this._isEnableUploadLog&&this._timeoutId!==-1}installEvents(){ps.on(mn.JOIN_SCHEDULE_SUCCESS,({schedule:i})=>{var r;(r=i?.config)!=null&&r.logLevelToUpload&&Q_[i.config.logLevelToUpload]&&(this._logLevelToUpload=i.config.logLevelToUpload)}),ps.on(mn.JOIN_START,({params:i})=>{this.addJoinedUser({userId:i.userId,sdkAppId:i.sdkAppId}),this.startUpload()}),ps.on(mn.LEAVE_SUCCESS,({room:i})=>{this.deleteJoinedUser(i.userId)})}startUpload(){this._timeoutId===-1&&this.uploadInterval()}addJoinedUser(i){this._localJoinedUser.set(i.userId,i),this.startUpload()}deleteJoinedUser(i){this._localJoinedUser.delete(i)}uploadInterval(){this.upload().catch(()=>{}),this._timeoutId=window.setTimeout(()=>this.uploadInterval(),5e3)}getLogsToUpload(){const i={map:new Map,splicedQueue:[]};if(this._queue[0].forAllJoinedClients&&this._localJoinedUser.size===0)return i;let r=0;for(;r{i.map.has(u)?i.map.get(u).logs.push(l):i.map.set(u,{userId:u,sdkAppId:B,logs:[l]})});else if(XC(l.userId)&&Qv(l.sdkAppId)){const{userId:u,sdkAppId:B}=l;i.map.has(u)?i.map.get(u).logs.push(l):i.map.set(u,{userId:u,sdkAppId:B,logs:[l]})}}return i.map.size>0&&(i.splicedQueue=this._queue.splice(0,r)),i}async upload(){if(this._queue.length===0||!this._isEnableUploadLog)return;const{map:i,splicedQueue:r}=this.getLogsToUpload();if(i.size===0)return;try{const u=[...i.values()];for(let B=0;BIA.log).join(` -`)},F=JSON.stringify(k),j=B3.enable?IW(k,2002,w):F;await this.uploadLogWithRetry(j,w,j instanceof Uint8Array,F),_.forEach(IA=>IA.uploaded=!0)}}catch{}const l=r.filter(u=>!u.uploaded);l.length>0&&(this._queue=l.concat(this._queue))}uploadLogWithRetry(i,r,l,u){return EW({retryFunction:()=>fX({url:gW(r,tX.LOG),body:i,timeout:5e3,priority:"low"}).then(B=>{l&&B.data!=="ok"&&(B3.handleUploadFailed(),this.uploadLogWithRetry(u,r,!1,u))}),settings:{retries:3,timeout:2e3},onError:({retry:B})=>{B()}})()}getPrefix(i){const r=new Date;return r.setTime(aW()),`[${LgA(r)}] <${Q_[i]}>`}getLogLevel(){return this._logLevel}setLogLevel(i){$n(Q_[i])||(this._logLevel!==i&&this.info("setLogLevel",i),this._logLevel=i)}enableUploadLog(){this._isEnableUploadLog=!0}disableUploadLog(){this.warn("disableUploadLog"),this._isEnableUploadLog=!1}logChunkToString(i){if(XC(i))return i;try{return i instanceof Error?i.toString():JSON.stringify(i)}catch{return""}}addLogToQueue(i,r,l=!0,u,B){const f={log:r.reduce((w,_)=>`${w} ${this.logChunkToString(_)}`.trim(),""),level:i,userId:u,sdkAppId:B,forAllJoinedClients:l};ps.emit(mn.LOG,{log:f}),this._isEnableUploadLog&&i>=this._logLevelToUpload&&this._queue.push(f)}log(i,r,l=!0,u,B){var f;if(r.unshift(this.getPrefix(i)),this.addLogToQueue(i,r,l,u,B),i{const i=16*Math.random()|0;return(t=="x"?i:3&i|8).toString(16)})},i7=hlA,BlA=class{constructor(){de(this,"_prefix","TRTC"),de(this,"_queue",new Map)}getRealKey(t){return`${this._prefix}_${t}`}checkStorage(){l_()&&(setInterval(this.doFlush.bind(this),2e4),Object.keys(localStorage).filter(t=>{if(t.startsWith(this._prefix))try{const i=localStorage.getItem(t);if(!i)return!1;const r=JSON.parse(i);if(r&&r.expiresInlocalStorage.removeItem(t)))}doFlush(){if(l_())try{for(const[t,i]of this._queue)localStorage.setItem(t,JSON.stringify(i))}catch(t){jo.warn(t)}}getItem(t){if(!l_())return null;try{const i=localStorage.getItem(this.getRealKey(t));if(!i)return null;const r=JSON.parse(i);return r&&r.expiresIn>=Date.now()?r.value:null}catch(i){jo.warn(i)}}setItem(t,i){if(l_())try{const r={expiresIn:Date.now()+YgA,value:i};this._queue.set(this.getRealKey(t),r)}catch(r){jo.warn(r)}}deleteItem(t){if(!l_())return!1;try{return t=this.getRealKey(t),this._queue.delete(t),localStorage.removeItem(t),!0}catch(i){return jo.warn(i),!1}}clear(){if(l_())try{localStorage.clear()}catch(t){jo.warn(t)}}},o7=new BlA,QlA={};nW(QlA,{HTTPS_API:()=>NlA,IS_GET_CAPABILITIES_FROM_INPUTDEVICE_SUPPORTED:()=>Q7,IS_GET_CAPABILITIES_SUPPORTED:()=>B7,IS_GET_SETTINGS_SUPPORTED:()=>gY,IS_GET_SYNCHRONIZATION_SOURCES_SUPPORTED:()=>xlA,IS_INSERTABLE_STREAM_SUPPORTED:()=>p7,IS_JITTER_BUFFER_TARGET_SUPPORTED:()=>KlA,IS_RTC_RTP_SENDER_SUPPORTED:()=>pU,IS_SCRIPT_TRANSFORM_SUPPORTED:()=>m7,IS_SEI_SUPPORTED:()=>YlA,IS_SPC_SUPPORTED:()=>UlA,basis:()=>JlA,capabilityCheck:()=>HlA,checkSystemRequirementsInternal:()=>a7,decodeSupportStatus:()=>r7,detectH264SupportedByFakeStreaming:()=>g7,detectVideoCodecCapabilities:()=>jlA,detectVideoDecoderCapabilities:()=>v7,detectVideoEncoderCapabilities:()=>M7,encodeSupportStatus:()=>TW,getBrowserInfo:()=>SlA,getDisplayResolution:()=>c7,getH264ProfileLevelIds:()=>R7,isAddTransceiverSupported:()=>qY,isBrowserSupported:()=>RW,isCanvasCaptureStreamAPISupported:()=>u7,isCanvasSmallStreamSupported:()=>E7,isGetReceiversSupported:()=>klA,isGetSendersSupported:()=>h7,isGetTransceiversSupported:()=>LlA,isGetUserMediaSupported:()=>l7,isMediaDevicesSupported:()=>_W,isMediaSessionSupported:()=>y7,isMediaStreamTrackGeneratorSupported:()=>vlA,isMediaStreamTrackProcessorSupported:()=>MlA,isReplaceTrackSupported:()=>OlA,isRequestVideoFrameCallbackSupported:()=>bW,isSIMDSupported:()=>VlA,isScaleResolutionDownBySupported:()=>d7,isScreenCaptureApiAvailable:()=>NW,isSelectedCandidatePair:()=>GlA,isSetParametersSupported:()=>PlA,isSetSinkIdSupported:()=>_lA,isSmallStreamSupported:()=>C7,isStopTransceiverSupported:()=>FlA,isTRTCSupported:()=>wlA,isUnifiedPlanDefault:()=>blA,isUsedInHttpProtocol:()=>HY,isWebAudioSupported:()=>I7,isWebCodecSupported:()=>f7,isWebCodecsSupported:()=>wW,isWebRTCSupported:()=>GW,isWebTransportSupported:()=>D7});var rY={PLAY_FAILED:"PLAY_FAILED",NOT_SUPPORTED_HTTP:"NOT_SUPPORTED_HTTP",MICROPHONE_NOT_FOUND:"MICROPHONE_NOT_FOUND",CAMERA_NOT_FOUND:"CAMERA_NOT_FOUND"},M_={AVOID_REPEATED_CALL:t=>`previous ${t.name}() is ongoing, please avoid repeated calls.`,INVALID_PARAMETER_REQUIRED:({key:t,rule:i,fnName:r,value:l})=>`'${t||i.name}' is a required param when calling ${r}(), received: ${l}.`,INVALID_PARAMETER_TYPE({key:t,rule:i,fnName:r,value:l}){const u=`${t||i.name}`;let B="";return B=Array.isArray(i.type)?i.type.join("|"):i.type,`'${u}' must be type of ${B} when calling ${r}(), received type: ${Bv(l)}.`},INVALID_PARAMETER_EMPTY:({key:t,rule:i,fnName:r,value:l})=>`'${t||i.name}' cannot be '${l}' when calling ${r}().`,INVALID_PARAMETER_INSTANCE:({key:t,rule:i,fnName:r,value:l})=>`'${`${t||i.name}`}' must be instanceof ${`${i.instanceOf.name||i.instanceOf}`} when calling ${r}(), received type: ${Bv(l)}.`,INVALID_PARAMETER_RANGE:({key:t,rule:i,fnName:r,value:l})=>`'${t||i.name}' must be one of ${i.values.join("|")} when calling ${r}(), received: ${l}.`,INVALID_PARAMETER_MIN:({key:t,rule:i,fnName:r,value:l})=>`the min value of ${t||i.name} is ${i.min}, received: ${l}.`,INVALID_PARAMETER_MAX:({key:t,rule:i,fnName:r,value:l})=>`the max value of ${t||i.name} is ${i.max}, received: ${l}.`,API_CALL_TIMEOUT:t=>`${t.commandDesc||t.command} timeout observed.`,SIGNAL_CHANNEL_RECONNECTION_FAILED:"signal channel reconnection failed, please check your network.",SIGNAL_CHANNEL_SETUP_FAILED:t=>`SignalChannel setup failure: (errorCode: ${t.errorCode}, errorMsg: ${t.errorMsg} }).`,ERROR_MESSAGE(t){let i=`${t.type} failed`;return t.message&&(i=`${i}: ${t.message}.`),i},EXCHANGE_SDP_TIMEOUT:"exchange sdp timeout.",DOWNLINK_RECONNECTION_FAILED:"downlink reconnection failed, please check your network and re-join room.",EXCHANGE_SDP_FAILED:t=>`exchange sdp failed ${t.errMsg}.`,UPDATE_OFFER_TIMEOUT:"update offer timeout observed.",UPLINK_RECONNECTION_FAILED:"uplink reconnection failed, please check your network and publish again.",INVALID_RECORDID:"recordId must be an integer number.",INVALID_PURE_AUDIO:"pureAudioPushMode must be 1 or 2.",INVALID_STREAMID:"streamId must be a sting literal within 64 bytes, and not be empty.",INVALID_USER_DEFINE_RECORDID:"userDefineRecordId must be a sting literal contains (a-zA-Z),(0-9), underline and hyphen, within 64 bytes, and not be empty.",INVALID_USER_DEFINE_PUSH_ARGS:"userDefinePushArgs must be a sting literal within 256 bytes, and not be empty.",INVALID_PROXY:'proxy server url must start with "wss://".',INVALID_JOIN:"duplicate join() called.",INVALID_ROOMID_STRING:t=>`'${t}' must be validate string when useStringRoomId is true.`,INVALID_ROOMID_INTEGER:t=>`'${t}' must be an integer between [1, 4294967294] when useStringRoomId is false.`,INVALID_SIGNAL_CHANNEL:"SignalChannel is not ready yet.",JOIN_ROOM_TIMEOUT:"join room timeout.",JOIN_ROOM_FAILED:({error:t,code:i})=>`Failed to join room - ${t} code: ${i}`,REJOIN_ROOM_FAILED:t=>`reJoin room: ${t.roomId} failed, please check your network.`,INVALID_DESTROY:"please call leave() before destroy().",INVALID_PUBLISH:"please call join() before publish().",INVALID_UNPUBLISH:"stream has not been published yet.",INVALID_AUDIENCE:'no permission to publish() under live/audience, please call switchRole("anchor") firstly before publish().',INVALID_INITIALIZE:"cannot publish stream because stream is not initialized, is switching device, or has been closed.",INVALID_DUPLICATE_PUBLISHING:t=>`duplicate ${t} stream publishing, please unpublish your prev ${t} stream and then re-publish.`,INVALID_SUBSCRIBE_UNDEFINED:"stream is undefined or null.",INVALID_SUBSCRIBE_LOCAL:"stream cannot be LocalStream.",INVALID_REMOTE_STREAM:"remoteStream does not exist because it has been unpublished by remote peer.",SUBSCRIBE_FAILED:({message:t,userId:i,streamType:r})=>`failed to subscribe ${i} ${r} stream, reason: ${t}.`,INVALID_ROLE:"switchRole can only be called in live mode.",INVALID_PARAMETER_SWITCH_ROLE:"role could only be set to a value as anchor or audience.",INVALID_OPERATION_SWITCH_ROLE:"please call join() before switchRole().",SWITCH_ROLE_TIMEOUT:"switchRole timeout.",SWITCH_ROLE_FAILED:t=>`switchRole failed, errCode: ${t.code} errMsg: ${t.message}.`,CLIENT_BANNED:t=>`client was banned because of ${t.message}.`,INVALID_OPERATION_START_PUBLISH_CDN:"please call startPublishCDNStream() after join room and publish the local stream.",INVALID_OPERATION_STOP_PUBLISH_CDN:"please call startPublishCDNStream() before stopPublishCDNStream().",START_PUBLISH_CDN_FAILED:t=>`startPublishCDNStream failed, errMsg: ${t.message}.`,STOP_PUBLISH_CDN_FAILED:t=>`stopPublishCDNStream failed, errMsg: ${t.message}.`,INVALID_STREAM_ID:t=>`'${t}' can only consist of uppercase and lowercase english letters (a-zA-Z), numbers (0-9), hyphens and underscores.`,START_MIX_TRANSCODE:"please call startMixTranscode() after join().",STOP_MIX_TRANSCODE:"please call stopMixTranscode() after startMixTranscode().",INVALID_AUDIO_VOLUME:"interval must be a number.",ENABLE_SMALL_STREAM_PUBLISHED:"Cannot enable small stream after localStream published.",DISABLE_SMALL_STREAM_PUBLISHED:"Cannot disable small stream after localStream published.",NOT_SUPPORTED_SMALL_STREAM:"your browser does not support opening small stream.",INVALID_SMALL_STREAM_PROFILE:"small stream profile is invalid.",INVALID_PARAMETER_REMOTE_STREAM:"remoteStream is invalid.",INVALID_OPERATION_CHANGE_SMALL:"cannot switch to the small stream without subscribing to the video of remoteStream.",REMOTE_NOT_PUBLISH_SMALL_STREAM:"remote peer does not publish small stream.",INVALID_SWITCH_DEVICE:"cannot switch device on current stream.",INVALID_SWITCH_DEVICE_PUBLISHING:"cannot switch device when publishing localStream.",INVALID_REPLACE_TRACK:"cannot replace track when publishing localStream.",INVALID_INITIALIZE_LOCAL_STREAM:"local stream has not initialized yet.",INVALID_ADD_TRACK_REPETITIVE:"previous addTrack is ongoing, please avoid repetitive execution.",INVALID_ADD_TRACK_REMOVING:"cannot add track when a track is removing.",INVALID_ADD_TRACK_PUBLISHING:"cannot add track when publishing localStream.",INVALID_STREAM_INITIALIZED:"your local stream haven't been initialized yet.",INVALID_ADD_TRACK_NUMBER:"a Stream has at most one audio track and one video track.",INVALID_REMOVE_AUDIO_TRACK:"remove audio track is not supported on your browser.",INVALID_REMOVE_AUDIO_ADDING:"cannot remove track when a track is adding.",INVALID_REMOVE_AUDIO_ON:"previous removeTrack is ongoing, please avoid repetitive execution.",INVALID_REMOVE_TRACK_PUBLISHING:"cannot remove track when publishing localStream.",INVALID_REMOVE_TRACK_NOT_TRACK:"localStream has not this track.",INVALID_REMOVE_TRACK_NUMBER:"remove the only video track is not supported, please use replaceTrack or muteVideo.",INVALID_REPLACE_TRACK_NO_TRACK:t=>`cannot replace ${t.kind} track because stream has not ${t.kind} track`,NOT_BUG_PACKAGE:"You need to buy packages, refer to tencent console.",START_MIX_TRANSCODE_FAILED:t=>`startMixTranscode failed, errMsg: ${t.message}.`,STOP_MIX_TRANSCODE_FAILED:t=>`stopMixTranscode failed, errMsg: ${t.message}.`,MIX_TRANSCODE_NOT_STARTED:"mixTranscode has not been started.",CANNOT_LESS_THAN_ZERO:({key:t,rule:i,fnName:r,value:l})=>`'${t||i.name}' cannot be less than 0 when calling ${r}().`,MIX_PARAMS_VIDEO_FRAMERATE:"'config.videoFramerate' should be an integer between 0 and 30, excluding 0.",MIX_PARAMS_VIDEO_GOP:"'config.videoGOP' should be an integer between 1 and 8.",MIX_PARAMS_AUDIO_BITRATE:"'config.audioBitrate' should be an integer between 32 and 192.",MIX_PARAMS_USER_Z_ORDER:t=>`'${t}' is required and must be between 1 and 15.`,MIX_PARAMS_NOT_SELF:"'config.mixUsers' must contain self.",MIX_PARAMS_USER_STREAM:"'config.videoWidth' and 'config.videoHeight' of output stream should be contain all mix stream.",INVALID_PLAY:"duplicate play() call observed, please stop() firstly.",INVALID_ELEMENT_ID:({key:t,fnName:i})=>`'${t}' is not found in the document object when calling ${i}().`,INVALID_ELEMENT_ID_TYPE:({key:t,fnName:i,type:r})=>`the element corresponding to '${t}' must be instanceof HTMLElement when calling ${i}(), received: ${r}.`,PLAY_FAILED:t=>`${t.media} play failed, browser exception: ${t.error.toString()}`,INVALID_USERID:"userId cannot be all spaces.",INVALID_CREATE_STREAM_SOURCE:"LocalStream must be created by createStream() with either audio/video or audioSource/videoSource, but can not be mixed with audio/video and audioSource/videoSource.",INVALID_CREATE_STREAM_SCREEN:"screen/video cannot be both true.",INVALID_CREATE_STREAM_AUDIO:"audio/screenAudio cannot be both true.",INVALID_CREATE_STREAM_SCREEN_AUDIO:"when screen is true, screenAudio can be configured.",NOT_SUPPORTED_HTTP:"http protocol does not support the ability to capture microphone, camera and screen. please use https to deploy your page.",NOT_SUPPORTED_WEBRTC:"your browser or environment does not support full WebRTC capabilities.",NOT_SUPPORTED_PROFILE:"your browser does not support setVideoProfile.",NOT_SUPPORTED_MEDIA:"your browser or environment does not support navigator.mediaDevices.",NOT_SUPPORTED_H264ENCODE:"your device does not support H.264 encoding.",NOT_SUPPORTED_H264DECODE:"your device does not support H.264 decoding.",NOT_SUPPORTED_TRACK:t=>`${t}Track is not supported on your browser.`,NOT_SUPPORTED_SWITCH_DEVICE:"switchDevice is not supported on your browser.",NOT_SUPPORTED_CAPTURE:"Your browser or environment does not support screen sharing, please check whether the browser version.",MICROPHONE_NOT_FOUND:"no microphone detected, please check your microphone.",CAMERA_NOT_FOUND:"no camera detected, please check your camera.",SIGNAL_RESPONSE_FAILED:t=>`${t.signalResponse} failed, response code is ${t.code} , errMsg: ${t.message}.`,CATCH_HANDLER_ERROR:({name:t,event:i})=>`an error was caught in ${t}.on('${i}', handler), please check your code in 'handler'.`,API_NOT_EXIST:({name:t})=>`experimental api ${t} does not exist.`,REPEAT_JOIN:t=>"please avoid repeated join.",CONNECTION_CLOSED:"remoteStream has been unsubscribed or unpublished by remote user.",SUBSCRIBE_ALL_FALSE:"cannot subscribe when both audio & video are false, use client.unsubscribe() instead",CLIENT_DESTROYED:({funName:t})=>`failed to call ${t}() because client was destroyed.`,SEI_NOT_SUPPORT:t=>"not support to sendSEIMessage"+(t===!1?" without using h264 codec":""),SEI_DISABLED:"SEI is disabled",SEI_BEFORE_PUBLISH:"please call sendSEIMessage() after publish() success",SEI_NOT_VIDEO:"cannot send sei when localStream has not video.",CALL_FREQUENCY_LIMIT:({isSize:t,name:i,timesInSecond:r,maxSizeInSecond:l})=>`api ${i} call ${t?"size":"times"} is over ${t?`${l} bytes`:r} in a second.`,CONNECTION_ABORTED:t=>`connection aborted due to: ${t}`,API_CALL_ABORTED(t){let i;return i=t.message.includes("REMOTE_STREAM_NOT_EXIST")?`Subscribe ${t.userId} ${t.streamType} stream aborted, reason: remote user ${t.userId} unpublished stream.`:`API aborted, reason: ${t.message}`,i},DUPLICATE_AUX:"only one auxiliary stream can be published in a room.",NOT_SUPPORTED_AUX:"publish auxiliary stream is not supported on your browser.",INVALID_PARAMETER_STREAMTYPE:t=>`'streamType' is required when 'userId' is not '*', calling ${t}()`,SWITCH_PLAYBACK_QUALITY_TIMEOUT:t=>`switchPlaybackQuality timeout: waiting for first frame of user ${t.userId}.`},N8=(t,i)=>i?`${g3}/${t}/${i}`:`${g3}/${t}/index.html`,plA=()=>{if(window.TRTC_ERROR_INFO&&window.TRTC_ERROR_LINK)return{TRTC_ERROR_INFO:window.TRTC_ERROR_INFO,TRTC_ERROR_LINK:window.TRTC_ERROR_LINK};let t=localStorage==null?void 0:localStorage.getItem(xgA);if(t){t=JSON.parse(t);const i=document.createElement("script");i.type="text/javascript",i.text=t.message,document.body.appendChild(i);const r=window.TRTC_ERROR_INFO,l=window.TRTC_ERROR_LINK;return document.body.removeChild(i),{TRTC_ERROR_INFO:r,TRTC_ERROR_LINK:l}}return{}};function aY(t){const{key:i,data:r,link:l,addDocLink:u=!0}=t;let B="",f="",w="";gv(M_[i])?B=M_[i](r):XC(M_[i])&&(B=M_[i]);const{TRTC_ERROR_INFO:_,TRTC_ERROR_LINK:k}=plA();l?w=`${l.className}.html#${l.fnName}`:k&&k[i]&&(gv(k[i])?w=k[i](r):XC(k[i])&&(w=k[i]));let F=B;return Py()&&(_&&_[i]&&(gv(_[i])?f=_[i](r):XC(_[i])&&(f=_[i])),f&&(F=u?`${f} -请查看文档: ${N8("zh-cn",w)} +`}}}),EcA=UU({"../node_modules/.pnpm/sdp-transform@2.15.0/node_modules/sdp-transform/lib/index.js"(t){var i=IcA(),r=ucA(),l=xW();t.grammar=l,t.write=r,t.parse=i.parse,t.parseParams=i.parseParams,t.parseFmtpConfig=i.parseFmtpConfig,t.parsePayloads=i.parsePayloads,t.parseRemoteCandidates=i.parseRemoteCandidates,t.parseImageAttributes=i.parseImageAttributes,t.parseSimulcastStreamList=i.parseSimulcastStreamList}}),dcA={x:{required:!0,type:"number"},y:{required:!0,type:"number"},width:{required:!0,type:"number",notLessThanZero:!0,min:1,max:3840},height:{required:!0,type:"number",notLessThanZero:!0,min:1,max:3840},zIndex:{required:!0,type:"number"},fillMode:{required:!1,type:"string"},mirror:{required:!1,type:"boolean"},rotation:{required:!1,type:"number"},hidden:{required:!1,type:"boolean"}},RX=(t,i=!1)=>({type:"object",required:i,properties:{canvasColor:{required:!1,type:["string",CanvasGradient,CanvasPattern]},width:{required:!0,type:"number",notLessThanZero:!0,min:1,max:3840},height:{required:!0,type:"number",notLessThanZero:!0,min:1,max:3840},frameRate:{required:!1,type:"number",notLessThanZero:!0,min:1,max:60}},validate(r,l,I){const{RtcError:h,ErrorCode:f,ErrorCodeDictionary:w}=t.errorModule;if(!r)return;const{width:_,height:k}=r;if(_&&k&&_*k>8294400)throw new h({code:f.INVALID_PARAMETER,message:"The mix resolution cannot be set higher than 3840 * 2160."})}}),wX=t=>({required:!1,type:["string",HTMLElement,null],validate(i,r,l){const{RtcError:I,ErrorCode:h,ErrorCodeDictionary:f}=t.errorModule;if(t.utils.isString(i)&&!document.getElementById(i))throw new I({code:h.INVALID_PARAMETER,extraCode:f.INVALID_ELEMENT_ID,fnName:l,messageParams:{key:r}})}}),OU=(t,i=!0)=>({type:"object",required:i,properties:Rn({},dcA),validate(r,l,I){const{RtcError:h,ErrorCode:f,ErrorCodeDictionary:w}=t.errorModule;if(r){if(r.fillMode&&!["contain","cover","fill"].includes(r.fillMode))throw new h({code:f.INVALID_PARAMETER,extraCode:w.INVALID_PARAMETER_TYPE,message:"The fillMode parameter must be 'contain', 'cover' or 'fill'",fnName:I});if(r.rotation&&![0,90,180,270].includes(r.rotation))throw new h({code:f.INVALID_PARAMETER,extraCode:w.INVALID_PARAMETER_TYPE,message:"The rotation parameter must be 0, 90, 180 or 270",fnName:I})}}}),_X=t=>({type:"array",required:!1,arrayItem:{type:"object",properties:{id:{required:!0,type:"string"},cameraId:{required:!1,type:"string"},videoTrack:{required:!1,instanceof:MediaStreamTrack},profile:{required:!1,type:["string","object"],properties:{width:{type:"number"},height:{type:"number"},frameRate:{type:"number"},bitrate:{type:"number"}}},layout:Rn({},OU(t))}}}),TX=t=>({type:"array",required:!1,arrayItem:{type:"object",properties:{id:{required:!0,type:"string"},profile:{required:!1,type:["string","object"],properties:{width:{type:"number"},height:{type:"number"},frameRate:{type:"number"},bitrate:{type:"number"}}},captureElement:{required:!1,type:HTMLElement},preferDisplaySurface:{required:!1,type:"string"},layout:Rn({},OU(t))},validate(i,r,l){const{RtcError:I,ErrorCode:h,ErrorCodeDictionary:f}=t.errorModule;if(!t.rtcDectection.isScreenCaptureApiAvailable())throw new I({code:h.ENV_NOT_SUPPORTED,fnName:l,extraCode:f.NOT_SUPPORTED_SCREEN_SHARE})}}}),NX=t=>({type:"array",required:!1,arrayItem:{type:"object",properties:{id:{required:!0,type:"string"},content:{required:!0,type:"string"},font:{required:!1,type:"string"},color:{required:!1,type:["string",CanvasGradient,CanvasPattern]},layout:Rn({},OU(t))}}}),GX=t=>({type:"array",required:!1,arrayItem:{type:"object",properties:{id:{required:!0,type:"string"},url:{required:!0,type:"string"},layout:Rn({},OU(t))}}}),bX=t=>({type:"array",required:!1,arrayItem:{type:"object",properties:{id:{required:!0,type:"string"},url:{required:!0,type:"string"},layout:Rn({},OU(t))}}});function CcA(t){return{name:"VideoMixerOptions",type:"object",required:!0,allowEmpty:!1,properties:{view:Rn({},wX(t)),canvasInfo:Rn({},RX(t,!0)),camera:Rn({},_X(t)),screen:Rn({},TX(t)),text:Rn({},NX(t)),image:Rn({},GX(t)),video:Rn({},bX(t))},validate(i,r,l,I){const{RtcError:h,ErrorCode:f,ErrorCodeDictionary:w}=t.errorModule;if(t.environment.isMobile())throw new h({code:f.ENV_NOT_SUPPORTED,message:"VideoMixer is not supported on mobile devices currently"});const{onScreenShareStop:_}=i;if(_&&!t.utils.isFunction(_))throw new h({code:f.INVALID_PARAMETER,extraCode:w.INVALID_PARAMETER_TYPE,fnName:l,messageParams:{key:"onScreenShareStop",value:typeof _,rule:{type:"Function"}}})}}}function hcA(t){return{name:"VideoMixerOptions",type:"object",required:!1,allowEmpty:!1,properties:{view:Rn({},wX(t)),canvasInfo:Rn({},RX(t)),camera:Rn({},_X(t)),screen:Rn({},TX(t)),text:Rn({},NX(t)),image:Rn({},GX(t)),video:Rn({},bX(t))}}}function BcA(t){return{name:"StopVideoMixerOptions",required:!1}}var kX=(t=>(t[t.INVALID_PARAMETER=4096]="INVALID_PARAMETER",t[t.INVALID_OPERATION=4097]="INVALID_OPERATION",t[t.NOT_SUPPORTED=4098]="NOT_SUPPORTED",t[t.DEVICE_NOT_FOUND=4099]="DEVICE_NOT_FOUND",t[t.INITIALIZE_FAILED=4100]="INITIALIZE_FAILED",t[t.SIGNAL_CHANNEL_SETUP_FAILED=16385]="SIGNAL_CHANNEL_SETUP_FAILED",t[t.SIGNAL_CHANNEL_ERROR=16386]="SIGNAL_CHANNEL_ERROR",t[t.ICE_TRANSPORT_ERROR=16387]="ICE_TRANSPORT_ERROR",t[t.JOIN_ROOM_FAILED=16388]="JOIN_ROOM_FAILED",t[t.CREATE_OFFER_FAILED=16389]="CREATE_OFFER_FAILED",t[t.SIGNAL_CHANNEL_RECONNECTION_FAILED=16390]="SIGNAL_CHANNEL_RECONNECTION_FAILED",t[t.UPLINK_RECONNECTION_FAILED=16391]="UPLINK_RECONNECTION_FAILED",t[t.DOWNLINK_RECONNECTION_FAILED=16392]="DOWNLINK_RECONNECTION_FAILED",t[t.REMOTE_STREAM_NOT_EXIST=16400]="REMOTE_STREAM_NOT_EXIST",t[t.CLIENT_BANNED=16448]="CLIENT_BANNED",t[t.SERVER_TIMEOUT=16449]="SERVER_TIMEOUT",t[t.SUBSCRIPTION_TIMEOUT=16450]="SUBSCRIPTION_TIMEOUT",t[t.PLAY_NOT_ALLOWED=16451]="PLAY_NOT_ALLOWED",t[t.DEVICE_AUTO_RECOVER_FAILED=16452]="DEVICE_AUTO_RECOVER_FAILED",t[t.START_PUBLISH_CDN_FAILED=16453]="START_PUBLISH_CDN_FAILED",t[t.STOP_PUBLISH_CDN_FAILED=16454]="STOP_PUBLISH_CDN_FAILED",t[t.START_MIX_TRANSCODE_FAILED=16455]="START_MIX_TRANSCODE_FAILED",t[t.STOP_MIX_TRANSCODE_FAILED=16456]="STOP_MIX_TRANSCODE_FAILED",t[t.NOT_SUPPORTED_H264=16457]="NOT_SUPPORTED_H264",t[t.SWITCH_ROLE_FAILED=16458]="SWITCH_ROLE_FAILED",t[t.API_CALL_TIMEOUT=16459]="API_CALL_TIMEOUT",t[t.SCHEDULE_FAILED=16460]="SCHEDULE_FAILED",t[t.API_CALL_ABORTED=16461]="API_CALL_ABORTED",t[t.SPC_INITIALIZED_FAILED=16462]="SPC_INITIALIZED_FAILED",t[t.VIDEO_MANAGER_ERROR=16463]="VIDEO_MANAGER_ERROR",t[t.SWITCH_ROOM_FAILED=16464]="SWITCH_ROOM_FAILED",t[t.VIDEO_ENCODE_FAILED=16465]="VIDEO_ENCODE_FAILED",t[t.AUDIO_ENCODE_FAILED=16466]="AUDIO_ENCODE_FAILED",t[t.UNKNOWN=65535]="UNKNOWN",t))(kX||{}),qg=kX,QcA=function(t){for(const i in qg)if(qg[i]===t)return i;return"UNKNOWN"},pcA=class extends Error{constructor({name:t="RtcError",message:i,code:r=qg.UNKNOWN,extraCode:l=0,constraint:I}){const h=`<${QcA(r)} 0x${r.toString(16)}>`,f=`${i}${I?` constraint: ${I}`:""}${i?.includes(h)?"":` ${h}`}`;super(f),de(this,"code"),de(this,"extraCode"),de(this,"message"),de(this,"originMessage"),de(this,"name"),de(this,"constraint"),this.code=r,this.extraCode=l,this.name=t,this.message=f,this.constraint=I,this.originMessage=i}getCode(){return this.code}getExtraCode(){return this.extraCode}toString(){return this.originMessage}},pl=pcA,mcA=0,YW=function(){return Date.now()+mcA},LX=function(){const t=new Date;return t.setTime(YW()),t.toLocaleString()},fcA=function(t){let i=String(t.getMilliseconds());return"padStart"in String.prototype&&(i=i.toString().padStart(3,"0")),`${t.toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/,"$1")}:${i}`},ycA={};PW(ycA,{REPORT_TYPE:()=>i7,buildSSOPackage:()=>qW,bytes2ms:()=>ZcA,calculateScaleResolutionDownNumber:()=>e7,concatArrayBuffers:()=>flA,convertObjectNumberToInt:()=>$X,copyProperties:()=>zcA,deepClone:()=>MY,deepCloneBasic:()=>q3,deepMerge:()=>zX,delay:()=>iT,fibonacci:()=>HW,formatedTime:()=>dlA,getConstructorName:()=>ilA,getContainerFromElement:()=>ulA,getEnv:()=>VcA,getFirst16Bits:()=>DlA,getInternalVersion:()=>rlA,getLast16Bits:()=>ylA,getLoggerUrl:()=>VW,getMediaStreamTrackInfo:()=>QlA,getMuteStateFromFlag:()=>WX,getNetworkType:()=>JW,getNumNetworkType:()=>WcA,getReconnectionTimeout:()=>AlA,getStringByteLength:()=>ClA,getTestSignalDomain:()=>HcA,getTurnServer:()=>clA,getUint32Version:()=>XX,getValueType:()=>Rv,getViewListFromView:()=>IlA,glog:()=>$cA,ipv4ToUint32:()=>llA,isArray:()=>$C,isAudioWorkletSupported:()=>olA,isBoolean:()=>pv,isConstructor:()=>jX,isEmpty:()=>glA,isFunction:()=>Qv,isLangChinese:()=>qy,isMediaStreamTrack:()=>elA,isNumber:()=>wv,isObject:()=>Iv,isOverseaSdkAppId:()=>SY,isPlainObject:()=>tT,isPortrait:()=>ZX,isPromise:()=>KX,isRemoteTrack:()=>tlA,isRotate90Or270:()=>t7,isSetSinkIdSupported:()=>slA,isString:()=>th,isUndefined:()=>$n,isVideoMixerOutputTrack:()=>KW,loadImage:()=>hlA,loadVideo:()=>plA,ms2bytes:()=>XcA,ms2samples:()=>qX,normalizeUrl:()=>BlA,performanceNow:()=>xc,promiseAny:()=>nlA,samples2ms:()=>HX,setNetworkTypeFromWebRTC:()=>jcA,stringify:()=>Ky,stringifyIncludeValue:()=>H3,throttlePromise:()=>A7});var DY="5.0.0",UX=typeof importScripts<"u",FX=typeof registerProcessor<"u",DcA="web.sdk.qcloud.com",F3=`https://${DcA}/trtc/webrtc/doc`,$8="https://cloud.tencent.com/document/product/647/85386",AZ="https://trtc.io/document/56025",ScA="https://yun.tim.qq.com",McA="https://apisgp.my-imcloud.com",vcA="trtc_error_assistance",OX={LOG:"jssdk_log"},xj={QCLOUD:"qcloud"},w_=(t=>(t[t.TRACE=0]="TRACE",t[t.DEBUG=1]="DEBUG",t[t.INFO=2]="INFO",t[t.WARN=3]="WARN",t[t.ERROR=4]="ERROR",t[t.NONE=5]="NONE",t))(w_||{}),PX={unknown:0,wifi:1,"4g":2,"3g":3,"2g":4,wired:5,"5g":6},RcA=6048e5,wcA={"480p_2":{width:640,height:480,frameRate:15,bitrate:500}},_cA=wcA["480p_2"],zt={CANVAS:"canvas",AUDIO:"audio",VIDEO:"video",SCREEN:"screen",SMALL:"small",BIG:"big",AUXILIARY:"auxiliary",SMALL_VIDEO:"smallVideo",FACING_MODE_USER:"user",FACING_MODE_ENVIRONMENT:"environment",MUTE:"mute",UNMUTE:"unmute",ENDED:"ended",PLAYING:"playing",PAUSE:"pause",ERROR:"error",LOADSTART:"loadstart",LOADEDDATA:"loadeddata",LOADEDMETADATA:"loadedmetadata",AUDIO_INPUT:"audioinput",VIDEO_INPUT:"videoinput",DETAIL:"detail",TEXT:"text",MAIN:"main",BACKUP:"backup",BANNED:"banned",KICK:"kick",USER_TIME_OUT:"user_time_out",ROOM_DISBAND:"room_disband",SEI_MESSAGE:"sei-message",ADD:"add",REMOVE:"remove",REPLACE:"replace",TRACK:"track",SUBSCRIBE:"subscribe",UNSUBSCRIBE:"unsubscribe",TRANSCEIVER_DIRECTION_SENDONLY:"sendonly",TRANSCEIVER_DIRECTION_RECVONLY:"recvonly",ENTER_PICTURE_IN_PICTURE:"enterpictureinpicture",LEAVE_PICTURE_IN_PICTURE:"leavepictureinpicture",FULLSCREEN_CHANGE:"fullscreenchange",RESIZE:"resize",TIME_UPDATE:"timeupdate"},eZ=1,TcA=2,NcA=4,tZ=8,iZ=64,oZ=16,GcA=256,$L={PLAYER_ERROR:"player-error",LOAD_WORKLET:"load-worklet",GET_USER_MEDIA_RETRY:"getUserMedia-retry"},bcA="unified-plan",__=5,xX="default",F1=2e3,YX=["width","height","frameRate","facingMode","sampleRate","sampleSize","channelCount","deviceId","min","max"],kcA={alpha:!0,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!0,powerPreference:"low-power"},LcA=function(t,i,r,l){return new(r||(r=Promise))(function(I,h){function f(k){try{_(l.next(k))}catch(U){h(U)}}function w(k){try{_(l.throw(k))}catch(U){h(U)}}function _(k){var U;k.done?I(k.value):(U=k.value,U instanceof r?U:new r(function(j){j(U)})).then(f,w)}_((l=l.apply(t,[])).next())})},O3=Symbol(32),P3=Symbol(16),x3=Symbol(8),K_=class{constructor(t){this.g=t,this.consumed=0,t&&(this.need=t.next().value)}setG(t){this.g=t,this.demand(t.next().value,!0)}consume(){this.buffer&&this.consumed&&(this.buffer.copyWithin(0,this.consumed),this.buffer=this.buffer.subarray(0,this.buffer.length-this.consumed),this.consumed=0)}demand(t,i){return i&&this.consume(),this.need=t,this.flush()}read(t){return LcA(this,void 0,void 0,function*(){return this.lastReadPromise&&(yield this.lastReadPromise),this.lastReadPromise=new Promise((i,r)=>{var l;this.reject=r,this.resolve=I=>{delete this.lastReadPromise,delete this.resolve,delete this.need,i(I)},this.demand(t,!0)||(l=this.pull)===null||l===void 0||l.call(this,t)})})}readU32(){return this.read(O3)}readU16(){return this.read(P3)}readU8(){return this.read(x3)}close(){var t;this.g&&this.g.return(),this.buffer&&this.buffer.subarray(0,0),(t=this.reject)===null||t===void 0||t.call(this,new Error("EOF")),delete this.lastReadPromise}flush(){if(!this.buffer||!this.need)return;let t=null;const i=this.buffer.subarray(this.consumed);let r=0;const l=I=>i.length<(r=I);if(typeof this.need=="number"){if(l(this.need))return;t=i.subarray(0,r)}else if(this.need===O3){if(l(4))return;t=i[0]<<24|i[1]<<16|i[2]<<8|i[3]}else if(this.need===P3){if(l(2))return;t=i[0]<<8|i[1]}else if(this.need===x3){if(l(1))return;t=i[0]}else if("buffer"in this.need){if("byteOffset"in this.need){if(l(this.need.byteLength-this.need.byteOffset))return;new Uint8Array(this.need.buffer,this.need.byteOffset).set(i.subarray(0,r)),t=this.need}else if(this.g)return void this.g.throw(new Error("Unsupported type"))}else{if(l(this.need.byteLength))return;new Uint8Array(this.need).set(i.subarray(0,r)),t=this.need}return this.consumed+=r,this.g?this.demand(this.g.next(t).value,!0):this.resolve&&this.resolve(t),t}write(t){if(t instanceof Uint8Array?this.malloc(t.length).set(t):"buffer"in t?this.malloc(t.byteLength).set(new Uint8Array(t.buffer,t.byteOffset,t.byteLength)):this.malloc(t.byteLength).set(new Uint8Array(t)),!this.g&&!this.resolve)return new Promise(i=>this.pull=i);this.flush()}writeU32(t){this.malloc(4).set([t>>24&255,t>>16&255,t>>8&255,255&t]),this.flush()}writeU16(t){this.malloc(2).set([t>>8&255,255&t]),this.flush()}writeU8(t){this.malloc(1)[0]=t,this.flush()}malloc(t){if(this.buffer){const i=this.buffer.length,r=i+t;if(r<=this.buffer.buffer.byteLength-this.buffer.byteOffset)this.buffer=new Uint8Array(this.buffer.buffer,this.buffer.byteOffset,r);else{const l=new Uint8Array(r);l.set(this.buffer),this.buffer=l}return this.buffer.subarray(i,r)}return this.buffer=new Uint8Array(t),this.buffer}};K_.U32=O3,K_.U16=P3,K_.U8=x3;var UcA=128;function Yj(t){const i=new K_;for(;t>=128;)i.malloc(1)[0]=255&t|UcA,t>>>=7;return i.malloc(1)[0]=255&t,i.buffer||new Uint8Array(0)}function Y3(t,i=0){const r=new K_,l=i<<3;switch(typeof t){case"boolean":const I=r.malloc(2);I[0]=l,I[1]=t?1:0;break;case"number":r.malloc(1)[0]=l,r.write(Yj(t));break;case"string":r.malloc(1)[0]=2|l;const h=new TextEncoder().encode(t);r.write(Yj(h.length));const f=r.malloc(h.length);for(let _=0;_>>24&255),this.buffer.push(t>>>16&255),this.buffer.push(t>>>8&255),this.buffer.push(255&t)}writeInt16(t){this.buffer.push(t>>>8&255),this.buffer.push(255&t)}writeByte(t){this.buffer.push(255&t)}writeBytes(t){for(let i=0;i>>24&255,t[r+1]=i>>>16&255,t[r+2]=i>>>8&255,t[r+3]=255&i}function nd(t,i){return t[i]<<24|t[i+1]<<16|t[i+2]<<8|t[i+3]}function rZ(t,i){return t[i]}function QL(t,i,r){return new TextDecoder().decode(FcA(t,i,r))}function FcA(t,i,r){return t.slice(i,i+r)}var Vj=0,V3=2654435769,J3=16,aZ=4,AU=2,eU=7;function OcA(t,i,r,l="AVQualityReportSvc.C2S",I=2e3,h=2,f=30){return{version:I,encryption:h,d2:"",d2Len:0,uinType:f,uin:"",uinLen:0,reqHead:{seqNumber:r,appId:t,appidAtThird:new Uint8Array(0),a2:"",a2Len:0,serviceCmd:l,serviceCmdLen:0,cookie:"",cookieLen:0,imei:"",imeiLen:0,ksid:"",ksidLen:0,clientVersionInfo:"",clientVersionInfoLen:0},busiBuff:i}}function PcA(t,i){const r=new sZ,l=OcA(i,t,Vj);Vj=Vj+1&2147483647,r.writeInt32(0),r.writeInt32(l.version),r.writeByte(l.encryption);const I=new TextEncoder().encode(l.d2);r.writeInt32(I.length+4),I&&r.writeBytes(I),r.writeByte(l.uinType);const h=new TextEncoder().encode(l.uin);r.writeInt32(h.length+4),h.length&&r.writeBytes(h);const f=new sZ;f.writeInt32(0),f.writeInt32(l.reqHead.seqNumber),f.writeInt32(l.reqHead.appId),f.writeByte(l.reqHead.appId>>>24&255),f.writeByte(l.reqHead.appId>>>16&255),f.writeByte(l.reqHead.appId>>>8&255),f.writeByte(255&l.reqHead.appId);for(let WA=4;WA<16;WA++)f.writeByte(0);const w=new TextEncoder().encode(l.reqHead.a2);f.writeInt32(w.length+4),w.length&&f.writeBytes(w);const _=new TextEncoder().encode(l.reqHead.serviceCmd);f.writeInt32(_.length+4),_.length&&f.writeBytes(_);const k=new TextEncoder().encode(l.reqHead.cookie);f.writeInt32(k.length+4),k.length&&f.writeBytes(k);const U=new TextEncoder().encode(l.reqHead.imei);f.writeInt32(U.length+4),U.length&&f.writeBytes(U);const j=new TextEncoder().encode(l.reqHead.ksid);f.writeInt32(j.length+4),j.length&&f.writeBytes(j);const lA=new TextEncoder().encode(l.reqHead.clientVersionInfo);f.writeInt16(lA.length+2),lA.length&&f.writeBytes(lA);const rA=f.length;f.data[0]=rA>>>24&255,f.data[1]=rA>>>16&255,f.data[2]=rA>>>8&255,f.data[3]=255&rA,th(t)&&(t=new TextEncoder().encode(t)),f.writeInt32(t.length+4),t.length&&f.writeBytes(t);let mA=new Uint8Array(f.data),IA=null;l.encryption===1?IA=new TextEncoder().encode(l.uin):l.encryption===2&&(IA=new Uint8Array(16)),IA&&(mA=xcA(mA,IA)),r.writeBytes(mA);const cA=new Uint8Array(r.data),TA=cA.length;return cA[0]=TA>>>24&255,cA[1]=TA>>>16&255,cA[2]=TA>>>8&255,cA[3]=255&TA,cA}function xcA(t,i){const r=t.length;let l=(r+1+AU+eU)%8;l&&(l=8-l);const I=new Uint8Array(r+1+AU+eU+l);let h=0;const f=new Uint8Array(8),w=new Uint8Array(8),_=new Uint8Array(8);let k=0;f[0]=248&Math.floor(256*Math.random())|l,k=1;for(let j=0;j>>=0,I+=(h<<4)+f[0]^h+w^(h>>>5)+f[1],I>>>=0,h+=(I<<4)+f[2]^I+w^(I>>>5)+f[3],h>>>=0;nZ(r,I,l),nZ(r,h,l+4)}var VcA=function(){return new URLSearchParams(location.search).get("trtc_env")||""},JcA=".rtc.qq.com",HcA=function(t){return t.includes(".")?t:`${t}${JcA}`},SY=t=>Number(t)<14e8,VW=function(t,i){let r;return r=SY(t)?McA:ScA,`${r}/v5/AVQualityReportSvc/C2S?random=${Math.floor(Math.random()*2**31)}&sdkappid=${t}&cmdtype=${i}`},VX="unknown";function JW(){KcA();const{userAgent:t,connection:i}=navigator;let r=(t.match(/NetType\/\S+/)||[])[0]||"";r=r.toLowerCase().replace("nettype/",""),r==="3gnet"&&(r="3g");const l=i&&i.type&&i.type.toLowerCase();let I=i&&i.effectiveType&&i.effectiveType.toLowerCase();return I==="slow-2"&&(I="2g"),l?JX(l,I):VX}function qcA(){Wo.warn("netType changed",JW())}var gZ=!1;function KcA(){var t;gZ||(gZ=!0,(t=navigator.connection)==null||t.addEventListener("typechange",qcA))}function JX(t,i){if(PX[t])return t;switch(t){case"cellular":case"wimax":return i||"unknown";case"ethernet":return"wired";default:return"unknown"}}function jcA(t){VX=JX(t)}function WcA(){return PX[JW()]}function zcA(t,i){for(const r of Reflect.ownKeys(i))if(r!=="constructor"&&r!=="prototype"&&r!=="name"){const l=Object.getOwnPropertyDescriptor(i,r)||"";Object.defineProperty(t,r,l)}return t}function ZcA(t,i=48e3){return HX(t/4,i)}function HX(t,i=48e3){return 1e3*t/i}function XcA(t,i=48e3){return 4*qX(t,i)}function qX(t,i=48e3){return t*i/1e3}var $cA=typeof window<"u"&&typeof window.glog=="function"?window.glog:()=>{},qy=()=>{let t=navigator.language;return t=t.substring(0,2),t==="zh"},tT=function(t){if(!t||typeof t!="object"||Object.prototype.toString.call(t)!="[object Object]")return!1;const i=Object.getPrototypeOf(t);if(i===null)return!0;const r=Object.prototype.hasOwnProperty.call(i,"constructor")&&i.constructor;return typeof r=="function"&&r instanceof r&&Function.prototype.toString.call(r)===Function.prototype.toString.call(Object)};function HW(t,i=1,r=1){return t<=1?r:HW(t-1,r,i+r)}function AlA(t){return t>8?3e4:1e3*HW(t)}function Rv(t){return Reflect.apply(Object.prototype.toString,t,[]).replace(/^\[object\s(\w+)\]$/,"$1").toLowerCase()}var Qv=t=>typeof t=="function",$n=t=>t===void 0,th=t=>typeof t=="string",wv=t=>typeof t=="number",pv=t=>typeof t=="boolean",Iv=t=>Rv(t)==="object",$C=t=>Rv(t)==="array",elA=t=>Rv(t)==="MediaStreamTrack".toLowerCase(),tlA=t=>t.isRemote,KX=t=>Rv(t)==="promise",jX=t=>Qv(t)&&t.prototype.constructor===t,ilA=t=>jX(t)?t.prototype.constructor.name:"",olA=typeof AudioWorkletNode<"u",slA=typeof HTMLMediaElement<"u"&&"setSinkId"in HTMLMediaElement.prototype;function nlA(t){return new Promise((i,r)=>{const l=[];t.forEach(I=>{I.then(i).catch(h=>{l.push(h),l.length===t.length&&r(l)})})})}function xc(){return performance&&performance.now?Math.floor(performance.now()):Date.now()}var cZ=t=>+t<10?`0${t}`:t,rlA=t=>{const i=t.match(/^\d+\.\d+\.\d+/)[0];if(!i)return t;const r=i.split("."),l=cZ(r[1])+cZ(r[2]);return r[1]-15>0&&(r[1]="15"),r[2]-15>0&&(r[2]="15"),`${r.join(".")}.${l}`},alA=Object.prototype.hasOwnProperty;function glA(t){if(t==null)return!0;if(typeof t=="boolean")return!1;if(typeof t=="number")return t===0;if(typeof t=="string"||typeof t=="function"||Array.isArray(t))return t.length===0;if(t instanceof Error)return t.message==="";if(tT(t))switch(Object.prototype.toString.call(t)){case"[object File]":case"[object Map]":case"[object Set]":return t.size===0;case"[object Object]":for(const i in t)if(alA.call(t,i))return!1;return!0}return!1}function WX(t,i){return{userId:i,hasAudio:!!(t&tZ),hasVideo:!!(t&eZ),hasAuxiliary:!!(t&NcA),hasSmall:!!(t&TcA),audioMuted:!!(t&iZ),videoMuted:!!(t&oZ),audioAvailable:!(!(t&tZ)||t&iZ),videoAvailable:!(!(t&eZ)||t&oZ),hasDatachannel:!!(t&GcA)}}function clA(t){const i={urls:t.url.startsWith("turn:")||t.url.startsWith("turns:")?t.url:`turn:${t.url}`};return $n(t.username)||$n(t.credential)||(i.username=t.username,i.credential=t.credential,i.credentialType="password",$n(t.credentialType)||(i.credentialType=t.credentialType)),i}function llA(t,i=!0){if(!th(t))return 0;const r=t.split(".");return i?(Number(r[0])<<24|Number(r[1])<<16|Number(r[2])<<8|Number(r[3]))>>>0:(Number(r[3])<<24|Number(r[2])<<16|Number(r[1])<<8|Number(r[0]))>>>0}var zX=function(t,i,r,l){if(!Iv(t)||!Iv(i))return 0;let I=0;const h=Object.keys(i);let f;for(let w=0,_=h.length;w<_;w++)if(f=h[w],!($n(i[f])||r&&r.includes(f)))if(Iv(t[f])&&Iv(i[f]))I+=zX(t[f],i[f],r,l);else{if(l&&l.includes(i[f]))continue;t[f]!==i[f]&&(t[f]=MY(i[f]),I+=1)}return I};function MY(t){if($C(t)){const i=[];return t.forEach((r,l)=>{i[l]=MY(r)}),i}if(Iv(t)){const i={};return Object.keys(t).forEach(r=>{i[r]=MY(t[r])}),i}return t}var IlA=t=>{let i=[];if($C(t))i=[...t];else if(th(t)){const r=document.getElementById(t);r&&i.push(r)}else t&&i.push(t);return i},ulA=t=>th(t)?document.getElementById(t):t,ElA=t=>{const i=r=>r<10?`0${r}`:`${r}`;return`${t.getFullYear()}/${t.getMonth()+1}/${t.getDate()} ${i(t.getHours())}:${i(t.getMinutes())}:${i(t.getSeconds())}`},dlA=()=>ElA(new Date);function Ky(t,{keysToInclude:i,keysToExclude:r}){try{if($C(t))return`[${t.map(f=>Ky(f,{keysToInclude:i,keysToExclude:r})).join(",")}]`;if(!tT(t)||!$C(i)&&!$C(r))return JSON.stringify(t);const l={},I=new Set(i),h=new Set(r);return Object.keys(t).forEach(f=>{(h.size===0&&I.has(f)||I.size===0&&!h.has(f))&&(l[f]=tT(t[f])||$C(t[f])?JSON.parse(Ky(t[f],{keysToExclude:r,keysToInclude:i})):t[f])}),JSON.stringify(l)}catch{return"{}"}}function H3(t,i=!1){const r=[];return Object.keys(t).forEach(l=>{i===t[l]&&r.push(l)}),Ky(t,{keysToInclude:r})}function ClA(t){return t.replace(/[\u4e00-\u9fa5]/g,"aa").length}var ZX=()=>{var t,i,r,l;return(t=window.screen)!=null&&t.orientation?!!((l=(r=(i=window.screen)==null?void 0:i.orientation)==null?void 0:r.type)!=null&&l.includes("portrait")):window.orientation===0||window.orientation===180},hlA=async t=>new Promise((i,r)=>{let l;if(th(t))l=new Image,l.crossOrigin="anonymous",l.src=t;else if(l=t,l.complete)return void i(l);l.onload=()=>i(l),l.onerror=()=>{r(new pl({code:qg.INVALID_PARAMETER,message:`load image failed, url: ${t}`}))}}),XX=t=>{const i=t.split(".");return+i[0]<<24|+i[1]<<16|+i[2]<<8|+i[3]},$X=t=>(Object.keys(t).forEach(i=>{wv(t[i])&&(i.startsWith("uint")||i.startsWith("int"))?t[i]=Math.floor(t[i]):(tT(t[i])||$C(t[i]))&&$X(t[i])}),t);function iT(t,i){return new Promise(r=>{const l=setTimeout(r,t);i&&i(l)})}function A7(t,i){let r=null;return function(...l){return r||(r=t.apply(i||this,l),r.finally(()=>r=null),r)}}function BlA(t){return t.replace(/(^|[^:])\/{2,}/g,"$1/")}function QlA(t){var i;try{const{width:r,height:l,frameRate:I,sampleRate:h,sampleSize:f,channelCount:w}=(i=t.getSettings)==null?void 0:i.call(t),_=t.kind===zt.AUDIO?`${h}x${f}@${w}`:`${r}x${l}@${I}`,k=t.stats?` stats: ${JSON.stringify(t.stats).replaceAll('"',"")}`:"";return`${t.id} ${t.readyState} muted:${t.muted} ${t.kind} ${t.label} ${_}${k}`}catch{return""}}function e7(t,i){return t.width*t.height===i.width*i.height?1:ZX()&&i.width>i.height&&t.height>i.width?Math.max(t.width/i.height,t.height/i.width,1):Math.max(t.width/i.width,t.height/i.height,1)}function t7(t){return t===90||t===270}async function plA(t){return new Promise((i,r)=>{const l=document.createElement("video");l.crossOrigin="anonymous",l.src=t,l.muted=!0,l.loop=!0,l.playsInline=!0,l.play().then(()=>i(l)),l.onerror=()=>{r(l.error)}})}function q3(t,i=new WeakMap){if(typeof t!="object"||t===null)return t;if(i.has(t))return i.get(t);if(Array.isArray(t)){const r=[];return i.set(t,r),t.forEach((l,I)=>{r[I]=q3(l,i)}),r}if(Object.prototype.toString.call(t)==="[object Object]"){const r={};return i.set(t,r),Reflect.ownKeys(t).forEach(l=>{r[l]=q3(t[l],i)}),r}return t}var i7=(t=>(t[t.END_REPORT=2001]="END_REPORT",t[t.LOG=2002]="LOG",t[t.KEY_METRIC_REPORT=2003]="KEY_METRIC_REPORT",t))(i7||{});function mlA(t,i,r,l){let I={data:t,random:Math.floor(Math.random()*2147483648),sdkAppId:r};return $n(l)||(I=sB(Rn({},I),{gzip:+l})),{uint32_sdkappid:0,uint64_from_uin:0,uint32_timestamp:0,uint32_seq:0,msg_common_info:{msg_device_info:{enum_device_type:0,str_device_brand:"",str_device_model:"",str_device_board:"",str_device_cpu_abi:""},msg_system_info:{enum_os_type:0,str_os_version:"",msg_network_info:0},msg_network_info:{enum_network_type:0}},msg_report_content:{uint32_type:i,bytes_report_data:JSON.stringify(I)}}}function qW(t,i,r,l){try{const I=mlA(t,i,r,l);return PcA(Y3(I),r)}catch{return JSON.stringify(t)}}function flA(t,i){const r=new Uint8Array(t.byteLength+i.byteLength);return r.set(new Uint8Array(t),0),r.set(new Uint8Array(i),t.byteLength),r.buffer}function ylA(t){return(65535&t)>>>0}function DlA(t){return(4294901760&t)>>>0}function KW(t){return!!(t&&t instanceof CanvasCaptureMediaStreamTrack&&t.canvas.id.includes("trtc_mix"))}function SlA(t){const i=MlA(t);return i?.busiBuff}function MlA(t){try{const i={};let r=0;i.totalLength=nd(t,r),r+=4,i.version=nd(t,r),r+=4,i.encryption=rZ(t,r),r+=1,i.uinType=rZ(t,r),r+=1,i.uinLength=nd(t,r),r+=4,i.uin=i.uinLength>4?QL(t,r,i.uinLength-4):"",r+=i.uinLength-4;const l=t.slice(r);if(i.encryption===2){const I=new Uint8Array(16).fill(0);t=vlA(l,I),i.decrypted=!0,r=0}else t=l,r=0;return i.rspHeadLength=nd(t,r),r+=4,i.seqNo=nd(t,r),r+=4,i.retCode=nd(t,r),r+=4,i.retStrLength=nd(t,r),r+=4,i.retStr=i.retStrLength?QL(t,r,i.retStrLength-4):"",r+=i.retStrLength-4,i.serviceCmdLength=nd(t,r),r+=4,i.serviceCmd=i.serviceCmdLength?QL(t,r,i.serviceCmdLength-4):"",r+=i.serviceCmdLength-4,i.cookieLength=nd(t,r),r+=4,i.cookie=i.cookieLength?QL(t,r,i.cookieLength-4):"",r+=i.cookieLength-4,i.flag=nd(t,r),r+=4,i.busiBuffLength=nd(t,r),r+=4,i.busiBuff=i.busiBuffLength?QL(t,r,i.busiBuffLength-4):"",r+=i.busiBuffLength-4,i}catch{}}function o7(t,i){let r=t[0]<<24|t[1]<<16|t[2]<<8|t[3],l=t[4]<<24|t[5]<<16|t[6]<<8|t[7];r>>>=0,l>>>=0;let I=V3*J3>>>0;for(let h=0;h>>5)+i[3],l>>>=0,r-=(l<>>5)+i[1],r>>>=0,I-=V3,I>>>=0;return new Uint8Array([r>>>24&255,r>>>16&255,r>>>8&255,255&r,l>>>24&255,l>>>16&255,l>>>8&255,255&l])}function vlA(t,i){let r=0;const l=new Uint8Array(8).fill(0);let I=o7(new Uint8Array(t.slice(0,8)),i);const h=7&I[0],f=t.length-1-h-AU-eU,w=new Uint8Array(f);let _=0,k=l,U=t.slice(0,8);r=8;let j=1;j+=h;for(let rA=1;rA<=AU;)if(j<8)j++,rA++;else if(j===8){const mA=Hj(t,r,k,U,I,i);k=mA.ivPreCrypt,U=mA.ivCurCrypt,I=mA.debiBuf,r=mA.bufPos,j=0}let lA=f;for(;lA>0;)if(j<8)w[_++]=I[j]^k[j],j++,lA--;else if(j===8){const rA=Hj(t,r,k,U,I,i);k=rA.ivPreCrypt,U=rA.ivCurCrypt,I=rA.debiBuf,r=rA.bufPos,j=0}for(let rA=1;rA<=eU;)if(j<8)I[j],k[j],j++,rA++;else if(j===8){if(r>=t.length)break;const mA=Hj(t,r,k,U,I,i);if(!mA.success)break;k=mA.ivPreCrypt,U=mA.ivCurCrypt,I=mA.debiBuf,r=mA.bufPos,j=0}return w}function Hj(t,i,r,l,I,h){if(i+8>t.length)return{success:!1};const f=new Uint8Array(l),w=t.slice(i,i+8),_=new Uint8Array(8);for(let k=0;k<8;k++)_[k]=I[k]^w[k];return{success:!0,ivPreCrypt:f,ivCurCrypt:w,debiBuf:o7(_,h),bufPos:i+8}}var lZ=typeof TextDecoder<"u"?new TextDecoder:void 0;function s7({url:t,body:i,method:r="POST",timeout:l,priority:I}){return new Promise((h,f)=>{if("fetch"in window)return fetch(t,{method:r,body:i,priority:I}).then(_=>_.clone().json().then(k=>({data:k}),()=>_.arrayBuffer().then(k=>({data:SlA(new Uint8Array(k))||(lZ?lZ.decode(k):k)})))).then(h,f);const w=new XMLHttpRequest;w.onreadystatechange=()=>{if(w.readyState===4)if(w.status>=200&&w.status<300)try{const _=JSON.parse(w.response);h({data:_})}catch{h({data:w.response})}else f({status:w.status,statusText:w.statusText||"request failed!"})},w.timeout=l||5e3,w.open(r,t,!0),w.send(i)})}var RlA=Object.prototype.hasOwnProperty,T_=t=>typeof t=="function",p_=t=>t===void 0,wlA=t=>typeof t=="boolean",qj=t=>t.isRemote,_lA=function(t){if(!t||typeof t!="object"||Object.prototype.toString.call(t)!="[object Object]")return!1;const i=Object.getPrototypeOf(t);if(i===null)return!0;const r=Object.prototype.hasOwnProperty.call(i,"constructor")&&i.constructor;return typeof r=="function"&&r instanceof r&&Function.prototype.toString.call(r)===Function.prototype.toString.call(Object)};function TlA(t){if(t==null)return!0;if(typeof t=="boolean")return!1;if(typeof t=="number")return t===0;if(typeof t=="string"||typeof t=="function"||Array.isArray(t))return t.length===0;if(t instanceof Error)return t.message==="";if(_lA(t))switch(Object.prototype.toString.call(t)){case"[object File]":case"[object Map]":case"[object Set]":return t.size===0;case"[object Object]":for(const i in t)if(RlA.call(t,i))return!1;return!0}return!1}var NlA=0,GlA=1,IZ=2;function blA({retryFunction:t,settings:i,onError:r,onRetrying:l,onRetryFailed:I,onRetrySuccess:h,context:f}){return function(...w){const{retries:_=5,timeout:k=1e3}=i;let U=0,j=-1,lA=NlA;const rA=async(mA,IA)=>{const cA=f||this;try{const TA=await t.apply(cA,w);U>0&&h&&h.call(this,U),U=0,mA(TA)}catch(TA){const WA=()=>{clearTimeout(j),U=0,lA=IZ,IA(TA)},ge=()=>{lA!==IZ&&U<(T_(_)?_():_)?(U++,lA=GlA,T_(l)&&l.call(this,U,WA),j=window.setTimeout(()=>{j=-1,rA(mA,IA)},T_(k)?k(U):k)):(WA(),T_(I)&&I.call(this,TA))};T_(r)?r.call(this,{error:TA,retry:ge,reject:IA,retryFuncArgs:w,retriedCount:U}):ge()}};return new Promise(rA)}}var jW=blA,Kj=class n7{constructor(i){de(this,"_parentPath"),de(this,"userId"),de(this,"remoteUserId"),de(this,"id"),de(this,"sdkAppId"),de(this,"type"),de(this,"isLocal"),this.id=i.id,this.userId=i.userId,this.sdkAppId=i.sdkAppId,this.remoteUserId=i.remoteUserId,this.isLocal=!wlA(i.isLocal)||i.isLocal,this.type=this.isLocal?"":i.type}getFullId(){return this._parentPath&&this.id?`${this._parentPath}-${this.id}`:this._parentPath?this._parentPath:this.id}createChild(i){const r=new n7({id:i.id,userId:p_(i.userId)?this.userId:i.userId,sdkAppId:p_(i.sdkAppId)?this.sdkAppId:i.sdkAppId,type:p_(i.type)?this.type:i.type,isLocal:p_(i.isLocal)?this.isLocal:i.isLocal,remoteUserId:p_(i.remoteUserId)?this.remoteUserId:i.remoteUserId});return r.bindParent(this),r}bindParent(i){const r=i.getFullId();this._parentPath!==r&&(this.debug(`bind logger parent: ${i.id}`),this._parentPath=r,this.userId=i.userId||this.userId,this.sdkAppId=i.sdkAppId||this.sdkAppId)}setUserId(i){this.userId=i}setSdkAppId(i){this.sdkAppId=i}log(i,r){const l=this.isLocal?this.userId:this.remoteUserId,I=this.getFullId();r.unshift(`[${this.isLocal?"↑":"↓"}${this.type&&this.type!=="main"?"*":""}${I}${l?`|${l}`:""}]`),Wo.log(i,r,p_(this.userId)||TlA(this.userId),this.userId,this.sdkAppId)}info(...i){this.log(2,i)}debug(...i){this.log(1,i)}warn(...i){this.log(3,i)}error(...i){this.log(4,i)}},RQ=typeof navigator>"u"?"":navigator.userAgent,Ys=t=>new RegExp(t,"i").test(RQ),Qc=t=>{if(Ys(t)){const i=new RegExp(`${t}\\/([\\d.]+)`),r=RQ.match(i);if(r&&r[1])return r[1]}return""},IV=t=>{if(Ys(t)){const i=new RegExp(`${t}\\/(\\d+)`),r=RQ.match(i);if(r&&r[1])return parseFloat(r[1])}return NaN},uZ=/AppleWebKit\/([\d.]+)/i.exec(RQ);uZ&&parseFloat(uZ[1]);var WW=Ys("iPad"),r7=typeof navigator<"u"&&navigator.maxTouchPoints&&navigator.maxTouchPoints>2&&Ys("Macintosh"),uV=Ys("iPhone")&&!WW,klA=Ys("iPod"),Du=uV||WW||klA||r7,vY=()=>{try{return Du&&navigator.maxTouchPoints>1&&navigator.vendor.includes("Apple")}catch{return Du}},rC=Ys("Android"),a7=function(){if(rC){const t=RQ.match(/Android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i);if(t){const i=t[1]&&parseFloat(t[1]),r=t[2]&&parseFloat(t[2]);if(i&&r)return parseFloat(`${t[1]}.${t[2]}`);if(i)return i}}return NaN}();rC&&Ys("webkit")&&a7<2.3;var oC=Ys("Firefox"),g7=Qc("Firefox"),c7=IV("Firefox"),PU=Ys("Edge"),l7=Qc("Edge"),EV=Ys("Edg"),I7=Qc("Edg"),LlA=IV("Edg"),zW=Ys("SogouMobileBrowser"),u7=Qc("SogouMobileBrowser"),ZW=Ys("MetaSr\\s"),E7=Qc("MetaSr\\s"),hm=Ys("TBS"),d7=Qc("TBS"),IT=Ys("XWEB"),C7=Qc("XWEB");Ys("MSIE\\s8\\.0");var UlA=Ys("MSIE\\/\\d+");(function(){if(UlA){const t=/MSIE\s(\d+)\.\d/.exec(RQ);let i=t&&parseFloat(t[1]);return!i&&/Trident\/7.0/i.test(RQ)&&/rv:11.0/.test(RQ)&&(i=11),i}return NaN})();var xU=Ys("(micromessenger|webbrowser)"),h7=Qc("MicroMessenger"),dV=!hm&&Ys("MQQBrowser")&&Ys("COVC"),CV=!hm&&Ys("MQQBrowser")&&!Ys("COVC"),RY=CV||dV?Qc("MQQBrowser"):"",XW=!hm&&Ys(" QQBrowser"),B7=Qc(" QQBrowser"),$W=!hm&&Ys("QQBrowserLite"),Q7=Qc("QQBrowserLite"),A4=!hm&&Ys("MQBHD"),p7=Qc("MQBHD"),m7=Ys("Windows"),hV=!Du&&Ys("MAC OS X"),f7=!rC&&Ys("Linux"),y7=Ys("CrOS");Ys("MicroMessenger");var FlA=Ys("UCBrowser");Ys("Electron");var e4=Ys("MiuiBrowser"),D7=Qc("MiuiBrowser"),t4=Ys("HuaweiBrowser"),S7=Ys("Huawei")||Ys("HUAWEI"),OlA=Ys("Honor")||Ys("HONOR"),M7=Qc("HuaweiBrowser"),i4=Ys("SamsungBrowser"),v7=Qc("SamsungBrowser"),BV=Ys("HeyTapBrowser"),R7=Qc("HeyTapBrowser"),o4=Ys("VivoBrowser"),w7=Qc("VivoBrowser"),s4=Ys("OpenHarmony");Qc("OpenHarmony");var _7=()=>IV("Chrome"),wY=Ys("CriOS"),Xy=Ys("Chrome"),n4=!PU&&!ZW&&!zW&&!hm&&!IT&&!EV&&!XW&&!e4&&!t4&&!i4&&!BV&&!o4&&Xy,PlA=Ys("HeadlessChrome"),$y=_7(),jj=Xy&&$y>=128&&$y<=143,T7=Qc("Chrome");IV("Electron");var ad=!Xy&&!CV&&!dV&&!$W&&!A4&&Ys("Safari"),N7=ad||Du,YU=Qc("Version"),SQ=(()=>{if(r7)return YU;if(Du){const t=RQ.match(/OS (\d+)_(\d+)/i);if(t&&t[1]){let i=t[1];return t[2]&&(i+=`.${t[2]}`),i}}return""})();function xlA(t,i){const r=t.split(".").map(I=>Number(I)),l=i.split(".").map(I=>Number(I));for(let I=0;If)return!1}return!1}function G7(t,i,r=!1){const l=t.split(".").map(h=>Number(h)),I=i.split(".").map(h=>Number(h));for(let h=0;hw)return!0;if(f{const t=Number(SQ.split(".")[0]);return t===14||t===13})(),JlA=wY&&YU==="11.1.1",_Y=typeof location<"u"&&(location.protocol==="file:"||location.hostname==="localhost"||location.hostname==="127.0.0.1"),m_=(()=>{let t;return()=>{if(t===void 0)try{t=!!window.localStorage}catch{t=!1}return t}})(),mv=HlA();function HlA(){const t=new Map([[oC,["Firefox",g7]],[EV,["Edg",I7]],[n4,["Chrome",T7]],[wY,["ChiOS",Qc("CriOS")]],[ad&&!wY,["Safari",YU]],[hm,["TBS",d7]],[IT,["XWEB",C7]],[xU&&uV,["WeChat",h7]],[XW,["QQ(Win)",B7]],[CV,["QQ(Mobile)",RY]],[dV,["QQ(Mobile X5)",RY]],[$W,["QQ(Mac)",Q7]],[A4,["QQ(iPad)",p7]],[e4,["MI",D7]],[t4,["HW",M7]],[i4,["Samsung",v7]],[BV,["OPPO",R7]],[o4,["VIVO",w7]],[PU,["EDGE",l7]],[zW,["SogouMobile",u7]],[ZW,["Sogou",E7]]]);let i="unknown",r="unknown";return t.has(!0)&&([i,r]=t.get(!0)),{name:i,version:r}}function qlA(){return rC||Du||uV||WW||s4}var KlA="";function b7(){return jlA()||""}function jlA(){const t=RQ.match(/;\s*([^;)]+)\s+Build\//);return t?.[1]?t[1].trim():null}var EZ=new Map([[rC,"Android"],[Du,"iOS"],[m7,"Windows"],[hV,"MacOS"],[f7,"Linux"],[y7,"ChromeOS"]]),k7=function(){return EZ.get(!0)?EZ.get(!0):"unknown"};function r4(){return m7?1:rC?2:hV?3:Du?4:f7?5:y7?6:s4?7:0}function WlA(){return xU||IT?4:Xy?1:ad?2:oC?3:0}var L7=()=>{let t=k7();return Du?t+=`/${SQ}`:rC&&(t+=`/${a7}`),t+=`/${mv.name}/${ad&&!wY?mv.version:mv.version.split(".")[0]}`,t},zlA=lT(FU()),ZlA=new zlA.default,ps=ZlA,U7=(t=>(t.ROOM_DESTROY="1",t.JOIN_START="21",t.JOIN_SCHEDULE_SUCCESS="22",t.JOIN_SIGNAL_CONNECTION_START="23",t.JOIN_SIGNAL_CONNECTION_END="24",t.JOIN_SEND_CMD="25",t.JOIN_RECEIVED_CMD_RES="26",t.JOIN_SUCCESS="27",t.JOIN_FAILED="28",t.LEAVE_START="51",t.LEAVE_SEND_CMD="52",t.LEAVE_SUCCESS="53",t.PUBLISH_START="61",t.SEND_FIRST_VIDEO_FRAME="62",t.PUBLISH_FAILED="63",t.SUBSCRIBE_START="81",t.SUBSCRIBE_SUCCESS="82",t.SUBSCRIBE_FAILED="84",t.UNSUBSCRIBE_SUCCESS="83",t.LOCAL_TRACK_CAPTURE_START="101",t.LOCAL_TRACK_CAPTURE_SUCCESS="102",t.LOCAL_TRACK_CAPTURE_FAILED="103",t.LOCAL_TRACK_PUBLISHED="104",t.LOCAL_TRACK_UNPUBLISHED="105",t.LOCAL_TRACK_REPLACED="106",t.SWITCH_DEVICE_SUCCESS="107",t.TRACK_MUTED="108",t.TRACK_UNMUTED="109",t.REMOTE_TRACK_SUBSCRIBED="110",t.REMOTE_TRACK_UNSUBSCRIBED="111",t.LOCAL_TRACK_RECAPTURE="112",t.LOCAL_AUDIO_STARTED="113",t.LOCAL_AUDIO_STOPPED="114",t.REMOTE_AUDIO_STARTED="115",t.REMOTE_AUDIO_STOPPED="116",t.LOCAL_TRACK_STOPPED="117",t.LOCAL_VIDEO_TRACK_PREPROCESSED="118",t.PLAY_TRACK_START="151",t.PLAYER_STATE_CHANGED="152",t.VIDEO_LOADED_DATA="153",t.AUTOPLAY_DIALOG_CLICK_CONFIRM="154",t.AUDIO_CONTEXT_LONG_SUSPENDED="155",t.REMOTE_VIDEO_PLAY_START="156",t.REMOTE_VIDEO_PLAY_FINISH="157",t.SIGNAL_CONNECTION_STATE_CHANGED="201",t.PEER_CONNECTION_STATE_CHANGED="202",t.SINGLE_CONNECTION_STAT="203",t.SPC_RECONNECTED="204",t.HEARTBEAT_REPORT="251",t.RECEIVED_PUBLISHED_USER_LIST="252",t.REMOTE_PUBLISH_STATE_CHANGED="253",t.AUDIO_LEVEL_INTERVAL="260",t.NETWORK_QUALITY="261",t.VIDEO_CODEC_IMPLEMENTATION_CHANGED="262",t.QUALITY_LIMITATION_CHANGED="263",t.LOG="264",t.AUDIO_PROCESSOR_DEBUG="265",t.SSO_SWITCH="266",t.SEI_MESSAGE="267",t.USER_PAUSE_IN_PIP="268",t.USER_RESUME_IN_PIP="269",t.ENTER_PICTURE_IN_PICTURE="270",t.LEAVE_PICTURE_IN_PICTURE="271",t.SWITCH_ROOM_START="401",t.SWITCH_ROOM_SUCCESS="407",t.SWITCH_ROOM_FAILED="408",t))(U7||{}),mn=U7,XlA=class{constructor(){de(this,"enable",!1),de(this,"ssoFailCount",0),ps.on("22",({schedule:t})=>{var i;(i=t?.config)!=null&&i.sso&&ps.emit("266",{enable:!0})}),ps.on("266",({enable:t})=>{this.enable=t})}handleUploadFailed(){this.ssoFailCount++,this.ssoFailCount>3&&ps.emit("266",{enable:!1})}},K3=new XlA,$lA="%cTRTC%c%s",AIA="padding: 1px 4px;border-radius: 3px;color: #fff;background: #1E88E5;",eIA="display: inline",F7=class O7{constructor(){de(this,"_isEnableUploadLog",!0),de(this,"_localJoinedUser",new Map),de(this,"_queue",[]),de(this,"_timeoutId",-1),de(this,"_logLevel",1),de(this,"_logLevelToUpload",2),UX||FX||(this.checkURLParam(),this.installEvents())}get isAbleToUpload(){return this._isEnableUploadLog&&this._timeoutId!==-1}installEvents(){ps.on(mn.JOIN_SCHEDULE_SUCCESS,({schedule:i})=>{var r;(r=i?.config)!=null&&r.logLevelToUpload&&w_[i.config.logLevelToUpload]&&(this._logLevelToUpload=i.config.logLevelToUpload)}),ps.on(mn.JOIN_START,({params:i})=>{this.addJoinedUser({userId:i.userId,sdkAppId:i.sdkAppId}),this.startUpload()}),ps.on(mn.LEAVE_SUCCESS,({room:i})=>{this.deleteJoinedUser(i.userId)})}startUpload(){this._timeoutId===-1&&this.uploadInterval()}addJoinedUser(i){this._localJoinedUser.set(i.userId,i),this.startUpload()}deleteJoinedUser(i){this._localJoinedUser.delete(i)}uploadInterval(){this.upload().catch(()=>{}),this._timeoutId=window.setTimeout(()=>this.uploadInterval(),5e3)}getLogsToUpload(){const i={map:new Map,splicedQueue:[]};if(this._queue[0].forAllJoinedClients&&this._localJoinedUser.size===0)return i;let r=0;for(;r{i.map.has(I)?i.map.get(I).logs.push(l):i.map.set(I,{userId:I,sdkAppId:h,logs:[l]})});else if(th(l.userId)&&wv(l.sdkAppId)){const{userId:I,sdkAppId:h}=l;i.map.has(I)?i.map.get(I).logs.push(l):i.map.set(I,{userId:I,sdkAppId:h,logs:[l]})}}return i.map.size>0&&(i.splicedQueue=this._queue.splice(0,r)),i}async upload(){if(this._queue.length===0||!this._isEnableUploadLog)return;const{map:i,splicedQueue:r}=this.getLogsToUpload();if(i.size===0)return;try{const I=[...i.values()];for(let h=0;hlA.log).join(` +`)},U=JSON.stringify(k),j=K3.enable?qW(k,2002,w):U;await this.uploadLogWithRetry(j,w,j instanceof Uint8Array,U),_.forEach(lA=>lA.uploaded=!0)}}catch{}const l=r.filter(I=>!I.uploaded);l.length>0&&(this._queue=l.concat(this._queue))}uploadLogWithRetry(i,r,l,I){return jW({retryFunction:()=>s7({url:VW(r,OX.LOG),body:i,timeout:5e3,priority:"low"}).then(h=>{l&&h.data!=="ok"&&(K3.handleUploadFailed(),this.uploadLogWithRetry(I,r,!1,I))}),settings:{retries:3,timeout:2e3},onError:({retry:h})=>{h()}})()}getPrefix(i){const r=new Date;return r.setTime(YW()),`[${fcA(r)}] <${w_[i]}>`}getLogLevel(){return this._logLevel}setLogLevel(i){$n(w_[i])||(this._logLevel!==i&&this.info("setLogLevel",i),this._logLevel=i)}enableUploadLog(){this._isEnableUploadLog=!0}disableUploadLog(){this.warn("disableUploadLog"),this._isEnableUploadLog=!1}logChunkToString(i){if(th(i))return i;try{return i instanceof Error?i.toString():JSON.stringify(i)}catch{return""}}addLogToQueue(i,r,l=!0,I,h){const f={log:r.reduce((w,_)=>`${w} ${this.logChunkToString(_)}`.trim(),""),level:i,userId:I,sdkAppId:h,forAllJoinedClients:l};ps.emit(mn.LOG,{log:f}),this._isEnableUploadLog&&i>=this._logLevelToUpload&&this._queue.push(f)}log(i,r,l=!0,I,h){var f;if(r.unshift(this.getPrefix(i)),this.addLogToQueue(i,r,l,I,h),i{const i=16*Math.random()|0;return(t=="x"?i:3&i|8).toString(16)})},P7=iIA,oIA=class{constructor(){de(this,"_prefix","TRTC"),de(this,"_queue",new Map)}getRealKey(t){return`${this._prefix}_${t}`}checkStorage(){m_()&&(setInterval(this.doFlush.bind(this),2e4),Object.keys(localStorage).filter(t=>{if(t.startsWith(this._prefix))try{const i=localStorage.getItem(t);if(!i)return!1;const r=JSON.parse(i);if(r&&r.expiresInlocalStorage.removeItem(t)))}doFlush(){if(m_())try{for(const[t,i]of this._queue)localStorage.setItem(t,JSON.stringify(i))}catch(t){Wo.warn(t)}}getItem(t){if(!m_())return null;try{const i=localStorage.getItem(this.getRealKey(t));if(!i)return null;const r=JSON.parse(i);return r&&r.expiresIn>=Date.now()?r.value:null}catch(i){Wo.warn(i)}}setItem(t,i){if(m_())try{const r={expiresIn:Date.now()+RcA,value:i};this._queue.set(this.getRealKey(t),r)}catch(r){Wo.warn(r)}}deleteItem(t){if(!m_())return!1;try{return t=this.getRealKey(t),this._queue.delete(t),localStorage.removeItem(t),!0}catch(i){return Wo.warn(i),!1}}clear(){if(m_())try{localStorage.clear()}catch(t){Wo.warn(t)}}},x7=new oIA,sIA={};PW(sIA,{HTTPS_API:()=>BIA,IS_GET_CAPABILITIES_FROM_INPUTDEVICE_SUPPORTED:()=>t$,IS_GET_CAPABILITIES_SUPPORTED:()=>e$,IS_GET_SETTINGS_SUPPORTED:()=>GY,IS_GET_SYNCHRONIZATION_SOURCES_SUPPORTED:()=>vIA,IS_INSERTABLE_STREAM_SUPPORTED:()=>i$,IS_JITTER_BUFFER_TARGET_SUPPORTED:()=>GIA,IS_RTC_RTP_SENDER_SUPPORTED:()=>VU,IS_SCRIPT_TRANSFORM_SUPPORTED:()=>o$,IS_SEI_SUPPORTED:()=>RIA,IS_SPC_SUPPORTED:()=>yIA,basis:()=>_IA,capabilityCheck:()=>TIA,checkSystemRequirementsInternal:()=>H7,decodeSupportStatus:()=>J7,detectH264SupportedByFakeStreaming:()=>q7,detectVideoCodecCapabilities:()=>bIA,detectVideoDecoderCapabilities:()=>c$,detectVideoEncoderCapabilities:()=>g$,encodeSupportStatus:()=>l4,getBrowserInfo:()=>lIA,getDisplayResolution:()=>K7,getH264ProfileLevelIds:()=>l$,isAddTransceiverSupported:()=>pV,isBrowserSupported:()=>a4,isCanvasCaptureStreamAPISupported:()=>z7,isCanvasSmallStreamSupported:()=>Z7,isGetReceiversSupported:()=>mIA,isGetSendersSupported:()=>A$,isGetTransceiversSupported:()=>fIA,isGetUserMediaSupported:()=>j7,isMediaDevicesSupported:()=>c4,isMediaSessionSupported:()=>n$,isMediaStreamTrackGeneratorSupported:()=>uIA,isMediaStreamTrackProcessorSupported:()=>IIA,isReplaceTrackSupported:()=>SIA,isRequestVideoFrameCallbackSupported:()=>E4,isSIMDSupported:()=>wIA,isScaleResolutionDownBySupported:()=>X7,isScreenCaptureApiAvailable:()=>I4,isSelectedCandidatePair:()=>QIA,isSetParametersSupported:()=>MIA,isSetSinkIdSupported:()=>CIA,isSmallStreamSupported:()=>$7,isStopTransceiverSupported:()=>DIA,isTRTCSupported:()=>dIA,isUnifiedPlanDefault:()=>pIA,isUsedInHttpProtocol:()=>QV,isWebAudioSupported:()=>W7,isWebCodecSupported:()=>s$,isWebCodecsSupported:()=>g4,isWebRTCSupported:()=>u4,isWebTransportSupported:()=>r$});var TY={PLAY_FAILED:"PLAY_FAILED",NOT_SUPPORTED_HTTP:"NOT_SUPPORTED_HTTP",MICROPHONE_NOT_FOUND:"MICROPHONE_NOT_FOUND",CAMERA_NOT_FOUND:"CAMERA_NOT_FOUND"},U_={AVOID_REPEATED_CALL:t=>`previous ${t.name}() is ongoing, please avoid repeated calls.`,INVALID_PARAMETER_REQUIRED:({key:t,rule:i,fnName:r,value:l})=>`'${t||i.name}' is a required param when calling ${r}(), received: ${l}.`,INVALID_PARAMETER_TYPE({key:t,rule:i,fnName:r,value:l}){const I=`${t||i.name}`;let h="";return h=Array.isArray(i.type)?i.type.join("|"):i.type,`'${I}' must be type of ${h} when calling ${r}(), received type: ${Rv(l)}.`},INVALID_PARAMETER_EMPTY:({key:t,rule:i,fnName:r,value:l})=>`'${t||i.name}' cannot be '${l}' when calling ${r}().`,INVALID_PARAMETER_INSTANCE:({key:t,rule:i,fnName:r,value:l})=>`'${`${t||i.name}`}' must be instanceof ${`${i.instanceOf.name||i.instanceOf}`} when calling ${r}(), received type: ${Rv(l)}.`,INVALID_PARAMETER_RANGE:({key:t,rule:i,fnName:r,value:l})=>`'${t||i.name}' must be one of ${i.values.join("|")} when calling ${r}(), received: ${l}.`,INVALID_PARAMETER_MIN:({key:t,rule:i,fnName:r,value:l})=>`the min value of ${t||i.name} is ${i.min}, received: ${l}.`,INVALID_PARAMETER_MAX:({key:t,rule:i,fnName:r,value:l})=>`the max value of ${t||i.name} is ${i.max}, received: ${l}.`,API_CALL_TIMEOUT:t=>`${t.commandDesc||t.command} timeout observed.`,SIGNAL_CHANNEL_RECONNECTION_FAILED:"signal channel reconnection failed, please check your network.",SIGNAL_CHANNEL_SETUP_FAILED:t=>`SignalChannel setup failure: (errorCode: ${t.errorCode}, errorMsg: ${t.errorMsg} }).`,ERROR_MESSAGE(t){let i=`${t.type} failed`;return t.message&&(i=`${i}: ${t.message}.`),i},EXCHANGE_SDP_TIMEOUT:"exchange sdp timeout.",DOWNLINK_RECONNECTION_FAILED:"downlink reconnection failed, please check your network and re-join room.",EXCHANGE_SDP_FAILED:t=>`exchange sdp failed ${t.errMsg}.`,UPDATE_OFFER_TIMEOUT:"update offer timeout observed.",UPLINK_RECONNECTION_FAILED:"uplink reconnection failed, please check your network and publish again.",INVALID_RECORDID:"recordId must be an integer number.",INVALID_PURE_AUDIO:"pureAudioPushMode must be 1 or 2.",INVALID_STREAMID:"streamId must be a sting literal within 64 bytes, and not be empty.",INVALID_USER_DEFINE_RECORDID:"userDefineRecordId must be a sting literal contains (a-zA-Z),(0-9), underline and hyphen, within 64 bytes, and not be empty.",INVALID_USER_DEFINE_PUSH_ARGS:"userDefinePushArgs must be a sting literal within 256 bytes, and not be empty.",INVALID_PROXY:'proxy server url must start with "wss://".',INVALID_JOIN:"duplicate join() called.",INVALID_ROOMID_STRING:t=>`'${t}' must be validate string when useStringRoomId is true.`,INVALID_ROOMID_INTEGER:t=>`'${t}' must be an integer between [1, 4294967294] when useStringRoomId is false.`,INVALID_SIGNAL_CHANNEL:"SignalChannel is not ready yet.",JOIN_ROOM_TIMEOUT:"join room timeout.",JOIN_ROOM_FAILED:({error:t,code:i})=>`Failed to join room - ${t} code: ${i}`,REJOIN_ROOM_FAILED:t=>`reJoin room: ${t.roomId} failed, please check your network.`,INVALID_DESTROY:"please call leave() before destroy().",INVALID_PUBLISH:"please call join() before publish().",INVALID_UNPUBLISH:"stream has not been published yet.",INVALID_AUDIENCE:'no permission to publish() under live/audience, please call switchRole("anchor") firstly before publish().',INVALID_INITIALIZE:"cannot publish stream because stream is not initialized, is switching device, or has been closed.",INVALID_DUPLICATE_PUBLISHING:t=>`duplicate ${t} stream publishing, please unpublish your prev ${t} stream and then re-publish.`,INVALID_SUBSCRIBE_UNDEFINED:"stream is undefined or null.",INVALID_SUBSCRIBE_LOCAL:"stream cannot be LocalStream.",INVALID_REMOTE_STREAM:"remoteStream does not exist because it has been unpublished by remote peer.",SUBSCRIBE_FAILED:({message:t,userId:i,streamType:r})=>`failed to subscribe ${i} ${r} stream, reason: ${t}.`,INVALID_ROLE:"switchRole can only be called in live mode.",INVALID_PARAMETER_SWITCH_ROLE:"role could only be set to a value as anchor or audience.",INVALID_OPERATION_SWITCH_ROLE:"please call join() before switchRole().",SWITCH_ROLE_TIMEOUT:"switchRole timeout.",SWITCH_ROLE_FAILED:t=>`switchRole failed, errCode: ${t.code} errMsg: ${t.message}.`,CLIENT_BANNED:t=>`client was banned because of ${t.message}.`,INVALID_OPERATION_START_PUBLISH_CDN:"please call startPublishCDNStream() after join room and publish the local stream.",INVALID_OPERATION_STOP_PUBLISH_CDN:"please call startPublishCDNStream() before stopPublishCDNStream().",START_PUBLISH_CDN_FAILED:t=>`startPublishCDNStream failed, errMsg: ${t.message}.`,STOP_PUBLISH_CDN_FAILED:t=>`stopPublishCDNStream failed, errMsg: ${t.message}.`,INVALID_STREAM_ID:t=>`'${t}' can only consist of uppercase and lowercase english letters (a-zA-Z), numbers (0-9), hyphens and underscores.`,START_MIX_TRANSCODE:"please call startMixTranscode() after join().",STOP_MIX_TRANSCODE:"please call stopMixTranscode() after startMixTranscode().",INVALID_AUDIO_VOLUME:"interval must be a number.",ENABLE_SMALL_STREAM_PUBLISHED:"Cannot enable small stream after localStream published.",DISABLE_SMALL_STREAM_PUBLISHED:"Cannot disable small stream after localStream published.",NOT_SUPPORTED_SMALL_STREAM:"your browser does not support opening small stream.",INVALID_SMALL_STREAM_PROFILE:"small stream profile is invalid.",INVALID_PARAMETER_REMOTE_STREAM:"remoteStream is invalid.",INVALID_OPERATION_CHANGE_SMALL:"cannot switch to the small stream without subscribing to the video of remoteStream.",REMOTE_NOT_PUBLISH_SMALL_STREAM:"remote peer does not publish small stream.",INVALID_SWITCH_DEVICE:"cannot switch device on current stream.",INVALID_SWITCH_DEVICE_PUBLISHING:"cannot switch device when publishing localStream.",INVALID_REPLACE_TRACK:"cannot replace track when publishing localStream.",INVALID_INITIALIZE_LOCAL_STREAM:"local stream has not initialized yet.",INVALID_ADD_TRACK_REPETITIVE:"previous addTrack is ongoing, please avoid repetitive execution.",INVALID_ADD_TRACK_REMOVING:"cannot add track when a track is removing.",INVALID_ADD_TRACK_PUBLISHING:"cannot add track when publishing localStream.",INVALID_STREAM_INITIALIZED:"your local stream haven't been initialized yet.",INVALID_ADD_TRACK_NUMBER:"a Stream has at most one audio track and one video track.",INVALID_REMOVE_AUDIO_TRACK:"remove audio track is not supported on your browser.",INVALID_REMOVE_AUDIO_ADDING:"cannot remove track when a track is adding.",INVALID_REMOVE_AUDIO_ON:"previous removeTrack is ongoing, please avoid repetitive execution.",INVALID_REMOVE_TRACK_PUBLISHING:"cannot remove track when publishing localStream.",INVALID_REMOVE_TRACK_NOT_TRACK:"localStream has not this track.",INVALID_REMOVE_TRACK_NUMBER:"remove the only video track is not supported, please use replaceTrack or muteVideo.",INVALID_REPLACE_TRACK_NO_TRACK:t=>`cannot replace ${t.kind} track because stream has not ${t.kind} track`,NOT_BUG_PACKAGE:"You need to buy packages, refer to tencent console.",START_MIX_TRANSCODE_FAILED:t=>`startMixTranscode failed, errMsg: ${t.message}.`,STOP_MIX_TRANSCODE_FAILED:t=>`stopMixTranscode failed, errMsg: ${t.message}.`,MIX_TRANSCODE_NOT_STARTED:"mixTranscode has not been started.",CANNOT_LESS_THAN_ZERO:({key:t,rule:i,fnName:r,value:l})=>`'${t||i.name}' cannot be less than 0 when calling ${r}().`,MIX_PARAMS_VIDEO_FRAMERATE:"'config.videoFramerate' should be an integer between 0 and 30, excluding 0.",MIX_PARAMS_VIDEO_GOP:"'config.videoGOP' should be an integer between 1 and 8.",MIX_PARAMS_AUDIO_BITRATE:"'config.audioBitrate' should be an integer between 32 and 192.",MIX_PARAMS_USER_Z_ORDER:t=>`'${t}' is required and must be between 1 and 15.`,MIX_PARAMS_NOT_SELF:"'config.mixUsers' must contain self.",MIX_PARAMS_USER_STREAM:"'config.videoWidth' and 'config.videoHeight' of output stream should be contain all mix stream.",INVALID_PLAY:"duplicate play() call observed, please stop() firstly.",INVALID_ELEMENT_ID:({key:t,fnName:i})=>`'${t}' is not found in the document object when calling ${i}().`,INVALID_ELEMENT_ID_TYPE:({key:t,fnName:i,type:r})=>`the element corresponding to '${t}' must be instanceof HTMLElement when calling ${i}(), received: ${r}.`,PLAY_FAILED:t=>`${t.media} play failed, browser exception: ${t.error.toString()}`,INVALID_USERID:"userId cannot be all spaces.",INVALID_CREATE_STREAM_SOURCE:"LocalStream must be created by createStream() with either audio/video or audioSource/videoSource, but can not be mixed with audio/video and audioSource/videoSource.",INVALID_CREATE_STREAM_SCREEN:"screen/video cannot be both true.",INVALID_CREATE_STREAM_AUDIO:"audio/screenAudio cannot be both true.",INVALID_CREATE_STREAM_SCREEN_AUDIO:"when screen is true, screenAudio can be configured.",NOT_SUPPORTED_HTTP:"http protocol does not support the ability to capture microphone, camera and screen. please use https to deploy your page.",NOT_SUPPORTED_WEBRTC:"your browser or environment does not support full WebRTC capabilities.",NOT_SUPPORTED_PROFILE:"your browser does not support setVideoProfile.",NOT_SUPPORTED_MEDIA:"your browser or environment does not support navigator.mediaDevices.",NOT_SUPPORTED_H264ENCODE:"your device does not support H.264 encoding.",NOT_SUPPORTED_H264DECODE:"your device does not support H.264 decoding.",NOT_SUPPORTED_TRACK:t=>`${t}Track is not supported on your browser.`,NOT_SUPPORTED_SWITCH_DEVICE:"switchDevice is not supported on your browser.",NOT_SUPPORTED_CAPTURE:"Your browser or environment does not support screen sharing, please check whether the browser version.",MICROPHONE_NOT_FOUND:"no microphone detected, please check your microphone.",CAMERA_NOT_FOUND:"no camera detected, please check your camera.",SIGNAL_RESPONSE_FAILED:t=>`${t.signalResponse} failed, response code is ${t.code} , errMsg: ${t.message}.`,CATCH_HANDLER_ERROR:({name:t,event:i})=>`an error was caught in ${t}.on('${i}', handler), please check your code in 'handler'.`,API_NOT_EXIST:({name:t})=>`experimental api ${t} does not exist.`,REPEAT_JOIN:t=>"please avoid repeated join.",CONNECTION_CLOSED:"remoteStream has been unsubscribed or unpublished by remote user.",SUBSCRIBE_ALL_FALSE:"cannot subscribe when both audio & video are false, use client.unsubscribe() instead",CLIENT_DESTROYED:({funName:t})=>`failed to call ${t}() because client was destroyed.`,SEI_NOT_SUPPORT:t=>"not support to sendSEIMessage"+(t===!1?" without using h264 codec":""),SEI_DISABLED:"SEI is disabled",SEI_BEFORE_PUBLISH:"please call sendSEIMessage() after publish() success",SEI_NOT_VIDEO:"cannot send sei when localStream has not video.",CALL_FREQUENCY_LIMIT:({isSize:t,name:i,timesInSecond:r,maxSizeInSecond:l})=>`api ${i} call ${t?"size":"times"} is over ${t?`${l} bytes`:r} in a second.`,CONNECTION_ABORTED:t=>`connection aborted due to: ${t}`,API_CALL_ABORTED(t){let i;return i=t.message.includes("REMOTE_STREAM_NOT_EXIST")?`Subscribe ${t.userId} ${t.streamType} stream aborted, reason: remote user ${t.userId} unpublished stream.`:`API aborted, reason: ${t.message}`,i},DUPLICATE_AUX:"only one auxiliary stream can be published in a room.",NOT_SUPPORTED_AUX:"publish auxiliary stream is not supported on your browser.",INVALID_PARAMETER_STREAMTYPE:t=>`'streamType' is required when 'userId' is not '*', calling ${t}()`,SWITCH_PLAYBACK_QUALITY_TIMEOUT:t=>`switchPlaybackQuality timeout: waiting for first frame of user ${t.userId}.`},dZ=(t,i)=>i?`${F3}/${t}/${i}`:`${F3}/${t}/index.html`,nIA=()=>{if(window.TRTC_ERROR_INFO&&window.TRTC_ERROR_LINK)return{TRTC_ERROR_INFO:window.TRTC_ERROR_INFO,TRTC_ERROR_LINK:window.TRTC_ERROR_LINK};let t=localStorage==null?void 0:localStorage.getItem(vcA);if(t){t=JSON.parse(t);const i=document.createElement("script");i.type="text/javascript",i.text=t.message,document.body.appendChild(i);const r=window.TRTC_ERROR_INFO,l=window.TRTC_ERROR_LINK;return document.body.removeChild(i),{TRTC_ERROR_INFO:r,TRTC_ERROR_LINK:l}}return{}};function NY(t){const{key:i,data:r,link:l,addDocLink:I=!0}=t;let h="",f="",w="";Qv(U_[i])?h=U_[i](r):th(U_[i])&&(h=U_[i]);const{TRTC_ERROR_INFO:_,TRTC_ERROR_LINK:k}=nIA();l?w=`${l.className}.html#${l.fnName}`:k&&k[i]&&(Qv(k[i])?w=k[i](r):th(k[i])&&(w=k[i]));let U=h;return qy()&&(_&&_[i]&&(Qv(_[i])?f=_[i](r):th(_[i])&&(f=_[i])),f&&(U=I?`${f} +请查看文档: ${dZ("zh-cn",w)} `:`${f} -`,F+=B)),u&&(F+=` -Refer to: ${N8("en",w)} -`),F}var G8=W_(RgA()),mlA=1,flA=0,s7=class{constructor(t=!0){de(this,"countMap",new Map),de(this,"distributionMap",new Map),de(this,"version"),de(this,"log",jo.createLogger({id:"kv"})),t&&(ps.on("102",({track:i,cost:r})=>{this.addSuccessEvent({key:i.kind===zt.AUDIO?501700:511700,cost:r})}),ps.on("103",({track:i,error:r})=>{this.addFailedEvent({key:i.kind===zt.AUDIO?501700:511700,error:r})}),ps.on("266",({enable:i})=>{this.log.info((i?"enable":"disable")+" sso"),i?this.addSuccessEvent({key:525701}):this.addFailedEvent({key:525701})}))}getReportData(t,i){const r={msg_sdk_basic_info:{uint32_sdk_version:dX(this.version||AY),uint32_terminal_type:15,bytes_device_name:"",bytes_os_version:"",uint32_framework:30,uint32_network_type:0},stats_count:[...this.countMap.entries()].map(([l,u])=>({uint32_key:l,uint32_count:u})),stats_distribution:[...this.distributionMap.entries()].map(([l,u])=>({uint32_key:l,distribution_items:[...u.entries()].map(([B,f])=>({uint32_item_key:B,uint32_item_value:f}))})),str_user_sig:t,bytes_report_token:i};return this.countMap.clear(),this.distributionMap.clear(),r}clear(){this.countMap.clear(),this.distributionMap.clear()}isEnumKey(t){const i=+String(t).slice(-3);return i>=700&&i<799}isErrorCodeKey(t){const i=+String(t).slice(-3);return i>=600&&i<699}isCountKey(t){const i=+String(t).slice(-3);return i>=0&&i<599}isNumberKey(t){const i=+String(t).slice(-3);return i>=800&&i<899}addCount({key:t,useUV:i=!1}){this.isCountKey(t)?i&&this.countMap.has(t)||this.countMap.set(t,(this.countMap.get(t)||0)+1):this.log.debug(`${t} is not count key, last 3 number should be 0~599`)}addEnum({key:t,value:i,useUV:r=!0}){var l;if(!this.isEnumKey(t))return this.log.debug(`${t} is not enum key, last 3 number should be 700~799`);if(r&&this.countMap.has(t))return;this.countMap.set(t,(this.countMap.get(t)||0)+1);const u=((l=this.distributionMap)==null?void 0:l.get(t))||new Map;u.set(i,(u.get(i)||0)+1),this.distributionMap.set(t,u)}addNumber({key:t,value:i,split:r=100,useUV:l=!1,max:u=5e3}){var B;if(!this.isNumberKey(t))return this.log.debug(`${t} is not number key, last 3 number should be 800~899`);if(l&&this.countMap.has(t))return;i>u&&(i=u),this.countMap.set(t,(this.countMap.get(t)||0)+1);const f=((B=this.distributionMap)==null?void 0:B.get(t))||new Map;let w=0;if(Qv(r))w=Math.floor(i/r);else for(let _=r.length-1;_>0;_--)if(i>r[_]){w=_;break}f.set(w,(f.get(w)||0)+1),this.distributionMap.set(t,f)}addSuccessEvent({key:t,cost:i,timeKey:r,split:l}){if(t&&(this.addEnum({key:t,value:mlA,useUV:!1}),i)){const u=+String(t).slice(-3);u<800&&u>=700?this.addNumber({key:r||t+100,value:i,split:l}):r||this.log.debug(`time stat ignored, ${t}`)}}addFailedEvent({key:t,error:i}){if(!t)return;let r=qg.UNKNOWN;i&&(Qv(i)?r=i:$n(i.extraCode)&&$n(i.code)||(r=i.extraCode||i.code)),this.addEnum({key:t,value:flA,useUV:!1}),this.addEnum({key:t,value:Math.abs(r),useUV:!1})}},n7=(t=>(t[t.DECODER_TYPE=514700]="DECODER_TYPE",t[t.DECODER_HW_SW=514701]="DECODER_HW_SW",t[t.DECODE_RESULT=514702]="DECODE_RESULT",t[t.DECODE_FAILED_OS=514703]="DECODE_FAILED_OS",t[t.DOWNGRADE_RESULT=514704]="DOWNGRADE_RESULT",t[t.DOWNGRADE_WEBCODECS_VIDEO=514705]="DOWNGRADE_WEBCODECS_VIDEO",t[t.DOWNGRADE_WEBCODECS_2D=514706]="DOWNGRADE_WEBCODECS_2D",t[t.DOWNGRADE_WASM_WEGBL=514707]="DOWNGRADE_WASM_WEGBL",t[t.DOWNGRADE_WASM_VIDEO=514708]="DOWNGRADE_WASM_VIDEO",t[t.DOWNGRADE_WASM_2D=514709]="DOWNGRADE_WASM_2D",t[t.DECODE_H264_RESULT=514710]="DECODE_H264_RESULT",t[t.DECODE_H265_RESULT=514711]="DECODE_H265_RESULT",t[t.DECODE_VP8_RESULT=514712]="DECODE_VP8_RESULT",t[t.DECODE_CAPABILITIES=514713]="DECODE_CAPABILITIES",t[t.H264_PROFILE_LEVEL_ID_HIGH=514714]="H264_PROFILE_LEVEL_ID_HIGH",t[t.H264_PROFILE_LEVEL_ID_MAIN=514715]="H264_PROFILE_LEVEL_ID_MAIN",t[t.RENDER_FREEZE_RATE=514850]="RENDER_FREEZE_RATE",t[t.DATA_FREEZE_RATE=514851]="DATA_FREEZE_RATE",t[t.VIDEO_CONSUME_RENDER_RATE=514852]="VIDEO_CONSUME_RENDER_RATE",t))(n7||{}),ylA=new s7(!0);new s7(!1);var lr=ylA,Xs={result:!1,detail:{isBrowserSupported:!1,isWebRTCSupported:!1,isWebCodecsSupported:!1,isMediaDevicesSupported:!1,isScreenShareSupported:!1,isSmallStreamSupported:!1,isH264EncodeSupported:!1,isVp8EncodeSupported:!1,isH265EncodeSupported:!1,isH264DecodeSupported:!1,isVp8DecodeSupported:!1,isH265DecodeSupported:!1}},DlA=new Map([[$d,["Firefox",MX]],[PY,["Edg",wX]],[MW,["Chrome",jX]],[od,["Safari",QU]],[um,["TBS",NX]],[z_,["XWEB",GX]],[BU&&OY,["WeChat",bX]],[BW,["QQ(Win)",kX]],[YY,["QQ(Mobile)",oY]],[xY,["QQ(Mobile X5)",oY]],[QW,["QQ(Mac)",LX]],[pW,["QQ(iPad)",UX]],[mW,["MI",xX]],[fW,["HW",VX]],[yW,["Samsung",JX]],[JY,["OPPO",HX]],[DW,["VIVO",qX]],[hU,["EDGE",RX]],[CW,["SogouMobile",_X]],[hW,["Sogou",TX]]]);function SlA(){const t=DlA.get(!0);return{browserName:t?t[0]:"unknown",browserVersion:t?t[1]:"unknown"}}var RW=function(){return!XcA&&!hU&&!(PY&&zcA<80)&&!($d&&vX<56)},wW=function(){return["VideoDecoder","VideoEncoder","AudioEncoder","AudioDecoder"].every(t=>t in window)},_W=function(){if(!navigator.mediaDevices)return HY()||jo.error(M_.NOT_SUPPORTED_MEDIA),!1;const t=["getUserMedia","enumerateDevices"];return t.filter(i=>i in navigator.mediaDevices).length===t.length},b8=!1;function HY(){return location.protocol==="http:"&&!nY&&(b8||jo.error(aY({key:rY.NOT_SUPPORTED_HTTP})),b8=!0,!0)}var MlA=function(){return window?.OffscreenCanvas&&window?.MediaStreamTrackProcessor&&window?.MediaStreamTrackGenerator},vlA=function(){return!!window?.MediaStreamTrackGenerator},TW=async function(){var t,i,r;if(Xs.detail.isH264EncodeSupported&&Xs.detail.isVp8EncodeSupported)return{isH264EncodeSupported:Xs.detail.isH264EncodeSupported,isVp8EncodeSupported:Xs.detail.isVp8EncodeSupported,isH265EncodeSupported:Xs.detail.isH265EncodeSupported};let l,u=!1,B=!1,f=!1;try{const w=new RTCPeerConnection,_=document.createElement(zt.CANVAS);_.getContext("2d");const k=_.captureStream(0);return w.addTrack(k.getVideoTracks()[0],k),l=await w.createOffer(),u=((t=l.sdp)==null?void 0:t.toLowerCase().indexOf("h264"))!==-1,B=((i=l.sdp)==null?void 0:i.toLowerCase().indexOf("vp8"))!==-1,f=((r=l.sdp)==null?void 0:r.toLowerCase().indexOf("h265"))!==-1,w.close(),{isH264EncodeSupported:u,isVp8EncodeSupported:B,isH265EncodeSupported:f}}catch{return{isH264EncodeSupported:!1,isVp8EncodeSupported:!1,isH265EncodeSupported:!1}}},r7=async function(){var t;if(Xs.detail.isH264DecodeSupported&&Xs.detail.isVp8DecodeSupported)return{isH264DecodeSupported:Xs.detail.isH264DecodeSupported,isVp8DecodeSupported:Xs.detail.isVp8DecodeSupported,isH265DecodeSupported:Xs.detail.isH265DecodeSupported};let i,r=!1,l=!1;try{const u=new RTCPeerConnection;qY()?(u.addTransceiver(zt.VIDEO,{direction:"recvonly"}),i=await u.createOffer()):i=await u.createOffer({offerToReceiveVideo:!0}),i.sdp.toLowerCase().indexOf("h264")!==-1&&(r=!0),i.sdp.toLowerCase().indexOf("vp8")!==-1&&(l=!0);const B=((t=i.sdp)==null?void 0:t.toLowerCase().indexOf("h265"))!==-1;return u.close(),{isH264DecodeSupported:r,isVp8DecodeSupported:l,isH265DecodeSupported:B}}catch{return{isH264DecodeSupported:!1,isVp8DecodeSupported:!1,isH265DecodeSupported:!1}}};async function RlA(){const[t,i]=await Promise.all([TW(),r7()]);return{encode:{h264:t.isH264EncodeSupported,vp8:t.isVp8EncodeSupported,h265:t.isH265EncodeSupported},decode:{h264:i.isH264DecodeSupported,vp8:i.isVp8DecodeSupported,h265:i.isH265DecodeSupported}}}var a7=hX(async t=>{const i=Date.now(),r=GW(),l=_W(),u=wW();if(Xs.detail.isWebRTCSupported=r,Xs.detail.isMediaDevicesSupported=l,Xs.detail.isWebCodecsSupported=u,Xs.detail.isScreenShareSupported=NW(),Xs.detail.isSmallStreamSupported=C7(),t===37)return Object.assign(Xs.detail,await TlA()),Xs.detail.isBrowserSupported=u,Xs.result=l&&u,Xs.result||jo.error(`${navigator.userAgent} ${C3(Xs.detail,!1)}`),U8(t),lr.addNumber({key:523800,value:Date.now()-i}),Xs;if(Xs.result&&Xs.detail.isH264EncodeSupported&&Xs.detail.isVp8EncodeSupported&&Xs.detail.isH265EncodeSupported&&Xs.detail.isH264DecodeSupported&&Xs.detail.isVp8DecodeSupported&&Xs.detail.isH265DecodeSupported)return Xs;const B=RW(),{encode:f,decode:w}=await RlA();let{h264:_,vp8:k}=f,{h264:F}=w;const{h265:j}=f,{vp8:IA,h265:rA}=w;if(!_||!k){const pA=await TW();jo.warn(`detect encode again h264:${_} vp8:${k} result: ${JSON.stringify(pA)}`),_=pA.isH264EncodeSupported,k=pA.isVp8EncodeSupported}if(_&&F&&tC&&Hy&&!z_&&!um&&(!JY||qy!==115)){const{encode:pA,decode:lA}=await g7();_=pA,F=lA}return Xs.result=B&&r&&l&&(_||k)&&(F||IA),Xs.detail.isBrowserSupported=B,Xs.detail.isWebRTCSupported=r,Xs.detail.isH264EncodeSupported=_,Xs.detail.isVp8EncodeSupported=k,Xs.detail.isH265EncodeSupported=j,Xs.detail.isH264DecodeSupported=F,Xs.detail.isVp8DecodeSupported=IA,Xs.detail.isH265DecodeSupported=rA,Xs.result||jo.error(`${navigator.userAgent} ${C3(Xs.detail,!1)}`),U8(),lr.addNumber({key:523800,value:Date.now()-i}),Xs}),wlA=function(){return Xs.result},NW=function(){return!(!navigator.mediaDevices||!navigator.mediaDevices.getDisplayMedia)},_lA=typeof HTMLMediaElement<"u"&&"setSinkId"in HTMLMediaElement.prototype,k8=null;async function g7(t=2e3){return k8||(k8=new Promise(async i=>{const r={encode:!1,decode:!1};let l=()=>{};try{const u=document.createElement("canvas"),B=u.getContext("2d");u.width=640,u.height=480;const f=setInterval(()=>{B.fillText("test",Math.floor(640*Math.random()),Math.floor(480*Math.random()))},66);let w=-1,_=-1;l=()=>{clearInterval(w),clearInterval(f),clearTimeout(_),F.close(),j.close(),k.getTracks().forEach(cA=>cA.stop())},_=setTimeout(()=>{l(),i(r)},t);const k=u.captureStream(),F=new RTCPeerConnection({}),j=new RTCPeerConnection({offerToReceiveAudio:!0,offerToReceiveVideo:!0});F.addEventListener("icecandidate",cA=>j.addIceCandidate(cA.candidate)),j.addEventListener("icecandidate",cA=>F.addIceCandidate(cA.candidate)),F.addTrack(k.getVideoTracks()[0],k);const IA=await F.createOffer();await F.setLocalDescription(IA),await j.setRemoteDescription(IA);const rA=await j.createAnswer(),pA=G8.default.parse(rA.sdp),lA=pA.media[0].rtp.findIndex(cA=>cA.codec==="H264");pA.media[0].rtp=[pA.media[0].rtp[lA]],pA.media[0].fmtp=pA.media[0].fmtp.filter(cA=>cA.payload===pA.media[0].rtp[0].payload),pA.media[0].rtcpFb&&(pA.media[0].rtcpFb=pA.media[0].rtcpFb.filter(cA=>cA.payload===pA.media[0].rtp[0].payload)),rA.sdp=G8.default.write(pA),await j.setLocalDescription(rA),await F.setRemoteDescription(rA),w=setInterval(async()=>{r.encode&&r.decode&&(l(),i(r));const[cA,TA]=await Promise.all([F.getSenders()[0].getStats(),j.getReceivers()[0].getStats()]);r.encode||cA.forEach(WA=>{WA.type==="outbound-rtp"&&(WA.mediaType===zt.VIDEO||WA.kind===zt.VIDEO)&&WA.bytesSent>0&&(r.encode=!0)}),r.decode||TA.forEach(WA=>{WA.type==="inbound-rtp"&&(WA.mediaType===zt.VIDEO||WA.kind===zt.VIDEO)&&WA.bytesReceived>0&&(r.decode=!0)})},100)}catch(u){l(),jo.warn("detectH264Supported failed",u),i({encode:!0,decode:!0})}}).then(i=>(i.encode||(i.decode=!0),i.encode&&i.decode||jo.warn(`detectH264Supported encode: ${i.encode} decode: ${i.decode} ${rlA}`),i)))}var L8=null;async function TlA(){return L8||(L8=new Promise(async t=>{const i={isH264EncodeSupported:!1,isH264DecodeSupported:!1,isVp8EncodeSupported:!1,isVp8DecodeSupported:!1};if(!wW())return void t(i);let r=null,l=null,u=null;const B=()=>{u&&clearTimeout(u),r=null,l=null};try{r=document.createElement("canvas"),l=r.getContext("2d"),r.width=320,r.height=240;let f=0;const w=()=>{l&&r&&(l.fillStyle=`hsl(${f%360}, 50%, 50%)`,l.fillRect(0,0,r.width,r.height),l.fillStyle="white",l.font="20px Arial",l.fillText(`Frame ${f}`,10,30),f++)};u=setTimeout(()=>{B(),t(i)},5e3);const _=[{type:"h264",encodeConfig:{codec:"avc1.42E01E",avc:{format:"annexb"},width:320,height:240,bitrate:1e6},decodeConfig:{codec:"avc1.42E01E",avc:{format:"annexb"}}},{type:"vp8",encodeConfig:{codec:"vp8",width:320,height:240,bitrate:1e6},decodeConfig:{codec:"vp8"}}];(await Promise.all(_.map(async k=>{const F={type:k.type,encodeSupported:!1,decodeSupported:!1};let j;try{j=await new Promise(async(IA,rA)=>{try{const pA=new VideoEncoder({output:cA=>{IA(cA),F.encodeSupported=!0},error:rA});pA.configure(k.encodeConfig),w();const lA=new VideoFrame(r,{timestamp:0});pA.encode(lA,{keyFrame:!0}),lA.close(),await pA.flush(),pA.close()}catch(pA){rA(pA)}})}catch(IA){return jo.warn(`${k.type} encoder error:`,IA),F}try{await new Promise(async(IA,rA)=>{try{const pA=new VideoDecoder({output:lA=>{F.decodeSupported=!0,IA(0),lA.close()},error:rA});pA.configure(k.decodeConfig),pA.decode(j),await pA.flush(),pA.close()}catch(pA){rA(pA)}})}catch(IA){jo.warn(`${k.type} decoder error:`,IA)}return F}))).forEach(k=>{k.type==="h264"?(i.isH264EncodeSupported=k.encodeSupported,i.isH264DecodeSupported=k.decodeSupported):k.type==="vp8"&&(i.isVp8EncodeSupported=k.encodeSupported,i.isVp8DecodeSupported=k.decodeSupported)}),B(),t(i)}catch(f){B(),jo.warn("detectWebCodecsSupported failed:",f),t(i)}}))}var NlA=(t,i,r)=>{location.protocol!=="http:"||nY||(t[i]=()=>{throw new Ql({code:qg.INVALID_OPERATION,message:M_.NOT_SUPPORTED_HTTP})})},GlA=function(t){return!(t.type!=="candidate-pair"||!t.nominated||t.state!=="in-progress"&&t.state!=="succeeded")&&!(cv(t.selected)&&!t.selected)};function c7(){let t="";return screen.width&&(t+=`${screen.width?screen.width*window.devicePixelRatio:""} * ${screen.height?screen.height*window.devicePixelRatio:""}`),t}function l7(){return navigator.getUserMedia||navigator.mediaDevices&&navigator.mediaDevices.getUserMedia}function I7(){const t={isSupported:!1},i=["AudioContext","webkitAudioContext","mozAudioContext","msAudioContext"];for(let r=0;r=86,m7="RTCRtpScriptTransform"in window,YlA=pU&&(p7||m7),GW=function(){return["RTCPeerConnection","webkitRTCPeerConnection","RTCIceGatherer"].filter(t=>t in window).length>0};function f7(){const t={AudioDecoder:!1,AudioEncoder:!1,VideoDecoder:!1,VideoEncoder:!1,ImageDecoder:!1};return $n(window.AudioDecoder)||(t.AudioDecoder=!0),$n(window.AudioEncoder)||(t.AudioEncoder=!0),$n(window.VideoDecoder)||(t.VideoDecoder=!0),$n(window.VideoEncoder)||(t.VideoEncoder=!0),$n(window.ImageDecoder)||(t.ImageDecoder=!0),t}function y7(){return"mediaSession"in navigator&&!$n(navigator.mediaSession.setActionHandler)}function D7(){return!$n(window.WebTransport)}function VlA(){return typeof WebAssembly<"u"&&WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11]))}function JlA(){const t={browser:`${lv.name}/${lv.version}`,os:XX(),displayResolution:c7(),isScreenShareSupported:NW(),isWebRTCSupported:GW(),isGetUserMediaSupported:l7(),isWebAudioSupported:I7(),isWebSocketsSupported:"WebSocket"in window&&window.WebSocket.CLOSING===2,isWebCodecSupported:f7(),isMediaSessionSupported:y7(),isWebTransportSupported:D7()};return navigator.userAgent.includes("miniProgram")&&(t.browser=`mini/${t.browser}`),t}var S7="checkResult";function U8(t=30){o7.setItem(S7+t,{ua:navigator.userAgent,checkResult:Xs})}function HlA(t){HY();const i=o7.getItem(S7+t);i&&i.ua===navigator.userAgent&&i.checkResult&&qlA(i.checkResult.detail,Xs.detail)&&(Xs=i.checkResult),a7(t)}function qlA(t,i){return!!ov(t)&&Object.keys(i).every(r=>r in t)}function bW(){return"requestVideoFrameCallback"in HTMLVideoElement.prototype}var KlA="RTCRtpReceiver"in window&&"jitterBufferTarget"in window.RTCRtpReceiver.prototype;function F8(t){return{h264:1,h265:2,vp8:3,vp9:4,av1:5}[t]}var O8=!1;async function jlA(){var t;try{if(O8||!((t=navigator?.mediaCapabilities)!=null&&t.encodingInfo))return;const i=vW(),r=glA();if(i===0||r===0)return;O8=!0;const l=["H264","VP8","VP9","AV1","H265"],[u,B]=await Promise.all([M7(l),v7(l)]);u&&Object.keys(u).forEach(_=>{const k=F8(_.toLowerCase());lr.addEnum({key:513707,value:+`${k}${+u[_].supported}${+u[_].powerEfficient}${i}${r}`,useUV:!1})}),B&&Object.keys(B).forEach(_=>{const k=F8(_.toLowerCase());lr.addEnum({key:514713,value:+`${k}${+B[_].supported}${+B[_].powerEfficient}${i}${r}`,useUV:!1})});const{sender:f,receiver:w}=R7();lr.addEnum({key:513708,value:+`${i}${r}${+f.high}`,useUV:!1}),lr.addEnum({key:513709,value:+`${i}${r}${+f.main}`,useUV:!1}),lr.addEnum({key:514714,value:+`${i}${r}${+w.high}`,useUV:!1}),lr.addEnum({key:514715,value:+`${i}${r}${+w.main}`,useUV:!1})}catch(i){jo.info("detectVideoCodecCapabilities failed",i)}}async function M7(t,i=1920,r=1080,l=30,u=3e3){const B={};try{for(const f of t){const w=await navigator.mediaCapabilities.encodingInfo({type:"webrtc",video:{contentType:`video/${f}`,width:i,height:r,bitrate:u,framerate:l}});B[f]=w}}catch{}return B}async function v7(t,i=1920,r=1080,l=30,u=3e3){const B={};try{for(const f of t){const w=await navigator.mediaCapabilities.decodingInfo({type:"webrtc",video:{contentType:`video/${f}`,width:i,height:r,bitrate:u,framerate:l}});B[f]=w}}catch{}return B}function R7(){const t={sender:{base:!1,main:!1,high:!1},receiver:{base:!1,main:!1,high:!1}};try{if(RTCRtpSender&&typeof RTCRtpSender.getCapabilities=="function"){const i=RTCRtpSender.getCapabilities("video");i&&i.codecs&&i.codecs.filter(r=>r.mimeType.toLowerCase()==="video/h264").forEach(r=>{if(r.sdpFmtpLine){const l=r.sdpFmtpLine.match(/profile-level-id=([0-9a-fA-F]+)/);if(l&&l[1])switch(l[1].slice(0,2)){case"42":t.sender.base=!0;break;case"4d":t.sender.main=!0;break;case"64":t.sender.high=!0}}})}if(RTCRtpReceiver&&typeof RTCRtpReceiver.getCapabilities=="function"){const i=RTCRtpReceiver.getCapabilities("video");i&&i.codecs&&i.codecs.filter(r=>r.mimeType.toLowerCase()==="video/h264").forEach(r=>{if(r.sdpFmtpLine){const l=r.sdpFmtpLine.match(/profile-level-id=([0-9a-fA-F]+)/);if(l&&l[1])switch(l[1].slice(0,2)){case"42":t.receiver.base=!0;break;case"4d":t.receiver.main=!0;break;case"64":t.receiver.high=!0}}})}}catch(i){jo.warn("get H264 profile levelId failed",i)}return t}var WlA=W_(dU()),P8=Symbol("instance"),d1=Symbol("cacheResult"),pj=class{constructor(t,i,r){this.oldState=t,this.newState=i,this.action=r,this.aborted=!1}abort(t){this.aborted=!0,FL.call(t,this.oldState,new Error(`action '${this.action}' aborted`))}toString(){return`${this.action}ing`}},mj=class extends Error{constructor(t,i,r){super(i),this.state=t,this.message=i,this.cause=r}};function zlA(t){return typeof t=="object"&&t&&"then"in t}var UL=new Map;function Bu(t,i,r={}){return(l,u,B)=>{const f=r.action||u;if(!r.context){const _=UL.get(l)||[];UL.has(l)||UL.set(l,_),_.push({from:t,to:i,action:f})}const w=B.value;B.value=function(..._){let k=this;if(r.context&&(k=Xn.get(typeof r.context=="function"?r.context.call(this,..._):r.context)),k.state===i)return r.sync?k[d1]:Promise.resolve(k[d1]);k.state instanceof pj&&k.state.action==r.abortAction&&k.state.abort(k);let F=null;Array.isArray(t)?t.length==0?k.state instanceof pj&&k.state.abort(k):typeof k.state=="string"&&t.includes(k.state)||(F=new mj(k._state,`${k.name} ${f} to ${i} failed: current state ${k._state} not from ${t.join("|")}`)):t!==k.state&&(F=new mj(k._state,`${k.name} ${f} to ${i} failed: current state ${k._state} not from ${t}`));const j=cA=>{if(r.fail&&r.fail.call(this,cA),r.sync){if(r.ignoreError)return cA;throw cA}return r.ignoreError?Promise.resolve(cA):Promise.reject(cA)};if(F)return j(F);const IA=k.state,rA=new pj(IA,i,f);FL.call(k,rA);const pA=cA=>{var TA;return k[d1]=cA,rA.aborted||(FL.call(k,i),(TA=r.success)===null||TA===void 0||TA.call(this,k[d1])),cA},lA=cA=>(FL.call(k,IA,cA),j(cA));try{const cA=w.apply(this,_);return zlA(cA)?cA.then(pA).catch(lA):r.sync?pA(cA):Promise.resolve(pA(cA))}catch(cA){return lA(new mj(k._state,`${k.name} ${f} from ${t} to ${i} failed: ${cA}`,cA instanceof Error?cA:new Error(String(cA))))}}}}var ZlA=typeof window<"u"&&window.__AFSM__?(r,l)=>{window.dispatchEvent(new CustomEvent(r,{detail:l}))}:typeof importScripts<"u"?(r,l)=>{postMessage({type:r,payload:l})}:()=>{};function FL(t,i){const r=this._state;this._state=t;const l=t.toString();t&&this.emit(l,r),this.emit(Xn.STATECHANGED,t,r,i),this.updateDevTools({value:t,old:r,err:i instanceof Error?i.message:String(i)})}var Xn=class VC extends WlA.default{constructor(i,r,l){super(),this.name=i,this.groupName=r,this._state=VC.INIT,i||(i=Date.now().toString(36)),l?Object.setPrototypeOf(this,l):l=Object.getPrototypeOf(this),r||(this.groupName=this.constructor.name);const u=l[P8];u?this.name=u.name+"-"+u.count++:l[P8]={name:this.name,count:0},this.updateDevTools({diagram:this.stateDiagram})}get stateDiagram(){const i=Object.getPrototypeOf(this),r=UL.get(i)||[];let l=new Set,u=[],B=[];const f=new Set,w=Object.getPrototypeOf(i);UL.has(w)&&(w.stateDiagram.forEach(k=>l.add(k)),w.allStates.forEach(k=>f.add(k))),r.forEach(({from:k,to:F,action:j})=>{typeof k=="string"?u.push({from:k,to:F,action:j}):k.length?k.forEach(IA=>{u.push({from:IA,to:F,action:j})}):B.push({to:F,action:j})}),u.forEach(({from:k,to:F,action:j})=>{f.add(k),f.add(F),f.add(j+"ing"),l.add(`${k} --> ${j}ing : ${j}`),l.add(`${j}ing --> ${F} : ${j} 🟢`),l.add(`${j}ing --> ${k} : ${j} 🔴`)}),B.forEach(({to:k,action:F})=>{l.add(`${F}ing --> ${k} : ${F} 🟢`),f.forEach(j=>{j!==k&&l.add(`${j} --> ${F}ing : ${F}`)})});const _=[...l];return Object.defineProperties(i,{stateDiagram:{value:_},allStates:{value:f}}),_}static get(i){let r;return typeof i=="string"?(r=VC.instances.get(i),r||VC.instances.set(i,r=new VC(i,void 0,Object.create(VC.prototype)))):(r=VC.instances2.get(i),r||VC.instances2.set(i,r=new VC(i.constructor.name,void 0,Object.create(VC.prototype)))),r}static getState(i){var r;return(r=VC.get(i))===null||r===void 0?void 0:r.state}updateDevTools(i={}){ZlA(VC.UPDATEAFSM,Object.assign({name:this.name,group:this.groupName},i))}get state(){return this._state}set state(i){FL.call(this,i)}};Xn.STATECHANGED="stateChanged",Xn.UPDATEAFSM="updateAFSM",Xn.INIT="[*]",Xn.ON="on",Xn.OFF="off",Xn.instances=new Map,Xn.instances2=new WeakMap;var kW=typeof window<"u",x8=kW&&window.requestIdleCallback||function(t){const i=Date.now();return setTimeout(()=>{t({didTimeout:!1,timeRemaining:()=>Math.max(0,50-(Date.now()-i))})},1e3)},XlA=kW&&window.cancelIdleCallback||function(t){clearTimeout(t)},Y8=kW&&(window.cancelAnimationFrame||window.mozCancelAnimationFrame),hL=class cE{static generateTaskID(){return this.currentTaskID++}static run(i,r,l){l?.fps&&(l.delay=l.delay||Number((1e3/l.fps).toFixed(2))),l=Rn(Rn({},i==="interval"?{delay:2e3,count:0,backgroundTask:!0}:i==="ric"?{delay:1e4,count:0}:i==="raf"?{fps:60,delay:16.6,count:0,backgroundTask:!0}:{delay:2e3,count:0,backgroundTask:!0}),l);const u=iB(Rn({taskID:this.generateTaskID(),loopCount:0,intervalID:null,timeoutID:null,rafID:null,ricID:null,taskName:i,callback:r},l),{delay:l.delay});return this.taskMap.set(u.taskID,u),this[i](u),u.taskID}static interval(i){return i.intervalID=setInterval(()=>{i.callback(),i.loopCount+=1,cE.isBreakLoop(i)},i.delay)}static intervalInWorker(i){cE.sharedWorker||(cE.sharedWorker=new Worker(URL.createObjectURL(new Blob([` +`,U+=h)),I&&(U+=` +Refer to: ${dZ("en",w)} +`),U}var CZ=lT(EcA()),rIA=1,aIA=0,Y7=class{constructor(t=!0){de(this,"countMap",new Map),de(this,"distributionMap",new Map),de(this,"version"),de(this,"log",Wo.createLogger({id:"kv"})),t&&(ps.on("102",({track:i,cost:r})=>{this.addSuccessEvent({key:i.kind===zt.AUDIO?501700:511700,cost:r})}),ps.on("103",({track:i,error:r})=>{this.addFailedEvent({key:i.kind===zt.AUDIO?501700:511700,error:r})}),ps.on("266",({enable:i})=>{this.log.info((i?"enable":"disable")+" sso"),i?this.addSuccessEvent({key:525701}):this.addFailedEvent({key:525701})}))}getReportData(t,i){const r={msg_sdk_basic_info:{uint32_sdk_version:XX(this.version||DY),uint32_terminal_type:15,bytes_device_name:"",bytes_os_version:"",uint32_framework:30,uint32_network_type:0},stats_count:[...this.countMap.entries()].map(([l,I])=>({uint32_key:l,uint32_count:I})),stats_distribution:[...this.distributionMap.entries()].map(([l,I])=>({uint32_key:l,distribution_items:[...I.entries()].map(([h,f])=>({uint32_item_key:h,uint32_item_value:f}))})),str_user_sig:t,bytes_report_token:i};return this.countMap.clear(),this.distributionMap.clear(),r}clear(){this.countMap.clear(),this.distributionMap.clear()}isEnumKey(t){const i=+String(t).slice(-3);return i>=700&&i<799}isErrorCodeKey(t){const i=+String(t).slice(-3);return i>=600&&i<699}isCountKey(t){const i=+String(t).slice(-3);return i>=0&&i<599}isNumberKey(t){const i=+String(t).slice(-3);return i>=800&&i<899}addCount({key:t,useUV:i=!1}){this.isCountKey(t)?i&&this.countMap.has(t)||this.countMap.set(t,(this.countMap.get(t)||0)+1):this.log.debug(`${t} is not count key, last 3 number should be 0~599`)}addEnum({key:t,value:i,useUV:r=!0}){var l;if(!this.isEnumKey(t))return this.log.debug(`${t} is not enum key, last 3 number should be 700~799`);if(r&&this.countMap.has(t))return;this.countMap.set(t,(this.countMap.get(t)||0)+1);const I=((l=this.distributionMap)==null?void 0:l.get(t))||new Map;I.set(i,(I.get(i)||0)+1),this.distributionMap.set(t,I)}addNumber({key:t,value:i,split:r=100,useUV:l=!1,max:I=5e3}){var h;if(!this.isNumberKey(t))return this.log.debug(`${t} is not number key, last 3 number should be 800~899`);if(l&&this.countMap.has(t))return;i>I&&(i=I),this.countMap.set(t,(this.countMap.get(t)||0)+1);const f=((h=this.distributionMap)==null?void 0:h.get(t))||new Map;let w=0;if(wv(r))w=Math.floor(i/r);else for(let _=r.length-1;_>0;_--)if(i>r[_]){w=_;break}f.set(w,(f.get(w)||0)+1),this.distributionMap.set(t,f)}addSuccessEvent({key:t,cost:i,timeKey:r,split:l}){if(t&&(this.addEnum({key:t,value:rIA,useUV:!1}),i)){const I=+String(t).slice(-3);I<800&&I>=700?this.addNumber({key:r||t+100,value:i,split:l}):r||this.log.debug(`time stat ignored, ${t}`)}}addFailedEvent({key:t,error:i}){if(!t)return;let r=qg.UNKNOWN;i&&(wv(i)?r=i:$n(i.extraCode)&&$n(i.code)||(r=i.extraCode||i.code)),this.addEnum({key:t,value:aIA,useUV:!1}),this.addEnum({key:t,value:Math.abs(r),useUV:!1})}},V7=(t=>(t[t.DECODER_TYPE=514700]="DECODER_TYPE",t[t.DECODER_HW_SW=514701]="DECODER_HW_SW",t[t.DECODE_RESULT=514702]="DECODE_RESULT",t[t.DECODE_FAILED_OS=514703]="DECODE_FAILED_OS",t[t.DOWNGRADE_RESULT=514704]="DOWNGRADE_RESULT",t[t.DOWNGRADE_WEBCODECS_VIDEO=514705]="DOWNGRADE_WEBCODECS_VIDEO",t[t.DOWNGRADE_WEBCODECS_2D=514706]="DOWNGRADE_WEBCODECS_2D",t[t.DOWNGRADE_WASM_WEGBL=514707]="DOWNGRADE_WASM_WEGBL",t[t.DOWNGRADE_WASM_VIDEO=514708]="DOWNGRADE_WASM_VIDEO",t[t.DOWNGRADE_WASM_2D=514709]="DOWNGRADE_WASM_2D",t[t.DECODE_H264_RESULT=514710]="DECODE_H264_RESULT",t[t.DECODE_H265_RESULT=514711]="DECODE_H265_RESULT",t[t.DECODE_VP8_RESULT=514712]="DECODE_VP8_RESULT",t[t.DECODE_CAPABILITIES=514713]="DECODE_CAPABILITIES",t[t.H264_PROFILE_LEVEL_ID_HIGH=514714]="H264_PROFILE_LEVEL_ID_HIGH",t[t.H264_PROFILE_LEVEL_ID_MAIN=514715]="H264_PROFILE_LEVEL_ID_MAIN",t[t.RENDER_FREEZE_RATE=514850]="RENDER_FREEZE_RATE",t[t.DATA_FREEZE_RATE=514851]="DATA_FREEZE_RATE",t[t.VIDEO_CONSUME_RENDER_RATE=514852]="VIDEO_CONSUME_RENDER_RATE",t))(V7||{}),gIA=new Y7(!0);new Y7(!1);var Ir=gIA,Xs={result:!1,detail:{isBrowserSupported:!1,isWebRTCSupported:!1,isWebCodecsSupported:!1,isMediaDevicesSupported:!1,isScreenShareSupported:!1,isSmallStreamSupported:!1,isH264EncodeSupported:!1,isVp8EncodeSupported:!1,isH265EncodeSupported:!1,isH264DecodeSupported:!1,isVp8DecodeSupported:!1,isH265DecodeSupported:!1}},cIA=new Map([[oC,["Firefox",g7]],[EV,["Edg",I7]],[n4,["Chrome",T7]],[ad,["Safari",YU]],[hm,["TBS",d7]],[IT,["XWEB",C7]],[xU&&uV,["WeChat",h7]],[XW,["QQ(Win)",B7]],[CV,["QQ(Mobile)",RY]],[dV,["QQ(Mobile X5)",RY]],[$W,["QQ(Mac)",Q7]],[A4,["QQ(iPad)",p7]],[e4,["MI",D7]],[t4,["HW",M7]],[i4,["Samsung",v7]],[BV,["OPPO",R7]],[o4,["VIVO",w7]],[PU,["EDGE",l7]],[zW,["SogouMobile",u7]],[ZW,["Sogou",E7]]]);function lIA(){const t=cIA.get(!0);return{browserName:t?t[0]:"unknown",browserVersion:t?t[1]:"unknown"}}var a4=function(){return!FlA&&!PU&&!(EV&&LlA<80)&&!(oC&&c7<56)},g4=function(){return["VideoDecoder","VideoEncoder","AudioEncoder","AudioDecoder"].every(t=>t in window)},c4=function(){if(!navigator.mediaDevices)return QV()||Wo.error(U_.NOT_SUPPORTED_MEDIA),!1;const t=["getUserMedia","enumerateDevices"];return t.filter(i=>i in navigator.mediaDevices).length===t.length},hZ=!1;function QV(){return location.protocol==="http:"&&!_Y&&(hZ||Wo.error(NY({key:TY.NOT_SUPPORTED_HTTP})),hZ=!0,!0)}var IIA=function(){return window?.OffscreenCanvas&&window?.MediaStreamTrackProcessor&&window?.MediaStreamTrackGenerator},uIA=function(){return!!window?.MediaStreamTrackGenerator},l4=async function(){var t,i,r;if(Xs.detail.isH264EncodeSupported&&Xs.detail.isVp8EncodeSupported)return{isH264EncodeSupported:Xs.detail.isH264EncodeSupported,isVp8EncodeSupported:Xs.detail.isVp8EncodeSupported,isH265EncodeSupported:Xs.detail.isH265EncodeSupported};let l,I=!1,h=!1,f=!1;try{const w=new RTCPeerConnection,_=document.createElement(zt.CANVAS);_.getContext("2d");const k=_.captureStream(0);return w.addTrack(k.getVideoTracks()[0],k),l=await w.createOffer(),I=((t=l.sdp)==null?void 0:t.toLowerCase().indexOf("h264"))!==-1,h=((i=l.sdp)==null?void 0:i.toLowerCase().indexOf("vp8"))!==-1,f=((r=l.sdp)==null?void 0:r.toLowerCase().indexOf("h265"))!==-1,w.close(),{isH264EncodeSupported:I,isVp8EncodeSupported:h,isH265EncodeSupported:f}}catch{return{isH264EncodeSupported:!1,isVp8EncodeSupported:!1,isH265EncodeSupported:!1}}},J7=async function(){var t;if(Xs.detail.isH264DecodeSupported&&Xs.detail.isVp8DecodeSupported)return{isH264DecodeSupported:Xs.detail.isH264DecodeSupported,isVp8DecodeSupported:Xs.detail.isVp8DecodeSupported,isH265DecodeSupported:Xs.detail.isH265DecodeSupported};let i,r=!1,l=!1;try{const I=new RTCPeerConnection;pV()?(I.addTransceiver(zt.VIDEO,{direction:"recvonly"}),i=await I.createOffer()):i=await I.createOffer({offerToReceiveVideo:!0}),i.sdp.toLowerCase().indexOf("h264")!==-1&&(r=!0),i.sdp.toLowerCase().indexOf("vp8")!==-1&&(l=!0);const h=((t=i.sdp)==null?void 0:t.toLowerCase().indexOf("h265"))!==-1;return I.close(),{isH264DecodeSupported:r,isVp8DecodeSupported:l,isH265DecodeSupported:h}}catch{return{isH264DecodeSupported:!1,isVp8DecodeSupported:!1,isH265DecodeSupported:!1}}};async function EIA(){const[t,i]=await Promise.all([l4(),J7()]);return{encode:{h264:t.isH264EncodeSupported,vp8:t.isVp8EncodeSupported,h265:t.isH265EncodeSupported},decode:{h264:i.isH264DecodeSupported,vp8:i.isVp8DecodeSupported,h265:i.isH265DecodeSupported}}}var H7=A7(async t=>{const i=Date.now(),r=u4(),l=c4(),I=g4();if(Xs.detail.isWebRTCSupported=r,Xs.detail.isMediaDevicesSupported=l,Xs.detail.isWebCodecsSupported=I,Xs.detail.isScreenShareSupported=I4(),Xs.detail.isSmallStreamSupported=$7(),t===37)return Object.assign(Xs.detail,await hIA()),Xs.detail.isBrowserSupported=I,Xs.result=l&&I,Xs.result||Wo.error(`${navigator.userAgent} ${H3(Xs.detail,!1)}`),pZ(t),Ir.addNumber({key:523800,value:Date.now()-i}),Xs;if(Xs.result&&Xs.detail.isH264EncodeSupported&&Xs.detail.isVp8EncodeSupported&&Xs.detail.isH265EncodeSupported&&Xs.detail.isH264DecodeSupported&&Xs.detail.isVp8DecodeSupported&&Xs.detail.isH265DecodeSupported)return Xs;const h=a4(),{encode:f,decode:w}=await EIA();let{h264:_,vp8:k}=f,{h264:U}=w;const{h265:j}=f,{vp8:lA,h265:rA}=w;if(!_||!k){const mA=await l4();Wo.warn(`detect encode again h264:${_} vp8:${k} result: ${JSON.stringify(mA)}`),_=mA.isH264EncodeSupported,k=mA.isVp8EncodeSupported}if(_&&U&&rC&&Xy&&!IT&&!hm&&(!BV||$y!==115)){const{encode:mA,decode:IA}=await q7();_=mA,U=IA}return Xs.result=h&&r&&l&&(_||k)&&(U||lA),Xs.detail.isBrowserSupported=h,Xs.detail.isWebRTCSupported=r,Xs.detail.isH264EncodeSupported=_,Xs.detail.isVp8EncodeSupported=k,Xs.detail.isH265EncodeSupported=j,Xs.detail.isH264DecodeSupported=U,Xs.detail.isVp8DecodeSupported=lA,Xs.detail.isH265DecodeSupported=rA,Xs.result||Wo.error(`${navigator.userAgent} ${H3(Xs.detail,!1)}`),pZ(),Ir.addNumber({key:523800,value:Date.now()-i}),Xs}),dIA=function(){return Xs.result},I4=function(){return!(!navigator.mediaDevices||!navigator.mediaDevices.getDisplayMedia)},CIA=typeof HTMLMediaElement<"u"&&"setSinkId"in HTMLMediaElement.prototype,BZ=null;async function q7(t=2e3){return BZ||(BZ=new Promise(async i=>{const r={encode:!1,decode:!1};let l=()=>{};try{const I=document.createElement("canvas"),h=I.getContext("2d");I.width=640,I.height=480;const f=setInterval(()=>{h.fillText("test",Math.floor(640*Math.random()),Math.floor(480*Math.random()))},66);let w=-1,_=-1;l=()=>{clearInterval(w),clearInterval(f),clearTimeout(_),U.close(),j.close(),k.getTracks().forEach(cA=>cA.stop())},_=setTimeout(()=>{l(),i(r)},t);const k=I.captureStream(),U=new RTCPeerConnection({}),j=new RTCPeerConnection({offerToReceiveAudio:!0,offerToReceiveVideo:!0});U.addEventListener("icecandidate",cA=>j.addIceCandidate(cA.candidate)),j.addEventListener("icecandidate",cA=>U.addIceCandidate(cA.candidate)),U.addTrack(k.getVideoTracks()[0],k);const lA=await U.createOffer();await U.setLocalDescription(lA),await j.setRemoteDescription(lA);const rA=await j.createAnswer(),mA=CZ.default.parse(rA.sdp),IA=mA.media[0].rtp.findIndex(cA=>cA.codec==="H264");mA.media[0].rtp=[mA.media[0].rtp[IA]],mA.media[0].fmtp=mA.media[0].fmtp.filter(cA=>cA.payload===mA.media[0].rtp[0].payload),mA.media[0].rtcpFb&&(mA.media[0].rtcpFb=mA.media[0].rtcpFb.filter(cA=>cA.payload===mA.media[0].rtp[0].payload)),rA.sdp=CZ.default.write(mA),await j.setLocalDescription(rA),await U.setRemoteDescription(rA),w=setInterval(async()=>{r.encode&&r.decode&&(l(),i(r));const[cA,TA]=await Promise.all([U.getSenders()[0].getStats(),j.getReceivers()[0].getStats()]);r.encode||cA.forEach(WA=>{WA.type==="outbound-rtp"&&(WA.mediaType===zt.VIDEO||WA.kind===zt.VIDEO)&&WA.bytesSent>0&&(r.encode=!0)}),r.decode||TA.forEach(WA=>{WA.type==="inbound-rtp"&&(WA.mediaType===zt.VIDEO||WA.kind===zt.VIDEO)&&WA.bytesReceived>0&&(r.decode=!0)})},100)}catch(I){l(),Wo.warn("detectH264Supported failed",I),i({encode:!0,decode:!0})}}).then(i=>(i.encode||(i.decode=!0),i.encode&&i.decode||Wo.warn(`detectH264Supported encode: ${i.encode} decode: ${i.decode} ${KlA}`),i)))}var QZ=null;async function hIA(){return QZ||(QZ=new Promise(async t=>{const i={isH264EncodeSupported:!1,isH264DecodeSupported:!1,isVp8EncodeSupported:!1,isVp8DecodeSupported:!1};if(!g4())return void t(i);let r=null,l=null,I=null;const h=()=>{I&&clearTimeout(I),r=null,l=null};try{r=document.createElement("canvas"),l=r.getContext("2d"),r.width=320,r.height=240;let f=0;const w=()=>{l&&r&&(l.fillStyle=`hsl(${f%360}, 50%, 50%)`,l.fillRect(0,0,r.width,r.height),l.fillStyle="white",l.font="20px Arial",l.fillText(`Frame ${f}`,10,30),f++)};I=setTimeout(()=>{h(),t(i)},5e3);const _=[{type:"h264",encodeConfig:{codec:"avc1.42E01E",avc:{format:"annexb"},width:320,height:240,bitrate:1e6},decodeConfig:{codec:"avc1.42E01E",avc:{format:"annexb"}}},{type:"vp8",encodeConfig:{codec:"vp8",width:320,height:240,bitrate:1e6},decodeConfig:{codec:"vp8"}}];(await Promise.all(_.map(async k=>{const U={type:k.type,encodeSupported:!1,decodeSupported:!1};let j;try{j=await new Promise(async(lA,rA)=>{try{const mA=new VideoEncoder({output:cA=>{lA(cA),U.encodeSupported=!0},error:rA});mA.configure(k.encodeConfig),w();const IA=new VideoFrame(r,{timestamp:0});mA.encode(IA,{keyFrame:!0}),IA.close(),await mA.flush(),mA.close()}catch(mA){rA(mA)}})}catch(lA){return Wo.warn(`${k.type} encoder error:`,lA),U}try{await new Promise(async(lA,rA)=>{try{const mA=new VideoDecoder({output:IA=>{U.decodeSupported=!0,lA(0),IA.close()},error:rA});mA.configure(k.decodeConfig),mA.decode(j),await mA.flush(),mA.close()}catch(mA){rA(mA)}})}catch(lA){Wo.warn(`${k.type} decoder error:`,lA)}return U}))).forEach(k=>{k.type==="h264"?(i.isH264EncodeSupported=k.encodeSupported,i.isH264DecodeSupported=k.decodeSupported):k.type==="vp8"&&(i.isVp8EncodeSupported=k.encodeSupported,i.isVp8DecodeSupported=k.decodeSupported)}),h(),t(i)}catch(f){h(),Wo.warn("detectWebCodecsSupported failed:",f),t(i)}}))}var BIA=(t,i,r)=>{location.protocol!=="http:"||_Y||(t[i]=()=>{throw new pl({code:qg.INVALID_OPERATION,message:U_.NOT_SUPPORTED_HTTP})})},QIA=function(t){return!(t.type!=="candidate-pair"||!t.nominated||t.state!=="in-progress"&&t.state!=="succeeded")&&!(pv(t.selected)&&!t.selected)};function K7(){let t="";return screen.width&&(t+=`${screen.width?screen.width*window.devicePixelRatio:""} * ${screen.height?screen.height*window.devicePixelRatio:""}`),t}function j7(){return navigator.getUserMedia||navigator.mediaDevices&&navigator.mediaDevices.getUserMedia}function W7(){const t={isSupported:!1},i=["AudioContext","webkitAudioContext","mozAudioContext","msAudioContext"];for(let r=0;r=86,o$="RTCRtpScriptTransform"in window,RIA=VU&&(i$||o$),u4=function(){return["RTCPeerConnection","webkitRTCPeerConnection","RTCIceGatherer"].filter(t=>t in window).length>0};function s$(){const t={AudioDecoder:!1,AudioEncoder:!1,VideoDecoder:!1,VideoEncoder:!1,ImageDecoder:!1};return $n(window.AudioDecoder)||(t.AudioDecoder=!0),$n(window.AudioEncoder)||(t.AudioEncoder=!0),$n(window.VideoDecoder)||(t.VideoDecoder=!0),$n(window.VideoEncoder)||(t.VideoEncoder=!0),$n(window.ImageDecoder)||(t.ImageDecoder=!0),t}function n$(){return"mediaSession"in navigator&&!$n(navigator.mediaSession.setActionHandler)}function r$(){return!$n(window.WebTransport)}function wIA(){return typeof WebAssembly<"u"&&WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11]))}function _IA(){const t={browser:`${mv.name}/${mv.version}`,os:k7(),displayResolution:K7(),isScreenShareSupported:I4(),isWebRTCSupported:u4(),isGetUserMediaSupported:j7(),isWebAudioSupported:W7(),isWebSocketsSupported:"WebSocket"in window&&window.WebSocket.CLOSING===2,isWebCodecSupported:s$(),isMediaSessionSupported:n$(),isWebTransportSupported:r$()};return navigator.userAgent.includes("miniProgram")&&(t.browser=`mini/${t.browser}`),t}var a$="checkResult";function pZ(t=30){x7.setItem(a$+t,{ua:navigator.userAgent,checkResult:Xs})}function TIA(t){QV();const i=x7.getItem(a$+t);i&&i.ua===navigator.userAgent&&i.checkResult&&NIA(i.checkResult.detail,Xs.detail)&&(Xs=i.checkResult),H7(t)}function NIA(t,i){return!!Iv(t)&&Object.keys(i).every(r=>r in t)}function E4(){return"requestVideoFrameCallback"in HTMLVideoElement.prototype}var GIA="RTCRtpReceiver"in window&&"jitterBufferTarget"in window.RTCRtpReceiver.prototype;function mZ(t){return{h264:1,h265:2,vp8:3,vp9:4,av1:5}[t]}var fZ=!1;async function bIA(){var t;try{if(fZ||!((t=navigator?.mediaCapabilities)!=null&&t.encodingInfo))return;const i=r4(),r=WlA();if(i===0||r===0)return;fZ=!0;const l=["H264","VP8","VP9","AV1","H265"],[I,h]=await Promise.all([g$(l),c$(l)]);I&&Object.keys(I).forEach(_=>{const k=mZ(_.toLowerCase());Ir.addEnum({key:513707,value:+`${k}${+I[_].supported}${+I[_].powerEfficient}${i}${r}`,useUV:!1})}),h&&Object.keys(h).forEach(_=>{const k=mZ(_.toLowerCase());Ir.addEnum({key:514713,value:+`${k}${+h[_].supported}${+h[_].powerEfficient}${i}${r}`,useUV:!1})});const{sender:f,receiver:w}=l$();Ir.addEnum({key:513708,value:+`${i}${r}${+f.high}`,useUV:!1}),Ir.addEnum({key:513709,value:+`${i}${r}${+f.main}`,useUV:!1}),Ir.addEnum({key:514714,value:+`${i}${r}${+w.high}`,useUV:!1}),Ir.addEnum({key:514715,value:+`${i}${r}${+w.main}`,useUV:!1})}catch(i){Wo.info("detectVideoCodecCapabilities failed",i)}}async function g$(t,i=1920,r=1080,l=30,I=3e3){const h={};try{for(const f of t){const w=await navigator.mediaCapabilities.encodingInfo({type:"webrtc",video:{contentType:`video/${f}`,width:i,height:r,bitrate:I,framerate:l}});h[f]=w}}catch{}return h}async function c$(t,i=1920,r=1080,l=30,I=3e3){const h={};try{for(const f of t){const w=await navigator.mediaCapabilities.decodingInfo({type:"webrtc",video:{contentType:`video/${f}`,width:i,height:r,bitrate:I,framerate:l}});h[f]=w}}catch{}return h}function l$(){const t={sender:{base:!1,main:!1,high:!1},receiver:{base:!1,main:!1,high:!1}};try{if(RTCRtpSender&&typeof RTCRtpSender.getCapabilities=="function"){const i=RTCRtpSender.getCapabilities("video");i&&i.codecs&&i.codecs.filter(r=>r.mimeType.toLowerCase()==="video/h264").forEach(r=>{if(r.sdpFmtpLine){const l=r.sdpFmtpLine.match(/profile-level-id=([0-9a-fA-F]+)/);if(l&&l[1])switch(l[1].slice(0,2)){case"42":t.sender.base=!0;break;case"4d":t.sender.main=!0;break;case"64":t.sender.high=!0}}})}if(RTCRtpReceiver&&typeof RTCRtpReceiver.getCapabilities=="function"){const i=RTCRtpReceiver.getCapabilities("video");i&&i.codecs&&i.codecs.filter(r=>r.mimeType.toLowerCase()==="video/h264").forEach(r=>{if(r.sdpFmtpLine){const l=r.sdpFmtpLine.match(/profile-level-id=([0-9a-fA-F]+)/);if(l&&l[1])switch(l[1].slice(0,2)){case"42":t.receiver.base=!0;break;case"4d":t.receiver.main=!0;break;case"64":t.receiver.high=!0}}})}}catch(i){Wo.warn("get H264 profile levelId failed",i)}return t}var kIA=lT(FU()),yZ=Symbol("instance"),O1=Symbol("cacheResult"),Wj=class{constructor(t,i,r){this.oldState=t,this.newState=i,this.action=r,this.aborted=!1}abort(t){this.aborted=!0,iU.call(t,this.oldState,new Error(`action '${this.action}' aborted`))}toString(){return`${this.action}ing`}},zj=class extends Error{constructor(t,i,r){super(i),this.state=t,this.message=i,this.cause=r}};function LIA(t){return typeof t=="object"&&t&&"then"in t}var tU=new Map;function fu(t,i,r={}){return(l,I,h)=>{const f=r.action||I;if(!r.context){const _=tU.get(l)||[];tU.has(l)||tU.set(l,_),_.push({from:t,to:i,action:f})}const w=h.value;h.value=function(..._){let k=this;if(r.context&&(k=Xn.get(typeof r.context=="function"?r.context.call(this,..._):r.context)),k.state===i)return r.sync?k[O1]:Promise.resolve(k[O1]);k.state instanceof Wj&&k.state.action==r.abortAction&&k.state.abort(k);let U=null;Array.isArray(t)?t.length==0?k.state instanceof Wj&&k.state.abort(k):typeof k.state=="string"&&t.includes(k.state)||(U=new zj(k._state,`${k.name} ${f} to ${i} failed: current state ${k._state} not from ${t.join("|")}`)):t!==k.state&&(U=new zj(k._state,`${k.name} ${f} to ${i} failed: current state ${k._state} not from ${t}`));const j=cA=>{if(r.fail&&r.fail.call(this,cA),r.sync){if(r.ignoreError)return cA;throw cA}return r.ignoreError?Promise.resolve(cA):Promise.reject(cA)};if(U)return j(U);const lA=k.state,rA=new Wj(lA,i,f);iU.call(k,rA);const mA=cA=>{var TA;return k[O1]=cA,rA.aborted||(iU.call(k,i),(TA=r.success)===null||TA===void 0||TA.call(this,k[O1])),cA},IA=cA=>(iU.call(k,lA,cA),j(cA));try{const cA=w.apply(this,_);return LIA(cA)?cA.then(mA).catch(IA):r.sync?mA(cA):Promise.resolve(mA(cA))}catch(cA){return IA(new zj(k._state,`${k.name} ${f} from ${t} to ${i} failed: ${cA}`,cA instanceof Error?cA:new Error(String(cA))))}}}}var UIA=typeof window<"u"&&window.__AFSM__?(r,l)=>{window.dispatchEvent(new CustomEvent(r,{detail:l}))}:typeof importScripts<"u"?(r,l)=>{postMessage({type:r,payload:l})}:()=>{};function iU(t,i){const r=this._state;this._state=t;const l=t.toString();t&&this.emit(l,r),this.emit(Xn.STATECHANGED,t,r,i),this.updateDevTools({value:t,old:r,err:i instanceof Error?i.message:String(i)})}var Xn=class jC extends kIA.default{constructor(i,r,l){super(),this.name=i,this.groupName=r,this._state=jC.INIT,i||(i=Date.now().toString(36)),l?Object.setPrototypeOf(this,l):l=Object.getPrototypeOf(this),r||(this.groupName=this.constructor.name);const I=l[yZ];I?this.name=I.name+"-"+I.count++:l[yZ]={name:this.name,count:0},this.updateDevTools({diagram:this.stateDiagram})}get stateDiagram(){const i=Object.getPrototypeOf(this),r=tU.get(i)||[];let l=new Set,I=[],h=[];const f=new Set,w=Object.getPrototypeOf(i);tU.has(w)&&(w.stateDiagram.forEach(k=>l.add(k)),w.allStates.forEach(k=>f.add(k))),r.forEach(({from:k,to:U,action:j})=>{typeof k=="string"?I.push({from:k,to:U,action:j}):k.length?k.forEach(lA=>{I.push({from:lA,to:U,action:j})}):h.push({to:U,action:j})}),I.forEach(({from:k,to:U,action:j})=>{f.add(k),f.add(U),f.add(j+"ing"),l.add(`${k} --> ${j}ing : ${j}`),l.add(`${j}ing --> ${U} : ${j} 🟢`),l.add(`${j}ing --> ${k} : ${j} 🔴`)}),h.forEach(({to:k,action:U})=>{l.add(`${U}ing --> ${k} : ${U} 🟢`),f.forEach(j=>{j!==k&&l.add(`${j} --> ${U}ing : ${U}`)})});const _=[...l];return Object.defineProperties(i,{stateDiagram:{value:_},allStates:{value:f}}),_}static get(i){let r;return typeof i=="string"?(r=jC.instances.get(i),r||jC.instances.set(i,r=new jC(i,void 0,Object.create(jC.prototype)))):(r=jC.instances2.get(i),r||jC.instances2.set(i,r=new jC(i.constructor.name,void 0,Object.create(jC.prototype)))),r}static getState(i){var r;return(r=jC.get(i))===null||r===void 0?void 0:r.state}updateDevTools(i={}){UIA(jC.UPDATEAFSM,Object.assign({name:this.name,group:this.groupName},i))}get state(){return this._state}set state(i){iU.call(this,i)}};Xn.STATECHANGED="stateChanged",Xn.UPDATEAFSM="updateAFSM",Xn.INIT="[*]",Xn.ON="on",Xn.OFF="off",Xn.instances=new Map,Xn.instances2=new WeakMap;var d4=typeof window<"u",DZ=d4&&window.requestIdleCallback||function(t){const i=Date.now();return setTimeout(()=>{t({didTimeout:!1,timeRemaining:()=>Math.max(0,50-(Date.now()-i))})},1e3)},FIA=d4&&window.cancelIdleCallback||function(t){clearTimeout(t)},SZ=d4&&(window.cancelAnimationFrame||window.mozCancelAnimationFrame),bL=class EE{static generateTaskID(){return this.currentTaskID++}static run(i,r,l){l?.fps&&(l.delay=l.delay||Number((1e3/l.fps).toFixed(2))),l=Rn(Rn({},i==="interval"?{delay:2e3,count:0,backgroundTask:!0}:i==="ric"?{delay:1e4,count:0}:i==="raf"?{fps:60,delay:16.6,count:0,backgroundTask:!0}:{delay:2e3,count:0,backgroundTask:!0}),l);const I=sB(Rn({taskID:this.generateTaskID(),loopCount:0,intervalID:null,timeoutID:null,rafID:null,ricID:null,taskName:i,callback:r},l),{delay:l.delay});return this.taskMap.set(I.taskID,I),this[i](I),I.taskID}static interval(i){return i.intervalID=setInterval(()=>{i.callback(),i.loopCount+=1,EE.isBreakLoop(i)},i.delay)}static intervalInWorker(i){EE.sharedWorker||(EE.sharedWorker=new Worker(URL.createObjectURL(new Blob([` const timers = new Map(); self.onmessage = function(e) { const { taskId, delay, type } = e.data; @@ -548,15 +548,15 @@ Refer to: ${N8("en",w)} timers.delete(taskId); } }; - `],{type:"application/javascript"}))),cE.sharedWorker.onmessage=r=>{var l;if(r.data.type==="tick"){const u=cE.workerTasks.get(r.data.taskId);u&&(cE.isBreakLoop(u)?((l=cE.sharedWorker)==null||l.postMessage({type:"stop",taskId:u.taskID}),cE.workerTasks.delete(u.taskID)):(u.callback(),u.loopCount+=1))}}),cE.workerTasks.set(i.taskID,i),cE.sharedWorker.postMessage({taskId:i.taskID,delay:i.delay,type:"start"})}static timeout(i){const r=()=>{if(i.callback(),i.loopCount+=1,!cE.isBreakLoop(i))return i.timeoutID=setTimeout(r,i.delay)};return i.timeoutID=setTimeout(r,i.delay)}static ric(i){let r,l=xc();const u=()=>{if(r=xc()-l,r>=i.delay&&(l=xc()-Math.floor(r%i.delay),i.callback(),i.loopCount+=1),!cE.isBreakLoop(i))return i.ricID=x8(u,{timeout:i.delay})};return i.ricID=x8(u,{timeout:i.delay})}static raf(i){let r,l=xc();const u=()=>{if(document.hidden&&i.backgroundTask)return r=xc()-l,l=xc(),i.callback(),i.loopCount+=1,cE.isBreakLoop(i)?void 0:i.timeoutID=setTimeout(u,i.delay-Math.floor(r%i.delay));if(r=xc()-l,r>=i.delay&&(l=xc()-Math.floor(r%i.delay),i.callback(),i.loopCount+=1),!cE.isBreakLoop(i))return i.rafID=requestAnimationFrame(u)};if(i.rafID=requestAnimationFrame(u),i.backgroundTask){const B=()=>{if(document.hidden){const f=xc()-l;f>=i.delay?u():i.timeoutID=setTimeout(u,i.delay-f)}};document.addEventListener("visibilitychange",B),i.onVisibilitychange=B,document.hidden&&B()}return i.taskID}static hasTask(i){return this.taskMap.has(i)}static clearTask(i){if(!this.taskMap.has(i))return!0;const{intervalID:r,timeoutID:l,rafID:u,ricID:B,onVisibilitychange:f}=this.taskMap.get(i);return r&&clearInterval(r),l&&clearTimeout(l),u&&Y8&&Y8(u),B&&XlA(B),f&&document.removeEventListener("visibilitychange",f),this.taskMap.delete(i),!0}static isBreakLoop(i){return!this.hasTask(i.taskID)||i.count!==0&&i.loopCount>=i.count&&(this.clearTask(i.taskID),!0)}};de(hL,"taskMap",new Map),de(hL,"currentTaskID",1),de(hL,"sharedWorker",null),de(hL,"workerTasks",new Map);var $lA=hL,pQ=$lA,Vn={LOAD_START:zt.LOADSTART,LOADED_DATA:zt.LOADEDDATA,LOADED_META_DATA:zt.LOADEDMETADATA,MEDIA_TRACK_CHANGED:"media-track-changed",PLAYER_STATE_CHANGED:"player-state-changed",ERROR:"error",AUTOPLAY_FAILED:"autoplay-failed",RESIZE:zt.RESIZE,TIME_UPDATE:"time-update",LEAVE_PICTURE_IN_PICTURE:zt.LEAVE_PICTURE_IN_PICTURE,ENTER_PICTURE_IN_PICTURE:zt.ENTER_PICTURE_IN_PICTURE,USER_RESUME_IN_PIP_OR_FULL_SCREEN:"user-resume-in-pip-or-full-screen",USER_PAUSE_IN_PIP_OR_FULL_SCREEN:"user-pause-in-pip-or-full-screen",ENTER_FULL_SCREEN:"enter-full-screen",LEAVE_FULL_SCREEN:"leave-full-screen",VOLUME_CHANGE:"volume-change",FIRST_FRAME_RENDER:"first-frame-render"},Q3={};nW(Q3,{create:()=>LW,remove:()=>AU});var OL=new WeakMap;function LW(t,i){OL.has(t)||OL.set(t,[]);const r=OL.get(t),l={add:(u,B)=>("addEventListener"in i?(r.push(i.removeEventListener.bind(i,u,B)),i.addEventListener(u,B)):(r.push(i.off.bind(i,u,B)),i.on(u,B)),l)};return l}function AU(t){const i=OL.get(t);i&&(i.forEach(r=>r()),OL.delete(t))}var AIA=class{constructor(){de(this,"_roomIdMap",new Map),de(this,"_configs"),typeof registerProcessor>"u"&&(this._configs={sdkAppId:"",userId:"",version:AY,env:Ij.QCLOUD,browserVersion:lv.name+lv.version,ua:navigator.userAgent})}setConfig({sdkAppId:t,env:i,userId:r,roomId:l}){t!==this._configs.sdkAppId&&(this._configs.sdkAppId=String(t)),this._configs.env=i,this._configs.userId=r,this._roomIdMap.set(r,String(l))}logSuccessEvent(t){!nY&&jo.isAbleToUpload&&this._configs.env===Ij.QCLOUD&&this.uploadEventToKibana(iB(Rn({},t),{result:"success"}))}logFailedEvent(t){if(nY||!jo.isAbleToUpload)return;const{eventType:i,code:r,error:l,userId:u}=t,B={roomId:this._roomIdMap.get(u||this._configs.userId),userId:u,eventType:i,result:"failed",code:r||l?.extraCode||l?.code||qg.UNKNOWN};this._configs.env===Ij.QCLOUD&&this.uploadEventToKibana(iB(Rn({},B),{error:l}))}uploadEventToKibana(t){let i=`stat-${t.eventType}-${t.result}`;t.eventType!=="delta-join"&&t.eventType!=="delta-leave"&&t.eventType!=="delta-publish"||(i=`${t.eventType}:${t.delta}`),this.uploadEvent({log:i,userId:t.userId}),t.result==="failed"&&(i=`stat-${t.eventType}-${t.result}-${t.code}`,this.uploadEvent({log:i,userId:t.userId,error:t.error}))}uploadEvent({log:t,userId:i,error:r}){const l={timestamp:$9(),sdkAppId:this._configs.sdkAppId,userId:i||this._configs.userId,version:AY,log:t};r&&(l.errorInfo=r.message,r.stack&&(l.errorInfo+=` -${r.stack}`));const u=B3.enable?IW(l,2002,Number(this._configs.sdkAppId)):JSON.stringify(l);this.sendRequest(gW(this._configs.sdkAppId,tX.LOG),u)}sendRequest(t,i){setTimeout(()=>fX({url:t,body:i,priority:"low"}).catch(()=>{}),2e3)}},$C=new AIA,KM=new WeakMap;function eIA({settings:t={retries:5,timeout:2e3},onError:i,onRetrying:r,onRetryFailed:l}){return function(u,B,f){const w=EW({retryFunction:f.value,settings:t,onError({error:_,retry:k,reject:F,retryFuncArgs:j}){var IA;i?i.call(this,_,()=>{var rA;(rA=KM.get(u))!=null&&rA.has(B)?k():F(_)},F,j):(IA=KM.get(u))!=null&&IA.has(B)?k():F(_)},onRetrying(_,k){var F;m_(r)&&r.call(this,_,k),(F=KM.get(u))!=null&&F.has(B)&&(KM.get(u).get(B).stopRetry=k)},onRetryFailed:l});return f.value=function(..._){const k=KM.get(u);return k?k.set(B,{args:_}):KM.set(u,new Map([[B,{args:_}]])),w.apply(this,_).finally(()=>{var F;return(F=KM.get(u))==null?void 0:F.delete(B)})},f}}var $M=class extends Xn{constructor(t,i){super(t.id,`${i}-player`),this.options=t,this.kind=i,de(this,"id"),de(this,"element",null),de(this,"track"),de(this,"url"),de(this,"attr"),de(this,"mode"),de(this,"muted"),de(this,"_log"),de(this,"isPausedByUserCall",!1),de(this,"_pausedRetryCount"),de(this,"_isElementPlayingFired",!1),de(this,"_interval"),de(this,"_delayDestroyTimeoutId",0),de(this,"_playSuccessResolve"),de(this,"_isReplayByRecreateMediaStreamCalled",!1),de(this,"isPlayCalled",!1),de(this,"isInAutoPlayFailedState",!1),de(this,"isBindAutoPlayEvent",!1),this.id=t.id,this._log=t.log,this.track=t.track,this.muted=t.muted,this._pausedRetryCount=p_,this._state="STOPPED",this.bindTrackEvents(),this._log.info(`create ${i}-player ${this.id}`)}get isPlaying(){var t;return this._state==="PLAYING"&&((t=this.element)==null?void 0:t.paused)===!1}get isPaused(){var t;return this._state==="PAUSED"||((t=this.element)==null?void 0:t.paused)===!0}get isStopped(){return this._state==="STOPPED"}setAttr(t){this.attr=t}setUrl(t){this.track&&(this.unbindTrackEvents(),this.element&&(this.element.srcObject=null),this.track=null),t!==this.url&&(this.url=t,t!==null&&this.element&&(this.element.crossOrigin="anonymous",this.element.src=t))}async play(){if(!this.isPlaying)try{this.isPlayCalled=!0,this._delayDestroyTimeoutId&&(clearTimeout(this._delayDestroyTimeoutId),this._delayDestroyTimeoutId=0,this.bindTrackEvents(),this.bindElementEvents()),this.bindAutoPlayEvent(),await new Promise((t,i)=>{this._playSuccessResolve=t,this.element.play().then(t,i)})}catch(t){const i=aY({key:rY.PLAY_FAILED,data:{media:this.kind,error:t}});if(this._log.warn(t),i.includes("NotAllowedError"))throw this.isInAutoPlayFailedState=!0,new Ql({code:qg.PLAY_NOT_ALLOWED,message:i})}}stop(t=0){var i;this.isPlayCalled=!1,this.isPausedByUserCall=!1,this._isElementPlayingFired=!1,this.unbindEvents(),t>0&&!WX?this._delayDestroyTimeoutId||((i=this.element)==null||i.remove(),this._log.info(`destroy element after 3 * ${t}`),this._delayDestroyTimeoutId=setTimeout(()=>this.destroyElement(),3*t)):this.destroyElement(),this.handleStopped(zt.ENDED),this._interval>0&&pQ.clearTask(this._interval)}destroyElement(){this.element&&(this._log.debug("destroy element"),this.element.remove(),this.element.src="",this.element.srcObject=null,this.element=null),clearTimeout(this._delayDestroyTimeoutId),this._delayDestroyTimeoutId=0}pause(){this._log.info("pause"),this.isPausedByUserCall=!0,this.doPause()}doPause(){var t;(t=this.element)==null||t.pause()}resume(t=!1){return this.isPausedByUserCall=!1,this.doResume(t)}doResume(t=!1){return this._log.info("resume"),this.isPausedByUserCall||this.isPlaying?Promise.resolve():tlA?this.replay():this.play().catch(()=>{})}setMuted(t){this.element&&(this.element.muted=t),this.muted=t}replay(){return this.stop(),this.play().catch(()=>{})}bindElementEvents(){if(this.element){const t=this.handleElementEvent.bind(this);return LW(this.element,this.element).add(zt.PLAYING,t).add(zt.ENDED,t).add(zt.PAUSE,t).add(zt.ERROR,t).add(zt.LOADSTART,t).add(zt.LOADEDDATA,t).add(zt.LOADEDMETADATA,t)}}bindTrackEvents(t=this.track){if(t){const i=this.handleTrackEvent.bind(this);Q3?.create(t,t).add(zt.ENDED,i).add(zt.MUTE,i).add(zt.UNMUTE,i),t.readyState===zt.ENDED&&this.handleTrackEvent({type:zt.ENDED}),t.muted&&this.handleTrackEvent({type:zt.MUTE})}}bindAutoPlayEvent(){this.isBindAutoPlayEvent||(this._log.warn("bindAutoPlayEvent"),ps.on(mn.AUTOPLAY_DIALOG_CLICK_CONFIRM,this.resume,this),this.isBindAutoPlayEvent=!0)}unbindTrackEvents(t=this.track){t&&AU(t)}unbindEvents(){this.element&&AU(this.element),this.unbindTrackEvents(),ps.off(mn.AUTOPLAY_DIALOG_CLICK_CONFIRM,this.resume,this),this.isBindAutoPlayEvent=!1}handleElementEvent(t){switch(t.type){case zt.PLAYING:eU()||(this.isInAutoPlayFailedState=!1),this._isElementPlayingFired=!0,this._log.info(`${this.kind} player is playing`),this.handlePlaying(zt.PLAYING),this._interval&&(pQ.clearTask(this._interval),this._interval=-1);break;case zt.ENDED:this._log.info(`${this.kind} player is ended`),this.handleStopped(zt.ENDED);break;case zt.PAUSE:this._log.info(`${this.kind} player is paused`),this.handlePaused(zt.PAUSE);break;case zt.ERROR:if(this.element&&this.element.error){this.handlePaused(zt.ERROR);const{code:i,message:r}=this.element.error;this._log.error(`${this.kind} ${this._log.isLocal?"local":"remote"} MediaError code: ${i} message: ${r} userAgent: ${navigator.userAgent}`),$C.uploadEvent({log:`stat-${this.kind}-${bL.PLAYER_ERROR}-${i}-${navigator.userAgent}`,error:this.element.error}),$cA||YX?this.emit(Vn.ERROR,this.element.error):this.replayByRecreateMediaStream(this.element.error)}break;case zt.LOADEDDATA:this.kind===zt.VIDEO&&this.emit(Vn.LOADED_DATA);break;case zt.LOADEDMETADATA:this.kind===zt.VIDEO&&this.emit(Vn.LOADED_META_DATA);break;case zt.LOADSTART:this.emit(Vn.LOAD_START)}}replayByRecreateMediaStream(t){if(!this._isReplayByRecreateMediaStreamCalled)return this._isReplayByRecreateMediaStreamCalled=!0,this.doReplayByRecreateMediaStream(1e3).then(()=>{this._log.warn("replayByRecreateMediaStream success"),$C.uploadEvent({log:"stat-replayByRecreateMediaStream-success"}),lr.addSuccessEvent({key:this.kind===zt.AUDIO?506700:516700})}).catch(()=>{var i;this._log.error("replayByRecreateMediaStream failed"),$C.uploadEvent({log:"stat-replayByRecreateMediaStream-failed"}),lr.addFailedEvent({key:this.kind===zt.AUDIO?506700:516700,error:(i=this.element)==null?void 0:i.error}),this.emit(Vn.ERROR,t)})}doReplayByRecreateMediaStream(t){return this._log.warn(`delay ${t}ms to recreate mediaStream`),new Promise((i,r)=>{Y_(t).then(()=>{this.element&&(this.element.srcObject=null,this.element.srcObject=new MediaStream([this.track]),this._log.warn("recreated mediaStream"),this.element.onerror=()=>{var l,u,B;this._log.warn(`element onerror ${(u=(l=this.element)==null?void 0:l.error)==null?void 0:u.code} fired after recreated mediaStream`),r((B=this.element)==null?void 0:B.error)}),Y_(5e3).then(()=>{var l,u;this.isPlaying&&!((l=this.element)!=null&&l.error)||r((u=this.element)==null?void 0:u.error),i()})})}).finally(()=>{this.element&&(this.element.onerror=null)})}async handleTrackEvent(t){const i=t.type;switch(this.options.enableLogTrackState&&this._log[i===zt.UNMUTE?"info":"warn"](`track ${i}`),i){case zt.ENDED:this.handleStopped(zt.ENDED);break;case zt.MUTE:this.handlePaused(zt.MUTE);break;case zt.UNMUTE:this.mode>0?this.handlePlaying(this.mode.toString()):this.element&&(this.element.paused&&!this.isPausedByUserCall&&(this._log.warn("track unmuted and element is paused, resume"),await this.doResume()),this.element&&!this.element.paused&&this._isElementPlayingFired&&this.handlePlaying(zt.UNMUTE))}}handlePlaying(t){var i;return this._log.debug("handlePlaying",t),(i=this._playSuccessResolve)==null||i.call(this,t),t}handlePaused(t){return this._log.debug("handlePaused",t),t}handleStopped(t){return this._log.debug("handleStopped",t),t}getElement(){return this.element}};de($M,"PlayerEvent",Vn),Cc([eIA({settings:{retries:2,timeout:0},onError(t,i,r,l){l[0]=(l[0]||1e3)+1e3,i()}})],$M.prototype,"doReplayByRecreateMediaStream"),Cc([Bu([],"PLAYING",{sync:!0,success(t){this.emit(Vn.PLAYER_STATE_CHANGED,{type:this.kind,state:"PLAYING",reason:t})}})],$M.prototype,"handlePlaying"),Cc([Bu("PLAYING","PAUSED",{ignoreError:!0,sync:!0,success(t){this.emit(Vn.PLAYER_STATE_CHANGED,{type:this.kind,state:"PAUSED",reason:t})}})],$M.prototype,"handlePaused"),Cc([Bu([],"STOPPED",{sync:!0,success(t){this.emit(Vn.PLAYER_STATE_CHANGED,{type:this.kind,state:"STOPPED",reason:t})}})],$M.prototype,"handleStopped");var Em="trtc_autoplay",fj=`${Em}_mask`,oL=`${Em}_wrapper`,V8=`${Em}_header`,yj=`${Em}_content`,C1=`${Em}_action_wrapper`,Dj=`${Em}_question`,Sj=`${Em}_collapse`,h1=`${Em}_action_confirm`,J8=`${Em}_detail`,H8="#2473E8",UW="dialog",tIA=`${UW}-show`,iIA=`${UW}-1`,oIA=`${UW}-2`,q8=!1,p3=!1,eU=()=>p3,w7=`${g3}/${Py()?"zh-cn":"en"}/tutorial-21-advanced-auto-play-policy.html`,K8=`
    ${Py()?"其他方案?":"Any other solution?"}`,sIA=Py()?`浏览器自动播放策略:在用户与页面产生交互(点击、触摸)之前,浏览器禁止播放有声媒体。该弹窗用于帮助用户恢复音视频播放。${K8}`:`Autoplay Policy: Before user interacts with the web page (clicking, touching), page will not be allowed to play media with sound. This Dialog is used to help users resume playback. ${K8}`,nIA=class{constructor(){if(de(this,"content","音视频播放被浏览器拦截,请点击“恢复播放”。"),de(this,"_dialogNode",null),de(this,"_bodyPosition",""),de(this,"_showDetail",!1),de(this,"_isCollapseClicked",!1),de(this,"_isQuestionClicked",!1),Py()||(this.content='Media playback failed. Click the "Resume" to resume playback.'),!q8){const t=document.createElement("style");t.innerHTML=`.${fj}{position:fixed;top:0;left:0;right:0;bottom:0;width:100vw;height:100vh;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.5);z-index:1500;}.${fj} div:not(.${C1}){display:block !important;}.${oL}{padding:14px;background:#fff;border-radius:3px;box-shadow:0px 3px 15px #434343;border:1px solid #d1cfcf;max-width:500px;}.${oL} a{color:${H8};}.${V8}{overflow:hidden;text-overflow:ellipsis;font-size:16px;font-weight:600;}.${yj}{margin:8px 0;}.${C1}{width:100%;display:flex !important;align-items:center;justify-content:right;float:right;}.${Sj}{margin-right:auto;cursor:pointer}.${Dj}{height:100%;line-height:16px;cursor:pointer;}.${h1}{margin-left:8px;color:#fff;background:${H8};padding:4px 12px;outline:none;border:1px solid;border-radius:3px;font-weight:bold;}.${h1}:hover{opacity:0.9;}.${Sj},.${h1},.${yj},.${Dj}{font-size:14px;}@media screen and (max-width:750px){.${oL}{width:80vw;}}`,document.head.appendChild(t),q8=!0}this.addDiaLog()}createDiaLog(){const t=document.createElement("template");t.innerHTML=`
    ${location.host}
    ${this.content}
    `.trim();const i=document.createElement("button");i.className=h1,i.innerText=Py()?"恢复播放":"Resume",i.onclick=this.onConfirm.bind(this);const r=document.createElement("div");r.className=Dj,r.innerHTML=` + `],{type:"application/javascript"}))),EE.sharedWorker.onmessage=r=>{var l;if(r.data.type==="tick"){const I=EE.workerTasks.get(r.data.taskId);I&&(EE.isBreakLoop(I)?((l=EE.sharedWorker)==null||l.postMessage({type:"stop",taskId:I.taskID}),EE.workerTasks.delete(I.taskID)):(I.callback(),I.loopCount+=1))}}),EE.workerTasks.set(i.taskID,i),EE.sharedWorker.postMessage({taskId:i.taskID,delay:i.delay,type:"start"})}static timeout(i){const r=()=>{if(i.callback(),i.loopCount+=1,!EE.isBreakLoop(i))return i.timeoutID=setTimeout(r,i.delay)};return i.timeoutID=setTimeout(r,i.delay)}static ric(i){let r,l=xc();const I=()=>{if(r=xc()-l,r>=i.delay&&(l=xc()-Math.floor(r%i.delay),i.callback(),i.loopCount+=1),!EE.isBreakLoop(i))return i.ricID=DZ(I,{timeout:i.delay})};return i.ricID=DZ(I,{timeout:i.delay})}static raf(i){let r,l=xc();const I=()=>{if(document.hidden&&i.backgroundTask)return r=xc()-l,l=xc(),i.callback(),i.loopCount+=1,EE.isBreakLoop(i)?void 0:i.timeoutID=setTimeout(I,i.delay-Math.floor(r%i.delay));if(r=xc()-l,r>=i.delay&&(l=xc()-Math.floor(r%i.delay),i.callback(),i.loopCount+=1),!EE.isBreakLoop(i))return i.rafID=requestAnimationFrame(I)};if(i.rafID=requestAnimationFrame(I),i.backgroundTask){const h=()=>{if(document.hidden){const f=xc()-l;f>=i.delay?I():i.timeoutID=setTimeout(I,i.delay-f)}};document.addEventListener("visibilitychange",h),i.onVisibilitychange=h,document.hidden&&h()}return i.taskID}static hasTask(i){return this.taskMap.has(i)}static clearTask(i){if(!this.taskMap.has(i))return!0;const{intervalID:r,timeoutID:l,rafID:I,ricID:h,onVisibilitychange:f}=this.taskMap.get(i);return r&&clearInterval(r),l&&clearTimeout(l),I&&SZ&&SZ(I),h&&FIA(h),f&&document.removeEventListener("visibilitychange",f),this.taskMap.delete(i),!0}static isBreakLoop(i){return!this.hasTask(i.taskID)||i.count!==0&&i.loopCount>=i.count&&(this.clearTask(i.taskID),!0)}};de(bL,"taskMap",new Map),de(bL,"currentTaskID",1),de(bL,"sharedWorker",null),de(bL,"workerTasks",new Map);var OIA=bL,fQ=OIA,Vn={LOAD_START:zt.LOADSTART,LOADED_DATA:zt.LOADEDDATA,LOADED_META_DATA:zt.LOADEDMETADATA,MEDIA_TRACK_CHANGED:"media-track-changed",PLAYER_STATE_CHANGED:"player-state-changed",ERROR:"error",AUTOPLAY_FAILED:"autoplay-failed",RESIZE:zt.RESIZE,TIME_UPDATE:"time-update",LEAVE_PICTURE_IN_PICTURE:zt.LEAVE_PICTURE_IN_PICTURE,ENTER_PICTURE_IN_PICTURE:zt.ENTER_PICTURE_IN_PICTURE,USER_RESUME_IN_PIP_OR_FULL_SCREEN:"user-resume-in-pip-or-full-screen",USER_PAUSE_IN_PIP_OR_FULL_SCREEN:"user-pause-in-pip-or-full-screen",ENTER_FULL_SCREEN:"enter-full-screen",LEAVE_FULL_SCREEN:"leave-full-screen",VOLUME_CHANGE:"volume-change",FIRST_FRAME_RENDER:"first-frame-render"},j3={};PW(j3,{create:()=>C4,remove:()=>mU});var oU=new WeakMap;function C4(t,i){oU.has(t)||oU.set(t,[]);const r=oU.get(t),l={add:(I,h)=>("addEventListener"in i?(r.push(i.removeEventListener.bind(i,I,h)),i.addEventListener(I,h)):(r.push(i.off.bind(i,I,h)),i.on(I,h)),l)};return l}function mU(t){const i=oU.get(t);i&&(i.forEach(r=>r()),oU.delete(t))}var PIA=class{constructor(){de(this,"_roomIdMap",new Map),de(this,"_configs"),typeof registerProcessor>"u"&&(this._configs={sdkAppId:"",userId:"",version:DY,env:xj.QCLOUD,browserVersion:mv.name+mv.version,ua:navigator.userAgent})}setConfig({sdkAppId:t,env:i,userId:r,roomId:l}){t!==this._configs.sdkAppId&&(this._configs.sdkAppId=String(t)),this._configs.env=i,this._configs.userId=r,this._roomIdMap.set(r,String(l))}logSuccessEvent(t){!_Y&&Wo.isAbleToUpload&&this._configs.env===xj.QCLOUD&&this.uploadEventToKibana(sB(Rn({},t),{result:"success"}))}logFailedEvent(t){if(_Y||!Wo.isAbleToUpload)return;const{eventType:i,code:r,error:l,userId:I}=t,h={roomId:this._roomIdMap.get(I||this._configs.userId),userId:I,eventType:i,result:"failed",code:r||l?.extraCode||l?.code||qg.UNKNOWN};this._configs.env===xj.QCLOUD&&this.uploadEventToKibana(sB(Rn({},h),{error:l}))}uploadEventToKibana(t){let i=`stat-${t.eventType}-${t.result}`;t.eventType!=="delta-join"&&t.eventType!=="delta-leave"&&t.eventType!=="delta-publish"||(i=`${t.eventType}:${t.delta}`),this.uploadEvent({log:i,userId:t.userId}),t.result==="failed"&&(i=`stat-${t.eventType}-${t.result}-${t.code}`,this.uploadEvent({log:i,userId:t.userId,error:t.error}))}uploadEvent({log:t,userId:i,error:r}){const l={timestamp:LX(),sdkAppId:this._configs.sdkAppId,userId:i||this._configs.userId,version:DY,log:t};r&&(l.errorInfo=r.message,r.stack&&(l.errorInfo+=` +${r.stack}`));const I=K3.enable?qW(l,2002,Number(this._configs.sdkAppId)):JSON.stringify(l);this.sendRequest(VW(this._configs.sdkAppId,OX.LOG),I)}sendRequest(t,i){setTimeout(()=>s7({url:t,body:i,priority:"low"}).catch(()=>{}),2e3)}},ih=new PIA,Av=new WeakMap;function xIA({settings:t={retries:5,timeout:2e3},onError:i,onRetrying:r,onRetryFailed:l}){return function(I,h,f){const w=jW({retryFunction:f.value,settings:t,onError({error:_,retry:k,reject:U,retryFuncArgs:j}){var lA;i?i.call(this,_,()=>{var rA;(rA=Av.get(I))!=null&&rA.has(h)?k():U(_)},U,j):(lA=Av.get(I))!=null&&lA.has(h)?k():U(_)},onRetrying(_,k){var U;T_(r)&&r.call(this,_,k),(U=Av.get(I))!=null&&U.has(h)&&(Av.get(I).get(h).stopRetry=k)},onRetryFailed:l});return f.value=function(..._){const k=Av.get(I);return k?k.set(h,{args:_}):Av.set(I,new Map([[h,{args:_}]])),w.apply(this,_).finally(()=>{var U;return(U=Av.get(I))==null?void 0:U.delete(h)})},f}}var nv=class extends Xn{constructor(t,i){super(t.id,`${i}-player`),this.options=t,this.kind=i,de(this,"id"),de(this,"element",null),de(this,"track"),de(this,"url"),de(this,"attr"),de(this,"mode"),de(this,"muted"),de(this,"_log"),de(this,"isPausedByUserCall",!1),de(this,"_pausedRetryCount"),de(this,"_isElementPlayingFired",!1),de(this,"_interval"),de(this,"_delayDestroyTimeoutId",0),de(this,"_playSuccessResolve"),de(this,"_isReplayByRecreateMediaStreamCalled",!1),de(this,"isPlayCalled",!1),de(this,"isInAutoPlayFailedState",!1),de(this,"isBindAutoPlayEvent",!1),this.id=t.id,this._log=t.log,this.track=t.track,this.muted=t.muted,this._pausedRetryCount=__,this._state="STOPPED",this.bindTrackEvents(),this._log.info(`create ${i}-player ${this.id}`)}get isPlaying(){var t;return this._state==="PLAYING"&&((t=this.element)==null?void 0:t.paused)===!1}get isPaused(){var t;return this._state==="PAUSED"||((t=this.element)==null?void 0:t.paused)===!0}get isStopped(){return this._state==="STOPPED"}setAttr(t){this.attr=t}setUrl(t){this.track&&(this.unbindTrackEvents(),this.element&&(this.element.srcObject=null),this.track=null),t!==this.url&&(this.url=t,t!==null&&this.element&&(this.element.crossOrigin="anonymous",this.element.src=t))}async play(){if(!this.isPlaying)try{this.isPlayCalled=!0,this._delayDestroyTimeoutId&&(clearTimeout(this._delayDestroyTimeoutId),this._delayDestroyTimeoutId=0,this.bindTrackEvents(),this.bindElementEvents()),this.bindAutoPlayEvent(),await new Promise((t,i)=>{this._playSuccessResolve=t,this.element.play().then(t,i)})}catch(t){const i=NY({key:TY.PLAY_FAILED,data:{media:this.kind,error:t}});if(this._log.warn(t),i.includes("NotAllowedError"))throw this.isInAutoPlayFailedState=!0,new pl({code:qg.PLAY_NOT_ALLOWED,message:i})}}stop(t=0){var i;this.isPlayCalled=!1,this.isPausedByUserCall=!1,this._isElementPlayingFired=!1,this.unbindEvents(),t>0&&!N7?this._delayDestroyTimeoutId||((i=this.element)==null||i.remove(),this._log.info(`destroy element after 3 * ${t}`),this._delayDestroyTimeoutId=setTimeout(()=>this.destroyElement(),3*t)):this.destroyElement(),this.handleStopped(zt.ENDED),this._interval>0&&fQ.clearTask(this._interval)}destroyElement(){this.element&&(this._log.debug("destroy element"),this.element.remove(),this.element.src="",this.element.srcObject=null,this.element=null),clearTimeout(this._delayDestroyTimeoutId),this._delayDestroyTimeoutId=0}pause(){this._log.info("pause"),this.isPausedByUserCall=!0,this.doPause()}doPause(){var t;(t=this.element)==null||t.pause()}resume(t=!1){return this.isPausedByUserCall=!1,this.doResume(t)}doResume(t=!1){return this._log.info("resume"),this.isPausedByUserCall||this.isPlaying?Promise.resolve():YlA?this.replay():this.play().catch(()=>{})}setMuted(t){this.element&&(this.element.muted=t),this.muted=t}replay(){return this.stop(),this.play().catch(()=>{})}bindElementEvents(){if(this.element){const t=this.handleElementEvent.bind(this);return C4(this.element,this.element).add(zt.PLAYING,t).add(zt.ENDED,t).add(zt.PAUSE,t).add(zt.ERROR,t).add(zt.LOADSTART,t).add(zt.LOADEDDATA,t).add(zt.LOADEDMETADATA,t)}}bindTrackEvents(t=this.track){if(t){const i=this.handleTrackEvent.bind(this);j3?.create(t,t).add(zt.ENDED,i).add(zt.MUTE,i).add(zt.UNMUTE,i),t.readyState===zt.ENDED&&this.handleTrackEvent({type:zt.ENDED}),t.muted&&this.handleTrackEvent({type:zt.MUTE})}}bindAutoPlayEvent(){this.isBindAutoPlayEvent||(this._log.warn("bindAutoPlayEvent"),ps.on(mn.AUTOPLAY_DIALOG_CLICK_CONFIRM,this.resume,this),this.isBindAutoPlayEvent=!0)}unbindTrackEvents(t=this.track){t&&mU(t)}unbindEvents(){this.element&&mU(this.element),this.unbindTrackEvents(),ps.off(mn.AUTOPLAY_DIALOG_CLICK_CONFIRM,this.resume,this),this.isBindAutoPlayEvent=!1}handleElementEvent(t){switch(t.type){case zt.PLAYING:fU()||(this.isInAutoPlayFailedState=!1),this._isElementPlayingFired=!0,this._log.info(`${this.kind} player is playing`),this.handlePlaying(zt.PLAYING),this._interval&&(fQ.clearTask(this._interval),this._interval=-1);break;case zt.ENDED:this._log.info(`${this.kind} player is ended`),this.handleStopped(zt.ENDED);break;case zt.PAUSE:this._log.info(`${this.kind} player is paused`),this.handlePaused(zt.PAUSE);break;case zt.ERROR:if(this.element&&this.element.error){this.handlePaused(zt.ERROR);const{code:i,message:r}=this.element.error;this._log.error(`${this.kind} ${this._log.isLocal?"local":"remote"} MediaError code: ${i} message: ${r} userAgent: ${navigator.userAgent}`),ih.uploadEvent({log:`stat-${this.kind}-${$L.PLAYER_ERROR}-${i}-${navigator.userAgent}`,error:this.element.error}),OlA||S7?this.emit(Vn.ERROR,this.element.error):this.replayByRecreateMediaStream(this.element.error)}break;case zt.LOADEDDATA:this.kind===zt.VIDEO&&this.emit(Vn.LOADED_DATA);break;case zt.LOADEDMETADATA:this.kind===zt.VIDEO&&this.emit(Vn.LOADED_META_DATA);break;case zt.LOADSTART:this.emit(Vn.LOAD_START)}}replayByRecreateMediaStream(t){if(!this._isReplayByRecreateMediaStreamCalled)return this._isReplayByRecreateMediaStreamCalled=!0,this.doReplayByRecreateMediaStream(1e3).then(()=>{this._log.warn("replayByRecreateMediaStream success"),ih.uploadEvent({log:"stat-replayByRecreateMediaStream-success"}),Ir.addSuccessEvent({key:this.kind===zt.AUDIO?506700:516700})}).catch(()=>{var i;this._log.error("replayByRecreateMediaStream failed"),ih.uploadEvent({log:"stat-replayByRecreateMediaStream-failed"}),Ir.addFailedEvent({key:this.kind===zt.AUDIO?506700:516700,error:(i=this.element)==null?void 0:i.error}),this.emit(Vn.ERROR,t)})}doReplayByRecreateMediaStream(t){return this._log.warn(`delay ${t}ms to recreate mediaStream`),new Promise((i,r)=>{iT(t).then(()=>{this.element&&(this.element.srcObject=null,this.element.srcObject=new MediaStream([this.track]),this._log.warn("recreated mediaStream"),this.element.onerror=()=>{var l,I,h;this._log.warn(`element onerror ${(I=(l=this.element)==null?void 0:l.error)==null?void 0:I.code} fired after recreated mediaStream`),r((h=this.element)==null?void 0:h.error)}),iT(5e3).then(()=>{var l,I;this.isPlaying&&!((l=this.element)!=null&&l.error)||r((I=this.element)==null?void 0:I.error),i()})})}).finally(()=>{this.element&&(this.element.onerror=null)})}async handleTrackEvent(t){const i=t.type;switch(this.options.enableLogTrackState&&this._log[i===zt.UNMUTE?"info":"warn"](`track ${i}`),i){case zt.ENDED:this.handleStopped(zt.ENDED);break;case zt.MUTE:this.handlePaused(zt.MUTE);break;case zt.UNMUTE:this.mode>0?this.handlePlaying(this.mode.toString()):this.element&&(this.element.paused&&!this.isPausedByUserCall&&(this._log.warn("track unmuted and element is paused, resume"),await this.doResume()),this.element&&!this.element.paused&&this._isElementPlayingFired&&this.handlePlaying(zt.UNMUTE))}}handlePlaying(t){var i;return this._log.debug("handlePlaying",t),(i=this._playSuccessResolve)==null||i.call(this,t),t}handlePaused(t){return this._log.debug("handlePaused",t),t}handleStopped(t){return this._log.debug("handleStopped",t),t}getElement(){return this.element}};de(nv,"PlayerEvent",Vn),Cc([xIA({settings:{retries:2,timeout:0},onError(t,i,r,l){l[0]=(l[0]||1e3)+1e3,i()}})],nv.prototype,"doReplayByRecreateMediaStream"),Cc([fu([],"PLAYING",{sync:!0,success(t){this.emit(Vn.PLAYER_STATE_CHANGED,{type:this.kind,state:"PLAYING",reason:t})}})],nv.prototype,"handlePlaying"),Cc([fu("PLAYING","PAUSED",{ignoreError:!0,sync:!0,success(t){this.emit(Vn.PLAYER_STATE_CHANGED,{type:this.kind,state:"PAUSED",reason:t})}})],nv.prototype,"handlePaused"),Cc([fu([],"STOPPED",{sync:!0,success(t){this.emit(Vn.PLAYER_STATE_CHANGED,{type:this.kind,state:"STOPPED",reason:t})}})],nv.prototype,"handleStopped");var Bm="trtc_autoplay",Zj=`${Bm}_mask`,pL=`${Bm}_wrapper`,MZ=`${Bm}_header`,Xj=`${Bm}_content`,P1=`${Bm}_action_wrapper`,$j=`${Bm}_question`,A3=`${Bm}_collapse`,x1=`${Bm}_action_confirm`,vZ=`${Bm}_detail`,RZ="#2473E8",h4="dialog",YIA=`${h4}-show`,VIA=`${h4}-1`,JIA=`${h4}-2`,wZ=!1,W3=!1,fU=()=>W3,I$=`${F3}/${qy()?"zh-cn":"en"}/tutorial-21-advanced-auto-play-policy.html`,_Z=`
    ${qy()?"其他方案?":"Any other solution?"}`,HIA=qy()?`浏览器自动播放策略:在用户与页面产生交互(点击、触摸)之前,浏览器禁止播放有声媒体。该弹窗用于帮助用户恢复音视频播放。${_Z}`:`Autoplay Policy: Before user interacts with the web page (clicking, touching), page will not be allowed to play media with sound. This Dialog is used to help users resume playback. ${_Z}`,qIA=class{constructor(){if(de(this,"content","音视频播放被浏览器拦截,请点击“恢复播放”。"),de(this,"_dialogNode",null),de(this,"_bodyPosition",""),de(this,"_showDetail",!1),de(this,"_isCollapseClicked",!1),de(this,"_isQuestionClicked",!1),qy()||(this.content='Media playback failed. Click the "Resume" to resume playback.'),!wZ){const t=document.createElement("style");t.innerHTML=`.${Zj}{position:fixed;top:0;left:0;right:0;bottom:0;width:100vw;height:100vh;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.5);z-index:1500;}.${Zj} div:not(.${P1}){display:block !important;}.${pL}{padding:14px;background:#fff;border-radius:3px;box-shadow:0px 3px 15px #434343;border:1px solid #d1cfcf;max-width:500px;}.${pL} a{color:${RZ};}.${MZ}{overflow:hidden;text-overflow:ellipsis;font-size:16px;font-weight:600;}.${Xj}{margin:8px 0;}.${P1}{width:100%;display:flex !important;align-items:center;justify-content:right;float:right;}.${A3}{margin-right:auto;cursor:pointer}.${$j}{height:100%;line-height:16px;cursor:pointer;}.${x1}{margin-left:8px;color:#fff;background:${RZ};padding:4px 12px;outline:none;border:1px solid;border-radius:3px;font-weight:bold;}.${x1}:hover{opacity:0.9;}.${A3},.${x1},.${Xj},.${$j}{font-size:14px;}@media screen and (max-width:750px){.${pL}{width:80vw;}}`,document.head.appendChild(t),wZ=!0}this.addDiaLog()}createDiaLog(){const t=document.createElement("template");t.innerHTML=`
    ${location.host}
    ${this.content}
    `.trim();const i=document.createElement("button");i.className=x1,i.innerText=qy()?"恢复播放":"Resume",i.onclick=this.onConfirm.bind(this);const r=document.createElement("div");r.className=$j,r.innerHTML=` - `,r.onclick=this.onQuestionClick.bind(this);const l=document.createElement("div");l.className=Sj,l.innerText=Py()?"详情 >":"Detail >",l.onclick=this.onCollapseClick.bind(this);const u=t.content.firstChild,B=u.querySelector(`.${C1}`);return B.appendChild(l),B.appendChild(r),B.appendChild(i),u}addDiaLog(){eU()||(p3=!0,this._dialogNode=this.createDiaLog(),document.body.appendChild(this._dialogNode),this._dialogNode.onclick=this.onConfirm.bind(this),this._dialogNode.querySelector(`.${oL}`).onclick=t=>t.stopPropagation(),this._bodyPosition=document.body.style.position,document.body.style.position="fixed",jo.info("show autoplay dialog"),$C.uploadEvent({log:tIA}))}deleteDialog(){this._dialogNode&&(document.body.removeChild(this._dialogNode),document.body.style.position=this._bodyPosition,this._dialogNode=null,p3=!1),tU=null}onConfirm(){jo.warn("confirm clicked, try resume stream"),ps.emit(mn.AUTOPLAY_DIALOG_CLICK_CONFIRM),this.deleteDialog()}onCollapseClick(){const t=this._dialogNode.querySelector(`.${J8}`);t.style.visibility=this._showDetail?"hidden":"visible",t.style.height=`${this._showDetail?0:"fit-content"}`,this._showDetail=!this._showDetail,this._isCollapseClicked||$C.uploadEvent({log:iIA}),this._isCollapseClicked=!0}onQuestionClick(){window.open(w7,"_blank"),this._isQuestionClicked||$C.uploadEvent({log:oIA}),this._isQuestionClicked=!0}},tU=null;function rIA(){tU||(tU=new nIA)}function aIA(){tU&&tU.deleteDialog()}var PL,Gy=class extends $M{constructor(t){super(t,zt.VIDEO),de(this,"stat",{}),de(this,"_calculateTimeout",-1),de(this,"viewMirror",!1),de(this,"objectFit","cover"),de(this,"container"),de(this,"canvas"),de(this,"shouldRenderAlpha",!1),de(this,"_preSize",{width:0,height:0}),de(this,"posterImg"),de(this,"pipWindow"),de(this,"enterPIPPromise"),de(this,"_originContainerPosition"),de(this,"_isResettingSrcObject",!1),de(this,"_wrapper",null),de(this,"_useWrapper",!1),de(this,"_isFirstFrameRenderEmitted",!1),this.mode=t.canvas?1:0,this.container=t.container,this.canvas=t.canvas,$n(t.viewMirror)||(this.viewMirror=t.viewMirror),$n(t.objectFit)||(this.objectFit=t.objectFit),this.initializeElement()}get isPlaying(){var t;return this._state==="PLAYING"&&(!this.element||!this.element.paused)&&((t=this.track)==null?void 0:t.readyState)==="live"&&!this.track.muted}initializeElement(){const t=document.createElement(zt.VIDEO);this.track&&this.mode!==2&&(t.srcObject=new MediaStream([this.track])),t.muted=!0,t.setAttribute("id",`video_${this.id}`),t.setAttribute("style",this.styleAttribute),this.canvas&&this.canvas.setAttribute("style",this.styleAttribute),t.setAttribute("autoplay","autoplay"),t.setAttribute("playsinline","playsinline"),this.element=t,tC&&(t.poster="data:,"),this._appendToWrapper(),this.bindElementEvents(),this.calculateStat(),this._bindFirstFrameRenderEvent(t)}_bindFirstFrameRenderEvent(t){const i=()=>{if(this._isFirstFrameRenderEmitted)return;this._isFirstFrameRenderEmitted=!0;const r=t.videoWidth||0,l=t.videoHeight||0;this._log.info(`first frame render: ${r}x${l}`),this.emit(Vn.FIRST_FRAME_RENDER,{width:r,height:l})};typeof t.requestVideoFrameCallback=="function"?t.requestVideoFrameCallback(i):t.addEventListener("loadeddata",i,{once:!0})}get styleAttribute(){let t=this._useWrapper?`grid-area:1/1;width:100%;height:100%;object-fit:${this.objectFit};${this.shouldRenderAlpha?"":"background-color:black"};`:`width:100%;height:100%;object-fit:${this.objectFit};${this.shouldRenderAlpha?"":"background-color:black"};`;return this.viewMirror&&(t+="transform:scaleX(-1);"),t}setLiveMode(t){if(this._useWrapper!==t&&(this._useWrapper=t,this.elementToRender&&this.elementToRender.setAttribute("style",this.styleAttribute),this.container&&this.elementToRender))if(t){const i=this._getOrCreateWrapper();i.insertBefore(this.elementToRender,i.firstChild)}else this.container.appendChild(this.elementToRender),this._cleanupWrapper()}setContainer(t){if(this.container===t)return;const i=this._wrapper,r=this.container;this.container=t,this._pausedRetryCount=p_,this.track&&this.elementToRender&&this._appendToWrapper(),i&&r&&r!==this.container&&i.isConnected&&i.children.length===0&&i.remove()}_getOrCreateWrapper(){if(!this.container)throw new Error("[VideoPlayer] container is required");let t=this.container.querySelector("[data-trtc-video-wrapper]");return t||(t=document.createElement("div"),t.setAttribute("data-trtc-video-wrapper","true"),t.style.cssText="display:grid;width:100%;height:100%;",this.container.appendChild(t)),this._wrapper=t,t}_appendToWrapper(t){const i=t??this.elementToRender;if(this.container&&i)if(this._useWrapper){const r=this._getOrCreateWrapper();r.insertBefore(i,r.firstChild)}else this.container.appendChild(i)}bindElementEvents(){const t=super.bindElementEvents();this.handleElementEvent=this.handleElementEvent.bind(this),this.handleFullscreenChange=this.handleFullscreenChange.bind(this),this.handleVolumeChange=this.handleVolumeChange.bind(this),t&&t.add(zt.ENTER_PICTURE_IN_PICTURE,this.handleElementEvent).add(zt.LEAVE_PICTURE_IN_PICTURE,this.handleElementEvent).add(zt.RESIZE,this.handleElementEvent),this.element&&(this.element.addEventListener(zt.FULLSCREEN_CHANGE,this.handleFullscreenChange),this.element.addEventListener("webkitbeginfullscreen",this.handleFullscreenChange),this.element.addEventListener("webkitendfullscreen",this.handleFullscreenChange),this.element.addEventListener("volumechange",this.handleVolumeChange))}handleTrackEvent(t){var i;return t.type===zt.MUTE&&((i=this.stat)!=null&&i.fps&&(this.stat.fps=0),this.isFullscreen()&&this.resetSrcObjectToReplay()),super.handleTrackEvent(t)}handleFullscreenChange(){this.isFullscreen()?(this._log.info("enter fullscreen"),this.emit(Vn.ENTER_FULL_SCREEN)):(this._log.info("leave fullscreen"),this.emit(Vn.LEAVE_FULL_SCREEN))}handleVolumeChange(){var t;(this.isPictureInPicture()||this.isFullscreen())&&this.emit(Vn.VOLUME_CHANGE,{muted:(t=this.element)==null?void 0:t.muted})}handleElementEvent(t){var i,r,l,u,B,f;if(this.mode===2)return;super.handleElementEvent(t);const w=t.type,_=this.isPictureInPicture(),k=this.isFullscreen(),F=t.isTrusted&&(_&&od||k);if(w===zt.PLAYING&&F&&!this._isResettingSrcObject&&(this._log.warn("user resume in "+(k?"fullscreen":"pip")),this.emit(Vn.USER_RESUME_IN_PIP_OR_FULL_SCREEN)),w===zt.PAUSE&&(F&&(this._log.warn("user pause in "+(k?"fullscreen":"pip")),this.emit(Vn.USER_PAUSE_IN_PIP_OR_FULL_SCREEN)),this.container&&!this.container.isConnected&&(this._log.warn(`${this.kind} player has been remove, element ID: ${this.container.id}`),Y_(500).then(()=>{var j;(j=this.container)!=null&&j.isConnected&&(this._pausedRetryCount=p_,this._log.info(`view container ${this.container.id} is in dom, reset pausedRetryCount`))})),this._pausedRetryCount>0&&!eU()&&!this.isPausedByUserCall&&!F&&(this._log.info(`[${p_-this._pausedRetryCount+1}/${p_}] ${this.kind} player auto resume when paused`),this.doResume(),this._pausedRetryCount--),pu&&!F&&(this._interval=pQ.run("timeout",()=>{this.element&&this._state==="PAUSED"&&!this.isPausedByUserCall&&this.doResume()},{delay:3e3})),this.stat.fps&&(this.stat.fps=0)),this.viewMirror&&this.element){const j=this.element.style.transform;w===zt.ENTER_PICTURE_IN_PICTURE?this.element.style.transform=j.replace("scaleX(-1)",""):w!==zt.LEAVE_PICTURE_IN_PICTURE||j.includes("scaleX")||(this.element.style.transform=`${j} scaleX(-1)`)}w===zt.RESIZE&&(this._preSize.height===((i=this.element)==null?void 0:i.videoHeight)&&this._preSize.width===((r=this.element)==null?void 0:r.videoWidth)||(this._log.info(`video size changed to ${(l=this.element)==null?void 0:l.videoWidth}x${(u=this.element)==null?void 0:u.videoHeight}`),this._preSize.height=((B=this.element)==null?void 0:B.videoHeight)||0,this._preSize.width=((f=this.element)==null?void 0:f.videoWidth)||0,this.emit(Vn.RESIZE,{newWidth:this._preSize.width,newHeight:this._preSize.height}))),w===zt.LEAVE_PICTURE_IN_PICTURE&&(this._log.warn("exit pip"),this.isPaused&&!this.isPausedByUserCall&&(this._log.warn("resume after exit pip"),this.doResume()),this.resetSrcObjectToReplay(),this.emit(Vn.LEAVE_PICTURE_IN_PICTURE)),w===zt.ENTER_PICTURE_IN_PICTURE&&this.emit(Vn.ENTER_PICTURE_IN_PICTURE)}resetSrcObjectToReplay(){tC&&Qj&&this.isPlayCalled&&this.element&&this.track&&!this.isPausedByUserCall&&(this._log.warn("reset srcObject to replay for android chromium"),this._isResettingSrcObject=!0,this.element.srcObject=new MediaStream([this.track]),this.element.play().catch(t=>{this._log.warn("play failed after reset srcObject",t)}).finally(()=>{this._isResettingSrcObject=!1}))}setCanvas(t,i=1){var r,l;this.canvas!==t&&((r=this.canvas)==null||r.remove(),t?.setAttribute("style",this.styleAttribute),this.canvas=t,this.mode=t?i:0,this.mode===2&&this.setTrack(t.captureStream().getVideoTracks()[0]),t?((l=this.element)==null||l.remove(),this._appendToWrapper(t)):this.element&&this._appendToWrapper(this.element))}setAttr(t){const i=Object.assign({autoplay:"autoplay",playsinline:"playsinline",muted:!0},t);i.style=Object.assign({width:"100%",height:"100%"},i.style),super.setAttr(i)}get mirror(){return this.viewMirror}setRect(t,i){this.elementToRender&&(this.elementToRender.style.width=`${t}px`,this.elementToRender.style.height=`${i}px`)}setViewMirror(t){this.elementToRender&&(this.elementToRender.style.transform=t?"scaleX(-1)":""),this.viewMirror=t}setObjectFit(t){this.elementToRender&&(this.elementToRender.style.objectFit=`${t}`),this.objectFit=t}setPoster(t,i=!1){return new Promise(r=>{if(!this.element||(this._log.info("setPoster",t.slice(0,10)),t===""?this.element.removeAttribute("poster"):this.element.poster=t,!(i&&(od||$d))))return r();if(t==="")return this.removePosterImg(),r();if(this.posterImg)return r();const l=document.createElement("img");l.src=t;const u=window.getComputedStyle(this.element),B=u.objectFit||this.objectFit;let f=1;if(this._useWrapper){const w=parseInt(u.zIndex,10);isNaN(w)||(f=w+1)}l.style.cssText=this._useWrapper?`grid-area:1/1;z-index:${f};width:100%;height:100%;object-fit:${B};`:`position:absolute;top:0;left:0;width:100%;height:100%;object-fit:${B};`,l.onload=async()=>{try{l.decode&&await l.decode(),this.container&&!this._useWrapper&&window.getComputedStyle(this.container).position==="static"&&(this._originContainerPosition=this.container.style.position,this.container.style.position="relative"),this.posterImg=l;const w=this._useWrapper?this._wrapper:this.container;w?.appendChild(l),iY()&&pv<=17&&this.elementToRender&&(this.elementToRender.style.visibility="hidden")}catch(w){this._log.warn("decode poster image error",w)}return r()},l.onerror=()=>(this._log.warn("load poster image error"),r())})}removePosterImg(){this.posterImg&&(iY()&&pv<=17&&this.elementToRender&&(this.elementToRender.style.visibility=""),this.posterImg.remove(),URL.revokeObjectURL(this.posterImg.src),this._useWrapper||!this.container||$n(this._originContainerPosition)||this.container.style.position!=="relative"||(this.container.style.position=this._originContainerPosition),delete this.posterImg)}get hasPoster(){var t;return!!this.posterImg||!!((t=this.element)!=null&&t.getAttribute("poster"))}async pause(t=!0){super.pause(),this.isPictureInPicture()||this.hasPoster||!(Qj||t&&($d||od))||await this.setPoster(this.getVideoFrame(),!0)}resume(t=!1){return super.resume(t).then(()=>{var i;(this.posterImg||(i=this.element)!=null&&i.poster)&&this.setPoster("",!0)})}doResume(t=!1){return this.isPaused&&t&&this.element&&this.track&&Qj&&this.track.kind==="video"&&(this.element.srcObject=new MediaStream([this.track])),super.doResume()}stop(t=0){var i;this.isPictureInPicture()&&this.exitPictureInPicture().catch(r=>{}),this.isFullscreen()&&this.exitFullscreen().catch(r=>{}),this.element&&(this.element.removeEventListener(zt.FULLSCREEN_CHANGE,this.handleFullscreenChange),this.element.removeEventListener("webkitbeginfullscreen",this.handleFullscreenChange),this.element.removeEventListener("webkitendfullscreen",this.handleFullscreenChange),this.element.removeEventListener("volumechange",this.handleVolumeChange)),this._isFirstFrameRenderEmitted=!1,super.stop(t),(i=this.canvas)==null||i.remove(),this.removePosterImg(),this._useWrapper&&this._cleanupWrapper()}_cleanupWrapper(){this._wrapper&&this._wrapper.children.length===0&&this._wrapper.remove(),this._wrapper=null}play(t){if($n(t?.isLiveStream)||this.setLiveMode(t.isLiveStream),this.element){if(this.elementToRender&&this.container)if(this._useWrapper){const i=this._getOrCreateWrapper();this.elementToRender.parentElement!==i&&i.insertBefore(this.elementToRender,i.firstChild)}else this.elementToRender.parentElement!==this.container&&this.container.append(this.elementToRender)}else this.initializeElement();return this.mode===2?Promise.resolve():super.play()}get elementToRender(){return this.canvas||this.element}setTrack(t){t!==this.track&&(this.unbindTrackEvents(),this.track=t,this.emit(Vn.MEDIA_TRACK_CHANGED,t),t!==null&&(this.bindTrackEvents(),this.element&&this.mode!==2&&(this.element.srcObject=new MediaStream([t]),this.element.remove()),this._appendToWrapper()))}getVideoFrame(){if(this.canvas)return this.canvas.toDataURL("image/png");if(!this.element)return"";const t=document.createElement("canvas");return t.width=this.element.videoWidth,t.height=this.element.videoHeight,t.getContext("2d").drawImage(this.element,0,0),t.toDataURL("image/png")}getElement(){return this.element}calculateStat(){try{if(bW()&&this.element&&this._calculateTimeout<0){let t=0,i=null;const r=(l,u)=>{this.stat.width=u.width,this.stat.height=u.height,i&&(this.stat.fps=Math.round((u.presentedFrames-i.presentedFrames)/(l-t)*1e3)),t=l,i=u,this._calculateTimeout=-1,this.element&&(this._calculateTimeout=setTimeout(()=>{var B;return(B=this.element)==null?void 0:B.requestVideoFrameCallback(r)},2e3))};this.element.requestVideoFrameCallback(r)}}catch(t){this._log.warn("init stat failed",t)}}async enterFullscreen(){const t=this.elementToRender;if(!t)throw this._log.warn("no element to render, cannot enter fullscreen"),new Error("No element available for fullscreen");if(pu&&this.isPictureInPicture()){this._log.info("exit pip before entering fullscreen");try{await this.exitPictureInPicture()}catch(i){this._log.warn("exit pip failed before fullscreen:",i)}}try{if(t.requestFullscreen)await t.requestFullscreen();else if(t.webkitRequestFullscreen)await t.webkitRequestFullscreen();else if(t.webkitEnterFullscreen)await t.webkitEnterFullscreen();else if(t.mozRequestFullScreen)await t.mozRequestFullScreen();else{if(!t.msRequestFullscreen)throw new Error("Fullscreen API not supported");await t.msRequestFullscreen()}this._log.info("entered fullscreen mode")}catch(i){throw this._log.error("failed to enter fullscreen:",i),i}}async exitFullscreen(){try{if(!this.isFullscreen())return;if(document.exitFullscreen)await document.exitFullscreen();else if(document.webkitExitFullscreen)await document.webkitExitFullscreen();else if(document.mozCancelFullScreen)await document.mozCancelFullScreen();else{if(!document.msExitFullscreen)throw new Error("Exit fullscreen API not supported");await document.msExitFullscreen()}this._log.info("exited fullscreen mode")}catch(t){throw this._log.error("failed to exit fullscreen:",t),t}}isFullscreen(){const t=this.elementToRender;return t?this.element&&this.element.webkitDisplayingFullscreen?!this.isPictureInPicture():(document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement)===t:!1}async toggleFullscreen(){this.isFullscreen()?await this.exitFullscreen():await this.enterFullscreen()}async enterPictureInPicture(){this.enterPIPPromise=this._enterPictureInPicture();try{return await this.enterPIPPromise}finally{delete this.enterPIPPromise}}async _enterPictureInPicture(){try{if(!this.element)throw new Error("No video element available for pip");if(this.canvas&&this.mode!==1)throw new Error("pip is not supported for canvas-only mode");const{element:t}=this;if(t.requestPictureInPicture){this._log.info("requestPictureInPicture");const i=await t.requestPictureInPicture();return this.pipWindow=i,this._log.info("entered pip mode"),this.elementToRender===this.canvas&&(this.canvas.remove(),this._appendToWrapper(this.element)),i}if(t.webkitSetPresentationMode)return this._log.info("webkitSetPresentationMode"),await t.webkitSetPresentationMode("picture-in-picture"),this._log.info("entered pip mode (webkit)"),{};throw new Error("pip API not supported")}catch(t){throw this._log.error("failed to enter pip:",t.name,t.message),t}}async exitPictureInPicture(){var t;try{if(!this.isPictureInPicture())return;if(delete this.pipWindow,document.pictureInPictureElement&&document.exitPictureInPicture)await document.exitPictureInPicture(),this.elementToRender===this.canvas&&((t=this.element)==null||t.remove(),this._pausedRetryCount=p_,this._appendToWrapper(this.canvas)),this._log.info("exited pip mode");else{if(!this.element||!this.element.webkitSetPresentationMode)throw new Error("Exit pip API not supported or not in PiP mode");await this.element.webkitSetPresentationMode("inline"),this._log.info("exited pip mode (webkit)")}}catch(i){throw this._log.error("failed to exit pip:",i),i}}isPictureInPicture(){if(!this.element)return!1;const{element:t}=this;return document.pictureInPictureElement?document.pictureInPictureElement===t:!!t.webkitPresentationMode&&t.webkitPresentationMode==="picture-in-picture"}async togglePictureInPicture(){this.isPictureInPicture()?await this.exitPictureInPicture():await this.enterPictureInPicture()}};async function gIA(t,i){if(!t.audioWorklet)return Promise.reject("audioWorklet is not supported");try{await t.audioWorklet.addModule(i),jo.info("worklet addModule success")}catch(r){throw jo.info(`worklet addModule catch error. ${r.message}`),r}}typeof AudioContext<"u"?PL=AudioContext:typeof webkitAudioContext<"u"?PL=webkitAudioContext:typeof mozAudioContext<"u"&&(PL=mozAudioContext);var hu,cIA=1500,j8=-1,B1=0,xL=-1,m3=!1,W8=0,z8=-1,Z8=-1;function _7(){try{if(hu)return;(hu=new PL({sampleRate:48e3})).onstatechange=()=>{jo.info(`context state: ${hu.state}${hu.state!=="running"?` visibilityState: ${document.visibilityState}`:""}`),U_()},clearTimeout(j8)}catch(t){jo.error(`initAudioContext failed: ${t} typeof AudioContextClass: ${typeof PL}`),j8=setTimeout(_7,1e3)}}_7();var U_=()=>{hu.state==="suspended"?(B1=xc(),lIA(),cY(),document.addEventListener("click",U_)):hu.state==="interrupted"?cY():(B1&&(lr.addNumber({key:507800,value:xc()-B1,split:[0,500,1e3,1500,2e3,3e3,4e3,5e3,1e4,3e4],max:6e4}),B1=0),IIA(),document.removeEventListener("visibilitychange",U_),document.removeEventListener("click",U_))},Mj=0,vj=-1;function cY(){return new Promise((t,i)=>{if(hu.state==="running")return t();Date.now()-Mj<1e3?(clearTimeout(vj),vj=setTimeout(()=>{Mj=Date.now(),hu.resume().then(t,i)},1e3)):(clearTimeout(vj),Mj=Date.now(),hu.resume().then(t,i))}).catch(t=>{jo.warn(`context resume failed: ${t}`),document.addEventListener("visibilitychange",U_)})}function lIA(){xL===-1&&(xL=setTimeout(()=>{hu.state==="suspended"&&(m3=!0,ps.emit("155",{isSuspended:!0}))},cIA))}function IIA(){xL!==-1&&(clearTimeout(xL),xL=-1,m3&&(m3=!1,ps.emit("155",{isSuspended:!1})))}function uIA(){if(!pu||Z8!==-1)return;const t=()=>{xc()-W8<500||(hu&&hu.state==="running"&&hu.currentTime===z8&&(jo.warn("context is fake running, auto resume"),hu.suspend().catch(i=>{jo.warn(`context suspend failed: ${i}`)})),z8=hu.currentTime,W8=xc())};Z8=setInterval(()=>{t()},2e3),document.addEventListener("visibilitychange",()=>{document.visibilityState==="visible"&&t()})}document.addEventListener("click",U_);var Ky=t=>hu,Iv=class{constructor(t){this.name=t,de(this,"node"),de(this,"node2"),de(this,"pre",new Set),de(this,"next",new Set),de(this,"context"),de(this,"connectedNodes",new Set),de(this,"nextInputChannelMap",new Map),de(this,"_channelCount",1)}get channelCount(){return this._channelCount}set channelCount(t){this._channelCount=t,this.setChannelCount(this.node,t),this.setChannelCount(this.node2,t),this.next.forEach(i=>i.channelCount=t)}setChannelCount(t,i){!t||t instanceof ScriptProcessorNode||(t.channelCountMode="explicit",t.channelCount=i||this.channelCount||1)}setContext(t){this.context=t,this.node&&t.addMixWeight()}removeContext(){var t;this.node&&((t=this.context)==null||t.reduceMixWeight()),delete this.context}replaceNode(t){var i;if(t!==this.node)try{this.node?this._disconnect():(i=this.context)==null||i.addMixWeight(),this.node=t,this.setChannelCount(this.node),this.preNodeReconnect(),this.reconnect()}catch(r){jo.error(r)}}setNode(t,i){var r;if(!this.node)try{(r=this.context)==null||r.addMixWeight(),this.node=t,this.setChannelCount(this.node),i&&(this.node2=i,this.setChannelCount(this.node2)),this.preNodeReconnect(),this.reconnect(),lr.addSuccessEvent({key:502701})}catch(l){jo.error(l),lr.addFailedEvent({key:502701,error:l})}}deleteNode(){var t;if(this.node)try{this._disconnect(),delete this.node,delete this.node2,(t=this.context)==null||t.reduceMixWeight(),this.preNodeReconnect(),lr.addSuccessEvent({key:502702})}catch(i){jo.error(i),lr.addFailedEvent({key:502702,error:i})}}preNodeReconnect(){this.pre.forEach(t=>{t.node?t.reconnect():t.preNodeReconnect()})}connectNext(t){this.next.forEach(i=>{const r=this.nextInputChannelMap.get(i);t._connect(i.node,r)||i.connectNext(t)})}_connect(t,i=0){return!(!this.node||!t)&&((this.node2||this.node).connect(t,0,i),this.connectedNodes.add(t),!0)}_disconnect(){this.connectedNodes.forEach(t=>{var i;return(i=this.node2||this.node)==null?void 0:i.disconnect(t)}),this.connectedNodes.clear()}reconnect(){this._disconnect(),this.connectNext(this)}pipeTo(t,i=0){return this.next.add(t),t.pre.add(this),this.nextInputChannelMap.set(t,i),t}},EIA=class extends Iv{constructor(t=256){super(),this.fftSize=t,de(this,"dataArray",new Uint8Array(0))}setNode(t){t.fftSize=this.fftSize,this.dataArray=new Uint8Array(t.frequencyBinCount),super.setNode(t)}getByteTimeDomainData(){var t;return(t=this.node)==null||t.getByteTimeDomainData(this.dataArray),this.dataArray}get level(){var t;return(t=this.node)==null||t.getByteTimeDomainData(this.dataArray),Math.max(...this.dataArray)/128-1}get timeDomainPathData(){const t=this.getByteTimeDomainData();let i=0,r=0,l=`M${i},${r}`;for(let u=0;uthis.initAudioWorklet()).catch(i=>(this._log.error(`volumeMeter preload error: ${i}`),this.initScriptProcessor()))}initAudioWorklet(){if(!this._audioWorkletNode)try{this._audioWorkletNode=new AudioWorkletNode(tm.audioContext,"volume-meter");let i=!1;this._audioWorkletNode.port.onmessage=r=>{tm.lastMessageTime=Date.now(),this._volume=r.data.volume||0,this._volumeDb=r.data.volumeDb||0,!i&&r.data.cacheLen&&r.data.outputLen&&(this._log.warn("worklet play success"),i=!0)},this.handleAudioLevelInterval({interval:this._interval})}catch(i){this._log.error(`volumeMeter init audio worklet error: ${i}`),$C.logFailedEvent({userId:this._log.userId,eventType:bL.LOAD_WORKLET,error:i}),this.initScriptProcessor()}}initScriptProcessor(){if(!this._scriptProcessorNode)try{this._scriptProcessorNode=Ky("volume-meter").createScriptProcessor(2048,1,1),this._scriptProcessorNode.onaudioprocess=i=>{tm.lastMessageTime=Date.now();const r=i.inputBuffer.getChannelData(0);let l=0;for(let u=0;u>2);t.copyTo(r,{planeIndex:0}),this.node.port.postMessage({name:"chunk",data:r},[r.buffer]),t.close()}}},BIA=W_(dU()),AZ=t=>i=>i.deviceId===t,Rj=class{constructor(t,i){de(this,"kind"),de(this,"type"),de(this,"devices",[]),this.kind=t,this.type=i}update(t,i){const r=t.filter(l=>l.kind===`${this.kind}${this.type.toLocaleLowerCase()}`);this.devices.length===1&&T7(this.devices[0])||i&&(r.forEach(l=>{if(l.deviceId&&!this.devices.find(AZ(l.deviceId))){const u=`${this.kind}${this.type}Added`;jo.warn(`${u}: ${JSON.stringify(l)}`),i.emit(u,l)}}),this.devices.forEach(l=>{if(l.deviceId&&!r.find(AZ(l.deviceId))){const u=`${this.kind}${this.type}Removed`;jo.warn(`${u}: ${JSON.stringify(l)}`),i.emit(u,l)}})),this.devices=r}hasDevice(t){return!!this.devices.find(i=>i.deviceId===t)}},QIA=class extends BIA.EventEmitter{constructor(){super(),de(this,"audioInputs",new Rj(zt.AUDIO,"Input")),de(this,"videoInputs",new Rj(zt.VIDEO,"Input")),de(this,"audioOutputs",new Rj(zt.AUDIO,"Output")),this.init(),navigator.mediaDevices&&(navigator.mediaDevices.addEventListener&&navigator.mediaDevices.addEventListener("devicechange",()=>this.update()),"ondevicechange"in navigator.mediaDevices||pQ.run("interval",()=>{this.update()},{delay:1e4}))}init(){f3().then(t=>{this.audioInputs.update(t),this.videoInputs.update(t),this.audioOutputs.update(t)})}async update(t=0){const i=await f3(t);return this.audioInputs.update(i,this),this.videoInputs.update(i,this),this.audioOutputs.update(i,this),this}hasBlueTooth(){var t;if(1e3*((t=Ky())==null?void 0:t.outputLatency)>150)return!0;const i=["bluetooth","air","wireless","bt","tws","buds","headset","headphone"];return this.audioOutputs.devices.some(r=>i.some(l=>r.label.toLowerCase().includes(l)))||this.audioInputs.devices.some(r=>i.some(l=>r.label.toLowerCase().includes(l)))}},BQ=eX||AX?null:new QIA;function T7(t){return t.deviceId===t.groupId&&t.groupId===""}async function f3(t=0){if(HY()||!_W())return[];let i=await navigator.mediaDevices.enumerateDevices();if(t!==0){const r={audio:!1,video:!1};if(i.forEach(l=>{T7(l)&&(l.kind===zt.AUDIO_INPUT?r.audio=!0:l.kind===zt.VIDEO_INPUT&&(r.video=!0))}),t===2&&(r.audio=!1),t===1&&(r.video=!1),r.audio||r.video){let l;try{l=await navigator.mediaDevices.getUserMedia(r),r.audio&&cY()}catch(u){jo.debug("capture before getDevices failed: ",u)}i=await navigator.mediaDevices.enumerateDevices(),l?.getTracks().forEach(u=>u.stop())}}return i.map((r,l)=>{const u={kind:r.kind,deviceId:r.deviceId,groupId:r.groupId,label:r.label||`${r.kind}_${l}`};return r.deviceId.length>0&&FW.add(`${r.deviceId}_${r.kind}`),r.getCapabilities&&(u.getCapabilities=()=>r.getCapabilities()),u})}function iU(t=!1){return BQ.update(t?1:0).then(i=>i.audioInputs.devices)}function uv(t=!1){return BQ.update(t?2:0).then(i=>i.videoInputs.devices)}var eZ=!1;async function pIA(){try{eZ||(eZ=!0,jo.info(`speakers:${(await mIA()).map(t=>` ${t.deviceId.slice(0,8)}: ${t.label}`)}`))}catch{}}async function mIA(t=!1){return(pu||od)&&(t=!1),BQ.update(t?1:0).then(i=>i.audioOutputs.devices)}var U1,FW=new Set;function fIA(t){if(t instanceof CanvasCaptureMediaStreamTrack||!(t instanceof MediaStreamTrack))return!1;const i=t.label.toLocaleLowerCase();if(i.includes("camera")||i.includes("webcam"))return!0;const r=`${(t?.getSettings()||{}).deviceId}_${zt.VIDEO_INPUT}`;return!!FW.has(r)}function yIA(t){if(t instanceof CanvasCaptureMediaStreamTrack||!(t instanceof MediaStreamTrack))return!1;const i=t.label.toLocaleLowerCase();if(i.includes("mic")||i.includes("麦克风"))return!0;const r=`${(t?.getSettings()||{}).deviceId}_${zt.AUDIO_INPUT}`;return!!FW.has(r)}async function DIA(t,i){const r=(await iU()).find(l=>l.deviceId===oX);return!i&&r?.groupId===t||r?.groupId===t&&r.label===i}async function SIA({newDeviceId:t,oldDeviceId:i,oldGroupId:r,oldLabel:l,kind:u}){return t===i&&(u!==zt.AUDIO||t!==oX||await DIA(r,l))}var MIA=class extends dIA{constructor(t){super(),this.log=t,de(this,"volumeMeter"),de(this,"volumeMeterAfter3A"),de(this,"volumeDestination"),de(this,"analyser",new EIA),this.volumeMeter=new $8({log:this.log}),this.volumeMeterAfter3A=new $8({log:this.log}),this.volumeDestination=new Iv,this.volumeMeter.pipeTo(this.volumeDestination)}destroy(){this.gain.deleteNode(),this.volumeMeter.deleteNode(),this.analyser.deleteNode(),this.source.deleteNode(),this.destination.deleteNode(),this.volumeDestination.deleteNode()}},vIA=class extends $M{constructor(t){super(t,zt.AUDIO),de(this,"_outputDeviceId"),de(this,"_floatVolume",1),de(this,"_destination"),de(this,"pipeline"),de(this,"volumeMeterMode","worklet"),de(this,"enableVolumeControlInIOS"),this.enableVolumeControlInIOS=t.enableVolumeControlInIOS,this.mode=0,t.url&&(this.url=t.url),this.pipeline=new MIA(this._log)}setTrack(t){}get duration(){var t;return Math.floor(1e3*(((t=this.element)==null?void 0:t.duration)||0))}get currentTime(){var t;return Math.floor(1e3*(((t=this.element)==null?void 0:t.currentTime)||0))}set currentTime(t){this.element&&(this.element.currentTime=t/1e3)}getMediaStream(){return this.pipeline.stream||(this.track?new MediaStream([this.track]):null)}initializeElement(t){if((mQ==="15.2"||mQ==="15.3"||mQ==="15.4")&&this.muted)return void this._log.info("audioElement is muted.");this._log.info("audio player initializeElement");const i=U1||new Audio;i.setAttribute("autoplay","autoplay"),i.srcObject=this.getMediaStream(),i.muted=this.muted,this.url&&(i.crossOrigin="anonymous",i.src=this.url),this.element=i,this.setVolume(Qv(t)?t/100:this._floatVolume),i===U1&&(U1=void 0),this.options.enableTimeupdateEvent&&(this.element.ontimeupdate=()=>this.emit(Vn.TIME_UPDATE,this.currentTime)),this.bindElementEvents()}async play(t){if(this.track||this.url){try{!this.pipeline.source.node&&this.track&&this.pipeline.replaceSource(this.track),this.element||this.initializeElement(t?.volume),this._outputDeviceId&&await this.setSinkId(this._outputDeviceId),this.volumeMeterMode==="worklet"?(this.pipeline.volumeMeter.init(),this.pipeline.volumeMeterAfter3A.init()):this.volumeMeterMode==="analyser"&&this.pipeline.analyser.setNode(Ky("player").createAnalyser()),pIA()}catch(i){throw this._log.warn(`audio play error: ${i}`),zX(mQ,"18.7",!0)&&this.bindAutoPlayEvent(),i}return super.play()}}stop(t=0){this.pipeline.destroy(),super.stop(t)}setVolume(t){this._floatVolume=t,this.element&&(this.element.volume=t)}async setSinkId(t){var i,r;this._outputDeviceId!==t&&(this._outputDeviceId=t),this.element&&this.element.sinkId!==t&&await((r=(i=this.element).setSinkId)==null?void 0:r.call(i,t))}get useDestination(){return!!this.pipeline.stream}setLoop(t){this.element&&(this.element.loop=t)}getAudioLevel(){return this.pipeline.volumeMeter.getCalculatedVolume()}getInternalAudioLevel(){return this.pipeline.volumeMeter.getInternalAudioLevel()}getInternalAudioLevelAfter3A(){return this.pipeline.volumeMeterAfter3A.getInternalAudioLevel()}},RIA=class extends vIA{constructor(t){super(t),de(this,"_sourceElement"),de(this,"_output",new Iv),this.pipeline.source.pipeTo(this.pipeline.gain),this.pipeline.gain.pipeTo(this.pipeline.volumeMeter).pipeTo(this._output),this.pipeline.gain.pipeTo(this.pipeline.destination)}setOutput(){this.mode=1,this._output.setNode(Ky().destination)}write(t){this.pipeline.volumeMeter.write(t)}setTrack(t){var i,r,l;((r=(i=this.element)==null?void 0:i.error)==null?void 0:r.code)!==MediaError.MEDIA_ERR_DECODE&&this.track!==t&&(this.unbindTrackEvents(),this.track=t,this.emit(Vn.MEDIA_TRACK_CHANGED,t),t?(this.bindTrackEvents(),this._sourceElement?this._sourceElement.srcObject=new MediaStream([t]):!this.useDestination&&this.element&&(this.element.srcObject=new MediaStream([t])),this.pipeline.source.channelCount=((l=t.getSettings())==null?void 0:l.channelCount)||1,this.pipeline.replaceSource(t)):this.pipeline.source.deleteNode())}setVolume(t){var i;const r=t<=1&&!iY();if(!(this._floatVolume===t&&(r&&((i=this.element)==null?void 0:i.volume)===t||!r&&this.pipeline.volume===t)))if(this._floatVolume=t,this.useDestination)this.pipeline.setVolume(t),this._log.info(`set pipeline volume: ${t}`);else if(r)this.element?(this._log.info(`set element volume: ${t}`),this.element.volume=t):this._log.info("set element volume: no element");else{if(iY()){if(!this.enableVolumeControlInIOS)return;uIA()}if($d&&!this.pipeline.source.node)return void this._log.warn("set pipeline volume failed: no source node");this._log.info(`start set pipeline volume: ${t}`),this.pipeline.setVolume(t),this.element&&!this._sourceElement&&(this._destination||(this._destination=Ky().createMediaStreamDestination()),this.pipeline.destination.setNode(this._destination),AU(this.element),this._sourceElement=this.element,this._sourceElement.muted=!0,this.element=null,this.play().catch(l=>{this.emit(Vn.AUTOPLAY_FAILED,l)}))}}stop(t=0){this.pipeline.destroy();const i=this._sourceElement||this.element;i&&WX&&(U1=i),this._sourceElement&&(this._sourceElement.srcObject=null,delete this._sourceElement),super.stop(t)}},OW=class extends Xn{constructor({userId:t,sdkAppId:i,mediaType:r,room:l,PlayerClass:u=r===1?RIA:Gy}){var B;super(),de(this,"id",i7()),de(this,"userId",""),de(this,"isRemote"),de(this,"mediaType"),de(this,"room"),de(this,"user"),de(this,"_log"),de(this,"_inputTrack"),de(this,"_outputTrack"),de(this,"isPlayCalled"),de(this,"container",null),de(this,"player"),de(this,"subVideoPlayerMap"),de(this,"muted",!1),de(this,"abortCtrl"),de(this,"objectFit","cover"),de(this,"mirror"),de(this,"rotation"),de(this,"isScreen",!1),de(this,"manager"),de(this,"trackSettings"),de(this,"isFirstVideoFrameEmitted",!1),this.userId=t||"",this.mediaType=r,this._log=jo.createLogger({parent:l?.getLogger(),id:`${this.kind[0]}t`,userId:(B=l||this.room)==null?void 0:B.userId,remoteUserId:this instanceof sv?void 0:this.userId,sdkAppId:i,type:this.mediaType===2?"auxiliary":"main",isLocal:this instanceof sv}),this.player=new u({id:this.userId||this.id,track:null,muted:!1,container:null,log:this._log,enableVolumeControlInIOS:l?.enableVolumeControlInIOS}),this.player.on(Vn.PLAYER_STATE_CHANGED,f=>{if(ps.emit(mn.PLAYER_STATE_CHANGED,Rn({track:this},f)),this.emit("player-state-changed",f),f.state==="PLAYING"&&this.room){let w=!0;for(const{remoteAudioTrack:_,remoteVideoTrack:k,remoteAuxiliaryTrack:F}of[...this.room.remotePublishedUserMap.values()])if(_.isAvailable&&!_.player.isPlaying||k.isAvailable&&!k.player.isPlaying||F.isAvailable&&!F.player.isPlaying){w=!1;break}w&&eU()&&aIA()}}),this.kind===zt.VIDEO&&(this.player.on(Vn.LOADED_DATA,()=>{this.emitFirstVideoFrameEvent(Vn.LOADED_DATA),ps.emit(mn.VIDEO_LOADED_DATA,{track:this})}),this.player.on(Vn.LOADED_META_DATA,()=>{this.emitFirstVideoFrameEvent(Vn.LOADED_META_DATA)}),this.player.on(Vn.MEDIA_TRACK_CHANGED,f=>{var w;(w=this.subVideoPlayerMap)==null||w.forEach(_=>_.setTrack(f))}),this.player.on(Vn.RESIZE,f=>{this.emitFirstVideoFrameEvent(Vn.RESIZE),this.emit("video-size-changed",Rn({userId:this.userId,streamType:this.mediaType===2?"auxiliary":"main"},f))}),this.player.on(Vn.FIRST_FRAME_RENDER,f=>{this.emit("first-frame-render",iB(Rn({},f),{streamType:this.streamType,userId:this.isRemote?this.userId:""}))})),this.onTrackMuted=this.onTrackMuted.bind(this),this.onTrackUnmuted=this.onTrackUnmuted.bind(this),this.onTrackEnded=this.onTrackEnded.bind(this),this.onPlayerError&&this.player.on(Vn.ERROR,this.onPlayerError.bind(this)),this.player.on(Vn.AUTOPLAY_FAILED,this.handleAutoPlayFailed,this)}get log(){return this._log||jo}get kind(){return this.mediaType===1?zt.AUDIO:zt.VIDEO}get isAudio(){return this.kind===zt.AUDIO}get strMediaType(){return this.mediaType===4?zt.VIDEO:this.mediaType===2?zt.SCREEN:zt.AUDIO}get streamType(){return 2&this.mediaType?"auxiliary":"main"}get isMediaTrackActive(){return!!this.mediaTrack&&!this.mediaTrack.muted&&this.mediaTrack.readyState==="live"&&this.mediaTrack.enabled}async play(t,i){const r=WC(t)?t[0]:t;if(this.isPlayCalled)return this.log.info(`play update options: ${JSON.stringify(i)}`),i&&!$n(i.muted)&&this.setPlayerMute(i.muted),i&&!$n(i.objectFit)&&(this.objectFit=i.objectFit),void(this.player instanceof Gy&&(this.player.setObjectFit(this.objectFit),this.container!==r&&r&&(WC(t)&&t.length>=1&&this.container&&t.includes(this.container)&&this.container.contains(this.player.elementToRender)?(t.splice(t.indexOf(this.container),1),t.unshift(this.container)):(this.container=r,this.player.setContainer(r))),WC(t)&&t.length>=1&&await this.playSubContainer(t.slice(1),i)));if(i&&!$n(i.muted)?this.setPlayerMute(i.muted):this.isRemote&&this.kind!==zt.VIDEO||this.setPlayerMute(!0),i&&!$n(i.objectFit)&&(this.objectFit=i.objectFit),this.player instanceof Gy&&($n(i?.isLiveStream)||this.player.setLiveMode(i.isLiveStream),this.player.setObjectFit(this.objectFit),i&&!$n(i.poster)&&this.player.setPoster(i.poster)),this.isPlayCalled=!0,r&&(this.container=r,this.player instanceof Gy&&this.player.setContainer(r)),ps.emit(mn.PLAY_TRACK_START,{track:this}),this._outputTrack){this._log.info(`play with options: ${JSON.stringify(i)}`);try{this.player.setTrack(this.playerMediaTrack),await this.player.play(i),WC(t)&&t.length>1&&await this.playSubContainer(t.slice(1),i)}catch(l){throw this.handleAutoPlayFailed(l),l}}else this.log.info("play has not mediaTrack, abort")}setMirror(t,i){if(this.isScreen||this.kind!==zt.VIDEO||$n(t)||t===this.mirror)return;this.mirror=t;let r=this.player;i&&(r=i);const l=this.manager;if(cv(this.mirror))return r.setViewMirror(this.mirror),void(!this.isRemote&&l&&(l.mirror=!1));switch(this.mirror){case"view":l&&(l.mirror=!1),r.setViewMirror(!0);break;case"publish":l&&(l.mirror=!0),r.setViewMirror(!0);break;case"both":l&&(l.mirror=!0),r.setViewMirror(!1)}}async playSubContainer(t,i){if(!this._outputTrack||this.kind===zt.AUDIO)return;this.subVideoPlayerMap||(this.subVideoPlayerMap=new Map),this.subVideoPlayerMap.forEach((l,u)=>{var B;t.find(f=>u===f)||(l.stop(),(B=this.subVideoPlayerMap)==null||B.delete(u))});for(const[l,u]of t.entries()){const B=this.subVideoPlayerMap.get(u);B?i&&($n(i.objectFit)||B.setObjectFit(i.objectFit)):this.subVideoPlayerMap.set(u,new Gy({id:this.userId||this.id,track:this.playerMediaTrack,container:u,muted:this.player.muted,objectFit:this.objectFit,log:this.log.createChild({id:`vp-sub${l+1}`})}))}const r=[...this.subVideoPlayerMap.values()];for(const l of r)l.setViewMirror(this.player.mirror),await l.play()}setAudioOutput(t){return this.player.setSinkId(t)}setAudioVolume(t){this.player.setVolume(t)}getAudioLevel(){return this.player.getAudioLevel()||0}getInternalAudioLevel(){var t;return((t=this.player)==null?void 0:t.getInternalAudioLevel())||0}stop(t=!1){this.isPlayCalled&&(this.isPlayCalled=!1,this.isFirstVideoFrameEmitted=!1,this.player&&(this.log.info(`stop ${this.kind} player`),this.player.stop(hj(this)&&!t?this.jitterBufferDelay:0)),this.subVideoPlayerMap&&this.subVideoPlayerMap.size>0&&this.subVideoPlayerMap.forEach(i=>{i.stop()}),this.container=null)}async resume(){var t;this.isPlayCalled&&await((t=this.player)==null?void 0:t.resume())}close(){this._toInitState(),this.log.info("close"),this.isPlayCalled&&this.stop(!0)}_toInitState(){}setMute(t){this.muted=t,this._inputTrack&&(this._inputTrack.enabled=!t),this._outputTrack&&(this._outputTrack.enabled=!t),this.emit(t?"mute":"unmute",this),ps.emit(t?mn.TRACK_MUTED:mn.TRACK_UNMUTED,{track:this})}setPlayerMute(t){this.player.setMuted(t)}get mediaTrack(){return this._inputTrack||null}get outMediaTrack(){return this._outputTrack||null}get playerMediaTrack(){return this.outMediaTrack}installTrackEvent(t){LW(t,t).add(zt.MUTE,this.onTrackMuted).add(zt.UNMUTE,this.onTrackUnmuted).add(zt.ENDED,this.onTrackEnded),t.muted&&this.onTrackMuted(),t.readyState===zt.ENDED&&this.onTrackEnded()}uninstallTrackEvent(t){AU(t)}setInputMediaStreamTrack(t){var i;const r=this._inputTrack;if(t!==r)return this._inputTrack=t,this.trackSettings=(i=t.getSettings)==null?void 0:i.call(t),t.enabled=!this.muted,r&&this.uninstallTrackEvent(r),this.installTrackEvent(t),this.emit("input-media-track-changed",t||null,r||null),this.manager?this.manager.changeInput(this):this.setOutputMediaStreamTrack(t)}setOutputMediaStreamTrack(t){var i;const r=this._outputTrack;this instanceof jY&&uW(r)||t!==r&&(this.isRemote?this.log.debug("setOutputMediaStreamTrack",t.label):this.log.info("setOutputMediaStreamTrack",(i=t.getSettings)==null?void 0:i.call(t).deviceId,t.label),this._outputTrack=t,this._inputTrack&&(this._outputTrack.contentHint=this._inputTrack.contentHint,this._outputTrack.enabled=this._inputTrack.enabled),this.updatePlayingState(!!t),this.emit("output-media-track-changed",t))}setMediaType(t){this.mediaType=t}updatePlayingState(t){var i,r;if(this.isPlayCalled){if(t){if(this.player.setTrack(this.playerMediaTrack),this.player.isStopped)return this.player.play().catch(l=>this.handleAutoPlayFailed(l)),void this.log.info(`playing state updated, play ${this.kind}`)}else if(!this.player.isStopped)return hj(this)&&this.isAudio&&((i=this.user)!=null&&i.muteState.hasAudio)&&((r=this.user)!=null&&r.muteState.audioMuted)?void 0:(this.player.stop(hj(this)?this.jitterBufferDelay:0),void this.log.info(`playing state updated, stop ${this.kind}`))}this.log.debug(`updatePlayingState abort ${this.isPlayCalled} ${t} ${this.player.isStopped}`)}async handleAutoPlayFailed(t){var i;this.log.warn("handleAutoPlayFailed",t);const r=()=>{this.resume().then(()=>{document.removeEventListener("click",r,!0)})};if(this.room&&this.room.enableAutoPlayDialog){if((z_||BU)&&(await Y_(100),(i=this.player)==null?void 0:i.isPlaying))return;rIA()}else document.addEventListener("click",r,!0);ps.once(mn.LOCAL_TRACK_CAPTURE_SUCCESS,({track:l})=>{l.kind==="audio"&&eU()&&!this.player.isPlaying&&this.isRemote&&this.isAvailable&&r()}),this.emit("error",t)}getVideoFrame(){return this.player instanceof Gy?this.player.getVideoFrame():""}emitFirstVideoFrameEvent(t){var i,r,l;if(this.isFirstVideoFrameEmitted)return;const u=(i=this.mediaTrack)==null?void 0:i.getSettings();let B=u?.width||((r=this.player.element)==null?void 0:r.videoWidth)||0,f=u?.height||((l=this.player.element)==null?void 0:l.videoHeight)||0;(t!==Vn.RESIZE||B||f)&&(t!==Vn.LOADED_META_DATA||B||f)&&(t!==Vn.LOADED_DATA||B||f||this._log.warn("the dimension of video is 0x0 in first-video-frame event"),this.isFirstVideoFrameEmitted=!0,QX(this.rotation)&&([B,f]=[f,B]),this.emit("first-video-frame",{width:B,height:f,streamType:this.streamType,userId:this.isRemote?this.userId:""}))}onTrackMuted(){this._log.warn(`${this.kind} track is unable to provide media output`)}onTrackUnmuted(){this._log.info(`${this.kind} track is able to provide media output`)}onTrackEnded(){this._log.warn(`${this.kind} track ended`)}};Cc([Bu([],Xn.INIT,{sync:!0})],OW.prototype,"_toInitState");var wIA=Object.prototype.hasOwnProperty;function _IA(t){if(t==null)return!0;if(typeof t=="boolean")return!1;if(typeof t=="number")return t===0;if(typeof t=="string"||typeof t=="function"||Array.isArray(t))return t.length===0;if(t instanceof Error)return t.message==="";if(x_(t))switch(Object.prototype.toString.call(t)){case"[object File]":case"[object Map]":case"[object Set]":return t.size===0;case"[object Object]":for(const i in t)if(wIA.call(t,i))return!1;return!0}return!1}var lY=_IA,TIA=async function(t){const i=GIA(t);jo.info(`getUserMedia with constraints: ${JSON.stringify(i)}`);let r=[],l=[];const u=["label","deviceId","groupId"];if(i.audio&&(r=await iU(),jo.info(`microphones: ${xy(r.map(B=>iB(Rn({},B),{groupId:B.groupId.substring(0,8)})),{keysToInclude:u})}`)),i.video&&(l=await uv(),jo.info(`cameras: ${xy(l,{keysToInclude:u})}`),!cv(i.video)&&i.video.facingMode==="user"&&!i.video.deviceId)){const B=l.filter(f=>!f.label.includes("infrared")).find(f=>f.label.includes("facing front"));B&&(i.video.deviceId=B.deviceId,jo.info(`exclude infrared camera: ${JSON.stringify(i)}`))}try{const B=await navigator.mediaDevices.getUserMedia(i);return B7&&B.getTracks().forEach(f=>{var w;const _=f.getCapabilities();jo.info(`${f.kind} capabilities: ${xy(_,{keysToInclude:sX})}`),$n(t.echoCancellation)||((w=_.echoCancellation)==null?void 0:w.indexOf(t.echoCancellation))!==-1||jo.warn(`Invalid argument for 'echoCancellation'. Expected one of [${JSON.stringify(_.echoCancellation)}], but received '${t.echoCancellation}'`)}),i.audio&&cY(),B}catch(B){let{message:f}=B;throw B.name==="NotFoundError"&&(t.video&&l&&l.length===0&&(f=aY({key:rY.CAMERA_NOT_FOUND})),t.audio&&r&&r.length===0&&(f=aY({key:rY.MICROPHONE_NOT_FOUND}))),new Ql({code:qg.INITIALIZE_FAILED,name:B.name,message:f,constraint:B.constraint})}},NIA=EW({retryFunction:TIA,settings:{retries:3,timeout:500},onError:({error:t,retry:i,reject:r,retryFuncArgs:l,retriedCount:u})=>{const B=u+1;t.name==="NotReadableError"||t.name==="OverconstrainedError"||t.name==="AbortError"?(B===1?(l[0].video&&(l[0].maxResolution=!1,(!od||l[0].width*l[0].height<=2073600)&&l[0].frameRate&&(l[0].frameRate=l[0].frameRate>10?10:5)),l[0].retryWhenExactFailed&&l[0].useExactDeviceId&&(l[0].useExactDeviceId=!1)):B===2?l[0].useDeviceIdOnly=!0:B!==3||l[0].useExactDeviceId||(l[0].useTrueAsConstraint=!0),i()):r(t),l[0].microphoneId&&tZ(l[0].microphoneId,!1),l[0].cameraId&&tZ(l[0].cameraId,!0)},onRetrying:t=>{jo.warn(`getUserMedia NotReadableError observed, retrying [${t}/3]`)},onRetryFailed:t=>{$C.logFailedEvent({eventType:bL.GET_USER_MEDIA_RETRY,error:t})},onRetrySuccess:t=>{$C.logSuccessEvent({eventType:bL.GET_USER_MEDIA_RETRY}),$C.uploadEvent({log:`stat-${bL.GET_USER_MEDIA_RETRY}-success-${t}`})}});async function tZ(t,i){const r=(i?await uv():await iU()).find(l=>l.deviceId===t);r&&gv(r.getCapabilities)&&jo.warn(xy(r.getCapabilities(),{keysToInclude:sX}))}function GIA(t){return{audio:bIA(t),video:kIA(t)}}function bIA(t){if(!t.audio)return!1;if(t.useTrueAsConstraint)return!0;const i={echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0,sampleRate:t.sampleRate};return!lY(t.microphoneId)&&(i.deviceId=t.useExactDeviceId?{exact:t.microphoneId}:t.microphoneId,t.useDeviceIdOnly)?i:(Qv(t.channelCount)&&(i.channelCount=t.channelCount),(cv(t.echoCancellation)||t.echoCancellation==="remote-only"||t.echoCancellation==="all")&&(i.echoCancellation=t.echoCancellation),cv(t.noiseSuppression)&&!t.noiseSuppression&&(i.noiseSuppression=!1),cv(t.autoGainControl)&&!t.autoGainControl&&(i.autoGainControl=!1),!!lY(i)||i)}function kIA(t){if(!t.video)return!1;if(t.useTrueAsConstraint)return!0;const{maxResolution:i=!0}=t,r={};return t.cameraId?r.deviceId=t.useExactDeviceId?{exact:t.cameraId}:t.cameraId:t.facingMode&&(r.facingMode=t.facingMode),t.useDeviceIdOnly&&!lY(r)?r:(t.width&&(r.width={ideal:t.width},i&&!$d&&(r.width.max=t.width)),t.height&&(r.height={ideal:t.height},i&&!$d&&(r.height.max=t.height)),$d&&VY&&t.width&&t.height&&t.width*t.height<101376&&(r.width=t.width,r.height=t.height),t.frameRate&&(r.frameRate=t.frameRate),!!lY(r)||r)}var LIA=NIA;function N7(t){return KY((i,r)=>async function(...l){const u=await i.apply(this,l);return await t.call(this,...l),u})}function KY(t){return function(i,r,l){return l.value=t(l.value,r),l}}var UIA=(()=>{let t=!1,i=document.visibilityState;return()=>{document.visibilityState!==i&&jo.info(`visibility change: ${document.visibilityState}`),t||(document.addEventListener("visibilitychange",()=>{jo.info(`visibility change: ${document.visibilityState}`),i=document.visibilityState}),t=!0)}})(),FIA=0,OIA=class{constructor(t){de(this,"log"),de(this,"isRunning",!1),de(this,"queue",[]);let i="fq"+ ++FIA;t&&(i+=`|${t}`),this.log=jo.createLogger({id:i})}get length(){return this.queue.length}get lastQueueItem(){return this.length===0?null:this.queue[this.length-1]}push(t,i=!1){var r,l;const u=Rn({},t),B=new Promise((f,w)=>{u.resolve=f,u.reject=w});return u.promise=B,i?this.length<=1?this.queue.push(u):(l=(r=this.lastQueueItem)==null?void 0:r.promise)==null||l.then(u.resolve,u.reject):this.queue.push(u),this.log.debug(`push ${this.length}`,t.funcName,t.args),this.isRunning||this.callNext(),B}shift(){const t=this.queue.shift();return this.log.debug(`shift ${this.length}`,t?.funcName,t?.args),t}callNext(){if(this.isRunning||this.length===0)return;const{fn:t,args:i,context:r,resolve:l,reject:u,funcName:B}=this.queue[0];this.log.debug("callNext",this.length,B,i),this.isRunning=!0,t.apply(r,i).then(l,u).finally(()=>{this.isRunning=!1,this.shift(),this.callNext()})}},iZ=new WeakMap;function PIA(t=!1){return function(i,r,l){const u=l.value;return l.value=function(...B){const f=iZ.get(this)||new OIA;return iZ.set(this,f),f.push({fn:u,args:B,context:this,funcName:r},t)},l}}function G7(t,i){return KY((r,l)=>function(...u){const B=t;try{const f=r.apply(this,u),w=xc();return cX(f)?f.then(_=>(i?lr.addSuccessEvent({key:B,cost:xc()-w}):lr.addSuccessEvent({key:B}),_)).catch(_=>{throw lr.addFailedEvent({key:B,error:_}),_}):(lr.addSuccessEvent({key:B}),f)}catch(f){throw lr.addFailedEvent({key:B,error:f}),f}})}function Zl(...t){}var xIA=t=>t();function YIA(){this.dispose()}var VIA=()=>typeof __FASTRX_DEVTOOLS__<"u",JIA=1,V_=class extends Function{toString(){return`${this.name}(${this.args.length?[...this.args].join(", "):""})`}subscribe(t){const i=new qIA(t,this,this.streamId++);return Bl.subscribe({id:this.id,end:!1},{nodeId:i.sourceId,streamId:i.id}),this(i),i}},PW=class{constructor(){this.defers=new Set,this.disposed=!1}next(t){}complete(){this.dispose()}error(t){this.dispose()}get bindDispose(){return()=>this.dispose()}dispose(){this.disposed=!0,this.complete=Zl,this.error=Zl,this.next=Zl,this.dispose=Zl,this.subscribe=Zl,this.doDefer()}subscribe(t){return t instanceof V_?t.subscribe(this):t(this),this}get bindSubscribe(){return t=>this.subscribe(t)}doDefer(){this.defers.forEach(xIA),this.defers.clear()}defer(t){this.defers.add(t)}removeDefer(t){this.defers.delete(t)}reset(){this.disposed=!1,delete this.complete,delete this.next,delete this.dispose,delete this.next,delete this.subscribe}resetNext(){delete this.next}resetComplete(){delete this.complete}resetError(){delete this.error}},sB=class extends PW{constructor(t){super(),this.sink=t,t.defer(this.bindDispose)}next(t){this.sink.next(t)}complete(){this.sink.complete()}error(t){this.sink.error(t)}},HIA=class extends PW{constructor(t,i=Zl,r=Zl,l=Zl){if(super(),this._next=i,this._error=r,this._complete=l,this.then=Zl,t instanceof V_){const u={toString:()=>"subscribe",id:0,source:t};this.defer(()=>{Bl.defer(u,0)}),Bl.create(u),Bl.pipe(u),this.sourceId=u.id,this.subscribe(t),Bl.subscribe({id:u.id,end:!0}),i==Zl?this._next=B=>Bl.next(u,0,B):this.next=B=>{Bl.next(u,0,B),i(B)},l==Zl?this._complete=()=>Bl.complete(u,0):this.complete=()=>{this.dispose(),Bl.complete(u,0),l()},r==Zl?this._error=B=>Bl.complete(u,0,B):this.error=B=>{this.dispose(),Bl.complete(u,0,B),r(B)}}else this.subscribe(t)}next(t){this._next(t)}complete(){this.dispose(),this._complete()}error(t){this.dispose(),this._error(t)}};function jC(t,...i){return i.reduce((r,l)=>l(r),t)}function AC(t,i,r){if(VIA()){const l=Object.defineProperties(Object.setPrototypeOf(t,V_.prototype),{streamId:{value:0,writable:!0,configurable:!0},name:{value:i,writable:!0,configurable:!0},args:{value:r,writable:!0,configurable:!0},id:{value:0,writable:!0,configurable:!0}});Bl.create(l);for(let u=0;u{if(l instanceof V_){const u=AC(B=>{const f=new t(B,...r);f.sourceId=u.id,f.subscribe(l)},i,arguments);return u.source=l,Bl.pipe(u),u}return u=>l(new t(u,...r))}}}function My(t,i){window.postMessage({source:"fastrx-devtools-backend",payload:{event:t,payload:i}})}var qIA=class extends sB{constructor(t,i,r){super(t),this.source=i,this.id=r,this.sourceId=t.sourceId,this.defer(()=>{Bl.defer(this.source,this.id)})}next(t){Bl.next(this.source,this.id,t),this.sink.next(t)}complete(){Bl.complete(this.source,this.id),this.sink.complete()}error(t){Bl.complete(this.source,this.id,t),this.sink.error(t)}},Bl={addSource(t,i){My("addSource",{id:t.id,name:t.toString(),source:{id:i.id,name:i.toString()}})},next(t,i,r){My("next",{id:t.id,streamId:i,data:r&&r.toString()})},subscribe({id:t,end:i},r){My("subscribe",{id:t,end:i,sink:{nodeId:r&&r.nodeId,streamId:r&&r.streamId}})},complete(t,i,r){My("complete",{id:t.id,streamId:i,err:r?r.toString():null})},defer(t,i){My("defer",{id:t.id,streamId:i})},pipe(t){My("pipe",{name:t.toString(),id:t.id,source:{id:t.source.id,name:t.source.toString()}})},update(t){My("update",{id:t.id,name:t.toString()})},create(t){t.id||(t.id=JIA++),My("create",{name:t.toString(),id:t.id})}},KIA=class extends PW{constructor(t){super(),this.source=t,this.sinks=new Set}add(t){t.defer(()=>this.remove(t)),this.sinks.add(t).size===1&&(this.reset(),this.subscribe(this.source))}remove(t){this.sinks.delete(t),this.sinks.size===0&&this.dispose()}next(t){this.sinks.forEach(i=>i.next(t))}complete(){this.sinks.forEach(t=>t.complete()),this.sinks.clear()}error(t){this.sinks.forEach(i=>i.error(t)),this.sinks.clear()}};function b7(){return t=>{const i=new KIA(t);if(t instanceof V_){const r=AC(l=>{i.add(l)},"share",arguments);return i.sourceId=r.id,r.source=t,Bl.pipe(r),r}return AC(i.add.bind(i),"share",arguments)}}function k7(...t){return AC(i=>{const r=new sB(i);let l=t.length;r.complete=()=>{--l===0&&i.complete()},t.forEach(r.bindSubscribe)},"merge",arguments)}function jIA(...t){return AC(i=>{const r=new Map;t.forEach(l=>{const u=new sB(i);r.set(l,u),u.complete=()=>{r.delete(l),r.size===0?i.complete():u.dispose()},u.next=B=>{r.delete(l),r.forEach(f=>f.dispose()),u.resetNext(),u.resetComplete(),u.next(B)}}),t.forEach(l=>r.get(l).subscribe(l))},"race",arguments)}function WIA(...t){return i=>AC((r,l=0,u=t.length)=>{for(;l{r.next=u=>l.next(u),r.complete=()=>l.complete(),r.error=u=>l.error(u),t&&l.subscribe(t)},"subject",i));return r.next=Zl,r.complete=Zl,r.error=Zl,r}function zIA(t){return AC(i=>{let r=0;const l=setInterval(()=>i.next(r++),t);return i.defer(()=>{clearInterval(l)}),"interval"},"interval",arguments)}function ZIA(t,i){return AC(r=>{let l=0;const u=setTimeout(()=>{r.removeDefer(B),r.next(l++),i||r.complete()},t),B=()=>clearTimeout(u);r.defer(B)},"timer",arguments)}function wj(t,i){return r=>{const l=u=>r.next(u);r.defer(()=>i(l)),t(l)}}function dE(t,i){if("on"in t&&"off"in t)return AC(wj(r=>t.on(i,r),r=>t.off(i,r)),"fromEvent",arguments);if("addListener"in t&&"removeListener"in t)return AC(wj(r=>t.addListener(i,r),r=>t.removeListener(i,r)),"fromEvent",arguments);if("addEventListener"in t)return AC(wj(r=>t.addEventListener(i,r),r=>t.removeEventListener(i,r)),"fromEvent",arguments);throw"target is not a EventDispachter"}function XIA(){return AC(t=>t.complete(),"empty",arguments)}var $IA=class extends sB{constructor(t,i,r){super(t),this.filter=i,this.thisArg=r}next(t){this.filter.call(this.thisArg,t)&&this.sink.next(t)}},F_=yv($IA,"filter"),AuA=class extends sB{constructor(t,i){super(t),this.count=i}next(t){this.sink.next(t),--this.count===0&&(this.doDefer(),this.complete())}},euA=yv(AuA,"take"),tuA=class extends sB{constructor(t,i){super(t);const r=new sB(t);r.next=()=>{r.doDefer(),t.complete()},r.complete=YIA,r.subscribe(i)}},J_=yv(tuA,"takeUntil"),iuA=class extends sB{constructor(t,i){super(t),this.f=i}next(t){this.f(t)||(this.next=super.next,this.next(t))}},ouA=yv(iuA,"skipWhile"),suA=class extends sB{constructor(t,i,r){super(t),this.mapper=i,this.thisArg=r}next(t){super.next(this.mapper.call(this.thisArg,t))}},U7=yv(suA,"map"),nuA=class extends sB{constructor(t,i,r){super(t),this.data=i,this.context=r}next(t){const i=this.context.combineResults;i?this.sink.next(i(this.data,t)):this.sink.next(t)}tryComplete(){this.context.resetComplete(),this.dispose()}},ruA=class F7 extends sB{constructor(i,r,l){super(i),this.makeSource=r,this.combineResults=l,this.index=0}subInner(i,r){const l=this.currentSink=new r(this.sink,i,this);this.complete===F7.prototype.complete&&(this.complete=this.tryComplete),l.complete=l.tryComplete,l.subscribe(this.makeSource(i,this.index++))}complete(){this.sink.complete()}tryComplete(){this.currentSink.resetComplete(),this.dispose()}},oZ=class extends nuA{},O7=class extends ruA{next(t){this.subInner(t,oZ),this.next=i=>{this.currentSink.dispose(),this.subInner(i,oZ)}}},auA=yv(O7,"switchMap");function guA(t){return(i,r)=>t(()=>i,r)}var P7=guA(yv(O7,"switchMapTo")),mv=(t=Zl,i=Zl,r=Zl)=>l=>new HIA(l,t,i,r),x7=(t=>(t[t.AUTO_SWITCH_NEW_DEVICE=0]="AUTO_SWITCH_NEW_DEVICE",t[t.WAIT_CURRENT_DEVICE=1]="WAIT_CURRENT_DEVICE",t))(x7||{}),sv=class extends OW{constructor(t,i){super({mediaType:t,PlayerClass:i}),de(this,"isRemote",!1),de(this,"deviceId"),de(this,"groupId",""),de(this,"label",""),de(this,"sourceTrack"),de(this,"enableAutoSwitchWhenRecapturing",!0),de(this,"_isRecapturing",!1),de(this,"_lastRecaptureTime",0),de(this,"_onMuteTimeoutId",-1),de(this,"_encodeCheckTimeoutId",-1),de(this,"recaptureMode",0),de(this,"profile"),de(this,"retryEncodeFailed")}get enableEncodeFrame(){return!1}get isPublishing(){return this.state.toString()==="publishing"}get isPublished(){return this.state==="publish"}get isUseCustomSource(){return!(!this.mediaTrack||this.sourceTrack===this.mediaTrack)}encodeFrame(t,i){throw new Error("Method not implemented.")}installTrackEvent(t){t.addEventListener(zt.MUTE,this.onTrackMuted),t.addEventListener(zt.UNMUTE,this.onTrackUnmuted),t.addEventListener(zt.ENDED,this.onTrackEnded),t.muted&&this.onTrackMuted(),t.readyState===zt.ENDED&&this.onTrackEnded()}uninstallTrackEvent(t){t.removeEventListener(zt.MUTE,this.onTrackMuted),t.removeEventListener(zt.UNMUTE,this.onTrackUnmuted),t.removeEventListener(zt.ENDED,this.onTrackEnded)}setStateToReady(){}async capture(t,i=!1){var r,l;const u=this.sourceTrack;try{const B=xc();let f;ps.emit(mn.LOCAL_TRACK_CAPTURE_START,{track:this}),t.customSource?(f=new MediaStream,f.addTrack(t.customSource)):(i||(r=this.sourceTrack)==null||r.stop(),f=await LIA(t));const w=f.getTracks()[0];return await this.setInputMediaStreamTrack(w),t.customSource||(this.sourceTrack=w,this.updateDeviceIdInUse(),this.listenDeviceChange()),ps.emit(mn.LOCAL_TRACK_CAPTURE_SUCCESS,{track:this,cost:xc()-B,profile:this.profile,room:(l=this.manager)==null?void 0:l.room}),f}catch(B){throw ps.emit(mn.LOCAL_TRACK_CAPTURE_FAILED,{track:this,error:B}),this.log.error(`getUserMedia error observed ${B}`),B}finally{i&&u?.stop()}}setOutputMediaStreamTrack(t){var i;if(super.setOutputMediaStreamTrack(t),this.setStateToReady(),this.isPublishing||this.isPublished)return(i=this.room)==null?void 0:i.replaceTrack(this)}get hasFlag(){var t,i;const r=IX(((t=this.room)==null?void 0:t.localPublishFlag)||0,((i=this.room)==null?void 0:i.userId)||"");return this.mediaType===4&&r.hasVideo||this.mediaType===1&&r.hasAudio||this.mediaType===2&&r.hasAuxiliary}async publish(t,i){return this.room=t,this.room.localTracks.add(this),this.emit("4",{mediaType:this.strMediaType,state:"starting",prevState:"stopped"}),this.userId=t.userId,this._log.bindParent(t.getLogger()),await i,this._checkPublishFlag(t)}_checkPublishFlag(t){return new Promise(async(i,r)=>{var l,u,B,f,w;const _=()=>r(new Ql({code:qg.API_CALL_ABORTED,message:"publish aborted"}));if(this.hasFlag||this.muted?i():(this.state!==Xn.INIT&&this.state!=="ready"||_(),jC(dE(t,"local-publish-flag-changed"),F_(()=>this.hasFlag),J_(k7(dE(this,Xn.INIT),dE(this,"ready"))),mv(i,r,_))),(B=(u=(l=this.room)==null?void 0:l.networkQuality)==null?void 0:u.hadRecentBadUplink)==null?void 0:B.call(u,2))return i();const k=t.heartbeatCount,F=((w=(f=this.mediaTrack)==null?void 0:f.stats)==null?void 0:w.totalFrames)||0;this._encodeCheckTimeoutId=setTimeout(async()=>{var j,IA,rA,pA,lA,cA,TA,WA;if((rA=(IA=(j=this.room)==null?void 0:j.networkQuality)==null?void 0:IA.hadRecentBadUplink)!=null&&rA.call(IA,2)||t.heartbeatCount-k<3)return i();if((this.isPublished||this.isPublishing)&&this.isMediaTrackActive){if((pA=this.mediaTrack)!=null&&pA.stats){const De=this.mediaTrack.stats.totalFrames||0;De-F===0&&this.log.warn("capture totalFrames is 0 during encode check, totalFrames",De)}const zA=this.kind===zt.AUDIO,$A=this.stat.bytesSent>0;if(lr[$A?"addSuccessEvent":"addFailedEvent"]({key:zA?503700:513702}),!zA){const De={H264:513704,H265:513705,VP8:513706}[((cA=(lA=this.room)==null?void 0:lA.videoCodec)==null?void 0:cA.toUpperCase())||"H264"];De&&lr[$A?"addSuccessEvent":"addFailedEvent"]({key:De})}if(!$A){if(lr.addEnum({key:zA?503701:513703,value:vW()}),$C.uploadEvent({log:`stat-encode-failed-${this.kind}-${ZX()||$X()}`,userId:this.userId}),this.log.warn(zA?"encode failed":`${(WA=(TA=this.room)==null?void 0:TA.videoCodec)==null?void 0:WA.toUpperCase()} encode failed`),this.retryEncodeFailed&&(this.log.warn("retry encode"),await this.retryEncodeFailed(this),this.stat.bytesSent>0||this.hasFlag||(await Y_(5e3),this.stat.bytesSent>0||this.hasFlag)))return i();this.emit("6",this),r(new Ql({message:`${this.strMediaType} encode failed`,code:zA?qg.AUDIO_ENCODE_FAILED:qg.VIDEO_ENCODE_FAILED}))}}},1e4)})}unpublish(){this.room&&this.room.localTracks.delete(this),this.log.info("unpublish"),ps.emit(mn.LOCAL_TRACK_UNPUBLISHED,{track:this})}async updateDeviceIdInUse(){if(this.sourceTrack&&gY){const{deviceId:t,groupId:i}=this.sourceTrack.getSettings(),{label:r}=this.sourceTrack;await SIA({newDeviceId:t,oldDeviceId:this.deviceId,oldGroupId:this.groupId,oldLabel:this.label,kind:this.kind})||(this.deviceId=t,this.label=r,i&&(this.groupId=i),f3().then(l=>{const u=l.find(B=>{let f=B.deviceId===t;return i&&(f=f&&B.groupId===i),f});u&&this.emit("2",u)}))}}setProfile(t){this.log.info("setProfile",t),Object.assign(this.profile,t)}isNeedToRecapture(t=!1){return!(!this.deviceId||!this.sourceTrack||this.kind===zt.AUDIO&&!yIA(this.sourceTrack)||this.kind===zt.VIDEO&&!fIA(this.sourceTrack)||this._isRecapturing||t&&VY&&od)}onTrackMuted(){super.onTrackMuted(),UIA(),this.isNeedToRecapture(!0)&&(Date.now()-this._lastRecaptureTimethis.onTrackMuted(),E1):this._onMuteTimeoutId=setTimeout(async()=>{var t;if((t=this.sourceTrack)!=null&&t.muted){if((pu||tC)&&document.visibilityState!=="visible")return;this.recapture(await this.getRecoverCaptureDeviceId())}},5e3))}onTrackUnmuted(){super.onTrackUnmuted(),this._onMuteTimeoutId>0&&clearTimeout(this._onMuteTimeoutId)}async onTrackEnded(){if(super.onTrackEnded(),this.isNeedToRecapture()&&this.recaptureMode===0){if(Date.now()-this._lastRecaptureTimethis.onTrackEnded(),E1);this.emit("7"),this.recapture(await this.getRecoverCaptureDeviceId())}}async recapture(t,i=!1){var r;if(this._isRecapturing||!this.sourceTrack)return;this.log.warn("recapture trying");const l=this.sourceTrack;i||(r=this.sourceTrack)==null||r.stop(),this._isRecapturing=!0,this._lastRecaptureTime=Date.now();const u={useExactDeviceId:!0};if(t==="user"||t==="environment")u.facingMode=t;else{let B;(this.kind==="audio"?await iU():await uv()).find(f=>f.deviceId===t)&&(B=t),u.deviceId=B}return this.capture(u,i).then(()=>{this._isRecapturing=!1,this.log.warn("recapture success"),this.emit("1",{deviceId:this.deviceId}),ps.emit(mn.LOCAL_TRACK_RECAPTURE,{track:this})}).catch(B=>{this._isRecapturing=!1,this.log.warn(`recapture failed ${B.message}`),this.emit("5",B),ps.emit(mn.LOCAL_TRACK_RECAPTURE,{track:this,error:B})}).finally(()=>{i&&l?.stop()})}async getRecoverCaptureDeviceId(){const t=this instanceof jY;if(t&&this.facingMode)return this.facingMode;let{deviceId:i}=this;if(i){const r=(BL.get(i)||0)+1;if(BL.set(i,r),r>=3&&this.enableAutoSwitchWhenRecapturing){const l=t?(await uv()).find(u=>!BL.has(u.deviceId)):(await iU()).find(u=>!BL.has(u.deviceId));l&&(this.log.warn(`${i} capture fail ${r} times, change new ${l.deviceId}`),i=l.deviceId)}}return i}stopCapture(){var t;this.sourceTrack&&(this.sourceTrack.stop(),ps.emit(mn.LOCAL_TRACK_STOPPED,{track:this}),this.uninstallTrackEvent(this.sourceTrack)),this._inputTrack&&this.uninstallTrackEvent(this._inputTrack),(t=this.manager)==null||t.removeInput(this),this._onMuteTimeoutId&&clearTimeout(this._onMuteTimeoutId)}close(){super.close(),this.stopCapture()}};Cc([Bu(Xn.INIT,"ready",{ignoreError:!0,sync:!0})],sv.prototype,"setStateToReady"),Cc([PIA()],sv.prototype,"capture"),Cc([Bu("ready","publish",{ignoreError:!0,success(){ps.emit(mn.LOCAL_TRACK_PUBLISHED,{track:this,room:this.room}),this.emit("4",{mediaType:this.strMediaType,state:"started",prevState:"starting"}),this.log.info("published")},fail(t){var i;(i=this.room)==null||i.localTracks.delete(this);let r="error";const l=t instanceof Ql?t:t.cause instanceof Ql?t.cause:t;let u=!1;l instanceof Ql&&(l.message.includes("timeout")?r="timeout":l.code===qg.API_CALL_ABORTED&&(u=!0,r="api-call")),this.emit("4",{mediaType:this.strMediaType,state:"stopped",prevState:"starting",reason:r,error:l}),this.log[u?"info":"error"]("publish failed",l)}}),G7(521714,!1)],sv.prototype,"publish"),Cc([KY(t=>async function(){const i=this.state==="publish"?"started":"starting";t.call(this),this.emit("4",{mediaType:this.strMediaType,state:"stopped",prevState:i,reason:"api-call"}),clearTimeout(this._encodeCheckTimeoutId)}),Bu([],"ready",{sync:!0})],sv.prototype,"unpublish");var BL=new Map;ps.on(mn.SWITCH_DEVICE_SUCCESS,t=>{t.track.deviceId&&BL.delete(t.track.deviceId)});var cuA=class{constructor(t,i=!1){this.dataView=t,this.isSEI&&(i?this.addPreventionByte():this.removePreventionByte())}addPreventionByte(){const{seiPayloadStartIndex:t}=this,i=this.dataView.byteLength-2,r=[];let l=0;for(let B=t;B<=i;B++){const f=this.dataView.getInt8(B);switch(f){case 0:case 1:case 2:case 3:l===2&&(r.push(3),l=0),f===0?l+=1:l=0,r.push(f);break;default:l=0,r.push(f)}}r.push(this.dataView.getInt8(this.dataView.byteLength-1));const u=new DataView(new Uint8Array([...new Uint8Array(this.dataView.buffer).slice(0,t),...r]).buffer);this.dataView=u}removePreventionByte(){const{seiPayloadStartIndex:t}=this,i=this.dataView.byteLength-1,r=[];let l=0;for(let B=t;B<=i;B++)switch(this.dataView.getInt8(B)){case 0:l++,r.push(this.dataView.getInt8(B));break;case 3:l!==2&&r.push(this.dataView.getInt8(B)),l=0;break;default:r.push(this.dataView.getInt8(B)),l=0}const u=new DataView(new Uint8Array([...new Uint8Array(this.dataView.buffer).slice(0,t),...r]).buffer);this.dataView=u}get seiPayloadStartIndex(){let t=6;for(let i=6;i=this.dataView.byteLength?0:31&this.dataView.getUint8(t)}getStartCodeLength(){return this.dataView.byteLength>=4&&this.dataView.getUint8(0)===0&&this.dataView.getUint8(1)===0&&this.dataView.getUint8(2)===0&&this.dataView.getUint8(3)===1?4:this.dataView.byteLength>=3&&this.dataView.getUint8(0)===0&&this.dataView.getUint8(1)===0&&this.dataView.getUint8(2)===1?3:0}get isIDR(){return this.naluType===5}get isSPS(){return this.naluType===7}get isPPS(){return this.naluType===8}get isSEI(){return this.naluType===6}},luA=class{constructor(){de(this,"_seiMessageList",[]),de(this,"_smallSeiMessageList",[]),de(this,"_seiPayloadType",243)}encodeSEINalu(t){const i=t.byteLength,r=parseInt(String(i/255),10),l=i%255,u=[];u.push(0,0,0,1,6,this._seiPayloadType);for(let f=0;f0&&t.data.byteLength>0){const l=9-this.getNaluCount(t.data);if(l<=0)return 0;const u=r.splice(0,l).reverse().map(this.encodeSEINalu.bind(this)),B=u.reduce((F,j)=>F+j.dataView.byteLength,0),f=new ArrayBuffer(B+t.data.byteLength),w=new DataView(f),_=new DataView(t.data);let k=0;for(let F=0;F{var l;if(this.isAllowed2k4k(this.profile))this.room&&this.settings.height>=1440&&this.state==="publish"&&this.room.sendAbilityStatus({"2k4k":1});else{const u=eY(((l=this.room)==null?void 0:l.sdkAppId)||0)?h8:C8;this.log.warn(`Resolution is reset to 1080p, need to upgrade ability here ${u}`),this.setProfile(iB(Rn({},this.profile),{width:1920,height:1080})),this.applyProfile()}};this.on("input-media-track-changed",r),this.on("publish",r),this.handleCameraAdded=this.handleCameraAdded.bind(this),this.handleCameraRemoved=this.handleCameraRemoved.bind(this)}get facingMode(){if(gY&&this.mediaTrack)return this.mediaTrack.getSettings().facingMode}get contentHint(){var t;return((t=this._inputTrack)==null?void 0:t.contentHint)||""}get isQosClearFirst(){var t;return((t=this._inputTrack)==null?void 0:t.contentHint)==="detail"}get hasSmall(){var t;return!!((t=this.manager)!=null&&t.hasSmall)}async setMute(t){var i,r,l;if(XC(t)){if(this.muteImage===t)return;await((i=this.manager)==null?void 0:i.deleteWatermark("mute")),await((r=this.manager)==null?void 0:r.setWatermark({x:0,y:0,width:this.settings.width,height:this.settings.height,type:"mute",zIndex:999,imageUrl:t,fillVideo:!0})),this.muteImage=t,super.setMute(!1)}else this.muteImage&&(await((l=this.manager)==null?void 0:l.deleteWatermark("mute")),this.muteImage=void 0),super.setMute(t)}async capture({deviceId:t,facingMode:i,useExactDeviceId:r=!0,customSource:l,retryWhenExactFailed:u=!0}){const B={audio:!1,video:!0,facingMode:i||this.facingMode,cameraId:t,width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate,useExactDeviceId:r,retryWhenExactFailed:u,customSource:l};if(B.facingMode==="environment"){const f=await this.getDeviceIdWhenUsingBackCamera();f&&(B.cameraId=f)}return super.capture(B)}setProfile(t){var i;const r=this.fallbackProfile(t);if(r.bitrate&&(this.isNeedToSetBandwidth=r.bitrate!==this.profile.bitrate),this.isAllowed2k4k(this.profile))super.setProfile(r);else{const l=eY(((i=this.room)==null?void 0:i.sdkAppId)||0)?h8:C8;this.log.warn(`Resolution is reset to 1080p, need to upgrade ability here ${l}`),super.setProfile(iB(Rn({},this.profile),{width:1920,height:1080}))}}async applyProfile(){var t,i;if(!this.mediaTrack)return;const{width:r=0,height:l=0}=(this.sourceTrack||this.mediaTrack).getSettings(),u=r*l,B=this.settings,f=B.height!==this.profile.height||B.width!==this.profile.width||B.frameRate!==this.profile.frameRate;if(f&&(pv===16&&this.deviceId?await this.recapture(this.deviceId):(uW(this.outMediaTrack)?await((t=this.outMediaTrack)==null?void 0:t.applyConstraints({width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate})):await((i=this.sourceTrack||this.mediaTrack)==null?void 0:i.applyConstraints({width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate})),this.manager&&this.manager.changeInput(this)),this.room&&this.settings.height>=1440&&this.state==="publish"&&this.room.sendAbilityStatus({"2k4k":1})),this.isNeedToSetBandwidth&&this.room&&this.room.setBandWidth){this.isNeedToSetBandwidth=!1;const{width:w=0,height:_=0}=(this.sourceTrack||this.mediaTrack).getSettings(),k=w*_;return f&&k&&u&&k===u?void this.log.warn("set bandwidth failed: resolution is not changed"):this.room.setBandWidth({bandwidth:this.profile.bitrate,type:zt.VIDEO,videoType:zt.BIG})}}get settings(){const t={width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate},i=this.sourceTrack||this.mediaTrack;return gY&&i&&Object.assign(t,i.getSettings()),t}get scaleResolutionDownBy(){return this._scaleResolutionDownBy?this._scaleResolutionDownBy:BX(this.settings,this.profile)}isAllowed2k4k(t){var i;return!this.room||!this.room.scheduleResult||!!this.isScreen||t.height*t.width<3686400||((i=this.room.scheduleResult.trtcAutoConf)==null?void 0:i["2k4k"])===1}isNeedToSwitchDevice(t){return!(!this.mediaTrack||this.deviceId===t||this.facingMode===t)}async switchDevice(t){try{if(!this.isNeedToSwitchDevice(t)&&!this.isUseCustomSource)return;const i={useExactDeviceId:!0,retryWhenExactFailed:!1};t==="user"||t==="environment"?i.facingMode=t:i.deviceId=t,this.sourceTrack&&this.sourceTrack.stop(),await this.capture(i),ps.emit(mn.SWITCH_DEVICE_SUCCESS,{track:this}),this.log.info("switch camera success")}catch(i){throw this.log.error(`switch camera failed ${i}`),this.deviceId&&this.recapture(this.deviceId),i}}async getDeviceIdWhenUsingBackCamera(){let t;try{if(YX&&!SW&&Q7){const i=(await uv(!0)).map(l=>{var u;return iB(Rn({},l),{capabilities:(u=l.getCapabilities)==null?void 0:u.call(l)})}).filter(l=>{var u,B;return(B=(u=l.capabilities)==null?void 0:u.facingMode)==null?void 0:B.includes("environment")});let r=i[0];i.forEach(l=>{var u,B,f,w;const{capabilities:_}=l;((u=_.width)!=null&&u.max&&((B=_.height)!=null&&B.max)?_.width.max*_.height.max:0)>((f=r.capabilities.width)!=null&&f.max&&((w=r.capabilities.height)!=null&&w.max)?r.capabilities.width.max*r.capabilities.height.max:0)&&(r=l)}),r?.capabilities&&(this._log.info("use max resolution back camera",r),t=r.deviceId)}}catch(i){this._log.warn("get max res camera failed",i)}return t}async updateSmallConfig(t){var i,r;this._log.info(`update small stream config: ${JSON.stringify(t)}`);const l=!this.small;this.small=this.fallbackProfile(t,!0),await((i=this.manager)==null?void 0:i.update()),l&&await((r=this.room)==null?void 0:r.enableSmall(!0)),this.log.info("update small stream config success")}fallbackProfile(t,i=!1){const r=t.width>t.height,l=Rn({},t);return t.width*t.height<=19200&&tC&&Hy&&(this.log.warn(`${i?"small ":""}resolution is ${t.width}*${t.height}, fallback to 240*180 for android chrome`),l.width=r?240:180,l.height=r?180:240,l.bitrate=Math.max(t.bitrate,150)),t.width*t.height>921600&&ilA&&(l.width=r?1280:720,l.height=r?720:1280,this.log.warn("reset to 1280 * 720 on iOS 13~14")),elA(mQ,"14.3")&&zX(mQ,"14.0",!0)&&this.on("7",()=>{const u=this.profile.width>this.profile.height;this.profile.width*this.profile.height>307200?(this.profile.width=u?640:480,this.profile.height=u?480:640,this.log.warn("reduce the resolution to 480p on iOS 14.0 ~ 14.2")):this.profile.width*this.profile.height>230400&&(this.profile.width=u?640:360,this.profile.height=u?360:640,this.log.warn("reduce the resolution to 360p on iOS 14.0 ~ 14.2"))}),!i&&this.avoidCropping&&(Hy||$d)&&!nlA()&&t.width*t.height<=230400&&t.width/t.height===16/9&&(this._scaleResolutionDownBy=1280/t.width,l.width=1280,l.height=720,this.log.warn(`capture 720p, scale: ${this._scaleResolutionDownBy}`)),l}stopSmall(){var t,i;this.small&&(delete this.small,(t=this.manager)==null||t.update(),(i=this.room)==null||i.enableSmall(!1))}listenDeviceChange(){BQ&&!BQ.listeners("videoInputRemoved").includes(this.handleCameraRemoved)&&BQ.on("videoInputRemoved",this.handleCameraRemoved,this)}async handleCameraRemoved(t){if(t.deviceId===this.deviceId){let i=this.recaptureMode===1;if(this.log.warn(`RecaptureMode: ${x7[this.recaptureMode]}. Current camera is lost: ${JSON.stringify(t)}`),this.recaptureMode===0){Ec(this.userId,{eventId:2003,param1:7,streamType:2});const r=await uv();r[0]?this.recapture(r[0].deviceId):i=!0}i&&BQ.on("videoInputAdded",this.handleCameraAdded,this)}}async handleCameraAdded(t){this.recaptureMode===1&&t.deviceId!==this.deviceId||(BQ.off("videoInputAdded",this.handleCameraAdded,this),this.log.warn(`camera added: ${JSON.stringify(t)}`),this.recapture(t.deviceId))}encodeFrame(t,i){if(!this.manager)return t;const r=i?8:this.mediaType;return this.manager.encodePipeline.reduceRight((l,u)=>u?u({frame:l,mediaType:r}):l,t)}get enableEncodeFrame(){return!!this.manager&&this.manager.encodePipeline.some(t=>t)}play(t,i){return $n(this.mirror)&&!this.isScreen&&this.setMirror("view"),super.play(t,i)}close(){BQ.off("videoInputAdded",this.handleCameraAdded,this),BQ.off("videoInputRemoved",this.handleCameraRemoved,this),super.close()}async recapture(t){try{await super.recapture(t)}catch(i){const r=(await uv()).find(l=>l.deviceId!==t);if(!r)throw i;await super.recapture(r.deviceId)}}setContentHint(t){this.mediaTrack&&"contentHint"in this.mediaTrack&&(this.mediaTrack.contentHint!==t&&(this.log.info(`setContentHint ${t}`),this.mediaTrack.contentHint=t),this.outMediaTrack&&this.outMediaTrack.contentHint!==t&&(this.outMediaTrack.contentHint=t))}setRotation(t){this.manager&&(this.isScreen||$n(t)||t!==this.rotation&&(this.rotation=t,this.manager.rotation=t))}};Cc([N7(function(t){this.setContentHint(t.contentHint||"motion")})],jY.prototype,"capture");var IuA=[-1,-1,1,-1,-1,1,1,1],uuA=[0,0,1,0,0,1,1,1],QL=class y3 extends Xn{constructor(i,r){if(super(),this.context=i,de(this,"name"),de(this,"input"),de(this,"output"),de(this,"texture"),de(this,"ctx2d",null),de(this,"fbo"),de(this,"width",0),de(this,"height",0),de(this,"x",0),de(this,"y",0),de(this,"program"),de(this,"vertexShader"),de(this,"fragmentShader"),de(this,"totalFrames",0),de(this,"dropFrames",0),de(this,"matchInputSize",!0),de(this,"texCoordBuffer"),de(this,"positionBuffer"),de(this,"lastInfo",{name:"",timestamp:0,totalFrames:0,x:0,y:0,width:0,height:0,fps:0}),de(this,"cost",0),de(this,"_canvas",null),de(this,"_image"),de(this,"log"),this.context.on("disconnect",this.close,this),this.name=r.name,this.log=r.logger,this.matchInputSize=r.matchInputSize!==!1,this.width=r.width||i.width,this.height=r.height||i.height,this._image=r.image,i instanceof sU)i.ctx&&r.create2d&&(typeof OffscreenCanvas=="function"&&pv!==16?this._canvas=new OffscreenCanvas(this.width,this.height):(this._canvas=document.createElement("canvas"),this._canvas.width=this.width,this._canvas.height=this.height),this.ctx2d=this._canvas.getContext("2d"),this._image=this._canvas);else try{const l=i.ctx;this.texCoordBuffer=this.createBuffer(uuA),this.positionBuffer=this.createBuffer(IuA),r.createTexture!==!1&&(this.texture=l.createTexture(),this.useTexture(),l.texParameteri(l.TEXTURE_2D,l.TEXTURE_MIN_FILTER,l.LINEAR),l.texParameteri(l.TEXTURE_2D,l.TEXTURE_MAG_FILTER,l.LINEAR),l.texParameteri(l.TEXTURE_2D,l.TEXTURE_WRAP_S,l.CLAMP_TO_EDGE),l.texParameteri(l.TEXTURE_2D,l.TEXTURE_WRAP_T,l.CLAMP_TO_EDGE),l.pixelStorei(l.UNPACK_ALIGNMENT,1)),r.useFbo&&(this.fbo=l.createFramebuffer(),this.useBufferFrame(),this.useTexture(),l.texImage2D(l.TEXTURE_2D,0,l.RGBA,this.width,this.height,0,l.RGBA,l.UNSIGNED_BYTE,null),l.framebufferTexture2D(l.FRAMEBUFFER,l.COLOR_ATTACHMENT0,l.TEXTURE_2D,this.texture,0)),r.useDefaultProgram?this.program=i.defaultProgam:(r.vertexShaderSource||r.fragmentShaderSource)&&(this.vertexShader=r.vertexShaderSource?i.createShader(l.VERTEX_SHADER,r.vertexShaderSource):i.defaultVShader,this.fragmentShader=r.fragmentShaderSource?i.createShader(l.FRAGMENT_SHADER,r.fragmentShaderSource):i.defaultFShader,this.program=i.createProgram(this.vertexShader,this.fragmentShader))}catch(l){this.context.destroy(new Ql({code:qg.VIDEO_MANAGER_ERROR,extraCode:3,message:`create video node ${this.name} error ${l.message||l}`}))}}get image(){return this._image}set image(i){this._image=i}createFramebuffer(i){const r=this.context.ctx,l=r.createFramebuffer();return r.bindFramebuffer(r.FRAMEBUFFER,l),r.framebufferTexture2D(r.FRAMEBUFFER,r.COLOR_ATTACHMENT0,r.TEXTURE_2D,i,0),l}connect(i,...r){return i.addInput(this,...r),this.output=i,i}addInput(i,...r){this.input=i,this.matchInputSize&&i.width&&i.height&&this.resize(i.width,i.height)}requestFrame(i){const r=Date.now();return!!(this.context instanceof D3&&this.render(i)||this.context instanceof sU&&this.render2d(i))&&(this.totalFrames++,this.cost=Date.now()-r,!0)}render2d(i){var r;return!!((r=this.input)!=null&&r.requestFrame(i))&&this.draw2d(this.input.image,0,0,this.width,this.height)}update(i=0){var r;(r=this.output)==null||r.update(i)}disconnect(...i){var r;(r=this.output)==null||r.removeInput(this,...i),delete this.output}removeInput(i,...r){delete this.input}close(){var i,r;if(this.context.off("disconnect",this.close,this),(i=this.output)==null||i.removeInput(this),delete this.output,(r=this.input)==null||r.disconnect(),this.context instanceof D3){const l=this.context.ctx;l.deleteBuffer(this.texCoordBuffer),l.deleteBuffer(this.positionBuffer),this.fbo&&l.deleteFramebuffer(this.fbo),this.texture&&l.deleteTexture(this.texture),this.vertexShader&&this.vertexShader!==this.context.defaultVShader&&l.deleteShader(this.vertexShader),this.fragmentShader&&this.fragmentShader!==this.context.defaultFShader&&l.deleteShader(this.fragmentShader),this.program&&this.program!==this.context.defaultProgam&&l.deleteProgram(this.program)}this._canvas&&(this._canvas.width=0,this._canvas.height=0,this.ctx2d=null),this.removeAllListeners()}useTexture(){this.useTextures(this.texture)}useInputTexture(){var i;this.useTextures((i=this.input)==null?void 0:i.texture)}useTextures(...i){const r=this.context.ctx;i.forEach((l,u)=>{l&&(r.activeTexture(r.TEXTURE0+u),r.bindTexture(r.TEXTURE_2D,l))})}useProgram(){this.context.ctx.useProgram(this.program)}useBufferFrame(){const i=this.context.ctx;i.bindFramebuffer(i.FRAMEBUFFER,this.fbo||null)}createBuffer(i){const r=this.context.ctx,l=r.createBuffer();return r.bindBuffer(r.ARRAY_BUFFER,l),r.bufferData(r.ARRAY_BUFFER,new Float32Array(i),r.STATIC_DRAW),l}setTexBuffer(i){const r=this.context.ctx;r.bindBuffer(r.ARRAY_BUFFER,this.texCoordBuffer),r.bufferData(r.ARRAY_BUFFER,new Float32Array(i),r.STATIC_DRAW)}setPosBuffer(i){const r=this.context.ctx;r.bindBuffer(r.ARRAY_BUFFER,this.positionBuffer),r.bufferData(r.ARRAY_BUFFER,new Float32Array(i),r.STATIC_DRAW)}changeBufferData(i,r){const l=this.context.ctx;l.bindBuffer(l.ARRAY_BUFFER,i),l.bufferData(l.ARRAY_BUFFER,new Float32Array(r),l.STATIC_DRAW)}setAttributes(...i){const r=this.context.ctx;i.forEach((l,u)=>{r.enableVertexAttribArray(u),r.bindBuffer(r.ARRAY_BUFFER,l),r.vertexAttribPointer(u,2,r.FLOAT,!1,0,0)})}getVertexPoint(i,r){return[i/this.width*2-1,r/this.height*2-1]}layout2texCoords(i){return[...this.getVertexPoint(i.x,i.y),...this.getVertexPoint(i.x+i.width,i.y),...this.getVertexPoint(i.x,i.y+i.height),...this.getVertexPoint(i.x+i.width,i.y+i.height)]}resize(i,r){if(this.width!==i||this.height!==r){if(this.width=i,this.height=r,this._canvas&&(this._canvas.width=i,this._canvas.height=r),this.texture&&this.fbo){this.useTexture();const l=this.context.ctx;l.texImage2D(l.TEXTURE_2D,0,l.RGBA,i,r,0,l.RGBA,l.UNSIGNED_BYTE,null)}this.output&&this.output.matchInputSize&&this.output.resize(i,r)}}draw(i,r){this.setAttributes(i||this.positionBuffer,r||this.texCoordBuffer);const l=this.context.ctx;l.drawArrays(l.TRIANGLE_STRIP,0,4)}draw2d(i,r,l,u,B,f,w,_,k){const F=!($n(f)||$n(w)||$n(_)||$n(k));return!(!this.ctx2d||!i)&&(i instanceof ImageData?(F?this.ctx2d.putImageData(i,r,l,f,w,_,k):this.ctx2d.putImageData(i,r,l),this.emit(y3.RENDER,this.ctx2d.canvas)):(F?this.ctx2d.drawImage(i,f,w,_,k,r,l,u,B):this.ctx2d.drawImage(i,r,l,u,B),this.emit(y3.RENDER,i)),typeof VideoFrame<"u"&&i instanceof VideoFrame&&i.close(),!0)}drawBackGround2d(i){this.ctx2d&&(this.ctx2d.save(),this.ctx2d.fillStyle=i,this.ctx2d.fillRect(0,0,this.width,this.height),this.ctx2d.restore())}getInfo(){var i;const{totalFrames:r,x:l,y:u,width:B,height:f,name:w,cost:_}=this,k=Date.now(),F=(r-this.lastInfo.totalFrames)/((k-this.lastInfo.timestamp)/1e3)|0;return this.lastInfo={totalFrames:r,x:l,y:u,width:B,height:f,timestamp:k,fps:F,name:w,cost:_},Rn({parent:(i=this.input)==null?void 0:i.getInfo()},this.lastInfo)}createTexture(i){const r=this.context.ctx,l=r.createTexture();return this.useTextures(l),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MIN_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MAG_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_S,r.CLAMP_TO_EDGE),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_T,r.CLAMP_TO_EDGE),r.pixelStorei(r.UNPACK_ALIGNMENT,1),r.texImage2D(r.TEXTURE_2D,0,r.RGBA,r.RGBA,r.UNSIGNED_BYTE,i),l}};de(QL,"RENDER","render"),Cc([Bu(Xn.INIT,"connected",{sync:!0})],QL.prototype,"connect"),Cc([Bu("connected",Xn.INIT,{ignoreError:!0,sync:!0})],QL.prototype,"disconnect"),Cc([Bu([],"closed",{sync:!0})],QL.prototype,"close");var IY=QL,EuA=jC(zIA(250),U7(()=>performance.now()),b7()),duA=t=>i=>{const r=performance.now();jC(EuA,ouA(l=>l-r{if(t!==this.context.frameRate&&(pQ.clearTask(this._intervalId),this.start(this.context.frameRate)),this.requestFrame(this._sequence++),this.checkGLError&&this.context instanceof D3){const i=this.context.ctx.getError();i&&this.context.destroy(new Ql({code:qg.VIDEO_MANAGER_ERROR,extraCode:5,message:`${this.name} req ${this._sequence} render ${this.totalFrames} faild ${i}`}))}},{fps:this.context.frameRate})}render(t){var i;return!!((i=this.input)!=null&&i.requestFrame(t))&&(this.useProgram(),this.useBufferFrame(),this.useInputTexture(),this.draw(),this.emit(IY.RENDER,this.context._canvas),!0)}addInput(t,...i){super.addInput(t,...i),this.start(this.context.frameRate)}update(t=0){this.state!=="closed"&&(this._intervalId&&(pQ.clearTask(this._intervalId),this._intervalId=0,t===1&&(this.log.info(`${this.name} use requestVideoFrameCallback`),this.checkVisibilityChange=()=>{document.hidden&&(this.start(this.context.frameRate),this.log.info(`${this.name} use timer`),document.removeEventListener("visibilitychange",this.checkVisibilityChange))},document.addEventListener("visibilitychange",this.checkVisibilityChange))),this.requestFrame(this._sequence++))}removeInput(t){super.removeInput(t),pQ.clearTask(this._intervalId)}resize(t,i){super.resize(t,i),this.context.setSize(t,i)}close(){super.close(),pQ.clearTask(this._intervalId),document.removeEventListener("visibilitychange",this.checkVisibilityChange)}},BuA=class extends huA{constructor(t,i){super(t,i),de(this,"_videoTrack"),de(this,"_muteOb"),de(this,"_closedOb",dE(this,"closed")),de(this,"_subscription"),de(this,"_canvasContainer"),Number(QU)<17&&(this._canvasContainer=document.createElement("div"),this._canvasContainer.style.display="none"),[this._videoTrack]=t.canvas.captureStream().getVideoTracks(),this._muteOb=dE(this._videoTrack,"mute"),jC(dE(this._videoTrack,"ended"),J_(this._closedOb),mv(()=>{this.context.destroy(new Ql({code:qg.VIDEO_MANAGER_ERROR,extraCode:8,message:"video track ended"}))}))}enableCheckMute(){this._subscription=jC(this._muteOb,J_(this._closedOb),P7(duA(5e3)),F_(()=>{var t;return!!((t=this._videoTrack)!=null&&t.muted)&&!document.hidden}),mv(()=>{this.context.destroy(new Ql({code:qg.VIDEO_MANAGER_ERROR,extraCode:7,message:"video track muted"}))}))}disableCheckMute(){var t;(t=this._subscription)==null||t.dispose()}get videoTrack(){return this._videoTrack}putCanvasIntoDom(){this.context._canvas&&this._canvasContainer&&(document.getElementById(this.context._canvas.id)||(this.log.info(`${this.name} put canvas to body`),document.body.appendChild(this._canvasContainer),this._canvasContainer.appendChild(this.context._canvas)))}render(t){return this.putCanvasIntoDom(),super.render(t)}render2d(t){return this.putCanvasIntoDom(),super.render2d(t)}close(){var t,i;super.close(),(t=this._videoTrack)==null||t.stop(),delete this._videoTrack,(i=this._canvasContainer)==null||i.remove()}},Y7=class extends IY{constructor(t,i){super(t,Rn({name:"imageSource"},i)),de(this,"_lastImage"),de(this,"_totalFrames",0),de(this,"_autoResize",!1),de(this,"_canvasRendered"),de(this,"videoCallbackId",0),de(this,"waitingFirstFrame",!0),de(this,"shouldUpdate",!0),this._autoResize=i?.autoResize!==!1,pv===16&&(this._canvasRendered=L7(),jC(this._canvasRendered,WIA(this._image),auA(r=>r instanceof HTMLCanvasElement?dE(r,"rendered"):XIA()),J_(dE(this,"closed")),mv(()=>{this.update()})))}onFirstFrame(){this.waitingFirstFrame=!1}tryVideoFrameCallback(){if(!this.shouldUpdate)return;const t=this.image;this.videoCallbackId&&t.cancelVideoFrameCallback(this.videoCallbackId),bW()&&!document.hidden&&(this.videoCallbackId=t.requestVideoFrameCallback((i,r)=>{this.waitingFirstFrame&&this.onFirstFrame(),document.hidden||(this._totalFrames=r.presentedFrames,this.update(1))}))}_render(t,i){var r;let{width:l,height:u}=this;const{image:B}=this;if(B instanceof HTMLVideoElement){if(this.tryVideoFrameCallback(),{videoWidth:l,videoHeight:u}=B,!l||!u)return!1;B.width=l,B.height=u}else if(B instanceof HTMLImageElement||B instanceof ImageData||B instanceof ImageBitmap){if({width:l,height:u}=B,B!==this._lastImage)this._lastImage=B;else if(l===this.width&&u===this.height)return!0}else B instanceof HTMLCanvasElement||B instanceof OffscreenCanvas?({width:l,height:u}=B,this._lastImage=B):typeof VideoFrame<"u"&&B instanceof VideoFrame&&({displayWidth:l,displayHeight:u}=B,(r=this._lastImage)==null||r.close(),this._lastImage=B);if(!this._autoResize)return!0;if(this.width===l&&this.height===u&&this.totalFrames){if(i){this.useTexture();const f=this.context.ctx;f.texSubImage2D(f.TEXTURE_2D,0,0,0,f.RGBA,f.UNSIGNED_BYTE,B)}}else{if(i){this.useTexture();const f=this.context.ctx;f.texImage2D(f.TEXTURE_2D,0,f.RGBA,f.RGBA,f.UNSIGNED_BYTE,B)}this.resize(l,u)}return!0}get image(){return this._image}set image(t){var i;(i=this._canvasRendered)==null||i.next(t),this._image=t}render(t){return this._render(t,!0)}render2d(t){return this._render(t,!1)}},V7=class extends Y7{constructor(t,i,r){super(t,r),this._player=i,this.name="videoPlayerSource",jC(dE(this._player,Vn.PLAYER_STATE_CHANGED),J_(dE(this,"closed")),F_(({state:l})=>l==="PLAYING"),mv(()=>{this.tryVideoFrameCallback()}))}get image(){return this._player.element}},QuA=class extends V7{get available(){return this._player.isPlaying&&!this.waitingFirstFrame}constructor(t,i,r){super(t,new Gy({id:r.name,track:i,muted:!0,container:null,objectFit:"contain",log:r.logger}),r),this.name="videoTrackSource",this._player.play()}replaceTrack(t){this.waitingFirstFrame=!0,this._player.setTrack(t),this._player.play()}close(){super.close(),this._player.stop()}},puA=class extends IY{constructor(t,i,r){super(t,iB(Rn({name:"textSource"},r),{create2d:!0})),de(this,"hasChange",!0),de(this,"content",""),this.ctx2d.textBaseline="top",this.content=i.content||"",i.font&&(this.font=i.font),i.color&&(this.color=i.color)}set font(t){this.ctx2d&&(this.ctx2d.font=t,this.hasChange=!0)}get font(){var t;return((t=this.ctx2d)==null?void 0:t.font)||""}set color(t){this.ctx2d&&(this.ctx2d.fillStyle=t,this.hasChange=!0)}get color(){var t;return((t=this.ctx2d)==null?void 0:t.fillStyle)||""}render2d(t){return!(!this.ctx2d||!this.hasChange)&&(this.ctx2d.clearRect(0,0,this.width,this.height),this.drawMultilineText(0,0),this.hasChange=!1,!0)}render(t){return!1}resize(t,i){if(!this.ctx2d)return;const{color:r,font:l}=this;super.resize(t,i),this.color=r,this.font=l}drawMultilineText(t=0,i=0,r=1.2){if(!this.ctx2d)return;const l=this.ctx2d.measureText(this.content);i+=l.fontBoundingBoxAscent||l.actualBoundingBoxAscent||0;const u=this.font.match(/(\d+)px/),B=(u?parseInt(u[1],10):16)*r,f=this.content.split(` -`);for(let w=0;w":"Detail >",l.onclick=this.onCollapseClick.bind(this);const I=t.content.firstChild,h=I.querySelector(`.${P1}`);return h.appendChild(l),h.appendChild(r),h.appendChild(i),I}addDiaLog(){fU()||(W3=!0,this._dialogNode=this.createDiaLog(),document.body.appendChild(this._dialogNode),this._dialogNode.onclick=this.onConfirm.bind(this),this._dialogNode.querySelector(`.${pL}`).onclick=t=>t.stopPropagation(),this._bodyPosition=document.body.style.position,document.body.style.position="fixed",Wo.info("show autoplay dialog"),ih.uploadEvent({log:YIA}))}deleteDialog(){this._dialogNode&&(document.body.removeChild(this._dialogNode),document.body.style.position=this._bodyPosition,this._dialogNode=null,W3=!1),yU=null}onConfirm(){Wo.warn("confirm clicked, try resume stream"),ps.emit(mn.AUTOPLAY_DIALOG_CLICK_CONFIRM),this.deleteDialog()}onCollapseClick(){const t=this._dialogNode.querySelector(`.${vZ}`);t.style.visibility=this._showDetail?"hidden":"visible",t.style.height=`${this._showDetail?0:"fit-content"}`,this._showDetail=!this._showDetail,this._isCollapseClicked||ih.uploadEvent({log:VIA}),this._isCollapseClicked=!0}onQuestionClick(){window.open(I$,"_blank"),this._isQuestionClicked||ih.uploadEvent({log:JIA}),this._isQuestionClicked=!0}},yU=null;function KIA(){yU||(yU=new qIA)}function jIA(){yU&&yU.deleteDialog()}var sU,Uy=class extends nv{constructor(t){super(t,zt.VIDEO),de(this,"stat",{}),de(this,"_calculateTimeout",-1),de(this,"viewMirror",!1),de(this,"objectFit","cover"),de(this,"container"),de(this,"canvas"),de(this,"shouldRenderAlpha",!1),de(this,"_preSize",{width:0,height:0}),de(this,"posterImg"),de(this,"pipWindow"),de(this,"enterPIPPromise"),de(this,"_originContainerPosition"),de(this,"_isResettingSrcObject",!1),de(this,"_wrapper",null),de(this,"_useWrapper",!1),de(this,"_isFirstFrameRenderEmitted",!1),this.mode=t.canvas?1:0,this.container=t.container,this.canvas=t.canvas,$n(t.viewMirror)||(this.viewMirror=t.viewMirror),$n(t.objectFit)||(this.objectFit=t.objectFit),this.initializeElement()}get isPlaying(){var t;return this._state==="PLAYING"&&(!this.element||!this.element.paused)&&((t=this.track)==null?void 0:t.readyState)==="live"&&!this.track.muted}initializeElement(){const t=document.createElement(zt.VIDEO);this.track&&this.mode!==2&&(t.srcObject=new MediaStream([this.track])),t.muted=!0,t.setAttribute("id",`video_${this.id}`),t.setAttribute("style",this.styleAttribute),this.canvas&&this.canvas.setAttribute("style",this.styleAttribute),t.setAttribute("autoplay","autoplay"),t.setAttribute("playsinline","playsinline"),this.element=t,rC&&(t.poster="data:,"),this._appendToWrapper(),this.bindElementEvents(),this.calculateStat(),this._bindFirstFrameRenderEvent(t)}_bindFirstFrameRenderEvent(t){const i=()=>{if(this._isFirstFrameRenderEmitted)return;this._isFirstFrameRenderEmitted=!0;const r=t.videoWidth||0,l=t.videoHeight||0;this._log.info(`first frame render: ${r}x${l}`),this.emit(Vn.FIRST_FRAME_RENDER,{width:r,height:l})};typeof t.requestVideoFrameCallback=="function"?t.requestVideoFrameCallback(i):t.addEventListener("loadeddata",i,{once:!0})}get styleAttribute(){let t=this._useWrapper?`grid-area:1/1;width:100%;height:100%;object-fit:${this.objectFit};${this.shouldRenderAlpha?"":"background-color:black"};`:`width:100%;height:100%;object-fit:${this.objectFit};${this.shouldRenderAlpha?"":"background-color:black"};`;return this.viewMirror&&(t+="transform:scaleX(-1);"),t}setLiveMode(t){if(this._useWrapper!==t&&(this._useWrapper=t,this.elementToRender&&this.elementToRender.setAttribute("style",this.styleAttribute),this.container&&this.elementToRender))if(t){const i=this._getOrCreateWrapper();i.insertBefore(this.elementToRender,i.firstChild)}else this.container.appendChild(this.elementToRender),this._cleanupWrapper()}setContainer(t){if(this.container===t)return;const i=this._wrapper,r=this.container;this.container=t,this._pausedRetryCount=__,this.track&&this.elementToRender&&this._appendToWrapper(),i&&r&&r!==this.container&&i.isConnected&&i.children.length===0&&i.remove()}_getOrCreateWrapper(){if(!this.container)throw new Error("[VideoPlayer] container is required");let t=this.container.querySelector("[data-trtc-video-wrapper]");return t||(t=document.createElement("div"),t.setAttribute("data-trtc-video-wrapper","true"),t.style.cssText="display:grid;width:100%;height:100%;",this.container.appendChild(t)),this._wrapper=t,t}_appendToWrapper(t){const i=t??this.elementToRender;if(this.container&&i)if(this._useWrapper){const r=this._getOrCreateWrapper();r.insertBefore(i,r.firstChild)}else this.container.appendChild(i)}bindElementEvents(){const t=super.bindElementEvents();this.handleElementEvent=this.handleElementEvent.bind(this),this.handleFullscreenChange=this.handleFullscreenChange.bind(this),this.handleVolumeChange=this.handleVolumeChange.bind(this),t&&t.add(zt.ENTER_PICTURE_IN_PICTURE,this.handleElementEvent).add(zt.LEAVE_PICTURE_IN_PICTURE,this.handleElementEvent).add(zt.RESIZE,this.handleElementEvent),this.element&&(this.element.addEventListener(zt.FULLSCREEN_CHANGE,this.handleFullscreenChange),this.element.addEventListener("webkitbeginfullscreen",this.handleFullscreenChange),this.element.addEventListener("webkitendfullscreen",this.handleFullscreenChange),this.element.addEventListener("volumechange",this.handleVolumeChange))}handleTrackEvent(t){var i;return t.type===zt.MUTE&&((i=this.stat)!=null&&i.fps&&(this.stat.fps=0),this.isFullscreen()&&this.resetSrcObjectToReplay()),super.handleTrackEvent(t)}handleFullscreenChange(){this.isFullscreen()?(this._log.info("enter fullscreen"),this.emit(Vn.ENTER_FULL_SCREEN)):(this._log.info("leave fullscreen"),this.emit(Vn.LEAVE_FULL_SCREEN))}handleVolumeChange(){var t;(this.isPictureInPicture()||this.isFullscreen())&&this.emit(Vn.VOLUME_CHANGE,{muted:(t=this.element)==null?void 0:t.muted})}handleElementEvent(t){var i,r,l,I,h,f;if(this.mode===2)return;super.handleElementEvent(t);const w=t.type,_=this.isPictureInPicture(),k=this.isFullscreen(),U=t.isTrusted&&(_&&ad||k);if(w===zt.PLAYING&&U&&!this._isResettingSrcObject&&(this._log.warn("user resume in "+(k?"fullscreen":"pip")),this.emit(Vn.USER_RESUME_IN_PIP_OR_FULL_SCREEN)),w===zt.PAUSE&&(U&&(this._log.warn("user pause in "+(k?"fullscreen":"pip")),this.emit(Vn.USER_PAUSE_IN_PIP_OR_FULL_SCREEN)),this.container&&!this.container.isConnected&&(this._log.warn(`${this.kind} player has been remove, element ID: ${this.container.id}`),iT(500).then(()=>{var j;(j=this.container)!=null&&j.isConnected&&(this._pausedRetryCount=__,this._log.info(`view container ${this.container.id} is in dom, reset pausedRetryCount`))})),this._pausedRetryCount>0&&!fU()&&!this.isPausedByUserCall&&!U&&(this._log.info(`[${__-this._pausedRetryCount+1}/${__}] ${this.kind} player auto resume when paused`),this.doResume(),this._pausedRetryCount--),Du&&!U&&(this._interval=fQ.run("timeout",()=>{this.element&&this._state==="PAUSED"&&!this.isPausedByUserCall&&this.doResume()},{delay:3e3})),this.stat.fps&&(this.stat.fps=0)),this.viewMirror&&this.element){const j=this.element.style.transform;w===zt.ENTER_PICTURE_IN_PICTURE?this.element.style.transform=j.replace("scaleX(-1)",""):w!==zt.LEAVE_PICTURE_IN_PICTURE||j.includes("scaleX")||(this.element.style.transform=`${j} scaleX(-1)`)}w===zt.RESIZE&&(this._preSize.height===((i=this.element)==null?void 0:i.videoHeight)&&this._preSize.width===((r=this.element)==null?void 0:r.videoWidth)||(this._log.info(`video size changed to ${(l=this.element)==null?void 0:l.videoWidth}x${(I=this.element)==null?void 0:I.videoHeight}`),this._preSize.height=((h=this.element)==null?void 0:h.videoHeight)||0,this._preSize.width=((f=this.element)==null?void 0:f.videoWidth)||0,this.emit(Vn.RESIZE,{newWidth:this._preSize.width,newHeight:this._preSize.height}))),w===zt.LEAVE_PICTURE_IN_PICTURE&&(this._log.warn("exit pip"),this.isPaused&&!this.isPausedByUserCall&&(this._log.warn("resume after exit pip"),this.doResume()),this.resetSrcObjectToReplay(),this.emit(Vn.LEAVE_PICTURE_IN_PICTURE)),w===zt.ENTER_PICTURE_IN_PICTURE&&this.emit(Vn.ENTER_PICTURE_IN_PICTURE)}resetSrcObjectToReplay(){rC&&jj&&this.isPlayCalled&&this.element&&this.track&&!this.isPausedByUserCall&&(this._log.warn("reset srcObject to replay for android chromium"),this._isResettingSrcObject=!0,this.element.srcObject=new MediaStream([this.track]),this.element.play().catch(t=>{this._log.warn("play failed after reset srcObject",t)}).finally(()=>{this._isResettingSrcObject=!1}))}setCanvas(t,i=1){var r,l;this.canvas!==t&&((r=this.canvas)==null||r.remove(),t?.setAttribute("style",this.styleAttribute),this.canvas=t,this.mode=t?i:0,this.mode===2&&this.setTrack(t.captureStream().getVideoTracks()[0]),t?((l=this.element)==null||l.remove(),this._appendToWrapper(t)):this.element&&this._appendToWrapper(this.element))}setAttr(t){const i=Object.assign({autoplay:"autoplay",playsinline:"playsinline",muted:!0},t);i.style=Object.assign({width:"100%",height:"100%"},i.style),super.setAttr(i)}get mirror(){return this.viewMirror}setRect(t,i){this.elementToRender&&(this.elementToRender.style.width=`${t}px`,this.elementToRender.style.height=`${i}px`)}setViewMirror(t){this.elementToRender&&(this.elementToRender.style.transform=t?"scaleX(-1)":""),this.viewMirror=t}setObjectFit(t){this.elementToRender&&(this.elementToRender.style.objectFit=`${t}`),this.objectFit=t}setPoster(t,i=!1){return new Promise(r=>{if(!this.element||(this._log.info("setPoster",t.slice(0,10)),t===""?this.element.removeAttribute("poster"):this.element.poster=t,!(i&&(ad||oC))))return r();if(t==="")return this.removePosterImg(),r();if(this.posterImg)return r();const l=document.createElement("img");l.src=t;const I=window.getComputedStyle(this.element),h=I.objectFit||this.objectFit;let f=1;if(this._useWrapper){const w=parseInt(I.zIndex,10);isNaN(w)||(f=w+1)}l.style.cssText=this._useWrapper?`grid-area:1/1;z-index:${f};width:100%;height:100%;object-fit:${h};`:`position:absolute;top:0;left:0;width:100%;height:100%;object-fit:${h};`,l.onload=async()=>{try{l.decode&&await l.decode(),this.container&&!this._useWrapper&&window.getComputedStyle(this.container).position==="static"&&(this._originContainerPosition=this.container.style.position,this.container.style.position="relative"),this.posterImg=l;const w=this._useWrapper?this._wrapper:this.container;w?.appendChild(l),vY()&&_v<=17&&this.elementToRender&&(this.elementToRender.style.visibility="hidden")}catch(w){this._log.warn("decode poster image error",w)}return r()},l.onerror=()=>(this._log.warn("load poster image error"),r())})}removePosterImg(){this.posterImg&&(vY()&&_v<=17&&this.elementToRender&&(this.elementToRender.style.visibility=""),this.posterImg.remove(),URL.revokeObjectURL(this.posterImg.src),this._useWrapper||!this.container||$n(this._originContainerPosition)||this.container.style.position!=="relative"||(this.container.style.position=this._originContainerPosition),delete this.posterImg)}get hasPoster(){var t;return!!this.posterImg||!!((t=this.element)!=null&&t.getAttribute("poster"))}async pause(t=!0){super.pause(),this.isPictureInPicture()||this.hasPoster||!(jj||t&&(oC||ad))||await this.setPoster(this.getVideoFrame(),!0)}resume(t=!1){return super.resume(t).then(()=>{var i;(this.posterImg||(i=this.element)!=null&&i.poster)&&this.setPoster("",!0)})}doResume(t=!1){return this.isPaused&&t&&this.element&&this.track&&jj&&this.track.kind==="video"&&(this.element.srcObject=new MediaStream([this.track])),super.doResume()}stop(t=0){var i;this.isPictureInPicture()&&this.exitPictureInPicture().catch(r=>{}),this.isFullscreen()&&this.exitFullscreen().catch(r=>{}),this.element&&(this.element.removeEventListener(zt.FULLSCREEN_CHANGE,this.handleFullscreenChange),this.element.removeEventListener("webkitbeginfullscreen",this.handleFullscreenChange),this.element.removeEventListener("webkitendfullscreen",this.handleFullscreenChange),this.element.removeEventListener("volumechange",this.handleVolumeChange)),this._isFirstFrameRenderEmitted=!1,super.stop(t),(i=this.canvas)==null||i.remove(),this.removePosterImg(),this._useWrapper&&this._cleanupWrapper()}_cleanupWrapper(){this._wrapper&&this._wrapper.children.length===0&&this._wrapper.remove(),this._wrapper=null}play(t){if($n(t?.isLiveStream)||this.setLiveMode(t.isLiveStream),this.element){if(this.elementToRender&&this.container)if(this._useWrapper){const i=this._getOrCreateWrapper();this.elementToRender.parentElement!==i&&i.insertBefore(this.elementToRender,i.firstChild)}else this.elementToRender.parentElement!==this.container&&this.container.append(this.elementToRender)}else this.initializeElement();return this.mode===2?Promise.resolve():super.play()}get elementToRender(){return this.canvas||this.element}setTrack(t){t!==this.track&&(this.unbindTrackEvents(),this.track=t,this.emit(Vn.MEDIA_TRACK_CHANGED,t),t!==null&&(this.bindTrackEvents(),this.element&&this.mode!==2&&(this.element.srcObject=new MediaStream([t]),this.element.remove()),this._appendToWrapper()))}getVideoFrame(){if(this.canvas)return this.canvas.toDataURL("image/png");if(!this.element)return"";const t=document.createElement("canvas");return t.width=this.element.videoWidth,t.height=this.element.videoHeight,t.getContext("2d").drawImage(this.element,0,0),t.toDataURL("image/png")}getElement(){return this.element}calculateStat(){try{if(E4()&&this.element&&this._calculateTimeout<0){let t=0,i=null;const r=(l,I)=>{this.stat.width=I.width,this.stat.height=I.height,i&&(this.stat.fps=Math.round((I.presentedFrames-i.presentedFrames)/(l-t)*1e3)),t=l,i=I,this._calculateTimeout=-1,this.element&&(this._calculateTimeout=setTimeout(()=>{var h;return(h=this.element)==null?void 0:h.requestVideoFrameCallback(r)},2e3))};this.element.requestVideoFrameCallback(r)}}catch(t){this._log.warn("init stat failed",t)}}async enterFullscreen(){const t=this.elementToRender;if(!t)throw this._log.warn("no element to render, cannot enter fullscreen"),new Error("No element available for fullscreen");if(Du&&this.isPictureInPicture()){this._log.info("exit pip before entering fullscreen");try{await this.exitPictureInPicture()}catch(i){this._log.warn("exit pip failed before fullscreen:",i)}}try{if(t.requestFullscreen)await t.requestFullscreen();else if(t.webkitRequestFullscreen)await t.webkitRequestFullscreen();else if(t.webkitEnterFullscreen)await t.webkitEnterFullscreen();else if(t.mozRequestFullScreen)await t.mozRequestFullScreen();else{if(!t.msRequestFullscreen)throw new Error("Fullscreen API not supported");await t.msRequestFullscreen()}this._log.info("entered fullscreen mode")}catch(i){throw this._log.error("failed to enter fullscreen:",i),i}}async exitFullscreen(){try{if(!this.isFullscreen())return;if(document.exitFullscreen)await document.exitFullscreen();else if(document.webkitExitFullscreen)await document.webkitExitFullscreen();else if(document.mozCancelFullScreen)await document.mozCancelFullScreen();else{if(!document.msExitFullscreen)throw new Error("Exit fullscreen API not supported");await document.msExitFullscreen()}this._log.info("exited fullscreen mode")}catch(t){throw this._log.error("failed to exit fullscreen:",t),t}}isFullscreen(){const t=this.elementToRender;return t?this.element&&this.element.webkitDisplayingFullscreen?!this.isPictureInPicture():(document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement)===t:!1}async toggleFullscreen(){this.isFullscreen()?await this.exitFullscreen():await this.enterFullscreen()}async enterPictureInPicture(){this.enterPIPPromise=this._enterPictureInPicture();try{return await this.enterPIPPromise}finally{delete this.enterPIPPromise}}async _enterPictureInPicture(){try{if(!this.element)throw new Error("No video element available for pip");if(this.canvas&&this.mode!==1)throw new Error("pip is not supported for canvas-only mode");const{element:t}=this;if(t.requestPictureInPicture){this._log.info("requestPictureInPicture");const i=await t.requestPictureInPicture();return this.pipWindow=i,this._log.info("entered pip mode"),this.elementToRender===this.canvas&&(this.canvas.remove(),this._appendToWrapper(this.element)),i}if(t.webkitSetPresentationMode)return this._log.info("webkitSetPresentationMode"),await t.webkitSetPresentationMode("picture-in-picture"),this._log.info("entered pip mode (webkit)"),{};throw new Error("pip API not supported")}catch(t){throw this._log.error("failed to enter pip:",t.name,t.message),t}}async exitPictureInPicture(){var t;try{if(!this.isPictureInPicture())return;if(delete this.pipWindow,document.pictureInPictureElement&&document.exitPictureInPicture)await document.exitPictureInPicture(),this.elementToRender===this.canvas&&((t=this.element)==null||t.remove(),this._pausedRetryCount=__,this._appendToWrapper(this.canvas)),this._log.info("exited pip mode");else{if(!this.element||!this.element.webkitSetPresentationMode)throw new Error("Exit pip API not supported or not in PiP mode");await this.element.webkitSetPresentationMode("inline"),this._log.info("exited pip mode (webkit)")}}catch(i){throw this._log.error("failed to exit pip:",i),i}}isPictureInPicture(){if(!this.element)return!1;const{element:t}=this;return document.pictureInPictureElement?document.pictureInPictureElement===t:!!t.webkitPresentationMode&&t.webkitPresentationMode==="picture-in-picture"}async togglePictureInPicture(){this.isPictureInPicture()?await this.exitPictureInPicture():await this.enterPictureInPicture()}};async function WIA(t,i){if(!t.audioWorklet)return Promise.reject("audioWorklet is not supported");try{await t.audioWorklet.addModule(i),Wo.info("worklet addModule success")}catch(r){throw Wo.info(`worklet addModule catch error. ${r.message}`),r}}typeof AudioContext<"u"?sU=AudioContext:typeof webkitAudioContext<"u"?sU=webkitAudioContext:typeof mozAudioContext<"u"&&(sU=mozAudioContext);var mu,zIA=1500,TZ=-1,Y1=0,nU=-1,z3=!1,NZ=0,GZ=-1,bZ=-1;function u$(){try{if(mu)return;(mu=new sU({sampleRate:48e3})).onstatechange=()=>{Wo.info(`context state: ${mu.state}${mu.state!=="running"?` visibilityState: ${document.visibilityState}`:""}`),j_()},clearTimeout(TZ)}catch(t){Wo.error(`initAudioContext failed: ${t} typeof AudioContextClass: ${typeof sU}`),TZ=setTimeout(u$,1e3)}}u$();var j_=()=>{mu.state==="suspended"?(Y1=xc(),ZIA(),bY(),document.addEventListener("click",j_)):mu.state==="interrupted"?bY():(Y1&&(Ir.addNumber({key:507800,value:xc()-Y1,split:[0,500,1e3,1500,2e3,3e3,4e3,5e3,1e4,3e4],max:6e4}),Y1=0),XIA(),document.removeEventListener("visibilitychange",j_),document.removeEventListener("click",j_))},e3=0,t3=-1;function bY(){return new Promise((t,i)=>{if(mu.state==="running")return t();Date.now()-e3<1e3?(clearTimeout(t3),t3=setTimeout(()=>{e3=Date.now(),mu.resume().then(t,i)},1e3)):(clearTimeout(t3),e3=Date.now(),mu.resume().then(t,i))}).catch(t=>{Wo.warn(`context resume failed: ${t}`),document.addEventListener("visibilitychange",j_)})}function ZIA(){nU===-1&&(nU=setTimeout(()=>{mu.state==="suspended"&&(z3=!0,ps.emit("155",{isSuspended:!0}))},zIA))}function XIA(){nU!==-1&&(clearTimeout(nU),nU=-1,z3&&(z3=!1,ps.emit("155",{isSuspended:!1})))}function $IA(){if(!Du||bZ!==-1)return;const t=()=>{xc()-NZ<500||(mu&&mu.state==="running"&&mu.currentTime===GZ&&(Wo.warn("context is fake running, auto resume"),mu.suspend().catch(i=>{Wo.warn(`context suspend failed: ${i}`)})),GZ=mu.currentTime,NZ=xc())};bZ=setInterval(()=>{t()},2e3),document.addEventListener("visibilitychange",()=>{document.visibilityState==="visible"&&t()})}document.addEventListener("click",j_);var AD=t=>mu,fv=class{constructor(t){this.name=t,de(this,"node"),de(this,"node2"),de(this,"pre",new Set),de(this,"next",new Set),de(this,"context"),de(this,"connectedNodes",new Set),de(this,"nextInputChannelMap",new Map),de(this,"_channelCount",1)}get channelCount(){return this._channelCount}set channelCount(t){this._channelCount=t,this.setChannelCount(this.node,t),this.setChannelCount(this.node2,t),this.next.forEach(i=>i.channelCount=t)}setChannelCount(t,i){!t||t instanceof ScriptProcessorNode||(t.channelCountMode="explicit",t.channelCount=i||this.channelCount||1)}setContext(t){this.context=t,this.node&&t.addMixWeight()}removeContext(){var t;this.node&&((t=this.context)==null||t.reduceMixWeight()),delete this.context}replaceNode(t){var i;if(t!==this.node)try{this.node?this._disconnect():(i=this.context)==null||i.addMixWeight(),this.node=t,this.setChannelCount(this.node),this.preNodeReconnect(),this.reconnect()}catch(r){Wo.error(r)}}setNode(t,i){var r;if(!this.node)try{(r=this.context)==null||r.addMixWeight(),this.node=t,this.setChannelCount(this.node),i&&(this.node2=i,this.setChannelCount(this.node2)),this.preNodeReconnect(),this.reconnect(),Ir.addSuccessEvent({key:502701})}catch(l){Wo.error(l),Ir.addFailedEvent({key:502701,error:l})}}deleteNode(){var t;if(this.node)try{this._disconnect(),delete this.node,delete this.node2,(t=this.context)==null||t.reduceMixWeight(),this.preNodeReconnect(),Ir.addSuccessEvent({key:502702})}catch(i){Wo.error(i),Ir.addFailedEvent({key:502702,error:i})}}preNodeReconnect(){this.pre.forEach(t=>{t.node?t.reconnect():t.preNodeReconnect()})}connectNext(t){this.next.forEach(i=>{const r=this.nextInputChannelMap.get(i);t._connect(i.node,r)||i.connectNext(t)})}_connect(t,i=0){return!(!this.node||!t)&&((this.node2||this.node).connect(t,0,i),this.connectedNodes.add(t),!0)}_disconnect(){this.connectedNodes.forEach(t=>{var i;return(i=this.node2||this.node)==null?void 0:i.disconnect(t)}),this.connectedNodes.clear()}reconnect(){this._disconnect(),this.connectNext(this)}pipeTo(t,i=0){return this.next.add(t),t.pre.add(this),this.nextInputChannelMap.set(t,i),t}},AuA=class extends fv{constructor(t=256){super(),this.fftSize=t,de(this,"dataArray",new Uint8Array(0))}setNode(t){t.fftSize=this.fftSize,this.dataArray=new Uint8Array(t.frequencyBinCount),super.setNode(t)}getByteTimeDomainData(){var t;return(t=this.node)==null||t.getByteTimeDomainData(this.dataArray),this.dataArray}get level(){var t;return(t=this.node)==null||t.getByteTimeDomainData(this.dataArray),Math.max(...this.dataArray)/128-1}get timeDomainPathData(){const t=this.getByteTimeDomainData();let i=0,r=0,l=`M${i},${r}`;for(let I=0;Ithis.initAudioWorklet()).catch(i=>(this._log.error(`volumeMeter preload error: ${i}`),this.initScriptProcessor()))}initAudioWorklet(){if(!this._audioWorkletNode)try{this._audioWorkletNode=new AudioWorkletNode(nm.audioContext,"volume-meter");let i=!1;this._audioWorkletNode.port.onmessage=r=>{nm.lastMessageTime=Date.now(),this._volume=r.data.volume||0,this._volumeDb=r.data.volumeDb||0,!i&&r.data.cacheLen&&r.data.outputLen&&(this._log.warn("worklet play success"),i=!0)},this.handleAudioLevelInterval({interval:this._interval})}catch(i){this._log.error(`volumeMeter init audio worklet error: ${i}`),ih.logFailedEvent({userId:this._log.userId,eventType:$L.LOAD_WORKLET,error:i}),this.initScriptProcessor()}}initScriptProcessor(){if(!this._scriptProcessorNode)try{this._scriptProcessorNode=AD("volume-meter").createScriptProcessor(2048,1,1),this._scriptProcessorNode.onaudioprocess=i=>{nm.lastMessageTime=Date.now();const r=i.inputBuffer.getChannelData(0);let l=0;for(let I=0;I>2);t.copyTo(r,{planeIndex:0}),this.node.port.postMessage({name:"chunk",data:r},[r.buffer]),t.close()}}},ouA=lT(FU()),UZ=t=>i=>i.deviceId===t,i3=class{constructor(t,i){de(this,"kind"),de(this,"type"),de(this,"devices",[]),this.kind=t,this.type=i}update(t,i){const r=t.filter(l=>l.kind===`${this.kind}${this.type.toLocaleLowerCase()}`);this.devices.length===1&&E$(this.devices[0])||i&&(r.forEach(l=>{if(l.deviceId&&!this.devices.find(UZ(l.deviceId))){const I=`${this.kind}${this.type}Added`;Wo.warn(`${I}: ${JSON.stringify(l)}`),i.emit(I,l)}}),this.devices.forEach(l=>{if(l.deviceId&&!r.find(UZ(l.deviceId))){const I=`${this.kind}${this.type}Removed`;Wo.warn(`${I}: ${JSON.stringify(l)}`),i.emit(I,l)}})),this.devices=r}hasDevice(t){return!!this.devices.find(i=>i.deviceId===t)}},suA=class extends ouA.EventEmitter{constructor(){super(),de(this,"audioInputs",new i3(zt.AUDIO,"Input")),de(this,"videoInputs",new i3(zt.VIDEO,"Input")),de(this,"audioOutputs",new i3(zt.AUDIO,"Output")),this.init(),navigator.mediaDevices&&(navigator.mediaDevices.addEventListener&&navigator.mediaDevices.addEventListener("devicechange",()=>this.update()),"ondevicechange"in navigator.mediaDevices||fQ.run("interval",()=>{this.update()},{delay:1e4}))}init(){Z3().then(t=>{this.audioInputs.update(t),this.videoInputs.update(t),this.audioOutputs.update(t)})}async update(t=0){const i=await Z3(t);return this.audioInputs.update(i,this),this.videoInputs.update(i,this),this.audioOutputs.update(i,this),this}hasBlueTooth(){var t;if(1e3*((t=AD())==null?void 0:t.outputLatency)>150)return!0;const i=["bluetooth","air","wireless","bt","tws","buds","headset","headphone"];return this.audioOutputs.devices.some(r=>i.some(l=>r.label.toLowerCase().includes(l)))||this.audioInputs.devices.some(r=>i.some(l=>r.label.toLowerCase().includes(l)))}},pQ=FX||UX?null:new suA;function E$(t){return t.deviceId===t.groupId&&t.groupId===""}async function Z3(t=0){if(QV()||!c4())return[];let i=await navigator.mediaDevices.enumerateDevices();if(t!==0){const r={audio:!1,video:!1};if(i.forEach(l=>{E$(l)&&(l.kind===zt.AUDIO_INPUT?r.audio=!0:l.kind===zt.VIDEO_INPUT&&(r.video=!0))}),t===2&&(r.audio=!1),t===1&&(r.video=!1),r.audio||r.video){let l;try{l=await navigator.mediaDevices.getUserMedia(r),r.audio&&bY()}catch(I){Wo.debug("capture before getDevices failed: ",I)}i=await navigator.mediaDevices.enumerateDevices(),l?.getTracks().forEach(I=>I.stop())}}return i.map((r,l)=>{const I={kind:r.kind,deviceId:r.deviceId,groupId:r.groupId,label:r.label||`${r.kind}_${l}`};return r.deviceId.length>0&&B4.add(`${r.deviceId}_${r.kind}`),r.getCapabilities&&(I.getCapabilities=()=>r.getCapabilities()),I})}function DU(t=!1){return pQ.update(t?1:0).then(i=>i.audioInputs.devices)}function yv(t=!1){return pQ.update(t?2:0).then(i=>i.videoInputs.devices)}var FZ=!1;async function nuA(){try{FZ||(FZ=!0,Wo.info(`speakers:${(await ruA()).map(t=>` ${t.deviceId.slice(0,8)}: ${t.label}`)}`))}catch{}}async function ruA(t=!1){return(Du||ad)&&(t=!1),pQ.update(t?1:0).then(i=>i.audioOutputs.devices)}var rY,B4=new Set;function auA(t){if(t instanceof CanvasCaptureMediaStreamTrack||!(t instanceof MediaStreamTrack))return!1;const i=t.label.toLocaleLowerCase();if(i.includes("camera")||i.includes("webcam"))return!0;const r=`${(t?.getSettings()||{}).deviceId}_${zt.VIDEO_INPUT}`;return!!B4.has(r)}function guA(t){if(t instanceof CanvasCaptureMediaStreamTrack||!(t instanceof MediaStreamTrack))return!1;const i=t.label.toLocaleLowerCase();if(i.includes("mic")||i.includes("麦克风"))return!0;const r=`${(t?.getSettings()||{}).deviceId}_${zt.AUDIO_INPUT}`;return!!B4.has(r)}async function cuA(t,i){const r=(await DU()).find(l=>l.deviceId===xX);return!i&&r?.groupId===t||r?.groupId===t&&r.label===i}async function luA({newDeviceId:t,oldDeviceId:i,oldGroupId:r,oldLabel:l,kind:I}){return t===i&&(I!==zt.AUDIO||t!==xX||await cuA(r,l))}var IuA=class extends euA{constructor(t){super(),this.log=t,de(this,"volumeMeter"),de(this,"volumeMeterAfter3A"),de(this,"volumeDestination"),de(this,"analyser",new AuA),this.volumeMeter=new LZ({log:this.log}),this.volumeMeterAfter3A=new LZ({log:this.log}),this.volumeDestination=new fv,this.volumeMeter.pipeTo(this.volumeDestination)}destroy(){this.gain.deleteNode(),this.volumeMeter.deleteNode(),this.analyser.deleteNode(),this.source.deleteNode(),this.destination.deleteNode(),this.volumeDestination.deleteNode()}},uuA=class extends nv{constructor(t){super(t,zt.AUDIO),de(this,"_outputDeviceId"),de(this,"_floatVolume",1),de(this,"_destination"),de(this,"pipeline"),de(this,"volumeMeterMode","worklet"),de(this,"enableVolumeControlInIOS"),this.enableVolumeControlInIOS=t.enableVolumeControlInIOS,this.mode=0,t.url&&(this.url=t.url),this.pipeline=new IuA(this._log)}setTrack(t){}get duration(){var t;return Math.floor(1e3*(((t=this.element)==null?void 0:t.duration)||0))}get currentTime(){var t;return Math.floor(1e3*(((t=this.element)==null?void 0:t.currentTime)||0))}set currentTime(t){this.element&&(this.element.currentTime=t/1e3)}getMediaStream(){return this.pipeline.stream||(this.track?new MediaStream([this.track]):null)}initializeElement(t){if((SQ==="15.2"||SQ==="15.3"||SQ==="15.4")&&this.muted)return void this._log.info("audioElement is muted.");this._log.info("audio player initializeElement");const i=rY||new Audio;i.setAttribute("autoplay","autoplay"),i.srcObject=this.getMediaStream(),i.muted=this.muted,this.url&&(i.crossOrigin="anonymous",i.src=this.url),this.element=i,this.setVolume(wv(t)?t/100:this._floatVolume),i===rY&&(rY=void 0),this.options.enableTimeupdateEvent&&(this.element.ontimeupdate=()=>this.emit(Vn.TIME_UPDATE,this.currentTime)),this.bindElementEvents()}async play(t){if(this.track||this.url){try{!this.pipeline.source.node&&this.track&&this.pipeline.replaceSource(this.track),this.element||this.initializeElement(t?.volume),this._outputDeviceId&&await this.setSinkId(this._outputDeviceId),this.volumeMeterMode==="worklet"?(this.pipeline.volumeMeter.init(),this.pipeline.volumeMeterAfter3A.init()):this.volumeMeterMode==="analyser"&&this.pipeline.analyser.setNode(AD("player").createAnalyser()),nuA()}catch(i){throw this._log.warn(`audio play error: ${i}`),G7(SQ,"18.7",!0)&&this.bindAutoPlayEvent(),i}return super.play()}}stop(t=0){this.pipeline.destroy(),super.stop(t)}setVolume(t){this._floatVolume=t,this.element&&(this.element.volume=t)}async setSinkId(t){var i,r;this._outputDeviceId!==t&&(this._outputDeviceId=t),this.element&&this.element.sinkId!==t&&await((r=(i=this.element).setSinkId)==null?void 0:r.call(i,t))}get useDestination(){return!!this.pipeline.stream}setLoop(t){this.element&&(this.element.loop=t)}getAudioLevel(){return this.pipeline.volumeMeter.getCalculatedVolume()}getInternalAudioLevel(){return this.pipeline.volumeMeter.getInternalAudioLevel()}getInternalAudioLevelAfter3A(){return this.pipeline.volumeMeterAfter3A.getInternalAudioLevel()}},EuA=class extends uuA{constructor(t){super(t),de(this,"_sourceElement"),de(this,"_output",new fv),this.pipeline.source.pipeTo(this.pipeline.gain),this.pipeline.gain.pipeTo(this.pipeline.volumeMeter).pipeTo(this._output),this.pipeline.gain.pipeTo(this.pipeline.destination)}setOutput(){this.mode=1,this._output.setNode(AD().destination)}write(t){this.pipeline.volumeMeter.write(t)}setTrack(t){var i,r,l;((r=(i=this.element)==null?void 0:i.error)==null?void 0:r.code)!==MediaError.MEDIA_ERR_DECODE&&this.track!==t&&(this.unbindTrackEvents(),this.track=t,this.emit(Vn.MEDIA_TRACK_CHANGED,t),t?(this.bindTrackEvents(),this._sourceElement?this._sourceElement.srcObject=new MediaStream([t]):!this.useDestination&&this.element&&(this.element.srcObject=new MediaStream([t])),this.pipeline.source.channelCount=((l=t.getSettings())==null?void 0:l.channelCount)||1,this.pipeline.replaceSource(t)):this.pipeline.source.deleteNode())}setVolume(t){var i;const r=t<=1&&!vY();if(!(this._floatVolume===t&&(r&&((i=this.element)==null?void 0:i.volume)===t||!r&&this.pipeline.volume===t)))if(this._floatVolume=t,this.useDestination)this.pipeline.setVolume(t),this._log.info(`set pipeline volume: ${t}`);else if(r)this.element?(this._log.info(`set element volume: ${t}`),this.element.volume=t):this._log.info("set element volume: no element");else{if(vY()){if(!this.enableVolumeControlInIOS)return;$IA()}if(oC&&!this.pipeline.source.node)return void this._log.warn("set pipeline volume failed: no source node");this._log.info(`start set pipeline volume: ${t}`),this.pipeline.setVolume(t),this.element&&!this._sourceElement&&(this._destination||(this._destination=AD().createMediaStreamDestination()),this.pipeline.destination.setNode(this._destination),mU(this.element),this._sourceElement=this.element,this._sourceElement.muted=!0,this.element=null,this.play().catch(l=>{this.emit(Vn.AUTOPLAY_FAILED,l)}))}}stop(t=0){this.pipeline.destroy();const i=this._sourceElement||this.element;i&&N7&&(rY=i),this._sourceElement&&(this._sourceElement.srcObject=null,delete this._sourceElement),super.stop(t)}},Q4=class extends Xn{constructor({userId:t,sdkAppId:i,mediaType:r,room:l,PlayerClass:I=r===1?EuA:Uy}){var h;super(),de(this,"id",P7()),de(this,"userId",""),de(this,"isRemote"),de(this,"mediaType"),de(this,"room"),de(this,"user"),de(this,"_log"),de(this,"_inputTrack"),de(this,"_outputTrack"),de(this,"isPlayCalled"),de(this,"container",null),de(this,"player"),de(this,"subVideoPlayerMap"),de(this,"muted",!1),de(this,"abortCtrl"),de(this,"objectFit","cover"),de(this,"mirror"),de(this,"rotation"),de(this,"isScreen",!1),de(this,"manager"),de(this,"trackSettings"),de(this,"isFirstVideoFrameEmitted",!1),this.userId=t||"",this.mediaType=r,this._log=Wo.createLogger({parent:l?.getLogger(),id:`${this.kind[0]}t`,userId:(h=l||this.room)==null?void 0:h.userId,remoteUserId:this instanceof uv?void 0:this.userId,sdkAppId:i,type:this.mediaType===2?"auxiliary":"main",isLocal:this instanceof uv}),this.player=new I({id:this.userId||this.id,track:null,muted:!1,container:null,log:this._log,enableVolumeControlInIOS:l?.enableVolumeControlInIOS}),this.player.on(Vn.PLAYER_STATE_CHANGED,f=>{if(ps.emit(mn.PLAYER_STATE_CHANGED,Rn({track:this},f)),this.emit("player-state-changed",f),f.state==="PLAYING"&&this.room){let w=!0;for(const{remoteAudioTrack:_,remoteVideoTrack:k,remoteAuxiliaryTrack:U}of[...this.room.remotePublishedUserMap.values()])if(_.isAvailable&&!_.player.isPlaying||k.isAvailable&&!k.player.isPlaying||U.isAvailable&&!U.player.isPlaying){w=!1;break}w&&fU()&&jIA()}}),this.kind===zt.VIDEO&&(this.player.on(Vn.LOADED_DATA,()=>{this.emitFirstVideoFrameEvent(Vn.LOADED_DATA),ps.emit(mn.VIDEO_LOADED_DATA,{track:this})}),this.player.on(Vn.LOADED_META_DATA,()=>{this.emitFirstVideoFrameEvent(Vn.LOADED_META_DATA)}),this.player.on(Vn.MEDIA_TRACK_CHANGED,f=>{var w;(w=this.subVideoPlayerMap)==null||w.forEach(_=>_.setTrack(f))}),this.player.on(Vn.RESIZE,f=>{this.emitFirstVideoFrameEvent(Vn.RESIZE),this.emit("video-size-changed",Rn({userId:this.userId,streamType:this.mediaType===2?"auxiliary":"main"},f))}),this.player.on(Vn.FIRST_FRAME_RENDER,f=>{this.emit("first-frame-render",sB(Rn({},f),{streamType:this.streamType,userId:this.isRemote?this.userId:""}))})),this.onTrackMuted=this.onTrackMuted.bind(this),this.onTrackUnmuted=this.onTrackUnmuted.bind(this),this.onTrackEnded=this.onTrackEnded.bind(this),this.onPlayerError&&this.player.on(Vn.ERROR,this.onPlayerError.bind(this)),this.player.on(Vn.AUTOPLAY_FAILED,this.handleAutoPlayFailed,this)}get log(){return this._log||Wo}get kind(){return this.mediaType===1?zt.AUDIO:zt.VIDEO}get isAudio(){return this.kind===zt.AUDIO}get strMediaType(){return this.mediaType===4?zt.VIDEO:this.mediaType===2?zt.SCREEN:zt.AUDIO}get streamType(){return 2&this.mediaType?"auxiliary":"main"}get isMediaTrackActive(){return!!this.mediaTrack&&!this.mediaTrack.muted&&this.mediaTrack.readyState==="live"&&this.mediaTrack.enabled}async play(t,i){const r=$C(t)?t[0]:t;if(this.isPlayCalled)return this.log.info(`play update options: ${JSON.stringify(i)}`),i&&!$n(i.muted)&&this.setPlayerMute(i.muted),i&&!$n(i.objectFit)&&(this.objectFit=i.objectFit),void(this.player instanceof Uy&&(this.player.setObjectFit(this.objectFit),this.container!==r&&r&&($C(t)&&t.length>=1&&this.container&&t.includes(this.container)&&this.container.contains(this.player.elementToRender)?(t.splice(t.indexOf(this.container),1),t.unshift(this.container)):(this.container=r,this.player.setContainer(r))),$C(t)&&t.length>=1&&await this.playSubContainer(t.slice(1),i)));if(i&&!$n(i.muted)?this.setPlayerMute(i.muted):this.isRemote&&this.kind!==zt.VIDEO||this.setPlayerMute(!0),i&&!$n(i.objectFit)&&(this.objectFit=i.objectFit),this.player instanceof Uy&&($n(i?.isLiveStream)||this.player.setLiveMode(i.isLiveStream),this.player.setObjectFit(this.objectFit),i&&!$n(i.poster)&&this.player.setPoster(i.poster)),this.isPlayCalled=!0,r&&(this.container=r,this.player instanceof Uy&&this.player.setContainer(r)),ps.emit(mn.PLAY_TRACK_START,{track:this}),this._outputTrack){this._log.info(`play with options: ${JSON.stringify(i)}`);try{this.player.setTrack(this.playerMediaTrack),await this.player.play(i),$C(t)&&t.length>1&&await this.playSubContainer(t.slice(1),i)}catch(l){throw this.handleAutoPlayFailed(l),l}}else this.log.info("play has not mediaTrack, abort")}setMirror(t,i){if(this.isScreen||this.kind!==zt.VIDEO||$n(t)||t===this.mirror)return;this.mirror=t;let r=this.player;i&&(r=i);const l=this.manager;if(pv(this.mirror))return r.setViewMirror(this.mirror),void(!this.isRemote&&l&&(l.mirror=!1));switch(this.mirror){case"view":l&&(l.mirror=!1),r.setViewMirror(!0);break;case"publish":l&&(l.mirror=!0),r.setViewMirror(!0);break;case"both":l&&(l.mirror=!0),r.setViewMirror(!1)}}async playSubContainer(t,i){if(!this._outputTrack||this.kind===zt.AUDIO)return;this.subVideoPlayerMap||(this.subVideoPlayerMap=new Map),this.subVideoPlayerMap.forEach((l,I)=>{var h;t.find(f=>I===f)||(l.stop(),(h=this.subVideoPlayerMap)==null||h.delete(I))});for(const[l,I]of t.entries()){const h=this.subVideoPlayerMap.get(I);h?i&&($n(i.objectFit)||h.setObjectFit(i.objectFit)):this.subVideoPlayerMap.set(I,new Uy({id:this.userId||this.id,track:this.playerMediaTrack,container:I,muted:this.player.muted,objectFit:this.objectFit,log:this.log.createChild({id:`vp-sub${l+1}`})}))}const r=[...this.subVideoPlayerMap.values()];for(const l of r)l.setViewMirror(this.player.mirror),await l.play()}setAudioOutput(t){return this.player.setSinkId(t)}setAudioVolume(t){this.player.setVolume(t)}getAudioLevel(){return this.player.getAudioLevel()||0}getInternalAudioLevel(){var t;return((t=this.player)==null?void 0:t.getInternalAudioLevel())||0}stop(t=!1){this.isPlayCalled&&(this.isPlayCalled=!1,this.isFirstVideoFrameEmitted=!1,this.player&&(this.log.info(`stop ${this.kind} player`),this.player.stop(qj(this)&&!t?this.jitterBufferDelay:0)),this.subVideoPlayerMap&&this.subVideoPlayerMap.size>0&&this.subVideoPlayerMap.forEach(i=>{i.stop()}),this.container=null)}async resume(){var t;this.isPlayCalled&&await((t=this.player)==null?void 0:t.resume())}close(){this._toInitState(),this.log.info("close"),this.isPlayCalled&&this.stop(!0)}_toInitState(){}setMute(t){this.muted=t,this._inputTrack&&(this._inputTrack.enabled=!t),this._outputTrack&&(this._outputTrack.enabled=!t),this.emit(t?"mute":"unmute",this),ps.emit(t?mn.TRACK_MUTED:mn.TRACK_UNMUTED,{track:this})}setPlayerMute(t){this.player.setMuted(t)}get mediaTrack(){return this._inputTrack||null}get outMediaTrack(){return this._outputTrack||null}get playerMediaTrack(){return this.outMediaTrack}installTrackEvent(t){C4(t,t).add(zt.MUTE,this.onTrackMuted).add(zt.UNMUTE,this.onTrackUnmuted).add(zt.ENDED,this.onTrackEnded),t.muted&&this.onTrackMuted(),t.readyState===zt.ENDED&&this.onTrackEnded()}uninstallTrackEvent(t){mU(t)}setInputMediaStreamTrack(t){var i;const r=this._inputTrack;if(t!==r)return this._inputTrack=t,this.trackSettings=(i=t.getSettings)==null?void 0:i.call(t),t.enabled=!this.muted,r&&this.uninstallTrackEvent(r),this.installTrackEvent(t),this.emit("input-media-track-changed",t||null,r||null),this.manager?this.manager.changeInput(this):this.setOutputMediaStreamTrack(t)}setOutputMediaStreamTrack(t){var i;const r=this._outputTrack;this instanceof fV&&KW(r)||t!==r&&(this.isRemote?this.log.debug("setOutputMediaStreamTrack",t.label):this.log.info("setOutputMediaStreamTrack",(i=t.getSettings)==null?void 0:i.call(t).deviceId,t.label),this._outputTrack=t,this._inputTrack&&(this._outputTrack.contentHint=this._inputTrack.contentHint,this._outputTrack.enabled=this._inputTrack.enabled),this.updatePlayingState(!!t),this.emit("output-media-track-changed",t))}setMediaType(t){this.mediaType=t}updatePlayingState(t){var i,r;if(this.isPlayCalled){if(t){if(this.player.setTrack(this.playerMediaTrack),this.player.isStopped)return this.player.play().catch(l=>this.handleAutoPlayFailed(l)),void this.log.info(`playing state updated, play ${this.kind}`)}else if(!this.player.isStopped)return qj(this)&&this.isAudio&&((i=this.user)!=null&&i.muteState.hasAudio)&&((r=this.user)!=null&&r.muteState.audioMuted)?void 0:(this.player.stop(qj(this)?this.jitterBufferDelay:0),void this.log.info(`playing state updated, stop ${this.kind}`))}this.log.debug(`updatePlayingState abort ${this.isPlayCalled} ${t} ${this.player.isStopped}`)}async handleAutoPlayFailed(t){var i;this.log.warn("handleAutoPlayFailed",t);const r=()=>{this.resume().then(()=>{document.removeEventListener("click",r,!0)})};if(this.room&&this.room.enableAutoPlayDialog){if((IT||xU)&&(await iT(100),(i=this.player)==null?void 0:i.isPlaying))return;KIA()}else document.addEventListener("click",r,!0);ps.once(mn.LOCAL_TRACK_CAPTURE_SUCCESS,({track:l})=>{l.kind==="audio"&&fU()&&!this.player.isPlaying&&this.isRemote&&this.isAvailable&&r()}),this.emit("error",t)}getVideoFrame(){return this.player instanceof Uy?this.player.getVideoFrame():""}emitFirstVideoFrameEvent(t){var i,r,l;if(this.isFirstVideoFrameEmitted)return;const I=(i=this.mediaTrack)==null?void 0:i.getSettings();let h=I?.width||((r=this.player.element)==null?void 0:r.videoWidth)||0,f=I?.height||((l=this.player.element)==null?void 0:l.videoHeight)||0;(t!==Vn.RESIZE||h||f)&&(t!==Vn.LOADED_META_DATA||h||f)&&(t!==Vn.LOADED_DATA||h||f||this._log.warn("the dimension of video is 0x0 in first-video-frame event"),this.isFirstVideoFrameEmitted=!0,t7(this.rotation)&&([h,f]=[f,h]),this.emit("first-video-frame",{width:h,height:f,streamType:this.streamType,userId:this.isRemote?this.userId:""}))}onTrackMuted(){this._log.warn(`${this.kind} track is unable to provide media output`)}onTrackUnmuted(){this._log.info(`${this.kind} track is able to provide media output`)}onTrackEnded(){this._log.warn(`${this.kind} track ended`)}};Cc([fu([],Xn.INIT,{sync:!0})],Q4.prototype,"_toInitState");var duA=Object.prototype.hasOwnProperty;function CuA(t){if(t==null)return!0;if(typeof t=="boolean")return!1;if(typeof t=="number")return t===0;if(typeof t=="string"||typeof t=="function"||Array.isArray(t))return t.length===0;if(t instanceof Error)return t.message==="";if(tT(t))switch(Object.prototype.toString.call(t)){case"[object File]":case"[object Map]":case"[object Set]":return t.size===0;case"[object Object]":for(const i in t)if(duA.call(t,i))return!1;return!0}return!1}var kY=CuA,huA=async function(t){const i=QuA(t);Wo.info(`getUserMedia with constraints: ${JSON.stringify(i)}`);let r=[],l=[];const I=["label","deviceId","groupId"];if(i.audio&&(r=await DU(),Wo.info(`microphones: ${Ky(r.map(h=>sB(Rn({},h),{groupId:h.groupId.substring(0,8)})),{keysToInclude:I})}`)),i.video&&(l=await yv(),Wo.info(`cameras: ${Ky(l,{keysToInclude:I})}`),!pv(i.video)&&i.video.facingMode==="user"&&!i.video.deviceId)){const h=l.filter(f=>!f.label.includes("infrared")).find(f=>f.label.includes("facing front"));h&&(i.video.deviceId=h.deviceId,Wo.info(`exclude infrared camera: ${JSON.stringify(i)}`))}try{const h=await navigator.mediaDevices.getUserMedia(i);return e$&&h.getTracks().forEach(f=>{var w;const _=f.getCapabilities();Wo.info(`${f.kind} capabilities: ${Ky(_,{keysToInclude:YX})}`),$n(t.echoCancellation)||((w=_.echoCancellation)==null?void 0:w.indexOf(t.echoCancellation))!==-1||Wo.warn(`Invalid argument for 'echoCancellation'. Expected one of [${JSON.stringify(_.echoCancellation)}], but received '${t.echoCancellation}'`)}),i.audio&&bY(),h}catch(h){let{message:f}=h;throw h.name==="NotFoundError"&&(t.video&&l&&l.length===0&&(f=NY({key:TY.CAMERA_NOT_FOUND})),t.audio&&r&&r.length===0&&(f=NY({key:TY.MICROPHONE_NOT_FOUND}))),new pl({code:qg.INITIALIZE_FAILED,name:h.name,message:f,constraint:h.constraint})}},BuA=jW({retryFunction:huA,settings:{retries:3,timeout:500},onError:({error:t,retry:i,reject:r,retryFuncArgs:l,retriedCount:I})=>{const h=I+1;t.name==="NotReadableError"||t.name==="OverconstrainedError"||t.name==="AbortError"?(h===1?(l[0].video&&(l[0].maxResolution=!1,(!ad||l[0].width*l[0].height<=2073600)&&l[0].frameRate&&(l[0].frameRate=l[0].frameRate>10?10:5)),l[0].retryWhenExactFailed&&l[0].useExactDeviceId&&(l[0].useExactDeviceId=!1)):h===2?l[0].useDeviceIdOnly=!0:h!==3||l[0].useExactDeviceId||(l[0].useTrueAsConstraint=!0),i()):r(t),l[0].microphoneId&&OZ(l[0].microphoneId,!1),l[0].cameraId&&OZ(l[0].cameraId,!0)},onRetrying:t=>{Wo.warn(`getUserMedia NotReadableError observed, retrying [${t}/3]`)},onRetryFailed:t=>{ih.logFailedEvent({eventType:$L.GET_USER_MEDIA_RETRY,error:t})},onRetrySuccess:t=>{ih.logSuccessEvent({eventType:$L.GET_USER_MEDIA_RETRY}),ih.uploadEvent({log:`stat-${$L.GET_USER_MEDIA_RETRY}-success-${t}`})}});async function OZ(t,i){const r=(i?await yv():await DU()).find(l=>l.deviceId===t);r&&Qv(r.getCapabilities)&&Wo.warn(Ky(r.getCapabilities(),{keysToInclude:YX}))}function QuA(t){return{audio:puA(t),video:muA(t)}}function puA(t){if(!t.audio)return!1;if(t.useTrueAsConstraint)return!0;const i={echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0,sampleRate:t.sampleRate};return!kY(t.microphoneId)&&(i.deviceId=t.useExactDeviceId?{exact:t.microphoneId}:t.microphoneId,t.useDeviceIdOnly)?i:(wv(t.channelCount)&&(i.channelCount=t.channelCount),(pv(t.echoCancellation)||t.echoCancellation==="remote-only"||t.echoCancellation==="all")&&(i.echoCancellation=t.echoCancellation),pv(t.noiseSuppression)&&!t.noiseSuppression&&(i.noiseSuppression=!1),pv(t.autoGainControl)&&!t.autoGainControl&&(i.autoGainControl=!1),!!kY(i)||i)}function muA(t){if(!t.video)return!1;if(t.useTrueAsConstraint)return!0;const{maxResolution:i=!0}=t,r={};return t.cameraId?r.deviceId=t.useExactDeviceId?{exact:t.cameraId}:t.cameraId:t.facingMode&&(r.facingMode=t.facingMode),t.useDeviceIdOnly&&!kY(r)?r:(t.width&&(r.width={ideal:t.width},i&&!oC&&(r.width.max=t.width)),t.height&&(r.height={ideal:t.height},i&&!oC&&(r.height.max=t.height)),oC&&hV&&t.width&&t.height&&t.width*t.height<101376&&(r.width=t.width,r.height=t.height),t.frameRate&&(r.frameRate=t.frameRate),!!kY(r)||r)}var fuA=BuA;function d$(t){return mV((i,r)=>async function(...l){const I=await i.apply(this,l);return await t.call(this,...l),I})}function mV(t){return function(i,r,l){return l.value=t(l.value,r),l}}var yuA=(()=>{let t=!1,i=document.visibilityState;return()=>{document.visibilityState!==i&&Wo.info(`visibility change: ${document.visibilityState}`),t||(document.addEventListener("visibilitychange",()=>{Wo.info(`visibility change: ${document.visibilityState}`),i=document.visibilityState}),t=!0)}})(),DuA=0,SuA=class{constructor(t){de(this,"log"),de(this,"isRunning",!1),de(this,"queue",[]);let i="fq"+ ++DuA;t&&(i+=`|${t}`),this.log=Wo.createLogger({id:i})}get length(){return this.queue.length}get lastQueueItem(){return this.length===0?null:this.queue[this.length-1]}push(t,i=!1){var r,l;const I=Rn({},t),h=new Promise((f,w)=>{I.resolve=f,I.reject=w});return I.promise=h,i?this.length<=1?this.queue.push(I):(l=(r=this.lastQueueItem)==null?void 0:r.promise)==null||l.then(I.resolve,I.reject):this.queue.push(I),this.log.debug(`push ${this.length}`,t.funcName,t.args),this.isRunning||this.callNext(),h}shift(){const t=this.queue.shift();return this.log.debug(`shift ${this.length}`,t?.funcName,t?.args),t}callNext(){if(this.isRunning||this.length===0)return;const{fn:t,args:i,context:r,resolve:l,reject:I,funcName:h}=this.queue[0];this.log.debug("callNext",this.length,h,i),this.isRunning=!0,t.apply(r,i).then(l,I).finally(()=>{this.isRunning=!1,this.shift(),this.callNext()})}},PZ=new WeakMap;function MuA(t=!1){return function(i,r,l){const I=l.value;return l.value=function(...h){const f=PZ.get(this)||new SuA;return PZ.set(this,f),f.push({fn:I,args:h,context:this,funcName:r},t)},l}}function C$(t,i){return mV((r,l)=>function(...I){const h=t;try{const f=r.apply(this,I),w=xc();return KX(f)?f.then(_=>(i?Ir.addSuccessEvent({key:h,cost:xc()-w}):Ir.addSuccessEvent({key:h}),_)).catch(_=>{throw Ir.addFailedEvent({key:h,error:_}),_}):(Ir.addSuccessEvent({key:h}),f)}catch(f){throw Ir.addFailedEvent({key:h,error:f}),f}})}function Xl(...t){}var vuA=t=>t();function RuA(){this.dispose()}var wuA=()=>typeof __FASTRX_DEVTOOLS__<"u",_uA=1,oT=class extends Function{toString(){return`${this.name}(${this.args.length?[...this.args].join(", "):""})`}subscribe(t){const i=new NuA(t,this,this.streamId++);return Bl.subscribe({id:this.id,end:!1},{nodeId:i.sourceId,streamId:i.id}),this(i),i}},p4=class{constructor(){this.defers=new Set,this.disposed=!1}next(t){}complete(){this.dispose()}error(t){this.dispose()}get bindDispose(){return()=>this.dispose()}dispose(){this.disposed=!0,this.complete=Xl,this.error=Xl,this.next=Xl,this.dispose=Xl,this.subscribe=Xl,this.doDefer()}subscribe(t){return t instanceof oT?t.subscribe(this):t(this),this}get bindSubscribe(){return t=>this.subscribe(t)}doDefer(){this.defers.forEach(vuA),this.defers.clear()}defer(t){this.defers.add(t)}removeDefer(t){this.defers.delete(t)}reset(){this.disposed=!1,delete this.complete,delete this.next,delete this.dispose,delete this.next,delete this.subscribe}resetNext(){delete this.next}resetComplete(){delete this.complete}resetError(){delete this.error}},rB=class extends p4{constructor(t){super(),this.sink=t,t.defer(this.bindDispose)}next(t){this.sink.next(t)}complete(){this.sink.complete()}error(t){this.sink.error(t)}},TuA=class extends p4{constructor(t,i=Xl,r=Xl,l=Xl){if(super(),this._next=i,this._error=r,this._complete=l,this.then=Xl,t instanceof oT){const I={toString:()=>"subscribe",id:0,source:t};this.defer(()=>{Bl.defer(I,0)}),Bl.create(I),Bl.pipe(I),this.sourceId=I.id,this.subscribe(t),Bl.subscribe({id:I.id,end:!0}),i==Xl?this._next=h=>Bl.next(I,0,h):this.next=h=>{Bl.next(I,0,h),i(h)},l==Xl?this._complete=()=>Bl.complete(I,0):this.complete=()=>{this.dispose(),Bl.complete(I,0),l()},r==Xl?this._error=h=>Bl.complete(I,0,h):this.error=h=>{this.dispose(),Bl.complete(I,0,h),r(h)}}else this.subscribe(t)}next(t){this._next(t)}complete(){this.dispose(),this._complete()}error(t){this.dispose(),this._error(t)}};function XC(t,...i){return i.reduce((r,l)=>l(r),t)}function sC(t,i,r){if(wuA()){const l=Object.defineProperties(Object.setPrototypeOf(t,oT.prototype),{streamId:{value:0,writable:!0,configurable:!0},name:{value:i,writable:!0,configurable:!0},args:{value:r,writable:!0,configurable:!0},id:{value:0,writable:!0,configurable:!0}});Bl.create(l);for(let I=0;I{if(l instanceof oT){const I=sC(h=>{const f=new t(h,...r);f.sourceId=I.id,f.subscribe(l)},i,arguments);return I.source=l,Bl.pipe(I),I}return I=>l(new t(I,...r))}}}function _y(t,i){window.postMessage({source:"fastrx-devtools-backend",payload:{event:t,payload:i}})}var NuA=class extends rB{constructor(t,i,r){super(t),this.source=i,this.id=r,this.sourceId=t.sourceId,this.defer(()=>{Bl.defer(this.source,this.id)})}next(t){Bl.next(this.source,this.id,t),this.sink.next(t)}complete(){Bl.complete(this.source,this.id),this.sink.complete()}error(t){Bl.complete(this.source,this.id,t),this.sink.error(t)}},Bl={addSource(t,i){_y("addSource",{id:t.id,name:t.toString(),source:{id:i.id,name:i.toString()}})},next(t,i,r){_y("next",{id:t.id,streamId:i,data:r&&r.toString()})},subscribe({id:t,end:i},r){_y("subscribe",{id:t,end:i,sink:{nodeId:r&&r.nodeId,streamId:r&&r.streamId}})},complete(t,i,r){_y("complete",{id:t.id,streamId:i,err:r?r.toString():null})},defer(t,i){_y("defer",{id:t.id,streamId:i})},pipe(t){_y("pipe",{name:t.toString(),id:t.id,source:{id:t.source.id,name:t.source.toString()}})},update(t){_y("update",{id:t.id,name:t.toString()})},create(t){t.id||(t.id=_uA++),_y("create",{name:t.toString(),id:t.id})}},GuA=class extends p4{constructor(t){super(),this.source=t,this.sinks=new Set}add(t){t.defer(()=>this.remove(t)),this.sinks.add(t).size===1&&(this.reset(),this.subscribe(this.source))}remove(t){this.sinks.delete(t),this.sinks.size===0&&this.dispose()}next(t){this.sinks.forEach(i=>i.next(t))}complete(){this.sinks.forEach(t=>t.complete()),this.sinks.clear()}error(t){this.sinks.forEach(i=>i.error(t)),this.sinks.clear()}};function h$(){return t=>{const i=new GuA(t);if(t instanceof oT){const r=sC(l=>{i.add(l)},"share",arguments);return i.sourceId=r.id,r.source=t,Bl.pipe(r),r}return sC(i.add.bind(i),"share",arguments)}}function B$(...t){return sC(i=>{const r=new rB(i);let l=t.length;r.complete=()=>{--l===0&&i.complete()},t.forEach(r.bindSubscribe)},"merge",arguments)}function buA(...t){return sC(i=>{const r=new Map;t.forEach(l=>{const I=new rB(i);r.set(l,I),I.complete=()=>{r.delete(l),r.size===0?i.complete():I.dispose()},I.next=h=>{r.delete(l),r.forEach(f=>f.dispose()),I.resetNext(),I.resetComplete(),I.next(h)}}),t.forEach(l=>r.get(l).subscribe(l))},"race",arguments)}function kuA(...t){return i=>sC((r,l=0,I=t.length)=>{for(;l{r.next=I=>l.next(I),r.complete=()=>l.complete(),r.error=I=>l.error(I),t&&l.subscribe(t)},"subject",i));return r.next=Xl,r.complete=Xl,r.error=Xl,r}function LuA(t){return sC(i=>{let r=0;const l=setInterval(()=>i.next(r++),t);return i.defer(()=>{clearInterval(l)}),"interval"},"interval",arguments)}function UuA(t,i){return sC(r=>{let l=0;const I=setTimeout(()=>{r.removeDefer(h),r.next(l++),i||r.complete()},t),h=()=>clearTimeout(I);r.defer(h)},"timer",arguments)}function o3(t,i){return r=>{const l=I=>r.next(I);r.defer(()=>i(l)),t(l)}}function QE(t,i){if("on"in t&&"off"in t)return sC(o3(r=>t.on(i,r),r=>t.off(i,r)),"fromEvent",arguments);if("addListener"in t&&"removeListener"in t)return sC(o3(r=>t.addListener(i,r),r=>t.removeListener(i,r)),"fromEvent",arguments);if("addEventListener"in t)return sC(o3(r=>t.addEventListener(i,r),r=>t.removeEventListener(i,r)),"fromEvent",arguments);throw"target is not a EventDispachter"}function FuA(){return sC(t=>t.complete(),"empty",arguments)}var OuA=class extends rB{constructor(t,i,r){super(t),this.filter=i,this.thisArg=r}next(t){this.filter.call(this.thisArg,t)&&this.sink.next(t)}},W_=Gv(OuA,"filter"),PuA=class extends rB{constructor(t,i){super(t),this.count=i}next(t){this.sink.next(t),--this.count===0&&(this.doDefer(),this.complete())}},xuA=Gv(PuA,"take"),YuA=class extends rB{constructor(t,i){super(t);const r=new rB(t);r.next=()=>{r.doDefer(),t.complete()},r.complete=RuA,r.subscribe(i)}},sT=Gv(YuA,"takeUntil"),VuA=class extends rB{constructor(t,i){super(t),this.f=i}next(t){this.f(t)||(this.next=super.next,this.next(t))}},JuA=Gv(VuA,"skipWhile"),HuA=class extends rB{constructor(t,i,r){super(t),this.mapper=i,this.thisArg=r}next(t){super.next(this.mapper.call(this.thisArg,t))}},p$=Gv(HuA,"map"),quA=class extends rB{constructor(t,i,r){super(t),this.data=i,this.context=r}next(t){const i=this.context.combineResults;i?this.sink.next(i(this.data,t)):this.sink.next(t)}tryComplete(){this.context.resetComplete(),this.dispose()}},KuA=class m$ extends rB{constructor(i,r,l){super(i),this.makeSource=r,this.combineResults=l,this.index=0}subInner(i,r){const l=this.currentSink=new r(this.sink,i,this);this.complete===m$.prototype.complete&&(this.complete=this.tryComplete),l.complete=l.tryComplete,l.subscribe(this.makeSource(i,this.index++))}complete(){this.sink.complete()}tryComplete(){this.currentSink.resetComplete(),this.dispose()}},xZ=class extends quA{},f$=class extends KuA{next(t){this.subInner(t,xZ),this.next=i=>{this.currentSink.dispose(),this.subInner(i,xZ)}}},juA=Gv(f$,"switchMap");function WuA(t){return(i,r)=>t(()=>i,r)}var y$=WuA(Gv(f$,"switchMapTo")),Tv=(t=Xl,i=Xl,r=Xl)=>l=>new TuA(l,t,i,r),D$=(t=>(t[t.AUTO_SWITCH_NEW_DEVICE=0]="AUTO_SWITCH_NEW_DEVICE",t[t.WAIT_CURRENT_DEVICE=1]="WAIT_CURRENT_DEVICE",t))(D$||{}),uv=class extends Q4{constructor(t,i){super({mediaType:t,PlayerClass:i}),de(this,"isRemote",!1),de(this,"deviceId"),de(this,"groupId",""),de(this,"label",""),de(this,"sourceTrack"),de(this,"enableAutoSwitchWhenRecapturing",!0),de(this,"_isRecapturing",!1),de(this,"_lastRecaptureTime",0),de(this,"_onMuteTimeoutId",-1),de(this,"_encodeCheckTimeoutId",-1),de(this,"recaptureMode",0),de(this,"profile"),de(this,"retryEncodeFailed")}get enableEncodeFrame(){return!1}get isPublishing(){return this.state.toString()==="publishing"}get isPublished(){return this.state==="publish"}get isUseCustomSource(){return!(!this.mediaTrack||this.sourceTrack===this.mediaTrack)}encodeFrame(t,i){throw new Error("Method not implemented.")}installTrackEvent(t){t.addEventListener(zt.MUTE,this.onTrackMuted),t.addEventListener(zt.UNMUTE,this.onTrackUnmuted),t.addEventListener(zt.ENDED,this.onTrackEnded),t.muted&&this.onTrackMuted(),t.readyState===zt.ENDED&&this.onTrackEnded()}uninstallTrackEvent(t){t.removeEventListener(zt.MUTE,this.onTrackMuted),t.removeEventListener(zt.UNMUTE,this.onTrackUnmuted),t.removeEventListener(zt.ENDED,this.onTrackEnded)}setStateToReady(){}async capture(t,i=!1){var r,l;const I=this.sourceTrack;try{const h=xc();let f;ps.emit(mn.LOCAL_TRACK_CAPTURE_START,{track:this}),t.customSource?(f=new MediaStream,f.addTrack(t.customSource)):(i||(r=this.sourceTrack)==null||r.stop(),f=await fuA(t));const w=f.getTracks()[0];return await this.setInputMediaStreamTrack(w),t.customSource||(this.sourceTrack=w,this.updateDeviceIdInUse(),this.listenDeviceChange()),ps.emit(mn.LOCAL_TRACK_CAPTURE_SUCCESS,{track:this,cost:xc()-h,profile:this.profile,room:(l=this.manager)==null?void 0:l.room}),f}catch(h){throw ps.emit(mn.LOCAL_TRACK_CAPTURE_FAILED,{track:this,error:h}),this.log.error(`getUserMedia error observed ${h}`),h}finally{i&&I?.stop()}}setOutputMediaStreamTrack(t){var i;if(super.setOutputMediaStreamTrack(t),this.setStateToReady(),this.isPublishing||this.isPublished)return(i=this.room)==null?void 0:i.replaceTrack(this)}get hasFlag(){var t,i;const r=WX(((t=this.room)==null?void 0:t.localPublishFlag)||0,((i=this.room)==null?void 0:i.userId)||"");return this.mediaType===4&&r.hasVideo||this.mediaType===1&&r.hasAudio||this.mediaType===2&&r.hasAuxiliary}async publish(t,i){return this.room=t,this.room.localTracks.add(this),this.emit("4",{mediaType:this.strMediaType,state:"starting",prevState:"stopped"}),this.userId=t.userId,this._log.bindParent(t.getLogger()),await i,this._checkPublishFlag(t)}_checkPublishFlag(t){return new Promise(async(i,r)=>{var l,I,h,f,w;const _=()=>r(new pl({code:qg.API_CALL_ABORTED,message:"publish aborted"}));if(this.hasFlag||this.muted?i():(this.state!==Xn.INIT&&this.state!=="ready"||_(),XC(QE(t,"local-publish-flag-changed"),W_(()=>this.hasFlag),sT(B$(QE(this,Xn.INIT),QE(this,"ready"))),Tv(i,r,_))),(h=(I=(l=this.room)==null?void 0:l.networkQuality)==null?void 0:I.hadRecentBadUplink)==null?void 0:h.call(I,2))return i();const k=t.heartbeatCount,U=((w=(f=this.mediaTrack)==null?void 0:f.stats)==null?void 0:w.totalFrames)||0;this._encodeCheckTimeoutId=setTimeout(async()=>{var j,lA,rA,mA,IA,cA,TA,WA;if((rA=(lA=(j=this.room)==null?void 0:j.networkQuality)==null?void 0:lA.hadRecentBadUplink)!=null&&rA.call(lA,2)||t.heartbeatCount-k<3)return i();if((this.isPublished||this.isPublishing)&&this.isMediaTrackActive){if((mA=this.mediaTrack)!=null&&mA.stats){const xe=this.mediaTrack.stats.totalFrames||0;xe-U===0&&this.log.warn("capture totalFrames is 0 during encode check, totalFrames",xe)}const ge=this.kind===zt.AUDIO,ue=this.stat.bytesSent>0;if(Ir[ue?"addSuccessEvent":"addFailedEvent"]({key:ge?503700:513702}),!ge){const xe={H264:513704,H265:513705,VP8:513706}[((cA=(IA=this.room)==null?void 0:IA.videoCodec)==null?void 0:cA.toUpperCase())||"H264"];xe&&Ir[ue?"addSuccessEvent":"addFailedEvent"]({key:xe})}if(!ue){if(Ir.addEnum({key:ge?503701:513703,value:r4()}),ih.uploadEvent({log:`stat-encode-failed-${this.kind}-${b7()||L7()}`,userId:this.userId}),this.log.warn(ge?"encode failed":`${(WA=(TA=this.room)==null?void 0:TA.videoCodec)==null?void 0:WA.toUpperCase()} encode failed`),this.retryEncodeFailed&&(this.log.warn("retry encode"),await this.retryEncodeFailed(this),this.stat.bytesSent>0||this.hasFlag||(await iT(5e3),this.stat.bytesSent>0||this.hasFlag)))return i();this.emit("6",this),r(new pl({message:`${this.strMediaType} encode failed`,code:ge?qg.AUDIO_ENCODE_FAILED:qg.VIDEO_ENCODE_FAILED}))}}},1e4)})}unpublish(){this.room&&this.room.localTracks.delete(this),this.log.info("unpublish"),ps.emit(mn.LOCAL_TRACK_UNPUBLISHED,{track:this})}async updateDeviceIdInUse(){if(this.sourceTrack&&GY){const{deviceId:t,groupId:i}=this.sourceTrack.getSettings(),{label:r}=this.sourceTrack;await luA({newDeviceId:t,oldDeviceId:this.deviceId,oldGroupId:this.groupId,oldLabel:this.label,kind:this.kind})||(this.deviceId=t,this.label=r,i&&(this.groupId=i),Z3().then(l=>{const I=l.find(h=>{let f=h.deviceId===t;return i&&(f=f&&h.groupId===i),f});I&&this.emit("2",I)}))}}setProfile(t){this.log.info("setProfile",t),Object.assign(this.profile,t)}isNeedToRecapture(t=!1){return!(!this.deviceId||!this.sourceTrack||this.kind===zt.AUDIO&&!guA(this.sourceTrack)||this.kind===zt.VIDEO&&!auA(this.sourceTrack)||this._isRecapturing||t&&hV&&ad)}onTrackMuted(){super.onTrackMuted(),yuA(),this.isNeedToRecapture(!0)&&(Date.now()-this._lastRecaptureTimethis.onTrackMuted(),F1):this._onMuteTimeoutId=setTimeout(async()=>{var t;if((t=this.sourceTrack)!=null&&t.muted){if((Du||rC)&&document.visibilityState!=="visible")return;this.recapture(await this.getRecoverCaptureDeviceId())}},5e3))}onTrackUnmuted(){super.onTrackUnmuted(),this._onMuteTimeoutId>0&&clearTimeout(this._onMuteTimeoutId)}async onTrackEnded(){if(super.onTrackEnded(),this.isNeedToRecapture()&&this.recaptureMode===0){if(Date.now()-this._lastRecaptureTimethis.onTrackEnded(),F1);this.emit("7"),this.recapture(await this.getRecoverCaptureDeviceId())}}async recapture(t,i=!1){var r;if(this._isRecapturing||!this.sourceTrack)return;this.log.warn("recapture trying");const l=this.sourceTrack;i||(r=this.sourceTrack)==null||r.stop(),this._isRecapturing=!0,this._lastRecaptureTime=Date.now();const I={useExactDeviceId:!0};if(t==="user"||t==="environment")I.facingMode=t;else{let h;(this.kind==="audio"?await DU():await yv()).find(f=>f.deviceId===t)&&(h=t),I.deviceId=h}return this.capture(I,i).then(()=>{this._isRecapturing=!1,this.log.warn("recapture success"),this.emit("1",{deviceId:this.deviceId}),ps.emit(mn.LOCAL_TRACK_RECAPTURE,{track:this})}).catch(h=>{this._isRecapturing=!1,this.log.warn(`recapture failed ${h.message}`),this.emit("5",h),ps.emit(mn.LOCAL_TRACK_RECAPTURE,{track:this,error:h})}).finally(()=>{i&&l?.stop()})}async getRecoverCaptureDeviceId(){const t=this instanceof fV;if(t&&this.facingMode)return this.facingMode;let{deviceId:i}=this;if(i){const r=(kL.get(i)||0)+1;if(kL.set(i,r),r>=3&&this.enableAutoSwitchWhenRecapturing){const l=t?(await yv()).find(I=>!kL.has(I.deviceId)):(await DU()).find(I=>!kL.has(I.deviceId));l&&(this.log.warn(`${i} capture fail ${r} times, change new ${l.deviceId}`),i=l.deviceId)}}return i}stopCapture(){var t;this.sourceTrack&&(this.sourceTrack.stop(),ps.emit(mn.LOCAL_TRACK_STOPPED,{track:this}),this.uninstallTrackEvent(this.sourceTrack)),this._inputTrack&&this.uninstallTrackEvent(this._inputTrack),(t=this.manager)==null||t.removeInput(this),this._onMuteTimeoutId&&clearTimeout(this._onMuteTimeoutId)}close(){super.close(),this.stopCapture()}};Cc([fu(Xn.INIT,"ready",{ignoreError:!0,sync:!0})],uv.prototype,"setStateToReady"),Cc([MuA()],uv.prototype,"capture"),Cc([fu("ready","publish",{ignoreError:!0,success(){ps.emit(mn.LOCAL_TRACK_PUBLISHED,{track:this,room:this.room}),this.emit("4",{mediaType:this.strMediaType,state:"started",prevState:"starting"}),this.log.info("published")},fail(t){var i;(i=this.room)==null||i.localTracks.delete(this);let r="error";const l=t instanceof pl?t:t.cause instanceof pl?t.cause:t;let I=!1;l instanceof pl&&(l.message.includes("timeout")?r="timeout":l.code===qg.API_CALL_ABORTED&&(I=!0,r="api-call")),this.emit("4",{mediaType:this.strMediaType,state:"stopped",prevState:"starting",reason:r,error:l}),this.log[I?"info":"error"]("publish failed",l)}}),C$(521714,!1)],uv.prototype,"publish"),Cc([mV(t=>async function(){const i=this.state==="publish"?"started":"starting";t.call(this),this.emit("4",{mediaType:this.strMediaType,state:"stopped",prevState:i,reason:"api-call"}),clearTimeout(this._encodeCheckTimeoutId)}),fu([],"ready",{sync:!0})],uv.prototype,"unpublish");var kL=new Map;ps.on(mn.SWITCH_DEVICE_SUCCESS,t=>{t.track.deviceId&&kL.delete(t.track.deviceId)});var zuA=class{constructor(t,i=!1){this.dataView=t,this.isSEI&&(i?this.addPreventionByte():this.removePreventionByte())}addPreventionByte(){const{seiPayloadStartIndex:t}=this,i=this.dataView.byteLength-2,r=[];let l=0;for(let h=t;h<=i;h++){const f=this.dataView.getInt8(h);switch(f){case 0:case 1:case 2:case 3:l===2&&(r.push(3),l=0),f===0?l+=1:l=0,r.push(f);break;default:l=0,r.push(f)}}r.push(this.dataView.getInt8(this.dataView.byteLength-1));const I=new DataView(new Uint8Array([...new Uint8Array(this.dataView.buffer).slice(0,t),...r]).buffer);this.dataView=I}removePreventionByte(){const{seiPayloadStartIndex:t}=this,i=this.dataView.byteLength-1,r=[];let l=0;for(let h=t;h<=i;h++)switch(this.dataView.getInt8(h)){case 0:l++,r.push(this.dataView.getInt8(h));break;case 3:l!==2&&r.push(this.dataView.getInt8(h)),l=0;break;default:r.push(this.dataView.getInt8(h)),l=0}const I=new DataView(new Uint8Array([...new Uint8Array(this.dataView.buffer).slice(0,t),...r]).buffer);this.dataView=I}get seiPayloadStartIndex(){let t=6;for(let i=6;i=this.dataView.byteLength?0:31&this.dataView.getUint8(t)}getStartCodeLength(){return this.dataView.byteLength>=4&&this.dataView.getUint8(0)===0&&this.dataView.getUint8(1)===0&&this.dataView.getUint8(2)===0&&this.dataView.getUint8(3)===1?4:this.dataView.byteLength>=3&&this.dataView.getUint8(0)===0&&this.dataView.getUint8(1)===0&&this.dataView.getUint8(2)===1?3:0}get isIDR(){return this.naluType===5}get isSPS(){return this.naluType===7}get isPPS(){return this.naluType===8}get isSEI(){return this.naluType===6}},ZuA=class{constructor(){de(this,"_seiMessageList",[]),de(this,"_smallSeiMessageList",[]),de(this,"_seiPayloadType",243)}encodeSEINalu(t){const i=t.byteLength,r=parseInt(String(i/255),10),l=i%255,I=[];I.push(0,0,0,1,6,this._seiPayloadType);for(let f=0;f0&&t.data.byteLength>0){const l=9-this.getNaluCount(t.data);if(l<=0)return 0;const I=r.splice(0,l).reverse().map(this.encodeSEINalu.bind(this)),h=I.reduce((U,j)=>U+j.dataView.byteLength,0),f=new ArrayBuffer(h+t.data.byteLength),w=new DataView(f),_=new DataView(t.data);let k=0;for(let U=0;U{var l;if(this.isAllowed2k4k(this.profile))this.room&&this.settings.height>=1440&&this.state==="publish"&&this.room.sendAbilityStatus({"2k4k":1});else{const I=SY(((l=this.room)==null?void 0:l.sdkAppId)||0)?AZ:$8;this.log.warn(`Resolution is reset to 1080p, need to upgrade ability here ${I}`),this.setProfile(sB(Rn({},this.profile),{width:1920,height:1080})),this.applyProfile()}};this.on("input-media-track-changed",r),this.on("publish",r),this.handleCameraAdded=this.handleCameraAdded.bind(this),this.handleCameraRemoved=this.handleCameraRemoved.bind(this)}get facingMode(){if(GY&&this.mediaTrack)return this.mediaTrack.getSettings().facingMode}get contentHint(){var t;return((t=this._inputTrack)==null?void 0:t.contentHint)||""}get isQosClearFirst(){var t;return((t=this._inputTrack)==null?void 0:t.contentHint)==="detail"}get hasSmall(){var t;return!!((t=this.manager)!=null&&t.hasSmall)}async setMute(t){var i,r,l;if(th(t)){if(this.muteImage===t)return;await((i=this.manager)==null?void 0:i.deleteWatermark("mute")),await((r=this.manager)==null?void 0:r.setWatermark({x:0,y:0,width:this.settings.width,height:this.settings.height,type:"mute",zIndex:999,imageUrl:t,fillVideo:!0})),this.muteImage=t,super.setMute(!1)}else this.muteImage&&(await((l=this.manager)==null?void 0:l.deleteWatermark("mute")),this.muteImage=void 0),super.setMute(t)}async capture({deviceId:t,facingMode:i,useExactDeviceId:r=!0,customSource:l,retryWhenExactFailed:I=!0}){const h={audio:!1,video:!0,facingMode:i||this.facingMode,cameraId:t,width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate,useExactDeviceId:r,retryWhenExactFailed:I,customSource:l};if(h.facingMode==="environment"){const f=await this.getDeviceIdWhenUsingBackCamera();f&&(h.cameraId=f)}return super.capture(h)}setProfile(t){var i;const r=this.fallbackProfile(t);if(r.bitrate&&(this.isNeedToSetBandwidth=r.bitrate!==this.profile.bitrate),this.isAllowed2k4k(this.profile))super.setProfile(r);else{const l=SY(((i=this.room)==null?void 0:i.sdkAppId)||0)?AZ:$8;this.log.warn(`Resolution is reset to 1080p, need to upgrade ability here ${l}`),super.setProfile(sB(Rn({},this.profile),{width:1920,height:1080}))}}async applyProfile(){var t,i;if(!this.mediaTrack)return;const{width:r=0,height:l=0}=(this.sourceTrack||this.mediaTrack).getSettings(),I=r*l,h=this.settings,f=h.height!==this.profile.height||h.width!==this.profile.width||h.frameRate!==this.profile.frameRate;if(f&&(_v===16&&this.deviceId?await this.recapture(this.deviceId):(KW(this.outMediaTrack)?await((t=this.outMediaTrack)==null?void 0:t.applyConstraints({width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate})):await((i=this.sourceTrack||this.mediaTrack)==null?void 0:i.applyConstraints({width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate})),this.manager&&this.manager.changeInput(this)),this.room&&this.settings.height>=1440&&this.state==="publish"&&this.room.sendAbilityStatus({"2k4k":1})),this.isNeedToSetBandwidth&&this.room&&this.room.setBandWidth){this.isNeedToSetBandwidth=!1;const{width:w=0,height:_=0}=(this.sourceTrack||this.mediaTrack).getSettings(),k=w*_;return f&&k&&I&&k===I?void this.log.warn("set bandwidth failed: resolution is not changed"):this.room.setBandWidth({bandwidth:this.profile.bitrate,type:zt.VIDEO,videoType:zt.BIG})}}get settings(){const t={width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate},i=this.sourceTrack||this.mediaTrack;return GY&&i&&Object.assign(t,i.getSettings()),t}get scaleResolutionDownBy(){return this._scaleResolutionDownBy?this._scaleResolutionDownBy:e7(this.settings,this.profile)}isAllowed2k4k(t){var i;return!this.room||!this.room.scheduleResult||!!this.isScreen||t.height*t.width<3686400||((i=this.room.scheduleResult.trtcAutoConf)==null?void 0:i["2k4k"])===1}isNeedToSwitchDevice(t){return!(!this.mediaTrack||this.deviceId===t||this.facingMode===t)}async switchDevice(t){try{if(!this.isNeedToSwitchDevice(t)&&!this.isUseCustomSource)return;const i={useExactDeviceId:!0,retryWhenExactFailed:!1};t==="user"||t==="environment"?i.facingMode=t:i.deviceId=t,this.sourceTrack&&this.sourceTrack.stop(),await this.capture(i),ps.emit(mn.SWITCH_DEVICE_SUCCESS,{track:this}),this.log.info("switch camera success")}catch(i){throw this.log.error(`switch camera failed ${i}`),this.deviceId&&this.recapture(this.deviceId),i}}async getDeviceIdWhenUsingBackCamera(){let t;try{if(S7&&!s4&&t$){const i=(await yv(!0)).map(l=>{var I;return sB(Rn({},l),{capabilities:(I=l.getCapabilities)==null?void 0:I.call(l)})}).filter(l=>{var I,h;return(h=(I=l.capabilities)==null?void 0:I.facingMode)==null?void 0:h.includes("environment")});let r=i[0];i.forEach(l=>{var I,h,f,w;const{capabilities:_}=l;((I=_.width)!=null&&I.max&&((h=_.height)!=null&&h.max)?_.width.max*_.height.max:0)>((f=r.capabilities.width)!=null&&f.max&&((w=r.capabilities.height)!=null&&w.max)?r.capabilities.width.max*r.capabilities.height.max:0)&&(r=l)}),r?.capabilities&&(this._log.info("use max resolution back camera",r),t=r.deviceId)}}catch(i){this._log.warn("get max res camera failed",i)}return t}async updateSmallConfig(t){var i,r;this._log.info(`update small stream config: ${JSON.stringify(t)}`);const l=!this.small;this.small=this.fallbackProfile(t,!0),await((i=this.manager)==null?void 0:i.update()),l&&await((r=this.room)==null?void 0:r.enableSmall(!0)),this.log.info("update small stream config success")}fallbackProfile(t,i=!1){const r=t.width>t.height,l=Rn({},t);return t.width*t.height<=19200&&rC&&Xy&&(this.log.warn(`${i?"small ":""}resolution is ${t.width}*${t.height}, fallback to 240*180 for android chrome`),l.width=r?240:180,l.height=r?180:240,l.bitrate=Math.max(t.bitrate,150)),t.width*t.height>921600&&VlA&&(l.width=r?1280:720,l.height=r?720:1280,this.log.warn("reset to 1280 * 720 on iOS 13~14")),xlA(SQ,"14.3")&&G7(SQ,"14.0",!0)&&this.on("7",()=>{const I=this.profile.width>this.profile.height;this.profile.width*this.profile.height>307200?(this.profile.width=I?640:480,this.profile.height=I?480:640,this.log.warn("reduce the resolution to 480p on iOS 14.0 ~ 14.2")):this.profile.width*this.profile.height>230400&&(this.profile.width=I?640:360,this.profile.height=I?360:640,this.log.warn("reduce the resolution to 360p on iOS 14.0 ~ 14.2"))}),!i&&this.avoidCropping&&(Xy||oC)&&!qlA()&&t.width*t.height<=230400&&t.width/t.height===16/9&&(this._scaleResolutionDownBy=1280/t.width,l.width=1280,l.height=720,this.log.warn(`capture 720p, scale: ${this._scaleResolutionDownBy}`)),l}stopSmall(){var t,i;this.small&&(delete this.small,(t=this.manager)==null||t.update(),(i=this.room)==null||i.enableSmall(!1))}listenDeviceChange(){pQ&&!pQ.listeners("videoInputRemoved").includes(this.handleCameraRemoved)&&pQ.on("videoInputRemoved",this.handleCameraRemoved,this)}async handleCameraRemoved(t){if(t.deviceId===this.deviceId){let i=this.recaptureMode===1;if(this.log.warn(`RecaptureMode: ${D$[this.recaptureMode]}. Current camera is lost: ${JSON.stringify(t)}`),this.recaptureMode===0){Ec(this.userId,{eventId:2003,param1:7,streamType:2});const r=await yv();r[0]?this.recapture(r[0].deviceId):i=!0}i&&pQ.on("videoInputAdded",this.handleCameraAdded,this)}}async handleCameraAdded(t){this.recaptureMode===1&&t.deviceId!==this.deviceId||(pQ.off("videoInputAdded",this.handleCameraAdded,this),this.log.warn(`camera added: ${JSON.stringify(t)}`),this.recapture(t.deviceId))}encodeFrame(t,i){if(!this.manager)return t;const r=i?8:this.mediaType;return this.manager.encodePipeline.reduceRight((l,I)=>I?I({frame:l,mediaType:r}):l,t)}get enableEncodeFrame(){return!!this.manager&&this.manager.encodePipeline.some(t=>t)}play(t,i){return $n(this.mirror)&&!this.isScreen&&this.setMirror("view"),super.play(t,i)}close(){pQ.off("videoInputAdded",this.handleCameraAdded,this),pQ.off("videoInputRemoved",this.handleCameraRemoved,this),super.close()}async recapture(t){try{await super.recapture(t)}catch(i){const r=(await yv()).find(l=>l.deviceId!==t);if(!r)throw i;await super.recapture(r.deviceId)}}setContentHint(t){this.mediaTrack&&"contentHint"in this.mediaTrack&&(this.mediaTrack.contentHint!==t&&(this.log.info(`setContentHint ${t}`),this.mediaTrack.contentHint=t),this.outMediaTrack&&this.outMediaTrack.contentHint!==t&&(this.outMediaTrack.contentHint=t))}setRotation(t){this.manager&&(this.isScreen||$n(t)||t!==this.rotation&&(this.rotation=t,this.manager.rotation=t))}};Cc([d$(function(t){this.setContentHint(t.contentHint||"motion")})],fV.prototype,"capture");var XuA=[-1,-1,1,-1,-1,1,1,1],$uA=[0,0,1,0,0,1,1,1],LL=class X3 extends Xn{constructor(i,r){if(super(),this.context=i,de(this,"name"),de(this,"input"),de(this,"output"),de(this,"texture"),de(this,"ctx2d",null),de(this,"fbo"),de(this,"width",0),de(this,"height",0),de(this,"x",0),de(this,"y",0),de(this,"program"),de(this,"vertexShader"),de(this,"fragmentShader"),de(this,"totalFrames",0),de(this,"dropFrames",0),de(this,"matchInputSize",!0),de(this,"texCoordBuffer"),de(this,"positionBuffer"),de(this,"lastInfo",{name:"",timestamp:0,totalFrames:0,x:0,y:0,width:0,height:0,fps:0}),de(this,"cost",0),de(this,"_canvas",null),de(this,"_image"),de(this,"log"),this.context.on("disconnect",this.close,this),this.name=r.name,this.log=r.logger,this.matchInputSize=r.matchInputSize!==!1,this.width=r.width||i.width,this.height=r.height||i.height,this._image=r.image,i instanceof MU)i.ctx&&r.create2d&&(typeof OffscreenCanvas=="function"&&_v!==16?this._canvas=new OffscreenCanvas(this.width,this.height):(this._canvas=document.createElement("canvas"),this._canvas.width=this.width,this._canvas.height=this.height),this.ctx2d=this._canvas.getContext("2d"),this._image=this._canvas);else try{const l=i.ctx;this.texCoordBuffer=this.createBuffer($uA),this.positionBuffer=this.createBuffer(XuA),r.createTexture!==!1&&(this.texture=l.createTexture(),this.useTexture(),l.texParameteri(l.TEXTURE_2D,l.TEXTURE_MIN_FILTER,l.LINEAR),l.texParameteri(l.TEXTURE_2D,l.TEXTURE_MAG_FILTER,l.LINEAR),l.texParameteri(l.TEXTURE_2D,l.TEXTURE_WRAP_S,l.CLAMP_TO_EDGE),l.texParameteri(l.TEXTURE_2D,l.TEXTURE_WRAP_T,l.CLAMP_TO_EDGE),l.pixelStorei(l.UNPACK_ALIGNMENT,1)),r.useFbo&&(this.fbo=l.createFramebuffer(),this.useBufferFrame(),this.useTexture(),l.texImage2D(l.TEXTURE_2D,0,l.RGBA,this.width,this.height,0,l.RGBA,l.UNSIGNED_BYTE,null),l.framebufferTexture2D(l.FRAMEBUFFER,l.COLOR_ATTACHMENT0,l.TEXTURE_2D,this.texture,0)),r.useDefaultProgram?this.program=i.defaultProgam:(r.vertexShaderSource||r.fragmentShaderSource)&&(this.vertexShader=r.vertexShaderSource?i.createShader(l.VERTEX_SHADER,r.vertexShaderSource):i.defaultVShader,this.fragmentShader=r.fragmentShaderSource?i.createShader(l.FRAGMENT_SHADER,r.fragmentShaderSource):i.defaultFShader,this.program=i.createProgram(this.vertexShader,this.fragmentShader))}catch(l){this.context.destroy(new pl({code:qg.VIDEO_MANAGER_ERROR,extraCode:3,message:`create video node ${this.name} error ${l.message||l}`}))}}get image(){return this._image}set image(i){this._image=i}createFramebuffer(i){const r=this.context.ctx,l=r.createFramebuffer();return r.bindFramebuffer(r.FRAMEBUFFER,l),r.framebufferTexture2D(r.FRAMEBUFFER,r.COLOR_ATTACHMENT0,r.TEXTURE_2D,i,0),l}connect(i,...r){return i.addInput(this,...r),this.output=i,i}addInput(i,...r){this.input=i,this.matchInputSize&&i.width&&i.height&&this.resize(i.width,i.height)}requestFrame(i){const r=Date.now();return!!(this.context instanceof $3&&this.render(i)||this.context instanceof MU&&this.render2d(i))&&(this.totalFrames++,this.cost=Date.now()-r,!0)}render2d(i){var r;return!!((r=this.input)!=null&&r.requestFrame(i))&&this.draw2d(this.input.image,0,0,this.width,this.height)}update(i=0){var r;(r=this.output)==null||r.update(i)}disconnect(...i){var r;(r=this.output)==null||r.removeInput(this,...i),delete this.output}removeInput(i,...r){delete this.input}close(){var i,r;if(this.context.off("disconnect",this.close,this),(i=this.output)==null||i.removeInput(this),delete this.output,(r=this.input)==null||r.disconnect(),this.context instanceof $3){const l=this.context.ctx;l.deleteBuffer(this.texCoordBuffer),l.deleteBuffer(this.positionBuffer),this.fbo&&l.deleteFramebuffer(this.fbo),this.texture&&l.deleteTexture(this.texture),this.vertexShader&&this.vertexShader!==this.context.defaultVShader&&l.deleteShader(this.vertexShader),this.fragmentShader&&this.fragmentShader!==this.context.defaultFShader&&l.deleteShader(this.fragmentShader),this.program&&this.program!==this.context.defaultProgam&&l.deleteProgram(this.program)}this._canvas&&(this._canvas.width=0,this._canvas.height=0,this.ctx2d=null),this.removeAllListeners()}useTexture(){this.useTextures(this.texture)}useInputTexture(){var i;this.useTextures((i=this.input)==null?void 0:i.texture)}useTextures(...i){const r=this.context.ctx;i.forEach((l,I)=>{l&&(r.activeTexture(r.TEXTURE0+I),r.bindTexture(r.TEXTURE_2D,l))})}useProgram(){this.context.ctx.useProgram(this.program)}useBufferFrame(){const i=this.context.ctx;i.bindFramebuffer(i.FRAMEBUFFER,this.fbo||null)}createBuffer(i){const r=this.context.ctx,l=r.createBuffer();return r.bindBuffer(r.ARRAY_BUFFER,l),r.bufferData(r.ARRAY_BUFFER,new Float32Array(i),r.STATIC_DRAW),l}setTexBuffer(i){const r=this.context.ctx;r.bindBuffer(r.ARRAY_BUFFER,this.texCoordBuffer),r.bufferData(r.ARRAY_BUFFER,new Float32Array(i),r.STATIC_DRAW)}setPosBuffer(i){const r=this.context.ctx;r.bindBuffer(r.ARRAY_BUFFER,this.positionBuffer),r.bufferData(r.ARRAY_BUFFER,new Float32Array(i),r.STATIC_DRAW)}changeBufferData(i,r){const l=this.context.ctx;l.bindBuffer(l.ARRAY_BUFFER,i),l.bufferData(l.ARRAY_BUFFER,new Float32Array(r),l.STATIC_DRAW)}setAttributes(...i){const r=this.context.ctx;i.forEach((l,I)=>{r.enableVertexAttribArray(I),r.bindBuffer(r.ARRAY_BUFFER,l),r.vertexAttribPointer(I,2,r.FLOAT,!1,0,0)})}getVertexPoint(i,r){return[i/this.width*2-1,r/this.height*2-1]}layout2texCoords(i){return[...this.getVertexPoint(i.x,i.y),...this.getVertexPoint(i.x+i.width,i.y),...this.getVertexPoint(i.x,i.y+i.height),...this.getVertexPoint(i.x+i.width,i.y+i.height)]}resize(i,r){if(this.width!==i||this.height!==r){if(this.width=i,this.height=r,this._canvas&&(this._canvas.width=i,this._canvas.height=r),this.texture&&this.fbo){this.useTexture();const l=this.context.ctx;l.texImage2D(l.TEXTURE_2D,0,l.RGBA,i,r,0,l.RGBA,l.UNSIGNED_BYTE,null)}this.output&&this.output.matchInputSize&&this.output.resize(i,r)}}draw(i,r){this.setAttributes(i||this.positionBuffer,r||this.texCoordBuffer);const l=this.context.ctx;l.drawArrays(l.TRIANGLE_STRIP,0,4)}draw2d(i,r,l,I,h,f,w,_,k){const U=!($n(f)||$n(w)||$n(_)||$n(k));return!(!this.ctx2d||!i)&&(i instanceof ImageData?(U?this.ctx2d.putImageData(i,r,l,f,w,_,k):this.ctx2d.putImageData(i,r,l),this.emit(X3.RENDER,this.ctx2d.canvas)):(U?this.ctx2d.drawImage(i,f,w,_,k,r,l,I,h):this.ctx2d.drawImage(i,r,l,I,h),this.emit(X3.RENDER,i)),typeof VideoFrame<"u"&&i instanceof VideoFrame&&i.close(),!0)}drawBackGround2d(i){this.ctx2d&&(this.ctx2d.save(),this.ctx2d.fillStyle=i,this.ctx2d.fillRect(0,0,this.width,this.height),this.ctx2d.restore())}getInfo(){var i;const{totalFrames:r,x:l,y:I,width:h,height:f,name:w,cost:_}=this,k=Date.now(),U=(r-this.lastInfo.totalFrames)/((k-this.lastInfo.timestamp)/1e3)|0;return this.lastInfo={totalFrames:r,x:l,y:I,width:h,height:f,timestamp:k,fps:U,name:w,cost:_},Rn({parent:(i=this.input)==null?void 0:i.getInfo()},this.lastInfo)}createTexture(i){const r=this.context.ctx,l=r.createTexture();return this.useTextures(l),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MIN_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MAG_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_S,r.CLAMP_TO_EDGE),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_T,r.CLAMP_TO_EDGE),r.pixelStorei(r.UNPACK_ALIGNMENT,1),r.texImage2D(r.TEXTURE_2D,0,r.RGBA,r.RGBA,r.UNSIGNED_BYTE,i),l}};de(LL,"RENDER","render"),Cc([fu(Xn.INIT,"connected",{sync:!0})],LL.prototype,"connect"),Cc([fu("connected",Xn.INIT,{ignoreError:!0,sync:!0})],LL.prototype,"disconnect"),Cc([fu([],"closed",{sync:!0})],LL.prototype,"close");var LY=LL,AEA=XC(LuA(250),p$(()=>performance.now()),h$()),eEA=t=>i=>{const r=performance.now();XC(AEA,JuA(l=>l-r{if(t!==this.context.frameRate&&(fQ.clearTask(this._intervalId),this.start(this.context.frameRate)),this.requestFrame(this._sequence++),this.checkGLError&&this.context instanceof $3){const i=this.context.ctx.getError();i&&this.context.destroy(new pl({code:qg.VIDEO_MANAGER_ERROR,extraCode:5,message:`${this.name} req ${this._sequence} render ${this.totalFrames} faild ${i}`}))}},{fps:this.context.frameRate})}render(t){var i;return!!((i=this.input)!=null&&i.requestFrame(t))&&(this.useProgram(),this.useBufferFrame(),this.useInputTexture(),this.draw(),this.emit(LY.RENDER,this.context._canvas),!0)}addInput(t,...i){super.addInput(t,...i),this.start(this.context.frameRate)}update(t=0){this.state!=="closed"&&(this._intervalId&&(fQ.clearTask(this._intervalId),this._intervalId=0,t===1&&(this.log.info(`${this.name} use requestVideoFrameCallback`),this.checkVisibilityChange=()=>{document.hidden&&(this.start(this.context.frameRate),this.log.info(`${this.name} use timer`),document.removeEventListener("visibilitychange",this.checkVisibilityChange))},document.addEventListener("visibilitychange",this.checkVisibilityChange))),this.requestFrame(this._sequence++))}removeInput(t){super.removeInput(t),fQ.clearTask(this._intervalId)}resize(t,i){super.resize(t,i),this.context.setSize(t,i)}close(){super.close(),fQ.clearTask(this._intervalId),document.removeEventListener("visibilitychange",this.checkVisibilityChange)}},oEA=class extends iEA{constructor(t,i){super(t,i),de(this,"_videoTrack"),de(this,"_muteOb"),de(this,"_closedOb",QE(this,"closed")),de(this,"_subscription"),de(this,"_canvasContainer"),Number(YU)<17&&(this._canvasContainer=document.createElement("div"),this._canvasContainer.style.display="none"),[this._videoTrack]=t.canvas.captureStream().getVideoTracks(),this._muteOb=QE(this._videoTrack,"mute"),XC(QE(this._videoTrack,"ended"),sT(this._closedOb),Tv(()=>{this.context.destroy(new pl({code:qg.VIDEO_MANAGER_ERROR,extraCode:8,message:"video track ended"}))}))}enableCheckMute(){this._subscription=XC(this._muteOb,sT(this._closedOb),y$(eEA(5e3)),W_(()=>{var t;return!!((t=this._videoTrack)!=null&&t.muted)&&!document.hidden}),Tv(()=>{this.context.destroy(new pl({code:qg.VIDEO_MANAGER_ERROR,extraCode:7,message:"video track muted"}))}))}disableCheckMute(){var t;(t=this._subscription)==null||t.dispose()}get videoTrack(){return this._videoTrack}putCanvasIntoDom(){this.context._canvas&&this._canvasContainer&&(document.getElementById(this.context._canvas.id)||(this.log.info(`${this.name} put canvas to body`),document.body.appendChild(this._canvasContainer),this._canvasContainer.appendChild(this.context._canvas)))}render(t){return this.putCanvasIntoDom(),super.render(t)}render2d(t){return this.putCanvasIntoDom(),super.render2d(t)}close(){var t,i;super.close(),(t=this._videoTrack)==null||t.stop(),delete this._videoTrack,(i=this._canvasContainer)==null||i.remove()}},S$=class extends LY{constructor(t,i){super(t,Rn({name:"imageSource"},i)),de(this,"_lastImage"),de(this,"_totalFrames",0),de(this,"_autoResize",!1),de(this,"_canvasRendered"),de(this,"videoCallbackId",0),de(this,"waitingFirstFrame",!0),de(this,"shouldUpdate",!0),this._autoResize=i?.autoResize!==!1,_v===16&&(this._canvasRendered=Q$(),XC(this._canvasRendered,kuA(this._image),juA(r=>r instanceof HTMLCanvasElement?QE(r,"rendered"):FuA()),sT(QE(this,"closed")),Tv(()=>{this.update()})))}onFirstFrame(){this.waitingFirstFrame=!1}tryVideoFrameCallback(){if(!this.shouldUpdate)return;const t=this.image;this.videoCallbackId&&t.cancelVideoFrameCallback(this.videoCallbackId),E4()&&!document.hidden&&(this.videoCallbackId=t.requestVideoFrameCallback((i,r)=>{this.waitingFirstFrame&&this.onFirstFrame(),document.hidden||(this._totalFrames=r.presentedFrames,this.update(1))}))}_render(t,i){var r;let{width:l,height:I}=this;const{image:h}=this;if(h instanceof HTMLVideoElement){if(this.tryVideoFrameCallback(),{videoWidth:l,videoHeight:I}=h,!l||!I)return!1;h.width=l,h.height=I}else if(h instanceof HTMLImageElement||h instanceof ImageData||h instanceof ImageBitmap){if({width:l,height:I}=h,h!==this._lastImage)this._lastImage=h;else if(l===this.width&&I===this.height)return!0}else h instanceof HTMLCanvasElement||h instanceof OffscreenCanvas?({width:l,height:I}=h,this._lastImage=h):typeof VideoFrame<"u"&&h instanceof VideoFrame&&({displayWidth:l,displayHeight:I}=h,(r=this._lastImage)==null||r.close(),this._lastImage=h);if(!this._autoResize)return!0;if(this.width===l&&this.height===I&&this.totalFrames){if(i){this.useTexture();const f=this.context.ctx;f.texSubImage2D(f.TEXTURE_2D,0,0,0,f.RGBA,f.UNSIGNED_BYTE,h)}}else{if(i){this.useTexture();const f=this.context.ctx;f.texImage2D(f.TEXTURE_2D,0,f.RGBA,f.RGBA,f.UNSIGNED_BYTE,h)}this.resize(l,I)}return!0}get image(){return this._image}set image(t){var i;(i=this._canvasRendered)==null||i.next(t),this._image=t}render(t){return this._render(t,!0)}render2d(t){return this._render(t,!1)}},M$=class extends S${constructor(t,i,r){super(t,r),this._player=i,this.name="videoPlayerSource",XC(QE(this._player,Vn.PLAYER_STATE_CHANGED),sT(QE(this,"closed")),W_(({state:l})=>l==="PLAYING"),Tv(()=>{this.tryVideoFrameCallback()}))}get image(){return this._player.element}},sEA=class extends M${get available(){return this._player.isPlaying&&!this.waitingFirstFrame}constructor(t,i,r){super(t,new Uy({id:r.name,track:i,muted:!0,container:null,objectFit:"contain",log:r.logger}),r),this.name="videoTrackSource",this._player.play()}replaceTrack(t){this.waitingFirstFrame=!0,this._player.setTrack(t),this._player.play()}close(){super.close(),this._player.stop()}},nEA=class extends LY{constructor(t,i,r){super(t,sB(Rn({name:"textSource"},r),{create2d:!0})),de(this,"hasChange",!0),de(this,"content",""),this.ctx2d.textBaseline="top",this.content=i.content||"",i.font&&(this.font=i.font),i.color&&(this.color=i.color)}set font(t){this.ctx2d&&(this.ctx2d.font=t,this.hasChange=!0)}get font(){var t;return((t=this.ctx2d)==null?void 0:t.font)||""}set color(t){this.ctx2d&&(this.ctx2d.fillStyle=t,this.hasChange=!0)}get color(){var t;return((t=this.ctx2d)==null?void 0:t.fillStyle)||""}render2d(t){return!(!this.ctx2d||!this.hasChange)&&(this.ctx2d.clearRect(0,0,this.width,this.height),this.drawMultilineText(0,0),this.hasChange=!1,!0)}render(t){return!1}resize(t,i){if(!this.ctx2d)return;const{color:r,font:l}=this;super.resize(t,i),this.color=r,this.font=l}drawMultilineText(t=0,i=0,r=1.2){if(!this.ctx2d)return;const l=this.ctx2d.measureText(this.content);i+=l.fontBoundingBoxAscent||l.actualBoundingBoxAscent||0;const I=this.font.match(/(\d+)px/),h=(I?parseInt(I[1],10):16)*r,f=this.content.split(` +`);for(let w=0;w{this.destroy(new Ql({code:qg.VIDEO_MANAGER_ERROR,extraCode:4,message:"webgl context lost"}))})}destroy(t){let i="";return t&&(i=t.message,this.error=t,lr.addFailedEvent({key:512702,error:t})),this.disconnect(),this.log.info(`video context destroy${i}`?`: ${i}`:""),this.ctx&&(this.ctx.deleteShader(this.defaultVShader),this.ctx.deleteShader(this.defaultFShader),this.ctx.deleteProgram(this.defaultProgam),delete this.ctx),t}set width(t){var i;(i=this.ctx)==null||i.viewport(0,0,t,this.height),super.width=t,this._canvas2d&&(this._canvas2d.width=t)}set height(t){var i;(i=this.ctx)==null||i.viewport(0,0,this.width,t),super.height=t,this._canvas2d&&(this._canvas2d.height=t)}setSize(t,i){var r;(r=this.ctx)==null||r.viewport(0,0,t,i),super.setSize(t,i),this._canvas2d&&(this._canvas2d.width=t,this._canvas2d.height=i)}createShader(t,i){const r=this.ctx,l=r.createShader(t);return r.shaderSource(l,i),r.compileShader(l),l}createProgram(t,i){const r=this.ctx,l=r.createProgram();return r.attachShader(l,t),r.attachShader(l,i),r.linkProgram(l),r.getProgramParameter(l,r.LINK_STATUS)||this.log.error(r.getProgramInfoLog(l)),l}};de(pL,"UNAVAILABLE","unavailable"),Cc([Bu(Xn.INIT,"created",{sync:!0,fail(t){this.log.error("video gl context create failed",t.cause),lr.addFailedEvent({key:512700,error:t.cause||t})},success(){this.log.info("video context created use webgl"),lr.addSuccessEvent({key:512700})}})],pL.prototype,"create"),Cc([Bu("created",Xn.INIT,{ignoreError:!0,sync:!0,success(t){t&&this.emit(pL.UNAVAILABLE,t),this.removeAllListeners()}})],pL.prototype,"destroy");var D3=pL,sU=class extends oU{constructor(){super(...arguments),de(this,"ctx")}create(t){if(this.hasAlpha=t.alpha,this._canvas=document.createElement("canvas"),this._canvas.id=`trtc_${this.name}_${oU._ids++}`,this.ctx=this._canvas.getContext("2d",{alpha:t.alpha,willReadFrequently:t.willReadFrequently}),!this.ctx)throw new Ql({code:qg.VIDEO_MANAGER_ERROR,extraCode:2,message:"2d context not supported"});this._canvas.addEventListener("contextlost",()=>{this.log.error("2d context lost")}),this._canvas.addEventListener("contextrestored",()=>{this.log.warn("2d context restored")})}destroy(t){let i="";t&&(i=t.message,this.error=t,lr.addFailedEvent({key:512703,error:t})),this.disconnect(),this.log.info("video context destroy "+(i?`: ${i}`:"")),delete this.ctx,this._canvas&&(this._canvas.remove(),this._canvas.width=0,this._canvas.height=0,delete this._canvas),this.removeAllListeners(),lr.addSuccessEvent({key:512703})}};Cc([Bu(Xn.INIT,"created",{sync:!0,fail(t){this.log.error("video 2d context create failed",t.cause),lr.addFailedEvent({key:512701,error:t.cause||t})},success(){this.log.info("video context created use 2d"),lr.addSuccessEvent({key:512701})}})],sU.prototype,"create"),Cc([Bu("created",Xn.INIT,{ignoreError:!0,sync:!0})],sU.prototype,"destroy");var xW=i7();if(typeof navigator<"u"&&navigator.mediaDevices&&"setCaptureHandleConfig"in navigator.mediaDevices)try{navigator.mediaDevices.setCaptureHandleConfig({handle:xW,exposeOrigin:!0,permittedOrigins:["*"]})}catch{}var yuA=async function(t){let i=null;const r=MuA(t);jo.info(`getDisplayMedia with constraints: ${JSON.stringify(r)}`);const l=await navigator.mediaDevices.getDisplayMedia(r);t.systemAudio&&l.getAudioTracks().length===0&&(MW&&qy<74||od||$d)&&jo.warn("Your browser not support capture system audio");const u=l.getVideoTracks()[0];if(u){if(t.frameRate)try{await u.applyConstraints({frameRate:{min:t.frameRate,ideal:t.frameRate},width:t.width,height:t.height})}catch(B){jo.warn(`screen applyConstraints failed: ${B}`)}t.captureElement&&await DuA(u,t.captureElement)}if(t.audio){const B=SuA(t);jo.info(`getUserMedia with constraints: ${JSON.stringify(B)}`),i=await navigator.mediaDevices.getUserMedia(B),l.addTrack(i.getAudioTracks()[0])}return l};async function DuA(t,i){var r;if("CropTarget"in window&&"fromElement"in CropTarget&&gv(t.cropTo))try{if(((r=t.getCaptureHandle())==null?void 0:r.handle)!==xW)return;const l=await CropTarget.fromElement(i);await t.cropTo(l)}catch(l){jo.warn(`cropTo target failed ${l}`)}}function SuA(t){const i={echoCancellation:t.echoCancellation,autoGainControl:t.autoGainControl,noiseSuppression:t.noiseSuppression,sampleRate:t.sampleRate,channelCount:t.channelCount};return $n(t.microphoneId)||(i.deviceId=t.microphoneId),{audio:i,video:!1}}function MuA(t){const i={preferCurrentTab:t.preferDisplaySurface==="current-tab"||!!t.captureElement,systemAudio:"include",selfBrowserSurface:"include",surfaceSwitching:"include"},r={width:od?{max:t.width}:{ideal:t.width,max:t.width},height:od?{max:t.height}:{ideal:t.height,max:t.height},frameRate:t.frameRate,displaySurface:t.preferDisplaySurface||"monitor"};if(i.video=r,t.systemAudio){const{echoCancellation:l=!0,noiseSuppression:u=!1,autoGainControl:B=!1}=t;i.audio={echoCancellation:l,noiseSuppression:u,autoGainControl:B,sampleRate:48e3}}return i}var vuA=yuA,RuA=class extends jY{constructor(t){super(t,2),de(this,"profile",{width:1920,height:1080,frameRate:5,bitrate:1600}),de(this,"objectFit","contain"),de(this,"isScreen",!0),this._log.id=`s-${this._log.id}`}get isShareCurrentTab(){var t,i;try{return xW===((i=(t=this.mediaTrack)==null?void 0:t.getCaptureHandle())==null?void 0:i.handle)}catch{return}}async capture({systemAudio:t=!1,autoGainControl:i,echoCancellation:r,noiseSuppression:l,audioTrack:u,videoTrack:B,captureElement:f,preferDisplaySurface:w}){var _;try{const k=xc();let F;return B||u?(F=new MediaStream,B&&F.addTrack(B),u&&F.addTrack(u)):(F=await vuA({audio:!1,systemAudio:t,width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate,autoGainControl:i,echoCancellation:r,noiseSuppression:l,captureElement:f,preferDisplaySurface:w}),this.sourceTrack=F.getVideoTracks()[0]),await this.setInputMediaStreamTrack(F.getVideoTracks()[0]),ps.emit(mn.LOCAL_TRACK_CAPTURE_SUCCESS,{track:this,cost:xc()-k,profile:this.profile,room:(_=this.manager)==null?void 0:_.room}),F}catch(k){throw this.log.error(`getDisplayMedia error observed ${k}`),k instanceof Ql?k:new Ql({code:qg.INITIALIZE_FAILED,name:k.name,message:k.message})}}async switchDevice(t){throw new Error("Method not implemented.")}};function wuA(t=30,i=2){return KY((r,l)=>function(...u){return new Promise((B,f)=>{const w=setTimeout(()=>{const _=new Ql({code:qg.API_CALL_TIMEOUT,message:`checkPendingPromise ${l}() timeout ${t}s`});(this.log||this._log||jo).warn(_),i===2?f(_):i===1&&B()},1e3*t);this._checkPendingPromiseSet||(this._checkPendingPromiseSet=new Set),this._checkPendingPromiseSet.add(w),r.apply(this,u).then(B,f).finally(()=>{clearTimeout(w),this._checkPendingPromiseSet&&w&&this._checkPendingPromiseSet.delete(w)})})})}Cc([N7(function(t){this.setContentHint(t.contentHint||"detail")})],RuA.prototype,"capture");var I_=class S3 extends OW{constructor(i,r,l){super({userId:r.userId,sdkAppId:i.sdkAppId,mediaType:l,room:i}),this.room=i,this.user=r,de(this,"tinyId"),de(this,"isRemote",!0),de(this,"jitterBufferDelay",0),de(this,"availableState"),de(this,"remotePublishState"),de(this,"_triggerCheckDecodeSubject",L7(dE(this,S3.STATE_SUBSCRIBE))),de(this,"ignoreUpdatePlayingState"),this.tinyId=r.tinyId,this.availableState=new Xn(`${r.userId}-${this.mediaType}-available`,"remote-track-available"),this.remotePublishState=new Xn(`${r.userId}-${this.mediaType}-remote-publish`,"remote-track-publish"),jC(k7(dE(this,Xn.STATECHANGED),dE(this.remotePublishState,Xn.STATECHANGED)),U7(()=>this.isRemotePublished&&(this.isSubscribed||this.isSubscribing)),mv(w=>{this.availableState.state!==(w?Xn.ON:Xn.OFF)&&(this.availableState.state=w?Xn.ON:Xn.OFF),this.isRemotePublished&&this.ignoreUpdatePlayingState||this.updatePlayingState(w)}));const u=jC(dE(this.player,Vn.ERROR),F_(w=>w.code===MediaError.MEDIA_ERR_DECODE)),B=jC(ZIA(5e3),F_(()=>this.ignoreDecodeError||!this.isSubscribed||!this.isPlayCalled||!this.stat.bytesReceived||!this.isRemotePublished?!1:!(this.player.isPlaying||(this.kind===zt.AUDIO?this.getAudioLevel()>0:this.stat.framesDecoded>0))||(this.reportDecodeResult(!0),!1))),f=jC(jIA(u,B),J_(dE(this,Xn.INIT)));jC(this._triggerCheckDecodeSubject,F_(()=>!this.ignoreDecodeError),P7(f),mv(w=>{this.reportDecodeResult(!1,w)}))}setMute(i){this.isRemotePublished&&super.setMute(i)}setInputMediaStreamTrack(i){super.setInputMediaStreamTrack(i),this.isRemotePublished&&this.isSubscribed&&this.player.setTrack(this.outMediaTrack)}checkDecodeResult(){this._triggerCheckDecodeSubject.next(!0)}waitHasMediaTrack(){return new Promise(i=>{this.mediaTrack?i():this.once("input-media-track-changed",i)})}get ignoreDecodeError(){var i,r,l,u;return(u=(l=(r=(i=this.room)==null?void 0:i.networkQuality)==null?void 0:r.hadRecentBadDownlink)==null?void 0:l.call(r,2))!=null&&u||this.player.isInAutoPlayFailedState}get isSubscribing(){return this.state.toString()==="subscribeing"}get isSubscribed(){return this.state===S3.STATE_SUBSCRIBE}get isAvailable(){return this.availableState.state===Xn.ON}get isNeedPlay(){return this.isAvailable&&this.isPlayCalled}subscribe(i){return i}unsubscribe(){this.streamType==="main"&&this.kind==="video"&&this.room.changeType(!1,this.user)}reportDecodeResult(i,r){var l,u;const B=this.kind===zt.AUDIO;if(lr[i?"addSuccessEvent":"addFailedEvent"]({key:B?504700:514702}),!B){const f=((l=this.room)==null?void 0:l.downlinkVideoCodec.toUpperCase())||"H264";lr[i?"addSuccessEvent":"addFailedEvent"]({key:n7[`DECODE_${f}_RESULT`]}),i||this.log.warn(`${(u=this.room)==null?void 0:u.downlinkVideoCodec} decode failed`)}i||(lr.addEnum({key:B?504701:514703,value:vW()}),$C.uploadEvent({log:`stat-decode-failed-${this.kind}-${ZX()||$X()}`,userId:this.room.userId}),this._log.warn(`decode failed: isPlaying: ${this.player.isPlaying} ${this.kind===zt.AUDIO?`audioLevel: ${this.getAudioLevel()}`:`framesDecoded: ${this.stat.framesDecoded>0}`}`),this.emit("decode-failed",{error:r}))}updatePlayingState(i){if(this.player.isPlayCalled&&this.player.setTrack(this.playerMediaTrack),this.isPlayCalled&&this.player.isStopped===i){if(i&&(!this.isSubscribed||!this.isRemotePublished||!this.outMediaTrack))return void this.log.info(`abort play, isSubscribed: ${this.isSubscribed} isAvailable: ${this.isRemotePublished} hasTrack: ${!!this.outMediaTrack} `);super.updatePlayingState(i)}}close(){super.close(),this.outMediaTrack&&this.uninstallTrackEvent(this.outMediaTrack)}onFlagChanged(){this.remotePublishState.state=this.isRemotePublished?Xn.ON:Xn.OFF,this.emit("remote-publish-changed",this.isRemotePublished)}onTrackMuted(){this.isNeedPlay&&super.onTrackMuted()}onTrackUnmuted(){this.isNeedPlay&&super.onTrackUnmuted()}onTrackEnded(){this.isNeedPlay&&super.onTrackEnded()}};de(I_,"STATE_SUBSCRIBE","subscribe"),Cc([wuA(5,1)],I_.prototype,"waitHasMediaTrack"),Cc([Bu(Xn.INIT,I_.STATE_SUBSCRIBE,{success(){this.log.info("subscribed"),ps.emit(mn.REMOTE_TRACK_SUBSCRIBED,{track:this})},ignoreError:!0}),G7(521716,!1)],I_.prototype,"subscribe"),Cc([Bu(I_.STATE_SUBSCRIBE,Xn.INIT,{sync:!0,success(){this.log.info("unsubscribed"),ps.emit(mn.REMOTE_TRACK_UNSUBSCRIBED,{track:this})}})],I_.prototype,"unsubscribe");var _j=new Map;function Ec(t,i){const r=iB(Rn({},i),{timestamp:aW()});_j.has(t)?_j.get(t).push(r):_j.set(t,[r])}ps.on(mn.JOIN_SUCCESS,({room:t})=>{Ec(t.userId,{eventId:32788})}),ps.on(mn.LEAVE_START,({room:t})=>{Ec(t.userId,{eventId:32789})}),ps.on(mn.LOCAL_TRACK_PUBLISHED,({track:t})=>{if(t.room){let i=32769;t.mediaType===4?i=32768:t.mediaType===2&&(i=32805),Ec(t.room.userId,{eventId:i})}}),ps.on(mn.LOCAL_TRACK_UNPUBLISHED,({track:t})=>{if(t.room){let i=32771;t.mediaType===4?i=32770:t.mediaType===2&&(i=32806),Ec(t.room.userId,{eventId:i})}}),ps.on(mn.TRACK_MUTED,({track:t})=>{t.room&&(t.kind===zt.AUDIO?Ec(t.room.userId,{eventId:t.isRemote?32785:32772,remoteUserId:t.isRemote?t.userId:void 0}):Ec(t.room.userId,{eventId:t.isRemote?32784:32773,remoteUserId:t.isRemote?t.userId:void 0}))}),ps.on(mn.TRACK_UNMUTED,({track:t})=>{t.room&&(t.kind===zt.AUDIO?Ec(t.room.userId,{eventId:t.isRemote?32787:32774,remoteUserId:t.isRemote?t.userId:void 0}):Ec(t.room.userId,{eventId:t.isRemote?32786:32775,remoteUserId:t.isRemote?t.userId:void 0}))}),ps.on(mn.REMOTE_TRACK_SUBSCRIBED,({track:t})=>{t.room&&(t.mediaType===1&&Ec(t.room.userId,{eventId:32777,remoteUserId:t.userId}),t.mediaType===4&&Ec(t.room.userId,{eventId:32776,remoteUserId:t.userId}),t.mediaType===8&&Ec(t.room.userId,{eventId:32803,remoteUserId:t.userId}))}),ps.on(mn.REMOTE_TRACK_UNSUBSCRIBED,({track:t})=>{t.room&&(t.mediaType===1&&Ec(t.room.userId,{eventId:32779,remoteUserId:t.userId}),t.mediaType===4&&Ec(t.room.userId,{eventId:32778,remoteUserId:t.userId}),t.mediaType===8&&Ec(t.room.userId,{eventId:32804,remoteUserId:t.userId}))}),ps.on(mn.SWITCH_DEVICE_SUCCESS,({track:t})=>{t.room&&Ec(t.room.userId,{eventId:t.kind===zt.VIDEO?32780:32781})}),ps.on(mn.LOCAL_TRACK_REPLACED,({track:t})=>{t.room&&Ec(t.room.userId,{eventId:t.kind===zt.VIDEO?32782:32783})}),ps.on(mn.SIGNAL_CONNECTION_STATE_CHANGED,({room:t,prevState:i,state:r})=>{let l;switch(r){case"CONNECTED":l=i==="RECONNECTING"?32795:32791;break;case"DISCONNECTED":l=i==="RECONNECTING"?32796:32790;break;case"RECONNECTING":l=32794}l&&Ec(t.userId,{eventId:l})}),ps.on(mn.PEER_CONNECTION_STATE_CHANGED,({room:t,prevState:i,state:r,remoteUserId:l})=>{const u=!!l;let B;switch(r){case"CONNECTED":B=i==="RECONNECTING"?u?32801:32798:u?32793:32792;break;case"DISCONNECTED":i==="RECONNECTING"&&(B=u?32802:32799);break;case"RECONNECTING":B=u?32800:32797}B&&Ec(t.userId,{eventId:B,remoteUserId:l})}),ps.on(mn.VIDEO_CODEC_IMPLEMENTATION_CHANGED,({implementation:t,userId:i,remoteUserId:r,codec:l,isHWCodec:u,prevImplementation:B,streamType:f})=>{let w=u?1:0;B||(w=u?3:2);const _={H264:0,H265:1,VP8:2}[l.toUpperCase()],k={eventId:4004,param1:w,param2:_,streamType:f||2};r&&(k.remoteUserId=r,k.eventId=4005),Ec(i,k),lr.addEnum({key:r?514701:513701,value:w}),lr.addEnum({key:r?514700:513700,value:_})}),ps.on(mn.LOCAL_TRACK_RECAPTURE,({track:t,error:i})=>{if(t.userId){const r={eventId:2003,param1:0};t.kind===zt.AUDIO?(r.streamType=1,i&&(r.param1=2)):(r.streamType=t.streamType==="auxiliary"?7:2,i&&(r.param1=8)),Ec(t.userId,r)}});W_(dU());W_(dU());var Tj=0,J7=class H7{constructor(i){this.core=i,de(this,"seq"),de(this,"log"),de(this,"localMixVideoTrack",null),de(this,"systemAudioTrackList",{}),de(this,"_mixVideoConfig"),de(this,"onScreenShareStop"),de(this,"eventListeners",new Map),Tj+=1,this.seq=Tj,this.log=i.log.createChild({id:`${this.getAlias()}${Tj}`}),this.log.info("created")}getName(){return H7.Name}getAlias(){return"vmix"}getValidateRule(i){switch(i){case"start":return _gA(this.core);case"update":return TgA(this.core);case"stop":return NgA(this.core)}}getGroup(){return"vmix"}async start(i){this.localMixVideoTrack||(this.localMixVideoTrack=new this.core.LocalMixVideoTrack(this.core.room.videoManager)),this._mixVideoConfig={canvasInfo:{width:1920,height:1080}},i=this.core.utils.deepCloneBasic(i);const{view:r,onScreenShareStop:l}=i,u=await this.parseMixOptions(i);return l&&(this.onScreenShareStop=l,this._mixVideoConfig.onScreenShareStop=l),this._updatePreview({view:r,track:this.localMixVideoTrack}),this.core.utils.isUndefined(r)||(this._mixVideoConfig.view=r),await this.localMixVideoTrack.startMix(),{track:this.localMixVideoTrack.outMediaTrack,systemAudioTrackList:this.systemAudioTrackList,result:u}}async update(i){const{RtcError:r,ErrorCode:l}=this.core.errorModule;if(!this.localMixVideoTrack)throw new r({code:l.INVALID_OPERATION,message:"mixTrack doesn't initialize!"});i=this.core.utils.deepCloneBasic(i);const{view:u}=i,B=await this.parseMixOptions(i);return await this._updatePreview({view:u,track:this.localMixVideoTrack,prevConfig:this._mixVideoConfig}),this.core.utils.isUndefined(u)||(this._mixVideoConfig.view=u),{track:this.localMixVideoTrack.outMediaTrack,systemAudioTrackList:this.systemAudioTrackList,result:B}}stop(){var i;this.eventListeners.forEach((r,l)=>{this.removeEventListeners(l)}),this.eventListeners.clear(),(i=this.localMixVideoTrack)==null||i.close(),this.localMixVideoTrack=null,Object.values(this.systemAudioTrackList).forEach(r=>r.stop()),this.systemAudioTrackList={},delete this.onScreenShareStop,delete this._mixVideoConfig}async parseMixOptions(i){const{RtcError:r,ErrorCode:l}=this.core.errorModule;if(!this.localMixVideoTrack||!this._mixVideoConfig)return{successOptions:{},failedDetails:[]};const u=[],B=Rn({},i),{canvasInfo:f,camera:w,screen:_,text:k,image:F,video:j}=i;f&&this.parseCanvasOptions(f);let IA=0,rA=0;const pA=[{key:"camera",options:w,parser:this.parseCameraOptions.bind(this)},{key:"screen",options:_,parser:this.parseScreenOptions.bind(this)},{key:"text",options:k,parser:this.parseTextOptions.bind(this)},{key:"image",options:F,parser:this.parseImageOptions.bind(this)},{key:"video",options:j,parser:this.parseVideoOptions.bind(this)}];for(const{key:lA,options:cA,parser:TA}of pA)if(cA){IA++;const WA=await TA(this.localMixVideoTrack,cA,this._mixVideoConfig[lA]||[]);this._mixVideoConfig[lA]=WA.finalOptions,B[lA]=WA.finalOptions,WA.errors.length>0&&(u.push(...WA.errors),WA.errors.length===cA.length&&rA++)}if(rA>0&&rA===IA)throw new r({code:l.INVALID_PARAMETER,message:"all sources mix failed",data:{failedDetails:u}});return{successOptions:B,failedDetails:u}}parseCanvasOptions(i){if(!this.localMixVideoTrack||!this._mixVideoConfig)return;const{canvasColor:r,width:l,height:u,frameRate:B}=i;r&&this.localMixVideoTrack.setMixBackground(r),B&&this.localMixVideoTrack.setFps(B),this.localMixVideoTrack.resizeMixCanvas(l,u),this._mixVideoConfig.canvasInfo=i}prepareSourceOptions(i,r){const l=new Set(i.map(u=>u.id));return{removeIdList:r.filter(u=>!l.has(u.id)).map(u=>u.id),preOptionsMap:new Map(r.map(u=>[u.id,u]))}}recordSourceError(i,r,l,u,B){B.push({id:i,error:r}),l.has(i)&&u.push(l.get(i))}async parseCameraOptions(i,r,l=[]){const{removeIdList:u,preOptionsMap:B}=this.prepareSourceOptions(r,l);this.log.debug("videomixer removeIdList",r,u,B);for(const _ of u)i.removeCameraSource(_),this.removeEventListeners(_);const f=[],w=[];for(const _ of r)try{await this.processSingleCameraSource(i,_),f.push(_)}catch(k){this.recordSourceError(_.id,k,B,f,w)}return{finalOptions:f,errors:w}}async processSingleCameraSource(i,r){const{id:l}=r;this.resolveCameraInternalTrack(i,r),i.inputLocalVideoTracks.has(l)?await this.updateExistingCameraSource(i,r):await this.addNewCameraSource(i,r)}async updateExistingCameraSource(i,r){var l,u;const{id:B,layout:f,profile:w}=r,_=(l=i.inputLocalVideoTracks.get(B))==null?void 0:l.mediaTrack;await this.updateCameraProfile(r);const k=(u=i.inputLocalVideoTracks.get(B))==null?void 0:u.mediaTrack,F=this.resolveVideoProfile(w);k!==_?i.updateCameraSource(B,f,k,F):i.updateCameraSource(B,f,null,F)}resolveCameraInternalTrack(i,r){var l;const{id:u,layout:B,profile:f,useInternalTrack:w}=r;if(w){if(i.inputLocalVideoTracks.get(u))return r;this.log.debug("resolve camera internal track",r,r.id,r.videoTrack),(l=this.core.trtc.localVideoTrack)!=null&&l.sourceTrack?(this.log.debug("resolve camera internal track outMediaTrack:",this.core.trtc.localVideoTrack.outMediaTrack,"sourceTrack:",this.core.trtc.localVideoTrack.sourceTrack),r.videoTrack=this.core.trtc.localVideoTrack.outMediaTrack,r.profile=this.core.trtc.localVideoTrack.profile):r.videoTrack=this.createPlaceholderVideoTrack(),this.removeEventListeners(u);const _=F=>{var j,IA;const rA=i.inputLocalVideoTracks.get(u);this.log.debug(`camera internal track preprocessed event from ${(j=F.room)==null?void 0:j.userId} to ${this.core.room.userId}, is same instance:${F.room===this.core.room} ,new track:`,F.mediaTrack,rA?.mediaTrack,i.outMediaTrack),((IA=F.mediaTrack)==null?void 0:IA.kind)!==zt.AUDIO&&rA?.mediaTrack!==F.mediaTrack&&i.outMediaTrack!==F.mediaTrack&&F.room===this.core.room?rA&&F.mediaTrack&&i.updateCameraSource(u,B,F.mediaTrack):this.log.debug("camera internal track preprocessed event return")},k=F=>{var j,IA,rA,pA,lA,cA,TA,WA;const zA=i.inputLocalVideoTracks.get(u);this.log.debug(`camera internal track stopped ${((j=F.track)==null?void 0:j.mediaTrack)===zA?.mediaTrack||((IA=F.track)==null?void 0:IA.outMediaTrack)===zA?.mediaTrack||((rA=F.track)==null?void 0:rA.outMediaTrack)===i.outMediaTrack}`,(pA=F.track)==null?void 0:pA.mediaTrack,(lA=F.track)==null?void 0:lA.outMediaTrack,zA?.mediaTrack,i.outMediaTrack),!zA||((cA=F.track)==null?void 0:cA.mediaTrack)!==zA?.mediaTrack&&((TA=F.track)==null?void 0:TA.outMediaTrack)!==zA?.mediaTrack&&((WA=F.track)==null?void 0:WA.outMediaTrack)!==i.outMediaTrack||i.updateCameraSource(u,B,this.createPlaceholderVideoTrack())};this.core.innerEmitter.on("118",_),this.core.innerEmitter.on("117",k),this.eventListeners.has(u)||this.eventListeners.set(u,{}),this.eventListeners.get(u).captureSuccess=()=>{this.core.innerEmitter.off("118",_)},this.eventListeners.get(u).trackStop=()=>{this.core.innerEmitter.off("117",k)}}return r}async addNewCameraSource(i,r){const{id:l,layout:u,useInternalTrack:B}=r,f=await this.captureCamera(r);try{i.addCameraSource(l,f,u)}catch(w){throw f.close(),w}}resolveVideoProfile(i){if(!this.core.utils.isUndefined(i))return this.core.utils.isString(i)?this.core.constants.videoProfileMap[i]:i}async parseScreenOptions(i,r,l=[]){const{removeIdList:u,preOptionsMap:B}=this.prepareSourceOptions(r,l);for(const _ of u)i.removeScreenSource(_),this.removeSystemAudioTrack(_),this.removeEventListeners(_);const f=[],w=[];for(const _ of r)try{await this.processSingleScreenSource(i,_,B),f.push(_)}catch(k){this.recordSourceError(_.id,k,B,f,w)}return{finalOptions:f,errors:w}}async processSingleScreenSource(i,r,l){const{id:u,layout:B,useInternalTrack:f}=r;this.resolveScreenInternalTrack(i,r);const w=l.get(u),_=i.inputLocalScreenTracks.has(u),k=!w?.systemAudio&&r.systemAudio;_&&!k?this.updateExistingScreenSource(i,u,B,w,r):await this.addNewScreenSource(i,r,w)}updateExistingScreenSource(i,r,l,u,B){i.updateScreenSource(r,l),u?.systemAudio&&!B.systemAudio&&this.removeSystemAudioTrack(r)}resolveScreenInternalTrack(i,r){var l,u;const{id:B,layout:f,useInternalTrack:w}=r;if(w){if(i.inputLocalScreenTracks.get(B))return r;this.log.debug("resolve screen internal track",r,r.id,r.videoTrack),(l=this.core.trtc.localScreenTrack)!=null&&l.sourceTrack?(r.videoTrack=this.core.trtc.localScreenTrack.sourceTrack,r.profile=this.core.trtc.localScreenTrack.profile,(u=this.core.trtc.localScreenAudioTrack)!=null&&u.mediaTrack&&(r.audioTrack=this.core.trtc.localScreenAudioTrack.mediaTrack),delete r.captureElement,delete r.preferDisplaySurface,delete r.systemAudio):r.videoTrack=this.createPlaceholderVideoTrack(),this.removeEventListeners(B);const _=F=>{var j,IA,rA,pA,lA,cA,TA;const WA=i.inputLocalScreenTracks.get(B);this.log.debug(`screen internal track capture success event from ${(j=F.room)==null?void 0:j.userId} to ${this.core.room.userId}, is same instance:${F.room===this.core.room}, isScreen:${(IA=F.track)==null?void 0:IA.isScreen} kind:${(rA=F.track)==null?void 0:rA.kind}`,WA,F.track.sourceTrack),(pA=F.track)!=null&&pA.isScreen&&((lA=F.track)==null?void 0:lA.kind)!==zt.AUDIO&&WA&&(this.log.debug("screen internal track capture success event ",(cA=F.track)==null?void 0:cA.sourceTrack),(TA=F.track)!=null&&TA.sourceTrack&&i.updateScreenSource(B,f,F.track.sourceTrack))},k=F=>{var j,IA;const rA=i.inputLocalScreenTracks.get(B);this.log.debug(`screen internal track stopped, is same track:${((j=F.track)==null?void 0:j.sourceTrack)===rA?.mediaTrack}, isScreen:${F.track.isScreen}`),F.track.isScreen&&((IA=F.track)==null?void 0:IA.sourceTrack)===rA?.mediaTrack&&i.updateScreenSource(B,f,this.createPlaceholderVideoTrack())};this.core.innerEmitter.on("102",_),this.core.innerEmitter.on("117",k),this.eventListeners.has(B)||this.eventListeners.set(B,{}),this.eventListeners.get(B).captureSuccess=()=>{this.core.innerEmitter.off("102",_)},this.eventListeners.get(B).trackStop=()=>{this.core.innerEmitter.off("117",k)}}return r}async addNewScreenSource(i,r,l){const{id:u,layout:B}=r,f=await this.captureScreen(r);!l?.systemAudio&&r.systemAudio&&i.inputLocalScreenTracks.has(u)&&i.removeScreenSource(u);try{i.addScreenSource(u,f,B)}catch(w){throw f.close(),w}}async parseTextOptions(i,r,l=[]){const{removeIdList:u,preOptionsMap:B}=this.prepareSourceOptions(r,l);for(const _ of u)i.removeTextSource(_);const f=[],w=[];for(const _ of r)try{B.has(_.id)?i.updateTextSource(_):i.addTextSource(_),f.push(_)}catch(k){this.recordSourceError(_.id,k,B,f,w)}return{finalOptions:f,errors:w}}async parseImageOptions(i,r,l=[]){const{removeIdList:u,preOptionsMap:B}=this.prepareSourceOptions(r,l);for(const _ of u)i.removeImageSource(_);const f=[],w=[];for(const _ of r)try{await this.processSingleImageSource(i,_,B),f.push(_)}catch(k){this.recordSourceError(_.id,k,B,f,w)}return{finalOptions:f,errors:w}}async processSingleImageSource(i,r,l){const{id:u,url:B,layout:f}=r,w=l.get(u);if(w){let _;w.url!==B&&(_=await this.core.utils.loadImage(B)),i.updateImageSource(u,f,_)}else{const _=await this.core.utils.loadImage(B);i.addImageSource(u,_,f)}}async parseVideoOptions(i,r,l=[]){const{removeIdList:u,preOptionsMap:B}=this.prepareSourceOptions(r,l);for(const _ of u)i.removeVideoSource(_);const f=[],w=[];for(const _ of r)try{await this.processSingleVideoSource(i,_,B),f.push(_)}catch(k){this.recordSourceError(_.id,k,B,f,w)}return{finalOptions:f,errors:w}}async processSingleVideoSource(i,r,l){const{id:u,url:B,layout:f}=r,w=l.get(u);if(w){let _;w.url!==B&&(_=await this.core.utils.loadVideo(B)),i.updateVideoSource(u,f,_)}else{const _=await this.core.utils.loadVideo(B);i.addVideoSource(u,_,f)}}createPlaceholderVideoTrack(){const i=document.createElement("canvas");i.width=1,i.height=1;const r=i.getContext("2d");if(!r)return i.captureStream(30).getVideoTracks()[0];let l=null;const u=1e3/30,B=i.captureStream(30).getVideoTracks()[0],f=()=>{r.fillStyle="rgba(255, 255, 255, 0)",r.fillRect(0,0,i.width,i.height),B.readyState==="live"&&(l=setTimeout(f,u))};f();const w=B.stop.bind(B);return B.stop=()=>{l&&(clearTimeout(l),l=null),w()},B}removeEventListeners(i){const r=this.eventListeners.get(i);r&&(r.captureSuccess&&r.captureSuccess(),r.trackStop&&r.trackStop(),this.eventListeners.delete(i))}async captureCamera(i){const{id:r,cameraId:l,videoTrack:u,profile:B}=i,f=new this.core.LocalVideoTrack;f.log.id+=`-${r}`;const w={};if(l?w.deviceId=l:this.core.utils.isUndefined(u)||(w.customSource=u),!this.core.utils.isUndefined(B)){const _=this.resolveVideoProfile(B);_&&f.setProfile(_)}return await f.capture(w),f}async updateCameraProfile(i){var r;const{id:l,cameraId:u,videoTrack:B,profile:f}=i,w=(r=this.localMixVideoTrack)==null?void 0:r.inputLocalVideoTracks.get(l);if(w&&(u?await w.switchDevice(u):this.core.utils.isUndefined(B)||await w.setInputMediaStreamTrack(B),!this.core.utils.isUndefined(f))){const _=this.resolveVideoProfile(f);_&&w.setProfile(_),u&&w.isNeedToSwitchDevice(u)||await w.applyProfile()}}async captureScreen(i){const{id:r,profile:l,captureElement:u,preferDisplaySurface:B,systemAudio:f,videoTrack:w,audioTrack:_}=i,k=new this.core.LocalScreenTrack;k.log.id+=`-${r}`;const F={captureElement:u,preferDisplaySurface:B,systemAudio:f,videoTrack:w,audioTrack:_};if(!this.core.utils.isUndefined(l))if(this.core.utils.isString(l)){const IA=this.core.constants.screenProfileMap[l];IA&&k.setProfile(IA)}else k.setProfile(l);const j=await k.capture(F);return f&&j.getAudioTracks().length>0?(this.systemAudioTrackList[r]=j.getAudioTracks()[0],this.log.info(`${r} system audio track captured`)):this.removeSystemAudioTrack(r),k.mediaTrack.addEventListener(this.core.constants.NAME.ENDED,()=>{this.handleScreenShareEnded(r)}),k}handleScreenShareEnded(i){var r,l,u;(r=this.localMixVideoTrack)==null||r.removeScreenSource(i),(l=this._mixVideoConfig)!=null&&l.screen&&(this._mixVideoConfig.screen=this._mixVideoConfig.screen.filter(B=>B.id!==i)),(u=this.onScreenShareStop)==null||u.call(this,i)}async _updatePreview({view:i,track:r,prevConfig:l}){if(this.core.utils.isUndefined(i)&&l?.view){const u=this.core.utils.getViewListFromView(l.view);return void(u.length>0&&await r.play(u))}if(!this.core.utils.isUndefined(i)){const u=this.core.utils.getViewListFromView(i);u.length>0?await r.play(u):r.stop()}}removeSystemAudioTrack(i){const r=this.systemAudioTrackList[i];r&&(r.stop(),this.log.info(`${i} system audio track stop`),delete this.systemAudioTrackList[i])}};de(J7,"Name","VideoMixer");var q7=J7,_uA=q7;const TuA=Object.freeze(Object.defineProperty({__proto__:null,VideoMixer:q7,default:_uA},Symbol.toStringTag,{value:"Module"})),NuA=gU(TuA);var GuA=cL.exports,sZ;function buA(){return sZ||(sZ=1,function(t,i){(function(r,l){l(i,PnA(),IrA,tgA,lgA,QgA,NuA)})(GuA,function(r,l,u,B,f,w,_){function k(q){return q&&typeof q=="object"&&"default"in q?q:{default:q}}var F=k(l),j=k(_),IA=function(q,L){return IA=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(oA,G){oA.__proto__=G}||function(oA,G){for(var x in G)Object.prototype.hasOwnProperty.call(G,x)&&(oA[x]=G[x])},IA(q,L)},rA=function(){return rA=Object.assign||function(q){for(var L,oA=1,G=arguments.length;oA=0;wA--)(x=q[wA])&&(uA=(tA<3?x(uA):tA>3?x(L,oA,uA):x(L,oA))||uA);return tA>3&&uA&&Object.defineProperty(L,oA,uA),uA}function lA(q,L,oA,G){return new(oA||(oA=Promise))(function(x,tA){function uA(Qe){try{Ae(G.next(Qe))}catch(p){tA(p)}}function wA(Qe){try{Ae(G.throw(Qe))}catch(p){tA(p)}}function Ae(Qe){var p;Qe.done?x(Qe.value):(p=Qe.value,p instanceof oA?p:new oA(function(h){h(p)})).then(uA,wA)}Ae((G=G.apply(q,[])).next())})}function cA(q,L){var oA,G,x,tA,uA={label:0,sent:function(){if(1&x[0])throw x[1];return x[1]},trys:[],ops:[]};return tA={next:wA(0),throw:wA(1),return:wA(2)},typeof Symbol=="function"&&(tA[Symbol.iterator]=function(){return this}),tA;function wA(Ae){return function(Qe){return function(p){if(oA)throw new TypeError("Generator is already executing.");for(;tA&&(tA=0,p[0]&&(uA=0)),uA;)try{if(oA=1,G&&(x=2&p[0]?G.return:p[0]?G.throw||((x=G.return)&&x.call(G),0):G.next)&&!(x=x.call(G,p[1])).done)return x;switch(G=0,x&&(p=[2&p[0],x.value]),p[0]){case 0:case 1:x=p;break;case 4:return uA.label++,{value:p[1],done:!1};case 5:uA.label++,G=p[1],p=[0];continue;case 7:p=uA.ops.pop(),uA.trys.pop();continue;default:if(x=uA.trys,!((x=x.length>0&&x[x.length-1])||p[0]!==6&&p[0]!==2)){uA=0;continue}if(p[0]===3&&(!x||p[1]>x[0]&&p[1]=q.length&&(q=void 0),{value:q&&q[G++],done:!q}}};throw new TypeError(L?"Object is not iterable.":"Symbol.iterator is not defined.")}function WA(q,L,oA){if(oA||arguments.length===2)for(var G,x=0,tA=L.length;x0&&Jt[0]<4?1:+(Jt[0]+Jt[1])),!yg&&mc&&(!(Jt=mc.match(/Edge\/(\d+)/))||Jt[1]>=74)&&(Jt=mc.match(/Chrome\/(\d+)/))&&(yg=+Jt[1]);var Ia=yg,yn=Gn.String,Ga=!!Object.getOwnPropertySymbols&&!Js(function(){var q=Symbol("symbol detection");return!yn(q)||!(Object(q)instanceof Symbol)||!Symbol.sham&&Ia&&Ia<41}),Da=Ga&&!Symbol.sham&&typeof Symbol.iterator=="symbol",$=Object,K=Da?function(q){return typeof q=="symbol"}:function(q){var L=Hs("Symbol");return wo(L)&&Sg(L.prototype,$(q))},vA=String,qA=TypeError,te=function(q){if(wo(q))return q;throw qA(function(L){try{return vA(L)}catch{return"Object"}}(q)+" is not a function")},pe=function(q,L){var oA=q[L];return Zi(oA)?void 0:te(oA)},Oe=TypeError,Fe=Object.defineProperty,ot=function(q,L){try{Fe(Gn,q,{value:L,configurable:!0,writable:!0})}catch{Gn[q]=L}return L},ut="__core-js_shared__",St=Gn[ut]||ot(ut,{}),Ot=De(function(q){(q.exports=function(L,oA){return St[L]||(St[L]=oA!==void 0?oA:{})})("versions",[]).push({version:"3.32.1",mode:"global",copyright:"© 2014-2023 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.32.1/LICENSE",source:"https://github.com/zloirock/core-js"})}),li=Object,nt=function(q){return li(ng(q))},Ft=as({}.hasOwnProperty),Ji=Object.hasOwn||function(q,L){return Ft(nt(q),L)},qi=0,qs=Math.random(),Mi=as(1 .toString),Wo=function(q){return"Symbol("+(q===void 0?"":q)+")_"+Mi(++qi+qs,36)},Mg=Gn.Symbol,or=Ot("wks"),fr=Da?Mg.for||Mg:Mg&&Mg.withoutSetter||Wo,xn=function(q){return Ji(or,q)||(or[q]=Ga&&Ji(Mg,q)?Mg[q]:fr("Symbol."+q)),or[q]},Dl=TypeError,Ks=xn("toPrimitive"),oI=function(q,L){if(!Hn(q)||K(q))return q;var oA,G=pe(q,Ks);if(G){if(oA=po(G,q,L),!Hn(oA)||K(oA))return oA;throw Dl("Can't convert object to primitive value")}return function(x,tA){var uA,wA;if(wo(uA=x.toString)&&!Hn(wA=po(uA,x))||wo(uA=x.valueOf)&&!Hn(wA=po(uA,x)))return wA;throw Oe("Can't convert object to primitive value")}(q)},Wg=function(q){var L=oI(q,"string");return K(L)?L:L+""},fc=Gn.document,fu=Hn(fc)&&Hn(fc.createElement),Sa=function(q){return fu?fc.createElement(q):{}},Sl=!Qr&&!Js(function(){return Object.defineProperty(Sa("div"),"a",{get:function(){return 7}}).a!==7}),fe=Object.getOwnPropertyDescriptor,me={f:Qr?fe:function(q,L){if(q=Dg(q),L=Wg(L),Sl)try{return fe(q,L)}catch{}if(Ji(q,L))return mr(!po(cn.f,q,L),q[L])}},vg=Qr&&Js(function(){return Object.defineProperty(function(){},"prototype",{value:42,writable:!1}).prototype!==42}),rg=String,Rg=TypeError,Dn=function(q){if(Hn(q))return q;throw Rg(rg(q)+" is not an object")},yr=TypeError,Ii=Object.defineProperty,so=Object.getOwnPropertyDescriptor,Hc="enumerable",zg="configurable",wg="writable",Or={f:Qr?vg?function(q,L,oA){if(Dn(q),L=Wg(L),Dn(oA),typeof q=="function"&&L==="prototype"&&"value"in oA&&wg in oA&&!oA[wg]){var G=so(q,L);G&&G[wg]&&(q[L]=oA.value,oA={configurable:zg in oA?oA[zg]:G[zg],enumerable:Hc in oA?oA[Hc]:G[Hc],writable:!1})}return Ii(q,L,oA)}:Ii:function(q,L,oA){if(Dn(q),L=Wg(L),Dn(oA),Sl)try{return Ii(q,L,oA)}catch{}if("get"in oA||"set"in oA)throw yr("Accessors not supported");return"value"in oA&&(q[L]=oA.value),q}},yc=Qr?function(q,L,oA){return Or.f(q,L,mr(1,oA))}:function(q,L,oA){return q[L]=oA,q},qc=Function.prototype,ag=Qr&&Object.getOwnPropertyDescriptor,yu=Ji(qc,"name"),CE={CONFIGURABLE:yu&&(!Qr||Qr&&ag(qc,"name").configurable)},_g=as(Function.toString);wo(St.inspectSource)||(St.inspectSource=function(q){return _g(q)});var ba,Dc,hE,ka=St.inspectSource,oa=Gn.WeakMap,Tg=wo(oa)&&/native code/.test(String(oa)),sI=Ot("keys"),hs=function(q){return sI[q]||(sI[q]=Wo(q))},ko={},ua="Object already initialized",sr=Gn.TypeError,Pt=Gn.WeakMap;if(Tg||St.state){var Ht=St.state||(St.state=new Pt);Ht.get=Ht.get,Ht.has=Ht.has,Ht.set=Ht.set,ba=function(q,L){if(Ht.has(q))throw sr(ua);return L.facade=q,Ht.set(q,L),L},Dc=function(q){return Ht.get(q)||{}},hE=function(q){return Ht.has(q)}}else{var Ng=hs("state");ko[Ng]=!0,ba=function(q,L){if(Ji(q,Ng))throw sr(ua);return L.facade=q,yc(q,Ng,L),L},Dc=function(q){return Ji(q,Ng)?q[Ng]:{}},hE=function(q){return Ji(q,Ng)}}var nI={get:Dc,enforce:function(q){return hE(q)?Dc(q):ba(q,{})}},nr=De(function(q){var L=CE.CONFIGURABLE,oA=nI.enforce,G=nI.get,x=String,tA=Object.defineProperty,uA=as("".slice),wA=as("".replace),Ae=as([].join),Qe=Qr&&!Js(function(){return tA(function(){},"length",{value:8}).length!==8}),p=String(String).split("String"),h=q.exports=function(v,N,O){uA(x(N),0,7)==="Symbol("&&(N="["+wA(x(N),/^Symbol\(([^)]*)\)/,"$1")+"]"),O&&O.getter&&(N="get "+N),O&&O.setter&&(N="set "+N),(!Ji(v,"name")||L&&v.name!==N)&&(Qr?tA(v,"name",{value:N,configurable:!0}):v.name=N),Qe&&O&&Ji(O,"arity")&&v.length!==O.arity&&tA(v,"length",{value:O.arity});try{O&&Ji(O,"constructor")&&O.constructor?Qr&&tA(v,"prototype",{writable:!1}):v.prototype&&(v.prototype=void 0)}catch{}var z=oA(v);return Ji(z,"source")||(z.source=Ae(p,typeof N=="string"?N:"")),v};Function.prototype.toString=h(function(){return wo(this)&&G(this).source||ka(this)},"toString")}),PI=function(q,L,oA,G){G||(G={});var x=G.enumerable,tA=G.name!==void 0?G.name:L;if(wo(oA)&&nr(oA,tA,G),G.global)x?q[L]=oA:ot(L,oA);else{try{G.unsafe?q[L]&&(x=!0):delete q[L]}catch{}x?q[L]=oA:Or.f(q,L,{value:oA,enumerable:!1,configurable:!G.nonConfigurable,writable:!G.nonWritable})}return q},Wa=Math.ceil,sa=Math.floor,un=Math.trunc||function(q){var L=+q;return(L>0?sa:Wa)(L)},Sn=function(q){var L=+q;return L!=L||L===0?0:un(L)},Du=Math.max,Gg=Math.min,La=Math.min,Kc=function(q){return q>0?La(Sn(q),9007199254740991):0},xI=function(q){return Kc(q.length)},BE=function(q){return function(L,oA,G){var x,tA=Dg(L),uA=xI(tA),wA=function(Ae,Qe){var p=Sn(Ae);return p<0?Du(p+Qe,0):Gg(p,Qe)}(G,uA);if(q&&oA!=oA){for(;uA>wA;)if((x=tA[wA++])!=x)return!0}else for(;uA>wA;wA++)if((q||wA in tA)&&tA[wA]===oA)return q||wA||0;return!q&&-1}},rI={indexOf:BE(!1)}.indexOf,Su=as([].push),Ml=function(q,L){var oA,G=Dg(q),x=0,tA=[];for(oA in G)!Ji(ko,oA)&&Ji(G,oA)&&Su(tA,oA);for(;L.length>x;)Ji(G,oA=L[x++])&&(~rI(tA,oA)||Su(tA,oA));return tA},Sc=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],Mu=Sc.concat("length","prototype"),vu={f:Object.getOwnPropertyNames||function(q){return Ml(q,Mu)}},vl={f:Object.getOwnPropertySymbols},rs=as([].concat),gs=Hs("Reflect","ownKeys")||function(q){var L=vu.f(Dn(q)),oA=vl.f;return oA?rs(L,oA(q)):L},rd=function(q,L,oA){for(var G=gs(L),x=Or.f,tA=me.f,uA=0;uAuA;)Or.f(q,oA=x[uA++],G[oA]);return q},YI={f:Ru},zc=Hs("document","documentElement"),Zc="prototype",VI="script",cI=hs("IE_PROTO"),Xc=function(){},$c=function(q){return"<"+VI+">"+q+""},Ma=function(q){q.write($c("")),q.close();var L=q.parentWindow.Object;return q=null,L},bg=function(){try{Ea=new ActiveXObject("htmlfile")}catch{}var q,L,oA;bg=typeof document<"u"?document.domain&&Ea?Ma(Ea):(L=Sa("iframe"),oA="java"+VI+":",L.style.display="none",zc.appendChild(L),L.src=String(oA),(q=L.contentWindow.document).open(),q.write($c("document.F=Object")),q.close(),q.F):Ma(Ea);for(var G=Sc.length;G--;)delete bg[Zc][Sc[G]];return bg()};ko[cI]=!0;var ys,Kn,vc=Object.create||function(q,L){var oA;return q!==null?(Xc[Zc]=Dn(q),oA=new Xc,Xc[Zc]=null,oA[cI]=q):oA=bg(),L===void 0?oA:YI.f(oA,L)},JI=Gn.RegExp,HI=Js(function(){var q=JI(".","s");return!(q.dotAll&&q.exec(` -`)&&q.flags==="s")}),mE=Gn.RegExp,oh=Js(function(){var q=mE("(?b)","g");return q.exec("b").groups.a!=="b"||"b".replace(q,"$c")!=="bc"}),nC=nI.get,sh=Ot("native-string-replace",String.prototype.replace),Al=RegExp.prototype.exec,kg=Al,no=as("".charAt),rC=as("".indexOf),fE=as("".replace),yE=as("".slice),ld=(Kn=/b*/g,po(Al,ys=/a/,"a"),po(Al,Kn,"a"),ys.lastIndex!==0||Kn.lastIndex!==0),DE=cd.BROKEN_CARET,el=/()??/.exec("")[1]!==void 0;(ld||el||DE||HI||oh)&&(kg=function(q){var L,oA,G,x,tA,uA,wA,Ae=this,Qe=nC(Ae),p=Xg(q),h=Qe.raw;if(h)return h.lastIndex=Ae.lastIndex,L=po(kg,h,p),Ae.lastIndex=h.lastIndex,L;var v=Qe.groups,N=DE&&Ae.sticky,O=po(qn,Ae),z=Ae.source,X=0,nA=p;if(N&&(O=fE(O,"y",""),rC(O,"g")===-1&&(O+="g"),nA=yE(p,Ae.lastIndex),Ae.lastIndex>0&&(!Ae.multiline||Ae.multiline&&no(p,Ae.lastIndex-1)!==` -`)&&(z="(?: "+z+")",nA=" "+nA,X++),oA=new RegExp("^(?:"+z+")",O)),el&&(oA=new RegExp("^"+z+"$(?!\\s)",O)),ld&&(G=Ae.lastIndex),x=po(Al,N?oA:Ae,nA),N?x?(x.input=yE(x.input,X),x[0]=yE(x[0],X),x.index=Ae.lastIndex,Ae.lastIndex+=x[0].length):Ae.lastIndex=0:ld&&x&&(Ae.lastIndex=Ae.global?x.index+x[0].length:G),el&&x&&x.length>1&&po(sh,x[0],oA,function(){for(tA=1;tA=wA?q?"":void 0:(G=uI(tA,uA))<55296||G>56319||uA+1===wA||(x=uI(tA,uA+1))<56320||x>57343?q?ud(tA,uA):G:q?Fa(tA,uA,uA+2):x-56320+(G-55296<<10)+65536}},Oa={charAt:cC(!0)}.charAt,Ir=function(q,L,oA){return L+(oA?Oa(q,L).length:1)},Ed=TypeError,Nu=function(q,L){var oA=q.exec;if(wo(oA)){var G=po(oA,q,L);return G!==null&&Dn(G),G}if(Cs(q)==="RegExp")return po(lI,q,L);throw Ed("RegExp#exec called on incompatible receiver")};(function(q,L,oA,G){var x=xn(q),tA=!Js(function(){var Qe={};return Qe[x]=function(){return 7},""[q](Qe)!==7}),uA=tA&&!Js(function(){var Qe=!1,p=/a/;return q==="split"&&((p={}).constructor={},p.constructor[gC]=function(){return p},p.flags="",p[x]=/./[x]),p.exec=function(){return Qe=!0,null},p[x](""),!Qe});if(!tA||!uA||oA){var wA=_n(/./[x]),Ae=L(x,""[q],function(Qe,p,h,v,N){var O=_n(Qe),z=p.exec;return z===lI||z===tl.exec?tA&&!N?{done:!0,value:wA(p,h,v)}:{done:!0,value:O(h,p,v)}:{done:!1}});PI(String.prototype,q,Ae[0]),PI(tl,x,Ae[1])}})("match",function(q,L,oA){return[function(G){var x=ng(this),tA=Zi(G)?void 0:pe(G,q);return tA?po(tA,G,x):new RegExp(G)[q](Xg(x))},function(G){var x=Dn(this),tA=Xg(G),uA=oA(L,x,tA);if(uA.done)return uA.value;if(!x.global)return Nu(x,tA);var wA=x.unicode;x.lastIndex=0;for(var Ae,Qe=[],p=0;(Ae=Nu(x,tA))!==null;){var h=Xg(Ae[0]);Qe[p]=h,h===""&&(x.lastIndex=Ir(tA,Kc(x.lastIndex),wA)),p++}return p===0?null:Qe}]});var ur=Array.isArray||function(q){return Cs(q)==="Array"},wc=TypeError,il=function(q){if(q>9007199254740991)throw wc("Maximum allowed index exceeded");return q},Lg=function(q,L,oA){var G=Wg(L);G in q?Or.f(q,G,mr(0,oA)):q[G]=oA},Fo=function(){},$g=[],za=Hs("Reflect","construct"),_l=/^\s*(?:class|function)\b/,Xr=as(_l.exec),nh=!_l.exec(Fo),js=function(q){if(!wo(q))return!1;try{return za(Fo,$g,q),!0}catch{return!1}},qI=function(q){if(!wo(q))return!1;switch(gg(q)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return nh||!!Xr(_l,ka(q))}catch{return!0}};qI.sham=!0;var Us,_c=!za||Js(function(){var q;return js(js.call)||!js(Object)||!js(function(){q=!0})||q})?qI:js,Ac=xn("species"),Er=Array,Pr=function(q,L){return new(function(oA){var G;return ur(oA)&&(G=oA.constructor,(_c(G)&&(G===Er||ur(G.prototype))||Hn(G)&&(G=G[Ac])===null)&&(G=void 0)),G===void 0?Er:G}(q))(0)},Za=xn("species"),SE=xn("isConcatSpreadable"),lC=Ia>=51||!Js(function(){var q=[];return q[SE]=!1,q.concat()[0]!==q}),rh=function(q){if(!Hn(q))return!1;var L=q[SE];return L!==void 0?!!L:ur(q)};tn({target:"Array",proto:!0,arity:1,forced:!(lC&&(Us="concat",Ia>=51||!Js(function(){var q=[];return(q.constructor={})[Za]=function(){return{foo:1}},q[Us](Boolean).foo!==1})))},{concat:function(q){var L,oA,G,x,tA,uA=nt(this),wA=Pr(uA),Ae=0;for(L=-1,G=arguments.length;L=5||Math.abs(G)>=5?(document.removeEventListener("mousemove",this.onMouseMove5px,!1),document.removeEventListener("mouseup",this.onMouseUp5px,!1),document.addEventListener("mousemove",this.onMouseMove,!1),document.addEventListener("mouseup",this.onMouseUp,!1)):lg.debug("".concat(this.logPrefix,"on Movable mouse move less than 5px"))},q.prototype.onMouseUp5px=function(){document.removeEventListener("mousemove",this.onMouseMove5px,!1),document.removeEventListener("mouseup",this.onMouseUp5px,!1)},q.prototype.onMouseMove=function(L){if(this.movable&&this.container){var oA=L.screenX-this.moveStartOfLeft,G=L.screenY-this.moveStartOfTop,x=this.originLeft+oA,tA=this.originTop+G,uA=this.movable.offsetWidth,wA=this.movable.offsetHeight,Ae=this.container.offsetWidth,Qe=this.container.offsetHeight;this.options.canExceedContainer||(x<0?x=0:x>Ae-uA&&(x=Ae-uA),tA<0?tA=0:tA>Qe-wA&&(tA=Qe-wA)),!this.options.calcPositionOnly&&this.movable&&(this.movable.style.left="".concat(x,"px"),this.movable.style.top="".concat(tA,"px")),this.emit("move",x,tA)}else lg.debug("".concat(this.logPrefix,"onMouseMove error:No 'movable' and 'container'."))},q.prototype.onMouseUp=function(){document.removeEventListener("mousemove",this.onMouseMove,!1),document.removeEventListener("mouseup",this.onMouseUp,!1),this.originLeft=0,this.originTop=0,this.moveStartOfLeft=0,this.moveStartOfTop=0},q.prototype.on=function(L,oA){var G=this.callbacksMap.get(L);G?G.push(oA):this.callbacksMap.set(L,[oA])},q.prototype.off=function(L,oA){var G=this.callbacksMap.get(L);G&&(G=G.filter(function(x){return x!=oA}),this.callbacksMap.set(L,G))},q.prototype.emit=function(L){for(var oA=[],G=1;G ").concat(L)),this.enabled=L,this.movable&&(this.movable.style.cursor=L?"move":"default",lg.debug("".concat(this.logPrefix,"setEnabled: cursor updated to '").concat(L?"move":"default","'")))},q.prototype.isEnabled=function(){return this.enabled},q}();(function(q){q[q.Both=0]="Both",q[q.Corner=1]="Corner",q[q.Edge=2]="Edge"})(ra||(ra={}));var TE="trtc-resizable-top-left-anchor",Lu="trtc-resizable-top-anchor",Uu="trtc-resizable-top-right-anchor",QI="trtc-resizable-left-anchor",al="trtc-resizable-right-anchor",Gr="trtc-resizable-bottom-left-anchor",br="trtc-resizable-bottom-anchor",Ig="trtc-resizable-bottom-right-anchor",rr={resizeAnchor:{position:"absolute",width:"".concat(8,"px"),height:"".concat(8,"px"),border:"1px solid #3D7EFD",backgroundColor:"#FFFFFF"},topLeftAnchor:{top:"-".concat(4,"px"),left:"-".concat(4,"px"),cursor:"nw-resize"},topAnchor:{top:"-".concat(4,"px"),left:"calc(50% - ".concat(4,"px)"),cursor:"n-resize"},topRightAnchor:{top:"-".concat(4,"px"),right:"-".concat(4,"px"),cursor:"ne-resize"},leftAnchor:{top:"calc(50% - ".concat(4,"px)"),left:"-".concat(4,"px"),cursor:"w-resize"},rightAnchor:{top:"calc(50% - ".concat(4,"px)"),right:"-".concat(4,"px"),cursor:"e-resize"},bottomLeftAnchor:{bottom:"-".concat(4,"px"),left:"-".concat(4,"px"),cursor:"sw-resize"},bottomAnchor:{bottom:"-".concat(4,"px"),left:"calc(50% - ".concat(4,"px)"),cursor:"s-resize"},bottomRightAnchor:{bottom:"-".concat(4,"px"),right:"-".concat(4,"px"),cursor:"se-resize"}};function vr(q,L){for(var oA in L)q.style[oA]=L[oA]}var ic=function(){function q(L,oA,G){G===void 0&&(G={keepRatio:!1,stopPropagation:!1,anchorMode:ra.Both,canExceedContainer:!1}),this.logPrefix="[Resizable]",this.container=null,this.options={keepRatio:!1,stopPropagation:!1,anchorMode:ra.Both,canExceedContainer:!1},this.callbacksMap=new Map,this.topLeftAnchor=null,this.topAnchor=null,this.topRightAnchor=null,this.leftAnchor=null,this.rightAnchor=null,this.bottomLeftAnchor=null,this.bottomAnchor=null,this.bottomRightAnchor=null,this.currentAnchor=null,this.resizeStartLeft=0,this.resizeStartTop=0,this.originLeft=0,this.originTop=0,this.originWidth=0,this.originHeight=0,this.resizeTarget=L,this.container=oA||document.body,this.options={keepRatio:!!G.keepRatio||!1,stopPropagation:!!G.stopPropagation||!1,anchorMode:G.anchorMode||ra.Both,canExceedContainer:!!G.canExceedContainer||!1},this.mousedown=this.mousedown.bind(this),this.mousemove=this.mousemove.bind(this),this.mouseup=this.mouseup.bind(this),this.currentAnchor=null,this.createResizeAnchor(),this.resizeTarget.classList.add("trtc-resizable"),this.resizeTarget.style.position="absolute",this.resizeTarget.style.border="1px solid #3D7EFD",this.resizeTarget.style.boxSizing="border-box",this.initResizeEvent()}return q.prototype.createResizeAnchor=function(){var L,oA,G,x,tA,uA,wA,Ae,Qe=document.createElement("div");Qe.className="trtc-resizable-resize-anchor ".concat(TE),vr(Qe,Object.assign({},rr.resizeAnchor,rr.topLeftAnchor)),this.topLeftAnchor=Qe;var p=document.createElement("div");p.className="trtc-resizable-resize-anchor ".concat(Lu),vr(p,Object.assign({},rr.resizeAnchor,rr.topAnchor)),this.topAnchor=p;var h=document.createElement("div");h.className="trtc-resizable-resize-anchor ".concat(Uu),vr(h,Object.assign({},rr.resizeAnchor,rr.topRightAnchor)),this.topRightAnchor=h;var v=document.createElement("div");v.className="trtc-resizable-resize-anchor ".concat(QI),vr(v,Object.assign({},rr.resizeAnchor,rr.leftAnchor)),this.leftAnchor=v;var N=document.createElement("div");N.className="trtc-resizable-resize-anchor ".concat(al),vr(N,Object.assign({},rr.resizeAnchor,rr.rightAnchor)),this.rightAnchor=N;var O=document.createElement("div");O.className="trtc-resizable-resize-anchor ".concat(Gr),vr(O,Object.assign({},rr.resizeAnchor,rr.bottomLeftAnchor)),this.bottomLeftAnchor=O;var z=document.createElement("div");z.className="trtc-resizable-resize-anchor ".concat(br),vr(z,Object.assign({},rr.resizeAnchor,rr.bottomAnchor)),this.bottomAnchor=z;var X=document.createElement("div");X.className="trtc-resizable-resize-anchor ".concat(Ig),vr(X,Object.assign({},rr.resizeAnchor,rr.bottomRightAnchor)),this.bottomRightAnchor=X,this.options.anchorMode!==ra.Both&&this.options.anchorMode!==ra.Edge||((L=this.resizeTarget)===null||L===void 0||L.appendChild(p),(oA=this.resizeTarget)===null||oA===void 0||oA.appendChild(v),(G=this.resizeTarget)===null||G===void 0||G.appendChild(N),(x=this.resizeTarget)===null||x===void 0||x.appendChild(z)),this.options.anchorMode!==ra.Both&&this.options.anchorMode!==ra.Corner||((tA=this.resizeTarget)===null||tA===void 0||tA.appendChild(Qe),(uA=this.resizeTarget)===null||uA===void 0||uA.appendChild(h),(wA=this.resizeTarget)===null||wA===void 0||wA.appendChild(O),(Ae=this.resizeTarget)===null||Ae===void 0||Ae.appendChild(X))},q.prototype.initResizeEvent=function(){var L,oA,G,x,tA,uA,wA,Ae;(L=this.topLeftAnchor)===null||L===void 0||L.addEventListener("mousedown",this.mousedown,!1),(oA=this.topAnchor)===null||oA===void 0||oA.addEventListener("mousedown",this.mousedown,!1),(G=this.topRightAnchor)===null||G===void 0||G.addEventListener("mousedown",this.mousedown,!1),(x=this.leftAnchor)===null||x===void 0||x.addEventListener("mousedown",this.mousedown,!1),(tA=this.rightAnchor)===null||tA===void 0||tA.addEventListener("mousedown",this.mousedown,!1),(uA=this.bottomLeftAnchor)===null||uA===void 0||uA.addEventListener("mousedown",this.mousedown,!1),(wA=this.bottomAnchor)===null||wA===void 0||wA.addEventListener("mousedown",this.mousedown,!1),(Ae=this.bottomRightAnchor)===null||Ae===void 0||Ae.addEventListener("mousedown",this.mousedown,!1)},q.prototype.mousedown=function(L){if(L.button===0){if(L.preventDefault(),this.options.stopPropagation&&L.stopPropagation(),this.currentAnchor=L.target,this.resizeStartLeft=L.screenX,this.resizeStartTop=L.screenY,document.defaultView&&this.resizeTarget){var oA=document.defaultView.getComputedStyle(this.resizeTarget);this.originTop=window.parseInt(oA.top),this.originLeft=window.parseInt(oA.left),this.originWidth=this.resizeTarget.offsetWidth,this.originHeight=this.resizeTarget.offsetHeight,lg.debug("resize origin:",this.originTop,this.originLeft,this.originWidth,this.originHeight)}else lg.debug("".concat(this.logPrefix,"mouseDown 'resizeTarget' is null"));document.addEventListener("mousemove",this.mousemove,!1),document.addEventListener("mouseup",this.mouseup,!1)}},q.prototype.mousemove=function(L){if(this.container&&this.resizeTarget&&this.currentAnchor){var oA,G=this.currentAnchor.classList[1],x=this.originLeft,tA=this.originTop,uA=this.originWidth,wA=this.originHeight;switch(G){case TE:tA=(oA=this._resizeTop(L)).top,wA=oA.height,x=(oA=this._resizeLeft(L)).left,uA=oA.width,this.options.keepRatio&&(uA/this.originWidththis.container.offsetWidth-this.originLeft&&(uA=this.container.offsetWidth-this.originLeft,wA=this.originHeight*uA/this.originWidth,tA=this.originTop+this.originHeight-wA));break;case Uu:tA=(oA=this._resizeTop(L)).top,wA=oA.height,uA=this._resizeRight(L),this.options.keepRatio&&(uA/this.originWidththis.container.offsetHeight-this.originTop&&(wA=this.container.offsetHeight-this.originTop,uA=this.originWidth*wA/this.originHeight,x=this.originLeft+this.originWidth-uA));break;case al:uA=this._resizeRight(L),this.options.keepRatio&&((wA=uA*this.originHeight/this.originWidth)<20?uA=(wA=20)*this.originWidth/this.originHeight:!this.options.canExceedContainer&&wA>this.container.offsetHeight-this.originTop&&(uA=(wA=this.container.offsetHeight-this.originTop)*this.originWidth/this.originHeight));break;case Gr:wA=this._resizeBottom(L),x=(oA=this._resizeLeft(L)).left,uA=oA.width,this.options.keepRatio&&(uA/this.originWidththis.container.offsetWidth-this.originLeft&&(wA=(uA=this.container.offsetWidth-this.originLeft)*this.originHeight/this.originWidth));break;case Ig:wA=this._resizeBottom(L),uA=this._resizeRight(L),this.options.keepRatio&&(uA/this.originWidththis.originLeft+this.originWidth-20&&(G=this.originLeft+this.originWidth-20,x=20),{left:G,width:x}},q.prototype._resizeTop=function(L){var oA=L.screenY-this.resizeStartTop,G=this.originTop+oA,x=this.originHeight-oA;return!this.options.canExceedContainer&&G<0?(G=0,x=this.originHeight+this.originTop):G>this.originTop+this.originHeight-20&&(G=this.originTop+this.originHeight-20,x=20),{top:G,height:x}},q.prototype._resizeRight=function(L){if(!this.container)return lg.debug("".concat(this.logPrefix,"_resizeRight error. No container:"),this.container),0;var oA=L.screenX-this.resizeStartLeft,G=this.originWidth+oA;return G<20?G=20:!this.options.canExceedContainer&&G>this.container.offsetWidth-this.originLeft&&(G=this.container.offsetWidth-this.originLeft),G},q.prototype._resizeBottom=function(L){if(!this.container)return lg.debug("".concat(this.logPrefix,"_resizeBottom error. No container:"),this.container),0;var oA=L.screenY-this.resizeStartTop,G=this.originHeight+oA;return G<20?G=20:!this.options.canExceedContainer&&G>this.container.offsetHeight-this.originTop&&(G=this.container.offsetHeight-this.originTop),G},q.prototype.mouseup=function(){document.removeEventListener("mousemove",this.mousemove,!1),document.removeEventListener("mouseup",this.mouseup,!1),this.currentAnchor=null,this.resizeStartLeft=0,this.resizeStartTop=0,this.originLeft=0,this.originTop=0,this.originWidth=0,this.originHeight=0},q.prototype.on=function(L,oA){var G=this.callbacksMap.get(L);G?G.push(oA):this.callbacksMap.set(L,[oA])},q.prototype.off=function(L,oA){var G=this.callbacksMap.get(L);G&&(G=G.filter(function(x){return x!=oA}),this.callbacksMap.set(L,G))},q.prototype.emit=function(L){for(var oA=[],G=1;Gx?G:x,this.previewWidth=this.mixingVideoWidth*this.previewScale,this.previewHeight=this.mixingVideoHeight*this.previewScale,this.previewLeft=(L-this.previewWidth)/2,this.previewTop=(oA-this.previewHeight)/2}else console.debug("".concat(this.logPrefix,"calcPreviewScale failed, no HTML element to display"))},q.prototype.updateOverlay=function(){if(this.moveAndResizeOverlay){var L=void 0,oA=void 0,G=void 0,x=void 0;if(this.selectedMediaIndex>=0){var tA=this.mediaList[this.selectedMediaIndex],uA={left:tA.rect.left*this.previewScale,top:tA.rect.top*this.previewScale,right:tA.rect.right*this.previewScale,bottom:tA.rect.bottom*this.previewScale};L="".concat(uA.left+this.previewLeft,"px"),oA="".concat(uA.top+this.previewTop,"px"),G="".concat(uA.right-uA.left,"px"),x="".concat(uA.bottom-uA.top,"px");var wA=tA.interaction||{},Ae=wA.showBorder!==!1,Qe=wA.showResizeAnchors!==!1,p=wA.draggable!==!1,h=wA.canExceedCanvas!==!1;this.logger.debug("".concat(this.logPrefix,"updateOverlay: interaction config -"),{showBorder:Ae,showResizeAnchors:Qe,draggable:p,canExceedCanvas:h}),this.updateCanExceedContainer(h),this.moveAndResizeOverlay.style.display="block",this.moveAndResizeOverlay.style.border=Ae?"1px solid #3D7EFD":"none",this.resizableHandler&&this.resizableHandler.setVisible(Qe),this.movableHandler&&(this.logger.debug("".concat(this.logPrefix,"updateOverlay: setting movableHandler.setEnabled(").concat(p,")")),this.movableHandler.setEnabled(p))}else L="".concat(this.previewLeft,"px"),oA="".concat(this.previewTop,"px"),G="0px",x="0px",this.moveAndResizeOverlay.style.display="none";this.moveAndResizeOverlay.style.left=L,this.moveAndResizeOverlay.style.top=oA,this.moveAndResizeOverlay.style.width=G,this.moveAndResizeOverlay.style.height=x}},q.prototype.onMove=function(L,oA){var G;console.debug("".concat(this.logPrefix,"onMove: ").concat(L," ").concat(oA));var x=this.mediaList[this.selectedMediaIndex];if(x&&this.moveAndResizeOverlay){var tA={left:L-this.previewLeft,top:oA-this.previewTop,right:L-this.previewLeft+this.moveAndResizeOverlay.offsetWidth,bottom:oA-this.previewTop+this.moveAndResizeOverlay.offsetHeight};this.doAdsorption(tA);var uA={left:Math.round(tA.left/this.previewScale),top:Math.round(tA.top/this.previewScale),right:Math.round(tA.right/this.previewScale),bottom:Math.round(tA.bottom/this.previewScale)};(G=this.eventEmitter)===null||G===void 0||G.emit("onSourceMoved",rA({},x),uA)}else console.debug("".concat(this.logPrefix,"onMove no selected media"))},q.prototype.doAdsorption=function(L){var oA=this.BOUNDARY_ADSORPTION_THRESHOLD;Math.abs(L.left)Qe&&(Qe=h,Ae=L[p])}return Ae},q.prototype.emitOnSelect=function(L){var oA;if(L){for(var G=this.mediaList.length,x=0;x=p.rect.left&&wA<=p.rect.right&&Ae>=p.rect.top&&Ae<=p.rect.bottom&&((oA=p.interaction)===null||oA===void 0?void 0:oA.selectable)!==!1&&(this.clickedMediaSources.push(p),this.mediaList[this.selectedMediaIndex]&&p.id===this.mediaList[this.selectedMediaIndex].id&&(this.oldSelectedIndex=this.clickedMediaSources.length-1))}this.mousedownLeft=L.screenX,this.mousedownTop=L.screenY}this.clickedMediaSources.length>0?this.eventButton===2&&this.oldSelectedIndex===-1?(this.newSelected=this.getMaxZOrderMedia(this.clickedMediaSources),console.debug("".concat(this.logPrefix,"onContainerMousedown find clicked media source:"),this.newSelected),this.emitOnSelect(this.newSelected),this.clickedMediaSources.splice(0,this.clickedMediaSources.length)):(document.addEventListener("mousemove",this.onContainerMousemove,!1),document.addEventListener("mouseup",this.onContainerMouseup,!1)):(this.newSelected=null,console.debug("".concat(this.logPrefix,"onContainerMousedown find clicked media source:"),this.newSelected),this.emitOnSelect(null),this.mousedownLeft=null,this.mousedownTop=null,this.eventButton=null)}},q.prototype.onContainerMousemove=function(L){var oA;if(L.target&&this.container&&this.mousedownLeft!==null&&this.mousedownTop!==null){var G=L.screenX-this.mousedownLeft,x=L.screenY-this.mousedownTop;(Math.abs(G)>=5||Math.abs(x)>=5)&&(this.oldSelectedIndex>=0?(console.debug("".concat(this.logPrefix,"onContainerMousemove move or resize old selected media source, clear data:"),this.clickedMediaSources,this.oldSelectedIndex),this.clickedMediaSources.splice(0,this.clickedMediaSources.length),this.oldSelectedIndex=-1):this.clickedMediaSources.length>0&&(this.newSelected=this.getMaxZOrderMedia(this.clickedMediaSources),console.debug("".concat(this.logPrefix,"onContainerMousemove find clicked media source:"),this.newSelected),this.emitOnSelect(this.newSelected),this.clickedMediaSources.splice(0,this.clickedMediaSources.length),(oA=this.moveAndResizeOverlay)===null||oA===void 0||oA.dispatchEvent(new MouseEvent("mousedown",{screenX:this.mousedownLeft,screenY:this.mousedownTop,button:this.eventButton}))))}},q.prototype.onContainerMouseup=function(L){if(document.removeEventListener("mousemove",this.onContainerMousemove,!1),document.removeEventListener("mouseup",this.onContainerMouseup,!1),console.debug("".concat(this.logPrefix,"onContainerMouseup data:"),this.clickedMediaSources,this.oldSelectedIndex),L.target&&this.container){if(this.clickedMediaSources.length>0)if(this.oldSelectedIndex>=0){if(this.eventButton===0){var oA=(this.oldSelectedIndex+1)%this.clickedMediaSources.length;this.newSelected=this.clickedMediaSources[oA],console.debug("".concat(this.logPrefix,"onContainerMouseup find clicked media source:"),this.newSelected),this.emitOnSelect(this.newSelected)}}else this.newSelected=this.getMaxZOrderMedia(this.clickedMediaSources),console.debug("".concat(this.logPrefix,"onContainerMouseup find clicked media source:"),this.newSelected),this.emitOnSelect(this.newSelected)}else console.debug("".concat(this.logPrefix,"onContainerMouseup click outside of mixing video image")),this.emitOnSelect(null);this.mousedownLeft=null,this.mousedownTop=null,this.clickedMediaSources.splice(0,this.clickedMediaSources.length),this.oldSelectedIndex=-1,this.newSelected=null,this.eventButton=null},q.prototype.onRightButtonClicked=function(L){var oA;console.debug("".concat(this.logPrefix,"onRightButtonClicked:"),L.target,L.currentTarget,L.buttons),L.preventDefault(),(oA=this.eventEmitter)===null||oA===void 0||oA.emit("onRightButtonClicked",rA({},this.mediaList[this.selectedMediaIndex]))},q}(),Ll=function(){function q(L){if(this.logPrefix="[TRTCMediaMixingManager]",this.eventEmitter=new qe,this.publishParams={videoEncoderParams:{videoResolution:r.TRTCVideoResolution.TRTCVideoResolution_1280_720,resMode:r.TRTCVideoResolutionMode.TRTCVideoResolutionModeLandscape,videoFps:15,videoBitrate:1800},canvasColor:0},this.mediaMixingDesigner=null,this.sourceList=[],this.trtcSourceMap=new Map,this.mixVideoTrack=null,this.selectedSource=null,this.view=null,this.screensWithSystemAudio=new Set,q.mediaMixingManager)return q.mediaMixingManager;q.mediaMixingManager=this,this.logger=L.logger,this.trtc=L.trtc,this.trtcCloud=L.trtcCloud,this.onSourceSelected=this.onSourceSelected.bind(this),this.onSourceMoved=this.onSourceMoved.bind(this),this.onSourceResized=this.onSourceResized.bind(this),this.onRightButtonClicked=this.onRightButtonClicked.bind(this)}return q.prototype.destroy=function(){return lA(this,void 0,Promise,function(){var L,oA,G,x,tA;return cA(this,function(uA){switch(uA.label){case 0:this.view=null,uA.label=1;case 1:return uA.trys.push([1,3,,4]),[4,this.trtc.stopPlugin("VideoMixer")];case 2:return uA.sent(),[3,4];case 3:return L=uA.sent(),this.logger.error("".concat(this.logPrefix," destroy and stopPlugin error:"),L),[3,4];case 4:if(!(this.screensWithSystemAudio.size>0))return[3,12];uA.label=5;case 5:uA.trys.push([5,10,,11]),oA=0,G=Array.from(this.screensWithSystemAudio),uA.label=6;case 6:return oA1){var Qe=[];this.queue=this.queue.filter(function(p,h){return h===0||p.functionName!==x||(Qe.push(p),!1)}),Qe.forEach(function(p){p.reject(new Error("aborted by newer task"))})}this.queue.push(wA)}return this.isRunning||this.callNext(),Ae},q.prototype.shift=function(){return this.queue.shift()},q.prototype.callNext=function(){var L=this;if(!this.isRunning&&this.length!==0){var oA=this.queue[0],G=oA.fn,x=oA.args,tA=oA.context,uA=oA.resolve,wA=oA.reject;this.isRunning=!0,G.apply(tA,x).then(uA,wA).finally(function(){L.isRunning=!1,L.shift(),L.callNext()})}},q}(),pI=new WeakMap,ZI=new WeakMap,Ca=new WeakMap;function gl(q,L){return L===void 0&&(L={}),function(oA,G,x){var tA=x.value,uA=L.deduplicate,wA=uA!==void 0&&uA;return x.value=function(){for(var Ae=[],Qe=0;Qe0;if(L&&!this.isMessageListenerRegistered)return this.trtc.on(F.default.EVENT.REALTIME_TRANSCRIBER_MESSAGE,this.handleMessageEvent),void(this.isMessageListenerRegistered=!0);!L&&this.isMessageListenerRegistered&&(this.trtc.off(F.default.EVENT.REALTIME_TRANSCRIBER_MESSAGE,this.handleMessageEvent),this.isMessageListenerRegistered=!1)},q.prototype.log=function(){for(var L,oA,G=[],x=0;x0&&clearTimeout($I),$I=window.setTimeout(function(){GE.apply(q,L),$I=-1},xr)}));var Ou=new Map,CC=function(q){function L(G){G===void 0&&(G={});var x=q.call(this)||this;x._version="",x._frameWorkType=30,x._component=0,x._language=0,x._networkProxy={},x._localView=null,x._autoRecvAudio=!0,x._autoRecvVideo=!1,x._localTestView=null,x._isVideoPublish=!0,x._localRenderParams={rotation:r.TRTCVideoRotation.TRTCVideoRotation0,fillMode:r.TRTCVideoFillMode.TRTCVideoFillMode_Fill,mirrorType:r.TRTCVideoMirrorType.TRTCVideoMirrorType_Auto},x._encoderMirror=void 0,x._videoProfile={},x._isAudioPublish=!0,x._audioMuteType=!1,x._audioProfile=F.default.TYPE.AUDIO_PROFILE_STANDARD,x._captureVolume=100,x._playoutVolume=100,x._isSharingScreen=!1,x._remoteStreamConfig=new Map,x._remoteStreamMap=new Map,x._cameraList=[],x._microphoneList=[],x._speakerList=[],x._currentCamera={},x._currentMicrophone={},x._currentSpeaker={},x._currentCameraId="",x._currentMicrophoneId="",x._currentSpeakerId="",x._screenShareParams={option:{}},x._isMobile=KI,x._isFrontCamera=!0,x._cameraVideoTrack=null,x._smallStreamVideoProfile=void 0,x._qosPreference=void 0,x._defaultVideoProfile={width:640,height:480,frameRate:15,bitrate:900},x._defaultScreenProfile={width:1920,height:1080,frameRate:15,bitrate:1500},x._defaultSmallVideoProfile={width:160,height:120,frameRate:15,bitrate:200},x._isVirtualBackground=!1,x._isTestVirtualBackground=!1,x._isBeautyEnabled=!1,x._isTestBeautyEnabled=!1,x._remoteStatisticsUserIdList=[],x._hasJoinedRoom=!1,x._isExitingRoom=!1,x._version=dC;var tA=G.frameWorkType,uA=tA===void 0?30:tA,wA=G.component,Ae=wA===void 0?0:wA,Qe=G.language,p=Qe===void 0?0:Qe;return x._frameWorkType=uA,x._component=Ae,x._language=p,x._trtc=F.default.create({enableSEI:L.enableSEI,assetsPath:L.assetsPath,enableVolumeControlInIOS:!0,plugins:[j.default,u.LEBPlayer,w.RealtimeTranscriber]}),x._testTrtc=F.default.create(),x._log=F.default._loggerManager,x.logger=new tc(XI,{seq:Fu++}),x._echoCancellation=void 0,x._noiseSuppression=void 0,x._autoGainControl=void 0,x._addTRTCEvents(),x.handleDeviceChange=x.handleDeviceChange.bind(x),Ou.set(x,{fn:x.handleDeviceChange,self:x}),x}var oA;return function(G,x){if(typeof x!="function"&&x!==null)throw new TypeError("Class extends value "+String(x)+" is not a constructor or null");function tA(){this.constructor=G}IA(G,x),G.prototype=x===null?Object.create(x):(tA.prototype=x.prototype,new tA)}(L,q),L.getPlugin=function(G){return G==="VirtualBackground"?B.VirtualBackground:G==="BasicBeauty"?f.BasicBeauty:G==="VideoMixer"?j.default:null},L.getTRTCShareInstance=function(G){return L.shareInstance||(L.shareInstance=new L(G)),L.shareInstance},L.setLogLevel=function(G,x){var tA,uA=((tA={})[r.TRTCLogLevel.TRTCLogLevelVerbose]=0,tA[r.TRTCLogLevel.TRTCLogLevelDebug]=1,tA[r.TRTCLogLevel.TRTCLogLevelInfo]=2,tA[r.TRTCLogLevel.TRTCLogLevelWarn]=3,tA[r.TRTCLogLevel.TRTCLogLevelError]=4,tA[r.TRTCLogLevel.TRTCLogLevelFatal]=4,tA[r.TRTCLogLevel.TRTCLogLevelNone]=5,tA),wA=uA[G];ds(wA)&&(wA=uA[r.TRTCLogLevel.TRTCLogLevelInfo]);var Ae=!Pi(x)||x;F.default.setLogLevel(wA,Ae)},L.destroyTRTCShareInstance=function(){L.shareInstance&&(L.shareInstance._destroy(),L.shareInstance=null),Array.from(L.subCloudMap.keys()).forEach(function(G){return G._destroy()})},L.callExperimentalAPI=function(G){console.log("static ".concat(Ut,".callExperimentalAPI"),G);var x=Rs(G);if(x!==G){var tA=x.api,uA=x.params;if(tA&&uA)try{switch(tA){case"enableSEI":L.enableSEI=uA.enable;break;case"setAssetsPath":L.assetsPath=uA.assetsPath}}catch(wA){throw wA}}},L.prototype.createSubCloud=function(){if(this!==L.shareInstance)return null;var G=new L;return this._inheritPropertiesToSubCloud(G),this._inheritEventsToSubCloud(G),L.subCloudMap.set(G,G),G},L.prototype.destroy=function(){this!==L.shareInstance?(L.subCloudMap.get(this)&&L.subCloudMap.delete(this),this._destroy()):L.destroyTRTCShareInstance()},L.prototype._destroy=function(){Ou.delete(this),this.removeAllListeners(),this._trtc.off("*"),this._trtc.destroy(),this._trtc=null,this._testTrtc.off("*"),this._testTrtc.destroy(),this._testTrtc=null},L.prototype.getSDKVersion=function(){return this._version||""},L.prototype.enterRoom=function(G,x){return lA(this,void 0,Promise,function(){var tA,uA,wA,Ae,Qe,p,h,v,N,O,z,X,nA,DA,GA,VA,ie,Ee;return cA(this,function(He){switch(He.label){case 0:if(tA=G.sdkAppId,uA=G.userId,wA=G.userSig,Ae=G.roomId,Qe=G.strRoomId,p=G.role,h=G.privateMapKey,v=G.businessInfo,N=G.enableAutoPlayDialog,O=G.proxy,z=G.streamId,X=G.userDefineRecordId,this.logger.update({sdkAppId:tA,userId:uA}),this.logger.info("".concat(Ut,".enterRoom with params: "),G,x),O&&(this._networkProxy=O),!(tA&&uA&&wA))return[3,5];He.label=1;case 1:return He.trys.push([1,3,,4]),nA={sdkAppId:tA,userId:uA,userSig:wA,roomId:Ae,strRoomId:Qe,role:yo[p],scene:mA[x],autoReceiveAudio:this._autoRecvAudio,autoReceiveVideo:this._autoRecvVideo,frameWorkType:this._frameWorkType,component:this._component,language:this._language},nA=h?rA(rA({},nA),{privateMapKey:h}):nA,nA=v?rA(rA({},nA),{businessInfo:v}):nA,DA=N||this._enableAutoPlayDialog,nA=Pi(DA)?rA(rA({},nA),{enableAutoPlayDialog:DA}):nA,nA=this._networkProxy?rA(rA({},nA),{proxy:this._networkProxy}):nA,nA=z?rA(rA({},nA),{streamId:z}):nA,nA=X?rA(rA({},nA),{userDefineRecordId:X}):nA,nA=this._latencyLevel!==void 0?rA(rA({},nA),{latencyLevel:this._latencyLevel}):nA,GA=Br(),[4,this._trtc.enterRoom(nA)];case 2:return He.sent(),this._hasJoinedRoom=!0,VA=Br()-GA,this.emit("onEnterRoom",VA),[3,4];case 3:return ie=He.sent(),Ee=(Ee=this._transformTRTCErrorCode(ie,"enterRoom"))<0?Ee:-1,this.emit("onEnterRoom",Ee),this._callFunctionErrorManage(ie,"enterRoom"),[3,4];case 4:return[3,6];case 5:this._emitError(hI),He.label=6;case 6:return[2]}})})},L.prototype.exitRoom=function(){return lA(this,void 0,Promise,function(){var G;return cA(this,function(x){switch(x.label){case 0:return x.trys.push([0,2,,3]),this.logger.info("".concat(Ut,".exitRoom")),this._isExitingRoom=!0,this._isSharingScreen&&this.stopScreenShare(),this.resetTRTCCloud(),this.stopLocalPreview(),this.stopLocalAudio(),[4,this._trtc.exitRoom()];case 1:return x.sent(),this._hasJoinedRoom=!1,this._isExitingRoom=!1,this._isVideoPublish=!0,this._isAudioPublish=!0,this.emit("onExitRoom",sl.exitRoom),[3,3];case 2:return G=x.sent(),this._callFunctionErrorManage(G,"exitRoom"),[3,3];case 3:return[2]}})})},L.prototype.switchRole=function(G){return lA(this,void 0,void 0,function(){var x;return cA(this,function(tA){switch(tA.label){case 0:this.logger.info("".concat(Ut,".switchRole with param: "),G),tA.label=1;case 1:return tA.trys.push([1,3,,4]),[4,this._trtc.switchRole(yo[G])];case 2:return tA.sent(),this.emit("onSwitchRole",0,"switch role success, role = ".concat(G,", ").concat(yo[G])),[3,4];case 3:return x=tA.sent(),this.emit("onSwitchRole",x?.getCode(),x.message),[3,4];case 4:return[2]}})})},L.prototype.setDefaultStreamRecvMode=function(G,x){return lA(this,void 0,void 0,function(){return cA(this,function(tA){return this.logger.info("".concat(Ut,".setDefaultStreamRecvMode with param: "),{autoRecvAudio:G,autoRecvVideo:x}),Pi(G)&&(this._autoRecvAudio=G),Pi(x)&&(this._autoRecvVideo=x),[2]})})},L.prototype.resetTRTCCloud=function(){this._setIsAudioPublish(!0),this._setAudioMuteType(!1),this._echoCancellation=void 0,this._noiseSuppression=void 0,this._autoGainControl=void 0,this._isVirtualBackground=!1,this._isTestVirtualBackground=!1,this._remoteStatisticsUserIdList=[],this._resetBeautyStyle()},L.prototype._updateLocalVideo=function(){return lA(this,void 0,void 0,function(){var G;return cA(this,function(x){switch(x.label){case 0:return x.trys.push([0,2,,3]),[4,this._trtc.updateLocalVideo(this._generateLocalVideoData())];case 1:return x.sent(),[3,3];case 2:if((G=x.sent()).code!==F.default.ERROR_CODE.OPERATION_ABORT)throw G;return[3,3];case 3:return[2]}})})},L.prototype._updateLocalTestVideo=function(){return lA(this,void 0,void 0,function(){var G;return cA(this,function(x){switch(x.label){case 0:return x.trys.push([0,2,,3]),[4,this._testTrtc.updateLocalVideo(this._generateLocalTestVideoData())];case 1:return x.sent(),[3,3];case 2:if((G=x.sent()).code!==F.default.ERROR_CODE.OPERATION_ABORT)throw G;return[3,3];case 3:return[2]}})})},L.prototype._updateLocalScreen=function(){return lA(this,void 0,void 0,function(){var G;return cA(this,function(x){switch(x.label){case 0:return x.trys.push([0,2,,3]),[4,this._trtc.updateScreenShare(this._getScreenShareParams())];case 1:return x.sent(),[3,3];case 2:if((G=x.sent()).code!==F.default.ERROR_CODE.OPERATION_ABORT)throw G;return[3,3];case 3:return[2]}})})},L.prototype._updateRemoteVideo=function(G,x){return lA(this,void 0,void 0,function(){var tA;return cA(this,function(uA){switch(uA.label){case 0:if(!this._hasJoinedRoom||this._isExitingRoom)return[2];uA.label=1;case 1:return uA.trys.push([1,3,,4]),[4,this._trtc.updateRemoteVideo(this._generateRemoteVideoData(G,x))];case 2:return uA.sent(),[3,4];case 3:if((tA=uA.sent()).code!==F.default.ERROR_CODE.OPERATION_ABORT)throw tA;return[3,4];case 4:return[2]}})})},L.prototype.startLocalPreview=function(){for(var G=[],x=0;x9)throw new Error("beautyLevel must be between 0 and 9");if(wA<0||wA>9)throw new Error("whitenessLevel must be between 0 and 9");if(Ae<0||Ae>9)throw new Error("ruddinessLevel must be between 0 and 9");z.label=1;case 1:return z.trys.push([1,8,,9]),h=wA/9,v=Ae/9,(p=uA/9)===0&&h===0&&v===0?[4,G.stopPlugin(rn)]:[3,3];case 2:return z.sent(),Qe?this._isTestBeautyEnabled=!1:this._isBeautyEnabled=!1,[3,7];case 3:return N={beauty:p,brightness:h,ruddy:v},x?[3,5]:[4,G.startPlugin(rn,N)];case 4:return z.sent(),Qe?this._isTestBeautyEnabled=!0:this._isBeautyEnabled=!0,[3,7];case 5:return[4,G.updatePlugin(rn,N)];case 6:z.sent(),z.label=7;case 7:return[3,9];case 8:throw O=z.sent(),Qe?this.logger.error("".concat(Ut,".").concat("setTestBeautyStyle"," fail: "),O):this.logger.error("".concat(Ut,".").concat("setBeautyStyle"," fail: "),O),O;case 9:return[2]}})})},L.prototype._resetBeautyStyle=function(){return lA(this,void 0,void 0,function(){return cA(this,function(G){switch(G.label){case 0:return this._isBeautyEnabled?[4,this._trtc.stopPlugin(rn)]:[3,2];case 1:G.sent(),this._isBeautyEnabled=!1,G.label=2;case 2:return this._isTestBeautyEnabled?[4,this._testTrtc.stopPlugin(rn)]:[3,4];case 3:G.sent(),this._isTestBeautyEnabled=!1,G.label=4;case 4:return[2]}})})},L.prototype.getMicDevicesList=function(){return lA(this,void 0,Promise,function(){var G,x,tA;return cA(this,function(uA){switch(uA.label){case 0:this.logger.info("".concat(Ut,".getMicDevicesList")),uA.label=1;case 1:return uA.trys.push([1,5,,6]),[4,F.default.getMicrophoneList()];case 2:return G=uA.sent(),x=G.map(function(wA){return rA(rA({},wA),{deviceName:wA.label})}),this._microphoneList=G,JSON.stringify(this._currentMicrophone)!=="{}"?[3,4]:(this._currentMicrophone=this.getDefaultDeviceInfo(G),this._currentMicrophoneId=this._currentMicrophone.deviceId,[4,this.setCurrentMicDevice(this._currentMicrophoneId)]);case 3:uA.sent(),uA.label=4;case 4:return[2,Promise.resolve(x)];case 5:return tA=uA.sent(),this._callFunctionErrorManage(tA,"getMicDevicesList"),[2,Promise.resolve([])];case 6:return[2]}})})},L.prototype.setCurrentMicDevice=function(G){var x;return lA(this,void 0,Promise,function(){var tA;return cA(this,function(uA){switch(uA.label){case 0:this.logger.info("".concat(Ut,".setCurrentMicDevice with params: "),{micId:G}),uA.label=1;case 1:return uA.trys.push([1,4,,5]),G?(this._setCurrentMicrophoneId(G),[4,this._updateLocalAudio()]):[2,!1];case 2:return uA.sent(),[4,this._updateLocalTestAudio()];case 3:return uA.sent(),this._currentMicrophone=this._microphoneList.find(function(wA){return wA.deviceId===G})||{},[3,5];case 4:throw tA=uA.sent(),this._setCurrentMicrophoneId((x=this._currentMicrophone)===null||x===void 0?void 0:x.deviceId),this._callFunctionErrorManage(tA,"setCurrentMicDevice"),tA;case 5:return[2]}})})},L.prototype.getCurrentMicDevice=function(){this.logger.info("".concat(Ut,".getCurrentMicDevice"));var G=this._currentMicrophone,x=G.deviceId,tA=G.label,uA=G.kind,wA=G.groupId;return new Vt(x,tA,uA,tA,wA)},L.prototype.getSpeakerDevicesList=function(){return lA(this,void 0,Promise,function(){var G,x,tA;return cA(this,function(uA){switch(uA.label){case 0:this.logger.info("".concat(Ut,".getSpeakerDevicesList")),uA.label=1;case 1:return uA.trys.push([1,5,,6]),[4,F.default.getSpeakerList()];case 2:return G=uA.sent(),x=G.map(function(wA){return rA(rA({},wA),{deviceName:wA.label})}),this._speakerList=G,JSON.stringify(this._currentSpeaker)!=="{}"?[3,4]:(this._currentSpeaker=this.getDefaultDeviceInfo(G),this._currentSpeakerId=this._currentSpeaker.deviceId,[4,this.setCurrentSpeakerDevice(this._currentSpeakerId)]);case 3:uA.sent(),uA.label=4;case 4:return[2,Promise.resolve(x)];case 5:return tA=uA.sent(),this._callFunctionErrorManage(tA,"getSpeakerDevicesList"),[2,Promise.resolve([])];case 6:return[2]}})})},L.prototype.setCurrentSpeakerDevice=function(G){return lA(this,void 0,Promise,function(){var x;return cA(this,function(tA){switch(tA.label){case 0:this.logger.info("".concat(Ut,".setCurrentSpeakerDevice with params: "),{speakerId:G}),tA.label=1;case 1:return tA.trys.push([1,3,,4]),G?[4,F.default.setCurrentSpeaker(G)]:[2,!1];case 2:return tA.sent(),this._setCurrentSpeakerId(G),this._currentSpeaker=this._speakerList.find(function(uA){return uA.deviceId===G})||{},[3,4];case 3:throw x=tA.sent(),this._callFunctionErrorManage(x,"setCurrentSpeakerDevice"),x;case 4:return[2]}})})},L.prototype.getCurrentSpeakerDevice=function(){this.logger.info("".concat(Ut,".getCurrentSpeakerDevice"));var G=this._currentSpeaker,x=G.deviceId,tA=G.label,uA=G.kind,wA=G.groupId;return new Vt(x,tA,uA,tA,wA)},L.prototype.startCameraDeviceTest=function(G){return lA(this,void 0,void 0,function(){var x;return cA(this,function(tA){switch(tA.label){case 0:if(this.logger.info("".concat(Ut,".startCameraDeviceTest with params: "),G),!G)return[2];this._setLocalTestView(G),tA.label=1;case 1:return tA.trys.push([1,3,,7]),[4,this._testTrtc.startLocalVideo(this._generateLocalTestVideoData())];case 2:return tA.sent(),[3,7];case 3:return(x=tA.sent()).code!==F.default.ERROR_CODE.OPERATION_ABORT?[3,5]:[4,this._updateLocalTestVideo()];case 4:return tA.sent(),[3,6];case 5:throw this._callFunctionErrorManage(x,"startCameraDeviceTest"),x;case 6:return[3,7];case 7:return[2]}})})},L.prototype.stopCameraDeviceTest=function(){return lA(this,void 0,void 0,function(){return cA(this,function(G){switch(G.label){case 0:return this.logger.info("".concat(Ut,".stopCameraDeviceTest")),this._setLocalTestView(null),[4,this._testTrtc.stopLocalVideo()];case 1:return G.sent(),[2]}})})},L.prototype.startMicDeviceTest=function(G){return lA(this,void 0,void 0,function(){var x,tA=this;return cA(this,function(uA){switch(uA.label){case 0:this.logger.info("".concat(Ut,".startMicDeviceTest with params: "),G),uA.label=1;case 1:return uA.trys.push([1,3,,7]),[4,this._testTrtc.startLocalAudio(this._generateLocalTestAudioData())];case 2:return uA.sent(),[3,7];case 3:return(x=uA.sent()).code!==F.default.ERROR_CODE.OPERATION_ABORT?[3,5]:[4,this._updateLocalTestAudio()];case 4:return uA.sent(),[3,6];case 5:throw this._callFunctionErrorManage(x,"startMicDeviceTest"),x;case 6:return[3,7];case 7:return this._testTrtc.on(F.default.EVENT.AUDIO_VOLUME,function(wA){wA?.result.forEach(function(Ae){var Qe=Ae.userId,p=Ae.volume;Qe===""&&tA.emit("onTestMicVolume",p)})}),[4,this._testTrtc.enableAudioVolumeEvaluation(G)];case 8:return uA.sent(),[2]}})})},L.prototype.stopMicDeviceTest=function(){return lA(this,void 0,void 0,function(){return cA(this,function(G){switch(G.label){case 0:return this.logger.info("".concat(Ut,".stopMicDeviceTest")),[4,this._testTrtc.stopLocalAudio()];case 1:return G.sent(),[2]}})})},L.prototype.callExperimentalAPI=function(G){return lA(this,void 0,void 0,function(){var x,tA,uA;return cA(this,function(wA){switch(wA.label){case 0:if(this.logger.info("".concat(Ut,".callExperimentalAPI"),G),(x=Rs(G))===G)return[2];if(tA=x.api,uA=x.params,!tA||!uA)return[2];wA.label=1;case 1:switch(wA.trys.push([1,25,,26]),tA){case"setFramework":return[3,2];case"enableAudioAEC":return[3,3];case"enableAudioANS":return[3,4];case"enableAudioAGC":return[3,5];case"KeyMetricsStats":return[3,6];case"setNetworkProxy":return[3,7];case"enableVirtualBackground":return[3,8];case"enableTestVirtualBackground":return[3,10];case"enableTestBeautyStyle":return[3,12];case"setVideoEncodeParamEx":return[3,14];case"enableAutoPlayDialog":return[3,15];case"setAudienceLatencyLevel":return[3,16];case"switchPlaybackQuality":return[3,17];case"requestPictureInPicture":return[3,19];case"exitPictureInPicture":return[3,21]}return[3,23];case 2:return this._handleSetFrameWork(uA),[3,24];case 3:return this._echoCancellation=!!uA.enable,[3,24];case 4:return this._noiseSuppression=!!uA.enable,[3,24];case 5:return this._autoGainControl=!!uA.enable,[3,24];case 6:return this._handleKeyMetricsStats(uA),[3,24];case 7:return this._networkProxy=uA,[3,24];case 8:return[4,this.setVirtualBackground(uA)];case 9:return wA.sent(),[3,24];case 10:return[4,this.setTestVirtualBackground(uA)];case 11:return wA.sent(),[3,24];case 12:return[4,this.setTestBeautyStyle(uA.style,uA.beautyLevel,uA.whitenessLevel,uA.ruddinessLevel)];case 13:return wA.sent(),[3,24];case 14:return this._setVideoEncodeParamEx(uA),[3,24];case 15:return this._enableAutoPlayDialog=!!uA.enable,[3,24];case 16:return this._latencyLevel=uA.latencyLevel,[3,24];case 17:return[4,this._switchPlaybackQuality(uA)];case 18:return wA.sent(),[3,24];case 19:return[4,this._requestPictureInPicture()];case 20:return wA.sent(),[3,24];case 21:return[4,this._exitPictureInPicture()];case 22:return wA.sent(),[3,24];case 23:return[3,24];case 24:return[3,26];case 25:throw wA.sent();case 26:return[2]}})})},L.prototype._handleSetFrameWork=function(G){var x=G.frameWork,tA=G.component,uA=G.language;jr(x)&&(this._frameWorkType=x),jr(tA)&&(this._component=tA),jr(uA)&&(this._language=uA)},L.prototype._handleKeyMetricsStats=function(G){var x=G.key,tA=G.opt,uA=G.value,wA=G.version,Ae=tA===Jn;F.default._addKVStat({type:tA,key:x,value:uA,version:wA,useUV:Ae,base:100})},L.prototype._setVideoEncodeParamEx=function(G){return lA(this,void 0,void 0,function(){return cA(this,function(x){switch(x.label){case 0:switch(G.streamType){case r.TRTCVideoStreamType.TRTCVideoStreamTypeBig:return[3,1];case r.TRTCVideoStreamType.TRTCVideoStreamTypeSub:return[3,3]}return[3,5];case 1:return[4,this.setVideoEncoderParam(G)];case 2:case 4:return x.sent(),[3,6];case 3:return[4,this.setSubStreamEncoderParam(G)];case 5:return[3,6];case 6:return[2]}})})},L.prototype._switchPlaybackQuality=function(G){return lA(this,void 0,void 0,function(){var x,tA,uA,wA,Ae,Qe,p,h;return cA(this,function(v){switch(v.label){case 0:if(tA=(x=G||{}).quality,uA=x.stream_list,wA=uA===void 0?[]:uA,!tA||wA.length===0)return[2];for(Ae=null,Qe=0,p=wA;Qe1&&x[1]),height:+(x.length>2&&x[2])}},L.prototype._getTRTCVideoProfile=function(G,x){x===void 0&&(x={});var tA=x.videoWidth,uA=x.videoHeight,wA=x.videoResolution,Ae=x.videoFps,Qe=x.videoBitrate,p=x.resMode,h=x.resolutionMode,v={};switch(G){case r.TRTCVideoStreamType.TRTCVideoStreamTypeSub:v=this._defaultScreenProfile;break;case r.TRTCVideoStreamType.TRTCVideoStreamTypeSmall:v=this._defaultSmallVideoProfile;break;case r.TRTCVideoStreamType.TRTCVideoStreamTypeBig:default:v=this._defaultVideoProfile}if(ds(wA))ds(tA)||(v.width=tA),ds(uA)||(v.height=uA);else{var N=this._getTRTCResolution(wA);v.width=N.width,v.height=N.height}if(!ds(p)&&p===r.TRTCVideoResolutionMode.TRTCVideoResolutionModePortrait||!ds(h)&&h===r.TRTCVideoResolutionMode.TRTCVideoResolutionModePortrait){var O=v.height,z=v.width;v.width=O,v.height=z}return Ae&&(v.frameRate=Ae),Qe&&(v.bitrate=Qe),v},L.prototype._getTRTCStreamType=function(G){var x;return((x={})[r.TRTCVideoStreamType.TRTCVideoStreamTypeBig]=F.default.TYPE.STREAM_TYPE_MAIN,x[r.TRTCVideoStreamType.TRTCVideoStreamTypeSmall]=F.default.TYPE.STREAM_TYPE_MAIN,x[r.TRTCVideoStreamType.TRTCVideoStreamTypeSub]=F.default.TYPE.STREAM_TYPE_SUB,x)[G]},L.prototype._getTRTCFillMode=function(G){var x;return((x={})[r.TRTCVideoFillMode.TRTCVideoFillMode_Fill]=ol.COVER,x[r.TRTCVideoFillMode.TRTCVideoFillMode_Fit]=ol.CONTAIN,x)[G]},L.prototype._getTRTCCloudVideoFillMode=function(G){var x;return((x={})[ol.COVER]=r.TRTCVideoFillMode.TRTCVideoFillMode_Fill,x[ol.CONTAIN]=r.TRTCVideoFillMode.TRTCVideoFillMode_Fit,x)[G]},L.prototype._getTRTCCloudMirrorType=function(G){return G===!0?r.TRTCVideoMirrorType.TRTCVideoMirrorType_Enable:r.TRTCVideoMirrorType.TRTCVideoMirrorType_Disable},L.prototype._getLocalRenderMirror=function(G){var x;return G===r.TRTCVideoMirrorType.TRTCVideoMirrorType_Auto?!this._getIsMobile()||this._getIsFrontCamera():((x={})[r.TRTCVideoMirrorType.TRTCVideoMirrorType_Enable]=!0,x[r.TRTCVideoMirrorType.TRTCVideoMirrorType_Disable]=!1,x)[G]},L.prototype._getTRTCLocalMirror=function(G,x){var tA=this._getLocalRenderMirror(G);return ds(x)?!!tA&&"both":tA&&x?"both":tA&&!x?"view":!tA&&x?"publish":!(!tA&&!x)&&"view"},L.prototype._getTRTCRemoteMirror=function(G){var x;return((x={})[r.TRTCVideoMirrorType.TRTCVideoMirrorType_Auto]=!1,x[r.TRTCVideoMirrorType.TRTCVideoMirrorType_Enable]=!0,x[r.TRTCVideoMirrorType.TRTCVideoMirrorType_Disable]=!1,x)[G]},L.prototype._getTRTCQosPreference=function(G){var x;return((x={})[r.TRTCVideoQosPreference.TRTCVideoQosPreferenceSmooth]=F.default.TYPE.QOS_PREFERENCE_SMOOTH,x[r.TRTCVideoQosPreference.TRTCVideoQosPreferenceClear]=F.default.TYPE.QOS_PREFERENCE_CLEAR,x)[G]},L.prototype._getTRTCAudioQuality=function(G){var x;return((x={})[r.TRTCAudioQuality.TRTCAudioQualitySpeech]=F.default.TYPE.AUDIO_PROFILE_STANDARD,x[r.TRTCAudioQuality.TRTCAudioQualityDefault]=F.default.TYPE.AUDIO_PROFILE_STANDARD,x[r.TRTCAudioQuality.TRTCAudioQualityMusic]=F.default.TYPE.AUDIO_PROFILE_HIGH_STEREO,x)[G]},L.prototype._getTRTCCloudDeviceType=function(G){return{camera:r.TRTCDeviceType.TRTCDeviceTypeCamera,microphone:r.TRTCDeviceType.TRTCDeviceTypeMic,speaker:r.TRTCDeviceType.TRTCDeviceTypeSpeaker}[G]},L.prototype._getTRTCCloudDeviceState=function(G){return{add:r.TRTCDeviceState.TRTCDeviceStateAdd,remove:r.TRTCDeviceState.TRTCDeviceStateRemove,active:r.TRTCDeviceState.TRTCDeviceStateActive}[G]},L.prototype._getTRTCCloudQuality=function(G){return[r.TRTCQuality.TRTCQuality_Unknown,r.TRTCQuality.TRTCQuality_Excellent,r.TRTCQuality.TRTCQuality_Good,r.TRTCQuality.TRTCQuality_Poor,r.TRTCQuality.TRTCQuality_Bad,r.TRTCQuality.TRTCQuality_Vbad,r.TRTCQuality.TRTCQuality_Down][G]},L.prototype._generateLocalVideoData=function(){var G={view:this._getLocalView(),publish:this._getIsVideoPublish(),option:{profile:this._getVideoProfile(),small:this._getSmallStreamVideoProfile()||!1,mirror:this._getTRTCLocalMirror(this._localRenderParams.mirrorType,this._encoderMirror),fillMode:this._getTRTCFillMode(this._localRenderParams.fillMode)}};return this._cameraVideoTrack?G&&Object.assign(G.option,{videoTrack:this._cameraVideoTrack}):this._getIsMobile()?G&&Object.assign(G.option,{useFrontCamera:this._getIsFrontCamera()}):G&&Object.assign(G.option,{cameraId:this._getCurrentCameraId()}),this._getQosPreference()&&G&&Object.assign(G.option,{qosPreference:this._getQosPreference()}),G},L.prototype._generateLocalTestVideoData=function(){var G={view:this._getLocalTestView(),publish:!1,option:{profile:this._getVideoProfile(),mirror:this._getTRTCLocalMirror(this._localRenderParams.mirrorType,this._encoderMirror),fillMode:this._getTRTCFillMode(this._localRenderParams.fillMode)}};return this._getIsMobile()?G&&Object.assign(G.option,{useFrontCamera:this._getIsFrontCamera()}):G&&Object.assign(G.option,{cameraId:this._getCurrentCameraId()}),G},L.prototype._generateLocalAudioData=function(){var G={publish:this._getIsAudioPublish(),mute:this._getAudioMuteType(),muteKeepVolumeDetection:!0,option:{microphoneId:this._getCurrentMicrophoneId(),profile:this._getAudioProfile(),captureVolume:this._getCaptureVolume()}};return Pi(this._echoCancellation)&&(G.option.echoCancellation=this._echoCancellation),Pi(this._autoGainControl)&&(G.option.autoGainControl=this._autoGainControl),Pi(this._noiseSuppression)&&(G.option.noiseSuppression=this._noiseSuppression),G},L.prototype._generateLocalTestAudioData=function(){return{publish:!1,option:{microphoneId:this._getCurrentMicrophoneId(),profile:this._getAudioProfile()}}},L.prototype._generateRemoteVideoData=function(G,x){return wn(this._remoteStreamConfig.get("".concat(G,"_").concat(this._getTRTCStreamType(x))))},L.prototype._addTRTCEvents=function(){var G=this;this._trtc.on(F.default.EVENT.ERROR,function(x){x&&G.emit("onError",x.code,x.message)}),this._trtc.on(F.default.EVENT.REMOTE_USER_ENTER,function(x){x?.userId&&G.emit("onRemoteUserEnterRoom",x.userId)}),this._trtc.on(F.default.EVENT.REMOTE_USER_EXIT,function(x){x?.userId&&G.emit("onRemoteUserLeaveRoom",x.userId)}),this._trtc.on(F.default.EVENT.REMOTE_AUDIO_AVAILABLE,function(x){x?.userId&&G.emit("onUserAudioAvailable",x.userId,!0)}),this._trtc.on(F.default.EVENT.REMOTE_AUDIO_UNAVAILABLE,function(x){x?.userId&&G.emit("onUserAudioAvailable",x.userId,!1)}),this._trtc.on(F.default.EVENT.REMOTE_VIDEO_AVAILABLE,function(x){G._emitVideoAvailable(x,!0)}),this._trtc.on(F.default.EVENT.REMOTE_VIDEO_UNAVAILABLE,function(x){G._emitVideoAvailable(x,!1)}),this._trtc.on(F.default.EVENT.AUDIO_VOLUME,function(x){x?.result&&G.emit("onUserVoiceVolume",x?.result,(x?.result||[]).length)}),this._trtc.on(F.default.EVENT.KICKED_OUT,function(x){var tA={banned:sl.banned,room_disband:sl.roomDisband};jr(tA[x.reason])&&G.emit("onExitRoom",tA[x.reason])}),this._trtc.on(F.default.EVENT.NETWORK_QUALITY,function(x){var tA=x.uplinkNetworkQuality,uA=x.downlinkNetworkQuality,wA=new Ko("",G._getTRTCCloudQuality(tA)),Ae=[];G._remoteStatisticsUserIdList.length>0&&(Ae=G._remoteStatisticsUserIdList.map(function(Qe){return new Ko(Qe,G._getTRTCCloudQuality(uA))})),G.emit("onNetworkQuality",wA,Ae)}),this._trtc.on(F.default.EVENT.AUTOPLAY_FAILED,function(x){G.emit("onAutoPlayFailed",x)}),this._trtc.on(F.default.EVENT.SEI_MESSAGE,function(x){if(x.data&&typeof x.data=="object"&&x.data instanceof ArrayBuffer){for(var tA=new Uint8Array(x.data),uA="",wA=0;wA0?h.video.map(function(DA){var GA=new io;return GA.width=DA.width,GA.height=DA.height,GA.frameRate=DA.frameRate,GA.videoBitrate=DA.bitrate,GA.audioBitrate=h.audio.bitrate||0,GA.streamType=N[DA.videoType],GA}):[];if(O.length===0&&h.audio.bitrate>0){var z=new io;z.audioBitrate=h.audio.bitrate||0,O.push(z)}var X=[];v.forEach(function(DA){var GA=[],VA=DA.userId,ie=DA.audio.bitrate;if(DA.video&&DA.video.forEach(function(He){var At=new bi;At.userId=VA,At.width=He.width,At.height=He.height,At.frameRate=He.frameRate,At.videoBitrate=He.bitrate,At.audioBitrate=ie||0,At.streamType=N[He.videoType],GA.push(At)}),GA.length===0){var Ee=new bi;Ee.userId=VA,Ee.audioBitrate=ie||0,GA.push(Ee)}X.push.apply(X,GA)});var nA=new vs;nA.upLoss=wA,nA.downLoss=Ae,nA.rtt=uA,nA.sentBytes=Qe,nA.receivedBytes=p,nA.localStatisticsArray=O,nA.localStatisticsArraySize=O.length,nA.remoteStatisticsArray=X,nA.remoteStatisticsArraySize=X.length,G.emit("onStatistics",nA)}),this._trtc.on(F.default.EVENT.SCREEN_SHARE_STOPPED,function(){G.emit("onScreenCaptureStopped",0),G._clearScreenShareParams(),G._isSharingScreen=!1}),this._trtc.on(F.default.EVENT.PUBLISH_STATE_CHANGED,function(x){var tA=x.mediaType;x.state==="started"&&(tA==="audio"?G.emit("onSendFirstLocalAudioFrame"):tA==="video"?G.emit("onSendFirstLocalVideoFrame",r.TRTCVideoStreamType.TRTCVideoStreamTypeBig):tA==="screen"&&G.emit("onSendFirstLocalVideoFrame",r.TRTCVideoStreamType.TRTCVideoStreamTypeSub))}),this._trtc.on(F.default.EVENT.FIRST_VIDEO_FRAME,function(x){var tA=x.userId,uA=x.streamType,wA=x.width,Ae=x.height;G.emit("onFirstVideoFrame",tA,uA,wA,Ae)}),this._trtc.on(F.default.EVENT.AUDIO_PLAY_STATE_CHANGED,function(x){var tA=x.userId;x.state==="PLAYING"&&G.emit("onFirstAudioFrame",tA)}),this._trtc.on(F.default.EVENT.DEVICE_CHANGED,function(x){var tA=x.type,uA=x.device,wA=x.action,Ae=uA.deviceId;if(wA==="active"){switch(tA){case"camera":G._currentCameraId=Ae,G._currentCamera=uA;break;case"microphone":G._currentMicrophoneId=Ae,G._currentMicrophone=uA;break;case"speaker":G._currentSpeakerId=Ae,G._currentSpeaker=uA}G.emitOnDeviceChange(Ae,G._getTRTCCloudDeviceType(tA),G._getTRTCCloudDeviceState(wA))}}),this._trtc.on(F.default.EVENT.CUSTOM_MESSAGE,function(x){x&&G.emit("onRecvCustomCmdMsg",x.userId,x.cmdId,x.seq,x?.data)}),this._trtc.on(F.default.EVENT.CONNECTION_STATE_CHANGED,function(x){G._hasJoinedRoom&&!G._isExitingRoom&&(x.prevState==="CONNECTED"&&x.state==="DISCONNECTED"?G.emit("onConnectionLost"):x.prevState==="DISCONNECTED"&&x.state==="CONNECTING"?G.emit("onTryToReconnect"):x.prevState==="CONNECTING"&&x.state==="CONNECTED"&&G.emit("onConnectionRecovery"))}),this._trtc.on(F.default.EVENT.PICTURE_IN_PICTURE_STATE_CHANGED,function(x){G.emit("onPictureInPictureStateChanged",x)})},L.prototype._removeTRTCEvents=function(){this._trtc.off("*")},L.prototype._emitVideoAvailable=function(G,x){var tA=G.userId,uA=G.streamType;x?this._remoteStreamMap.set("".concat(tA,"_").concat(uA),!0):this._remoteStreamMap.delete("".concat(tA,"_").concat(uA)),uA===F.default.TYPE.STREAM_TYPE_SUB?tA&&this.emit("onUserSubStreamAvailable",tA,x):tA&&this.emit("onUserVideoAvailable",tA,x)},L.prototype._setLocalView=function(G){this._localView=G},L.prototype._getLocalView=function(){return this._localView},L.prototype._setIsMobile=function(G){this._isMobile=G},L.prototype._getIsMobile=function(){return this._isMobile},L.prototype._setIsFrontCamera=function(G){this._isFrontCamera=G},L.prototype._getIsFrontCamera=function(){return this._isFrontCamera},L.prototype._getSmallStreamVideoProfile=function(){return this._smallStreamVideoProfile},L.prototype._setSmallStreamVideoProfile=function(G){this._smallStreamVideoProfile=G},L.prototype._setIsVideoPublish=function(G){this._isVideoPublish=G},L.prototype._getIsVideoPublish=function(){return this._isVideoPublish},L.prototype._setVideoProfile=function(G){this._videoProfile=G},L.prototype._getVideoProfile=function(){return this._videoProfile},L.prototype._setQosPreference=function(G){this._qosPreference=G},L.prototype._getQosPreference=function(){return this._qosPreference},L.prototype._setLocalTestView=function(G){this._localTestView=G},L.prototype._getLocalTestView=function(){return this._localTestView},L.prototype._setScreenShareParams=function(G){var x=G.view,tA=G.systemAudio,uA=G.fillMode,wA=G.profile,Ae=G.videoTrack,Qe=G.qosPreference;ds(x)||(this._screenShareParams.view=x),ds(tA)||(this._screenShareParams.option.systemAudio=tA),ds(uA)||(this._screenShareParams.option.fillMode=uA),ds(wA)||(this._screenShareParams.option.profile=wA),ds(Ae)||(this._screenShareParams.option.videoTrack=Ae),ds(Qe)||(this._screenShareParams.option.qosPreference=Qe),ds(G.streamType)||(this._screenShareParams.streamType=this._getTRTCStreamType(G.streamType))},L.prototype._clearScreenShareParams=function(){var G,x,tA,uA,wA;!((G=this._screenShareParams)===null||G===void 0)&&G.view&&delete this._screenShareParams.view,!((tA=(x=this._screenShareParams)===null||x===void 0?void 0:x.option)===null||tA===void 0)&&tA.systemAudio&&delete this._screenShareParams.option.systemAudio,!((wA=(uA=this._screenShareParams)===null||uA===void 0?void 0:uA.option)===null||wA===void 0)&&wA.videoTrack&&delete this._screenShareParams.option.videoTrack},L.prototype._getScreenShareParams=function(){return this._screenShareParams},L.prototype._setIsAudioPublish=function(G){this._isAudioPublish=G},L.prototype._getIsAudioPublish=function(){return this._isAudioPublish},L.prototype._setAudioMuteType=function(G){this._audioMuteType=G},L.prototype._getAudioMuteType=function(){return this._audioMuteType},L.prototype._setAudioProfile=function(G){this._audioProfile=G},L.prototype._getAudioProfile=function(){return this._audioProfile},L.prototype._getCaptureVolume=function(){return this._captureVolume},L.prototype._setCaptureVolume=function(G){this._captureVolume=G},L.prototype._setCurrentCameraId=function(G){this._currentCameraId=G},L.prototype._getCurrentCameraId=function(){return this._currentCameraId},L.prototype._setCurrentMicrophoneId=function(G){this._currentMicrophoneId=G},L.prototype._getCurrentMicrophoneId=function(){return this._currentMicrophoneId},L.prototype._setCurrentSpeakerId=function(G){this._currentSpeakerId=G},L.prototype._getCurrentSpeakerId=function(){return this._currentSpeakerId},L.prototype._setRemoteStreamConfig=function(G,x,tA){var uA=this._remoteStreamConfig.get("".concat(G,"_").concat(this._getTRTCStreamType(x)));uA||(uA={userId:G,streamType:this._getTRTCStreamType(x),option:{mirror:this._getTRTCRemoteMirror(r.TRTCVideoMirrorType.TRTCVideoMirrorType_Disable),fillMode:this._getTRTCFillMode(r.TRTCVideoFillMode.TRTCVideoFillMode_Fit)}});var wA=tA.view,Ae=tA.mirrorType,Qe=tA.fillMode,p=tA.small;ds(wA)||(uA.view=wA),ds(Ae)||(uA.option.mirror=this._getTRTCRemoteMirror(Ae)),ds(Qe)||(uA.option.fillMode=this._getTRTCFillMode(Qe)),ds(p)||(uA.option.small=p),this._remoteStreamConfig.set("".concat(G,"_").concat(this._getTRTCStreamType(x)),uA)},L.prototype._inheritPropertiesToSubCloud=function(G){G._frameWorkType=this._frameWorkType,G._component=this._component,G._language=this._language,G._networkProxy=rA({},this._networkProxy),G._latencyLevel=this._latencyLevel,G._enableAutoPlayDialog=this._enableAutoPlayDialog},L.prototype._inheritEventsToSubCloud=function(G){var x=this;G._trtc.on(F.default.EVENT.AUTOPLAY_FAILED,function(tA){x.emit("onAutoPlayFailed",tA)}),G._trtc.on(F.default.EVENT.PICTURE_IN_PICTURE_STATE_CHANGED,function(tA){x.emit("onPictureInPictureStateChanged",tA)})},L.prototype.handleDeviceChange=function(){return lA(this,void 0,void 0,function(){var G=this;return cA(this,function(x){return F.default.getCameraList().then(function(tA){return lA(G,void 0,void 0,function(){return cA(this,function(uA){switch(uA.label){case 0:return this._cameraList.length===tA.length?[2]:[4,this.deviceChangeManage(this._cameraList,tA,r.TRTCDeviceType.TRTCDeviceTypeCamera)];case 1:return uA.sent(),this._cameraList=tA,[2]}})})}),F.default.getMicrophoneList().then(function(tA){return lA(G,void 0,void 0,function(){return cA(this,function(uA){switch(uA.label){case 0:return[4,this.deviceChangeManage(this._microphoneList,tA,r.TRTCDeviceType.TRTCDeviceTypeMic)];case 1:return uA.sent(),this._microphoneList=tA,[2]}})})}),F.default.getSpeakerList().then(function(tA){return lA(G,void 0,void 0,function(){return cA(this,function(uA){switch(uA.label){case 0:return[4,this.deviceChangeManage(this._speakerList,tA,r.TRTCDeviceType.TRTCDeviceTypeSpeaker)];case 1:return uA.sent(),this._speakerList=tA,[2]}})})}),[2]})})},L.prototype.isSameDevice=function(G,x){var tA=G&&G.deviceId&&G.groupId&&G.label,uA=x&&x.deviceId&&x.groupId&&x.label;return!(!tA||!uA)&&G.deviceId===x.deviceId&&G.groupId===x.groupId&&G.label===x.label},L.prototype.deviceChangeManage=function(G,x,tA){return lA(this,void 0,void 0,function(){var uA,wA,Ae,Qe,p;return cA(this,function(h){switch(h.label){case 0:return uA=void 0,G.length!==x.length&&(wA=(x||[]).map(function(v){return v.deviceId}),Ae=new Vt,G.length>x.length?(Ae=G.filter(function(v){return!wA.includes(v.deviceId)})[0]||{},uA=r.TRTCDeviceState.TRTCDeviceStateRemove):(wA=(G||[]).map(function(v){return v.deviceId}),Ae=x.filter(function(v){return!wA.includes(v.deviceId)})[0]||{},uA=r.TRTCDeviceState.TRTCDeviceStateAdd),Qe=Ae.deviceId,this.emitOnDeviceChange(Qe,tA,uA)),p=this.getDefaultDeviceInfo(x),tA!==r.TRTCDeviceType.TRTCDeviceTypeCamera||uA!==r.TRTCDeviceState.TRTCDeviceStateRemove?[3,3]:this.isSameDevice(this._currentCamera,p)?[2]:p.deviceId?[4,this.autoChangeDevice(tA,p)]:[3,2];case 1:h.sent(),h.label=2;case 2:h.label=3;case 3:return tA!==r.TRTCDeviceType.TRTCDeviceTypeMic?[3,6]:this.isSameDevice(this._currentMicrophone,p)?[2]:p.deviceId?[4,this.autoChangeDevice(tA,p)]:[3,5];case 4:h.sent(),h.label=5;case 5:h.label=6;case 6:return tA!==r.TRTCDeviceType.TRTCDeviceTypeSpeaker?[3,9]:this.isSameDevice(this._currentSpeaker,p)?[2]:p.deviceId?[4,this.autoChangeDevice(tA,p)]:[3,8];case 7:h.sent(),h.label=8;case 8:h.label=9;case 9:return[2]}})})},L.prototype.getDefaultDeviceInfo=function(G){var x=new Vt;if(G.length===0)return x;var tA=G.filter(function(uA){return uA.deviceId==="default"});return x=tA.length>0?tA[0]:G[0]},L.prototype.autoChangeDevice=function(G,x){return lA(this,void 0,void 0,function(){var tA,uA,wA;return cA(this,function(Ae){switch(Ae.label){case 0:return tA=x.deviceId,G!==r.TRTCDeviceType.TRTCDeviceTypeCamera?[3,6]:(this._setCurrentCameraId(tA),[4,this._updateLocalVideo()]);case 1:Ae.sent(),Ae.label=2;case 2:return Ae.trys.push([2,4,,5]),[4,this._testTrtc.updateLocalVideo({option:{cameraId:tA}})];case 3:return Ae.sent(),[3,5];case 4:return uA=Ae.sent(),console.log("testTRTC error",JSON.stringify(uA)),uA.code,F.default.ERROR_CODE.OPERATION_ABORT,[3,5];case 5:this._currentCameraId=tA,this._currentCamera=x,this.emitOnDeviceChange(tA,G,r.TRTCDeviceState.TRTCDeviceStateActive),Ae.label=6;case 6:return G!==r.TRTCDeviceType.TRTCDeviceTypeMic?[3,12]:(this._setCurrentMicrophoneId(tA),[4,this._updateLocalAudio()]);case 7:Ae.sent(),Ae.label=8;case 8:return Ae.trys.push([8,10,,11]),[4,this._testTrtc.updateLocalAudio({option:{microphoneId:tA}})];case 9:return Ae.sent(),[3,11];case 10:return wA=Ae.sent(),console.log("testTRTC error",JSON.stringify(wA)),wA.code,F.default.ERROR_CODE.OPERATION_ABORT,[3,11];case 11:this._currentMicrophoneId=tA,this._currentMicrophone=x,this.emitOnDeviceChange(tA,G,r.TRTCDeviceState.TRTCDeviceStateActive),Ae.label=12;case 12:return G!==r.TRTCDeviceType.TRTCDeviceTypeSpeaker?[3,14]:[4,F.default.setCurrentSpeaker(tA)];case 13:Ae.sent(),this._currentSpeakerId=tA,this._currentSpeaker=x,this.emitOnDeviceChange(tA,G,r.TRTCDeviceState.TRTCDeviceStateActive),Ae.label=14;case 14:return[2]}})})},L.prototype.emitOnDeviceChange=function(G,x,tA){this.emit("onDeviceChange",G,x,tA)},L.prototype.getMediaMixingManager=function(){return new Ll({logger:this.logger,trtc:this._trtc,trtcCloud:this})},L.prototype.getAITranscriberManager=function(){return new NE({logger:this.logger,trtc:this._trtc})},L.shareInstance=null,L.subCloudMap=new Map,L.enableSEI=!1,L.assetsPath="",pA([(oA="exitRoom",function(G,x,tA){var uA=tA.value;return tA.value=function(){for(var wA,Ae,Qe,p,h=[],v=0;vH.length)&&(BA=H.length);for(var yA=0,NA=new Array(BA);yA=0;--on){var is=this.tryEntries[on],Eg=is.completion;if(is.tryLoc==="root")return fo("end");if(is.tryLoc<=this.prev){var Ul=ZA.call(is,"catchLoc"),Cd=ZA.call(is,"finallyLoc");if(Ul&&Cd){if(this.prev=0;--fo){var on=this.tryEntries[fo];if(on.tryLoc<=this.prev&&ZA.call(on,"finallyLoc")&&this.prev=0;--ti){var fo=this.tryEntries[ti];if(fo.finallyLoc===Ri)return this.complete(fo.completion,fo.afterLoc),Vr(fo),ai}},catch:function(Ri){for(var ti=this.tryEntries.length-1;ti>=0;--ti){var fo=this.tryEntries[ti];if(fo.tryLoc===Ri){var on=fo.completion;if(on.type==="throw"){var is=on.arg;Vr(fo)}return is}}throw new Error("illegal catch attempt")},delegateYield:function(Ri,ti,fo){return this.delegate={iterator:Pu(Ri),resultName:ti,nextLoc:fo},this.method==="next"&&(this.arg=void 0),ai}},yA}(H.exports);try{regeneratorRuntime=BA}catch{typeof globalThis=="object"?globalThis.regeneratorRuntime=BA:Function("r","regeneratorRuntime = r")(BA)}});var rA,pA,lA=function(H){return H&&H.Math==Math&&H},cA=lA(typeof globalThis=="object"&&globalThis)||lA(typeof window=="object"&&window)||lA(typeof self=="object"&&self)||lA(typeof j=="object"&&j)||function(){return this}()||Function("return this")(),TA=function(H){try{return!!H()}catch{return!0}},WA=!TA(function(){return Object.defineProperty({},1,{get:function(){return 7}})[1]!=7}),zA={}.propertyIsEnumerable,$A=Object.getOwnPropertyDescriptor,De={f:$A&&!zA.call({1:2},1)?function(H){var BA=$A(this,H);return!!BA&&BA.enumerable}:zA},Ce=function(H,BA){return{enumerable:!(1&H),configurable:!(2&H),writable:!(4&H),value:BA}},ct={}.toString,mt=function(H){return ct.call(H).slice(8,-1)},Ke="".split,Dt=TA(function(){return!Object("z").propertyIsEnumerable(0)})?function(H){return mt(H)=="String"?Ke.call(H,""):Object(H)}:Object,qt=function(H){if(H==null)throw TypeError("Can't call method on "+H);return H},It=function(H){return Dt(qt(H))},ge=function(H){return typeof H=="function"},qe=function(H){return typeof H=="object"?H!==null:ge(H)},ft=function(H){return ge(H)?H:void 0},ni=function(H,BA){return arguments.length<2?ft(cA[H]):cA[H]&&cA[H][BA]},Vt=ni("navigator","userAgent")||"",gi=cA.process,Fi=cA.Deno,_o=gi&&gi.versions||Fi&&Fi.version,to=_o&&_o.v8;to?pA=(rA=to.split("."))[0]<4?1:rA[0]+rA[1]:Vt&&(!(rA=Vt.match(/Edge\/(\d+)/))||rA[1]>=74)&&(rA=Vt.match(/Chrome\/(\d+)/))&&(pA=rA[1]);var uo=pA&&+pA,Vs=!!Object.getOwnPropertySymbols&&!TA(function(){var H=Symbol();return!String(H)||!(Object(H)instanceof Symbol)||!Symbol.sham&&uo&&uo<41}),ki=Vs&&!Symbol.sham&&typeof Symbol.iterator=="symbol",ns=ki?function(H){return typeof H=="symbol"}:function(H){var BA=ni("Symbol");return ge(BA)&&Object(H)instanceof BA},Ko=function(H){try{return String(H)}catch{return"Object"}},$i=function(H){if(ge(H))return H;throw TypeError(Ko(H)+" is not a function")},jt=function(H,BA){var yA=H[BA];return yA==null?void 0:$i(yA)},io=function(H,BA){try{Object.defineProperty(cA,H,{value:BA,configurable:!0,writable:!0})}catch{cA[H]=BA}return BA},bi=cA["__core-js_shared__"]||io("__core-js_shared__",{}),vs=IA(function(H){(H.exports=function(BA,yA){return bi[BA]||(bi[BA]=yA!==void 0?yA:{})})("versions",[]).push({version:"3.18.2",mode:"global",copyright:"© 2021 Denis Pushkarev (zloirock.ru)"})}),HA=function(H){return Object(qt(H))},le={}.hasOwnProperty,xe=Object.hasOwn||function(H,BA){return le.call(HA(H),BA)},Lt=0,it=Math.random(),gt=function(H){return"Symbol("+String(H===void 0?"":H)+")_"+(++Lt+it).toString(36)},Xt=vs("wks"),$t=cA.Symbol,be=ki?$t:$t&&$t.withoutSetter||gt,je=function(H){return xe(Xt,H)&&(Vs||typeof Xt[H]=="string")||(Vs&&xe($t,H)?Xt[H]=$t[H]:Xt[H]=be("Symbol."+H)),Xt[H]},Mt=je("toPrimitive"),Rt=function(H,BA){if(!qe(H)||ns(H))return H;var yA,NA=jt(H,Mt);if(NA){if(yA=NA.call(H,BA),!qe(yA)||ns(yA))return yA;throw TypeError("Can't convert object to primitive value")}return function(ZA,Re){var Ie,Ne;if(ge(Ie=ZA.toString)&&!qe(Ne=Ie.call(ZA))||ge(Ie=ZA.valueOf)&&!qe(Ne=Ie.call(ZA)))return Ne;throw TypeError("Can't convert object to primitive value")}(H)},Oi=function(H){var BA=Rt(H,"string");return ns(BA)?BA:String(BA)},Qo=cA.document,To=qe(Qo)&&qe(Qo.createElement),oo=function(H){return To?Qo.createElement(H):{}},No=!WA&&!TA(function(){return Object.defineProperty(oo("div"),"a",{get:function(){return 7}}).a!=7}),An=Object.getOwnPropertyDescriptor,rn={f:WA?An:function(H,BA){if(H=It(H),BA=Oi(BA),No)try{return An(H,BA)}catch{}if(xe(H,BA))return Ce(!De.f.call(H,BA),H[BA])}},Es=function(H){if(qe(H))return H;throw TypeError(String(H)+" is not an object")},an=Object.defineProperty,yo={f:WA?an:function(H,BA,yA){if(Es(H),BA=Oi(BA),Es(yA),No)try{return an(H,BA,yA)}catch{}if("get"in yA||"set"in yA)throw TypeError("Accessors not supported");return"value"in yA&&(H[BA]=yA.value),H}},mA=WA?function(H,BA,yA){return yo.f(H,BA,Ce(1,yA))}:function(H,BA,yA){return H[BA]=yA,H},Jn=Function.toString;ge(bi.inspectSource)||(bi.inspectSource=function(H){return Jn.call(H)});var Br,ds,jr,Pi=bi.inspectSource,Rs=cA.WeakMap,ir=ge(Rs)&&/native code/.test(Pi(Rs)),en=vs("keys"),wn=function(H){return en[H]||(en[H]=gt(H))},Jt={},yg=cA.WeakMap;if(ir||bi.state){var On=bi.state||(bi.state=new yg),Gn=On.get,Js=On.has,Qr=On.set;Br=function(H,BA){if(Js.call(On,H))throw new TypeError("Object already initialized");return BA.facade=H,Qr.call(On,H,BA),BA},ds=function(H){return Gn.call(On,H)||{}},jr=function(H){return Js.call(On,H)}}else{var Pn=wn("state");Jt[Pn]=!0,Br=function(H,BA){if(xe(H,Pn))throw new TypeError("Object already initialized");return BA.facade=H,mA(H,Pn,BA),BA},ds=function(H){return xe(H,Pn)?H[Pn]:{}},jr=function(H){return xe(H,Pn)}}var pr={set:Br,get:ds,has:jr,enforce:function(H){return jr(H)?ds(H):Br(H,{})},getterFor:function(H){return function(BA){var yA;if(!qe(BA)||(yA=ds(BA)).type!==H)throw TypeError("Incompatible receiver, "+H+" required");return yA}}},po=Function.prototype,gn=WA&&Object.getOwnPropertyDescriptor,yl=xe(po,"name"),cn={PROPER:yl&&function(){}.name==="something",CONFIGURABLE:yl&&(!WA||WA&&gn(po,"name").configurable)},mr=IA(function(H){var BA=cn.CONFIGURABLE,yA=pr.get,NA=pr.enforce,ZA=String(String).split("String");(H.exports=function(Re,Ie,Ne,ae){var Ue,yt=!!ae&&!!ae.unsafe,Kt=!!ae&&!!ae.enumerable,ai=!!ae&&!!ae.noTargetGet,Qt=ae&&ae.name!==void 0?ae.name:Ie;ge(Ne)&&(String(Qt).slice(0,7)==="Symbol("&&(Qt="["+String(Qt).replace(/^Symbol\(([^)]*)\)/,"$1")+"]"),(!xe(Ne,"name")||BA&&Ne.name!==Qt)&&mA(Ne,"name",Qt),(Ue=NA(Ne)).source||(Ue.source=ZA.join(typeof Qt=="string"?Qt:""))),Re!==cA?(yt?!ai&&Re[Ie]&&(Kt=!0):delete Re[Ie],Kt?Re[Ie]=Ne:mA(Re,Ie,Ne)):Kt?Re[Ie]=Ne:io(Ie,Ne)})(Function.prototype,"toString",function(){return ge(this)&&yA(this).source||Pi(this)})}),Ls=Math.ceil,Vc=Math.floor,ms=function(H){var BA=+H;return BA!=BA||BA===0?0:(BA>0?Vc:Ls)(BA)},as=Math.max,mu=Math.min,ja=Math.min,Cs=function(H){return H>0?ja(ms(H),9007199254740991):0},sg=function(H){return Cs(H.length)},OI=function(H){return function(BA,yA,NA){var ZA,Re=It(BA),Ie=sg(Re),Ne=function(ae,Ue){var yt=ms(ae);return yt<0?as(yt+Ue,0):mu(yt,Ue)}(NA,Ie);if(H&&yA!=yA){for(;Ie>Ne;)if((ZA=Re[Ne++])!=ZA)return!0}else for(;Ie>Ne;Ne++)if((H||Ne in Re)&&Re[Ne]===yA)return H||Ne||0;return!H&&-1}},Xo={indexOf:OI(!1)},Zi=Xo.indexOf,pc=function(H,BA){var yA,NA=It(H),ZA=0,Re=[];for(yA in NA)!xe(Jt,yA)&&xe(NA,yA)&&Re.push(yA);for(;BA.length>ZA;)xe(NA,yA=BA[ZA++])&&(~Zi(Re,yA)||Re.push(yA));return Re},ng=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],Dg=ng.concat("length","prototype"),la={f:Object.getOwnPropertyNames||function(H){return pc(H,Dg)}},Go={f:Object.getOwnPropertySymbols},Wr=ni("Reflect","ownKeys")||function(H){var BA=la.f(Es(H)),yA=Go.f;return yA?BA.concat(yA(H)):BA},wo=function(H,BA){for(var yA=Wr(BA),NA=yo.f,ZA=rn.f,Re=0;Re=51||!TA(function(){var BA=[];return(BA.constructor={})[li]=function(){return{foo:1}},BA[H](Boolean).foo!==1})},Ft=je("isConcatSpreadable"),Ji=uo>=51||!TA(function(){var H=[];return H[Ft]=!1,H.concat()[0]!==H}),qi=nt("concat"),qs=function(H){if(!qe(H))return!1;var BA=H[Ft];return BA!==void 0?!!BA:Ia(H)};fs({target:"Array",proto:!0,forced:!Ji||!qi},{concat:function(H){var BA,yA,NA,ZA,Re,Ie=HA(this),Ne=Ot(Ie,0),ae=0;for(BA=-1,NA=arguments.length;BA9007199254740991)throw TypeError("Maximum allowed index exceeded");for(yA=0;yA=9007199254740991)throw TypeError("Maximum allowed index exceeded");yn(Ne,ae++,Re)}return Ne.length=ae,Ne}});var Mi,Wo=Object.keys||function(H){return pc(H,ng)},Mg=WA?Object.defineProperties:function(H,BA){Es(H);for(var yA,NA=Wo(BA),ZA=NA.length,Re=0;ZA>Re;)yo.f(H,yA=NA[Re++],BA[yA]);return H},or=ni("document","documentElement"),fr=wn("IE_PROTO"),xn=function(){},Dl=function(H){return" - + +
    diff --git a/app/video_companion/src/App.vue b/app/video_companion/src/App.vue index 958b82075..80dd1c0d3 100644 --- a/app/video_companion/src/App.vue +++ b/app/video_companion/src/App.vue @@ -6,11 +6,19 @@ import type { Ref } from 'vue' interface ChatMessage { id: string mine: boolean - type: 'text' | 'image' | 'file' | 'audio' | 'video' | 'system' + type: 'text' | 'image' | 'file' | 'audio' | 'video' | 'system' | 'call-status' text: string url: string name: string time: string + callStatus?: 'starting' | 'dialing' | 'connected' | 'ended' | 'failed' +} + +interface LiveCaption { + id: string + speaker: string + text: string + completed: boolean } const props = defineProps<{ @@ -24,6 +32,8 @@ const props = defineProps<{ notice: Readonly> hasMoreMessages: Readonly> transcriptionState: Readonly> + localRecordingState: Readonly> + liveCaptions: Readonly> onSendText: (text: string) => Promise onSendAttachment: (file: File) => Promise onLoadMore: () => Promise @@ -38,29 +48,81 @@ const actionBusy = ref(false) const localError = ref('') const messageList = ref(null) const fileInput = ref(null) +const screenshotPreview = ref('') +const stickToMessageBottom = ref(true) const isChat = computed(() => props.mode.value === 'chat') const isCalling = computed(() => ['starting', 'dialing', 'connected'].includes(props.phase.value)) const videoVisible = computed(() => !isChat.value || isCalling.value) const canCapture = computed(() => props.phase.value === 'connected') -const transcriptionActive = computed(() => props.transcriptionState.value === 'recording') -const transcriptionFailed = computed(() => props.transcriptionState.value === 'error') +const chatConnectionText = computed(() => { + if (!props.chatReady.value) return props.statusText.value + if (['starting', 'dialing', 'connected', 'ended', 'error'].includes(props.phase.value)) { + return `IM 已连接 · ${props.statusText.value}` + } + return 'IM 已连接' +}) +const transcriptionActive = computed(() => ( + props.transcriptionState.value === 'recording' + || props.localRecordingState.value === 'recording' +)) +const transcriptionFailed = computed(() => ( + props.transcriptionState.value === 'error' + || props.localRecordingState.value === 'error' +)) const transcriptionStatusText = computed(() => { - if (props.transcriptionState.value === 'starting') return '自动录音启动中…' - if (props.transcriptionState.value === 'recording') return '自动录音并转文字中' - if (props.transcriptionState.value === 'stopping') return '正在保存录音文字…' - if (props.transcriptionState.value === 'error') return '自动录音转文字失败' - return '自动录音已结束' + const localState = props.localRecordingState.value + const textState = props.transcriptionState.value + if (localState === 'uploading') return '正在上传本机录音到 COS…' + if (localState === 'stopping' || textState === 'stopping') return '正在保存录音与转写文字…' + if (localState === 'starting' || textState === 'starting') return '自动录音与转写启动中…' + if (localState === 'recording' && textState === 'recording') return '本机录音与实时转写中' + if (localState === 'recording') return '本机录音中,实时转写未就绪' + if (textState === 'recording') return '实时转写中,本机录音未就绪' + if (localState === 'error' && textState === 'error') return '本机录音与实时转写均失败' + if (localState === 'error') return '本机录音失败,实时转写仍在运行' + if (textState === 'error') return '实时转写失败,本机录音仍在运行' + return '录音与转写已结束' }) watch( () => props.messages.value.length, async () => { + if (!stickToMessageBottom.value) return await nextTick() if (messageList.value) messageList.value.scrollTop = messageList.value.scrollHeight }, ) +watch( + () => [props.patientName.value, props.mode.value], + async () => { + stickToMessageBottom.value = true + await nextTick() + if (messageList.value) messageList.value.scrollTop = messageList.value.scrollHeight + }, +) + +function handleMessageScroll(): void { + const container = messageList.value + if (!container) return + stickToMessageBottom.value = ( + container.scrollHeight - container.scrollTop - container.clientHeight <= 96 + ) +} + +async function loadEarlierMessages(): Promise { + const container = messageList.value + if (!container || actionBusy.value) return + const previousHeight = container.scrollHeight + const previousTop = container.scrollTop + stickToMessageBottom.value = false + await runAction(props.onLoadMore) + await nextTick() + container.scrollTop = previousTop + (container.scrollHeight - previousHeight) + handleMessageScroll() +} + async function runAction(action: () => Promise): Promise { if (actionBusy.value) return actionBusy.value = true @@ -113,9 +175,35 @@ async function captureScreenshot(): Promise { const context = canvas.getContext('2d') if (!context) throw new Error('无法创建截图画布') context.drawImage(video, 0, 0, canvas.width, canvas.height) - await props.onSaveScreenshot(canvas.toDataURL('image/jpeg', 0.9)) + screenshotPreview.value = canvas.toDataURL('image/jpeg', 0.9) }) } + +function discardScreenshot(): void { + if (actionBusy.value) return + screenshotPreview.value = '' +} + +async function confirmScreenshot(): Promise { + if (!screenshotPreview.value || actionBusy.value) return + actionBusy.value = true + localError.value = '' + try { + await props.onSaveScreenshot(screenshotPreview.value) + screenshotPreview.value = '' + } catch (error) { + localError.value = error instanceof Error ? error.message : '截图上传失败,请稍后重试' + } finally { + actionBusy.value = false + } +} + +watch( + () => props.phase.value, + (value) => { + if (value !== 'connected') screenshotPreview.value = '' + }, +) diff --git a/app/video_companion/src/env.d.ts b/app/video_companion/src/env.d.ts index 2fcbf1ca1..03f33ebd7 100644 --- a/app/video_companion/src/env.d.ts +++ b/app/video_companion/src/env.d.ts @@ -29,6 +29,8 @@ interface DoctorConsultationApi { startVideo(): Promise hangup(): Promise hostCallReady(ok: boolean, message?: string): void + recordingResult(ok: boolean, message: string): void + roomBindingResult(roomId: string, ok: boolean, message: string): void screenshotResult(ok: boolean, message: string): void transcriptionResult( operation: 'start' | 'segment' | 'stop', @@ -37,11 +39,22 @@ interface DoctorConsultationApi { ok: boolean, message: string, ): void + localRecordingResult( + operation: 'start' | 'chunk' | 'finish', + sessionId: string, + sequence: number, + ok: boolean, + message: string, + ): void } interface QtVideoBridge { notify?: (payload: string) => void saveScreenshot?: (dataUrl: string) => void + startLocalAudioRecording?: (sessionId: string, mimeType: string) => void + appendLocalAudioChunk?: (sessionId: string, sequence: number, encoded: string) => void + finishLocalAudioRecording?: (sessionId: string, totalBytes: number) => void + abortLocalAudioRecording?: (sessionId: string) => void } interface Window { diff --git a/app/video_companion/src/main.ts b/app/video_companion/src/main.ts index 9c8c3460c..ea70676b1 100644 --- a/app/video_companion/src/main.ts +++ b/app/video_companion/src/main.ts @@ -14,8 +14,10 @@ import './style.css' type CallPhase = 'ready' | 'starting' | 'dialing' | 'connected' | 'ended' | 'error' type CompanionMode = 'chat' | 'video' -type ChatMessageType = 'text' | 'image' | 'file' | 'audio' | 'video' | 'system' +type ChatMessageType = 'text' | 'image' | 'file' | 'audio' | 'video' | 'system' | 'call-status' +type VideoCallStatus = 'starting' | 'dialing' | 'connected' | 'ended' | 'failed' type TranscriptionState = 'idle' | 'starting' | 'recording' | 'stopping' | 'error' +type LocalRecordingState = 'idle' | 'starting' | 'recording' | 'stopping' | 'uploading' | 'error' interface NormalizedCallConfig { SDKAppID: number @@ -35,6 +37,14 @@ interface UiChatMessage { url: string name: string time: string + callStatus?: VideoCallStatus +} + +interface UiLiveCaption { + id: string + speaker: string + text: string + completed: boolean } interface BridgeMessage { @@ -109,6 +119,25 @@ interface PendingSegment { attempts: number } +interface PendingLocalRecordingReply { + resolve: (value: boolean) => void + promise: Promise +} + +interface TrtcAudioTrackEvent { + userId?: string + track?: MediaStreamTrack +} + +interface TrtcAudioCloud { + getAudioTrack?(configOrUserId?: { + userId?: string + processed?: boolean + } | string): MediaStreamTrack | null + on?(event: 'track', handler: (event: TrtcAudioTrackEvent) => void): void + off?(event: 'track', handler: (event: TrtcAudioTrackEvent) => void): void +} + const phase = ref('ready') const statusText = ref('正在连接问诊服务') const patientName = ref('患者') @@ -119,6 +148,8 @@ const chatBusy = ref(false) const notice = ref('') const hasMoreMessages = ref(false) const transcriptionState = ref('idle') +const localRecordingState = ref('idle') +const liveCaptions = ref([]) let activeConfig: NormalizedCallConfig | null = null let chat: any = null @@ -129,6 +160,10 @@ let nextReqMessageID = '' let endNotified = true let starting = false let emittedRoomId = '' +let pendingRoomId = '' +let boundRoomId = '' +let roomBindingSentAt = 0 +let roomBindingAttempts = 0 let resolveHostCallReady: ((value: boolean) => void) | null = null const pendingTranscriptionStarts = new Map() const pendingTranscriptionStops = new Map() @@ -143,10 +178,34 @@ let transcriptionStopPromise: Promise | null = null let hangupNotification: Promise | null = null let callCycleGeneration = 0 let autoTranscriptionAttemptedGeneration = -1 +let autoLocalRecordingAttemptedGeneration = -1 let lastTranscriberMessageAt = 0 let transcriberStoppedAt = 0 const acknowledgedSegmentIds = new Set() const pendingSegments = new Map() +const pendingLocalRecordingStarts = new Map() +const pendingLocalRecordingFinishes = new Map() +let localRecordingSessionId = '' +let localRecordingMimeType = '' +let localRecorder: MediaRecorder | null = null +let localAudioContext: AudioContext | null = null +let localAudioDestination: MediaStreamAudioDestinationNode | null = null +let localAudioCloud: TrtcAudioCloud | null = null +let localAudioTrackHandler: ((event: TrtcAudioTrackEvent) => void) | null = null +let localAudioSources: MediaStreamAudioSourceNode[] = [] +let localAudioTrackIds = new Set() +let localAudioOwnedTracks: MediaStreamTrack[] = [] +let localAudioDiscoveryTimer: number | null = null +let localAudioHasDoctorSource = false +let localAudioHasPatientSource = false +let localRecordingAttachedSourceCount = 0 +let localRecordingChunkSequence = 0 +let localRecordingBytes = 0 +let localRecordingChunkChain: Promise = Promise.resolve() +let localRecordingStartPromise: Promise | null = null +let localRecordingStopPromise: Promise | null = null +let localRecordingFatalError = '' +let liveCaptionClearTimer: number | null = null function initializeQtWebChannel(): void { const transport = window.qt?.webChannelTransport @@ -361,6 +420,29 @@ function mergeMessages(rawList: any[], prepend = false): void { }) } +function appendVideoCallStatus(callStatus: VideoCallStatus, text: string): void { + if (!activeConfig || activeConfig.mode !== 'chat') return + const id = `local-video-call-${callCycleGeneration}-${callStatus}` + const message: UiChatMessage = { + id, + mine: false, + type: 'call-status', + text, + url: '', + name: '', + time: timeText(undefined), + callStatus, + } + const existingIndex = messages.value.findIndex((item) => item.id === id) + if (existingIndex < 0) { + messages.value = [...messages.value, message] + return + } + const next = [...messages.value] + next[existingIndex] = { ...next[existingIndex], ...message } + messages.value = next +} + function onMessageReceived(event: any): void { if (!activeConfig) return const expected = `C2C${activeConfig.targetUserId}` @@ -465,11 +547,19 @@ async function loadMessages(prepend: boolean): Promise { if (!chat || !activeConfig || chatBusy.value) return chatBusy.value = true try { - const response = await chat.getMessageList({ + const request: { + conversationID: string + count: number + nextReqMessageID?: string + } = { conversationID: `C2C${activeConfig.targetUserId}`, - nextReqMessageID: prepend ? nextReqMessageID : '', count: 30, - }) + } + // Tencent Cloud IM requires the first roaming-history request to omit the + // pagination cursor. Passing an empty string is not equivalent and can + // return an empty page even though the C2C conversation has history. + if (prepend && nextReqMessageID) request.nextReqMessageID = nextReqMessageID + const response = await chat.getMessageList(request) const data = response?.data ?? {} const list = Array.isArray(data.messageList) ? data.messageList : [] nextReqMessageID = String(data.nextReqMessageID ?? '') @@ -539,9 +629,454 @@ async function sendAttachment(file: File): Promise { } } +function newLocalRecordingSessionId(): string { + const random = window.crypto?.randomUUID?.().replaceAll('-', '') + const entropy = random || `${Date.now().toString(36)}${Math.random().toString(36).slice(2)}` + return `audio-${entropy.replace(/[^a-zA-Z0-9]/g, '').slice(0, 32)}` +} + +function selectLocalRecordingMimeType(): string { + if (typeof MediaRecorder === 'undefined') return '' + const candidates = [ + 'audio/webm;codecs=opus', + 'audio/webm', + 'audio/ogg;codecs=opus', + 'audio/ogg', + ] + return candidates.find((candidate) => MediaRecorder.isTypeSupported(candidate)) ?? '' +} + +function requestLocalRecordingStart(sessionId: string, mimeType: string): Promise { + const bridge = window.qtVideoBridge + if (!bridge || typeof bridge.startLocalAudioRecording !== 'function') { + return Promise.resolve(false) + } + const existing = pendingLocalRecordingStarts.get(sessionId) + if (existing) return existing.promise + const pending = {} as PendingLocalRecordingReply + pending.promise = new Promise((resolve) => { + pending.resolve = resolve + }) + pendingLocalRecordingStarts.set(sessionId, pending) + bridge.startLocalAudioRecording(sessionId, mimeType) + window.setTimeout(() => { + if (pendingLocalRecordingStarts.get(sessionId) !== pending) return + pendingLocalRecordingStarts.delete(sessionId) + pending.resolve(false) + }, 15000) + return pending.promise +} + +function requestLocalRecordingFinish(sessionId: string, totalBytes: number): Promise { + const bridge = window.qtVideoBridge + if (!bridge || typeof bridge.finishLocalAudioRecording !== 'function') { + return Promise.resolve(false) + } + const existing = pendingLocalRecordingFinishes.get(sessionId) + if (existing) return existing.promise + const pending = {} as PendingLocalRecordingReply + pending.promise = new Promise((resolve) => { + pending.resolve = resolve + }) + pendingLocalRecordingFinishes.set(sessionId, pending) + bridge.finishLocalAudioRecording(sessionId, totalBytes) + window.setTimeout(() => { + if (pendingLocalRecordingFinishes.get(sessionId) !== pending) return + pendingLocalRecordingFinishes.delete(sessionId) + pending.resolve(false) + }, 180000) + return pending.promise +} + +function bytesToBase64(bytes: Uint8Array): string { + let binary = '' + for (let index = 0; index < bytes.length; index += 1) { + binary += String.fromCharCode(bytes[index]) + } + return window.btoa(binary) +} + +async function sendLocalRecordingBlob(blob: Blob, sessionId: string): Promise { + if (!blob.size || sessionId !== localRecordingSessionId) return + const bridge = window.qtVideoBridge + if (!bridge || typeof bridge.appendLocalAudioChunk !== 'function') { + throw new Error('桌面端本地录音分片通道不可用') + } + const bytes = new Uint8Array(await blob.arrayBuffer()) + const maxChunkBytes = 8 * 1024 + for (let offset = 0; offset < bytes.length; offset += maxChunkBytes) { + const chunk = bytes.subarray(offset, Math.min(offset + maxChunkBytes, bytes.length)) + bridge.appendLocalAudioChunk( + sessionId, + localRecordingChunkSequence, + bytesToBase64(chunk), + ) + localRecordingChunkSequence += 1 + localRecordingBytes += chunk.length + } +} + +function getTrtcAudioCloud(): TrtcAudioCloud | null { + const engine = TUICallKitAPI.getTUICallEngineInstance?.() + const cloud = engine?.getTRTCCloudInstance?.() as Partial | null + return cloud ? cloud as TrtcAudioCloud : null +} + +function attachLocalRecordingTrack( + track: MediaStreamTrack | null | undefined, + sourceKind: 'doctor' | 'patient' | 'unknown' = 'unknown', +): boolean { + const context = localAudioContext + const destination = localAudioDestination + if ( + !context + || !destination + || !track + || track.kind !== 'audio' + || track.readyState === 'ended' + ) return false + if (sourceKind === 'doctor') localAudioHasDoctorSource = true + if (sourceKind === 'patient') localAudioHasPatientSource = true + if (localAudioTrackIds.has(track.id)) return true + const source = context.createMediaStreamSource(new MediaStream([track])) + source.connect(destination) + localAudioSources.push(source) + localAudioTrackIds.add(track.id) + localRecordingAttachedSourceCount += 1 + track.addEventListener('ended', () => localAudioTrackIds.delete(track.id), { once: true }) + return true +} + +function attachCurrentCallAudioTracks(cloud: TrtcAudioCloud | null): void { + if (!activeConfig) return + if (typeof cloud?.getAudioTrack === 'function') { + try { + attachLocalRecordingTrack(cloud.getAudioTrack({ processed: true }), 'doctor') + } catch { + try { + attachLocalRecordingTrack(cloud.getAudioTrack(), 'doctor') + } catch { + // The rendered media elements below remain a supported fallback. + } + } + try { + attachLocalRecordingTrack(cloud.getAudioTrack({ + userId: activeConfig.targetUserId, + processed: true, + }), 'patient') + } catch { + try { + attachLocalRecordingTrack(cloud.getAudioTrack(activeConfig.targetUserId), 'patient') + } catch { + // Remote audio can become available a few frames after connected. + } + } + } + + for (const media of document.querySelectorAll('video, audio')) { + const stream = media.srcObject + if (!(stream instanceof MediaStream)) continue + const sourceKind = media.muted ? 'doctor' : 'patient' + for (const track of stream.getAudioTracks()) { + attachLocalRecordingTrack(track, sourceKind) + } + } +} + +async function attachDoctorMicrophoneFallback(): Promise { + if (localAudioHasDoctorSource || !navigator.mediaDevices?.getUserMedia) return + const stream = await navigator.mediaDevices.getUserMedia({ + audio: { + echoCancellation: true, + noiseSuppression: true, + autoGainControl: true, + }, + video: false, + }) + const tracks = stream.getAudioTracks() + localAudioOwnedTracks.push(...tracks) + for (const track of tracks) attachLocalRecordingTrack(track, 'doctor') +} + +async function waitForCallAudioTracks( + cloud: TrtcAudioCloud | null, + sessionId: string, + timeoutMs = 7000, +): Promise { + const startedAt = Date.now() + let microphoneAttempted = false + while (Date.now() - startedAt < timeoutMs) { + if (sessionId !== localRecordingSessionId || endNotified) { + throw new Error('视频已结束,本机录音未启动') + } + attachCurrentCallAudioTracks(cloud) + const elapsed = Date.now() - startedAt + if (!localAudioHasDoctorSource && !microphoneAttempted && elapsed >= 800) { + microphoneAttempted = true + try { + await attachDoctorMicrophoneFallback() + } catch (error) { + console.warn( + '[doctor-consultation] 本机麦克风录音兜底不可用', + safeErrorMessage(error), + ) + } + } + if ( + localAudioTrackIds.size > 0 + && (localAudioHasDoctorSource && localAudioHasPatientSource || elapsed >= 2200) + ) return + await new Promise((resolve) => window.setTimeout(resolve, 160)) + } + if (localAudioTrackIds.size <= 0) { + throw new Error('未检测到医生或患者的实时语音音轨,请检查麦克风权限') + } +} + +function startCallAudioDiscovery(cloud: TrtcAudioCloud | null): void { + if (localAudioDiscoveryTimer !== null) window.clearInterval(localAudioDiscoveryTimer) + localAudioDiscoveryTimer = window.setInterval(() => { + attachCurrentCallAudioTracks(cloud) + }, 500) +} + +async function cleanupLocalRecordingGraph(): Promise { + if (localAudioDiscoveryTimer !== null) { + window.clearInterval(localAudioDiscoveryTimer) + localAudioDiscoveryTimer = null + } + if (localAudioCloud && localAudioTrackHandler && typeof localAudioCloud.off === 'function') { + try { + localAudioCloud.off('track', localAudioTrackHandler) + } catch { + // The call engine may already have released its event dispatcher. + } + } + localAudioCloud = null + localAudioTrackHandler = null + for (const source of localAudioSources) { + try { + source.disconnect() + } catch { + // A closed AudioContext has already disconnected its graph. + } + } + localAudioSources = [] + localAudioTrackIds.clear() + for (const track of localAudioOwnedTracks) track.stop() + localAudioOwnedTracks = [] + localAudioHasDoctorSource = false + localAudioHasPatientSource = false + localRecordingAttachedSourceCount = 0 + const context = localAudioContext + localAudioContext = null + localAudioDestination = null + if (context && context.state !== 'closed') { + try { + await context.close() + } catch { + // Closing the consultation must not be blocked by a released device. + } + } + localRecorder = null +} + +async function performStartLocalRecording(): Promise { + if (!activeConfig || phase.value !== 'connected' || endNotified) { + throw new Error('视频接通后才能启动本机录音') + } + if (!window.qtVideoBridge?.startLocalAudioRecording) { + throw new Error('桌面端本机录音存储通道不可用') + } + const mimeType = selectLocalRecordingMimeType() + if (!mimeType) throw new Error('当前浏览器不支持 Opus 本机录音') + + localRecordingState.value = 'starting' + localRecordingFatalError = '' + localRecordingChunkSequence = 0 + localRecordingBytes = 0 + localRecordingChunkChain = Promise.resolve() + localRecordingAttachedSourceCount = 0 + localAudioHasDoctorSource = false + localAudioHasPatientSource = false + const sessionId = newLocalRecordingSessionId() + localRecordingSessionId = sessionId + localRecordingMimeType = mimeType + + try { + const AudioContextConstructor = window.AudioContext + const context = new AudioContextConstructor() + localAudioContext = context + localAudioDestination = context.createMediaStreamDestination() + const cloud = getTrtcAudioCloud() + localAudioCloud = cloud + localAudioTrackHandler = (event) => attachLocalRecordingTrack( + event.track, + event.userId === activeConfig?.userID + ? 'doctor' + : event.userId === activeConfig?.targetUserId + ? 'patient' + : 'unknown', + ) + if (typeof cloud?.on === 'function') cloud.on('track', localAudioTrackHandler) + if (context.state === 'suspended') await context.resume() + await waitForCallAudioTracks(cloud, sessionId) + startCallAudioDiscovery(cloud) + + const storageReady = await requestLocalRecordingStart(sessionId, mimeType) + if (!storageReady || sessionId !== localRecordingSessionId || endNotified) { + throw new Error(notice.value || '服务端未能创建本机录音临时文件') + } + const destination = localAudioDestination + if (!destination) throw new Error('本机录音混音器未就绪') + if (localRecordingAttachedSourceCount <= 0) { + throw new Error('本机录音没有连接到医生或患者语音') + } + const recorder = new MediaRecorder(destination.stream, { mimeType }) + localRecorder = recorder + recorder.addEventListener('dataavailable', (event) => { + if (!event.data.size || sessionId !== localRecordingSessionId) return + localRecordingChunkChain = localRecordingChunkChain + .then(() => sendLocalRecordingBlob(event.data, sessionId)) + .catch((error) => { + localRecordingFatalError = safeErrorMessage(error, '本机录音分片保存失败') + localRecordingState.value = 'error' + notice.value = localRecordingFatalError + window.qtVideoBridge?.abortLocalAudioRecording?.(sessionId) + if (recorder.state !== 'inactive') recorder.stop() + }) + }) + recorder.addEventListener('error', (event) => { + localRecordingFatalError = safeErrorMessage( + (event as ErrorEvent).error, + '浏览器本机录音发生错误', + ) + localRecordingState.value = 'error' + notice.value = localRecordingFatalError + }) + recorder.start(1000) + localRecordingState.value = 'recording' + notice.value = '腾讯云混流视频、本机语音录音和实时转写均已启动' + } catch (error) { + window.qtVideoBridge?.abortLocalAudioRecording?.(sessionId) + await cleanupLocalRecordingGraph() + if (sessionId === localRecordingSessionId) { + localRecordingSessionId = '' + localRecordingMimeType = '' + localRecordingState.value = 'error' + } + throw new Error(safeErrorMessage(error, '本机语音录音启动失败')) + } +} + +function startLocalRecording(): Promise { + if (localRecordingStartPromise) return localRecordingStartPromise + if (localRecordingState.value === 'recording') return Promise.resolve() + const operation = performStartLocalRecording() + const tracked = operation.finally(() => { + if (localRecordingStartPromise === tracked) localRecordingStartPromise = null + }) + localRecordingStartPromise = tracked + return tracked +} + +async function performStopLocalRecording(): Promise { + const startInFlight = localRecordingStartPromise + if (startInFlight) { + try { + await startInFlight + } catch { + return + } + } + const sessionId = localRecordingSessionId + const recorder = localRecorder + if (!sessionId || !recorder) { + if (localRecordingState.value !== 'error') localRecordingState.value = 'idle' + return + } + localRecordingState.value = 'stopping' + try { + if (recorder.state !== 'inactive') { + await new Promise((resolve) => { + recorder.addEventListener('stop', () => resolve(), { once: true }) + recorder.stop() + }) + } + await localRecordingChunkChain + if (localRecordingFatalError) throw new Error(localRecordingFatalError) + if (localRecordingAttachedSourceCount <= 0) { + throw new Error('本机录音没有连接到有效语音音轨') + } + if (localRecordingBytes < 1024) { + throw new Error('本机录音文件为空或不完整,已阻止上传空文件') + } + localRecordingState.value = 'uploading' + notice.value = '正在把本机语音录音上传到 COS…' + const persisted = await requestLocalRecordingFinish(sessionId, localRecordingBytes) + if (!persisted) throw new Error(notice.value || '本机语音录音上传 COS 失败') + localRecordingState.value = 'idle' + notice.value = '混流视频、本机录音和转写文字均已归档到本次通话记录' + } catch (error) { + window.qtVideoBridge?.abortLocalAudioRecording?.(sessionId) + localRecordingState.value = 'error' + throw new Error(safeErrorMessage(error, '本机语音录音保存失败')) + } finally { + await cleanupLocalRecordingGraph() + if (sessionId === localRecordingSessionId) { + localRecordingSessionId = '' + localRecordingMimeType = '' + } + } +} + +function stopLocalRecording(): Promise { + if (localRecordingStopPromise) return localRecordingStopPromise + if (localRecordingState.value === 'idle' && !localRecordingSessionId) return Promise.resolve() + const operation = performStopLocalRecording() + const tracked = operation.finally(() => { + if (localRecordingStopPromise === tracked) localRecordingStopPromise = null + }) + localRecordingStopPromise = tracked + return tracked +} + +function localRecordingResult( + operation: 'start' | 'chunk' | 'finish', + sessionId: string, + _sequence: number, + ok: boolean, + message: string, +): void { + if (operation === 'start') { + const pending = pendingLocalRecordingStarts.get(sessionId) + if (!pending) return + pendingLocalRecordingStarts.delete(sessionId) + if (message && sessionId === localRecordingSessionId) notice.value = message + pending.resolve(Boolean(ok)) + } else if (operation === 'finish') { + const pending = pendingLocalRecordingFinishes.get(sessionId) + if (!pending) return + pendingLocalRecordingFinishes.delete(sessionId) + if (message && sessionId === localRecordingSessionId) notice.value = message + pending.resolve(Boolean(ok)) + } else if (!ok && sessionId === localRecordingSessionId) { + localRecordingFatalError = message || '本机录音分片保存失败' + localRecordingState.value = 'error' + notice.value = localRecordingFatalError + window.qtVideoBridge?.abortLocalAudioRecording?.(sessionId) + if (localRecorder && localRecorder.state !== 'inactive') localRecorder.stop() + } +} + function newTranscriptionSessionId(): string { - const random = window.crypto?.randomUUID?.() - return random ? `call-${random}` : `call-${Date.now()}-${Math.random().toString(16).slice(2)}` + // Keep this identity within 32 ASCII characters. Some upgraded deployments + // still have the legacy varchar(32) column; a UUID with hyphens was silently + // truncated there, so the first transcript segment no longer matched the + // session that startCallTranscription had acknowledged. + const random = window.crypto?.randomUUID?.().replaceAll('-', '') + const entropy = random || `${Date.now().toString(36)}${Math.random().toString(36).slice(2)}` + return `tr-${entropy.replace(/[^a-zA-Z0-9]/g, '').slice(0, 28)}` } function requestTranscriptionStart(sessionId: string): Promise { @@ -615,19 +1150,59 @@ function getTranscriberManager(): RealtimeTranscriberManager { return manager as RealtimeTranscriberManager } +function clearLiveCaptions(): void { + if (liveCaptionClearTimer !== null) { + window.clearTimeout(liveCaptionClearTimer) + liveCaptionClearTimer = null + } + liveCaptions.value = [] +} + +function showLiveCaption(message: RealtimeTranscriberMessage): void { + if (!activeConfig) return + const text = String(message.sourceText ?? '').trim() + if (!text) return + const speakerUserId = String(message.speakerUserId ?? '').trim() + const segmentId = String(message.segmentId ?? '').trim() + const id = segmentId || `speaker-${speakerUserId || 'unknown'}` + const speaker = speakerUserId === activeConfig.userID + ? '医生' + : speakerUserId === activeConfig.targetUserId + ? patientName.value || '患者' + : '对话' + const caption: UiLiveCaption = { + id, + speaker, + text: text.slice(0, 500), + completed: message.isCompleted === true, + } + const previous = liveCaptions.value.filter((item) => item.id !== id) + liveCaptions.value = [...previous, caption].slice(-2) + if (liveCaptionClearTimer !== null) window.clearTimeout(liveCaptionClearTimer) + liveCaptionClearTimer = window.setTimeout(() => { + liveCaptions.value = [] + liveCaptionClearTimer = null + }, message.isCompleted === true ? 9000 : 5000) +} + function handleTranscriberMessage( - _roomId: string | number, + roomId: string | number, message: RealtimeTranscriberMessage, ): void { + // The realtime transcriber always identifies the active TRTC room. Use it + // as a second authoritative source because some CallKit versions clear the + // ROOM_ID store before the desktop host has persisted it. + observeRoomId(roomId) if ( !activeConfig || !['recording', 'stopping'].includes(transcriptionState.value) || !transcriptionSessionId - || message.isCompleted !== true ) return lastTranscriberMessageAt = Date.now() const segmentId = String(message.segmentId ?? '').trim() const text = String(message.sourceText ?? '').trim() + showLiveCaption(message) + if (message.isCompleted !== true) return if ( !segmentId || acknowledgedSegmentIds.has(segmentId) @@ -666,8 +1241,11 @@ function subscribeTranscriber(): { const manager = getTranscriberManager() const listener: RealtimeTranscriberListener = { onReceiveTranscriberMessage: handleTranscriberMessage, - onRealtimeTranscriberStarted: () => undefined, - onRealtimeTranscriberStopped: (_roomId, robotId) => { + onRealtimeTranscriberStarted: (roomId) => { + observeRoomId(roomId) + }, + onRealtimeTranscriberStopped: (roomId, robotId) => { + observeRoomId(roomId) if (robotId !== transcriberRobotId) return transcriberRunning = false transcriberStoppedAt = Date.now() @@ -675,7 +1253,8 @@ function subscribeTranscriber(): { void stopTranscription('partial', true) } }, - onRealtimeTranscriberError: (_roomId, robotId, _error, errorMessage) => { + onRealtimeTranscriberError: (roomId, robotId, _error, errorMessage) => { + observeRoomId(roomId) if (robotId !== transcriberRobotId || transcriptionState.value === 'stopping') return notice.value = safeErrorMessage(new Error(errorMessage), '实时语音转写发生错误') void stopTranscription('partial', true) @@ -738,6 +1317,7 @@ async function performStartTranscription(): Promise { transcriptionSessionId = sessionId acknowledgedSegmentIds.clear() pendingSegments.clear() + clearLiveCaptions() lastTranscriberMessageAt = Date.now() transcriberStoppedAt = 0 notice.value = '正在准备录音文字存储…' @@ -841,6 +1421,7 @@ async function stopTranscription( transcriptionSessionId = '' acknowledgedSegmentIds.clear() pendingSegments.clear() + clearLiveCaptions() })().finally(() => { transcriptionStopPromise = null }) @@ -889,46 +1470,83 @@ function notifyHangup(status = 'ended'): Promise { endNotified = true phase.value = 'ended' statusText.value = mode.value === 'chat' ? '视频通话已结束,IM 保持连接' : '视频问诊已结束' + appendVideoCallStatus('ended', '视频通话已结束') hangupNotification = (async () => { - try { - if (transcriptionState.value !== 'idle') await stopTranscription('completed') - } catch (error) { - notice.value = safeErrorMessage(error, '录音文字收尾失败,请稍后检查面诊记录') - console.warn('[doctor-consultation] 录音文字收尾失败', notice.value) - } finally { - emit({ - source: 'doctor-call', - event: 'hangup', - diagnosisId: activeConfig?.diagnosisId, - status, - }) + const operations: Promise[] = [] + if (localRecordingState.value !== 'idle' || localRecordingSessionId) { + operations.push(stopLocalRecording()) } + if (transcriptionState.value !== 'idle') { + operations.push(stopTranscription('completed')) + } + const results = await Promise.allSettled(operations) + const failures = results + .filter((result): result is PromiseRejectedResult => result.status === 'rejected') + .map((result) => safeErrorMessage(result.reason, '录音资料收尾失败')) + if (failures.length) { + notice.value = failures.join(';').slice(0, 400) + console.warn('[doctor-consultation] 录音资料收尾失败', notice.value) + } + emit({ + source: 'doctor-call', + event: 'hangup', + diagnosisId: activeConfig?.diagnosisId, + status, + }) })() return hangupNotification } -function readRoomId(): string { - const raw = TUIStore.getData(StoreName.CALL, NAME.ROOM_ID) +function normalizeRoomId(raw: unknown): string { if (raw === undefined || raw === null) return '' const value = String(raw).trim() return value && value !== '0' ? value : '' } -function emitRoomId(): boolean { - const roomId = readRoomId() - if (!roomId || roomId === emittedRoomId) return Boolean(roomId) +function readRoomId(): string { + return normalizeRoomId(TUIStore.getData(StoreName.CALL, NAME.ROOM_ID)) +} + +function observeRoomId(rawRoomId: unknown): boolean { + if (!activeConfig || endNotified) return false + const roomId = normalizeRoomId(rawRoomId) + if (!roomId) return false + if (boundRoomId) return boundRoomId === roomId + + const now = Date.now() + const retryDelay = Math.min(10_000, 750 * (2 ** Math.min(roomBindingAttempts, 4))) + if (pendingRoomId === roomId && now - roomBindingSentAt < retryDelay) return false + emittedRoomId = roomId - emit({ source: 'doctor-call', event: 'room', diagnosisId: activeConfig?.diagnosisId, roomId }) - return true + pendingRoomId = roomId + roomBindingSentAt = now + roomBindingAttempts += 1 + emit({ source: 'doctor-call', event: 'room', diagnosisId: activeConfig.diagnosisId, roomId }) + return false +} + +function emitRoomId(): boolean { + return observeRoomId(readRoomId()) } async function pollRoomId(): Promise { - for (let attempt = 0; attempt < 40 && activeConfig && !endNotified; attempt += 1) { - if (emitRoomId()) return - await new Promise((resolve) => window.setTimeout(resolve, 50)) + const cycle = callCycleGeneration + while (activeConfig && !endNotified && cycle === callCycleGeneration) { + if (boundRoomId) return + emitRoomId() + await new Promise((resolve) => window.setTimeout(resolve, 250)) } } +function handleRoomIdChanged(): void { + emitRoomId() +} + +const roomIdWatchOptions = { + [NAME.ROOM_ID]: handleRoomIdChanged, +} +TUIStore.watch(StoreName.CALL, roomIdWatchOptions) + function handleStatusChanged(payload: unknown): void { const value = payload && typeof payload === 'object' ? (payload as { newStatus?: unknown }).newStatus @@ -939,6 +1557,7 @@ function handleStatusChanged(payload: unknown): void { const cycle = callCycleGeneration phase.value = 'connected' statusText.value = '视频问诊进行中' + appendVideoCallStatus('connected', '视频通话已接通') void pollRoomId() if (autoTranscriptionAttemptedGeneration !== cycle) { autoTranscriptionAttemptedGeneration = cycle @@ -947,10 +1566,18 @@ function handleStatusChanged(payload: unknown): void { notice.value = safeErrorMessage(error, '自动录音转文字启动失败') }) } + if (autoLocalRecordingAttemptedGeneration !== cycle) { + autoLocalRecordingAttemptedGeneration = cycle + void startLocalRecording().catch((error) => { + if (cycle !== callCycleGeneration || endNotified) return + notice.value = safeErrorMessage(error, '本机语音录音启动失败') + }) + } } else if (status === 'calling' || status.startsWith('dialing')) { if (endNotified || !activeConfig) return phase.value = 'dialing' statusText.value = '正在等待患者接听' + appendVideoCallStatus('dialing', '正在等待患者接听') } else if (status === 'idle' && activeConfig && !starting) { void notifyHangup(status) } @@ -998,8 +1625,13 @@ async function startVideo(): Promise { endNotified = false phase.value = 'starting' statusText.value = '正在创建安全视频通话' + appendVideoCallStatus('starting', '正在创建安全视频通话') transcriptionState.value = 'idle' transcriptionSessionId = '' + clearLiveCaptions() + localRecordingState.value = 'idle' + localRecordingSessionId = '' + localRecordingMimeType = '' notice.value = '' const allowed = await requestHostCallStart() if (!allowed) throw new Error(notice.value || '服务器未能创建视频通话记录') @@ -1012,7 +1644,12 @@ async function startVideo(): Promise { await nextTick() phase.value = 'dialing' statusText.value = '正在呼叫患者' + appendVideoCallStatus('dialing', '正在呼叫患者') emittedRoomId = '' + pendingRoomId = '' + boundRoomId = '' + roomBindingSentAt = 0 + roomBindingAttempts = 0 await TUICallKitAPI.calls({ userIDList: [activeConfig.targetUserId], type: TUICallType.VIDEO_CALL, @@ -1023,6 +1660,7 @@ async function startVideo(): Promise { const message = safeErrorMessage(error, '无法发起视频通话') phase.value = 'error' statusText.value = message + appendVideoCallStatus('failed', `视频通话发起失败:${message}`) endNotified = true emit({ source: 'doctor-call', event: 'error', diagnosisId: activeConfig.diagnosisId, message }) throw new Error(message) @@ -1058,6 +1696,25 @@ function screenshotResult(ok: boolean, message: string): void { notice.value = message || (ok ? '截图已保存到患者舌像资料' : '截图保存失败') } +function recordingResult(ok: boolean, message: string): void { + notice.value = message || (ok + ? '通话已自动录制,结束后将由云端完成 COS 文件收尾。' + : '自动云端录制未启动,请结束本次通话并检查 COS 配置。') +} + +function roomBindingResult(roomId: string, ok: boolean, message: string): void { + const normalized = normalizeRoomId(roomId) + if (!normalized || (emittedRoomId && normalized !== emittedRoomId)) return + if (ok) { + boundRoomId = normalized + pendingRoomId = '' + } else if (pendingRoomId === normalized) { + // Keep the failed room pending so pollRoomId retries it with exponential + // backoff. The desktop lifecycle releases only failed claims. + } + recordingResult(ok, message) +} + async function open(config: DoctorCallConfig): Promise { if (activeConfig) await close() activeConfig = normalizeConfig(config) @@ -1070,14 +1727,20 @@ async function open(config: DoctorCallConfig): Promise { hangupNotification = null callCycleGeneration += 1 autoTranscriptionAttemptedGeneration = -1 + autoLocalRecordingAttemptedGeneration = -1 phase.value = 'ready' transcriptionState.value = 'idle' transcriptionSessionId = '' + clearLiveCaptions() transcriptionGeneration += 1 transcriberRunning = false transcriberRobotId = '' acknowledgedSegmentIds.clear() pendingSegments.clear() + localRecordingState.value = 'idle' + localRecordingSessionId = '' + localRecordingMimeType = '' + localRecordingFatalError = '' notice.value = '' if (activeConfig.mode === 'chat') { try { @@ -1103,6 +1766,12 @@ async function close(): Promise { for (const pending of pendingTranscriptionStops.values()) pending.resolve(false) pendingTranscriptionStarts.clear() pendingTranscriptionStops.clear() + clearLiveCaptions() + for (const pending of pendingLocalRecordingStarts.values()) pending.resolve(false) + for (const pending of pendingLocalRecordingFinishes.values()) pending.resolve(false) + pendingLocalRecordingStarts.clear() + pendingLocalRecordingFinishes.clear() + await cleanupLocalRecordingGraph() await logoutChat() activeConfig = null phase.value = 'ended' @@ -1114,8 +1783,11 @@ window.doctorConsultation = { startVideo, hangup, hostCallReady, + recordingResult, + roomBindingResult, screenshotResult, transcriptionResult, + localRecordingResult, } window.doctorCall = { start: open, hangup } initializeQtWebChannel() @@ -1131,6 +1803,8 @@ createApp(App, { notice: readonly(notice), hasMoreMessages: readonly(hasMoreMessages), transcriptionState: readonly(transcriptionState), + localRecordingState: readonly(localRecordingState), + liveCaptions: readonly(liveCaptions), onSendText: sendText, onSendAttachment: sendAttachment, onLoadMore: () => loadMessages(true), diff --git a/app/video_companion/src/style.css b/app/video_companion/src/style.css index f03d4ea9a..829de0899 100644 --- a/app/video_companion/src/style.css +++ b/app/video_companion/src/style.css @@ -151,6 +151,57 @@ button:disabled { cursor: not-allowed; opacity: .55; } margin: 12px 0; } .message-row--mine { align-items: flex-end; } +.message-row--call-status { + align-items: center; + margin: 16px 0; +} +.call-status-event { + display: inline-flex; + align-items: center; + gap: 8px; + min-height: 32px; + padding: 0 12px; + border: 1px solid #dce2f2; + border-radius: 999px; + color: #617092; + background: rgba(255, 255, 255, .92); + font-size: 12px; + box-shadow: 0 4px 14px rgba(17, 31, 70, .04); +} +.call-status-event__icon { + display: grid; + place-items: center; + width: 20px; + height: 20px; + border-radius: 7px; + color: #5761f4; + background: #eef0ff; + font-size: 11px; +} +.call-status-event strong { + color: #34425f; + font-weight: 700; +} +.call-status-event time { + color: #8b97b2; + font-variant-numeric: tabular-nums; +} +.call-status-event--connected { + border-color: #bdebdc; + background: #f2fbf7; +} +.call-status-event--connected .call-status-event__icon { + color: #11986f; + background: #dff7ee; +} +.call-status-event--failed { + border-color: #f3c8cf; + background: #fff5f6; +} +.call-status-event--failed .call-status-event__icon { + color: #c43f50; + background: #ffe6e9; +} .message-meta { margin: 0 8px 5px; color: #8995a9; font-size: 11px; } .message-bubble { max-width: min(72%, 620px); @@ -285,6 +336,41 @@ button:disabled { cursor: not-allowed; opacity: .55; } } .live-status .status-dot { width: 7px; height: 7px; margin: 0; box-shadow: none; } +.live-captions { + position: absolute; + z-index: 38; + left: 50%; + bottom: 92px; + display: grid; + gap: 7px; + width: min(820px, calc(100% - 360px)); + transform: translateX(-50%); + pointer-events: none; +} +.live-captions p { + display: grid; + grid-template-columns: auto minmax(0, 1fr); + gap: 10px; + align-items: start; + width: fit-content; + max-width: 100%; + margin: 0 auto; + padding: 8px 14px; + border: 1px solid rgba(255, 255, 255, .2); + border-radius: 10px; + color: #fff; + background: rgba(9, 13, 20, .78); + box-shadow: 0 6px 24px rgba(0, 0, 0, .2); + font-size: 16px; + line-height: 1.55; + backdrop-filter: blur(8px); +} +.live-captions strong { + color: #aeb8ff; + white-space: nowrap; +} +.live-captions span { min-width: 0; word-break: break-word; } + .video-actions { position: absolute; z-index: 40; @@ -336,10 +422,80 @@ button:disabled { cursor: not-allowed; opacity: .55; } } .video-notice--error { border-color: rgba(242, 109, 109, .4); color: #ffe4e7; background: rgba(100, 31, 40, .88); } +.screenshot-dialog-backdrop { + position: absolute; + z-index: 120; + inset: 0; + display: grid; + place-items: center; + padding: 24px; + background: rgba(7, 11, 19, .76); + backdrop-filter: blur(5px); +} +.screenshot-dialog { + display: grid; + grid-template-rows: auto minmax(0, 1fr) auto auto; + gap: 14px; + width: min(920px, 92vw); + max-height: calc(100vh - 48px); + padding: 20px; + overflow: hidden; + border: 1px solid #e2e7f4; + border-radius: 18px; + color: #111f46; + background: #fff; + box-shadow: 0 28px 90px rgba(4, 10, 27, .34); +} +.screenshot-dialog > header, +.screenshot-dialog > footer { + display: flex; + align-items: center; + justify-content: space-between; + gap: 16px; +} +.screenshot-dialog h2 { margin: 2px 0 0; font-size: 20px; line-height: 1.35; } +.screenshot-dialog .eyebrow { margin: 0; color: #5761f4; } +.screenshot-dialog > header > button { + width: 36px; + height: 36px; + border: 0; + border-radius: 9px; + color: #7886aa; + background: #f2f4fb; + font-size: 24px; +} +.screenshot-preview-frame { + display: grid; + place-items: center; + min-height: 260px; + overflow: hidden; + border-radius: 12px; + background: #0b0f16; +} +.screenshot-preview-frame img { + display: block; + max-width: 100%; + max-height: min(62vh, 650px); + object-fit: contain; +} +.screenshot-dialog__hint { margin: 0; color: #617092; font-size: 13px; } +.screenshot-dialog > footer { justify-content: flex-end; } +.screenshot-dialog > footer button { + min-width: 112px; + padding: 10px 18px; + border-radius: 9px; + font-weight: 700; +} +.screenshot-cancel { border: 1px solid #dfe4f1; color: #3f4e75; background: #fff; } +.screenshot-confirm { border: 1px solid #5761f4; color: #fff; background: #5761f4; } +.screenshot-confirm:hover { background: #4c57e9; } + @media (max-width: 820px) { .consultation-shell { min-width: 620px; } .message-list { padding-inline: 18px; } .message-bubble { max-width: 82%; } + .live-captions { width: calc(100% - 36px); bottom: 88px; } + .live-captions p { font-size: 14px; } } /* Doctor workstation blue-white subwindow contract. Video pixels remain on diff --git a/server/app/adminapi/controller/doctor/AppointmentController.php b/server/app/adminapi/controller/doctor/AppointmentController.php index dab9a9c8d..6f9fe6fec 100755 --- a/server/app/adminapi/controller/doctor/AppointmentController.php +++ b/server/app/adminapi/controller/doctor/AppointmentController.php @@ -172,7 +172,7 @@ class AppointmentController extends BaseAdminController public function addDoctorNote() { $params = (new AppointmentValidate())->post()->goCheck('addDoctorNote'); - if (!DiagnosisLogic::canViewReadonlyDiagnosis( + if (!DiagnosisLogic::canManageDiagnosis( (int) $params['diagnosis_id'], $this->adminId, $this->adminInfo diff --git a/server/app/adminapi/controller/tcm/DiagnosisController.php b/server/app/adminapi/controller/tcm/DiagnosisController.php index 4015497ce..9e49b53f9 100755 --- a/server/app/adminapi/controller/tcm/DiagnosisController.php +++ b/server/app/adminapi/controller/tcm/DiagnosisController.php @@ -330,25 +330,15 @@ class DiagnosisController extends BaseAdminController * @notes 获取通话签名 * @return \think\response\Json */ - public function getCallSignature() - { - $params = $this->request->post(); - - if (empty($params['diagnosis_id'])) { - return $this->fail('诊单ID不能为空'); - } - - if (empty($params['patient_id'])) { - return $this->fail('患者ID不能为空'); - } - - // 传递当前管理员ID - $params['admin_id'] = $this->adminId; - - $result = DiagnosisLogic::getCallSignature($params); - if ($result) { - return $this->data($result); - } + public function getCallSignature() + { + $params = (new DiagnosisValidate())->post()->goCheck('callIdentity'); + $params['admin_id'] = (int) $this->adminId; + + $result = DiagnosisLogic::getCallSignature($params, $this->adminInfo); + if ($result) { + return $this->data($result); + } return $this->fail(DiagnosisLogic::getError()); } @@ -525,9 +515,9 @@ class DiagnosisController extends BaseAdminController * @notes 接通后发起腾讯云云端混流录制(需配置 CAM 与云点播) * @return \think\response\Json */ - public function startCloudRecording() - { - $params = $this->request->post(); + public function startCloudRecording() + { + $params = $this->request->post(); if (empty($params['diagnosis_id'])) { return $this->fail('诊单ID不能为空'); } @@ -536,12 +526,32 @@ class DiagnosisController extends BaseAdminController if ($result === false) { return $this->fail(DiagnosisLogic::getError()); } - - return $this->data($result); - } - - /** - * @notes 浏览器本地上传通话录制后,关联到通话记录(合并 recording_urls) + + return $this->data($result); + } + + /** + * @notes 分片上传本机通话录音或手动视频回放 + * @return \think\response\Json + */ + public function uploadCallRecording() + { + $params = $this->request->post(); + if (empty($params['diagnosis_id'])) { + return $this->fail('诊单ID不能为空'); + } + + $params['admin_id'] = (int)$this->adminId; + $result = DiagnosisLogic::uploadCallRecording($params); + if ($result === false) { + return $this->fail(DiagnosisLogic::getError()); + } + + return $this->data($result); + } + + /** + * @notes 浏览器本地上传通话录制后,关联到通话记录(合并 recording_urls) * @return \think\response\Json */ public function attachLocalCallRecording() diff --git a/server/app/adminapi/lists/doctor/AppointmentLists.php b/server/app/adminapi/lists/doctor/AppointmentLists.php index d6f10cd84..788e3f02a 100755 --- a/server/app/adminapi/lists/doctor/AppointmentLists.php +++ b/server/app/adminapi/lists/doctor/AppointmentLists.php @@ -293,20 +293,32 @@ class AppointmentLists extends BaseAdminDataLists implements ListsSearchInterfac $prescribedDiagnosisIds = $rxQ->column('diagnosis_id'); $prescribedDiagnosisIds = array_flip($prescribedDiagnosisIds ?: []); } - // 当前页预约关联的处方(按 appointment_id,取最新一条):用于「开方/查看」与审核状态 + // 当前页预约关联的处方(按 appointment_id,优先最新未作废,否则最新一条): + // 用于本次挂号的「开方/编辑/查看」与审核状态。 $appointmentIds = array_filter(array_map('intval', array_column($lists, 'id'))); $rxByAppointmentId = []; + $fallbackRxByAppointmentId = []; if (!empty($appointmentIds)) { $rxRows = Prescription::whereIn('appointment_id', $appointmentIds) ->whereNull('delete_time') - ->where('void_status', 0) ->order('id', 'desc') ->field(['id', 'appointment_id', 'audit_status', 'void_status', 'is_system_auto']) ->select() ->toArray(); foreach ($rxRows as $rx) { $aid = (int) ($rx['appointment_id'] ?? 0); - if ($aid > 0 && !isset($rxByAppointmentId[$aid])) { + if ($aid <= 0) { + continue; + } + if (!isset($fallbackRxByAppointmentId[$aid])) { + $fallbackRxByAppointmentId[$aid] = $rx; + } + if ((int) ($rx['void_status'] ?? 0) === 0 && !isset($rxByAppointmentId[$aid])) { + $rxByAppointmentId[$aid] = $rx; + } + } + foreach ($fallbackRxByAppointmentId as $aid => $rx) { + if (!isset($rxByAppointmentId[$aid])) { $rxByAppointmentId[$aid] = $rx; } } @@ -353,6 +365,8 @@ class AppointmentLists extends BaseAdminDataLists implements ListsSearchInterfac $apptId = (int) ($item['id'] ?? 0); $apptRx = $rxByAppointmentId[$apptId] ?? null; + $item['current_has_prescription'] = $apptRx !== null ? 1 : 0; + $item['current_prescription_id'] = $apptRx !== null ? (int) ($apptRx['id'] ?? 0) : 0; $item['prescription_audit_status'] = $apptRx !== null ? (int) ($apptRx['audit_status'] ?? -1) : -1; $item['prescription_void_status'] = $apptRx !== null ? (int) ($apptRx['void_status'] ?? 0) : 0; $item['prescription_is_system_auto'] = $apptRx !== null ? (int) ($apptRx['is_system_auto'] ?? 0) : 0; diff --git a/server/app/adminapi/lists/tcm/DiagnosisLists.php b/server/app/adminapi/lists/tcm/DiagnosisLists.php index ed5514430..008001218 100755 --- a/server/app/adminapi/lists/tcm/DiagnosisLists.php +++ b/server/app/adminapi/lists/tcm/DiagnosisLists.php @@ -282,17 +282,51 @@ class DiagnosisLists extends BaseAdminDataLists implements ListsSearchInterface // 关联是否开方:诊单是否有处方记录 $diagnosisIds = array_column($lists, 'id'); - $prescriptionMap = []; - if (!empty($diagnosisIds)) { - $prescriptionTbl = (new Prescription())->getTable(); - $prescribedIds = Prescription::whereIn('diagnosis_id', $diagnosisIds) - ->whereNull('delete_time') - ->column('diagnosis_id'); - $prescriptionMap = array_fill_keys($prescribedIds, 1); - } - foreach ($lists as &$item) { - $item['has_prescription'] = isset($prescriptionMap[$item['id']]) ? 1 : 0; - } + $prescriptionMap = []; + if (!empty($diagnosisIds)) { + $prescribedIds = Prescription::whereIn('diagnosis_id', $diagnosisIds) + ->whereNull('delete_time') + ->column('diagnosis_id'); + $prescriptionMap = array_fill_keys($prescribedIds, 1); + } + foreach ($lists as &$item) { + $item['has_prescription'] = isset($prescriptionMap[$item['id']]) ? 1 : 0; + } + + // 当前操作必须只认当前挂号的处方。has_prescription 继续表示诊单历史上曾开方, + // 不能再用它驱动本次挂号的“开方/编辑/查看”按钮。 + $currentRxByAppointment = []; + $fallbackRxByAppointment = []; + $appointmentIds = array_values(array_filter(array_unique(array_map( + 'intval', + array_column($lists, 'appointment_id') + )))); + if ($appointmentIds !== []) { + $currentRxRows = Prescription::whereIn('appointment_id', $appointmentIds) + ->whereNull('delete_time') + ->field(['id', 'appointment_id', 'audit_status', 'void_status']) + ->order('id', 'desc') + ->select() + ->toArray(); + foreach ($currentRxRows as $rx) { + $appointmentId = (int) ($rx['appointment_id'] ?? 0); + if ($appointmentId <= 0) { + continue; + } + if (!isset($fallbackRxByAppointment[$appointmentId])) { + $fallbackRxByAppointment[$appointmentId] = $rx; + } + if ((int) ($rx['void_status'] ?? 0) === 0 + && !isset($currentRxByAppointment[$appointmentId])) { + $currentRxByAppointment[$appointmentId] = $rx; + } + } + foreach ($fallbackRxByAppointment as $appointmentId => $rx) { + if (!isset($currentRxByAppointment[$appointmentId])) { + $currentRxByAppointment[$appointmentId] = $rx; + } + } + } // 复诊展示:业务上「已开方」即算有复诊,取该诊单下最新一条处方的时间与医师(优先未作废) $followupByDiag = []; @@ -346,17 +380,21 @@ class DiagnosisLists extends BaseAdminDataLists implements ListsSearchInterface ]; } } - foreach ($lists as &$item) { - $did = (int) $item['id']; - $fu = $followupByDiag[$did] ?? null; - $item['followup_time_text'] = ($item['has_prescription'] && $fu) ? ($fu['time_text'] ?? '') : ''; - $item['followup_doctor_name'] = ($item['has_prescription'] && $fu) ? ($fu['doctor_name'] ?? '—') : ''; - $item['followup_rx_voided'] = ($item['has_prescription'] && $fu && !empty($fu['voided'])) ? 1 : 0; - $item['prescription_audit_status'] = ($item['has_prescription'] && $fu) ? (int) ($fu['audit_status'] ?? -1) : -1; - $item['prescription_void_status'] = ($item['has_prescription'] && $fu) ? (int) ($fu['void_status'] ?? 0) : 0; - // 开方次数即复诊次数:1 张处方 = 第 1 次复诊,以此类推 - $item['followup_prescription_count'] = (int) ($rxCountByDiag[$did] ?? 0); - } + foreach ($lists as &$item) { + $did = (int) $item['id']; + $fu = $followupByDiag[$did] ?? null; + $currentAppointmentId = (int) ($item['appointment_id'] ?? 0); + $currentRx = $currentRxByAppointment[$currentAppointmentId] ?? null; + $item['followup_time_text'] = ($item['has_prescription'] && $fu) ? ($fu['time_text'] ?? '') : ''; + $item['followup_doctor_name'] = ($item['has_prescription'] && $fu) ? ($fu['doctor_name'] ?? '—') : ''; + $item['followup_rx_voided'] = ($item['has_prescription'] && $fu && !empty($fu['voided'])) ? 1 : 0; + $item['current_has_prescription'] = $currentRx !== null ? 1 : 0; + $item['current_prescription_id'] = $currentRx !== null ? (int) ($currentRx['id'] ?? 0) : 0; + $item['prescription_audit_status'] = $currentRx !== null ? (int) ($currentRx['audit_status'] ?? -1) : -1; + $item['prescription_void_status'] = $currentRx !== null ? (int) ($currentRx['void_status'] ?? 0) : 0; + // 开方次数即复诊次数:1 张处方 = 第 1 次复诊,以此类推 + $item['followup_prescription_count'] = (int) ($rxCountByDiag[$did] ?? 0); + } // 最近一条通话记录状态(列表行展示:通话中 / 已结束等) $latestCallByDiag = []; diff --git a/server/app/adminapi/logic/stats/ConversionLogic.php b/server/app/adminapi/logic/stats/ConversionLogic.php index 40f427dab..3e710d19a 100755 --- a/server/app/adminapi/logic/stats/ConversionLogic.php +++ b/server/app/adminapi/logic/stats/ConversionLogic.php @@ -966,7 +966,8 @@ class ConversionLogic * - 统计区间内 add_external_contact,按 (user_id, external_userid) 去重; * - 同一员工在区间开始前已加过该客户的重加不计(企微「添加时间」仍是首次跟进时间, * 删后再加会再推 add_external_contact,但不能当当天新客,否则会跨日重复计); - * - 加粉之后、统计结束前须有 msg_audit_approved(排除未完成链路的幽灵事件); + * - add_external_contact 是企微确认客户关系已建立后的权威事件;会话存档同意 + * msg_audit_approved 属于独立能力,不能作为加粉前置条件,否则未开通会话存档的员工会被整批清零; * - 加粉之后、统计结束前若出现 del_external_contact(客户从企微侧删除)则不计。 * 不扣减 del_follow_user:企微客户列表中改名带「删」的客户往往仍在列表中; * - 剔除非投放加粉:跟进人 add_way∈{1 扫一扫, 2 搜索手机号, 3 名片分享}; @@ -993,7 +994,7 @@ class ConversionLogic } } - $baseKey = self::requestRowsCacheKey('fans-effective-v6', [ + $baseKey = self::requestRowsCacheKey('fans-effective-v7', [ $startTimestamp, $endTimestamp, self::mediaChannelCacheKey($mediaChannel), @@ -1035,20 +1036,11 @@ class ConversionLogic $query = Db::name('qywx_external_contact_event') ->alias('e') ->where('e.change_type', 'add_external_contact') - ->where('e.event_time', 'between', [$startTimestamp, $endTimestamp]) - ->where('e.user_id', '<>', '') - ->where('e.external_userid', '<>', '') - ->whereRaw( - 'EXISTS (SELECT 1 FROM `' . $eventTable . '` audit_e' - . ' WHERE audit_e.user_id = e.user_id' - . ' AND audit_e.external_userid = e.external_userid' - . ' AND audit_e.change_type = ?' - . ' AND audit_e.event_time >= e.event_time' - . ' AND audit_e.event_time <= ?)', - ['msg_audit_approved', $endTimestamp] - ) - ->whereRaw( - 'NOT EXISTS (SELECT 1 FROM `' . $eventTable . '` del_e' + ->where('e.event_time', 'between', [$startTimestamp, $endTimestamp]) + ->where('e.user_id', '<>', '') + ->where('e.external_userid', '<>', '') + ->whereRaw( + 'NOT EXISTS (SELECT 1 FROM `' . $eventTable . '` del_e' . ' WHERE del_e.user_id = e.user_id' . ' AND del_e.external_userid = e.external_userid' . ' AND del_e.change_type = ?' diff --git a/server/app/adminapi/logic/tcm/DiagnosisLogic.php b/server/app/adminapi/logic/tcm/DiagnosisLogic.php index a7e4b7a7f..3fada03cf 100755 --- a/server/app/adminapi/logic/tcm/DiagnosisLogic.php +++ b/server/app/adminapi/logic/tcm/DiagnosisLogic.php @@ -855,68 +855,77 @@ class DiagnosisLogic extends BaseLogic } /** - * @notes 获取通话签名 - * @param array $params - * @return array|bool - */ - public static function getCallSignature(array $params) - { - try { - // 获取配置 - $config = self::getTrtcConfig(); - - if (!$config) { - self::setError('请先配置腾讯云TRTC参数'); - return false; - } - - // 获取当前管理员ID(从参数中获取) - $adminId = $params['admin_id'] ?? 0; - $patientId = $params['patient_id'] ?? 0; - - if (!$adminId) { - self::setError('获取管理员信息失败'); - return false; - } - - if (!$patientId) { - self::setError('获取患者信息失败'); - return false; - } - - // 医生userId - $doctorUserId = 'doctor_' . $adminId; - $query = Diagnosis::where('id', $patientId) - ->where('delete_time', null)->find(); - if(!$query){ - self::setError('患者诊单已被删除'); - return false; - } - - // 患者userId(必须与小程序端一致) - $patientUserId = 'patient_' . $patientId; - - // 生成医生的 UserSig - $userSig = self::generateUserSig($config['sdkAppId'], $config['secretKey'], $doctorUserId); - - if (!$userSig) { - self::setError('生成签名失败'); - return false; - } - - // 导入医生账号到IM - self::importDoctorAccountToIm($adminId, $doctorUserId); - - // 确保患者账号也已导入IM(用于跨平台通话) - self::ensurePatientImAccount($patientId, $patientUserId); - - return [ - 'sdkAppId' => (int)$config['sdkAppId'], // 确保返回整数 - 'userId' => $doctorUserId, // 医生的userId - 'userSig' => $userSig, - 'assistant_id'=>$query->assistant_id?'doctor_'.$query->assistant_id:'', - 'patientUserId' => $patientUserId, // 患者的userId(用于发起通话) - 'expireTime' => 86400, // 24小时 + * @notes 获取通话签名 + * @param array $params + * @param array $adminInfo + * @return array|bool + */ + public static function getCallSignature(array $params, array $adminInfo = []) + { + try { + $adminId = (int) ($params['admin_id'] ?? 0); + $diagnosisId = (int) ($params['diagnosis_id'] ?? 0); + $patientId = (int) ($params['patient_id'] ?? 0); + + if ($adminId <= 0) { + self::setError('获取管理员信息失败'); + return false; + } + + if ($diagnosisId <= 0 || $patientId <= 0) { + self::setError('诊单或患者信息不完整'); + return false; + } + + // Authorize the diagnosis before reading TRTC configuration or importing IM accounts. + if (!self::canManageDiagnosis($diagnosisId, $adminId, $adminInfo)) { + self::setError('诊单不存在、患者不匹配或无权访问'); + return false; + } + + $diagnosis = Diagnosis::where('id', $diagnosisId) + ->where('patient_id', $patientId) + ->whereNull('delete_time') + ->where('status', 1) + ->find(); + if (!$diagnosis) { + self::setError('诊单不存在、患者不匹配或无权访问'); + return false; + } + + $config = self::getTrtcConfig(); + if (!$config) { + self::setError('请先配置腾讯云TRTC参数'); + return false; + } + + $doctorUserId = 'doctor_' . $adminId; + // 患者userId(必须与小程序端一致) + $patientUserId = 'patient_' . $patientId; + + // 生成医生的 UserSig + $userSig = self::generateUserSig($config['sdkAppId'], $config['secretKey'], $doctorUserId); + + if (!$userSig) { + self::setError('生成签名失败'); + return false; + } + + // 导入医生账号到IM + self::importDoctorAccountToIm($adminId, $doctorUserId); + + // 确保患者账号也已导入IM(用于跨平台通话) + self::ensurePatientImAccount($patientId, $patientUserId); + + return [ + 'sdkAppId' => (int)$config['sdkAppId'], // 确保返回整数 + 'userId' => $doctorUserId, // 医生的userId + 'userSig' => $userSig, + 'assistant_id' => $diagnosis->assistant_id ? 'doctor_' . $diagnosis->assistant_id : '', + 'patientUserId' => $patientUserId, // 患者的userId(用于发起通话) + 'diagnosis_id' => $diagnosisId, + 'patient_id' => $patientId, + 'expireTime' => 86400, // 24小时 // 与 .env [trtc] ISLOCHOSTVOD 一致:true 允许浏览器本地录制并上传 'isLochostVod' => (bool)config('trtc.is_lochost_vod', false), ]; @@ -1645,12 +1654,13 @@ class DiagnosisLogic extends BaseLogic * @param array $params * @return bool */ - public static function endCall(array $params): bool - { - try { - // 获取当前管理员ID(从参数中获取) - $adminId = (int)($params['admin_id'] ?? 0); - $diagnosisId = (int)($params['diagnosis_id'] ?? 0); + public static function endCall(array $params): bool + { + try { + // 获取当前管理员ID(从参数中获取) + $adminId = (int)($params['admin_id'] ?? 0); + $diagnosisId = (int)($params['diagnosis_id'] ?? 0); + $callRecordId = (int)($params['call_record_id'] ?? 0); if ($adminId <= 0) { self::setError('获取管理员信息失败'); @@ -1661,26 +1671,47 @@ class DiagnosisLogic extends BaseLogic return false; } - // 优先匹配「当前医生 + 进行中」,与 startCloudRecording / bindCallRoom 一致 - $record = \app\common\model\tcm\CallRecord::where('diagnosis_id', $diagnosisId) - ->where('caller_id', $adminId) - ->where('status', 1) - ->order('id', 'desc') - ->find(); - if (!$record) { - $record = \app\common\model\tcm\CallRecord::where('diagnosis_id', $diagnosisId) - ->where('status', 1) - ->order('id', 'desc') - ->find(); - if ($record) { - \think\facade\Log::warning('endCall: 未匹配 caller_id,已回退到该诊单最新进行中记录', [ - 'diagnosis_id' => $diagnosisId, - 'admin_id' => $adminId, - 'record_caller_id' => $record['caller_id'] ?? null, - 'call_record_id' => $record['id'] ?? null, - ]); - } - } + $record = null; + if ($callRecordId > 0) { + $record = \app\common\model\tcm\CallRecord::where('id', $callRecordId) + ->where('diagnosis_id', $diagnosisId) + ->where('caller_id', $adminId) + ->where('caller_type', 'doctor') + ->find(); + if (!$record) { + self::setError('通话记录不存在或无权操作'); + return false; + } + if ((int)($record['status'] ?? 0) === 2) { + // afterCalling / Store idle may report the same exact call twice. + return true; + } + if ((int)($record['status'] ?? 0) !== 1) { + self::setError('通话记录状态不可结束'); + return false; + } + } else { + // Legacy web callers may not yet send call_record_id. + $record = \app\common\model\tcm\CallRecord::where('diagnosis_id', $diagnosisId) + ->where('caller_id', $adminId) + ->where('status', 1) + ->order('id', 'desc') + ->find(); + if (!$record) { + $record = \app\common\model\tcm\CallRecord::where('diagnosis_id', $diagnosisId) + ->where('status', 1) + ->order('id', 'desc') + ->find(); + if ($record) { + \think\facade\Log::warning('endCall: 未传 call_record_id 且未匹配 caller_id,已回退到该诊单最新进行中记录', [ + 'diagnosis_id' => $diagnosisId, + 'admin_id' => $adminId, + 'record_caller_id' => $record['caller_id'] ?? null, + 'call_record_id' => $record['id'] ?? null, + ]); + } + } + } if (!$record) { // 前端常重复回调 endCall(afterCalling + Store idle),第一条已结束则不再告警 @@ -1861,9 +1892,20 @@ class DiagnosisLogic extends BaseLogic if (is_array($decoded)) { $urls = $decoded; } - } + } $record['recording_urls_list'] = $urls; $record['recording_status_text'] = self::recordingStatusText((int)($record['recording_status'] ?? 0)); + $localAudioUrls = []; + if (!empty($record['local_audio_urls'])) { + $decodedLocalAudioUrls = json_decode((string)$record['local_audio_urls'], true); + if (is_array($decodedLocalAudioUrls)) { + $localAudioUrls = $decodedLocalAudioUrls; + } + } + $record['local_audio_urls_list'] = $localAudioUrls; + $record['local_audio_status_text'] = self::localAudioStatusText( + (int)($record['local_audio_status'] ?? 0) + ); $record['transcription_status_text'] = self::transcriptionStatusText( (string)($record['transcription_status'] ?? '') ); @@ -2184,11 +2226,12 @@ class DiagnosisLogic extends BaseLogic * @notes 将 TRTC 房间号写入当前诊单通话记录,并尝试 API 合流云端录制 * @return array{cloud_recording?:array}|false 成功返回 data 数组(供接口带给前端);失败 false */ - public static function bindCallRoom(array $params) - { - try { - $diagnosisId = (int)($params['diagnosis_id'] ?? 0); - $roomId = trim((string)($params['room_id'] ?? '')); + public static function bindCallRoom(array $params) + { + try { + $diagnosisId = (int)($params['diagnosis_id'] ?? 0); + $callRecordId = (int)($params['call_record_id'] ?? 0); + $roomId = trim((string)($params['room_id'] ?? '')); if ($diagnosisId <= 0 || $roomId === '') { self::setError('诊单ID或房间号不能为空'); return false; @@ -2196,24 +2239,34 @@ class DiagnosisLogic extends BaseLogic $adminId = (int)($params['admin_id'] ?? 0); - // 必须与 startCloudRecording 使用同一条「进行中 + 当前管理员」记录写 room_id,否则会写到别的记录上,合流 API 读到 room_id 仍为空 → 关闭全局录制后无任何文件 - $record = null; - if ($adminId > 0) { - $record = \app\common\model\tcm\CallRecord::where('diagnosis_id', $diagnosisId) - ->where('status', 1) - ->where('caller_id', $adminId) + $record = null; + if ($callRecordId > 0) { + $record = \app\common\model\tcm\CallRecord::where('id', $callRecordId) + ->where('diagnosis_id', $diagnosisId) + ->where('status', 1) + ->where('caller_id', $adminId) + ->where('caller_type', 'doctor') + ->find(); + if (!$record) { + self::setError('通话记录不存在或无权绑定房间'); + return false; + } + } elseif ($adminId > 0) { + $record = \app\common\model\tcm\CallRecord::where('diagnosis_id', $diagnosisId) + ->where('status', 1) + ->where('caller_id', $adminId) ->order('id', 'desc') ->find(); } - if (!$record) { - $record = \app\common\model\tcm\CallRecord::where('diagnosis_id', $diagnosisId) - ->where('status', 1) + if (!$record && $callRecordId <= 0) { + $record = \app\common\model\tcm\CallRecord::where('diagnosis_id', $diagnosisId) + ->where('status', 1) ->order('id', 'desc') ->find(); } - if (!$record) { - $record = \app\common\model\tcm\CallRecord::where('diagnosis_id', $diagnosisId) - ->where('room_id', '') + if (!$record && $callRecordId <= 0) { + $record = \app\common\model\tcm\CallRecord::where('diagnosis_id', $diagnosisId) + ->where('room_id', '') ->order('id', 'desc') ->find(); } @@ -2233,10 +2286,11 @@ class DiagnosisLogic extends BaseLogic 'message' => '未尝试合流录制(admin_id 为空)', ]; if ($adminId > 0) { - $cloudRec = self::startCloudRecording([ - 'diagnosis_id' => $diagnosisId, - 'admin_id' => $adminId, - ], true); + $cloudRec = self::startCloudRecording([ + 'diagnosis_id' => $diagnosisId, + 'admin_id' => $adminId, + 'call_record_id' => (int)$record['id'], + ], true); if ($cloudRec === false) { \think\facade\Log::warning('bindCallRoom: startCloudRecording 未执行或异常', [ 'diagnosis_id' => $diagnosisId, @@ -2286,10 +2340,11 @@ class DiagnosisLogic extends BaseLogic */ public static function startCloudRecording(array $params, bool $silent = false) { - try { - $diagnosisId = (int)($params['diagnosis_id'] ?? 0); - $adminId = (int)($params['admin_id'] ?? 0); - if ($diagnosisId <= 0 || $adminId <= 0) { + try { + $diagnosisId = (int)($params['diagnosis_id'] ?? 0); + $adminId = (int)($params['admin_id'] ?? 0); + $callRecordId = (int)($params['call_record_id'] ?? 0); + if ($diagnosisId <= 0 || $adminId <= 0) { if (!$silent) { self::setError('参数错误'); } @@ -2297,24 +2352,40 @@ class DiagnosisLogic extends BaseLogic return false; } - $record = \app\common\model\tcm\CallRecord::where('diagnosis_id', $diagnosisId) - ->where('caller_id', $adminId) - ->where('status', 1) - ->order('id', 'desc') - ->find(); - if (!$record) { - $record = \app\common\model\tcm\CallRecord::where('diagnosis_id', $diagnosisId) - ->where('status', 1) - ->order('id', 'desc') - ->find(); - if ($record) { - \think\facade\Log::warning('startCloudRecording: 未找到 caller_id 匹配的进行中记录,已回退到该诊单最新进行中记录', [ - 'diagnosis_id' => $diagnosisId, - 'admin_id' => $adminId, - 'record_caller_id' => $record['caller_id'] ?? null, - ]); - } - } + $record = null; + if ($callRecordId > 0) { + $record = \app\common\model\tcm\CallRecord::where('id', $callRecordId) + ->where('diagnosis_id', $diagnosisId) + ->where('caller_id', $adminId) + ->where('caller_type', 'doctor') + ->where('status', 1) + ->find(); + if (!$record) { + if (!$silent) { + self::setError('通话记录不存在或无权开启云端录制'); + } + return false; + } + } else { + $record = \app\common\model\tcm\CallRecord::where('diagnosis_id', $diagnosisId) + ->where('caller_id', $adminId) + ->where('status', 1) + ->order('id', 'desc') + ->find(); + if (!$record) { + $record = \app\common\model\tcm\CallRecord::where('diagnosis_id', $diagnosisId) + ->where('status', 1) + ->order('id', 'desc') + ->find(); + if ($record) { + \think\facade\Log::warning('startCloudRecording: 未传 call_record_id 且未找到 caller_id 匹配的进行中记录,已回退到该诊单最新进行中记录', [ + 'diagnosis_id' => $diagnosisId, + 'admin_id' => $adminId, + 'record_caller_id' => $record['caller_id'] ?? null, + ]); + } + } + } if (!$record) { if (!$silent) { self::setError('没有进行中的通话记录'); @@ -2389,9 +2460,9 @@ class DiagnosisLogic extends BaseLogic /** * @notes 医生端浏览器本地录制上传后,将文件访问地址合并写入当前诊单下该医生的最近一条通话记录 */ - public static function attachLocalCallRecording(array $params): bool - { - try { + public static function attachLocalCallRecording(array $params): bool + { + try { $diagnosisId = (int)($params['diagnosis_id'] ?? 0); $adminId = (int)($params['admin_id'] ?? 0); $fileUrl = trim((string)($params['file_url'] ?? '')); @@ -2428,12 +2499,61 @@ class DiagnosisLogic extends BaseLogic } catch (\Exception $e) { self::setError($e->getMessage()); - return false; - } - } - - /** - * @notes 诊单回放视频分片上传,完成后显式关联到指定通话记录 + return false; + } + } + + /** + * 将医生工作站本机录音独立关联到通话记录。 + * + * 本机音频与腾讯云混流视频分别持久化,避免录音上传成功后被误计为 + * 云端视频已生成。 + */ + public static function attachLocalCallAudio(array $params): bool + { + try { + $diagnosisId = (int)($params['diagnosis_id'] ?? 0); + $adminId = (int)($params['admin_id'] ?? 0); + $fileUrl = trim((string)($params['file_url'] ?? '')); + $callRecordId = (int)($params['call_record_id'] ?? 0); + if ($diagnosisId <= 0 || $adminId <= 0 || $fileUrl === '') { + self::setError('参数错误'); + + return false; + } + + $record = self::resolveCallRecordForAttachment($diagnosisId, $adminId, $callRecordId); + if (!$record) { + self::setError('未找到通话记录'); + + return false; + } + + $previousUrls = []; + if (!empty($record->local_audio_urls)) { + $decodedUrls = json_decode((string)$record->local_audio_urls, true); + if (is_array($decodedUrls)) { + $previousUrls = $decodedUrls; + } + } + $mergedUrls = array_values(array_unique(array_merge($previousUrls, [$fileUrl]))); + + $record->save([ + 'local_audio_urls' => json_encode($mergedUrls, JSON_UNESCAPED_UNICODE), + 'local_audio_status' => 2, + 'update_time' => time(), + ]); + + return true; + } catch (\Exception $e) { + self::setError($e->getMessage()); + + return false; + } + } + + /** + * @notes 诊单回放视频分片上传,完成后显式关联到指定通话记录 * @param array $params * @return array|false */ @@ -2445,11 +2565,12 @@ class DiagnosisLogic extends BaseLogic $diagnosisId = (int)($params['diagnosis_id'] ?? 0); $callRecordId = (int)($params['call_record_id'] ?? 0); $adminId = (int)($params['admin_id'] ?? 0); - $uploadId = trim((string)($params['upload_id'] ?? '')); - $fileName = trim((string)($params['file_name'] ?? '')); - $fileSize = (int)($params['file_size'] ?? 0); - $chunkIndex = (int)($params['chunk_index'] ?? -1); - $chunkTotal = (int)($params['chunk_total'] ?? 0); + $uploadId = trim((string)($params['upload_id'] ?? '')); + $fileName = trim((string)($params['file_name'] ?? '')); + $mimeType = strtolower(trim((string)($params['mime_type'] ?? ''))); + $fileSize = (int)($params['file_size'] ?? 0); + $chunkIndex = (int)($params['chunk_index'] ?? -1); + $chunkTotal = (int)($params['chunk_total'] ?? 0); if ( $diagnosisId <= 0 || @@ -2462,13 +2583,27 @@ class DiagnosisLogic extends BaseLogic ) { self::setError('上传参数不完整'); return false; - } - - $ext = strtolower((string)pathinfo($fileName, PATHINFO_EXTENSION)); - if ($ext === '' || !in_array($ext, config('project.file_video'), true)) { - self::setError('视频格式不支持'); - return false; - } + } + + $ext = strtolower((string)pathinfo($fileName, PATHINFO_EXTENSION)); + $audioExtensions = ['webm', 'ogg', 'opus', 'mp3', 'wav', 'm4a', 'aac', 'amr', 'wma']; + $videoExtensions = (array)config('project.file_video'); + $hasAudioMime = str_starts_with($mimeType, 'audio/'); + $hasVideoMime = str_starts_with($mimeType, 'video/'); + $isAmbiguousWebm = $ext === 'webm'; + $isVideo = in_array($ext, $videoExtensions, true) + && ( + $mimeType === '' + || $hasVideoMime + || (!$isAmbiguousWebm && $hasAudioMime) + ); + $isLocalAudio = !$isVideo + && $hasAudioMime + && in_array($ext, $audioExtensions, true); + if (!$isLocalAudio && !$isVideo) { + self::setError('音视频格式不支持'); + return false; + } if ($callRecordId <= 0) { $record = self::createSyntheticCallRecord($diagnosisId, $adminId, $fileName); @@ -2497,10 +2632,12 @@ class DiagnosisLogic extends BaseLogic 'diagnosis_id' => $diagnosisId, 'call_record_id' => $callRecordId, 'admin_id' => $adminId, - 'file_name' => $fileName, - 'file_size' => $fileSize, - 'chunk_total' => $chunkTotal, - ], JSON_UNESCAPED_UNICODE)); + 'file_name' => $fileName, + 'file_size' => $fileSize, + 'mime_type' => $mimeType, + 'media_kind' => $isLocalAudio ? 'local_audio' : 'video', + 'chunk_total' => $chunkTotal, + ], JSON_UNESCAPED_UNICODE)); $chunkPath = $uploadDir . DIRECTORY_SEPARATOR . self::callRecordingChunkName($chunkIndex); $moved = $chunkFile->move($uploadDir, basename($chunkPath)); @@ -2527,21 +2664,29 @@ class DiagnosisLogic extends BaseLogic return false; } - $uploadResult = self::storeMergedCallRecording($mergedPath, $fileName, $adminId); - if (empty($uploadResult['uri'])) { - self::setError('保存视频失败'); - return false; - } - - $attached = self::attachLocalCallRecording([ - 'diagnosis_id' => $diagnosisId, - 'call_record_id' => $callRecordId, - 'admin_id' => $adminId, - 'file_url' => (string)$uploadResult['uri'], - ]); - if (!$attached) { - return false; - } + $uploadResult = self::storeMergedCallRecording( + $mergedPath, + $fileName, + $adminId, + $isLocalAudio + ); + if (empty($uploadResult['uri'])) { + self::setError($isLocalAudio ? '保存本机录音失败' : '保存视频失败'); + return false; + } + + $attachmentParams = [ + 'diagnosis_id' => $diagnosisId, + 'call_record_id' => $callRecordId, + 'admin_id' => $adminId, + 'file_url' => (string)$uploadResult['uri'], + ]; + $attached = $isLocalAudio + ? self::attachLocalCallAudio($attachmentParams) + : self::attachLocalCallRecording($attachmentParams); + if (!$attached) { + return false; + } self::cleanupCallRecordingChunkDir($uploadDir); @@ -2550,10 +2695,12 @@ class DiagnosisLogic extends BaseLogic 'uploaded_chunks' => $chunkTotal, 'chunk_total' => $chunkTotal, 'call_record_id' => $callRecordId, - 'file_id' => $uploadResult['id'] ?? 0, - 'file_url' => $uploadResult['uri'] ?? '', - 'recording_status' => 2, - ]; + 'file_id' => $uploadResult['id'] ?? 0, + 'file_url' => $uploadResult['uri'] ?? '', + 'media_kind' => $isLocalAudio ? 'local_audio' : 'video', + 'recording_status' => $isLocalAudio ? 0 : 2, + 'local_audio_status' => $isLocalAudio ? 2 : 0, + ]; } catch (\Throwable $e) { if ($mergedPath !== '' && is_file($mergedPath)) { @unlink($mergedPath); @@ -2656,19 +2803,31 @@ class DiagnosisLogic extends BaseLogic } } - private static function recordingStatusText(int $status): string - { - $map = [ + private static function recordingStatusText(int $status): string + { + $map = [ 0 => '无录制', 1 => '录制中', 2 => '已生成', 3 => '录制失败', ]; - - return $map[$status] ?? '未知'; - } - - /** + + return $map[$status] ?? '未知'; + } + + private static function localAudioStatusText(int $status): string + { + $map = [ + 0 => '无本地录音', + 1 => '上传中', + 2 => '已保存', + 3 => '上传失败', + ]; + + return $map[$status] ?? '未知'; + } + + /** * @notes 获取TRTC配置 * @return array|null */ @@ -4228,12 +4387,52 @@ class DiagnosisLogic extends BaseLogic } /** - * 与 readonlyDetail 共用的诊单行级可见性入口。 + * 与诊单列表共用语义的只读行级可见性入口。 * - * 复用“我的患者”统一行权策略:医生按有效接诊关系,医助按归属关系, - * 团队管理角色才使用 DataScope。不存在与越权使用同一错误避免枚举。 + * 医助仍仅能查看本人归属诊单;其他角色按 DataScope 查看列表范围内的诊单。 + * “我的患者”的本人接诊关系只用于管理/写操作,不能限制通用诊单只读页。 + * 不存在与越权使用同一错误,避免枚举诊单。 */ public static function canViewReadonlyDiagnosis(int $diagnosisId, int $adminId, array $adminInfo): bool + { + self::$error = ''; + if ($diagnosisId <= 0 || $adminId <= 0) { + self::setError('诊单不存在或无权访问'); + + return false; + } + + $query = Diagnosis::where('id', $diagnosisId)->whereNull('delete_time'); + $roleIds = array_map('intval', AdminRole::where('admin_id', $adminId)->column('role_id')); + if (in_array(2, $roleIds, true)) { + $query->where('assistant_id', $adminId); + } + + if (DataScopeService::isEnabled()) { + $visibleIds = DataScopeService::getVisibleAdminIds($adminId, $adminInfo); + if ($visibleIds === []) { + self::setError('诊单不存在或无权访问'); + + return false; + } + if (is_array($visibleIds)) { + $query->whereIn('assistant_id', $visibleIds); + } + } + + if (!$query->find()) { + self::setError('诊单不存在或无权访问'); + + return false; + } + + return true; + } + + /** + * 诊单管理/写操作的行级权限入口,保留“我的患者”的本人关系约束。 + */ + public static function canManageDiagnosis(int $diagnosisId, int $adminId, array $adminInfo): bool { self::$error = ''; if (!MyPatientLogic::canAccessDiagnosis($diagnosisId, $adminId, $adminInfo)) { @@ -4526,25 +4725,33 @@ class DiagnosisLogic extends BaseLogic } } - private static function storeMergedCallRecording(string $mergedPath, string $fileName, int $adminId): array - { - $config = [ - 'default' => ConfigService::get('storage', 'default', 'local'), + private static function storeMergedCallRecording( + string $mergedPath, + string $fileName, + int $adminId, + bool $isLocalAudio = false + ): array + { + $config = [ + 'default' => ConfigService::get('storage', 'default', 'local'), 'engine' => ConfigService::get('storage') ?? ['local' => []], ]; - - $storageDriver = new StorageDriver($config); - $storageDriver->setUploadFileByReal($mergedPath); - $saveDir = 'uploads/video/' . date('Ymd'); - if (!$storageDriver->upload($saveDir)) { - throw new \RuntimeException($storageDriver->getError() ?: '上传视频到存储失败'); - } - - $relativePath = $saveDir . '/' . str_replace('\\', '/', $storageDriver->getFileName()); - $storedFile = FileModel::create([ - 'cid' => 0, - 'type' => FileEnum::VIDEO_TYPE, - 'name' => mb_substr($fileName, 0, 128), + + $storageDriver = new StorageDriver($config); + $storageDriver->setUploadFileByReal($mergedPath); + $saveDir = ($isLocalAudio ? 'uploads/audio/' : 'uploads/video/') . date('Ymd'); + if (!$storageDriver->upload($saveDir)) { + throw new \RuntimeException( + $storageDriver->getError() + ?: ($isLocalAudio ? '上传本机录音到存储失败' : '上传视频到存储失败') + ); + } + + $relativePath = $saveDir . '/' . str_replace('\\', '/', $storageDriver->getFileName()); + $storedFile = FileModel::create([ + 'cid' => 0, + 'type' => $isLocalAudio ? FileEnum::FILE_TYPE : FileEnum::VIDEO_TYPE, + 'name' => mb_substr($fileName, 0, 128), 'uri' => $relativePath, 'source' => FileEnum::SOURCE_ADMIN, 'source_id' => $adminId, diff --git a/server/app/adminapi/logic/tcm/PrescriptionLogic.php b/server/app/adminapi/logic/tcm/PrescriptionLogic.php index 0d2410067..431c52cc2 100755 --- a/server/app/adminapi/logic/tcm/PrescriptionLogic.php +++ b/server/app/adminapi/logic/tcm/PrescriptionLogic.php @@ -4,7 +4,6 @@ declare(strict_types=1); namespace app\adminapi\logic\tcm; -use app\adminapi\logic\firstvisit\MyPatientLogic; use app\common\model\auth\Admin; use app\common\model\doctor\Appointment; use app\common\model\doctor\Medicine as DoctorMedicine; @@ -938,8 +937,8 @@ class PrescriptionLogic public static function listByDiagnosis(int $diagnosisId, int $viewerAdminId, array $viewerAdminInfo): array { self::$error = ''; - if (!MyPatientLogic::canAccessDiagnosis($diagnosisId, $viewerAdminId, $viewerAdminInfo)) { - self::setError('诊单不存在或无权访问'); + if (!DiagnosisLogic::canViewReadonlyDiagnosis($diagnosisId, $viewerAdminId, $viewerAdminInfo)) { + self::setError(DiagnosisLogic::getError() ?: '诊单不存在或无权访问'); return []; } @@ -968,16 +967,29 @@ class PrescriptionLogic /** * 根据预约ID获取处方(带权限检查) */ - public static function getByAppointment(int $appointmentId, int $viewerAdminId, array $viewerAdminInfo): ?array - { + public static function getByAppointment(int $appointmentId, int $viewerAdminId, array $viewerAdminInfo): ?array + { self::$error = ''; - $row = Prescription::where('appointment_id', $appointmentId) + $rows = Prescription::where('appointment_id', $appointmentId) ->whereNull('delete_time') ->order('id', 'desc') - ->find(); - - if (!$row) { - return null; + ->select(); + + $row = null; + $fallback = null; + foreach ($rows as $candidate) { + if ($fallback === null) { + $fallback = $candidate; + } + if ((int) ($candidate->void_status ?? 0) === 0) { + $row = $candidate; + break; + } + } + $row = $row ?? $fallback; + + if (!$row) { + return null; } // 权限检查:只返回当前用户有权限查看的处方 diff --git a/server/app/adminapi/validate/tcm/DiagnosisValidate.php b/server/app/adminapi/validate/tcm/DiagnosisValidate.php index ef36db8be..b4a38fd74 100755 --- a/server/app/adminapi/validate/tcm/DiagnosisValidate.php +++ b/server/app/adminapi/validate/tcm/DiagnosisValidate.php @@ -133,12 +133,21 @@ class DiagnosisValidate extends BaseValidate } /** 拉取跟踪备注列表:诊单ID */ - public function sceneTrackingNotes() - { - return $this->only(['diagnosis_id']); - } - - public function sceneGenerateQrcode() + public function sceneTrackingNotes() + { + return $this->only(['diagnosis_id']); + } + + /** IM / video identity: validate shape here; ownership is checked in the logic layer. */ + public function sceneCallIdentity() + { + return $this->only(['diagnosis_id', 'patient_id']) + ->remove('diagnosis_id', 'checkDiagnosisId') + ->append('diagnosis_id', 'gt:0') + ->append('patient_id', 'require|integer|gt:0'); + } + + public function sceneGenerateQrcode() { return $this->only(['diagnosis_id', 'doctor_id', 'patient_id', 'share_user_id', 'mini_program_path']) // The global diagnosis_id rule is required for diagnosis APIs, but diff --git a/server/app/common/service/storage/engine/Server.php b/server/app/common/service/storage/engine/Server.php index 27276e21c..bfed731ff 100755 --- a/server/app/common/service/storage/engine/Server.php +++ b/server/app/common/service/storage/engine/Server.php @@ -4,6 +4,7 @@ namespace app\common\service\storage\engine; use think\Request; use think\Exception; +use think\File; /** * 存储引擎抽象类 @@ -67,12 +68,22 @@ abstract class Server { // 设置为系统内部上传 $this->isInternal = true; + // 内部上传的是磁盘文件,不是 HTTP UploadedFile。这里统一成与 + // 普通上传相同的存储契约:云存储需要 realPath,本地存储需要 File 对象。 + $this->file = new File($filePath); + $realPath = $this->file->getRealPath(); + if ($realPath === false || !$this->file->isReadable()) { + throw new Exception('内部上传文件不可读取'); + } // 文件信息 $this->fileInfo = [ - 'name' => basename($filePath), - 'size' => filesize($filePath), - 'tmp_name' => $filePath, - 'error' => 0, + 'ext' => strtolower($this->file->getExtension()), + 'size' => $this->file->getSize(), + 'mime' => $this->file->getMime(), + 'name' => basename($filePath), + 'realPath' => $realPath, + 'tmp_name' => $realPath, + 'error' => UPLOAD_ERR_OK, ]; // 生成保存文件名 $this->fileName = $this->buildSaveName(); @@ -118,7 +129,11 @@ abstract class Server protected function getRealPath() { - return $this->fileInfo['realPath']; + $realPath = $this->fileInfo['realPath'] ?? ''; + if (!is_string($realPath) || $realPath === '' || !is_file($realPath)) { + throw new Exception('上传文件真实路径无效'); + } + return $realPath; } /** diff --git a/server/database/migrations/2026_08_19_add_local_call_audio_fields.sql b/server/database/migrations/2026_08_19_add_local_call_audio_fields.sql new file mode 100644 index 000000000..437e26107 --- /dev/null +++ b/server/database/migrations/2026_08_19_add_local_call_audio_fields.sql @@ -0,0 +1,34 @@ +-- 本机录音必须与腾讯云混流视频分开保存。 +-- 此迁移可重复执行,兼容已经手工补过字段的部署环境。 + +SET @local_audio_urls_exists = ( + SELECT COUNT(*) + FROM information_schema.COLUMNS + WHERE TABLE_SCHEMA = DATABASE() + AND TABLE_NAME = 'zyt_tcm_call_record' + AND COLUMN_NAME = 'local_audio_urls' +); +SET @local_audio_urls_sql = IF( + @local_audio_urls_exists = 0, + 'ALTER TABLE `zyt_tcm_call_record` ADD COLUMN `local_audio_urls` LONGTEXT NULL COMMENT ''本机录音地址JSON数组'' AFTER `recording_urls`', + 'SELECT 1' +); +PREPARE local_audio_urls_statement FROM @local_audio_urls_sql; +EXECUTE local_audio_urls_statement; +DEALLOCATE PREPARE local_audio_urls_statement; + +SET @local_audio_status_exists = ( + SELECT COUNT(*) + FROM information_schema.COLUMNS + WHERE TABLE_SCHEMA = DATABASE() + AND TABLE_NAME = 'zyt_tcm_call_record' + AND COLUMN_NAME = 'local_audio_status' +); +SET @local_audio_status_sql = IF( + @local_audio_status_exists = 0, + 'ALTER TABLE `zyt_tcm_call_record` ADD COLUMN `local_audio_status` TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT ''本机录音状态:0无录音,1上传中,2已保存,3上传失败'' AFTER `local_audio_urls`', + 'SELECT 1' +); +PREPARE local_audio_status_statement FROM @local_audio_status_sql; +EXECUTE local_audio_status_statement; +DEALLOCATE PREPARE local_audio_status_statement; diff --git a/server/tests/CallRecordLifecycleIdentityContractTest.php b/server/tests/CallRecordLifecycleIdentityContractTest.php new file mode 100644 index 000000000..8df278192 --- /dev/null +++ b/server/tests/CallRecordLifecycleIdentityContractTest.php @@ -0,0 +1,80 @@ +getFileName()); + if (!is_array($lines)) { + throw new RuntimeException('call-record lifecycle source is readable'); + } + + return implode('', array_slice( + $lines, + $method->getStartLine() - 1, + $method->getEndLine() - $method->getStartLine() + 1 + )); +} + +$logic = new ReflectionClass(DiagnosisLogic::class); +$endCall = callRecordIdentityMethodSource($logic->getMethod('endCall')); +$bindCallRoom = callRecordIdentityMethodSource($logic->getMethod('bindCallRoom')); +$startCloudRecording = callRecordIdentityMethodSource($logic->getMethod('startCloudRecording')); + +foreach ( + [ + 'endCall' => $endCall, + 'bindCallRoom' => $bindCallRoom, + 'startCloudRecording' => $startCloudRecording, + ] as $methodName => $source +) { + callRecordIdentityExpect( + str_contains($source, "\$callRecordId = (int)(\$params['call_record_id'] ?? 0)") + && str_contains($source, 'if ($callRecordId > 0)') + && str_contains($source, "CallRecord::where('id', \$callRecordId)") + && str_contains($source, "->where('diagnosis_id', \$diagnosisId)") + && str_contains($source, "->where('caller_id', \$adminId)") + && str_contains($source, "->where('caller_type', 'doctor')"), + $methodName . ' uses the exact doctor-owned call record when its id is supplied' + ); +} + +callRecordIdentityExpect( + str_contains($bindCallRoom, "'call_record_id' => (int)\$record['id']") + && str_contains($bindCallRoom, 'startCloudRecording(['), + 'room binding forwards the exact saved record to cloud recording' +); +callRecordIdentityExpect( + str_contains($endCall, "(int)(\$record['status'] ?? 0) === 2") + && str_contains($endCall, 'return true;'), + 'ending the same exact call remains idempotent' +); + +$workspace = dirname(__DIR__, 2); +$repository = (string) file_get_contents( + $workspace . '/app/src/doctor_workstation/services/repository.py' +); +$lifecycle = (string) file_get_contents( + $workspace . '/app/src/doctor_workstation/video/lifecycle.py' +); +callRecordIdentityExpect( + substr_count($repository, 'body["call_record_id"] = normalized_id') >= 2, + 'desktop repository sends call_record_id for bind and end requests' +); +callRecordIdentityExpect( + substr_count($lifecycle, '"call_record_id": record_id') >= 2, + 'desktop lifecycle keeps the created call record identity through later phases' +); + +echo "Call-record lifecycle identity contract: OK\n"; diff --git a/server/tests/CallSignatureIdentityContractTest.php b/server/tests/CallSignatureIdentityContractTest.php new file mode 100644 index 000000000..deef1f329 --- /dev/null +++ b/server/tests/CallSignatureIdentityContractTest.php @@ -0,0 +1,91 @@ +getFileName()); + if (!is_array($lines)) { + throw new RuntimeException('call signature source is readable'); + } + + return implode('', array_slice( + $lines, + $method->getStartLine() - 1, + $method->getEndLine() - $method->getStartLine() + 1 + )); +} + +$logicMethod = (new ReflectionClass(DiagnosisLogic::class))->getMethod('getCallSignature'); +$logicSource = callSignatureMethodSource($logicMethod); +$controllerSource = callSignatureMethodSource( + (new ReflectionClass(DiagnosisController::class))->getMethod('getCallSignature') +); +$validatorSource = callSignatureMethodSource( + (new ReflectionClass(DiagnosisValidate::class))->getMethod('sceneCallIdentity') +); + +callSignatureExpect( + $logicMethod->getNumberOfParameters() === 2, + 'call signature accepts request params and authenticated admin context' +); +callSignatureExpect( + str_contains($logicSource, 'canManageDiagnosis($diagnosisId, $adminId, $adminInfo)') + && strpos($logicSource, 'canManageDiagnosis($diagnosisId, $adminId, $adminInfo)') + < strpos($logicSource, "Diagnosis::where('id', \$diagnosisId)") + && strpos($logicSource, "Diagnosis::where('id', \$diagnosisId)") + < strpos($logicSource, 'self::getTrtcConfig()'), + 'row authorization and the exact diagnosis/patient pair are checked before TRTC work' +); +callSignatureExpect( + str_contains($logicSource, "->where('patient_id', \$patientId)") + && str_contains($logicSource, "'diagnosis_id' => \$diagnosisId") + && str_contains($logicSource, "'patient_id' => \$patientId") + && !str_contains($logicSource, "Diagnosis::where('id', \$patientId)"), + 'diagnosis id and source patient id stay distinct throughout the signature contract' +); +callSignatureExpect( + str_contains($controllerSource, "goCheck('callIdentity')") + && str_contains( + $controllerSource, + 'DiagnosisLogic::getCallSignature($params, $this->adminInfo)' + ), + 'controller validates both ids and forwards the authenticated row-scope context' +); +callSignatureExpect( + str_contains($validatorSource, "only(['diagnosis_id', 'patient_id'])") + && str_contains($validatorSource, "append('patient_id', 'require|integer|gt:0')"), + 'call identity validation requires positive diagnosis and patient ids' +); + +$root = dirname(__DIR__, 2); +foreach ( + [ + $root . '/admin/src/views/tcm/appointment/list.vue', + $root . '/admin/src/views/tcm/appointment/list_h5.vue', + $root . '/admin/src/views/patient/reception/index.vue', + ] as $callerPath +) { + $caller = (string) file_get_contents($callerPath); + callSignatureExpect( + str_contains($caller, 'patient_id: sourcePatientId') + && str_contains($caller, 'patientId: sourcePatientId') + && str_contains($caller, 'diagnosis_id: diagnosisId'), + basename($callerPath) . ' keeps appointment, diagnosis and source patient ids separate' + ); +} + +echo "Call signature identity contract: OK\n"; diff --git a/server/tests/ConversionFanEventRuleTest.php b/server/tests/ConversionFanEventRuleTest.php new file mode 100644 index 000000000..89452ffcd --- /dev/null +++ b/server/tests/ConversionFanEventRuleTest.php @@ -0,0 +1,67 @@ +getFileName()); +if ($sourceLines === false) { + throw new RuntimeException('无法读取加粉统计源码'); +} +$methodSource = implode('', array_slice( + $sourceLines, + $method->getStartLine() - 1, + $method->getEndLine() - $method->getStartLine() + 1 +)); + +conversionFanRuleExpect( + str_contains($methodSource, "->where('e.change_type', 'add_external_contact')"), + '加粉必须继续以企微 add_external_contact 事件为事实来源' +); +conversionFanRuleExpect( + !str_contains($methodSource, 'msg_audit_approved'), + '会话存档同意是独立能力,不能再次成为加粉统计的硬性条件' +); +conversionFanRuleExpect( + str_contains($methodSource, "['del_external_contact', \$endTimestamp]"), + '加粉统计必须继续排除区间内已删除客户' +); +conversionFanRuleExpect( + str_contains($methodSource, "['add_external_contact', \$startTimestamp]"), + '加粉统计必须继续排除区间开始前已添加的重加客户' +); +conversionFanRuleExpect( + str_contains($methodSource, "->group('e.user_id, e.external_userid')"), + '加粉统计必须继续按员工和客户去重' +); + +$excludeMethod = new ReflectionMethod(ConversionLogic::class, 'excludeUncountedFanPairs'); +$excludeSource = implode('', array_slice( + $sourceLines, + $excludeMethod->getStartLine() - 1, + $excludeMethod->getEndLine() - $excludeMethod->getStartLine() + 1 +)); +conversionFanRuleExpect( + str_contains($excludeSource, '[1, 2, 3, 201, 202]'), + '取消会话存档条件后仍须排除扫一扫、搜手机号、名片分享及继承/分配客户' +); + +$pageSource = file_get_contents( + dirname(__DIR__, 2) . '/admin/src/views/first_visit/conversion/index.vue' +); +conversionFanRuleExpect( + is_string($pageSource) && !str_contains($pageSource, '须会话同意'), + '页面口径说明不能继续宣称加粉依赖会话存档同意' +); + +echo "Conversion fan event rule: OK\n"; diff --git a/server/tests/DiagnosisWorkspaceRowAuthorizationTest.php b/server/tests/DiagnosisWorkspaceRowAuthorizationTest.php index 3c2052cf2..5c5478bcb 100644 --- a/server/tests/DiagnosisWorkspaceRowAuthorizationTest.php +++ b/server/tests/DiagnosisWorkspaceRowAuthorizationTest.php @@ -121,6 +121,9 @@ $myPatientScopeMethod = diagnosisWorkspaceMethodSource( $diagnosisReadonlyAuthMethod = diagnosisWorkspaceMethodSource( (new ReflectionClass(DiagnosisLogic::class))->getMethod('canViewReadonlyDiagnosis') ); +$diagnosisManageAuthMethod = diagnosisWorkspaceMethodSource( + (new ReflectionClass(DiagnosisLogic::class))->getMethod('canManageDiagnosis') +); $diagnosisAiAuthMethod = diagnosisWorkspaceMethodSource( (new ReflectionClass(DiagnosisAiLogic::class))->getMethod('loadAuthorizedDiagnosis') ); @@ -161,9 +164,16 @@ diagnosisWorkspaceAuthExpect( 'DataScope ALL is reserved for team roles before ordinary doctor and assistant self-relations' ); diagnosisWorkspaceAuthExpect( - str_contains($diagnosisReadonlyAuthMethod, 'MyPatientLogic::canAccessDiagnosis(') - && !str_contains($diagnosisReadonlyAuthMethod, 'DataScopeService::getVisibleAdminIds'), - 'readonly diagnosis authorization reuses the canonical patient row policy' + str_contains($diagnosisReadonlyAuthMethod, "Diagnosis::where('id', \$diagnosisId)") + && str_contains($diagnosisReadonlyAuthMethod, "in_array(2, \$roleIds, true)") + && str_contains($diagnosisReadonlyAuthMethod, "\$query->where('assistant_id', \$adminId)") + && str_contains($diagnosisReadonlyAuthMethod, 'DataScopeService::getVisibleAdminIds(') + && !str_contains($diagnosisReadonlyAuthMethod, 'MyPatientLogic::canAccessDiagnosis('), + 'readonly diagnosis authorization matches diagnosis-list visibility instead of my-patient ownership' +); +diagnosisWorkspaceAuthExpect( + str_contains($diagnosisManageAuthMethod, 'MyPatientLogic::canAccessDiagnosis('), + 'diagnosis write authorization keeps the canonical my-patient ownership policy' ); diagnosisWorkspaceAuthExpect( str_contains($diagnosisAiAuthMethod, 'MyPatientLogic::canAccessDiagnosis(') @@ -192,10 +202,10 @@ diagnosisWorkspaceAuthExpect( 'doctorNotes authorizes the diagnosis before reading notes' ); diagnosisWorkspaceAuthExpect( - str_contains($addDoctorNoteControllerMethod, 'DiagnosisLogic::canViewReadonlyDiagnosis(') - && strpos($addDoctorNoteControllerMethod, 'DiagnosisLogic::canViewReadonlyDiagnosis(') + str_contains($addDoctorNoteControllerMethod, 'DiagnosisLogic::canManageDiagnosis(') + && strpos($addDoctorNoteControllerMethod, 'DiagnosisLogic::canManageDiagnosis(') < strpos($addDoctorNoteControllerMethod, 'DoctorNoteLogic::addOrAppend('), - 'addDoctorNote authorizes the diagnosis before writing any note data' + 'addDoctorNote keeps the stricter ownership check before writing any note data' ); diagnosisWorkspaceAuthExpect( str_contains($receptionMethod, 'appointmentRowManageableByAdmin(') @@ -204,10 +214,10 @@ diagnosisWorkspaceAuthExpect( 'reception authorizes the appointment before loading its detail DTO' ); diagnosisWorkspaceAuthExpect( - str_contains($prescriptionListMethod, 'MyPatientLogic::canAccessDiagnosis(') - && strpos($prescriptionListMethod, 'MyPatientLogic::canAccessDiagnosis(') + str_contains($prescriptionListMethod, 'DiagnosisLogic::canViewReadonlyDiagnosis(') + && strpos($prescriptionListMethod, 'DiagnosisLogic::canViewReadonlyDiagnosis(') < strpos($prescriptionListMethod, "Prescription::where('diagnosis_id', \$diagnosisId)"), - 'listByDiagnosis authorizes its parent diagnosis before the first prescription SQL query' + 'listByDiagnosis uses read visibility before the first prescription SQL query' ); diagnosisWorkspaceAuthExpect( str_contains($prescriptionLogicSource, 'self::canViewPrescription($row, $viewerAdminId, $viewerAdminInfo)') diff --git a/server/tests/LocalAudioUploadContractTest.php b/server/tests/LocalAudioUploadContractTest.php new file mode 100644 index 000000000..9186d9834 --- /dev/null +++ b/server/tests/LocalAudioUploadContractTest.php @@ -0,0 +1,168 @@ + \$isLocalAudio ? 'local_audio' : 'video'", + 'attachLocalCallAudio($attachmentParams)', + "'local_audio_urls'", + "'local_audio_status' => 2", + "'local_audio_urls_list'", + "'local_audio_status_text'", + "'uploads/audio/'", + 'FileEnum::FILE_TYPE', + ] as $needle +) { + LocalAudioUploadContractExpect::contains( + $logic, + $needle, + 'Local audio upload and DTO contract must remain complete' + ); +} + +foreach ( + [ + "'uploads/video/'", + 'FileEnum::VIDEO_TYPE', + 'attachLocalCallRecording($attachmentParams)', + "'recording_status' => \$isLocalAudio ? 0 : 2", + ] as $needle +) { + LocalAudioUploadContractExpect::contains( + $logic, + $needle, + 'Manual video uploads must remain separate from local audio' + ); +} + +LocalAudioUploadContractExpect::isTrue( + str_contains($logic, '!$isAmbiguousWebm && $hasAudioMime'), + 'Known non-WebM video extensions must not be misclassified when an old client sends audio/webm' +); + +foreach (['zyt_tcm_call_record', 'local_audio_urls', 'local_audio_status'] as $needle) { + LocalAudioUploadContractExpect::contains( + $migration, + $needle, + 'The database migration must include every local audio field' + ); +} + +// Exercise the real internal-file path used after all recording chunks are +// merged. A source-code assertion alone did not catch the missing realPath key +// (or the missing File object required by the local storage engine). +$sourceBase = tempnam(sys_get_temp_dir(), 'zyt-audio-source-'); +LocalAudioUploadContractExpect::isTrue( + is_string($sourceBase), + 'A temporary local-audio source file must be creatable' +); +$sourcePath = $sourceBase . '.webm'; +LocalAudioUploadContractExpect::isTrue( + rename($sourceBase, $sourcePath), + 'The temporary local-audio source must keep its WebM extension' +); +$payload = "\x1A\x45\xDF\xA3local-audio-regression"; +LocalAudioUploadContractExpect::isTrue( + file_put_contents($sourcePath, $payload) === strlen($payload), + 'The local-audio fixture must be written completely' +); +$targetDir = sys_get_temp_dir() . DIRECTORY_SEPARATOR + . 'zyt-local-audio-target-' . bin2hex(random_bytes(6)); + +try { + $localStorage = new \app\common\service\storage\engine\Local(); + $localStorage->setUploadFileByReal($sourcePath); + $fileInfo = $localStorage->getFileInfo(); + + LocalAudioUploadContractExpect::isTrue( + isset($fileInfo['realPath']) && $fileInfo['realPath'] === realpath($sourcePath), + 'Internal storage metadata must include the merged recording realPath' + ); + LocalAudioUploadContractExpect::isTrue( + ($fileInfo['tmp_name'] ?? '') === realpath($sourcePath), + 'Internal storage metadata must preserve a compatible temporary path' + ); + LocalAudioUploadContractExpect::isTrue( + str_ends_with($localStorage->getFileName(), '.webm'), + 'The generated storage name must preserve the recording extension' + ); + LocalAudioUploadContractExpect::isTrue( + $localStorage->upload($targetDir), + 'The local storage driver must accept a merged internal recording' + ); + + $storedPath = $targetDir . DIRECTORY_SEPARATOR . $localStorage->getFileName(); + LocalAudioUploadContractExpect::isTrue( + is_file($storedPath) && file_get_contents($storedPath) === $payload, + 'The internally uploaded local recording must remain byte-identical' + ); +} finally { + if (isset($storedPath) && is_file($storedPath)) { + unlink($storedPath); + } + if (is_file($sourcePath)) { + unlink($sourcePath); + } + if (is_dir($targetDir)) { + rmdir($targetDir); + } +} + +$missingPath = sys_get_temp_dir() . DIRECTORY_SEPARATOR + . 'zyt-missing-local-audio-' . bin2hex(random_bytes(8)) . '.webm'; +$missingRejected = false; +try { + $localStorage = new \app\common\service\storage\engine\Local(); + $localStorage->setUploadFileByReal($missingPath); +} catch (Throwable $exception) { + $missingRejected = !str_contains($exception->getMessage(), 'realPath') + && str_contains($exception->getMessage(), 'does not exist'); +} +LocalAudioUploadContractExpect::isTrue( + $missingRejected, + 'A missing merged recording must fail clearly before storage-name generation' +); + +echo "Local audio upload contract: OK\n"; diff --git a/server/tests/PrescriptionAppointmentScopeContractTest.php b/server/tests/PrescriptionAppointmentScopeContractTest.php new file mode 100644 index 000000000..dc7f9f339 --- /dev/null +++ b/server/tests/PrescriptionAppointmentScopeContractTest.php @@ -0,0 +1,70 @@ +getFileName()); + if (!is_array($lines)) { + throw new RuntimeException('method source must be readable'); + } + + return implode('', array_slice( + $lines, + $method->getStartLine() - 1, + $method->getEndLine() - $method->getStartLine() + 1 + )); +} + +$diagnosisLists = prescriptionAppointmentScopeMethod( + (new ReflectionClass(DiagnosisLists::class))->getMethod('lists') +); +$appointmentLists = prescriptionAppointmentScopeMethod( + (new ReflectionClass(AppointmentLists::class))->getMethod('lists') +); +$getByAppointment = prescriptionAppointmentScopeMethod( + (new ReflectionClass(PrescriptionLogic::class))->getMethod('getByAppointment') +); + +foreach ([$diagnosisLists, $appointmentLists] as $listSource) { + prescriptionAppointmentScopeExpect( + str_contains($listSource, "whereIn('appointment_id', \$appointmentIds)"), + 'list action state must be selected by the current appointment ids' + ); + prescriptionAppointmentScopeExpect( + str_contains($listSource, "['current_has_prescription']"), + 'list DTO must expose an appointment-scoped prescription flag' + ); + prescriptionAppointmentScopeExpect( + str_contains($listSource, "['current_prescription_id']"), + 'list DTO must expose the exact appointment-scoped prescription id' + ); +} + +prescriptionAppointmentScopeExpect( + !str_contains( + $diagnosisLists, + "['prescription_audit_status'] = (\$item['has_prescription'] && \$fu)" + ), + 'diagnosis history must not drive the current appointment action state' +); +prescriptionAppointmentScopeExpect( + str_contains($getByAppointment, "(int) (\$candidate->void_status ?? 0) === 0") + && str_contains($getByAppointment, '$row = $row ?? $fallback;'), + 'detail lookup must prefer the same active prescription and only fall back when all are voided' +); + +echo "Prescription appointment scope contract: OK\n";

    `hfPZG`l}7K8G(IeZ9)y8t4*JA2Cst6vYS)S?Jr=oF0$*fW2v788~9c)1u4)xAK0evrrBe52Ml zN$(yuBohP4aBN(~Ua7^P^UHQ?v?lF$Qb=AaKykT~)$%+0JR@d~C-=3W!U{I2+#Z4L z@lf=qE#}$6_N~eBsqLwPNkqfa1wG{vF@rtt+^vvKWZ0{;M()wy1q+WcSYd@FKQ!rp zY@fQ!W#g|Q&A7p`Z!FpPr$9jlHSIn}A}^M8)zg`*bSF9Tr~h zjuyRHk0mPIDNCY&`AUfX zBBGqC`Ud9qZ^xZR$1Zgp(>};0kNlJG)6HSEwTOzod=7YoF@UE)ClMZ!%=W?RPgS}* zY<6&{Vj`CZUGk9U)yW?5(N76Pmw4^oJLW_|&(n~Ck5fPO+2mza4fZqxElEl5wk|L6X_)X+<1+KBs-AI&A^_r%?wv|o@0 zXDgw!++%a=QyB94cW#bEzqWgqHn?`l#@qK7+!&6pWA`j-#+dTxb{{)fqxn4^^ZBGd8)RU7FA@d z1a24$bVSYj4##*;Lg4%BvPel2NsW*kk3Zk!ba{oEo z!T}PS7)>Cy8XpM^kY2);l=K$zyT(TZBH|!mJeUm@xC@h!=s*UpA43J*NRB3hf9CpY zX=egPmLVnc-_6XG!Z8k$isRqd6d-&jBzN#Weew9AN^PKa3bWGM|7az(^ z-SnM(O^=>-wKqTp*p}DuUN66JGG(Iay2DKL+U+HTRO7$T2b^D2L1ai)-E4Sj5Q|QE z5mXSi_VzrQ(^Lp*%70NYe(L(2KkX73X_CX@AWJL}#IAZ_ zk{p$E$mTfP-<8VV!bC_+8+U!kR`^rEdbjL!I@7de&;}95dGy276eT&Ex`h5Dl#W8l zI%~A#wh_@;Ztu*o&qJRNuc-j7$IE|^0I#723Xc8t6nVzry>t>#bnaYrx{GTXcCOcK zaVCCy&rKMTsZk=3UQ)NN1D6jDyQ#7+NE{XK@mF$}I+Tr%Sj&U|ptkG9}2?%;g z=rx6g6SeRBj@4fe1~iXWVQ8}(G|td3B6*I2)#q7npMQcvPi4{+l-SUjR!*Pd^2bP# z_2+LtC@&KS7!?rGK~ppsC`K)(N`ewfrRPDvnr~OMfIQ}v>7%vks^?r>U&F{r4zyaZ^69g9p-}eY-nHPX z;^ptN+{S#fm5p%^D-~?-@ugHrWne35|v6Z zobFyY8o?RTI6vi@ajz*E0 z$h2J8{H~3R+E*}fp0i5LQRm8SrU}#89i4oC)`{f#WLT@Qw9e{+v(*i!XNc$V7-XYH z3O*1^JYGXOGX00!y_xC&bgZG?qh?B4F94>PHVL-L0ah^9)JV}4$_N}F?W_(O)Dr0m z{%G(-n(9tfUnb7Ug1g+;a$UPE)P#u{dEr-1Ws%S6uIFlbby?&`h<}A48QHG9fnS&! z;sebj1(p^t8Un9VJ@;}#iWx#aV<3UOt;gYQgP81AI;}WCPdrpug~~q8?GD33NS&qd z6(4mqXr;Kf+!_ylr4noZ3Cps`rb5X=+VbgPGL$=%A9%bz$}J5|S&FBX=s$Ssp;ieu z_yg_ZpdH~Il8n7zD~zZr+}H!hX-f^w>gr%gt5zbO{R#?wb|^=3=ATZ4#taaF-x)|A z62Bzruv?&oq)8wY{HM@Bz3^Ne`CcER@txQ+;99VZm1)|4ca*+BD~dL&umBe56@Dea zc#+sM|I+W_8|9sw#r%BcJY04Yf4Ssp)i~j zXM^&ih%Y}#Nxf9^Q*TAVREJ!LiUHIDps*X&j|`^gQ??%&^qYCQFt>wErVOt|myTRE zt8}(r9kRY$1DmggZ_6*?crPMC^fcmAN|(S^EciHC{-AlMu9M)X^o&C|R_cZXCdRbG z;2YKZl?kkKH#1f@%~ZwZ-tD7o22xAoz;PPDES+5^fijyyID!}hOh``mN6GJP@cIdW6O(ukj8TAilBteq{{e_Nv1BEjrtV} zvz`{Y_l20skdBzV_@Ei;0SV&x3?; z!QWq#rVyY~c`oyA7!klhXtQv_ik4321tJpOr0^zlSXP+_OLeH=tbY{^L~1-G=~dQe z{RI50`SI}!5rxBtw$$q-%5&@Qwe{6iOHb7_(X7G8-g|xB0W%l)d`<#2DrJpFB)=+W z3T7BuCuS?AO->&<~2{K$r zti-Tj^k-M0NvC-^GO9GH^vlqE>%plp<{u<)33kn(UIG8zGe*~Y`Sc7x3f+L6pnof? zrVFJ6&U1P)6-o)`ZL$k2I2fF_R0U$GRMhS8u>bid=ouZ{S2A7t+4!Mb)iUO{&xVF^ ziFRW7*(qhjYorUVpCrYV%Z{XJ06D^+>WDXKh+?7=2%|}vSjulC3ji!oRkE<~G=nST zjYLjy2WmtL4g0vJdIUMSq}FEpz_So`Bnft$p{KLTlc$BN5PyP>{xw6Ad9d0rCy)TC zi*-%a1MfZ@atHn|fqzz$0VQ&}I5(W=f2?B(mFN|p-^qlS@xMsVtj&H3FX=H^(Sj#oyj!aJh$mA6D?HQ#@*v2Au6Xt(-cO|7JF72hJh*rCMqf0`qZ zIBK3f*{eNe`0;`;DtfbnR0s(;RPJND{Qj_H09mOh4#F!UcVeY+PH1Q=#N595a@@p{6_rr7wzrHwh}UbN~vX zaWM`JG8GENvrhcuU#)BY?5h>XaNkvQ-V>uV`)5Lm#i@033+B1(wUDRlOjWs=(Xl#$ zM|b!>>6ws%rlzc-lrB~Glr6fA+4A)@Oq$Ldq1(hZ zXV2fZ*Ybunt2yr-<&umRl&RsqAGTGuvWzuCC+mKf0gL?0frm$PqQ&jYg5KDs zejCIe5(zcB1-r>7f|b7gDHni|oz=wD*ydJg=S-dH)}exkF}BE?E{B=dfWtN?&8C!i zTf-|s4+#N0z%MexVEs3lnQq_TCxcd{CJlgB*$IBQROI+Ko)ff;TYEKUk(Ac>(hFU{ zKx|2%`=yT4Q}DVh=O(x4;<%b}sZ0gV3m6bKpp*i6b*|+jls$$%+9%o)hAh|w)f_fR=8}@>nSpn@gBp0*9L$h4rZ%IS^yN1#(dQ>Ha+QTGZ{10 zx;-(jR_OD$ITd=^QlNk<8mtVM7@wHXR(?mVQzPHQFUsKVe#}##7kFPz-gj59B3QPb1{k42MWy@zNUwV9;GU@$fUCiC-9f#4_ z>rNa%T1I}$kBjpnc=cXGE_x&U{F95AT$#bMC(@Rkw;CK&@44 zb@!ZO4tZn~HUeH3#&@S|dEoF|upz@2;SCH;$lc#P&o_qNK;-%-h_jYL!o7;|VVw#%_VeB5ei^0z3*sfC-WlnE*gA zS@tSo0LGU%b9cO^rym}HVHX+e?(IkE$hqk;Jiv|^3BU}R>MxCo%WY%;WlH~w%p#>~ zB!NR#ulunNG$(28;s58b`sX(zrDR;7bQE47Qm`cq$JKfye(u?j!1*|7ca7x(@SQU8 zt-VaJa{k{bWjBpF(qQgSXWA*s^;+-{`)^dn+Rc?Dbb-5YcZzNr3+VAvrm5Ex+!gS} zGwHss^PHf?5n*#a6aOMf4}PH0b6g07a6u>BPJH|4*PNksFal+zGC(9f4jhyj>RhgD z`rn$10mI%W0+F;3b0H=gUj2h+mKJ8eewG)BRBV|zQ_Q$4NAt7~t8RQ8-POQq3ym6AQUQ&~8!l;$sQciT^1%B-n1IH%tj8G2xye2u8k`BzH*b>Y#ti@0V?m`BAuIfms>6h| zqJFwztgb$5 z`#~(<-BTuuwYzFGQlc6kMwU?$yuBHT8cvx{DHOezX5&B`QF;UclT=lEQiwBK)2=2_ zY>=b#ej8M&GkJ4)Jv<0W$DT~~yX*_!LPFKw3?9V1OiJYnKP5M!_7s=mrK_g;G5#wz z1_=nB^x+e+d5`+pdX=}TURsNf{G1%`FUv>WS5Div&>tdAYzrSpmcgaN#m7gB#2d&V z=z2a1dFFzJ%UF-*?>|d$vN7447fm2TUa?0R!0wN2pHi~s%Stbd8lGXvthint4?gXa z4`by1CZgwLCP0G!hX4T}z+C**Eg+cR0fq$N-7IN0Ha0miJ{(LlJlg1`@Kan%jwKOZe2Kn=-mZ~$J-pC6&=Nxt4lmvsx`MdxG4scr&0)(=%IV`gIH?R5 z#LR=^)U`N0)w)4&S0-{lCQZz1l*p{(U9G3yYS^3RTb1mB7~ilTl)09A_k~{dV8Ab2 zeI%OYafQViJQj_ihC8Su(ArFI%{h-RtJtFD|3F)knd&K0Qw!TC;dX7NzO-|Y#IJ5n za&L!}dNbYDM#Grn$I7jdJ{{LYMsy z`d9QpnI`OCLmnoob}w(#g`-@x>(A`=7cl}RzJ9i00#BDz-*26Ty%XwwQl*tHGo$vn zML^Vz@%|!-S8c|xvHelq2j_WuElM|u%iYL`E=2sO#bM-j;00RlkJQ@6pn>8L3vwZ6 zKM4t@yzwn+CZw)x(2YX%f0r~HgL&Y?Po0LSK6rZ7fgFfnkre@nr@6wxXWmPZK>WtBmCgy)8)blU+B9l zR~y&$!=sl%9(PQq*=^FVj9hkkaRKNsM@Vm=5+CXBABN&gO>oWaFU~AXlBVL09fb7O z#FXf#^T*q974Nlvp(Ya*W1Cy>K0g5x@^1@!P^gnRa%TyALHN^DJ32av&vq|-;f0R5 zd7qqR;3_Ttfv|5vy8T3&nZ8ka^%G=!!oyE7dnz8=N7y-N{8PBqme zRtOOmA;k93s&=@})RwBLnS>#u*%YnH#rSk+q509Wr2N?sP(6RislL zQO~ZlFCYxGPV1B1#ilc0HeKCX8XlJ$sL`Yo-kx-ELcf8WHTrxpjG>=nEevEt1U{nNbU zu0EBovObaTzenfg%*S8$I=z0qK8eBQl0_Jt5qWpt(Ad{aZAe|cPPXRX8;0s@hg zA=8UnpJ;J+{J|O`^)H~qc6Lhi z`NMSL+o*F_L58$AB4Np`-HwBR2Gq%bs=RkEN}w^gluW6(wlo5OoFe!4VG;|HeN-() ztM|4S1KY^Yr>v9HRV1XF3lg3kr&S9`8?eI__xi3^?yQczxTHyMPR3jN zNLK$H+DzrFX<3%gtGl&2YXxwql9uC`&(&gz^+IG5EP9lEqf^qcgGtajT3%}t#6Cpt zriCg8u_FQl{Bm;}yHDT>`%@IOJSDl2#+xI+5KeH*uT-Y*DibPHsD4$WX8bai913m#b<)r0#+jemzCg~6)q5kO>I^tamL zVCy+(!#*n0CMhEAds;v+KiI`1W?opdQ`TUagzB3aa+K{9}3|+bTGg< zr^8L>`*6cu+nO4-WqveR-?9&F+l)(z(Q#2xiH}>Bhwtl-CwP}MxLGAedNENOZdWB= z_K4#29d<1YYkL4d0#1*;*X)h46PJkm9Oq{UvIy7_jk<3X5>nySc+43w1z`Y&f!FHQ z2CiP8=^oRcoNw~JHpTDno9*qJU4r}D1XowD9@BNC!`eJH)~1MFOw=7rju)>Oy!U2| z(>sPMG8kBA-kNOSKBy%@@cl;VxATP`mk%O7Z43vzahQ9%Eao|UK|x#S6Z)GlaSozH zUf5_twWHv@Dh|_C+tia_o{f?5&N#oYhv-#PUJvBKOxMCM8FRbQV8ZL^3>q%PIi?34 z?Jin%+@91uI=yxpt9wHe&+?A%TK+PsYPZ=DVe6*nPnDyoX1V|ru2#e(>F7kJ$9KIH4>DG6>ThF%}*&RJV! zn_6XaIEa^JL?&OH)%89At5r{W_v}OX!>=>zxe%!EIT&%eJ-3$sWV4Qp!9fy^>hHC0 zu`MuB5wpoG_t##@y%@iCwg4xw0 z(pqaQZ4dx4Ssf16QE0`eN@-F^|2J{X`&1h=yWYNqM2KMkG?opicjw;l4k89oY6=C~ zH2j*^DG#`tsXI$23Ii3Xg|9beLZ|JZif z$O!gOM>sZI?>a;K5N+n{NURy!S93k&UmLOE8?ILy4D)PKcs4bqGz}*y)8V+A^F|g} zjpXVi43R45Vt?7uLadCbj#Vgsx__aYZ=KP(Wfz{_T4S`l3kmUk%&xY!*8K0C#-P!< z(2zV4Iz#H`=a;$oPi+|@AP8cDs2Q~|3pvbfahRGi3wpK#Esx?>T1{gk-+Di)np){e z<14?9>J)5rQK+ff3T(w1Q0||NeMsMEvmS#om#Y@)bWANneG_zmBJkq%hwOMQcB%8m z9sdU-6-d%-+;OXsQ4E4NLz%~YLJq{;9JBo_S!^?ql&Cp92=5!L;{!r%1-!vQG}gb{ zM?1kRGp&uF_-&lyzc_NxMU~r_ZBKI9de$m>Hu+}7C$U$450h%N-?>ebb`K?3p-QX% z3MUxp5SRgR`@Fvw5|EyNFW?1@+L5uwJzbFH`%iPF7+|W|}Vv_Mh+UZenTp|VVP~RlcX3n1$XK&95EnXs_uVt#1!6_U49v5a6}mo!?yTywXSqR`RJUb2If`<7HbCk;U)q|;GpIq?r$?hRj? z&lW2Hp)j*7pNHY@T|SXGOgIbdSX`jdghN8;wdTffz_|(f%+#2J#gx-paTJu3?a!8q zfaxUG+YHN?Knv1H*xiG+koM(KOjae)KbUmy2NmlhmGIc*SFqtaN$)96y7;l&_Qb4y zsq+f8G5P^^n>SNiq22f{7W8MAQ9_9;9(xZTfcC9&v_csphO0R#-3ww?`m;`sI+)ah zO}rS@jOVYMxN**LJBD&UIRxh5l$!QI_(fM;7%x z#DsaQWBgcTDlD%=sDM+QSM5j!KrCa(IEmZ2gG>}bj_`j`>Hcpr>89%4FLiU~5t9O7 zb;xkQ^gyotwOmXf@pH!0_eKWGQx(#A-O)p=yK}HUz_vitsie`H zi@V9DsbG#@7e$fpT`TI_^2Nz()nCkvu)d8)dC5)*GCNj0Jie_N;#x_`-SW?!apZfK z5~0iV7$K*H$^v(FVmQGw7Na6eOVtOk`e%7{_ejvT@Tr2>^$DyWb43IwsdM%YECz^mA??pDgJ5w=+THI;@1JLE+uqZX#7C}= znp-(YdT5F*3>CG6RO89ZRj!+7l2tP*=>KHS+|C%3n}GNaY}{gQ#|gU2VSWDD5YrCA z9d7fQIw{u@0^vc6pFH<`)-F;On;oMZ97Ui8@YcCIkt=aJ$TR#8u}*F@mY(DDtLSlv zo8M|PFa}w{l%^7w23pvk`4Z?@MG_N5X4=w3SR#)^`lpJ&zrT z&|fnofO`;?djqu%!qv85v`$D(Y>dl8xl&;OO!Ckj7VbnxZKfRMEpEJ(xegN09|z@4 zMl_sAx!JkQS96|DE0qv00hJ&(gqkxVy^=1VRre7oZBUi9ZQ7zZ%3d^>$P#ud0_@#}=0;lVqt+|)2kRCEi?E!?FT z`p7!cH7(4)^^tTLzkc;$me6-|iBbm6(RcmJ4MxI`jx_VyfbcSxQaTaCpv%23u382%$M`;q_G<(V6cl{SjL?Cs;EZ86Ouo4#H;X zw*O=${!*?0mX0av?(XZuRm|a1;?W{h3F|85;R-~R%aKW}+Py@HYx{7rUVL^Mnq9I4 ziMgczc_-G#11tG0tTGIvmYj$2*Okbt0AI*_E!Iw}>ZFT@ z!on_8tUuv+Or*;kj@#Zr#SbRqSuuvEtEqS5tx@kV(dh)Zxdv z26;~_?e>r~`#@Zp1AJQVO1-$mP-KB0Wx~&2?TyB*p?gq~=IQMCjlTq%((zJgiixqD zFrjo8>C*wy6DlANV^+0nU6Q*_wjy8ZDcvD5*^q>HBbRMw7(~&dAxLb?Ja9qV!8NuN zSRXJ9yz0bK@+l#^aXOgTBdn*)Q~5ev^V*5&Mp?y5?Sjg-seofZ#V|l9dNS~+=jsg? zXfy&|X#C?GGpI{4_M6NI?N7%oG!X;r?td3m^*kW^gDLE`8FE`(G&Gr6+hCEDu0w51pZx{2DsxVwJd<@AB83N_855n9qle zp4%15xDEcrz56ErxHClXU);NE(l!#l`koR`W}e08-$MGRZF~VNG`E_d*UM(h=R}a6 zL#QmU7wIkS;FP9pM0%tBStN6OrwdUH#J5Z3FmwyJ$glqCqHnjOKYLgp{1N4vE{>!*eR@9r_geVfyXmwn1(sKn za-=V%+6@E04|6(MEQ?&Yo-H~*jDjYuxgPFYVV<(cxO|b6i)d8cjr8;F&HoR`cm8t! zZ^?HM_YVC3g?zWBTkEN1O$V?O0rYQEeHNysMo9~9-?i8`fV~FHM~*YX$WCTfbApt8 zKe;I~#FcLL>3A4{-PK-KdzCeZ^E8tX{~rwFgFoQ9Lhsl{S|c(g-OqSBMg`uz6JvF( zY#O=y8W6T=44G9nhC%)fP@iaYV(M4wzPXrh3(U^PDu-@qU2nS`Y;~U{jigSkrh$O& z%$M1w5Nf>*wA<2O(K%9MaFT6Thx1Ook{JpqRu$y*;wvky`29oTD`{XLQflMaV(#w^ z)0egsZ7F<}fnA@Wm=MQEywhU90Tpz|ovKhamBi6$m~UCTa z!wK0V&=AGA?^j}n)arF&mi7dqKSJO{b6Kolct?<^W>eLxas+#1c`0?1G#BjtZJ zbU+9PP#P5|Nf&8BmaI9p#gL{dMSb3x#%%U%B%~1OeGg{{x_H)U$+MW z6+&FB<=+0{ehtmHAJth8t$+T9eP{NMXXerCiaCgX$7}6>FesvFQIDz@e9{U5!3&Fu z06+wWy32T4&D_8EpER{Kr*}pSa|=9xTIWasi>u{xOeCS8QLwrHAf)pUK&-Ak`U4a2 zaCNoVF>5**y^S%o9ZBS~s@IHw-ca_J+wN{Rsqp$O?No=}edFAPHlr2MIKHtIZMeda z-@z4bSe=b}Y;+frZk<-Dr8~Q{z?Y(k->)_LE-F%}G1MWMinlZ4 zIJ{U4RN|mTG!h4O++uwh4Q>8U$YRDrVpgr{5BC0=qrp%5y!!Gq(yYFWDup^e;)zBY z;0I~{k~4f&rEpWVaTp=wO+kYIzj$BCLE3)d9EBS745Jsx;&~+VB~p+vp(8AW+WeG{ zJhA>f!S19-23HQz;2x1_-|hsi&RbV04tE6hSAhc;l%t_aitbO2Ta08Wc&Iv z-)8kfyd|U&WD4&;y};V(>MlF325iay7h>Mj96lcPETIhg-N>}Um-TfldrD=#F&<;DsCZ>USz^Kjm@%KLrgvoQe2^? zj;Dy0rXQi}dvL(hLgOz*L36BExQ88HhsQR5I)r~8Pq!Il%`VL@85o2zO1gG#9rH2c z$?{-kbK19(>JWQ+a#uOJdUCfFK*UR0PojdQHUk7jMn*8x!P_Az)14=T5}CNC!~da* zI({O`v5^4_zSQAc%BB-MM!b|f{Ri}>{+*1x9x^5%J}Iuk=6p>NDNanZYec8=akJI9 zfx%7v%;k_5q6IcuP8=4iX7=vhKn7Kiv#XFX8F0-o(9vwny$tXDX0k4IAsd(E*qctZ z68o?FHAvFhPkUU9vfT3AJ@ss!gn|+}e8)sUxG$4@G?Aw%RkE^^uX=ykM|W~^na51t z^Ju%w)#hG!9hjz_TxX>cWIR`ee=?-o>UciCM|TPSgM>Kw(AxxY$y}LjaD(A{Mix_= zCZXJM&MsWXsMamsL=;V#ti2RWH52?=No+62gA1&z=>_ba__zdT)iJ!|K1YAekSLkKrK z>nICm^{Evu1>P_+F!>?)nulha6EbwRhb#LV6B&Q7Kb%h|Cy0OjO$oK7`#Vf~Gf%C3 zlmI0_0XMje3aJvu+4e7Dbn3a07TSZ_2B~F-6C8+u*=rdcrCIg0J%ed$GUc%^Uwv@S zez6iYxl@X76%sWR`ITTqkd2e_#=BV4_umy8i+sFydwTGA(2~T`Gwj?r%V0O`HUx=|KD$aewtT#Zx0dcn`In;r^`#e@l|;*5PWmPEGih9^a57k>vYCGph!(0?oDUX z0_ca2ZGJ5*EDc9(goe~*7YiWMu2A_xd8yP+c%R2+iBFzJ!*qd>?d`4QZjR-P2Kn$N z%oNwsJ+-1hAs^ZEvbZ#+r`I5{O4nG(J;%Wh;8jn)%p+M;zbEoiP389cKg<~CQ$KHvJ zlc6GLnH5bMJ_Z>Yriwl!9gSy;&U_E@sjwY!sPPab_pWMsLHn`%q#67&(nt>MF0jW@ zJ|MT$LAv!3bdO$Waelp~NF|yhy#r~`TY{FC)SOp!Qj{JM1NdicLe zFK!~djJV!aDK62@bUWbBT>F4uim1hRtE;88J<0wlJeJwi$k2FuzW(Y^WWh^C8smwi z;(2##NppL%l0RJx1KgYO8OB~IIpBfO+naCkZmjE=a<&@S>*dtOJ7bCv8?7!9lR=1{ zT8o((pXh37tOb03p!Y?72&HbgE-rBDJ!=CiooEHjNcj3-D)mJj{0ZJ-Bxe#OdW7gte9lj^RMfJGmoI;UZ=Iq%zDmMV{M zGR}ZY9i}(Dz7FNT8*wT>hG?&};Y?k1@ zmKSP7CmJPZ_5)rSJ~j?3dtfBSCj8VW2{{^D3T?33Jupw_DmS?LWi1niXlaSkiP3bxxzjeqVcvmY}gwpSR5sV7vYC-e0Z`JrHM0kC2h{g%hT>#KD%sU_I#mB%w32C zibMy6>&EtNK5HPa&L$=gC4ZtP`m1aL|2;csB3&L zBjvNGm4)^0)agr?y)K9$pf~sZ-Mx5b8npWv&#WgW9&w2xek0S}-M);A!*@j{W8gsq z<}XuzE&eLXx_lg>1!h})w&6!=AcJ|<5A13mP0?ra69%3fd4t@C7Z!g_xJ8MBqb)H9 z&4d&Vl1fKWj%^H^B0Aw2iK;JZ5Tcdcgb#n(KZ-}Yy}EF&oVoMiU7+#oWllZd>$U!! z&_}Pz_`1x6{BB(@qs;MgdgH>WLh=;{;Dv$N=Jc595Z%Bj82+^BH@! z9j9tZ<(!NEwm}b(g@VEZgXOy28yZ$?pOpEjkDylLLqv70o(pLV_#oNDPWBkyyM&~; zC2a?_pY~M)(vyqI{wgTU?bwHfHA)>r8cxZouJKld)ABUCvF@(dZGCP`4r-}{}2(NWx>-ntw+ls;7n(>P& zQRw&KL1oF;MO1&Hqt$^M?7?rM?_bLQc*gB|!stNhbmMC>Lg_2^H$mgX0sy+C4f|6o zuebCuFuN@mcSnXpGBKS{p7LWmbIYhLpz<4mR>&!jA&7WbIBO z7F-V-pLRng!It`;IJ(GWbTSOs1y@2U$#8Gve-H3e>sXm6M8ZD)WlLLs>4ImGD?74p zDITpQs9O7Y-X2-}YlEeq@R3v1x)Gu=`IxK@yeRUdO#oou2{Fx^CdF`*1x`(3jmisuNWQ?EXH9#y{4mf%Zz-Yp7Ns>D3Nfe{p^u0h5i@w% zfMlzc;Rg17SW2B+EzwMXm_%kq3%(5-y)7%~?DgD{7ae~d5+=JpK61XX6L}~LT}7sJ zr?#evB4vZaqYn~yC`oE^nO0j{t5nUlbSjKqck|E`-GbGMqbSWP=~C67S-A*LeXq}F zzVhdFW$Aq-E8Y6)E>CBv^BQlr=Buf;Beu$Y4#wK?Nx5n)$FoA|MWPo&fT;B0Yf_N& zA>ZrZ?0htr;GkF!~yn3kEIKh&(H5RkD(W-8rsMuKuYbcSTP^?CiN zQ#EygqfaB0l2`ky_y5o>#9hGP|p*JogV15ghRB<4SBQTv_$Aw{9R=Rl;WvfF+W9#4ICdNERwt@H3?ZF?@OXwX{XRps>{akcc z+CzxR?B9ZDk%=1!vwxN#1gN!0=N5$_v}Ss`kjZMv(U|2cV?>0S7O8gMyMV*!$Jxf^ zK*nQL>DYock1!INnlg!+t~%?x6`!6K7+Vt;ZN=^3wIqHtN0> z&=AI1s*9K5RE!q$k88xNed}j}0e@pE1Yj4ed%8Jj1U81hRW}QDo5poUxb+$tm8Ff2 zfd$#kl77GcVl8_JtEa9)9TP*T9zF5F?B?1(E|*thZIkCIX>^w9qzp8`QAk-WNc`L4 zX68otG}Ui0xBb`*rJAT3mub>utESe}kDjr9*YU=4>y|sra9ddwsE}O=;qC@gF3sQ9 zJu%{Ihsq*K3=4TIbJMYZ-mjV@sCo*ZIeI<9vR$va7w^hwQep(_xfEmX9vA>vL?hv; zR28M)%Mu4vQDCyOE5LZ$v3JaU$KYm-ith_nVsWX!X>`jQ2(oeR}FJO+FFJ z4H}W;`k|EY5EZh@xNLC@)0IdZA?Ty#bzc{DoJsp4&NYDqFWA}aBMUwa3yW6iY`E7H zViRCOrPw#l=($(!!)&M|u*hM0(|0B+r1e)I#n(aR?RxS_FqRwj6~*BxT5bsM6K%rn z%Wfwtkw$j1dMw{47iFf;du-;Ks~7+a(<Z-NI}@zEy;3i7=0w=>1_djIZyDT9tst%z5uG zOi?B(dex9$TtE0CC7L;DcxCk+8j5LSHMw?*9Vx$i({{F6bVFz3o5~lu1jfcb+m$Q1 zR%FQe>%J>K;tLw<3WT$2tC+R*mT<6Yk+{E6!5378G@dZ!fcfnq0sx@C9-qVriF!ID zBa14JNDI+zjT>b(Gkhm;pRMG7n#%;`5jj<-6xI(+yp|>tFu;;G%#a6+UjKiMX2Pz#xIJ0_wmN7skc=EiQzeGWu!= zDUT8Auz9$$gqEQv4oic*i8^)Ug{?;N-IxqZZzwrre+Cy3X~1S_U>SvpgB62Sy4IGW zykZRnAVL)CK&-)&go|MoJ8 zY)jAc+;cs4tnPY)#xVkZ7{k-I=y}FRQl$9OFeo{F#}EAE=&CGj@4%>(8!K?$Q%y&c zr5G0Mg+nOOI@`d9c|m}f4Wa@-CQzgi0PZ2Cu6R@^1uB=E6_q5*`U@=KV-4t=2{1v? zBBv@!kd7PxB0pR-Cm*73n{d>TGa_q5q5*Q!KMHKJC~g8+ zksvutAcD0uLz_JC#u^>4Ll=h4aM;y*ySZbF4CEE5D{lz^z^;LcvT;yELB+igY>-;x zkJ^G403966)4c=pmz3r$&2}uQc!}xmagJ}qKARofaZ!@W5%K)X(#H%SPsfrcp37+Tyup}3UgZFn|@j}lvxbaXc(o)?U(9d=h6NB-97w`UA%B0U_o5}@U zN3&&6rlI21e9KNXpHMb6Jt?1#eSCZR<@YGt< zeip3AGXV4RG#F|B_f08=>IdXo-;I4Sc)-_>gx%49^ttlzz?F-NtxmwV6w}01+R3_S zVrIa;3yr+Z_vrZ+n@J+=X8*^T?y)^WW?H(c~v!>#6S~5HF_L=#~tKk6m;lfv`}w!@`ui}EPN3jBAyvc;4ARtnQexS{2~Av732Iq|#09Qj9; zN2lN})E=};`_KL5;BD0@bGoOzps|`4l-k5io%b^o3MN~dQDr4f znQ}S)?s*e5VqbcJ^>Xriis6OyBiTujEk@%*P2>HU+wp@d2qnnAX8BGPi`}1}Bbw&ack@giGV=sr{`{fFd{gC{ zOL)8j_0-WFbrZbnpq?uX#ZGQcXq63*>)vvG0lo6o4_Wcn>%Uufj6t9$W)i34Q!cEj z)sw>to%8*qCFhTOdeaq|+j_|*zVrBdyqn%z1B;njBkb`nBx#mbDUHgd6Picq>N!`s zt$}#kH}Yer$_H1pg^PHZ7x{HB@Kw;Y6c0|ZlmB`WHH6u^x4o|{X|+3E+=OA0}q-D2|R>hHbvf!3n^xFHIILT*M@d3=h-4gnvfruMG~9;r;3 zms58exbCky-<1w)H}W3Dp{bIh6L8k$S85b5zAO7=w;6r5vYYUYYbeOXNIYc!rlD=7 zY}u!D%1BSaL4!#wp~bD}IiN|s?nhF6wf9J$NUTtHbuTV-KwW_zuOd3OP;)mY{^#a8 zr%#h5O(H&*v3!`02$niq*g0Wu<^~{J^tl|B*u$p8c#g4|36f6^$J5WvfsM?o?9@5g zIoa7Ydt83^b>7LMZ^@q_TaY^sE>wgTn>izTsVa(hWirV%f;5ANZ9mh<`5euhAGzEM z^S`8npUgHRnHCL0=~B}c7dv^c7F^jWdFUeE5nOzjbqpVY9wWUH4TtlCFW-`;{Q}fE z-CssdX zUe^-#@tTdHDkoFdjER{8MEE8B$t4B zHqlhix~8CfE!>ha%%Oh+0)R;BK=GK*@PX5GO)ZP#3dHxc@s4$7$LjI6sc*k?%O)(?7R15#FJ{!y^i0rAY@g1sn{M1p8%@lL#LrqCk3T0%1B@d|nTW83rh!+G#-H*=}(X@@Gd zU);Z!wksu^XU;M;PW}H2nu*RfD@sQ%L4yr!jysZ-ik<43*anA<70)g? zPcC(3hjJ&U@_kOT?chiHZ?MZxS@>HYMW$7*>u<7si@1-h=;OWwK3=7UegCo0V!YgC z3FC-wivT3)ufK}cN-|b)g{FCIHcn-0U%5EUIqvpKc%i8rFXD(+m6HPfOe4cU_>~&F zhq!7f`1ArmyyFUTWlCIs)YWKI)09F6s{Mzz&a=p|V-)bq&YB!N4C`Pf;)fkw3zVrS zSuK9{jKgu`IUjRe?xy8H?bCw7~A} zn;n>;RFPx@nhyQ{w0eUf9|vxBO)gjBYlkgs0)H}uz|TOhZ2qf`6AKkri0SWc6+NuQQ$2xT&dJt2GfgkM&CJ&^|^TkJS931_sDW*mSB!=1289?^SzD#KBk9rj3PqLo z44MrxC)t}yZ>$+hYf93jYP`V(d?WtDhppD22we$CB0v)Iow(e3gfrO+3w`uDW1!ls z2oDI2OH@4Si_o<(m-oI&98IRbIMRGQvzuFK>am$T@~#_pfJa+iok@oJmWv=9&Ntk+ zr62AJM&K}cq9Ai*yhHcf3WUI95Ncbv)MTj~xKQP>jyZJy?rtv(k*la=^R%YJD#~O7 zmb7&ZH{H?SVH8z!6pxeC+run8@9?mdiw|VTxmc$`E*n6GaTV8_rx}{n(}UyGq#i0t zh^}|g-N3kQ(hdE<-B)uvt<$;Q7rB6t3ciVIOkfSqJB)tb2CeXi^{JjW$=eWWfRJ$i zu}t~vP8t6;4r~Hg<)*3R^pH=kUAE$0xR@}2E7V!Q`vzBPyIwY_;!0w*Dc+V(xw49@ z)>U27f-7C@^tRdd_dg`vifRVkj}5%;SJR*-ruL^RQVHxg^Q`-$xi0}>;qIC}cJjZ+ zPsN_g;6;B!E(LTtxHL2eug%iZUtBt4V=KVJE+4q2$AhJFE%ssWt{sRh&sl=Nu$R49 zQh%_``%+~5ZmsyaJnx{QxMglaj0XeV0b2g6dqj2mOG86Hnw-q8ZY|AH=PkGnwk{y> z1M|t{J_gcaplh4=vwPiB+MFT^W^n$Ag7mFz`f-U_(&>`--Rdblw9%$#W(fIQqD~NP zUyRg%&^VWbx0px*PpX|N??vsru2=6Gs@>W?TwBZ2))x%g5H7E?r0eQTX#FG1j_0Q- z%G~yyu)U|Hs%b8WDhL*|$9e7lkc>(ID^Me{satLm9Hf;A*=A~S*`~}xOh8A%PYyO# zR^!6gd=L{fna!FY{{UfiyW((bK^6st79H&5LG?ld6nkFKxRq93z`kc;VNzoTNJJ_b zh~gs;>qb__em4rXyoU4>sk`5|R}5b5I8X=XjV!H`FkiT6?j9imtV8)1_`DAL^Y;-V zEI1F${`zVsHYN2ssSOvffbTOqX&RgLO@_}AOnbqYZ&4mc9CIF*XHIg@$1MTh0C3sn z>wPsTtI1Q=K@-qEmV+OWr|vx;^Oba0gAMQw`kw-%$?T1`U9q7yqefWS`c1Yi6G9qc5i zc;iJfs6$nT0kzy~BKo{?cnC7bY&B z?d`O$JEnv8CAZh#o~4fk>%vQ0`Kr|7tQTFJQj=o6RUio;=wk3b+4k!IS-f$zHacx5 zBNkw*2Mn~WrYt^U0f$!fcQ${w&p{f%u5_M-6Gx10udCD z?(Qz>W}`@#NH>y_n{L?8`k&Wzo_EYV_uMa@nP-LvJ}Z2EDpu+Q_@hsj4)IDz+-Wd6wU6P5Y#Z4=Vfje9MeV>J5^3 zuN112)1laAHvFQDSP?zo?_W({W<(DsCE0#Za z+S;1tT`QK6_!RH6#SX?K4bv>Q48FEEJ~@1ok;Yq@p{D8PHo@9<+shKtqv|6#yD#d? z$;&2jMTq}24xca$GMS|57*6M^BR#ojC5sDz-c z#Y@iQ4gFF)1NG06XC!eP-cyM{6J2jIntLJH&H*=XmYeThY%}RMHnskKHG^wDY;i0T zxC_|fUpBo_^o6VMSH|R&jQo>d72*L4%}C#=)rxTj+`XwW&~1!a^u)P`g+#G$lx#~$ zk;b+jehFlsKN5?T{MEZM$IEQ-rNHC~X9M3;Alq0E5)m9+<9)@+sE7`fFVXv)rk}fR@jBj5POn{JbbsdfI_;UMJ;c7q zSf)ZoGn2s##`f<8Nu+Ft7XaVfsh3+!EyWs&(ntZt>w7-=AQR&yUF%)?{2USY!#dx4 zqRe;2sX^OvFP^Bd0#KtNVgKmS26jSsH-$OJ^4P)}dBPDtjlaU?bZ5$;>y`n$Xho%S z>y19@%^&RXa{sZ@$R~2f1L6+{Q3u6!1qZ)9BQVwnVK%#5fdP1rFyswhY)=M$m*Unj6d3aVWZtLSy3l{N@^V_bS?cMI6F78qxlS(lLg8 znnCAd55$Qwh2I-@1izxvjo#P0RhZm?GgV=!npS2lQr^OH=fy_Ooc`HWj2%vNhHfB*wdkhH9DmlyQ)}EU|kuyqX!7g4Lff_YN$70j|49(U8 zYQSON%sGr<|1hP1OZwR~(Ws0}|4JdpDx);!`o?SM3a3Sk^t^m=lLa3y8J(z=o|-B@ zfX<;tpWU`?7hgVGn5mt`RD(rOxE2kg5doMKE&P6>4MF>ad6()%Q9fG=x2D~WMS}Pn zHKLNXGxciZOx0|u*;;Ho4QYw|NR4v)_bS>#3Qa|u`BIeIC2RnIB1{|{?p{IJ0voUe)V5gA~fk+NLb8s#>RfiWmH1lFPz zj@)tTpBd5~jn{J&(KF{;L%SRbj?Dd-d07wVy%4Df7=fc{+F+IOi8|MO6dKRsEFDi}STdscPC4^0<&s5PHri{nvBvS2H*J+%1 z$Mv2^g({FDny+WJDF(cL96!HEf^nkKf|+G%YTUX!72~3}`C`_f<^B+|G=sv1LdF`zw^?zNs#jD1w!}V%Kf6{y+65}e(0m~` zh@U0w6CRFDWGlyh?1r=O&6zo5jcj|>CFwxnT(_vGXxuRF0c8rQY2xP0e3U#D!|E@x zt3eOflaQZNcg{B0ZEX+fV}5jortC_cQ6ych40>#yT67<{p&IP}2tl!jWe1}glQumS z!$ZW)vx<}0GmH3HNL}>0)>R*ZjFt$e?ipGl0J@3p4ueqwpq>}-tL5QrBer$15&BW+ zqYX}JJz07y1T5$CMM1vm;q1#Y-G>f~pC-n7R-r*&j=$ewC0;i9yk!KyijVSvk1{Sm zccVh3OWYRLvZV9?AbmjkAOIy21+ir}Q4{g|xNs)oh6k{nc{%?L`x^8pfMCsF)ME4S zB>wO89MK_CuMi@fXCIybuX^Of$IB~T9;hc2|M{ZD7zOu~TlN*BdHoU-_z0=?5A~or zjK`Pj%D5Ccs$vHN_%HaOh$|roSvv~#dH4^6Vcy5&TBAn$waX66IvZ*OG~A(*E#_yH zF%m8JSfRJKY^U~}V7O?Zjd}Kbqcnxh;Bt#LG_dz-_v1&X=z+}u=2iRBIKe>}fv zL}bn)H+BU^o!Qaqhq>qHne5hD3~7J>m3KksXL0nObs7zfwVMs5N_`gekWk9OjMPZM z78`A_1}AAtxgGks2?#|DOU~e4vn~m@ux!;VDjHlIlz{2^xq#fm7r7b^M1pi_IQdl z!q{cMOLy~&-{p5}KsNM{B6fxLXIwUCQg+pP&JfclAT;cuTj#tr);=if?-sfTzl1dG zG<`6DfV06O$0}9DHluHB0{tL@_t(!E0O(Y9XwySLr8sB-D(8tqn}(XsQ5U}B#sV2}cp!S>n#z_>qk@oZPUvA*Px?uB#5bg^~qRHMzw zXCscl08uCrOo-UmJ!Ycr|n%&OWy<2oa;Yjf}Yp)}b`Z5^3 zPBDzN^Ud;=D=IItq&Xk^tnNjONwlDJ{vp(YG6z>*#3Smr=af7y1D{Y7$S35LNUF5q z9DICZ9&6=rQ{Iy2M1)D|OFS;Z@EQ()pV!!(b#SSLr0IRPqBLgNcHD#gIne!27?oLw z8x08I`pzHiUxrGOlT)7@Zl`GuLl)WEtYdX50A=%whXD~@PDH@kcCs_YnQf}C5MrO_ zdbO$tQhm5}-tC?2em*Ws%vLB3TROYj5kGlgzoGx&Pdos8E%V^5ytkohZ5zVCzc@~= z)Q|}5NKKikK=K=1&Gg^N4qO2HVeGH_K}?)oj9311%xp0$og;5`NIYFiH=`5Taj!{- zaDx2^E)|>cOXlua)L%{hCZI1cuT)ax=82MyK@VJ;x!}LoiGx698JQBe0p=@KTBfJ} z_+~?UcEXTz0Dx|7TjAGsKb{?+ra==8{=0wHe3GQ!_Kq5~+|6YEYocMDn9nmpQ>4S& z(yTLXnw^)$B_pWj95rCMN<4=12-vQ<-iC86n61s+wTH9V%HuFrhdWra#lEQ5McGI zbyr-G~o1#TjGrS1?w%>3ed+b}L}z8~pYgJbk{R?O}sgNp|P# zi7tCYgjF-SckCwo75i|dQmAP&YG4@7n=Ov3Ra$i+~^{>8bA=LAf;pleV$ zA~t?QIm;72?ji$it|0KY)=Xzgu~zu&Z5I85f;m9>RU_*A*iVAIN8a^VkAw73>gE;= zAB_1@L-4y#OK1WJ4a__pb}V^3B4MERiwBx2`JVGwLLyx1=emk8Ksu8_E|jkvfe&Hs zr9!J`HiT18ov7@-=B^x=UEkthT=4GCgw>UP@oUXTvyi=eJO~x(Kg)K=2WakNs$JepJgrL=pN?jd7>$k4Gtf zC;p~7?xTOOy}jo^-1Ee$ppHEuZ>OO?Y9bkG5ho4$I2SaWfdImLegg`j|ACE%%HZFo z|4`^Gs!?LFwy1LVqROj^{Ct}^Wkv5#Q0 zKIdz2+kzG%{A+wfV_!h{rr@NH-!ipbJZzn0)SYIh!+2pLVUXmjRx7@r6I6mZiOd`9Q-aJR_*sWO^4?X!7e4d+Y+WqoDK#Qmb3~14awmY!#-x;Efbu3x(|otw6x?-!gDJ0Jqe zjq^OtjGwJ|c8HS^+hdt!lnrW?s!*+N=vgkycr`ZUN4%sa?xz&3BIW*4Y8vHJ6|LFO zTmNY$UZpK3?q!1QQL2U$;8@pPCO}+TGLuw~i|Pe-`UDdJxu&x#_#rpcE-7`5KgPTF zrfI(RVkzv^reL$uYWV$phmrDXcB%Bq|~SUqBR$+B(7#!sZ<>vO42^Ayb%5Rj#h3Gicze8WQ7g-;5gYPq!Ls z=zuf5=;!n*s6VEUi|gIRY6!juM$svwD8F#g*baldb3i(`125)WUQ|kSH6dSrXlv0h6R2#`yaF|lj)LEmT@(X2YCK?T49H8asEQ~~c=Ab~RLXZVNH>>2UAmFng9o(J11 z4)BbNO3s~h=fUs@g?yPDak`riUH?UQPtVU=NWvkyyNB0jQ0=)I=r0W6-Gan!WwD3SdRySEGGbbKTQC&DTZ7LV=-HYms{-V8~rJu zxyxV{j}PIJs z{|$K0b+s=~%*z;&*tW0q~)x6>@9!=}J7X+u< zOD#HU{}bUY)l&!&-te9`O8nI>ZnKid zA=v>1Ic*QmSE<^~gTCrXt{hzDIc7;U=_-;XR#@92LhUodMKM0( zOR3}|z6?2-4HR~IlarmJ$t%pBSz$PY7 zGA66yqTDiFsXjz`XAu_Nw|@Fn^we#F_?UIb?W*ne%&LEIhVkiuGEB@yD&gA2+0duZY%Q_xg*9D`}&PE-cVPn$51_pPOZ>%hF{W7tv{a(a8 zx5RM}t*r;{tB>EMcK(BF|BKdsBg5Na{ok-Q@m^cLDp{0tf^3;HCleZiW3ZCq>!30G+0g1YRn-atlUS5 zD9A?{+5{b#8(Ig9fS490_qE?92>Kb6`}ovgS(ORbahawVWm9MQm^TTVtX0X zd4DnY4L&OJ{`~x!2!k&J=bn?YKZC65M%l>#tV?4Xjbe(@#ol!SYfD~jIdmZV_M(&N zDtG%9$G;}pu~3fUclX1Kqqs&JNbEaBsC=IG<}g@AbJL1F&JxD;2GWSfygiqgn<7XW z=ic2hlqFqq<1Ufa5}VCMsYb9UP`uF(`hfLnw;=E>yhi$-lTV@E>OGmg1P? zpEm5jak_gZ;YUgRlaO`ICv)cz={rp!mj8+3eA5odl7*H27nb(y3q9RK{Yu8rF!s0i z|J%>~4?ZuN^2qCxx+dyVgVfO*yLZ0*`Dq>n2@=B`DIi>Kd(^74=8*o~(P7DImz5xG zOv1a_EJ61vzgau;hr^cIJjYK^86(+u!5EdH z23YJx*89mFkyuPsrk|3voSdg?m~|DfB@cWH)6`LM$u<0cf81~G$qEGUSMC_Rr((Ze zWbx2@pYY$D2kXF9ulKQc@c#YUSRaeEK0pI8jFt&euVHAs5+r2Rq_+(Nre?}9&;NrJ zeu!7Z5)H60*`Me|BJPx1;ak2gcjG;M&o(mpb*)$I(MqQjiJW78ZO&9H6lXolw&F?NMO&s zy5AV>f%_i3#YiwYVk)!H(;Q`iD+{dSCMX@fu?WAlfw+7i74@6;ok1LGA~$nzvW}~- zR7rmL`;PxJYYHN>e}{U%e33i0)6FRG@F~ZCK+N1yS8;%VsWgw6uB47JDrAZI-)k(o z1|`Dpe?Xwop!oI>hBB(;^C6Es&4ZhA9S*OP#D>PMB6$KzA=*|KewWxE*Jpi-RK;>h z8+bH#UUTAVYPQ=1e@?be!3I0kj{%WXOe`$EyTnX`A1m1l^TM}xO}($Ry|{;l9`p0} z;_bz?gGl~}N$LMQ%YhIs3RGpr8EGXVU`0IxKlB^JC=n|*U~Hz4oND|Au|2`VCy;^x z&`IdaeUfVDcxJbQq{Gn zSYGarljrD8Pt1zXs{L%XR+`TQ6*umE8A^o;|Z0@C1E}4I|#kng)F&1>VV-X_ZGiKE3;;`~Vmlx?lYunu?A8 z?+2YfbU7^nD4}g1Z#X^|Do!Dby;%JrCNR1UuFkrkUthzSk$F-_(h;b@ zm#@aeY^=YTZvH*5z~uk1Up2(U!a2k;tgzs#^dF*7?8{H@qV?MMkb8?B>V!HZz@boF z3XwMnQ32L-=CJng_KT(Ih8Z`5*2>EEy;7Sh8@<7~!J^9cDs2@a>@OdG`!M)fc8LB! z74HPVK=dZ~ngD%V3crJ4EG?p=@a*J+qL#n}GPb{@bl-zMXPjk&5B-~KPH_k}$L@BZ z!Ezf*_!c(GGoG(^ZUy-u&2=-!$se@wY!Qw_y0z6G;bEqP1Wi9B`Iu66X9D?N1!ODj z-C+(i7*3F~hyZO~UGf>sj_#Z7J~zW(0a{v6zCiX<2@?u%alricIRIcv*H|hnrA^DL z^T+`?sR01(Cwy@%T6N8L8@BqnKL_LibQ8rmVO60!-;GC_Ipzgi^aka1JWmfjo8#DW zPIf@tGr0Lcr85Pp=S`-J{5p_r;un^?vW;D^BN5{w*m>zWl0(i!MBuQ@RXTM8j|2x^ z{vKj(`GAxbkp-Rwymrz2qZ4Ii^5)a$+BaD1}>_5gMy7_QSusBBfM0`Hw`?%DKwdnz^RsM*>(d7#RJ0=o!;n zOZ!y6T-DcAo305GcN{5PMd@1Udu7o?7}ZBtnwE$qEz&Q>Vxl54;_tOBeeS1~`Cfd& z2-q1hpDaxozdx~7uE74gC+WWPZn3GP&G)T|$(whR5xWk*;~9wX0es4#4zL#h@Rg^7 zwAgx|qZS(*(W!mn8EucW0Kd2T;mX|;#Hfy63AO(B!{%WfL{T};@Ot=sI^bMY@IP;= zAbtAXyq5}aD4^{p0fWqI(EZKVAK?OXjRoxtSinkzsLN&XUR7Sr1x*c}?Q|p`AN`1t za-aFHDw^e~#5O-^ug$OGIm(1aqOF$Nyw?@IC4Y@~?@G2vn3L|5IL|V<)8oW0L z_LF6)1z=T?Sj=79``wb0Mi+bQWt+Lrog5gHT;8i;TO6Y6iyiN~51?v@1+2bml418K zhEOZ1YT0O}4R&~BGjI06B zk&aSUd4<|udCns?F6IuIo1;es$2YBsj~k^Vs9@J+cUBtbSe@<GAs}!T*jf>TjDf*rtKUC9 zq6c(}Z5|j{+&ySh%=im^2^YQHkQ6tS-7oAaQ*VfjRA}?`^>btJadC-bYgKG%7WBO* zctS~FVs3sox*hS-X(wEZnx}Y6^VXGK-stA=Xt$GuL0xH_`^8D3J=}FaCO|2QY{~2> zod$Au3&rw+`}rv$nt_J z=B5Za%cX)cyv%5?33i8^xK%wQE+7!M2WtDm%HhF&A;dix<2O!YIiL2&LhAv=v z=9;YM=hWlU`(!6_0_-BzBOLRP*0{+BQywSz<&-!$q35yJCfs-Nes_znEYlEv=Q?v) zAmH(elkavFtSkmG)Vv=tswQ-1|H2sbpk6o%PbqlviFRKBbB=}rDM^n@HZ_YKChf_p+-yw&@ z8CP(>`JX(YlL#si#bw+iuD@d1gW>aZOeZjgY{;542vDcARpiVJn5;?v4ek9_}261v+&3P@s4jueYMx>FZFnej&afd&L=6UIPN8~ z;}y5r9a1v1)!$?i@iXo4w;0WgnV*XZKto{$tcsXL_|I{v8rKhxKxz^H{XO-KBQ@mp z*}}EE!^us9S(>Jm=GTgfp{YA3b8wMHT3v}{Ue`i{2x4MFaQ4)T<7!wvHbO?fQ^AS2 zPY|f$?E1|P)-j9orst~_5K^w>a7T73VEgH!rc}e$pLD4`*^24nIzs!E&-J0^@Xn^+ z_HhYL#7^t7&!zL$y-N{p#Q;a}-8>0zDdK*0^0OOAi2;OI$f$ydr{&^cD)m*OgYAjA z9aRBq#ItRNUEvzTiV5Q{YDq5vWkhc{y#@unUklCAd!-DT$gQNgq%@o1(ncm*>h+Sb z{w(T=ziC1p#8>8UR^HO7FF_9xRsJ2v*wE3;GWyQ*96I)Jsnk&iBC}F*Wh_6=#!hTEi5@=&- z($YVkn|_Wk+F3WAZuPOLXZqRAU^naMJ^KAb5jUZhufcBd*@~C@r0Y~J+vFaLb-@=| zUH`YK-NW^|3R<5#y0)@J8x&ux)7;5MM(AOhE< z&ps?|_a@=tcK@V5Clf(N)pH9q*bO-?G+EoU^`5FsB2hXQhA!8?YjAHNV=`$uxgbI3 zJo87Fw|_(XMUn0&2QI+O*;ccT+UItES9IV5FO~oG;m#ay21MEB!2^`g#1`k+Z4wnb z{I{%6=-qrXuRso+_KS&}$>+52(Zj2T1lIYw!-@Uic*=Tcp}%(B8#oRoT+pW)(Qo6n zI7giAwoEyeJiu5&k(dAa73Zx0A=8h<+hesEpX|*G!B5d419n&|-7JMiHXBJ*d%(M_2^Q4&2r_KBp@o<8QCZEjF@4a2g!|qFUU5sa8`LVX#xN(y zU%aWk@+AlO%G0NEt=)&WKL1&4yc3}S+-Y8e_s4g2u8?Cv7h#;*7P7_c?zp73@NovO z#ruveaD1rzt=@=H3m)JctXiUOSr2!jOiEOQ*3X-yL}`QEGv{g@YQ z$bDw73_%bgz32dl{`?Db$#~bt&&}Q8=LG6iE-tm*tixQW2A$Z?FkcqslTnbB&XuR~ zmHOE(*R=JsLl0=CWVghctdu}eR?+9?vN)qcBh)CWN3}zQw`A&9vGZb2ZPvBDjh4fY zV2;Kqou-Dy%6b0j%)PPWlxH&o`YQPNtmYRf7J{Syt z)C$J{UMG5;Si#eocruWw4(1vBcw-z&$EYQ%*{6U>l;-hzNw~Ms+WAWf+mJpB?W7#^E_QwKpNU%U!IpN(g2#b?%8hGqgSF4 zte37B`M1A04m(GTSlQ&+*yLN?LEFt6!B=qn&L11CP+zwV{OfYEbW$FHDq?45SLsa& zU8NEXA^Ug6b+{KuQFq)JB*Z_w zKh_L=3PPG4u3SD}#X=;RRfK9|L}u%)sR0OcZ2Y^o2tfmrQqB6b*Bo`UaV+Q`hYmy~ zu04!N-7f-9q?HUry&MagQ;zwNkx`E?uLf41ZYUV4qz1gQ z^o)WuIi;k!%fx{XAOe7hg*lJErY|Y5MHFa6U0k3jAvShA>|24wc+1sB(YFgR9E2Md z?Qp_8et_f;yE*#da_6mL4}>V|JgBWX6XxlNML`+c%JO~IMl8n#8Da}>|v&44w$ zDt#(@I62hpMv-!!1dzhpJ>MDb#ceN&q8c;XzI7^HB!G-=ovFK>(nqQn+doNTV|ia~Ne|qLW@OgNe6K3%fx zRSe%Fk3tV%*xlt#_RVmJHLw}@a)s{-`nwN*7lH`Zf2Ihkts?^U6sS`D889hH?pBlK zs(73Eb4(kow~CI>@-%%y4sr3jixHEG%D@ib2YE-;A9bEYWiP5 zOMIchE$B{~ebUJTH~dSp|IKz~gv*JX`FJWBeNPA^n$>rvCNelDdQUD?Qv}v0TzQ=2 z;Y|=*v!lP+n|b|ttqJy-{kFlE8IaFtHxWa)`}s5o_+R$~i0r$*W`8EycmQ)4`-ui@ z%G20eo6NPzWI$UhwbAvnR@pU7u<_DsOcVGk^4`6(m!n7OL8+!|0yKr$Nb}Jx5%D9r z(e0o;C;=;JfR%+@<7TIpZAi8?jZEdKho z_l17*pOe*tz;d<=Kg0U>r5*PvS)Tj zT%xL`)pg5#7|<5kTbX3sEjB@W#2=PJxe`G4t|n(Xxg2EU-f~cdkqYHnRc7EJ2GY&t zO3Voe)yi2X<(*S(o&`uUbK_gEGchOh2MhSKZKKIGMh0$K&NimT5?_l`UT|J_b4q1C zK^_bg$zcPX9cOi=c7-M9<-Ec!nR1aD%v=QT^Bk_Zezpm3FZg+B-Wj>be8&^ev_6;< znRfq-djkHf4y?L3s}S(qDqCD6+CD1XN0)&aWX+yU|ES2bS;h&5nLQMM=nkld2wkqY zRK z{h8;VQPFrqb`)Uca(h=`D}FdOlU5Vf*B71M>?zGiWIN;T`@6}%kX{Ni%AnbKk%5{1 z57b}VMZP8=qgu|f%L5f19^*u9^O`G;NIuV7g*1?%ubLLOzeNT&qZ!Sf7vS2U8uuo0 zti*2Z+>U(UsqExuwMyk0RtEfE)1!7G&Z|2oS}5G~I1d7#1~$8Pht1N^lRIy3HoZo8 zO~oXFrD*$FP*&D|dAzUqQgB!r2nese%bF*CbdSwa){dr3gzyu4ch|!ElR(E)($=kr z8Bnfc!&v4QtMxJNn|_Cb0Nq*$(mL-NU~tiv{q_sibpEq&CWo)+Rqf@2+y#N;T3K?kVU&QBhbrU2<)(V&td$GTFMN^&!0Hxhh2NsjS~=@= z(3TctZuRgIe96&$zbLJvid5UBekgK?lzdd1C?|mX8uvH%>qIm(+MH7N16?|zM`9(P zvb5e|x);s!tT|CiO1iwEEsx?*s}&T;7OHm*Dz6l(3gK?P#hV?g$o=%I|=nq$12 zc61`SX{$?~MtYp+=S$G}C{$mP=i-Wmf^xv!LE6nmD{+;irN1m#Am{p1POR~V5Ewz- z%4JI0{yfj#V#V23^dStBqv^GVlY2SkF>j5|njlH#!srffDldr`?~N={C}y#$Mr%4z z2llkq74duZXLFj1|194(r5mH^gH~te<iR_;+<3M|6Xl@OLI2PNP4h&(+4z8a z3W$uC-Td2c1D0!uPCNN;4<#deA)!)ep2y|R{TzMo@nDVZIgTzbC2Uto-Pd&Bo0FVG zhm_*2wckj-s_OVOYsT#wUi(RF;<0pz`6bVW4>EdA3n}QtyX&Oy>pb=4VT%5DC*@kF zbI<5~_~^l0HAv<=4-G{?7d~`qa7D%TV|WvzzH)m1{8haiR-4Y~4Oq$+Xl1odg_Zp- z3TzXsbxP0}KzX(`bj$m|*6pC7{5{zhfB%VwKd(Lx-RaSC9$K!XY|HAjG}{QdOuGvh z$>N;cxmue9G4Y4FOI4WZ99&dLUr@F=dQKBeI&6G|gMMBYN^&Gxul6Pc zC<=#`9PejZ+O`HbEF#x>6!aEL4C1niaKl3t(uHp>;jJM-^a!~su=**)&$?r3=(QjENHMa#Pc|&`+ z(x%ALVHtCNR=4CJ+PV4Ti%@+7?)&De%gd5o2E5Ak@rll{@VDak(64ig_cMT!yr*P` z@XMd^CrJk$6qhFucMgN;V>h8K_^$}r4EzF5ANQw(duTWX=Grj@Y+i^BBivd{?cS)D z$+zK{Q%r79!Ltv2dh6^)=G`R!XeZRw)8})Ma>87G9{plU!4vT_88uR)UUTct3SJ@fQH_(ecp%lou$sNPnq{S^C;~T6^Rm(3yyK%!X;K zO>>P1e-wlN;dNZY)K8^BbCa08)+o@HP>C9l*MDX~I?_z8(?~qp6;W;~*Wo?5;PsOd zRs;alczd>3MWyCNQ|cAu*FwQ@x-Ab;nx83z7HeFx!n6J!u1@M!LbUpTBGUv*;c(>eY%HHnJpszbE)wYk7HkajQ}72pj+Ex z(L?L}kp+?pX6NZw5T6fXmiO4y!fglSMIoal& zR`<$?<)ZTb^XF!qzV!QNe^>SArRctvnKv|!OKA?1U;;o{{1pvI&Mb%PanLaIyWM7_ z)F&O;9iSFho4J{a-C6E!6UE8klA%khD2vr}FyY3u9z(ghCgQr>nwN*NGC9J2T$fy) zq%Bn$UnpXLu(maVPhn9-X^r+pf6c7p5_q{k)onKtnX){L+Tr)%Ld%Uo=e14zhX)-{ z-i&)|5~H899+M9SNn4UZ^PULA9m}!Y)t|NLsyj#@+OTUaCSkukafGJPaaM5>Ye%1n z$X7u2rOVFkz8(CoJmCiu)rWANBsndb8dh#wW2?#W!D;F<#Kzf%%>-1YKCq80NSa3U z>$>(_xQS`nqdcRNI9|k+Y{g4=Sm?~iWem%O#$8{ze24lsl&F^k(D8F8Y&UZlm|@g@-(+1bYaqeLnV}Ol;L) zm~UK-?5i9b^4L7@9w15gsqVDuVr#};WddrD-&Oow&h>zR{!7ZB3NOG}d z@W+e}p*!CvF+jTEi#jLdD_}ZL8(c=GGauo***iok&40S`1UYpVz|rZUzB=pHh2pll23*&sLymtri#VcW9#8fIn}>Q;;F1REKsr>sqvEYg z8&v~=FX2k$g7({xwQoekV<4cg_`HI`e%?oL`qZBe(_^;nya>v2y(iqsepdyVE#3=A z>-Ippp@-!UfxtILK_9#HOXrO`&OwLW%`?WZB6Th=?q@`g5{D?t_#7y-MzOBQ>&=!S z0Ec>aW%BRkHpTSFeav!jv4R!iPk4;Vk-L3+O@sDp_t_2;_mdv#ZL(Mo6x!17o=Qe- zHtNe%Kx9UT6Etb(B0YU%U5Yrof)wi=7TXM^Ld=H?;ZO{Cj?h-8*MyAba%V2h_0oop zZgu=n)YZ^7yPXy?FgpgP?zcC0ULlHN!22_}(ez##PvtUX;d^p#oFHpq@}yd1^j4_e z=5Z-az4sJ`*jrke2P?Tondr|hd-zHtEJrFt40N@@RnggqY04y0SN`>DS+q2Ar~of1 zB7pB}=aoRbjH{C<6)x=JxckdGv_BqemQdACX@YFDW_lVH_M zzaE;T5*zhKkxxBK%LzP0ps_gLf2z>y)!1+3fZy$x&5)9ZK`^a`5?SJ(6YH>EI+^FU zcirhlgB%;{>pZb9YI}HM&|{L*9{|GCDJ;PsVTWEXlUU{&twHU}*k5GzZ&L{eo#A#c zK98Pv8UQ<+L7R2&@>XPJM3|y>+lSFv_!QB%6^re8k4q3b6)_t)M!ZPE!epAfPmccS zPT`;{w+}dda~&2zUSvt*ZtuWc79o=$n<+>9N0(6fWrQQU+@&l@UL8g%&}8E*+meOs zg)(F|y;rnv>Qz`{LXQ_zpz8B=l>SVS&n_l%kLwkFW{0Cy|4#dSQlcH|Gf<60E^n<# z1??|~i9Qwo@x;rwNPAc0!9@4&z%)Wf1Iu{4WA71i!YF@E@GP8P{sZ}R8;TO^#*(k{ z+yvdbN#5pC0cYoPz|Nm3`gAAGyUDVE0BEFs>&ICe zX=$Udr_ILdd`?`R(EZY}6vVVkJ1J)i%>viaI+xZS0nz=m%!xuC3f1l%#-p6URifN= zcpK^oFCM- zctFfT&vgD#P9Q$(@Iw;J-#@=-x58ZbKL%6>Z6`)}rJWCmKBxscUxAM2G!|}{ToOOL zqO$k*Pya@Jq<1~(TFfKfFqDYuXx|8}#opGfHJ$906^9DD*Jr1yknRcc?R4a@w|oD= zBm!1A3aR#Ib$DVThcWO^1>~Qt)UsZ5_EvR#wwcOwSn^A4_hbQty>}4Xf4r}*^WNl< zIOy}PT{jPN+@dCygG)B{mg({7=S;7CAroGn(agA@#VFC!Y99V(@0054nC}%nqZT#d zpW>iaO4y^e{OgP9%z`P+O_ji;kkj42>&9D?HTSDeTP3>84v;rHef>6Zy%%T!Pl5z# zmfGu5{a((?CblAz8%=hrIn^}lcX@~VzuPZQVF-Y7(BRVnxK^YLU|mx-xLq(!_Mk~~ z++1N=XTo4fF|=2d1P2G3+1_)%Y`*R+L#t6k?#tGT1g7gKUC-Ooh%=VL`(`^6=#+uv zg`5xm&UI#2scqS!2js8UK~>=~wQ1?wCfmzPBlxGccFR83SA!ReLiGR;Dp`14Q7B48 z_7E>=t`~&2o2%rlLCuFU52MVp*m`N2*!;C6%Sc?~1TJJykeOko<92 z2wQcF;V#Vi_GN~J-?z{U?`xD&pW1_T2B)q3Mt8Ha2-ZY(C3MxoUu@m$kE zSh&duQ+4rC|5d?4OE5#P)8N#8l-xW28(PoF5DC8%9o%f=MnwDjsU}5~E{)UuhG?Uh z&C`q7G%~VSsJ@K?jg3*koVtf(g7#VFdF)pV^Smd62R#zJE3vPgu4oU#B~x2fkHDde zyWq858vVt|s-o$gf;ejEyH>r;o3!X;0%|e}syN5vl~Sl6+uQRJXL}k2Aifv&zFvrc zs@Ba)*`R-_@Xt}vzP?}CdPSS1Y}VVRXe#HwA#257@Zt{-38`9eUsHiK%j<8*?!yE>mY_`$Zi)BGkJPWU3}H9s73#{ z2qioA=~&A{rIJs};FBrmmn4-5UK1~Rar)EUO(uoE&$j1U;&>_uds$tCO|kzPDL3%& zBMti~b=F6pDf}^@RpdizJkW`N(XDhD&_L<*i{0h!U0EL?Rr=3z{0ZP=v`MPI=vRpr z*#_84N`#ldt6XUM$F-WAc2j9{+KDc0YD-`)u15-8p)06pXk%V>5|K(x#fa%sW26;U z7@FXM!CMxWcHVEnrOX^y6mc=#7x0aT;nH{I#RqTqs`rs-vFK`M;;a~xSwb3=p6_X7nS)1- zX2+8fx<_5Ce=AVNKQlfi{gbP)`k2#QV46M#h0`|&2krz zu}euRl!8L(E5oqva&d=GMXDm}Ag3%nFIyMV&oM+Ba+U|pVqcWbYC(s@ZfFpThTpm( zjV{dccwl1UF{b<_@8sxA79?*g}5px49+xMxRzDM(SJRF zS$cXX^h97g551}??X;q*w>r7CcH!r<6J44c@SWr!bWyw^A<0_bqH(=DABQ$5)U)(A z;^dv)1D7d#sf69TCnkzRHwgw;wTJE3c7_BGm9Y84KcPYs!_We=)rHZ)Bz{+qe#I#( zw0M_~j^csz)9IhfHLog)elIcDQ|k*nyI)KIWpP4CXPT;IQ(n-1awP!*%!)9M5LKn* z=Q6S@oCmIzUBSe-m41(&><_%;J#BtY_r0c2$}hpdyYkxGDo8bUh`%A`CpbbK(CHL2 zdY>y<_+Y9MnnK9SqN#Qeh*=rq(`X{Q`G)iqvLoz9a|B)!>mG8|X za0cvO;Dl(8_tP$=fq~zQl&T6&dNw>%>zUG0$TNgm?2p10-Sob4aS@&Ek6B**c=)#I z`SNriMjgfOAG@4@=fea~$oOprl*3l9;K~|9G%~xvWEEo zQ`uJrL=|;w9}uKNqy-59N$KwH?v@si4(S0Tq@@Nyx*58qK|#75T0pu4DQWqRqVIiw zeD}xwHOx88KKtywc0KD^>#2c#*J6$bar*CZ+?69NAvG!NqV?pf*Ohal0Ug)Swyi?DiuM&nDGLxD@-O#wi;Arcp6KQ|JArJbk~yGSWfZ*yFKD< zcve1ldcRM-9N_FmXWx<{?Fr`XZ1Xbqwv2i)NBnE*-cdKcO22c@!J3(AYP9MyUIJee z89+%DaW4>-j0ViOX?4uqo?-*xA>mXBx!$@)=G7Eq2#1l*sR=(cDbCfsRg9W(=OknY{;^hD%^h(=8LQ3q~$MFhzy6LUCeeeTZQf^b+or16}(FU`lc?1nhJsa*-PzC1}6 z38!O9Qc~VrC@mvkrV}^nKe}qV^d6tGjxy8y@qGwn#ha0uYFAR}Gl4ka=sS!KLeB7Ti2SZf;at zctDX@`((Jh9xcx^ThJ$pIp{cIW74_ewY{Q@Ts02beTlWd+KClajHu}- zuk`d7eiNW8roof>daXpA!88*;oi@=fM)-5)fY0UOf@)GwXl-)@P$Oip|K(_UPn$8T z;w-5^<`C&~YzCp0t;ve0Gk0raHZ?uurY7e1At_*cpl1=5{IiBWc?fiK?!9CI<(10L zZN}G{SMU;iaWWne)XSCueILob~ii(v8w^bS4HtT;#0Y`1rV7}XVdLE zS&eaVF-IotM?_AlIMZ({)nPsQO3KmL`+8-~Ys`61E7;g@vA-{kmulbCm|XPwD)x_8 zz5JBR37dnNu09WJ%oiumY+>@gji}MI9}trw6Ra#YR~$<1|?U*Ul0+YBRT`xx{a z+!S$4M;r+r6c`Rj7UBE1s6nuHegMn;OdDB(11^$V;Br{cgm~>H+jJXZ-fNdr&V9H; zUTYU+RR5-PQa8F%G%+1%%7>r?W`L zG6dYDODsEUc}TK4;U)6e+sU(J$wOj6G(V2viiB1Tlm7Ua_n|*;8^q6jr!kNb&mD?dL8#hWaxuDK>7*i!Et-d&x`86W zN&i`TtDJzF5M(gmB7!`(9A%AzpE=E>3|CAmede>qB&mCs2DiQGv=u4<r5?ac%049UmY+QH0b~IKD37mDYiCi$-b>$UUY|*q!dkOfgH< zF&Wf3-UU-`(WfqS%!WvakHi{V>BcXaR_hH^mBr^2m+2m1Ky*w*Z!fdoQ2}A0U5PYY zSQv#r3OLS}u&mt4cs~%qd!ndO)rQ$BdAeZ9{lkM_uCb@9as_=unYj|ap1mI%3IPH? zAUPgUmw>q)%pxdtQ7O4IT0B$ueYL@TmeU-u2(WOe+qBEtQ&BIW{qSt0W38V-tsLED zm+E-)K%zPcGO2*Ne5~uaX%=eeG2x3uj`w;0Qjsd&6%!-bp^s#BJLT8jdmN=PA|A#t zL$>4t{V3VDpcI7im2|V0Ku3`5xFi5#l%LyD;V9Zy9R=PS!)607E-(EH>S+&82zK`+ z0x-=w!fJ&D)J%rGV7P$={MF~Y`Zsf_RDq{aNIW_aBw)yxc6UBB^36tYN6k&M`tGX% zBIVV}MLMVPx0@?cFl&^(744Ie(*g>_vBMC0&xW;{i~GM0l2uLUMg1)C68TCn!|%UP zpae8IbDNpAX9G745}9ovS0RY7Du*l7?YEx0J4oVN^9F$ey$^}&uj{i-2<%Eg>4ajk zK0$N{fB*_iz6)j~O^tSYMfDW3$Z5gmW8RD>i?_pj^%ICo)9hm1b;swjCpHAk7^0X1 ze&z3~TVfPDE_SUQ}&?j6*}$)!3M`5;U)a0MbkU#&j#QUr7hu zXHjEcjopH}_KH}`g5DN?mw`0{_~P}FM5B&2EYR{;tXc;e%=~jdO~H=@^8QH-Q4;lPW>w3>`{@97xP6rct22GdOdP{qaMGgQ`x zm(U}?|E~}7w+RR$f7%CeNi*P=DaGd5 zog^8J&=be@URhU#En@45{V^+4s(cpO3EUx~G5HeLRHM9z`|1peO39n)$hdd(@(?v- zb!rF|fQXv&R;6F9Fkg4;0m9`}-Ln)IiaNSAm$NaM;&-m|}q4-)( zCDDbsNUa95G$U)yFD>6IKXCLRIyx-H_NFxra!2NNh1uB`f2t+YA$d=NZC`)afH@j; znpF|~c#50|;<$ckYw>d=^US(c=(J3UoFp0rsqulmgBdT;GIVducb#w1K~!%+Gm)r-(Q@6epE5%&GbybK>qVI}%u_h$!^ zpZqdEk{gBuo!p;nt_=QbIJhue^oq^hWLHwe;^n$I!tphYzR0*gaV9Q(GbdikCU{bLkc{#`}5FL9H@n6l7aLU7hD!Yik4@BM0;~2xp#zZC;x#D!++#6IrghDu|*<;2nMIX!iIi=t+oJi2XCV7p|ly_-oF*>`KTMh!+ z&F{`>B4mH2jhq^}9Lq^ge0>jzqpQ;rywNy`enx!eK^OcuE}ndDeny5=!)Akow|&X( z1n+4A?-7fpEsZPYMJLCtAO{xnRmT*_F?q`o*q_jCd!S}JLm13a#RdhfKmF^yG)1NO zYGxZV#xZZWR(Ty}lOC*&hln7(?NjfXt`n02i!LB`m>nzV)HV7s_!SdHPpQTw70|Yy ztA_etrbkoQ2k?4xL6QxHCeYudaQ}LdgP{Z&z7H9YJ={_A zMnlkY<|CrKGZP=N97~e0TDBV%!G@7k;&J9dhNPDPg3QJ&48zxJCxb9QRb$6U-S9dB z#7-FPzs1c$|Cz9)nJwLzhYXjw8KWE#(-)QeS4XWvRO&X`tszMJC(_)?TkC~h9*PiO zge_zB^-4@Df%`K(Wa=#Q3-_F_|xsQ&{Wc9vy4QpJ)DM4Yq(^>8Rd363CO3qH~^;P2+aCwmC4eu1Bw>)6^X1zUx^ zmiqb<_)}$53BXA-L@(_T$av^qN6#v9ns2CpoOKO?DZeJT2*}@WT``K$>87QUf)Gk` z3qSpuf-cb&4uzzB6aTwZQlfN@!5UC_6%!rXMnBeS=JIhxy`8{~_nK)!L^ai54Mh_M(y2+^@g}dEOh!I|Eo0iWrmDF?K}G0ufR^mmh^O+!9+^`L#;d z)JuIvSaAHVg@lciqp^qm-O*L>h?p@@CbKH#0NmYan~7 zrO3YiRK88%*{P6GV&a6|l>3LPA6B4WHnYvE(mU<2u&H6Q&Fj&l;|lV$ z`;eF!`fpv%vw*b$#Z+X+7=~CeVSvF4EIMJBWkN21M7K#Iu-8i{(LXLJ8R|CIr z$sdfIYOCJ9T1{>$5#KFzq;+q8vz2eL`S_Oa#+Lkap{ac z;kO^(A-@iW3LqGZHqR?{Ch1O|Y3vVV!r%XD_rBHcf?T;fEID@#QKjYUm_+Ha`XIFa zzyP~~mj}OT+WF(iVxES^gv1kbF!%%X7KTW4WuUOyMso1*$SJ7UPgFtu zt?aQXn^#cLqFOwsAxB$3^$q<@{F>c4uk1xVlw^Gck6TebKP{vXxKN|a#>w=1SI;iV z%!zwwqq?V)>wP!9%Q2Boxvd}9GP$QfDn%8QiC)=Gk4;dwdC{=i=Q+?~U};X89YX2bP!YI}+%d2tUg}kb zm6VKM4B|L2=`TRmWRLnVQYbvXf2jjgm4hrx6_%$@p1f|sF>SD)6!S<@qC*LW0NBK| zZYv)%sQl+Nxma}v#@Qo4R)f~*Z7T-{4T5+Mw=vA0HypHMQg~%*W~TA&8HD2c(2ZCe zSAuG(G_)wFi&s(eK2j*pk$b6~>2^?@>Gw1heSZ|jd4o{d&ygX)C?Wx{U#I{j;UJjS zHVkVE6@bHLxE%E`06$ZdDTu3ElEV7wF8sso0h4{{LK_Z<0J5)dN4+u@;96aG3*z54 zMoGH$!%{szJ{Ja_gB&}reWJ3tks2~w=ha_^z&p0q^4B-K@#80$+c!^xL`GjTvqZZ( zrpT>(d@cRCw^rg~N3T(9DW@hkbYb5PCIy!6Da1UOjs|JwKX@pwAz3X>_kX@9JH@zL zO^a!`oc0!5t6O$l{LFVE+|HP0-;HLm(|7E|>AXwBbud)-_Z_2tz-|lWvQQB=L6q9WnHXynq=Fg(kR(8cE4`vWQ`w(9GXWc)sNTvz;|Mk`C}Ca-`3g2 z>&xEYo}aF6R)OLzQBo4AM)AprgRY>YNr00mVxUn8?vD#^PHS7UosFII^NV>MUdS%zDS9yKoy9_b@=_+w-+gyd+X<3JYcg_(`T z&ub4zU&Fmd0bjWHBizgcx(ks`6kJxcD(ged-tsER9_P45JgVIvH5Z#7)jRFUI3p0BQ1OPuyw`W9vo^Js@+io)r zNpmu~g%#L$>nMJlvl)#H(0$H7*5l^fivi4*b( zZ0v*t-}e8WjK`zj)rmlMt1apk!W)L4y+kihgIDORzgPdH&Mpu7c*;YE)(;OX)>{DU zHQaVdxZk5s-ZWnI`5?tL%ce>2(%$uhr*Z2g4VTc=!qAMb`va6~sP%6%-$H(FZCAFV z3`Q4XZ!cxu``~d9s;f9!M*jG+6*{mEyiH@IlRr{?fe-v(fDDvsTSvJVG|$ZRQ92E1 zm+E!+ee&J8YLB;3ejKMoPl8oz>1aKX=Y|2dP>macBOr=|(G?YPJLoY9ag0o}Rt1oU z<$Hnct^>96*_Q34Ilq9Aj?M25PH*kL%4~4d868vmlA|nX+9CEZaZdmi5g!BtcUk7u zWrg9Mk)Zs_kG#pVeP%L$hQ(tEAN}I2thJi&#RuViyw@C4a0eHwrBMm4X&=5 zo(OrBbw5*xQ*&j4JCyp>Qy>O=x`F^hhQ+{R>wLC_N5|T~g_l(Vy+FUUK#Wxa06D>s zD=H)a6px*p=tk?eEh!<{d?sAQ#>vCY4Ktmt_lWX=2``}paNwBoh7FDxZ-3BmzLFCmsmGogWRw&E+>B0I>^Eh3g zr9LBnKZd`)VK6*0bu`X->skJ244;66+!PERwf@=Ubg9NBWWF^EeqK@xFD1+rS^Sx2?Dl=k-QRn+rKs z7Sqs}4*f%yn-QkPCv!YMoL??~(}Q_S-<^n_53^dhm7`WU4))u>^1~2;CFksLMXB#{YkeM(Nb%yOyAg3!Vbl}8X zTt)W7c5bG-voJwAW=H$ANO(bkVsy0BsJ|#pQNiYdCLHwt4n@b1@;Yy-x5mE~C{@G* z#AxvA?7vb@e|GugyY_XmG}LA>h96!QFYNOCrn%zx4v`#L{79}K_~MA06sTD8fgTs= zIt8bb@4;sD)$v)mSymy7pLAVACx*ENm7!)Yne^$3@*y{*+k2L`YZvo{SoRT8AG1fl zv6>)*yo1auOH!PVWAjY_!g6N>3RRAazG`jZJuP)*lr61cpM^1=w0vtzP>50Tp7?uf z$D9Xf6v5PPp#ZSF^OcwNrUT4BfIH|()~bBn*!?0(=Gk|HH3rDv)2o7FoQksWu3yo5 zjccX{l4%FV{Xiq*DaEW%e)UT1(b24kn8_3aIV;1#WDJ>6lV+#&&#SVY!z`0MhJHPm z2rs@Xm#^+4-JbfY(;C!z{sdSoqpMw z2hEdZ>6IYI!zXjO%Ao+tX8p{amw1xP;LOp+0&@+yavH-@fz8^LvByIZ{txjq9m@qnlK-ho_cHnc>zBI@3lmOlOOExy^waC7Z^K5tD^XtB6uYKyDtzY9J)!8dUdOy1b z{7M`7sAK2jVQVlWc~b6GFL59N6z6{9+jn^0ZJdSU$z%QGl3RE9*v8t9t;%L~u+d}* zLN-=V9$u2A(_1(%#i#kqrZth(y$-=!Z2G zl9+-t-6%>S#=|T@r^{FNNWh~rBV=IHZt7u}Z;1?okeAjZHF{^)t9bC@=jy(K&i_u`LxT_ zQ!P-lx7d)fBM!m<_cvyGl!3C)iG=(=y-Gf7V%zWR0Ka=F7ZA$UGyFd?nfXM zMFm(qF`uTpmt`}M0U3zQV$TQ%>LhR^fu8N}WsqIQ4=UPQQLL<9LS@%?@KkvYgGP>} zE#neJszsP5DQBIgt#!$B{eunL5g?c<{hJGx<2CNX!w4`ZH|hnDeX zE-uIsEre^Ku?%^%YC#J^(=e0XufSQ_2HzI48Dx_%KfS}N6i}2C(WN1&u)K{)CF6pc zSV`cg=Z*xhUI4-X2OJ?>!Q8%g|9OI`9RD&k4Lxg}uf16SRwOIp)|HGN45+GdKbZoN znjM{ZPAzEU%*qYLrT)PWlK|VtWsWLs^wQW-wu}K?g~+ zXa^MMQX>AiztIus<4_PHD_yoik;h|>aw7f%c);k(hNTt4VpJ1$zK<@uS5wm}o7pnb zKhKIaaVI~Uh(-8eo2y`zYy3XgZe$&j=cNsT_=^7B$bXP~)68nhIo5rN{Nmj+gWk>Q z^OL!Oq6qPE(G+p$11PyfNr&Zb$WemUFS5q3w-@c?zYwob$Y$f1S|g7m3UGf zwW562j~r4 zvCHjKDx|m2XGCZW2&P1BZ|=Hvf*iWutx+J+HIQ63^1jSAGT#;i(L}Vj5O#`gpF-Aq zrFyFHB7TDVadFTioO$YHEVwp*Yg+EA*2=;EB$+WL`rM%Z9_U+%tXRddVn(8jXC#4g z!Y6u3fA<#zwBCX6Brg6qYAHnSK??k!Fe<=*JG1=ChntZEQKX0M{3rEY2aWL(Lm!UK zmE78^fRIb5T32ae!6I_@J2|{_uG9n*9_apGpfE?{Z35lqv3$)J`!y>zq`(2v__rDy z=}HyjZy(+jh0C~P=_=FjI!6itQ)Ee_B5cX;);MYnMQuj<&(g`bYebUe0e7=0Rnj}g z$$fX*G~HP)F#T8uo}StY?K_@{$dz_!8u52&KQuY<8EpBe|79T(?_X2WYMq(Mb{?eg zqsXyME-%AE>UU^bro0@ng5m==Uy zAIyE>{toR9t3%xe9SK4S*U< zZbGq4zh{Oq7t-M72^iCq8Deb$32jdZ#AIHceww^mZmNasQU-P;jaHCmf^7?lAF%0nZeZZz%jndV)Dc*EBn@nmI`=-^nXm`3*=>b0j zs8|g^9;cA7TMg5T7S*Re%vLQ1JTErAK3Ixo)~{V&QAUp90HB!Hr0dinD1ia0Njy|X z`2B&a_4^we62b2eOmR>a1pp+~{%^Ow5z!Y|F5vE4QGtQn03a`|B2^*rJox_s@zrgT diff --git a/app/artifacts/patient_appointment_density/patients_1486x920_dpr2.png b/app/artifacts/patient_appointment_density/patients_1486x920_dpr2.png new file mode 100644 index 0000000000000000000000000000000000000000..8e491a30f2f601bb838731ceefddd996b2664e87 GIT binary patch literal 600011 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