From cf66f936e539c4f7110eef1f5a3d3266e4957569 Mon Sep 17 00:00:00 2001 From: annali168290-ux Date: Sat, 10 Oct 2026 21:20:27 +0700 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dist/api.zip | Bin 0 -> 46293 bytes dist/api/media_proxy.php | 24 +- dist/api/message_action.php | 53 +- dist/api/messages.php | 126 +- .../{app.5af3ef7e.css => app.3ff3e457.css} | 331 ++++- dist/index.html | 2 +- dist/js/{app.d5ef3122.js => app.1158390e.js} | 1268 +++++++++++------ dist/js/app.1158390e.js.map | 1 + dist/js/app.d5ef3122.js.map | 1 - public/api.zip | Bin 0 -> 46293 bytes public/api/media_proxy.php | 24 +- public/api/media_stream.php | 71 + public/api/message_action.php | 53 +- public/api/messages.php | 128 +- public/api/send_message.php | 66 +- src/components/ChatShell.vue | 24 +- src/components/DocumentedShell.vue | 10 +- src/components/LoginView.vue | 8 + src/components/chat/ChatPanel.vue | 136 +- src/components/chat/MessageComposer.vue | 88 +- src/components/chat/MessageList.vue | 321 ++++- src/components/contacts/ContactPanel.vue | 11 +- src/components/favorites/FavoritePanel.vue | 10 +- src/components/sidebar/ContactList.vue | 5 +- src/components/sidebar/ConversationList.vue | 83 +- src/components/sidebar/NavigationRail.vue | 29 +- src/composables/useAutoDismiss.js | 18 + src/services/httpImClient.js | 54 +- src/services/mediaProxy.js | 19 +- src/stores/conversations.js | 268 +++- src/styles/base.css | 370 ++++- 31 files changed, 2752 insertions(+), 850 deletions(-) create mode 100644 dist/api.zip rename dist/css/{app.5af3ef7e.css => app.3ff3e457.css} (87%) rename dist/js/{app.d5ef3122.js => app.1158390e.js} (88%) create mode 100644 dist/js/app.1158390e.js.map delete mode 100644 dist/js/app.d5ef3122.js.map create mode 100644 public/api.zip create mode 100644 public/api/media_stream.php create mode 100644 src/composables/useAutoDismiss.js diff --git a/dist/api.zip b/dist/api.zip new file mode 100644 index 0000000000000000000000000000000000000000..c8a867feaf1a49a4e72caa265851163bf20579bf GIT binary patch literal 46293 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

1p6AJl7tJ$fiAs`6(_AW=_G7>~4 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 strtolower(rtrim(trim($host), '.')), preg_split('/[,\s]+/', $configured) ?: [] ); + $hosts[] = 'zhiyanim.dfpnm.cn'; return array_values(array_unique(array_filter($hosts))); } @@ -53,9 +66,12 @@ function validatedMediaProxyUrl(string $url): array function mediaProxyCacheRoot(): string { - $root = rtrim(webImEnv('JC_WEB_IM_MEDIA_CACHE_ROOT', '/var/cache/jc-web-im-media'), '/'); + $root = rtrim(mediaProxyEnv('JC_WEB_IM_MEDIA_CACHE_ROOT', '/var/cache/jc-web-im-media'), '/'); if ($root === '' || !is_dir($root) || !is_writable($root)) { - failMediaProxy(503, '媒体缓存目录不可用'); + $root = rtrim(sys_get_temp_dir(), '/') . '/jc-web-im-media'; + if (!is_dir($root) && !@mkdir($root, 0755, true) && !is_dir($root)) { + failMediaProxy(503, '媒体缓存目录不可用'); + } } return $root; @@ -63,7 +79,7 @@ function mediaProxyCacheRoot(): string function mediaProxyPreferredIps(): array { - $configured = preg_split('/[,\s]+/', webImEnv('JC_WEB_IM_MEDIA_PROXY_IPS')) ?: []; + $configured = preg_split('/[,\s]+/', mediaProxyEnv('JC_WEB_IM_MEDIA_PROXY_IPS')) ?: []; $ips = []; foreach ($configured as $ip) { $ip = trim($ip); diff --git a/dist/api/message_action.php b/dist/api/message_action.php index f633822..e4c337b 100644 --- a/dist/api/message_action.php +++ b/dist/api/message_action.php @@ -78,7 +78,7 @@ function fetchActionMessageRow(string $messageUid): array return is_array($row) ? $row : []; } -function ensureMessageEditsTable(): void +function ensureMessageEditsTable(): void { imDb()->exec( 'create table if not exists `t_web_message_edits` (' @@ -93,7 +93,40 @@ function ensureMessageEditsTable(): void . 'key `idx_edited_at_ms` (`edited_at_ms`)' . ') engine=InnoDB default charset=utf8mb4' ); -} +} + +function ensurePinnedMessagesTable(): void +{ + imAppDb()->exec( + 'create table if not exists `t_web_pinned_messages` (' + . '`user_id` varchar(64) not null,' + . '`conversation_type` varchar(16) not null,' + . '`target_id` varchar(128) not null,' + . '`message_uid` varchar(32) not null,' + . '`updated_at_ms` bigint not null,' + . 'primary key (`user_id`, `conversation_type`, `target_id`)' + . ') engine=InnoDB default charset=utf8mb4' + ); +} + +function savePinnedMessage(string $userId, string $conversationType, string $targetId, string $messageUid): void +{ + ensurePinnedMessagesTable(); + $statement = imAppDb()->prepare( + 'insert into `t_web_pinned_messages` (`user_id`, `conversation_type`, `target_id`, `message_uid`, `updated_at_ms`)' + . ' values (?, ?, ?, ?, ?) on duplicate key update `message_uid` = values(`message_uid`), `updated_at_ms` = values(`updated_at_ms`)' + ); + $statement->execute([$userId, $conversationType, $targetId, $messageUid, nowTimestampMs()]); +} + +function removePinnedMessage(string $userId, string $conversationType, string $targetId): void +{ + ensurePinnedMessagesTable(); + $statement = imAppDb()->prepare( + 'delete from `t_web_pinned_messages` where `user_id` = ? and `conversation_type` = ? and `target_id` = ?' + ); + $statement->execute([$userId, $conversationType, $targetId]); +} function editTextMessage(string $operatorId, string $messageUid, string $text): array { @@ -222,7 +255,21 @@ if ($action === '' || $messageUid <= 0) { respond(400, '缺少操作类型或消息ID'); } -try { +try { + if ($action === 'pin' || $action === 'unpin') { + if ($userId === '') respond(400, '缺少操作者ID'); + $targetId = trim((string)($payload['target'] ?? '')); + $conversationType = trim((string)($payload['conversationType'] ?? 'single')); + if ($targetId === '') respond(400, '缺少会话ID'); + $userId = resolveActionUserId($userId); + if ($action === 'pin') { + savePinnedMessage($userId, $conversationType, $targetId, $messageUidText); + } else { + removePinnedMessage($userId, $conversationType, $targetId); + } + respond(0, 'success', ['messageUid' => $messageUidText, 'action' => $action]); + } + if ($action === 'recall') { if ($userId === '') { respond(400, '缺少操作者ID'); diff --git a/dist/api/messages.php b/dist/api/messages.php index 1b0d8ba..9ca2f0f 100644 --- a/dist/api/messages.php +++ b/dist/api/messages.php @@ -213,6 +213,9 @@ function attachmentFallbackText(?array $attachment): string if ((string)$attachment['type'] === 'image') { return '[图片]'; } + if ((string)$attachment['type'] === 'video') { + return '[视频]'; + } return '[文件] ' . ((string)($attachment['name'] ?? '') ?: '文件'); } @@ -641,6 +644,9 @@ function nativeMediaUrlScore(string $url): int if (preg_match('/\.(?:jpe?g|png|gif|webp|bmp|avif)$/i', $path)) { $score += 30; } + if (preg_match('/\.(?:mp4|mov|m4v|webm|avi|mkv|3gp)$/i', $path)) { + $score += 30; + } if (strpos($path, 'image') !== false || strpos($path, 'media') !== false || strpos($path, 'upload') !== false) { $score += 5; } @@ -691,11 +697,21 @@ function nativeAttachmentName(string $url, string $type): string return $name; } - return $type === 'image' ? '图片' : '文件'; + return $type === 'image' ? '图片' : ($type === 'video' ? '视频' : '文件'); } function nativeAttachmentMime(string $url, string $type): string { + if ($type === 'video') { + $path = strtolower((string)(parse_url($url, PHP_URL_PATH) ?: '')); + if (preg_match('/\.webm$/', $path)) { + return 'video/webm'; + } + if (preg_match('/\.(?:mov|m4v)$/', $path)) { + return 'video/quicktime'; + } + return 'video/mp4'; + } if ($type !== 'image') { return ''; } @@ -730,7 +746,7 @@ function nativeAttachmentFromRow(array $row, ?array $attachment): ?array } $contentType = (int)($row['_content_type'] ?? 0); - if ($contentType !== 3 && $contentType !== 5) { + if (!in_array($contentType, [3, 5, 6], true)) { return null; } @@ -739,7 +755,7 @@ function nativeAttachmentFromRow(array $row, ?array $attachment): ?array return null; } - $type = $contentType === 3 ? 'image' : 'file'; + $type = $contentType === 3 ? 'image' : ($contentType === 6 ? 'video' : 'file'); return [ 'type' => $type, @@ -767,7 +783,7 @@ function nativeDisplayText(string $searchableText, int $contentType, bool $hasAt { $text = trim($searchableText); if (isNativePlaceholderText($text, $contentType)) { - return ''; + $text = ''; } if ($text === '' && !$isRecalled) { return nativeMessageFallbackText($contentType, $hasAttachment); @@ -776,6 +792,29 @@ function nativeDisplayText(string $searchableText, int $contentType, bool $hasAt return $text; } +function nativeRedPacketFromText(string $text): ?array +{ + $decoded = json_decode(trim($text), true); + if (!is_array($decoded)) { + return null; + } + + $packet = $decoded['redPackets'] ?? $decoded['redPacket'] ?? null; + if (!is_array($packet)) { + return null; + } + + return [ + 'id' => (string)($packet['id'] ?? ''), + 'senderId' => (string)($packet['userId'] ?? $packet['senderId'] ?? ''), + 'target' => (string)($packet['target'] ?? $decoded['target'] ?? ''), + 'blessing' => trim((string)($packet['blessing'] ?? '')) ?: '恭喜发财,大吉大利', + 'status' => (int)($packet['status'] ?? 0), + 'expireTime' => (string)($packet['expireTime'] ?? ''), + 'createDate' => (string)($packet['createDate'] ?? ''), + ]; +} + function nativeMessageFallbackText(int $contentType, bool $hasAttachment): string { if ($hasAttachment) { @@ -784,9 +823,18 @@ function nativeMessageFallbackText(int $contentType, bool $hasAttachment): strin if ($contentType === 5) { return '[文件]'; } + if ($contentType === 6) { + return '[视频加载失败]'; + } if ($contentType === 90) { return '[红包]'; } + if ($contentType === 92) { + return '以上是打招呼的内容'; + } + if ($contentType === 93) { + return '你们已经是好友了,可以开始聊天了。'; + } if ($contentType === 105) { return '[领取了红包]'; } @@ -892,13 +940,19 @@ function formatNativeGroupMessage( $messageId = (string)$row['_mid']; $timestamp = timestampMs((string)($row['_dt'] ?? ''), $messageId); $contentType = (int)($row['_content_type'] ?? 0); + $redPacket = nativeRedPacketFromText((string)($row['_searchable_key'] ?? '')); + if ($redPacket !== null) { + $contentType = 90; + } $isRecalled = $contentType === 80; $direction = $from === $currentUserId ? 'out' : 'in'; $attachment = nativeAttachmentFromRow($row, $attachment); $messageType = $attachment ? (string)$attachment['type'] - : (in_array($contentType, [1, 80, 90, 105], true) ? 'text' : 'unknown'); - $text = nativeDisplayText((string)($row['_searchable_key'] ?? ''), $contentType, $attachment !== null, $isRecalled); + : (in_array($contentType, [1, 80, 90, 92, 93, 105], true) ? 'text' : 'unknown'); + $text = $redPacket !== null + ? '[红包]' + : nativeDisplayText((string)($row['_searchable_key'] ?? ''), $contentType, $attachment !== null, $isRecalled); return [ 'id' => $messageId, @@ -929,6 +983,7 @@ function formatNativeGroupMessage( 'contentType' => $contentType, 'text' => attachmentDisplayText($text, $attachment), 'attachment' => $attachment, + 'redPacket' => $redPacket, 'status' => $isRecalled && $direction === 'out' ? 'recalled' : 'sent', 'deliveryStatus' => $direction === 'out' && !$isRecalled ? 'sent' : '', 'recalled' => $isRecalled, @@ -1333,6 +1388,10 @@ function formatMessage( $messageId = (string)$row['_mid']; $from = (string)$row['_from']; $contentType = (int)($row['_content_type'] ?? 0); + $redPacket = nativeRedPacketFromText((string)($row['_searchable_key'] ?? '')); + if ($redPacket !== null) { + $contentType = 90; + } $isRecalled = $contentType === 80; $text = (string)($row['_searchable_key'] ?? ''); $timestamp = timestampMs((string)($row['_dt'] ?? ''), $messageId); @@ -1340,8 +1399,10 @@ function formatMessage( $attachment = nativeAttachmentFromRow($row, $attachment); $messageType = $attachment ? (string)$attachment['type'] - : (in_array($contentType, [1, 80, 90, 105], true) ? 'text' : 'unknown'); - $messageText = nativeDisplayText($text, $contentType, $attachment !== null, $isRecalled); + : (in_array($contentType, [1, 80, 90, 92, 93, 105], true) ? 'text' : 'unknown'); + $messageText = $redPacket !== null + ? '[红包]' + : nativeDisplayText($text, $contentType, $attachment !== null, $isRecalled); $messageText = attachmentDisplayText($messageText, $attachment); $editedAt = (int)($editState['editedAt'] ?? 0); $activityTimestamp = messageActivityTimestamp($timestamp, $editState); @@ -1358,9 +1419,12 @@ function formatMessage( 'target' => $peerId, 'direction' => $direction, 'type' => $messageType, - 'contentType' => $attachment ? ((string)$attachment['type'] === 'image' ? 3 : 5) : $contentType, + 'contentType' => $attachment + ? ((string)$attachment['type'] === 'image' ? 3 : ((string)$attachment['type'] === 'video' ? 6 : 5)) + : $contentType, 'text' => $messageText, 'attachment' => $attachment, + 'redPacket' => $redPacket, 'status' => $isRecalled && $direction === 'out' ? 'recalled' : ($direction === 'out' ? $deliveryStatus : 'sent'), 'deliveryStatus' => $deliveryStatus, 'recalled' => $isRecalled, @@ -1510,7 +1574,16 @@ function loadRecentConversations(PDO $db, string $userId, int $limit): array 'portrait' => (string)($users[$peerId]['_portrait'] ?? ''), 'avatarText' => mb_strtoupper(mb_substr($title, 0, 1, 'UTF-8'), 'UTF-8'), 'updatedAt' => $message ? $message['activityTimestamp'] : timestampMs((string)($userRow['_dt'] ?? ''), $messageId), - 'raw' => ['type' => 'single', 'target' => $peerId, 'line' => 0], + 'raw' => [ + 'type' => 'single', + 'target' => $peerId, + 'line' => 0, + 'userId' => (string)($users[$peerId]['_name'] ?? $peerId), + 'userUid' => $peerId, + 'displayName' => (string)($users[$peerId]['_display_name'] ?? ''), + 'mobile' => (string)($users[$peerId]['_mobile'] ?? ''), + 'address' => (string)($users[$peerId]['_address'] ?? ''), + ], ]; } @@ -1536,13 +1609,34 @@ function messageSyncResult( string $userId, array $messages, bool $includeConversations, - int $limit + int $limit, + string $targetId = '', + string $conversationType = 'single' ): array { $result = ['messages' => $messages]; if ($includeConversations) { $result['conversations'] = loadRecentConversations($db, $userId, $limit); } + if ($targetId !== '') { + try { + imAppDb()->exec( + 'create table if not exists `t_web_pinned_messages` (' + . '`user_id` varchar(64) not null, `conversation_type` varchar(16) not null,' + . '`target_id` varchar(128) not null, `message_uid` varchar(32) not null,' + . '`updated_at_ms` bigint not null, primary key (`user_id`, `conversation_type`, `target_id`)' + . ') engine=InnoDB default charset=utf8mb4' + ); + $statement = imAppDb()->prepare( + 'select `message_uid` from `t_web_pinned_messages` where `user_id` = ? and `conversation_type` = ? and `target_id` = ? limit 1' + ); + $statement->execute([$userId, $conversationType, $targetId]); + $result['pinnedMessageUid'] = (string)($statement->fetchColumn() ?: ''); + } catch (Throwable) { + $result['pinnedMessageUid'] = ''; + } + } + return $result; } @@ -1571,7 +1665,7 @@ try { $userId, loadWebGroupMessages(imAppDb(), $userId, $target, $limit, $markRead), $includeConversations, - $limit + $limit, $target, 'group' )); } if (isNativeGroupTarget($db, $target)) { @@ -1580,7 +1674,7 @@ try { $userId, loadNativeGroupMessages($db, $userId, $target, $limit, $markRead), $includeConversations, - $limit + $limit, $target, 'group' )); } respond(0, 'success', messageSyncResult( @@ -1588,7 +1682,7 @@ try { $userId, [], $includeConversations, - $limit + $limit, $target, 'group' )); } if (isWebGroupTarget(imAppDb(), $target)) { @@ -1597,7 +1691,7 @@ try { $userId, loadWebGroupMessages(imAppDb(), $userId, $target, $limit, $markRead), $includeConversations, - $limit + $limit, $target, 'group' )); } $targetId = resolveUserId($db, $target); @@ -1606,7 +1700,7 @@ try { $userId, loadConversationMessages($db, $userId, $targetId, $limit, $markRead), $includeConversations, - $limit + $limit, $targetId, 'single' )); } diff --git a/dist/css/app.5af3ef7e.css b/dist/css/app.3ff3e457.css similarity index 87% rename from dist/css/app.5af3ef7e.css rename to dist/css/app.3ff3e457.css index 753c543..e1aa894 100644 --- a/dist/css/app.5af3ef7e.css +++ b/dist/css/app.3ff3e457.css @@ -1268,10 +1268,48 @@ button { text-align: left; } -.conversation-item.active, -.conversation-item:hover { - background: #eaf3f1; -} +.conversation-item.active, +.conversation-item:hover { + background: #eaf3f1; +} + +.conversation-item.pinned { + background: rgba(15, 118, 110, 0.055); +} + +.conversation-pin { + display: inline-block; + margin-right: 5px; + color: #0f766e; + font-size: 12px; + transform: rotate(-25deg); +} + +.conversation-context-menu { + position: fixed; + z-index: 1200; + min-width: 124px; + padding: 6px; + border: 1px solid #d7e0e8; + border-radius: 10px; + background: #fff; + box-shadow: 0 12px 30px rgba(15, 23, 42, 0.18); +} + +.conversation-context-menu button { + width: 100%; + padding: 9px 12px; + border: 0; + border-radius: 7px; + background: transparent; + color: #1f2937; + text-align: left; + cursor: pointer; +} + +.conversation-context-menu button:hover { + background: #eef7f6; +} .favorite-item { width: 100%; @@ -1485,7 +1523,7 @@ button { box-shadow: 0 0 0 2px #f7fafc; } -.chat-panel { +.chat-panel { position: relative; min-width: 0; min-height: 0; @@ -1493,8 +1531,12 @@ button { display: grid; grid-template-rows: 72px minmax(0, 1fr) auto auto; overflow: hidden; - background: #eef2f5; -} + background: #eef2f5; +} + +.chat-panel.has-pinned-message { + grid-template-rows: 72px auto minmax(0, 1fr) auto auto; +} .contact-panel { min-width: 0; @@ -2273,7 +2315,7 @@ button { max-width: 100%; } -.message-row.out .message-bubble { +.message-row.out .message-bubble { background: var(--bubble-out); border-color: #bfe4dc; } @@ -2326,39 +2368,186 @@ button { margin-top: 8px; } -.message-image img { +.message-image img { display: block; max-width: 100%; max-height: 320px; -o-object-fit: contain; object-fit: contain; -} +} + +.pinned-message-banner { + width: calc(100% - 28px); + height: 42px; + min-height: 42px; + margin: 8px 14px; + align-self: center; + display: grid; + grid-template-columns: auto auto minmax(0, 1fr) auto; + align-items: center; + gap: 8px; + padding: 8px 12px; + border: 1px solid #d5e2df; + border-radius: 9px; + background: #f7fbfa; + color: #52606d; + text-align: left; + cursor: pointer; +} + +.pinned-message-banner strong { + color: #0f766e; + white-space: nowrap; +} + +.pinned-message-preview { + min-width: 0; + display: flex; + align-items: center; + gap: 7px; + overflow: hidden; +} + +.pinned-message-preview > span { + min-width: 0; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.pinned-message-preview img { + width: 28px; + height: 28px; + flex: 0 0 28px; + border-radius: 4px; + -o-object-fit: cover; + object-fit: cover; +} + +.pinned-message-close { + padding: 0 4px; + color: #748091; + font-size: 20px; +} + +.message-row.system { + justify-content: center; + padding-top: 5px; + padding-bottom: 5px; +} + +.system-message-pill { + max-width: min(78%, 620px); + padding: 5px 12px; + border-radius: 5px; + background: #c8c8c8; + color: #fff; + font-size: 12px; + line-height: 1.45; + text-align: center; +} + +.message-video { + display: block; + width: min(360px, 68vw); + max-height: 360px; + border-radius: 7px; + background: #111; +} + +.red-packet-card { + width: min(320px, 68vw); + margin: -10px -12px -8px; + overflow: hidden; + border-radius: 7px; + background: #ff9f32; + color: #fff; +} + +.red-packet-card-main { + display: flex; + align-items: center; + gap: 13px; + padding: 20px 18px 17px; +} + +.red-packet-card-main > span:last-child { + display: grid; + gap: 7px; +} + +.red-packet-card-main strong { + font-size: 17px; + font-weight: 700; +} + +.red-packet-card-main small { + color: rgba(255, 255, 255, 0.9); + font-size: 13px; +} + +.red-packet-icon, +.red-packet-mini-icon { + display: grid; + place-items: center; + flex: 0 0 auto; + border-radius: 3px; + background: #d92f27; + color: #ffd968; + font-weight: 800; +} + +.red-packet-icon { + width: 34px; + height: 44px; + font-size: 17px; +} + +.red-packet-card-footer { + padding: 9px 15px; + background: #fff; + color: #8a8f94; + font-size: 12px; +} + +.red-packet-receipt { + display: flex; + align-items: center; + gap: 7px; + color: #69747d; +} + +.red-packet-mini-icon { + width: 22px; + height: 28px; + font-size: 11px; +} -.image-viewer-backdrop { +.image-viewer-backdrop { position: fixed; inset: 0; z-index: 80; display: grid; place-items: center; - padding: 24px; - background: rgba(12, 18, 26, 0.58); -} - -.image-viewer-dialog { - width: min(880px, calc(100vw - 48px)); - height: min(640px, calc(100vh - 48px)); - min-width: 360px; - min-height: 280px; - max-width: calc(100vw - 48px); - max-height: calc(100vh - 48px); + padding: 20px; + background: rgba(7, 12, 20, 0.82); + backdrop-filter: blur(6px); +} + +.image-viewer-dialog { + width: min(920px, calc(100vw - 64px)); + height: min(660px, calc(100vh - 64px)); + min-width: 320px; + min-height: 260px; + max-width: calc(100vw - 64px); + max-height: calc(100vh - 64px); display: grid; grid-template-rows: 52px minmax(0, 1fr); overflow: hidden; - resize: both; - border: 1px solid rgba(255, 255, 255, 0.18); - border-radius: 8px; - background: #101820; - box-shadow: 0 24px 70px rgba(0, 0, 0, 0.36); + border: 1px solid rgba(255, 255, 255, 0.18); + border-radius: 14px; + background: #0b1119; + box-shadow: 0 28px 90px rgba(0, 0, 0, 0.56); } .image-viewer-toolbar { @@ -2372,17 +2561,6 @@ button { background: rgba(24, 33, 47, 0.94); } -.image-viewer-title { - min-width: 0; - flex: 1; - overflow: hidden; - color: #f8fafc; - font-size: 13px; - font-weight: 700; - text-overflow: ellipsis; - white-space: nowrap; -} - .image-viewer-toolbar button { width: 36px; height: 36px; @@ -2401,42 +2579,67 @@ button { background: rgba(255, 255, 255, 0.14); } -.image-viewer-stage { +.image-viewer-stage { + position: relative; min-width: 0; min-height: 0; display: grid; place-items: center; - overflow: hidden; - background: #0c121a; - cursor: default; - touch-action: none; -} + overflow: hidden; + background: #0c121a; + cursor: default; +} + +.image-viewer-nav { + position: absolute; + top: 50%; + z-index: 2; + width: 52px; + height: 52px; + display: grid; + place-items: center; + border: 1px solid rgba(255, 255, 255, 0.18); + border-radius: 50%; + background: rgba(18, 27, 39, 0.76); + color: #fff; + font-size: 42px; + font-weight: 300; + line-height: 1; + transform: translateY(-50%); + cursor: pointer; + backdrop-filter: blur(5px); +} + +.image-viewer-nav:hover { + background: rgba(41, 57, 75, 0.94); +} + +.image-viewer-prev { + left: 18px; +} + +.image-viewer-next { + right: 18px; +} -.image-viewer-stage.zoomed { - cursor: grab; -} - -.image-viewer-stage.dragging { - cursor: grabbing; -} - -.image-viewer-img { - max-width: calc(100% - 32px); - max-height: calc(100% - 32px); - -o-object-fit: contain; - object-fit: contain; +.image-viewer-img { + position: absolute; + top: 20px; + left: 90px; + width: calc(100% - 180px); + height: calc(100% - 40px); + max-width: none; + max-height: none; + -o-object-fit: contain; + object-fit: contain; transform-origin: center center; - transition: transform 0.08s ease-out; - -webkit-user-select: none; - -moz-user-select: none; + transition: transform 0.12s ease-out; + -webkit-user-select: none; + -moz-user-select: none; user-select: none; pointer-events: none; } -.image-viewer-stage.dragging .image-viewer-img { - transition: none; -} - .sender-profile-backdrop { position: fixed; inset: 0; diff --git a/dist/index.html b/dist/index.html index 08e235a..0d6f6d1 100644 --- a/dist/index.html +++ b/dist/index.html @@ -1 +1 @@ -Web IM

\ No newline at end of file +Web IM
\ No newline at end of file diff --git a/dist/js/app.d5ef3122.js b/dist/js/app.1158390e.js similarity index 88% rename from dist/js/app.d5ef3122.js rename to dist/js/app.1158390e.js index c428ed7..c2a18d3 100644 --- a/dist/js/app.d5ef3122.js +++ b/dist/js/app.1158390e.js @@ -697,6 +697,7 @@ const defaultPlatformLogo = '/favicon.ico'; /* harmony import */ var _stores_conversations__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(7566); /* harmony import */ var _stores_contacts__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(9045); /* harmony import */ var _stores_session__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(926); +/* harmony import */ var _services_mediaProxy__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(446); @@ -711,310 +712,315 @@ const defaultPlatformLogo = '/favicon.ico'; const _hoisted_1 = { - class: "chat-panel" -}; -const _hoisted_2 = { class: "chat-header" }; -const _hoisted_3 = ["src"]; -const _hoisted_4 = { +const _hoisted_2 = ["src"]; +const _hoisted_3 = { key: 1, class: "chat-title-avatar" }; -const _hoisted_5 = { +const _hoisted_4 = { class: "chat-title-copy" }; -const _hoisted_6 = ["src"]; -const _hoisted_7 = { +const _hoisted_5 = ["src"]; +const _hoisted_6 = { key: 1, class: "chat-title-avatar" }; +const _hoisted_7 = { + class: "chat-title-copy" +}; const _hoisted_8 = { - class: "chat-title-copy" -}; -const _hoisted_9 = { key: 2 }; -const _hoisted_10 = { +const _hoisted_9 = { class: "header-actions chat-header-actions" }; -const _hoisted_11 = { +const _hoisted_10 = { key: 0, class: "empty-chat" }; -const _hoisted_12 = { - key: 2, +const _hoisted_11 = { + class: "pinned-message-preview" +}; +const _hoisted_12 = ["src"]; +const _hoisted_13 = { + key: 3, class: "selection-toolbar" }; -const _hoisted_13 = { +const _hoisted_14 = { class: "forward-dialog" }; -const _hoisted_14 = ["onClick"]; -const _hoisted_15 = { +const _hoisted_15 = ["onClick"]; +const _hoisted_16 = { class: "conversation-avatar" }; -const _hoisted_16 = { +const _hoisted_17 = { type: "submit" }; -const _hoisted_17 = { +const _hoisted_18 = { class: "group-dialog message-detail-dialog" }; -const _hoisted_18 = { +const _hoisted_19 = { key: 0, class: "group-loading" }; -const _hoisted_19 = { +const _hoisted_20 = { class: "group-profile message-detail-meta" }; -const _hoisted_20 = { +const _hoisted_21 = { key: 0 }; -const _hoisted_21 = { +const _hoisted_22 = { key: 0, class: "inline-save-status error" }; -const _hoisted_22 = { +const _hoisted_23 = { class: "message-detail-summary" }; -const _hoisted_23 = { +const _hoisted_24 = { class: "message-detail-groups" }; -const _hoisted_24 = { +const _hoisted_25 = { class: "message-detail-section" }; -const _hoisted_25 = { +const _hoisted_26 = { key: 0, class: "message-detail-member-list" }; -const _hoisted_26 = ["src"]; -const _hoisted_27 = { +const _hoisted_27 = ["src"]; +const _hoisted_28 = { key: 1, class: "conversation-avatar" }; -const _hoisted_28 = { - class: "message-detail-member-main" -}; const _hoisted_29 = { - class: "message-detail-member-time" + class: "message-detail-member-main" }; const _hoisted_30 = { - key: 2, - class: "message-detail-role" -}; -const _hoisted_31 = { - key: 1, - class: "contact-picker-empty" -}; -const _hoisted_32 = { - class: "message-detail-section" -}; -const _hoisted_33 = { - key: 0, - class: "message-detail-member-list" -}; -const _hoisted_34 = ["src"]; -const _hoisted_35 = { - key: 1, - class: "conversation-avatar" -}; -const _hoisted_36 = { - class: "message-detail-member-main" -}; -const _hoisted_37 = { class: "message-detail-member-time" }; -const _hoisted_38 = { +const _hoisted_31 = { key: 2, class: "message-detail-role" }; -const _hoisted_39 = { +const _hoisted_32 = { key: 1, class: "contact-picker-empty" }; -const _hoisted_40 = { +const _hoisted_33 = { class: "message-detail-section" }; -const _hoisted_41 = { +const _hoisted_34 = { key: 0, class: "message-detail-member-list" }; -const _hoisted_42 = ["src"]; -const _hoisted_43 = { +const _hoisted_35 = ["src"]; +const _hoisted_36 = { key: 1, class: "conversation-avatar" }; -const _hoisted_44 = { +const _hoisted_37 = { class: "message-detail-member-main" }; -const _hoisted_45 = { +const _hoisted_38 = { + class: "message-detail-member-time" +}; +const _hoisted_39 = { key: 2, class: "message-detail-role" }; -const _hoisted_46 = { +const _hoisted_40 = { key: 1, class: "contact-picker-empty" }; +const _hoisted_41 = { + class: "message-detail-section" +}; +const _hoisted_42 = { + key: 0, + class: "message-detail-member-list" +}; +const _hoisted_43 = ["src"]; +const _hoisted_44 = { + key: 1, + class: "conversation-avatar" +}; +const _hoisted_45 = { + class: "message-detail-member-main" +}; +const _hoisted_46 = { + key: 2, + class: "message-detail-role" +}; const _hoisted_47 = { - class: "group-dialog single-profile-dialog" + key: 1, + class: "contact-picker-empty" }; const _hoisted_48 = { + class: "group-dialog single-profile-dialog" +}; +const _hoisted_49 = { class: "single-profile-summary" }; -const _hoisted_49 = ["src"]; -const _hoisted_50 = { +const _hoisted_50 = ["src"]; +const _hoisted_51 = { key: 1, class: "profile-avatar" }; -const _hoisted_51 = { +const _hoisted_52 = { class: "group-profile" }; -const _hoisted_52 = { +const _hoisted_53 = { + key: 0 +}; +const _hoisted_54 = { class: "single-profile-footer" }; -const _hoisted_53 = { +const _hoisted_55 = { key: 0, class: "inline-save-status" }; -const _hoisted_54 = { +const _hoisted_56 = { key: 1, class: "inline-save-status error" }; -const _hoisted_55 = ["disabled"]; -const _hoisted_56 = ["disabled"]; -const _hoisted_57 = { +const _hoisted_57 = ["disabled"]; +const _hoisted_58 = ["disabled"]; +const _hoisted_59 = { key: 0, class: "group-dialog" }; -const _hoisted_58 = { +const _hoisted_60 = { key: 0, class: "group-loading" }; -const _hoisted_59 = { +const _hoisted_61 = { key: 1, class: "group-profile" }; -const _hoisted_60 = ["disabled"]; -const _hoisted_61 = ["disabled"]; const _hoisted_62 = ["disabled"]; -const _hoisted_63 = { +const _hoisted_63 = ["disabled"]; +const _hoisted_64 = ["disabled"]; +const _hoisted_65 = { key: 1, class: "group-dialog" }; -const _hoisted_64 = { +const _hoisted_66 = { key: 0, class: "group-loading" }; -const _hoisted_65 = { +const _hoisted_67 = { key: 1, class: "group-member-list" }; -const _hoisted_66 = ["src"]; -const _hoisted_67 = { +const _hoisted_68 = ["src"]; +const _hoisted_69 = { key: 1, class: "conversation-avatar" }; -const _hoisted_68 = { +const _hoisted_70 = { key: 0, class: "contact-picker-empty" }; -const _hoisted_69 = ["disabled"]; -const _hoisted_70 = { +const _hoisted_71 = ["disabled"]; +const _hoisted_72 = { key: 3, class: "group-dialog" }; -const _hoisted_71 = { +const _hoisted_73 = { key: 0, class: "group-loading" }; -const _hoisted_72 = { +const _hoisted_74 = { key: 1, class: "group-member-list" }; -const _hoisted_73 = ["onClick"]; -const _hoisted_74 = ["src"]; -const _hoisted_75 = { +const _hoisted_75 = ["onClick"]; +const _hoisted_76 = ["src"]; +const _hoisted_77 = { key: 1, class: "conversation-avatar" }; -const _hoisted_76 = { +const _hoisted_78 = { key: 0, class: "contact-picker-empty" }; -const _hoisted_77 = ["disabled"]; -const _hoisted_78 = { +const _hoisted_79 = ["disabled"]; +const _hoisted_80 = { key: 4, class: "group-dialog group-management-dialog" }; -const _hoisted_79 = { +const _hoisted_81 = { class: "group-management-tabs" }; -const _hoisted_80 = { +const _hoisted_82 = { key: 0, class: "group-loading" }; -const _hoisted_81 = { +const _hoisted_83 = { key: 1, class: "group-manage-section" }; -const _hoisted_82 = { +const _hoisted_84 = { class: "group-member-list" }; -const _hoisted_83 = ["checked", "onChange"]; -const _hoisted_84 = ["src"]; -const _hoisted_85 = { +const _hoisted_85 = ["checked", "onChange"]; +const _hoisted_86 = ["src"]; +const _hoisted_87 = { key: 1, class: "conversation-avatar" }; -const _hoisted_86 = { +const _hoisted_88 = { key: 0, class: "contact-picker-empty" }; -const _hoisted_87 = { +const _hoisted_89 = { key: 2, class: "group-manage-section" }; -const _hoisted_88 = { +const _hoisted_90 = { key: 3, class: "group-manage-section" }; -const _hoisted_89 = { +const _hoisted_91 = { class: "group-member-list" }; -const _hoisted_90 = ["checked", "onChange"]; -const _hoisted_91 = ["src"]; -const _hoisted_92 = { +const _hoisted_92 = ["checked", "onChange"]; +const _hoisted_93 = ["src"]; +const _hoisted_94 = { key: 1, class: "conversation-avatar" }; -const _hoisted_93 = { +const _hoisted_95 = { key: 0, class: "contact-picker-empty" }; -const _hoisted_94 = ["disabled"]; -const _hoisted_95 = { +const _hoisted_96 = ["disabled"]; +const _hoisted_97 = { key: 4, class: "group-manage-section" }; -const _hoisted_96 = { +const _hoisted_98 = { key: 0, class: "mute-time-grid" }; -const _hoisted_97 = { +const _hoisted_99 = { key: 1, class: "mute-time-grid" }; -const _hoisted_98 = { +const _hoisted_100 = { class: "mute-save-footer" }; -const _hoisted_99 = { +const _hoisted_101 = { key: 0, class: "inline-save-status" }; -const _hoisted_100 = { +const _hoisted_102 = { key: 1, class: "inline-save-status error" }; -const _hoisted_101 = ["disabled"]; +const _hoisted_103 = ["disabled"]; + @@ -1029,6 +1035,21 @@ const _hoisted_101 = ["disabled"]; const contacts = (0,_stores_contacts__WEBPACK_IMPORTED_MODULE_20__/* .useContactStore */ .p)(); const session = (0,_stores_session__WEBPACK_IMPORTED_MODULE_21__/* .useSessionStore */ .B)(); const activeConversation = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .computed */ .EW)(() => conversations.activeConversation); + const pinnedMessageIsImage = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .computed */ .EW)(() => { + const message = conversations.activePinnedMessage; + return message?.attachment?.url && (message.type === 'image' || message.attachment.type === 'image'); + }); + const pinnedMessageText = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .computed */ .EW)(() => { + const message = conversations.activePinnedMessage; + if (!message) return ''; + const text = String(message.text || '').trim(); + if (text && text !== '[消息]') return text; + const attachment = message.attachment || {}; + if (message.type === 'image' || attachment.type === 'image') return attachment.name || '图片'; + if (message.type === 'video' || attachment.type === 'video') return attachment.name || '视频'; + if (attachment.url) return attachment.name || '文件'; + return '[消息]'; + }); const groupMenuOpen = (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .ref */ .KR)(false); const singleProfileOpen = (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .ref */ .KR)(false); const singleAliasDraft = (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .ref */ .KR)(''); @@ -1080,6 +1101,7 @@ const _hoisted_101 = ["disabled"]; const rawName = rawUser.displayName || rawUser.name || contact?.title || conversation.title || ''; return { uid: singlePeerId.value, + userId: rawUser.name || conversation.raw?.userId || singlePeerId.value, displayName, rawName, mobile: rawUser.mobile || conversation.raw?.mobile || '', @@ -1089,6 +1111,9 @@ const _hoisted_101 = ["disabled"]; alias: contact?.alias || '' }; }); + const groupDisplayId = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .computed */ .EW)(() => { + return String(groupDetail.value?.groupId || activeConversation.value?.raw?.groupId || activeConversation.value?.raw?.target || activeConversation.value?.target || activeConversation.value?.id?.replace(/^group-/, '') || '-'); + }); const isGroupConversation = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .computed */ .EW)(() => { return ['group', 'channel'].includes(activeConversation.value?.type) || activeConversation.value?.raw?.type === 'group'; }); @@ -1551,7 +1576,11 @@ const _hoisted_101 = ["disabled"]; manageSection.value = ''; }); return (_ctx, _cache) => { - return (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("section", _hoisted_1, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("header", _hoisted_2, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("div", null, [isGroupConversation.value ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("button", { + return (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("section", { + class: (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .normalizeClass */ .C4)(["chat-panel", { + 'has-pinned-message': Boolean((0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).activePinnedMessage) + }]) + }, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("header", _hoisted_1, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("div", null, [isGroupConversation.value ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("button", { key: 0, type: "button", class: "chat-title-button", @@ -1559,9 +1588,9 @@ const _hoisted_101 = ["disabled"]; }, [activeConversation.value?.portrait ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("img", { key: 0, class: "chat-title-avatar image-avatar", - src: activeConversation.value.portrait, + src: (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(_services_mediaProxy__WEBPACK_IMPORTED_MODULE_22__/* .imageDisplayUrl */ .B)(activeConversation.value.portrait), alt: "" - }, null, 8, _hoisted_3)) : ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("span", _hoisted_4, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(activeConversation.value?.avatarText || '?'), 1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", _hoisted_5, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("h2", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(activeConversation.value?.title || '未选择会话'), 1)])])) : activeConversation.value ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("button", { + }, null, 8, _hoisted_2)) : ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("span", _hoisted_3, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(activeConversation.value?.avatarText || '?'), 1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", _hoisted_4, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("h2", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(activeConversation.value?.title || '未选择会话'), 1)])])) : activeConversation.value ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("button", { key: 1, type: "button", class: "chat-title-button", @@ -1569,9 +1598,9 @@ const _hoisted_101 = ["disabled"]; }, [singleProfile.value.portrait ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("img", { key: 0, class: "chat-title-avatar image-avatar", - src: singleProfile.value.portrait, + src: (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(_services_mediaProxy__WEBPACK_IMPORTED_MODULE_22__/* .imageDisplayUrl */ .B)(singleProfile.value.portrait), alt: "" - }, null, 8, _hoisted_6)) : ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("span", _hoisted_7, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(singleProfile.value.avatarText), 1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", _hoisted_8, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("h2", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(activeConversation.value?.title || '未选择会话'), 1)])])) : ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("h2", _hoisted_9, "未选择会话")), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("p", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(statusText.value), 1)]), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("div", _hoisted_10, [_cache[29] || (_cache[29] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("button", { + }, null, 8, _hoisted_5)) : ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("span", _hoisted_6, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(singleProfile.value.avatarText), 1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", _hoisted_7, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("h2", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(activeConversation.value?.title || '未选择会话'), 1)])])) : ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("h2", _hoisted_8, "未选择会话")), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("p", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(statusText.value), 1)]), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("div", _hoisted_9, [_cache[31] || (_cache[31] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("button", { class: "icon-button", title: "搜索" }, "⌕", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("button", { @@ -1592,29 +1621,44 @@ const _hoisted_101 = ["disabled"]; key: 0, type: "button", onClick: openGroupManage - }, "群组管理")) : (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createCommentVNode */ .Q3)("", true)])) : (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createCommentVNode */ .Q3)("", true)])]), !activeConversation.value ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("div", _hoisted_11, _cache[30] || (_cache[30] = [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("strong", null, "选择一个会话", -1), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", null, "真实会话同步完成后,可以在左侧打开聊天", -1)]))) : ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createBlock */ .Wv)(_MessageList_vue__WEBPACK_IMPORTED_MODULE_16__/* ["default"] */ .A, { + }, "群组管理")) : (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createCommentVNode */ .Q3)("", true)])) : (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createCommentVNode */ .Q3)("", true)])]), !activeConversation.value ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("div", _hoisted_10, _cache[32] || (_cache[32] = [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("strong", null, "选择一个会话", -1), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", null, "真实会话同步完成后,可以在左侧打开聊天", -1)]))) : (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createCommentVNode */ .Q3)("", true), activeConversation.value && (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).activePinnedMessage ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("button", { key: 1, + type: "button", + class: "pinned-message-banner", + title: "点击定位该消息", + onClick: _cache[2] || (_cache[2] = $event => (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).focusMessage((0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).activePinnedMessage)) + }, [_cache[33] || (_cache[33] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", null, "📌", -1)), _cache[34] || (_cache[34] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("strong", null, "置顶消息", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", _hoisted_11, [pinnedMessageIsImage.value ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("img", { + key: 0, + src: (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(_services_mediaProxy__WEBPACK_IMPORTED_MODULE_22__/* .imageDisplayUrl */ .B)((0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).activePinnedMessage.attachment.url), + alt: "置顶图片" + }, null, 8, _hoisted_12)) : (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createCommentVNode */ .Q3)("", true), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(pinnedMessageText.value), 1)]), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", { + class: "pinned-message-close", + title: "取消置顶", + onClick: _cache[1] || (_cache[1] = (0,vue__WEBPACK_IMPORTED_MODULE_12__/* .withModifiers */ .D$)((...args) => (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).clearPinnedMessage && (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).clearPinnedMessage(...args), ["stop"])) + }, "×")])) : (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createCommentVNode */ .Q3)("", true), activeConversation.value ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createBlock */ .Wv)(_MessageList_vue__WEBPACK_IMPORTED_MODULE_16__/* ["default"] */ .A, { + key: 2, messages: (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).activeMessages, "selection-mode": (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).selectionMode, "selected-message-ids": (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).selectedMessageIds, "favorite-message-ids": (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).favoriteMessageIds, + "pinned-message-id": (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).activePinnedMessage?.key || '', "attention-message-id": (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).attentionMessageId, "can-recall-others": canManageGroup.value && isGroupConversation.value, onMessageAction: (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).handleMessageAction, onToggleSelect: (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).toggleSelectedMessage, onSenderProfileUpdated: handleSenderProfileUpdated - }, null, 8, ["messages", "selection-mode", "selected-message-ids", "favorite-message-ids", "attention-message-id", "can-recall-others", "onMessageAction", "onToggleSelect"])), (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).selectionMode ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("div", _hoisted_12, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", null, "已选 " + (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)((0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).selectedMessageIds.length) + " 条", 1), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("button", { + }, null, 8, ["messages", "selection-mode", "selected-message-ids", "favorite-message-ids", "pinned-message-id", "attention-message-id", "can-recall-others", "onMessageAction", "onToggleSelect"])) : (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createCommentVNode */ .Q3)("", true), (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).selectionMode ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("div", _hoisted_13, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", null, "已选 " + (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)((0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).selectedMessageIds.length) + " 条", 1), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("button", { type: "button", - onClick: _cache[1] || (_cache[1] = (...args) => (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).copySelectedMessages && (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).copySelectedMessages(...args)) + onClick: _cache[3] || (_cache[3] = (...args) => (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).copySelectedMessages && (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).copySelectedMessages(...args)) }, "复制"), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("button", { type: "button", - onClick: _cache[2] || (_cache[2] = (...args) => (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).deleteSelectedMessages && (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).deleteSelectedMessages(...args)) + onClick: _cache[4] || (_cache[4] = (...args) => (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).deleteSelectedMessages && (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).deleteSelectedMessages(...args)) }, "删除"), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("button", { type: "button", - onClick: _cache[3] || (_cache[3] = (...args) => (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).startForwardSelectedMessages && (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).startForwardSelectedMessages(...args)) + onClick: _cache[5] || (_cache[5] = (...args) => (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).startForwardSelectedMessages && (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).startForwardSelectedMessages(...args)) }, "转发"), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("button", { type: "button", - onClick: _cache[4] || (_cache[4] = (...args) => (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).clearSelection && (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).clearSelection(...args)) + onClick: _cache[6] || (_cache[6] = (...args) => (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).clearSelection && (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).clearSelection(...args)) }, "取消")])) : (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createCommentVNode */ .Q3)("", true), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createVNode */ .bF)(_MessageComposer_vue__WEBPACK_IMPORTED_MODULE_17__/* ["default"] */ .A, { disabled: !activeConversation.value || !(0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(session).isAuthenticated || !(0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).canSendActiveConversation, "quote-message": (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).quotedMessage, @@ -1622,180 +1666,180 @@ const _hoisted_101 = ["disabled"]; onSend: (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).sendText, onSendAttachment: (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).sendAttachment }, null, 8, ["disabled", "quote-message", "onCancelQuote", "onSend", "onSendAttachment"]), (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).forwardingMessages.length ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("div", { - key: 3, + key: 4, class: "modal-backdrop", - onClick: _cache[6] || (_cache[6] = (0,vue__WEBPACK_IMPORTED_MODULE_12__/* .withModifiers */ .D$)((...args) => (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).cancelForward && (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).cancelForward(...args), ["self"])) - }, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("section", _hoisted_13, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("header", null, [_cache[31] || (_cache[31] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("h3", null, "转发给", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("button", { + onClick: _cache[8] || (_cache[8] = (0,vue__WEBPACK_IMPORTED_MODULE_12__/* .withModifiers */ .D$)((...args) => (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).cancelForward && (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).cancelForward(...args), ["self"])) + }, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("section", _hoisted_14, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("header", null, [_cache[35] || (_cache[35] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("h3", null, "转发给", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("button", { type: "button", class: "icon-button", title: "关闭", - onClick: _cache[5] || (_cache[5] = (...args) => (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).cancelForward && (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).cancelForward(...args)) + onClick: _cache[7] || (_cache[7] = (...args) => (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).cancelForward && (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).cancelForward(...args)) }, "×")]), ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(true), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)(vue__WEBPACK_IMPORTED_MODULE_13__/* .Fragment */ .FK, null, (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .renderList */ .pI)((0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).conversations, item => { return (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("button", { key: item.id, type: "button", class: "forward-target", onClick: $event => (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).completeForward(item.id) - }, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", _hoisted_15, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(item.avatarText), 1), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(item.title), 1)], 8, _hoisted_14); + }, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", _hoisted_16, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(item.avatarText), 1), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(item.title), 1)], 8, _hoisted_15); }), 128))])])) : (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createCommentVNode */ .Q3)("", true), (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).editingMessage ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("div", { - key: 4, + key: 5, class: "modal-backdrop", - onClick: _cache[11] || (_cache[11] = (0,vue__WEBPACK_IMPORTED_MODULE_12__/* .withModifiers */ .D$)((...args) => (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).cancelEditMessage && (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).cancelEditMessage(...args), ["self"])) + onClick: _cache[13] || (_cache[13] = (0,vue__WEBPACK_IMPORTED_MODULE_12__/* .withModifiers */ .D$)((...args) => (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).cancelEditMessage && (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).cancelEditMessage(...args), ["self"])) }, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("form", { class: "edit-dialog", - onSubmit: _cache[10] || (_cache[10] = (0,vue__WEBPACK_IMPORTED_MODULE_12__/* .withModifiers */ .D$)((...args) => (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).completeEditMessage && (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).completeEditMessage(...args), ["prevent"])) + onSubmit: _cache[12] || (_cache[12] = (0,vue__WEBPACK_IMPORTED_MODULE_12__/* .withModifiers */ .D$)((...args) => (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).completeEditMessage && (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).completeEditMessage(...args), ["prevent"])) }, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("header", null, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("h3", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)((0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).editingMode === 'resend' ? '重新编辑' : '编辑消息'), 1), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("button", { type: "button", class: "icon-button", title: "关闭", - onClick: _cache[7] || (_cache[7] = (...args) => (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).cancelEditMessage && (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).cancelEditMessage(...args)) + onClick: _cache[9] || (_cache[9] = (...args) => (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).cancelEditMessage && (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).cancelEditMessage(...args)) }, "×")]), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .withDirectives */ .bo)((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("textarea", { - "onUpdate:modelValue": _cache[8] || (_cache[8] = $event => (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).editingText = $event), + "onUpdate:modelValue": _cache[10] || (_cache[10] = $event => (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).editingText = $event), maxlength: "5000", rows: "5", autofocus: "" }, null, 512), [[vue__WEBPACK_IMPORTED_MODULE_12__/* .vModelText */ .Jo, (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).editingText]]), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("footer", null, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("button", { type: "button", - onClick: _cache[9] || (_cache[9] = (...args) => (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).cancelEditMessage && (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).cancelEditMessage(...args)) - }, "取消"), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("button", _hoisted_16, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)((0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).editingMode === 'resend' ? '发送' : '保存'), 1)])], 32)])) : (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createCommentVNode */ .Q3)("", true), (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).messageDetailOpen ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("div", { - key: 5, + onClick: _cache[11] || (_cache[11] = (...args) => (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).cancelEditMessage && (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).cancelEditMessage(...args)) + }, "取消"), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("button", _hoisted_17, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)((0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).editingMode === 'resend' ? '发送' : '保存'), 1)])], 32)])) : (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createCommentVNode */ .Q3)("", true), (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).messageDetailOpen ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("div", { + key: 6, class: "modal-backdrop", - onClick: _cache[13] || (_cache[13] = (0,vue__WEBPACK_IMPORTED_MODULE_12__/* .withModifiers */ .D$)((...args) => (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).closeMessageDetail && (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).closeMessageDetail(...args), ["self"])) - }, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("section", _hoisted_17, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("header", null, [_cache[32] || (_cache[32] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("h3", null, "消息详情", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("button", { + onClick: _cache[15] || (_cache[15] = (0,vue__WEBPACK_IMPORTED_MODULE_12__/* .withModifiers */ .D$)((...args) => (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).closeMessageDetail && (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).closeMessageDetail(...args), ["self"])) + }, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("section", _hoisted_18, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("header", null, [_cache[36] || (_cache[36] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("h3", null, "消息详情", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("button", { type: "button", class: "icon-button", title: "关闭", - onClick: _cache[12] || (_cache[12] = (...args) => (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).closeMessageDetail && (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).closeMessageDetail(...args)) - }, "×")]), (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).messageDetailLoading ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("div", _hoisted_18, "正在加载")) : ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)(vue__WEBPACK_IMPORTED_MODULE_13__/* .Fragment */ .FK, { + onClick: _cache[14] || (_cache[14] = (...args) => (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).closeMessageDetail && (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).closeMessageDetail(...args)) + }, "×")]), (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).messageDetailLoading ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("div", _hoisted_19, "正在加载")) : ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)(vue__WEBPACK_IMPORTED_MODULE_13__/* .Fragment */ .FK, { key: 1 - }, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("dl", _hoisted_19, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("div", null, [_cache[33] || (_cache[33] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("dt", null, "发送时间", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("dd", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(formatDetailTime(messageDetail.value?.sentAt)), 1)]), messageDetail.value?.editedAt ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("div", _hoisted_20, [_cache[34] || (_cache[34] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("dt", null, "编辑时间", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("dd", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(formatDetailTime(messageDetail.value.editedAt)), 1)])) : (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createCommentVNode */ .Q3)("", true), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("div", null, [_cache[35] || (_cache[35] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("dt", null, "发送人", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("dd", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(detailMemberName(messageDetail.value?.sender)), 1)]), !isMessageDetailGroup.value ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)(vue__WEBPACK_IMPORTED_MODULE_13__/* .Fragment */ .FK, { + }, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("dl", _hoisted_20, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("div", null, [_cache[37] || (_cache[37] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("dt", null, "发送时间", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("dd", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(formatDetailTime(messageDetail.value?.sentAt)), 1)]), messageDetail.value?.editedAt ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("div", _hoisted_21, [_cache[38] || (_cache[38] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("dt", null, "编辑时间", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("dd", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(formatDetailTime(messageDetail.value.editedAt)), 1)])) : (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createCommentVNode */ .Q3)("", true), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("div", null, [_cache[39] || (_cache[39] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("dt", null, "发送人", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("dd", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(detailMemberName(messageDetail.value?.sender)), 1)]), !isMessageDetailGroup.value ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)(vue__WEBPACK_IMPORTED_MODULE_13__/* .Fragment */ .FK, { key: 1 - }, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("div", null, [_cache[36] || (_cache[36] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("dt", null, "接收人", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("dd", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(detailMemberName(messageDetail.value?.receiver)), 1)]), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("div", null, [_cache[37] || (_cache[37] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("dt", null, "送达时间", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("dd", { + }, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("div", null, [_cache[40] || (_cache[40] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("dt", null, "接收人", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("dd", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(detailMemberName(messageDetail.value?.receiver)), 1)]), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("div", null, [_cache[41] || (_cache[41] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("dt", null, "送达时间", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("dd", { class: (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .normalizeClass */ .C4)({ 'message-detail-muted': !messageDetail.value?.deliveredAt }) - }, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(messageDetail.value?.deliveredAt ? formatDetailTime(messageDetail.value.deliveredAt) : '未送达'), 3)]), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("div", null, [_cache[38] || (_cache[38] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("dt", null, "已读时间", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("dd", { + }, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(messageDetail.value?.deliveredAt ? formatDetailTime(messageDetail.value.deliveredAt) : '未送达'), 3)]), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("div", null, [_cache[42] || (_cache[42] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("dt", null, "已读时间", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("dd", { class: (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .normalizeClass */ .C4)({ 'message-detail-muted': !messageDetail.value?.readAt }) - }, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(messageDetail.value?.readAt ? formatDetailTime(messageDetail.value.readAt) : '未读'), 3)])], 64)) : (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createCommentVNode */ .Q3)("", true)]), (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).messageDetailError ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("span", _hoisted_21, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)((0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).messageDetailError), 1)) : (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createCommentVNode */ .Q3)("", true), isMessageDetailGroup.value ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)(vue__WEBPACK_IMPORTED_MODULE_13__/* .Fragment */ .FK, { + }, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(messageDetail.value?.readAt ? formatDetailTime(messageDetail.value.readAt) : '未读'), 3)])], 64)) : (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createCommentVNode */ .Q3)("", true)]), (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).messageDetailError ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("span", _hoisted_22, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)((0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).messageDetailError), 1)) : (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createCommentVNode */ .Q3)("", true), isMessageDetailGroup.value ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)(vue__WEBPACK_IMPORTED_MODULE_13__/* .Fragment */ .FK, { key: 1 - }, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("div", _hoisted_22, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", null, [_cache[39] || (_cache[39] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createTextVNode */ .eW)("已读 ")), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("strong", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(messageDetailCounts.value.read || 0), 1)]), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", null, [_cache[40] || (_cache[40] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createTextVNode */ .eW)("未读 ")), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("strong", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(messageDetailCounts.value.unread || 0), 1)]), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", null, [_cache[41] || (_cache[41] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createTextVNode */ .eW)("未送达 ")), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("strong", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(messageDetailCounts.value.undelivered || 0), 1)]), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", null, [_cache[42] || (_cache[42] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createTextVNode */ .eW)("成员 ")), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("strong", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(messageDetailCounts.value.total || 0), 1)])]), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("div", _hoisted_23, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("section", _hoisted_24, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("header", null, [_cache[43] || (_cache[43] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("strong", null, "已读", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(messageDetailCounts.value.read || 0) + " 人", 1)]), messageDetailGroup.value?.read?.length ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("div", _hoisted_25, [((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(true), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)(vue__WEBPACK_IMPORTED_MODULE_13__/* .Fragment */ .FK, null, (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .renderList */ .pI)(messageDetailGroup.value.read, member => { + }, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("div", _hoisted_23, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", null, [_cache[43] || (_cache[43] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createTextVNode */ .eW)("已读 ")), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("strong", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(messageDetailCounts.value.read || 0), 1)]), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", null, [_cache[44] || (_cache[44] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createTextVNode */ .eW)("未读 ")), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("strong", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(messageDetailCounts.value.unread || 0), 1)]), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", null, [_cache[45] || (_cache[45] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createTextVNode */ .eW)("未送达 ")), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("strong", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(messageDetailCounts.value.undelivered || 0), 1)]), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", null, [_cache[46] || (_cache[46] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createTextVNode */ .eW)("成员 ")), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("strong", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(messageDetailCounts.value.total || 0), 1)])]), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("div", _hoisted_24, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("section", _hoisted_25, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("header", null, [_cache[47] || (_cache[47] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("strong", null, "已读", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(messageDetailCounts.value.read || 0) + " 人", 1)]), messageDetailGroup.value?.read?.length ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("div", _hoisted_26, [((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(true), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)(vue__WEBPACK_IMPORTED_MODULE_13__/* .Fragment */ .FK, null, (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .renderList */ .pI)(messageDetailGroup.value.read, member => { return (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("div", { key: `read-${member.uid}`, class: "message-detail-member-row" }, [member.portrait ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("img", { key: 0, class: "conversation-avatar image-avatar", - src: member.portrait, + src: (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(_services_mediaProxy__WEBPACK_IMPORTED_MODULE_22__/* .imageDisplayUrl */ .B)(member.portrait), alt: "" - }, null, 8, _hoisted_26)) : ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("span", _hoisted_27, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(detailMemberAvatar(member)), 1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", _hoisted_28, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("strong", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(detailMemberName(member)), 1), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("small", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(member.uid), 1)]), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", _hoisted_29, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(formatDetailTime(member.time)), 1), detailRoleLabel(member.role) ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("span", _hoisted_30, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(detailRoleLabel(member.role)), 1)) : (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createCommentVNode */ .Q3)("", true)]); - }), 128))])) : ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("div", _hoisted_31, "暂无已读成员"))]), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("section", _hoisted_32, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("header", null, [_cache[44] || (_cache[44] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("strong", null, "未读", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(messageDetailCounts.value.unread || 0) + " 人", 1)]), messageDetailGroup.value?.unread?.length ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("div", _hoisted_33, [((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(true), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)(vue__WEBPACK_IMPORTED_MODULE_13__/* .Fragment */ .FK, null, (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .renderList */ .pI)(messageDetailGroup.value.unread, member => { + }, null, 8, _hoisted_27)) : ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("span", _hoisted_28, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(detailMemberAvatar(member)), 1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", _hoisted_29, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("strong", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(detailMemberName(member)), 1), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("small", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(member.uid), 1)]), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", _hoisted_30, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(formatDetailTime(member.time)), 1), detailRoleLabel(member.role) ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("span", _hoisted_31, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(detailRoleLabel(member.role)), 1)) : (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createCommentVNode */ .Q3)("", true)]); + }), 128))])) : ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("div", _hoisted_32, "暂无已读成员"))]), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("section", _hoisted_33, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("header", null, [_cache[48] || (_cache[48] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("strong", null, "未读", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(messageDetailCounts.value.unread || 0) + " 人", 1)]), messageDetailGroup.value?.unread?.length ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("div", _hoisted_34, [((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(true), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)(vue__WEBPACK_IMPORTED_MODULE_13__/* .Fragment */ .FK, null, (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .renderList */ .pI)(messageDetailGroup.value.unread, member => { return (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("div", { key: `unread-${member.uid}`, class: "message-detail-member-row" }, [member.portrait ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("img", { key: 0, class: "conversation-avatar image-avatar", - src: member.portrait, + src: (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(_services_mediaProxy__WEBPACK_IMPORTED_MODULE_22__/* .imageDisplayUrl */ .B)(member.portrait), alt: "" - }, null, 8, _hoisted_34)) : ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("span", _hoisted_35, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(detailMemberAvatar(member)), 1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", _hoisted_36, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("strong", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(detailMemberName(member)), 1), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("small", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(member.uid), 1)]), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", _hoisted_37, "送达 " + (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(formatDetailTime(member.time)), 1), detailRoleLabel(member.role) ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("span", _hoisted_38, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(detailRoleLabel(member.role)), 1)) : (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createCommentVNode */ .Q3)("", true)]); - }), 128))])) : ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("div", _hoisted_39, "暂无未读成员"))]), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("section", _hoisted_40, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("header", null, [_cache[45] || (_cache[45] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("strong", null, "未送达", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(messageDetailCounts.value.undelivered || 0) + " 人", 1)]), messageDetailGroup.value?.undelivered?.length ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("div", _hoisted_41, [((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(true), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)(vue__WEBPACK_IMPORTED_MODULE_13__/* .Fragment */ .FK, null, (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .renderList */ .pI)(messageDetailGroup.value.undelivered, member => { + }, null, 8, _hoisted_35)) : ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("span", _hoisted_36, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(detailMemberAvatar(member)), 1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", _hoisted_37, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("strong", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(detailMemberName(member)), 1), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("small", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(member.uid), 1)]), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", _hoisted_38, "送达 " + (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(formatDetailTime(member.time)), 1), detailRoleLabel(member.role) ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("span", _hoisted_39, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(detailRoleLabel(member.role)), 1)) : (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createCommentVNode */ .Q3)("", true)]); + }), 128))])) : ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("div", _hoisted_40, "暂无未读成员"))]), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("section", _hoisted_41, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("header", null, [_cache[49] || (_cache[49] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("strong", null, "未送达", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(messageDetailCounts.value.undelivered || 0) + " 人", 1)]), messageDetailGroup.value?.undelivered?.length ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("div", _hoisted_42, [((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(true), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)(vue__WEBPACK_IMPORTED_MODULE_13__/* .Fragment */ .FK, null, (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .renderList */ .pI)(messageDetailGroup.value.undelivered, member => { return (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("div", { key: `undelivered-${member.uid}`, class: "message-detail-member-row" }, [member.portrait ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("img", { key: 0, class: "conversation-avatar image-avatar", - src: member.portrait, + src: (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(_services_mediaProxy__WEBPACK_IMPORTED_MODULE_22__/* .imageDisplayUrl */ .B)(member.portrait), alt: "" - }, null, 8, _hoisted_42)) : ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("span", _hoisted_43, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(detailMemberAvatar(member)), 1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", _hoisted_44, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("strong", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(detailMemberName(member)), 1), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("small", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(member.uid), 1)]), _cache[46] || (_cache[46] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", { + }, null, 8, _hoisted_43)) : ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("span", _hoisted_44, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(detailMemberAvatar(member)), 1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", _hoisted_45, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("strong", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(detailMemberName(member)), 1), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("small", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(member.uid), 1)]), _cache[50] || (_cache[50] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", { class: "message-detail-member-time message-detail-muted" - }, "未送达", -1)), detailRoleLabel(member.role) ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("span", _hoisted_45, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(detailRoleLabel(member.role)), 1)) : (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createCommentVNode */ .Q3)("", true)]); - }), 128))])) : ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("div", _hoisted_46, "暂无未送达成员"))])])], 64)) : (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createCommentVNode */ .Q3)("", true)], 64))])])) : (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createCommentVNode */ .Q3)("", true), singleProfileOpen.value ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("div", { - key: 6, + }, "未送达", -1)), detailRoleLabel(member.role) ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("span", _hoisted_46, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(detailRoleLabel(member.role)), 1)) : (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createCommentVNode */ .Q3)("", true)]); + }), 128))])) : ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("div", _hoisted_47, "暂无未送达成员"))])])], 64)) : (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createCommentVNode */ .Q3)("", true)], 64))])])) : (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createCommentVNode */ .Q3)("", true), singleProfileOpen.value ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("div", { + key: 7, class: "modal-backdrop", onClick: (0,vue__WEBPACK_IMPORTED_MODULE_12__/* .withModifiers */ .D$)(closeSingleProfile, ["self"]) - }, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("section", _hoisted_47, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("header", null, [_cache[47] || (_cache[47] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("h3", null, "联系人资料", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("button", { + }, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("section", _hoisted_48, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("header", null, [_cache[51] || (_cache[51] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("h3", null, "联系人资料", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("button", { type: "button", class: "icon-button", title: "关闭", onClick: closeSingleProfile - }, "×")]), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("div", _hoisted_48, [singleProfile.value.portrait ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("img", { + }, "×")]), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("div", _hoisted_49, [singleProfile.value.portrait ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("img", { key: 0, class: "profile-avatar image-avatar", - src: singleProfile.value.portrait, + src: (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(_services_mediaProxy__WEBPACK_IMPORTED_MODULE_22__/* .imageDisplayUrl */ .B)(singleProfile.value.portrait), alt: "" - }, null, 8, _hoisted_49)) : ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("div", _hoisted_50, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(singleProfile.value.avatarText), 1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("strong", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(singleProfile.value.displayName), 1)]), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("dl", _hoisted_51, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("div", null, [_cache[48] || (_cache[48] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("dt", null, "用户ID", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("dd", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(singleProfile.value.uid || '-'), 1)]), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("div", null, [_cache[49] || (_cache[49] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("dt", null, "昵称", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("dd", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(singleProfile.value.rawName || '-'), 1)]), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("div", null, [_cache[50] || (_cache[50] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("dt", null, "手机号", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("dd", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(singleProfile.value.mobile || '未知'), 1)]), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("div", null, [_cache[51] || (_cache[51] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("dt", null, "地区", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("dd", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(singleProfile.value.address || '未知'), 1)])]), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("label", null, [_cache[52] || (_cache[52] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", null, "备注名称", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .withDirectives */ .bo)((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("input", { - "onUpdate:modelValue": _cache[14] || (_cache[14] = $event => singleAliasDraft.value = $event), + }, null, 8, _hoisted_50)) : ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("div", _hoisted_51, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(singleProfile.value.avatarText), 1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("strong", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(singleProfile.value.displayName), 1)]), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("dl", _hoisted_52, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("div", null, [_cache[52] || (_cache[52] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("dt", null, "用户ID", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("dd", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(singleProfile.value.userId || '-'), 1)]), singleProfile.value.uid && singleProfile.value.uid !== singleProfile.value.userId ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("div", _hoisted_53, [_cache[53] || (_cache[53] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("dt", null, "用户UID", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("dd", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(singleProfile.value.uid), 1)])) : (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createCommentVNode */ .Q3)("", true), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("div", null, [_cache[54] || (_cache[54] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("dt", null, "昵称", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("dd", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(singleProfile.value.rawName || '-'), 1)]), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("div", null, [_cache[55] || (_cache[55] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("dt", null, "手机号", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("dd", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(singleProfile.value.mobile || '未知'), 1)]), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("div", null, [_cache[56] || (_cache[56] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("dt", null, "地区", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("dd", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(singleProfile.value.address || '未知'), 1)])]), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("label", null, [_cache[57] || (_cache[57] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", null, "备注名称", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .withDirectives */ .bo)((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("input", { + "onUpdate:modelValue": _cache[16] || (_cache[16] = $event => singleAliasDraft.value = $event), maxlength: "32", autocomplete: "off", placeholder: "留空使用对方昵称" }, null, 512), [[vue__WEBPACK_IMPORTED_MODULE_12__/* .vModelText */ .Jo, singleAliasDraft.value, void 0, { trim: true - }]])]), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("footer", _hoisted_52, [singleProfileNotice.value ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("span", _hoisted_53, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(singleProfileNotice.value), 1)) : singleProfileError.value ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("span", _hoisted_54, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(singleProfileError.value), 1)) : (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createCommentVNode */ .Q3)("", true), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("button", { + }]])]), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("footer", _hoisted_54, [singleProfileNotice.value ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("span", _hoisted_55, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(singleProfileNotice.value), 1)) : singleProfileError.value ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("span", _hoisted_56, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(singleProfileError.value), 1)) : (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createCommentVNode */ .Q3)("", true), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("button", { type: "button", class: "ghost-inline-action", disabled: singleProfileSaving.value, onClick: closeSingleProfile - }, "取消", 8, _hoisted_55), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("button", { + }, "取消", 8, _hoisted_57), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("button", { type: "button", class: "primary-inline-action", disabled: singleProfileSaving.value || !singleProfile.value.uid, onClick: saveSingleAlias - }, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(singleProfileSaving.value ? '保存中...' : '保存备注'), 9, _hoisted_56)])])])) : (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createCommentVNode */ .Q3)("", true), groupPanel.value ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("div", { - key: 7, + }, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(singleProfileSaving.value ? '保存中...' : '保存备注'), 9, _hoisted_58)])])])) : (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createCommentVNode */ .Q3)("", true), groupPanel.value ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("div", { + key: 8, class: "modal-backdrop", onClick: (0,vue__WEBPACK_IMPORTED_MODULE_12__/* .withModifiers */ .D$)(closeGroupPanel, ["self"]) - }, [groupPanel.value === 'overview' ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("section", _hoisted_57, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("header", null, [_cache[53] || (_cache[53] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("h3", null, "群概况", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("button", { + }, [groupPanel.value === 'overview' ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("section", _hoisted_59, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("header", null, [_cache[58] || (_cache[58] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("h3", null, "群概况", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("button", { type: "button", class: "icon-button", title: "关闭", onClick: closeGroupPanel - }, "×")]), groupBusy.value ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("div", _hoisted_58, "正在加载")) : ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("dl", _hoisted_59, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("div", null, [_cache[54] || (_cache[54] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("dt", null, "群名", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("dd", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(groupDetail.value?.name || activeConversation.value?.title || '-'), 1)]), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("div", null, [_cache[55] || (_cache[55] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("dt", null, "群ID", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("dd", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(groupDetail.value?.groupId || activeConversation.value?.target || '-'), 1)]), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("div", null, [_cache[56] || (_cache[56] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("dt", null, "群说明", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("dd", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(groupDetail.value?.announcement || '未设置'), 1)]), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("div", null, [_cache[57] || (_cache[57] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("dt", null, "群主昵称", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("dd", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(groupDetail.value?.ownerName || '-'), 1)])])), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("footer", null, [isGroupOwner.value ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)(vue__WEBPACK_IMPORTED_MODULE_13__/* .Fragment */ .FK, { + }, "×")]), groupBusy.value ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("div", _hoisted_60, "正在加载")) : ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("dl", _hoisted_61, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("div", null, [_cache[59] || (_cache[59] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("dt", null, "群名", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("dd", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(groupDetail.value?.name || activeConversation.value?.title || '-'), 1)]), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("div", null, [_cache[60] || (_cache[60] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("dt", null, "群ID", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("dd", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(groupDisplayId.value), 1)]), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("div", null, [_cache[61] || (_cache[61] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("dt", null, "群说明", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("dd", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(groupDetail.value?.announcement || '未设置'), 1)]), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("div", null, [_cache[62] || (_cache[62] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("dt", null, "群主昵称", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("dd", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(groupDetail.value?.ownerName || '-'), 1)])])), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("footer", null, [isGroupOwner.value ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)(vue__WEBPACK_IMPORTED_MODULE_13__/* .Fragment */ .FK, { key: 0 }, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("button", { type: "button", class: "danger-inline-action", disabled: groupBusy.value, onClick: dismissCurrentGroup - }, "解散群组", 8, _hoisted_60), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("button", { + }, "解散群组", 8, _hoisted_62), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("button", { type: "button", class: "primary-inline-action", disabled: groupBusy.value, onClick: openTransferGroup - }, "转让群组", 8, _hoisted_61)], 64)) : ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("button", { + }, "转让群组", 8, _hoisted_63)], 64)) : ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("button", { key: 1, type: "button", class: "danger-inline-action", disabled: groupBusy.value, onClick: leaveCurrentGroup - }, "退出群组", 8, _hoisted_62))])])) : groupPanel.value === 'members' ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("section", _hoisted_63, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("header", null, [_cache[58] || (_cache[58] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("h3", null, "群员", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("button", { + }, "退出群组", 8, _hoisted_64))])])) : groupPanel.value === 'members' ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("section", _hoisted_65, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("header", null, [_cache[63] || (_cache[63] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("h3", null, "群员", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("button", { type: "button", class: "icon-button", title: "关闭", onClick: closeGroupPanel - }, "×")]), groupBusy.value ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("div", _hoisted_64, "正在加载")) : ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("div", _hoisted_65, [((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(true), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)(vue__WEBPACK_IMPORTED_MODULE_13__/* .Fragment */ .FK, null, (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .renderList */ .pI)(groupMembers.value, member => { + }, "×")]), groupBusy.value ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("div", _hoisted_66, "正在加载")) : ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("div", _hoisted_67, [((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(true), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)(vue__WEBPACK_IMPORTED_MODULE_13__/* .Fragment */ .FK, null, (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .renderList */ .pI)(groupMembers.value, member => { return (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("div", { key: member.uid, class: "group-member-row" }, [member.portrait ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("img", { key: 0, class: "conversation-avatar image-avatar", - src: member.portrait, + src: (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(_services_mediaProxy__WEBPACK_IMPORTED_MODULE_22__/* .imageDisplayUrl */ .B)(member.portrait), alt: "" - }, null, 8, _hoisted_66)) : ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("span", _hoisted_67, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(memberAvatar(member)), 1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", null, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("strong", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(member.displayName), 1), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("small", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(member.role === 'owner' ? '群主' : member.rawDisplayName), 1)])]); - }), 128)), !groupMembers.value.length ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("div", _hoisted_68, "暂无群员")) : (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createCommentVNode */ .Q3)("", true)]))])) : groupPanel.value === 'alias' ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("form", { + }, null, 8, _hoisted_68)) : ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("span", _hoisted_69, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(memberAvatar(member)), 1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", null, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("strong", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(member.displayName), 1), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("small", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(member.role === 'owner' ? '群主' : member.rawDisplayName), 1)])]); + }), 128)), !groupMembers.value.length ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("div", _hoisted_70, "暂无群员")) : (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createCommentVNode */ .Q3)("", true)]))])) : groupPanel.value === 'alias' ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("form", { key: 2, class: "group-dialog", onSubmit: (0,vue__WEBPACK_IMPORTED_MODULE_12__/* .withModifiers */ .D$)(saveGroupAlias, ["prevent"]) - }, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("header", null, [_cache[59] || (_cache[59] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("h3", null, "我在本群的昵称", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("button", { + }, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("header", null, [_cache[64] || (_cache[64] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("h3", null, "我在本群的昵称", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("button", { type: "button", class: "icon-button", title: "关闭", onClick: closeGroupPanel - }, "×")]), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("label", null, [_cache[60] || (_cache[60] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", null, "昵称", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .withDirectives */ .bo)((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("input", { - "onUpdate:modelValue": _cache[15] || (_cache[15] = $event => groupAliasDraft.value = $event), + }, "×")]), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("label", null, [_cache[65] || (_cache[65] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", null, "昵称", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .withDirectives */ .bo)((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("input", { + "onUpdate:modelValue": _cache[17] || (_cache[17] = $event => groupAliasDraft.value = $event), maxlength: "64", autocomplete: "off", placeholder: "留空使用个人昵称" @@ -1808,12 +1852,12 @@ const _hoisted_101 = ["disabled"]; }, "取消"), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("button", { class: "primary-inline-action", disabled: groupBusy.value - }, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(groupBusy.value ? '保存中...' : '保存'), 9, _hoisted_69)])], 32)) : groupPanel.value === 'transfer' ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("section", _hoisted_70, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("header", null, [_cache[61] || (_cache[61] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("h3", null, "转让群组", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("button", { + }, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(groupBusy.value ? '保存中...' : '保存'), 9, _hoisted_71)])], 32)) : groupPanel.value === 'transfer' ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("section", _hoisted_72, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("header", null, [_cache[66] || (_cache[66] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("h3", null, "转让群组", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("button", { type: "button", class: "icon-button", title: "关闭", onClick: closeGroupPanel - }, "×")]), groupBusy.value ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("div", _hoisted_71, "正在加载")) : ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("div", _hoisted_72, [((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(true), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)(vue__WEBPACK_IMPORTED_MODULE_13__/* .Fragment */ .FK, null, (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .renderList */ .pI)(transferableMembers.value, member => { + }, "×")]), groupBusy.value ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("div", _hoisted_73, "正在加载")) : ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("div", _hoisted_74, [((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(true), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)(vue__WEBPACK_IMPORTED_MODULE_13__/* .Fragment */ .FK, null, (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .renderList */ .pI)(transferableMembers.value, member => { return (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("button", { key: member.uid, type: "button", @@ -1824,10 +1868,10 @@ const _hoisted_101 = ["disabled"]; }, [member.portrait ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("img", { key: 0, class: "conversation-avatar image-avatar", - src: member.portrait, + src: (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(_services_mediaProxy__WEBPACK_IMPORTED_MODULE_22__/* .imageDisplayUrl */ .B)(member.portrait), alt: "" - }, null, 8, _hoisted_74)) : ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("span", _hoisted_75, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(memberAvatar(member)), 1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", null, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("strong", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(member.displayName), 1), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("small", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(member.rawDisplayName), 1)])], 10, _hoisted_73); - }), 128)), !transferableMembers.value.length ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("div", _hoisted_76, "暂无可转让成员")) : (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createCommentVNode */ .Q3)("", true)])), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("footer", null, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("button", { + }, null, 8, _hoisted_76)) : ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("span", _hoisted_77, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(memberAvatar(member)), 1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", null, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("strong", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(member.displayName), 1), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("small", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(member.rawDisplayName), 1)])], 10, _hoisted_75); + }), 128)), !transferableMembers.value.length ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("div", _hoisted_78, "暂无可转让成员")) : (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createCommentVNode */ .Q3)("", true)])), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("footer", null, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("button", { type: "button", class: "ghost-inline-action", onClick: closeGroupPanel @@ -1836,37 +1880,37 @@ const _hoisted_101 = ["disabled"]; class: "primary-inline-action", disabled: groupBusy.value || !transferTargetId.value, onClick: transferCurrentGroup - }, "确认转让", 8, _hoisted_77)])])) : groupPanel.value === 'manage' ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("section", _hoisted_78, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("header", null, [_cache[62] || (_cache[62] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("h3", null, "群组管理", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("button", { + }, "确认转让", 8, _hoisted_79)])])) : groupPanel.value === 'manage' ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("section", _hoisted_80, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("header", null, [_cache[67] || (_cache[67] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("h3", null, "群组管理", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("button", { type: "button", class: "icon-button", title: "关闭", onClick: closeGroupPanel - }, "×")]), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("nav", _hoisted_79, [isGroupOwner.value ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("button", { + }, "×")]), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("nav", _hoisted_81, [isGroupOwner.value ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("button", { key: 0, type: "button", class: (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .normalizeClass */ .C4)({ active: manageSection.value === 'admins' }), - onClick: _cache[16] || (_cache[16] = $event => manageSection.value = 'admins') + onClick: _cache[18] || (_cache[18] = $event => manageSection.value = 'admins') }, "管理员设置", 2)) : (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createCommentVNode */ .Q3)("", true), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("button", { type: "button", class: (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .normalizeClass */ .C4)({ active: manageSection.value === 'profile' }), - onClick: _cache[17] || (_cache[17] = $event => manageSection.value = 'profile') + onClick: _cache[19] || (_cache[19] = $event => manageSection.value = 'profile') }, "修改群资料", 2), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("button", { type: "button", class: (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .normalizeClass */ .C4)({ active: manageSection.value === 'kick' }), - onClick: _cache[18] || (_cache[18] = $event => manageSection.value = 'kick') + onClick: _cache[20] || (_cache[20] = $event => manageSection.value = 'kick') }, "踢人", 2), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("button", { type: "button", class: (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .normalizeClass */ .C4)({ active: manageSection.value === 'mute' }), - onClick: _cache[19] || (_cache[19] = $event => manageSection.value = 'mute') - }, "禁言设置", 2)]), groupBusy.value ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("div", _hoisted_80, "正在加载")) : manageSection.value === 'admins' ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("section", _hoisted_81, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("div", _hoisted_82, [((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(true), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)(vue__WEBPACK_IMPORTED_MODULE_13__/* .Fragment */ .FK, null, (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .renderList */ .pI)(adminCandidateMembers.value, member => { + onClick: _cache[21] || (_cache[21] = $event => manageSection.value = 'mute') + }, "禁言设置", 2)]), groupBusy.value ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("div", _hoisted_82, "正在加载")) : manageSection.value === 'admins' ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("section", _hoisted_83, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("div", _hoisted_84, [((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(true), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)(vue__WEBPACK_IMPORTED_MODULE_13__/* .Fragment */ .FK, null, (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .renderList */ .pI)(adminCandidateMembers.value, member => { return (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("label", { key: member.uid, class: "group-member-row selectable with-check" @@ -1874,30 +1918,30 @@ const _hoisted_101 = ["disabled"]; type: "checkbox", checked: selectedAdminIds.value.includes(member.uid), onChange: $event => toggleAdmin(member.uid) - }, null, 40, _hoisted_83), member.portrait ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("img", { + }, null, 40, _hoisted_85), member.portrait ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("img", { key: 0, class: "conversation-avatar image-avatar", - src: member.portrait, + src: (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(_services_mediaProxy__WEBPACK_IMPORTED_MODULE_22__/* .imageDisplayUrl */ .B)(member.portrait), alt: "" - }, null, 8, _hoisted_84)) : ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("span", _hoisted_85, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(memberAvatar(member)), 1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", null, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("strong", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(member.displayName), 1), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("small", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(member.rawDisplayName), 1)])]); - }), 128)), !adminCandidateMembers.value.length ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("div", _hoisted_86, "暂无可设置成员")) : (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createCommentVNode */ .Q3)("", true)]), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("footer", null, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("button", { + }, null, 8, _hoisted_86)) : ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("span", _hoisted_87, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(memberAvatar(member)), 1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", null, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("strong", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(member.displayName), 1), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("small", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(member.rawDisplayName), 1)])]); + }), 128)), !adminCandidateMembers.value.length ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("div", _hoisted_88, "暂无可设置成员")) : (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createCommentVNode */ .Q3)("", true)]), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("footer", null, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("button", { type: "button", class: "primary-inline-action", onClick: saveGroupAdmins - }, "保存管理员")])])) : manageSection.value === 'profile' ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("section", _hoisted_87, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("label", null, [_cache[63] || (_cache[63] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", null, "群名称", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .withDirectives */ .bo)((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("input", { - "onUpdate:modelValue": _cache[20] || (_cache[20] = $event => profileDraft.value.name = $event), + }, "保存管理员")])])) : manageSection.value === 'profile' ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("section", _hoisted_89, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("label", null, [_cache[68] || (_cache[68] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", null, "群名称", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .withDirectives */ .bo)((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("input", { + "onUpdate:modelValue": _cache[22] || (_cache[22] = $event => profileDraft.value.name = $event), maxlength: "128", autocomplete: "off" }, null, 512), [[vue__WEBPACK_IMPORTED_MODULE_12__/* .vModelText */ .Jo, profileDraft.value.name, void 0, { trim: true - }]])]), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("label", null, [_cache[64] || (_cache[64] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", null, "群说明", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .withDirectives */ .bo)((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("textarea", { - "onUpdate:modelValue": _cache[21] || (_cache[21] = $event => profileDraft.value.announcement = $event), + }]])]), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("label", null, [_cache[69] || (_cache[69] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", null, "群说明", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .withDirectives */ .bo)((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("textarea", { + "onUpdate:modelValue": _cache[23] || (_cache[23] = $event => profileDraft.value.announcement = $event), maxlength: "1000", rows: "3" }, null, 512), [[vue__WEBPACK_IMPORTED_MODULE_12__/* .vModelText */ .Jo, profileDraft.value.announcement, void 0, { trim: true - }]])]), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("label", null, [_cache[65] || (_cache[65] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", null, "欢迎词", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .withDirectives */ .bo)((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("textarea", { - "onUpdate:modelValue": _cache[22] || (_cache[22] = $event => profileDraft.value.welcomeText = $event), + }]])]), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("label", null, [_cache[70] || (_cache[70] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", null, "欢迎词", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .withDirectives */ .bo)((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("textarea", { + "onUpdate:modelValue": _cache[24] || (_cache[24] = $event => profileDraft.value.welcomeText = $event), maxlength: "1000", rows: "3" }, null, 512), [[vue__WEBPACK_IMPORTED_MODULE_12__/* .vModelText */ .Jo, profileDraft.value.welcomeText, void 0, { @@ -1906,7 +1950,7 @@ const _hoisted_101 = ["disabled"]; type: "button", class: "primary-inline-action", onClick: saveGroupProfile - }, "保存资料")])])) : manageSection.value === 'kick' ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("section", _hoisted_88, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("div", _hoisted_89, [((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(true), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)(vue__WEBPACK_IMPORTED_MODULE_13__/* .Fragment */ .FK, null, (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .renderList */ .pI)(kickCandidateMembers.value, member => { + }, "保存资料")])])) : manageSection.value === 'kick' ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("section", _hoisted_90, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("div", _hoisted_91, [((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(true), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)(vue__WEBPACK_IMPORTED_MODULE_13__/* .Fragment */ .FK, null, (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .renderList */ .pI)(kickCandidateMembers.value, member => { return (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("label", { key: member.uid, class: "group-member-row selectable with-check" @@ -1914,62 +1958,62 @@ const _hoisted_101 = ["disabled"]; type: "checkbox", checked: selectedKickIds.value.includes(member.uid), onChange: $event => toggleKick(member.uid) - }, null, 40, _hoisted_90), member.portrait ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("img", { + }, null, 40, _hoisted_92), member.portrait ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("img", { key: 0, class: "conversation-avatar image-avatar", - src: member.portrait, + src: (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(_services_mediaProxy__WEBPACK_IMPORTED_MODULE_22__/* .imageDisplayUrl */ .B)(member.portrait), alt: "" - }, null, 8, _hoisted_91)) : ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("span", _hoisted_92, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(memberAvatar(member)), 1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", null, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("strong", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(member.displayName), 1), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("small", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(member.role === 'admin' ? '管理员' : member.rawDisplayName), 1)])]); - }), 128)), !kickCandidateMembers.value.length ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("div", _hoisted_93, "暂无可移除成员")) : (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createCommentVNode */ .Q3)("", true)]), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("footer", null, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("button", { + }, null, 8, _hoisted_93)) : ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("span", _hoisted_94, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(memberAvatar(member)), 1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", null, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("strong", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(member.displayName), 1), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("small", null, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(member.role === 'admin' ? '管理员' : member.rawDisplayName), 1)])]); + }), 128)), !kickCandidateMembers.value.length ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("div", _hoisted_95, "暂无可移除成员")) : (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createCommentVNode */ .Q3)("", true)]), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("footer", null, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("button", { type: "button", class: "danger-inline-action", disabled: !selectedKickIds.value.length, onClick: kickSelectedMembers - }, "移出群组", 8, _hoisted_94)])])) : manageSection.value === 'mute' ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("section", _hoisted_95, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("label", null, [_cache[67] || (_cache[67] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", null, "禁言模式", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .withDirectives */ .bo)((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("select", { - "onUpdate:modelValue": _cache[23] || (_cache[23] = $event => muteDraft.value.mode = $event), + }, "移出群组", 8, _hoisted_96)])])) : manageSection.value === 'mute' ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("section", _hoisted_97, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("label", null, [_cache[72] || (_cache[72] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", null, "禁言模式", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .withDirectives */ .bo)((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("select", { + "onUpdate:modelValue": _cache[25] || (_cache[25] = $event => muteDraft.value.mode = $event), onChange: clearMuteSaveFeedback - }, _cache[66] || (_cache[66] = [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("option", { + }, _cache[71] || (_cache[71] = [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("option", { value: "off" }, "关闭禁言", -1), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("option", { value: "all_include_admins" }, "全体禁言包含管理员", -1), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("option", { value: "all_except_admins" - }, "除管理员外全体禁言", -1)]), 544), [[vue__WEBPACK_IMPORTED_MODULE_12__/* .vModelSelect */ .u1, muteDraft.value.mode]])]), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("label", null, [_cache[69] || (_cache[69] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", null, "时段类型", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .withDirectives */ .bo)((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("select", { - "onUpdate:modelValue": _cache[24] || (_cache[24] = $event => muteDraft.value.scheduleType = $event), + }, "除管理员外全体禁言", -1)]), 544), [[vue__WEBPACK_IMPORTED_MODULE_12__/* .vModelSelect */ .u1, muteDraft.value.mode]])]), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("label", null, [_cache[74] || (_cache[74] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", null, "时段类型", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .withDirectives */ .bo)((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("select", { + "onUpdate:modelValue": _cache[26] || (_cache[26] = $event => muteDraft.value.scheduleType = $event), onChange: clearMuteSaveFeedback - }, _cache[68] || (_cache[68] = [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("option", { + }, _cache[73] || (_cache[73] = [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("option", { value: "manual" }, "立即禁言直到管理解除", -1), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("option", { value: "once" }, "单次", -1), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("option", { value: "daily" - }, "每天固定时段", -1)]), 544), [[vue__WEBPACK_IMPORTED_MODULE_12__/* .vModelSelect */ .u1, muteDraft.value.scheduleType]])]), muteDraft.value.mode !== 'off' && muteDraft.value.scheduleType === 'once' ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("div", _hoisted_96, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("label", null, [_cache[70] || (_cache[70] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", null, "开始", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .withDirectives */ .bo)((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("input", { - "onUpdate:modelValue": _cache[25] || (_cache[25] = $event => muteDraft.value.startsAtLocal = $event), + }, "每天固定时段", -1)]), 544), [[vue__WEBPACK_IMPORTED_MODULE_12__/* .vModelSelect */ .u1, muteDraft.value.scheduleType]])]), muteDraft.value.mode !== 'off' && muteDraft.value.scheduleType === 'once' ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("div", _hoisted_98, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("label", null, [_cache[75] || (_cache[75] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", null, "开始", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .withDirectives */ .bo)((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("input", { + "onUpdate:modelValue": _cache[27] || (_cache[27] = $event => muteDraft.value.startsAtLocal = $event), type: "datetime-local", onInput: clearMuteSaveFeedback - }, null, 544), [[vue__WEBPACK_IMPORTED_MODULE_12__/* .vModelText */ .Jo, muteDraft.value.startsAtLocal]])]), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("label", null, [_cache[71] || (_cache[71] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", null, "结束", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .withDirectives */ .bo)((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("input", { - "onUpdate:modelValue": _cache[26] || (_cache[26] = $event => muteDraft.value.endsAtLocal = $event), + }, null, 544), [[vue__WEBPACK_IMPORTED_MODULE_12__/* .vModelText */ .Jo, muteDraft.value.startsAtLocal]])]), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("label", null, [_cache[76] || (_cache[76] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", null, "结束", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .withDirectives */ .bo)((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("input", { + "onUpdate:modelValue": _cache[28] || (_cache[28] = $event => muteDraft.value.endsAtLocal = $event), type: "datetime-local", onInput: clearMuteSaveFeedback - }, null, 544), [[vue__WEBPACK_IMPORTED_MODULE_12__/* .vModelText */ .Jo, muteDraft.value.endsAtLocal]])])])) : muteDraft.value.mode !== 'off' && muteDraft.value.scheduleType === 'daily' ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("div", _hoisted_97, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("label", null, [_cache[72] || (_cache[72] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", null, "开始", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .withDirectives */ .bo)((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("input", { - "onUpdate:modelValue": _cache[27] || (_cache[27] = $event => muteDraft.value.dailyStart = $event), + }, null, 544), [[vue__WEBPACK_IMPORTED_MODULE_12__/* .vModelText */ .Jo, muteDraft.value.endsAtLocal]])])])) : muteDraft.value.mode !== 'off' && muteDraft.value.scheduleType === 'daily' ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("div", _hoisted_99, [(0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("label", null, [_cache[77] || (_cache[77] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", null, "开始", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .withDirectives */ .bo)((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("input", { + "onUpdate:modelValue": _cache[29] || (_cache[29] = $event => muteDraft.value.dailyStart = $event), type: "time", onInput: clearMuteSaveFeedback - }, null, 544), [[vue__WEBPACK_IMPORTED_MODULE_12__/* .vModelText */ .Jo, muteDraft.value.dailyStart]])]), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("label", null, [_cache[73] || (_cache[73] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", null, "结束", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .withDirectives */ .bo)((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("input", { - "onUpdate:modelValue": _cache[28] || (_cache[28] = $event => muteDraft.value.dailyEnd = $event), + }, null, 544), [[vue__WEBPACK_IMPORTED_MODULE_12__/* .vModelText */ .Jo, muteDraft.value.dailyStart]])]), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("label", null, [_cache[78] || (_cache[78] = (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("span", null, "结束", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .withDirectives */ .bo)((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("input", { + "onUpdate:modelValue": _cache[30] || (_cache[30] = $event => muteDraft.value.dailyEnd = $event), type: "time", onInput: clearMuteSaveFeedback - }, null, 544), [[vue__WEBPACK_IMPORTED_MODULE_12__/* .vModelText */ .Jo, muteDraft.value.dailyEnd]])])])) : (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createCommentVNode */ .Q3)("", true), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("footer", _hoisted_98, [muteSaveNotice.value ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("span", _hoisted_99, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(muteSaveNotice.value), 1)) : muteSaveError.value ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("span", _hoisted_100, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(muteSaveError.value), 1)) : (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createCommentVNode */ .Q3)("", true), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("button", { + }, null, 544), [[vue__WEBPACK_IMPORTED_MODULE_12__/* .vModelText */ .Jo, muteDraft.value.dailyEnd]])])])) : (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createCommentVNode */ .Q3)("", true), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("footer", _hoisted_100, [muteSaveNotice.value ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("span", _hoisted_101, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(muteSaveNotice.value), 1)) : muteSaveError.value ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("span", _hoisted_102, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)(muteSaveError.value), 1)) : (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createCommentVNode */ .Q3)("", true), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementVNode */ .Lk)("button", { type: "button", class: "primary-inline-action", disabled: groupBusy.value, onClick: saveMuteSetting - }, "保存禁言", 8, _hoisted_101)])])) : (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createCommentVNode */ .Q3)("", true)])) : (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createCommentVNode */ .Q3)("", true)])) : (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createCommentVNode */ .Q3)("", true), (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).actionNotice || (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).actionError ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("div", { - key: 8, + }, "保存禁言", 8, _hoisted_103)])])) : (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createCommentVNode */ .Q3)("", true)])) : (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createCommentVNode */ .Q3)("", true)])) : (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createCommentVNode */ .Q3)("", true), (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).actionNotice || (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).actionError ? ((0,vue__WEBPACK_IMPORTED_MODULE_13__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createElementBlock */ .CE)("div", { + key: 9, class: (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .normalizeClass */ .C4)(["chat-toast", { error: (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).actionError }]) - }, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)((0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).actionError || (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).actionNotice), 3)) : (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createCommentVNode */ .Q3)("", true)]); + }, (0,vue__WEBPACK_IMPORTED_MODULE_15__/* .toDisplayString */ .v_)((0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).actionError || (0,vue__WEBPACK_IMPORTED_MODULE_14__/* .unref */ .R1)(conversations).actionNotice), 3)) : (0,vue__WEBPACK_IMPORTED_MODULE_13__/* .createCommentVNode */ .Q3)("", true)], 2); }; } }); @@ -2244,16 +2288,19 @@ const _hoisted_9 = ["disabled"]; /* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var core_js_modules_es_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(8111); /* harmony import */ var core_js_modules_es_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var core_js_modules_es_iterator_find_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(116); -/* harmony import */ var core_js_modules_es_iterator_find_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_iterator_find_js__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var core_js_modules_es_iterator_map_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(1701); -/* harmony import */ var core_js_modules_es_iterator_map_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_iterator_map_js__WEBPACK_IMPORTED_MODULE_4__); -/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(5130); -/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(6768); -/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(144); -/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(5187); -/* harmony import */ var _stores_contacts__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(9045); -/* harmony import */ var _services_mediaProxy__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(446); +/* harmony import */ var core_js_modules_es_iterator_filter_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(2489); +/* harmony import */ var core_js_modules_es_iterator_filter_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_iterator_filter_js__WEBPACK_IMPORTED_MODULE_3__); +/* harmony import */ var core_js_modules_es_iterator_find_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(116); +/* harmony import */ var core_js_modules_es_iterator_find_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_iterator_find_js__WEBPACK_IMPORTED_MODULE_4__); +/* harmony import */ var core_js_modules_es_iterator_map_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(1701); +/* harmony import */ var core_js_modules_es_iterator_map_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_iterator_map_js__WEBPACK_IMPORTED_MODULE_5__); +/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(5130); +/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(6768); +/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(144); +/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(5187); +/* harmony import */ var _stores_contacts__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(9045); +/* harmony import */ var _services_mediaProxy__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(446); + @@ -2263,94 +2310,108 @@ const _hoisted_9 = ["disabled"]; const _hoisted_1 = ["data-message-key", "onClick"]; const _hoisted_2 = { key: 0, + class: "system-message-pill" +}; +const _hoisted_3 = { + key: 1, class: "message-select" }; -const _hoisted_3 = ["checked", "onChange"]; -const _hoisted_4 = ["title", "onClick"]; -const _hoisted_5 = ["src"]; -const _hoisted_6 = { +const _hoisted_4 = ["checked", "onChange"]; +const _hoisted_5 = ["title", "onClick"]; +const _hoisted_6 = ["src"]; +const _hoisted_7 = { key: 1 }; -const _hoisted_7 = { +const _hoisted_8 = { + key: 3, class: "message-stack" }; -const _hoisted_8 = ["onClick"]; -const _hoisted_9 = { +const _hoisted_9 = ["onClick"]; +const _hoisted_10 = { key: 0, class: "message-sender-role" }; -const _hoisted_10 = ["onContextmenu"]; -const _hoisted_11 = ["onClick"]; -const _hoisted_12 = ["src", "alt"]; -const _hoisted_13 = ["href"]; +const _hoisted_11 = ["onContextmenu"]; +const _hoisted_12 = { + key: 0, + class: "red-packet-card" +}; +const _hoisted_13 = { + class: "red-packet-card-main" +}; const _hoisted_14 = { + key: 1, + class: "red-packet-receipt" +}; +const _hoisted_15 = ["onClick"]; +const _hoisted_16 = ["src", "alt"]; +const _hoisted_17 = ["src"]; +const _hoisted_18 = ["href"]; +const _hoisted_19 = { class: "message-file-main" }; -const _hoisted_15 = { - key: 2 +const _hoisted_20 = { + key: 5 }; -const _hoisted_16 = { +const _hoisted_21 = { key: 0, class: "recall-mark" }; -const _hoisted_17 = { +const _hoisted_22 = { key: 1, class: "edit-mark" }; -const _hoisted_18 = { +const _hoisted_23 = { key: 2, class: "favorite-mark", title: "已收藏", "aria-label": "已收藏" }; -const _hoisted_19 = ["title", "aria-label"]; -const _hoisted_20 = { +const _hoisted_24 = ["title", "aria-label"]; +const _hoisted_25 = { key: 0, class: "delivery-check delivery-check-second" }; -const _hoisted_21 = { +const _hoisted_26 = { key: 4, class: "delivery-error" }; -const _hoisted_22 = ["onClick"]; -const _hoisted_23 = { - class: "image-viewer-toolbar" -}; -const _hoisted_24 = { - class: "image-viewer-title" -}; -const _hoisted_25 = ["src", "alt"]; -const _hoisted_26 = { +const _hoisted_27 = ["onClick"]; +const _hoisted_28 = ["src", "alt"]; +const _hoisted_29 = { class: "sender-profile-main" }; -const _hoisted_27 = ["src"]; -const _hoisted_28 = { +const _hoisted_30 = ["src"]; +const _hoisted_31 = { key: 1, class: "profile-avatar" }; -const _hoisted_29 = { +const _hoisted_32 = { key: 2 }; -const _hoisted_30 = { +const _hoisted_33 = { class: "sender-profile-fields" }; -const _hoisted_31 = { +const _hoisted_34 = { + key: 0 +}; +const _hoisted_35 = { class: "sender-profile-alias" }; -const _hoisted_32 = ["disabled"]; -const _hoisted_33 = { +const _hoisted_36 = ["disabled"]; +const _hoisted_37 = { class: "sender-profile-actions" }; -const _hoisted_34 = { +const _hoisted_38 = { key: 0, class: "inline-save-status" }; -const _hoisted_35 = { +const _hoisted_39 = { key: 1, class: "inline-save-status error" }; -const _hoisted_36 = ["disabled"]; -const _hoisted_37 = ["disabled"]; +const _hoisted_40 = ["disabled"]; +const _hoisted_41 = ["disabled"]; @@ -2375,6 +2436,10 @@ const IMAGE_MAX_SCALE = 6; type: Array, default: () => [] }, + pinnedMessageId: { + type: String, + default: '' + }, attentionMessageId: { type: String, default: '' @@ -2390,19 +2455,21 @@ const IMAGE_MAX_SCALE = 6; }) { const props = __props; const emit = __emit; - const contacts = (0,_stores_contacts__WEBPACK_IMPORTED_MODULE_9__/* .useContactStore */ .p)(); - const listEl = (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .ref */ .KR)(null); - const viewerStage = (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .ref */ .KR)(null); - const contextMenu = (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .reactive */ .Kh)({ + const contacts = (0,_stores_contacts__WEBPACK_IMPORTED_MODULE_10__/* .useContactStore */ .p)(); + const listEl = (0,vue__WEBPACK_IMPORTED_MODULE_8__/* .ref */ .KR)(null); + const viewerStage = (0,vue__WEBPACK_IMPORTED_MODULE_8__/* .ref */ .KR)(null); + const contextMenu = (0,vue__WEBPACK_IMPORTED_MODULE_8__/* .reactive */ .Kh)({ visible: false, x: 0, y: 0, message: null }); - const imageViewer = (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .reactive */ .Kh)({ + const imageViewer = (0,vue__WEBPACK_IMPORTED_MODULE_8__/* .reactive */ .Kh)({ visible: false, url: '', name: '', + sourceUrl: '', + index: 0, scale: 1, rotation: 0, offsetX: 0, @@ -2413,9 +2480,10 @@ const IMAGE_MAX_SCALE = 6; dragOffsetX: 0, dragOffsetY: 0 }); - const senderProfile = (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .reactive */ .Kh)({ + const senderProfile = (0,vue__WEBPACK_IMPORTED_MODULE_8__/* .reactive */ .Kh)({ visible: false, uid: '', + userId: '', displayName: '', rawName: '', mobile: '', @@ -2433,10 +2501,11 @@ const IMAGE_MAX_SCALE = 6; notice: '', error: '' }); - const imageViewerStyle = (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .computed */ .EW)(() => ({ + const imageViewerStyle = (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .computed */ .EW)(() => ({ transform: `translate3d(${imageViewer.offsetX}px, ${imageViewer.offsetY}px, 0) scale(${imageViewer.scale}) rotate(${imageViewer.rotation}deg)` })); - const menuItems = (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .computed */ .EW)(() => { + const viewerImages = (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .computed */ .EW)(() => props.messages.filter(message => isImageMessage(message))); + const menuItems = (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .computed */ .EW)(() => { if (!contextMenu.message) { return []; } @@ -2457,6 +2526,7 @@ const IMAGE_MAX_SCALE = 6; }]; } const favoriteLabel = isFavorite(contextMenu.message) ? '取消收藏' : '收藏'; + const pinnedLabel = props.pinnedMessageId === messageIdentity(contextMenu.message) ? '取消置顶' : '置顶'; const items = [{ action: 'copy', label: '复制' @@ -2469,6 +2539,9 @@ const IMAGE_MAX_SCALE = 6; }, { action: 'favorite', label: favoriteLabel + }, { + action: 'pin', + label: pinnedLabel }, { action: 'quote', label: '引用' @@ -2497,14 +2570,14 @@ const IMAGE_MAX_SCALE = 6; return items; }); function scrollToBottom() { - (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .nextTick */ .dY)(() => { + (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .nextTick */ .dY)(() => { if (listEl.value) { listEl.value.scrollTop = listEl.value.scrollHeight; } }); } function scrollToMessage(messageId) { - (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .nextTick */ .dY)(() => { + (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .nextTick */ .dY)(() => { if (!listEl.value || !messageId) { return; } @@ -2517,17 +2590,17 @@ const IMAGE_MAX_SCALE = 6; } }); } - (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .watch */ .wB)(() => props.messages.map(message => `${message.id}:${message.status}:${message.deliveryStatus || ''}:${message.messageUid || ''}:${message.recalled ? '1' : ''}`).join('|'), scrollToBottom, { + (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .watch */ .wB)(() => props.messages.map(message => `${message.id}:${message.status}:${message.deliveryStatus || ''}:${message.messageUid || ''}:${message.recalled ? '1' : ''}`).join('|'), scrollToBottom, { immediate: true }); - (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .watch */ .wB)(() => props.attentionMessageId, scrollToMessage); - (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .onMounted */ .sV)(() => { + (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .watch */ .wB)(() => props.attentionMessageId, scrollToMessage); + (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .onMounted */ .sV)(() => { document.addEventListener('click', closeMenu); document.addEventListener('keydown', closeMenuOnEscape); document.addEventListener('pointermove', moveImageDrag); document.addEventListener('pointerup', stopImageDrag); }); - (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .onBeforeUnmount */ .xo)(() => { + (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .onBeforeUnmount */ .xo)(() => { document.removeEventListener('click', closeMenu); document.removeEventListener('keydown', closeMenuOnEscape); document.removeEventListener('pointermove', moveImageDrag); @@ -2560,6 +2633,65 @@ const IMAGE_MAX_SCALE = 6; function isFileMessage(message) { return message?.type === 'file' && message?.attachment?.url; } + function isVideoMessage(message) { + return (message?.type === 'video' || Number(message?.contentType || 0) === 6) && message?.attachment?.url; + } + function isRedPacketMessage(message) { + return Number(message?.contentType || 0) === 90 || Boolean(redPacketPayload(message)); + } + function isRedPacketReceipt(message) { + return Number(message?.contentType || 0) === 105; + } + function isSystemMessage(message) { + return [92, 93].includes(Number(message?.contentType || 0)); + } + function systemMessageText(message) { + const contentType = Number(message?.contentType || 0); + if (contentType === 92) { + return '以上是打招呼的内容'; + } + if (contentType === 93) { + return '你们已经是好友了,可以开始聊天了。'; + } + return String(message?.text || ''); + } + function redPacketReceiptText(message) { + const text = String(message?.text || '').trim(); + if (text && text !== '[领取了红包]') { + return text; + } + const receiverName = message?.direction === 'out' ? '你' : message?.senderName || '对方'; + const packetSenderName = message?.redPacketSenderName || nearestRedPacketSenderName(message); + return packetSenderName ? `${receiverName}领取了${packetSenderName}的红包` : `${receiverName}领取了红包`; + } + function nearestRedPacketSenderName(receiptMessage) { + const receiptIndex = props.messages.findIndex(item => messageIdentity(item) === messageIdentity(receiptMessage)); + for (let index = receiptIndex - 1; index >= 0; index -= 1) { + const candidate = props.messages[index]; + if (isRedPacketMessage(candidate)) { + return candidate?.direction === 'out' ? '你' : candidate?.senderName || '对方'; + } + } + return ''; + } + function redPacketPayload(message) { + if (message?.redPacket && typeof message.redPacket === 'object') { + return message.redPacket; + } + const text = String(message?.text || '').trim(); + if (!text.startsWith('{')) { + return null; + } + try { + const payload = JSON.parse(text); + return payload?.redPackets || payload?.redPacket || null; + } catch (error) { + return null; + } + } + function redPacketBlessing(message) { + return String(redPacketPayload(message)?.blessing || '恭喜发财,大吉大利'); + } function isGroupMessage(message) { return ['group', 'channel'].includes(message?.conversationType || ''); } @@ -2593,6 +2725,7 @@ const IMAGE_MAX_SCALE = 6; const displayName = contactAlias || groupAlias || rawName || uid; senderProfile.visible = true; senderProfile.uid = uid; + senderProfile.userId = profile.userId || profile.name || cachedContact?.rawUser?.name || uid; senderProfile.displayName = displayName; senderProfile.rawName = rawName || ''; senderProfile.mobile = profile.mobile || cachedContact?.rawUser?.mobile || ''; @@ -2718,13 +2851,33 @@ const IMAGE_MAX_SCALE = 6; } closeMenu(); imageViewer.visible = true; - imageViewer.url = (0,_services_mediaProxy__WEBPACK_IMPORTED_MODULE_10__/* .imageDisplayUrl */ .B)(attachment.url); - imageViewer.name = attachment.name || 'image'; + const index = viewerImages.value.findIndex(item => messageIdentity(item) === messageIdentity(message)); + showViewerImage(index >= 0 ? index : 0); + } + function showViewerImage(index) { + const images = viewerImages.value; + if (!images.length) { + closeImageViewer(); + return; + } + const normalizedIndex = (index + images.length) % images.length; + const attachment = images[normalizedIndex]?.attachment || {}; + imageViewer.index = normalizedIndex; + imageViewer.sourceUrl = attachment.url || ''; + imageViewer.url = (0,_services_mediaProxy__WEBPACK_IMPORTED_MODULE_11__/* .imageDisplayUrl */ .B)(attachment.url || ''); + imageViewer.name = attachment.name || `图片 ${normalizedIndex + 1}`; resetImageViewer(); } + function showPreviousImage() { + showViewerImage(imageViewer.index - 1); + } + function showNextImage() { + showViewerImage(imageViewer.index + 1); + } function closeImageViewer() { imageViewer.visible = false; imageViewer.dragging = false; + imageViewer.sourceUrl = ''; } function resetImageViewer() { imageViewer.scale = 1; @@ -2786,11 +2939,11 @@ const IMAGE_MAX_SCALE = 6; imageViewer.dragging = false; } function saveViewerImage() { - if (!imageViewer.url) { + if (!imageViewer.sourceUrl) { return; } const downloadUrl = new URL('/api/media_download.php', window.location.origin); - downloadUrl.searchParams.set('url', imageViewer.url); + downloadUrl.searchParams.set('url', imageViewer.sourceUrl); downloadUrl.searchParams.set('name', imageViewer.name || 'image'); const link = document.createElement('a'); link.href = downloadUrl.toString(); @@ -2814,6 +2967,16 @@ const IMAGE_MAX_SCALE = 6; contextMenu.message = null; } function closeMenuOnEscape(event) { + if (imageViewer.visible && event.key === 'ArrowLeft') { + event.preventDefault(); + showPreviousImage(); + return; + } + if (imageViewer.visible && event.key === 'ArrowRight') { + event.preventDefault(); + showNextImage(); + return; + } if (event.key === 'Escape') { if (senderProfile.visible) { closeSenderProfile(); @@ -2880,175 +3043,187 @@ const IMAGE_MAX_SCALE = 6; return ''; } return (_ctx, _cache) => { - return (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementBlock */ .CE)("div", { + return (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementBlock */ .CE)("div", { ref_key: "listEl", ref: listEl, class: "message-list" - }, [((0,vue__WEBPACK_IMPORTED_MODULE_6__/* .openBlock */ .uX)(true), (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementBlock */ .CE)(vue__WEBPACK_IMPORTED_MODULE_6__/* .Fragment */ .FK, null, (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .renderList */ .pI)(__props.messages, message => { - return (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementBlock */ .CE)("article", { + }, [((0,vue__WEBPACK_IMPORTED_MODULE_7__/* .openBlock */ .uX)(true), (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementBlock */ .CE)(vue__WEBPACK_IMPORTED_MODULE_7__/* .Fragment */ .FK, null, (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .renderList */ .pI)(__props.messages, message => { + return (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementBlock */ .CE)("article", { key: message.id, - class: (0,vue__WEBPACK_IMPORTED_MODULE_8__/* .normalizeClass */ .C4)(["message-row", [message.direction, { + class: (0,vue__WEBPACK_IMPORTED_MODULE_9__/* .normalizeClass */ .C4)(["message-row", [message.direction, { + system: isSystemMessage(message), selected: isSelected(message), attention: isAttention(message), recalled: message.recalled || message.status === 'recalled' }]]), "data-message-key": messageIdentity(message), onClick: $event => handleMessageClick(message) - }, [__props.selectionMode ? ((0,vue__WEBPACK_IMPORTED_MODULE_6__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementBlock */ .CE)("label", _hoisted_2, [(0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementVNode */ .Lk)("input", { + }, [isSystemMessage(message) ? ((0,vue__WEBPACK_IMPORTED_MODULE_7__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementBlock */ .CE)("div", _hoisted_2, (0,vue__WEBPACK_IMPORTED_MODULE_9__/* .toDisplayString */ .v_)(systemMessageText(message)), 1)) : (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createCommentVNode */ .Q3)("", true), __props.selectionMode && !isSystemMessage(message) ? ((0,vue__WEBPACK_IMPORTED_MODULE_7__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementBlock */ .CE)("label", _hoisted_3, [(0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementVNode */ .Lk)("input", { type: "checkbox", checked: isSelected(message), - onClick: _cache[0] || (_cache[0] = (0,vue__WEBPACK_IMPORTED_MODULE_5__/* .withModifiers */ .D$)(() => {}, ["stop"])), + onClick: _cache[0] || (_cache[0] = (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .withModifiers */ .D$)(() => {}, ["stop"])), onChange: $event => emit('toggle-select', message) - }, null, 40, _hoisted_3)])) : (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createCommentVNode */ .Q3)("", true), showGroupSender(message) ? ((0,vue__WEBPACK_IMPORTED_MODULE_6__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementBlock */ .CE)("button", { - key: 1, + }, null, 40, _hoisted_4)])) : (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createCommentVNode */ .Q3)("", true), !isSystemMessage(message) && showGroupSender(message) ? ((0,vue__WEBPACK_IMPORTED_MODULE_7__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementBlock */ .CE)("button", { + key: 2, type: "button", class: "message-sender-avatar", title: groupSenderName(message), - onClick: (0,vue__WEBPACK_IMPORTED_MODULE_5__/* .withModifiers */ .D$)($event => openSenderProfile(message), ["stop"]) - }, [message.senderPortrait ? ((0,vue__WEBPACK_IMPORTED_MODULE_6__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementBlock */ .CE)("img", { + onClick: (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .withModifiers */ .D$)($event => openSenderProfile(message), ["stop"]) + }, [message.senderPortrait ? ((0,vue__WEBPACK_IMPORTED_MODULE_7__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementBlock */ .CE)("img", { key: 0, - src: message.senderPortrait, + src: (0,vue__WEBPACK_IMPORTED_MODULE_8__/* .unref */ .R1)(_services_mediaProxy__WEBPACK_IMPORTED_MODULE_11__/* .imageDisplayUrl */ .B)(message.senderPortrait), alt: "" - }, null, 8, _hoisted_5)) : ((0,vue__WEBPACK_IMPORTED_MODULE_6__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementBlock */ .CE)("span", _hoisted_6, (0,vue__WEBPACK_IMPORTED_MODULE_8__/* .toDisplayString */ .v_)(groupSenderAvatarText(message)), 1))], 8, _hoisted_4)) : (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createCommentVNode */ .Q3)("", true), (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementVNode */ .Lk)("div", _hoisted_7, [showGroupSender(message) ? ((0,vue__WEBPACK_IMPORTED_MODULE_6__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementBlock */ .CE)("button", { + }, null, 8, _hoisted_6)) : ((0,vue__WEBPACK_IMPORTED_MODULE_7__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementBlock */ .CE)("span", _hoisted_7, (0,vue__WEBPACK_IMPORTED_MODULE_9__/* .toDisplayString */ .v_)(groupSenderAvatarText(message)), 1))], 8, _hoisted_5)) : (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createCommentVNode */ .Q3)("", true), !isSystemMessage(message) ? ((0,vue__WEBPACK_IMPORTED_MODULE_7__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementBlock */ .CE)("div", _hoisted_8, [showGroupSender(message) ? ((0,vue__WEBPACK_IMPORTED_MODULE_7__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementBlock */ .CE)("button", { key: 0, type: "button", class: "message-sender-name", - onClick: (0,vue__WEBPACK_IMPORTED_MODULE_5__/* .withModifiers */ .D$)($event => openSenderProfile(message), ["stop"]) - }, [(0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createTextVNode */ .eW)((0,vue__WEBPACK_IMPORTED_MODULE_8__/* .toDisplayString */ .v_)(groupSenderName(message)) + " ", 1), senderRoleLabel(message) ? ((0,vue__WEBPACK_IMPORTED_MODULE_6__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementBlock */ .CE)("span", _hoisted_9, (0,vue__WEBPACK_IMPORTED_MODULE_8__/* .toDisplayString */ .v_)(senderRoleLabel(message)), 1)) : (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createCommentVNode */ .Q3)("", true)], 8, _hoisted_8)) : (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createCommentVNode */ .Q3)("", true), (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementVNode */ .Lk)("div", { - class: (0,vue__WEBPACK_IMPORTED_MODULE_8__/* .normalizeClass */ .C4)(["message-bubble", roleBubbleClass(message)]), - onContextmenu: (0,vue__WEBPACK_IMPORTED_MODULE_5__/* .withModifiers */ .D$)($event => openMenu($event, message), ["prevent"]) - }, [isImageMessage(message) ? ((0,vue__WEBPACK_IMPORTED_MODULE_6__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementBlock */ .CE)("button", { - key: 0, + onClick: (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .withModifiers */ .D$)($event => openSenderProfile(message), ["stop"]) + }, [(0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createTextVNode */ .eW)((0,vue__WEBPACK_IMPORTED_MODULE_9__/* .toDisplayString */ .v_)(groupSenderName(message)) + " ", 1), senderRoleLabel(message) ? ((0,vue__WEBPACK_IMPORTED_MODULE_7__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementBlock */ .CE)("span", _hoisted_10, (0,vue__WEBPACK_IMPORTED_MODULE_9__/* .toDisplayString */ .v_)(senderRoleLabel(message)), 1)) : (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createCommentVNode */ .Q3)("", true)], 8, _hoisted_9)) : (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createCommentVNode */ .Q3)("", true), (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementVNode */ .Lk)("div", { + class: (0,vue__WEBPACK_IMPORTED_MODULE_9__/* .normalizeClass */ .C4)(["message-bubble", roleBubbleClass(message)]), + onContextmenu: (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .withModifiers */ .D$)($event => openMenu($event, message), ["prevent"]) + }, [isRedPacketMessage(message) ? ((0,vue__WEBPACK_IMPORTED_MODULE_7__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementBlock */ .CE)("div", _hoisted_12, [(0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementVNode */ .Lk)("div", _hoisted_13, [_cache[8] || (_cache[8] = (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementVNode */ .Lk)("span", { + class: "red-packet-icon" + }, "福", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementVNode */ .Lk)("span", null, [(0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementVNode */ .Lk)("strong", null, (0,vue__WEBPACK_IMPORTED_MODULE_9__/* .toDisplayString */ .v_)(redPacketBlessing(message)), 1), _cache[7] || (_cache[7] = (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementVNode */ .Lk)("small", null, "请在 App 上领取", -1))])]), _cache[9] || (_cache[9] = (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementVNode */ .Lk)("div", { + class: "red-packet-card-footer" + }, "中聊红包", -1))])) : isRedPacketReceipt(message) ? ((0,vue__WEBPACK_IMPORTED_MODULE_7__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementBlock */ .CE)("div", _hoisted_14, [_cache[10] || (_cache[10] = (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementVNode */ .Lk)("span", { + class: "red-packet-mini-icon" + }, "福", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementVNode */ .Lk)("span", null, (0,vue__WEBPACK_IMPORTED_MODULE_9__/* .toDisplayString */ .v_)(redPacketReceiptText(message)), 1)])) : isImageMessage(message) ? ((0,vue__WEBPACK_IMPORTED_MODULE_7__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementBlock */ .CE)("button", { + key: 2, type: "button", class: "message-image", - onClick: (0,vue__WEBPACK_IMPORTED_MODULE_5__/* .withModifiers */ .D$)($event => handleImageClick(message), ["stop"]) - }, [(0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementVNode */ .Lk)("img", { - src: (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .unref */ .R1)(_services_mediaProxy__WEBPACK_IMPORTED_MODULE_10__/* .imageDisplayUrl */ .B)(message.attachment.url), + onClick: (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .withModifiers */ .D$)($event => handleImageClick(message), ["stop"]) + }, [(0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementVNode */ .Lk)("img", { + src: (0,vue__WEBPACK_IMPORTED_MODULE_8__/* .unref */ .R1)(_services_mediaProxy__WEBPACK_IMPORTED_MODULE_11__/* .imageDisplayUrl */ .B)(message.attachment.url), alt: message.attachment.name || '图片' - }, null, 8, _hoisted_12)], 8, _hoisted_11)) : isFileMessage(message) ? ((0,vue__WEBPACK_IMPORTED_MODULE_6__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementBlock */ .CE)("a", { - key: 1, + }, null, 8, _hoisted_16)], 8, _hoisted_15)) : isVideoMessage(message) ? ((0,vue__WEBPACK_IMPORTED_MODULE_7__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementBlock */ .CE)("video", { + key: 3, + class: "message-video", + src: message.attachment.url, + controls: "", + playsinline: "", + preload: "metadata" + }, " 当前浏览器无法播放该视频 ", 8, _hoisted_17)) : isFileMessage(message) ? ((0,vue__WEBPACK_IMPORTED_MODULE_7__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementBlock */ .CE)("a", { + key: 4, class: "message-file", href: message.attachment.url, target: "_blank", rel: "noreferrer", download: "" - }, [_cache[7] || (_cache[7] = (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementVNode */ .Lk)("span", { + }, [_cache[11] || (_cache[11] = (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementVNode */ .Lk)("span", { class: "message-file-icon" - }, "▤", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementVNode */ .Lk)("span", _hoisted_14, [(0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementVNode */ .Lk)("strong", null, (0,vue__WEBPACK_IMPORTED_MODULE_8__/* .toDisplayString */ .v_)(message.attachment.name || '文件'), 1), (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementVNode */ .Lk)("small", null, (0,vue__WEBPACK_IMPORTED_MODULE_8__/* .toDisplayString */ .v_)(formatFileSize(message.attachment.size)), 1)])], 8, _hoisted_13)) : (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createCommentVNode */ .Q3)("", true), message.text ? ((0,vue__WEBPACK_IMPORTED_MODULE_6__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementBlock */ .CE)("p", _hoisted_15, (0,vue__WEBPACK_IMPORTED_MODULE_8__/* .toDisplayString */ .v_)(message.text), 1)) : (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createCommentVNode */ .Q3)("", true), (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementVNode */ .Lk)("time", null, [isRecallNotice(message) ? ((0,vue__WEBPACK_IMPORTED_MODULE_6__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementBlock */ .CE)("span", _hoisted_16, (0,vue__WEBPACK_IMPORTED_MODULE_8__/* .toDisplayString */ .v_)(message.recallStatus || '已撤回'), 1)) : (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createCommentVNode */ .Q3)("", true), (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementVNode */ .Lk)("span", null, (0,vue__WEBPACK_IMPORTED_MODULE_8__/* .toDisplayString */ .v_)(formatTime(message.displayTimestamp || message.timestamp)), 1), message.editedAt ? ((0,vue__WEBPACK_IMPORTED_MODULE_6__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementBlock */ .CE)("span", _hoisted_17, "【edit " + (0,vue__WEBPACK_IMPORTED_MODULE_8__/* .toDisplayString */ .v_)(formatTime(message.editedAt)) + "】", 1)) : (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createCommentVNode */ .Q3)("", true), isFavorite(message) ? ((0,vue__WEBPACK_IMPORTED_MODULE_6__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementBlock */ .CE)("span", _hoisted_18, "★")) : (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createCommentVNode */ .Q3)("", true), deliveryState(message) ? ((0,vue__WEBPACK_IMPORTED_MODULE_6__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementBlock */ .CE)("span", { + }, "▤", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementVNode */ .Lk)("span", _hoisted_19, [(0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementVNode */ .Lk)("strong", null, (0,vue__WEBPACK_IMPORTED_MODULE_9__/* .toDisplayString */ .v_)(message.attachment.name || '文件'), 1), (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementVNode */ .Lk)("small", null, (0,vue__WEBPACK_IMPORTED_MODULE_9__/* .toDisplayString */ .v_)(formatFileSize(message.attachment.size)), 1)])], 8, _hoisted_18)) : (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createCommentVNode */ .Q3)("", true), message.text && !isRedPacketMessage(message) && !isRedPacketReceipt(message) ? ((0,vue__WEBPACK_IMPORTED_MODULE_7__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementBlock */ .CE)("p", _hoisted_20, (0,vue__WEBPACK_IMPORTED_MODULE_9__/* .toDisplayString */ .v_)(message.text), 1)) : (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createCommentVNode */ .Q3)("", true), (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementVNode */ .Lk)("time", null, [isRecallNotice(message) ? ((0,vue__WEBPACK_IMPORTED_MODULE_7__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementBlock */ .CE)("span", _hoisted_21, (0,vue__WEBPACK_IMPORTED_MODULE_9__/* .toDisplayString */ .v_)(message.recallStatus || '已撤回'), 1)) : (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createCommentVNode */ .Q3)("", true), (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementVNode */ .Lk)("span", null, (0,vue__WEBPACK_IMPORTED_MODULE_9__/* .toDisplayString */ .v_)(formatTime(message.displayTimestamp || message.timestamp)), 1), message.editedAt ? ((0,vue__WEBPACK_IMPORTED_MODULE_7__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementBlock */ .CE)("span", _hoisted_22, "【edit " + (0,vue__WEBPACK_IMPORTED_MODULE_9__/* .toDisplayString */ .v_)(formatTime(message.editedAt)) + "】", 1)) : (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createCommentVNode */ .Q3)("", true), isFavorite(message) ? ((0,vue__WEBPACK_IMPORTED_MODULE_7__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementBlock */ .CE)("span", _hoisted_23, "★")) : (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createCommentVNode */ .Q3)("", true), deliveryState(message) ? ((0,vue__WEBPACK_IMPORTED_MODULE_7__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementBlock */ .CE)("span", { key: 3, - class: (0,vue__WEBPACK_IMPORTED_MODULE_8__/* .normalizeClass */ .C4)(["delivery-mark", `delivery-mark-${deliveryState(message)}`]), + class: (0,vue__WEBPACK_IMPORTED_MODULE_9__/* .normalizeClass */ .C4)(["delivery-mark", `delivery-mark-${deliveryState(message)}`]), title: deliveryTitle(message), "aria-label": deliveryTitle(message) - }, [_cache[8] || (_cache[8] = (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementVNode */ .Lk)("span", { + }, [_cache[12] || (_cache[12] = (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementVNode */ .Lk)("span", { class: "delivery-check" - }, "✓", -1)), deliveryState(message) !== 'sent' ? ((0,vue__WEBPACK_IMPORTED_MODULE_6__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementBlock */ .CE)("span", _hoisted_20, "✓")) : (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createCommentVNode */ .Q3)("", true)], 10, _hoisted_19)) : (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createCommentVNode */ .Q3)("", true), message.status === 'failed' ? ((0,vue__WEBPACK_IMPORTED_MODULE_6__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementBlock */ .CE)("span", _hoisted_21, (0,vue__WEBPACK_IMPORTED_MODULE_8__/* .toDisplayString */ .v_)(failureText(message)), 1)) : (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createCommentVNode */ .Q3)("", true)])], 42, _hoisted_10)])], 10, _hoisted_1); - }), 128)), contextMenu.visible ? ((0,vue__WEBPACK_IMPORTED_MODULE_6__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementBlock */ .CE)("div", { + }, "✓", -1)), deliveryState(message) !== 'sent' ? ((0,vue__WEBPACK_IMPORTED_MODULE_7__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementBlock */ .CE)("span", _hoisted_25, "✓")) : (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createCommentVNode */ .Q3)("", true)], 10, _hoisted_24)) : (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createCommentVNode */ .Q3)("", true), message.status === 'failed' ? ((0,vue__WEBPACK_IMPORTED_MODULE_7__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementBlock */ .CE)("span", _hoisted_26, (0,vue__WEBPACK_IMPORTED_MODULE_9__/* .toDisplayString */ .v_)(failureText(message)), 1)) : (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createCommentVNode */ .Q3)("", true)])], 42, _hoisted_11)])) : (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createCommentVNode */ .Q3)("", true)], 10, _hoisted_1); + }), 128)), contextMenu.visible ? ((0,vue__WEBPACK_IMPORTED_MODULE_7__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementBlock */ .CE)("div", { key: 0, class: "message-context-menu", - style: (0,vue__WEBPACK_IMPORTED_MODULE_8__/* .normalizeStyle */ .Tr)({ + style: (0,vue__WEBPACK_IMPORTED_MODULE_9__/* .normalizeStyle */ .Tr)({ left: `${contextMenu.x}px`, top: `${contextMenu.y}px` }), - onClick: _cache[1] || (_cache[1] = (0,vue__WEBPACK_IMPORTED_MODULE_5__/* .withModifiers */ .D$)(() => {}, ["stop"])) - }, [((0,vue__WEBPACK_IMPORTED_MODULE_6__/* .openBlock */ .uX)(true), (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementBlock */ .CE)(vue__WEBPACK_IMPORTED_MODULE_6__/* .Fragment */ .FK, null, (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .renderList */ .pI)(menuItems.value, item => { - return (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementBlock */ .CE)("button", { + onClick: _cache[1] || (_cache[1] = (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .withModifiers */ .D$)(() => {}, ["stop"])) + }, [((0,vue__WEBPACK_IMPORTED_MODULE_7__/* .openBlock */ .uX)(true), (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementBlock */ .CE)(vue__WEBPACK_IMPORTED_MODULE_7__/* .Fragment */ .FK, null, (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .renderList */ .pI)(menuItems.value, item => { + return (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementBlock */ .CE)("button", { key: item.action, type: "button", onClick: $event => chooseMenuAction(item.action) - }, (0,vue__WEBPACK_IMPORTED_MODULE_8__/* .toDisplayString */ .v_)(item.label), 9, _hoisted_22); - }), 128))], 4)) : (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createCommentVNode */ .Q3)("", true), ((0,vue__WEBPACK_IMPORTED_MODULE_6__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createBlock */ .Wv)(vue__WEBPACK_IMPORTED_MODULE_6__/* .Teleport */ .Im, { + }, (0,vue__WEBPACK_IMPORTED_MODULE_9__/* .toDisplayString */ .v_)(item.label), 9, _hoisted_27); + }), 128))], 4)) : (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createCommentVNode */ .Q3)("", true), ((0,vue__WEBPACK_IMPORTED_MODULE_7__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createBlock */ .Wv)(vue__WEBPACK_IMPORTED_MODULE_7__/* .Teleport */ .Im, { to: "body" - }, [imageViewer.visible ? ((0,vue__WEBPACK_IMPORTED_MODULE_6__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementBlock */ .CE)("div", { + }, [imageViewer.visible ? ((0,vue__WEBPACK_IMPORTED_MODULE_7__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementBlock */ .CE)("div", { key: 0, class: "image-viewer-backdrop", onClick: closeImageViewer - }, [(0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementVNode */ .Lk)("div", { + }, [(0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementVNode */ .Lk)("div", { class: "image-viewer-dialog", - onClick: _cache[4] || (_cache[4] = (0,vue__WEBPACK_IMPORTED_MODULE_5__/* .withModifiers */ .D$)(() => {}, ["stop"])) - }, [(0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementVNode */ .Lk)("div", _hoisted_23, [(0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementVNode */ .Lk)("span", _hoisted_24, (0,vue__WEBPACK_IMPORTED_MODULE_8__/* .toDisplayString */ .v_)(imageViewer.name || '图片'), 1), (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementVNode */ .Lk)("button", { - type: "button", - title: "缩小", - "aria-label": "缩小", - onClick: _cache[2] || (_cache[2] = $event => zoomImage(-0.25)) - }, "−"), (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementVNode */ .Lk)("button", { - type: "button", - title: "放大", - "aria-label": "放大", - onClick: _cache[3] || (_cache[3] = $event => zoomImage(0.25)) - }, "+"), (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementVNode */ .Lk)("button", { - type: "button", - title: "还原", - "aria-label": "还原", - onClick: resetImageViewer - }, "1:1"), (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementVNode */ .Lk)("button", { + onClick: _cache[4] || (_cache[4] = (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .withModifiers */ .D$)(() => {}, ["stop"])) + }, [(0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementVNode */ .Lk)("div", { + class: "image-viewer-toolbar" + }, [(0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementVNode */ .Lk)("button", { type: "button", title: "旋转", "aria-label": "旋转", onClick: rotateImage - }, "⟳"), (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementVNode */ .Lk)("button", { + }, "⟳"), (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementVNode */ .Lk)("button", { type: "button", title: "保存", "aria-label": "保存", onClick: saveViewerImage - }, "⇩"), (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementVNode */ .Lk)("button", { + }, "⇩"), (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementVNode */ .Lk)("button", { type: "button", title: "关闭", "aria-label": "关闭", onClick: closeImageViewer - }, "×")]), (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementVNode */ .Lk)("div", { + }, "×")]), (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementVNode */ .Lk)("div", { ref_key: "viewerStage", ref: viewerStage, - class: (0,vue__WEBPACK_IMPORTED_MODULE_8__/* .normalizeClass */ .C4)(["image-viewer-stage", { - dragging: imageViewer.dragging, - zoomed: imageViewer.scale > 1 - }]), - onWheel: (0,vue__WEBPACK_IMPORTED_MODULE_5__/* .withModifiers */ .D$)(handleImageWheel, ["prevent"]), - onPointerdown: (0,vue__WEBPACK_IMPORTED_MODULE_5__/* .withModifiers */ .D$)(startImageDrag, ["prevent"]) - }, [(0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementVNode */ .Lk)("img", { + class: "image-viewer-stage" + }, [viewerImages.value.length > 1 ? ((0,vue__WEBPACK_IMPORTED_MODULE_7__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementBlock */ .CE)("button", { + key: 0, + type: "button", + class: "image-viewer-nav image-viewer-prev", + title: "上一张", + "aria-label": "上一张", + onPointerdown: _cache[2] || (_cache[2] = (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .withModifiers */ .D$)(() => {}, ["stop"])), + onClick: (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .withModifiers */ .D$)(showPreviousImage, ["stop"]) + }, "‹", 32)) : (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createCommentVNode */ .Q3)("", true), (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementVNode */ .Lk)("img", { class: "image-viewer-img", src: imageViewer.url, alt: imageViewer.name || '图片', - style: (0,vue__WEBPACK_IMPORTED_MODULE_8__/* .normalizeStyle */ .Tr)(imageViewerStyle.value), + style: (0,vue__WEBPACK_IMPORTED_MODULE_9__/* .normalizeStyle */ .Tr)(imageViewerStyle.value), draggable: "false" - }, null, 12, _hoisted_25)], 34)])])) : (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createCommentVNode */ .Q3)("", true)])), ((0,vue__WEBPACK_IMPORTED_MODULE_6__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createBlock */ .Wv)(vue__WEBPACK_IMPORTED_MODULE_6__/* .Teleport */ .Im, { + }, null, 12, _hoisted_28), viewerImages.value.length > 1 ? ((0,vue__WEBPACK_IMPORTED_MODULE_7__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementBlock */ .CE)("button", { + key: 1, + type: "button", + class: "image-viewer-nav image-viewer-next", + title: "下一张", + "aria-label": "下一张", + onPointerdown: _cache[3] || (_cache[3] = (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .withModifiers */ .D$)(() => {}, ["stop"])), + onClick: (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .withModifiers */ .D$)(showNextImage, ["stop"]) + }, "›", 32)) : (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createCommentVNode */ .Q3)("", true)], 512)])])) : (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createCommentVNode */ .Q3)("", true)])), ((0,vue__WEBPACK_IMPORTED_MODULE_7__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createBlock */ .Wv)(vue__WEBPACK_IMPORTED_MODULE_7__/* .Teleport */ .Im, { to: "body" - }, [senderProfile.visible ? ((0,vue__WEBPACK_IMPORTED_MODULE_6__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementBlock */ .CE)("div", { + }, [senderProfile.visible ? ((0,vue__WEBPACK_IMPORTED_MODULE_7__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementBlock */ .CE)("div", { key: 0, class: "sender-profile-backdrop", onClick: closeSenderProfile - }, [(0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementVNode */ .Lk)("section", { + }, [(0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementVNode */ .Lk)("section", { class: "sender-profile-dialog", - onClick: _cache[6] || (_cache[6] = (0,vue__WEBPACK_IMPORTED_MODULE_5__/* .withModifiers */ .D$)(() => {}, ["stop"])) - }, [(0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementVNode */ .Lk)("header", null, [_cache[9] || (_cache[9] = (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementVNode */ .Lk)("strong", null, "用户资料", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementVNode */ .Lk)("button", { + onClick: _cache[6] || (_cache[6] = (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .withModifiers */ .D$)(() => {}, ["stop"])) + }, [(0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementVNode */ .Lk)("header", null, [_cache[13] || (_cache[13] = (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementVNode */ .Lk)("strong", null, "用户资料", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementVNode */ .Lk)("button", { type: "button", class: "icon-button", title: "关闭", onClick: closeSenderProfile - }, "×")]), (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementVNode */ .Lk)("div", _hoisted_26, [senderProfile.portrait ? ((0,vue__WEBPACK_IMPORTED_MODULE_6__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementBlock */ .CE)("img", { + }, "×")]), (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementVNode */ .Lk)("div", _hoisted_29, [senderProfile.portrait ? ((0,vue__WEBPACK_IMPORTED_MODULE_7__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementBlock */ .CE)("img", { key: 0, class: "profile-avatar image-avatar", - src: senderProfile.portrait, + src: (0,vue__WEBPACK_IMPORTED_MODULE_8__/* .unref */ .R1)(_services_mediaProxy__WEBPACK_IMPORTED_MODULE_11__/* .imageDisplayUrl */ .B)(senderProfile.portrait), alt: "" - }, null, 8, _hoisted_27)) : ((0,vue__WEBPACK_IMPORTED_MODULE_6__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementBlock */ .CE)("div", _hoisted_28, (0,vue__WEBPACK_IMPORTED_MODULE_8__/* .toDisplayString */ .v_)(senderProfile.avatarText), 1)), (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementVNode */ .Lk)("strong", null, (0,vue__WEBPACK_IMPORTED_MODULE_8__/* .toDisplayString */ .v_)(senderProfile.displayName || senderProfile.uid), 1), senderProfile.roleLabel ? ((0,vue__WEBPACK_IMPORTED_MODULE_6__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementBlock */ .CE)("span", _hoisted_29, (0,vue__WEBPACK_IMPORTED_MODULE_8__/* .toDisplayString */ .v_)(senderProfile.roleLabel), 1)) : (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createCommentVNode */ .Q3)("", true)]), (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementVNode */ .Lk)("dl", _hoisted_30, [(0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementVNode */ .Lk)("div", null, [_cache[10] || (_cache[10] = (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementVNode */ .Lk)("dt", null, "用户ID", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementVNode */ .Lk)("dd", null, (0,vue__WEBPACK_IMPORTED_MODULE_8__/* .toDisplayString */ .v_)(senderProfile.uid || '-'), 1)]), (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementVNode */ .Lk)("div", null, [_cache[11] || (_cache[11] = (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementVNode */ .Lk)("dt", null, "昵称", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementVNode */ .Lk)("dd", null, (0,vue__WEBPACK_IMPORTED_MODULE_8__/* .toDisplayString */ .v_)(senderProfile.rawName || senderProfile.displayName || '-'), 1)]), (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementVNode */ .Lk)("div", null, [_cache[12] || (_cache[12] = (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementVNode */ .Lk)("dt", null, "手机号", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementVNode */ .Lk)("dd", null, (0,vue__WEBPACK_IMPORTED_MODULE_8__/* .toDisplayString */ .v_)(senderProfile.mobile || '未知'), 1)]), (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementVNode */ .Lk)("div", null, [_cache[13] || (_cache[13] = (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementVNode */ .Lk)("dt", null, "地区", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementVNode */ .Lk)("dd", null, (0,vue__WEBPACK_IMPORTED_MODULE_8__/* .toDisplayString */ .v_)(senderProfile.address || '未知'), 1)])]), (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementVNode */ .Lk)("label", _hoisted_31, [_cache[14] || (_cache[14] = (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementVNode */ .Lk)("span", null, "备注名称", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .withDirectives */ .bo)((0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementVNode */ .Lk)("input", { + }, null, 8, _hoisted_30)) : ((0,vue__WEBPACK_IMPORTED_MODULE_7__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementBlock */ .CE)("div", _hoisted_31, (0,vue__WEBPACK_IMPORTED_MODULE_9__/* .toDisplayString */ .v_)(senderProfile.avatarText), 1)), (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementVNode */ .Lk)("strong", null, (0,vue__WEBPACK_IMPORTED_MODULE_9__/* .toDisplayString */ .v_)(senderProfile.displayName || senderProfile.uid), 1), senderProfile.roleLabel ? ((0,vue__WEBPACK_IMPORTED_MODULE_7__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementBlock */ .CE)("span", _hoisted_32, (0,vue__WEBPACK_IMPORTED_MODULE_9__/* .toDisplayString */ .v_)(senderProfile.roleLabel), 1)) : (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createCommentVNode */ .Q3)("", true)]), (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementVNode */ .Lk)("dl", _hoisted_33, [(0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementVNode */ .Lk)("div", null, [_cache[14] || (_cache[14] = (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementVNode */ .Lk)("dt", null, "用户ID", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementVNode */ .Lk)("dd", null, (0,vue__WEBPACK_IMPORTED_MODULE_9__/* .toDisplayString */ .v_)(senderProfile.userId || senderProfile.uid || '-'), 1)]), senderProfile.uid && senderProfile.userId && senderProfile.uid !== senderProfile.userId ? ((0,vue__WEBPACK_IMPORTED_MODULE_7__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementBlock */ .CE)("div", _hoisted_34, [_cache[15] || (_cache[15] = (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementVNode */ .Lk)("dt", null, "用户UID", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementVNode */ .Lk)("dd", null, (0,vue__WEBPACK_IMPORTED_MODULE_9__/* .toDisplayString */ .v_)(senderProfile.uid), 1)])) : (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createCommentVNode */ .Q3)("", true), (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementVNode */ .Lk)("div", null, [_cache[16] || (_cache[16] = (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementVNode */ .Lk)("dt", null, "昵称", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementVNode */ .Lk)("dd", null, (0,vue__WEBPACK_IMPORTED_MODULE_9__/* .toDisplayString */ .v_)(senderProfile.rawName || senderProfile.displayName || '-'), 1)]), (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementVNode */ .Lk)("div", null, [_cache[17] || (_cache[17] = (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementVNode */ .Lk)("dt", null, "手机号", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementVNode */ .Lk)("dd", null, (0,vue__WEBPACK_IMPORTED_MODULE_9__/* .toDisplayString */ .v_)(senderProfile.mobile || '未知'), 1)]), (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementVNode */ .Lk)("div", null, [_cache[18] || (_cache[18] = (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementVNode */ .Lk)("dt", null, "地区", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementVNode */ .Lk)("dd", null, (0,vue__WEBPACK_IMPORTED_MODULE_9__/* .toDisplayString */ .v_)(senderProfile.address || '未知'), 1)])]), (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementVNode */ .Lk)("label", _hoisted_35, [_cache[19] || (_cache[19] = (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementVNode */ .Lk)("span", null, "备注名称", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .withDirectives */ .bo)((0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementVNode */ .Lk)("input", { "onUpdate:modelValue": _cache[5] || (_cache[5] = $event => senderProfile.aliasDraft = $event), maxlength: "32", autocomplete: "off", placeholder: "可给群员设置备注", disabled: senderProfile.saving || senderProfile.adding - }, null, 8, _hoisted_32), [[vue__WEBPACK_IMPORTED_MODULE_5__/* .vModelText */ .Jo, senderProfile.aliasDraft, void 0, { + }, null, 8, _hoisted_36), [[vue__WEBPACK_IMPORTED_MODULE_6__/* .vModelText */ .Jo, senderProfile.aliasDraft, void 0, { trim: true - }]])]), (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementVNode */ .Lk)("footer", _hoisted_33, [senderProfile.notice ? ((0,vue__WEBPACK_IMPORTED_MODULE_6__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementBlock */ .CE)("span", _hoisted_34, (0,vue__WEBPACK_IMPORTED_MODULE_8__/* .toDisplayString */ .v_)(senderProfile.notice), 1)) : senderProfile.error ? ((0,vue__WEBPACK_IMPORTED_MODULE_6__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementBlock */ .CE)("span", _hoisted_35, (0,vue__WEBPACK_IMPORTED_MODULE_8__/* .toDisplayString */ .v_)(senderProfile.error), 1)) : (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createCommentVNode */ .Q3)("", true), !senderProfile.isContact ? ((0,vue__WEBPACK_IMPORTED_MODULE_6__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementBlock */ .CE)("button", { + }]])]), (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementVNode */ .Lk)("footer", _hoisted_37, [senderProfile.notice ? ((0,vue__WEBPACK_IMPORTED_MODULE_7__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementBlock */ .CE)("span", _hoisted_38, (0,vue__WEBPACK_IMPORTED_MODULE_9__/* .toDisplayString */ .v_)(senderProfile.notice), 1)) : senderProfile.error ? ((0,vue__WEBPACK_IMPORTED_MODULE_7__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementBlock */ .CE)("span", _hoisted_39, (0,vue__WEBPACK_IMPORTED_MODULE_9__/* .toDisplayString */ .v_)(senderProfile.error), 1)) : (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createCommentVNode */ .Q3)("", true), !senderProfile.isContact ? ((0,vue__WEBPACK_IMPORTED_MODULE_7__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementBlock */ .CE)("button", { key: 2, type: "button", class: "ghost-inline-action", disabled: senderProfile.adding || senderProfile.saving || !senderProfile.uid, onClick: addSenderAsContact - }, (0,vue__WEBPACK_IMPORTED_MODULE_8__/* .toDisplayString */ .v_)(senderProfile.adding ? '添加中...' : '添加为好友'), 9, _hoisted_36)) : (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createCommentVNode */ .Q3)("", true), (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createElementVNode */ .Lk)("button", { + }, (0,vue__WEBPACK_IMPORTED_MODULE_9__/* .toDisplayString */ .v_)(senderProfile.adding ? '添加中...' : '添加为好友'), 9, _hoisted_40)) : (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createCommentVNode */ .Q3)("", true), (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createElementVNode */ .Lk)("button", { type: "button", class: "primary-inline-action", disabled: senderProfile.saving || senderProfile.adding || !senderProfile.uid, onClick: saveSenderAlias - }, (0,vue__WEBPACK_IMPORTED_MODULE_8__/* .toDisplayString */ .v_)(senderProfile.saving ? '保存中...' : '保存备注'), 9, _hoisted_37)])])])) : (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .createCommentVNode */ .Q3)("", true)]))], 512); + }, (0,vue__WEBPACK_IMPORTED_MODULE_9__/* .toDisplayString */ .v_)(senderProfile.saving ? '保存中...' : '保存备注'), 9, _hoisted_41)])])])) : (0,vue__WEBPACK_IMPORTED_MODULE_7__/* .createCommentVNode */ .Q3)("", true)]))], 512); }; } }); @@ -3063,6 +3238,7 @@ const IMAGE_MAX_SCALE = 6; /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(144); /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(5187); /* harmony import */ var _stores_contacts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(9045); +/* harmony import */ var _services_mediaProxy__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(446); const _hoisted_1 = { class: "contact-panel" @@ -3102,6 +3278,7 @@ const _hoisted_13 = { }; + /* harmony default export */ __webpack_exports__.A = ({ __name: 'ContactPanel', setup(__props) { @@ -3151,7 +3328,7 @@ const _hoisted_13 = { }, [(0,vue__WEBPACK_IMPORTED_MODULE_1__/* .createElementVNode */ .Lk)("header", _hoisted_2, [(0,vue__WEBPACK_IMPORTED_MODULE_1__/* .createElementVNode */ .Lk)("div", null, [(0,vue__WEBPACK_IMPORTED_MODULE_1__/* .createElementVNode */ .Lk)("h2", null, (0,vue__WEBPACK_IMPORTED_MODULE_3__/* .toDisplayString */ .v_)(remarkName.value), 1), (0,vue__WEBPACK_IMPORTED_MODULE_1__/* .createElementVNode */ .Lk)("p", null, (0,vue__WEBPACK_IMPORTED_MODULE_3__/* .toDisplayString */ .v_)(username.value), 1)])]), (0,vue__WEBPACK_IMPORTED_MODULE_1__/* .createElementVNode */ .Lk)("div", _hoisted_3, [contact.value.portrait ? ((0,vue__WEBPACK_IMPORTED_MODULE_1__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_1__/* .createElementBlock */ .CE)("img", { key: 0, class: "profile-avatar image-avatar", - src: contact.value.portrait, + src: (0,vue__WEBPACK_IMPORTED_MODULE_2__/* .unref */ .R1)(_services_mediaProxy__WEBPACK_IMPORTED_MODULE_5__/* .imageDisplayUrl */ .B)(contact.value.portrait), alt: "" }, null, 8, _hoisted_4)) : ((0,vue__WEBPACK_IMPORTED_MODULE_1__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_1__/* .createElementBlock */ .CE)("div", _hoisted_5, (0,vue__WEBPACK_IMPORTED_MODULE_3__/* .toDisplayString */ .v_)(contact.value.avatarText), 1)), (0,vue__WEBPACK_IMPORTED_MODULE_1__/* .createElementVNode */ .Lk)("div", _hoisted_6, [(0,vue__WEBPACK_IMPORTED_MODULE_1__/* .createElementVNode */ .Lk)("div", _hoisted_7, [(0,vue__WEBPACK_IMPORTED_MODULE_1__/* .createElementVNode */ .Lk)("h3", null, (0,vue__WEBPACK_IMPORTED_MODULE_3__/* .toDisplayString */ .v_)(remarkName.value), 1), (0,vue__WEBPACK_IMPORTED_MODULE_1__/* .createElementVNode */ .Lk)("button", { type: "button", @@ -3541,6 +3718,7 @@ const _hoisted_14 = { /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(144); /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(5187); /* harmony import */ var _stores_contacts__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(9045); +/* harmony import */ var _services_mediaProxy__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(446); @@ -3587,6 +3765,7 @@ const _hoisted_13 = { const _hoisted_14 = ["disabled"]; + /* harmony default export */ __webpack_exports__.A = ({ __name: 'ContactList', setup(__props) { @@ -3646,7 +3825,7 @@ const _hoisted_14 = ["disabled"]; }, [item.portrait ? ((0,vue__WEBPACK_IMPORTED_MODULE_4__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_4__/* .createElementBlock */ .CE)("img", { key: 0, class: "conversation-avatar image-avatar", - src: item.portrait, + src: (0,vue__WEBPACK_IMPORTED_MODULE_5__/* .unref */ .R1)(_services_mediaProxy__WEBPACK_IMPORTED_MODULE_8__/* .imageDisplayUrl */ .B)(item.portrait), alt: "" }, null, 8, _hoisted_7)) : ((0,vue__WEBPACK_IMPORTED_MODULE_4__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_4__/* .createElementBlock */ .CE)("span", _hoisted_8, (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .toDisplayString */ .v_)(item.avatarText), 1)), (0,vue__WEBPACK_IMPORTED_MODULE_4__/* .createElementVNode */ .Lk)("span", _hoisted_9, [(0,vue__WEBPACK_IMPORTED_MODULE_4__/* .createElementVNode */ .Lk)("strong", null, (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .toDisplayString */ .v_)(item.title), 1), (0,vue__WEBPACK_IMPORTED_MODULE_4__/* .createElementVNode */ .Lk)("small", null, (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .toDisplayString */ .v_)(item.subtitle), 1)])], 10, _hoisted_6); }), 128)), !filteredContacts.value.length ? ((0,vue__WEBPACK_IMPORTED_MODULE_4__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_4__/* .createElementBlock */ .CE)("div", _hoisted_10, [(0,vue__WEBPACK_IMPORTED_MODULE_4__/* .createElementVNode */ .Lk)("strong", null, (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .toDisplayString */ .v_)((0,vue__WEBPACK_IMPORTED_MODULE_5__/* .unref */ .R1)(contacts).loading ? '正在加载' : '暂无联系人'), 1), (0,vue__WEBPACK_IMPORTED_MODULE_4__/* .createElementVNode */ .Lk)("span", null, (0,vue__WEBPACK_IMPORTED_MODULE_6__/* .toDisplayString */ .v_)((0,vue__WEBPACK_IMPORTED_MODULE_5__/* .unref */ .R1)(contacts).loading ? '请稍候' : '好友同步完成后会显示在这里'), 1)])) : (0,vue__WEBPACK_IMPORTED_MODULE_4__/* .createCommentVNode */ .Q3)("", true)]), addingContact.value ? ((0,vue__WEBPACK_IMPORTED_MODULE_4__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_4__/* .createElementBlock */ .CE)("div", { @@ -3722,6 +3901,7 @@ const _hoisted_14 = ["disabled"]; /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(5187); /* harmony import */ var _stores_conversations__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(7566); /* harmony import */ var _stores_contacts__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(9045); +/* harmony import */ var _services_mediaProxy__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(446); @@ -3754,7 +3934,7 @@ const _hoisted_4 = { const _hoisted_5 = { class: "sidebar-scroll" }; -const _hoisted_6 = ["onClick"]; +const _hoisted_6 = ["onClick", "onContextmenu"]; const _hoisted_7 = ["src"]; const _hoisted_8 = { key: 1, @@ -3763,33 +3943,39 @@ const _hoisted_8 = { const _hoisted_9 = { class: "conversation-copy" }; -const _hoisted_10 = ["aria-label"]; -const _hoisted_11 = { +const _hoisted_10 = { key: 0, - class: "empty-list" + class: "conversation-pin", + "aria-label": "已置顶" }; +const _hoisted_11 = ["aria-label"]; const _hoisted_12 = { key: 1, class: "empty-list" }; const _hoisted_13 = { - key: 0 + key: 2, + class: "empty-list" }; const _hoisted_14 = { - key: 2 + key: 0 }; const _hoisted_15 = { + key: 2 +}; +const _hoisted_16 = { key: 5, class: "form-error" }; -const _hoisted_16 = { +const _hoisted_17 = { key: 6, class: "form-info" }; -const _hoisted_17 = { +const _hoisted_18 = { class: "modal-actions" }; -const _hoisted_18 = ["disabled"]; +const _hoisted_19 = ["disabled"]; + @@ -3812,6 +3998,11 @@ const _hoisted_18 = ["disabled"]; const channelAnnouncement = (0,vue__WEBPACK_IMPORTED_MODULE_18__/* .ref */ .KR)(''); const contactKeyword = (0,vue__WEBPACK_IMPORTED_MODULE_18__/* .ref */ .KR)(''); const selectedContactIds = (0,vue__WEBPACK_IMPORTED_MODULE_18__/* .ref */ .KR)([]); + const conversationMenu = (0,vue__WEBPACK_IMPORTED_MODULE_18__/* .ref */ .KR)({ + item: null, + x: 0, + y: 0 + }); const actionTitles = { addContact: '添加联系人', createGroup: '新建群组', @@ -3881,6 +4072,29 @@ const _hoisted_18 = ["disabled"]; (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .onMounted */ .sV)(() => { contacts.refreshContacts().catch(() => {}); }); + function isPinned(item) { + return item?.resultKind === 'conversation' && Number(item.pinnedAt || item.top || 0) > 0; + } + function openConversationMenu(event, item) { + if (item.resultKind !== 'conversation') return; + conversationMenu.value = { + item, + x: Math.min(event.clientX, window.innerWidth - 140), + y: Math.min(event.clientY, window.innerHeight - 60) + }; + } + function closeConversationMenu() { + conversationMenu.value = { + item: null, + x: 0, + y: 0 + }; + } + function togglePinned() { + const item = conversationMenu.value.item; + if (item) conversations.togglePinnedConversation(item.id); + closeConversationMenu(); + } const ContactPicker = (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .defineComponent */ .pM)({ name: 'ContactPicker', props: { @@ -4096,15 +4310,17 @@ const _hoisted_18 = ["disabled"]; } } document.addEventListener('click', closeActionMenu); + document.addEventListener('click', closeConversationMenu); (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .onBeforeUnmount */ .xo)(() => { document.removeEventListener('click', closeActionMenu); + document.removeEventListener('click', closeConversationMenu); }); function formatUnread(value) { const count = Number(value || 0); return count > 99 ? '99+' : String(count); } return (_ctx, _cache) => { - return (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementBlock */ .CE)("aside", _hoisted_1, [(0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("header", _hoisted_2, [(0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("div", null, [_cache[18] || (_cache[18] = (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("h2", null, "消息", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("p", null, (0,vue__WEBPACK_IMPORTED_MODULE_19__/* .toDisplayString */ .v_)((0,vue__WEBPACK_IMPORTED_MODULE_18__/* .unref */ .R1)(conversations).totalUnread) + " 条未读", 1)]), (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("div", _hoisted_3, [(0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("button", { + return (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementBlock */ .CE)("aside", _hoisted_1, [(0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("header", _hoisted_2, [(0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("div", null, [_cache[19] || (_cache[19] = (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("h2", null, "消息", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("p", null, (0,vue__WEBPACK_IMPORTED_MODULE_19__/* .toDisplayString */ .v_)((0,vue__WEBPACK_IMPORTED_MODULE_18__/* .unref */ .R1)(conversations).totalUnread) + " 条未读", 1)]), (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("div", _hoisted_3, [(0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("button", { class: "icon-button", title: "新建会话", onClick: (0,vue__WEBPACK_IMPORTED_MODULE_16__/* .withModifiers */ .D$)(toggleActionMenu, ["stop"]) @@ -4136,20 +4352,33 @@ const _hoisted_18 = ["disabled"]; return (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementBlock */ .CE)("button", { key: item.resultKey, class: (0,vue__WEBPACK_IMPORTED_MODULE_19__/* .normalizeClass */ .C4)(["conversation-item", { - active: isListItemActive(item) + active: isListItemActive(item), + pinned: isPinned(item) }]), - onClick: $event => selectListItem(item) + onClick: $event => selectListItem(item), + onContextmenu: (0,vue__WEBPACK_IMPORTED_MODULE_16__/* .withModifiers */ .D$)($event => openConversationMenu($event, item), ["prevent"]) }, [item.portrait ? ((0,vue__WEBPACK_IMPORTED_MODULE_17__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementBlock */ .CE)("img", { key: 0, class: "conversation-avatar image-avatar", - src: item.portrait, + src: (0,vue__WEBPACK_IMPORTED_MODULE_18__/* .unref */ .R1)(_services_mediaProxy__WEBPACK_IMPORTED_MODULE_22__/* .imageDisplayUrl */ .B)(item.portrait), alt: "" - }, null, 8, _hoisted_7)) : ((0,vue__WEBPACK_IMPORTED_MODULE_17__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementBlock */ .CE)("span", _hoisted_8, (0,vue__WEBPACK_IMPORTED_MODULE_19__/* .toDisplayString */ .v_)(item.avatarText), 1)), (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("span", _hoisted_9, [(0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("strong", null, (0,vue__WEBPACK_IMPORTED_MODULE_19__/* .toDisplayString */ .v_)(item.title), 1), (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("small", null, (0,vue__WEBPACK_IMPORTED_MODULE_19__/* .toDisplayString */ .v_)(item.subtitle), 1)]), Number(item.unread || 0) > 0 ? ((0,vue__WEBPACK_IMPORTED_MODULE_17__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementBlock */ .CE)("span", { + }, null, 8, _hoisted_7)) : ((0,vue__WEBPACK_IMPORTED_MODULE_17__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementBlock */ .CE)("span", _hoisted_8, (0,vue__WEBPACK_IMPORTED_MODULE_19__/* .toDisplayString */ .v_)(item.avatarText), 1)), (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("span", _hoisted_9, [(0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("strong", null, [isPinned(item) ? ((0,vue__WEBPACK_IMPORTED_MODULE_17__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementBlock */ .CE)("span", _hoisted_10, "⌖")) : (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createCommentVNode */ .Q3)("", true), (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createTextVNode */ .eW)((0,vue__WEBPACK_IMPORTED_MODULE_19__/* .toDisplayString */ .v_)(item.title), 1)]), (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("small", null, (0,vue__WEBPACK_IMPORTED_MODULE_19__/* .toDisplayString */ .v_)(item.subtitle), 1)]), Number(item.unread || 0) > 0 ? ((0,vue__WEBPACK_IMPORTED_MODULE_17__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementBlock */ .CE)("span", { key: 2, class: "unread-badge", "aria-label": `${item.unread} 条未读消息` - }, (0,vue__WEBPACK_IMPORTED_MODULE_19__/* .toDisplayString */ .v_)(formatUnread(item.unread)), 9, _hoisted_10)) : (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createCommentVNode */ .Q3)("", true)], 10, _hoisted_6); - }), 128)), !filteredConversationItems.value.length && searchKeyword.value ? ((0,vue__WEBPACK_IMPORTED_MODULE_17__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementBlock */ .CE)("div", _hoisted_11, _cache[19] || (_cache[19] = [(0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("strong", null, "没有匹配结果", -1), (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("span", null, "换个关键词再试试", -1)]))) : !(0,vue__WEBPACK_IMPORTED_MODULE_18__/* .unref */ .R1)(conversations).conversations.length && !(0,vue__WEBPACK_IMPORTED_MODULE_18__/* .unref */ .R1)(conversations).usingDemoData ? ((0,vue__WEBPACK_IMPORTED_MODULE_17__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementBlock */ .CE)("div", _hoisted_12, _cache[20] || (_cache[20] = [(0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("strong", null, "暂无会话", -1), (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("span", null, "收到或发起消息后会出现在这里", -1)]))) : (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createCommentVNode */ .Q3)("", true)]), activeAction.value ? ((0,vue__WEBPACK_IMPORTED_MODULE_17__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementBlock */ .CE)("div", { + }, (0,vue__WEBPACK_IMPORTED_MODULE_19__/* .toDisplayString */ .v_)(formatUnread(item.unread)), 9, _hoisted_11)) : (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createCommentVNode */ .Q3)("", true)], 42, _hoisted_6); + }), 128)), conversationMenu.value.item ? ((0,vue__WEBPACK_IMPORTED_MODULE_17__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementBlock */ .CE)("div", { + key: 0, + class: "conversation-context-menu", + style: (0,vue__WEBPACK_IMPORTED_MODULE_19__/* .normalizeStyle */ .Tr)({ + left: `${conversationMenu.value.x}px`, + top: `${conversationMenu.value.y}px` + }), + onClick: _cache[7] || (_cache[7] = (0,vue__WEBPACK_IMPORTED_MODULE_16__/* .withModifiers */ .D$)(() => {}, ["stop"])) + }, [(0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("button", { + type: "button", + onClick: togglePinned + }, (0,vue__WEBPACK_IMPORTED_MODULE_19__/* .toDisplayString */ .v_)(isPinned(conversationMenu.value.item) ? '取消置顶' : '置顶会话'), 1)], 4)) : (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createCommentVNode */ .Q3)("", true), !filteredConversationItems.value.length && searchKeyword.value ? ((0,vue__WEBPACK_IMPORTED_MODULE_17__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementBlock */ .CE)("div", _hoisted_12, _cache[20] || (_cache[20] = [(0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("strong", null, "没有匹配结果", -1), (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("span", null, "换个关键词再试试", -1)]))) : !(0,vue__WEBPACK_IMPORTED_MODULE_18__/* .unref */ .R1)(conversations).conversations.length && !(0,vue__WEBPACK_IMPORTED_MODULE_18__/* .unref */ .R1)(conversations).usingDemoData ? ((0,vue__WEBPACK_IMPORTED_MODULE_17__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementBlock */ .CE)("div", _hoisted_13, _cache[21] || (_cache[21] = [(0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("strong", null, "暂无会话", -1), (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("span", null, "收到或发起消息后会出现在这里", -1)]))) : (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createCommentVNode */ .Q3)("", true)]), activeAction.value ? ((0,vue__WEBPACK_IMPORTED_MODULE_17__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementBlock */ .CE)("div", { key: 0, class: "modal-backdrop", onClick: (0,vue__WEBPACK_IMPORTED_MODULE_16__/* .withModifiers */ .D$)(closeActionModal, ["self"]) @@ -4161,30 +4390,30 @@ const _hoisted_18 = ["disabled"]; class: "icon-button", title: "关闭", onClick: closeActionModal - }, "×")]), activeAction.value === 'addContact' ? ((0,vue__WEBPACK_IMPORTED_MODULE_17__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementBlock */ .CE)("label", _hoisted_13, [_cache[21] || (_cache[21] = (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("span", null, "用户ID / 手机号 / 用户名", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .withDirectives */ .bo)((0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("input", { - "onUpdate:modelValue": _cache[7] || (_cache[7] = $event => addKeyword.value = $event), + }, "×")]), activeAction.value === 'addContact' ? ((0,vue__WEBPACK_IMPORTED_MODULE_17__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementBlock */ .CE)("label", _hoisted_14, [_cache[22] || (_cache[22] = (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("span", null, "用户ID / 手机号 / 用户名", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .withDirectives */ .bo)((0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("input", { + "onUpdate:modelValue": _cache[8] || (_cache[8] = $event => addKeyword.value = $event), autocomplete: "off", placeholder: "请输入要添加的联系人" }, null, 512), [[vue__WEBPACK_IMPORTED_MODULE_16__/* .vModelText */ .Jo, addKeyword.value, void 0, { trim: true }]])])) : activeAction.value === 'createGroup' ? ((0,vue__WEBPACK_IMPORTED_MODULE_17__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementBlock */ .CE)(vue__WEBPACK_IMPORTED_MODULE_17__/* .Fragment */ .FK, { key: 1 - }, [(0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("label", null, [_cache[22] || (_cache[22] = (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("span", null, "群组名称", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .withDirectives */ .bo)((0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("input", { - "onUpdate:modelValue": _cache[8] || (_cache[8] = $event => groupName.value = $event), + }, [(0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("label", null, [_cache[23] || (_cache[23] = (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("span", null, "群组名称", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .withDirectives */ .bo)((0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("input", { + "onUpdate:modelValue": _cache[9] || (_cache[9] = $event => groupName.value = $event), maxlength: "64", autocomplete: "off", placeholder: "请输入群组名称" }, null, 512), [[vue__WEBPACK_IMPORTED_MODULE_16__/* .vModelText */ .Jo, groupName.value, void 0, { trim: true - }]])]), (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("label", null, [_cache[23] || (_cache[23] = (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("span", null, "群说明", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .withDirectives */ .bo)((0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("textarea", { - "onUpdate:modelValue": _cache[9] || (_cache[9] = $event => groupAnnouncement.value = $event), + }]])]), (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("label", null, [_cache[24] || (_cache[24] = (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("span", null, "群说明", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .withDirectives */ .bo)((0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("textarea", { + "onUpdate:modelValue": _cache[10] || (_cache[10] = $event => groupAnnouncement.value = $event), maxlength: "1000", rows: "3", placeholder: "可选" }, null, 512), [[vue__WEBPACK_IMPORTED_MODULE_16__/* .vModelText */ .Jo, groupAnnouncement.value, void 0, { trim: true - }]])]), (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("label", null, [_cache[24] || (_cache[24] = (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("span", null, "欢迎词", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .withDirectives */ .bo)((0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("textarea", { - "onUpdate:modelValue": _cache[10] || (_cache[10] = $event => groupWelcomeText.value = $event), + }]])]), (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("label", null, [_cache[25] || (_cache[25] = (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("span", null, "欢迎词", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .withDirectives */ .bo)((0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("textarea", { + "onUpdate:modelValue": _cache[11] || (_cache[11] = $event => groupWelcomeText.value = $event), maxlength: "1000", rows: "3", placeholder: "群组创建后自动发送" @@ -4195,18 +4424,18 @@ const _hoisted_18 = ["disabled"]; "selected-ids": selectedContactIds.value, keyword: contactKeyword.value, "empty-text": "暂无可选联系人", - "onUpdate:keyword": _cache[11] || (_cache[11] = $event => contactKeyword.value = $event), + "onUpdate:keyword": _cache[12] || (_cache[12] = $event => contactKeyword.value = $event), onToggle: toggleContact - }, null, 8, ["contacts", "selected-ids", "keyword"])], 64)) : activeAction.value === 'joinGroup' ? ((0,vue__WEBPACK_IMPORTED_MODULE_17__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementBlock */ .CE)("label", _hoisted_14, [_cache[25] || (_cache[25] = (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("span", null, "群组ID / 群名称", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .withDirectives */ .bo)((0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("input", { - "onUpdate:modelValue": _cache[12] || (_cache[12] = $event => joinGroupKey.value = $event), + }, null, 8, ["contacts", "selected-ids", "keyword"])], 64)) : activeAction.value === 'joinGroup' ? ((0,vue__WEBPACK_IMPORTED_MODULE_17__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementBlock */ .CE)("label", _hoisted_15, [_cache[26] || (_cache[26] = (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("span", null, "群组ID / 群名称", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .withDirectives */ .bo)((0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("input", { + "onUpdate:modelValue": _cache[13] || (_cache[13] = $event => joinGroupKey.value = $event), autocomplete: "off", placeholder: "请输入群组ID或群名称" }, null, 512), [[vue__WEBPACK_IMPORTED_MODULE_16__/* .vModelText */ .Jo, joinGroupKey.value, void 0, { trim: true }]])])) : activeAction.value === 'broadcast' ? ((0,vue__WEBPACK_IMPORTED_MODULE_17__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementBlock */ .CE)(vue__WEBPACK_IMPORTED_MODULE_17__/* .Fragment */ .FK, { key: 3 - }, [(0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("label", null, [_cache[26] || (_cache[26] = (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("span", null, "群发内容", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .withDirectives */ .bo)((0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("textarea", { - "onUpdate:modelValue": _cache[13] || (_cache[13] = $event => broadcastText.value = $event), + }, [(0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("label", null, [_cache[27] || (_cache[27] = (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("span", null, "群发内容", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .withDirectives */ .bo)((0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("textarea", { + "onUpdate:modelValue": _cache[14] || (_cache[14] = $event => broadcastText.value = $event), maxlength: "2000", rows: "4", placeholder: "输入要群发的文字" @@ -4217,19 +4446,19 @@ const _hoisted_18 = ["disabled"]; "selected-ids": selectedContactIds.value, keyword: contactKeyword.value, "empty-text": "暂无可选联系人", - "onUpdate:keyword": _cache[14] || (_cache[14] = $event => contactKeyword.value = $event), + "onUpdate:keyword": _cache[15] || (_cache[15] = $event => contactKeyword.value = $event), onToggle: toggleContact }, null, 8, ["contacts", "selected-ids", "keyword"])], 64)) : activeAction.value === 'createChannel' ? ((0,vue__WEBPACK_IMPORTED_MODULE_17__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementBlock */ .CE)(vue__WEBPACK_IMPORTED_MODULE_17__/* .Fragment */ .FK, { key: 4 - }, [(0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("label", null, [_cache[27] || (_cache[27] = (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("span", null, "频道/公告群名称", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .withDirectives */ .bo)((0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("input", { - "onUpdate:modelValue": _cache[15] || (_cache[15] = $event => channelName.value = $event), + }, [(0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("label", null, [_cache[28] || (_cache[28] = (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("span", null, "频道/公告群名称", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .withDirectives */ .bo)((0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("input", { + "onUpdate:modelValue": _cache[16] || (_cache[16] = $event => channelName.value = $event), maxlength: "64", autocomplete: "off", placeholder: "请输入名称" }, null, 512), [[vue__WEBPACK_IMPORTED_MODULE_16__/* .vModelText */ .Jo, channelName.value, void 0, { trim: true - }]])]), (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("label", null, [_cache[28] || (_cache[28] = (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("span", null, "公告说明", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .withDirectives */ .bo)((0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("textarea", { - "onUpdate:modelValue": _cache[16] || (_cache[16] = $event => channelAnnouncement.value = $event), + }]])]), (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("label", null, [_cache[29] || (_cache[29] = (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("span", null, "公告说明", -1)), (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .withDirectives */ .bo)((0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("textarea", { + "onUpdate:modelValue": _cache[17] || (_cache[17] = $event => channelAnnouncement.value = $event), maxlength: "1000", rows: "3", placeholder: "可选" @@ -4240,16 +4469,16 @@ const _hoisted_18 = ["disabled"]; "selected-ids": selectedContactIds.value, keyword: contactKeyword.value, "empty-text": "暂无可选联系人", - "onUpdate:keyword": _cache[17] || (_cache[17] = $event => contactKeyword.value = $event), + "onUpdate:keyword": _cache[18] || (_cache[18] = $event => contactKeyword.value = $event), onToggle: toggleContact - }, null, 8, ["contacts", "selected-ids", "keyword"])], 64)) : (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createCommentVNode */ .Q3)("", true), modalError.value ? ((0,vue__WEBPACK_IMPORTED_MODULE_17__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementBlock */ .CE)("p", _hoisted_15, (0,vue__WEBPACK_IMPORTED_MODULE_19__/* .toDisplayString */ .v_)(modalError.value), 1)) : modalInfo.value ? ((0,vue__WEBPACK_IMPORTED_MODULE_17__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementBlock */ .CE)("p", _hoisted_16, (0,vue__WEBPACK_IMPORTED_MODULE_19__/* .toDisplayString */ .v_)(modalInfo.value), 1)) : (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createCommentVNode */ .Q3)("", true), (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("div", _hoisted_17, [(0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("button", { + }, null, 8, ["contacts", "selected-ids", "keyword"])], 64)) : (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createCommentVNode */ .Q3)("", true), modalError.value ? ((0,vue__WEBPACK_IMPORTED_MODULE_17__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementBlock */ .CE)("p", _hoisted_16, (0,vue__WEBPACK_IMPORTED_MODULE_19__/* .toDisplayString */ .v_)(modalError.value), 1)) : modalInfo.value ? ((0,vue__WEBPACK_IMPORTED_MODULE_17__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementBlock */ .CE)("p", _hoisted_17, (0,vue__WEBPACK_IMPORTED_MODULE_19__/* .toDisplayString */ .v_)(modalInfo.value), 1)) : (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createCommentVNode */ .Q3)("", true), (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("div", _hoisted_18, [(0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("button", { type: "button", class: "ghost-inline-action", onClick: closeActionModal }, "取消"), (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createElementVNode */ .Lk)("button", { class: "primary-inline-action", disabled: actionBusy.value || submitDisabled.value - }, (0,vue__WEBPACK_IMPORTED_MODULE_19__/* .toDisplayString */ .v_)(actionBusy.value ? '处理中...' : submitLabel.value), 9, _hoisted_18)])], 32)])) : (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createCommentVNode */ .Q3)("", true)]); + }, (0,vue__WEBPACK_IMPORTED_MODULE_19__/* .toDisplayString */ .v_)(actionBusy.value ? '处理中...' : submitLabel.value), 9, _hoisted_19)])], 32)])) : (0,vue__WEBPACK_IMPORTED_MODULE_17__/* .createCommentVNode */ .Q3)("", true)]); }; } }); @@ -4268,8 +4497,9 @@ const _hoisted_18 = ["disabled"]; /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(144); /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(5187); /* harmony import */ var _stores_session__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(926); -/* harmony import */ var _stores_navigation__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(1414); -/* harmony import */ var _stores_contacts__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(9045); +/* harmony import */ var _services_mediaProxy__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(446); +/* harmony import */ var _stores_navigation__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(1414); +/* harmony import */ var _stores_contacts__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(9045); @@ -4367,13 +4597,14 @@ const _hoisted_34 = ["disabled"]; + const CROP_OUTPUT_SIZE = 512; /* harmony default export */ __webpack_exports__.A = ({ __name: 'NavigationRail', setup(__props) { const session = (0,_stores_session__WEBPACK_IMPORTED_MODULE_6__/* .useSessionStore */ .B)(); - const navigation = (0,_stores_navigation__WEBPACK_IMPORTED_MODULE_7__/* .useNavigationStore */ .l)(); - const contacts = (0,_stores_contacts__WEBPACK_IMPORTED_MODULE_8__/* .useContactStore */ .p)(); + const navigation = (0,_stores_navigation__WEBPACK_IMPORTED_MODULE_8__/* .useNavigationStore */ .l)(); + const contacts = (0,_stores_contacts__WEBPACK_IMPORTED_MODULE_9__/* .useContactStore */ .p)(); const settingsItems = [{ key: 'notifications', label: '通知设置' @@ -4873,7 +5104,7 @@ const CROP_OUTPUT_SIZE = 512; onClick: openProfileEditor }, [(0,vue__WEBPACK_IMPORTED_MODULE_4__/* .unref */ .R1)(session).portrait ? ((0,vue__WEBPACK_IMPORTED_MODULE_3__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_3__/* .createElementBlock */ .CE)("img", { key: 0, - src: (0,vue__WEBPACK_IMPORTED_MODULE_4__/* .unref */ .R1)(session).portrait, + src: (0,vue__WEBPACK_IMPORTED_MODULE_4__/* .unref */ .R1)(_services_mediaProxy__WEBPACK_IMPORTED_MODULE_7__/* .imageDisplayUrl */ .B)((0,vue__WEBPACK_IMPORTED_MODULE_4__/* .unref */ .R1)(session).portrait), alt: "" }, null, 8, _hoisted_2)) : ((0,vue__WEBPACK_IMPORTED_MODULE_3__/* .openBlock */ .uX)(), (0,vue__WEBPACK_IMPORTED_MODULE_3__/* .createElementBlock */ .CE)("span", _hoisted_3, (0,vue__WEBPACK_IMPORTED_MODULE_5__/* .toDisplayString */ .v_)(initials.value), 1))]), (0,vue__WEBPACK_IMPORTED_MODULE_3__/* .createElementVNode */ .Lk)("button", { class: (0,vue__WEBPACK_IMPORTED_MODULE_5__/* .normalizeClass */ .C4)(["rail-button", { @@ -6111,6 +6342,7 @@ class HttpImClient { displayTimestamp: message.displayTimestamp || message.timestamp, conversationId: conversation.id })); + messages.pinnedMessageUid = String(response.data?.result?.pinnedMessageUid || ''); if (options.includeConversations && Array.isArray(response.data?.result?.conversations)) { const remoteConversations = response.data.result.conversations.map(remoteConversation => ({ ...remoteConversation, @@ -6127,9 +6359,23 @@ class HttpImClient { const userId = this.currentUser?.userId || ''; const messagesByConversation = readLocalMessages(userId); messagesByConversation[conversation.id] = mergeSyncedMessages(messagesByConversation[conversation.id] || [], messages, conversation.id, userId); + messagesByConversation[conversation.id].pinnedMessageUid = messages.pinnedMessageUid; writeLocalMessages(messagesByConversation, userId); return messagesByConversation[conversation.id]; } + async setPinnedMessage(conversation, messageUid = '') { + const action = messageUid ? 'pin' : 'unpin'; + const response = await axios__WEBPACK_IMPORTED_MODULE_17__/* ["default"] */ .A.post(_config__WEBPACK_IMPORTED_MODULE_18__/* .appConfig */ .U.messageActionApi, { + action, + userId: this.currentUser?.userId || '', + messageUid: messageUid || '1', + target: conversation.target || conversation.raw?.target || '', + conversationType: ['group', 'channel'].includes(conversation.type) ? 'group' : 'single' + }, { + withCredentials: false + }); + if (response.data?.code !== 0) throw new Error(response.data?.message || '置顶失败'); + } hideMessages(conversation, messages) { const items = Array.isArray(messages) ? messages : [messages]; if (!conversation?.id || !items.length) { @@ -7054,23 +7300,20 @@ class LongConnectionImClient extends _httpImClient__WEBPACK_IMPORTED_MODULE_5__/ /* harmony import */ var core_js_modules_es_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var core_js_modules_es_iterator_filter_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2489); /* harmony import */ var core_js_modules_es_iterator_filter_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_iterator_filter_js__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var core_js_modules_es_iterator_map_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1701); -/* harmony import */ var core_js_modules_es_iterator_map_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_iterator_map_js__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var core_js_modules_es_set_difference_v2_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(7642); -/* harmony import */ var core_js_modules_es_set_difference_v2_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_set_difference_v2_js__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var core_js_modules_es_set_intersection_v2_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(8004); -/* harmony import */ var core_js_modules_es_set_intersection_v2_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_set_intersection_v2_js__WEBPACK_IMPORTED_MODULE_4__); -/* harmony import */ var core_js_modules_es_set_is_disjoint_from_v2_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(3853); -/* harmony import */ var core_js_modules_es_set_is_disjoint_from_v2_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_set_is_disjoint_from_v2_js__WEBPACK_IMPORTED_MODULE_5__); -/* harmony import */ var core_js_modules_es_set_is_subset_of_v2_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(5876); -/* harmony import */ var core_js_modules_es_set_is_subset_of_v2_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_set_is_subset_of_v2_js__WEBPACK_IMPORTED_MODULE_6__); -/* harmony import */ var core_js_modules_es_set_is_superset_of_v2_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(2475); -/* harmony import */ var core_js_modules_es_set_is_superset_of_v2_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_set_is_superset_of_v2_js__WEBPACK_IMPORTED_MODULE_7__); -/* harmony import */ var core_js_modules_es_set_symmetric_difference_v2_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(5024); -/* harmony import */ var core_js_modules_es_set_symmetric_difference_v2_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_set_symmetric_difference_v2_js__WEBPACK_IMPORTED_MODULE_8__); -/* harmony import */ var core_js_modules_es_set_union_v2_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(1698); -/* harmony import */ var core_js_modules_es_set_union_v2_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_set_union_v2_js__WEBPACK_IMPORTED_MODULE_9__); - +/* harmony import */ var core_js_modules_es_set_difference_v2_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7642); +/* harmony import */ var core_js_modules_es_set_difference_v2_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_set_difference_v2_js__WEBPACK_IMPORTED_MODULE_2__); +/* harmony import */ var core_js_modules_es_set_intersection_v2_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(8004); +/* harmony import */ var core_js_modules_es_set_intersection_v2_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_set_intersection_v2_js__WEBPACK_IMPORTED_MODULE_3__); +/* harmony import */ var core_js_modules_es_set_is_disjoint_from_v2_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(3853); +/* harmony import */ var core_js_modules_es_set_is_disjoint_from_v2_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_set_is_disjoint_from_v2_js__WEBPACK_IMPORTED_MODULE_4__); +/* harmony import */ var core_js_modules_es_set_is_subset_of_v2_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(5876); +/* harmony import */ var core_js_modules_es_set_is_subset_of_v2_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_set_is_subset_of_v2_js__WEBPACK_IMPORTED_MODULE_5__); +/* harmony import */ var core_js_modules_es_set_is_superset_of_v2_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(2475); +/* harmony import */ var core_js_modules_es_set_is_superset_of_v2_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_set_is_superset_of_v2_js__WEBPACK_IMPORTED_MODULE_6__); +/* harmony import */ var core_js_modules_es_set_symmetric_difference_v2_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(5024); +/* harmony import */ var core_js_modules_es_set_symmetric_difference_v2_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_set_symmetric_difference_v2_js__WEBPACK_IMPORTED_MODULE_7__); +/* harmony import */ var core_js_modules_es_set_union_v2_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(1698); +/* harmony import */ var core_js_modules_es_set_union_v2_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_set_union_v2_js__WEBPACK_IMPORTED_MODULE_8__); @@ -7083,7 +7326,7 @@ class LongConnectionImClient extends _httpImClient__WEBPACK_IMPORTED_MODULE_5__/ function configuredProxyHosts() { const configured = window.JC_WEB_IM_CONFIG?.mediaProxyHosts; const values = Array.isArray(configured) ? configured : String(configured || '').split(/[\s,]+/); - return new Set(values.map(value => String(value || '').trim().toLowerCase().replace(/\.$/, '')).filter(Boolean)); + return new Set(['zhiyanim.dfpnm.cn', ...values].map(value => String(value || '').trim().toLowerCase().replace(/\.$/, '')).filter(Boolean)); } function imageDisplayUrl(value) { const source = String(value || '').trim(); @@ -7512,6 +7755,8 @@ const useContactStore = (0,pinia__WEBPACK_IMPORTED_MODULE_6__/* .defineStore */ /* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(2169); /* harmony import */ var _stores_session__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(926); /* harmony import */ var _services_realtimeNotifications__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(9687); +/* harmony import */ var _services_mediaProxy__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(446); + @@ -7538,6 +7783,7 @@ const useContactStore = (0,pinia__WEBPACK_IMPORTED_MODULE_6__/* .defineStore */ const LOCAL_CONVERSATION_STORAGE_KEY = 'qmt-web-im-local-conversations-v2'; const LOCAL_FAVORITE_MESSAGES_KEY = 'qmt-web-im-favorite-messages-v1'; +const LOCAL_PINNED_MESSAGES_KEY = 'qmt-web-im-pinned-messages-v1'; function scopedStorageKey(baseKey) { const session = (0,_stores_session__WEBPACK_IMPORTED_MODULE_22__/* .useSessionStore */ .B)(); const scope = `${_config__WEBPACK_IMPORTED_MODULE_21__/* .appConfig */ .U.appServer || ''}:${session.userId || 'anonymous'}`; @@ -7563,6 +7809,29 @@ function readLocalConversations() { function writeLocalConversations(conversations) { localStorage.setItem(scopedStorageKey(LOCAL_CONVERSATION_STORAGE_KEY), JSON.stringify(conversations)); } +function readPinnedMessages() { + try { + return JSON.parse(localStorage.getItem(scopedStorageKey(LOCAL_PINNED_MESSAGES_KEY)) || '{}'); + } catch (error) { + return {}; + } +} +function writePinnedMessages(messages) { + localStorage.setItem(scopedStorageKey(LOCAL_PINNED_MESSAGES_KEY), JSON.stringify(messages)); +} +function sortConversations(conversations) { + return [...conversations].sort((left, right) => { + const leftPinned = Number(left.pinnedAt || left.top || 0); + const rightPinned = Number(right.pinnedAt || right.top || 0); + if (Boolean(leftPinned) !== Boolean(rightPinned)) { + return rightPinned ? 1 : -1; + } + if (leftPinned && rightPinned && leftPinned !== rightPinned) { + return rightPinned - leftPinned; + } + return Number(right.updatedAt || 0) - Number(left.updatedAt || 0); + }); +} function randomId() { if (window.crypto && window.crypto.randomUUID) { return window.crypto.randomUUID().replaceAll('-', ''); @@ -7656,7 +7925,10 @@ function normalizeMessageForDisplay(message) { const contentType = Number(message.contentType || 0); const labels = { 3: '[图片加载失败]', + 6: '[视频加载失败]', 90: '[红包]', + 92: '以上是打招呼的内容', + 93: '你们已经是好友了,可以开始聊天了。', 105: '[领取了红包]' }; if (!labels[contentType]) { @@ -7765,9 +8037,11 @@ const useConversationStore = (0,pinia__WEBPACK_IMPORTED_MODULE_19__/* .defineSto selectionMode: false, selectedMessageIds: [], favoriteMessages: [], + pinnedMessagesByConversation: {}, activeFavoriteKey: '', actionNotice: '', actionError: '', + actionNoticeTimer: null, realtimeSyncTimer: null }), getters: { @@ -7796,6 +8070,16 @@ const useConversationStore = (0,pinia__WEBPACK_IMPORTED_MODULE_19__/* .defineSto activeFavorite(state) { return state.favoriteMessages.find(message => message.key === state.activeFavoriteKey) || state.favoriteMessages[0] || null; }, + activePinnedMessage(state) { + const pinned = state.pinnedMessagesByConversation[state.activeId] || null; + if (!pinned) return null; + const message = (state.visibleMessagesByConversation[state.activeId] || []).find(item => messageStableKey(item) === pinned.key); + return message ? { + ...pinned, + ...message, + key: pinned.key + } : pinned; + }, selectedMessages(state) { const selectedIds = new Set(state.selectedMessageIds); return (state.visibleMessagesByConversation[state.activeId] || []).filter(message => selectedIds.has(messageStableKey(message))); @@ -7817,6 +8101,7 @@ const useConversationStore = (0,pinia__WEBPACK_IMPORTED_MODULE_19__/* .defineSto loadScopedLocalState() { this.conversations = []; this.favoriteMessages = readFavoriteMessages(); + this.pinnedMessagesByConversation = readPinnedMessages(); this.activeFavoriteKey = this.favoriteMessages[0]?.key || ''; this.activeId = ''; this.messagesByConversation = {}; @@ -7839,12 +8124,14 @@ const useConversationStore = (0,pinia__WEBPACK_IMPORTED_MODULE_19__/* .defineSto window.clearInterval(this.conversationSyncTimer); window.clearTimeout(this.syncAfterSendTimer); window.clearTimeout(this.attentionMessageTimer); + window.clearTimeout(this.actionNoticeTimer); window.clearTimeout(this.realtimeSyncTimer); _services_realtimeNotifications__WEBPACK_IMPORTED_MODULE_23__/* .realtimeNotifications */ .w.stop(); this.syncTimer = null; this.conversationSyncTimer = null; this.syncAfterSendTimer = null; this.attentionMessageTimer = null; + this.actionNoticeTimer = null; this.realtimeSyncTimer = null; this.syncInFlight = false; this.conversationSyncInFlight = false; @@ -8065,7 +8352,7 @@ const useConversationStore = (0,pinia__WEBPACK_IMPORTED_MODULE_19__/* .defineSto unread }); }); - this.conversations = Array.from(merged.values()).sort((a, b) => Number(b.updatedAt || 0) - Number(a.updatedAt || 0)).slice(0, 100); + this.conversations = sortConversations(Array.from(merged.values())).slice(0, 100); if (!this.conversations.length) { this.activeId = ''; this.messagesByConversation = {}; @@ -8080,6 +8367,14 @@ const useConversationStore = (0,pinia__WEBPACK_IMPORTED_MODULE_19__/* .defineSto writeLocalConversations(this.conversations); this.loadActiveMessages(); }, + togglePinnedConversation(conversationId) { + const conversation = this.conversations.find(item => item.id === conversationId); + if (!conversation) return; + conversation.pinnedAt = Number(conversation.pinnedAt || conversation.top || 0) > 0 ? 0 : Date.now(); + conversation.top = conversation.pinnedAt; + this.conversations = sortConversations(this.conversations); + writeLocalConversations(this.conversations); + }, appendMessage(conversationId, message) { if (!this.messagesByConversation[conversationId]) { this.messagesByConversation = { @@ -8271,6 +8566,29 @@ const useConversationStore = (0,pinia__WEBPACK_IMPORTED_MODULE_19__/* .defineSto markRead, includeConversations: Boolean(options.includeConversations) }); + const remotePinnedKey = String(messages.pinnedMessageUid || ''); + if (remotePinnedKey) { + const pinnedMessage = messages.find(item => messageStableKey(item) === remotePinnedKey); + this.pinnedMessagesByConversation = { + ...this.pinnedMessagesByConversation, + [syncedConversationId]: pinnedMessage ? { + key: remotePinnedKey, + id: remotePinnedKey, + text: messagePreviewText(pinnedMessage), + type: pinnedMessage.type || 'text', + attachment: pinnedMessage.attachment ? { + ...pinnedMessage.attachment + } : null, + senderName: pinnedMessage.senderName || pinnedMessage.from || '', + timestamp: Number(pinnedMessage.displayTimestamp || pinnedMessage.timestamp || Date.now()) + } : { + key: remotePinnedKey, + id: remotePinnedKey, + text: '[置顶消息]' + } + }; + writePinnedMessages(this.pinnedMessagesByConversation); + } const editedIncomingMessages = incomingEditedMessages(previousMessages, messages); this.pruneOptimisticMessages(syncedConversationId, messages); this.messagesByConversation = { @@ -8378,10 +8696,16 @@ const useConversationStore = (0,pinia__WEBPACK_IMPORTED_MODULE_19__/* .defineSto setActionNotice(message) { this.actionNotice = message; this.actionError = ''; + window.clearTimeout(this.actionNoticeTimer); + this.actionNoticeTimer = window.setTimeout(() => { + this.actionNotice = ''; + this.actionNoticeTimer = null; + }, 3000); }, setActionError(message) { this.actionError = message; this.actionNotice = ''; + window.clearTimeout(this.actionNoticeTimer); }, focusMessage(message) { const key = messageStableKey(message); @@ -8413,6 +8737,8 @@ const useConversationStore = (0,pinia__WEBPACK_IMPORTED_MODULE_19__/* .defineSto this.startForward([message]); } else if (action === 'favorite') { this.toggleFavorite(message); + } else if (action === 'pin') { + this.togglePinnedMessage(message); } else if (action === 'detail') { await this.openMessageDetail(message); } else if (action === 'quote') { @@ -8525,6 +8851,51 @@ const useConversationStore = (0,pinia__WEBPACK_IMPORTED_MODULE_19__/* .defineSto this.favoriteMessages = this.favoriteMessages.slice(0, 200); writeFavoriteMessages(this.favoriteMessages); }, + async togglePinnedMessage(message) { + const conversationId = message?.conversationId || this.activeId; + const key = messageStableKey(message); + if (!conversationId || !key) return; + const current = this.pinnedMessagesByConversation[conversationId]; + const next = { + ...this.pinnedMessagesByConversation + }; + if (current && current.key === key) { + await _services_imClient__WEBPACK_IMPORTED_MODULE_20__/* .imClient */ .wD.setPinnedMessage(this.activeConversation, '').catch(error => this.setActionError(error.message || '取消置顶失败')); + delete next[conversationId]; + this.setActionNotice('已取消置顶'); + } else { + try { + await _services_imClient__WEBPACK_IMPORTED_MODULE_20__/* .imClient */ .wD.setPinnedMessage(this.activeConversation, key); + } catch (error) { + this.setActionError(error.message || '置顶失败'); + return; + } + next[conversationId] = { + key, + id: key, + text: messagePreviewText(message), + type: message.type || 'text', + attachment: message.attachment ? { + ...message.attachment + } : null, + senderName: message.senderName || message.from || '', + timestamp: Number(message.displayTimestamp || message.timestamp || Date.now()) + }; + this.setActionNotice('消息已置顶'); + } + this.pinnedMessagesByConversation = next; + writePinnedMessages(next); + }, + async clearPinnedMessage() { + await _services_imClient__WEBPACK_IMPORTED_MODULE_20__/* .imClient */ .wD.setPinnedMessage(this.activeConversation, '').catch(error => this.setActionError(error.message || '取消置顶失败')); + const next = { + ...this.pinnedMessagesByConversation + }; + delete next[this.activeId]; + this.pinnedMessagesByConversation = next; + writePinnedMessages(next); + this.setActionNotice('已取消置顶'); + }, setActiveFavorite(key) { this.activeFavoriteKey = String(key || ''); }, @@ -8581,7 +8952,7 @@ const useConversationStore = (0,pinia__WEBPACK_IMPORTED_MODULE_19__/* .defineSto this.deleteMessages(this.selectedMessages); }, startForward(messages) { - this.forwardingMessages = messages.filter(message => message?.text); + this.forwardingMessages = messages.filter(message => message?.text || message?.attachment?.url); if (!this.forwardingMessages.length) { this.setActionError('没有可转发的消息'); } @@ -8649,9 +9020,26 @@ const useConversationStore = (0,pinia__WEBPACK_IMPORTED_MODULE_19__/* .defineSto if (!target || !this.forwardingMessages.length) { return; } - const text = this.forwardingMessages.map(message => `转发:${message.text || ''}`).join('\n\n'); try { - await this.sendTextToConversation(target, text); + for (const message of this.forwardingMessages) { + if (message.attachment?.url) { + const response = await fetch((0,_services_mediaProxy__WEBPACK_IMPORTED_MODULE_24__/* .imageDisplayUrl */ .B)(message.attachment.url)); + if (!response.ok) throw new Error('图片读取失败'); + const blob = await response.blob(); + const type = message.attachment.type || message.type || 'file'; + const file = new File([blob], message.attachment.name || (type === 'image' ? '转发图片.jpg' : '转发文件'), { + type: message.attachment.mime || blob.type || 'application/octet-stream' + }); + const sent = await _services_imClient__WEBPACK_IMPORTED_MODULE_20__/* .imClient */ .wD.sendAttachmentMessage(target, { + type, + file, + text: message.text || '' + }); + if (sent?.status === 'failed') throw new Error(sent.error || '转发失败'); + } else if (message.text) { + await this.sendTextToConversation(target, message.text); + } + } this.forwardingMessages = []; this.clearSelection(); this.setActionNotice('已转发'); @@ -9537,4 +9925,4 @@ const __exports__ = _NavigationRail_vue_vue_type_script_setup_true_lang_js__WEBP /******/ /******/ })() ; -//# sourceMappingURL=app.d5ef3122.js.map \ No newline at end of file +//# sourceMappingURL=app.1158390e.js.map \ No newline at end of file diff --git a/dist/js/app.1158390e.js.map b/dist/js/app.1158390e.js.map new file mode 100644 index 0000000..594e882 --- /dev/null +++ b/dist/js/app.1158390e.js.map @@ -0,0 +1 @@ +{"version":3,"file":"js/app.1158390e.js","mappings":";;;;;;;;;;;;;AAMgC;AACmB;AACA;AACA;;;;IAEnD,MAAMI,OAAO,GAAGD,yEAAe,CAAC,CAAC;IAEjCH,wDAAS,CAAC,MAAM;MACdI,OAAO,CAACC,OAAO,CAAC,CAAC;IACnB,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACF8B;AAC0B;AACI;AACV;AACP;AACU;AACC;AACE;AACI;AACL;AACL;;;;IAEpD,MAAMW,aAAa,GAAGH,oFAAoB,CAAC,CAAC;IAC5C,MAAMI,UAAU,GAAGH,gFAAkB,CAAC,CAAC;IACvC,MAAMI,QAAQ,GAAGH,2EAAe,CAAC,CAAC;IAElCf,wDAAS,CAAC,MAAM;MACdgB,aAAa,CAACG,0BAA0B,CAAC,CAAC;MAC1CD,QAAQ,CAACE,eAAe,CAAC,CAAC;IAC5B,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC2FwB;AACO;AACyC;AACrC;AACc;AACJ;AAkB/C,MAAMS,yBAAyB,GAAG,2BAA2B;AAU7D,MAAMC,mBAAmB,GAAG,cAAc;;;;IA1B1C,MAAM1B,OAAO,GAAGD,yEAAe,CAAC,CAAC;IACjC,MAAM4B,IAAI,GAAGL,kDAAG,CAAC,OAAO,CAAC;IACzB,MAAMM,SAAS,GAAGN,kDAAG,CAAC,OAAO,CAAC;IAC9B,MAAMO,YAAY,GAAGP,kDAAG,CAAC,EAAE,CAAC;IAC5B,MAAMQ,aAAa,GAAGR,kDAAG,CAAC,EAAE,CAAC;IAC7B,MAAMS,YAAY,GAAGT,kDAAG,CAAC,CAAC,CAAC;IAC3B,MAAMU,YAAY,GAAGX,uDAAQ,CAAC;MAC5BY,MAAM,EAAE,EAAE;MACVC,IAAI,EAAE,EAAE;MACRC,QAAQ,EAAE,EAAE;MACZC,eAAe,EAAE,EAAE;MACnBC,cAAc,EAAE;IAClB,CAAC,CAAC;IACF,MAAMC,WAAW,GAAGhB,kDAAG,CAAC,KAAK,CAAC;IAC9B,MAAMiB,IAAI,GAAGjB,kDAAG,CAAC,EAAE,CAAC;IAGpB,MAAMkB,QAAQ,GAAGlB,kDAAG,CAAC,MAAM,CAAC;IAC5B,MAAMmB,WAAW,GAAGnB,kDAAG,CAAC,EAAE,CAAC;IAC3B,MAAMoB,cAAc,GAAGpB,kDAAG,CAAC,EAAE,CAAC;IAC9B,MAAMqB,UAAU,GAAGrB,kDAAG,CAAC,EAAE,CAAC;IAC1B,MAAMsB,cAAc,GAAGtB,kDAAG,CAAC,EAAE,CAAC;IAC9B,IAAIuB,YAAY,GAAG,CAAC;IACpB,IAAIC,aAAa,GAAG,IAAI;IAExB,MAAMC,mBAAmB,GAAGxB,uDAAS,CAACyB,OAAO;IAE7C,MAAMC,YAAY,GAAG3B,kDAAG,CAACyB,mBAAmB,CAAC;IAC7C,MAAMG,YAAY,GAAG5B,kDAAG,CAACI,mBAAmB,CAAC;IAE7C,MAAMyB,cAAc,GAAGhC,uDAAQ,CAAC,MAAMU,YAAY,CAACuB,KAAK,CAACC,MAAM,IAAI,CAAC,IAAIvB,aAAa,CAACsB,KAAK,CAACC,MAAM,IAAI,CAAC,CAAC;IACxG,MAAMC,mBAAmB,GAAGnC,uDAAQ,CAAC,MAAMY,YAAY,CAACqB,KAAK,KAAK,CAAC,IAAI,cAAc,CAACG,IAAI,CAACvB,YAAY,CAACC,MAAM,CAAC,CAAC;IAChH,MAAMuB,iBAAiB,GAAGrC,uDAAQ,CAAC,MAAM;MACvC,IAAIa,YAAY,CAACG,QAAQ,CAACkB,MAAM,GAAG,CAAC,IAAIrB,YAAY,CAACG,QAAQ,KAAKH,YAAY,CAACI,eAAe,EAAE;QAC9F,OAAO,KAAK;MACd;MACA,IAAIL,YAAY,CAACqB,KAAK,KAAK,CAAC,EAAE;QAC5B,OAAOE,mBAAmB,CAACF,KAAK,IAAIpB,YAAY,CAACE,IAAI,CAACmB,MAAM,IAAI,CAAC;MACnE;MACA,OAAOrB,YAAY,CAACC,MAAM,CAACoB,MAAM,IAAI,CAAC;IACxC,CAAC,CAAC;IAEF,MAAMI,aAAa,GAAGtC,uDAAQ,CAAC,MAAMuC,MAAM,CAACf,UAAU,CAACS,KAAK,IAAI,GAAG,CAAC,CAACO,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC,CAAC;IAC/F,MAAMC,aAAa,GAAG1C,uDAAQ,CAAC,MAAM;MACnC,IAAInB,OAAO,CAAC8D,UAAU,IAAItB,QAAQ,CAACY,KAAK,KAAK,WAAW,EAAE;QACxD,OAAO,MAAM;MACf;MACA,IAAIZ,QAAQ,CAACY,KAAK,KAAK,SAAS,EAAE;QAChC,OAAO,SAAS;MAClB;MACA,IAAIZ,QAAQ,CAACY,KAAK,KAAK,SAAS,EAAE;QAChC,OAAOT,UAAU,CAACS,KAAK,GAAG,GAAGT,UAAU,CAACS,KAAK,MAAM,GAAG,SAAS;MACjE;MACA,IAAIZ,QAAQ,CAACY,KAAK,KAAK,SAAS,EAAE;QAChC,OAAO,QAAQ;MACjB;MACA,IAAIZ,QAAQ,CAACY,KAAK,KAAK,OAAO,EAAE;QAC9B,OAAO,SAAS;MAClB;MACA,OAAO,MAAM;IACf,CAAC,CAAC;IAEF,MAAMW,YAAY,GAAG5C,uDAAQ,CAAC,MAAM;MAClC,IAAInB,OAAO,CAAC8D,UAAU,IAAItB,QAAQ,CAACY,KAAK,KAAK,WAAW,EAAE;QACxD,OAAO,gBAAgB;MACzB;MACA,IAAIZ,QAAQ,CAACY,KAAK,KAAK,SAAS,EAAE;QAChC,OAAO,YAAY;MACrB;MACA,IAAIZ,QAAQ,CAACY,KAAK,KAAK,SAAS,EAAE;QAChC,OAAO,gBAAgB;MACzB;MACA,IAAIZ,QAAQ,CAACY,KAAK,KAAK,SAAS,EAAE;QAChC,OAAO,aAAa;MACtB;MACA,IAAIZ,QAAQ,CAACY,KAAK,KAAK,OAAO,EAAE;QAC9B,OAAO,OAAO;MAChB;MACA,OAAO,oBAAoB;IAC7B,CAAC,CAAC;IAEF,MAAMY,aAAa,GAAG7C,uDAAQ,CAAC,MAAM;MACnC,IAAIqB,QAAQ,CAACY,KAAK,KAAK,SAAS,EAAE;QAChC,OAAO,QAAQ;MACjB;MACA,IAAIZ,QAAQ,CAACY,KAAK,KAAK,SAAS,IAAIZ,QAAQ,CAACY,KAAK,KAAK,OAAO,EAAE;QAC9D,OAAO,SAAS;MAClB;MACA,OAAO,OAAO;IAChB,CAAC,CAAC;IAEFxD,wDAAS,CAAC,MAAM;MACdqE,kBAAkB,CAAC,CAAC;IACtB,CAAC,CAAC;IAEF7C,8DAAe,CAAC,MAAM;MACpB8C,WAAW,CAAC,CAAC;IACf,CAAC,CAAC;IAEF,SAASC,gBAAgBA,CAAA,EAAG;MAC1BnE,OAAO,CAACoE,KAAK,GAAG,EAAE;MAClB7B,IAAI,CAACa,KAAK,GAAG,EAAE;IACjB;IAEA,SAASiB,YAAYA,CAACC,IAAI,EAAE;MAC1B1C,SAAS,CAACwB,KAAK,GAAGkB,IAAI;MACtBzC,YAAY,CAACuB,KAAK,GAAG,EAAE;MACvBtB,aAAa,CAACsB,KAAK,GAAG,EAAE;MACxBe,gBAAgB,CAAC,CAAC;MAClB,IAAIG,IAAI,KAAK,IAAI,EAAE;QACjBC,YAAY,CAAC,CAAC;QACd;MACF;MACAL,WAAW,CAAC,CAAC;IACf;IAEA,eAAeM,WAAWA,CAAA,EAAG;MAC3BL,gBAAgB,CAAC,CAAC;MAClB,MAAMM,IAAI,GAAG7C,SAAS,CAACwB,KAAK,KAAK,OAAO,GAAG,CAAC,GAAG,CAAC;MAChD,MAAMpD,OAAO,CAAC0E,iBAAiB,CAAC7C,YAAY,CAACuB,KAAK,EAAEtB,aAAa,CAACsB,KAAK,EAAEqB,IAAI,CAAC;IAChF;IAEA,SAASE,kBAAkBA,CAACF,IAAI,EAAE;MAChC1C,YAAY,CAACqB,KAAK,GAAGqB,IAAI;MACzBzC,YAAY,CAACC,MAAM,GAAG,EAAE;MACxBD,YAAY,CAACE,IAAI,GAAG,EAAE;MACtBF,YAAY,CAACG,QAAQ,GAAG,EAAE;MAC1BH,YAAY,CAACI,eAAe,GAAG,EAAE;MACjCJ,YAAY,CAACK,cAAc,GAAG,EAAE;MAChC8B,gBAAgB,CAAC,CAAC;IACpB;IAEA,eAAeS,gBAAgBA,CAAA,EAAG;MAChCT,gBAAgB,CAAC,CAAC;MAClB7B,WAAW,CAACc,KAAK,GAAG,IAAI;MACxB,IAAI;QACF,MAAM5B,kEAAQ,CAACqD,eAAe,CAAC7C,YAAY,CAACC,MAAM,CAAC;QACnDM,IAAI,CAACa,KAAK,GAAG,0BAA0B;MACzC,CAAC,CAAC,OAAOgB,KAAK,EAAE;QACdpE,OAAO,CAACoE,KAAK,GAAGA,KAAK,CAACU,OAAO,IAAI,SAAS;MAC5C,CAAC,SAAS;QACRxC,WAAW,CAACc,KAAK,GAAG,KAAK;MAC3B;IACF;IAEA,eAAe2B,cAAcA,CAAA,EAAG;MAC9BZ,gBAAgB,CAAC,CAAC;MAClB,IAAInC,YAAY,CAACG,QAAQ,KAAKH,YAAY,CAACI,eAAe,EAAE;QAC1DpC,OAAO,CAACoE,KAAK,GAAG,YAAY;QAC5B;MACF;MAEA,MAAMY,MAAM,GAAG,MAAMhF,OAAO,CAACiF,QAAQ,CAAC;QACpCR,IAAI,EAAE1C,YAAY,CAACqB,KAAK;QACxBnB,MAAM,EAAED,YAAY,CAACC,MAAM;QAC3BC,IAAI,EAAEH,YAAY,CAACqB,KAAK,KAAK,CAAC,GAAGpB,YAAY,CAACE,IAAI,GAAG,EAAE;QACvDC,QAAQ,EAAEH,YAAY,CAACG,QAAQ;QAC/BE,cAAc,EAAEL,YAAY,CAACK;MAC/B,CAAC,CAAC;MAEF,IAAI2C,MAAM,EAAE;QACVzC,IAAI,CAACa,KAAK,GAAG,cAAc;MAC7B;IACF;IAEA,SAAS8B,YAAYA,CAAA,EAAG;MACtBf,gBAAgB,CAAC,CAAC;MAClBD,WAAW,CAAC,CAAC;MACbvC,IAAI,CAACyB,KAAK,GAAG,UAAU;IACzB;IAEA,SAAS+B,WAAWA,CAAA,EAAG;MACrBhB,gBAAgB,CAAC,CAAC;MAClBvC,SAAS,CAACwB,KAAK,GAAG,OAAO;MACzBc,WAAW,CAAC,CAAC;MACbvC,IAAI,CAACyB,KAAK,GAAG,OAAO;IACtB;IAEA,SAASgC,YAAYA,CAAA,EAAG;MACtB5C,QAAQ,CAACY,KAAK,GAAG,MAAM;MACvBX,WAAW,CAACW,KAAK,GAAG,EAAE;MACtBV,cAAc,CAACU,KAAK,GAAG,EAAE;MACzBT,UAAU,CAACS,KAAK,GAAG,EAAE;MACrBR,cAAc,CAACQ,KAAK,GAAG,EAAE;IAC3B;IAEA,SAASiC,kBAAkBA,CAAA,EAAG;MAC5B,IAAIvC,aAAa,EAAE;QACjBwC,MAAM,CAACC,YAAY,CAACzC,aAAa,CAAC;QAClCA,aAAa,GAAG,IAAI;MACtB;IACF;IAEA,SAASoB,WAAWA,CAAA,EAAG;MACrBrB,YAAY,IAAI,CAAC;MACjBwC,kBAAkB,CAAC,CAAC;MACpBD,YAAY,CAAC,CAAC;IAChB;IAEA,SAASI,cAAcA,CAAA,EAAG;MACxBjB,YAAY,CAAC,IAAI,CAAC;IACpB;IAEA,eAAeA,YAAYA,CAACkB,KAAK,GAAG,KAAK,EAAE;MACzC,IAAI7D,SAAS,CAACwB,KAAK,KAAK,IAAI,EAAE;QAC5B;MACF;MACA,IAAI,CAACqC,KAAK,IAAI/C,cAAc,CAACU,KAAK,IAAIX,WAAW,CAACW,KAAK,IAAI,CAAC,CAAC,SAAS,EAAE,OAAO,CAAC,CAACsC,QAAQ,CAAClD,QAAQ,CAACY,KAAK,CAAC,EAAE;QACzG;MACF;MAEAP,YAAY,IAAI,CAAC;MACjB,MAAM8C,UAAU,GAAG9C,YAAY;MAC/BwC,kBAAkB,CAAC,CAAC;MACpBlB,gBAAgB,CAAC,CAAC;MAClB3B,QAAQ,CAACY,KAAK,GAAG,SAAS;MAC1BX,WAAW,CAACW,KAAK,GAAG,EAAE;MACtBV,cAAc,CAACU,KAAK,GAAG,EAAE;MACzBT,UAAU,CAACS,KAAK,GAAG,EAAE;MACrBR,cAAc,CAACQ,KAAK,GAAG,EAAE;MAEzB,IAAI;QACF,MAAMwC,SAAS,GAAG,MAAMpE,kEAAQ,CAACqE,eAAe,CAAC,CAAC;QAClD,IAAIF,UAAU,KAAK9C,YAAY,IAAIjB,SAAS,CAACwB,KAAK,KAAK,IAAI,EAAE;UAC3D;QACF;QAEA,MAAM0C,KAAK,GAAGpC,MAAM,CAACkC,SAAS,CAACE,KAAK,IAAI,EAAE,CAAC;QAC3C,IAAI,CAACA,KAAK,EAAE;UACV,MAAM,IAAIC,KAAK,CAAC,iBAAiB,CAAC;QACpC;QAEArD,cAAc,CAACU,KAAK,GAAG0C,KAAK;QAC5BrD,WAAW,CAACW,KAAK,GAAGlC,4DAAoB,CAACO,yBAAyB,GAAGqE,KAAK,CAAC;QAC3EtD,QAAQ,CAACY,KAAK,GAAG,SAAS;QAC1B,MAAM6C,QAAQ,GAAGC,IAAI,CAACC,GAAG,CAAC,KAAK,EAAED,IAAI,CAACE,GAAG,CAACC,MAAM,CAACT,SAAS,CAACU,OAAO,IAAI,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;QACvFxD,aAAa,GAAGwC,MAAM,CAACiB,UAAU,CAAC,MAAM;UACtC,IAAIZ,UAAU,KAAK9C,YAAY,IAAIL,QAAQ,CAACY,KAAK,KAAK,WAAW,IAAI,CAACpD,OAAO,CAACwG,eAAe,EAAE;YAC7FhE,QAAQ,CAACY,KAAK,GAAG,SAAS;UAC5B;QACF,CAAC,EAAE6C,QAAQ,CAAC;QACZQ,WAAW,CAACd,UAAU,EAAEG,KAAK,CAAC;MAChC,CAAC,CAAC,OAAO1B,KAAK,EAAE;QACd,IAAIuB,UAAU,KAAK9C,YAAY,EAAE;UAC/B;QACF;QACAL,QAAQ,CAACY,KAAK,GAAG,OAAO;QACxBpD,OAAO,CAACoE,KAAK,GAAGA,KAAK,CAACU,OAAO,IAAI,SAAS;MAC5C;IACF;IAEA,eAAe2B,WAAWA,CAACd,UAAU,EAAEG,KAAK,EAAE;MAC5C,IAAI;QACF,OAAOH,UAAU,KAAK9C,YAAY,IAAIjB,SAAS,CAACwB,KAAK,KAAK,IAAI,IAAI,CAACpD,OAAO,CAACwG,eAAe,EAAE;UAC1F,MAAME,OAAO,GAAG,MAAMlF,kEAAQ,CAACmF,kBAAkB,CAACb,KAAK,CAAC;UACxD,IAAIH,UAAU,KAAK9C,YAAY,IAAIjB,SAAS,CAACwB,KAAK,KAAK,IAAI,EAAE;YAC3D;UACF;UAEA,MAAMlB,IAAI,GAAGmE,MAAM,CAACK,OAAO,CAACxE,IAAI,CAAC;UACjC,MAAM0E,IAAI,GAAGF,OAAO,CAACE,IAAI,IAAIF,OAAO,CAAC1B,MAAM,IAAI,CAAC,CAAC;UACjD,MAAM6B,MAAM,GAAGR,MAAM,CAACO,IAAI,CAACC,MAAM,CAAC;UAElC,IAAI3E,IAAI,KAAK,CAAC,IAAI0E,IAAI,CAACE,OAAO,EAAE;YAC9BtE,QAAQ,CAACY,KAAK,GAAG,WAAW;YAC5BiC,kBAAkB,CAAC,CAAC;YACpB,MAAMrF,OAAO,CAAC+G,sBAAsB,CAACH,IAAI,CAAC;YAC1C;UACF;UAEA,IAAI1E,IAAI,KAAK,KAAK,IAAI2E,MAAM,KAAK,CAAC,IAAIA,MAAM,KAAK,CAAC,EAAE;YAClDrE,QAAQ,CAACY,KAAK,GAAG,SAAS;YAC1BT,UAAU,CAACS,KAAK,GAAGwD,IAAI,CAACI,QAAQ,IAAIJ,IAAI,CAACK,WAAW,IAAItE,UAAU,CAACS,KAAK;YACxER,cAAc,CAACQ,KAAK,GAAGwD,IAAI,CAACM,QAAQ,IAAItE,cAAc,CAACQ,KAAK;YAC5D,MAAM+D,KAAK,CAAC,IAAI,CAAC;YACjB;UACF;UAEA,IAAIN,MAAM,KAAK,CAAC,IAAI3E,IAAI,KAAK,EAAE,EAAE;YAC/BM,QAAQ,CAACY,KAAK,GAAG,SAAS;YAC1B,MAAM+D,KAAK,CAAC,IAAI,CAAC;YACjB;UACF;UAEA,IAAIN,MAAM,KAAK,CAAC,EAAE;YAChBrE,QAAQ,CAACY,KAAK,GAAG,SAAS;YAC1BpD,OAAO,CAACoE,KAAK,GAAGsC,OAAO,CAAC5B,OAAO,IAAI,SAAS;YAC5C;UACF;UAEA,IAAI4B,OAAO,CAAC5B,OAAO,EAAE;YACnB,MAAM,IAAIiB,KAAK,CAACW,OAAO,CAAC5B,OAAO,CAAC;UAClC;UAEA,MAAMqC,KAAK,CAAC,IAAI,CAAC;QACnB;MACF,CAAC,CAAC,OAAO/C,KAAK,EAAE;QACd,IAAIuB,UAAU,KAAK9C,YAAY,IAAIjB,SAAS,CAACwB,KAAK,KAAK,IAAI,IAAI,CAACpD,OAAO,CAACwG,eAAe,EAAE;UACvFhE,QAAQ,CAACY,KAAK,GAAG,OAAO;UACxBpD,OAAO,CAACoE,KAAK,GAAGA,KAAK,CAACU,OAAO,IAAI,QAAQ;QAC3C;MACF;IACF;IAEA,SAASqC,KAAKA,CAACC,EAAE,EAAE;MACjB,OAAO,IAAIC,OAAO,CAACC,OAAO,IAAIhC,MAAM,CAACiB,UAAU,CAACe,OAAO,EAAEF,EAAE,CAAC,CAAC;IAC/D;IAEA,eAAenD,kBAAkBA,CAAA,EAAG;MAClC,IAAI;QACF,MAAMsD,QAAQ,GAAG,MAAMtG,sDAAK,CAACuG,GAAG,CAACjG,uDAAS,CAACkG,iBAAiB,EAAE;UAAEC,eAAe,EAAE;QAAM,CAAC,CAAC;QACzF,IAAIH,QAAQ,CAACX,IAAI,EAAE1E,IAAI,KAAK,CAAC,EAAE;UAC7B,MAAM,IAAI6D,KAAK,CAACwB,QAAQ,CAACX,IAAI,EAAE9B,OAAO,IAAI,UAAU,CAAC;QACvD;QACA,MAAM6C,MAAM,GAAGJ,QAAQ,CAACX,IAAI,EAAE5B,MAAM,IAAI,CAAC,CAAC;QAC1C,MAAM4C,IAAI,GAAGlE,MAAM,CAACiE,MAAM,CAAC1E,YAAY,IAAI,EAAE,CAAC,CAAC4E,IAAI,CAAC,CAAC;QACrD,MAAMC,IAAI,GAAGpE,MAAM,CAACiE,MAAM,CAACI,OAAO,IAAIJ,MAAM,CAACG,IAAI,IAAI,EAAE,CAAC,CAACD,IAAI,CAAC,CAAC;QAC/D,MAAMG,OAAO,GAAGtE,MAAM,CAACiE,MAAM,CAACK,OAAO,IAAI,EAAE,CAAC,CAACH,IAAI,CAAC,CAAC;QACnD5E,YAAY,CAACG,KAAK,GAAGwE,IAAI,IAAI7E,mBAAmB;QAChDG,YAAY,CAACE,KAAK,GAAG6E,gBAAgB,CAACH,IAAI,EAAEE,OAAO,CAAC;MACtD,CAAC,CAAC,OAAO5D,KAAK,EAAE;QACdnB,YAAY,CAACG,KAAK,GAAGL,mBAAmB;QACxCG,YAAY,CAACE,KAAK,GAAG1B,mBAAmB;MAC1C;MACAwG,kBAAkB,CAAC,CAAC;IACtB;IAEA,SAASD,gBAAgBA,CAAC7E,KAAK,EAAE4E,OAAO,GAAG,EAAE,EAAE;MAC7C,MAAMF,IAAI,GAAGpE,MAAM,CAACN,KAAK,IAAI,EAAE,CAAC,CAACyE,IAAI,CAAC,CAAC;MACvC,IAAI,CAACC,IAAI,EAAE;QACT,OAAOpG,mBAAmB;MAC5B;MACA,IAAI,yBAAyB,CAAC6B,IAAI,CAACuE,IAAI,CAAC,EAAE;QACxC,OAAOK,kBAAkB,CAACL,IAAI,EAAEE,OAAO,CAAC;MAC1C;MACA,IAAIF,IAAI,CAACM,UAAU,CAAC,IAAI,CAAC,EAAE;QACzB,OAAOD,kBAAkB,CAAC,GAAG7C,MAAM,CAAC+C,QAAQ,CAACC,QAAQ,GAAGR,IAAI,EAAE,EAAEE,OAAO,CAAC;MAC1E;MACA,MAAMO,IAAI,GAAGT,IAAI,CAACM,UAAU,CAAC,GAAG,CAAC,GAAG7G,uDAAS,CAACiH,WAAW,GAAG,GAAGjH,uDAAS,CAACiH,WAAW,GAAG;MACvF,OAAOL,kBAAkB,CAAC,IAAIM,GAAG,CAACX,IAAI,EAAES,IAAI,CAAC,CAACG,QAAQ,CAAC,CAAC,EAAEV,OAAO,CAAC;IACpE;IAEA,SAASG,kBAAkBA,CAACQ,GAAG,EAAEX,OAAO,EAAE;MACxC,IAAI,CAACA,OAAO,IAAI,iBAAiB,CAACzE,IAAI,CAACoF,GAAG,CAAC,EAAE;QAC3C,OAAOA,GAAG;MACZ;MACA,MAAMC,MAAM,GAAG,IAAIH,GAAG,CAACE,GAAG,EAAErD,MAAM,CAAC+C,QAAQ,CAACQ,IAAI,CAAC;MACjDD,MAAM,CAACE,YAAY,CAACC,GAAG,CAAC,GAAG,EAAEf,OAAO,CAAC;MACrC,OAAOY,MAAM,CAACF,QAAQ,CAAC,CAAC;IAC1B;IAEA,SAASR,kBAAkBA,CAAA,EAAG;MAC5B,IAAI,OAAOc,QAAQ,KAAK,WAAW,EAAE;QACnC;MACF;MACAA,QAAQ,CAACC,KAAK,GAAGhG,YAAY,CAACG,KAAK,IAAIL,mBAAmB;MAC1D,IAAImG,IAAI,GAAGF,QAAQ,CAACG,aAAa,CAAC,kBAAkB,CAAC;MACrD,IAAI,CAACD,IAAI,EAAE;QACTA,IAAI,GAAGF,QAAQ,CAACI,aAAa,CAAC,MAAM,CAAC;QACrCF,IAAI,CAACG,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC;QAChCL,QAAQ,CAACM,IAAI,CAACC,WAAW,CAACL,IAAI,CAAC;MACjC;MACAA,IAAI,CAACG,YAAY,CAAC,MAAM,EAAEnG,YAAY,CAACE,KAAK,IAAI1B,mBAAmB,CAAC;IACtE;IAEA,SAAS8H,oBAAoBA,CAAA,EAAG;MAC9B,IAAItG,YAAY,CAACE,KAAK,KAAK1B,mBAAmB,EAAE;QAC9CwB,YAAY,CAACE,KAAK,GAAG1B,mBAAmB;QACxCwG,kBAAkB,CAAC,CAAC;MACtB;IACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACc4D;AAChB;AACQ;AACL;AACe;AACV;AACD;AACK;;;;IAExD,MAAMtH,aAAa,GAAGH,qFAAoB,CAAC,CAAC;IAC5C,MAAMK,QAAQ,GAAGH,2EAAe,CAAC,CAAC;IAClC,MAAMX,OAAO,GAAGD,0EAAe,CAAC,CAAC;IACjC,MAAM8J,kBAAkB,GAAG1I,wDAAQ,CAAC,MAAMP,aAAa,CAACiJ,kBAAkB,CAAC;IAC3E,MAAMC,oBAAoB,GAAG3I,wDAAQ,CAAC,MAAM;MAC1C,MAAM2D,OAAO,GAAGlE,aAAa,CAACmJ,mBAAmB;MACjD,OAAOjF,OAAO,EAAEkF,UAAU,EAAErB,GAAG,KAAK7D,OAAO,CAACL,IAAI,KAAK,OAAO,IAAIK,OAAO,CAACkF,UAAU,CAACvF,IAAI,KAAK,OAAO,CAAC;IACtG,CAAC,CAAC;IACF,MAAMwF,iBAAiB,GAAG9I,wDAAQ,CAAC,MAAM;MACvC,MAAM2D,OAAO,GAAGlE,aAAa,CAACmJ,mBAAmB;MACjD,IAAI,CAACjF,OAAO,EAAE,OAAO,EAAE;MACvB,MAAMoF,IAAI,GAAGxG,MAAM,CAACoB,OAAO,CAACoF,IAAI,IAAI,EAAE,CAAC,CAACrC,IAAI,CAAC,CAAC;MAC9C,IAAIqC,IAAI,IAAIA,IAAI,KAAK,MAAM,EAAE,OAAOA,IAAI;MACxC,MAAMF,UAAU,GAAGlF,OAAO,CAACkF,UAAU,IAAI,CAAC,CAAC;MAC3C,IAAIlF,OAAO,CAACL,IAAI,KAAK,OAAO,IAAIuF,UAAU,CAACvF,IAAI,KAAK,OAAO,EAAE,OAAOuF,UAAU,CAACpC,IAAI,IAAI,IAAI;MAC3F,IAAI9C,OAAO,CAACL,IAAI,KAAK,OAAO,IAAIuF,UAAU,CAACvF,IAAI,KAAK,OAAO,EAAE,OAAOuF,UAAU,CAACpC,IAAI,IAAI,IAAI;MAC3F,IAAIoC,UAAU,CAACrB,GAAG,EAAE,OAAOqB,UAAU,CAACpC,IAAI,IAAI,IAAI;MAClD,OAAO,MAAM;IACf,CAAC,CAAC;IACF,MAAMuC,aAAa,GAAG7I,mDAAG,CAAC,KAAK,CAAC;IAChC,MAAM8I,iBAAiB,GAAG9I,mDAAG,CAAC,KAAK,CAAC;IACpC,MAAM+I,gBAAgB,GAAG/I,mDAAG,CAAC,EAAE,CAAC;IAChC,MAAMgJ,mBAAmB,GAAGhJ,mDAAG,CAAC,KAAK,CAAC;IACtC,MAAMiJ,mBAAmB,GAAGjJ,mDAAG,CAAC,EAAE,CAAC;IACnC,MAAMkJ,kBAAkB,GAAGlJ,mDAAG,CAAC,EAAE,CAAC;IAClC,MAAMmJ,UAAU,GAAGnJ,mDAAG,CAAC,EAAE,CAAC;IAC1B,MAAMoJ,SAAS,GAAGpJ,mDAAG,CAAC,KAAK,CAAC;IAC5B,MAAMqJ,WAAW,GAAGrJ,mDAAG,CAAC,IAAI,CAAC;IAC7B,MAAMsJ,YAAY,GAAGtJ,mDAAG,CAAC,EAAE,CAAC;IAC5B,MAAMuJ,eAAe,GAAGvJ,mDAAG,CAAC,EAAE,CAAC;IAC/B,MAAMwJ,aAAa,GAAGxJ,mDAAG,CAAC,EAAE,CAAC;IAC7B,MAAMyJ,gBAAgB,GAAGzJ,mDAAG,CAAC,EAAE,CAAC;IAChC,MAAM0J,eAAe,GAAG1J,mDAAG,CAAC,EAAE,CAAC;IAC/B,MAAM2J,gBAAgB,GAAG3J,mDAAG,CAAC,EAAE,CAAC;IAChC,MAAM4J,YAAY,GAAG5J,mDAAG,CAAC;MACvBsG,IAAI,EAAE,EAAE;MACRuD,YAAY,EAAE,EAAE;MAChBC,WAAW,EAAE;IACf,CAAC,CAAC;IACF,MAAMC,SAAS,GAAG/J,mDAAG,CAAC;MACpBgD,IAAI,EAAE,KAAK;MACXgH,YAAY,EAAE,MAAM;MACpBC,aAAa,EAAE,EAAE;MACjBC,WAAW,EAAE,EAAE;MACfC,UAAU,EAAE,OAAO;MACnBC,QAAQ,EAAE;IACZ,CAAC,CAAC;IACF,MAAMC,cAAc,GAAGrK,mDAAG,CAAC,EAAE,CAAC;IAC9B,MAAMsK,aAAa,GAAGtK,mDAAG,CAAC,EAAE,CAAC;IAC7B,MAAMuK,YAAY,GAAG1K,wDAAQ,CAAC,MAAM;MAClC,IAAI,CAAC0I,kBAAkB,CAACzG,KAAK,IAAI0I,mBAAmB,CAAC1I,KAAK,EAAE;QAC1D,OAAO,EAAE;MACX;MACA,OAAOM,MAAM,CAACmG,kBAAkB,CAACzG,KAAK,CAAC2I,MAAM,IAAIlC,kBAAkB,CAACzG,KAAK,CAAC4I,GAAG,EAAED,MAAM,IAAIlC,kBAAkB,CAACzG,KAAK,CAAC6I,EAAE,EAAEC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;IACtJ,CAAC,CAAC;IACF,MAAMC,aAAa,GAAGhL,wDAAQ,CAAC,MAAM;MACnC,MAAMiL,MAAM,GAAGP,YAAY,CAACzI,KAAK;MACjC,IAAI,CAACgJ,MAAM,EAAE;QACX,OAAO,IAAI;MACb;MACA,OAAOtL,QAAQ,CAACA,QAAQ,CAACuL,IAAI,CAACC,OAAO,IAAI5I,MAAM,CAAC4I,OAAO,CAACC,GAAG,IAAID,OAAO,CAACL,EAAE,IAAI,EAAE,CAAC,KAAKG,MAAM,CAAC,IAAI,IAAI;IACtG,CAAC,CAAC;IACF,MAAMI,aAAa,GAAGrL,wDAAQ,CAAC,MAAM;MACnC,MAAMmL,OAAO,GAAGH,aAAa,CAAC/I,KAAK;MACnC,MAAMqJ,YAAY,GAAG5C,kBAAkB,CAACzG,KAAK,IAAI,CAAC,CAAC;MACnD,MAAMsJ,OAAO,GAAGJ,OAAO,EAAEI,OAAO,IAAI,CAAC,CAAC;MACtC,MAAMzF,WAAW,GAAGqF,OAAO,EAAEK,KAAK,IAC7BD,OAAO,CAACzF,WAAW,IACnByF,OAAO,CAAC9E,IAAI,IACZ0E,OAAO,EAAErD,KAAK,IACdwD,YAAY,CAACxD,KAAK,IAClB4C,YAAY,CAACzI,KAAK,IAClB,MAAM;MACX,MAAMwJ,OAAO,GAAGF,OAAO,CAACzF,WAAW,IAAIyF,OAAO,CAAC9E,IAAI,IAAI0E,OAAO,EAAErD,KAAK,IAAIwD,YAAY,CAACxD,KAAK,IAAI,EAAE;MAEjG,OAAO;QACLsD,GAAG,EAAEV,YAAY,CAACzI,KAAK;QACvByJ,MAAM,EAAEH,OAAO,CAAC9E,IAAI,IAAI6E,YAAY,CAACT,GAAG,EAAEa,MAAM,IAAIhB,YAAY,CAACzI,KAAK;QACtE6D,WAAW;QACX2F,OAAO;QACPE,MAAM,EAAEJ,OAAO,CAACI,MAAM,IAAIL,YAAY,CAACT,GAAG,EAAEc,MAAM,IAAI,EAAE;QACxDC,OAAO,EAAEL,OAAO,CAACK,OAAO,IAAIN,YAAY,CAACT,GAAG,EAAEe,OAAO,IAAI,EAAE;QAC3D7F,QAAQ,EAAEoF,OAAO,EAAEpF,QAAQ,IAAIuF,YAAY,CAACvF,QAAQ,IAAI,EAAE;QAC1D8F,UAAU,EAAEtJ,MAAM,CAACuD,WAAW,IAAI,GAAG,CAAC,CAACtD,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC;QAChE+I,KAAK,EAAEL,OAAO,EAAEK,KAAK,IAAI;MAC3B,CAAC;IACH,CAAC,CAAC;IACF,MAAMM,cAAc,GAAG9L,wDAAQ,CAAC,MAAM;MACpC,OAAOuC,MAAM,CACXiH,WAAW,CAACvH,KAAK,EAAE8J,OAAM,IACtBrD,kBAAkB,CAACzG,KAAK,EAAE4I,GAAG,EAAEkB,OAAM,IACrCrD,kBAAkB,CAACzG,KAAK,EAAE4I,GAAG,EAAED,MAAK,IACpClC,kBAAkB,CAACzG,KAAK,EAAE2I,MAAK,IAC/BlC,kBAAkB,CAACzG,KAAK,EAAE6I,EAAE,EAAEC,OAAO,CAAC,SAAS,EAAE,EAAE,KACnD,GACL,CAAC;IACH,CAAC,CAAC;IACF,MAAMJ,mBAAmB,GAAG3K,wDAAQ,CAAC,MAAM;MACzC,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,CAACuE,QAAQ,CAACmE,kBAAkB,CAACzG,KAAK,EAAEqB,IAAI,CAAC,IAC/DoF,kBAAkB,CAACzG,KAAK,EAAE4I,GAAG,EAAEvH,IAAI,KAAK,OAAO;IACtD,CAAC,CAAC;IACF,MAAM0I,gBAAgB,GAAGhM,wDAAQ,CAAC,MAAM;MACtC,OAAOwJ,WAAW,CAACvH,KAAK,EAAEgK,MAAM,IAAIvD,kBAAkB,CAACzG,KAAK,EAAEiK,IAAI,IAAIxD,kBAAkB,CAACzG,KAAK,EAAE4I,GAAG,EAAEqB,IAAI,IAAI,EAAE;IACjH,CAAC,CAAC;IACF,MAAMC,YAAY,GAAGnM,wDAAQ,CAAC,MAAMgM,gBAAgB,CAAC/J,KAAK,KAAK,OAAO,CAAC;IACvE,MAAMmK,cAAc,GAAGpM,wDAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAACuE,QAAQ,CAACyH,gBAAgB,CAAC/J,KAAK,CAAC,CAAC;IAC1F,MAAMoK,qBAAqB,GAAGrM,wDAAQ,CAAC,MAAMyJ,YAAY,CAACxH,KAAK,CAACqK,MAAM,CAACC,MAAM,IAAIA,MAAM,CAACL,IAAI,KAAK,OAAO,CAAC,CAAC;IAC1G,MAAMM,mBAAmB,GAAGxM,wDAAQ,CAAC,MAAMyJ,YAAY,CAACxH,KAAK,CAACqK,MAAM,CAACC,MAAM,IAAIA,MAAM,CAACL,IAAI,KAAK,OAAO,CAAC,CAAC;IACxG,MAAMO,aAAa,GAAGzM,wDAAQ,CAAC,MAAMP,aAAa,CAACgN,aAAa,IAAI,IAAI,CAAC;IACzE,MAAMC,kBAAkB,GAAG1M,wDAAQ,CAAC,MAAMyM,aAAa,CAACxK,KAAK,EAAE0K,KAAK,IAAI,IAAI,CAAC;IAC7E,MAAMC,oBAAoB,GAAG5M,wDAAQ,CAAC,MAAM;MAC1C,OAAOyM,aAAa,CAACxK,KAAK,EAAE4K,gBAAgB,KAAK,OAAO,IAAIC,OAAO,CAACL,aAAa,CAACxK,KAAK,EAAE0K,KAAK,CAAC;IACjG,CAAC,CAAC;IACF,MAAMI,mBAAmB,GAAG/M,wDAAQ,CAAC,MAAM;MACzC,OAAO0M,kBAAkB,CAACzK,KAAK,EAAE+K,MAAM,IAAI;QACzCC,IAAI,EAAE,CAAC;QACPC,MAAM,EAAE,CAAC;QACTC,WAAW,EAAE,CAAC;QACdC,KAAK,EAAE;MACT,CAAC;IACH,CAAC,CAAC;IACF,MAAMC,oBAAoB,GAAGrN,wDAAQ,CAAC,MAAM;MAC1C,OAAOyJ,YAAY,CAACxH,KAAK,CAACqK,MAAM,CAACC,MAAM,IAAI;QACzC,IAAIA,MAAM,CAACnB,GAAG,KAAKvM,OAAO,CAAC6M,MAAM,IAAIa,MAAM,CAACL,IAAI,KAAK,OAAO,EAAE;UAC5D,OAAO,KAAK;QACd;QACA,IAAIF,gBAAgB,CAAC/J,KAAK,KAAK,OAAO,EAAE;UACtC,OAAOsK,MAAM,CAACL,IAAI,KAAK,QAAQ;QACjC;QACA,OAAOF,gBAAgB,CAAC/J,KAAK,KAAK,OAAO;MAC3C,CAAC,CAAC;IACJ,CAAC,CAAC;IACF,MAAMqL,UAAU,GAAGtN,wDAAQ,CAAC,MAAM;MAChC,IAAI0I,kBAAkB,CAACzG,KAAK,EAAEqB,IAAI,KAAK,SAAS,IAAI,CAAC7D,aAAa,CAAC8N,yBAAyB,EAAE;QAC5F,OAAO,aAAa;MACtB;MACA,OAAO1O,OAAO,CAAC2O,oBAAoB,KAAK3O,OAAO,CAAC4O,SAAS,GAAG,KAAK,GAAG,KAAK,CAAC;IAC5E,CAAC,CAAC;IAEF,SAASC,gBAAgBA,CAACzL,KAAK,EAAE;MAC/B,MAAM0L,SAAS,GAAGzI,MAAM,CAACjD,KAAK,IAAI,CAAC,CAAC;MACpC,IAAI,CAAC0L,SAAS,EAAE;QACd,OAAO,IAAI;MACb;MACA,OAAO,IAAIC,IAAI,CAACC,cAAc,CAAC,OAAO,EAAE;QACtCC,IAAI,EAAE,SAAS;QACfC,KAAK,EAAE,SAAS;QAChBC,GAAG,EAAE,SAAS;QACdC,IAAI,EAAE,SAAS;QACfC,MAAM,EAAE,SAAS;QACjBC,MAAM,EAAE,SAAS;QACjBC,MAAM,EAAE,KAAK;QACbC,QAAQ,EAAET,IAAI,CAACC,cAAc,CAAC,CAAC,CAACS,eAAe,CAAC,CAAC,CAACD;MACpD,CAAC,CAAC,CAACE,MAAM,CAACZ,SAAS,CAAC;IACtB;IAEA,SAASa,gBAAgBA,CAACjC,MAAM,EAAE;MAChC,OAAOA,MAAM,EAAE9F,IAAI,IAAI8F,MAAM,EAAEzG,WAAW,IAAIyG,MAAM,EAAEd,OAAO,IAAIc,MAAM,EAAEnB,GAAG,IAAI,GAAG;IACrF;IAEA,SAASqD,kBAAkBA,CAAClC,MAAM,EAAE;MAClC,OAAOhK,MAAM,CAACiM,gBAAgB,CAACjC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC/J,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC;IAC1E;IAEA,SAASiM,eAAeA,CAACxC,IAAI,EAAE;MAC7B,IAAIA,IAAI,KAAK,OAAO,EAAE;QACpB,OAAO,IAAI;MACb;MACA,IAAIA,IAAI,KAAK,OAAO,EAAE;QACpB,OAAO,KAAK;MACd;MACA,OAAO,EAAE;IACX;IAEA,SAASyC,cAAcA,CAAA,EAAG;MACxB3F,aAAa,CAAC/G,KAAK,GAAG,KAAK;IAC7B;IAEA,SAAS2M,eAAeA,CAAA,EAAG;MACzB,IAAI,CAACjE,mBAAmB,CAAC1I,KAAK,EAAE;QAC9B;MACF;MACA+G,aAAa,CAAC/G,KAAK,GAAG,CAAC+G,aAAa,CAAC/G,KAAK;IAC5C;IAEA,eAAe4M,iBAAiBA,CAAA,EAAG;MACjC,IAAI,CAACnG,kBAAkB,CAACzG,KAAK,IAAI0I,mBAAmB,CAAC1I,KAAK,EAAE;QAC1D;MACF;MACA0M,cAAc,CAAC,CAAC;MAChBvF,mBAAmB,CAACnH,KAAK,GAAG,EAAE;MAC9BoH,kBAAkB,CAACpH,KAAK,GAAG,EAAE;MAC7BiH,gBAAgB,CAACjH,KAAK,GAAGoJ,aAAa,CAACpJ,KAAK,CAACuJ,KAAK,IAAI,EAAE;MACxDvC,iBAAiB,CAAChH,KAAK,GAAG,IAAI;MAC9BtC,QAAQ,CAACE,eAAe,CAAC,CAAC,CAACiP,IAAI,CAAC,MAAM;QACpC,IAAI7F,iBAAiB,CAAChH,KAAK,EAAE;UAC3BiH,gBAAgB,CAACjH,KAAK,GAAGoJ,aAAa,CAACpJ,KAAK,CAACuJ,KAAK,IAAI,EAAE;QAC1D;MACF,CAAC,CAAC,CAACuD,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IACpB;IAEA,SAASC,kBAAkBA,CAAA,EAAG;MAC5B,IAAI7F,mBAAmB,CAAClH,KAAK,EAAE;QAC7B;MACF;MACAgH,iBAAiB,CAAChH,KAAK,GAAG,KAAK;MAC/BmH,mBAAmB,CAACnH,KAAK,GAAG,EAAE;MAC9BoH,kBAAkB,CAACpH,KAAK,GAAG,EAAE;IAC/B;IAEA,eAAegN,eAAeA,CAAA,EAAG;MAC/B,MAAMhE,MAAM,GAAGI,aAAa,CAACpJ,KAAK,CAACmJ,GAAG;MACtC,IAAI,CAACH,MAAM,IAAI9B,mBAAmB,CAAClH,KAAK,EAAE;QACxC;MACF;MACAkH,mBAAmB,CAAClH,KAAK,GAAG,IAAI;MAChCmH,mBAAmB,CAACnH,KAAK,GAAG,EAAE;MAC9BoH,kBAAkB,CAACpH,KAAK,GAAG,EAAE;MAC7B,IAAI;QACF,MAAMiN,EAAE,GAAG,MAAMvP,QAAQ,CAACwP,kBAAkB,CAAClE,MAAM,EAAE/B,gBAAgB,CAACjH,KAAK,CAAC;QAC5E,IAAI,CAACiN,EAAE,EAAE;UACP7F,kBAAkB,CAACpH,KAAK,GAAGtC,QAAQ,CAACyP,WAAW,IAAI,SAAS;UAC5D;QACF;QACA,MAAMzP,QAAQ,CAACE,eAAe,CAAC;UAAEyE,KAAK,EAAE;QAAK,CAAC,CAAC,CAACyK,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QAC/D,MAAMM,gBAAgB,GAAG1P,QAAQ,CAACA,QAAQ,CAACuL,IAAI,CAACC,OAAO,IAAI5I,MAAM,CAAC4I,OAAO,CAACC,GAAG,IAAID,OAAO,CAACL,EAAE,IAAI,EAAE,CAAC,KAAKG,MAAM,CAAC,IAAID,aAAa,CAAC/I,KAAK;QACrI,MAAMqN,SAAS,GAAGD,gBAAgB,EAAEvH,KAAK,IACnCoB,gBAAgB,CAACjH,KAAK,IAAIoJ,aAAa,CAACpJ,KAAK,CAACwJ,OAAO,IAAIJ,aAAa,CAACpJ,KAAK,CAAC6D,WAAW,IAAImF,MAAO;QACzGxL,aAAa,CAAC8P,kBAAkB,CAAC;UAC/B,GAAG7G,kBAAkB,CAACzG,KAAK;UAC3B6F,KAAK,EAAEwH,SAAS;UAChBvJ,QAAQ,EAAEsJ,gBAAgB,EAAEtJ,QAAQ,IAAI2C,kBAAkB,CAACzG,KAAK,EAAE8D,QAAQ,IAAI,EAAE;UAChF8F,UAAU,EAAEtJ,MAAM,CAAC+M,SAAS,IAAI,GAAG,CAAC,CAAC9M,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC;UAC9DoI,GAAG,EAAE;YACH,IAAInC,kBAAkB,CAACzG,KAAK,EAAE4I,GAAG,IAAI,CAAC,CAAC,CAAC;YACxCD,MAAM,EAAEK,MAAM;YACdU,MAAM,EAAE0D,gBAAgB,EAAE9D,OAAO,EAAEI,MAAM,IAAIjD,kBAAkB,CAACzG,KAAK,EAAE4I,GAAG,EAAEc,MAAM,IAAI,EAAE;YACxFC,OAAO,EAAEyD,gBAAgB,EAAE9D,OAAO,EAAEK,OAAO,IAAIlD,kBAAkB,CAACzG,KAAK,EAAE4I,GAAG,EAAEe,OAAO,IAAI,EAAE;YAC3FJ,KAAK,EAAE6D,gBAAgB,EAAE7D,KAAK,IAAItC,gBAAgB,CAACjH;UACrD;QACF,CAAC,CAAC;QACFiH,gBAAgB,CAACjH,KAAK,GAAGoN,gBAAgB,EAAE7D,KAAK,IAAItC,gBAAgB,CAACjH,KAAK;QAC1EmH,mBAAmB,CAACnH,KAAK,GAAG,QAAQ;MACtC,CAAC,CAAC,OAAOgB,KAAK,EAAE;QACdoG,kBAAkB,CAACpH,KAAK,GAAGgB,KAAK,CAACU,OAAO,IAAI,SAAS;MACvD,CAAC,SAAS;QACRwF,mBAAmB,CAAClH,KAAK,GAAG,KAAK;MACnC;IACF;IAEA,SAASuN,0BAA0BA,CAAA,EAAG;MACpC7P,QAAQ,CAACE,eAAe,CAAC;QAAEyE,KAAK,EAAE;MAAK,CAAC,CAAC,CAACyK,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;MACzDtP,aAAa,CAACgQ,kBAAkB,CAAC;QAAEC,gBAAgB,EAAE;MAAK,CAAC,CAAC;MAC5D,IAAIpG,UAAU,CAACrH,KAAK,KAAK,SAAS,EAAE;QAClC0N,gBAAgB,CAAC,CAAC;MACpB;IACF;IAEA,SAASC,eAAeA,CAAA,EAAG;MACzBtG,UAAU,CAACrH,KAAK,GAAG,EAAE;MACrBsH,SAAS,CAACtH,KAAK,GAAG,KAAK;MACvB4N,qBAAqB,CAAC,CAAC;IACzB;IAEA,eAAeC,eAAeA,CAAA,EAAG;MAC/B,IAAI,CAACjR,OAAO,CAAC6M,MAAM,IAAI,CAAChD,kBAAkB,CAACzG,KAAK,EAAE2I,MAAM,EAAE;QACxD,OAAO,IAAI;MACb;MACArB,SAAS,CAACtH,KAAK,GAAG,IAAI;MACtB,IAAI;QACFuH,WAAW,CAACvH,KAAK,GAAG,MAAM5B,mEAAQ,CAAC0P,cAAc,CAAClR,OAAO,CAAC6M,MAAM,EAAEhD,kBAAkB,CAACzG,KAAK,CAAC2I,MAAM,CAAC;QAClG,OAAOpB,WAAW,CAACvH,KAAK;MAC1B,CAAC,CAAC,OAAOgB,KAAK,EAAE;QACdxD,aAAa,CAACuQ,cAAc,CAAC/M,KAAK,CAACU,OAAO,IAAI,SAAS,CAAC;QACxD,OAAO,IAAI;MACb,CAAC,SAAS;QACR4F,SAAS,CAACtH,KAAK,GAAG,KAAK;MACzB;IACF;IAEA,eAAegO,iBAAiBA,CAAA,EAAG;MACjC,IAAI,CAACtF,mBAAmB,CAAC1I,KAAK,EAAE;QAC9B;MACF;MACA0M,cAAc,CAAC,CAAC;MAChBrF,UAAU,CAACrH,KAAK,GAAG,UAAU;MAC7B,MAAM6N,eAAe,CAAC,CAAC;IACzB;IAEA,eAAeI,gBAAgBA,CAAA,EAAG;MAChCvB,cAAc,CAAC,CAAC;MAChBrF,UAAU,CAACrH,KAAK,GAAG,SAAS;MAC5B,MAAM0N,gBAAgB,CAAC,CAAC;IAC1B;IAEA,eAAeA,gBAAgBA,CAAA,EAAG;MAChCpG,SAAS,CAACtH,KAAK,GAAG,IAAI;MACtB,IAAI;QACFwH,YAAY,CAACxH,KAAK,GAAG,MAAM5B,mEAAQ,CAAC8P,eAAe,CAACtR,OAAO,CAAC6M,MAAM,EAAEhD,kBAAkB,CAACzG,KAAK,CAAC2I,MAAM,CAAC;QACpGhB,gBAAgB,CAAC3H,KAAK,GAAGwH,YAAY,CAACxH,KAAK,CACxCqK,MAAM,CAACC,MAAM,IAAIA,MAAM,CAACL,IAAI,KAAK,OAAO,CAAC,CACzCkE,GAAG,CAAC7D,MAAM,IAAIA,MAAM,CAACnB,GAAG,CAAC;QAC5B,OAAO3B,YAAY,CAACxH,KAAK;MAC3B,CAAC,CAAC,OAAOgB,KAAK,EAAE;QACdxD,aAAa,CAACuQ,cAAc,CAAC/M,KAAK,CAACU,OAAO,IAAI,QAAQ,CAAC;QACvD,OAAO,EAAE;MACX,CAAC,SAAS;QACR4F,SAAS,CAACtH,KAAK,GAAG,KAAK;MACzB;IACF;IAEA,eAAeoO,cAAcA,CAAA,EAAG;MAC9B1B,cAAc,CAAC,CAAC;MAChBrF,UAAU,CAACrH,KAAK,GAAG,OAAO;MAC1B,MAAMqO,MAAM,GAAG,MAAMR,eAAe,CAAC,CAAC;MACtCpG,eAAe,CAACzH,KAAK,GAAGqO,MAAM,EAAEC,OAAO,IAAI,EAAE;IAC/C;IAEA,SAASC,cAAcA,CAACvO,KAAK,EAAE;MAC7B,MAAM0L,SAAS,GAAGzI,MAAM,CAACjD,KAAK,IAAI,CAAC,CAAC;MACpC,IAAI,CAAC0L,SAAS,EAAE;QACd,OAAO,EAAE;MACX;MACA,MAAM8C,IAAI,GAAG,IAAIC,IAAI,CAAC/C,SAAS,CAAC;MAChC,MAAMgD,KAAK,GAAG,IAAID,IAAI,CAACD,IAAI,CAACG,OAAO,CAAC,CAAC,GAAGH,IAAI,CAACI,iBAAiB,CAAC,CAAC,GAAG,KAAK,CAAC;MACzE,OAAOF,KAAK,CAACG,WAAW,CAAC,CAAC,CAACtO,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;IACzC;IAEA,SAASuO,cAAcA,CAAC9O,KAAK,EAAE;MAC7B,OAAOA,KAAK,GAAG,IAAIyO,IAAI,CAACzO,KAAK,CAAC,CAAC2O,OAAO,CAAC,CAAC,GAAG,CAAC;IAC9C;IAEA,SAASI,uBAAuBA,CAAA,EAAG;MACjCnB,qBAAqB,CAAC,CAAC;MACvB9F,YAAY,CAAC9H,KAAK,GAAG;QACnBwE,IAAI,EAAE+C,WAAW,CAACvH,KAAK,EAAEwE,IAAI,IAAIiC,kBAAkB,CAACzG,KAAK,EAAE6F,KAAK,IAAI,EAAE;QACtEkC,YAAY,EAAER,WAAW,CAACvH,KAAK,EAAE+H,YAAY,IAAI,EAAE;QACnDC,WAAW,EAAET,WAAW,CAACvH,KAAK,EAAEgI,WAAW,IAAI;MACjD,CAAC;MACD,MAAMgH,OAAO,GAAGzH,WAAW,CAACvH,KAAK,EAAEiP,WAAW,IAAI,CAAC,CAAC;MACpDhH,SAAS,CAACjI,KAAK,GAAG;QAChBkB,IAAI,EAAE8N,OAAO,CAAC9N,IAAI,IAAI,KAAK;QAC3BgH,YAAY,EAAE8G,OAAO,CAAC9G,YAAY,IAAI,MAAM;QAC5CC,aAAa,EAAEoG,cAAc,CAACS,OAAO,CAACE,UAAU,CAAC;QACjD9G,WAAW,EAAEmG,cAAc,CAACS,OAAO,CAACG,QAAQ,CAAC;QAC7C9G,UAAU,EAAE2G,OAAO,CAAC3G,UAAU,IAAI,OAAO;QACzCC,QAAQ,EAAE0G,OAAO,CAAC1G,QAAQ,IAAI;MAChC,CAAC;IACH;IAEA,SAASsF,qBAAqBA,CAAA,EAAG;MAC/BrF,cAAc,CAACvI,KAAK,GAAG,EAAE;MACzBwI,aAAa,CAACxI,KAAK,GAAG,EAAE;IAC1B;IAEA,eAAeoP,eAAeA,CAAA,EAAG;MAC/B,IAAI,CAACjF,cAAc,CAACnK,KAAK,EAAE;QACzB;MACF;MACA0M,cAAc,CAAC,CAAC;MAChBrF,UAAU,CAACrH,KAAK,GAAG,QAAQ;MAC3B0H,aAAa,CAAC1H,KAAK,GAAGkK,YAAY,CAAClK,KAAK,GAAG,QAAQ,GAAG,SAAS;MAC/D,MAAM6N,eAAe,CAAC,CAAC;MACvBkB,uBAAuB,CAAC,CAAC;MACzB,MAAMrB,gBAAgB,CAAC,CAAC;IAC1B;IAEA,eAAe2B,iBAAiBA,CAAA,EAAG;MACjChI,UAAU,CAACrH,KAAK,GAAG,UAAU;MAC7B6H,gBAAgB,CAAC7H,KAAK,GAAG,EAAE;MAC3B,MAAM0N,gBAAgB,CAAC,CAAC;IAC1B;IAEA,eAAe4B,cAAcA,CAAA,EAAG;MAC9B,IAAI,CAAC7I,kBAAkB,CAACzG,KAAK,EAAE2I,MAAM,IAAIrB,SAAS,CAACtH,KAAK,EAAE;QACxD;MACF;MACAsH,SAAS,CAACtH,KAAK,GAAG,IAAI;MACtB,IAAI;QACF,MAAMuJ,KAAK,GAAG,MAAMnL,mEAAQ,CAACmR,gBAAgB,CAAC3S,OAAO,CAAC6M,MAAM,EAAEhD,kBAAkB,CAACzG,KAAK,CAAC2I,MAAM,EAAElB,eAAe,CAACzH,KAAK,CAAC;QACrHuH,WAAW,CAACvH,KAAK,GAAG;UAClB,IAAIuH,WAAW,CAACvH,KAAK,IAAI,CAAC,CAAC,CAAC;UAC5BsO,OAAO,EAAE/E;QACX,CAAC;QACD/L,aAAa,CAACgS,eAAe,CAAC,SAAS,CAAC;QACxC7B,eAAe,CAAC,CAAC;MACnB,CAAC,CAAC,OAAO3M,KAAK,EAAE;QACdxD,aAAa,CAACuQ,cAAc,CAAC/M,KAAK,CAACU,OAAO,IAAI,UAAU,CAAC;MAC3D,CAAC,SAAS;QACR4F,SAAS,CAACtH,KAAK,GAAG,KAAK;MACzB;IACF;IAEA,SAASyP,WAAWA,CAAChG,MAAM,EAAE;MAC3B,MAAMiG,QAAQ,GAAG,IAAIC,GAAG,CAAChI,gBAAgB,CAAC3H,KAAK,CAAC;MAChD,IAAI0P,QAAQ,CAACE,GAAG,CAACnG,MAAM,CAAC,EAAE;QACxBiG,QAAQ,CAACG,MAAM,CAACpG,MAAM,CAAC;MACzB,CAAC,MAAM;QACLiG,QAAQ,CAACI,GAAG,CAACrG,MAAM,CAAC;MACtB;MACA9B,gBAAgB,CAAC3H,KAAK,GAAG+P,KAAK,CAACC,IAAI,CAACN,QAAQ,CAAC;IAC/C;IAEA,SAASO,UAAUA,CAACxG,MAAM,EAAE;MAC1B,MAAMiG,QAAQ,GAAG,IAAIC,GAAG,CAAC/H,eAAe,CAAC5H,KAAK,CAAC;MAC/C,IAAI0P,QAAQ,CAACE,GAAG,CAACnG,MAAM,CAAC,EAAE;QACxBiG,QAAQ,CAACG,MAAM,CAACpG,MAAM,CAAC;MACzB,CAAC,MAAM;QACLiG,QAAQ,CAACI,GAAG,CAACrG,MAAM,CAAC;MACtB;MACA7B,eAAe,CAAC5H,KAAK,GAAG+P,KAAK,CAACC,IAAI,CAACN,QAAQ,CAAC;IAC9C;IAEA,eAAeQ,eAAeA,CAAA,EAAG;MAC/B,IAAI,CAACzJ,kBAAkB,CAACzG,KAAK,EAAE2I,MAAM,IAAIrB,SAAS,CAACtH,KAAK,EAAE;QACxD;MACF;MACAsH,SAAS,CAACtH,KAAK,GAAG,IAAI;MACtB,IAAI;QACF,MAAM5B,mEAAQ,CAAC+R,cAAc,CAACvT,OAAO,CAAC6M,MAAM,EAAEhD,kBAAkB,CAACzG,KAAK,CAAC2I,MAAM,EAAEhB,gBAAgB,CAAC3H,KAAK,CAAC;QACtGwH,YAAY,CAACxH,KAAK,GAAGwH,YAAY,CAACxH,KAAK,CAACmO,GAAG,CAAC7D,MAAM,IAAI;UACpD,IAAIA,MAAM,CAACL,IAAI,KAAK,OAAO,EAAE;YAC3B,OAAOK,MAAM;UACf;UACA,OAAO;YACL,GAAGA,MAAM;YACTL,IAAI,EAAEtC,gBAAgB,CAAC3H,KAAK,CAACsC,QAAQ,CAACgI,MAAM,CAACnB,GAAG,CAAC,GAAG,OAAO,GAAG;UAChE,CAAC;QACH,CAAC,CAAC;QACF3L,aAAa,CAACgS,eAAe,CAAC,QAAQ,CAAC;MACzC,CAAC,CAAC,OAAOxO,KAAK,EAAE;QACdxD,aAAa,CAACuQ,cAAc,CAAC/M,KAAK,CAACU,OAAO,IAAI,SAAS,CAAC;MAC1D,CAAC,SAAS;QACR4F,SAAS,CAACtH,KAAK,GAAG,KAAK;MACzB;IACF;IAEA,eAAeoQ,gBAAgBA,CAAA,EAAG;MAChC,IAAI,CAAC3J,kBAAkB,CAACzG,KAAK,EAAE2I,MAAM,IAAIrB,SAAS,CAACtH,KAAK,EAAE;QACxD;MACF;MACAsH,SAAS,CAACtH,KAAK,GAAG,IAAI;MACtB,IAAI;QACF,MAAM4B,MAAM,GAAG,MAAMxD,mEAAQ,CAACiS,kBAAkB,CAACzT,OAAO,CAAC6M,MAAM,EAAEhD,kBAAkB,CAACzG,KAAK,CAAC2I,MAAM,EAAEb,YAAY,CAAC9H,KAAK,CAAC;QACrHuH,WAAW,CAACvH,KAAK,GAAG;UAClB,IAAIuH,WAAW,CAACvH,KAAK,IAAI,CAAC,CAAC,CAAC;UAC5BwE,IAAI,EAAE5C,MAAM,CAAC4C,IAAI;UACjBuD,YAAY,EAAEnG,MAAM,CAACmG,YAAY;UACjCC,WAAW,EAAEpG,MAAM,CAACoG;QACtB,CAAC;QACDxK,aAAa,CAAC8P,kBAAkB,CAAC;UAC/B,GAAG7G,kBAAkB,CAACzG,KAAK;UAC3B6F,KAAK,EAAEjE,MAAM,CAAC4C,IAAI;UAClBoF,UAAU,EAAEtJ,MAAM,CAACsB,MAAM,CAAC4C,IAAI,IAAI,GAAG,CAAC,CAACjE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC;UAChE8P,SAAS,EAAErN,MAAM,CAACrB,MAAM,CAAC0O,SAAS,IAAI7B,IAAI,CAAC8B,GAAG,CAAC,CAAC;QAClD,CAAC,CAAC;QACF/S,aAAa,CAACgS,eAAe,CAAC,QAAQ,CAAC;MACzC,CAAC,CAAC,OAAOxO,KAAK,EAAE;QACdxD,aAAa,CAACuQ,cAAc,CAAC/M,KAAK,CAACU,OAAO,IAAI,SAAS,CAAC;MAC1D,CAAC,SAAS;QACR4F,SAAS,CAACtH,KAAK,GAAG,KAAK;MACzB;IACF;IAEA,eAAewQ,mBAAmBA,CAAA,EAAG;MACnC,IAAI,CAAC5I,eAAe,CAAC5H,KAAK,CAACC,MAAM,IAAIqH,SAAS,CAACtH,KAAK,EAAE;QACpD;MACF;MACA,IAAI,CAACkC,MAAM,CAACuO,OAAO,CAAC,cAAc,CAAC,EAAE;QACnC;MACF;MACAnJ,SAAS,CAACtH,KAAK,GAAG,IAAI;MACtB,IAAI;QACF,MAAM4B,MAAM,GAAG,MAAMxD,mEAAQ,CAACsS,gBAAgB,CAAC9T,OAAO,CAAC6M,MAAM,EAAEhD,kBAAkB,CAACzG,KAAK,CAAC2I,MAAM,EAAEf,eAAe,CAAC5H,KAAK,CAAC;QACtH,MAAM2Q,OAAO,GAAG,IAAIhB,GAAG,CAAC/N,MAAM,CAACgP,UAAU,IAAIhJ,eAAe,CAAC5H,KAAK,CAAC;QACnEwH,YAAY,CAACxH,KAAK,GAAGwH,YAAY,CAACxH,KAAK,CAACqK,MAAM,CAACC,MAAM,IAAI,CAACqG,OAAO,CAACf,GAAG,CAACtF,MAAM,CAACnB,GAAG,CAAC,CAAC;QAClFvB,eAAe,CAAC5H,KAAK,GAAG,EAAE;QAC1BxC,aAAa,CAACgS,eAAe,CAAC,OAAO,CAAC;MACxC,CAAC,CAAC,OAAOxO,KAAK,EAAE;QACdxD,aAAa,CAACuQ,cAAc,CAAC/M,KAAK,CAACU,OAAO,IAAI,MAAM,CAAC;MACvD,CAAC,SAAS;QACR4F,SAAS,CAACtH,KAAK,GAAG,KAAK;MACzB;IACF;IAEA,eAAe6Q,eAAeA,CAAA,EAAG;MAC/B,IAAI,CAACpK,kBAAkB,CAACzG,KAAK,EAAE2I,MAAM,IAAIrB,SAAS,CAACtH,KAAK,EAAE;QACxD;MACF;MACA4N,qBAAqB,CAAC,CAAC;MACvBtG,SAAS,CAACtH,KAAK,GAAG,IAAI;MACtB,IAAI;QACF,MAAMgP,OAAO,GAAG,MAAM5Q,mEAAQ,CAAC0S,sBAAsB,CAAClU,OAAO,CAAC6M,MAAM,EAAEhD,kBAAkB,CAACzG,KAAK,CAAC2I,MAAM,EAAE;UACrGzH,IAAI,EAAE+G,SAAS,CAACjI,KAAK,CAACkB,IAAI;UAC1BgH,YAAY,EAAED,SAAS,CAACjI,KAAK,CAACkI,YAAY;UAC1CgH,UAAU,EAAEJ,cAAc,CAAC7G,SAAS,CAACjI,KAAK,CAACmI,aAAa,CAAC;UACzDgH,QAAQ,EAAEL,cAAc,CAAC7G,SAAS,CAACjI,KAAK,CAACoI,WAAW,CAAC;UACrDC,UAAU,EAAEJ,SAAS,CAACjI,KAAK,CAACqI,UAAU;UACtCC,QAAQ,EAAEL,SAAS,CAACjI,KAAK,CAACsI;QAC5B,CAAC,CAAC;QACFf,WAAW,CAACvH,KAAK,GAAG;UAClB,IAAIuH,WAAW,CAACvH,KAAK,IAAI,CAAC,CAAC,CAAC;UAC5BiP,WAAW,EAAED;QACf,CAAC;QACDzG,cAAc,CAACvI,KAAK,GAAG,SAAS;MAClC,CAAC,CAAC,OAAOgB,KAAK,EAAE;QACdwH,aAAa,CAACxI,KAAK,GAAGgB,KAAK,CAACU,OAAO,IAAI,UAAU;MACnD,CAAC,SAAS;QACR4F,SAAS,CAACtH,KAAK,GAAG,KAAK;MACzB;IACF;IAEA,eAAe+Q,iBAAiBA,CAAA,EAAG;MACjC,IAAI,CAACtK,kBAAkB,CAACzG,KAAK,IAAIsH,SAAS,CAACtH,KAAK,EAAE;QAChD;MACF;MACA,IAAI,CAACkC,MAAM,CAACuO,OAAO,CAAC,UAAU,CAAC,EAAE;QAC/B;MACF;MACAnJ,SAAS,CAACtH,KAAK,GAAG,IAAI;MACtB,MAAMiN,EAAE,GAAG,MAAMzP,aAAa,CAACwT,UAAU,CAACvK,kBAAkB,CAACzG,KAAK,CAAC;MACnEsH,SAAS,CAACtH,KAAK,GAAG,KAAK;MACvB,IAAIiN,EAAE,EAAE;QACNU,eAAe,CAAC,CAAC;MACnB;IACF;IAEA,eAAesD,mBAAmBA,CAAA,EAAG;MACnC,IAAI,CAACxK,kBAAkB,CAACzG,KAAK,IAAIsH,SAAS,CAACtH,KAAK,EAAE;QAChD;MACF;MACA,IAAI,CAACkC,MAAM,CAACuO,OAAO,CAAC,yBAAyB,CAAC,EAAE;QAC9C;MACF;MACAnJ,SAAS,CAACtH,KAAK,GAAG,IAAI;MACtB,MAAMiN,EAAE,GAAG,MAAMzP,aAAa,CAAC0T,YAAY,CAACzK,kBAAkB,CAACzG,KAAK,CAAC;MACrEsH,SAAS,CAACtH,KAAK,GAAG,KAAK;MACvB,IAAIiN,EAAE,EAAE;QACNU,eAAe,CAAC,CAAC;MACnB;IACF;IAEA,eAAewD,oBAAoBA,CAAA,EAAG;MACpC,IAAI,CAAC1K,kBAAkB,CAACzG,KAAK,EAAE2I,MAAM,IAAI,CAACd,gBAAgB,CAAC7H,KAAK,IAAIsH,SAAS,CAACtH,KAAK,EAAE;QACnF;MACF;MACA,IAAI,CAACkC,MAAM,CAACuO,OAAO,CAAC,cAAc,CAAC,EAAE;QACnC;MACF;MACAnJ,SAAS,CAACtH,KAAK,GAAG,IAAI;MACtB,IAAI;QACF,MAAM5B,mEAAQ,CAACgT,aAAa,CAACxU,OAAO,CAAC6M,MAAM,EAAEhD,kBAAkB,CAACzG,KAAK,CAAC2I,MAAM,EAAEd,gBAAgB,CAAC7H,KAAK,CAAC;QACrGuH,WAAW,CAACvH,KAAK,GAAG;UAClB,IAAIuH,WAAW,CAACvH,KAAK,IAAI,CAAC,CAAC,CAAC;UAC5BgK,MAAM,EAAE;QACV,CAAC;QACDvD,kBAAkB,CAACzG,KAAK,CAACiK,IAAI,GAAG,QAAQ;QACxC,IAAIxD,kBAAkB,CAACzG,KAAK,CAAC4I,GAAG,EAAE;UAChCnC,kBAAkB,CAACzG,KAAK,CAAC4I,GAAG,CAACqB,IAAI,GAAG,QAAQ;QAC9C;QACAzM,aAAa,CAACgS,eAAe,CAAC,OAAO,CAAC;QACtC7B,eAAe,CAAC,CAAC;QACjBnQ,aAAa,CAACG,0BAA0B,CAAC,CAAC;MAC5C,CAAC,CAAC,OAAOqD,KAAK,EAAE;QACdxD,aAAa,CAACuQ,cAAc,CAAC/M,KAAK,CAACU,OAAO,IAAI,QAAQ,CAAC;MACzD,CAAC,SAAS;QACR4F,SAAS,CAACtH,KAAK,GAAG,KAAK;MACzB;IACF;IAEA,SAASqR,YAAYA,CAAC/G,MAAM,EAAE;MAC5B,OAAOhK,MAAM,CAACgK,MAAM,CAACzG,WAAW,IAAIyG,MAAM,CAACnB,GAAG,IAAI,GAAG,CAAC,CAAC5I,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC;IAClF;IAEAoF,QAAQ,CAAC0L,gBAAgB,CAAC,OAAO,EAAE5E,cAAc,CAAC;IAClD1O,+DAAe,CAAC,MAAM;MACpB4H,QAAQ,CAAC2L,mBAAmB,CAAC,OAAO,EAAE7E,cAAc,CAAC;IACvD,CAAC,CAAC;IAEFrG,qDAAK,CACH,MAAMI,kBAAkB,CAACzG,KAAK,EAAE6I,EAAE,EAClC,MAAM;MACJ6D,cAAc,CAAC,CAAC;MAChBK,kBAAkB,CAAC,CAAC;MACpBY,eAAe,CAAC,CAAC;MACjBpG,WAAW,CAACvH,KAAK,GAAG,IAAI;MACxBwH,YAAY,CAACxH,KAAK,GAAG,EAAE;MACvByH,eAAe,CAACzH,KAAK,GAAG,EAAE;MAC1B2H,gBAAgB,CAAC3H,KAAK,GAAG,EAAE;MAC3B4H,eAAe,CAAC5H,KAAK,GAAG,EAAE;MAC1B6H,gBAAgB,CAAC7H,KAAK,GAAG,EAAE;MAC3B0H,aAAa,CAAC1H,KAAK,GAAG,EAAE;IAC1B,CACF,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACziCyB;;;;;;;;;;;;;;;;;IAE1B,MAAMwR,KAAK,GAAGC,OASZ;IAEF,MAAMC,IAAI,GAAGC,MAAwD;IACrE,MAAM7K,IAAI,GAAG5I,kDAAG,CAAC,EAAE,CAAC;IACpB,MAAM0T,SAAS,GAAG1T,kDAAG,CAAC,KAAK,CAAC;IAC5B,MAAM2T,UAAU,GAAG3T,kDAAG,CAAC,KAAK,CAAC;IAC7B,MAAM4T,UAAU,GAAG5T,kDAAG,CAAC,IAAI,CAAC;IAC5B,MAAM6T,UAAU,GAAG7T,kDAAG,CAAC,IAAI,CAAC;IAC5B,MAAM8T,SAAS,GAAG9T,kDAAG,CAAC,IAAI,CAAC;IAC3B,IAAI+T,SAAS,GAAG,CAAC;IACjB,MAAMC,SAAS,GAAG,CAChB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC9C,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC9C,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAC5C;IAED,SAASC,MAAMA,CAAA,EAAG;MAChB,MAAMnS,KAAK,GAAG8G,IAAI,CAAC9G,KAAK,CAACyE,IAAI,CAAC,CAAC;MAC/B,IAAI,CAACzE,KAAK,EAAE;QACV;MACF;MACA0R,IAAI,CAAC,MAAM,EAAE1R,KAAK,CAAC;MACnB8G,IAAI,CAAC9G,KAAK,GAAG,EAAE;MACf4R,SAAS,CAAC5R,KAAK,GAAG,KAAK;IACzB;IAEA,SAASoS,iBAAiBA,CAAA,EAAG;MAC3BR,SAAS,CAAC5R,KAAK,GAAG,CAAC4R,SAAS,CAAC5R,KAAK;IACpC;IAEA,SAASqS,WAAWA,CAACC,KAAK,EAAE;MAC1B,MAAMC,OAAO,GAAGT,UAAU,CAAC9R,KAAK;MAChC,IAAI,CAACuS,OAAO,EAAE;QACZzL,IAAI,CAAC9G,KAAK,IAAIsS,KAAK;QACnB;MACF;MACA,MAAME,KAAK,GAAGD,OAAO,CAACE,cAAc,IAAI3L,IAAI,CAAC9G,KAAK,CAACC,MAAM;MACzD,MAAMyS,GAAG,GAAGH,OAAO,CAACI,YAAY,IAAI7L,IAAI,CAAC9G,KAAK,CAACC,MAAM;MACrD6G,IAAI,CAAC9G,KAAK,GAAG,GAAG8G,IAAI,CAAC9G,KAAK,CAACO,KAAK,CAAC,CAAC,EAAEiS,KAAK,CAAC,GAAGF,KAAK,GAAGxL,IAAI,CAAC9G,KAAK,CAACO,KAAK,CAACmS,GAAG,CAAC,EAAE;MAC5EE,qBAAqB,CAAC,MAAM;QAC1BL,OAAO,CAACM,KAAK,CAAC,CAAC;QACf,MAAMC,MAAM,GAAGN,KAAK,GAAGF,KAAK,CAACrS,MAAM;QACnCsS,OAAO,CAACQ,iBAAiB,CAACD,MAAM,EAAEA,MAAM,CAAC;MAC3C,CAAC,CAAC;IACJ;IAEA,SAASE,WAAWA,CAAA,EAAG;MACrBjB,UAAU,CAAC/R,KAAK,EAAEiT,KAAK,CAAC,CAAC;IAC3B;IAEA,SAASC,UAAUA,CAAA,EAAG;MACpBlB,SAAS,CAAChS,KAAK,EAAEiT,KAAK,CAAC,CAAC;IAC1B;IAEA,SAASE,qBAAqBA,CAACC,IAAI,EAAEC,YAAY,GAAG,MAAM,EAAE;MAC1D,IAAID,IAAI,EAAE/R,IAAI,EAAE2D,UAAU,CAAC,QAAQ,CAAC,EAAE;QACpC,OAAO,OAAO;MAChB;MACA,OAAOqO,YAAY,KAAK,OAAO,GAAG,OAAO,GAAG,MAAM;IACpD;IAEA,SAASC,SAASA,CAACC,KAAK,EAAEF,YAAY,GAAG,MAAM,EAAE;MAC/C,IAAI7B,KAAK,CAACgC,QAAQ,EAAE;QAClB;MACF;MACA,MAAMC,UAAU,GAAG1D,KAAK,CAACC,IAAI,CAACuD,KAAK,IAAI,EAAE,CAAC,CAAClJ,MAAM,CAAC+I,IAAI,IAAIA,IAAI,YAAYM,IAAI,IAAIN,IAAI,CAACO,IAAI,GAAG,CAAC,CAAC;MAChG,IAAI,CAACF,UAAU,CAACxT,MAAM,EAAE;QACtB;MACF;MAEA,MAAM2T,OAAO,GAAG9M,IAAI,CAAC9G,KAAK,CAACyE,IAAI,CAAC,CAAC;MACjCgP,UAAU,CAACI,OAAO,CAAC,CAACT,IAAI,EAAEU,KAAK,KAAK;QAClCpC,IAAI,CAAC,iBAAiB,EAAE;UACtBrQ,IAAI,EAAE8R,qBAAqB,CAACC,IAAI,EAAEC,YAAY,CAAC;UAC/CD,IAAI;UACJtM,IAAI,EAAEgN,KAAK,KAAK,CAAC,GAAGF,OAAO,GAAG;QAChC,CAAC,CAAC;MACJ,CAAC,CAAC;MACF9M,IAAI,CAAC9G,KAAK,GAAG,EAAE;MACf4R,SAAS,CAAC5R,KAAK,GAAG,KAAK;IACzB;IAEA,SAAS+T,gBAAgBA,CAACC,KAAK,EAAE3S,IAAI,EAAE;MACrC,MAAM4S,KAAK,GAAGD,KAAK,CAACrL,MAAM;MAC1B,MAAM4K,KAAK,GAAGU,KAAK,CAACV,KAAK,GAAGxD,KAAK,CAACC,IAAI,CAACiE,KAAK,CAACV,KAAK,CAAC,GAAG,EAAE;MACxDU,KAAK,CAACjU,KAAK,GAAG,EAAE;MAChB,IAAI,CAACuT,KAAK,CAACtT,MAAM,IAAIuR,KAAK,CAACgC,QAAQ,EAAE;QACnC;MACF;MACAF,SAAS,CAACC,KAAK,EAAElS,IAAI,CAAC;IACxB;IAEA,SAAS6S,eAAeA,CAACF,KAAK,EAAE;MAC9B,MAAMG,KAAK,GAAGpE,KAAK,CAACC,IAAI,CAACgE,KAAK,CAACI,YAAY,EAAED,KAAK,IAAI,EAAE,CAAC;MACzD,OAAOA,KAAK,CAAC7R,QAAQ,CAAC,OAAO,CAAC;IAChC;IAEA,SAAS+R,eAAeA,CAACL,KAAK,EAAE;MAC9B,IAAIxC,KAAK,CAACgC,QAAQ,IAAI,CAACU,eAAe,CAACF,KAAK,CAAC,EAAE;QAC7C;MACF;MACA/B,SAAS,IAAI,CAAC;MACdJ,UAAU,CAAC7R,KAAK,GAAG,IAAI;MACvBgU,KAAK,CAACI,YAAY,CAACE,UAAU,GAAG,MAAM;IACxC;IAEA,SAASC,cAAcA,CAACP,KAAK,EAAE;MAC7B,IAAIxC,KAAK,CAACgC,QAAQ,IAAI,CAACU,eAAe,CAACF,KAAK,CAAC,EAAE;QAC7C;MACF;MACAnC,UAAU,CAAC7R,KAAK,GAAG,IAAI;MACvBgU,KAAK,CAACI,YAAY,CAACE,UAAU,GAAG,MAAM;IACxC;IAEA,SAASE,eAAeA,CAAA,EAAG;MACzBvC,SAAS,GAAGnP,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEkP,SAAS,GAAG,CAAC,CAAC;MACtC,IAAIA,SAAS,KAAK,CAAC,EAAE;QACnBJ,UAAU,CAAC7R,KAAK,GAAG,KAAK;MAC1B;IACF;IAEA,SAASyU,qBAAqBA,CAACL,YAAY,EAAE;MAC3C,MAAMM,KAAK,GAAG3E,KAAK,CAACC,IAAI,CAACoE,YAAY,EAAEM,KAAK,IAAI,EAAE,CAAC;MACnD,MAAMnB,KAAK,GAAGmB,KAAK,CAChBrK,MAAM,CAACsK,IAAI,IAAIA,IAAI,CAACC,IAAI,KAAK,MAAM,IAAI,CAACD,IAAI,CAACE,gBAAgB,GAAG,CAAC,EAAEC,WAAW,CAAC,CAC/E3G,GAAG,CAACwG,IAAI,IAAIA,IAAI,CAACI,SAAS,CAAC,CAAC,CAAC,CAC7B1K,MAAM,CAACQ,OAAO,CAAC;MAClB,IAAI0I,KAAK,CAACtT,MAAM,EAAE;QAChB,OAAOsT,KAAK;MACd;MACA,OAAOxD,KAAK,CAACC,IAAI,CAACoE,YAAY,EAAEb,KAAK,IAAI,EAAE,CAAC;IAC9C;IAEA,SAASyB,UAAUA,CAAChB,KAAK,EAAE;MACzB/B,SAAS,GAAG,CAAC;MACbJ,UAAU,CAAC7R,KAAK,GAAG,KAAK;MACxB,IAAIwR,KAAK,CAACgC,QAAQ,EAAE;QAClB;MACF;MACAF,SAAS,CAACmB,qBAAqB,CAACT,KAAK,CAACI,YAAY,CAAC,CAAC;IACtD;IAEA,SAASa,uBAAuBA,CAACC,aAAa,EAAE;MAC9C,OAAOnF,KAAK,CAACC,IAAI,CAACkF,aAAa,EAAER,KAAK,IAAI,EAAE,CAAC,CAC1CrK,MAAM,CAACsK,IAAI,IAAIA,IAAI,CAACC,IAAI,KAAK,MAAM,IAAID,IAAI,CAACtT,IAAI,CAAC2D,UAAU,CAAC,QAAQ,CAAC,CAAC,CACtEmJ,GAAG,CAACwG,IAAI,IAAIA,IAAI,CAACI,SAAS,CAAC,CAAC,CAAC,CAC7B1K,MAAM,CAACQ,OAAO,CAAC;IACpB;IAEA,SAASsK,WAAWA,CAACnB,KAAK,EAAE;MAC1B,IAAIxC,KAAK,CAACgC,QAAQ,EAAE;QAClB;MACF;MACA,MAAM4B,UAAU,GAAGH,uBAAuB,CAACjB,KAAK,CAACkB,aAAa,CAAC;MAC/D,IAAI,CAACE,UAAU,CAACnV,MAAM,EAAE;QACtB;MACF;MACA+T,KAAK,CAACqB,cAAc,CAAC,CAAC;MACtB/B,SAAS,CAAC8B,UAAU,EAAE,OAAO,CAAC;IAChC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC8B2F;AACvC;AACI;AA2CxD,MAAMG,eAAe,GAAG,GAAG;AAC3B,MAAMC,eAAe,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA1CzB,MAAMhE,KAAK,GAAGC,OA6BZ;IAEF,MAAMC,IAAI,GAAGC,MAA0E;IACvF,MAAMjU,QAAQ,GAAGH,2EAAe,CAAC,CAAC;IAClC,MAAMkY,MAAM,GAAGvX,kDAAG,CAAC,IAAI,CAAC;IACxB,MAAMwX,WAAW,GAAGxX,kDAAG,CAAC,IAAI,CAAC;IAC7B,MAAMyX,WAAW,GAAG1X,uDAAQ,CAAC;MAC3B2X,OAAO,EAAE,KAAK;MACdC,CAAC,EAAE,CAAC;MACJC,CAAC,EAAE,CAAC;MACJpU,OAAO,EAAE;IACX,CAAC,CAAC;IAGF,MAAMqU,WAAW,GAAG9X,uDAAQ,CAAC;MAC3B2X,OAAO,EAAE,KAAK;MACdrQ,GAAG,EAAE,EAAE;MACPf,IAAI,EAAE,EAAE;MACRwR,SAAS,EAAE,EAAE;MACblC,KAAK,EAAE,CAAC;MACRmC,KAAK,EAAE,CAAC;MACRC,QAAQ,EAAE,CAAC;MACXC,OAAO,EAAE,CAAC;MACVC,OAAO,EAAE,CAAC;MACVC,QAAQ,EAAE,KAAK;MACfC,UAAU,EAAE,CAAC;MACbC,UAAU,EAAE,CAAC;MACbC,WAAW,EAAE,CAAC;MACdC,WAAW,EAAE;IACf,CAAC,CAAC;IACF,MAAMC,aAAa,GAAGzY,uDAAQ,CAAC;MAC7B2X,OAAO,EAAE,KAAK;MACdzM,GAAG,EAAE,EAAE;MACPM,MAAM,EAAE,EAAE;MACV5F,WAAW,EAAE,EAAE;MACf2F,OAAO,EAAE,EAAE;MACXE,MAAM,EAAE,EAAE;MACVC,OAAO,EAAE,EAAE;MACX7F,QAAQ,EAAE,EAAE;MACZ8F,UAAU,EAAE,EAAE;MACdK,IAAI,EAAE,EAAE;MACR0M,SAAS,EAAE,EAAE;MACbC,YAAY,EAAE,EAAE;MAChBC,UAAU,EAAE,EAAE;MACdC,SAAS,EAAE,KAAK;MAChBC,UAAU,EAAE,EAAE;MACdC,MAAM,EAAE,KAAK;MACbC,MAAM,EAAE,KAAK;MACbC,MAAM,EAAE,EAAE;MACVlW,KAAK,EAAE;IACT,CAAC,CAAC;IAEF,MAAMmW,gBAAgB,GAAGpZ,uDAAQ,CAAC,OAAO;MACvCqZ,SAAS,EAAE,eAAerB,WAAW,CAACI,OAAO,OAAOJ,WAAW,CAACK,OAAO,gBAAgBL,WAAW,CAACE,KAAK,YAAYF,WAAW,CAACG,QAAQ;IAC1I,CAAC,CAAC,CAAC;IAEH,MAAMmB,YAAY,GAAGtZ,uDAAQ,CAAC,MAAMyT,KAAK,CAAC8F,QAAQ,CAACjN,MAAM,CAAC3I,OAAO,IAAI6V,cAAc,CAAC7V,OAAO,CAAC,CAAC,CAAC;IAE9F,MAAM8V,SAAS,GAAGzZ,uDAAQ,CAAC,MAAM;MAC/B,IAAI,CAAC4X,WAAW,CAACjU,OAAO,EAAE;QACxB,OAAO,EAAE;MACX;MACA,MAAM+V,YAAY,GAAG9B,WAAW,CAACjU,OAAO,CAACgW,SAAS,KAAK,KAAK;MAC5D,IAAIC,iBAAiB,CAAChC,WAAW,CAACjU,OAAO,CAAC,EAAE;QAC1C,OAAO,CACL,IAAI+V,YAAY,GAAG,CAAC;UAAEG,MAAM,EAAE,MAAM;UAAEC,KAAK,EAAE;QAAK,CAAC,CAAC,GAAG,EAAE,CAAC,EAC1D;UAAED,MAAM,EAAE,MAAM;UAAEC,KAAK,EAAE;QAAK,CAAC,EAC/B;UAAED,MAAM,EAAE,QAAQ;UAAEC,KAAK,EAAE;QAAK,CAAC,EACjC;UAAED,MAAM,EAAE,QAAQ;UAAEC,KAAK,EAAE;QAAK,CAAC,CAClC;MACH;MACA,MAAMC,aAAa,GAAGC,UAAU,CAACpC,WAAW,CAACjU,OAAO,CAAC,GAAG,MAAM,GAAG,IAAI;MACrE,MAAMsW,WAAW,GAAGxG,KAAK,CAACyG,eAAe,KAAKC,eAAe,CAACvC,WAAW,CAACjU,OAAO,CAAC,GAAG,MAAM,GAAG,IAAI;MAClG,MAAMgT,KAAK,GAAG,CACZ;QAAEkD,MAAM,EAAE,MAAM;QAAEC,KAAK,EAAE;MAAK,CAAC,EAC/B;QAAED,MAAM,EAAE,QAAQ;QAAEC,KAAK,EAAE;MAAK,CAAC,EACjC;QAAED,MAAM,EAAE,SAAS;QAAEC,KAAK,EAAE;MAAK,CAAC,EAClC;QAAED,MAAM,EAAE,UAAU;QAAEC,KAAK,EAAEC;MAAc,CAAC,EAC5C;QAAEF,MAAM,EAAE,KAAK;QAAEC,KAAK,EAAEG;MAAY,CAAC,EACrC;QAAEJ,MAAM,EAAE,OAAO;QAAEC,KAAK,EAAE;MAAK,CAAC,EAChC;QAAED,MAAM,EAAE,QAAQ;QAAEC,KAAK,EAAE;MAAK,CAAC,EACjC;QAAED,MAAM,EAAE,QAAQ;QAAEC,KAAK,EAAE;MAAK,CAAC,CAClC;MACD,IAAIJ,YAAY,EAAE;QAChB/C,KAAK,CAACyD,OAAO,CAAC;UAAEP,MAAM,EAAE,MAAM;UAAEC,KAAK,EAAE;QAAK,CAAC,CAAC;QAC9CnD,KAAK,CAAC0D,IAAI,CAAC;UAAER,MAAM,EAAE,QAAQ;UAAEC,KAAK,EAAE;QAAK,CAAC,CAAC;MAC/C,CAAC,MAAM,IAAIrG,KAAK,CAAC6G,eAAe,EAAE;QAChC3D,KAAK,CAAC0D,IAAI,CAAC;UAAER,MAAM,EAAE,QAAQ;UAAEC,KAAK,EAAE;QAAK,CAAC,CAAC;MAC/C;MACA,OAAOnD,KAAK;IACd,CAAC,CAAC;IAEF,SAAS4D,cAAcA,CAAA,EAAG;MACxBhD,uDAAQ,CAAC,MAAM;QACb,IAAIG,MAAM,CAACzV,KAAK,EAAE;UAChByV,MAAM,CAACzV,KAAK,CAACuY,SAAS,GAAG9C,MAAM,CAACzV,KAAK,CAACwY,YAAY;QACpD;MACF,CAAC,CAAC;IACJ;IAEA,SAASC,eAAeA,CAACC,SAAS,EAAE;MAClCpD,uDAAQ,CAAC,MAAM;QACb,IAAI,CAACG,MAAM,CAACzV,KAAK,IAAI,CAAC0Y,SAAS,EAAE;UAC/B;QACF;QACA,MAAMC,GAAG,GAAG5I,KAAK,CAACC,IAAI,CAACyF,MAAM,CAACzV,KAAK,CAAC4Y,gBAAgB,CAAC,cAAc,CAAC,CAAC,CAClE3P,IAAI,CAACsJ,OAAO,IAAIA,OAAO,CAACsG,OAAO,CAACC,UAAU,KAAKJ,SAAS,CAAC;QAC5D,IAAIC,GAAG,EAAE;UACPA,GAAG,CAACI,cAAc,CAAC;YAAEC,KAAK,EAAE,QAAQ;YAAEC,QAAQ,EAAE;UAAS,CAAC,CAAC;QAC7D;MACF,CAAC,CAAC;IACJ;IAEA5S,oDAAK,CACH,MAAMmL,KAAK,CAAC8F,QAAQ,CAACnJ,GAAG,CAACzM,OAAO,IAAI,GAAGA,OAAO,CAACmH,EAAE,IAAInH,OAAO,CAAC+B,MAAM,IAAI/B,OAAO,CAACwX,cAAc,IAAI,EAAE,IAAIxX,OAAO,CAACyX,UAAU,IAAI,EAAE,IAAIzX,OAAO,CAAC0X,QAAQ,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,CAACC,IAAI,CAAC,GAAG,CAAC,EAC3Kf,cAAc,EACd;MAAEgB,SAAS,EAAE;IAAK,CACpB,CAAC;IAEDjT,oDAAK,CACH,MAAMmL,KAAK,CAAC+H,kBAAkB,EAC9Bd,eACF,CAAC;IAEDjc,wDAAS,CAAC,MAAM;MACdoJ,QAAQ,CAAC0L,gBAAgB,CAAC,OAAO,EAAEkI,SAAS,CAAC;MAC7C5T,QAAQ,CAAC0L,gBAAgB,CAAC,SAAS,EAAEmI,iBAAiB,CAAC;MACvD7T,QAAQ,CAAC0L,gBAAgB,CAAC,aAAa,EAAEoI,aAAa,CAAC;MACvD9T,QAAQ,CAAC0L,gBAAgB,CAAC,WAAW,EAAEqI,aAAa,CAAC;IACvD,CAAC,CAAC;IAEF3b,8DAAe,CAAC,MAAM;MACpB4H,QAAQ,CAAC2L,mBAAmB,CAAC,OAAO,EAAEiI,SAAS,CAAC;MAChD5T,QAAQ,CAAC2L,mBAAmB,CAAC,SAAS,EAAEkI,iBAAiB,CAAC;MAC1D7T,QAAQ,CAAC2L,mBAAmB,CAAC,aAAa,EAAEmI,aAAa,CAAC;MAC1D9T,QAAQ,CAAC2L,mBAAmB,CAAC,WAAW,EAAEoI,aAAa,CAAC;IAC1D,CAAC,CAAC;IAEF,SAASzB,eAAeA,CAACxW,OAAO,EAAE;MAChC,OAAOpB,MAAM,CAACoB,OAAO,CAACyX,UAAU,IAAIzX,OAAO,CAACmH,EAAE,IAAI,EAAE,CAAC;IACvD;IAEA,SAAS+Q,kBAAkBA,CAAClY,OAAO,EAAE;MACnC,OAAOA,OAAO,IAAIA,OAAO,CAAC+B,MAAM,KAAK,QAAQ,IAAI/B,OAAO,CAAC+B,MAAM,KAAK,SAAS;IAC/E;IAEA,SAASoW,UAAUA,CAACnY,OAAO,EAAE;MAC3B,OAAO8P,KAAK,CAACsI,kBAAkB,CAACxX,QAAQ,CAAC4V,eAAe,CAACxW,OAAO,CAAC,CAAC;IACpE;IAEA,SAASqW,UAAUA,CAACrW,OAAO,EAAE;MAC3B,OAAO8P,KAAK,CAACuI,kBAAkB,CAACzX,QAAQ,CAAC4V,eAAe,CAACxW,OAAO,CAAC,CAAC;IACpE;IAEA,SAASsY,WAAWA,CAACtY,OAAO,EAAE;MAC5B,OAAO8P,KAAK,CAAC+H,kBAAkB,KAAKrB,eAAe,CAACxW,OAAO,CAAC;IAC9D;IAEA,SAASuY,cAAcA,CAACvY,OAAO,EAAE;MAC/B,OAAOA,OAAO,CAACgW,SAAS,KAAK,KAAK,KAAKhW,OAAO,CAAC0X,QAAQ,IAAI1X,OAAO,CAAC+B,MAAM,KAAK,UAAU,CAAC;IAC3F;IAEA,SAASkU,iBAAiBA,CAACjW,OAAO,EAAE;MAClC,OAAOA,OAAO,CAAC0X,QAAQ,IAAI1X,OAAO,CAAC+B,MAAM,KAAK,UAAU;IAC1D;IAEA,SAAS8T,cAAcA,CAAC7V,OAAO,EAAE;MAC/B,OAAOA,OAAO,EAAEL,IAAI,KAAK,OAAO,IAAIK,OAAO,EAAEkF,UAAU,EAAErB,GAAG;IAC9D;IAEA,SAAS2U,aAAaA,CAACxY,OAAO,EAAE;MAC9B,OAAOA,OAAO,EAAEL,IAAI,KAAK,MAAM,IAAIK,OAAO,EAAEkF,UAAU,EAAErB,GAAG;IAC7D;IAEA,SAAS4U,cAAcA,CAACzY,OAAO,EAAE;MAC/B,OAAO,CAACA,OAAO,EAAEL,IAAI,KAAK,OAAO,IAAI4B,MAAM,CAACvB,OAAO,EAAE0Y,WAAW,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK1Y,OAAO,EAAEkF,UAAU,EAAErB,GAAG;IAC3G;IAEA,SAAS8U,kBAAkBA,CAAC3Y,OAAO,EAAE;MACnC,OAAOuB,MAAM,CAACvB,OAAO,EAAE0Y,WAAW,IAAI,CAAC,CAAC,KAAK,EAAE,IAAIvP,OAAO,CAACyP,gBAAgB,CAAC5Y,OAAO,CAAC,CAAC;IACvF;IAEA,SAAS6Y,kBAAkBA,CAAC7Y,OAAO,EAAE;MACnC,OAAOuB,MAAM,CAACvB,OAAO,EAAE0Y,WAAW,IAAI,CAAC,CAAC,KAAK,GAAG;IAClD;IAEA,SAASI,eAAeA,CAAC9Y,OAAO,EAAE;MAChC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAACY,QAAQ,CAACW,MAAM,CAACvB,OAAO,EAAE0Y,WAAW,IAAI,CAAC,CAAC,CAAC;IAC7D;IAEA,SAASK,iBAAiBA,CAAC/Y,OAAO,EAAE;MAClC,MAAM0Y,WAAW,GAAGnX,MAAM,CAACvB,OAAO,EAAE0Y,WAAW,IAAI,CAAC,CAAC;MACrD,IAAIA,WAAW,KAAK,EAAE,EAAE;QACtB,OAAO,WAAW;MACpB;MACA,IAAIA,WAAW,KAAK,EAAE,EAAE;QACtB,OAAO,mBAAmB;MAC5B;MACA,OAAO9Z,MAAM,CAACoB,OAAO,EAAEoF,IAAI,IAAI,EAAE,CAAC;IACpC;IAEA,SAAS4T,oBAAoBA,CAAChZ,OAAO,EAAE;MACrC,MAAMoF,IAAI,GAAGxG,MAAM,CAACoB,OAAO,EAAEoF,IAAI,IAAI,EAAE,CAAC,CAACrC,IAAI,CAAC,CAAC;MAC/C,IAAIqC,IAAI,IAAIA,IAAI,KAAK,SAAS,EAAE;QAC9B,OAAOA,IAAI;MACb;MACA,MAAM6T,YAAY,GAAGjZ,OAAO,EAAEgW,SAAS,KAAK,KAAK,GAAG,GAAG,GAAIhW,OAAO,EAAEkZ,UAAU,IAAI,IAAK;MACvF,MAAMC,gBAAgB,GAAGnZ,OAAO,EAAEoZ,mBAAmB,IAAIC,0BAA0B,CAACrZ,OAAO,CAAC;MAC5F,OAAOmZ,gBAAe,GAClB,GAAGF,YAAY,MAAME,gBAAgB,KAAI,GACzC,GAAGF,YAAY,OAAO;IAC5B;IAEA,SAASI,0BAA0BA,CAACC,cAAc,EAAE;MAClD,MAAMC,YAAY,GAAGzJ,KAAK,CAAC8F,QAAQ,CAAC4D,SAAS,CAACvG,IAAI,IAAIuD,eAAe,CAACvD,IAAI,CAAC,KAAKuD,eAAe,CAAC8C,cAAc,CAAC,CAAC;MAChH,KAAK,IAAIlH,KAAK,GAAGmH,YAAY,GAAG,CAAC,EAAEnH,KAAK,IAAI,CAAC,EAAEA,KAAK,IAAI,CAAC,EAAE;QACzD,MAAMqH,SAAS,GAAG3J,KAAK,CAAC8F,QAAQ,CAACxD,KAAK,CAAC;QACvC,IAAIuG,kBAAkB,CAACc,SAAS,CAAC,EAAE;UACjC,OAAOA,SAAS,EAAEzD,SAAS,KAAK,KAAK,GAAG,GAAG,GAAIyD,SAAS,EAAEP,UAAU,IAAI,IAAK;QAC/E;MACF;MACA,OAAO,EAAE;IACX;IAEA,SAASN,gBAAgBA,CAAC5Y,OAAO,EAAE;MACjC,IAAIA,OAAO,EAAE0Z,SAAS,IAAI,OAAO1Z,OAAO,CAAC0Z,SAAS,KAAK,QAAQ,EAAE;QAC/D,OAAO1Z,OAAO,CAAC0Z,SAAS;MAC1B;MACA,MAAMtU,IAAI,GAAGxG,MAAM,CAACoB,OAAO,EAAEoF,IAAI,IAAI,EAAE,CAAC,CAACrC,IAAI,CAAC,CAAC;MAC/C,IAAI,CAACqC,IAAI,CAAC9B,UAAU,CAAC,GAAG,CAAC,EAAE;QACzB,OAAO,IAAI;MACb;MACA,IAAI;QACF,MAAM1B,OAAO,GAAG+X,IAAI,CAACC,KAAK,CAACxU,IAAI,CAAC;QAChC,OAAOxD,OAAO,EAAEiY,UAAU,IAAIjY,OAAO,EAAE8X,SAAS,IAAI,IAAI;MAC1D,CAAC,CAAC,OAAOpa,KAAK,EAAE;QACd,OAAO,IAAI;MACb;IACF;IAEA,SAASwa,iBAAiBA,CAAC9Z,OAAO,EAAE;MAClC,OAAOpB,MAAM,CAACga,gBAAgB,CAAC5Y,OAAO,CAAC,EAAE+Z,QAAQ,IAAI,WAAW,CAAC;IACnE;IAEA,SAASC,cAAcA,CAACha,OAAO,EAAE;MAC/B,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,CAACY,QAAQ,CAACZ,OAAO,EAAEkJ,gBAAgB,IAAI,EAAE,CAAC;IACvE;IAEA,SAAS+Q,eAAeA,CAACja,OAAO,EAAE;MAChC,OAAOga,cAAc,CAACha,OAAO,CAAC,IAAIA,OAAO,EAAEgW,SAAS,KAAK,IAAI;IAC/D;IAEA,SAASkE,eAAeA,CAACla,OAAO,EAAE;MAChC,MAAMuI,IAAI,GAAGvI,OAAO,EAAEgV,aAAa,EAAEzM,IAAI,IAAIvI,OAAO,EAAEma,UAAU,IAAI,EAAE;MACtE,IAAI5R,IAAI,KAAK,OAAO,EAAE;QACpB,OAAO,IAAI;MACb;MACA,IAAIA,IAAI,KAAK,OAAO,EAAE;QACpB,OAAO,KAAK;MACd;MACA,OAAO,EAAE;IACX;IAEA,SAAS6R,eAAeA,CAACpa,OAAO,EAAE;MAChC,OAAOA,OAAO,EAAEkZ,UAAU,IAAIlZ,OAAO,EAAEgV,aAAa,EAAE7S,WAAW,IAAInC,OAAO,EAAEsO,IAAI,IAAI,MAAM;IAC9F;IAEA,SAAS+L,qBAAqBA,CAACra,OAAO,EAAE;MACtC,OAAOpB,MAAM,CAACwb,eAAe,CAACpa,OAAO,CAAC,IAAI,GAAG,CAAC,CAACnB,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC;IAC1E;IAEA,SAASwb,iBAAiBA,CAACta,OAAO,EAAE;MAClC,MAAMua,OAAO,GAAGva,OAAO,EAAEgV,aAAa,IAAI,CAAC,CAAC;MAC5C,MAAMvN,GAAG,GAAG8S,OAAO,CAAC9S,GAAG,IAAIzH,OAAO,EAAEsO,IAAI,IAAI,EAAE;MAC9C,MAAMkM,aAAa,GAAGxe,QAAQ,CAACA,QAAQ,CAACuL,IAAI,CAACC,OAAO,IAAI5I,MAAM,CAAC4I,OAAO,CAACC,GAAG,IAAID,OAAO,CAACL,EAAE,IAAI,EAAE,CAAC,KAAKM,GAAG,CAAC,IAAI,IAAI;MAChH,MAAMgT,WAAW,GAAG7b,MAAM,CAAC4b,aAAa,EAAE3S,KAAK,IAAI,EAAE,CAAC,CAAC9E,IAAI,CAAC,CAAC;MAC7D,MAAMmS,YAAY,GAAGtW,MAAM,CAAC2b,OAAO,CAACrF,YAAY,IAAIuF,WAAW,IAAIF,OAAO,CAACG,WAAW,IAAI,EAAE,CAAC,CAAC3X,IAAI,CAAC,CAAC;MACpG,MAAMoS,UAAU,GAAGvW,MAAM,CAAC2b,OAAO,CAACpF,UAAU,IAAI,EAAE,CAAC,CAACpS,IAAI,CAAC,CAAC;MAC1D,MAAM+E,OAAO,GAAGyS,OAAO,CAACzS,OAAO,IAC1B0S,aAAa,EAAE5S,OAAO,EAAEzF,WAAW,IACnCqY,aAAa,EAAE5S,OAAO,EAAE9E,IAAI,IAC5B0X,aAAa,EAAErW,KAAK,IACpBiW,eAAe,CAACpa,OAAO,CAAC;MAC7B,MAAMmC,WAAW,GAAG+S,YAAY,IAAIC,UAAU,IAAIrN,OAAO,IAAIL,GAAG;MAChEuN,aAAa,CAACd,OAAO,GAAG,IAAI;MAC5Bc,aAAa,CAACvN,GAAG,GAAGA,GAAG;MACvBuN,aAAa,CAACjN,MAAM,GAAGwS,OAAO,CAACxS,MAAM,IAAIwS,OAAO,CAACzX,IAAI,IAAI0X,aAAa,EAAE5S,OAAO,EAAE9E,IAAI,IAAI2E,GAAG;MAC5FuN,aAAa,CAAC7S,WAAW,GAAGA,WAAW;MACvC6S,aAAa,CAAClN,OAAO,GAAGA,OAAO,IAAI,EAAE;MACrCkN,aAAa,CAAChN,MAAM,GAAGuS,OAAO,CAACvS,MAAM,IAAIwS,aAAa,EAAE5S,OAAO,EAAEI,MAAM,IAAI,EAAE;MAC7EgN,aAAa,CAAC/M,OAAO,GAAGsS,OAAO,CAACtS,OAAO,IAAIuS,aAAa,EAAEvS,OAAO,IAAIuS,aAAa,EAAE5S,OAAO,EAAEK,OAAO,IAAI,EAAE;MAC1G+M,aAAa,CAAC5S,QAAQ,GAAGmY,OAAO,CAACnY,QAAQ,IAAIoY,aAAa,EAAEpY,QAAQ,IAAIpC,OAAO,EAAE2a,cAAc,IAAI,EAAE;MACrG3F,aAAa,CAAC9M,UAAU,GAAGtJ,MAAM,CAACuD,WAAW,IAAI6S,aAAa,CAACvN,GAAG,IAAI,GAAG,CAAC,CAAC5I,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC;MACpGkW,aAAa,CAACzM,IAAI,GAAGgS,OAAO,CAAChS,IAAI,IAAIvI,OAAO,EAAEma,UAAU,IAAI,EAAE;MAC9DnF,aAAa,CAACC,SAAS,GAAGiF,eAAe,CAACla,OAAO,CAAC;MAClDgV,aAAa,CAACE,YAAY,GAAGA,YAAY;MACzCF,aAAa,CAACG,UAAU,GAAGA,UAAU;MACrCH,aAAa,CAACI,SAAS,GAAGjM,OAAO,CAACoR,OAAO,CAACnF,SAAS,IAAIoF,aAAa,CAAC;MACrExF,aAAa,CAACK,UAAU,GAAGH,YAAY;MACvCF,aAAa,CAACM,MAAM,GAAG,KAAK;MAC5BN,aAAa,CAACO,MAAM,GAAG,KAAK;MAC5BP,aAAa,CAACQ,MAAM,GAAG,EAAE;MACzBR,aAAa,CAAC1V,KAAK,GAAG,EAAE;MACxBwY,SAAS,CAAC,CAAC;IACb;IAEA,SAAS8C,kBAAkBA,CAAA,EAAG;MAC5B,IAAI5F,aAAa,CAACM,MAAM,IAAIN,aAAa,CAACO,MAAM,EAAE;QAChD;MACF;MACAP,aAAa,CAACd,OAAO,GAAG,KAAK;IAC/B;IAEA,eAAe2G,kBAAkBA,CAAA,EAAG;MAClC,IAAI,CAAC7F,aAAa,CAACvN,GAAG,IAAIuN,aAAa,CAACO,MAAM,IAAIP,aAAa,CAACM,MAAM,EAAE;QACtE;MACF;MACAN,aAAa,CAACO,MAAM,GAAG,IAAI;MAC3BP,aAAa,CAACQ,MAAM,GAAG,EAAE;MACzBR,aAAa,CAAC1V,KAAK,GAAG,EAAE;MACxB,MAAMiM,EAAE,GAAG,MAAMvP,QAAQ,CAAC8e,UAAU,CAAC9F,aAAa,CAACvN,GAAG,CAAC;MACvD,IAAI8D,EAAE,IAAI3M,MAAM,CAAC5C,QAAQ,CAACyP,WAAW,IAAI,EAAE,CAAC,CAAC7K,QAAQ,CAAC,QAAQ,CAAC,EAAE;QAC/DoU,aAAa,CAACI,SAAS,GAAG,IAAI;QAC9B,MAAMvN,KAAK,GAAGmN,aAAa,CAACK,UAAU,CAACtS,IAAI,CAAC,CAAC;QAC7C,IAAIgY,UAAU,GAAG,KAAK;QACtB,IAAIlT,KAAK,EAAE;UACTkT,UAAU,GAAG,MAAM/e,QAAQ,CAACwP,kBAAkB,CAACwJ,aAAa,CAACvN,GAAG,EAAEI,KAAK,CAAC;UACxE,IAAIkT,UAAU,EAAE;YACd/F,aAAa,CAACE,YAAY,GAAGrN,KAAK;YAClCmN,aAAa,CAAC7S,WAAW,GAAG0F,KAAK;YACjCmN,aAAa,CAAC9M,UAAU,GAAGtJ,MAAM,CAACiJ,KAAK,IAAImN,aAAa,CAACvN,GAAG,IAAI,GAAG,CAAC,CAAC5I,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC;UAChG;QACF;QACA,MAAM9C,QAAQ,CAACE,eAAe,CAAC;UAAEyE,KAAK,EAAE;QAAK,CAAC,CAAC,CAACyK,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QAC/D,IAAIvD,KAAK,IAAI,CAACkT,UAAU,EAAE;UACxB/F,aAAa,CAACQ,MAAM,GAAG,EAAE;UACzBR,aAAa,CAAC1V,KAAK,GAAGtD,QAAQ,CAACyP,WAAW,GACtC,WAAWzP,QAAQ,CAACyP,WAAW,EAAE,GACjC,iBAAiB;QACvB,CAAC,MAAM;UACLuJ,aAAa,CAACQ,MAAM,GAAG3N,KAAK,GAAG,eAAe,GAAI0D,EAAE,GAAG,QAAQ,GAAG,MAAO;QAC3E;QACAyE,IAAI,CAAC,wBAAwB,EAAE;UAAEjI,MAAM,EAAEiN,aAAa,CAACvN;QAAI,CAAC,CAAC;MAC/D,CAAC,MAAM;QACLuN,aAAa,CAAC1V,KAAK,GAAGtD,QAAQ,CAACyP,WAAW,IAAI,QAAQ;MACxD;MACAuJ,aAAa,CAACO,MAAM,GAAG,KAAK;IAC9B;IAEA,eAAeyF,eAAeA,CAAA,EAAG;MAC/B,IAAI,CAAChG,aAAa,CAACvN,GAAG,IAAIuN,aAAa,CAACM,MAAM,IAAIN,aAAa,CAACO,MAAM,EAAE;QACtE;MACF;MACAP,aAAa,CAACM,MAAM,GAAG,IAAI;MAC3BN,aAAa,CAACQ,MAAM,GAAG,EAAE;MACzBR,aAAa,CAAC1V,KAAK,GAAG,EAAE;MACxB,MAAMiM,EAAE,GAAG,MAAMvP,QAAQ,CAACwP,kBAAkB,CAACwJ,aAAa,CAACvN,GAAG,EAAEuN,aAAa,CAACK,UAAU,CAAC;MACzF,IAAI9J,EAAE,EAAE;QACN,MAAMvP,QAAQ,CAACE,eAAe,CAAC;UAAEyE,KAAK,EAAE;QAAK,CAAC,CAAC,CAACyK,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QAC/D,MAAMvD,KAAK,GAAGmN,aAAa,CAACK,UAAU,CAACtS,IAAI,CAAC,CAAC;QAC7CiS,aAAa,CAACE,YAAY,GAAGrN,KAAK;QAClCmN,aAAa,CAAC7S,WAAW,GAAG0F,KAAK,IAAImN,aAAa,CAACG,UAAU,IAAIH,aAAa,CAAClN,OAAO,IAAIkN,aAAa,CAACvN,GAAG;QAC3GuN,aAAa,CAAC9M,UAAU,GAAGtJ,MAAM,CAACoW,aAAa,CAAC7S,WAAW,IAAI6S,aAAa,CAACvN,GAAG,IAAI,GAAG,CAAC,CAAC5I,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC;QAClHkW,aAAa,CAACQ,MAAM,GAAG,QAAQ;QAC/BxF,IAAI,CAAC,wBAAwB,EAAE;UAAEjI,MAAM,EAAEiN,aAAa,CAACvN;QAAI,CAAC,CAAC;MAC/D,CAAC,MAAM;QACLuN,aAAa,CAAC1V,KAAK,GAAGtD,QAAQ,CAACyP,WAAW,IAAI,SAAS;MACzD;MACAuJ,aAAa,CAACM,MAAM,GAAG,KAAK;IAC9B;IAEA,SAAS2F,eAAeA,CAACjb,OAAO,EAAE;MAChC,MAAMuI,IAAI,GAAGvI,OAAO,EAAEma,UAAU,IAAI,EAAE;MACtC,IAAI5R,IAAI,KAAK,OAAO,EAAE;QACpB,OAAO,mBAAmB;MAC5B;MACA,IAAIA,IAAI,KAAK,OAAO,EAAE;QACpB,OAAO,mBAAmB;MAC5B;MACA,OAAO,EAAE;IACX;IAEA,SAAS2S,cAAcA,CAACjJ,IAAI,EAAE;MAC5B,MAAMkJ,KAAK,GAAG5Z,MAAM,CAAC0Q,IAAI,IAAI,CAAC,CAAC;MAC/B,IAAIkJ,KAAK,IAAI,IAAI,GAAG,IAAI,EAAE;QACxB,OAAO,GAAG,CAACA,KAAK,GAAG,IAAI,GAAG,IAAI,EAAEC,OAAO,CAACD,KAAK,IAAI,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK;MACjF;MACA,IAAIA,KAAK,IAAI,IAAI,EAAE;QACjB,OAAO,GAAG,CAACA,KAAK,GAAG,IAAI,EAAEC,OAAO,CAACD,KAAK,IAAI,EAAE,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK;MACnE;MACA,OAAOA,KAAK,GAAG,CAAC,GAAG,GAAGA,KAAK,IAAI,GAAG,EAAE;IACtC;IAEA,SAASE,kBAAkBA,CAACrb,OAAO,EAAE;MACnC,IAAI8P,KAAK,CAACwL,aAAa,EAAE;QACvBtL,IAAI,CAAC,eAAe,EAAEhQ,OAAO,CAAC;MAChC;IACF;IAEA,SAASub,gBAAgBA,CAACvb,OAAO,EAAE;MACjC,IAAI8P,KAAK,CAACwL,aAAa,EAAE;QACvBtL,IAAI,CAAC,eAAe,EAAEhQ,OAAO,CAAC;QAC9B;MACF;MACAwb,eAAe,CAACxb,OAAO,CAAC;IAC1B;IAEA,SAASwb,eAAeA,CAACxb,OAAO,EAAE;MAChC,MAAMkF,UAAU,GAAGlF,OAAO,EAAEkF,UAAU,IAAI,CAAC,CAAC;MAC5C,IAAI,CAACA,UAAU,CAACrB,GAAG,EAAE;QACnB;MACF;MACAiU,SAAS,CAAC,CAAC;MACXzD,WAAW,CAACH,OAAO,GAAG,IAAI;MAC1B,MAAM9B,KAAK,GAAGuD,YAAY,CAACrX,KAAK,CAACkb,SAAS,CAACvG,IAAI,IAAIuD,eAAe,CAACvD,IAAI,CAAC,KAAKuD,eAAe,CAACxW,OAAO,CAAC,CAAC;MACtGyb,eAAe,CAACrJ,KAAK,IAAI,CAAC,GAAGA,KAAK,GAAG,CAAC,CAAC;IACzC;IAEA,SAASqJ,eAAeA,CAACrJ,KAAK,EAAE;MAC9B,MAAMsJ,MAAM,GAAG/F,YAAY,CAACrX,KAAK;MACjC,IAAI,CAACod,MAAM,CAACnd,MAAM,EAAE;QAClBod,gBAAgB,CAAC,CAAC;QAClB;MACF;MACA,MAAMC,eAAe,GAAG,CAACxJ,KAAK,GAAGsJ,MAAM,CAACnd,MAAM,IAAImd,MAAM,CAACnd,MAAM;MAC/D,MAAM2G,UAAU,GAAGwW,MAAM,CAACE,eAAe,CAAC,EAAE1W,UAAU,IAAI,CAAC,CAAC;MAC5DmP,WAAW,CAACjC,KAAK,GAAGwJ,eAAe;MACnCvH,WAAW,CAACC,SAAS,GAAGpP,UAAU,CAACrB,GAAG,IAAI,EAAE;MAC5CwQ,WAAW,CAACxQ,GAAG,GAAGiB,+EAAe,CAACI,UAAU,CAACrB,GAAG,IAAI,EAAE,CAAC;MACvDwQ,WAAW,CAACvR,IAAI,GAAGoC,UAAU,CAACpC,IAAI,IAAI,MAAM8Y,eAAe,GAAG,CAAC,EAAE;MACjEC,gBAAgB,CAAC,CAAC;IACpB;IAEA,SAASC,iBAAiBA,CAAA,EAAG;MAC3BL,eAAe,CAACpH,WAAW,CAACjC,KAAK,GAAG,CAAC,CAAC;IACxC;IAEA,SAAS2J,aAAaA,CAAA,EAAG;MACvBN,eAAe,CAACpH,WAAW,CAACjC,KAAK,GAAG,CAAC,CAAC;IACxC;IAEA,SAASuJ,gBAAgBA,CAAA,EAAG;MAC1BtH,WAAW,CAACH,OAAO,GAAG,KAAK;MAC3BG,WAAW,CAACM,QAAQ,GAAG,KAAK;MAC5BN,WAAW,CAACC,SAAS,GAAG,EAAE;IAC5B;IAEA,SAASuH,gBAAgBA,CAAA,EAAG;MAC1BxH,WAAW,CAACE,KAAK,GAAG,CAAC;MACrBF,WAAW,CAACG,QAAQ,GAAG,CAAC;MACxBH,WAAW,CAACI,OAAO,GAAG,CAAC;MACvBJ,WAAW,CAACK,OAAO,GAAG,CAAC;IACzB;IAEA,SAASsH,eAAeA,CAAC1d,KAAK,EAAE;MAC9B,OAAO8C,IAAI,CAACE,GAAG,CAACwS,eAAe,EAAE1S,IAAI,CAACC,GAAG,CAACwS,eAAe,EAAEtS,MAAM,CAACjD,KAAK,CAAC8c,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvF;IAEA,SAASa,aAAaA,CAAC3d,KAAK,EAAE4d,OAAO,GAAG,IAAI,EAAEC,OAAO,GAAG,IAAI,EAAE;MAC5D,MAAMC,aAAa,GAAG/H,WAAW,CAACE,KAAK;MACvC,MAAM8H,SAAS,GAAGL,eAAe,CAAC1d,KAAK,CAAC;MACxC,IAAI+d,SAAS,KAAKD,aAAa,EAAE;QAC/B;MACF;MAEA,IAAIF,OAAO,KAAK,IAAI,IAAIC,OAAO,KAAK,IAAI,IAAInI,WAAW,CAAC1V,KAAK,EAAE;QAC7D,MAAMge,IAAI,GAAGtI,WAAW,CAAC1V,KAAK,CAACie,qBAAqB,CAAC,CAAC;QACtD,MAAMC,OAAO,GAAGF,IAAI,CAACG,IAAI,GAAGH,IAAI,CAACI,KAAK,GAAG,CAAC;QAC1C,MAAMC,OAAO,GAAGL,IAAI,CAACM,GAAG,GAAGN,IAAI,CAACO,MAAM,GAAG,CAAC;QAC1C,MAAMC,KAAK,GAAGT,SAAS,GAAGD,aAAa,GAAG,CAAC;QAC3C/H,WAAW,CAACI,OAAO,IAAI,CAACyH,OAAO,GAAGM,OAAO,GAAGnI,WAAW,CAACI,OAAO,IAAIqI,KAAK;QACxEzI,WAAW,CAACK,OAAO,IAAI,CAACyH,OAAO,GAAGQ,OAAO,GAAGtI,WAAW,CAACK,OAAO,IAAIoI,KAAK;MAC1E;MAEAzI,WAAW,CAACE,KAAK,GAAG8H,SAAS;MAC7B,IAAIA,SAAS,IAAI,CAAC,EAAE;QAClBhI,WAAW,CAACI,OAAO,GAAG,CAAC;QACvBJ,WAAW,CAACK,OAAO,GAAG,CAAC;MACzB;IACF;IAEA,SAASqI,SAASA,CAACC,KAAK,EAAE;MACxBf,aAAa,CAAC5H,WAAW,CAACE,KAAK,GAAGyI,KAAK,CAAC;IAC1C;IAEA,SAASC,WAAWA,CAAA,EAAG;MACrB5I,WAAW,CAACG,QAAQ,GAAG,CAACH,WAAW,CAACG,QAAQ,GAAG,EAAE,IAAI,GAAG;IAC1D;IAEA,SAAS0I,gBAAgBA,CAAC5K,KAAK,EAAE;MAC/B,MAAM6K,MAAM,GAAG7K,KAAK,CAAC8K,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI;MACjDnB,aAAa,CAAC5H,WAAW,CAACE,KAAK,GAAG4I,MAAM,EAAE7K,KAAK,CAAC+K,OAAO,EAAE/K,KAAK,CAACgL,OAAO,CAAC;IACzE;IAEA,SAASC,cAAcA,CAACjL,KAAK,EAAE;MAC7B,IAAI,CAAC+B,WAAW,CAACH,OAAO,IAAIG,WAAW,CAACE,KAAK,IAAI,CAAC,EAAE;QAClD;MACF;MACAF,WAAW,CAACM,QAAQ,GAAG,IAAI;MAC3BN,WAAW,CAACO,UAAU,GAAGtC,KAAK,CAAC+K,OAAO;MACtChJ,WAAW,CAACQ,UAAU,GAAGvC,KAAK,CAACgL,OAAO;MACtCjJ,WAAW,CAACS,WAAW,GAAGT,WAAW,CAACI,OAAO;MAC7CJ,WAAW,CAACU,WAAW,GAAGV,WAAW,CAACK,OAAO;IAC/C;IAEA,SAASsD,aAAaA,CAAC1F,KAAK,EAAE;MAC5B,IAAI,CAAC+B,WAAW,CAACM,QAAQ,EAAE;QACzB;MACF;MACAN,WAAW,CAACI,OAAO,GAAGJ,WAAW,CAACS,WAAW,GAAGxC,KAAK,CAAC+K,OAAO,GAAGhJ,WAAW,CAACO,UAAU;MACtFP,WAAW,CAACK,OAAO,GAAGL,WAAW,CAACU,WAAW,GAAGzC,KAAK,CAACgL,OAAO,GAAGjJ,WAAW,CAACQ,UAAU;IACxF;IAEA,SAASoD,aAAaA,CAAA,EAAG;MACvB5D,WAAW,CAACM,QAAQ,GAAG,KAAK;IAC9B;IAEA,SAAS6I,eAAeA,CAAA,EAAG;MACzB,IAAI,CAACnJ,WAAW,CAACC,SAAS,EAAE;QAC1B;MACF;MACA,MAAMmJ,WAAW,GAAG,IAAI9Z,GAAG,CAAC,yBAAyB,EAAEnD,MAAM,CAAC+C,QAAQ,CAACma,MAAM,CAAC;MAC9ED,WAAW,CAACzZ,YAAY,CAACC,GAAG,CAAC,KAAK,EAAEoQ,WAAW,CAACC,SAAS,CAAC;MAC1DmJ,WAAW,CAACzZ,YAAY,CAACC,GAAG,CAAC,MAAM,EAAEoQ,WAAW,CAACvR,IAAI,IAAI,OAAO,CAAC;MAEjE,MAAM6a,IAAI,GAAGzZ,QAAQ,CAACI,aAAa,CAAC,GAAG,CAAC;MACxCqZ,IAAI,CAAC5Z,IAAI,GAAG0Z,WAAW,CAAC7Z,QAAQ,CAAC,CAAC;MAClC+Z,IAAI,CAACC,QAAQ,GAAGvJ,WAAW,CAACvR,IAAI,IAAI,OAAO;MAC3CoB,QAAQ,CAAC2Z,IAAI,CAACpZ,WAAW,CAACkZ,IAAI,CAAC;MAC/BA,IAAI,CAACpM,KAAK,CAAC,CAAC;MACZoM,IAAI,CAACG,MAAM,CAAC,CAAC;IACf;IAEA,SAASC,QAAQA,CAACzL,KAAK,EAAEtS,OAAO,EAAE;MAChC,IAAI,CAACkY,kBAAkB,CAAClY,OAAO,CAAC,EAAE;QAChC8X,SAAS,CAAC,CAAC;QACX;MACF;MACA7D,WAAW,CAACC,OAAO,GAAG,IAAI;MAC1BD,WAAW,CAACjU,OAAO,GAAGA,OAAO;MAC7BiU,WAAW,CAACE,CAAC,GAAG/S,IAAI,CAACE,GAAG,CAACgR,KAAK,CAAC+K,OAAO,EAAE7c,MAAM,CAACwd,UAAU,GAAG,GAAG,CAAC;MAChE/J,WAAW,CAACG,CAAC,GAAGhT,IAAI,CAACE,GAAG,CAACgR,KAAK,CAACgL,OAAO,EAAE9c,MAAM,CAACyd,WAAW,GAAG,GAAG,CAAC;IACnE;IAEA,SAASnG,SAASA,CAAA,EAAG;MACnB7D,WAAW,CAACC,OAAO,GAAG,KAAK;MAC3BD,WAAW,CAACjU,OAAO,GAAG,IAAI;IAC5B;IAEA,SAAS+X,iBAAiBA,CAACzF,KAAK,EAAE;MAChC,IAAI+B,WAAW,CAACH,OAAO,IAAI5B,KAAK,CAAC4L,GAAG,KAAK,WAAW,EAAE;QACpD5L,KAAK,CAACqB,cAAc,CAAC,CAAC;QACtBmI,iBAAiB,CAAC,CAAC;QACnB;MACF;MACA,IAAIzH,WAAW,CAACH,OAAO,IAAI5B,KAAK,CAAC4L,GAAG,KAAK,YAAY,EAAE;QACrD5L,KAAK,CAACqB,cAAc,CAAC,CAAC;QACtBoI,aAAa,CAAC,CAAC;QACf;MACF;MACA,IAAIzJ,KAAK,CAAC4L,GAAG,KAAK,QAAQ,EAAE;QAC1B,IAAIlJ,aAAa,CAACd,OAAO,EAAE;UACzB0G,kBAAkB,CAAC,CAAC;QACtB;QACA,IAAIvG,WAAW,CAACH,OAAO,EAAE;UACvByH,gBAAgB,CAAC,CAAC;QACpB;QACA7D,SAAS,CAAC,CAAC;MACb;IACF;IAEA,SAASqG,gBAAgBA,CAACjI,MAAM,EAAE;MAChC,IAAIjC,WAAW,CAACjU,OAAO,EAAE;QACvBgQ,IAAI,CAAC,gBAAgB,EAAE;UAAEkG,MAAM;UAAElW,OAAO,EAAEiU,WAAW,CAACjU;QAAQ,CAAC,CAAC;MAClE;MACA8X,SAAS,CAAC,CAAC;IACb;IAEA,SAASsG,UAAUA,CAACpU,SAAS,EAAE;MAC7B,OAAO,IAAIC,IAAI,CAACC,cAAc,CAAC,OAAO,EAAE;QACtCI,IAAI,EAAE,SAAS;QACfC,MAAM,EAAE,SAAS;QACjBE,MAAM,EAAE,KAAK;QACbC,QAAQ,EAAET,IAAI,CAACC,cAAc,CAAC,CAAC,CAACS,eAAe,CAAC,CAAC,CAACD;MACpD,CAAC,CAAC,CAACE,MAAM,CAACZ,SAAS,CAAC;IACtB;IAEA,SAASqU,aAAaA,CAACre,OAAO,EAAE;MAC9B,IAAIA,OAAO,CAACgW,SAAS,KAAK,KAAK,IAAIhW,OAAO,CAAC+B,MAAM,KAAK,QAAQ,IAAI/B,OAAO,CAAC+B,MAAM,KAAK,UAAU,IAAI/B,OAAO,CAAC0X,QAAQ,EAAE;QACnH,OAAO,EAAE;MACX;MAEA,MAAM4G,KAAK,GAAGte,OAAO,CAACwX,cAAc,IAAIxX,OAAO,CAAC+B,MAAM;MACtD,IAAIuc,KAAK,KAAK,MAAM,EAAE;QACpB,OAAO,MAAM;MACf;MACA,IAAIA,KAAK,KAAK,WAAW,EAAE;QACzB,OAAO,WAAW;MACpB;MACA,IAAIA,KAAK,KAAK,MAAM,EAAE;QACpB,OAAO,MAAM;MACf;MACA,OAAO,EAAE;IACX;IAEA,SAASC,aAAaA,CAACve,OAAO,EAAE;MAC9B,MAAMse,KAAK,GAAGD,aAAa,CAACre,OAAO,CAAC;MACpC,IAAIse,KAAK,KAAK,MAAM,EAAE;QACpB,OAAO,MAAM;MACf;MACA,IAAIA,KAAK,KAAK,WAAW,EAAE;QACzB,OAAO,OAAO;MAChB;MACA,IAAIA,KAAK,KAAK,MAAM,EAAE;QACpB,OAAO,KAAK;MACd;MACA,OAAO,EAAE;IACX;IAEA,SAASE,WAAWA,CAACxe,OAAO,EAAE;MAC5B,IAAIA,OAAO,CAAC+B,MAAM,KAAK,QAAQ,EAAE;QAC/B,IAAI/B,OAAO,CAACye,SAAS,EAAE;UACrB,OAAOze,OAAO,CAACV,KAAK,GAAG,MAAMU,OAAO,CAACV,KAAK,IAAIU,OAAO,CAACye,SAAS,GAAG,GAAG,MAAMze,OAAO,CAACye,SAAS,EAAE;QAChG;QACA,OAAOze,OAAO,CAACV,KAAK,GAAG,MAAMU,OAAO,CAACV,KAAK,EAAE,GAAG,IAAI;MACrD;MACA,OAAO,EAAE;IACX;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACh1B2C;AACS;AACI;;;;IAExD,MAAMtD,QAAQ,GAAGH,0EAAe,CAAC,CAAC;IAClC,MAAM2L,OAAO,GAAGnL,uDAAQ,CAAC,MAAML,QAAQ,CAAC0iB,aAAa,CAAC;IACtD,MAAMC,UAAU,GAAGtiB,uDAAQ,CAAC,MAAMmL,OAAO,CAAClJ,KAAK,EAAEuJ,KAAK,IAAI,KAAK,CAAC;IAChE,MAAM+W,QAAQ,GAAGviB,uDAAQ,CAAC,MAAMmL,OAAO,CAAClJ,KAAK,EAAEsJ,OAAO,EAAEzF,WAAW,IAAIqF,OAAO,CAAClJ,KAAK,EAAEsJ,OAAO,EAAE9E,IAAI,IAAI0E,OAAO,CAAClJ,KAAK,EAAEmJ,GAAG,IAAI,EAAE,CAAC;IAChI,MAAMO,MAAM,GAAG3L,uDAAQ,CAAC,MAAMmL,OAAO,CAAClJ,KAAK,EAAEsJ,OAAO,EAAEI,MAAM,IAAI,IAAI,CAAC;IACrE,MAAMC,OAAO,GAAG5L,uDAAQ,CAAC,MAAMmL,OAAO,CAAClJ,KAAK,EAAEsJ,OAAO,EAAEK,OAAO,IAAI,IAAI,CAAC;IACvE,MAAM4W,YAAY,GAAGriB,kDAAG,CAAC,KAAK,CAAC;IAC/B,MAAM6Y,UAAU,GAAG7Y,kDAAG,CAAC,EAAE,CAAC;IAC1B,MAAMsiB,WAAW,GAAGtiB,kDAAG,CAAC,KAAK,CAAC;IAC9B,MAAMuiB,UAAU,GAAGviB,kDAAG,CAAC,EAAE,CAAC;IAE1BmI,oDAAK,CAAC6C,OAAO,EAAE,MAAM;MACnBqX,YAAY,CAACvgB,KAAK,GAAG,KAAK;MAC1BygB,UAAU,CAACzgB,KAAK,GAAG,EAAE;IACvB,CAAC,CAAC;IAEF,SAAS0gB,eAAeA,CAAA,EAAG;MACzB3J,UAAU,CAAC/W,KAAK,GAAGkJ,OAAO,CAAClJ,KAAK,EAAEuJ,KAAK,IAAI,EAAE;MAC7CkX,UAAU,CAACzgB,KAAK,GAAG,EAAE;MACrBugB,YAAY,CAACvgB,KAAK,GAAG,IAAI;IAC3B;IAEA,SAAS2gB,gBAAgBA,CAAA,EAAG;MAC1B,IAAIH,WAAW,CAACxgB,KAAK,EAAE;QACrB;MACF;MACAugB,YAAY,CAACvgB,KAAK,GAAG,KAAK;MAC1BygB,UAAU,CAACzgB,KAAK,GAAG,EAAE;IACvB;IAEA,eAAe4gB,WAAWA,CAAA,EAAG;MAC3B,IAAI,CAAC1X,OAAO,CAAClJ,KAAK,EAAE;QAClB;MACF;MACAwgB,WAAW,CAACxgB,KAAK,GAAG,IAAI;MACxBygB,UAAU,CAACzgB,KAAK,GAAG,EAAE;MACrB,MAAMiN,EAAE,GAAG,MAAMvP,QAAQ,CAACwP,kBAAkB,CAAChE,OAAO,CAAClJ,KAAK,CAACmJ,GAAG,EAAE4N,UAAU,CAAC/W,KAAK,CAAC;MACjFwgB,WAAW,CAACxgB,KAAK,GAAG,KAAK;MACzB,IAAIiN,EAAE,EAAE;QACNsT,YAAY,CAACvgB,KAAK,GAAG,KAAK;QAC1B;MACF;MACAygB,UAAU,CAACzgB,KAAK,GAAGtC,QAAQ,CAACyP,WAAW,IAAI,SAAS;IACtD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9E+B;AAC+B;;;;IAE9D,MAAM3P,aAAa,GAAGH,oFAAoB,CAAC,CAAC;IAC5C,MAAMwjB,SAAS,GAAG9iB,uDAAQ,CAAC,MAAMP,aAAa,CAACsjB,cAAc,EAAElB,GAAG,IAAI,EAAE,CAAC;IAEzE,SAASmB,aAAaA,CAACpM,IAAI,EAAE;MAC3B,IAAIA,IAAI,CAACqM,iBAAiB,EAAE;QAC1B,OAAOrM,IAAI,CAACqM,iBAAiB;MAC/B;MACA,MAAM3X,YAAY,GAAG7L,aAAa,CAACA,aAAa,CAACyL,IAAI,CAACgY,KAAK,IAAIA,KAAK,CAACpY,EAAE,KAAK8L,IAAI,CAACuM,cAAc,CAAC;MAChG,OAAO7X,YAAY,EAAExD,KAAK,IAAI8O,IAAI,CAACuM,cAAc,IAAI,MAAM;IAC7D;IAEA,SAASC,eAAeA,CAACxM,IAAI,EAAE;MAC7B,IAAIA,IAAI,CAACyE,QAAQ,EAAE;QACjB,OAAO,IAAIzE,IAAI,CAACyM,YAAY,IAAI,KAAK,GAAG;MAC1C;MACA,IAAIzM,IAAI,CAAC0M,OAAO,EAAE;QAChB,OAAO1M,IAAI,CAAC0M,OAAO;MACrB;MACA,IAAI1M,IAAI,CAAC7N,IAAI,EAAE;QACb,OAAO6N,IAAI,CAAC7N,IAAI;MAClB;MACA,IAAI6N,IAAI,CAACtT,IAAI,KAAK,OAAO,EAAE;QACzB,OAAO,MAAM;MACf;MACA,IAAIsT,IAAI,CAACtT,IAAI,KAAK,MAAM,EAAE;QACxB,OAAO,QAAQsT,IAAI,CAAC/N,UAAU,EAAEpC,IAAI,IAAI,IAAI,EAAE;MAChD;MACA,OAAO,SAAS;IAClB;IAEA,SAAS8c,kBAAkBA,CAAC5V,SAAS,EAAE;MACrC,MAAM1L,KAAK,GAAGiD,MAAM,CAACyI,SAAS,IAAI,CAAC,CAAC;MACpC,IAAI,CAAC1L,KAAK,EAAE;QACV,OAAO,EAAE;MACX;MACA,OAAO,IAAI2L,IAAI,CAACC,cAAc,CAAC,OAAO,EAAE;QACtCE,KAAK,EAAE,SAAS;QAChBC,GAAG,EAAE,SAAS;QACdC,IAAI,EAAE,SAAS;QACfC,MAAM,EAAE,SAAS;QACjBE,MAAM,EAAE;MACV,CAAC,CAAC,CAACG,MAAM,CAACtM,KAAK,CAAC;IAClB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnBoC;AAC0B;AACL;AACD;;;;IAExD,MAAMxC,aAAa,GAAGH,oFAAoB,CAAC,CAAC;IAC5C,MAAMI,UAAU,GAAGH,+EAAkB,CAAC,CAAC;IACvC,MAAMikB,QAAQ,GAAGxjB,uDAAQ,CAAC,MAAMP,aAAa,CAACsjB,cAAc,CAAC;IAC7D,MAAM5J,MAAM,GAAGhZ,kDAAG,CAAC,EAAE,CAAC;IACtB,MAAM8C,KAAK,GAAG9C,kDAAG,CAAC,EAAE,CAAC;IAErB,SAASsjB,aAAaA,CAAA,EAAG;MACvBtK,MAAM,CAAClX,KAAK,GAAG,EAAE;MACjBgB,KAAK,CAAChB,KAAK,GAAG,EAAE;IAClB;IAEA,SAAS+gB,aAAaA,CAACpM,IAAI,EAAE;MAC3B,IAAIA,IAAI,CAACqM,iBAAiB,EAAE;QAC1B,OAAOrM,IAAI,CAACqM,iBAAiB;MAC/B;MACA,MAAM3X,YAAY,GAAG7L,aAAa,CAACA,aAAa,CAACyL,IAAI,CAACgY,KAAK,IAAIA,KAAK,CAACpY,EAAE,KAAK8L,IAAI,CAACuM,cAAc,CAAC;MAChG,OAAO7X,YAAY,EAAExD,KAAK,IAAI8O,IAAI,CAACuM,cAAc,IAAI,MAAM;IAC7D;IAEA,SAASO,YAAYA,CAAC9M,IAAI,EAAE;MAC1B,OAAOA,IAAI,CAAC7N,IAAI,IAAI,EAAE;IACxB;IAEA,SAAS4a,eAAeA,CAAC/M,IAAI,EAAE;MAC7B,OAAOA,IAAI,EAAEtT,IAAI,KAAK,OAAO,IAAIsT,IAAI,EAAE/N,UAAU,EAAErB,GAAG;IACxD;IAEA,SAASoc,cAAcA,CAAChN,IAAI,EAAE;MAC5B,OAAOA,IAAI,EAAEtT,IAAI,KAAK,MAAM,IAAIsT,IAAI,EAAE/N,UAAU,EAAErB,GAAG;IACvD;IAEA,SAASqc,gBAAgBA,CAACjN,IAAI,EAAE;MAC9B,IAAI,CAACA,IAAI,EAAE;QACT,OAAO,EAAE;MACX;MACA,IAAIA,IAAI,CAAC7N,IAAI,EAAE;QACb,OAAO6N,IAAI,CAAC7N,IAAI;MAClB;MACA,IAAI6N,IAAI,CAACyE,QAAQ,EAAE;QACjB,OAAOzE,IAAI,CAACyM,YAAY,IAAI,KAAK;MACnC;MACA,IAAIM,eAAe,CAAC/M,IAAI,CAAC,EAAE;QACzB,OAAOA,IAAI,CAAC/N,UAAU,CAACrB,GAAG;MAC5B;MACA,IAAIoc,cAAc,CAAChN,IAAI,CAAC,EAAE;QACxB,OAAO,GAAGA,IAAI,CAAC/N,UAAU,CAACpC,IAAI,IAAI,IAAI,IAAImQ,IAAI,CAAC/N,UAAU,CAACrB,GAAG,EAAE,CAACd,IAAI,CAAC,CAAC;MACxE;MACA,OAAOkQ,IAAI,CAAC0M,OAAO,IAAI,EAAE;IAC3B;IAEA,SAASzE,cAAcA,CAACjJ,IAAI,EAAE;MAC5B,MAAMkJ,KAAK,GAAG5Z,MAAM,CAAC0Q,IAAI,IAAI,CAAC,CAAC;MAC/B,IAAIkJ,KAAK,IAAI,IAAI,GAAG,IAAI,EAAE;QACxB,OAAO,GAAG,CAACA,KAAK,GAAG,IAAI,GAAG,IAAI,EAAEC,OAAO,CAACD,KAAK,IAAI,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK;MACjF;MACA,IAAIA,KAAK,IAAI,IAAI,EAAE;QACjB,OAAO,GAAG,CAACA,KAAK,GAAG,IAAI,EAAEC,OAAO,CAACD,KAAK,IAAI,EAAE,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK;MACnE;MACA,OAAOA,KAAK,GAAG,CAAC,GAAG,GAAGA,KAAK,IAAI,GAAG,EAAE;IACtC;IAEA,SAASyE,kBAAkBA,CAAC5V,SAAS,EAAE;MACrC,MAAM1L,KAAK,GAAGiD,MAAM,CAACyI,SAAS,IAAI,CAAC,CAAC;MACpC,IAAI,CAAC1L,KAAK,EAAE;QACV,OAAO,EAAE;MACX;MACA,OAAO,IAAI2L,IAAI,CAACC,cAAc,CAAC,OAAO,EAAE;QACtCC,IAAI,EAAE,SAAS;QACfC,KAAK,EAAE,SAAS;QAChBC,GAAG,EAAE,SAAS;QACdC,IAAI,EAAE,SAAS;QACfC,MAAM,EAAE,SAAS;QACjBE,MAAM,EAAE;MACV,CAAC,CAAC,CAACG,MAAM,CAACtM,KAAK,CAAC;IAClB;IAEA,eAAe6hB,YAAYA,CAAA,EAAG;MAC5BL,aAAa,CAAC,CAAC;MACf,MAAM1a,IAAI,GAAG8a,gBAAgB,CAACL,QAAQ,CAACvhB,KAAK,IAAI,CAAC,CAAC,CAAC,CAACyE,IAAI,CAAC,CAAC;MAC1D,IAAI,CAACqC,IAAI,EAAE;QACT9F,KAAK,CAAChB,KAAK,GAAG,YAAY;QAC1B;MACF;MACA,IAAI;QACF,MAAM8hB,cAAc,CAAChb,IAAI,CAAC;QAC1BoQ,MAAM,CAAClX,KAAK,GAAG,KAAK;MACtB,CAAC,CAAC,OAAO+hB,SAAS,EAAE;QAClB/gB,KAAK,CAAChB,KAAK,GAAG,MAAM;MACtB;IACF;IAEA,eAAe8hB,cAAcA,CAAChb,IAAI,EAAE;MAClC,IAAIkb,SAAS,CAACC,SAAS,EAAEC,SAAS,EAAE;QAClC,MAAMF,SAAS,CAACC,SAAS,CAACC,SAAS,CAACpb,IAAI,CAAC;QACzC;MACF;MACA,MAAMyL,OAAO,GAAG3M,QAAQ,CAACI,aAAa,CAAC,UAAU,CAAC;MAClDuM,OAAO,CAACvS,KAAK,GAAG8G,IAAI;MACpByL,OAAO,CAACtM,YAAY,CAAC,UAAU,EAAE,UAAU,CAAC;MAC5CsM,OAAO,CAAC4P,KAAK,CAACC,QAAQ,GAAG,OAAO;MAChC7P,OAAO,CAAC4P,KAAK,CAAChE,IAAI,GAAG,SAAS;MAC9BvY,QAAQ,CAAC2Z,IAAI,CAACpZ,WAAW,CAACoM,OAAO,CAAC;MAClCA,OAAO,CAAC8P,MAAM,CAAC,CAAC;MAChBzc,QAAQ,CAAC0c,WAAW,CAAC,MAAM,CAAC;MAC5B1c,QAAQ,CAAC2Z,IAAI,CAACgD,WAAW,CAAChQ,OAAO,CAAC;IACpC;IAEA,SAASiQ,gBAAgBA,CAAA,EAAG;MAC1BhB,aAAa,CAAC,CAAC;MACf,MAAM7M,IAAI,GAAG4M,QAAQ,CAACvhB,KAAK;MAC3B,IAAI,CAAC2U,IAAI,EAAEuM,cAAc,EAAE;QACzBlgB,KAAK,CAAChB,KAAK,GAAG,SAAS;QACvB;MACF;MACA,MAAMqJ,YAAY,GAAG7L,aAAa,CAACA,aAAa,CAACyL,IAAI,CAACgY,KAAK,IAAIA,KAAK,CAACpY,EAAE,KAAK8L,IAAI,CAACuM,cAAc,CAAC;MAChG,IAAI,CAAC7X,YAAY,EAAE;QACjBrI,KAAK,CAAChB,KAAK,GAAG,kBAAkB;QAChCxC,aAAa,CAACG,0BAA0B,CAAC,CAAC;QAC1C;MACF;MACAF,UAAU,CAACglB,YAAY,CAAC,CAAC;MACzBjlB,aAAa,CAACklB,qBAAqB,CAAC/N,IAAI,CAACuM,cAAc,CAAC;MACxDhf,MAAM,CAACiB,UAAU,CAAC,MAAM;QACtB3F,aAAa,CAACmlB,YAAY,CAAC;UACzB9Z,EAAE,EAAE8L,IAAI,CAAC9L,EAAE,IAAI8L,IAAI,CAACiL,GAAG;UACvBzG,UAAU,EAAExE,IAAI,CAACwE,UAAU,IAAIxE,IAAI,CAACiL;QACtC,CAAC,CAAC;MACJ,CAAC,EAAE,GAAG,CAAC;IACT;IAEA,SAASgD,cAAcA,CAAA,EAAG;MACxBpB,aAAa,CAAC,CAAC;MACf,MAAM5B,GAAG,GAAG2B,QAAQ,CAACvhB,KAAK,EAAE4f,GAAG,IAAI,EAAE;MACrC,IAAI,CAACA,GAAG,EAAE;QACR;MACF;MACApiB,aAAa,CAAColB,cAAc,CAAChD,GAAG,CAAC;MACjC1I,MAAM,CAAClX,KAAK,GAAG,OAAO;IACxB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1IoC;AACgB;AACI;;;;IAExD,MAAMtC,QAAQ,GAAGH,0EAAe,CAAC,CAAC;IAClC,MAAMslB,OAAO,GAAG3kB,kDAAG,CAAC,EAAE,CAAC;IACvB,MAAM4kB,aAAa,GAAG5kB,kDAAG,CAAC,KAAK,CAAC;IAChC,MAAM6kB,UAAU,GAAG7kB,kDAAG,CAAC,EAAE,CAAC;IAE1B,MAAM8kB,gBAAgB,GAAGjlB,uDAAQ,CAAC,MAAM;MACtC,MAAMiC,KAAK,GAAG6iB,OAAO,CAAC7iB,KAAK,CAACijB,WAAW,CAAC,CAAC;MACzC,IAAI,CAACjjB,KAAK,EAAE;QACV,OAAOtC,QAAQ,CAACA,QAAQ;MAC1B;MACA,OAAOA,QAAQ,CAACA,QAAQ,CAAC2M,MAAM,CAACsK,IAAI,IAAI;QACtC,OAAOA,IAAI,CAAC9O,KAAK,CAACod,WAAW,CAAC,CAAC,CAAC3gB,QAAQ,CAACtC,KAAK,CAAC,IAC1C2U,IAAI,CAACuO,QAAQ,CAACD,WAAW,CAAC,CAAC,CAAC3gB,QAAQ,CAACtC,KAAK,CAAC,IAC3C2U,IAAI,CAACxL,GAAG,CAAC8Z,WAAW,CAAC,CAAC,CAAC3gB,QAAQ,CAACtC,KAAK,CAAC;MAC7C,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,SAASmjB,cAAcA,CAAA,EAAG;MACxBzlB,QAAQ,CAACyP,WAAW,GAAG,EAAE;MACzBzP,QAAQ,CAAC0lB,UAAU,GAAG,EAAE;MACxBL,UAAU,CAAC/iB,KAAK,GAAG,EAAE;MACrB8iB,aAAa,CAAC9iB,KAAK,GAAG,IAAI;IAC5B;IAEA,SAASqjB,eAAeA,CAAA,EAAG;MACzBP,aAAa,CAAC9iB,KAAK,GAAG,KAAK;IAC7B;IAEA,eAAesjB,gBAAgBA,CAAA,EAAG;MAChC,MAAMC,KAAK,GAAG,MAAM7lB,QAAQ,CAAC8e,UAAU,CAACuG,UAAU,CAAC/iB,KAAK,CAAC;MACzD,IAAIujB,KAAK,EAAE;QACTrhB,MAAM,CAACiB,UAAU,CAAC,MAAM;UACtB2f,aAAa,CAAC9iB,KAAK,GAAG,KAAK;QAC7B,CAAC,EAAE,GAAG,CAAC;MACT;IACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC4DoF;AACtB;AACV;AACI;;;;IAExD,MAAMxC,aAAa,GAAGH,qFAAoB,CAAC,CAAC;IAC5C,MAAMK,QAAQ,GAAGH,2EAAe,CAAC,CAAC;IAClC,MAAMmmB,cAAc,GAAGxlB,mDAAG,CAAC,KAAK,CAAC;IACjC,MAAMylB,YAAY,GAAGzlB,mDAAG,CAAC,EAAE,CAAC;IAC5B,MAAM0lB,UAAU,GAAG1lB,mDAAG,CAAC,KAAK,CAAC;IAC7B,MAAM2lB,aAAa,GAAG3lB,mDAAG,CAAC,EAAE,CAAC;IAC7B,MAAM6kB,UAAU,GAAG7kB,mDAAG,CAAC,EAAE,CAAC;IAC1B,MAAM4lB,SAAS,GAAG5lB,mDAAG,CAAC,EAAE,CAAC;IACzB,MAAM6lB,iBAAiB,GAAG7lB,mDAAG,CAAC,EAAE,CAAC;IACjC,MAAM8lB,gBAAgB,GAAG9lB,mDAAG,CAAC,EAAE,CAAC;IAChC,MAAM+lB,YAAY,GAAG/lB,mDAAG,CAAC,EAAE,CAAC;IAC5B,MAAMgmB,aAAa,GAAGhmB,mDAAG,CAAC,EAAE,CAAC;IAC7B,MAAMimB,WAAW,GAAGjmB,mDAAG,CAAC,EAAE,CAAC;IAC3B,MAAMkmB,mBAAmB,GAAGlmB,mDAAG,CAAC,EAAE,CAAC;IACnC,MAAMmmB,cAAc,GAAGnmB,mDAAG,CAAC,EAAE,CAAC;IAC9B,MAAMomB,kBAAkB,GAAGpmB,mDAAG,CAAC,EAAE,CAAC;IAClC,MAAMqmB,gBAAgB,GAAGrmB,mDAAG,CAAC;MAAEyW,IAAI,EAAE,IAAI;MAAEkB,CAAC,EAAE,CAAC;MAAEC,CAAC,EAAE;IAAE,CAAC,CAAC;IAExD,MAAM0O,YAAY,GAAG;MACnBhI,UAAU,EAAE,OAAO;MACnBiI,WAAW,EAAE,MAAM;MACnBC,SAAS,EAAE,MAAM;MACjBC,SAAS,EAAE,MAAM;MACjBC,aAAa,EAAE;IACjB,CAAC;IAED,MAAMC,YAAY,GAAG;MACnBrI,UAAU,EAAE,IAAI;MAChBiI,WAAW,EAAE,IAAI;MACjBC,SAAS,EAAE,IAAI;MACfC,SAAS,EAAE,IAAI;MACfC,aAAa,EAAE;IACjB,CAAC;IAED,MAAME,WAAW,GAAG/mB,wDAAQ,CAAC,MAAMymB,YAAY,CAACb,YAAY,CAAC3jB,KAAK,CAAC,IAAI,EAAE,CAAC;IAC1E,MAAM+kB,WAAW,GAAGhnB,wDAAQ,CAAC,MAAM8mB,YAAY,CAAClB,YAAY,CAAC3jB,KAAK,CAAC,IAAI,IAAI,CAAC;IAC5E,MAAMglB,UAAU,GAAGjnB,wDAAQ,CAAC,MAAML,QAAQ,CAACyP,WAAW,IAAI3P,aAAa,CAAC2P,WAAW,CAAC;IACpF,MAAM8X,SAAS,GAAGlnB,wDAAQ,CAAC,MAAML,QAAQ,CAAC0lB,UAAU,IAAI5lB,aAAa,CAAC0nB,YAAY,CAAC;IACnF,MAAMC,uBAAuB,GAAGpnB,wDAAQ,CAAC,MAAM8lB,aAAa,CAAC7jB,KAAK,CAACyE,IAAI,CAAC,CAAC,CAACwe,WAAW,CAAC,CAAC,CAAC;IACxF,MAAMmC,aAAa,GAAGrnB,wDAAQ,CAAC,MAAM;MACnC,MAAMoQ,GAAG,GAAG,IAAIkX,GAAG,CAAC,CAAC;MACrB3nB,QAAQ,CAACA,QAAQ,CAACmW,OAAO,CAAC3K,OAAO,IAAI;QACnC,MAAMC,GAAG,GAAG7I,MAAM,CAAC4I,OAAO,CAACC,GAAG,IAAID,OAAO,CAACL,EAAE,IAAI,EAAE,CAAC;QACnD,IAAIM,GAAG,EAAE;UACPgF,GAAG,CAACxI,GAAG,CAACwD,GAAG,EAAED,OAAO,CAAC;QACvB;MACF,CAAC,CAAC;MACF,OAAOiF,GAAG;IACZ,CAAC,CAAC;IACF,MAAMmX,yBAAyB,GAAGvnB,wDAAQ,CAAC,MAAM;MAC/C,MAAM8kB,OAAO,GAAGsC,uBAAuB,CAACnlB,KAAK;MAC7C,IAAI,CAAC6iB,OAAO,EAAE;QACZ,OAAOrlB,aAAa,CAACA,aAAa,CAAC2Q,GAAG,CAACwG,IAAI,IAAI4Q,kBAAkB,CAAC5Q,IAAI,CAAC,CAAC;MAC1E;MAEA,MAAM6Q,mBAAmB,GAAGhoB,aAAa,CAACA,aAAa,CACpD6M,MAAM,CAACsK,IAAI,IAAI8Q,mBAAmB,CAAC9Q,IAAI,EAAEkO,OAAO,EAAE6C,sBAAsB,CAAC/Q,IAAI,CAAC,CAAC,CAAC,CAChFxG,GAAG,CAACwG,IAAI,IAAI4Q,kBAAkB,CAAC5Q,IAAI,CAAC,CAAC;MACxC,MAAMgR,mBAAmB,GAAG,IAAIhW,GAAG,CAACnS,aAAa,CAACA,aAAa,CAC5D6M,MAAM,CAACsK,IAAI,IAAIA,IAAI,CAACtT,IAAI,KAAK,QAAQ,CAAC,CACtC8M,GAAG,CAACwG,IAAI,IAAIiR,kBAAkB,CAACjR,IAAI,CAAC,CAAC,CAAC;MACzC,MAAMkR,cAAc,GAAGnoB,QAAQ,CAACA,QAAQ,CACrC2M,MAAM,CAACsK,IAAI,IAAI,CAACgR,mBAAmB,CAAC/V,GAAG,CAACtP,MAAM,CAACqU,IAAI,CAACxL,GAAG,IAAIwL,IAAI,CAAC9L,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAC3EwB,MAAM,CAACsK,IAAI,IAAImR,cAAc,CAACnR,IAAI,EAAEkO,OAAO,CAAC,CAAC,CAC7C1U,GAAG,CAACwG,IAAI,IAAIoR,aAAa,CAACpR,IAAI,CAAC,CAAC;MAEnC,OAAO,CAAC,GAAG6Q,mBAAmB,EAAE,GAAGK,cAAc,CAAC;IACpD,CAAC,CAAC;IACF,MAAM7C,gBAAgB,GAAGjlB,wDAAQ,CAAC,MAAM;MACtC,MAAM8kB,OAAO,GAAGwB,cAAc,CAACrkB,KAAK,CAACijB,WAAW,CAAC,CAAC;MAClD,IAAI,CAACJ,OAAO,EAAE;QACZ,OAAOnlB,QAAQ,CAACA,QAAQ;MAC1B;MACA,OAAOA,QAAQ,CAACA,QAAQ,CAAC2M,MAAM,CAACsK,IAAI,IAAI;QACtC,OAAOrU,MAAM,CAACqU,IAAI,CAAC9O,KAAK,IAAI,EAAE,CAAC,CAACod,WAAW,CAAC,CAAC,CAAC3gB,QAAQ,CAACugB,OAAO,CAAC,IAC1DviB,MAAM,CAACqU,IAAI,CAACuO,QAAQ,IAAI,EAAE,CAAC,CAACD,WAAW,CAAC,CAAC,CAAC3gB,QAAQ,CAACugB,OAAO,CAAC,IAC3DviB,MAAM,CAACqU,IAAI,CAACxL,GAAG,IAAI,EAAE,CAAC,CAAC8Z,WAAW,CAAC,CAAC,CAAC3gB,QAAQ,CAACugB,OAAO,CAAC;MAC7D,CAAC,CAAC;IACJ,CAAC,CAAC;IACF,MAAMmD,cAAc,GAAGjoB,wDAAQ,CAAC,MAAM;MACpC,IAAI4lB,YAAY,CAAC3jB,KAAK,KAAK,YAAY,EAAE;QACvC,OAAO,CAAC+iB,UAAU,CAAC/iB,KAAK;MAC1B;MACA,IAAI2jB,YAAY,CAAC3jB,KAAK,KAAK,aAAa,EAAE;QACxC,OAAO,CAAC8jB,SAAS,CAAC9jB,KAAK,IAAI,CAACskB,kBAAkB,CAACtkB,KAAK,CAACC,MAAM;MAC7D;MACA,IAAI0jB,YAAY,CAAC3jB,KAAK,KAAK,WAAW,EAAE;QACtC,OAAO,CAACikB,YAAY,CAACjkB,KAAK;MAC5B;MACA,IAAI2jB,YAAY,CAAC3jB,KAAK,KAAK,WAAW,EAAE;QACtC,OAAO,CAACkkB,aAAa,CAAClkB,KAAK,IAAI,CAACskB,kBAAkB,CAACtkB,KAAK,CAACC,MAAM;MACjE;MACA,IAAI0jB,YAAY,CAAC3jB,KAAK,KAAK,eAAe,EAAE;QAC1C,OAAO,CAACmkB,WAAW,CAACnkB,KAAK;MAC3B;MACA,OAAO,IAAI;IACb,CAAC,CAAC;IAEFxD,yDAAS,CAAC,MAAM;MACdkB,QAAQ,CAACE,eAAe,CAAC,CAAC,CAACkP,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5C,CAAC,CAAC;IAEF,SAASmZ,QAAQA,CAACtR,IAAI,EAAE;MACtB,OAAOA,IAAI,EAAEuR,UAAU,KAAK,cAAc,IAAIjjB,MAAM,CAAC0R,IAAI,CAACwR,QAAQ,IAAIxR,IAAI,CAAC2J,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC;IAC1F;IAEA,SAAS8H,oBAAoBA,CAACpS,KAAK,EAAEW,IAAI,EAAE;MACzC,IAAIA,IAAI,CAACuR,UAAU,KAAK,cAAc,EAAE;MACxC3B,gBAAgB,CAACvkB,KAAK,GAAG;QACvB2U,IAAI;QACJkB,CAAC,EAAE/S,IAAI,CAACE,GAAG,CAACgR,KAAK,CAAC+K,OAAO,EAAE7c,MAAM,CAACwd,UAAU,GAAG,GAAG,CAAC;QACnD5J,CAAC,EAAEhT,IAAI,CAACE,GAAG,CAACgR,KAAK,CAACgL,OAAO,EAAE9c,MAAM,CAACyd,WAAW,GAAG,EAAE;MACpD,CAAC;IACH;IAEA,SAAS0G,qBAAqBA,CAAA,EAAG;MAC/B9B,gBAAgB,CAACvkB,KAAK,GAAG;QAAE2U,IAAI,EAAE,IAAI;QAAEkB,CAAC,EAAE,CAAC;QAAEC,CAAC,EAAE;MAAE,CAAC;IACrD;IAEA,SAASwQ,YAAYA,CAAA,EAAG;MACtB,MAAM3R,IAAI,GAAG4P,gBAAgB,CAACvkB,KAAK,CAAC2U,IAAI;MACxC,IAAIA,IAAI,EAAEnX,aAAa,CAAC+oB,wBAAwB,CAAC5R,IAAI,CAAC9L,EAAE,CAAC;MACzDwd,qBAAqB,CAAC,CAAC;IACzB;IAEA,MAAMG,aAAa,GAAGhD,+DAAe,CAAC;MACpChf,IAAI,EAAE,eAAe;MACrBgN,KAAK,EAAE;QACL9T,QAAQ,EAAE;UACR2D,IAAI,EAAE0O,KAAK;UACX0W,OAAO,EAAEA,CAAA,KAAM;QACjB,CAAC;QACDC,WAAW,EAAE;UACXrlB,IAAI,EAAE0O,KAAK;UACX0W,OAAO,EAAEA,CAAA,KAAM;QACjB,CAAC;QACD5D,OAAO,EAAE;UACPxhB,IAAI,EAAEf,MAAM;UACZmmB,OAAO,EAAE;QACX,CAAC;QACDE,SAAS,EAAE;UACTtlB,IAAI,EAAEf,MAAM;UACZmmB,OAAO,EAAE;QACX;MACF,CAAC;MACDG,KAAK,EAAE,CAAC,QAAQ,EAAE,gBAAgB,CAAC;MACnCC,KAAKA,CAACrV,KAAK,EAAE;QAAEE;MAAK,CAAC,EAAE;QACrB,OAAO,MAAM+R,uCAAC,CAAC,KAAK,EAAE;UAAEqD,KAAK,EAAE;QAAiB,CAAC,EAAE,CACjDrD,uCAAC,CAAC,OAAO,EAAE;UACTzjB,KAAK,EAAEwR,KAAK,CAACqR,OAAO;UACpBkE,WAAW,EAAE,OAAO;UACpBC,OAAO,EAAEhT,KAAK,IAAItC,IAAI,CAAC,gBAAgB,EAAEsC,KAAK,CAACrL,MAAM,CAAC3I,KAAK;QAC7D,CAAC,CAAC,EACFyjB,uCAAC,CAAC,KAAK,EAAE;UAAEqD,KAAK,EAAE;QAAsB,CAAC,EAAEtV,KAAK,CAAC9T,QAAQ,CAACuC,MAAM,GAC5DuR,KAAK,CAAC9T,QAAQ,CAACyQ,GAAG,CAACjF,OAAO,IAAIua,uCAAC,CAAC,QAAQ,EAAE;UAC1C7D,GAAG,EAAE1W,OAAO,CAACC,GAAG;UAChB9H,IAAI,EAAE,QAAQ;UACdylB,KAAK,EAAE,CAAC,oBAAoB,EAAE;YAAEpX,QAAQ,EAAE8B,KAAK,CAACkV,WAAW,CAACpkB,QAAQ,CAAC4G,OAAO,CAACC,GAAG;UAAE,CAAC,CAAC;UACpF8d,OAAO,EAAEA,CAAA,KAAMvV,IAAI,CAAC,QAAQ,EAAExI,OAAO,CAACC,GAAG;QAC3C,CAAC,EAAE,CACDsa,uCAAC,CAAC,MAAM,EAAE;UAAEqD,KAAK,EAAE;QAAgB,CAAC,EAAEtV,KAAK,CAACkV,WAAW,CAACpkB,QAAQ,CAAC4G,OAAO,CAACC,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,EACzFD,OAAO,CAACpF,QAAQ,GACZ2f,uCAAC,CAAC,KAAK,EAAE;UAAEqD,KAAK,EAAE,kCAAkC;UAAEI,GAAG,EAAEhe,OAAO,CAACpF,QAAQ;UAAEqjB,GAAG,EAAE;QAAG,CAAC,CAAC,GACvF1D,uCAAC,CAAC,MAAM,EAAE;UAAEqD,KAAK,EAAE;QAAsB,CAAC,EAAE5d,OAAO,CAACU,UAAU,CAAC,EACnE6Z,uCAAC,CAAC,MAAM,EAAE;UAAEqD,KAAK,EAAE;QAAsB,CAAC,EAAE,CAC1CrD,uCAAC,CAAC,QAAQ,EAAEva,OAAO,CAACrD,KAAK,CAAC,EAC1B4d,uCAAC,CAAC,OAAO,EAAEva,OAAO,CAACga,QAAQ,CAAC,CAC7B,CAAC,CACH,CAAC,CAAC,GACD,CAACO,uCAAC,CAAC,KAAK,EAAE;UAAEqD,KAAK,EAAE;QAAuB,CAAC,EAAEtV,KAAK,CAACmV,SAAS,CAAC,CAAC,CAAC,CACpE,CAAC;MACJ;IACF,CAAC,CAAC;IAEF,SAASS,gBAAgBA,CAAC,GAAGC,MAAM,EAAE;MACnC,OAAOA,MAAM,CACVC,OAAO,CAACtnB,KAAK,IAAI;QAChB,IAAI+P,KAAK,CAACwX,OAAO,CAACvnB,KAAK,CAAC,EAAE;UACxB,OAAOA,KAAK;QACd;QACA,IAAIA,KAAK,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;UACtC,OAAOwnB,MAAM,CAACH,MAAM,CAACrnB,KAAK,CAAC;QAC7B;QACA,OAAO,CAACA,KAAK,CAAC;MAChB,CAAC,CAAC,CACDmO,GAAG,CAACnO,KAAK,IAAIM,MAAM,CAACN,KAAK,IAAI,EAAE,CAAC,CAACijB,WAAW,CAAC,CAAC,CAAC,CAC/C5Y,MAAM,CAACQ,OAAO,CAAC;IACpB;IAEA,SAAS4c,cAAcA,CAACJ,MAAM,EAAExE,OAAO,EAAE;MACvC,MAAM6E,cAAc,GAAG7E,OAAO,CAAC/Z,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;MAC9D,OAAOse,gBAAgB,CAACC,MAAM,CAAC,CAACM,IAAI,CAAC3nB,KAAK,IAAI;QAC5C,IAAIA,KAAK,CAACsC,QAAQ,CAACugB,OAAO,CAAC,EAAE;UAC3B,OAAO,IAAI;QACb;QACA,IAAI,CAAC6E,cAAc,EAAE;UACnB,OAAO,KAAK;QACd;QACA,OAAO1nB,KAAK,CAAC8I,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAACxG,QAAQ,CAAColB,cAAc,CAAC;MACvE,CAAC,CAAC;IACJ;IAEA,SAAS9B,kBAAkBA,CAACjR,IAAI,EAAE;MAChC,IAAIA,IAAI,CAACtT,IAAI,KAAK,QAAQ,EAAE;QAC1B,OAAOf,MAAM,CAACqU,IAAI,CAAChM,MAAM,IAAIgM,IAAI,CAAC/L,GAAG,EAAED,MAAM,IAAIgM,IAAI,CAAC9L,EAAE,IAAI,EAAE,CAAC;MACjE;MACA,OAAOvI,MAAM,CAACqU,IAAI,CAAChM,MAAM,IAAIgM,IAAI,CAAC/L,GAAG,EAAED,MAAM,IAAIgM,IAAI,CAAC9L,EAAE,CAACC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;IACzF;IAEA,SAAS4c,sBAAsBA,CAAC/Q,IAAI,EAAE;MACpC,MAAMhM,MAAM,GAAGid,kBAAkB,CAACjR,IAAI,CAAC;MACvC,OAAOhM,MAAM,GAAGyc,aAAa,CAACplB,KAAK,CAACoE,GAAG,CAACuE,MAAM,CAAC,IAAI,IAAI,GAAG,IAAI;IAChE;IAEA,SAAS8c,mBAAmBA,CAAC9Q,IAAI,EAAEkO,OAAO,EAAE3Z,OAAO,GAAG,IAAI,EAAE;MAC1D,OAAOue,cAAc,CAAC,CACpB9S,IAAI,CAAC9O,KAAK,EACV8O,IAAI,CAACuO,QAAQ,EACbvO,IAAI,CAAChM,MAAM,EACXgM,IAAI,CAAC9L,EAAE,EACP8L,IAAI,CAACtT,IAAI,EACTsT,IAAI,CAAC/L,GAAG,EAAED,MAAM,EAChBgM,IAAI,CAAC/L,GAAG,EAAEkB,OAAO,EACjB6K,IAAI,CAAC/L,GAAG,EAAEgf,QAAQ,EAClBjT,IAAI,CAAC/L,GAAG,EAAEif,SAAS,EACnBlT,IAAI,CAAC/L,GAAG,EAAEpE,IAAI,EACdmQ,IAAI,CAAC/L,GAAG,EAAE/E,WAAW,EACrB8Q,IAAI,CAAC/L,GAAG,EAAEc,MAAM,EAChBiL,IAAI,CAAC/L,GAAG,EAAEkf,WAAW,EACrBnT,IAAI,CAAC/L,GAAG,EAAEW,KAAK,EACfL,OAAO,EAAErD,KAAK,EACdqD,OAAO,EAAEga,QAAQ,EACjBha,OAAO,EAAEC,GAAG,EACZD,OAAO,EAAEL,EAAE,EACXK,OAAO,EAAEK,KAAK,EACdL,OAAO,EAAES,OAAO,EAChBT,OAAO,EAAEI,OAAO,EAChBJ,OAAO,EAAE6e,SAAS,CACnB,EAAElF,OAAO,CAAC;IACb;IAEA,SAASiD,cAAcA,CAACnR,IAAI,EAAEkO,OAAO,EAAE;MACrC,OAAO4E,cAAc,CAAC,CACpB9S,IAAI,CAAC9O,KAAK,EACV8O,IAAI,CAACuO,QAAQ,EACbvO,IAAI,CAACxL,GAAG,EACRwL,IAAI,CAAC9L,EAAE,EACP8L,IAAI,CAACpL,KAAK,EACVoL,IAAI,CAAChL,OAAO,EACZgL,IAAI,CAACrL,OAAO,EACZqL,IAAI,CAACoT,SAAS,CACf,EAAElF,OAAO,CAAC;IACb;IAEA,SAAS0C,kBAAkBA,CAAC5Q,IAAI,EAAE;MAChC,OAAO;QACL,GAAGA,IAAI;QACPuR,UAAU,EAAE,cAAc;QAC1B8B,SAAS,EAAE,gBAAgBrT,IAAI,CAAC9L,EAAE;MACpC,CAAC;IACH;IAEA,SAASkd,aAAaA,CAAC7c,OAAO,EAAE;MAC9B,OAAO;QACLL,EAAE,EAAEK,OAAO,CAACL,EAAE;QACdqd,UAAU,EAAE,SAAS;QACrB8B,SAAS,EAAE,WAAW9e,OAAO,CAACC,GAAG,IAAID,OAAO,CAACL,EAAE,EAAE;QACjDK,OAAO;QACPrD,KAAK,EAAEqD,OAAO,CAACrD,KAAK;QACpBqd,QAAQ,EAAEha,OAAO,CAACga,QAAQ;QAC1Bpf,QAAQ,EAAEoF,OAAO,CAACpF,QAAQ;QAC1B8F,UAAU,EAAEV,OAAO,CAACU,UAAU;QAC9BqB,MAAM,EAAE;MACV,CAAC;IACH;IAEA,SAASgd,gBAAgBA,CAACtT,IAAI,EAAE;MAC9B,IAAIA,IAAI,CAACuR,UAAU,KAAK,cAAc,EAAE;QACtC,OAAOvR,IAAI,CAAC9L,EAAE,KAAKrL,aAAa,CAAC0qB,QAAQ;MAC3C;MACA,OAAO,UAAUvT,IAAI,CAACzL,OAAO,EAAEC,GAAG,IAAIwL,IAAI,CAAC9L,EAAE,EAAE,KAAKrL,aAAa,CAAC0qB,QAAQ;IAC5E;IAEA,SAASC,cAAcA,CAACxT,IAAI,EAAE;MAC5B,IAAIA,IAAI,CAACuR,UAAU,KAAK,SAAS,EAAE;QACjCxoB,QAAQ,CAAC0qB,QAAQ,CAACzT,IAAI,CAACzL,OAAO,CAAC;QAC/B;MACF;MACA1L,aAAa,CAACklB,qBAAqB,CAAC/N,IAAI,CAAC9L,EAAE,CAAC;IAC9C;IAEA,SAASwf,kBAAkBA,CAAA,EAAG;MAC5B3qB,QAAQ,CAACyP,WAAW,GAAG,EAAE;MACzBzP,QAAQ,CAAC0lB,UAAU,GAAG,EAAE;MACxB5lB,aAAa,CAAC2P,WAAW,GAAG,EAAE;MAC9B3P,aAAa,CAAC0nB,YAAY,GAAG,EAAE;IACjC;IAEA,SAASoD,iBAAiBA,CAAA,EAAG;MAC3BvF,UAAU,CAAC/iB,KAAK,GAAG,EAAE;MACrB8jB,SAAS,CAAC9jB,KAAK,GAAG,EAAE;MACpB+jB,iBAAiB,CAAC/jB,KAAK,GAAG,EAAE;MAC5BgkB,gBAAgB,CAAChkB,KAAK,GAAG,EAAE;MAC3BikB,YAAY,CAACjkB,KAAK,GAAG,EAAE;MACvBkkB,aAAa,CAAClkB,KAAK,GAAG,EAAE;MACxBmkB,WAAW,CAACnkB,KAAK,GAAG,EAAE;MACtBokB,mBAAmB,CAACpkB,KAAK,GAAG,EAAE;MAC9BqkB,cAAc,CAACrkB,KAAK,GAAG,EAAE;MACzBskB,kBAAkB,CAACtkB,KAAK,GAAG,EAAE;MAC7BqoB,kBAAkB,CAAC,CAAC;IACtB;IAEA,SAASE,gBAAgBA,CAAA,EAAG;MAC1B7E,cAAc,CAAC1jB,KAAK,GAAG,CAAC0jB,cAAc,CAAC1jB,KAAK;IAC9C;IAEA,SAASwoB,eAAeA,CAAA,EAAG;MACzB9E,cAAc,CAAC1jB,KAAK,GAAG,KAAK;IAC9B;IAEA,SAASyoB,UAAUA,CAAC7Q,MAAM,EAAE;MAC1B0Q,iBAAiB,CAAC,CAAC;MACnB3E,YAAY,CAAC3jB,KAAK,GAAG4X,MAAM;MAC3B8L,cAAc,CAAC1jB,KAAK,GAAG,KAAK;MAC5B,IAAI,CAAC,aAAa,EAAE,WAAW,EAAE,eAAe,CAAC,CAACsC,QAAQ,CAACsV,MAAM,CAAC,EAAE;QAClEla,QAAQ,CAACE,eAAe,CAAC;UAAEyE,KAAK,EAAE;QAAK,CAAC,CAAC;MAC3C;IACF;IAEA,SAASqmB,gBAAgBA,CAAA,EAAG;MAC1B/E,YAAY,CAAC3jB,KAAK,GAAG,EAAE;MACvB4jB,UAAU,CAAC5jB,KAAK,GAAG,KAAK;MACxBsoB,iBAAiB,CAAC,CAAC;IACrB;IAEA,SAASK,aAAaA,CAACC,SAAS,EAAE;MAChC,MAAMlZ,QAAQ,GAAG,IAAIC,GAAG,CAAC2U,kBAAkB,CAACtkB,KAAK,CAAC;MAClD,IAAI0P,QAAQ,CAACE,GAAG,CAACgZ,SAAS,CAAC,EAAE;QAC3BlZ,QAAQ,CAACG,MAAM,CAAC+Y,SAAS,CAAC;MAC5B,CAAC,MAAM;QACLlZ,QAAQ,CAACI,GAAG,CAAC8Y,SAAS,CAAC;MACzB;MACAtE,kBAAkB,CAACtkB,KAAK,GAAG+P,KAAK,CAACC,IAAI,CAACN,QAAQ,CAAC;IACjD;IAEA,eAAemZ,YAAYA,CAAA,EAAG;MAC5B,IAAI7C,cAAc,CAAChmB,KAAK,IAAI4jB,UAAU,CAAC5jB,KAAK,EAAE;QAC5C;MACF;MACA4jB,UAAU,CAAC5jB,KAAK,GAAG,IAAI;MACvBqoB,kBAAkB,CAAC,CAAC;MACpB,IAAI;QACF,IAAIpb,EAAE,GAAG,KAAK;QACd,IAAI0W,YAAY,CAAC3jB,KAAK,KAAK,YAAY,EAAE;UACvCiN,EAAE,GAAG,MAAMvP,QAAQ,CAAC8e,UAAU,CAACuG,UAAU,CAAC/iB,KAAK,CAAC;UAChD,IAAIiN,EAAE,IAAIvP,QAAQ,CAAC0iB,aAAa,EAAE;YAChC1iB,QAAQ,CAAC0qB,QAAQ,CAAC1qB,QAAQ,CAAC0iB,aAAa,CAAC;UAC3C;QACF,CAAC,MAAM,IAAIuD,YAAY,CAAC3jB,KAAK,KAAK,aAAa,EAAE;UAC/CiN,EAAE,GAAG,MAAMzP,aAAa,CAACinB,WAAW,CAAC;YACnCjgB,IAAI,EAAEsf,SAAS,CAAC9jB,KAAK;YACrB+H,YAAY,EAAEgc,iBAAiB,CAAC/jB,KAAK;YACrCgI,WAAW,EAAEgc,gBAAgB,CAAChkB,KAAK;YACnC8oB,SAAS,EAAExE,kBAAkB,CAACtkB;UAChC,CAAC,CAAC;QACJ,CAAC,MAAM,IAAI2jB,YAAY,CAAC3jB,KAAK,KAAK,WAAW,EAAE;UAC7CiN,EAAE,GAAG,MAAMzP,aAAa,CAACknB,SAAS,CAACT,YAAY,CAACjkB,KAAK,CAAC;QACxD,CAAC,MAAM,IAAI2jB,YAAY,CAAC3jB,KAAK,KAAK,WAAW,EAAE;UAC7CiN,EAAE,GAAG,MAAMzP,aAAa,CAACurB,gBAAgB,CAACzE,kBAAkB,CAACtkB,KAAK,EAAEkkB,aAAa,CAAClkB,KAAK,CAAC;QAC1F,CAAC,MAAM,IAAI2jB,YAAY,CAAC3jB,KAAK,KAAK,eAAe,EAAE;UACjDiN,EAAE,GAAG,MAAMzP,aAAa,CAACinB,WAAW,CAAC;YACnCjgB,IAAI,EAAE2f,WAAW,CAACnkB,KAAK;YACvB8oB,SAAS,EAAExE,kBAAkB,CAACtkB,KAAK;YACnC+H,YAAY,EAAEqc,mBAAmB,CAACpkB,KAAK;YACvCgpB,OAAO,EAAE;UACX,CAAC,CAAC;QACJ;QACA,IAAI/b,EAAE,EAAE;UACN/K,MAAM,CAACiB,UAAU,CAACulB,gBAAgB,EAAE,GAAG,CAAC;QAC1C;MACF,CAAC,SAAS;QACR9E,UAAU,CAAC5jB,KAAK,GAAG,KAAK;MAC1B;IACF;IAEA4F,QAAQ,CAAC0L,gBAAgB,CAAC,OAAO,EAAEkX,eAAe,CAAC;IACnD5iB,QAAQ,CAAC0L,gBAAgB,CAAC,OAAO,EAAE+U,qBAAqB,CAAC;IACzDroB,+DAAe,CAAC,MAAM;MACpB4H,QAAQ,CAAC2L,mBAAmB,CAAC,OAAO,EAAEiX,eAAe,CAAC;MACtD5iB,QAAQ,CAAC2L,mBAAmB,CAAC,OAAO,EAAE8U,qBAAqB,CAAC;IAC9D,CAAC,CAAC;IAEF,SAAS4C,YAAYA,CAACjpB,KAAK,EAAE;MAC3B,MAAMkpB,KAAK,GAAGjmB,MAAM,CAACjD,KAAK,IAAI,CAAC,CAAC;MAChC,OAAOkpB,KAAK,GAAG,EAAE,GAAG,KAAK,GAAG5oB,MAAM,CAAC4oB,KAAK,CAAC;IAC3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzWoF;AACjC;AACK;AACC;AACL;AAwEpD,MAAMC,gBAAgB,GAAG,GAAG;;;;IAtE5B,MAAMvsB,OAAO,GAAGD,yEAAe,CAAC,CAAC;IACjC,MAAMc,UAAU,GAAGH,+EAAkB,CAAC,CAAC;IACvC,MAAMI,QAAQ,GAAGH,0EAAe,CAAC,CAAC;IAClC,MAAM6rB,aAAa,GAAG,CACpB;MAAExJ,GAAG,EAAE,eAAe;MAAE/H,KAAK,EAAE;IAAO,CAAC,EACvC;MAAE+H,GAAG,EAAE,UAAU;MAAE/H,KAAK,EAAE;IAAO,CAAC,EAClC;MAAE+H,GAAG,EAAE,QAAQ;MAAE/H,KAAK,EAAE;IAAO,CAAC,EAChC;MAAE+H,GAAG,EAAE,UAAU;MAAE/H,KAAK,EAAE;IAAO,CAAC,EAClC;MAAE+H,GAAG,EAAE,UAAU;MAAE/H,KAAK,EAAE;IAAO,CAAC,CACnC;IACD,MAAMwR,QAAQ,GAAGtrB,uDAAQ,CAAC,MAAM,CAACnB,OAAO,CAACiH,WAAW,IAAIjH,OAAO,CAAC6M,MAAM,IAAI,GAAG,EAAElJ,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC,CAAC;IACzG,MAAM8oB,YAAY,GAAGprB,kDAAG,CAAC,KAAK,CAAC;IAC/B,MAAMqrB,eAAe,GAAGrrB,kDAAG,CAAC,UAAU,CAAC;IACvC,MAAMsrB,cAAc,GAAGtrB,kDAAG,CAAC,KAAK,CAAC;IACjC,MAAMurB,cAAc,GAAGvrB,kDAAG,CAAC,EAAE,CAAC;IAC9B,MAAMwrB,aAAa,GAAGxrB,kDAAG,CAAC,EAAE,CAAC;IAC7B,MAAMyrB,WAAW,GAAGzrB,kDAAG,CAAC,KAAK,CAAC;IAC9B,MAAM0rB,aAAa,GAAG1rB,kDAAG,CAAC,KAAK,CAAC;IAChC,MAAM2rB,aAAa,GAAG3rB,kDAAG,CAAC,EAAE,CAAC;IAC7B,MAAM4rB,YAAY,GAAG5rB,kDAAG,CAAC,EAAE,CAAC;IAC5B,MAAM6rB,WAAW,GAAG7rB,kDAAG,CAAC,IAAI,CAAC;IAC7B,MAAM8rB,cAAc,GAAG9rB,kDAAG,CAAC,EAAE,CAAC;IAC9B,MAAM+rB,aAAa,GAAG/rB,kDAAG,CAAC,IAAI,CAAC;IAC/B,MAAMgsB,aAAa,GAAGhsB,kDAAG,CAAC,IAAI,CAAC;IAC/B,MAAMisB,oBAAoB,GAAGjsB,kDAAG,CAAC,IAAI,CAAC;IACtC,MAAM4J,YAAY,GAAG5J,kDAAG,CAAC;MACvB2F,WAAW,EAAE;IACf,CAAC,CAAC;IACF,MAAMumB,aAAa,GAAGnsB,uDAAQ,CAAC;MAC7BosB,WAAW,EAAE,EAAE;MACfC,WAAW,EAAE,EAAE;MACftrB,eAAe,EAAE;IACnB,CAAC,CAAC;IACF,MAAMurB,gBAAgB,GAAGxsB,uDAAQ,CAAC,MAAMisB,cAAc,CAAChqB,KAAK,IAAIpD,OAAO,CAACkH,QAAQ,IAAI,EAAE,CAAC;IACvF,MAAM0mB,kBAAkB,GAAGzsB,uDAAQ,CAAC,MAAMqrB,aAAa,CAACngB,IAAI,CAAC0L,IAAI,IAAIA,IAAI,CAACiL,GAAG,KAAK2J,eAAe,CAACvpB,KAAK,CAAC,IAAIopB,aAAa,CAAC,CAAC,CAAC,CAAC;IAC7H,MAAMqB,mBAAmB,GAAGxsB,uDAAQ,CAAC;MACnCysB,IAAI,EAAE,KAAK;MACXnlB,GAAG,EAAE,EAAE;MACP0Q,KAAK,EAAE,CAAC;MACRE,OAAO,EAAE,CAAC;MACVC,OAAO,EAAE,CAAC;MACVC,QAAQ,EAAE,KAAK;MACfC,UAAU,EAAE,CAAC;MACbC,UAAU,EAAE,CAAC;MACbC,WAAW,EAAE,CAAC;MACdC,WAAW,EAAE;IACf,CAAC,CAAC;IACF,MAAMkU,aAAa,GAAG1sB,uDAAQ,CAAC;MAC7BysB,IAAI,EAAE,KAAK;MACXE,MAAM,EAAE,KAAK;MACbC,IAAI,EAAE,KAAK;MACX7pB,KAAK,EAAE,EAAE;MACT8pB,SAAS,EAAE,EAAE;MACbC,QAAQ,EAAE,YAAY;MACtBC,KAAK,EAAE,IAAI;MACXC,SAAS,EAAE,CAAC;MACZhV,KAAK,EAAE,CAAC;MACRC,QAAQ,EAAE,CAAC;MACXC,OAAO,EAAE,CAAC;MACVC,OAAO,EAAE,CAAC;MACVC,QAAQ,EAAE,KAAK;MACfC,UAAU,EAAE,CAAC;MACbC,UAAU,EAAE,CAAC;MACbC,WAAW,EAAE,CAAC;MACdC,WAAW,EAAE;IACf,CAAC,CAAC;IACF,MAAMyU,kBAAkB,GAAGntB,uDAAQ,CAAC,OAAO;MACzCqZ,SAAS,EAAE,eAAeqT,mBAAmB,CAACtU,OAAO,OAAOsU,mBAAmB,CAACrU,OAAO,gBAAgBqU,mBAAmB,CAACxU,KAAK;IAClI,CAAC,CAAC,CAAC;IAIHzZ,wDAAS,CAAC,MAAM;MACdI,OAAO,CAACuuB,cAAc,CAAC,CAAC;MACxBjpB,MAAM,CAACoP,gBAAgB,CAAC,QAAQ,EAAE8Z,iBAAiB,CAAC;IACtD,CAAC,CAAC;IAEFptB,8DAAe,CAAC,MAAM;MACpBqtB,oBAAoB,CAAC,CAAC;MACtBC,kBAAkB,CAAC,CAAC;MACpBppB,MAAM,CAACqP,mBAAmB,CAAC,QAAQ,EAAE6Z,iBAAiB,CAAC;IACzD,CAAC,CAAC;IAEF,SAASG,YAAYA,CAAA,EAAG;MACtB9tB,UAAU,CAAC8tB,YAAY,CAAC,CAAC;MACzB7tB,QAAQ,CAACE,eAAe,CAAC,CAAC;IAC5B;IAEA,SAAS4tB,oBAAoBA,CAAA,EAAG;MAC9B3B,aAAa,CAAC7pB,KAAK,GAAG,EAAE;MACxB8pB,YAAY,CAAC9pB,KAAK,GAAG,EAAE;IACzB;IAEA,SAASyrB,qBAAqBA,CAAA,EAAG;MAC/BhC,cAAc,CAACzpB,KAAK,GAAG,EAAE;MACzB0pB,aAAa,CAAC1pB,KAAK,GAAG,EAAE;IAC1B;IAEA,SAAS0rB,kBAAkBA,CAAA,EAAG;MAC5BtB,aAAa,CAACC,WAAW,GAAG,EAAE;MAC9BD,aAAa,CAACE,WAAW,GAAG,EAAE;MAC9BF,aAAa,CAACprB,eAAe,GAAG,EAAE;IACpC;IAEA,SAAS2sB,YAAYA,CAAA,EAAG;MACtBrC,YAAY,CAACtpB,KAAK,GAAG,IAAI;MACzBupB,eAAe,CAACvpB,KAAK,GAAG,UAAU;MAClCyrB,qBAAqB,CAAC,CAAC;IACzB;IAEA,SAASG,aAAaA,CAAA,EAAG;MACvB,IAAIpC,cAAc,CAACxpB,KAAK,EAAE;QACxB;MACF;MACAspB,YAAY,CAACtpB,KAAK,GAAG,KAAK;MAC1ByrB,qBAAqB,CAAC,CAAC;MACvBC,kBAAkB,CAAC,CAAC;IACtB;IAEA,SAASG,qBAAqBA,CAACC,OAAO,EAAE;MACtCvC,eAAe,CAACvpB,KAAK,GAAG8rB,OAAO;MAC/BL,qBAAqB,CAAC,CAAC;IACzB;IAEA,SAASJ,oBAAoBA,CAAA,EAAG;MAC9B,IAAIrB,cAAc,CAAChqB,KAAK,EAAE;QACxBqF,GAAG,CAAC0mB,eAAe,CAAC/B,cAAc,CAAChqB,KAAK,CAAC;QACzCgqB,cAAc,CAAChqB,KAAK,GAAG,EAAE;MAC3B;IACF;IAEA,SAASgsB,sBAAsBA,CAAA,EAAG;MAChC,IAAIrB,aAAa,CAACG,SAAS,EAAE;QAC3BzlB,GAAG,CAAC0mB,eAAe,CAACpB,aAAa,CAACG,SAAS,CAAC;QAC5CH,aAAa,CAACG,SAAS,GAAG,EAAE;MAC9B;IACF;IAEA,eAAemB,iBAAiBA,CAAA,EAAG;MACjCtC,WAAW,CAAC3pB,KAAK,GAAG,IAAI;MACxBwrB,oBAAoB,CAAC,CAAC;MACtB1jB,YAAY,CAAC9H,KAAK,CAAC6D,WAAW,GAAGjH,OAAO,CAACiH,WAAW,IAAIjH,OAAO,CAAC6M,MAAM,IAAI,EAAE;MAC5E,MAAMwS,OAAO,GAAG,MAAMrf,OAAO,CAACuuB,cAAc,CAAC,CAAC;MAC9C,IAAIxB,WAAW,CAAC3pB,KAAK,IAAIic,OAAO,EAAE;QAChCnU,YAAY,CAAC9H,KAAK,CAAC6D,WAAW,GAAGjH,OAAO,CAACiH,WAAW,IAAIjH,OAAO,CAAC6M,MAAM,IAAI,EAAE;MAC9E;IACF;IAEA,SAASyiB,kBAAkBA,CAAA,EAAG;MAC5BvC,WAAW,CAAC3pB,KAAK,GAAG,KAAK;MACzB+pB,WAAW,CAAC/pB,KAAK,GAAG,IAAI;MACxBwrB,oBAAoB,CAAC,CAAC;MACtBH,oBAAoB,CAAC,CAAC;MACtBc,kBAAkB,CAAC,CAAC;MACpBb,kBAAkB,CAAC,CAAC;IACtB;IAEA,SAASc,cAAcA,CAACpY,KAAK,EAAE;MAC7B,MAAMZ,IAAI,GAAGY,KAAK,CAACrL,MAAM,CAAC4K,KAAK,GAAG,CAAC,CAAC,IAAI,IAAI;MAC5CS,KAAK,CAACrL,MAAM,CAAC3I,KAAK,GAAG,EAAE;MACvBwrB,oBAAoB,CAAC,CAAC;MACtB,IAAIpY,IAAI,EAAE;QACRiZ,iBAAiB,CAACjZ,IAAI,CAAC;MACzB;IACF;IAEA,SAASkZ,kBAAkBA,CAAA,EAAG;MAC5BrC,aAAa,CAACjqB,KAAK,EAAEiT,KAAK,CAAC,CAAC;IAC9B;IAEA,SAASsZ,iBAAiBA,CAAA,EAAG;MAC3B,IAAI,CAAChC,gBAAgB,CAACvqB,KAAK,EAAE;QAC3B;MACF;MACAyqB,mBAAmB,CAACC,IAAI,GAAG,IAAI;MAC/BD,mBAAmB,CAACllB,GAAG,GAAGglB,gBAAgB,CAACvqB,KAAK;MAChDwsB,kBAAkB,CAAC,CAAC;IACtB;IAEA,SAASL,kBAAkBA,CAAA,EAAG;MAC5B1B,mBAAmB,CAACC,IAAI,GAAG,KAAK;MAChCD,mBAAmB,CAACpU,QAAQ,GAAG,KAAK;IACtC;IAEA,SAASmW,kBAAkBA,CAAA,EAAG;MAC5B/B,mBAAmB,CAACxU,KAAK,GAAG,CAAC;MAC7BwU,mBAAmB,CAACtU,OAAO,GAAG,CAAC;MAC/BsU,mBAAmB,CAACrU,OAAO,GAAG,CAAC;IACjC;IAEA,SAASqW,iBAAiBA,CAAC5N,MAAM,EAAE;MACjC4L,mBAAmB,CAACxU,KAAK,GAAGnT,IAAI,CAACC,GAAG,CAAC,GAAG,EAAED,IAAI,CAACE,GAAG,CAAC,CAAC,EAAEC,MAAM,CAAC,CAACwnB,mBAAmB,CAACxU,KAAK,GAAG4I,MAAM,EAAE/B,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;MAC/G,IAAI2N,mBAAmB,CAACxU,KAAK,IAAI,CAAC,EAAE;QAClCwU,mBAAmB,CAACtU,OAAO,GAAG,CAAC;QAC/BsU,mBAAmB,CAACrU,OAAO,GAAG,CAAC;MACjC;IACF;IAEA,SAASsW,wBAAwBA,CAAC1Y,KAAK,EAAE;MACvCyY,iBAAiB,CAACzY,KAAK,CAAC8K,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;IACvD;IAEA,SAAS6N,sBAAsBA,CAAC3Y,KAAK,EAAE;MACrC,IAAIyW,mBAAmB,CAACxU,KAAK,IAAI,CAAC,EAAE;QAClC;MACF;MACAwU,mBAAmB,CAACpU,QAAQ,GAAG,IAAI;MACnCoU,mBAAmB,CAACnU,UAAU,GAAGtC,KAAK,CAAC+K,OAAO;MAC9C0L,mBAAmB,CAAClU,UAAU,GAAGvC,KAAK,CAACgL,OAAO;MAC9CyL,mBAAmB,CAACjU,WAAW,GAAGiU,mBAAmB,CAACtU,OAAO;MAC7DsU,mBAAmB,CAAChU,WAAW,GAAGgU,mBAAmB,CAACrU,OAAO;MAC7DpC,KAAK,CAAC4Y,aAAa,CAACC,iBAAiB,GAAG7Y,KAAK,CAAC8Y,SAAS,CAAC;IAC1D;IAEA,SAASC,qBAAqBA,CAAC/Y,KAAK,EAAE;MACpC,IAAI,CAACyW,mBAAmB,CAACpU,QAAQ,EAAE;QACjC;MACF;MACAoU,mBAAmB,CAACtU,OAAO,GAAGsU,mBAAmB,CAACjU,WAAW,GAAGxC,KAAK,CAAC+K,OAAO,GAAG0L,mBAAmB,CAACnU,UAAU;MAC9GmU,mBAAmB,CAACrU,OAAO,GAAGqU,mBAAmB,CAAChU,WAAW,GAAGzC,KAAK,CAACgL,OAAO,GAAGyL,mBAAmB,CAAClU,UAAU;IAChH;IAEA,SAASyW,qBAAqBA,CAAA,EAAG;MAC/BvC,mBAAmB,CAACpU,QAAQ,GAAG,KAAK;IACtC;IAEA,SAAS4W,YAAYA,CAACjZ,KAAK,EAAE;MAC3B,MAAMZ,IAAI,GAAGrD,KAAK,CAACC,IAAI,CAACgE,KAAK,CAACI,YAAY,EAAEb,KAAK,IAAI,EAAE,CAAC,CAACtK,IAAI,CAAC0L,IAAI,IAAIA,IAAI,CAACtT,IAAI,CAAC2D,UAAU,CAAC,QAAQ,CAAC,CAAC;MACrG,IAAIoO,IAAI,EAAE;QACRoY,oBAAoB,CAAC,CAAC;QACtBa,iBAAiB,CAACjZ,IAAI,CAAC;MACzB;IACF;IAEA,SAAS8Z,gBAAgBA,CAAA,EAAG;MAC1B,MAAMC,MAAM,GAAGjD,aAAa,CAAClqB,KAAK;MAClC,MAAMge,IAAI,GAAGmP,MAAM,EAAElP,qBAAqB,CAAC,CAAC;MAC5C,MAAMG,KAAK,GAAGtb,IAAI,CAACC,GAAG,CAAC,GAAG,EAAED,IAAI,CAACsqB,KAAK,CAACpP,IAAI,EAAEI,KAAK,IAAI,GAAG,CAAC,CAAC;MAC3D,MAAMG,MAAM,GAAGzb,IAAI,CAACC,GAAG,CAAC,GAAG,EAAED,IAAI,CAACsqB,KAAK,CAACpP,IAAI,EAAEO,MAAM,IAAI,GAAG,CAAC,CAAC;MAC7D,OAAO;QAAEH,KAAK;QAAEG;MAAO,CAAC;IAC1B;IAEA,SAAS8O,cAAcA,CAAA,EAAG;MACxB,MAAM;QAAEjP,KAAK;QAAEG;MAAO,CAAC,GAAG2O,gBAAgB,CAAC,CAAC;MAC5C,OAAOpqB,IAAI,CAACsqB,KAAK,CAACtqB,IAAI,CAACE,GAAG,CAACob,KAAK,EAAEG,MAAM,CAAC,GAAG,IAAI,CAAC;IACnD;IAEA,SAAS+O,gBAAgBA,CAAA,EAAG;MAC1B,MAAMtC,KAAK,GAAGL,aAAa,CAACK,KAAK;MACjC,IAAI,CAACA,KAAK,EAAE;QACV,OAAO;UAAE5M,KAAK,EAAE,CAAC;UAAEG,MAAM,EAAE;QAAE,CAAC;MAChC;MACA,MAAMgP,WAAW,GAAGzqB,IAAI,CAAC0qB,GAAG,CAAC7C,aAAa,CAACzU,QAAQ,GAAG,GAAG,CAAC,KAAK,EAAE;MACjE,OAAO;QACLkI,KAAK,EAAEmP,WAAW,GAAGvC,KAAK,CAACyC,aAAa,GAAGzC,KAAK,CAAC0C,YAAY;QAC7DnP,MAAM,EAAEgP,WAAW,GAAGvC,KAAK,CAAC0C,YAAY,GAAG1C,KAAK,CAACyC;MACnD,CAAC;IACH;IAEA,SAASE,kBAAkBA,CAAA,EAAG;MAC5B,MAAMC,QAAQ,GAAGP,cAAc,CAAC,CAAC;MACjC,MAAMQ,OAAO,GAAGP,gBAAgB,CAAC,CAAC;MAClC,MAAMQ,WAAW,GAAGD,OAAO,CAACzP,KAAK,GAAGuM,aAAa,CAAC1U,KAAK;MACvD,MAAM8X,YAAY,GAAGF,OAAO,CAACtP,MAAM,GAAGoM,aAAa,CAAC1U,KAAK;MACzD,MAAM+X,IAAI,GAAGlrB,IAAI,CAACC,GAAG,CAAC,CAAC,EAAE,CAAC+qB,WAAW,GAAGF,QAAQ,IAAI,CAAC,CAAC;MACtD,MAAMK,IAAI,GAAGnrB,IAAI,CAACC,GAAG,CAAC,CAAC,EAAE,CAACgrB,YAAY,GAAGH,QAAQ,IAAI,CAAC,CAAC;MACvDjD,aAAa,CAACxU,OAAO,GAAGrT,IAAI,CAACC,GAAG,CAAC,CAACirB,IAAI,EAAElrB,IAAI,CAACE,GAAG,CAACgrB,IAAI,EAAErD,aAAa,CAACxU,OAAO,CAAC,CAAC;MAC9EwU,aAAa,CAACvU,OAAO,GAAGtT,IAAI,CAACC,GAAG,CAAC,CAACkrB,IAAI,EAAEnrB,IAAI,CAACE,GAAG,CAACirB,IAAI,EAAEtD,aAAa,CAACvU,OAAO,CAAC,CAAC;IAChF;IAEA,SAAS8X,sBAAsBA,CAAA,EAAG;MAChC,MAAMN,QAAQ,GAAGP,cAAc,CAAC,CAAC;MACjC,MAAMQ,OAAO,GAAGP,gBAAgB,CAAC,CAAC;MAClC3C,aAAa,CAACM,SAAS,GAAGnoB,IAAI,CAACC,GAAG,CAAC6qB,QAAQ,GAAGC,OAAO,CAACzP,KAAK,EAAEwP,QAAQ,GAAGC,OAAO,CAACtP,MAAM,CAAC;MACvFoM,aAAa,CAAC1U,KAAK,GAAGnT,IAAI,CAACC,GAAG,CAAC4nB,aAAa,CAACM,SAAS,EAAEN,aAAa,CAAC1U,KAAK,IAAI0U,aAAa,CAACM,SAAS,CAAC;IACzG;IAEA,SAASkD,eAAeA,CAAChB,MAAM,EAAE/O,KAAK,EAAEG,MAAM,EAAE6P,WAAW,GAAG,CAAC,EAAEC,QAAQ,GAAG,KAAK,EAAE;MACjF,MAAMrD,KAAK,GAAGL,aAAa,CAACK,KAAK;MACjC,IAAI,CAACmC,MAAM,IAAI,CAACnC,KAAK,EAAE;QACrB;MACF;MAEA,MAAMsD,GAAG,GAAGD,QAAQ,GAAG,CAAC,GAAInsB,MAAM,CAACqsB,gBAAgB,IAAI,CAAE;MACzDpB,MAAM,CAAC/O,KAAK,GAAGtb,IAAI,CAACsqB,KAAK,CAAChP,KAAK,GAAGkQ,GAAG,CAAC;MACtCnB,MAAM,CAAC5O,MAAM,GAAGzb,IAAI,CAACsqB,KAAK,CAAC7O,MAAM,GAAG+P,GAAG,CAAC;MACxC,MAAME,OAAO,GAAGrB,MAAM,CAACsB,UAAU,CAAC,IAAI,CAAC;MACvCD,OAAO,CAACE,YAAY,CAACJ,GAAG,EAAE,CAAC,EAAE,CAAC,EAAEA,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;MAC1CE,OAAO,CAACG,SAAS,CAAC,CAAC,EAAE,CAAC,EAAEvQ,KAAK,EAAEG,MAAM,CAAC;MACtCiQ,OAAO,CAACI,SAAS,GAAG,SAAS;MAC7BJ,OAAO,CAACK,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAEzQ,KAAK,EAAEG,MAAM,CAAC;MACrCiQ,OAAO,CAACM,IAAI,CAAC,CAAC;MACdN,OAAO,CAACO,SAAS,CAAC3Q,KAAK,GAAG,CAAC,GAAGuM,aAAa,CAACxU,OAAO,GAAGiY,WAAW,EAAE7P,MAAM,GAAG,CAAC,GAAGoM,aAAa,CAACvU,OAAO,GAAGgY,WAAW,CAAC;MACpHI,OAAO,CAACQ,MAAM,CAAErE,aAAa,CAACzU,QAAQ,GAAGpT,IAAI,CAACmsB,EAAE,GAAI,GAAG,CAAC;MACxDT,OAAO,CAACvY,KAAK,CAAC0U,aAAa,CAAC1U,KAAK,GAAGmY,WAAW,EAAEzD,aAAa,CAAC1U,KAAK,GAAGmY,WAAW,CAAC;MACnFI,OAAO,CAACU,SAAS,CAAClE,KAAK,EAAE,CAACA,KAAK,CAAC0C,YAAY,GAAG,CAAC,EAAE,CAAC1C,KAAK,CAACyC,aAAa,GAAG,CAAC,CAAC;MAC3Ee,OAAO,CAAC3xB,OAAO,CAAC,CAAC;MAEjB,IAAI,CAACwxB,QAAQ,EAAE;QACb,MAAMT,QAAQ,GAAGP,cAAc,CAAC,CAAC;QACjCmB,OAAO,CAACM,IAAI,CAAC,CAAC;QACdN,OAAO,CAACI,SAAS,GAAG,wBAAwB;QAC5CJ,OAAO,CAACW,SAAS,CAAC,CAAC;QACnBX,OAAO,CAACxQ,IAAI,CAAC,CAAC,EAAE,CAAC,EAAEI,KAAK,EAAEG,MAAM,CAAC;QACjCiQ,OAAO,CAACxQ,IAAI,CAAC,CAACI,KAAK,GAAGwP,QAAQ,IAAI,CAAC,EAAE,CAACrP,MAAM,GAAGqP,QAAQ,IAAI,CAAC,EAAEA,QAAQ,EAAEA,QAAQ,CAAC;QACjFY,OAAO,CAACY,IAAI,CAAC,SAAS,CAAC;QACvBZ,OAAO,CAAC3xB,OAAO,CAAC,CAAC;MACnB;IACF;IAEA,SAASuuB,iBAAiBA,CAAA,EAAG;MAC3B,IAAI,CAACT,aAAa,CAACD,IAAI,IAAI,CAACC,aAAa,CAACC,MAAM,EAAE;QAChD;MACF;MACA+C,kBAAkB,CAAC,CAAC;MACpB,MAAM;QAAEvP,KAAK;QAAEG;MAAO,CAAC,GAAG2O,gBAAgB,CAAC,CAAC;MAC5CiB,eAAe,CAACjE,aAAa,CAAClqB,KAAK,EAAEoe,KAAK,EAAEG,MAAM,CAAC;MACnD,MAAM8Q,aAAa,GAAGlF,oBAAoB,CAACnqB,KAAK;MAChD,IAAIqvB,aAAa,EAAE;QACjBlB,eAAe,CAACkB,aAAa,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAGhC,cAAc,CAAC,CAAC,EAAE,IAAI,CAAC;MACxE;IACF;IAEA,SAASiC,qBAAqBA,CAAA,EAAG;MAC/B,IAAI,CAAC3E,aAAa,CAACK,KAAK,EAAE;QACxB;MACF;MACAL,aAAa,CAACzU,QAAQ,GAAG,CAAC;MAC1ByU,aAAa,CAACxU,OAAO,GAAG,CAAC;MACzBwU,aAAa,CAACvU,OAAO,GAAG,CAAC;MACzB8X,sBAAsB,CAAC,CAAC;MACxBvD,aAAa,CAAC1U,KAAK,GAAG0U,aAAa,CAACM,SAAS;MAC7CG,iBAAiB,CAAC,CAAC;IACrB;IAEA,SAASiB,iBAAiBA,CAACjZ,IAAI,EAAE;MAC/B,IAAI,CAACA,IAAI,CAAC/R,IAAI,CAAC2D,UAAU,CAAC,QAAQ,CAAC,EAAE;QACnC8kB,YAAY,CAAC9pB,KAAK,GAAG,SAAS;QAC9B;MACF;MACA,IAAIoT,IAAI,CAACO,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,EAAE;QAC/BmW,YAAY,CAAC9pB,KAAK,GAAG,aAAa;QAClC;MACF;MAEAsrB,kBAAkB,CAAC,CAAC;MACpBX,aAAa,CAACD,IAAI,GAAG,IAAI;MACzBC,aAAa,CAACC,MAAM,GAAG,KAAK;MAC5BD,aAAa,CAAC3pB,KAAK,GAAG,EAAE;MACxB2pB,aAAa,CAACI,QAAQ,GAAG3X,IAAI,CAAC5O,IAAI,IAAI,YAAY;MAClDmmB,aAAa,CAACG,SAAS,GAAGzlB,GAAG,CAACkqB,eAAe,CAACnc,IAAI,CAAC;MACnD,MAAM4X,KAAK,GAAG,IAAIwE,KAAK,CAAC,CAAC;MACzBxE,KAAK,CAACyE,MAAM,GAAG,MAAM;QACnB9E,aAAa,CAACK,KAAK,GAAGA,KAAK;QAC3BL,aAAa,CAACC,MAAM,GAAG,IAAI;QAC3BtV,uDAAQ,CAACga,qBAAqB,CAAC;MACjC,CAAC;MACDtE,KAAK,CAAC0E,OAAO,GAAG,MAAM;QACpB/E,aAAa,CAAC3pB,KAAK,GAAG,QAAQ;QAC9B2pB,aAAa,CAACC,MAAM,GAAG,KAAK;MAC9B,CAAC;MACDI,KAAK,CAAC9D,GAAG,GAAGyD,aAAa,CAACG,SAAS;IACrC;IAEA,SAASQ,kBAAkBA,CAAA,EAAG;MAC5BX,aAAa,CAACD,IAAI,GAAG,KAAK;MAC1BC,aAAa,CAACC,MAAM,GAAG,KAAK;MAC5BD,aAAa,CAACE,IAAI,GAAG,KAAK;MAC1BF,aAAa,CAAC3pB,KAAK,GAAG,EAAE;MACxB2pB,aAAa,CAACK,KAAK,GAAG,IAAI;MAC1BL,aAAa,CAACtU,QAAQ,GAAG,KAAK;MAC9B2V,sBAAsB,CAAC,CAAC;IAC1B;IAEA,SAAS2D,WAAWA,CAAC9Q,MAAM,EAAE;MAC3B,IAAI,CAAC8L,aAAa,CAACC,MAAM,EAAE;QACzB;MACF;MACAsD,sBAAsB,CAAC,CAAC;MACxBvD,aAAa,CAAC1U,KAAK,GAAGnT,IAAI,CAACC,GAAG,CAAC4nB,aAAa,CAACM,SAAS,EAAEnoB,IAAI,CAACE,GAAG,CAAC2nB,aAAa,CAACM,SAAS,GAAG,CAAC,EAAEN,aAAa,CAAC1U,KAAK,GAAG4I,MAAM,CAAC,CAAC;MAC5HuM,iBAAiB,CAAC,CAAC;IACrB;IAEA,SAASwE,aAAaA,CAACC,OAAO,EAAE;MAC9B,IAAI,CAAClF,aAAa,CAACC,MAAM,EAAE;QACzB;MACF;MACAD,aAAa,CAACzU,QAAQ,GAAG,CAACyU,aAAa,CAACzU,QAAQ,GAAG2Z,OAAO,GAAG,GAAG,IAAI,GAAG;MACvE3B,sBAAsB,CAAC,CAAC;MACxBP,kBAAkB,CAAC,CAAC;MACpBvC,iBAAiB,CAAC,CAAC;IACrB;IAEA,SAAS0E,kBAAkBA,CAAC9b,KAAK,EAAE;MACjC2b,WAAW,CAAC3b,KAAK,CAAC8K,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;IACjD;IAEA,SAASiR,gBAAgBA,CAAC/b,KAAK,EAAE;MAC/B,IAAI,CAAC2W,aAAa,CAACC,MAAM,EAAE;QACzB;MACF;MACAD,aAAa,CAACtU,QAAQ,GAAG,IAAI;MAC7BsU,aAAa,CAACrU,UAAU,GAAGtC,KAAK,CAAC+K,OAAO;MACxC4L,aAAa,CAACpU,UAAU,GAAGvC,KAAK,CAACgL,OAAO;MACxC2L,aAAa,CAACnU,WAAW,GAAGmU,aAAa,CAACxU,OAAO;MACjDwU,aAAa,CAAClU,WAAW,GAAGkU,aAAa,CAACvU,OAAO;MACjDpC,KAAK,CAAC4Y,aAAa,CAACC,iBAAiB,GAAG7Y,KAAK,CAAC8Y,SAAS,CAAC;IAC1D;IAEA,SAASkD,eAAeA,CAAChc,KAAK,EAAE;MAC9B,IAAI,CAAC2W,aAAa,CAACtU,QAAQ,EAAE;QAC3B;MACF;MACAsU,aAAa,CAACxU,OAAO,GAAGwU,aAAa,CAACnU,WAAW,GAAGxC,KAAK,CAAC+K,OAAO,GAAG4L,aAAa,CAACrU,UAAU;MAC5FqU,aAAa,CAACvU,OAAO,GAAGuU,aAAa,CAAClU,WAAW,GAAGzC,KAAK,CAACgL,OAAO,GAAG2L,aAAa,CAACpU,UAAU;MAC5F6U,iBAAiB,CAAC,CAAC;IACrB;IAEA,SAAS6E,eAAeA,CAAA,EAAG;MACzBtF,aAAa,CAACtU,QAAQ,GAAG,KAAK;IAChC;IAEA,SAAS6Z,YAAYA,CAAC/C,MAAM,EAAE9rB,IAAI,GAAG,YAAY,EAAE8uB,OAAO,GAAG,GAAG,EAAE;MAChE,OAAO,IAAIlsB,OAAO,CAAC,CAACC,OAAO,EAAEksB,MAAM,KAAK;QACtCjD,MAAM,CAACkD,MAAM,CAACC,IAAI,IAAI;UACpB,IAAIA,IAAI,EAAE;YACRpsB,OAAO,CAACosB,IAAI,CAAC;UACf,CAAC,MAAM;YACLF,MAAM,CAAC,IAAIztB,KAAK,CAAC,QAAQ,CAAC,CAAC;UAC7B;QACF,CAAC,EAAEtB,IAAI,EAAE8uB,OAAO,CAAC;MACnB,CAAC,CAAC;IACJ;IAEA,eAAeI,iBAAiBA,CAAA,EAAG;MACjC,IAAI,CAAC5F,aAAa,CAACC,MAAM,IAAID,aAAa,CAACE,IAAI,EAAE;QAC/C;MACF;MACAF,aAAa,CAACE,IAAI,GAAG,IAAI;MACzBF,aAAa,CAAC3pB,KAAK,GAAG,EAAE;MACxB,IAAI;QACF,MAAMwvB,YAAY,GAAG5qB,QAAQ,CAACI,aAAa,CAAC,QAAQ,CAAC;QACrDmoB,eAAe,CAACqC,YAAY,EAAErH,gBAAgB,EAAEA,gBAAgB,EAAEA,gBAAgB,GAAGkE,cAAc,CAAC,CAAC,EAAE,IAAI,CAAC;QAC5G,MAAMiD,IAAI,GAAG,MAAMJ,YAAY,CAACM,YAAY,CAAC;QAC7C,MAAMzF,QAAQ,GAAGJ,aAAa,CAACI,QAAQ,CAACjiB,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,QAAQ;QAC3E,MAAM2nB,WAAW,GAAG,IAAI/c,IAAI,CAAC,CAAC4c,IAAI,CAAC,EAAE,GAAGvF,QAAQ,MAAM,EAAE;UAAE1pB,IAAI,EAAE;QAAa,CAAC,CAAC;QAC/E0oB,WAAW,CAAC/pB,KAAK,GAAGywB,WAAW;QAC/BpF,oBAAoB,CAAC,CAAC;QACtBrB,cAAc,CAAChqB,KAAK,GAAGqF,GAAG,CAACkqB,eAAe,CAACkB,WAAW,CAAC;QACvDnF,kBAAkB,CAAC,CAAC;MACtB,CAAC,CAAC,OAAOtqB,KAAK,EAAE;QACd2pB,aAAa,CAAC3pB,KAAK,GAAGA,KAAK,CAACU,OAAO,IAAI,QAAQ;MACjD,CAAC,SAAS;QACRipB,aAAa,CAACE,IAAI,GAAG,KAAK;MAC5B;IACF;IAEA,eAAe6F,WAAWA,CAAA,EAAG;MAC3B,IAAI9G,aAAa,CAAC5pB,KAAK,IAAI,CAAC8H,YAAY,CAAC9H,KAAK,CAAC6D,WAAW,EAAE;QAC1D;MACF;MACA2nB,oBAAoB,CAAC,CAAC;MACtB5B,aAAa,CAAC5pB,KAAK,GAAG,IAAI;MAC1B,IAAI;QACF,MAAMpD,OAAO,CAAC8zB,WAAW,CAAC;UACxB7sB,WAAW,EAAEiE,YAAY,CAAC9H,KAAK,CAAC6D,WAAW;UAC3C8sB,YAAY,EAAE5G,WAAW,CAAC/pB;QAC5B,CAAC,CAAC;QACF+pB,WAAW,CAAC/pB,KAAK,GAAG,IAAI;QACxBqrB,oBAAoB,CAAC,CAAC;QACtBxB,aAAa,CAAC7pB,KAAK,GAAG,OAAO;QAC7BtC,QAAQ,CAACE,eAAe,CAAC;UAAEyE,KAAK,EAAE;QAAK,CAAC,CAAC;MAC3C,CAAC,CAAC,OAAOrB,KAAK,EAAE;QACd8oB,YAAY,CAAC9pB,KAAK,GAAGgB,KAAK,CAACU,OAAO,IAAI,QAAQ;MAChD,CAAC,SAAS;QACRkoB,aAAa,CAAC5pB,KAAK,GAAG,KAAK;MAC7B;IACF;IAEA,eAAe4wB,YAAYA,CAAA,EAAG;MAC5B,IAAIpH,cAAc,CAACxpB,KAAK,EAAE;QACxB;MACF;MACAyrB,qBAAqB,CAAC,CAAC;MACvB,MAAMpB,WAAW,GAAGD,aAAa,CAACC,WAAW;MAC7C,MAAMC,WAAW,GAAGF,aAAa,CAACE,WAAW;MAC7C,MAAMtrB,eAAe,GAAGorB,aAAa,CAACprB,eAAe;MACrD,IAAI,CAACqrB,WAAW,IAAI,CAACC,WAAW,IAAI,CAACtrB,eAAe,EAAE;QACpD0qB,aAAa,CAAC1pB,KAAK,GAAG,SAAS;QAC/B;MACF;MACA,IAAIsqB,WAAW,KAAKtrB,eAAe,EAAE;QACnC0qB,aAAa,CAAC1pB,KAAK,GAAG,aAAa;QACnC;MACF;MACA,IAAIqqB,WAAW,KAAKC,WAAW,EAAE;QAC/BZ,aAAa,CAAC1pB,KAAK,GAAG,cAAc;QACpC;MACF;MAEAwpB,cAAc,CAACxpB,KAAK,GAAG,IAAI;MAC3B,IAAI;QACF,MAAMpD,OAAO,CAACi0B,cAAc,CAAC;UAAExG,WAAW;UAAEC;QAAY,CAAC,CAAC;QAC1DoB,kBAAkB,CAAC,CAAC;QACpBjC,cAAc,CAACzpB,KAAK,GAAG,OAAO;MAChC,CAAC,CAAC,OAAOgB,KAAK,EAAE;QACd0oB,aAAa,CAAC1pB,KAAK,GAAGgB,KAAK,CAACU,OAAO,IAAI,QAAQ;MACjD,CAAC,SAAS;QACR8nB,cAAc,CAACxpB,KAAK,GAAG,KAAK;MAC9B;IACF;IAEA,SAAS8wB,MAAMA,CAAA,EAAG;MAChBlF,aAAa,CAAC,CAAC;MACfluB,QAAQ,CAACqzB,aAAa,CAAC,CAAC;MACxBn0B,OAAO,CAACk0B,MAAM,CAAC,CAAC;IAClB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACntBA,MAAME,WAAW,GAAG9uB,MAAM,CAAC+C,QAAQ,CAACgsB,QAAQ,IAAI,WAAW;AAC3D,MAAMC,aAAa,GAAGhvB,MAAM,CAACivB,gBAAgB,IAAI,CAAC,CAAC;AACnD,MAAMC,eAAe,GAAG,GAAGlvB,MAAM,CAAC+C,QAAQ,CAACC,QAAQ,KAAK8rB,WAAW,OAAO;AAC1E,MAAMK,iBAAiB,GAAG,GAAGnvB,MAAM,CAAC+C,QAAQ,CAACC,QAAQ,KAAK8rB,WAAW,QAAQ;AAC7E,MAAMM,iBAAiB,GAAG,GAAGpvB,MAAM,CAAC+C,QAAQ,CAACC,QAAQ,KAAK8rB,WAAW,OAAO;AAErE,MAAM7yB,SAAS,GAAG;EACvByB,OAAO,EAAE,QAAQ;EACjBwF,WAAW,EAAE8rB,aAAa,CAAC9rB,WAAW,IAAImsB,SAAgC,IAAID,iBAAiB;EAC/FI,SAAS,EAAER,aAAa,CAACQ,SAAS,IAAIH,SAA8B,IAAIH,eAAe;EACvFQ,WAAW,EAAEV,aAAa,CAACU,WAAW,IAAIL,SAAiC,IAAIF,iBAAiB;EAChGhtB,iBAAiB,EAAE6sB,aAAa,CAAC7sB,iBAAiB,IAAIktB,SAAuC,KAAKA,MAAsC,GAAG,CAAgC,GAAG,0BAA0B,CAAC;EACzMS,iBAAiB,EAAEd,aAAa,CAACc,iBAAiB,IAAIT,SAAuC,IAAI,GAAGD,iBAAiB,sBAAsB;EAC3IY,sBAAsB,EAAEhB,aAAa,CAACgB,sBAAsB,IAAIX,SAA6C,IAAI,GAAGD,iBAAiB,4BAA4B;EACjKc,WAAW,EAAElB,aAAa,CAACkB,WAAW,IAAIb,SAAgC,KAAKA,MAAsC,GAAG,CAAyB,GAAG,mBAAmB,CAAC;EACxKe,cAAc,EAAEpB,aAAa,CAACoB,cAAc,IAAIf,SAAoC,KAAKA,MAAsC,GAAG,CAA6B,GAAG,uBAAuB,CAAC;EAC1LiB,aAAa,EAAEtB,aAAa,CAACsB,aAAa,IAAIjB,SAAmC,KAAKA,MAAsC,GAAG,CAA4B,GAAG,sBAAsB,CAAC;EACrLmB,sBAAsB,EAAExB,aAAa,CAACwB,sBAAsB,IAAInB,SAA4C,KAAKA,MAAsC,GAAG,CAAqC,GAAG,+BAA+B,CAAC;EAClOqB,cAAc,EAAE1B,aAAa,CAAC0B,cAAc,IAAIrB,SAAoC,KAAKA,MAAsC,GAAG,CAA6B,GAAG,uBAAuB,CAAC;EAC1LuB,gBAAgB,EAAE5B,aAAa,CAAC4B,gBAAgB,IAAIvB,SAAsC,KAAKA,MAAsC,GAAG,CAA+B,GAAG,yBAAyB,CAAC;EACpMyB,gBAAgB,EAAE9B,aAAa,CAAC8B,gBAAgB,IAAIzB,SAAsC,KAAKA,MAAsC,GAAG,CAA+B,GAAG,yBAAyB,CAAC;EACpM2B,WAAW,EAAEhC,aAAa,CAACgC,WAAW,IAAI3B,SAAgC,KAAKA,MAAsC,GAAG,CAAyB,GAAG,mBAAmB,CAAC;EACxK6B,UAAU,EAAElC,aAAa,CAACkC,UAAU,IAAI7B,SAA+B,KAAKA,MAAsC,GAAG,CAAwB,GAAG,kBAAkB,CAAC;EACnK+B,iBAAiB,EAAEpC,aAAa,CAACoC,iBAAiB,IAAI/B,SAAuC,IAAI,GAAGH,eAAe,sBAAsB;EACzIoC,SAAS,EAAEtC,aAAa,CAACsC,SAAS,IAAIjC,SAA8B,IAAI,GAAGH,eAAe,cAAc;EACxGsC,YAAY,EAAExC,aAAa,CAACwC,YAAY,IAAInC,SAAkC,IAAIP,WAAW;EAC7F4C,WAAW,EAAE3wB,MAAM,CAACiuB,aAAa,CAAC0C,WAAW,IAAIrC,SAAiC,IAAI,KAAK,CAAC;EAC5FuC,MAAM,EAAE5C,aAAa,CAAC4C,MAAM,IAAIvC,SAA2B,KAAK,MAAM;EACtEyC,MAAM,EAAE9C,aAAa,CAAC8C,MAAM,IAAIzC,SAA2B,IAAI,KAAK;EACpE2C,KAAK,EAAEhD,aAAa,CAACgD,KAAK,IAAI3C,SAA0B,IAAI,EAAE;EAC9D6C,OAAO,EAAElD,aAAa,CAACkD,OAAO,IAAI7C,SAA2B,IAAI,MAAM;EACvE+C,cAAc,EAAErxB,MAAM,CAACiuB,aAAa,CAACoD,cAAc,IAAI/C,SAAoC,IAAI,GAAG,CAAC;EACnGiD,UAAU,EAAEtD,aAAa,CAACsD,UAAU,IAAIjD,SAA+B,KAAK,MAAM;EAClFmD,YAAY,EAAExD,aAAa,CAACwD,YAAY,IAAInD,SAAkC,IAAI,qBAAqB;EACvGqD,MAAM,EAAE1D,aAAa,CAAC0D,MAAM,IAAIrD,SAA2B,IAAI,YAAY;EAC3EuD,QAAQ,EAAE,CAAC;EACXC,kBAAkB,EAAE,sBAAsB;EAC1CC,sBAAsB,EAAE;AAC1B,CAAC,C;;;;;;;;;;;;;;ACtC+B;AACI;AACR;AACD;AAE3BC,wDAAS,CAACE,yDAAG,CAAC,CAACC,GAAG,CAACF,4DAAW,CAAC,CAAC,CAAC,CAACG,KAAK,CAAC,MAAM,CAAC,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACLrB;AACW;AAErC,MAAMC,OAAO,GAAG,kBAAkB;AAClC,MAAMC,wBAAwB,GAAG,CAAC,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,mBAAmB,CAAC;AACrF,MAAMC,gBAAgB,GAAG,wBAAwB;AACjD,MAAMC,eAAe,GAAG,EAAE;AAC1B,MAAMC,kBAAkB,GAAG,KAAK;AAEhC,IAAIC,wBAAwB,GAAG,IAAI;AACnC,IAAIC,cAAc,GAAG,IAAI;AAEzB,SAASC,YAAYA,CAAA,EAAG;EACtB,OAAO13B,uDAAS,CAACuzB,SAAS,IAAI,EAAE;AAClC;AAEA,SAASoE,aAAaA,CAAA,EAAG;EACvB,IAAI;IACF,OAAOza,IAAI,CAACC,KAAK,CAACya,YAAY,CAACC,OAAO,CAACR,gBAAgB,CAAC,IAAI,IAAI,CAAC;EACnE,CAAC,CAAC,OAAOx0B,KAAK,EAAE;IACd,OAAO,CAAC,CAAC;EACX;AACF;AAEA,SAASi1B,cAAcA,CAACC,KAAK,EAAE;EAC7BH,YAAY,CAACI,OAAO,CAACX,gBAAgB,EAAEna,IAAI,CAAC+a,SAAS,CAACF,KAAK,CAAC,CAAC;AAC/D;AAEA,SAASG,mBAAmBA,CAACC,MAAM,GAAG,CAAC,CAAC,EAAE;EACxC,MAAMC,WAAW,GAAGj2B,MAAM,CAACg2B,MAAM,CAACC,WAAW,IAAI,EAAE,CAAC,CAAC9xB,IAAI,CAAC,CAAC;EAC3D,MAAM+xB,YAAY,GAAGl2B,MAAM,CAACg2B,MAAM,CAACE,YAAY,IAAI,EAAE,CAAC,CAAC/xB,IAAI,CAAC,CAAC;EAC7D,IAAI,CAAC8xB,WAAW,IAAI,CAACC,YAAY,EAAE;IACjC,OAAO,IAAI;EACb;EACA,OAAO;IACLD,WAAW;IACXC,YAAY;IACZC,SAAS,EAAEn2B,MAAM,CAACg2B,MAAM,CAACG,SAAS,IAAI,QAAQ,CAAC,CAAChyB,IAAI,CAAC,CAAC,IAAI,QAAQ;IAClEiyB,mBAAmB,EAAEzzB,MAAM,CAACqzB,MAAM,CAACI,mBAAmB,IAAI,CAAC,CAAC,IAAI,CAAC;IACjEC,mBAAmB,EAAE1zB,MAAM,CAACqzB,MAAM,CAACK,mBAAmB,IAAI,CAAC,CAAC,IAAI,CAAC;IACjEC,oBAAoB,EAAE3zB,MAAM,CAACqzB,MAAM,CAACM,oBAAoB,IAAI,CAAC,CAAC,IAAI,CAAC;IACnEC,oBAAoB,EAAE5zB,MAAM,CAACqzB,MAAM,CAACO,oBAAoB,IAAI,CAAC,CAAC,IAAI;EACpE,CAAC;AACH;AAEO,SAASC,gBAAgBA,CAAA,EAAG;EACjC,MAAMZ,KAAK,GAAGJ,aAAa,CAAC,CAAC;EAC7B,OAAOO,mBAAmB,CAACH,KAAK,CAACL,YAAY,CAAC,CAAC,CAAC,CAAC;AACnD;AAEO,SAASkB,cAAcA,CAACT,MAAM,EAAE;EACrC,MAAMU,UAAU,GAAGX,mBAAmB,CAACC,MAAM,CAAC;EAC9C,MAAMJ,KAAK,GAAGJ,aAAa,CAAC,CAAC;EAC7B,IAAI,CAACkB,UAAU,EAAE;IACf,OAAOd,KAAK,CAACL,YAAY,CAAC,CAAC,CAAC;IAC5BI,cAAc,CAACC,KAAK,CAAC;IACrB,OAAO,IAAI;EACb;EACAA,KAAK,CAACL,YAAY,CAAC,CAAC,CAAC,GAAGmB,UAAU;EAClCf,cAAc,CAACC,KAAK,CAAC;EACrB,OAAOc,UAAU;AACnB;AAEO,SAASC,kBAAkBA,CAAA,EAAG;EACnCF,cAAc,CAAC,IAAI,CAAC;AACtB;AAEA,SAASG,WAAWA,CAACl3B,KAAK,EAAE;EAC1B,OAAO,OAAOm3B,QAAQ,KAAK,WAAW,IAAIn3B,KAAK,YAAYm3B,QAAQ;AACrE;AAEA,SAASC,WAAWA,CAAC7xB,GAAG,EAAE;EACxB,OAAO,IAAIF,GAAG,CAACE,GAAG,EAAErD,MAAM,CAAC+C,QAAQ,CAACma,MAAM,CAAC;AAC7C;AAEA,SAASiY,aAAaA,CAAC9xB,GAAG,EAAE;EAC1B,MAAM+xB,QAAQ,GAAGF,WAAW,CAAC7xB,GAAG,CAAC,CAAC+xB,QAAQ;EAC1C,OAAO,CAAC/B,wBAAwB,CAAC5N,IAAI,CAAC4P,IAAI,IAAID,QAAQ,KAAKC,IAAI,IAAID,QAAQ,CAACtyB,UAAU,CAACuyB,IAAI,CAAC,CAAC;AAC/F;AAEA,SAASC,gBAAgBA,CAACjzB,MAAM,EAAE;EAChC,OAAO,CAACA,MAAM,CAACkzB,QAAQ;AACzB;AAEA,SAASC,WAAWA,CAAA,EAAG;EACrB,OAAO,IAAIC,WAAW,CAAC,CAAC;AAC1B;AAEA,SAASC,WAAWA,CAAA,EAAG;EACrB,OAAO,IAAIC,WAAW,CAAC,CAAC;AAC1B;AAEA,SAASC,aAAaA,CAACjb,KAAK,EAAE;EAC5B,IAAIkb,MAAM,GAAG,EAAE;EACflb,KAAK,CAAChJ,OAAO,CAACmkB,IAAI,IAAI;IACpBD,MAAM,IAAIz3B,MAAM,CAAC23B,YAAY,CAACD,IAAI,CAAC;EACrC,CAAC,CAAC;EACF,OAAOE,IAAI,CAACH,MAAM,CAAC;AACrB;AAEA,SAASI,aAAaA,CAACC,MAAM,EAAE;EAC7B,MAAML,MAAM,GAAGM,IAAI,CAACD,MAAM,CAAC;EAC3B,MAAMvb,KAAK,GAAG,IAAIyb,UAAU,CAACP,MAAM,CAAC93B,MAAM,CAAC;EAC3C,KAAK,IAAI6T,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGikB,MAAM,CAAC93B,MAAM,EAAE6T,KAAK,IAAI,CAAC,EAAE;IACrD+I,KAAK,CAAC/I,KAAK,CAAC,GAAGikB,MAAM,CAACQ,UAAU,CAACzkB,KAAK,CAAC;EACzC;EACA,OAAO+I,KAAK;AACd;AAEA,eAAe2b,YAAYA,CAAA,EAAG;EAC5B,IAAI,CAAC7C,wBAAwB,EAAE;IAC7BA,wBAAwB,GAAGzzB,MAAM,CAACu2B,MAAM,CAACC,MAAM,CAACC,SAAS,CACvD,KAAK,EACLjB,WAAW,CAAC,CAAC,CAACkB,MAAM,CAACtD,OAAO,CAAC,EAC7B;MAAE9wB,IAAI,EAAE;IAAU,CAAC,EACnB,KAAK,EACL,CAAC,SAAS,EAAE,SAAS,CACvB,CAAC;EACH;EACA,OAAOmxB,wBAAwB;AACjC;AAEA,eAAekD,cAAcA,CAACC,SAAS,EAAE;EACvC,MAAMC,EAAE,GAAG72B,MAAM,CAACu2B,MAAM,CAACO,eAAe,CAAC,IAAIV,UAAU,CAAC,EAAE,CAAC,CAAC;EAC5D,MAAM1Y,GAAG,GAAG,MAAM4Y,YAAY,CAAC,CAAC;EAChC,MAAMS,SAAS,GAAG,MAAM/2B,MAAM,CAACu2B,MAAM,CAACC,MAAM,CAACQ,OAAO,CAClD;IAAE10B,IAAI,EAAE,SAAS;IAAEu0B;EAAG,CAAC,EACvBnZ,GAAG,EACH8X,WAAW,CAAC,CAAC,CAACkB,MAAM,CAACE,SAAS,CAChC,CAAC;EACD,OAAO,GAAGhB,aAAa,CAACiB,EAAE,CAAC,IAAIjB,aAAa,CAAC,IAAIQ,UAAU,CAACW,SAAS,CAAC,CAAC,EAAE;AAC3E;AAEA,eAAeE,cAAcA,CAACC,UAAU,EAAE;EACxC,MAAM,CAACC,QAAQ,EAAEC,eAAe,CAAC,GAAGh5B,MAAM,CAAC84B,UAAU,IAAI,EAAE,CAAC,CAACG,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;EAC1E,IAAI,CAACF,QAAQ,IAAI,CAACC,eAAe,EAAE;IACjC,MAAM,IAAI32B,KAAK,CAAC,qCAAqC,CAAC;EACxD;EACA,MAAMid,GAAG,GAAG,MAAM4Y,YAAY,CAAC,CAAC;EAChC,MAAMgB,SAAS,GAAG,MAAMt3B,MAAM,CAACu2B,MAAM,CAACC,MAAM,CAACe,OAAO,CAClD;IAAEj1B,IAAI,EAAE,SAAS;IAAEu0B,EAAE,EAAEZ,aAAa,CAACkB,QAAQ;EAAE,CAAC,EAChDzZ,GAAG,EACHuY,aAAa,CAACmB,eAAe,CAC/B,CAAC;EACD,OAAO1B,WAAW,CAAC,CAAC,CAAC8B,MAAM,CAACF,SAAS,CAAC;AACxC;AAEA,SAASG,yBAAyBA,CAACr2B,OAAO,EAAE;EAC1C,IAAIA,OAAO,IAAI,OAAOA,OAAO,KAAK,QAAQ,IAAI,CAACyM,KAAK,CAACwX,OAAO,CAACjkB,OAAO,CAAC,EAAE;IACrE,OAAOA,OAAO;EAChB;EACA,OAAO;IACLxE,IAAI,EAAE,CAAC;IACP4C,OAAO,EAAE,SAAS;IAClB8B,IAAI,EAAEF;EACR,CAAC;AACH;AAEA,eAAes2B,qBAAqBA,CAACz1B,QAAQ,EAAE;EAC7C,MAAM80B,SAAS,GAAG34B,MAAM,CAAC6D,QAAQ,CAAC01B,OAAO,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC5W,WAAW,CAAC,CAAC,KAAK,MAAM;EAC1F,IAAIgW,SAAS,IAAI,OAAO90B,QAAQ,CAACX,IAAI,KAAK,QAAQ,EAAE;IAClD,MAAMs1B,SAAS,GAAG,MAAMK,cAAc,CAACh1B,QAAQ,CAACX,IAAI,CAAC;IACrDW,QAAQ,CAACX,IAAI,GAAGm2B,yBAAyB,CAACte,IAAI,CAACC,KAAK,CAACwd,SAAS,CAAC,CAAC;IAChE,OAAO30B,QAAQ;EACjB;EACAA,QAAQ,CAACX,IAAI,GAAGm2B,yBAAyB,CAACx1B,QAAQ,CAACX,IAAI,CAAC;EACxD,OAAOW,QAAQ;AACjB;AAEA,MAAM21B,MAAM,GAAGj8B,sDAAK,CAACk8B,MAAM,CAAC;EAC1Bz1B,eAAe,EAAE;AACnB,CAAC,CAAC;AAEFw1B,MAAM,CAACE,YAAY,CAACC,OAAO,CAAC7E,GAAG,CAAC,MAAM7wB,MAAM,IAAI;EAC9C,MAAM21B,UAAU,GAAG;IAAE,GAAG31B;EAAO,CAAC;EAChC,MAAMgB,GAAG,GAAG6xB,WAAW,CAAC8C,UAAU,CAAC30B,GAAG,IAAI,EAAE,CAAC,CAACD,QAAQ,CAAC,CAAC;EAExD,IAAIkyB,gBAAgB,CAAC0C,UAAU,CAAC,EAAE;IAChC,MAAMC,IAAI,GAAGrD,gBAAgB,CAAC,CAAC;IAC/B,IAAIqD,IAAI,EAAE5D,WAAW,EAAE;MACrB2D,UAAU,CAACL,OAAO,GAAG;QACnB,IAAIK,UAAU,CAACL,OAAO,IAAI,CAAC,CAAC,CAAC;QAC7BO,aAAa,EAAE,GAAGD,IAAI,CAAC1D,SAAS,IAAI,QAAQ,IAAI0D,IAAI,CAAC5D,WAAW;MAClE,CAAC;IACH;EACF;EAEA,IAAI,CAACW,WAAW,CAACgD,UAAU,CAAC12B,IAAI,CAAC,IAAI02B,UAAU,CAACG,MAAM,EAAEpX,WAAW,CAAC,CAAC,KAAK,KAAK,IAAIoU,aAAa,CAAC9xB,GAAG,CAAC,EAAE;IACrG,MAAM+0B,SAAS,GAAGjf,IAAI,CAAC+a,SAAS,CAAC8D,UAAU,CAAC12B,IAAI,IAAI,CAAC,CAAC,CAAC;IACvD02B,UAAU,CAAC12B,IAAI,GAAG,MAAMq1B,cAAc,CAACyB,SAAS,CAAC;IACjDJ,UAAU,CAACL,OAAO,GAAG;MACnB,IAAIK,UAAU,CAACL,OAAO,IAAI,CAAC,CAAC,CAAC;MAC7B,cAAc,EAAE,0BAA0B;MAC1C,aAAa,EAAE,GAAG/2B,IAAI,CAACy3B,KAAK,CAAC9rB,IAAI,CAAC8B,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;IACjD,CAAC;EACH;EAEA,OAAO2pB,UAAU;AACnB,CAAC,CAAC;AAEFJ,MAAM,CAACE,YAAY,CAAC71B,QAAQ,CAACixB,GAAG,CAAC,MAAMjxB,QAAQ,IAAIy1B,qBAAqB,CAACz1B,QAAQ,CAAC,CAAC;AAEnF,eAAeq2B,kBAAkBA,CAAA,EAAG;EAClC,IAAI5E,cAAc,EAAE;IAClB,OAAOA,cAAc;EACvB;EACA,MAAMuE,IAAI,GAAGrD,gBAAgB,CAAC,CAAC;EAC/B,IAAI,CAACqD,IAAI,EAAE3D,YAAY,EAAE;IACvBS,kBAAkB,CAAC,CAAC;IACpB,MAAM,IAAIt0B,KAAK,CAAC,eAAe,CAAC;EAClC;EAEAizB,cAAc,GAAGkE,MAAM,CAACW,IAAI,CAAC,GAAGt8B,uDAAS,CAACuzB,SAAS,oBAAoB,EAAE;IACvE8E,YAAY,EAAE2D,IAAI,CAAC3D;EACrB,CAAC,EAAE;IACDiB,QAAQ,EAAE;EACZ,CAAC,CAAC,CAAC5qB,IAAI,CAAC1I,QAAQ,IAAI;IAClB,MAAMb,OAAO,GAAGa,QAAQ,CAACX,IAAI,IAAI,CAAC,CAAC;IACnC,IAAIP,MAAM,CAACK,OAAO,CAACxE,IAAI,CAAC,KAAK,CAAC,IAAI,CAACwE,OAAO,CAACE,IAAI,EAAE;MAC/C,IAAIP,MAAM,CAACK,OAAO,CAACxE,IAAI,CAAC,KAAK42B,kBAAkB,EAAE;QAC/CuB,kBAAkB,CAAC,CAAC;MACtB;MACA,MAAM,IAAIt0B,KAAK,CAACW,OAAO,CAAC5B,OAAO,IAAI,UAAU,CAAC;IAChD;IACAq1B,cAAc,CAACzzB,OAAO,CAACE,IAAI,CAAC;IAC5B,OAAOF,OAAO,CAACE,IAAI;EACrB,CAAC,CAAC,CAACk3B,OAAO,CAAC,MAAM;IACf9E,cAAc,GAAG,IAAI;EACvB,CAAC,CAAC;EAEF,OAAOA,cAAc;AACvB;AAEA,eAAeqE,OAAOA,CAAC11B,MAAM,EAAE;EAC7B,MAAMJ,QAAQ,GAAG,MAAM21B,MAAM,CAACG,OAAO,CAAC11B,MAAM,CAAC;EAC7C,MAAMjB,OAAO,GAAGa,QAAQ,CAACX,IAAI,IAAI,CAAC,CAAC;EACnC,IAAIP,MAAM,CAACK,OAAO,CAACxE,IAAI,CAAC,KAAK22B,eAAe,IAAI+B,gBAAgB,CAACjzB,MAAM,CAAC,IAAI,CAACA,MAAM,CAACo2B,oBAAoB,EAAE;IACxG,MAAMH,kBAAkB,CAAC,CAAC;IAC1B,OAAOP,OAAO,CAAC;MACb,GAAG11B,MAAM;MACTo2B,oBAAoB,EAAE;IACxB,CAAC,CAAC;EACJ;EACA,OAAOx2B,QAAQ;AACjB;AAEO,eAAey2B,gBAAgBA,CAACr2B,MAAM,EAAE;EAC7C,OAAO01B,OAAO,CAAC11B,MAAM,CAAC;AACxB;AAEO,eAAes2B,YAAYA,CAACt1B,GAAG,EAAEhB,MAAM,GAAG,CAAC,CAAC,EAAE;EACnD,OAAO01B,OAAO,CAAC;IACb,GAAG11B,MAAM;IACT81B,MAAM,EAAE,KAAK;IACb90B;EACF,CAAC,CAAC;AACJ;AAEO,eAAeu1B,aAAaA,CAACv1B,GAAG,EAAE/B,IAAI,GAAG,CAAC,CAAC,EAAEe,MAAM,GAAG,CAAC,CAAC,EAAE;EAC/D,OAAO01B,OAAO,CAAC;IACb,GAAG11B,MAAM;IACT81B,MAAM,EAAE,MAAM;IACd90B,GAAG;IACH/B;EACF,CAAC,CAAC;AACJ,C;;;;;;;;;;;;;;;;;ACzQqC;AACS;AACpB;AAOC;AAE3B,SAASw3B,gBAAgBA,CAACC,OAAO,EAAE;EACjC,OAAO36B,MAAM,CAAC26B,OAAO,IAAI,EAAE,CAAC,CAAC34B,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;AACpD;AAEA,SAAS44B,UAAUA,CAAC/2B,QAAQ,EAAE;EAC5B,OAAOA,QAAQ,CAACX,IAAI,EAAEA,IAAI,IAAIW,QAAQ,CAACX,IAAI,EAAE5B,MAAM,IAAI,IAAI;AAC7D;AAEA,SAASu5B,aAAaA,CAACh3B,QAAQ,EAAEi3B,QAAQ,EAAE;EACzC,OAAOj3B,QAAQ,CAACX,IAAI,EAAE9B,OAAO,IAAIyC,QAAQ,CAACX,IAAI,EAAE63B,GAAG,IAAID,QAAQ;AACjE;AAEO,MAAME,sBAAsB,SAASP,gEAAY,CAAC;EACvDQ,WAAWA,CAACC,OAAO,EAAE;IACnB,MAAM,IAAI74B,KAAK,CAAC,aAAa64B,OAAO,gBAAgB,CAAC;EACvD;EAEA,MAAMl6B,iBAAiBA,CAAC25B,OAAO,EAAEl8B,QAAQ,EAAEsC,IAAI,GAAG25B,gBAAgB,CAACC,OAAO,CAAC,EAAE;IAC3E,MAAM92B,QAAQ,GAAG,MAAM22B,yEAAa,CAAC,GAAG38B,uDAAS,CAACuzB,SAAS,iBAAiB,EAAE;MAC5ErwB,IAAI;MACJxC,MAAM,EAAEo8B,OAAO;MACfl8B,QAAQ;MACR+1B,QAAQ,EAAE32B,uDAAS,CAAC22B,QAAQ;MAC5B2G,QAAQ,EAAE,IAAI,CAACC,WAAW,CAAC;IAC7B,CAAC,EAAE;MACDjE,QAAQ,EAAE;IACZ,CAAC,CAAC;IAEF,IAAItzB,QAAQ,CAACX,IAAI,EAAE1E,IAAI,KAAK,CAAC,EAAE;MAC7B,MAAM,IAAI6D,KAAK,CAACw4B,aAAa,CAACh3B,QAAQ,EAAE,MAAM,CAAC,CAAC;IAClD;IAEA4yB,0EAAc,CAACmE,UAAU,CAAC/2B,QAAQ,CAAC,CAAC;IACpC,OAAO+2B,UAAU,CAAC/2B,QAAQ,CAAC;EAC7B;EAEA,MAAM1C,eAAeA,CAACk6B,KAAK,EAAE;IAC3B,MAAMx3B,QAAQ,GAAG,MAAM22B,yEAAa,CAAC,GAAG38B,uDAAS,CAACuzB,SAAS,qBAAqB,EAAE;MAChFiK;IACF,CAAC,EAAE;MACDlE,QAAQ,EAAE;IACZ,CAAC,CAAC;IAEF,IAAItzB,QAAQ,CAACX,IAAI,EAAE1E,IAAI,KAAK,CAAC,EAAE;MAC7B,MAAM,IAAI6D,KAAK,CAACw4B,aAAa,CAACh3B,QAAQ,EAAE,SAAS,CAAC,CAAC;IACrD;IAEA,OAAO+2B,UAAU,CAAC/2B,QAAQ,CAAC;EAC7B;EAEA,MAAMy3B,aAAaA,CAACX,OAAO,EAAEn8B,IAAI,EAAE;IACjC,KAAKm8B,OAAO;IACZ,KAAKn8B,IAAI;IACT,MAAM,IAAI6D,KAAK,CAAC,wBAAwB,CAAC;EAC3C;EAEA,MAAMd,QAAQA,CAAC;IAAER,IAAI;IAAExC,MAAM;IAAEC,IAAI,GAAG,EAAE;IAAEC,QAAQ;IAAEE,cAAc,GAAG;EAAG,CAAC,EAAE;IACzE,MAAMkF,QAAQ,GAAG,MAAM22B,yEAAa,CAAC,GAAG38B,uDAAS,CAACuzB,SAAS,gBAAgB,EAAE;MAC3ErwB,IAAI;MACJxC,MAAM;MACNC,IAAI;MACJC,QAAQ;MACR08B,QAAQ,EAAE,IAAI,CAACC,WAAW,CAAC,CAAC;MAC5B5G,QAAQ,EAAE32B,uDAAS,CAAC22B,QAAQ;MAC5B71B;IACF,CAAC,EAAE;MACDw4B,QAAQ,EAAE;IACZ,CAAC,CAAC;IAEF,IAAItzB,QAAQ,CAACX,IAAI,EAAE1E,IAAI,KAAK,CAAC,EAAE;MAC7B,MAAM,IAAI6D,KAAK,CAACw4B,aAAa,CAACh3B,QAAQ,EAAE,MAAM,CAAC,CAAC;IAClD;IAEA4yB,0EAAc,CAACmE,UAAU,CAAC/2B,QAAQ,CAAC,CAAC;IACpC,OAAO+2B,UAAU,CAAC/2B,QAAQ,CAAC;EAC7B;EAEA,MAAM1B,eAAeA,CAACgH,MAAM,GAAG,EAAE,EAAE;IACjC,MAAMtF,QAAQ,GAAG,MAAMtG,sDAAK,CAAC48B,IAAI,CAAC,GAAGt8B,uDAAS,CAACyzB,WAAW,aAAa,EAAE;MACvEiK,IAAI,EAAE,CAAC;MACPC,WAAW,EAAE,QAAQ;MACrBryB,MAAM;MACNgyB,QAAQ,EAAE,IAAI,CAACC,WAAW,CAAC,CAAC;MAC5B5G,QAAQ,EAAE32B,uDAAS,CAAC22B;IACtB,CAAC,EAAE;MAAExwB,eAAe,EAAE;IAAM,CAAC,CAAC;IAE9B,IAAIH,QAAQ,CAACX,IAAI,EAAE1E,IAAI,KAAK,CAAC,EAAE;MAC7B,MAAM,IAAI6D,KAAK,CAACw4B,aAAa,CAACh3B,QAAQ,EAAE,aAAa,CAAC,CAAC;IACzD;IAEA,OAAO+2B,UAAU,CAAC/2B,QAAQ,CAAC,IAAI,CAAC,CAAC;EACnC;EAEA,MAAMZ,kBAAkBA,CAACb,KAAK,EAAE;IAC9B,MAAM6C,GAAG,GAAG,GAAGpH,uDAAS,CAACyzB,WAAW,kBAAkBmK,kBAAkB,CAACr5B,KAAK,CAAC,EAAE;IACjF,IAAIyB,QAAQ;IACZ,IAAI;MACFA,QAAQ,GAAG,MAAMtG,sDAAK,CAAC48B,IAAI,CAACl1B,GAAG,EAAE,IAAI,EAAE;QAAEjB,eAAe,EAAE;MAAM,CAAC,CAAC;IACpE,CAAC,CAAC,OAAO03B,SAAS,EAAE;MAClB73B,QAAQ,GAAG,MAAMtG,sDAAK,CAACuG,GAAG,CAACmB,GAAG,EAAE;QAAEjB,eAAe,EAAE;MAAM,CAAC,CAAC;IAC7D;IAEA,IAAI,CAAC23B,eAAe,CAAC12B,GAAG,EAAEpB,QAAQ,CAAC;IAEnC,MAAMb,OAAO,GAAGa,QAAQ,CAACX,IAAI,IAAI,CAAC,CAAC;IACnC,MAAM5B,MAAM,GAAG0B,OAAO,CAAC1B,MAAM,IAAI0B,OAAO,CAACE,IAAI,IAAI,IAAI;IAErD,IAAIP,MAAM,CAACK,OAAO,CAACxE,IAAI,CAAC,KAAK,CAAC,IAAI8C,MAAM,EAAE;MACxCm1B,0EAAc,CAACn1B,MAAM,CAAC;IACxB;IAEA,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,CAACU,QAAQ,CAACW,MAAM,CAACK,OAAO,CAACxE,IAAI,CAAC,CAAC,EAAE;MAC/D,OAAO;QACL,GAAGwE,OAAO;QACVE,IAAI,EAAE5B;MACR,CAAC;IACH;IAEA,MAAM,IAAIe,KAAK,CAACW,OAAO,CAAC5B,OAAO,IAAI,QAAQ,CAAC;EAC9C;EAEA,MAAMmvB,cAAcA,CAAC;IAAExG,WAAW;IAAEC;EAAY,CAAC,EAAE;IACjD,MAAMnmB,QAAQ,GAAG,MAAM22B,yEAAa,CAAC38B,uDAAS,CAACm1B,iBAAiB,EAAE;MAChEjJ,WAAW;MACXC;IACF,CAAC,CAAC;IAEF,IAAInmB,QAAQ,CAACX,IAAI,EAAE1E,IAAI,KAAK,CAAC,EAAE;MAC7B,MAAM,IAAI6D,KAAK,CAACw4B,aAAa,CAACh3B,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACpD;IAEA,OAAO,IAAI;EACb;EAEA,MAAM+3B,qBAAqBA,CAAC;IAAExyB,MAAM;IAAEyyB,SAAS;IAAE7R;EAAY,CAAC,EAAE;IAC9D,KAAK5gB,MAAM;IACX,KAAKyyB,SAAS;IACd,KAAK7R,WAAW;IAChB,MAAM,IAAI3nB,KAAK,CAAC,0BAA0B,CAAC;EAC7C;EAEA,MAAMmuB,MAAMA,CAAA,EAAG;IACb,MAAMqJ,IAAI,GAAGrD,4EAAgB,CAAC,CAAC;IAC/B,IAAI,CAACqD,IAAI,EAAE3D,YAAY,EAAE;MACvBS,8EAAkB,CAAC,CAAC;MACpB,OAAO,IAAI;IACb;IAEA,IAAI;MACF,MAAM9yB,QAAQ,GAAG,MAAM22B,yEAAa,CAAC38B,uDAAS,CAACq1B,SAAS,EAAE;QACxDgD,YAAY,EAAE2D,IAAI,CAAC3D;MACrB,CAAC,CAAC;MACF,IAAIryB,QAAQ,CAACX,IAAI,EAAE1E,IAAI,KAAK,CAAC,EAAE;QAC7B,MAAM,IAAI6D,KAAK,CAACw4B,aAAa,CAACh3B,QAAQ,EAAE,QAAQ,CAAC,CAAC;MACpD;IACF,CAAC,SAAS;MACR8yB,8EAAkB,CAAC,CAAC;IACtB;IAEA,OAAO,IAAI;EACb;EAEA,MAAMmF,wBAAwBA,CAAA,EAAG;IAC/B,OAAO,EAAE;EACX;EAEA,MAAMC,mBAAmBA,CAAA,EAAG;IAC1B,OAAO,EAAE;EACX;EAEA,MAAMC,oBAAoBA,CAAA,EAAG;IAC3B,OAAO,EAAE;EACX;EAEA,MAAMC,UAAUA,CAAA,EAAG;IACjB,OAAO,IAAI;EACb;EAEA,MAAMC,eAAeA,CAAA,EAAG;IACtB,IAAI,CAACjB,WAAW,CAAC,MAAM,CAAC;EAC1B;EAEA,MAAMkB,qBAAqBA,CAAA,EAAG;IAC5B,IAAI,CAAClB,WAAW,CAAC,QAAQ,CAAC;EAC5B;EAEA,MAAM/e,UAAUA,CAAA,EAAG;IACjB,IAAI,CAAC+e,WAAW,CAAC,OAAO,CAAC;EAC3B;EAEA,MAAMruB,kBAAkBA,CAAA,EAAG;IACzB,IAAI,CAACquB,WAAW,CAAC,OAAO,CAAC;EAC3B;EAEA,MAAM9W,WAAWA,CAAA,EAAG;IAClB,IAAI,CAAC8W,WAAW,CAAC,MAAM,CAAC;EAC1B;EAEA,MAAM7W,SAASA,CAAA,EAAG;IAChB,IAAI,CAAC6W,WAAW,CAAC,MAAM,CAAC;EAC1B;EAEA,MAAMxS,gBAAgBA,CAAA,EAAG;IACvB,IAAI,CAACwS,WAAW,CAAC,MAAM,CAAC;EAC1B;EAEA,MAAMztB,cAAcA,CAAA,EAAG;IACrB,IAAI,CAACytB,WAAW,CAAC,KAAK,CAAC;EACzB;EAEA,MAAMrtB,eAAeA,CAAA,EAAG;IACtB,IAAI,CAACqtB,WAAW,CAAC,KAAK,CAAC;EACzB;EAEA,MAAMhsB,gBAAgBA,CAAA,EAAG;IACvB,IAAI,CAACgsB,WAAW,CAAC,KAAK,CAAC;EACzB;EAEA,MAAMvqB,UAAUA,CAAA,EAAG;IACjB,IAAI,CAACuqB,WAAW,CAAC,MAAM,CAAC;EAC1B;EAEA,MAAMrqB,YAAYA,CAAA,EAAG;IACnB,IAAI,CAACqqB,WAAW,CAAC,MAAM,CAAC;EAC1B;EAEA,MAAMnqB,aAAaA,CAAA,EAAG;IACpB,IAAI,CAACmqB,WAAW,CAAC,MAAM,CAAC;EAC1B;EAEA,MAAMprB,cAAcA,CAAA,EAAG;IACrB,IAAI,CAACorB,WAAW,CAAC,QAAQ,CAAC;EAC5B;EAEA,MAAMlrB,kBAAkBA,CAAA,EAAG;IACzB,IAAI,CAACkrB,WAAW,CAAC,OAAO,CAAC;EAC3B;EAEA,MAAM7qB,gBAAgBA,CAAA,EAAG;IACvB,IAAI,CAAC6qB,WAAW,CAAC,OAAO,CAAC;EAC3B;EAEA,MAAMzqB,sBAAsBA,CAAA,EAAG;IAC7B,IAAI,CAACyqB,WAAW,CAAC,OAAO,CAAC;EAC3B;EAEA,MAAMmB,aAAaA,CAAA,EAAG;IACpB,IAAI,CAACnB,WAAW,CAAC,QAAQ,CAAC;EAC5B;EAEA,MAAMoB,aAAaA,CAAA,EAAG;IACpB,IAAI,CAACpB,WAAW,CAAC,MAAM,CAAC;EAC1B;EAEA,MAAMqB,WAAWA,CAAA,EAAG;IAClB,IAAI,CAACrB,WAAW,CAAC,MAAM,CAAC;EAC1B;EAEA,MAAMsB,gBAAgBA,CAAA,EAAG;IACvB,IAAI,CAACtB,WAAW,CAAC,MAAM,CAAC;EAC1B;AACF,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChR0B;AACW;AAOD;AAEpC,MAAMuB,yBAAyB,GAAG,8BAA8B;AAChE,MAAMC,gCAAgC,GAAG,+BAA+B;AACxE,MAAMC,kCAAkC,GAAG,iCAAiC;AAE5E,SAASC,gBAAgBA,CAACC,OAAO,EAAEzzB,MAAM,GAAG,EAAE,EAAE;EAC9C,MAAM0zB,KAAK,GAAG,GAAGh/B,wDAAS,CAACuzB,SAAS,IAAI,EAAE,IAAIjoB,MAAM,IAAI,WAAW,EAAE;EACrE,OAAO,GAAGyzB,OAAO,IAAInB,kBAAkB,CAACoB,KAAK,CAAC,EAAE;AAClD;AAEA,SAASC,QAAQA,CAAA,EAAG;EAClB,IAAIl7B,MAAM,CAACu2B,MAAM,IAAIv2B,MAAM,CAACu2B,MAAM,CAAC4E,UAAU,EAAE;IAC7C,OAAOn7B,MAAM,CAACu2B,MAAM,CAAC4E,UAAU,CAAC,CAAC,CAACC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC;EACvD;EACA,OAAO,GAAG7uB,IAAI,CAAC8B,GAAG,CAAC,CAAC,GAAGzN,IAAI,CAACy6B,MAAM,CAAC,CAAC,CAACj4B,QAAQ,CAAC,EAAE,CAAC,CAAC/E,KAAK,CAAC,CAAC,CAAC,EAAE;AAC9D;AAEA,SAASi9B,iBAAiBA,CAAC/zB,MAAM,EAAE;EACjC,IAAI;IACF,OAAO4R,IAAI,CAACC,KAAK,CAACya,YAAY,CAACC,OAAO,CAACiH,gBAAgB,CAACH,yBAAyB,EAAErzB,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC;EACtG,CAAC,CAAC,OAAOzI,KAAK,EAAE;IACd,OAAO,CAAC,CAAC;EACX;AACF;AAEA,SAASy8B,cAAcA,CAACC,UAAU,EAAEj0B,MAAM,EAAE;EAC1C,IAAI;IACF,OAAO4R,IAAI,CAACC,KAAK,CAACya,YAAY,CAACC,OAAO,CAACiH,gBAAgB,CAACS,UAAU,EAAEj0B,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC;EACvF,CAAC,CAAC,OAAOzI,KAAK,EAAE;IACd,OAAO,CAAC,CAAC;EACX;AACF;AAEA,SAAS28B,eAAeA,CAACD,UAAU,EAAEE,sBAAsB,EAAEn0B,MAAM,EAAE;EACnEssB,YAAY,CAACI,OAAO,CAAC8G,gBAAgB,CAACS,UAAU,EAAEj0B,MAAM,CAAC,EAAE4R,IAAI,CAAC+a,SAAS,CAACwH,sBAAsB,CAAC,CAAC;AACpG;AAEA,SAASC,WAAWA,CAACn8B,OAAO,EAAE;EAC5B,OAAO,CAACA,OAAO,EAAEmH,EAAE,EAAEnH,OAAO,EAAEyX,UAAU,CAAC,CACtC9O,MAAM,CAACQ,OAAO,CAAC,CACfsD,GAAG,CAACnO,KAAK,IAAIM,MAAM,CAACN,KAAK,CAAC,CAAC;AAChC;AAEA,SAAS89B,gBAAgBA,CAACJ,UAAU,EAAExc,cAAc,EAAExf,OAAO,EAAE+H,MAAM,EAAE;EACrE,MAAMs0B,MAAM,GAAGN,cAAc,CAACC,UAAU,EAAEj0B,MAAM,CAAC;EACjD,MAAMu0B,GAAG,GAAG,IAAIruB,GAAG,CAACouB,MAAM,CAAC7c,cAAc,CAAC,IAAI,EAAE,CAAC;EACjD,OAAO2c,WAAW,CAACn8B,OAAO,CAAC,CAACimB,IAAI,CAAC9e,EAAE,IAAIm1B,GAAG,CAACpuB,GAAG,CAAC/G,EAAE,CAAC,CAAC;AACrD;AAEA,SAASo1B,gBAAgBA,CAACP,UAAU,EAAExc,cAAc,EAAE5J,QAAQ,EAAE7N,MAAM,EAAE;EACtE,MAAMs0B,MAAM,GAAGN,cAAc,CAACC,UAAU,EAAEj0B,MAAM,CAAC;EACjD,MAAMu0B,GAAG,GAAG,IAAIruB,GAAG,CAACouB,MAAM,CAAC7c,cAAc,CAAC,IAAI,EAAE,CAAC;EACjD5J,QAAQ,CAACzD,OAAO,CAACnS,OAAO,IAAI;IAC1Bm8B,WAAW,CAACn8B,OAAO,CAAC,CAACmS,OAAO,CAAChL,EAAE,IAAIm1B,GAAG,CAACluB,GAAG,CAACjH,EAAE,CAAC,CAAC;EACjD,CAAC,CAAC;EACFk1B,MAAM,CAAC7c,cAAc,CAAC,GAAGnR,KAAK,CAACC,IAAI,CAACguB,GAAG,CAAC;EACxCL,eAAe,CAACD,UAAU,EAAEK,MAAM,EAAEt0B,MAAM,CAAC;AAC7C;AAEA,SAASy0B,iBAAiBA,CAACx8B,OAAO,EAAE;EAClC,OAAO;IACL,GAAGA,OAAO;IACV+B,MAAM,EAAE,UAAU;IAClByV,cAAc,EAAE,EAAE;IAClBE,QAAQ,EAAE,IAAI;IACdgI,YAAY,EAAE;EAChB,CAAC;AACH;AAEA,SAAS+c,sBAAsBA,CAACjd,cAAc,EAAE5J,QAAQ,EAAE7N,MAAM,EAAE;EAChE,OAAO6N,QAAQ,CACZjN,MAAM,CAAC3I,OAAO,IAAI,CAACo8B,gBAAgB,CAACf,gCAAgC,EAAE7b,cAAc,EAAExf,OAAO,EAAE+H,MAAM,CAAC,CAAC,CACvG0E,GAAG,CAACzM,OAAO,IAAI;IACd,MAAM08B,UAAU,GAAGvzB,OAAO,CAACnJ,OAAO,CAAC0X,QAAQ,CAAC,IACvC1X,OAAO,CAAC+B,MAAM,KAAK,UAAU,IAC7Bq6B,gBAAgB,CAACd,kCAAkC,EAAE9b,cAAc,EAAExf,OAAO,EAAE+H,MAAM,CAAC;IAC1F,IAAI,CAAC20B,UAAU,EAAE;MACf,OAAO18B,OAAO;IAChB;IACA,OAAOw8B,iBAAiB,CAACx8B,OAAO,CAAC;EACnC,CAAC,CAAC;AACN;AAEA,SAAS28B,kBAAkBA,CAACT,sBAAsB,EAAEn0B,MAAM,EAAE;EAC1DssB,YAAY,CAACI,OAAO,CAAC8G,gBAAgB,CAACH,yBAAyB,EAAErzB,MAAM,CAAC,EAAE4R,IAAI,CAAC+a,SAAS,CAACwH,sBAAsB,CAAC,CAAC;AACnH;AAEA,SAASU,gBAAgBA,CAAC58B,OAAO,EAAE+H,MAAM,EAAE;EACzC,MAAMm0B,sBAAsB,GAAGJ,iBAAiB,CAAC/zB,MAAM,CAAC;EACxDm0B,sBAAsB,CAACl8B,OAAO,CAACwf,cAAc,CAAC,GAAG0c,sBAAsB,CAACl8B,OAAO,CAACwf,cAAc,CAAC,IAAI,EAAE;EACrG,MAAMpN,KAAK,GAAG8pB,sBAAsB,CAACl8B,OAAO,CAACwf,cAAc,CAAC,CAAChG,SAAS,CAACvG,IAAI,IAAIA,IAAI,CAAC9L,EAAE,KAAKnH,OAAO,CAACmH,EAAE,CAAC;EACtG,IAAIiL,KAAK,IAAI,CAAC,EAAE;IACd8pB,sBAAsB,CAACl8B,OAAO,CAACwf,cAAc,CAAC,CAACqd,MAAM,CAACzqB,KAAK,EAAE,CAAC,EAAEpS,OAAO,CAAC;EAC1E,CAAC,MAAM;IACLk8B,sBAAsB,CAACl8B,OAAO,CAACwf,cAAc,CAAC,CAAC9I,IAAI,CAAC1W,OAAO,CAAC;EAC9D;EACA28B,kBAAkB,CAACT,sBAAsB,EAAEn0B,MAAM,CAAC;AACpD;AAEA,SAAS+0B,mBAAmBA,CAACC,aAAa,EAAEC,cAAc,EAAExd,cAAc,EAAEzX,MAAM,EAAE;EAClF,MAAMk1B,oBAAoB,GAAGR,sBAAsB,CAACjd,cAAc,EAAEud,aAAa,EAAEh1B,MAAM,CAAC;EAC1F,MAAMm1B,UAAU,GAAG,IAAIvZ,GAAG,CAAC,CAAC;EAC5BsZ,oBAAoB,CAAC9qB,OAAO,CAACnS,OAAO,IAAI;IACtCm8B,WAAW,CAACn8B,OAAO,CAAC,CAACmS,OAAO,CAAC+L,GAAG,IAAI;MAClC,IAAI,CAACgf,UAAU,CAAChvB,GAAG,CAACgQ,GAAG,CAAC,EAAE;QACxBgf,UAAU,CAACj5B,GAAG,CAACia,GAAG,EAAEle,OAAO,CAAC;MAC9B;IACF,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF,MAAMm9B,qBAAqB,GAAGV,sBAAsB,CAACjd,cAAc,EAAEwd,cAAc,EAAEj1B,MAAM,CAAC,CAAC0E,GAAG,CAAC2wB,aAAa,IAAI;IAChH,IAAI,CAACA,aAAa,CAAC1lB,QAAQ,IAAI9Y,MAAM,CAACw+B,aAAa,CAACh4B,IAAI,IAAI,EAAE,CAAC,CAACrC,IAAI,CAAC,CAAC,EAAE;MACtE,OAAOq6B,aAAa;IACtB;IACA,MAAMC,YAAY,GAAGlB,WAAW,CAACiB,aAAa,CAAC,CAC5C3wB,GAAG,CAACyR,GAAG,IAAIgf,UAAU,CAACx6B,GAAG,CAACwb,GAAG,CAAC,CAAC,CAC/B3W,IAAI,CAACvH,OAAO,IAAIA,OAAO,EAAEoF,IAAI,IAAIpF,OAAO,CAACoF,IAAI,KAAK,UAAU,CAAC;IAChE,OAAOi4B,YAAY,GAAG;MAAE,GAAGD,aAAa;MAAEh4B,IAAI,EAAEi4B,YAAY,CAACj4B;IAAK,CAAC,GAAGg4B,aAAa;EACrF,CAAC,CAAC;EACF,MAAME,UAAU,GAAG,IAAIrvB,GAAG,CAAC,CAAC;EAC5BkvB,qBAAqB,CAAChrB,OAAO,CAACnS,OAAO,IAAI;IACvCm8B,WAAW,CAACn8B,OAAO,CAAC,CAACmS,OAAO,CAAC+L,GAAG,IAAIof,UAAU,CAAClvB,GAAG,CAAC8P,GAAG,CAAC,CAAC;EAC1D,CAAC,CAAC;EACF,MAAMrP,GAAG,GAAG9B,IAAI,CAAC8B,GAAG,CAAC,CAAC;EAEtB,SAAS0uB,cAAcA,CAACF,YAAY,EAAE;IACpC,IAAIA,YAAY,CAAC5lB,UAAU,IAAI6lB,UAAU,CAACpvB,GAAG,CAACmvB,YAAY,CAAC5lB,UAAU,CAAC,EAAE;MACtE,OAAO,IAAI;IACb;IACA,OAAO0lB,qBAAqB,CAAClX,IAAI,CAACmX,aAAa,IAAI;MACjD,OAAOA,aAAa,CAACpnB,SAAS,KAAKqnB,YAAY,CAACrnB,SAAS,IACpDonB,aAAa,CAACh4B,IAAI,KAAKi4B,YAAY,CAACj4B,IAAI,IACxChE,IAAI,CAAC0qB,GAAG,CAACvqB,MAAM,CAAC67B,aAAa,CAACpzB,SAAS,IAAI,CAAC,CAAC,GAAGzI,MAAM,CAAC87B,YAAY,CAACrzB,SAAS,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK;IACnG,CAAC,CAAC;EACJ;EAEA,MAAMwzB,oBAAoB,GAAGP,oBAAoB,CAACt0B,MAAM,CAAC3I,OAAO,IAAI;IAClE,IAAIA,OAAO,CAAC+B,MAAM,KAAK,UAAU,IAAI/B,OAAO,CAAC0X,QAAQ,EAAE;MACrD,OAAO1X,OAAO,CAACgW,SAAS,KAAK,KAAK,IAAI,CAACunB,cAAc,CAACv9B,OAAO,CAAC;IAChE;IACA,IAAIA,OAAO,CAACgW,SAAS,KAAK,KAAK,EAAE;MAC/B,OAAO,KAAK;IACd;IACA,IAAIhW,OAAO,CAAC+B,MAAM,KAAK,MAAM,IAAI/B,OAAO,CAACyX,UAAU,EAAE;MACnD,OAAO,CAAC8lB,cAAc,CAACv9B,OAAO,CAAC;IACjC;IACA,IAAIA,OAAO,CAAC+B,MAAM,KAAK,MAAM,EAAE;MAC7B,OAAO,CAACw7B,cAAc,CAACv9B,OAAO,CAAC,IAAI6O,GAAG,GAAGtN,MAAM,CAACvB,OAAO,CAACgK,SAAS,IAAI,CAAC,CAAC,GAAG,KAAK;IACjF;IACA,OAAOhK,OAAO,CAAC+B,MAAM,KAAK,SAAS,IAAI/B,OAAO,CAAC+B,MAAM,KAAK,QAAQ;EACpE,CAAC,CAAC;EAEF,OAAO,CAAC,GAAGo7B,qBAAqB,EAAE,GAAGK,oBAAoB,CAAC,CAACC,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAK;IACxE,OAAOp8B,MAAM,CAACm8B,CAAC,CAACE,gBAAgB,IAAIF,CAAC,CAAC1zB,SAAS,IAAI,CAAC,CAAC,GAAGzI,MAAM,CAACo8B,CAAC,CAACC,gBAAgB,IAAID,CAAC,CAAC3zB,SAAS,IAAI,CAAC,CAAC;EACxG,CAAC,CAAC;AACJ;AAEA,SAAS6zB,QAAQA,CAACv/B,KAAK,EAAEo7B,QAAQ,EAAE;EACjC,OAAOp7B,KAAK,IAAIo7B,QAAQ,IAAI,EAAE;AAChC;AAEA,SAASoE,kBAAkBA,CAAC91B,MAAM,EAAE0xB,QAAQ,EAAE;EAC5C,MAAMqE,cAAc,GAAG;IACrB,aAAa,EAAE,kCAAkC;IACjD,aAAa,EAAE,4BAA4B;IAC3C,aAAa,EAAE,kCAAkC;IACjD,aAAa,EAAE;EACjB,CAAC;EACD,OAAOA,cAAc,CAAC/1B,MAAM,CAAC,IAAIqsB,YAAY,CAACC,OAAO,CAAC,iBAAiB,CAAC,IAAIoF,QAAQ;AACtF;AAEA,SAASsE,wBAAwBA,CAACv7B,QAAQ,EAAE;EAC1C,MAAMzC,OAAO,GAAGyC,QAAQ,CAACX,IAAI,EAAE9B,OAAO,IAAI,EAAE;EAC5C,OAAO6vB,MAAsC,IAAI7vB,CAA2B;AAC9E;AAEO,MAAMq5B,YAAY,CAAC;EACxB4E,WAAWA,CAAA,EAAG;IACZ,IAAI,CAACC,SAAS,GAAG,IAAIva,GAAG,CAAC,CAAC;IAC1B,IAAI,CAAC7Z,SAAS,GAAG,KAAK;IACtB,IAAI,CAACq0B,WAAW,GAAG,IAAI;EACzB;EAEAnE,WAAWA,CAAA,EAAG;IACZ,IAAID,QAAQ,GAAG1F,YAAY,CAACC,OAAO,CAAC73B,wDAAS,CAAC42B,kBAAkB,CAAC;IACjE,IAAI,CAAC0G,QAAQ,EAAE;MACbA,QAAQ,GAAG2B,QAAQ,CAAC,CAAC;MACrBrH,YAAY,CAACI,OAAO,CAACh4B,wDAAS,CAAC42B,kBAAkB,EAAE0G,QAAQ,CAAC;IAC9D;IACA,OAAOA,QAAQ;EACjB;EAEAqE,eAAeA,CAACrE,QAAQ,EAAE;IACxB,IAAIA,QAAQ,EAAE;MACZ1F,YAAY,CAACI,OAAO,CAACh4B,wDAAS,CAAC42B,kBAAkB,EAAE0G,QAAQ,CAAC;IAC9D;EACF;EAEAsE,aAAaA,CAAA,EAAG;IACd,OAAO,MAAM;EACf;EAEA,MAAMC,SAASA,CAAA,EAAG;IAChB,OAAO,IAAI;EACb;EAEA,MAAM1+B,iBAAiBA,CAACoI,MAAM,EAAE3K,QAAQ,EAAE;IACxC,MAAMwG,GAAG,GAAG,GAAGpH,wDAAS,CAACuzB,SAAS,YAAY;IAC9C,MAAMvtB,QAAQ,GAAG,MAAMtG,uDAAK,CAAC48B,IAAI,CAACl1B,GAAG,EAAE;MACrCmE,MAAM;MACN3K,QAAQ;MACR+1B,QAAQ,EAAE32B,wDAAS,CAAC22B,QAAQ;MAC5B2G,QAAQ,EAAE,IAAI,CAACC,WAAW,CAAC;IAC7B,CAAC,EAAE;MAAEp3B,eAAe,EAAE;IAAM,CAAC,CAAC;IAE9B,IAAI,CAAC23B,eAAe,CAAC12B,GAAG,EAAEpB,QAAQ,CAAC;IACnC,IAAIA,QAAQ,CAACX,IAAI,EAAE1E,IAAI,KAAK,CAAC,EAAE;MAC7B,IAAI4gC,wBAAwB,CAACv7B,QAAQ,CAAC,EAAE;QACtC,OAAO;UACLsF,MAAM,EAAEC,MAAM;UACdhH,KAAK,EAAE,wBAAwB+L,IAAI,CAAC8B,GAAG,CAAC,CAAC,EAAE;UAC3C1M,WAAW,EAAE6F,MAAM;UACnBu2B,SAAS,EAAE;QACb,CAAC;MACH;MACA,MAAM,IAAIt9B,KAAK,CAACwB,QAAQ,CAACX,IAAI,EAAE9B,OAAO,IAAI,MAAM,CAAC;IACnD;IACA,OAAOyC,QAAQ,CAACX,IAAI,CAAC5B,MAAM;EAC7B;EAEA,MAAMH,eAAeA,CAACiI,MAAM,EAAE;IAC5B,MAAMvF,QAAQ,GAAG,MAAMtG,uDAAK,CAAC48B,IAAI,CAAC,GAAGt8B,wDAAS,CAACuzB,SAAS,YAAY,EAAE;MAAEhoB;IAAO,CAAC,EAAE;MAAEpF,eAAe,EAAE;IAAM,CAAC,CAAC;IAC7G,IAAIH,QAAQ,CAACX,IAAI,EAAE1E,IAAI,KAAK,CAAC,EAAE;MAC7B,MAAM,IAAI6D,KAAK,CAACwB,QAAQ,CAACX,IAAI,EAAE9B,OAAO,IAAI,SAAS,CAAC;IACtD;IACA,OAAOyC,QAAQ,CAACX,IAAI,CAAC5B,MAAM;EAC7B;EAEA,MAAMg6B,aAAaA,CAAClyB,MAAM,EAAE5K,IAAI,EAAE;IAChC,MAAMyG,GAAG,GAAG,GAAGpH,wDAAS,CAACuzB,SAAS,QAAQ;IAC1C,MAAMvtB,QAAQ,GAAG,MAAMtG,uDAAK,CAAC48B,IAAI,CAACl1B,GAAG,EAAE;MACrCmE,MAAM;MACN5K,IAAI;MACJg2B,QAAQ,EAAE32B,wDAAS,CAAC22B,QAAQ;MAC5B2G,QAAQ,EAAE,IAAI,CAACC,WAAW,CAAC;IAC7B,CAAC,EAAE;MAAEp3B,eAAe,EAAE;IAAM,CAAC,CAAC;IAE9B,IAAI,CAAC23B,eAAe,CAAC12B,GAAG,EAAEpB,QAAQ,CAAC;IACnC,IAAIA,QAAQ,CAACX,IAAI,EAAE1E,IAAI,KAAK,CAAC,EAAE;MAC7B,MAAM,IAAI6D,KAAK,CAACwB,QAAQ,CAACX,IAAI,EAAE9B,OAAO,IAAI,MAAM,CAAC;IACnD;IACA,OAAOyC,QAAQ,CAACX,IAAI,CAAC5B,MAAM;EAC7B;EAEA,MAAMa,eAAeA,CAACgH,MAAM,GAAG,EAAE,EAAE;IACjC,MAAMtF,QAAQ,GAAG,MAAMtG,uDAAK,CAAC48B,IAAI,CAAC,GAAGt8B,wDAAS,CAACuzB,SAAS,aAAa,EAAE;MACrEmK,IAAI,EAAE,CAAC;MACPC,WAAW,EAAE,QAAQ;MACrBryB,MAAM;MACNgyB,QAAQ,EAAE,IAAI,CAACC,WAAW,CAAC,CAAC;MAC5B5G,QAAQ,EAAE32B,wDAAS,CAAC22B;IACtB,CAAC,EAAE;MAAExwB,eAAe,EAAE;IAAM,CAAC,CAAC;IAE9B,IAAIH,QAAQ,CAACX,IAAI,EAAE1E,IAAI,KAAK,CAAC,EAAE;MAC7B,MAAM,IAAI6D,KAAK,CAACwB,QAAQ,CAACX,IAAI,EAAE9B,OAAO,IAAI,aAAa,CAAC;IAC1D;IACA,OAAOyC,QAAQ,CAACX,IAAI,CAAC5B,MAAM,IAAI,CAAC,CAAC;EACnC;EAEA,MAAM2B,kBAAkBA,CAACb,KAAK,EAAE;IAC9B,MAAM6C,GAAG,GAAG,GAAGpH,wDAAS,CAACuzB,SAAS,kBAAkBqK,kBAAkB,CAACr5B,KAAK,CAAC,EAAE;IAC/E,MAAMyB,QAAQ,GAAG,MAAMtG,uDAAK,CAAC48B,IAAI,CAACl1B,GAAG,EAAE,IAAI,EAAE;MAAEjB,eAAe,EAAE;IAAM,CAAC,CAAC;IACxE,IAAI,CAAC23B,eAAe,CAAC12B,GAAG,EAAEpB,QAAQ,CAAC;IACnC,MAAMX,IAAI,GAAGW,QAAQ,CAACX,IAAI,IAAI,CAAC,CAAC;IAChC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAClB,QAAQ,CAACW,MAAM,CAACO,IAAI,CAAC1E,IAAI,CAAC,CAAC,EAAE;MACjD,OAAO0E,IAAI;IACb;IACA,MAAM,IAAIb,KAAK,CAACa,IAAI,CAAC9B,OAAO,IAAI,QAAQ,CAAC;EAC3C;EAEA,MAAMw+B,iBAAiBA,CAACx2B,MAAM,EAAE5K,IAAI,EAAE;IACpC,MAAMyG,GAAG,GAAG,GAAGpH,wDAAS,CAACuzB,SAAS,WAAW;IAC7C,MAAMyO,QAAQ,GAAGX,kBAAkB,CAAC91B,MAAM,EAAE,IAAI,CAACgyB,WAAW,CAAC,CAAC,CAAC;IAE/D,IAAI;MACF,MAAMv3B,QAAQ,GAAG,MAAMtG,uDAAK,CAAC48B,IAAI,CAACl1B,GAAG,EAAE;QACrCmE,MAAM;QACN5K,IAAI;QACJg2B,QAAQ,EAAE32B,wDAAS,CAAC22B,QAAQ;QAC5B2G,QAAQ,EAAE0E,QAAQ;QAClBC,eAAe,EAAED;MACnB,CAAC,EAAE;QAAE77B,eAAe,EAAE;MAAM,CAAC,CAAC;MAE9B,IAAI,CAAC23B,eAAe,CAAC12B,GAAG,EAAEpB,QAAQ,CAAC;MACnC,IAAIA,QAAQ,CAACX,IAAI,EAAE1E,IAAI,KAAK,CAAC,EAAE;QAC7B,MAAM,IAAI6D,KAAK,CAACwB,QAAQ,CAACX,IAAI,EAAE9B,OAAO,IAAI,MAAM,CAAC;MACnD;MACA,OAAOyC,QAAQ,CAACX,IAAI,CAAC5B,MAAM;IAC7B,CAAC,CAAC,OAAOZ,KAAK,EAAE;MACd,MAAMyC,MAAM,GAAGzC,KAAK,CAACmD,QAAQ,EAAEV,MAAM;MACrC,IAAIA,MAAM,KAAK,GAAG,IAAIA,MAAM,KAAK,GAAG,EAAE;QACpC,OAAO,IAAI,CAACm4B,aAAa,CAAClyB,MAAM,EAAE5K,IAAI,CAAC;MACzC;MACA,MAAMkC,KAAK;IACb;EACF;EAEAq/B,OAAOA,CAAC52B,MAAM,EAAE/G,KAAK,EAAE;IACrB,IAAI,CAACm9B,WAAW,GAAG;MAAEp2B,MAAM;MAAE/G;IAAM,CAAC;IACpC,IAAI,CAAC8I,SAAS,GAAG,IAAI;IACrB,IAAI,CAACkG,IAAI,CAAC,yBAAyB,EAAE;MAAElG,SAAS,EAAE,IAAI;MAAEH,UAAU,EAAE;IAAM,CAAC,CAAC;IAC5E,IAAI,CAACi1B,uBAAuB,CAAC,CAAC;EAChC;EAEAC,UAAUA,CAAA,EAAG;IACX,IAAI,CAAC/0B,SAAS,GAAG,KAAK;IACtB,IAAI,CAACq0B,WAAW,GAAG,IAAI;IACvB,IAAI,CAACnuB,IAAI,CAAC,yBAAyB,EAAE;MAAElG,SAAS,EAAE,KAAK;MAAEH,UAAU,EAAE;IAAM,CAAC,CAAC;EAC/E;EAEAm1B,mBAAmBA,CAAA,EAAG;IACpB,OAAO,EAAE;EACX;EAEAF,uBAAuBA,CAAA,EAAG;IACxB,MAAM9iC,aAAa,GAAG,IAAI,CAACgjC,mBAAmB,CAAC,CAAC;IAChD,IAAIhjC,aAAa,CAACyC,MAAM,EAAE;MACxB,IAAI,CAACyR,IAAI,CAAC,sBAAsB,EAAElU,aAAa,CAAC;IAClD;IACA,IAAI,IAAI,CAACqiC,WAAW,EAAEp2B,MAAM,EAAE;MAC5B,IAAI,CAAC2yB,wBAAwB,CAAC,CAAC,CAACvvB,IAAI,CAAC4zB,mBAAmB,IAAI;QAC1D,IAAI,CAAC/uB,IAAI,CAAC,sBAAsB,EAAE+uB,mBAAmB,CAAC;MACxD,CAAC,CAAC,CAAC3zB,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IACpB;IACA,OAAOtP,aAAa;EACtB;EAEA,MAAM4+B,wBAAwBA,CAACsE,KAAK,GAAG,EAAE,EAAE;IACzC,IAAI,CAAC,IAAI,CAACb,WAAW,EAAEp2B,MAAM,EAAE;MAC7B,OAAO,EAAE;IACX;IACA,MAAMtF,QAAQ,GAAG,MAAMtG,uDAAK,CAAC48B,IAAI,CAACt8B,wDAAS,CAAC+0B,WAAW,EAAE;MACvDzpB,MAAM,EAAE,IAAI,CAACo2B,WAAW,CAACp2B,MAAM;MAC/Bi3B;IACF,CAAC,EAAE;MAAEp8B,eAAe,EAAE;IAAM,CAAC,CAAC;IAE9B,IAAIH,QAAQ,CAACX,IAAI,EAAE1E,IAAI,KAAK,CAAC,EAAE;MAC7B,MAAM,IAAI6D,KAAK,CAACwB,QAAQ,CAACX,IAAI,EAAE9B,OAAO,IAAI,QAAQ,CAAC;IACrD;IAEA,OAAO,CAACyC,QAAQ,CAACX,IAAI,EAAE5B,MAAM,EAAEpE,aAAa,IAAI,EAAE,EAAE2Q,GAAG,CAAC9E,YAAY,KAAK;MACvE,GAAGA,YAAY;MACfiH,SAAS,EAAErN,MAAM,CAACoG,YAAY,CAACiH,SAAS,IAAI7B,IAAI,CAAC8B,GAAG,CAAC,CAAC,CAAC;MACvD3G,UAAU,EAAEP,YAAY,CAACO,UAAU,IAAItJ,MAAM,CAAC+I,YAAY,CAACxD,KAAK,IAAIwD,YAAY,CAACV,MAAM,IAAI,GAAG,CAAC,CAACpI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC;MACzHoI,GAAG,EAAES,YAAY,CAACT,GAAG,IAAI;QAAEvH,IAAI,EAAE,QAAQ;QAAEsH,MAAM,EAAEU,YAAY,CAACV,MAAM;QAAEg4B,IAAI,EAAE;MAAE;IAClF,CAAC,CAAC,CAAC;EACL;EAEAC,WAAWA,CAACv3B,YAAY,EAAE;IACxB,IAAI,CAACA,YAAY,EAAER,EAAE,EAAE;MACrB,OAAO,EAAE;IACX;IACA,MAAMY,MAAM,GAAG,IAAI,CAACo2B,WAAW,EAAEp2B,MAAM,IAAI,EAAE;IAC7C,OAAO00B,sBAAsB,CAAC90B,YAAY,CAACR,EAAE,EAAE20B,iBAAiB,CAAC/zB,MAAM,CAAC,CAACJ,YAAY,CAACR,EAAE,CAAC,IAAI,EAAE,EAAEY,MAAM,CAAC;EAC1G;EAEA,MAAM4yB,mBAAmBA,CAAChzB,YAAY,EAAEq3B,KAAK,GAAG,EAAE,EAAEG,OAAO,GAAG,CAAC,CAAC,EAAE;IAChE,IAAI,CAACx3B,YAAY,EAAER,EAAE,IAAI,CAAC,IAAI,CAACg3B,WAAW,EAAEp2B,MAAM,EAAE;MAClD,OAAO,EAAE;IACX;IACA,MAAMtF,QAAQ,GAAG,MAAMtG,uDAAK,CAAC48B,IAAI,CAACt8B,wDAAS,CAAC+0B,WAAW,EAAE;MACvDzpB,MAAM,EAAE,IAAI,CAACo2B,WAAW,CAACp2B,MAAM;MAC/Bd,MAAM,EAAEU,YAAY,CAACV,MAAM,IAAIU,YAAY,CAACT,GAAG,EAAED,MAAM,IAAIU,YAAY,CAACR,EAAE,CAACC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;MAClG43B,KAAK;MACL91B,gBAAgB,EAAEvB,YAAY,CAAChI,IAAI,IAAIgI,YAAY,CAACT,GAAG,EAAEvH,IAAI,IAAI,CAAC;MAClEy/B,QAAQ,EAAEj2B,OAAO,CAACg2B,OAAO,CAACC,QAAQ,CAAC;MACnCC,oBAAoB,EAAEl2B,OAAO,CAACg2B,OAAO,CAACE,oBAAoB;IAC5D,CAAC,EAAE;MAAEz8B,eAAe,EAAE;IAAM,CAAC,CAAC;IAE9B,IAAIH,QAAQ,CAACX,IAAI,EAAE1E,IAAI,KAAK,CAAC,EAAE;MAC7B,MAAM,IAAI6D,KAAK,CAACwB,QAAQ,CAACX,IAAI,EAAE9B,OAAO,IAAI,QAAQ,CAAC;IACrD;IAEA,MAAM4V,QAAQ,GAAG,CAACnT,QAAQ,CAACX,IAAI,EAAE5B,MAAM,EAAE0V,QAAQ,IAAI,EAAE,EAAEnJ,GAAG,CAACzM,OAAO,KAAK;MACvE,GAAGA,OAAO;MACV49B,gBAAgB,EAAE59B,OAAO,CAAC49B,gBAAgB,IAAI59B,OAAO,CAACgK,SAAS;MAC/DwV,cAAc,EAAE7X,YAAY,CAACR;IAC/B,CAAC,CAAC,CAAC;IACHyO,QAAQ,CAAC0pB,gBAAgB,GAAG1gC,MAAM,CAAC6D,QAAQ,CAACX,IAAI,EAAE5B,MAAM,EAAEo/B,gBAAgB,IAAI,EAAE,CAAC;IACjF,IAAIH,OAAO,CAACE,oBAAoB,IAAIhxB,KAAK,CAACwX,OAAO,CAACpjB,QAAQ,CAACX,IAAI,EAAE5B,MAAM,EAAEpE,aAAa,CAAC,EAAE;MACvF,MAAMijC,mBAAmB,GAAGt8B,QAAQ,CAACX,IAAI,CAAC5B,MAAM,CAACpE,aAAa,CAAC2Q,GAAG,CAAC8yB,kBAAkB,KAAK;QACxF,GAAGA,kBAAkB;QACrB3wB,SAAS,EAAErN,MAAM,CAACg+B,kBAAkB,CAAC3wB,SAAS,IAAI7B,IAAI,CAAC8B,GAAG,CAAC,CAAC,CAAC;QAC7D3G,UAAU,EAAEq3B,kBAAkB,CAACr3B,UAAU,IAAItJ,MAAM,CAAC2gC,kBAAkB,CAACp7B,KAAK,IAAIo7B,kBAAkB,CAACt4B,MAAM,IAAI,GAAG,CAAC,CAACpI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC;QAC3IoI,GAAG,EAAEq4B,kBAAkB,CAACr4B,GAAG,IAAI;UAAEvH,IAAI,EAAE,QAAQ;UAAEsH,MAAM,EAAEs4B,kBAAkB,CAACt4B,MAAM;UAAEg4B,IAAI,EAAE;QAAE;MAC9F,CAAC,CAAC,CAAC;MACH,IAAI,CAACjvB,IAAI,CAAC,sBAAsB,EAAE+uB,mBAAmB,CAAC;IACxD;IACA,MAAMh3B,MAAM,GAAG,IAAI,CAACo2B,WAAW,EAAEp2B,MAAM,IAAI,EAAE;IAC7C,MAAMm0B,sBAAsB,GAAGJ,iBAAiB,CAAC/zB,MAAM,CAAC;IACxDm0B,sBAAsB,CAACv0B,YAAY,CAACR,EAAE,CAAC,GAAG21B,mBAAmB,CAACZ,sBAAsB,CAACv0B,YAAY,CAACR,EAAE,CAAC,IAAI,EAAE,EAAEyO,QAAQ,EAAEjO,YAAY,CAACR,EAAE,EAAEY,MAAM,CAAC;IAC/Im0B,sBAAsB,CAACv0B,YAAY,CAACR,EAAE,CAAC,CAACm4B,gBAAgB,GAAG1pB,QAAQ,CAAC0pB,gBAAgB;IACpF3C,kBAAkB,CAACT,sBAAsB,EAAEn0B,MAAM,CAAC;IAClD,OAAOm0B,sBAAsB,CAACv0B,YAAY,CAACR,EAAE,CAAC;EAChD;EAEA,MAAMq4B,gBAAgBA,CAAC73B,YAAY,EAAE8P,UAAU,GAAG,EAAE,EAAE;IACpD,MAAMvB,MAAM,GAAGuB,UAAU,GAAG,KAAK,GAAG,OAAO;IAC3C,MAAMhV,QAAQ,GAAG,MAAMtG,uDAAK,CAAC48B,IAAI,CAACt8B,wDAAS,CAAC20B,gBAAgB,EAAE;MAC5Dlb,MAAM;MACNnO,MAAM,EAAE,IAAI,CAACo2B,WAAW,EAAEp2B,MAAM,IAAI,EAAE;MACtC0P,UAAU,EAAEA,UAAU,IAAI,GAAG;MAC7BxQ,MAAM,EAAEU,YAAY,CAACV,MAAM,IAAIU,YAAY,CAACT,GAAG,EAAED,MAAM,IAAI,EAAE;MAC7DiC,gBAAgB,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,CAACtI,QAAQ,CAAC+G,YAAY,CAAChI,IAAI,CAAC,GAAG,OAAO,GAAG;IACjF,CAAC,EAAE;MAAEiD,eAAe,EAAE;IAAM,CAAC,CAAC;IAC9B,IAAIH,QAAQ,CAACX,IAAI,EAAE1E,IAAI,KAAK,CAAC,EAAE,MAAM,IAAI6D,KAAK,CAACwB,QAAQ,CAACX,IAAI,EAAE9B,OAAO,IAAI,MAAM,CAAC;EAClF;EAEAy/B,YAAYA,CAAC93B,YAAY,EAAEiO,QAAQ,EAAE;IACnC,MAAM5C,KAAK,GAAG3E,KAAK,CAACwX,OAAO,CAACjQ,QAAQ,CAAC,GAAGA,QAAQ,GAAG,CAACA,QAAQ,CAAC;IAC7D,IAAI,CAACjO,YAAY,EAAER,EAAE,IAAI,CAAC6L,KAAK,CAACzU,MAAM,EAAE;MACtC;IACF;IACA,MAAMwJ,MAAM,GAAG,IAAI,CAACo2B,WAAW,EAAEp2B,MAAM,IAAI,EAAE;IAC7Cw0B,gBAAgB,CAAClB,gCAAgC,EAAE1zB,YAAY,CAACR,EAAE,EAAE6L,KAAK,EAAEjL,MAAM,CAAC;IAClF,MAAMm0B,sBAAsB,GAAGJ,iBAAiB,CAAC/zB,MAAM,CAAC;IACxDm0B,sBAAsB,CAACv0B,YAAY,CAACR,EAAE,CAAC,GAAGs1B,sBAAsB,CAC9D90B,YAAY,CAACR,EAAE,EACf+0B,sBAAsB,CAACv0B,YAAY,CAACR,EAAE,CAAC,IAAI,EAAE,EAC7CY,MACF,CAAC;IACD40B,kBAAkB,CAACT,sBAAsB,EAAEn0B,MAAM,CAAC;EACpD;EAEA23B,oBAAoBA,CAAC/3B,YAAY,EAAEiO,QAAQ,EAAE;IAC3C,MAAM5C,KAAK,GAAG3E,KAAK,CAACwX,OAAO,CAACjQ,QAAQ,CAAC,GAAGA,QAAQ,GAAG,CAACA,QAAQ,CAAC;IAC7D,IAAI,CAACjO,YAAY,EAAER,EAAE,IAAI,CAAC6L,KAAK,CAACzU,MAAM,EAAE;MACtC;IACF;IACA,MAAMwJ,MAAM,GAAG,IAAI,CAACo2B,WAAW,EAAEp2B,MAAM,IAAI,EAAE;IAC7Cw0B,gBAAgB,CAACjB,kCAAkC,EAAE3zB,YAAY,CAACR,EAAE,EAAE6L,KAAK,EAAEjL,MAAM,CAAC;IACpF,MAAMm0B,sBAAsB,GAAGJ,iBAAiB,CAAC/zB,MAAM,CAAC;IACxDm0B,sBAAsB,CAACv0B,YAAY,CAACR,EAAE,CAAC,GAAGs1B,sBAAsB,CAC9D90B,YAAY,CAACR,EAAE,EACf+0B,sBAAsB,CAACv0B,YAAY,CAACR,EAAE,CAAC,IAAI,EAAE,EAC7CY,MACF,CAAC;IACD40B,kBAAkB,CAACT,sBAAsB,EAAEn0B,MAAM,CAAC;EACpD;EAEA,MAAMkzB,aAAaA,CAACtzB,YAAY,EAAE3H,OAAO,EAAE;IACzC,MAAMyX,UAAU,GAAG7Y,MAAM,CAACoB,OAAO,EAAEyX,UAAU,IAAIzX,OAAO,EAAEmH,EAAE,IAAI,EAAE,CAAC,CAACpE,IAAI,CAAC,CAAC;IAC1E,IAAI,CAAC,OAAO,CAACtE,IAAI,CAACgZ,UAAU,CAAC,EAAE;MAC7B,MAAM,IAAIxW,KAAK,CAAC,YAAY,CAAC;IAC/B;IAEA,MAAMwB,QAAQ,GAAG,MAAMtG,uDAAK,CAAC48B,IAAI,CAACt8B,wDAAS,CAAC20B,gBAAgB,EAAE;MAC5Dlb,MAAM,EAAE,QAAQ;MAChBnO,MAAM,EAAE,IAAI,CAACo2B,WAAW,EAAEp2B,MAAM,IAAI/H,OAAO,CAACsO,IAAI,IAAI,EAAE;MACtDmJ;IACF,CAAC,EAAE;MAAE7U,eAAe,EAAE;IAAM,CAAC,CAAC;IAE9B,IAAIH,QAAQ,CAACX,IAAI,EAAE1E,IAAI,KAAK,CAAC,EAAE;MAC7B,MAAM,IAAI6D,KAAK,CAACwB,QAAQ,CAACX,IAAI,EAAE9B,OAAO,IAAI,MAAM,CAAC;IACnD;IACA,IAAI,CAAC0/B,oBAAoB,CAAC/3B,YAAY,EAAE,CAAC3H,OAAO,CAAC,CAAC;IAClD,OAAOyC,QAAQ,CAACX,IAAI,CAAC5B,MAAM;EAC7B;EAEA,MAAMg7B,WAAWA,CAACvzB,YAAY,EAAE3H,OAAO,EAAEoF,IAAI,EAAE;IAC7C,MAAMqS,UAAU,GAAG7Y,MAAM,CAACoB,OAAO,EAAEyX,UAAU,IAAIzX,OAAO,EAAEmH,EAAE,IAAI,EAAE,CAAC,CAACpE,IAAI,CAAC,CAAC;IAC1E,IAAI,CAAC,OAAO,CAACtE,IAAI,CAACgZ,UAAU,CAAC,EAAE;MAC7B,MAAM,IAAIxW,KAAK,CAAC,YAAY,CAAC;IAC/B;IACA,MAAM0+B,QAAQ,GAAG/gC,MAAM,CAACwG,IAAI,IAAI,EAAE,CAAC,CAACrC,IAAI,CAAC,CAAC;IAC1C,IAAI,CAAC48B,QAAQ,EAAE;MACb,MAAM,IAAI1+B,KAAK,CAAC,UAAU,CAAC;IAC7B;IAEA,MAAMwB,QAAQ,GAAG,MAAMtG,uDAAK,CAAC48B,IAAI,CAACt8B,wDAAS,CAAC20B,gBAAgB,EAAE;MAC5Dlb,MAAM,EAAE,MAAM;MACdnO,MAAM,EAAE,IAAI,CAACo2B,WAAW,EAAEp2B,MAAM,IAAI/H,OAAO,CAACsO,IAAI,IAAI,EAAE;MACtDmJ,UAAU;MACVrS,IAAI,EAAEu6B;IACR,CAAC,EAAE;MAAE/8B,eAAe,EAAE;IAAM,CAAC,CAAC;IAE9B,IAAIH,QAAQ,CAACX,IAAI,EAAE1E,IAAI,KAAK,CAAC,EAAE;MAC7B,MAAM,IAAI6D,KAAK,CAACwB,QAAQ,CAACX,IAAI,EAAE9B,OAAO,IAAI,MAAM,CAAC;IACnD;IAEA,MAAME,MAAM,GAAGuC,QAAQ,CAACX,IAAI,EAAE5B,MAAM,EAAEF,OAAO,IAAI,CAAC,CAAC;IACnD,MAAM4/B,aAAa,GAAG;MACpB,GAAG5/B,OAAO;MACVoF,IAAI,EAAElF,MAAM,CAACkF,IAAI,IAAIu6B,QAAQ;MAC7B59B,MAAM,EAAE,WAAW;MACnByV,cAAc,EAAE,WAAW;MAC3BqoB,QAAQ,EAAEt+B,MAAM,CAACrB,MAAM,CAAC2/B,QAAQ,IAAI9yB,IAAI,CAAC8B,GAAG,CAAC,CAAC,CAAC;MAC/CixB,iBAAiB,EAAEv+B,MAAM,CAACrB,MAAM,CAAC2/B,QAAQ,IAAI9yB,IAAI,CAAC8B,GAAG,CAAC,CAAC;IACzD,CAAC;IACD+tB,gBAAgB,CAACgD,aAAa,EAAE,IAAI,CAACzB,WAAW,EAAEp2B,MAAM,IAAI,EAAE,CAAC;IAC/D,IAAI,CAACiI,IAAI,CAAC,sBAAsB,EAAE4vB,aAAa,CAAC;IAChD,OAAOA,aAAa;EACtB;EAEA,MAAMzE,gBAAgBA,CAACxzB,YAAY,EAAE3H,OAAO,EAAE;IAC5C,MAAMyX,UAAU,GAAG7Y,MAAM,CAACoB,OAAO,EAAEyX,UAAU,IAAIzX,OAAO,EAAEmH,EAAE,IAAI,EAAE,CAAC,CAACpE,IAAI,CAAC,CAAC;IAC1E,IAAI,CAAC0U,UAAU,EAAE;MACf,MAAM,IAAIxW,KAAK,CAAC,QAAQ,CAAC;IAC3B;IACA,MAAMwB,QAAQ,GAAG,MAAMtG,uDAAK,CAAC48B,IAAI,CAACt8B,wDAAS,CAAC60B,gBAAgB,EAAE;MAC5DvpB,MAAM,EAAE,IAAI,CAACo2B,WAAW,EAAEp2B,MAAM,IAAI,EAAE;MACtCd,MAAM,EAAEU,YAAY,EAAEV,MAAM,IAAIU,YAAY,EAAET,GAAG,EAAED,MAAM,IAAIU,YAAY,EAAER,EAAE,EAAEC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,EAAE;MAC5G8B,gBAAgB,EAAEvB,YAAY,EAAEhI,IAAI,IAAIgI,YAAY,EAAET,GAAG,EAAEvH,IAAI,IAAI,QAAQ;MAC3E8X;IACF,CAAC,EAAE;MAAE7U,eAAe,EAAE;IAAM,CAAC,CAAC;IAE9B,IAAIH,QAAQ,CAACX,IAAI,EAAE1E,IAAI,KAAK,CAAC,EAAE;MAC7B,MAAM,IAAI6D,KAAK,CAACwB,QAAQ,CAACX,IAAI,EAAE9B,OAAO,IAAI,UAAU,CAAC;IACvD;IAEA,OAAOyC,QAAQ,CAACX,IAAI,EAAE5B,MAAM,EAAEyM,MAAM,IAAI,IAAI;EAC9C;EAEA,MAAMmuB,eAAeA,CAACnzB,YAAY,EAAEvC,IAAI,EAAE26B,cAAc,GAAG,IAAI,EAAE;IAC/D,MAAM5lB,UAAU,GAAGxS,YAAY,EAAEY,IAAI,IAAIZ,YAAY,EAAET,GAAG,EAAEqB,IAAI,IAAI,EAAE;IACtE,MAAMvI,OAAO,GAAG+/B,cAAc,IAAI;MAChC54B,EAAE,EAAEu0B,QAAQ,CAAC,CAAC;MACdlc,cAAc,EAAE7X,YAAY,CAACR,EAAE;MAC/BmH,IAAI,EAAE,IAAI,CAAC6vB,WAAW,EAAEp2B,MAAM,IAAI,IAAI;MACtCoS,UAAU;MACVnE,SAAS,EAAE,KAAK;MAChBrW,IAAI,EAAE,MAAM;MACZyF,IAAI;MACJrD,MAAM,EAAE,SAAS;MACjByV,cAAc,EAAE,SAAS;MACzBxN,SAAS,EAAE+C,IAAI,CAAC8B,GAAG,CAAC;IACtB,CAAC;IACD+tB,gBAAgB,CAAC58B,OAAO,EAAE,IAAI,CAACm+B,WAAW,EAAEp2B,MAAM,IAAI,EAAE,CAAC;IACzD,IAAI,CAACg4B,cAAc,EAAE;MACnB,IAAI,CAAC/vB,IAAI,CAAC,aAAa,EAAEhQ,OAAO,CAAC;IACnC;IAEA,IAAI;MACF,MAAMyC,QAAQ,GAAG,MAAMtG,uDAAK,CAAC48B,IAAI,CAACt8B,wDAAS,CAACy0B,cAAc,EAAE;QAC1D8O,MAAM,EAAE,IAAI,CAAC7B,WAAW,EAAEp2B,MAAM,IAAI,EAAE;QACtCd,MAAM,EAAEU,YAAY,CAACV,MAAM,IAAIU,YAAY,CAACT,GAAG,EAAED,MAAM,IAAIU,YAAY,CAACR,EAAE,CAACC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;QAClG8B,gBAAgB,EAAEvB,YAAY,CAAChI,IAAI,IAAIgI,YAAY,CAACT,GAAG,EAAEvH,IAAI,IAAI,CAAC;QAClEyF;MACF,CAAC,EAAE;QAAExC,eAAe,EAAE;MAAM,CAAC,CAAC;MAE9B,IAAIH,QAAQ,CAACX,IAAI,EAAE1E,IAAI,KAAK,CAAC,EAAE;QAC7B,MAAM,IAAI6D,KAAK,CAACwB,QAAQ,CAACX,IAAI,EAAE9B,OAAO,IAAI,MAAM,CAAC;MACnD;MAEA,MAAMigC,WAAW,GAAG;QAClB,GAAGjgC,OAAO;QACV+B,MAAM,EAAE,MAAM;QACdyV,cAAc,EAAE,MAAM;QACtBC,UAAU,EAAEhV,QAAQ,CAACX,IAAI,EAAE5B,MAAM,EAAEuX,UAAU,GAAG7Y,MAAM,CAAC6D,QAAQ,CAACX,IAAI,CAAC5B,MAAM,CAACuX,UAAU,CAAC,GAAG,EAAE;QAC5F0C,UAAU,EAAE1X,QAAQ,CAACX,IAAI,EAAE5B,MAAM,EAAEia,UAAU,IAAIna,OAAO,CAACma,UAAU,IAAI,EAAE;QACzE+lB,eAAe,EAAE3+B,MAAM,CAACkB,QAAQ,CAACX,IAAI,EAAE5B,MAAM,EAAE8J,SAAS,IAAI,CAAC,CAAC,IAAI,IAAI;QACtEA,SAAS,EAAEhK,OAAO,CAACgK,SAAS;QAC5B4zB,gBAAgB,EAAE59B,OAAO,CAAC49B,gBAAgB,IAAI59B,OAAO,CAACgK;MACxD,CAAC;MACD4yB,gBAAgB,CAACqD,WAAW,EAAE,IAAI,CAAC9B,WAAW,EAAEp2B,MAAM,IAAI,EAAE,CAAC;MAC7D,IAAI,CAACiI,IAAI,CAAC,sBAAsB,EAAEiwB,WAAW,CAAC;MAC9C,OAAOA,WAAW;IACpB,CAAC,CAAC,OAAO3gC,KAAK,EAAE;MACd,MAAM6gC,aAAa,GAAG;QACpB,GAAGngC,OAAO;QACV+B,MAAM,EAAE,QAAQ;QAChByV,cAAc,EAAE,EAAE;QAClBlY,KAAK,EAAEA,KAAK,CAACmD,QAAQ,EAAEX,IAAI,EAAE9B,OAAO,IAAIV,KAAK,CAACU,OAAO,IAAI;MAC3D,CAAC;MACD48B,gBAAgB,CAACuD,aAAa,EAAE,IAAI,CAAChC,WAAW,EAAEp2B,MAAM,IAAI,EAAE,CAAC;MAC/D,IAAI,CAACiI,IAAI,CAAC,sBAAsB,EAAEmwB,aAAa,CAAC;MAChD,OAAOA,aAAa;IACtB;EACF;EAEA,MAAMpF,qBAAqBA,CAACpzB,YAAY,EAAE;IAAEhI,IAAI;IAAE+R,IAAI;IAAEtM,IAAI,GAAG;EAAG,CAAC,EAAE26B,cAAc,GAAG,IAAI,EAAE;IAC1F,MAAM5lB,UAAU,GAAGxS,YAAY,EAAEY,IAAI,IAAIZ,YAAY,EAAET,GAAG,EAAEqB,IAAI,IAAI,EAAE;IACtE,MAAMvI,OAAO,GAAG+/B,cAAc,IAAI;MAChC54B,EAAE,EAAEu0B,QAAQ,CAAC,CAAC;MACdlc,cAAc,EAAE7X,YAAY,CAACR,EAAE;MAC/BmH,IAAI,EAAE,IAAI,CAAC6vB,WAAW,EAAEp2B,MAAM,IAAI,IAAI;MACtCoS,UAAU;MACVnE,SAAS,EAAE,KAAK;MAChBrW,IAAI;MACJyF,IAAI;MACJF,UAAU,EAAE;QACVvF,IAAI;QACJmD,IAAI,EAAE4O,IAAI,EAAE5O,IAAI,KAAKnD,IAAI,KAAK,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC;QACpDygC,IAAI,EAAE1uB,IAAI,EAAE/R,IAAI,IAAI,EAAE;QACtBsS,IAAI,EAAEP,IAAI,EAAEO,IAAI,IAAI,CAAC;QACrBpO,GAAG,EAAElE,IAAI,KAAK,OAAO,IAAI+R,IAAI,GAAG/N,GAAG,CAACkqB,eAAe,CAACnc,IAAI,CAAC,GAAG;MAC9D,CAAC;MACD3P,MAAM,EAAE,SAAS;MACjByV,cAAc,EAAE,SAAS;MACzBxN,SAAS,EAAE+C,IAAI,CAAC8B,GAAG,CAAC;IACtB,CAAC;IACD+tB,gBAAgB,CAAC58B,OAAO,EAAE,IAAI,CAACm+B,WAAW,EAAEp2B,MAAM,IAAI,EAAE,CAAC;IACzD,IAAI,CAACg4B,cAAc,EAAE;MACnB,IAAI,CAAC/vB,IAAI,CAAC,aAAa,EAAEhQ,OAAO,CAAC;IACnC;IAEA,IAAI;MACF,MAAMqgC,QAAQ,GAAG,IAAI5K,QAAQ,CAAC,CAAC;MAC/B4K,QAAQ,CAACC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAACnC,WAAW,EAAEp2B,MAAM,IAAI,EAAE,CAAC;MACzDs4B,QAAQ,CAACC,MAAM,CAAC,QAAQ,EAAE34B,YAAY,CAACV,MAAM,IAAIU,YAAY,CAACT,GAAG,EAAED,MAAM,IAAIU,YAAY,CAACR,EAAE,CAACC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;MACrHi5B,QAAQ,CAACC,MAAM,CAAC,kBAAkB,EAAE34B,YAAY,CAAChI,IAAI,IAAIgI,YAAY,CAACT,GAAG,EAAEvH,IAAI,IAAI,CAAC,CAAC;MACrF0gC,QAAQ,CAACC,MAAM,CAAC,aAAa,EAAE3gC,IAAI,CAAC;MACpC0gC,QAAQ,CAACC,MAAM,CAAC,MAAM,EAAEl7B,IAAI,IAAI,EAAE,CAAC;MACnCi7B,QAAQ,CAACC,MAAM,CAAC,YAAY,EAAE5uB,IAAI,CAAC;MAEnC,MAAMjP,QAAQ,GAAG,MAAMtG,uDAAK,CAAC48B,IAAI,CAACt8B,wDAAS,CAACy0B,cAAc,EAAEmP,QAAQ,EAAE;QACpEz9B,eAAe,EAAE;MACnB,CAAC,CAAC;MAEF,IAAIH,QAAQ,CAACX,IAAI,EAAE1E,IAAI,KAAK,CAAC,EAAE;QAC7B,MAAM,IAAI6D,KAAK,CAACwB,QAAQ,CAACX,IAAI,EAAE9B,OAAO,IAAI,MAAM,CAAC;MACnD;MAEA,MAAMigC,WAAW,GAAG;QAClB,GAAGjgC,OAAO;QACV+B,MAAM,EAAE,MAAM;QACdyV,cAAc,EAAE,MAAM;QACtBC,UAAU,EAAEhV,QAAQ,CAACX,IAAI,EAAE5B,MAAM,EAAEuX,UAAU,GAAG7Y,MAAM,CAAC6D,QAAQ,CAACX,IAAI,CAAC5B,MAAM,CAACuX,UAAU,CAAC,GAAG,EAAE;QAC5F0C,UAAU,EAAE1X,QAAQ,CAACX,IAAI,EAAE5B,MAAM,EAAEia,UAAU,IAAIna,OAAO,CAACma,UAAU,IAAI,EAAE;QACzEjV,UAAU,EAAEzC,QAAQ,CAACX,IAAI,EAAE5B,MAAM,EAAEgF,UAAU,IAAIlF,OAAO,CAACkF,UAAU;QACnEg7B,eAAe,EAAE3+B,MAAM,CAACkB,QAAQ,CAACX,IAAI,EAAE5B,MAAM,EAAE8J,SAAS,IAAI,CAAC,CAAC,IAAI,IAAI;QACtEA,SAAS,EAAEhK,OAAO,CAACgK,SAAS;QAC5B4zB,gBAAgB,EAAE59B,OAAO,CAAC49B,gBAAgB,IAAI59B,OAAO,CAACgK;MACxD,CAAC;MACD4yB,gBAAgB,CAACqD,WAAW,EAAE,IAAI,CAAC9B,WAAW,EAAEp2B,MAAM,IAAI,EAAE,CAAC;MAC7D,IAAI,CAACiI,IAAI,CAAC,sBAAsB,EAAEiwB,WAAW,CAAC;MAC9C,OAAOA,WAAW;IACpB,CAAC,CAAC,OAAO3gC,KAAK,EAAE;MACd,MAAM6gC,aAAa,GAAG;QACpB,GAAGngC,OAAO;QACV+B,MAAM,EAAE,QAAQ;QAChByV,cAAc,EAAE,EAAE;QAClBlY,KAAK,EAAEA,KAAK,CAACmD,QAAQ,EAAEX,IAAI,EAAE9B,OAAO,IAAIV,KAAK,CAACU,OAAO,IAAI;MAC3D,CAAC;MACD48B,gBAAgB,CAACuD,aAAa,EAAE,IAAI,CAAChC,WAAW,EAAEp2B,MAAM,IAAI,EAAE,CAAC;MAC/D,IAAI,CAACiI,IAAI,CAAC,sBAAsB,EAAEmwB,aAAa,CAAC;MAChD,OAAOA,aAAa;IACtB;EACF;EAEAI,cAAcA,CAAA,EAAG;IACf,OAAO,EAAE;EACX;EAEA,MAAM3F,oBAAoBA,CAAC7yB,MAAM,EAAE;IACjC,IAAI,CAACA,MAAM,EAAE;MACX,OAAO,EAAE;IACX;IACA,MAAMtF,QAAQ,GAAG,MAAMtG,uDAAK,CAAC48B,IAAI,CAACt8B,wDAAS,CAACi0B,WAAW,EAAE;MAAE3oB;IAAO,CAAC,EAAE;MACnEnF,eAAe,EAAE,KAAK;MACtBu1B,OAAO,EAAE,IAAI,CAACqI,iBAAiB,CAAC/jC,wDAAS,CAACi0B,WAAW;IACvD,CAAC,CAAC;IACF,IAAIjuB,QAAQ,CAACX,IAAI,EAAE1E,IAAI,KAAK,CAAC,EAAE;MAC7B,MAAM,IAAI6D,KAAK,CAACwB,QAAQ,CAACX,IAAI,EAAE9B,OAAO,IAAI,SAAS,CAAC;IACtD;IACA,OAAO,CAACyC,QAAQ,CAACX,IAAI,EAAE5B,MAAM,EAAElE,QAAQ,IAAI,EAAE,EAAEyQ,GAAG,CAACwG,IAAI,IAAI;MACzD,OAAO,IAAI,CAACwtB,UAAU,CAACxtB,IAAI,CAACxL,GAAG,EAAE;QAAEI,KAAK,EAAEoL,IAAI,CAACpL;MAAM,CAAC,EAAE;QACtDJ,GAAG,EAAEwL,IAAI,CAACxL,GAAG;QACbtF,WAAW,EAAE8Q,IAAI,CAAC9Q,WAAW;QAC7BW,IAAI,EAAEmQ,IAAI,CAACnQ,IAAI;QACfkF,MAAM,EAAEiL,IAAI,CAACjL,MAAM;QACnB5F,QAAQ,EAAE6Q,IAAI,CAAC7Q,QAAQ;QACvB6F,OAAO,EAAEgL,IAAI,CAAChL,OAAO;QACrBme,WAAW,EAAEnT,IAAI,CAACpL;MACpB,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC41B,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKD,CAAC,CAACv5B,KAAK,CAACu8B,aAAa,CAAC/C,CAAC,CAACx5B,KAAK,EAAE,OAAO,CAAC,CAAC;EAC5D;EAEA,MAAM2W,UAAUA,CAAC/S,MAAM,EAAEoZ,OAAO,EAAEwf,MAAM,GAAG,EAAE,EAAE;IAC7C,MAAMl+B,QAAQ,GAAG,MAAMtG,uDAAK,CAAC48B,IAAI,CAACt8B,wDAAS,CAACq0B,aAAa,EAAE;MACzD/oB,MAAM;MACNoZ,OAAO;MACPwf;IACF,CAAC,EAAE;MAAE/9B,eAAe,EAAE;IAAM,CAAC,CAAC;IAE9B,IAAIH,QAAQ,CAACX,IAAI,EAAE1E,IAAI,KAAK,CAAC,EAAE;MAC7B,MAAM,IAAI6D,KAAK,CAACwB,QAAQ,CAACX,IAAI,EAAE9B,OAAO,IAAI,SAAS,CAAC;IACtD;IAEA,MAAMiT,IAAI,GAAGxQ,QAAQ,CAACX,IAAI,EAAE5B,MAAM,EAAEsH,OAAO;IAC3C,IAAI,CAACyL,IAAI,EAAExL,GAAG,EAAE;MACd,OAAO,IAAI;IACb;IAEA,OAAO,IAAI,CAACg5B,UAAU,CAACxtB,IAAI,CAACxL,GAAG,EAAE;MAAEI,KAAK,EAAEoL,IAAI,CAACpL;IAAM,CAAC,EAAE;MACtDJ,GAAG,EAAEwL,IAAI,CAACxL,GAAG;MACbtF,WAAW,EAAE8Q,IAAI,CAAC9Q,WAAW;MAC7BW,IAAI,EAAEmQ,IAAI,CAACnQ,IAAI;MACfkF,MAAM,EAAEiL,IAAI,CAACjL,MAAM;MACnB5F,QAAQ,EAAE6Q,IAAI,CAAC7Q,QAAQ;MACvB6F,OAAO,EAAEgL,IAAI,CAAChL,OAAO;MACrBme,WAAW,EAAEnT,IAAI,CAACpL;IACpB,CAAC,CAAC;EACJ;EAEA+4B,qBAAqBA,CAACj5B,YAAY,EAAE;IAClC,MAAMxD,KAAK,GAAG05B,QAAQ,CAACl2B,YAAY,EAAExD,KAAK,EAAEwD,YAAY,EAAEV,MAAM,IAAI,EAAE,CAAC;IACvE,OAAO;MACL,GAAGU,YAAY;MACfR,EAAE,EAAEQ,YAAY,EAAER,EAAE,IAAI,GAAGQ,YAAY,EAAEhI,IAAI,KAAK,QAAQ,GAAG,QAAQ,GAAG,OAAO,IAAIgI,YAAY,EAAEV,MAAM,EAAE;MACzGA,MAAM,EAAEU,YAAY,EAAEV,MAAM,IAAIU,YAAY,EAAET,GAAG,EAAED,MAAM,IAAI,EAAE;MAC/D9C,KAAK;MACLqd,QAAQ,EAAE7Z,YAAY,EAAE6Z,QAAQ,IAAI,EAAE;MACtCjY,MAAM,EAAEhI,MAAM,CAACoG,YAAY,EAAE4B,MAAM,IAAI,CAAC,CAAC;MACzCnH,QAAQ,EAAEuF,YAAY,EAAEvF,QAAQ,IAAI,EAAE;MACtC8F,UAAU,EAAEP,YAAY,EAAEO,UAAU,IAAI/D,KAAK,CAACtF,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC;MACvE8P,SAAS,EAAErN,MAAM,CAACoG,YAAY,EAAEiH,SAAS,IAAI7B,IAAI,CAAC8B,GAAG,CAAC,CAAC,CAAC;MACxD3H,GAAG,EAAES,YAAY,EAAET,GAAG,IAAI;QACxBvH,IAAI,EAAEgI,YAAY,EAAEhI,IAAI,KAAK,QAAQ,GAAG,QAAQ,GAAG,OAAO;QAC1DsH,MAAM,EAAEU,YAAY,EAAEV,MAAM,IAAI,EAAE;QAClCg4B,IAAI,EAAE;MACR;IACF,CAAC;EACH;EAEA,MAAMlc,WAAWA,CAAChb,MAAM,EAAE;IAAEjF,IAAI;IAAEskB,SAAS,GAAG,EAAE;IAAE/gB,YAAY,GAAG,EAAE;IAAEC,WAAW,GAAG,EAAE;IAAEghB,OAAO,GAAG;EAAM,CAAC,EAAE;IACxG,MAAM7kB,QAAQ,GAAG,MAAMtG,uDAAK,CAAC48B,IAAI,CAACt8B,wDAAS,CAACu0B,sBAAsB,EAAE;MAClE9a,MAAM,EAAEoR,OAAO,GAAG,gBAAgB,GAAG,cAAc;MACnDvf,MAAM;MACNjF,IAAI;MACJskB,SAAS;MACT/gB,YAAY;MACZC;IACF,CAAC,EAAE;MAAE1D,eAAe,EAAE;IAAM,CAAC,CAAC;IAE9B,IAAIH,QAAQ,CAACX,IAAI,EAAE1E,IAAI,KAAK,CAAC,EAAE;MAC7B,MAAM,IAAI6D,KAAK,CAACwB,QAAQ,CAACX,IAAI,EAAE9B,OAAO,KAAKsnB,OAAO,GAAG,SAAS,GAAG,QAAQ,CAAC,CAAC;IAC7E;IAEA,OAAO,IAAI,CAACsZ,qBAAqB,CAACn+B,QAAQ,CAACX,IAAI,EAAE5B,MAAM,EAAEyH,YAAY,IAAI,CAAC,CAAC,CAAC;EAC9E;EAEA,MAAMqb,SAASA,CAACjb,MAAM,EAAE84B,QAAQ,EAAE;IAChC,MAAMp+B,QAAQ,GAAG,MAAMtG,uDAAK,CAAC48B,IAAI,CAACt8B,wDAAS,CAACu0B,sBAAsB,EAAE;MAClE9a,MAAM,EAAE,YAAY;MACpBnO,MAAM;MACN84B;IACF,CAAC,EAAE;MAAEj+B,eAAe,EAAE;IAAM,CAAC,CAAC;IAE9B,IAAIH,QAAQ,CAACX,IAAI,EAAE1E,IAAI,KAAK,CAAC,EAAE;MAC7B,MAAM,IAAI6D,KAAK,CAACwB,QAAQ,CAACX,IAAI,EAAE9B,OAAO,IAAI,QAAQ,CAAC;IACrD;IAEA,OAAO,IAAI,CAAC4gC,qBAAqB,CAACn+B,QAAQ,CAACX,IAAI,EAAE5B,MAAM,EAAEyH,YAAY,IAAI,CAAC,CAAC,CAAC;EAC9E;EAEA,MAAM0f,gBAAgBA,CAACtf,MAAM,EAAE+4B,SAAS,EAAE17B,IAAI,EAAE;IAC9C,MAAM3C,QAAQ,GAAG,MAAMtG,uDAAK,CAAC48B,IAAI,CAACt8B,wDAAS,CAACu0B,sBAAsB,EAAE;MAClE9a,MAAM,EAAE,WAAW;MACnBnO,MAAM;MACN+4B,SAAS;MACT17B;IACF,CAAC,EAAE;MAAExC,eAAe,EAAE;IAAM,CAAC,CAAC;IAE9B,IAAIH,QAAQ,CAACX,IAAI,EAAE1E,IAAI,KAAK,CAAC,EAAE;MAC7B,MAAM,IAAI6D,KAAK,CAACwB,QAAQ,CAACX,IAAI,EAAE9B,OAAO,IAAI,MAAM,CAAC;IACnD;IAEA,OAAOyC,QAAQ,CAACX,IAAI,EAAE5B,MAAM,IAAI,CAAC,CAAC;EACpC;EAEA,MAAMkM,cAAcA,CAACrE,MAAM,EAAEK,OAAO,EAAE;IACpC,MAAM3F,QAAQ,GAAG,MAAMtG,uDAAK,CAAC48B,IAAI,CAACt8B,wDAAS,CAACu0B,sBAAsB,EAAE;MAClE9a,MAAM,EAAE,cAAc;MACtBnO,MAAM;MACNK;IACF,CAAC,EAAE;MAAExF,eAAe,EAAE;IAAM,CAAC,CAAC;IAE9B,IAAIH,QAAQ,CAACX,IAAI,EAAE1E,IAAI,KAAK,CAAC,EAAE;MAC7B,MAAM,IAAI6D,KAAK,CAACwB,QAAQ,CAACX,IAAI,EAAE9B,OAAO,IAAI,SAAS,CAAC;IACtD;IAEA,OAAOyC,QAAQ,CAACX,IAAI,EAAE5B,MAAM,EAAE8I,KAAK,IAAI,IAAI;EAC7C;EAEA,MAAMwD,eAAeA,CAACzE,MAAM,EAAEK,OAAO,EAAE;IACrC,MAAM3F,QAAQ,GAAG,MAAMtG,uDAAK,CAAC48B,IAAI,CAACt8B,wDAAS,CAACu0B,sBAAsB,EAAE;MAClE9a,MAAM,EAAE,eAAe;MACvBnO,MAAM;MACNK;IACF,CAAC,EAAE;MAAExF,eAAe,EAAE;IAAM,CAAC,CAAC;IAE9B,IAAIH,QAAQ,CAACX,IAAI,EAAE1E,IAAI,KAAK,CAAC,EAAE;MAC7B,MAAM,IAAI6D,KAAK,CAACwB,QAAQ,CAACX,IAAI,EAAE9B,OAAO,IAAI,QAAQ,CAAC;IACrD;IAEA,OAAOyC,QAAQ,CAACX,IAAI,EAAE5B,MAAM,EAAE6gC,OAAO,IAAI,EAAE;EAC7C;EAEA,MAAMlzB,gBAAgBA,CAAC9F,MAAM,EAAEK,OAAO,EAAEP,KAAK,EAAE;IAC7C,MAAMpF,QAAQ,GAAG,MAAMtG,uDAAK,CAAC48B,IAAI,CAACt8B,wDAAS,CAACu0B,sBAAsB,EAAE;MAClE9a,MAAM,EAAE,oBAAoB;MAC5BnO,MAAM;MACNK,OAAO;MACPP;IACF,CAAC,EAAE;MAAEjF,eAAe,EAAE;IAAM,CAAC,CAAC;IAE9B,IAAIH,QAAQ,CAACX,IAAI,EAAE1E,IAAI,KAAK,CAAC,EAAE;MAC7B,MAAM,IAAI6D,KAAK,CAACwB,QAAQ,CAACX,IAAI,EAAE9B,OAAO,IAAI,UAAU,CAAC;IACvD;IAEA,OAAOyC,QAAQ,CAACX,IAAI,EAAE5B,MAAM,EAAE2H,KAAK,IAAI,EAAE;EAC3C;EAEA,MAAMyH,UAAUA,CAACvH,MAAM,EAAEK,OAAO,EAAE;IAChC,MAAM3F,QAAQ,GAAG,MAAMtG,uDAAK,CAAC48B,IAAI,CAACt8B,wDAAS,CAACu0B,sBAAsB,EAAE;MAClE9a,MAAM,EAAE,aAAa;MACrBnO,MAAM;MACNK;IACF,CAAC,EAAE;MAAExF,eAAe,EAAE;IAAM,CAAC,CAAC;IAE9B,IAAIH,QAAQ,CAACX,IAAI,EAAE1E,IAAI,KAAK,CAAC,EAAE;MAC7B,MAAM,IAAI6D,KAAK,CAACwB,QAAQ,CAACX,IAAI,EAAE9B,OAAO,IAAI,QAAQ,CAAC;IACrD;IAEA,OAAOyC,QAAQ,CAACX,IAAI,EAAE5B,MAAM,IAAI,CAAC,CAAC;EACpC;EAEA,MAAMsP,YAAYA,CAACzH,MAAM,EAAEK,OAAO,EAAE;IAClC,MAAM3F,QAAQ,GAAG,MAAMtG,uDAAK,CAAC48B,IAAI,CAACt8B,wDAAS,CAACu0B,sBAAsB,EAAE;MAClE9a,MAAM,EAAE,eAAe;MACvBnO,MAAM;MACNK;IACF,CAAC,EAAE;MAAExF,eAAe,EAAE;IAAM,CAAC,CAAC;IAE9B,IAAIH,QAAQ,CAACX,IAAI,EAAE1E,IAAI,KAAK,CAAC,EAAE;MAC7B,MAAM,IAAI6D,KAAK,CAACwB,QAAQ,CAACX,IAAI,EAAE9B,OAAO,IAAI,QAAQ,CAAC;IACrD;IAEA,OAAOyC,QAAQ,CAACX,IAAI,EAAE5B,MAAM,IAAI,CAAC,CAAC;EACpC;EAEA,MAAMwP,aAAaA,CAAC3H,MAAM,EAAEK,OAAO,EAAE44B,YAAY,EAAE;IACjD,MAAMv+B,QAAQ,GAAG,MAAMtG,uDAAK,CAAC48B,IAAI,CAACt8B,wDAAS,CAACu0B,sBAAsB,EAAE;MAClE9a,MAAM,EAAE,gBAAgB;MACxBnO,MAAM;MACNK,OAAO;MACP44B;IACF,CAAC,EAAE;MAAEp+B,eAAe,EAAE;IAAM,CAAC,CAAC;IAE9B,IAAIH,QAAQ,CAACX,IAAI,EAAE1E,IAAI,KAAK,CAAC,EAAE;MAC7B,MAAM,IAAI6D,KAAK,CAACwB,QAAQ,CAACX,IAAI,EAAE9B,OAAO,IAAI,QAAQ,CAAC;IACrD;IAEA,OAAOyC,QAAQ,CAACX,IAAI,EAAE5B,MAAM,IAAI,CAAC,CAAC;EACpC;EAEA,MAAMuO,cAAcA,CAAC1G,MAAM,EAAEK,OAAO,EAAE64B,QAAQ,EAAE;IAC9C,MAAMx+B,QAAQ,GAAG,MAAMtG,uDAAK,CAAC48B,IAAI,CAACt8B,wDAAS,CAACu0B,sBAAsB,EAAE;MAClE9a,MAAM,EAAE,kBAAkB;MAC1BnO,MAAM;MACNK,OAAO;MACP64B;IACF,CAAC,EAAE;MAAEr+B,eAAe,EAAE;IAAM,CAAC,CAAC;IAE9B,IAAIH,QAAQ,CAACX,IAAI,EAAE1E,IAAI,KAAK,CAAC,EAAE;MAC7B,MAAM,IAAI6D,KAAK,CAACwB,QAAQ,CAACX,IAAI,EAAE9B,OAAO,IAAI,SAAS,CAAC;IACtD;IAEA,OAAOyC,QAAQ,CAACX,IAAI,EAAE5B,MAAM,IAAI,CAAC,CAAC;EACpC;EAEA,MAAMyO,kBAAkBA,CAAC5G,MAAM,EAAEK,OAAO,EAAE;IAAEtF,IAAI;IAAEuD,YAAY;IAAEC;EAAY,CAAC,EAAE;IAC7E,MAAM7D,QAAQ,GAAG,MAAMtG,uDAAK,CAAC48B,IAAI,CAACt8B,wDAAS,CAACu0B,sBAAsB,EAAE;MAClE9a,MAAM,EAAE,sBAAsB;MAC9BnO,MAAM;MACNK,OAAO;MACPtF,IAAI;MACJuD,YAAY;MACZC;IACF,CAAC,EAAE;MAAE1D,eAAe,EAAE;IAAM,CAAC,CAAC;IAE9B,IAAIH,QAAQ,CAACX,IAAI,EAAE1E,IAAI,KAAK,CAAC,EAAE;MAC7B,MAAM,IAAI6D,KAAK,CAACwB,QAAQ,CAACX,IAAI,EAAE9B,OAAO,IAAI,SAAS,CAAC;IACtD;IAEA,OAAOyC,QAAQ,CAACX,IAAI,EAAE5B,MAAM,IAAI,CAAC,CAAC;EACpC;EAEA,MAAM8O,gBAAgBA,CAACjH,MAAM,EAAEK,OAAO,EAAE04B,SAAS,EAAE;IACjD,MAAMr+B,QAAQ,GAAG,MAAMtG,uDAAK,CAAC48B,IAAI,CAACt8B,wDAAS,CAACu0B,sBAAsB,EAAE;MAClE9a,MAAM,EAAE,oBAAoB;MAC5BnO,MAAM;MACNK,OAAO;MACP04B;IACF,CAAC,EAAE;MAAEl+B,eAAe,EAAE;IAAM,CAAC,CAAC;IAE9B,IAAIH,QAAQ,CAACX,IAAI,EAAE1E,IAAI,KAAK,CAAC,EAAE;MAC7B,MAAM,IAAI6D,KAAK,CAACwB,QAAQ,CAACX,IAAI,EAAE9B,OAAO,IAAI,MAAM,CAAC;IACnD;IAEA,OAAOyC,QAAQ,CAACX,IAAI,EAAE5B,MAAM,IAAI,CAAC,CAAC;EACpC;EAEA,MAAMkP,sBAAsBA,CAACrH,MAAM,EAAEK,OAAO,EAAEkF,OAAO,EAAE;IACrD,MAAM7K,QAAQ,GAAG,MAAMtG,uDAAK,CAAC48B,IAAI,CAACt8B,wDAAS,CAACu0B,sBAAsB,EAAE;MAClE9a,MAAM,EAAE,qBAAqB;MAC7BnO,MAAM;MACNK,OAAO;MACP,GAAGkF;IACL,CAAC,EAAE;MAAE1K,eAAe,EAAE;IAAM,CAAC,CAAC;IAE9B,IAAIH,QAAQ,CAACX,IAAI,EAAE1E,IAAI,KAAK,CAAC,EAAE;MAC7B,MAAM,IAAI6D,KAAK,CAACwB,QAAQ,CAACX,IAAI,EAAE9B,OAAO,IAAI,UAAU,CAAC;IACvD;IAEA,OAAOyC,QAAQ,CAACX,IAAI,EAAE5B,MAAM,EAAEqN,WAAW,IAAI,IAAI;EACnD;EAEA,MAAM/B,kBAAkBA,CAACzD,MAAM,EAAEm5B,QAAQ,EAAEr5B,KAAK,EAAE;IAChD,MAAMpF,QAAQ,GAAG,MAAMtG,uDAAK,CAAC48B,IAAI,CAACt8B,wDAAS,CAACm0B,cAAc,EAAE;MAC1D7oB,MAAM;MACNm5B,QAAQ;MACRr5B;IACF,CAAC,EAAE;MACDjF,eAAe,EAAE,KAAK;MACtBu1B,OAAO,EAAE,IAAI,CAACqI,iBAAiB,CAAC/jC,wDAAS,CAACm0B,cAAc;IAC1D,CAAC,CAAC;IAEF,IAAInuB,QAAQ,CAACX,IAAI,EAAE1E,IAAI,KAAK,CAAC,EAAE;MAC7B,MAAM,IAAI6D,KAAK,CAACwB,QAAQ,CAACX,IAAI,EAAE9B,OAAO,IAAI,SAAS,CAAC;IACtD;IAEA,OAAOyC,QAAQ,CAACX,IAAI,EAAE5B,MAAM,EAAEsH,OAAO,EAAEK,KAAK,IAAI,EAAE;EACpD;EAEA,MAAMgzB,UAAUA,CAAC9yB,MAAM,EAAE;IACvB,MAAMtF,QAAQ,GAAG,MAAMtG,uDAAK,CAAC48B,IAAI,CAACt8B,wDAAS,CAACi1B,UAAU,EAAE;MACtDxb,MAAM,EAAE,KAAK;MACbnO;IACF,CAAC,EAAE;MAAEnF,eAAe,EAAE;IAAM,CAAC,CAAC;IAE9B,IAAIH,QAAQ,CAACX,IAAI,EAAE1E,IAAI,KAAK,CAAC,EAAE;MAC7B,MAAM,IAAI6D,KAAK,CAACwB,QAAQ,CAACX,IAAI,EAAE9B,OAAO,IAAI,UAAU,CAAC;IACvD;IAEA,OAAOyC,QAAQ,CAACX,IAAI,EAAE5B,MAAM,EAAEqa,OAAO,IAAI,IAAI;EAC/C;EAEA,MAAMygB,aAAaA,CAACjzB,MAAM,EAAE;IAAE5F,WAAW;IAAE8sB;EAAa,CAAC,EAAE;IACzD,MAAMoR,QAAQ,GAAG,IAAI5K,QAAQ,CAAC,CAAC;IAC/B4K,QAAQ,CAACC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC;IACnCD,QAAQ,CAACC,MAAM,CAAC,QAAQ,EAAEv4B,MAAM,CAAC;IACjCs4B,QAAQ,CAACC,MAAM,CAAC,aAAa,EAAEn+B,WAAW,CAAC;IAC3C,IAAI8sB,YAAY,EAAE;MAChBoR,QAAQ,CAACC,MAAM,CAAC,cAAc,EAAErR,YAAY,CAAC;IAC/C;IAEA,MAAMxsB,QAAQ,GAAG,MAAMtG,uDAAK,CAAC48B,IAAI,CAACt8B,wDAAS,CAACi1B,UAAU,EAAE2O,QAAQ,EAAE;MAChEz9B,eAAe,EAAE,KAAK;MACtBu1B,OAAO,EAAE,IAAI,CAACqI,iBAAiB,CAAC/jC,wDAAS,CAACuzB,SAAS;IACrD,CAAC,CAAC;IAEF,IAAIvtB,QAAQ,CAACX,IAAI,EAAE1E,IAAI,KAAK,CAAC,EAAE;MAC7B,MAAM,IAAI6D,KAAK,CAACwB,QAAQ,CAACX,IAAI,EAAE9B,OAAO,IAAI,UAAU,CAAC;IACvD;IAEA,OAAOyC,QAAQ,CAACX,IAAI,EAAE5B,MAAM,EAAEqa,OAAO,IAAI,IAAI;EAC/C;EAEA,MAAM4U,cAAcA,CAAC;IAAExG,WAAW;IAAEC;EAAY,CAAC,EAAE;IACjD,MAAMnmB,QAAQ,GAAG,MAAMtG,uDAAK,CAAC48B,IAAI,CAACt8B,wDAAS,CAACm1B,iBAAiB,EAAE;MAC7DjJ,WAAW;MACXC;IACF,CAAC,EAAE;MACDhmB,eAAe,EAAE,KAAK;MACtBu1B,OAAO,EAAE,IAAI,CAACqI,iBAAiB,CAAC/jC,wDAAS,CAACm1B,iBAAiB;IAC7D,CAAC,CAAC;IAEF,IAAInvB,QAAQ,CAACX,IAAI,EAAE1E,IAAI,KAAK,CAAC,EAAE;MAC7B,MAAM,IAAI6D,KAAK,CAACwB,QAAQ,CAACX,IAAI,EAAE9B,OAAO,IAAIyC,QAAQ,CAACX,IAAI,EAAE63B,GAAG,IAAI,QAAQ,CAAC;IAC3E;IAEA,OAAO,IAAI;EACb;EAEA,MAAMa,qBAAqBA,CAAC;IAAExyB,MAAM;IAAEyyB,SAAS;IAAE7R;EAAY,CAAC,EAAE;IAC9D,MAAMnmB,QAAQ,GAAG,MAAMtG,uDAAK,CAAC48B,IAAI,CAACt8B,wDAAS,CAAC0kC,gBAAgB,EAAE;MAC5Dn5B,MAAM;MACNyyB,SAAS;MACT7R;IACF,CAAC,EAAE;MAAEhmB,eAAe,EAAE;IAAM,CAAC,CAAC;IAE9B,IAAIH,QAAQ,CAACX,IAAI,EAAE1E,IAAI,KAAK,CAAC,EAAE;MAC7B,MAAM,IAAI6D,KAAK,CAACwB,QAAQ,CAACX,IAAI,EAAE9B,OAAO,IAAIyC,QAAQ,CAACX,IAAI,EAAE63B,GAAG,IAAI,QAAQ,CAAC;IAC3E;IAEA,OAAO,IAAI;EACb;EAEAyH,kBAAkBA,CAAA,EAAG;IACnB,MAAMplC,QAAQ,GAAG,IAAI,CAACukC,cAAc,CAAC,CAAC;IACtC,IAAI,CAACvwB,IAAI,CAAC,iBAAiB,EAAEhU,QAAQ,CAAC;IACtC,OAAOA,QAAQ;EACjB;EAEAqlC,wBAAwBA,CAACt5B,MAAM,EAAEu5B,QAAQ,GAAG,IAAI,EAAE;IAChD,MAAMn9B,KAAK,GAAG05B,QAAQ,CAACyD,QAAQ,EAAEn9B,KAAK,IAAIm9B,QAAQ,EAAEn/B,WAAW,IAAIm/B,QAAQ,EAAEx+B,IAAI,EAAEiF,MAAM,CAAC;IAC1F,OAAO;MACLZ,EAAE,EAAE,UAAUY,MAAM,EAAE;MACtBpI,IAAI,EAAE,QAAQ;MACdsH,MAAM,EAAEc,MAAM;MACd5D,KAAK;MACLqd,QAAQ,EAAE,EAAE;MACZjY,MAAM,EAAE,CAAC;MACTnH,QAAQ,EAAEk/B,QAAQ,EAAEl/B,QAAQ,IAAI,EAAE;MAClC8F,UAAU,EAAE/D,KAAK,CAACtF,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC;MAC3C8P,SAAS,EAAE7B,IAAI,CAAC8B,GAAG,CAAC,CAAC;MACrB3H,GAAG,EAAE;QAAEvH,IAAI,EAAE,QAAQ;QAAEsH,MAAM,EAAEc,MAAM;QAAEk3B,IAAI,EAAE;MAAE;IACjD,CAAC;EACH;EAEAwB,UAAUA,CAAC14B,MAAM,EAAEw5B,MAAM,EAAED,QAAQ,EAAE;IACnC,MAAMn9B,KAAK,GAAG05B,QAAQ,CAACyD,QAAQ,EAAElb,WAAW,IAAImb,MAAM,EAAE15B,KAAK,IAAIy5B,QAAQ,EAAEn/B,WAAW,IAAIm/B,QAAQ,EAAEx+B,IAAI,EAAEiF,MAAM,CAAC;IACjH,OAAO;MACLZ,EAAE,EAAEY,MAAM;MACVN,GAAG,EAAEM,MAAM;MACX5D,KAAK;MACLqd,QAAQ,EAAE8f,QAAQ,EAAEt5B,MAAM,IAAIs5B,QAAQ,EAAEx+B,IAAI,IAAIiF,MAAM;MACtD3F,QAAQ,EAAEk/B,QAAQ,EAAEl/B,QAAQ,IAAI,EAAE;MAClC6F,OAAO,EAAEq5B,QAAQ,EAAEr5B,OAAO,IAAI,EAAE;MAChCC,UAAU,EAAE/D,KAAK,CAACtF,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC;MAC3C+I,KAAK,EAAE05B,MAAM,EAAE15B,KAAK,IAAIy5B,QAAQ,EAAElb,WAAW,IAAI,EAAE;MACnDC,SAAS,EAAEkb,MAAM;MACjB35B,OAAO,EAAE05B;IACX,CAAC;EACH;EAEAE,EAAEA,CAACC,SAAS,EAAEC,OAAO,EAAE;IACrB,IAAI,CAAC,IAAI,CAACxD,SAAS,CAAChwB,GAAG,CAACuzB,SAAS,CAAC,EAAE;MAClC,IAAI,CAACvD,SAAS,CAACj6B,GAAG,CAACw9B,SAAS,EAAE,IAAIxzB,GAAG,CAAC,CAAC,CAAC;IAC1C;IACA,IAAI,CAACiwB,SAAS,CAACx7B,GAAG,CAAC++B,SAAS,CAAC,CAACrzB,GAAG,CAACszB,OAAO,CAAC;IAC1C,OAAO,MAAM,IAAI,CAACC,GAAG,CAACF,SAAS,EAAEC,OAAO,CAAC;EAC3C;EAEAC,GAAGA,CAACF,SAAS,EAAEC,OAAO,EAAE;IACtB,IAAI,CAACxD,SAAS,CAACx7B,GAAG,CAAC++B,SAAS,CAAC,EAAEtzB,MAAM,CAACuzB,OAAO,CAAC;EAChD;EAEA1xB,IAAIA,CAACyxB,SAAS,EAAE7/B,OAAO,EAAE;IACvB,IAAI,CAACs8B,SAAS,CAACx7B,GAAG,CAAC++B,SAAS,CAAC,EAAEtvB,OAAO,CAACuvB,OAAO,IAAIA,OAAO,CAAC9/B,OAAO,CAAC,CAAC;EACrE;EAEA24B,eAAeA,CAAC12B,GAAG,EAAEpB,QAAQ,EAAE;IAC7B,MAAMm/B,QAAQ,GAAGn/B,QAAQ,CAAC01B,OAAO,EAAE0J,SAAS,IAAIp/B,QAAQ,CAAC01B,OAAO,EAAE2J,SAAS;IAC3E,IAAIF,QAAQ,EAAE;MACZvN,YAAY,CAACI,OAAO,CAACh4B,wDAAS,CAAC62B,sBAAsB,GAAG,IAAI,CAACyO,UAAU,CAACl+B,GAAG,CAAC,EAAE+9B,QAAQ,CAAC;IACzF;EACF;EAEApB,iBAAiBA,CAAC38B,GAAG,EAAE;IACrB,MAAMm+B,IAAI,GAAG,IAAI,CAACD,UAAU,CAACl+B,GAAG,CAAC;IACjC,IAAI,CAACm+B,IAAI,EAAE;MACT,OAAO,CAAC,CAAC;IACX;IACA,MAAMhhC,KAAK,GAAGqzB,YAAY,CAACC,OAAO,CAAC73B,wDAAS,CAAC62B,sBAAsB,GAAG0O,IAAI,CAAC;IAC3E,OAAOhhC,KAAK,GAAG;MAAE8gC,SAAS,EAAE9gC;IAAM,CAAC,GAAG,CAAC,CAAC;EAC1C;EAEA+gC,UAAUA,CAACl+B,GAAG,EAAE;IACd,IAAI;MACF,OAAO,IAAIF,GAAG,CAACE,GAAG,EAAErD,MAAM,CAAC+C,QAAQ,CAACma,MAAM,CAAC,CAACskB,IAAI;IAClD,CAAC,CAAC,OAAO1iC,KAAK,EAAE;MACd,OAAO,EAAE;IACX;EACF;AACF;AAEO,MAAM5C,QAAQ,GAAG,IAAI28B,YAAY,CAAC,CAAC,C;;;;;;;;;;;;AChkCL;AACS;AACoB;AACA;AAElE,MAAM6I,2BAA2B,CAAC;EAChCjE,WAAWA,CAAA,EAAG;IACZ,MAAM,IAAIh9B,KAAK,CAAC,qCAAqC,CAAC;EACxD;AACF;AAEO,MAAMvE,QAAQ,GAAGD,uDAAS,CAACi2B,OAAO,KAAK,UAAU,GACpD,IAAIwP,2BAA2B,CAAC,CAAC,GACjCzlC,uDAAS,CAACi2B,OAAO,KAAK,WAAW,IAAIj2B,uDAAS,CAACi2B,OAAO,KAAK,MAAM,GAC/D,IAAIuP,oFAAsB,CAAC,CAAC,GAC5BxlC,uDAAS,CAACi2B,OAAO,KAAK,aAAa,GACjC,IAAI2G,gEAAY,CAAC,CAAC,GAClB,IAAIO,oFAAsB,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjBC;AACS;AAE9C,MAAMwI,qBAAqB,GAAG,KAAK;AACnC,MAAMC,gBAAgB,GAAG,IAAI;AAC7B,MAAMC,gBAAgB,GAAG,KAAK;AAE9B,SAASC,UAAUA,CAAA,EAAG;EACpB,IAAI9lC,uDAAS,CAAC+1B,KAAK,EAAE;IACnB,OAAO/1B,uDAAS,CAAC+1B,KAAK;EACxB;EACA,MAAMhvB,QAAQ,GAAG/G,uDAAS,CAAC21B,MAAM,GAAG,KAAK,GAAG,IAAI;EAChD,MAAM4P,IAAI,GAAGvlC,uDAAS,CAACu1B,YAAY,IAAIxxB,MAAM,CAAC+C,QAAQ,CAACgsB,QAAQ;EAC/D,MAAMiT,IAAI,GAAG/lC,uDAAS,CAACy1B,WAAW,GAAG,IAAIz1B,uDAAS,CAACy1B,WAAW,EAAE,GAAG,EAAE;EACrE,MAAM2D,IAAI,GAAGp5B,uDAAS,CAAC61B,MAAM,EAAEhvB,UAAU,CAAC,GAAG,CAAC,GAAG7G,uDAAS,CAAC61B,MAAM,GAAG,IAAI71B,uDAAS,CAAC61B,MAAM,IAAI,IAAI,EAAE;EAClG,OAAO,GAAG9uB,QAAQ,MAAMw+B,IAAI,GAAGQ,IAAI,GAAG3M,IAAI,EAAE;AAC9C;AAEA,SAAS4M,uBAAuBA,CAAC7gC,OAAO,EAAE;EACxC,MAAMqF,MAAM,GAAGrF,OAAO,CAACqF,MAAM,IAAIrF,OAAO,CAAC8gC,EAAE,IAAI9gC,OAAO,CAAC+gC,QAAQ,IAAI/gC,OAAO,CAACsiB,kBAAkB,IAAItiB,OAAO,CAAC0M,IAAI,IAAI1M,OAAO,CAACo+B,MAAM;EAC/H,OAAOp+B,OAAO,CAAC4d,cAAc,KAAKvY,MAAM,GAAG,UAAUA,MAAM,EAAE,GAAG,EAAE,CAAC;AACrE;AAEA,SAAS27B,wBAAwBA,CAAChhC,OAAO,EAAEihC,aAAa,EAAE;EACxD,MAAM5vB,IAAI,GAAGrR,OAAO,CAAC5B,OAAO,IAAI4B,OAAO;EACvC,MAAM0M,IAAI,GAAG2E,IAAI,CAAC3E,IAAI,IAAI2E,IAAI,CAAC+sB,MAAM,IAAI/sB,IAAI,CAAC6vB,QAAQ,IAAI,EAAE;EAC5D,MAAM77B,MAAM,GAAGgM,IAAI,CAAChM,MAAM,IAAIgM,IAAI,CAACyvB,EAAE,IAAIzvB,IAAI,CAAC0vB,QAAQ,IAAI,EAAE;EAC5D,MAAM3sB,SAAS,GAAG1H,IAAI,IAAI1P,MAAM,CAAC0P,IAAI,CAAC,KAAK1P,MAAM,CAACikC,aAAa,CAAC,GAAG,KAAK,GAAG,IAAI;EAC/E,MAAMrjB,cAAc,GAAGvM,IAAI,CAACuM,cAAc,IAAIijB,uBAAuB,CAAC;IACpE,GAAGxvB,IAAI;IACPhM,MAAM,EAAE+O,SAAS,KAAK,KAAK,GAAG/O,MAAM,GAAGqH;EACzC,CAAC,CAAC;EAEF,IAAI,CAACkR,cAAc,EAAE;IACnB,OAAO,IAAI;EACb;EAEA,MAAMzd,MAAM,GAAGkR,IAAI,CAAClR,MAAM,IAAIkR,IAAI,CAACuE,cAAc,IAAI,MAAM;EAE3D,OAAO;IACLrQ,EAAE,EAAE8L,IAAI,CAAC9L,EAAE,IAAI8L,IAAI,CAAC+D,SAAS,IAAI/D,IAAI,CAACwE,UAAU,IAAI,GAAG1K,IAAI,CAAC8B,GAAG,CAAC,CAAC,GAAGzN,IAAI,CAACy6B,MAAM,CAAC,CAAC,CAACj4B,QAAQ,CAAC,EAAE,CAAC,CAAC/E,KAAK,CAAC,CAAC,CAAC,EAAE;IACzG4Y,UAAU,EAAExE,IAAI,CAACwE,UAAU,IAAIxE,IAAI,CAACxL,GAAG,IAAIwL,IAAI,CAAC+D,SAAS,IAAI,EAAE;IAC/DwI,cAAc;IACdlR,IAAI;IACJrH,MAAM;IACN+O,SAAS;IACTrW,IAAI,EAAEsT,IAAI,CAACtT,IAAI,IAAI,MAAM;IACzByF,IAAI,EAAE6N,IAAI,CAAC7N,IAAI,IAAI6N,IAAI,CAAC8vB,OAAO,IAAI9vB,IAAI,CAAC+vB,iBAAiB,IAAI,EAAE;IAC/DjhC,MAAM;IACNyV,cAAc,EAAEvE,IAAI,CAACuE,cAAc,KAAKxB,SAAS,KAAK,KAAK,GAAGjU,MAAM,GAAG,EAAE,CAAC;IAC1EiI,SAAS,EAAEzI,MAAM,CAAC0R,IAAI,CAACjJ,SAAS,IAAIiJ,IAAI,CAACitB,eAAe,IAAInzB,IAAI,CAAC8B,GAAG,CAAC,CAAC,CAAC;IACvE+uB,gBAAgB,EAAEr8B,MAAM,CAAC0R,IAAI,CAAC2qB,gBAAgB,IAAI3qB,IAAI,CAACjJ,SAAS,IAAIiJ,IAAI,CAACitB,eAAe,IAAInzB,IAAI,CAAC8B,GAAG,CAAC,CAAC,CAAC;IACvG3H,GAAG,EAAE+L;EACP,CAAC;AACH;AAEO,MAAMgvB,sBAAsB,SAAS5I,gEAAY,CAAC;EACvD4E,WAAWA,CAAA,EAAG;IACZ,KAAK,CAAC,CAAC;IACP,IAAI,CAACgF,MAAM,GAAG,IAAI;IAClB,IAAI,CAACzQ,KAAK,GAAG+P,UAAU,CAAC,CAAC;IACzB,IAAI,CAACW,cAAc,GAAG,IAAI;IAC1B,IAAI,CAACC,cAAc,GAAG,IAAI;IAC1B,IAAI,CAACC,iBAAiB,GAAG,CAAC;IAC1B,IAAI,CAACC,WAAW,GAAG,KAAK;EAC1B;EAEAhF,aAAaA,CAAA,EAAG;IACd,OAAO,WAAW;EACpB;EAEAiF,uBAAuBA,CAAA,EAAG;IACxB,OAAO,CAAC,IAAI,CAACx5B,SAAS;EACxB;EAEA,MAAMw0B,SAASA,CAAA,EAAG;IAChB,IAAI,OAAOiF,SAAS,KAAK,WAAW,EAAE;MACpC,MAAM,IAAItiC,KAAK,CAAC,wBAAwB,CAAC;IAC3C;IACA,OAAO,IAAI;EACb;EAEA09B,OAAOA,CAAC52B,MAAM,EAAE/G,KAAK,EAAE;IACrB,IAAI,CAACm9B,WAAW,GAAG;MAAEp2B,MAAM;MAAE/G;IAAM,CAAC;IACpC,IAAI,CAACqiC,WAAW,GAAG,KAAK;IACxB,IAAI,CAACG,UAAU,CAAC,CAAC;EACnB;EAEA3E,UAAUA,CAAA,EAAG;IACX,IAAI,CAACwE,WAAW,GAAG,IAAI;IACvB,IAAI,CAACI,mBAAmB,CAAC,CAAC;IAC1B,IAAI,CAACC,mBAAmB,CAAC,CAAC;IAC1B,IAAI,IAAI,CAACT,MAAM,EAAE;MACf,IAAI,CAACA,MAAM,CAACU,KAAK,CAAC,CAAC;MACnB,IAAI,CAACV,MAAM,GAAG,IAAI;IACpB;IACA,KAAK,CAACpE,UAAU,CAAC,CAAC;EACpB;EAEA2E,UAAUA,CAAA,EAAG;IACX,IAAI,IAAI,CAACP,MAAM,EAAEW,UAAU,KAAKL,SAAS,CAACM,IAAI,EAAE;MAC9C,IAAI,CAACC,aAAa,CAAC,CAAC;MACpB;IACF;IACA,IAAI,IAAI,CAACb,MAAM,EAAEW,UAAU,KAAKL,SAAS,CAACQ,UAAU,EAAE;MACpD;IACF;IAEA,IAAI,CAAC/zB,IAAI,CAAC,yBAAyB,EAAE;MAAElG,SAAS,EAAE,KAAK;MAAEH,UAAU,EAAE;IAAS,CAAC,CAAC;IAEhF,IAAI;MACF,IAAI,CAACs5B,MAAM,GAAG,IAAIM,SAAS,CAAC,IAAI,CAAC/Q,KAAK,CAAC;MACvC,IAAI,CAACyQ,MAAM,CAACe,UAAU,GAAG,aAAa;IACxC,CAAC,CAAC,OAAO1kC,KAAK,EAAE;MACd,IAAI,CAAC0Q,IAAI,CAAC,yBAAyB,EAAE;QAAElG,SAAS,EAAE,KAAK;QAAEH,UAAU,EAAE;MAAmB,CAAC,CAAC;MAC1F,IAAI,CAACs6B,iBAAiB,CAAC,CAAC;MACxB;IACF;IAEA,IAAI,CAAChB,MAAM,CAACiB,MAAM,GAAG,MAAM;MACzB,IAAI,CAACp6B,SAAS,GAAG,IAAI;MACrB,IAAI,CAACs5B,iBAAiB,GAAG,CAAC;MAC1B,IAAI,CAACpzB,IAAI,CAAC,yBAAyB,EAAE;QAAElG,SAAS,EAAE,IAAI;QAAEH,UAAU,EAAE;MAAS,CAAC,CAAC;MAC/E,IAAI,CAACm6B,aAAa,CAAC,CAAC;MACpB,IAAI,CAACK,cAAc,CAAC,CAAC;MACrB,IAAI,CAACvF,uBAAuB,CAAC,CAAC;IAChC,CAAC;IAED,IAAI,CAACqE,MAAM,CAACmB,SAAS,GAAG9xB,KAAK,IAAI;MAC/B,IAAI,CAAC+xB,WAAW,CAAC/xB,KAAK,CAACxQ,IAAI,CAAC;IAC9B,CAAC;IAED,IAAI,CAACmhC,MAAM,CAACjV,OAAO,GAAG,MAAM;MAC1B,IAAI,CAAChe,IAAI,CAAC,yBAAyB,EAAE;QAAElG,SAAS,EAAE,KAAK;QAAEH,UAAU,EAAE;MAAiB,CAAC,CAAC;IAC1F,CAAC;IAED,IAAI,CAACs5B,MAAM,CAACqB,OAAO,GAAG,MAAM;MAC1B,IAAI,CAACx6B,SAAS,GAAG,KAAK;MACtB,IAAI,CAAC45B,mBAAmB,CAAC,CAAC;MAC1B,IAAI,CAACT,MAAM,GAAG,IAAI;MAClB,IAAI,IAAI,CAACI,WAAW,EAAE;QACpB;MACF;MACA,IAAI,CAACrzB,IAAI,CAAC,yBAAyB,EAAE;QAAElG,SAAS,EAAE,KAAK;QAAEH,UAAU,EAAE;MAAS,CAAC,CAAC;MAChF,IAAI,CAACs6B,iBAAiB,CAAC,CAAC;IAC1B,CAAC;EACH;EAEAH,aAAaA,CAAA,EAAG;IACd,IAAI,CAACS,SAAS,CAAC;MACb5kC,IAAI,EAAE,MAAM;MACZoI,MAAM,EAAE,IAAI,CAACo2B,WAAW,EAAEp2B,MAAM,IAAI,EAAE;MACtC/G,KAAK,EAAE,IAAI,CAACm9B,WAAW,EAAEn9B,KAAK,IAAI,EAAE;MACpC+4B,QAAQ,EAAE,IAAI,CAACC,WAAW,CAAC,CAAC;MAC5B5G,QAAQ,EAAE32B,uDAAS,CAAC22B,QAAQ;MAC5BppB,SAAS,EAAE+C,IAAI,CAAC8B,GAAG,CAAC;IACtB,CAAC,CAAC;EACJ;EAEA01B,SAASA,CAACC,KAAK,EAAE;IACf,IAAI,IAAI,CAACvB,MAAM,EAAEW,UAAU,KAAKL,SAAS,CAACM,IAAI,EAAE;MAC9C,OAAO,KAAK;IACd;IACA,IAAI,CAACZ,MAAM,CAACwB,IAAI,CAAC9qB,IAAI,CAAC+a,SAAS,CAAC8P,KAAK,CAAC,CAAC;IACvC,OAAO,IAAI;EACb;EAEAH,WAAWA,CAACK,OAAO,EAAE;IACnB,IAAIA,OAAO,YAAYC,WAAW,EAAE;MAClC,IAAI,CAAC30B,IAAI,CAAC,kBAAkB,EAAE00B,OAAO,CAAC;MACtC;IACF;IAEA,IAAI9iC,OAAO;IACX,IAAI;MACFA,OAAO,GAAG,OAAO8iC,OAAO,KAAK,QAAQ,GAAG/qB,IAAI,CAACC,KAAK,CAAC8qB,OAAO,CAAC,GAAGA,OAAO;IACvE,CAAC,CAAC,OAAOplC,KAAK,EAAE;MACd;IACF;IAEA,MAAMK,IAAI,GAAGiC,OAAO,CAACjC,IAAI,IAAIiC,OAAO,CAAC0Q,KAAK,IAAI1Q,OAAO,CAACgjC,GAAG,IAAI,EAAE;IAC/D,IAAIjlC,IAAI,KAAK,MAAM,IAAIA,IAAI,KAAK,SAAS,IAAIA,IAAI,KAAK,WAAW,EAAE;MACjE;IACF;IACA,IAAIA,IAAI,KAAK,iBAAiB,EAAE;MAC9B,IAAI,CAACqQ,IAAI,CAAC,iBAAiB,EAAEpO,OAAO,CAAC5F,QAAQ,IAAI,EAAE,CAAC;MACpD;IACF;IACA,IAAI2D,IAAI,KAAK,sBAAsB,EAAE;MACnC,IAAI,CAACqQ,IAAI,CAAC,sBAAsB,EAAEpO,OAAO,CAAC9F,aAAa,IAAI,EAAE,CAAC;MAC9D;IACF;IACA,IAAI6D,IAAI,KAAK,UAAU,IAAI0O,KAAK,CAACwX,OAAO,CAACjkB,OAAO,CAACgU,QAAQ,CAAC,EAAE;MAC1DhU,OAAO,CAACgU,QAAQ,CACbnJ,GAAG,CAACzM,OAAO,IAAI4iC,wBAAwB,CAAC5iC,OAAO,EAAE,IAAI,CAACm+B,WAAW,EAAEp2B,MAAM,CAAC,CAAC,CAC3EY,MAAM,CAACQ,OAAO,CAAC,CACfgJ,OAAO,CAACnS,OAAO,IAAI,IAAI,CAACgQ,IAAI,CAAC,iBAAiB,EAAEhQ,OAAO,CAAC,CAAC;MAC5D;IACF;IAEA,MAAMA,OAAO,GAAG4iC,wBAAwB,CAAChhC,OAAO,EAAE,IAAI,CAACu8B,WAAW,EAAEp2B,MAAM,CAAC;IAC3E,IAAI/H,OAAO,EAAE;MACX,IAAI,CAACgQ,IAAI,CAAChQ,OAAO,CAACgW,SAAS,KAAK,KAAK,GAAG,sBAAsB,GAAG,iBAAiB,EAAEhW,OAAO,CAAC;IAC9F;EACF;EAEAmkC,cAAcA,CAAA,EAAG;IACf,IAAI,CAACT,mBAAmB,CAAC,CAAC;IAC1B,IAAI,CAACR,cAAc,GAAG1iC,MAAM,CAACqkC,WAAW,CAAC,MAAM;MAC7C,IAAI,CAACN,SAAS,CAAC;QAAE5kC,IAAI,EAAE,MAAM;QAAEqK,SAAS,EAAE+C,IAAI,CAAC8B,GAAG,CAAC;MAAE,CAAC,CAAC;IACzD,CAAC,EAAEuzB,qBAAqB,CAAC;EAC3B;EAEAsB,mBAAmBA,CAAA,EAAG;IACpB,IAAI,IAAI,CAACR,cAAc,EAAE;MACvB1iC,MAAM,CAACskC,aAAa,CAAC,IAAI,CAAC5B,cAAc,CAAC;MACzC,IAAI,CAACA,cAAc,GAAG,IAAI;IAC5B;EACF;EAEAe,iBAAiBA,CAAA,EAAG;IAClB,IAAI,CAACR,mBAAmB,CAAC,CAAC;IAC1B,MAAMphC,KAAK,GAAGjB,IAAI,CAACE,GAAG,CAACghC,gBAAgB,EAAED,gBAAgB,GAAG,CAAC,IAAI,IAAI,CAACe,iBAAiB,CAAC;IACxF,IAAI,CAACA,iBAAiB,IAAI,CAAC;IAC3B,IAAI,CAACD,cAAc,GAAG3iC,MAAM,CAACiB,UAAU,CAAC,MAAM;MAC5C,IAAI,CAAC+hC,UAAU,CAAC,CAAC;IACnB,CAAC,EAAEnhC,KAAK,CAAC;EACX;EAEAohC,mBAAmBA,CAAA,EAAG;IACpB,IAAI,IAAI,CAACN,cAAc,EAAE;MACvB3iC,MAAM,CAACC,YAAY,CAAC,IAAI,CAAC0iC,cAAc,CAAC;MACxC,IAAI,CAACA,cAAc,GAAG,IAAI;IAC5B;EACF;AACF,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3OA,SAAS4B,oBAAoBA,CAAA,EAAG;EAC9B,MAAMC,UAAU,GAAGxkC,MAAM,CAACivB,gBAAgB,EAAEwV,eAAe;EAC3D,MAAMtf,MAAM,GAAGtX,KAAK,CAACwX,OAAO,CAACmf,UAAU,CAAC,GACpCA,UAAU,GACVpmC,MAAM,CAAComC,UAAU,IAAI,EAAE,CAAC,CAACnN,KAAK,CAAC,QAAQ,CAAC;EAC5C,OAAO,IAAI5pB,GAAG,CACZ,CAAC,mBAAmB,EAAE,GAAG0X,MAAM,CAAC,CAC7BlZ,GAAG,CAACnO,KAAK,IAAIM,MAAM,CAACN,KAAK,IAAI,EAAE,CAAC,CAACyE,IAAI,CAAC,CAAC,CAACwe,WAAW,CAAC,CAAC,CAACna,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CACzEuB,MAAM,CAACQ,OAAO,CACnB,CAAC;AACH;AAEO,SAASrE,eAAeA,CAACxG,KAAK,EAAE;EACrC,MAAM4mC,MAAM,GAAGtmC,MAAM,CAACN,KAAK,IAAI,EAAE,CAAC,CAACyE,IAAI,CAAC,CAAC;EACzC,IAAI,CAACmiC,MAAM,IAAIA,MAAM,CAAC5hC,UAAU,CAAC,OAAO,CAAC,IAAI4hC,MAAM,CAAC5hC,UAAU,CAAC,OAAO,CAAC,EAAE;IACvE,OAAO4hC,MAAM;EACf;EAEA,IAAI;IACF,MAAMrhC,GAAG,GAAG,IAAIF,GAAG,CAACuhC,MAAM,EAAE1kC,MAAM,CAAC+C,QAAQ,CAACma,MAAM,CAAC;IACnD,IAAI7Z,GAAG,CAACL,QAAQ,KAAK,QAAQ,IAAI,CAACuhC,oBAAoB,CAAC,CAAC,CAAC72B,GAAG,CAACrK,GAAG,CAAC0rB,QAAQ,CAAChO,WAAW,CAAC,CAAC,CAAC,EAAE;MACxF,OAAO2jB,MAAM;IACf;IACA,MAAMC,QAAQ,GAAG,IAAIxhC,GAAG,CAAC,sBAAsB,EAAEnD,MAAM,CAAC+C,QAAQ,CAACma,MAAM,CAAC;IACxEynB,QAAQ,CAACnhC,YAAY,CAACC,GAAG,CAAC,KAAK,EAAEJ,GAAG,CAACD,QAAQ,CAAC,CAAC,CAAC;IAChD,OAAOuhC,QAAQ,CAACvhC,QAAQ,CAAC,CAAC;EAC5B,CAAC,CAAC,OAAOtE,KAAK,EAAE;IACd,OAAO4lC,MAAM;EACf;AACF,C;;;;;;;;;;;;;AC7B0B;AACW;AACU;AAE/C,MAAME,0BAA0B,CAAC;EAC/BnH,WAAWA,CAAA,EAAG;IACZ,IAAI,CAACiH,MAAM,GAAG,IAAI;IAClB,IAAI,CAACn9B,MAAM,GAAG,EAAE;IAChB,IAAI,CAAC25B,OAAO,GAAG,IAAI;IACnB,IAAI,CAACyB,cAAc,GAAG,IAAI;IAC1B,IAAI,CAACkC,gBAAgB,GAAG,CAAC;IACzB,IAAI,CAACxkC,UAAU,GAAG,CAAC;EACrB;EAEAykC,WAAWA,CAAA,EAAG;IACZ,OAAO,IAAI,CAACJ,MAAM,EAAEtB,UAAU,KAAKL,SAAS,CAACM,IAAI;EACnD;EAEA/yB,KAAKA,CAAC/I,MAAM,EAAE25B,OAAO,EAAE;IACrB,IAAI,CAAC6D,IAAI,CAAC,CAAC;IACX,IAAI,CAAC9oC,uDAAS,CAACq2B,UAAU,IAAI,CAAC/qB,MAAM,IAAI,OAAOvH,MAAM,CAAC+iC,SAAS,KAAK,UAAU,EAAE;IAChF,IAAI,CAACx7B,MAAM,GAAGA,MAAM;IACpB,IAAI,CAAC25B,OAAO,GAAGA,OAAO;IACtB,IAAI,CAAC7gC,UAAU,IAAI,CAAC;IACpB,IAAI,CAACmoB,IAAI,CAAC,IAAI,CAACnoB,UAAU,CAAC;EAC5B;EAEA0kC,IAAIA,CAAA,EAAG;IACL,IAAI,CAAC1kC,UAAU,IAAI,CAAC;IACpBL,MAAM,CAACC,YAAY,CAAC,IAAI,CAAC0iC,cAAc,CAAC;IACxC,IAAI,CAACA,cAAc,GAAG,IAAI;IAC1B,IAAI,IAAI,CAAC+B,MAAM,EAAE,IAAI,CAACA,MAAM,CAACvB,KAAK,CAAC,CAAC;IACpC,IAAI,CAACuB,MAAM,GAAG,IAAI;IAClB,IAAI,CAACn9B,MAAM,GAAG,EAAE;IAChB,IAAI,CAAC25B,OAAO,GAAG,IAAI;IACnB,IAAI,CAAC2D,gBAAgB,GAAG,CAAC;EAC3B;EAEA,MAAMrc,IAAIA,CAACnoB,UAAU,EAAE;IACrB,IAAI;MACF,MAAM4B,QAAQ,GAAG,MAAMtG,sDAAK,CAAC48B,IAAI,CAACt8B,uDAAS,CAACu2B,YAAY,EAAE;QAAEjrB,MAAM,EAAE,IAAI,CAACA;MAAO,CAAC,EAAE;QACjFnF,eAAe,EAAE,KAAK;QACtBu1B,OAAO,EAAEz7B,kEAAQ,CAAC8jC,iBAAiB,CAAC/jC,uDAAS,CAACuzB,SAAS;MACzD,CAAC,CAAC;MACF,IAAInvB,UAAU,KAAK,IAAI,CAACA,UAAU,EAAE;MACpC,IAAI4B,QAAQ,CAACX,IAAI,EAAE1E,IAAI,KAAK,CAAC,EAAE,MAAM,IAAI6D,KAAK,CAACwB,QAAQ,CAACX,IAAI,EAAE9B,OAAO,IAAI,YAAY,CAAC;MACtF,MAAMwlC,MAAM,GAAG/iC,QAAQ,CAACX,IAAI,EAAE5B,MAAM,EAAEslC,MAAM,IAAI,EAAE;MAClD,IAAI,CAACA,MAAM,EAAE,MAAM,IAAIvkC,KAAK,CAAC,UAAU,CAAC;MACxC,MAAMwkC,SAAS,GAAGhpC,uDAAS,CAACy2B,MAAM,CAACtyB,QAAQ,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG;MAC5D,MAAM8kC,QAAQ,GAAG,GAAGjpC,uDAAS,CAACy2B,MAAM,GAAGuS,SAAS,UAAUpL,kBAAkB,CAACmL,MAAM,CAAC,EAAE;MACtF,MAAMG,SAAS,GAAGD,QAAQ,CAACpiC,UAAU,CAAC,OAAO,CAAC,IAAIoiC,QAAQ,CAACpiC,UAAU,CAAC,QAAQ,CAAC,GAC3EoiC,QAAQ,GACR,GAAGllC,MAAM,CAAC+C,QAAQ,CAACC,QAAQ,KAAK,QAAQ,GAAG,MAAM,GAAG,KAAK,KAAKhD,MAAM,CAAC+C,QAAQ,CAACy+B,IAAI,GAAG0D,QAAQ,CAACpiC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,GAAGoiC,QAAQ,EAAE;MACzI,MAAMR,MAAM,GAAG,IAAI3B,SAAS,CAACoC,SAAS,CAAC;MACvC,IAAI,CAACT,MAAM,GAAGA,MAAM;MACpBA,MAAM,CAAChB,MAAM,GAAG,MAAM;QACpB,IAAI,CAACmB,gBAAgB,GAAG,CAAC;MAC3B,CAAC;MACDH,MAAM,CAACd,SAAS,GAAG9xB,KAAK,IAAI;QAC1B,IAAIzR,UAAU,KAAK,IAAI,CAACA,UAAU,EAAE;QACpC,IAAIe,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI;UAAEA,OAAO,GAAG+X,IAAI,CAACC,KAAK,CAACtH,KAAK,CAACxQ,IAAI,IAAI,IAAI,CAAC;QAAE,CAAC,CAAC,OAAOxC,KAAK,EAAE;UAAEsC,OAAO,GAAG,CAAC,CAAC;QAAE;QAChF,IAAIA,OAAO,CAACjC,IAAI,KAAK,sBAAsB,EAAE;QAC7C,IAAI,CAAC+hC,OAAO,GAAG9/B,OAAO,CAAC;MACzB,CAAC;MACDsjC,MAAM,CAAClX,OAAO,GAAG,MAAM;QACrB,IAAIntB,UAAU,KAAK,IAAI,CAACA,UAAU,EAAE;QACpCqkC,MAAM,CAACvB,KAAK,CAAC,CAAC;QACd,IAAI,IAAI,CAACuB,MAAM,KAAKA,MAAM,EAAE,IAAI,CAACA,MAAM,GAAG,IAAI;QAC9C,IAAI,CAACjB,iBAAiB,CAACpjC,UAAU,CAAC;MACpC,CAAC;MACDqkC,MAAM,CAACZ,OAAO,GAAG,MAAM;QACrB,IAAIzjC,UAAU,KAAK,IAAI,CAACA,UAAU,IAAI,IAAI,CAACqkC,MAAM,KAAKA,MAAM,EAAE;QAC9D,IAAI,CAACA,MAAM,GAAG,IAAI;QAClB,IAAI,CAACjB,iBAAiB,CAACpjC,UAAU,CAAC;MACpC,CAAC;IACH,CAAC,CAAC,OAAOvB,KAAK,EAAE;MACd,IAAIuB,UAAU,KAAK,IAAI,CAACA,UAAU,EAAE,IAAI,CAACojC,iBAAiB,CAACpjC,UAAU,CAAC;IACxE;EACF;EAEAojC,iBAAiBA,CAACpjC,UAAU,EAAE;IAC5BL,MAAM,CAACC,YAAY,CAAC,IAAI,CAAC0iC,cAAc,CAAC;IACxC,MAAM9gC,KAAK,GAAGjB,IAAI,CAACE,GAAG,CAAC,KAAK,EAAE,IAAI,GAAI,CAAC,IAAIF,IAAI,CAACE,GAAG,CAAC,IAAI,CAAC+jC,gBAAgB,EAAE,CAAC,CAAE,CAAC;IAC/E,IAAI,CAACA,gBAAgB,IAAI,CAAC;IAC1B,IAAI,CAAClC,cAAc,GAAG3iC,MAAM,CAACiB,UAAU,CAAC,MAAM,IAAI,CAACunB,IAAI,CAACnoB,UAAU,CAAC,EAAEwB,KAAK,CAAC;EAC7E;AACF;AAEO,MAAMujC,qBAAqB,GAAG,IAAIR,0BAA0B,CAAC,CAAC,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzFjC;AACW;AACe;AACL;AACN;AAEnD,MAAMU,gBAAgB,GAAG,KAAK;AAE9B,SAASC,iBAAiBA,CAAC/pC,QAAQ,EAAE;EACnC,MAAMgqC,MAAM,GAAG,IAAIriB,GAAG,CAAC,CAAC;EACxB3nB,QAAQ,CAACmW,OAAO,CAAC3K,OAAO,IAAI;IAC1B,MAAMC,GAAG,GAAG7I,MAAM,CAAC4I,OAAO,CAACC,GAAG,IAAID,OAAO,CAACL,EAAE,IAAI,EAAE,CAAC,CAACpE,IAAI,CAAC,CAAC;IAC1D,IAAI,CAAC0E,GAAG,EAAE;MACR;IACF;IACA,MAAM6tB,UAAU,GAAG;MACjB,GAAG9tB,OAAO;MACVL,EAAE,EAAEvI,MAAM,CAAC4I,OAAO,CAACL,EAAE,IAAIM,GAAG,CAAC;MAC7BA;IACF,CAAC;IACDu+B,MAAM,CAAC/hC,GAAG,CAACwD,GAAG,EAAE;MACd,IAAIu+B,MAAM,CAACtjC,GAAG,CAAC+E,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;MAC1B,GAAG6tB;IACL,CAAC,CAAC;EACJ,CAAC,CAAC;EACF,OAAOjnB,KAAK,CAACC,IAAI,CAAC03B,MAAM,CAACrgB,MAAM,CAAC,CAAC,CAAC,CAAC8X,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKD,CAAC,CAACv5B,KAAK,CAACu8B,aAAa,CAAC/C,CAAC,CAACx5B,KAAK,EAAE,OAAO,CAAC,CAAC;AAC5F;AAEO,MAAMtI,eAAe,GAAGgqC,4DAAW,CAAC,UAAU,EAAE;EACrDvnB,KAAK,EAAEA,CAAA,MAAO;IACZtiB,QAAQ,EAAE,EAAE;IACZwqB,QAAQ,EAAE,EAAE;IACZyf,OAAO,EAAE,KAAK;IACdC,WAAW,EAAE,KAAK;IAClBC,aAAa,EAAE,CAAC;IAChBjS,cAAc,EAAE,IAAI;IACpBkS,eAAe,EAAE,EAAE;IACnBC,QAAQ,EAAE,CAAC;IACX56B,WAAW,EAAE,EAAE;IACfiW,UAAU,EAAE;EACd,CAAC,CAAC;EACF4kB,OAAO,EAAE;IACP5nB,aAAaA,CAACJ,KAAK,EAAE;MACnB,OAAOA,KAAK,CAACtiB,QAAQ,CAACuL,IAAI,CAAC0L,IAAI,IAAIA,IAAI,CAAC9L,EAAE,KAAKmX,KAAK,CAACkI,QAAQ,CAAC,IAAIlI,KAAK,CAACtiB,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI;IAC7F;EACF,CAAC;EACDuqC,OAAO,EAAE;IACPC,YAAYA,CAAA,EAAG;MACb,IAAI,IAAI,CAACN,WAAW,EAAE;QACpB;MACF;MACA,IAAI,CAACA,WAAW,GAAG,IAAI;MACvBxpC,kEAAQ,CAAC8kC,EAAE,CAAC,iBAAiB,EAAExlC,QAAQ,IAAI;QACzC,IAAI,CAACA,QAAQ,CAACuC,MAAM,IAAI,IAAI,CAACvC,QAAQ,CAACuC,MAAM,EAAE;UAC5C;QACF;QACA,IAAI,CAACvC,QAAQ,GAAG+pC,iBAAiB,CAAC/pC,QAAQ,CAAC;QAC3C,IAAI,CAAC,IAAI,CAACA,QAAQ,CAACuL,IAAI,CAAC0L,IAAI,IAAIA,IAAI,CAAC9L,EAAE,KAAK,IAAI,CAACqf,QAAQ,CAAC,EAAE;UAC1D,IAAI,CAACA,QAAQ,GAAG,IAAI,CAACxqB,QAAQ,CAAC,CAAC,CAAC,EAAEmL,EAAE,IAAI,EAAE;QAC5C;MACF,CAAC,CAAC;IACJ,CAAC;IACD,MAAMjL,eAAeA,CAACijC,OAAO,GAAG,CAAC,CAAC,EAAE;MAClC,IAAI,CAACqH,YAAY,CAAC,CAAC;MACnB,MAAMtrC,OAAO,GAAGD,0EAAe,CAAC,CAAC;MACjC,MAAMwrC,aAAa,GAAGvrC,OAAO,CAAC6M,MAAM;MACpC,MAAMpH,KAAK,GAAGwI,OAAO,CAACg2B,OAAO,CAACx+B,KAAK,CAAC;MACpC,IAAI,CAAC8lC,aAAa,EAAE;QAClB,IAAI,CAACpX,aAAa,CAAC,CAAC;QACpB,OAAO,EAAE;MACX;MACA,IAAI,CAAC1uB,KAAK,IACL,IAAI,CAAC3E,QAAQ,CAACuC,MAAM,IACpB,IAAI,CAAC6nC,eAAe,KAAKK,aAAa,IACtC15B,IAAI,CAAC8B,GAAG,CAAC,CAAC,GAAG,IAAI,CAACw3B,QAAQ,GAAGP,gBAAgB,EAChD;QACA,OAAO,IAAI,CAAC9pC,QAAQ;MACtB;MACA,IAAI,IAAI,CAACk4B,cAAc,IAAI,CAACvzB,KAAK,EAAE;QACjC,OAAO,IAAI,CAACuzB,cAAc;MAC5B;MACA,MAAMwS,MAAM,GAAG,IAAI,CAACP,aAAa,GAAG,CAAC;MACrC,IAAI,CAACA,aAAa,GAAGO,MAAM;MAC3B,IAAI,CAACT,OAAO,GAAG,IAAI;MAEnB,IAAI,CAAC/R,cAAc,GAAG,CAAC,YAAY;QACjC,IAAI,CAACl4B,QAAQ,GAAG+pC,iBAAiB,CAACrpC,kEAAQ,CAAC0kC,kBAAkB,CAAC,CAAC,CAAC;QAChE,IAAI,CAAC,IAAI,CAACplC,QAAQ,CAACuL,IAAI,CAAC0L,IAAI,IAAIA,IAAI,CAAC9L,EAAE,KAAK,IAAI,CAACqf,QAAQ,CAAC,EAAE;UAC1D,IAAI,CAACA,QAAQ,GAAG,IAAI,CAACxqB,QAAQ,CAAC,CAAC,CAAC,EAAEmL,EAAE,IAAI,EAAE;QAC5C;QACA,IAAI,CAAC,IAAI,CAACnL,QAAQ,CAACuC,MAAM,IAAIoC,KAAK,EAAE;UAClC,MAAMgmC,cAAc,GAAG,MAAMjqC,kEAAQ,CAACk+B,oBAAoB,CAAC6L,aAAa,CAAC;UACzE,IAAIC,MAAM,KAAK,IAAI,CAACP,aAAa,IAAIlrC,0EAAe,CAAC,CAAC,CAAC8M,MAAM,KAAK0+B,aAAa,EAAE;YAC/E,OAAO,IAAI,CAACzqC,QAAQ;UACtB;UACA,IAAI,CAACA,QAAQ,GAAG+pC,iBAAiB,CAACY,cAAc,CAAC;UACjD,IAAI,CAACP,eAAe,GAAGK,aAAa;UACpC,IAAI,CAACJ,QAAQ,GAAGt5B,IAAI,CAAC8B,GAAG,CAAC,CAAC;UAC1B,IAAI,CAAC,IAAI,CAAC7S,QAAQ,CAACuL,IAAI,CAAC0L,IAAI,IAAIA,IAAI,CAAC9L,EAAE,KAAK,IAAI,CAACqf,QAAQ,CAAC,EAAE;YAC1D,IAAI,CAACA,QAAQ,GAAG,IAAI,CAACxqB,QAAQ,CAAC,CAAC,CAAC,EAAEmL,EAAE,IAAI,EAAE;UAC5C;QACF;QACA3G,MAAM,CAACiB,UAAU,CAAC,MAAM;UACtB,IAAIilC,MAAM,KAAK,IAAI,CAACP,aAAa,IAAIlrC,0EAAe,CAAC,CAAC,CAAC8M,MAAM,KAAK0+B,aAAa,EAAE;YAC/E;UACF;UACA,MAAMG,MAAM,GAAGlqC,kEAAQ,CAAC6jC,cAAc,CAAC,KAAK,CAAC;UAC7C,IAAIqG,MAAM,CAACroC,MAAM,IAAI,CAAC,IAAI,CAACvC,QAAQ,CAACuC,MAAM,EAAE;YAC1C,IAAI,CAACvC,QAAQ,GAAG+pC,iBAAiB,CAACa,MAAM,CAAC;YACzC,IAAI,CAACR,eAAe,GAAGK,aAAa;YACpC,IAAI,CAACJ,QAAQ,GAAGt5B,IAAI,CAAC8B,GAAG,CAAC,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC7S,QAAQ,CAACuL,IAAI,CAAC0L,IAAI,IAAIA,IAAI,CAAC9L,EAAE,KAAK,IAAI,CAACqf,QAAQ,CAAC,EAAE;cAC1D,IAAI,CAACA,QAAQ,GAAG,IAAI,CAACxqB,QAAQ,CAAC,CAAC,CAAC,EAAEmL,EAAE,IAAI,EAAE;YAC5C;UACF;QACF,CAAC,EAAE,IAAI,CAAC;QACR,OAAO,IAAI,CAACnL,QAAQ;MACtB,CAAC,EAAE,CAAC;MAEJ,IAAI;QACF,OAAO,MAAM,IAAI,CAACk4B,cAAc;MAClC,CAAC,SAAS;QACR,IAAIwS,MAAM,KAAK,IAAI,CAACP,aAAa,EAAE;UACjC,IAAI,CAACF,OAAO,GAAG,KAAK;UACpB,IAAI,CAAC/R,cAAc,GAAG,IAAI;QAC5B;MACF;IACF,CAAC;IACD,MAAMpZ,UAAUA,CAACqG,OAAO,EAAE;MACxB,MAAMjmB,OAAO,GAAGD,0EAAe,CAAC,CAAC;MACjC,MAAMqD,KAAK,GAAGM,MAAM,CAACuiB,OAAO,IAAI,EAAE,CAAC,CAACpe,IAAI,CAAC,CAAC;MAC1C,IAAI,CAAC0I,WAAW,GAAG,EAAE;MACrB,IAAI,CAACiW,UAAU,GAAG,EAAE;MACpB,IAAI,CAACxmB,OAAO,CAAC6M,MAAM,EAAE;QACnB,IAAI,CAAC0D,WAAW,GAAG,MAAM;QACzB,OAAO,KAAK;MACd;MACA,IAAI,CAACnN,KAAK,EAAE;QACV,IAAI,CAACmN,WAAW,GAAG,iBAAiB;QACpC,OAAO,KAAK;MACd;MAEA,IAAI,CAACw6B,OAAO,GAAG,IAAI;MACnB,IAAI;QACF,MAAMz+B,OAAO,GAAG,MAAM9K,kEAAQ,CAACoe,UAAU,CAAC5f,OAAO,CAAC6M,MAAM,EAAEzJ,KAAK,EAAE,OAAO,CAAC;QACzE,IAAIkJ,OAAO,EAAE;UACX,IAAI,CAACxL,QAAQ,GAAG+pC,iBAAiB,CAAC,CAAC,GAAG,IAAI,CAAC/pC,QAAQ,EAAEwL,OAAO,CAAC,CAAC;UAC9D,IAAI,CAACgf,QAAQ,GAAGhf,OAAO,CAACL,EAAE;QAC5B;QACA,IAAI,CAACua,UAAU,GAAG,QAAQ;QAC1B,MAAM,IAAI,CAACxlB,eAAe,CAAC;UAAEyE,KAAK,EAAE;QAAK,CAAC,CAAC;QAC3C,OAAO,IAAI;MACb,CAAC,CAAC,OAAOrB,KAAK,EAAE;QACd,IAAI,CAACmM,WAAW,GAAGnM,KAAK,CAACU,OAAO,IAAI,SAAS;QAC7C,OAAO,KAAK;MACd,CAAC,SAAS;QACR,IAAI,CAACimC,OAAO,GAAG,KAAK;MACtB;IACF,CAAC;IACD,MAAMz6B,kBAAkBA,CAAC0b,SAAS,EAAErf,KAAK,EAAE;MACzC,MAAM3M,OAAO,GAAGD,0EAAe,CAAC,CAAC;MACjC,MAAMimC,QAAQ,GAAGtiC,MAAM,CAACsoB,SAAS,IAAI,EAAE,CAAC,CAACnkB,IAAI,CAAC,CAAC;MAC/C,MAAM8jC,SAAS,GAAGjoC,MAAM,CAACiJ,KAAK,IAAI,EAAE,CAAC,CAAC9E,IAAI,CAAC,CAAC;MAC5C,IAAI,CAAC0I,WAAW,GAAG,EAAE;MACrB,IAAI,CAACiW,UAAU,GAAG,EAAE;MACpB,IAAI,CAACxmB,OAAO,CAAC6M,MAAM,EAAE;QACnB,IAAI,CAAC0D,WAAW,GAAG,MAAM;QACzB,OAAO,KAAK;MACd;MACA,IAAI,CAACy1B,QAAQ,EAAE;QACb,IAAI,CAACz1B,WAAW,GAAG,SAAS;QAC5B,OAAO,KAAK;MACd;MAEA,IAAI;QACF,MAAMq7B,UAAU,GAAG,MAAMpqC,kEAAQ,CAAC8O,kBAAkB,CAACtQ,OAAO,CAAC6M,MAAM,EAAEm5B,QAAQ,EAAE2F,SAAS,CAAC;QACzF,IAAI,CAAC7qC,QAAQ,GAAG+pC,iBAAiB,CAAC,IAAI,CAAC/pC,QAAQ,CAACyQ,GAAG,CAACwG,IAAI,IAAI;UAC1D,IAAIA,IAAI,CAACxL,GAAG,KAAKy5B,QAAQ,IAAIjuB,IAAI,CAAC9L,EAAE,KAAK+5B,QAAQ,EAAE;YACjD,OAAOjuB,IAAI;UACb;UACA,MAAMrL,OAAO,GAAG;YACd,IAAIqL,IAAI,CAACrL,OAAO,IAAI,CAAC,CAAC,CAAC;YACvBwe,WAAW,EAAE0gB;UACf,CAAC;UACD,MAAMzgB,SAAS,GAAG;YAChB,IAAIpT,IAAI,CAACoT,SAAS,IAAI,CAAC,CAAC,CAAC;YACzBxe,KAAK,EAAEi/B;UACT,CAAC;UACD,MAAM3iC,KAAK,GAAG2iC,UAAU,IAAIl/B,OAAO,CAACzF,WAAW,IAAIyF,OAAO,CAAC9E,IAAI,IAAImQ,IAAI,CAACxL,GAAG;UAC3E,OAAO;YACL,GAAGwL,IAAI;YACP9O,KAAK;YACL+D,UAAU,EAAE/D,KAAK,CAACtF,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC;YAC3C+I,KAAK,EAAEi/B,UAAU;YACjBzgB,SAAS;YACTze;UACF,CAAC;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAACy+B,QAAQ,GAAGt5B,IAAI,CAAC8B,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC6S,UAAU,GAAG,QAAQ;QAC1B,OAAO,IAAI;MACb,CAAC,CAAC,OAAOpiB,KAAK,EAAE;QACd,IAAI,CAACmM,WAAW,GAAGnM,KAAK,CAACU,OAAO,IAAI,SAAS;QAC7C,OAAO,KAAK;MACd;IACF,CAAC;IACDqvB,aAAaA,CAAA,EAAG;MACd,IAAI,CAAC8W,aAAa,IAAI,CAAC;MACvB,IAAI,CAACnqC,QAAQ,GAAG,EAAE;MAClB,IAAI,CAACwqB,QAAQ,GAAG,EAAE;MAClB,IAAI,CAACyf,OAAO,GAAG,KAAK;MACpB,IAAI,CAAC/R,cAAc,GAAG,IAAI;MAC1B,IAAI,CAACkS,eAAe,GAAG,EAAE;MACzB,IAAI,CAACC,QAAQ,GAAG,CAAC;MACjB,IAAI,CAAC56B,WAAW,GAAG,EAAE;MACrB,IAAI,CAACiW,UAAU,GAAG,EAAE;IACtB,CAAC;IACDqlB,gBAAgBA,CAAC5/B,EAAE,EAAE;MACnB,IAAI,CAACqf,QAAQ,GAAGrf,EAAE;IACpB,CAAC;IACDuf,QAAQA,CAAClf,OAAO,EAAE;MAChB,IAAI,CAACA,OAAO,EAAE;QACZ;MACF;MACA,MAAM1L,aAAa,GAAGH,oFAAoB,CAAC,CAAC;MAC5C,MAAMI,UAAU,GAAGH,+EAAkB,CAAC,CAAC;MACvC,MAAM+L,YAAY,GAAGjL,kEAAQ,CAAC2kC,wBAAwB,CAAC75B,OAAO,CAACC,GAAG,EAAED,OAAO,CAAC;MAC5E1L,aAAa,CAAC8P,kBAAkB,CAACjE,YAAY,CAAC;MAC9C7L,aAAa,CAACklB,qBAAqB,CAACrZ,YAAY,CAACR,EAAE,CAAC;MACpDpL,UAAU,CAACglB,YAAY,CAAC,CAAC;IAC3B;EACF;AACF,CAAC,CAAC,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxOkC;AACW;AACV;AACc;AACsB;AACjB;AAExD,MAAMimB,8BAA8B,GAAG,mCAAmC;AAC1E,MAAMC,2BAA2B,GAAG,iCAAiC;AACrE,MAAMC,yBAAyB,GAAG,+BAA+B;AAEjE,SAAS3L,gBAAgBA,CAACC,OAAO,EAAE;EACjC,MAAMtgC,OAAO,GAAGD,0EAAe,CAAC,CAAC;EACjC,MAAMwgC,KAAK,GAAG,GAAGh/B,wDAAS,CAACuzB,SAAS,IAAI,EAAE,IAAI90B,OAAO,CAAC6M,MAAM,IAAI,WAAW,EAAE;EAC7E,OAAO,GAAGyzB,OAAO,IAAInB,kBAAkB,CAACoB,KAAK,CAAC,EAAE;AAClD;AAEA,SAAS0L,oBAAoBA,CAAA,EAAG;EAC9B,IAAI;IACF,OAAOxtB,IAAI,CAACC,KAAK,CAACya,YAAY,CAACC,OAAO,CAACiH,gBAAgB,CAAC0L,2BAA2B,CAAC,CAAC,IAAI,IAAI,CAAC;EAChG,CAAC,CAAC,OAAO3nC,KAAK,EAAE;IACd,OAAO,EAAE;EACX;AACF;AAEA,SAAS8nC,qBAAqBA,CAACxxB,QAAQ,EAAE;EACvCye,YAAY,CAACI,OAAO,CAAC8G,gBAAgB,CAAC0L,2BAA2B,CAAC,EAAEttB,IAAI,CAAC+a,SAAS,CAAC9e,QAAQ,CAAC,CAAC;AAC/F;AAEA,SAASyxB,sBAAsBA,CAAA,EAAG;EAChC,IAAI;IACF,OAAO1tB,IAAI,CAACC,KAAK,CAACya,YAAY,CAACC,OAAO,CAACiH,gBAAgB,CAACyL,8BAA8B,CAAC,CAAC,IAAI,IAAI,CAAC;EACnG,CAAC,CAAC,OAAO1nC,KAAK,EAAE;IACd,OAAO,EAAE;EACX;AACF;AAEA,SAASgoC,uBAAuBA,CAACxrC,aAAa,EAAE;EAC9Cu4B,YAAY,CAACI,OAAO,CAAC8G,gBAAgB,CAACyL,8BAA8B,CAAC,EAAErtB,IAAI,CAAC+a,SAAS,CAAC54B,aAAa,CAAC,CAAC;AACvG;AAEA,SAASyrC,kBAAkBA,CAAA,EAAG;EAC5B,IAAI;IACF,OAAO5tB,IAAI,CAACC,KAAK,CAACya,YAAY,CAACC,OAAO,CAACiH,gBAAgB,CAAC2L,yBAAyB,CAAC,CAAC,IAAI,IAAI,CAAC;EAC9F,CAAC,CAAC,OAAO5nC,KAAK,EAAE;IACd,OAAO,CAAC,CAAC;EACX;AACF;AAEA,SAASkoC,mBAAmBA,CAAC5xB,QAAQ,EAAE;EACrCye,YAAY,CAACI,OAAO,CAAC8G,gBAAgB,CAAC2L,yBAAyB,CAAC,EAAEvtB,IAAI,CAAC+a,SAAS,CAAC9e,QAAQ,CAAC,CAAC;AAC7F;AAEA,SAAS6xB,iBAAiBA,CAAC3rC,aAAa,EAAE;EACxC,OAAO,CAAC,GAAGA,aAAa,CAAC,CAAC2hC,IAAI,CAAC,CAAChhB,IAAI,EAAEirB,KAAK,KAAK;IAC9C,MAAMC,UAAU,GAAGpmC,MAAM,CAACkb,IAAI,CAACgI,QAAQ,IAAIhI,IAAI,CAACG,GAAG,IAAI,CAAC,CAAC;IACzD,MAAMgrB,WAAW,GAAGrmC,MAAM,CAACmmC,KAAK,CAACjjB,QAAQ,IAAIijB,KAAK,CAAC9qB,GAAG,IAAI,CAAC,CAAC;IAC5D,IAAIzT,OAAO,CAACw+B,UAAU,CAAC,KAAKx+B,OAAO,CAACy+B,WAAW,CAAC,EAAE;MAChD,OAAOA,WAAW,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B;IACA,IAAID,UAAU,IAAIC,WAAW,IAAID,UAAU,KAAKC,WAAW,EAAE;MAC3D,OAAOA,WAAW,GAAGD,UAAU;IACjC;IACA,OAAOpmC,MAAM,CAACmmC,KAAK,CAAC94B,SAAS,IAAI,CAAC,CAAC,GAAGrN,MAAM,CAACkb,IAAI,CAAC7N,SAAS,IAAI,CAAC,CAAC;EACnE,CAAC,CAAC;AACJ;AAEA,SAAS8sB,QAAQA,CAAA,EAAG;EAClB,IAAIl7B,MAAM,CAACu2B,MAAM,IAAIv2B,MAAM,CAACu2B,MAAM,CAAC4E,UAAU,EAAE;IAC7C,OAAOn7B,MAAM,CAACu2B,MAAM,CAAC4E,UAAU,CAAC,CAAC,CAACC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC;EACvD;EACA,OAAO,GAAG7uB,IAAI,CAAC8B,GAAG,CAAC,CAAC,GAAGzN,IAAI,CAACy6B,MAAM,CAAC,CAAC,CAACj4B,QAAQ,CAAC,EAAE,CAAC,CAAC/E,KAAK,CAAC,CAAC,CAAC,EAAE;AAC9D;AAEA,SAASuY,UAAUA,CAACpX,OAAO,EAAE;EAC3B,OAAOA,OAAO,CAACmH,EAAE,IAAInH,OAAO,CAACyX,UAAU;AACzC;AAEA,SAASowB,gBAAgBA,CAAC7nC,OAAO,EAAE;EACjC,OAAOpB,MAAM,CAACoB,OAAO,EAAEyX,UAAU,IAAIzX,OAAO,EAAEmH,EAAE,IAAI,EAAE,CAAC;AACzD;AAEA,SAAS2gC,wBAAwBA,CAAC9nC,OAAO,EAAE;EACzC,OAAOuB,MAAM,CAACvB,OAAO,EAAE8/B,iBAAiB,IAAI9/B,OAAO,EAAE6/B,QAAQ,IAAI7/B,OAAO,EAAE49B,gBAAgB,IAAI59B,OAAO,EAAEgK,SAAS,IAAI,CAAC,CAAC;AACxH;AAEA,SAASiM,iBAAiBA,CAACjW,OAAO,EAAE;EAClC,OAAOmJ,OAAO,CAACnJ,OAAO,EAAE0X,QAAQ,CAAC,IAAI1X,OAAO,EAAE+B,MAAM,KAAK,UAAU;AACrE;AAEA,SAASgmC,eAAeA,CAAC/nC,OAAO,EAAE;EAChC,MAAMkF,UAAU,GAAGlF,OAAO,EAAEkF,UAAU;EACtC,IAAI,CAACA,UAAU,EAAE;IACf,OAAO,EAAE;EACX;EACA,IAAIA,UAAU,CAACvF,IAAI,KAAK,OAAO,EAAE;IAC/B,OAAO,MAAM;EACf;EACA,OAAO,QAAQuF,UAAU,CAACpC,IAAI,IAAI,IAAI,EAAE;AAC1C;AAEA,SAASklC,kBAAkBA,CAAChoC,OAAO,EAAE;EACnC,IAAIiW,iBAAiB,CAACjW,OAAO,CAAC,EAAE;IAC9B,OAAO,IAAIA,OAAO,EAAE0f,YAAY,IAAI,KAAK,GAAG;EAC9C;EACA,MAAMta,IAAI,GAAGxG,MAAM,CAACoB,OAAO,EAAEoF,IAAI,IAAI,EAAE,CAAC,CAACgC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAACrE,IAAI,CAAC,CAAC;EACpE,OAAOqC,IAAI,IAAI2iC,eAAe,CAAC/nC,OAAO,CAAC;AACzC;AAEA,SAASioC,WAAWA,CAACjoC,OAAO,EAAE;EAC5B,MAAMoF,IAAI,GAAG4iC,kBAAkB,CAAChoC,OAAO,CAAC;EACxC,OAAOoF,IAAI,CAAC7G,MAAM,GAAG,EAAE,GAAG,GAAG6G,IAAI,CAACvG,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,GAAGuG,IAAI;AAC5D;AAEA,eAAegb,cAAcA,CAAChb,IAAI,EAAE;EAClC,IAAIkb,SAAS,CAACC,SAAS,EAAEC,SAAS,EAAE;IAClC,MAAMF,SAAS,CAACC,SAAS,CAACC,SAAS,CAACpb,IAAI,CAAC;IACzC;EACF;EACA,MAAMyL,OAAO,GAAG3M,QAAQ,CAACI,aAAa,CAAC,UAAU,CAAC;EAClDuM,OAAO,CAACvS,KAAK,GAAG8G,IAAI;EACpByL,OAAO,CAACtM,YAAY,CAAC,UAAU,EAAE,UAAU,CAAC;EAC5CsM,OAAO,CAAC4P,KAAK,CAACC,QAAQ,GAAG,OAAO;EAChC7P,OAAO,CAAC4P,KAAK,CAAChE,IAAI,GAAG,SAAS;EAC9BvY,QAAQ,CAAC2Z,IAAI,CAACpZ,WAAW,CAACoM,OAAO,CAAC;EAClCA,OAAO,CAAC8P,MAAM,CAAC,CAAC;EAChBzc,QAAQ,CAAC0c,WAAW,CAAC,MAAM,CAAC;EAC5B1c,QAAQ,CAAC2Z,IAAI,CAACgD,WAAW,CAAChQ,OAAO,CAAC;AACpC;AAEA,SAASq3B,aAAaA,CAACzrB,IAAI,EAAEirB,KAAK,EAAE;EAClC,IAAIjrB,IAAI,CAAChF,UAAU,IAAIiwB,KAAK,CAACjwB,UAAU,IAAIgF,IAAI,CAAChF,UAAU,KAAKiwB,KAAK,CAACjwB,UAAU,EAAE;IAC/E,OAAO,IAAI;EACb;EACA,IAAIgF,IAAI,CAACtV,EAAE,IAAIugC,KAAK,CAACvgC,EAAE,IAAIsV,IAAI,CAACtV,EAAE,KAAKugC,KAAK,CAACvgC,EAAE,EAAE;IAC/C,OAAO,IAAI;EACb;EACA,OAAOsV,IAAI,CAACzG,SAAS,KAAK0xB,KAAK,CAAC1xB,SAAS,IACpCyG,IAAI,CAACrX,IAAI,KAAKsiC,KAAK,CAACtiC,IAAI,IACxB,CAACqX,IAAI,CAAC9c,IAAI,IAAI,MAAM,OAAO+nC,KAAK,CAAC/nC,IAAI,IAAI,MAAM,CAAC,IAChDyB,IAAI,CAAC0qB,GAAG,CAACvqB,MAAM,CAACkb,IAAI,CAACmhB,gBAAgB,IAAInhB,IAAI,CAACzS,SAAS,IAAI,CAAC,CAAC,GAAGzI,MAAM,CAACmmC,KAAK,CAAC9J,gBAAgB,IAAI8J,KAAK,CAAC19B,SAAS,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK;AACtI;AAEA,SAASm+B,eAAeA,CAACvyB,QAAQ,EAAE5V,OAAO,EAAE;EAC1C,OAAO4V,QAAQ,CAACqQ,IAAI,CAAChT,IAAI,IAAI;IAC3B,IAAIA,IAAI,CAAC9L,EAAE,IAAInH,OAAO,CAACmH,EAAE,IAAI8L,IAAI,CAAC9L,EAAE,KAAKnH,OAAO,CAACmH,EAAE,EAAE;MACnD,OAAO,IAAI;IACb;IACA,OAAO8L,IAAI,CAACwE,UAAU,IAAIzX,OAAO,CAACyX,UAAU,IAAIxE,IAAI,CAACwE,UAAU,KAAKzX,OAAO,CAACyX,UAAU;EACxF,CAAC,CAAC;AACJ;AAEA,SAAS6rB,uBAAuBA,CAAA,EAAG;EACjC,OAAO5mC,QAAQ,CAAC4mC,uBAAuB,GAAG5mC,QAAQ,CAAC4mC,uBAAuB,CAAC,CAAC,GAAG,IAAI;AACrF;AAEA,SAAS8E,cAAcA,CAACjJ,OAAO,GAAG,CAAC,CAAC,EAAE;EACpC,IAAI,OAAOj7B,QAAQ,KAAK,WAAW,EAAE;IACnC,OAAO,KAAK;EACd;EACA,IAAIA,QAAQ,CAACmkC,eAAe,KAAK,SAAS,EAAE;IAC1C,OAAO,KAAK;EACd;EACA,IAAIlJ,OAAO,CAACmJ,UAAU,EAAE;IACtB,OAAO,IAAI;EACb;EACA,OAAO,IAAI;AACb;AAEA,SAASC,0BAA0BA,CAACvoC,OAAO,EAAE;EAC3C,IAAI,CAACA,OAAO,IAAIA,OAAO,CAACkF,UAAU,IAAItG,MAAM,CAACoB,OAAO,CAACoF,IAAI,IAAI,EAAE,CAAC,CAACrC,IAAI,CAAC,CAAC,EAAE;IACvE,OAAO/C,OAAO;EAChB;EACA,MAAM0Y,WAAW,GAAGnX,MAAM,CAACvB,OAAO,CAAC0Y,WAAW,IAAI,CAAC,CAAC;EACpD,MAAM8vB,MAAM,GAAG;IACb,CAAC,EAAE,UAAU;IACb,CAAC,EAAE,UAAU;IACb,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,WAAW;IACf,EAAE,EAAE,mBAAmB;IACvB,GAAG,EAAE;EACP,CAAC;EACD,IAAI,CAACA,MAAM,CAAC9vB,WAAW,CAAC,EAAE;IACxB,OAAO1Y,OAAO;EAChB;EACA,OAAO;IACL,GAAGA,OAAO;IACVL,IAAI,EAAE,MAAM;IACZyF,IAAI,EAAEojC,MAAM,CAAC9vB,WAAW;EAC1B,CAAC;AACH;AAEA,SAAS+vB,oBAAoBA,CAACC,eAAe,EAAEC,cAAc,EAAE;EAC7D,MAAMC,MAAM,GAAG,CAAC,GAAGD,cAAc,CAAC,CAACl8B,GAAG,CAAC87B,0BAA0B,CAAC;EAClEG,eAAe,CAACv2B,OAAO,CAAC02B,cAAc,IAAI;IACxCA,cAAc,GAAGN,0BAA0B,CAACM,cAAc,CAAC;IAC3D,MAAMC,MAAM,GAAGF,MAAM,CAAC3iB,IAAI,CAACjmB,OAAO,IAAIkoC,aAAa,CAACloC,OAAO,EAAE6oC,cAAc,CAAC,CAAC;IAC7E,MAAME,eAAe,GAAGF,cAAc,CAAC9mC,MAAM,KAAK,SAAS,IACtD8mC,cAAc,CAAC9mC,MAAM,KAAK,QAAQ,IACjC8mC,cAAc,CAAC7yB,SAAS,KAAK,KAAK,IACjC6yB,cAAc,CAAC9mC,MAAM,KAAK,MAAM,IAChCgL,IAAI,CAAC8B,GAAG,CAAC,CAAC,GAAGtN,MAAM,CAACsnC,cAAc,CAAC7+B,SAAS,IAAI,CAAC,CAAC,GAAG,KAAM;IAClE,IAAI,CAAC8+B,MAAM,IAAIC,eAAe,EAAE;MAC9BH,MAAM,CAAClyB,IAAI,CAACmyB,cAAc,CAAC;IAC7B;EACF,CAAC,CAAC;EAEF,OAAOD,MAAM,CACVjgC,MAAM,CAAC,CAAC3I,OAAO,EAAEoS,KAAK,EAAEwD,QAAQ,KAAK;IACpC,MAAMsI,GAAG,GAAG9G,UAAU,CAACpX,OAAO,CAAC;IAC/B,OAAO4V,QAAQ,CAAC4D,SAAS,CAACvG,IAAI,IAAImE,UAAU,CAACnE,IAAI,CAAC,KAAKiL,GAAG,CAAC,KAAK9L,KAAK;EACvE,CAAC,CAAC,CACDqrB,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKp8B,MAAM,CAACm8B,CAAC,CAACE,gBAAgB,IAAIF,CAAC,CAAC1zB,SAAS,IAAI,CAAC,CAAC,GAAGzI,MAAM,CAACo8B,CAAC,CAACC,gBAAgB,IAAID,CAAC,CAAC3zB,SAAS,IAAI,CAAC,CAAC,CAAC;AACpH;AAEA,SAASg/B,sBAAsBA,CAACC,gBAAgB,EAAEC,YAAY,EAAE;EAC9D,MAAMC,aAAa,GAAG,IAAIxlB,GAAG,CAAC,CAAC;EAC/B,CAACslB,gBAAgB,IAAI,EAAE,EAAE92B,OAAO,CAACnS,OAAO,IAAI;IAC1C,MAAMke,GAAG,GAAG2pB,gBAAgB,CAAC7nC,OAAO,CAAC;IACrC,IAAIke,GAAG,EAAE;MACPirB,aAAa,CAACllC,GAAG,CAACia,GAAG,EAAEle,OAAO,CAAC;IACjC;EACF,CAAC,CAAC;EAEF,OAAO,CAACkpC,YAAY,IAAI,EAAE,EAAEvgC,MAAM,CAAC3I,OAAO,IAAI;IAC5C,IAAIA,OAAO,CAACgW,SAAS,KAAK,IAAI,EAAE;MAC9B,OAAO,KAAK;IACd;IACA,MAAM6pB,QAAQ,GAAGt+B,MAAM,CAACvB,OAAO,CAAC6/B,QAAQ,IAAI,CAAC,CAAC;IAC9C,IAAIA,QAAQ,IAAI,CAAC,EAAE;MACjB,OAAO,KAAK;IACd;IACA,MAAMuJ,QAAQ,GAAGD,aAAa,CAACzmC,GAAG,CAACmlC,gBAAgB,CAAC7nC,OAAO,CAAC,CAAC;IAC7D,OAAOopC,QAAQ,IAAIvJ,QAAQ,GAAGt+B,MAAM,CAAC6nC,QAAQ,CAACvJ,QAAQ,IAAI,CAAC,CAAC;EAC9D,CAAC,CAAC;AACJ;AAEA,IAAIwJ,wBAAwB,GAAG,IAAI;AAEnC,SAASC,qBAAqBA,CAAA,EAAG;EAC/B,IAAI,OAAO9oC,MAAM,KAAK,WAAW,EAAE;IACjC;EACF;EACA,IAAI;IACF,MAAM+oC,YAAY,GAAG/oC,MAAM,CAAC+oC,YAAY,IAAI/oC,MAAM,CAACgpC,kBAAkB;IACrE,IAAI,CAACD,YAAY,EAAE;MACjB;IACF;IACAF,wBAAwB,GAAGA,wBAAwB,IAAI,IAAIE,YAAY,CAAC,CAAC;IACzE,IAAIF,wBAAwB,CAAC/qB,KAAK,KAAK,WAAW,EAAE;MAClD+qB,wBAAwB,CAACI,MAAM,CAAC,CAAC,CAACr+B,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IACnD;IACA,MAAMs+B,UAAU,GAAGL,wBAAwB,CAACM,gBAAgB,CAAC,CAAC;IAC9D,MAAMC,IAAI,GAAGP,wBAAwB,CAACQ,UAAU,CAAC,CAAC;IAClD,MAAMC,OAAO,GAAGT,wBAAwB,CAACU,WAAW;IACpDL,UAAU,CAAC/pC,IAAI,GAAG,MAAM;IACxB+pC,UAAU,CAACM,SAAS,CAACC,cAAc,CAAC,GAAG,EAAEH,OAAO,CAAC;IACjDJ,UAAU,CAACM,SAAS,CAACC,cAAc,CAAC,GAAG,EAAEH,OAAO,GAAG,GAAG,CAAC;IACvDF,IAAI,CAACA,IAAI,CAACK,cAAc,CAAC,MAAM,EAAEH,OAAO,CAAC;IACzCF,IAAI,CAACA,IAAI,CAACM,4BAA4B,CAAC,IAAI,EAAEJ,OAAO,GAAG,IAAI,CAAC;IAC5DF,IAAI,CAACA,IAAI,CAACM,4BAA4B,CAAC,MAAM,EAAEJ,OAAO,GAAG,IAAI,CAAC;IAC9DJ,UAAU,CAAC/K,OAAO,CAACiL,IAAI,CAAC;IACxBA,IAAI,CAACjL,OAAO,CAAC0K,wBAAwB,CAACc,WAAW,CAAC;IAClDT,UAAU,CAAC54B,KAAK,CAACg5B,OAAO,CAAC;IACzBJ,UAAU,CAACnE,IAAI,CAACuE,OAAO,GAAG,IAAI,CAAC;EACjC,CAAC,CAAC,OAAOxqC,KAAK,EAAE;IACd;EAAA;AAEJ;AAEO,MAAM3D,oBAAoB,GAAGkqC,6DAAW,CAAC,eAAe,EAAE;EAC/DvnB,KAAK,EAAEA,CAAA,MAAO;IACZkI,QAAQ,EAAE,EAAE;IACZ1qB,aAAa,EAAE,EAAE;IACjBogC,sBAAsB,EAAE,CAAC,CAAC;IAC1BkO,6BAA6B,EAAE,CAAC,CAAC;IACjClE,WAAW,EAAE,KAAK;IAClBmE,aAAa,EAAE,KAAK;IACpBpE,OAAO,EAAE,KAAK;IACdqE,SAAS,EAAE,IAAI;IACfC,qBAAqB,EAAE,IAAI;IAC3BC,uBAAuB,EAAE,KAAK;IAC9BC,YAAY,EAAE,KAAK;IACnBC,gCAAgC,EAAE,EAAE;IACpCC,wBAAwB,EAAE,KAAK;IAC/BC,kBAAkB,EAAE,IAAI;IACxBC,gCAAgC,EAAE,CAAC,CAAC;IACpCC,aAAa,EAAE,IAAI;IACnBC,kBAAkB,EAAE,EAAE;IACtBC,cAAc,EAAE,IAAI;IACpBC,WAAW,EAAE,EAAE;IACfC,WAAW,EAAE,EAAE;IACfC,iBAAiB,EAAE,KAAK;IACxBC,oBAAoB,EAAE,KAAK;IAC3BC,kBAAkB,EAAE,EAAE;IACtBviC,aAAa,EAAE,IAAI;IACnB+O,kBAAkB,EAAE,EAAE;IACtByzB,qBAAqB,EAAE,IAAI;IAC3BhwB,aAAa,EAAE,KAAK;IACpBlD,kBAAkB,EAAE,EAAE;IACtBmzB,gBAAgB,EAAE,EAAE;IACpBC,4BAA4B,EAAE,CAAC,CAAC;IAChCC,iBAAiB,EAAE,EAAE;IACrBjoB,YAAY,EAAE,EAAE;IAChB/X,WAAW,EAAE,EAAE;IACfigC,iBAAiB,EAAE,IAAI;IACvBC,iBAAiB,EAAE;EACrB,CAAC,CAAC;EACFrF,OAAO,EAAE;IACPvhC,kBAAkBA,CAACuZ,KAAK,EAAE;MACxB,OAAOA,KAAK,CAACxiB,aAAa,CAACyL,IAAI,CAAC0L,IAAI,IAAIA,IAAI,CAAC9L,EAAE,KAAKmX,KAAK,CAACkI,QAAQ,CAAC,IAAIlI,KAAK,CAACxiB,aAAa,CAAC,CAAC,CAAC,IAAI,IAAI;IACvG,CAAC;IACD8vC,cAAcA,CAACttB,KAAK,EAAE;MACpB,OAAOA,KAAK,CAAC8rB,6BAA6B,CAAC9rB,KAAK,CAACkI,QAAQ,CAAC,IAAI,EAAE;IAClE,CAAC;IACDqlB,WAAWA,CAACvtB,KAAK,EAAE;MACjB,OAAOA,KAAK,CAACxiB,aAAa,CAACgwC,MAAM,CAAC,CAACC,GAAG,EAAE94B,IAAI,KAAK84B,GAAG,GAAGxqC,MAAM,CAAC0R,IAAI,CAAC1J,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;IACrF,CAAC;IACDK,yBAAyBA,CAAC0U,KAAK,EAAE;MAC/B,MAAM3W,YAAY,GAAG2W,KAAK,CAACxiB,aAAa,CAACyL,IAAI,CAAC0L,IAAI,IAAIA,IAAI,CAAC9L,EAAE,KAAKmX,KAAK,CAACkI,QAAQ,CAAC,IAAIlI,KAAK,CAACxiB,aAAa,CAAC,CAAC,CAAC,IAAI,IAAI;MACnH,IAAI,CAAC6L,YAAY,EAAE;QACjB,OAAO,KAAK;MACd;MACA,IAAIA,YAAY,CAAChI,IAAI,KAAK,SAAS,EAAE;QACnC,OAAO,IAAI;MACb;MACA,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAACiB,QAAQ,CAAC+G,YAAY,CAACY,IAAI,IAAIZ,YAAY,CAACT,GAAG,EAAEqB,IAAI,IAAI,EAAE,CAAC;IACvF,CAAC;IACD8P,kBAAkBA,CAACiG,KAAK,EAAE;MACxB,OAAOA,KAAK,CAACitB,gBAAgB,CAAC9+B,GAAG,CAACzM,OAAO,IAAIA,OAAO,CAACke,GAAG,CAAC;IAC3D,CAAC;IACDkB,cAAcA,CAACd,KAAK,EAAE;MACpB,OAAOA,KAAK,CAACitB,gBAAgB,CAAChkC,IAAI,CAACvH,OAAO,IAAIA,OAAO,CAACke,GAAG,KAAKI,KAAK,CAACmtB,iBAAiB,CAAC,IACjFntB,KAAK,CAACitB,gBAAgB,CAAC,CAAC,CAAC,IACzB,IAAI;IACX,CAAC;IACDtmC,mBAAmBA,CAACqZ,KAAK,EAAE;MACzB,MAAM0tB,MAAM,GAAG1tB,KAAK,CAACktB,4BAA4B,CAACltB,KAAK,CAACkI,QAAQ,CAAC,IAAI,IAAI;MACzE,IAAI,CAACwlB,MAAM,EAAE,OAAO,IAAI;MACxB,MAAMhsC,OAAO,GAAG,CAACse,KAAK,CAAC8rB,6BAA6B,CAAC9rB,KAAK,CAACkI,QAAQ,CAAC,IAAI,EAAE,EACvEjf,IAAI,CAAC0L,IAAI,IAAI40B,gBAAgB,CAAC50B,IAAI,CAAC,KAAK+4B,MAAM,CAAC9tB,GAAG,CAAC;MACtD,OAAOle,OAAO,GAAG;QAAE,GAAGgsC,MAAM;QAAE,GAAGhsC,OAAO;QAAEke,GAAG,EAAE8tB,MAAM,CAAC9tB;MAAI,CAAC,GAAG8tB,MAAM;IACtE,CAAC;IACDC,gBAAgBA,CAAC3tB,KAAK,EAAE;MACtB,MAAM0G,WAAW,GAAG,IAAI/W,GAAG,CAACqQ,KAAK,CAAClG,kBAAkB,CAAC;MACrD,OAAO,CAACkG,KAAK,CAAC8rB,6BAA6B,CAAC9rB,KAAK,CAACkI,QAAQ,CAAC,IAAI,EAAE,EAC9D7d,MAAM,CAAC3I,OAAO,IAAIglB,WAAW,CAAC9W,GAAG,CAAC25B,gBAAgB,CAAC7nC,OAAO,CAAC,CAAC,CAAC;IAClE;EACF,CAAC;EACDumC,OAAO,EAAE;IACP2F,iBAAiBA,CAAA,EAAG;MAClB,MAAMhxC,OAAO,GAAGD,0EAAe,CAAC,CAAC;MACjC,IAAI,CAACurC,YAAY,CAAC,CAAC;MACnB,IAAI,CAAC6D,aAAa,GAAG,KAAK;MAC1B,IAAI,CAACnvC,OAAO,CAAC6M,MAAM,EAAE;QACnB,IAAI,CAACokC,cAAc,CAAC,CAAC;QACrB;MACF;MACA,IAAI,CAACC,oBAAoB,CAAC,CAAC;MAC3B,IAAI,CAACC,gBAAgB,CAAC,CAAC;MACvBzG,4FAAqB,CAAC90B,KAAK,CAAC5V,OAAO,CAAC6M,MAAM,EAAEnG,OAAO,IAAI,IAAI,CAAC0qC,0BAA0B,CAAC1qC,OAAO,CAAC,CAAC;IAClG,CAAC;IACDwqC,oBAAoBA,CAAA,EAAG;MACrB,IAAI,CAACtwC,aAAa,GAAG,EAAE;MACvB,IAAI,CAACyvC,gBAAgB,GAAGpE,oBAAoB,CAAC,CAAC;MAC9C,IAAI,CAACqE,4BAA4B,GAAGjE,kBAAkB,CAAC,CAAC;MACxD,IAAI,CAACkE,iBAAiB,GAAG,IAAI,CAACF,gBAAgB,CAAC,CAAC,CAAC,EAAErtB,GAAG,IAAI,EAAE;MAC5D,IAAI,CAACsI,QAAQ,GAAG,EAAE;MAClB,IAAI,CAAC0V,sBAAsB,GAAG,CAAC,CAAC;MAChC,IAAI,CAACkO,6BAA6B,GAAG,CAAC,CAAC;MACvC,IAAI,CAACS,gCAAgC,GAAG,CAAC,CAAC;MAC1C,IAAI,CAACC,aAAa,GAAG,IAAI;MACzB,IAAI,CAACC,kBAAkB,GAAG,EAAE;MAC5B,IAAI,CAACC,cAAc,GAAG,IAAI;MAC1B,IAAI,CAACC,WAAW,GAAG,EAAE;MACrB,IAAI,CAACC,WAAW,GAAG,EAAE;MACrB,IAAI,CAACC,iBAAiB,GAAG,KAAK;MAC9B,IAAI,CAACC,oBAAoB,GAAG,KAAK;MACjC,IAAI,CAACC,kBAAkB,GAAG,EAAE;MAC5B,IAAI,CAACviC,aAAa,GAAG,IAAI;MACzB,IAAI,CAACwS,aAAa,GAAG,KAAK;MAC1B,IAAI,CAAClD,kBAAkB,GAAG,EAAE;IAC9B,CAAC;IACD+zB,cAAcA,CAAA,EAAG;MACf3rC,MAAM,CAACskC,aAAa,CAAC,IAAI,CAACwF,SAAS,CAAC;MACpC9pC,MAAM,CAACskC,aAAa,CAAC,IAAI,CAACyF,qBAAqB,CAAC;MAChD/pC,MAAM,CAACC,YAAY,CAAC,IAAI,CAACmqC,kBAAkB,CAAC;MAC5CpqC,MAAM,CAACC,YAAY,CAAC,IAAI,CAAC6qC,qBAAqB,CAAC;MAC/C9qC,MAAM,CAACC,YAAY,CAAC,IAAI,CAACirC,iBAAiB,CAAC;MAC3ClrC,MAAM,CAACC,YAAY,CAAC,IAAI,CAACkrC,iBAAiB,CAAC;MAC3C/F,4FAAqB,CAACL,IAAI,CAAC,CAAC;MAC5B,IAAI,CAAC+E,SAAS,GAAG,IAAI;MACrB,IAAI,CAACC,qBAAqB,GAAG,IAAI;MACjC,IAAI,CAACK,kBAAkB,GAAG,IAAI;MAC9B,IAAI,CAACU,qBAAqB,GAAG,IAAI;MACjC,IAAI,CAACI,iBAAiB,GAAG,IAAI;MAC7B,IAAI,CAACC,iBAAiB,GAAG,IAAI;MAC7B,IAAI,CAAClB,YAAY,GAAG,KAAK;MACzB,IAAI,CAACE,wBAAwB,GAAG,KAAK;MACrC,IAAI,CAACD,gCAAgC,GAAG,EAAE;MAC1C,IAAI,CAAClkB,QAAQ,GAAG,EAAE;MAClB,IAAI,CAAC1qB,aAAa,GAAG,EAAE;MACvB,IAAI,CAACogC,sBAAsB,GAAG,CAAC,CAAC;MAChC,IAAI,CAACkO,6BAA6B,GAAG,CAAC,CAAC;MACvC,IAAI,CAACS,gCAAgC,GAAG,CAAC,CAAC;MAC1C,IAAI,CAACC,aAAa,GAAG,IAAI;MACzB,IAAI,CAACC,kBAAkB,GAAG,EAAE;MAC5B,IAAI,CAACC,cAAc,GAAG,IAAI;MAC1B,IAAI,CAACC,WAAW,GAAG,EAAE;MACrB,IAAI,CAACC,WAAW,GAAG,EAAE;MACrB,IAAI,CAACC,iBAAiB,GAAG,KAAK;MAC9B,IAAI,CAACC,oBAAoB,GAAG,KAAK;MACjC,IAAI,CAACC,kBAAkB,GAAG,EAAE;MAC5B,IAAI,CAACviC,aAAa,GAAG,IAAI;MACzB,IAAI,CAAC+O,kBAAkB,GAAG,EAAE;MAC5B,IAAI,CAACyD,aAAa,GAAG,KAAK;MAC1B,IAAI,CAAClD,kBAAkB,GAAG,EAAE;MAC5B,IAAI,CAACmzB,gBAAgB,GAAG,EAAE;MAC1B,IAAI,CAACE,iBAAiB,GAAG,EAAE;MAC3B,IAAI,CAACjoB,YAAY,GAAG,EAAE;MACtB,IAAI,CAAC/X,WAAW,GAAG,EAAE;IACvB,CAAC;IACD+6B,YAAYA,CAAA,EAAG;MACb,IAAI,IAAI,CAACN,WAAW,EAAE;QACpB;MACF;MACA,IAAI,CAACA,WAAW,GAAG,IAAI;MACvBxpC,mEAAQ,CAAC8kC,EAAE,CAAC,aAAa,EAAExhC,OAAO,IAAI;QACpC,IAAI,CAACusC,aAAa,CAACvsC,OAAO,CAACwf,cAAc,EAAExf,OAAO,CAAC;MACrD,CAAC,CAAC;MACFtD,mEAAQ,CAAC8kC,EAAE,CAAC,iBAAiB,EAAExhC,OAAO,IAAI;QACxC,IAAI,CAACusC,aAAa,CAACvsC,OAAO,CAACwf,cAAc,EAAExf,OAAO,CAAC;QACnD,IAAIA,OAAO,CAACwf,cAAc,KAAK,IAAI,CAACgH,QAAQ,EAAE;UAC5C,IAAI,CAACgmB,0BAA0B,CAAC;YAAEzgC,gBAAgB,EAAE;UAAK,CAAC,EAAE,GAAG,CAAC;QAClE;MACF,CAAC,CAAC;MACFrP,mEAAQ,CAAC8kC,EAAE,CAAC,sBAAsB,EAAExhC,OAAO,IAAI;QAC7C,IAAI,CAACysC,cAAc,CAACzsC,OAAO,CAACwf,cAAc,EAAExf,OAAO,CAAC;MACtD,CAAC,CAAC;MACFtD,mEAAQ,CAAC8kC,EAAE,CAAC,sBAAsB,EAAEzC,mBAAmB,IAAI;QACzD,IAAI,CAACsL,aAAa,GAAG,KAAK;QAC1B,IAAI,CAACqC,wBAAwB,CAAC3N,mBAAmB,CAAC;MACpD,CAAC,CAAC;IACJ,CAAC;IACD/d,qBAAqBA,CAAC7Z,EAAE,EAAE;MACxB,IAAI,CAACqf,QAAQ,GAAGrf,EAAE;MAClB,MAAMQ,YAAY,GAAG,IAAI,CAAC7L,aAAa,CAACyL,IAAI,CAAC0L,IAAI,IAAIA,IAAI,CAAC9L,EAAE,KAAKA,EAAE,CAAC;MACpE,IAAIQ,YAAY,EAAE;QAChBA,YAAY,CAAC4B,MAAM,GAAG,CAAC;MACzB;MACA,IAAI,CAACojC,kBAAkB,CAAC;QAAE5gC,gBAAgB,EAAE,IAAI;QAAEu8B,UAAU,EAAE;MAAK,CAAC,CAAC;IACvE,CAAC;IACDsE,QAAQA,CAACxnC,IAAI,EAAE;MACb,MAAMuC,YAAY,GAAG,IAAI,CAAC5C,kBAAkB;MAC5C,IAAI,CAAC4C,YAAY,IAAI,CAACvC,IAAI,CAACrC,IAAI,CAAC,CAAC,EAAE;QACjC;MACF;MACA,IAAIzE,KAAK,GAAG8G,IAAI,CAACrC,IAAI,CAAC,CAAC;MACvB,IAAI,IAAI,CAAC+nC,aAAa,EAAE;QACtBxsC,KAAK,GAAG,MAAM2pC,WAAW,CAAC,IAAI,CAAC6C,aAAa,CAAC,KAAKxsC,KAAK,EAAE;QACzD,IAAI,CAACwsC,aAAa,GAAG,IAAI;MAC3B;MACA,MAAM9qC,OAAO,GAAG;QACdmH,EAAE,EAAEu0B,QAAQ,CAAC,CAAC;QACdlc,cAAc,EAAE7X,YAAY,CAACR,EAAE;QAC/BmH,IAAI,EAAE,IAAI;QACV0H,SAAS,EAAE,KAAK;QAChBrW,IAAI,EAAE,MAAM;QACZyF,IAAI,EAAE9G,KAAK;QACXyD,MAAM,EAAE,SAAS;QACjByV,cAAc,EAAE,SAAS;QACzBxN,SAAS,EAAE+C,IAAI,CAAC8B,GAAG,CAAC,CAAC;QACrB+uB,gBAAgB,EAAE7wB,IAAI,CAAC8B,GAAG,CAAC;MAC7B,CAAC;MACD,IAAI,CAACg+B,oBAAoB,CAACllC,YAAY,CAACR,EAAE,EAAEnH,OAAO,CAAC;MACnD,IAAI,CAACusC,aAAa,CAAC5kC,YAAY,CAACR,EAAE,EAAEnH,OAAO,CAAC;MAC5CtD,mEAAQ,CAACo+B,eAAe,CAACnzB,YAAY,EAAErJ,KAAK,EAAE0B,OAAO,CAAC;MACtD2H,YAAY,CAAC6Z,QAAQ,GAAGljB,KAAK;MAC7BqJ,YAAY,CAACiH,SAAS,GAAG7B,IAAI,CAAC8B,GAAG,CAAC,CAAC;MACnCy4B,uBAAuB,CAAC,IAAI,CAACxrC,aAAa,CAAC;MAC3C0E,MAAM,CAACC,YAAY,CAAC,IAAI,CAACmqC,kBAAkB,CAAC;MAC5C,IAAI,CAACA,kBAAkB,GAAGpqC,MAAM,CAACiB,UAAU,CAAC,MAAM,IAAI,CAACqK,kBAAkB,CAAC,CAAC,EAAE,GAAG,CAAC;IACnF,CAAC;IACDghC,cAAcA,CAAC;MAAEntC,IAAI;MAAE+R,IAAI;MAAEtM,IAAI,GAAG;IAAG,CAAC,EAAE;MACxC,MAAMuC,YAAY,GAAG,IAAI,CAAC5C,kBAAkB;MAC5C,IAAI,CAAC4C,YAAY,IAAI,CAAC+J,IAAI,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC9Q,QAAQ,CAACjB,IAAI,CAAC,EAAE;QAC/D;MACF;MACA,IAAIrB,KAAK,GAAG8G,IAAI,CAACrC,IAAI,CAAC,CAAC;MACvB,IAAI,IAAI,CAAC+nC,aAAa,EAAE;QACtBxsC,KAAK,GAAG,MAAM2pC,WAAW,CAAC,IAAI,CAAC6C,aAAa,CAAC,KAAKxsC,KAAK,EAAE,CAACyE,IAAI,CAAC,CAAC;QAChE,IAAI,CAAC+nC,aAAa,GAAG,IAAI;MAC3B;MACA,MAAMj8B,GAAG,GAAG9B,IAAI,CAAC8B,GAAG,CAAC,CAAC;MACtB,MAAM7O,OAAO,GAAG;QACdmH,EAAE,EAAEu0B,QAAQ,CAAC,CAAC;QACdlc,cAAc,EAAE7X,YAAY,CAACR,EAAE;QAC/BmH,IAAI,EAAE,IAAI;QACV6L,UAAU,EAAExS,YAAY,CAACY,IAAI,IAAIZ,YAAY,CAACT,GAAG,EAAEqB,IAAI,IAAI,EAAE;QAC7DyN,SAAS,EAAE,KAAK;QAChBrW,IAAI;QACJyF,IAAI,EAAE9G,KAAK;QACX4G,UAAU,EAAE;UACVvF,IAAI;UACJmD,IAAI,EAAE4O,IAAI,CAAC5O,IAAI,KAAKnD,IAAI,KAAK,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC;UACnDygC,IAAI,EAAE1uB,IAAI,CAAC/R,IAAI,IAAI,EAAE;UACrBsS,IAAI,EAAEP,IAAI,CAACO,IAAI,IAAI,CAAC;UACpBpO,GAAG,EAAElE,IAAI,KAAK,OAAO,GAAGgE,GAAG,CAACkqB,eAAe,CAACnc,IAAI,CAAC,GAAG;QACtD,CAAC;QACD3P,MAAM,EAAE,SAAS;QACjByV,cAAc,EAAE,SAAS;QACzBxN,SAAS,EAAE6E,GAAG;QACd+uB,gBAAgB,EAAE/uB;MACpB,CAAC;MACD,IAAI,CAACg+B,oBAAoB,CAACllC,YAAY,CAACR,EAAE,EAAEnH,OAAO,CAAC;MACnD,IAAI,CAACusC,aAAa,CAAC5kC,YAAY,CAACR,EAAE,EAAEnH,OAAO,CAAC;MAC5CtD,mEAAQ,CAACq+B,qBAAqB,CAACpzB,YAAY,EAAE;QAAEhI,IAAI;QAAE+R,IAAI;QAAEtM,IAAI,EAAE9G;MAAM,CAAC,EAAE0B,OAAO,CAAC;MAClF2H,YAAY,CAAC6Z,QAAQ,GAAGwmB,kBAAkB,CAAChoC,OAAO,CAAC;MACnD2H,YAAY,CAACiH,SAAS,GAAGC,GAAG;MAC5By4B,uBAAuB,CAAC,IAAI,CAACxrC,aAAa,CAAC;MAC3C0E,MAAM,CAACC,YAAY,CAAC,IAAI,CAACmqC,kBAAkB,CAAC;MAC5C,IAAI,CAACA,kBAAkB,GAAGpqC,MAAM,CAACiB,UAAU,CAAC,MAAM,IAAI,CAACqK,kBAAkB,CAAC,CAAC,EAAE,GAAG,CAAC;IACnF,CAAC;IACD,MAAMihC,sBAAsBA,CAACplC,YAAY,EAAEvC,IAAI,EAAE;MAC/C,IAAI,CAACuC,YAAY,IAAI,CAACvC,IAAI,CAACrC,IAAI,CAAC,CAAC,EAAE;QACjC,OAAO,IAAI;MACb;MACA,MAAMzE,KAAK,GAAG8G,IAAI,CAACrC,IAAI,CAAC,CAAC;MACzB,MAAM/C,OAAO,GAAG;QACdmH,EAAE,EAAEu0B,QAAQ,CAAC,CAAC;QACdlc,cAAc,EAAE7X,YAAY,CAACR,EAAE;QAC/BmH,IAAI,EAAE,IAAI;QACV0H,SAAS,EAAE,KAAK;QAChBrW,IAAI,EAAE,MAAM;QACZyF,IAAI,EAAE9G,KAAK;QACXyD,MAAM,EAAE,SAAS;QACjByV,cAAc,EAAE,SAAS;QACzBxN,SAAS,EAAE+C,IAAI,CAAC8B,GAAG,CAAC,CAAC;QACrB+uB,gBAAgB,EAAE7wB,IAAI,CAAC8B,GAAG,CAAC;MAC7B,CAAC;MACD,IAAI,CAAC09B,aAAa,CAAC5kC,YAAY,CAACR,EAAE,EAAEnH,OAAO,CAAC;MAC5C,MAAMigC,WAAW,GAAG,MAAMvjC,mEAAQ,CAACo+B,eAAe,CAACnzB,YAAY,EAAErJ,KAAK,EAAE0B,OAAO,CAAC;MAChF,IAAI,CAACysC,cAAc,CAAC9kC,YAAY,CAACR,EAAE,EAAE84B,WAAW,CAAC;MACjD,OAAOA,WAAW;IACpB,CAAC;IACDr0B,kBAAkBA,CAACjE,YAAY,EAAE;MAC/B,MAAMyK,KAAK,GAAG,IAAI,CAACtW,aAAa,CAAC0d,SAAS,CAACvG,IAAI,IAAIA,IAAI,CAAC9L,EAAE,KAAKQ,YAAY,CAACR,EAAE,CAAC;MAC/E,IAAIiL,KAAK,IAAI,CAAC,EAAE;QACd,IAAI,CAACtW,aAAa,CAAC+gC,MAAM,CAACzqB,KAAK,EAAE,CAAC,EAAE;UAClC,GAAG,IAAI,CAACtW,aAAa,CAACsW,KAAK,CAAC;UAC5B,GAAGzK;QACL,CAAC,CAAC;MACJ,CAAC,MAAM;QACL,IAAI,CAAC7L,aAAa,CAAC2a,OAAO,CAAC9O,YAAY,CAAC;MAC1C;MACA,IAAI,CAAC0iC,aAAa,GAAG,KAAK;MAC1B/C,uBAAuB,CAAC,IAAI,CAACxrC,aAAa,CAAC;IAC7C,CAAC;IACDkxC,kBAAkBA,CAACxtB,cAAc,EAAE;MACjC,IAAI,CAAC1jB,aAAa,GAAG,IAAI,CAACA,aAAa,CAAC6M,MAAM,CAAChB,YAAY,IAAIA,YAAY,CAACR,EAAE,KAAKqY,cAAc,CAAC;MAClG,MAAM;QACJ,CAACA,cAAc,GAAGytB,eAAe;QACjC,GAAG/Q;MACL,CAAC,GAAG,IAAI,CAACA,sBAAsB;MAC/B,MAAM;QACJ,CAAC1c,cAAc,GAAG0tB,sBAAsB;QACxC,GAAG9C;MACL,CAAC,GAAG,IAAI,CAACA,6BAA6B;MACtC,MAAM;QACJ,CAAC5qB,cAAc,GAAG2tB,yBAAyB;QAC3C,GAAGtC;MACL,CAAC,GAAG,IAAI,CAACA,gCAAgC;MACzC,KAAKoC,eAAe;MACpB,KAAKC,sBAAsB;MAC3B,KAAKC,yBAAyB;MAC9B,IAAI,CAACjR,sBAAsB,GAAGA,sBAAsB;MACpD,IAAI,CAACkO,6BAA6B,GAAGA,6BAA6B;MAClE,IAAI,CAACS,gCAAgC,GAAGA,gCAAgC;MACxE,IAAI,IAAI,CAACrkB,QAAQ,KAAKhH,cAAc,EAAE;QACpC,IAAI,CAACgH,QAAQ,GAAG,IAAI,CAAC1qB,aAAa,CAAC,CAAC,CAAC,EAAEqL,EAAE,IAAI,EAAE;MACjD;MACAmgC,uBAAuB,CAAC,IAAI,CAACxrC,aAAa,CAAC;MAC3C,IAAI,IAAI,CAAC0qB,QAAQ,EAAE;QACjB,IAAI,CAACmmB,kBAAkB,CAAC,CAAC;MAC3B;IACF,CAAC;IACDD,wBAAwBA,CAAC3N,mBAAmB,EAAE;MAC5C,MAAMqO,MAAM,GAAG/+B,KAAK,CAACwX,OAAO,CAACkZ,mBAAmB,CAAC,GAAGA,mBAAmB,GAAG,EAAE;MAC5E,IAAI,CAACqO,MAAM,CAAC7uC,MAAM,IAAI,IAAI,CAACzC,aAAa,CAACyC,MAAM,EAAE;QAC/C;MACF;MAEA,MAAMqqC,MAAM,GAAG,IAAIjlB,GAAG,CAAC,CAAC;MACxB,IAAI,CAAC7nB,aAAa,CAACqW,OAAO,CAACxK,YAAY,IAAI;QACzCihC,MAAM,CAAC3kC,GAAG,CAAC0D,YAAY,CAACR,EAAE,EAAEQ,YAAY,CAAC;MAC3C,CAAC,CAAC;MACFylC,MAAM,CAACj7B,OAAO,CAACxK,YAAY,IAAI;QAC7B,MAAM4B,MAAM,GAAG5B,YAAY,CAACR,EAAE,KAAK,IAAI,CAACqf,QAAQ,IAAI4hB,cAAc,CAAC,CAAC,GAAG,CAAC,GAAG7mC,MAAM,CAACoG,YAAY,CAAC4B,MAAM,IAAI,CAAC,CAAC;QAC3Gq/B,MAAM,CAAC3kC,GAAG,CAAC0D,YAAY,CAACR,EAAE,EAAE;UAC1B,IAAIyhC,MAAM,CAAClmC,GAAG,CAACiF,YAAY,CAACR,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;UACtC,GAAGQ,YAAY;UACf4B;QACF,CAAC,CAAC;MACJ,CAAC,CAAC;MAEF,IAAI,CAACzN,aAAa,GAAG2rC,iBAAiB,CAACp5B,KAAK,CAACC,IAAI,CAACs6B,MAAM,CAACjjB,MAAM,CAAC,CAAC,CAAC,CAAC,CAChE9mB,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;MAEhB,IAAI,CAAC,IAAI,CAAC/C,aAAa,CAACyC,MAAM,EAAE;QAC9B,IAAI,CAACioB,QAAQ,GAAG,EAAE;QAClB,IAAI,CAAC0V,sBAAsB,GAAG,CAAC,CAAC;QAChC,IAAI,CAACkO,6BAA6B,GAAG,CAAC,CAAC;QACvC,IAAI,CAACS,gCAAgC,GAAG,CAAC,CAAC;QAC1CvD,uBAAuB,CAAC,IAAI,CAACxrC,aAAa,CAAC;QAC3C;MACF;MAEA,IAAI,CAAC,IAAI,CAACA,aAAa,CAACyL,IAAI,CAAC0L,IAAI,IAAIA,IAAI,CAAC9L,EAAE,KAAK,IAAI,CAACqf,QAAQ,CAAC,EAAE;QAC/D,IAAI,CAACA,QAAQ,GAAG,IAAI,CAAC1qB,aAAa,CAAC,CAAC,CAAC,CAACqL,EAAE;MAC1C;MACAmgC,uBAAuB,CAAC,IAAI,CAACxrC,aAAa,CAAC;MAC3C,IAAI,CAAC6wC,kBAAkB,CAAC,CAAC;IAC3B,CAAC;IACD9nB,wBAAwBA,CAACrF,cAAc,EAAE;MACvC,MAAM7X,YAAY,GAAG,IAAI,CAAC7L,aAAa,CAACyL,IAAI,CAAC0L,IAAI,IAAIA,IAAI,CAAC9L,EAAE,KAAKqY,cAAc,CAAC;MAChF,IAAI,CAAC7X,YAAY,EAAE;MACnBA,YAAY,CAAC8c,QAAQ,GAAGljB,MAAM,CAACoG,YAAY,CAAC8c,QAAQ,IAAI9c,YAAY,CAACiV,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG7P,IAAI,CAAC8B,GAAG,CAAC,CAAC;MACnGlH,YAAY,CAACiV,GAAG,GAAGjV,YAAY,CAAC8c,QAAQ;MACxC,IAAI,CAAC3oB,aAAa,GAAG2rC,iBAAiB,CAAC,IAAI,CAAC3rC,aAAa,CAAC;MAC1DwrC,uBAAuB,CAAC,IAAI,CAACxrC,aAAa,CAAC;IAC7C,CAAC;IACDywC,aAAaA,CAAC/sB,cAAc,EAAExf,OAAO,EAAE;MACrC,IAAI,CAAC,IAAI,CAACk8B,sBAAsB,CAAC1c,cAAc,CAAC,EAAE;QAChD,IAAI,CAAC0c,sBAAsB,GAAG;UAC5B,GAAG,IAAI,CAACA,sBAAsB;UAC9B,CAAC1c,cAAc,GAAG;QACpB,CAAC;MACH;MACA,IAAIxf,OAAO,CAACgW,SAAS,KAAK,KAAK,KAAKhW,OAAO,CAAC+B,MAAM,KAAK,SAAS,IAAI/B,OAAO,CAAC+B,MAAM,KAAK,MAAM,CAAC,EAAE;QAC9F,IAAI,CAACsrC,qBAAqB,CAAC7tB,cAAc,EAAExf,OAAO,CAAC;MACrD;MACA,IAAI,CAACmoC,eAAe,CAAC,IAAI,CAACjM,sBAAsB,CAAC1c,cAAc,CAAC,EAAExf,OAAO,CAAC,EAAE;QAC1E,IAAI,CAACk8B,sBAAsB,GAAG;UAC5B,GAAG,IAAI,CAACA,sBAAsB;UAC9B,CAAC1c,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC0c,sBAAsB,CAAC1c,cAAc,CAAC,EAAExf,OAAO;QAC5E,CAAC;MACH;MACA,IAAI,CAACstC,6BAA6B,CAAC9tB,cAAc,EAAExf,OAAO,CAAC;MAC3D,IAAI,CAACutC,mBAAmB,CAAC/tB,cAAc,CAAC;MACxC8nB,uBAAuB,CAAC,IAAI,CAACxrC,aAAa,CAAC;IAC7C,CAAC;IACD0xC,cAAcA,CAAChuB,cAAc,EAAE5J,QAAQ,EAAE;MACvC,MAAM0mB,GAAG,GAAG,IAAIruB,GAAG,CAAC2H,QAAQ,CAACgQ,OAAO,CAAC5lB,OAAO,IAAI,CAACA,OAAO,CAACmH,EAAE,EAAEnH,OAAO,CAACyX,UAAU,CAAC,CAAC9O,MAAM,CAACQ,OAAO,CAAC,CAACsD,GAAG,CAAC7N,MAAM,CAAC,CAAC,CAAC;MAC9G,MAAM6uC,cAAc,GAAGC,IAAI,IAAI,CAACA,IAAI,IAAI,EAAE,EAAE/kC,MAAM,CAAC3I,OAAO,IAAI;QAC5D,OAAO,CAAC,CAACA,OAAO,CAACmH,EAAE,EAAEnH,OAAO,CAACyX,UAAU,CAAC,CAAC9O,MAAM,CAACQ,OAAO,CAAC,CAAC8c,IAAI,CAAC9e,EAAE,IAAIm1B,GAAG,CAACpuB,GAAG,CAACtP,MAAM,CAACuI,EAAE,CAAC,CAAC,CAAC;MAC1F,CAAC,CAAC;MACF,IAAI,CAAC+0B,sBAAsB,GAAG;QAC5B,GAAG,IAAI,CAACA,sBAAsB;QAC9B,CAAC1c,cAAc,GAAGiuB,cAAc,CAAC,IAAI,CAACvR,sBAAsB,CAAC1c,cAAc,CAAC;MAC9E,CAAC;MACD,IAAI,CAAC4qB,6BAA6B,GAAG;QACnC,GAAG,IAAI,CAACA,6BAA6B;QACrC,CAAC5qB,cAAc,GAAGiuB,cAAc,CAAC,IAAI,CAACrD,6BAA6B,CAAC5qB,cAAc,CAAC;MACrF,CAAC;MACD,IAAI,CAACqrB,gCAAgC,GAAG;QACtC,GAAG,IAAI,CAACA,gCAAgC;QACxC,CAACrrB,cAAc,GAAGiuB,cAAc,CAAC,IAAI,CAAC5C,gCAAgC,CAACrrB,cAAc,CAAC;MACxF,CAAC;MACD,IAAI,CAACpH,kBAAkB,GAAG,IAAI,CAACA,kBAAkB,CAACzP,MAAM,CAACxB,EAAE,IAAI,CAACm1B,GAAG,CAACpuB,GAAG,CAACtP,MAAM,CAACuI,EAAE,CAAC,CAAC,CAAC;IACtF,CAAC;IACDwmC,mBAAmBA,CAACnuB,cAAc,EAAEouB,aAAa,EAAEC,WAAW,EAAE;MAC9D,MAAMC,IAAI,GAAG,IAAI7/B,GAAG,CAAC,CAAC2/B,aAAa,CAACzmC,EAAE,EAAEymC,aAAa,CAACn2B,UAAU,CAAC,CAAC9O,MAAM,CAACQ,OAAO,CAAC,CAACsD,GAAG,CAAC7N,MAAM,CAAC,CAAC;MAC9F,MAAMmvC,aAAa,GAAGL,IAAI,IAAI,CAACA,IAAI,IAAI,EAAE,EAAEjhC,GAAG,CAACzM,OAAO,IAAI;QACxD,MAAMguC,OAAO,GAAG,CAAChuC,OAAO,CAACmH,EAAE,EAAEnH,OAAO,CAACyX,UAAU,CAAC,CAAC9O,MAAM,CAACQ,OAAO,CAAC,CAAC8c,IAAI,CAAC9e,EAAE,IAAI2mC,IAAI,CAAC5/B,GAAG,CAACtP,MAAM,CAACuI,EAAE,CAAC,CAAC,CAAC;QACjG,OAAO6mC,OAAO,GAAG;UAAE,GAAGhuC,OAAO;UAAE,GAAG6tC;QAAY,CAAC,GAAG7tC,OAAO;MAC3D,CAAC,CAAC;MACF,IAAI,CAACk8B,sBAAsB,GAAG;QAC5B,GAAG,IAAI,CAACA,sBAAsB;QAC9B,CAAC1c,cAAc,GAAGuuB,aAAa,CAAC,IAAI,CAAC7R,sBAAsB,CAAC1c,cAAc,CAAC;MAC7E,CAAC;MACD,IAAI,CAAC4qB,6BAA6B,GAAG;QACnC,GAAG,IAAI,CAACA,6BAA6B;QACrC,CAAC5qB,cAAc,GAAGuuB,aAAa,CAAC,IAAI,CAAC3D,6BAA6B,CAAC5qB,cAAc,CAAC;MACpF,CAAC;IACH,CAAC;IACD8tB,6BAA6BA,CAAC9tB,cAAc,EAAExf,OAAO,EAAE;MACrD,MAAM2H,YAAY,GAAG,IAAI,CAAC7L,aAAa,CAACyL,IAAI,CAAC0L,IAAI,IAAIA,IAAI,CAAC9L,EAAE,KAAKqY,cAAc,CAAC;MAChF,IAAI,CAAC7X,YAAY,EAAE;QACjB;MACF;MAEAA,YAAY,CAAC6Z,QAAQ,GAAGxhB,OAAO,CAACoF,IAAI,IAAIuC,YAAY,CAAC6Z,QAAQ,IAAI,EAAE;MACnE7Z,YAAY,CAACiH,SAAS,GAAGk5B,wBAAwB,CAAC9nC,OAAO,CAAC,IAAI+M,IAAI,CAAC8B,GAAG,CAAC,CAAC;MACxE,IAAI7O,OAAO,CAACgW,SAAS,KAAK,IAAI,EAAE;QAC9BrO,YAAY,CAAC4B,MAAM,GAAGiW,cAAc,KAAK,IAAI,CAACgH,QAAQ,GAAG,CAAC,GAAGjlB,MAAM,CAACoG,YAAY,CAAC4B,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC;MACnG;MACA,IAAI,CAACzN,aAAa,GAAG,CAAC,GAAG,IAAI,CAACA,aAAa,CAAC,CACzC2hC,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKp8B,MAAM,CAACo8B,CAAC,CAAC/uB,SAAS,IAAI,CAAC,CAAC,GAAGrN,MAAM,CAACm8B,CAAC,CAAC9uB,SAAS,IAAI,CAAC,CAAC,CAAC;IACxE,CAAC;IACDi+B,oBAAoBA,CAACrtB,cAAc,EAAExf,OAAO,EAAE;MAC5C,MAAM4V,QAAQ,GAAG,IAAI,CAACw0B,6BAA6B,CAAC5qB,cAAc,CAAC,IAAI,EAAE;MACzE,IAAI,CAAC4qB,6BAA6B,GAAG;QACnC,GAAG,IAAI,CAACA,6BAA6B;QACrC,CAAC5qB,cAAc,GAAG,CAAC,GAAG5J,QAAQ,CAACjN,MAAM,CAACsK,IAAI,IAAIA,IAAI,CAAC9L,EAAE,KAAKnH,OAAO,CAACmH,EAAE,CAAC,EAAEnH,OAAO,CAAC,CAC5Ey9B,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKp8B,MAAM,CAACm8B,CAAC,CAACE,gBAAgB,IAAIF,CAAC,CAAC1zB,SAAS,IAAI,CAAC,CAAC,GAAGzI,MAAM,CAACo8B,CAAC,CAACC,gBAAgB,IAAID,CAAC,CAAC3zB,SAAS,IAAI,CAAC,CAAC;MACnH,CAAC;IACH,CAAC;IACDyiC,cAAcA,CAACjtB,cAAc,EAAExf,OAAO,EAAE;MACtC,IAAI,CAAC,IAAI,CAACk8B,sBAAsB,CAAC1c,cAAc,CAAC,EAAE;QAChD,IAAI,CAAC0c,sBAAsB,GAAG;UAC5B,GAAG,IAAI,CAACA,sBAAsB;UAC9B,CAAC1c,cAAc,GAAG;QACpB,CAAC;MACH;MACA,IAAIxf,OAAO,CAACgW,SAAS,KAAK,KAAK,KAAKhW,OAAO,CAAC+B,MAAM,KAAK,SAAS,IAAI/B,OAAO,CAAC+B,MAAM,KAAK,MAAM,IAAI/B,OAAO,CAAC+B,MAAM,KAAK,QAAQ,CAAC,EAAE;QAC7H,IAAI,CAACsrC,qBAAqB,CAAC7tB,cAAc,EAAExf,OAAO,CAAC;MACrD;MACA,MAAMoS,KAAK,GAAG,IAAI,CAAC8pB,sBAAsB,CAAC1c,cAAc,CAAC,CAAChG,SAAS,CAACvG,IAAI,IAAIA,IAAI,CAAC9L,EAAE,KAAKnH,OAAO,CAACmH,EAAE,CAAC;MACnG,IAAIiL,KAAK,IAAI,CAAC,EAAE;QACd,MAAMwD,QAAQ,GAAG,CAAC,GAAG,IAAI,CAACsmB,sBAAsB,CAAC1c,cAAc,CAAC,CAAC;QACjE5J,QAAQ,CAACinB,MAAM,CAACzqB,KAAK,EAAE,CAAC,EAAEpS,OAAO,CAAC;QAClC,IAAI,CAACk8B,sBAAsB,GAAG;UAC5B,GAAG,IAAI,CAACA,sBAAsB;UAC9B,CAAC1c,cAAc,GAAG5J;QACpB,CAAC;MACH,CAAC,MAAM;QACL,IAAI,CAACsmB,sBAAsB,GAAG;UAC5B,GAAG,IAAI,CAACA,sBAAsB;UAC9B,CAAC1c,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC0c,sBAAsB,CAAC1c,cAAc,CAAC,EAAExf,OAAO;QAC5E,CAAC;MACH;MACA,IAAI,CAACutC,mBAAmB,CAAC/tB,cAAc,CAAC;IAC1C,CAAC;IACD+tB,mBAAmBA,CAAC/tB,cAAc,EAAE;MAClC,IAAI,CAAC4qB,6BAA6B,GAAG;QACnC,GAAG,IAAI,CAACA,6BAA6B;QACrC,CAAC5qB,cAAc,GAAGipB,oBAAoB,CACpC,IAAI,CAACoC,gCAAgC,CAACrrB,cAAc,CAAC,IAAI,EAAE,EAC3D,IAAI,CAAC0c,sBAAsB,CAAC1c,cAAc,CAAC,IAAI,EACjD;MACF,CAAC;IACH,CAAC;IACD6tB,qBAAqBA,CAAC7tB,cAAc,EAAExf,OAAO,EAAE;MAC7C,IAAI,CAAC,IAAI,CAAC6qC,gCAAgC,CAACrrB,cAAc,CAAC,EAAE;QAC1D,IAAI,CAACqrB,gCAAgC,GAAG;UACtC,GAAG,IAAI,CAACA,gCAAgC;UACxC,CAACrrB,cAAc,GAAG;QACpB,CAAC;MACH;MACA,MAAM5J,QAAQ,GAAG,IAAI,CAACi1B,gCAAgC,CAACrrB,cAAc,CAAC;MACtE,MAAMpN,KAAK,GAAGwD,QAAQ,CAAC4D,SAAS,CAACvG,IAAI,IAAIA,IAAI,CAAC9L,EAAE,KAAKnH,OAAO,CAACmH,EAAE,CAAC;MAChE,IAAI+hC,YAAY;MAChB,IAAI92B,KAAK,IAAI,CAAC,EAAE;QACd82B,YAAY,GAAG,CAAC,GAAGtzB,QAAQ,CAAC;QAC5BszB,YAAY,CAACrM,MAAM,CAACzqB,KAAK,EAAE,CAAC,EAAEpS,OAAO,CAAC;MACxC,CAAC,MAAM;QACLkpC,YAAY,GAAG,CAAC,GAAGtzB,QAAQ,EAAE5V,OAAO,CAAC;MACvC;MACA,IAAI,CAAC6qC,gCAAgC,GAAG;QACtC,GAAG,IAAI,CAACA,gCAAgC;QACxC,CAACrrB,cAAc,GAAG0pB;MACpB,CAAC;IACH,CAAC;IACD+E,uBAAuBA,CAACzuB,cAAc,EAAEmpB,cAAc,EAAE;MACtD,MAAM/yB,QAAQ,GAAG,IAAI,CAACi1B,gCAAgC,CAACrrB,cAAc,CAAC,IAAI,EAAE;MAC5E,IAAI,CAAC5J,QAAQ,CAACrX,MAAM,EAAE;QACpB;MACF;MACA,IAAI,CAACssC,gCAAgC,GAAG;QACtC,GAAG,IAAI,CAACA,gCAAgC;QACxC,CAACrrB,cAAc,GAAG5J,QAAQ,CAACjN,MAAM,CAAC3I,OAAO,IAAI;UAC7C,MAAMkuC,aAAa,GAAGvF,cAAc,CAAC1iB,IAAI,CAACkoB,aAAa,IAAI;YACzD,OAAOA,aAAa,CAAChnC,EAAE,KAAKnH,OAAO,CAACmH,EAAE,IAAI+gC,aAAa,CAACiG,aAAa,EAAEnuC,OAAO,CAAC;UACjF,CAAC,CAAC;UACF,IAAIkuC,aAAa,IAAIluC,OAAO,CAAC+B,MAAM,KAAK,QAAQ,EAAE;YAChD,OAAO,KAAK;UACd;UACE,OAAOgL,IAAI,CAAC8B,GAAG,CAAC,CAAC,GAAGtN,MAAM,CAACvB,OAAO,CAAC49B,gBAAgB,IAAI59B,OAAO,CAACgK,SAAS,IAAI,CAAC,CAAC,GAAG,KAAK,IAAIhK,OAAO,CAAC+B,MAAM,KAAK,QAAQ;QACvH,CAAC;MACH,CAAC;IACH,CAAC;IACD4qC,kBAAkBA,CAACxN,OAAO,GAAG,CAAC,CAAC,EAAE;MAC/B,MAAMiP,WAAW,GAAG,OAAOjP,OAAO,KAAK,SAAS,GAC5C;QAAEpzB,gBAAgB,EAAEozB;MAAQ,CAAC,GAC7BA,OAAO;MACX,MAAMx3B,YAAY,GAAG,IAAI,CAAC5C,kBAAkB;MAC5C,IAAI,CAAC4C,YAAY,EAAE;QACjB;MACF;MACA,IAAI,CAACs+B,OAAO,GAAG,IAAI;MACnB,MAAMrwB,QAAQ,GAAGlZ,mEAAQ,CAACwiC,WAAW,CAACv3B,YAAY,EAAE,EAAE,CAAC;MACvD,IAAI,CAACsmC,uBAAuB,CAACtmC,YAAY,CAACR,EAAE,EAAEyO,QAAQ,CAAC;MACvD,IAAI,CAACsmB,sBAAsB,GAAG;QAC5B,GAAG,IAAI,CAACA,sBAAsB;QAC9B,CAACv0B,YAAY,CAACR,EAAE,GAAGshC,oBAAoB,CAAC,IAAI,CAACvM,sBAAsB,CAACv0B,YAAY,CAACR,EAAE,CAAC,IAAI,EAAE,EAAEyO,QAAQ;MACtG,CAAC;MACD,IAAI,CAAC23B,mBAAmB,CAAC5lC,YAAY,CAACR,EAAE,CAAC;MACzC,IAAI,CAAC8+B,OAAO,GAAG,KAAK;MACpB,IAAI,CAACn6B,kBAAkB,CAACsiC,WAAW,CAAC;IACtC,CAAC;IACD,MAAMtiC,kBAAkBA,CAACqzB,OAAO,GAAG,CAAC,CAAC,EAAE;MACrC,MAAMx3B,YAAY,GAAG,IAAI,CAAC5C,kBAAkB;MAC5C,IAAI,CAAC4C,YAAY,EAAE;QACjB;MACF;MACA,MAAM0mC,gBAAgB,GAAGllC,OAAO,CAACg2B,OAAO,CAACpzB,gBAAgB,CAAC;MAC1D,MAAMuiC,mBAAmB,GAAGD,gBAAgB,IAAIjG,cAAc,CAAC;QAAEE,UAAU,EAAEn/B,OAAO,CAACg2B,OAAO,CAACmJ,UAAU;MAAE,CAAC,CAAC;MAC3G,MAAMiG,kBAAkB,GAAGnG,cAAc,CAAC,CAAC;MAC3C,MAAMhJ,QAAQ,GAAGkP,mBAAmB,IAAIC,kBAAkB;MAE1D,IAAI,IAAI,CAAC9D,YAAY,EAAE;QACrB,IAAI4D,gBAAgB,EAAE;UACpB,IAAI,CAAC3D,gCAAgC,GAAG/iC,YAAY,CAACR,EAAE;QACzD;QACA;MACF;MACA,IAAI,CAACsjC,YAAY,GAAG,IAAI;MACxB,MAAM+D,oBAAoB,GAAG7mC,YAAY,CAACR,EAAE;MAC5C,MAAM8hC,gBAAgB,GAAG,IAAI,CAAC/M,sBAAsB,CAACsS,oBAAoB,CAAC,IAAI,EAAE;MAChF,IAAI;QACF,MAAM54B,QAAQ,GAAG,MAAMlZ,mEAAQ,CAACi+B,mBAAmB,CAAChzB,YAAY,EAAE,EAAE,EAAE;UACpEy3B,QAAQ;UACRC,oBAAoB,EAAEl2B,OAAO,CAACg2B,OAAO,CAACE,oBAAoB;QAC5D,CAAC,CAAC;QACF,MAAMoP,eAAe,GAAG7vC,MAAM,CAACgX,QAAQ,CAAC0pB,gBAAgB,IAAI,EAAE,CAAC;QAC/D,IAAImP,eAAe,EAAE;UACnB,MAAMC,aAAa,GAAG94B,QAAQ,CAACrO,IAAI,CAAC0L,IAAI,IAAI40B,gBAAgB,CAAC50B,IAAI,CAAC,KAAKw7B,eAAe,CAAC;UACvF,IAAI,CAACjD,4BAA4B,GAAG;YAClC,GAAG,IAAI,CAACA,4BAA4B;YACpC,CAACgD,oBAAoB,GAAGE,aAAa,GACjC;cACAxwB,GAAG,EAAEuwB,eAAe;cACpBtnC,EAAE,EAAEsnC,eAAe;cACnBrpC,IAAI,EAAE4iC,kBAAkB,CAAC0G,aAAa,CAAC;cACvC/uC,IAAI,EAAE+uC,aAAa,CAAC/uC,IAAI,IAAI,MAAM;cAClCuF,UAAU,EAAEwpC,aAAa,CAACxpC,UAAU,GAAG;gBAAE,GAAGwpC,aAAa,CAACxpC;cAAW,CAAC,GAAG,IAAI;cAC7EgU,UAAU,EAAEw1B,aAAa,CAACx1B,UAAU,IAAIw1B,aAAa,CAACpgC,IAAI,IAAI,EAAE;cAChEtE,SAAS,EAAEzI,MAAM,CAACmtC,aAAa,CAAC9Q,gBAAgB,IAAI8Q,aAAa,CAAC1kC,SAAS,IAAI+C,IAAI,CAAC8B,GAAG,CAAC,CAAC;YAC3F,CAAC,GACC;cAAEqP,GAAG,EAAEuwB,eAAe;cAAEtnC,EAAE,EAAEsnC,eAAe;cAAErpC,IAAI,EAAE;YAAS;UAClE,CAAC;UACDoiC,mBAAmB,CAAC,IAAI,CAACgE,4BAA4B,CAAC;QACxD;QACA,MAAMmD,sBAAsB,GAAG3F,sBAAsB,CAACC,gBAAgB,EAAErzB,QAAQ,CAAC;QACjF,IAAI,CAACq4B,uBAAuB,CAACO,oBAAoB,EAAE54B,QAAQ,CAAC;QAC5D,IAAI,CAACsmB,sBAAsB,GAAG;UAC5B,GAAG,IAAI,CAACA,sBAAsB;UAC9B,CAACsS,oBAAoB,GAAG/F,oBAAoB,CAAC,IAAI,CAACvM,sBAAsB,CAACsS,oBAAoB,CAAC,IAAI,EAAE,EAAE54B,QAAQ;QAChH,CAAC;QACD,IAAI,CAAC23B,mBAAmB,CAACiB,oBAAoB,CAAC;QAC9C,IAAIG,sBAAsB,CAACpwC,MAAM,IAAIiwC,oBAAoB,KAAK,IAAI,CAAChoB,QAAQ,EAAE;UAC3E,IAAI,CAACvF,YAAY,CAAC0tB,sBAAsB,CAAClR,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKmK,wBAAwB,CAACnK,CAAC,CAAC,GAAGmK,wBAAwB,CAACpK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;UACtH4L,qBAAqB,CAAC,CAAC;QACzB;QACA,MAAM1C,MAAM,GAAGhxB,QAAQ,CAACk2B,MAAM,CAAC,CAAC8C,aAAa,EAAE5uC,OAAO,KAAK;UACzD,IAAI,CAAC4uC,aAAa,IAAI9G,wBAAwB,CAAC9nC,OAAO,CAAC,GAAG8nC,wBAAwB,CAAC8G,aAAa,CAAC,EAAE;YACjG,OAAO5uC,OAAO;UAChB;UACA,OAAO4uC,aAAa;QACtB,CAAC,EAAE,IAAI,CAAC;QACR,IAAIhI,MAAM,EAAE;UACVj/B,YAAY,CAAC6Z,QAAQ,GAAGwmB,kBAAkB,CAACpB,MAAM,CAAC;UAClDj/B,YAAY,CAACiH,SAAS,GAAGk5B,wBAAwB,CAAClB,MAAM,CAAC;UACzDU,uBAAuB,CAAC,IAAI,CAACxrC,aAAa,CAAC;QAC7C;MACF,CAAC,CAAC,OAAOwD,KAAK,EAAE;QACd;MAAA,CACD,SAAS;QACR,IAAI,CAACmrC,YAAY,GAAG,KAAK;QACzB,IAAI,IAAI,CAACC,gCAAgC,KAAK,IAAI,CAAClkB,QAAQ,IAAI4hB,cAAc,CAAC,CAAC,EAAE;UAC/E,IAAI,CAACsC,gCAAgC,GAAG,EAAE;UAC1ClqC,MAAM,CAACiB,UAAU,CAAC,MAAM,IAAI,CAACqK,kBAAkB,CAAC;YAAEC,gBAAgB,EAAE;UAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QACjF;MACF;IACF,CAAC;IACDygC,0BAA0BA,CAACrN,OAAO,GAAG,CAAC,CAAC,EAAE98B,KAAK,GAAG,GAAG,EAAE;MACpD,IAAI,CAAC,IAAI,CAACmkB,QAAQ,IAAK,OAAOtiB,QAAQ,KAAK,WAAW,IAAIA,QAAQ,CAACmkC,eAAe,KAAK,SAAU,EAAE;QACjG;MACF;MACA7nC,MAAM,CAACC,YAAY,CAAC,IAAI,CAACmqC,kBAAkB,CAAC;MAC5C,IAAI,CAACA,kBAAkB,GAAGpqC,MAAM,CAACiB,UAAU,CAAC,MAAM;QAChD,IAAI,CAACmpC,kBAAkB,GAAG,IAAI;QAC9B,IAAI,CAAC9+B,kBAAkB,CAACqzB,OAAO,CAAC;MAClC,CAAC,EAAE/9B,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEE,MAAM,CAACc,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IACrC,CAAC;IACDgqC,gBAAgBA,CAAA,EAAG;MACjB,IAAI,CAACwC,sBAAsB,CAAC,CAAC;MAC7B,IAAI,CAAC,IAAI,CAACvE,SAAS,EAAE;QACnB,IAAI,CAACA,SAAS,GAAG9pC,MAAM,CAACqkC,WAAW,CAAC,MAAM;UACxC,IAAI3gC,QAAQ,CAACmkC,eAAe,KAAK,SAAS,IAAI,CAACzC,4FAAqB,CAACN,WAAW,CAAC,CAAC,EAAE;YAClF,IAAI,CAACx5B,kBAAkB,CAAC,CAAC;UAC3B;QACF,CAAC,EAAE1K,IAAI,CAACC,GAAG,CAAC,GAAG,EAAE5E,wDAAS,CAACm2B,cAAc,CAAC,CAAC;MAC7C;MACA,IAAI,CAAC,IAAI,CAAC2X,qBAAqB,EAAE;QAC/B,IAAI,CAACA,qBAAqB,GAAG/pC,MAAM,CAACqkC,WAAW,CAAC,MAAM;UACpD,IAAI3gC,QAAQ,CAACmkC,eAAe,KAAK,SAAS,IAAI,CAACzC,4FAAqB,CAACN,WAAW,CAAC,CAAC,EAAE;YAClF,IAAI,CAACrpC,0BAA0B,CAAC,CAAC;UACnC;QACF,CAAC,EAAEmF,IAAI,CAACC,GAAG,CAAC,IAAI,EAAE5E,wDAAS,CAACm2B,cAAc,GAAG,CAAC,CAAC,CAAC;QAChD,IAAI,CAAC32B,0BAA0B,CAAC,CAAC;MACnC;IACF,CAAC;IACDqwC,0BAA0BA,CAAA,EAAG;MAC3B9rC,MAAM,CAACC,YAAY,CAAC,IAAI,CAACkrC,iBAAiB,CAAC;MAC3C,IAAI,CAACA,iBAAiB,GAAGnrC,MAAM,CAACiB,UAAU,CAAC,MAAM;QAC/C,IAAI,CAACxF,0BAA0B,CAAC,CAAC;QACjC,IAAI,CAACuwC,0BAA0B,CAAC;UAC9BzgC,gBAAgB,EAAEq8B,cAAc,CAAC,CAAC;UAClC/I,oBAAoB,EAAE;QACxB,CAAC,EAAE,GAAG,CAAC;MACT,CAAC,EAAE,GAAG,CAAC;IACT,CAAC;IACDwP,sBAAsBA,CAAA,EAAG;MACvB,IAAI,IAAI,CAACrE,uBAAuB,IAAI,OAAOhqC,MAAM,KAAK,WAAW,IAAI,OAAO0D,QAAQ,KAAK,WAAW,EAAE;QACpG;MACF;MACA,IAAI,CAACsmC,uBAAuB,GAAG,IAAI;MACnC,MAAMsE,gBAAgB,GAAGA,CAAA,KAAM;QAC7B,IAAI1G,cAAc,CAAC,CAAC,EAAE;UACpB,IAAI,CAACnsC,0BAA0B,CAAC,CAAC;UACjC,IAAI,CAACuwC,0BAA0B,CAAC;YAAEzgC,gBAAgB,EAAE;UAAK,CAAC,EAAE,GAAG,CAAC;QAClE;MACF,CAAC;MACDvL,MAAM,CAACoP,gBAAgB,CAAC,OAAO,EAAEk/B,gBAAgB,CAAC;MAClD5qC,QAAQ,CAAC0L,gBAAgB,CAAC,kBAAkB,EAAEk/B,gBAAgB,CAAC;IACjE,CAAC;IACD,MAAM7yC,0BAA0BA,CAAA,EAAG;MACjC,IAAI,CAACuqC,YAAY,CAAC,CAAC;MACnB,IAAI,CAAC6D,aAAa,GAAG,KAAK;MAC1B,IAAI,IAAI,CAACM,wBAAwB,EAAE;QACjC;MACF;MACA,IAAI,CAACA,wBAAwB,GAAG,IAAI;MACpC,IAAI;QACF,MAAM5L,mBAAmB,GAAG,MAAMriC,mEAAQ,CAACg+B,wBAAwB,CAAC,EAAE,CAAC;QACvE,IAAI,CAACgS,wBAAwB,CAAC3N,mBAAmB,CAAC;MACpD,CAAC,CAAC,OAAOz/B,KAAK,EAAE;QACd5C,mEAAQ,CAACkiC,uBAAuB,CAAC,CAAC;MACpC,CAAC,SAAS;QACR,IAAI,CAAC+L,wBAAwB,GAAG,KAAK;MACvC;IACF,CAAC;IACD78B,eAAeA,CAAC9N,OAAO,EAAE;MACvB,IAAI,CAACwjB,YAAY,GAAGxjB,OAAO;MAC3B,IAAI,CAACyL,WAAW,GAAG,EAAE;MACrBjL,MAAM,CAACC,YAAY,CAAC,IAAI,CAACirC,iBAAiB,CAAC;MAC3C,IAAI,CAACA,iBAAiB,GAAGlrC,MAAM,CAACiB,UAAU,CAAC,MAAM;QAC/C,IAAI,CAAC+hB,YAAY,GAAG,EAAE;QACtB,IAAI,CAACkoB,iBAAiB,GAAG,IAAI;MAC/B,CAAC,EAAE,IAAI,CAAC;IACV,CAAC;IACDr/B,cAAcA,CAACrM,OAAO,EAAE;MACtB,IAAI,CAACyL,WAAW,GAAGzL,OAAO;MAC1B,IAAI,CAACwjB,YAAY,GAAG,EAAE;MACtBhjB,MAAM,CAACC,YAAY,CAAC,IAAI,CAACirC,iBAAiB,CAAC;IAC7C,CAAC;IACDzqB,YAAYA,CAACjhB,OAAO,EAAE;MACpB,MAAMke,GAAG,GAAG2pB,gBAAgB,CAAC7nC,OAAO,CAAC;MACrC,IAAI,CAACke,GAAG,EAAE;QACR;MACF;MACA,IAAI,CAACrG,kBAAkB,GAAGqG,GAAG;MAC7B1d,MAAM,CAACC,YAAY,CAAC,IAAI,CAAC6qC,qBAAqB,CAAC;MAC/C,IAAI,CAACA,qBAAqB,GAAG9qC,MAAM,CAACiB,UAAU,CAAC,MAAM;QACnD,IAAI,IAAI,CAACoW,kBAAkB,KAAKqG,GAAG,EAAE;UACnC,IAAI,CAACrG,kBAAkB,GAAG,EAAE;QAC9B;MACF,CAAC,EAAE,IAAI,CAAC;IACV,CAAC;IACD,MAAMk3B,mBAAmBA,CAAC;MAAE74B,MAAM;MAAElW;IAAQ,CAAC,EAAE;MAC7C,IAAI,CAACA,OAAO,EAAE;QACZ;MACF;MACA,IAAIkW,MAAM,KAAK,MAAM,EAAE;QACrB,MAAM,IAAI,CAAC84B,YAAY,CAAC,CAAChvC,OAAO,CAAC,CAAC;MACpC,CAAC,MAAM,IAAIkW,MAAM,KAAK,MAAM,EAAE;QAC5B,IAAI,CAAC+4B,gBAAgB,CAACjvC,OAAO,CAAC;MAChC,CAAC,MAAM,IAAIkW,MAAM,KAAK,QAAQ,EAAE;QAC9B,IAAI,CAACg5B,cAAc,CAAC,CAAClvC,OAAO,CAAC,CAAC;MAChC,CAAC,MAAM,IAAIkW,MAAM,KAAK,SAAS,EAAE;QAC/B,IAAI,CAACi5B,YAAY,CAAC,CAACnvC,OAAO,CAAC,CAAC;MAC9B,CAAC,MAAM,IAAIkW,MAAM,KAAK,UAAU,EAAE;QAChC,IAAI,CAACk5B,cAAc,CAACpvC,OAAO,CAAC;MAC9B,CAAC,MAAM,IAAIkW,MAAM,KAAK,KAAK,EAAE;QAC3B,IAAI,CAACm5B,mBAAmB,CAACrvC,OAAO,CAAC;MACnC,CAAC,MAAM,IAAIkW,MAAM,KAAK,QAAQ,EAAE;QAC9B,MAAM,IAAI,CAACo5B,iBAAiB,CAACtvC,OAAO,CAAC;MACvC,CAAC,MAAM,IAAIkW,MAAM,KAAK,OAAO,EAAE;QAC7B,IAAI,CAACq5B,YAAY,CAACvvC,OAAO,CAAC;MAC5B,CAAC,MAAM,IAAIkW,MAAM,KAAK,QAAQ,EAAE;QAC9B,IAAI,CAACs5B,kBAAkB,CAACxvC,OAAO,CAAC;MAClC,CAAC,MAAM,IAAIkW,MAAM,KAAK,QAAQ,EAAE;QAC9B,MAAM,IAAI,CAAC+kB,aAAa,CAACj7B,OAAO,CAAC;MACnC;IACF,CAAC;IACD,MAAMsvC,iBAAiBA,CAACtvC,OAAO,EAAE;MAC/B,MAAM2H,YAAY,GAAG,IAAI,CAAC5C,kBAAkB;MAC5C,IAAI,CAAC4C,YAAY,IAAI,CAAC3H,OAAO,EAAE;QAC7B;MACF;MACA,MAAMke,GAAG,GAAG2pB,gBAAgB,CAAC7nC,OAAO,CAAC;MACrC,IAAI,CAACmrC,iBAAiB,GAAG,IAAI;MAC7B,IAAI,CAACC,oBAAoB,GAAG,IAAI;MAChC,IAAI,CAACC,kBAAkB,GAAG,EAAE;MAC5B,IAAI,CAACviC,aAAa,GAAG;QACnB2O,UAAU,EAAEyG,GAAG;QACfhV,gBAAgB,EAAEvB,YAAY,CAAChI,IAAI,IAAIgI,YAAY,CAACT,GAAG,EAAEvH,IAAI,IAAI,QAAQ;QACzE8vC,MAAM,EAAEluC,MAAM,CAACvB,OAAO,CAAC49B,gBAAgB,IAAI59B,OAAO,CAACgK,SAAS,IAAI,CAAC,CAAC;QAClE61B,QAAQ,EAAEt+B,MAAM,CAACvB,OAAO,CAAC6/B,QAAQ,IAAI,CAAC,CAAC;QACvCnoB,QAAQ,EAAEzB,iBAAiB,CAACjW,OAAO,CAAC;QACpCu+B,SAAS,EAAE,IAAI;QACfyB,MAAM,EAAE;UACNv4B,GAAG,EAAEzH,OAAO,CAACsO,IAAI,IAAI,EAAE;UACvBxL,IAAI,EAAE9C,OAAO,CAACkZ,UAAU,IAAIlZ,OAAO,CAACsO,IAAI,IAAI;QAC9C;MACF,CAAC;MACD,IAAI;QACF,IAAI,CAAC,OAAO,CAAC7P,IAAI,CAACyf,GAAG,CAAC,EAAE;UACtB,IAAI,CAACmtB,kBAAkB,GAAG,iBAAiB;UAC3C;QACF;QACA,MAAM1+B,MAAM,GAAG,MAAMjQ,mEAAQ,CAACy+B,gBAAgB,CAACxzB,YAAY,EAAE3H,OAAO,CAAC;QACrE,IAAI,CAAC8I,aAAa,GAAG6D,MAAM,IAAI,IAAI,CAAC7D,aAAa;MACnD,CAAC,CAAC,OAAOxJ,KAAK,EAAE;QACd,IAAI,CAAC+rC,kBAAkB,GAAG/rC,KAAK,CAACU,OAAO,IAAI,UAAU;MACvD,CAAC,SAAS;QACR,IAAI,CAACorC,oBAAoB,GAAG,KAAK;MACnC;IACF,CAAC;IACDsE,kBAAkBA,CAAA,EAAG;MACnB,IAAI,CAACvE,iBAAiB,GAAG,KAAK;MAC9B,IAAI,CAACC,oBAAoB,GAAG,KAAK;MACjC,IAAI,CAACC,kBAAkB,GAAG,EAAE;MAC5B,IAAI,CAACviC,aAAa,GAAG,IAAI;IAC3B,CAAC;IACD,MAAMkmC,YAAYA,CAACp5B,QAAQ,EAAE;MAC3B,MAAMxQ,IAAI,GAAGwQ,QAAQ,CAACnJ,GAAG,CAACzM,OAAO,IAAIA,OAAO,CAACoF,IAAI,IAAI,EAAE,CAAC,CAACuS,IAAI,CAAC,IAAI,CAAC;MACnE,IAAI,CAACvS,IAAI,CAACrC,IAAI,CAAC,CAAC,EAAE;QAChB;MACF;MACA,IAAI;QACF,MAAMqd,cAAc,CAAChb,IAAI,CAAC;QAC1B,IAAI,CAAC0I,eAAe,CAAC8H,QAAQ,CAACrX,MAAM,GAAG,CAAC,GAAG,SAAS,GAAG,KAAK,CAAC;MAC/D,CAAC,CAAC,OAAOe,KAAK,EAAE;QACd,IAAI,CAAC+M,cAAc,CAAC,MAAM,CAAC;MAC7B;IACF,CAAC;IACD6iC,cAAcA,CAACt5B,QAAQ,EAAE;MACvB,MAAMjO,YAAY,GAAG,IAAI,CAAC5C,kBAAkB;MAC5C,IAAI,CAAC4C,YAAY,IAAI,CAACiO,QAAQ,CAACrX,MAAM,EAAE;QACrC;MACF;MACA7B,mEAAQ,CAAC+iC,YAAY,CAAC93B,YAAY,EAAEiO,QAAQ,CAAC;MAC7C,IAAI,CAAC43B,cAAc,CAAC7lC,YAAY,CAACR,EAAE,EAAEyO,QAAQ,CAAC;MAC9C,IAAI,CAAC,IAAI,CAACwC,kBAAkB,CAAC7Z,MAAM,EAAE;QACnC,IAAI,CAAC+c,aAAa,GAAG,KAAK;MAC5B;MACA,IAAI,CAACxN,eAAe,CAAC8H,QAAQ,CAACrX,MAAM,GAAG,CAAC,GAAG,SAAS,GAAG,KAAK,CAAC;IAC/D,CAAC;IACD6wC,cAAcA,CAACpvC,OAAO,EAAE;MACtB,MAAMke,GAAG,GAAG2pB,gBAAgB,CAAC7nC,OAAO,CAAC;MACrC,IAAI,CAACke,GAAG,EAAE;QACR;MACF;MACA,MAAM9L,KAAK,GAAG,IAAI,CAACm5B,gBAAgB,CAAC/xB,SAAS,CAACvG,IAAI,IAAIA,IAAI,CAACiL,GAAG,KAAKA,GAAG,CAAC;MACvE,IAAI9L,KAAK,IAAI,CAAC,EAAE;QACd,IAAI,CAACm5B,gBAAgB,CAAC1O,MAAM,CAACzqB,KAAK,EAAE,CAAC,CAAC;QACtC,IAAI,IAAI,CAACq5B,iBAAiB,KAAKvtB,GAAG,EAAE;UAClC,IAAI,CAACutB,iBAAiB,GAAG,IAAI,CAACF,gBAAgB,CAAC,CAAC,CAAC,EAAErtB,GAAG,IAAI,EAAE;QAC9D;QACA,IAAI,CAACpQ,eAAe,CAAC,OAAO,CAAC;MAC/B,CAAC,MAAM;QACL,MAAMnG,YAAY,GAAG,IAAI,CAAC7L,aAAa,CAACyL,IAAI,CAAC0L,IAAI,IAAIA,IAAI,CAAC9L,EAAE,KAAKnH,OAAO,CAACwf,cAAc,CAAC,IAAI,CAAC,CAAC;QAC9F,IAAI,CAAC+rB,gBAAgB,CAAC90B,OAAO,CAAC;UAC5ByH,GAAG;UACH/W,EAAE,EAAEnH,OAAO,CAACmH,EAAE;UACdsQ,UAAU,EAAEzX,OAAO,CAACyX,UAAU;UAC9B+H,cAAc,EAAExf,OAAO,CAACwf,cAAc;UACtCF,iBAAiB,EAAE3X,YAAY,CAACxD,KAAK,IAAInE,OAAO,CAACsf,iBAAiB,IAAI,EAAE;UACxE3f,IAAI,EAAEK,OAAO,CAACL,IAAI,IAAI,MAAM;UAC5ByF,IAAI,EAAEpF,OAAO,CAACoF,IAAI,IAAI,EAAE;UACxBua,OAAO,EAAEqoB,kBAAkB,CAAChoC,OAAO,CAAC;UACpCkZ,UAAU,EAAElZ,OAAO,CAACkZ,UAAU,IAAIlZ,OAAO,CAACsO,IAAI,IAAI,EAAE;UACpDtE,SAAS,EAAEzI,MAAM,CAACvB,OAAO,CAAC49B,gBAAgB,IAAI59B,OAAO,CAACgK,SAAS,IAAI+C,IAAI,CAAC8B,GAAG,CAAC,CAAC,CAAC;UAC9EgxB,QAAQ,EAAEt+B,MAAM,CAACvB,OAAO,CAAC6/B,QAAQ,IAAI,CAAC,CAAC;UACvCnoB,QAAQ,EAAEzB,iBAAiB,CAACjW,OAAO,CAAC;UACpC0f,YAAY,EAAE1f,OAAO,CAAC0f,YAAY,KAAKzJ,iBAAiB,CAACjW,OAAO,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;UAC/EkF,UAAU,EAAElF,OAAO,CAACkF,UAAU,GAAG;YAAE,GAAGlF,OAAO,CAACkF;UAAW,CAAC,GAAG;QAC/D,CAAC,CAAC;QACF,IAAI,CAACumC,iBAAiB,GAAGvtB,GAAG;QAC5B,IAAI,CAACpQ,eAAe,CAAC,KAAK,CAAC;MAC7B;MACA,IAAI,CAACy9B,gBAAgB,GAAG,IAAI,CAACA,gBAAgB,CAAC1sC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;MAC3DuoC,qBAAqB,CAAC,IAAI,CAACmE,gBAAgB,CAAC;IAC9C,CAAC;IACD,MAAM8D,mBAAmBA,CAACrvC,OAAO,EAAE;MACjC,MAAMwf,cAAc,GAAGxf,OAAO,EAAEwf,cAAc,IAAI,IAAI,CAACgH,QAAQ;MAC/D,MAAMtI,GAAG,GAAG2pB,gBAAgB,CAAC7nC,OAAO,CAAC;MACrC,IAAI,CAACwf,cAAc,IAAI,CAACtB,GAAG,EAAE;MAC7B,MAAMyxB,OAAO,GAAG,IAAI,CAACnE,4BAA4B,CAAChsB,cAAc,CAAC;MACjE,MAAMowB,IAAI,GAAG;QAAE,GAAG,IAAI,CAACpE;MAA6B,CAAC;MACrD,IAAImE,OAAO,IAAIA,OAAO,CAACzxB,GAAG,KAAKA,GAAG,EAAE;QAClC,MAAMxhB,mEAAQ,CAAC8iC,gBAAgB,CAAC,IAAI,CAACz6B,kBAAkB,EAAE,EAAE,CAAC,CAACqG,KAAK,CAAC9L,KAAK,IAAI,IAAI,CAAC+M,cAAc,CAAC/M,KAAK,CAACU,OAAO,IAAI,QAAQ,CAAC,CAAC;QAC3H,OAAO4vC,IAAI,CAACpwB,cAAc,CAAC;QAC3B,IAAI,CAAC1R,eAAe,CAAC,OAAO,CAAC;MAC/B,CAAC,MAAM;QACL,IAAI;UACF,MAAMpR,mEAAQ,CAAC8iC,gBAAgB,CAAC,IAAI,CAACz6B,kBAAkB,EAAEmZ,GAAG,CAAC;QAC/D,CAAC,CAAC,OAAO5e,KAAK,EAAE;UACd,IAAI,CAAC+M,cAAc,CAAC/M,KAAK,CAACU,OAAO,IAAI,MAAM,CAAC;UAC5C;QACF;QACA4vC,IAAI,CAACpwB,cAAc,CAAC,GAAG;UACrBtB,GAAG;UACH/W,EAAE,EAAE+W,GAAG;UACP9Y,IAAI,EAAE4iC,kBAAkB,CAAChoC,OAAO,CAAC;UACjCL,IAAI,EAAEK,OAAO,CAACL,IAAI,IAAI,MAAM;UAC5BuF,UAAU,EAAElF,OAAO,CAACkF,UAAU,GAAG;YAAE,GAAGlF,OAAO,CAACkF;UAAW,CAAC,GAAG,IAAI;UACjEgU,UAAU,EAAElZ,OAAO,CAACkZ,UAAU,IAAIlZ,OAAO,CAACsO,IAAI,IAAI,EAAE;UACpDtE,SAAS,EAAEzI,MAAM,CAACvB,OAAO,CAAC49B,gBAAgB,IAAI59B,OAAO,CAACgK,SAAS,IAAI+C,IAAI,CAAC8B,GAAG,CAAC,CAAC;QAC/E,CAAC;QACD,IAAI,CAACf,eAAe,CAAC,OAAO,CAAC;MAC/B;MACA,IAAI,CAAC09B,4BAA4B,GAAGoE,IAAI;MACxCpI,mBAAmB,CAACoI,IAAI,CAAC;IAC3B,CAAC;IACD,MAAMC,kBAAkBA,CAAA,EAAG;MACzB,MAAMnzC,mEAAQ,CAAC8iC,gBAAgB,CAAC,IAAI,CAACz6B,kBAAkB,EAAE,EAAE,CAAC,CAACqG,KAAK,CAAC9L,KAAK,IAAI,IAAI,CAAC+M,cAAc,CAAC/M,KAAK,CAACU,OAAO,IAAI,QAAQ,CAAC,CAAC;MAC3H,MAAM4vC,IAAI,GAAG;QAAE,GAAG,IAAI,CAACpE;MAA6B,CAAC;MACrD,OAAOoE,IAAI,CAAC,IAAI,CAACppB,QAAQ,CAAC;MAC1B,IAAI,CAACglB,4BAA4B,GAAGoE,IAAI;MACxCpI,mBAAmB,CAACoI,IAAI,CAAC;MACzB,IAAI,CAAC9hC,eAAe,CAAC,OAAO,CAAC;IAC/B,CAAC;IACDgiC,iBAAiBA,CAAC5xB,GAAG,EAAE;MACrB,IAAI,CAACutB,iBAAiB,GAAG7sC,MAAM,CAACsf,GAAG,IAAI,EAAE,CAAC;IAC5C,CAAC;IACDgD,cAAcA,CAAChD,GAAG,EAAE;MAClB,MAAM5f,KAAK,GAAGM,MAAM,CAACsf,GAAG,IAAI,EAAE,CAAC;MAC/B,IAAI,CAAC5f,KAAK,EAAE;QACV;MACF;MACA,IAAI,CAACitC,gBAAgB,GAAG,IAAI,CAACA,gBAAgB,CAAC5iC,MAAM,CAAC3I,OAAO,IAAIA,OAAO,CAACke,GAAG,KAAK5f,KAAK,CAAC;MACtF,IAAI,IAAI,CAACmtC,iBAAiB,KAAKntC,KAAK,EAAE;QACpC,IAAI,CAACmtC,iBAAiB,GAAG,IAAI,CAACF,gBAAgB,CAAC,CAAC,CAAC,EAAErtB,GAAG,IAAI,EAAE;MAC9D;MACAkpB,qBAAqB,CAAC,IAAI,CAACmE,gBAAgB,CAAC;IAC9C,CAAC;IACDgE,YAAYA,CAACvvC,OAAO,EAAE;MACpB,IAAI,CAAC8qC,aAAa,GAAG;QACnB,GAAG9qC,OAAO;QACV+vC,SAAS,EAAE9H,WAAW,CAACjoC,OAAO;MAChC,CAAC;MACD,IAAI,CAAC8N,eAAe,CAAC,WAAW,CAAC;IACnC,CAAC;IACDkiC,WAAWA,CAAA,EAAG;MACZ,IAAI,CAAClF,aAAa,GAAG,IAAI;IAC3B,CAAC;IACD0E,kBAAkBA,CAACxvC,OAAO,GAAG,IAAI,EAAE;MACjC,IAAI,CAACsb,aAAa,GAAG,IAAI;MACzB,IAAItb,OAAO,EAAE;QACX,MAAMke,GAAG,GAAG2pB,gBAAgB,CAAC7nC,OAAO,CAAC;QACrC,IAAI,CAACoY,kBAAkB,GAAG8F,GAAG,GAAG,CAACA,GAAG,CAAC,GAAG,EAAE;MAC5C;IACF,CAAC;IACD+xB,qBAAqBA,CAACjwC,OAAO,EAAE;MAC7B,MAAMke,GAAG,GAAG2pB,gBAAgB,CAAC7nC,OAAO,CAAC;MACrC,IAAI,CAACke,GAAG,EAAE;QACR;MACF;MACA,MAAMlQ,QAAQ,GAAG,IAAIC,GAAG,CAAC,IAAI,CAACmK,kBAAkB,CAAC;MACjD,IAAIpK,QAAQ,CAACE,GAAG,CAACgQ,GAAG,CAAC,EAAE;QACrBlQ,QAAQ,CAACG,MAAM,CAAC+P,GAAG,CAAC;MACtB,CAAC,MAAM;QACLlQ,QAAQ,CAACI,GAAG,CAAC8P,GAAG,CAAC;MACnB;MACA,IAAI,CAAC9F,kBAAkB,GAAG/J,KAAK,CAACC,IAAI,CAACN,QAAQ,CAAC;MAC9C,IAAI,CAACsN,aAAa,GAAG,IAAI,CAAClD,kBAAkB,CAAC7Z,MAAM,GAAG,CAAC;IACzD,CAAC;IACD2xC,cAAcA,CAAA,EAAG;MACf,IAAI,CAAC50B,aAAa,GAAG,KAAK;MAC1B,IAAI,CAAClD,kBAAkB,GAAG,EAAE;IAC9B,CAAC;IACD+3B,oBAAoBA,CAAA,EAAG;MACrB,OAAO,IAAI,CAACnB,YAAY,CAAC,IAAI,CAAC/C,gBAAgB,CAAC;IACjD,CAAC;IACDmE,sBAAsBA,CAAA,EAAG;MACvB,IAAI,CAAClB,cAAc,CAAC,IAAI,CAACjD,gBAAgB,CAAC;IAC5C,CAAC;IACDkD,YAAYA,CAACv5B,QAAQ,EAAE;MACrB,IAAI,CAACm1B,kBAAkB,GAAGn1B,QAAQ,CAACjN,MAAM,CAAC3I,OAAO,IAAIA,OAAO,EAAEoF,IAAI,IAAIpF,OAAO,EAAEkF,UAAU,EAAErB,GAAG,CAAC;MAC/F,IAAI,CAAC,IAAI,CAACknC,kBAAkB,CAACxsC,MAAM,EAAE;QACnC,IAAI,CAAC8N,cAAc,CAAC,UAAU,CAAC;MACjC;IACF,CAAC;IACDgkC,4BAA4BA,CAAA,EAAG;MAC7B,IAAI,CAAClB,YAAY,CAAC,IAAI,CAAClD,gBAAgB,CAAC;IAC1C,CAAC;IACDqE,aAAaA,CAAA,EAAG;MACd,IAAI,CAACvF,kBAAkB,GAAG,EAAE;IAC9B,CAAC;IACDkE,gBAAgBA,CAACjvC,OAAO,EAAE;MACxB,MAAMuwC,QAAQ,GAAGt6B,iBAAiB,CAACjW,OAAO,CAAC;MAC3C,IAAI,CAACuwC,QAAQ,IAAI,CAACvwC,OAAO,EAAEoF,IAAI,EAAE;QAC/B,IAAI,CAACiH,cAAc,CAAC,YAAY,CAAC;QACjC;MACF;MACA,IAAI,CAAC2+B,cAAc,GAAGhrC,OAAO;MAC7B,IAAI,CAACirC,WAAW,GAAGjrC,OAAO,CAACoF,IAAI,IAAI,EAAE;MACrC,IAAI,CAAC8lC,WAAW,GAAGqF,QAAQ,GAAG,QAAQ,GAAG,MAAM;IACjD,CAAC;IACDC,iBAAiBA,CAAA,EAAG;MAClB,IAAI,CAACxF,cAAc,GAAG,IAAI;MAC1B,IAAI,CAACC,WAAW,GAAG,EAAE;MACrB,IAAI,CAACC,WAAW,GAAG,EAAE;IACvB,CAAC;IACD,MAAMuF,mBAAmBA,CAAA,EAAG;MAC1B,MAAM9oC,YAAY,GAAG,IAAI,CAAC5C,kBAAkB;MAC5C,MAAM/E,OAAO,GAAG,IAAI,CAACgrC,cAAc;MACnC,MAAM5lC,IAAI,GAAG,IAAI,CAAC6lC,WAAW,CAACloC,IAAI,CAAC,CAAC;MACpC,MAAMwtC,QAAQ,GAAG,IAAI,CAACrF,WAAW,KAAK,QAAQ,IAAIj1B,iBAAiB,CAACjW,OAAO,CAAC;MAC5E,IAAI,CAAC2H,YAAY,IAAI,CAAC3H,OAAO,EAAE;QAC7B,IAAI,CAACwwC,iBAAiB,CAAC,CAAC;QACxB;MACF;MACA,IAAI,CAACprC,IAAI,EAAE;QACT,IAAI,CAACiH,cAAc,CAAC,UAAU,CAAC;QAC/B;MACF;MACA,IAAI,CAACkkC,QAAQ,IAAInrC,IAAI,KAAKxG,MAAM,CAACoB,OAAO,CAACoF,IAAI,IAAI,EAAE,CAAC,CAACrC,IAAI,CAAC,CAAC,EAAE;QAC3D,IAAI,CAACytC,iBAAiB,CAAC,CAAC;QACxB;MACF;MACA,IAAI;QACF,IAAID,QAAQ,EAAE;UACZ,MAAM,IAAI,CAACxD,sBAAsB,CAACplC,YAAY,EAAEvC,IAAI,CAAC;UACrD,IAAI,CAACorC,iBAAiB,CAAC,CAAC;UACxB,IAAI,CAAC1iC,eAAe,CAAC,OAAO,CAAC;UAC7B;QACF;QACA,MAAM8xB,aAAa,GAAG,MAAMljC,mEAAQ,CAACw+B,WAAW,CAACvzB,YAAY,EAAE3H,OAAO,EAAEoF,IAAI,CAAC;QAC7E,IAAI,CAACuoC,mBAAmB,CAAChmC,YAAY,CAACR,EAAE,EAAEnH,OAAO,EAAE4/B,aAAa,CAAC;QACjE,IAAIkI,wBAAwB,CAAClI,aAAa,CAAC,IAAIr+B,MAAM,CAACoG,YAAY,CAACiH,SAAS,IAAI,CAAC,CAAC,EAAE;UAClFjH,YAAY,CAAC6Z,QAAQ,GAAGoe,aAAa,CAACx6B,IAAI;UAC1CuC,YAAY,CAACiH,SAAS,GAAGk5B,wBAAwB,CAAClI,aAAa,CAAC;UAChE0H,uBAAuB,CAAC,IAAI,CAACxrC,aAAa,CAAC;QAC7C;QACA,IAAI,CAAC00C,iBAAiB,CAAC,CAAC;QACxB,IAAI,CAAC1iC,eAAe,CAAC,KAAK,CAAC;MAC7B,CAAC,CAAC,OAAOxO,KAAK,EAAE;QACd,IAAI,CAAC+M,cAAc,CAAC/M,KAAK,CAACU,OAAO,IAAI,MAAM,CAAC;MAC9C;IACF,CAAC;IACD,MAAM0wC,eAAeA,CAACC,oBAAoB,EAAE;MAC1C,MAAM1pC,MAAM,GAAG,IAAI,CAACnL,aAAa,CAACyL,IAAI,CAACI,YAAY,IAAIA,YAAY,CAACR,EAAE,KAAKwpC,oBAAoB,CAAC;MAChG,IAAI,CAAC1pC,MAAM,IAAI,CAAC,IAAI,CAAC8jC,kBAAkB,CAACxsC,MAAM,EAAE;QAC9C;MACF;MACA,IAAI;QACF,KAAK,MAAMyB,OAAO,IAAI,IAAI,CAAC+qC,kBAAkB,EAAE;UAC7C,IAAI/qC,OAAO,CAACkF,UAAU,EAAErB,GAAG,EAAE;YAC3B,MAAMpB,QAAQ,GAAG,MAAMmuC,KAAK,CAAC9rC,+EAAe,CAAC9E,OAAO,CAACkF,UAAU,CAACrB,GAAG,CAAC,CAAC;YACrE,IAAI,CAACpB,QAAQ,CAAC8I,EAAE,EAAE,MAAM,IAAItK,KAAK,CAAC,QAAQ,CAAC;YAC3C,MAAM2tB,IAAI,GAAG,MAAMnsB,QAAQ,CAACmsB,IAAI,CAAC,CAAC;YAClC,MAAMjvB,IAAI,GAAGK,OAAO,CAACkF,UAAU,CAACvF,IAAI,IAAIK,OAAO,CAACL,IAAI,IAAI,MAAM;YAC9D,MAAM+R,IAAI,GAAG,IAAIM,IAAI,CACnB,CAAC4c,IAAI,CAAC,EACN5uB,OAAO,CAACkF,UAAU,CAACpC,IAAI,KAAKnD,IAAI,KAAK,OAAO,GAAG,UAAU,GAAG,MAAM,CAAC,EACnE;cAAEA,IAAI,EAAEK,OAAO,CAACkF,UAAU,CAACk7B,IAAI,IAAIxR,IAAI,CAACjvB,IAAI,IAAI;YAA2B,CAC7E,CAAC;YACD,MAAMkxC,IAAI,GAAG,MAAMn0C,mEAAQ,CAACq+B,qBAAqB,CAAC9zB,MAAM,EAAE;cAAEtH,IAAI;cAAE+R,IAAI;cAAEtM,IAAI,EAAEpF,OAAO,CAACoF,IAAI,IAAI;YAAG,CAAC,CAAC;YACnG,IAAIyrC,IAAI,EAAE9uC,MAAM,KAAK,QAAQ,EAAE,MAAM,IAAId,KAAK,CAAC4vC,IAAI,CAACvxC,KAAK,IAAI,MAAM,CAAC;UACtE,CAAC,MAAM,IAAIU,OAAO,CAACoF,IAAI,EAAE;YACvB,MAAM,IAAI,CAAC2nC,sBAAsB,CAAC9lC,MAAM,EAAEjH,OAAO,CAACoF,IAAI,CAAC;UACzD;QACF;QACA,IAAI,CAAC2lC,kBAAkB,GAAG,EAAE;QAC5B,IAAI,CAACmF,cAAc,CAAC,CAAC;QACrB,IAAI,CAACpiC,eAAe,CAAC,KAAK,CAAC;MAC7B,CAAC,CAAC,OAAOxO,KAAK,EAAE;QACd,IAAI,CAAC+M,cAAc,CAAC/M,KAAK,CAACU,OAAO,IAAI,MAAM,CAAC;MAC9C;IACF,CAAC;IACD,MAAMi7B,aAAaA,CAACj7B,OAAO,EAAE;MAC3B,MAAM2H,YAAY,GAAG,IAAI,CAAC5C,kBAAkB;MAC5C,IAAI,CAAC4C,YAAY,EAAE;QACjB;MACF;MACA,IAAI;QACF,MAAMjL,mEAAQ,CAACu+B,aAAa,CAACtzB,YAAY,EAAE3H,OAAO,CAAC;QACnD,IAAIA,OAAO,CAACgW,SAAS,KAAK,KAAK,EAAE;UAC/B,IAAI,CAACw3B,cAAc,CAAC7lC,YAAY,CAACR,EAAE,EAAE,CAACnH,OAAO,CAAC,CAAC;UAC/C,IAAI,CAAC8N,eAAe,CAAC,KAAK,CAAC;UAC3B,IAAI,CAAChC,kBAAkB,CAAC,CAAC;UACzB;QACF;QACA,IAAI,CAAC6hC,mBAAmB,CAAChmC,YAAY,CAACR,EAAE,EAAEnH,OAAO,EAAE;UACjD+B,MAAM,EAAE,UAAU;UAClByV,cAAc,EAAE,EAAE;UAClBE,QAAQ,EAAE,IAAI;UACdgI,YAAY,EAAE;QAChB,CAAC,CAAC;QACF,IAAI,CAAC5R,eAAe,CAAC,KAAK,CAAC;MAC7B,CAAC,CAAC,OAAOxO,KAAK,EAAE;QACd,IAAI,CAAC+M,cAAc,CAAC/M,KAAK,CAACU,OAAO,IAAI,MAAM,CAAC;MAC9C;IACF,CAAC;IACD,MAAM+iB,WAAWA,CAACoc,OAAO,GAAG,CAAC,CAAC,EAAE;MAC9B,MAAMjkC,OAAO,GAAGD,0EAAe,CAAC,CAAC;MACjC,IAAI,CAACC,OAAO,CAAC6M,MAAM,EAAE;QACnB,IAAI,CAACsE,cAAc,CAAC,MAAM,CAAC;QAC3B,OAAO,KAAK;MACd;MACA,IAAI;QACF,MAAM1E,YAAY,GAAG,MAAMjL,mEAAQ,CAACqmB,WAAW,CAAC7nB,OAAO,CAAC6M,MAAM,EAAEo3B,OAAO,CAAC;QACxE,IAAI,CAACvzB,kBAAkB,CAACjE,YAAY,CAAC;QACrC,IAAI,CAACqZ,qBAAqB,CAACrZ,YAAY,CAACR,EAAE,CAAC;QAC3C,IAAI,CAAC2G,eAAe,CAACqxB,OAAO,CAAC7X,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;QAC1D,IAAI,CAACrrB,0BAA0B,CAAC,CAAC;QACjC,OAAO,IAAI;MACb,CAAC,CAAC,OAAOqD,KAAK,EAAE;QACd,IAAI,CAAC+M,cAAc,CAAC/M,KAAK,CAACU,OAAO,KAAKm/B,OAAO,CAAC7X,OAAO,GAAG,SAAS,GAAG,QAAQ,CAAC,CAAC;QAC9E,OAAO,KAAK;MACd;IACF,CAAC;IACD,MAAMtE,SAASA,CAAC6d,QAAQ,EAAE;MACxB,MAAM3lC,OAAO,GAAGD,0EAAe,CAAC,CAAC;MACjC,IAAI,CAACC,OAAO,CAAC6M,MAAM,EAAE;QACnB,IAAI,CAACsE,cAAc,CAAC,MAAM,CAAC;QAC3B,OAAO,KAAK;MACd;MACA,IAAI;QACF,MAAM1E,YAAY,GAAG,MAAMjL,mEAAQ,CAACsmB,SAAS,CAAC9nB,OAAO,CAAC6M,MAAM,EAAE84B,QAAQ,CAAC;QACvE,IAAI,CAACj1B,kBAAkB,CAACjE,YAAY,CAAC;QACrC,IAAI,CAACqZ,qBAAqB,CAACrZ,YAAY,CAACR,EAAE,CAAC;QAC3C,IAAI,CAAC2G,eAAe,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC7R,0BAA0B,CAAC,CAAC;QACjC,OAAO,IAAI;MACb,CAAC,CAAC,OAAOqD,KAAK,EAAE;QACd,IAAI,CAAC+M,cAAc,CAAC/M,KAAK,CAACU,OAAO,IAAI,QAAQ,CAAC;QAC9C,OAAO,KAAK;MACd;IACF,CAAC;IACD,MAAMqnB,gBAAgBA,CAACyZ,SAAS,EAAE17B,IAAI,EAAE;MACtC,MAAMlK,OAAO,GAAGD,0EAAe,CAAC,CAAC;MACjC,IAAI,CAACC,OAAO,CAAC6M,MAAM,EAAE;QACnB,IAAI,CAACsE,cAAc,CAAC,MAAM,CAAC;QAC3B,OAAO,KAAK;MACd;MACA,IAAI;QACF,MAAMnM,MAAM,GAAG,MAAMxD,mEAAQ,CAAC2qB,gBAAgB,CAACnsB,OAAO,CAAC6M,MAAM,EAAE+4B,SAAS,EAAE17B,IAAI,CAAC;QAC/E,MAAM0rC,YAAY,GAAGvvC,MAAM,CAACrB,MAAM,CAAC4wC,YAAY,IAAI,CAAC,CAAC;QACrD,MAAMC,WAAW,GAAGxvC,MAAM,CAACrB,MAAM,CAAC6wC,WAAW,IAAI,CAAC,CAAC;QACnD,IAAI,CAACjjC,eAAe,CAACijC,WAAW,GAAG,CAAC,GAAG,OAAOD,YAAY,SAASC,WAAW,IAAI,GAAG,OAAOD,YAAY,IAAI,CAAC;QAC7G,IAAI,CAAC70C,0BAA0B,CAAC,CAAC;QACjC,OAAO,IAAI;MACb,CAAC,CAAC,OAAOqD,KAAK,EAAE;QACd,IAAI,CAAC+M,cAAc,CAAC/M,KAAK,CAACU,OAAO,IAAI,MAAM,CAAC;QAC5C,OAAO,KAAK;MACd;IACF,CAAC;IACD,MAAMsP,UAAUA,CAAC3H,YAAY,EAAE;MAC7B,MAAMzM,OAAO,GAAGD,0EAAe,CAAC,CAAC;MACjC,IAAI,CAACC,OAAO,CAAC6M,MAAM,IAAI,CAACJ,YAAY,EAAEV,MAAM,EAAE;QAC5C,IAAI,CAACoF,cAAc,CAAC,QAAQ,CAAC;QAC7B,OAAO,KAAK;MACd;MACA,IAAI;QACF,MAAM3P,mEAAQ,CAAC4S,UAAU,CAACpU,OAAO,CAAC6M,MAAM,EAAEJ,YAAY,CAACV,MAAM,CAAC;QAC9D,IAAI,CAAC+lC,kBAAkB,CAACrlC,YAAY,CAACR,EAAE,CAAC;QACxC,IAAI,CAAC2G,eAAe,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC7R,0BAA0B,CAAC,CAAC;QACjC,OAAO,IAAI;MACb,CAAC,CAAC,OAAOqD,KAAK,EAAE;QACd,IAAI,CAAC+M,cAAc,CAAC/M,KAAK,CAACU,OAAO,IAAI,QAAQ,CAAC;QAC9C,OAAO,KAAK;MACd;IACF,CAAC;IACD,MAAMwP,YAAYA,CAAC7H,YAAY,EAAE;MAC/B,MAAMzM,OAAO,GAAGD,0EAAe,CAAC,CAAC;MACjC,IAAI,CAACC,OAAO,CAAC6M,MAAM,IAAI,CAACJ,YAAY,EAAEV,MAAM,EAAE;QAC5C,IAAI,CAACoF,cAAc,CAAC,QAAQ,CAAC;QAC7B,OAAO,KAAK;MACd;MACA,IAAI;QACF,MAAM3P,mEAAQ,CAAC8S,YAAY,CAACtU,OAAO,CAAC6M,MAAM,EAAEJ,YAAY,CAACV,MAAM,CAAC;QAChE,IAAI,CAAC+lC,kBAAkB,CAACrlC,YAAY,CAACR,EAAE,CAAC;QACxC,IAAI,CAAC2G,eAAe,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC7R,0BAA0B,CAAC,CAAC;QACjC,OAAO,IAAI;MACb,CAAC,CAAC,OAAOqD,KAAK,EAAE;QACd,IAAI,CAAC+M,cAAc,CAAC/M,KAAK,CAACU,OAAO,IAAI,QAAQ,CAAC;QAC9C,OAAO,KAAK;MACd;IACF;EACF;AACF,CAAC,CAAC,C;;;;;;;;;;;;ACr3CkC;AAE7B,MAAMpE,kBAAkB,GAAGiqC,4DAAW,CAAC,YAAY,EAAE;EAC1DvnB,KAAK,EAAEA,CAAA,MAAO;IACZ8L,OAAO,EAAE;EACX,CAAC,CAAC;EACFmc,OAAO,EAAE;IACPxlB,YAAYA,CAAA,EAAG;MACb,IAAI,CAACqJ,OAAO,GAAG,UAAU;IAC3B,CAAC;IACDP,YAAYA,CAAA,EAAG;MACb,IAAI,CAACO,OAAO,GAAG,UAAU;IAC3B,CAAC;IACD4mB,aAAaA,CAAA,EAAG;MACd,IAAI,CAAC5mB,OAAO,GAAG,WAAW;IAC5B;EACF;AACF,CAAC,CAAC,C;;;;;;;;;;;;;;;;;ACjBkC;AACW;AACV;AAErC,MAAM6mB,WAAW,GAAG,oBAAoB;AAExC,SAASC,uBAAuBA,CAAC9uC,QAAQ,EAAE;EACzC,OAAOA,QAAQ,IAAI,EAAE;AACvB;AAEA,SAAS+uC,mBAAmBA,CAACC,eAAe,EAAEC,eAAe,EAAE;EAC7D,OAAOH,uBAAuB,CAACE,eAAe,CAAC,IAAIF,uBAAuB,CAACG,eAAe,CAAC;AAC7F;AAEA,SAAS/X,gBAAgBA,CAACC,OAAO,EAAE;EACjC,OAAO36B,MAAM,CAAC26B,OAAO,IAAI,EAAE,CAAC,CAAC34B,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;AACpD;AAEO,MAAM3F,eAAe,GAAG4qC,4DAAW,CAAC,SAAS,EAAE;EACpDvnB,KAAK,EAAEA,CAAA,MAAO;IACZ5c,eAAe,EAAE,KAAK;IACtB1C,UAAU,EAAE,KAAK;IACjB8K,SAAS,EAAE,KAAK;IAChBD,oBAAoB,EAAE,KAAK;IAC3B9B,MAAM,EAAE,EAAE;IACV/G,KAAK,EAAE,EAAE;IACTmB,WAAW,EAAE,EAAE;IACfC,QAAQ,EAAE,EAAE;IACZ9C,KAAK,EAAE,EAAE;IACTgyC,UAAU,EAAE,EAAE;IACdpL,WAAW,EAAE;EACf,CAAC,CAAC;EACFK,OAAO,EAAE;IACPprC,OAAOA,CAAA,EAAG;MACR,MAAM+L,GAAG,GAAGmtB,YAAY,CAACC,OAAO,CAAC2c,WAAW,CAAC;MAC7C,IAAI,CAAC/pC,GAAG,EAAE;QACR;MACF;MAEA,IAAI;QACF,MAAMhM,OAAO,GAAGye,IAAI,CAACC,KAAK,CAAC1S,GAAG,CAAC;QAC/B,IAAIhM,OAAO,CAAC80B,SAAS,KAAKvzB,uDAAS,CAACuzB,SAAS,EAAE;UAC7CqE,YAAY,CAACkd,UAAU,CAACN,WAAW,CAAC;UACpC;QACF;QAEA,IAAI/1C,OAAO,CAAC6M,MAAM,IAAI7M,OAAO,CAAC8F,KAAK,EAAE;UACnC,IAAI,CAAC9F,OAAO,CAAC6+B,QAAQ,EAAE;YACrB1F,YAAY,CAACkd,UAAU,CAACN,WAAW,CAAC;YACpC;UACF;UACA,IAAI,CAAClpC,MAAM,GAAG7M,OAAO,CAAC6M,MAAM;UAC5B,IAAI,CAAC/G,KAAK,GAAG9F,OAAO,CAAC8F,KAAK;UAC1B,IAAI,CAACmB,WAAW,GAAGjH,OAAO,CAACiH,WAAW,IAAIjH,OAAO,CAAC6M,MAAM;UACxD,IAAI,CAAC3F,QAAQ,GAAG8uC,uBAAuB,CAACh2C,OAAO,CAACkH,QAAQ,CAAC;UACzD,IAAI,CAACV,eAAe,GAAG,IAAI;UAC3BhF,kEAAQ,CAAC0hC,eAAe,CAACljC,OAAO,CAAC6+B,QAAQ,CAAC;UAC1C,IAAI,CAAC4E,OAAO,CAAC,CAAC;UACd,IAAI,CAAClV,cAAc,CAAC,CAAC;QACvB;MACF,CAAC,CAAC,OAAOnqB,KAAK,EAAE;QACd+0B,YAAY,CAACkd,UAAU,CAACN,WAAW,CAAC;MACtC;IACF,CAAC;IAED,MAAMrxC,iBAAiBA,CAAC25B,OAAO,EAAEl8B,QAAQ,EAAEsC,IAAI,GAAG25B,gBAAgB,CAACC,OAAO,CAAC,EAAE;MAC3E,IAAI,CAACj6B,KAAK,GAAG,EAAE;MACf,IAAI,CAACN,UAAU,GAAG,IAAI;MACtB,IAAI;QACF,MAAMkB,MAAM,GAAG,MAAMxD,kEAAQ,CAACkD,iBAAiB,CAAC25B,OAAO,EAAEl8B,QAAQ,EAAEsC,IAAI,CAAC;QACxE,IAAI,CAAC6xC,gBAAgB,CAACtxC,MAAM,CAAC;QAC7B,MAAM,IAAI,CAACy+B,OAAO,CAAC,CAAC;MACtB,CAAC,CAAC,OAAOr/B,KAAK,EAAE;QACd,IAAI,CAACA,KAAK,GAAGA,KAAK,CAACU,OAAO,IAAI,MAAM;MACtC,CAAC,SAAS;QACR,IAAI,CAAChB,UAAU,GAAG,KAAK;MACzB;IACF,CAAC;IAED,MAAMk7B,aAAaA,CAACX,OAAO,EAAEn8B,IAAI,EAAE;MACjC,IAAI,CAACkC,KAAK,GAAG,EAAE;MACf,IAAI,CAACN,UAAU,GAAG,IAAI;MACtB,IAAI;QACF,MAAMkB,MAAM,GAAG,MAAMxD,kEAAQ,CAACw9B,aAAa,CAACX,OAAO,EAAEn8B,IAAI,CAAC;QAC1D,IAAI,CAACo0C,gBAAgB,CAACtxC,MAAM,CAAC;QAC7B,MAAM,IAAI,CAACy+B,OAAO,CAAC,CAAC;MACtB,CAAC,CAAC,OAAOr/B,KAAK,EAAE;QACd,IAAI,CAACA,KAAK,GAAGA,KAAK,CAACU,OAAO,IAAI,MAAM;MACtC,CAAC,SAAS;QACR,IAAI,CAAChB,UAAU,GAAG,KAAK;MACzB;IACF,CAAC;IAED,MAAMiD,sBAAsBA,CAAC/B,MAAM,EAAE;MACnC,IAAI,CAACZ,KAAK,GAAG,EAAE;MACf,IAAI,CAACN,UAAU,GAAG,IAAI;MACtB,IAAI;QACF,IAAI,CAACwyC,gBAAgB,CAACtxC,MAAM,CAAC;QAC7B,MAAM,IAAI,CAACy+B,OAAO,CAAC,CAAC;MACtB,CAAC,CAAC,OAAOr/B,KAAK,EAAE;QACd,IAAI,CAACA,KAAK,GAAGA,KAAK,CAACU,OAAO,IAAI,QAAQ;MACxC,CAAC,SAAS;QACR,IAAI,CAAChB,UAAU,GAAG,KAAK;MACzB;IACF,CAAC;IAED,MAAMmB,QAAQA,CAACyB,OAAO,EAAE;MACtB,IAAI,CAACtC,KAAK,GAAG,EAAE;MACf,IAAI,CAACN,UAAU,GAAG,IAAI;MACtB,IAAI;QACF,MAAMkB,MAAM,GAAG,MAAMxD,kEAAQ,CAACyD,QAAQ,CAACyB,OAAO,CAAC;QAC/C,IAAI,CAAC4vC,gBAAgB,CAACtxC,MAAM,CAAC;QAC7B,MAAM,IAAI,CAACy+B,OAAO,CAAC,CAAC;QACpB,OAAOz+B,MAAM;MACf,CAAC,CAAC,OAAOZ,KAAK,EAAE;QACd,IAAI,CAACA,KAAK,GAAGA,KAAK,CAACU,OAAO,IAAI,MAAM;QACpC,OAAO,IAAI;MACb,CAAC,SAAS;QACR,IAAI,CAAChB,UAAU,GAAG,KAAK;MACzB;IACF,CAAC;IAEDwyC,gBAAgBA,CAACtxC,MAAM,EAAE;MACvB,IAAI,CAAC6H,MAAM,GAAG7H,MAAM,CAAC6H,MAAM,IAAI7H,MAAM,CAACuH,GAAG,IAAIvH,MAAM,CAACiH,EAAE,IAAI,EAAE;MAC5D,IAAI,CAACnG,KAAK,GAAGd,MAAM,CAACc,KAAK,IAAId,MAAM,CAAC8B,OAAO,IAAI,EAAE;MACjD,IAAI,CAACG,WAAW,GAAGjC,MAAM,CAACiC,WAAW,IAAIjC,MAAM,CAACgC,QAAQ,IAAIhC,MAAM,CAAC4C,IAAI,IAAI,IAAI,CAACiF,MAAM;MACtF,IAAI,CAAC3F,QAAQ,GAAG8uC,uBAAuB,CAAChxC,MAAM,CAACkC,QAAQ,CAAC;MACxD,IAAI,CAACV,eAAe,GAAGyH,OAAO,CAAC,IAAI,CAACpB,MAAM,IAAI,IAAI,CAAC/G,KAAK,CAAC;MACzD,IAAI,CAACywC,cAAc,CAAC,CAAC;IACvB,CAAC;IAEDA,cAAcA,CAAA,EAAG;MACfpd,YAAY,CAACI,OAAO,CAACwc,WAAW,EAAEt3B,IAAI,CAAC+a,SAAS,CAAC;QAC/C3sB,MAAM,EAAE,IAAI,CAACA,MAAM;QACnB/G,KAAK,EAAE,IAAI,CAACA,KAAK;QACjBmB,WAAW,EAAE,IAAI,CAACA,WAAW;QAC7BC,QAAQ,EAAE,IAAI,CAACA,QAAQ;QACvB23B,QAAQ,EAAEr9B,kEAAQ,CAACs9B,WAAW,CAAC,CAAC;QAChChK,SAAS,EAAEvzB,uDAAS,CAACuzB;MACvB,CAAC,CAAC,CAAC;IACL,CAAC;IAED0hB,YAAYA,CAACn3B,OAAO,EAAE;MACpB,IAAI,CAACA,OAAO,EAAE;QACZ;MACF;MACA,IAAI,CAACxS,MAAM,GAAGwS,OAAO,CAACxS,MAAM,IAAIwS,OAAO,CAAC9S,GAAG,IAAI,IAAI,CAACM,MAAM;MAC1D,IAAI,CAAC5F,WAAW,GAAGoY,OAAO,CAACpY,WAAW,IAAIoY,OAAO,CAACzX,IAAI,IAAI,IAAI,CAACX,WAAW,IAAI,IAAI,CAAC4F,MAAM;MACzF,IAAI,CAAC3F,QAAQ,GAAG+uC,mBAAmB,CAAC52B,OAAO,CAACnY,QAAQ,EAAE,IAAI,CAACA,QAAQ,CAAC;MACpE,IAAI,CAACqvC,cAAc,CAAC,CAAC;IACvB,CAAC;IAED,MAAMhoB,cAAcA,CAAA,EAAG;MACrB,IAAI,CAAC,IAAI,CAAC1hB,MAAM,EAAE;QAChB,OAAO,IAAI;MACb;MACA,IAAI;QACF,MAAMwS,OAAO,GAAG,MAAM7d,kEAAQ,CAACm+B,UAAU,CAAC,IAAI,CAAC9yB,MAAM,CAAC;QACtD,IAAI,CAAC2pC,YAAY,CAACn3B,OAAO,CAAC;QAC1B,OAAOA,OAAO;MAChB,CAAC,CAAC,OAAOjb,KAAK,EAAE;QACd,OAAO,IAAI;MACb;IACF,CAAC;IAED,MAAM0vB,WAAWA,CAAC;MAAE7sB,WAAW;MAAE8sB;IAAa,CAAC,EAAE;MAC/C,IAAI,CAAC,IAAI,CAAClnB,MAAM,EAAE;QAChB,MAAM,IAAI9G,KAAK,CAAC,MAAM,CAAC;MACzB;MACA,MAAMsZ,OAAO,GAAG,MAAM7d,kEAAQ,CAACs+B,aAAa,CAAC,IAAI,CAACjzB,MAAM,EAAE;QACxD5F,WAAW;QACX8sB;MACF,CAAC,CAAC;MACF,IAAI,CAACyiB,YAAY,CAACn3B,OAAO,CAAC;MAC1B,OAAOA,OAAO;IAChB,CAAC;IAED,MAAM4U,cAAcA,CAAC;MAAExG,WAAW;MAAEC;IAAY,CAAC,EAAE;MACjD,IAAI,CAAC,IAAI,CAAC7gB,MAAM,EAAE;QAChB,MAAM,IAAI9G,KAAK,CAAC,MAAM,CAAC;MACzB;MACA,MAAMvE,kEAAQ,CAACyyB,cAAc,CAAC;QAAExG,WAAW;QAAEC;MAAY,CAAC,CAAC;MAC3D,MAAM,IAAI,CAACwG,MAAM,CAAC,CAAC;MACnB,OAAO,IAAI;IACb,CAAC;IAED,MAAMoL,qBAAqBA,CAAC;MAAExyB,MAAM;MAAEyyB,SAAS;MAAE7R;IAAY,CAAC,EAAE;MAC9D,MAAMlsB,kEAAQ,CAAC89B,qBAAqB,CAAC;QAAExyB,MAAM;QAAEyyB,SAAS;QAAE7R;MAAY,CAAC,CAAC;MACxE,OAAO,IAAI;IACb,CAAC;IAED,MAAM+V,OAAOA,CAAA,EAAG;MACd,IAAI,CAAC,IAAI,CAAC52B,MAAM,IAAI,CAAC,IAAI,CAAC/G,KAAK,EAAE;QAC/B;MACF;MACA,MAAMtE,kEAAQ,CAAC4hC,SAAS,CAAC,CAAC;MAC1B,IAAI,CAACgT,UAAU,GAAG50C,kEAAQ,CAAC2hC,aAAa,CAAC,CAAC;MAC1C,IAAI,CAACmI,YAAY,CAAC,CAAC;MACnB,MAAM9pC,kEAAQ,CAACiiC,OAAO,CAAC,IAAI,CAAC52B,MAAM,EAAE,IAAI,CAAC/G,KAAK,CAAC;IACjD,CAAC;IAEDwlC,YAAYA,CAAA,EAAG;MACb,IAAI,IAAI,CAACN,WAAW,EAAE;QACpB;MACF;MACA,IAAI,CAACA,WAAW,GAAG,IAAI;MACvBxpC,kEAAQ,CAAC8kC,EAAE,CAAC,yBAAyB,EAAEz/B,MAAM,IAAI;QAC/C,IAAI,CAAC+H,SAAS,GAAG/H,MAAM,CAAC+H,SAAS;QACjC,IAAI,CAACD,oBAAoB,GAAG9H,MAAM,CAAC4H,UAAU,KAAK5H,MAAM,CAAC+H,SAAS,GAAG,KAAK,GAAG,KAAK,CAAC;MACrF,CAAC,CAAC;IACJ,CAAC;IAED,MAAMslB,MAAMA,CAAA,EAAG;MACb,IAAI;QACF,MAAM1yB,kEAAQ,CAAC0yB,MAAM,GAAG,CAAC;MAC3B,CAAC,CAAC,OAAO9vB,KAAK,EAAE;QACd,IAAI,CAACA,KAAK,GAAGA,KAAK,CAACU,OAAO,IAAI,QAAQ;MACxC,CAAC,SAAS;QACRtD,kEAAQ,CAACmiC,UAAU,CAAC,CAAC;QACrBxK,YAAY,CAACkd,UAAU,CAACN,WAAW,CAAC;QACpC,IAAI,CAACU,MAAM,CAAC,CAAC;MACf;IACF;EACF;AACF,CAAC,CAAC,C;;;;;;;;;;;;AChO+D;AACL;;AAE5D,oBAAoB,4FAAM;;AAE1B,sDAAe,W;;;;;;;;ACLwD;AACL;;AAElE,oBAAoB,kGAAM;;AAE1B,sDAAe,W;;;;;;;;ACLwD;AACL;;AAElE,oBAAoB,kGAAM;;AAE1B,sDAAe,W;;;;;;;;ACLwD;AACL;;AAElE,oBAAoB,kGAAM;;AAE1B,sDAAe,W;;;;;;;;ACL8D;AACL;;AAExE,oBAAoB,wGAAM;;AAE1B,sDAAe,W;;;;;;;;ACL0D;AACL;;AAEpE,oBAAoB,oGAAM;;AAE1B,sDAAe,W;;;;;;;;ACL2D;AACL;;AAErE,oBAAoB,qGAAM;;AAE1B,sDAAe,W;;;;;;;;ACL2D;AACL;;AAErE,oBAAoB,qGAAM;;AAE1B,sDAAe,W;;;;;;;;ACL4D;AACL;;AAEtE,oBAAoB,sGAAM;;AAE1B,sDAAe,W;;;;;;;;ACL0D;AACL;;AAEpE,oBAAoB,oGAAM;;AAE1B,sDAAe,W;;;;;;;;ACL+D;AACL;;AAEzE,oBAAoB,yGAAM;;AAE1B,sDAAe,W;;;;;;;;ACL6D;AACL;;AAEvE,oBAAoB,uGAAM;;AAE1B,sDAAe,W;;;;;;;;;;;ACLmO,C;;;;;;;;;;;ACAe,C;;;;;;;;;;;ACAA,C;;;;;;;;;;;ACAS,C;;;;;;;;;;;ACAM,C;;;;;;;;;;;ACAJ,C;;;;;;;;;;;ACAC,C;;;;;;;;;;;ACAA,C;;;;;;;;;;;ACAC,C;;;;;;;;;;;ACAF,C;;;;;;;;;;;ACAK,C;;;;;;;;;;;ACAF,C;;;;;;UCA/Q;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;UAEA;UACA;;;;;WCzBA;WACA;WACA;WACA;WACA,+BAA+B,wCAAwC;WACvE;WACA;WACA;WACA;WACA,iBAAiB,qBAAqB;WACtC;WACA;WACA;WACA;WACA,kBAAkB,qBAAqB;WACvC,oHAAoH,iDAAiD;WACrK;WACA,KAAK;WACL;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,E;;;;;WC7BA;WACA;WACA;WACA,eAAe,4BAA4B;WAC3C,eAAe;WACf,iCAAiC,WAAW;WAC5C;WACA,E;;;;;WCPA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,2CAA2C,0CAA0C;WACrF,MAAM;WACN,2CAA2C,gCAAgC;WAC3E;WACA,KAAK,yBAAyB;WAC9B;WACA,GAAG;WACH;WACA;WACA,0CAA0C,wCAAwC;WAClF;WACA;WACA;WACA,E;;;;;WCtBA;WACA;WACA;WACA;WACA,GAAG;WACH;WACA;WACA,CAAC,I;;;;;WCPD,8CAA8C,yD;;;;;WCA9C;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D,E;;;;;WCNA;WACA;WACA,kDAAkD,iDAAiD,sCAAsC;WACzI,E;;;;;WCHA;;WAEA;WACA;WACA;WACA;WACA;WACA;;WAEA;;WAEA;;WAEA;;WAEA;;WAEA;;WAEA,8CAA8C;;WAE9C;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,iCAAiC,mCAAmC;WACpE;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,MAAM,qBAAqB;WAC3B;WACA;WACA;WACA;WACA;WACA;WACA;WACA;;WAEA;WACA;WACA,4G;;;;;UElDA;UACA;UACA;UACA,+EAA+E,mCAAmC;UAClH","sources":["webpack://jc-web-im/./src/App.vue","webpack://jc-web-im/./src/components/ChatShell.vue","webpack://jc-web-im/./src/components/LoginView.vue","webpack://jc-web-im/./src/components/chat/ChatPanel.vue","webpack://jc-web-im/./src/components/chat/MessageComposer.vue","webpack://jc-web-im/./src/components/chat/MessageList.vue","webpack://jc-web-im/./src/components/contacts/ContactPanel.vue","webpack://jc-web-im/./src/components/favorites/FavoriteList.vue","webpack://jc-web-im/./src/components/favorites/FavoritePanel.vue","webpack://jc-web-im/./src/components/sidebar/ContactList.vue","webpack://jc-web-im/./src/components/sidebar/ConversationList.vue","webpack://jc-web-im/./src/components/sidebar/NavigationRail.vue","webpack://jc-web-im/./src/config.js","webpack://jc-web-im/./src/main.js","webpack://jc-web-im/./src/services/appServerClient.js","webpack://jc-web-im/./src/services/documentedHttpImClient.js","webpack://jc-web-im/./src/services/httpImClient.js","webpack://jc-web-im/./src/services/imClient.js","webpack://jc-web-im/./src/services/longConnectionImClient.js","webpack://jc-web-im/./src/services/mediaProxy.js","webpack://jc-web-im/./src/services/realtimeNotifications.js","webpack://jc-web-im/./src/stores/contacts.js","webpack://jc-web-im/./src/stores/conversations.js","webpack://jc-web-im/./src/stores/navigation.js","webpack://jc-web-im/./src/stores/session.js","webpack://jc-web-im/./src/App.vue?7ccd","webpack://jc-web-im/./src/components/ChatShell.vue?96ef","webpack://jc-web-im/./src/components/LoginView.vue?3311","webpack://jc-web-im/./src/components/chat/ChatPanel.vue?ffa3","webpack://jc-web-im/./src/components/chat/MessageComposer.vue?d45c","webpack://jc-web-im/./src/components/chat/MessageList.vue?73ad","webpack://jc-web-im/./src/components/contacts/ContactPanel.vue?11f7","webpack://jc-web-im/./src/components/favorites/FavoriteList.vue?7e83","webpack://jc-web-im/./src/components/favorites/FavoritePanel.vue?9ce0","webpack://jc-web-im/./src/components/sidebar/ContactList.vue?8b7f","webpack://jc-web-im/./src/components/sidebar/ConversationList.vue?8a4a","webpack://jc-web-im/./src/components/sidebar/NavigationRail.vue?e8e6","webpack://jc-web-im/./src/App.vue?455b","webpack://jc-web-im/./src/components/ChatShell.vue?ef53","webpack://jc-web-im/./src/components/LoginView.vue?f595","webpack://jc-web-im/./src/components/chat/ChatPanel.vue?402c","webpack://jc-web-im/./src/components/chat/MessageComposer.vue?bb22","webpack://jc-web-im/./src/components/chat/MessageList.vue?c1a2","webpack://jc-web-im/./src/components/contacts/ContactPanel.vue?96e0","webpack://jc-web-im/./src/components/favorites/FavoriteList.vue?bdf3","webpack://jc-web-im/./src/components/favorites/FavoritePanel.vue?ee85","webpack://jc-web-im/./src/components/sidebar/ContactList.vue?dff0","webpack://jc-web-im/./src/components/sidebar/ConversationList.vue?0914","webpack://jc-web-im/./src/components/sidebar/NavigationRail.vue?c3d8","webpack://jc-web-im/webpack/bootstrap","webpack://jc-web-im/webpack/runtime/chunk loaded","webpack://jc-web-im/webpack/runtime/compat get default export","webpack://jc-web-im/webpack/runtime/define property getters","webpack://jc-web-im/webpack/runtime/global","webpack://jc-web-im/webpack/runtime/hasOwnProperty shorthand","webpack://jc-web-im/webpack/runtime/make namespace object","webpack://jc-web-im/webpack/runtime/set anonymous default export name","webpack://jc-web-im/webpack/runtime/jsonp chunk loading","webpack://jc-web-im/webpack/before-startup","webpack://jc-web-im/webpack/startup","webpack://jc-web-im/webpack/after-startup"],"sourcesContent":["\n\n\n","\r\n\r\n\r\n","\n\n\n","\r\n\r\n\r\n","\r\n\r\n\r\n","\r\n\r\n\r\n","\r\n\r\n\r\n","\r\n\r\n\r\n","\r\n\r\n\r\n","\r\n\r\n\r\n","\r\n\r\n\r\n","\r\n\r\n\r\n","const currentHost = window.location.hostname || '127.0.0.1';\nconst runtimeConfig = window.JC_WEB_IM_CONFIG || {};\nconst appServerOrigin = `${window.location.protocol}//${currentHost}:8888`;\nconst qrAppServerOrigin = `${window.location.protocol}//${currentHost}:18888`;\nconst adminServerOrigin = `${window.location.protocol}//${currentHost}:8024`;\n\r\nexport const appConfig = {\r\n appName: 'Web IM',\r\n adminServer: runtimeConfig.adminServer || process.env.VUE_APP_ADMIN_SERVER || adminServerOrigin,\n appServer: runtimeConfig.appServer || process.env.VUE_APP_APP_SERVER || appServerOrigin,\n qrAppServer: runtimeConfig.qrAppServer || process.env.VUE_APP_QR_APP_SERVER || qrAppServerOrigin,\n platformConfigApi: runtimeConfig.platformConfigApi || process.env.VUE_APP_PLATFORM_CONFIG_API || (process.env.NODE_ENV === 'development' ? '/local-api/platform_config.php' : '/api/platform_config.php'),\n registerConfigApi: runtimeConfig.registerConfigApi || process.env.VUE_APP_REGISTER_CONFIG_API || `${adminServerOrigin}/api/register-config`,\r\n registerPhoneExistsApi: runtimeConfig.registerPhoneExistsApi || process.env.VUE_APP_REGISTER_PHONE_EXISTS_API || `${adminServerOrigin}/api/register-phone-exists`,\r\n contactsApi: runtimeConfig.contactsApi || process.env.VUE_APP_CONTACTS_API || (process.env.NODE_ENV === 'development' ? '/local-api/contacts.php' : '/api/contacts.php'),\r\n updateAliasApi: runtimeConfig.updateAliasApi || process.env.VUE_APP_UPDATE_ALIAS_API || (process.env.NODE_ENV === 'development' ? '/local-api/update_alias.php' : '/api/update_alias.php'),\r\n addContactApi: runtimeConfig.addContactApi || process.env.VUE_APP_ADD_CONTACT_API || (process.env.NODE_ENV === 'development' ? '/local-api/add_contact.php' : '/api/add_contact.php'),\r\n conversationActionsApi: runtimeConfig.conversationActionsApi || process.env.VUE_APP_CONVERSATION_ACTIONS_API || (process.env.NODE_ENV === 'development' ? '/local-api/conversation_actions.php' : '/api/conversation_actions.php'),\r\n sendMessageApi: runtimeConfig.sendMessageApi || process.env.VUE_APP_SEND_MESSAGE_API || (process.env.NODE_ENV === 'development' ? '/local-api/send_message.php' : '/api/send_message.php'),\r\n messageActionApi: runtimeConfig.messageActionApi || process.env.VUE_APP_MESSAGE_ACTION_API || (process.env.NODE_ENV === 'development' ? '/local-api/message_action.php' : '/api/message_action.php'),\r\n messageDetailApi: runtimeConfig.messageDetailApi || process.env.VUE_APP_MESSAGE_DETAIL_API || (process.env.NODE_ENV === 'development' ? '/local-api/message_detail.php' : '/api/message_detail.php'),\r\n messagesApi: runtimeConfig.messagesApi || process.env.VUE_APP_MESSAGES_API || (process.env.NODE_ENV === 'development' ? '/local-api/messages.php' : '/api/messages.php'),\r\n profileApi: runtimeConfig.profileApi || process.env.VUE_APP_PROFILE_API || (process.env.NODE_ENV === 'development' ? '/local-api/profile.php' : '/api/profile.php'),\r\n changePasswordApi: runtimeConfig.changePasswordApi || process.env.VUE_APP_CHANGE_PASSWORD_API || `${appServerOrigin}/auth/changePassword`,\n logoutApi: runtimeConfig.logoutApi || process.env.VUE_APP_LOGOUT_API || `${appServerOrigin}/auth/logout`,\n imServerHost: runtimeConfig.imServerHost || process.env.VUE_APP_IM_SERVER_HOST || currentHost,\n imRoutePort: Number(runtimeConfig.imRoutePort || process.env.VUE_APP_IM_ROUTE_PORT || 18000),\r\n useWss: runtimeConfig.useWss ?? process.env.VUE_APP_USE_WSS === 'true',\n wsPath: runtimeConfig.wsPath || process.env.VUE_APP_WS_PATH || '/ws',\n wsUrl: runtimeConfig.wsUrl || process.env.VUE_APP_WS_URL || '',\n sdkMode: runtimeConfig.sdkMode || process.env.VUE_APP_IM_MODE || 'http',\n syncIntervalMs: Number(runtimeConfig.syncIntervalMs || process.env.VUE_APP_SYNC_INTERVAL_MS || 300),\n sseEnabled: runtimeConfig.sseEnabled ?? process.env.VUE_APP_SSE_ENABLED === 'true',\n sseTicketApi: runtimeConfig.sseTicketApi || process.env.VUE_APP_SSE_TICKET_API || '/api/sse_ticket.php',\n sseUrl: runtimeConfig.sseUrl || process.env.VUE_APP_SSE_URL || '/ws-events',\n platform: 5,\n clientIdStorageKey: 'qmt-web-im-client-id',\n authTokenStoragePrefix: 'qmt-web-im-auth-token-'\n};\n","import { createApp } from 'vue';\r\nimport { createPinia } from 'pinia';\r\nimport App from './App.vue';\r\nimport './styles/base.css';\r\n\r\ncreateApp(App).use(createPinia()).mount('#app');\r\n","import axios from 'axios';\nimport { appConfig } from '@/config';\n\nconst AES_KEY = 'xczx2026!@#secKe';\nconst ENCRYPTION_EXCLUDE_PATHS = ['/avatar/', '/f/', '/amr2mp3', '/appVersion/check'];\nconst AUTH_STORAGE_KEY = 'qmt-web-im-app-auth-v1';\nconst AUTH_ERROR_CODE = 13;\nconst REFRESH_ERROR_CODE = 20045;\n\nlet importedCryptoKeyPromise = null;\nlet refreshPromise = null;\n\nfunction storageScope() {\n return appConfig.appServer || '';\n}\n\nfunction readAuthStore() {\n try {\n return JSON.parse(localStorage.getItem(AUTH_STORAGE_KEY) || '{}');\n } catch (error) {\n return {};\n }\n}\n\nfunction writeAuthStore(store) {\n localStorage.setItem(AUTH_STORAGE_KEY, JSON.stringify(store));\n}\n\nfunction normalizeAuthBundle(bundle = {}) {\n const accessToken = String(bundle.accessToken || '').trim();\n const refreshToken = String(bundle.refreshToken || '').trim();\n if (!accessToken || !refreshToken) {\n return null;\n }\n return {\n accessToken,\n refreshToken,\n tokenType: String(bundle.tokenType || 'Bearer').trim() || 'Bearer',\n accessTokenExpireIn: Number(bundle.accessTokenExpireIn || 0) || 0,\n accessTokenExpireAt: Number(bundle.accessTokenExpireAt || 0) || 0,\n refreshTokenExpireIn: Number(bundle.refreshTokenExpireIn || 0) || 0,\n refreshTokenExpireAt: Number(bundle.refreshTokenExpireAt || 0) || 0\n };\n}\n\nexport function getStoredAppAuth() {\n const store = readAuthStore();\n return normalizeAuthBundle(store[storageScope()]);\n}\n\nexport function persistAppAuth(bundle) {\n const normalized = normalizeAuthBundle(bundle);\n const store = readAuthStore();\n if (!normalized) {\n delete store[storageScope()];\n writeAuthStore(store);\n return null;\n }\n store[storageScope()] = normalized;\n writeAuthStore(store);\n return normalized;\n}\n\nexport function clearStoredAppAuth() {\n persistAppAuth(null);\n}\n\nfunction hasFormData(value) {\n return typeof FormData !== 'undefined' && value instanceof FormData;\n}\n\nfunction absoluteUrl(url) {\n return new URL(url, window.location.origin);\n}\n\nfunction shouldEncrypt(url) {\n const pathname = absoluteUrl(url).pathname;\n return !ENCRYPTION_EXCLUDE_PATHS.some(path => pathname === path || pathname.startsWith(path));\n}\n\nfunction shouldAttachAuth(config) {\n return !config.skipAuth;\n}\n\nfunction textEncoder() {\n return new TextEncoder();\n}\n\nfunction textDecoder() {\n return new TextDecoder();\n}\n\nfunction bytesToBase64(bytes) {\n let binary = '';\n bytes.forEach(byte => {\n binary += String.fromCharCode(byte);\n });\n return btoa(binary);\n}\n\nfunction base64ToBytes(base64) {\n const binary = atob(base64);\n const bytes = new Uint8Array(binary.length);\n for (let index = 0; index < binary.length; index += 1) {\n bytes[index] = binary.charCodeAt(index);\n }\n return bytes;\n}\n\nasync function getCryptoKey() {\n if (!importedCryptoKeyPromise) {\n importedCryptoKeyPromise = window.crypto.subtle.importKey(\n 'raw',\n textEncoder().encode(AES_KEY),\n { name: 'AES-CBC' },\n false,\n ['encrypt', 'decrypt']\n );\n }\n return importedCryptoKeyPromise;\n}\n\nasync function encryptPayload(plainText) {\n const iv = window.crypto.getRandomValues(new Uint8Array(16));\n const key = await getCryptoKey();\n const encrypted = await window.crypto.subtle.encrypt(\n { name: 'AES-CBC', iv },\n key,\n textEncoder().encode(plainText)\n );\n return `${bytesToBase64(iv)}:${bytesToBase64(new Uint8Array(encrypted))}`;\n}\n\nasync function decryptPayload(cipherText) {\n const [ivBase64, encryptedBase64] = String(cipherText || '').split(':', 2);\n if (!ivBase64 || !encryptedBase64) {\n throw new Error('Encrypted payload format is invalid');\n }\n const key = await getCryptoKey();\n const decrypted = await window.crypto.subtle.decrypt(\n { name: 'AES-CBC', iv: base64ToBytes(ivBase64) },\n key,\n base64ToBytes(encryptedBase64)\n );\n return textDecoder().decode(decrypted);\n}\n\nfunction normalizeBusinessResponse(payload) {\n if (payload && typeof payload === 'object' && !Array.isArray(payload)) {\n return payload;\n }\n return {\n code: 0,\n message: 'success',\n data: payload\n };\n}\n\nasync function decodeResponsePayload(response) {\n const encrypted = String(response.headers?.['x-encrypted'] || '').toLowerCase() === 'true';\n if (encrypted && typeof response.data === 'string') {\n const plainText = await decryptPayload(response.data);\n response.data = normalizeBusinessResponse(JSON.parse(plainText));\n return response;\n }\n response.data = normalizeBusinessResponse(response.data);\n return response;\n}\n\nconst client = axios.create({\n withCredentials: false\n});\n\nclient.interceptors.request.use(async config => {\n const nextConfig = { ...config };\n const url = absoluteUrl(nextConfig.url || '').toString();\n\n if (shouldAttachAuth(nextConfig)) {\n const auth = getStoredAppAuth();\n if (auth?.accessToken) {\n nextConfig.headers = {\n ...(nextConfig.headers || {}),\n Authorization: `${auth.tokenType || 'Bearer'} ${auth.accessToken}`\n };\n }\n }\n\n if (!hasFormData(nextConfig.data) && nextConfig.method?.toLowerCase() !== 'get' && shouldEncrypt(url)) {\n const plainBody = JSON.stringify(nextConfig.data ?? {});\n nextConfig.data = await encryptPayload(plainBody);\n nextConfig.headers = {\n ...(nextConfig.headers || {}),\n 'Content-Type': 'text/plain;charset=UTF-8',\n 'X-Timestamp': `${Math.floor(Date.now() / 1000)}`\n };\n }\n\n return nextConfig;\n});\n\nclient.interceptors.response.use(async response => decodeResponsePayload(response));\n\nasync function refreshAccessToken() {\n if (refreshPromise) {\n return refreshPromise;\n }\n const auth = getStoredAppAuth();\n if (!auth?.refreshToken) {\n clearStoredAppAuth();\n throw new Error('登录状态已失效,请重新登录');\n }\n\n refreshPromise = client.post(`${appConfig.appServer}/auth/refreshToken`, {\n refreshToken: auth.refreshToken\n }, {\n skipAuth: true\n }).then(response => {\n const payload = response.data || {};\n if (Number(payload.code) !== 0 || !payload.data) {\n if (Number(payload.code) === REFRESH_ERROR_CODE) {\n clearStoredAppAuth();\n }\n throw new Error(payload.message || '刷新登录状态失败');\n }\n persistAppAuth(payload.data);\n return payload.data;\n }).finally(() => {\n refreshPromise = null;\n });\n\n return refreshPromise;\n}\n\nasync function request(config) {\n const response = await client.request(config);\n const payload = response.data || {};\n if (Number(payload.code) === AUTH_ERROR_CODE && shouldAttachAuth(config) && !config._retriedAfterRefresh) {\n await refreshAccessToken();\n return request({\n ...config,\n _retriedAfterRefresh: true\n });\n }\n return response;\n}\n\nexport async function appServerRequest(config) {\n return request(config);\n}\n\nexport async function appServerGet(url, config = {}) {\n return request({\n ...config,\n method: 'get',\n url\n });\n}\n\nexport async function appServerPost(url, data = {}, config = {}) {\n return request({\n ...config,\n method: 'post',\n url,\n data\n });\n}\n","import { appConfig } from '@/config';\nimport { HttpImClient } from './httpImClient';\nimport axios from 'axios';\nimport {\n appServerGet,\n appServerPost,\n clearStoredAppAuth,\n getStoredAppAuth,\n persistAppAuth\n} from './appServerClient';\n\nfunction inferAccountType(account) {\n return String(account || '').includes('@') ? 2 : 1;\n}\n\nfunction unwrapData(response) {\n return response.data?.data ?? response.data?.result ?? null;\n}\n\nfunction unwrapMessage(response, fallback) {\n return response.data?.message || response.data?.msg || fallback;\n}\n\nexport class DocumentedHttpImClient extends HttpImClient {\n unsupported(feature) {\n throw new Error(`当前对接文档未提供“${feature}”接口,已禁用旧本地代理链路`);\n }\n\n async loginWithPassword(account, password, type = inferAccountType(account)) {\n const response = await appServerPost(`${appConfig.appServer}/auth/login_pwd`, {\n type,\n number: account,\n password,\n platform: appConfig.platform,\n clientId: this.getClientId()\n }, {\n skipAuth: true\n });\n\n if (response.data?.code !== 0) {\n throw new Error(unwrapMessage(response, '登录失败'));\n }\n\n persistAppAuth(unwrapData(response));\n return unwrapData(response);\n }\n\n async requestAuthCode(email) {\n const response = await appServerPost(`${appConfig.appServer}/auth/sendEmailCode`, {\n email\n }, {\n skipAuth: true\n });\n\n if (response.data?.code !== 0) {\n throw new Error(unwrapMessage(response, '验证码发送失败'));\n }\n\n return unwrapData(response);\n }\n\n async loginWithCode(account, code) {\n void account;\n void code;\n throw new Error('接口文档未提供验证码登录接口,请使用密码登录');\n }\n\n async register({ type, number, code = '', password, invitationCode = '' }) {\n const response = await appServerPost(`${appConfig.appServer}/auth/register`, {\n type,\n number,\n code,\n password,\n clientId: this.getClientId(),\n platform: appConfig.platform,\n invitationCode\n }, {\n skipAuth: true\n });\n\n if (response.data?.code !== 0) {\n throw new Error(unwrapMessage(response, '注册失败'));\n }\n\n persistAppAuth(unwrapData(response));\n return unwrapData(response);\n }\n\n async createPcSession(userId = '') {\n const response = await axios.post(`${appConfig.qrAppServer}/pc_session`, {\n flag: 1,\n device_name: 'Web IM',\n userId,\n clientId: this.getClientId(),\n platform: appConfig.platform\n }, { withCredentials: false });\n\n if (response.data?.code !== 0) {\n throw new Error(unwrapMessage(response, '二维码登录会话创建失败'));\n }\n\n return unwrapData(response) || {};\n }\n\n async loginWithPcSession(token) {\n const url = `${appConfig.qrAppServer}/session_login/${encodeURIComponent(token)}`;\n let response;\n try {\n response = await axios.post(url, null, { withCredentials: false });\n } catch (postError) {\n response = await axios.get(url, { withCredentials: false });\n }\n\n this.persistAppToken(url, response);\n\n const payload = response.data || {};\n const result = payload.result ?? payload.data ?? null;\n\n if (Number(payload.code) === 0 && result) {\n persistAppAuth(result);\n }\n\n if ([0, 8, 9, 10, 13, 18, 20042].includes(Number(payload.code))) {\n return {\n ...payload,\n data: result\n };\n }\n\n throw new Error(payload.message || '扫码登录失败');\n }\n\n async changePassword({ oldPassword, newPassword }) {\n const response = await appServerPost(appConfig.changePasswordApi, {\n oldPassword,\n newPassword\n });\n\n if (response.data?.code !== 0) {\n throw new Error(unwrapMessage(response, '密码修改失败'));\n }\n\n return true;\n }\n\n async resetPasswordWithCode({ mobile, resetCode, newPassword }) {\n void mobile;\n void resetCode;\n void newPassword;\n throw new Error('接口文档未提供重置密码接口,请联系服务端确认流程');\n }\n\n async logout() {\n const auth = getStoredAppAuth();\n if (!auth?.refreshToken) {\n clearStoredAppAuth();\n return true;\n }\n\n try {\n const response = await appServerPost(appConfig.logoutApi, {\n refreshToken: auth.refreshToken\n });\n if (response.data?.code !== 0) {\n throw new Error(unwrapMessage(response, '退出登录失败'));\n }\n } finally {\n clearStoredAppAuth();\n }\n\n return true;\n }\n\n async fetchRemoteConversations() {\n return [];\n }\n\n async fetchRemoteMessages() {\n return [];\n }\n\n async getServerContactList() {\n return [];\n }\n\n async getProfile() {\n return null;\n }\n\n async sendTextMessage() {\n this.unsupported('发送消息');\n }\n\n async sendAttachmentMessage() {\n this.unsupported('发送附件消息');\n }\n\n async addContact() {\n this.unsupported('添加联系人');\n }\n\n async updateContactAlias() {\n this.unsupported('联系人备注');\n }\n\n async createGroup() {\n this.unsupported('创建群组');\n }\n\n async joinGroup() {\n this.unsupported('加入群组');\n }\n\n async broadcastMessage() {\n this.unsupported('群发消息');\n }\n\n async getGroupDetail() {\n this.unsupported('群详情');\n }\n\n async getGroupMembers() {\n this.unsupported('群成员');\n }\n\n async updateGroupAlias() {\n this.unsupported('群备注');\n }\n\n async leaveGroup() {\n this.unsupported('退出群组');\n }\n\n async dismissGroup() {\n this.unsupported('解散群组');\n }\n\n async transferGroup() {\n this.unsupported('转让群组');\n }\n\n async setGroupAdmins() {\n this.unsupported('设置群管理员');\n }\n\n async updateGroupProfile() {\n this.unsupported('更新群资料');\n }\n\n async kickGroupMembers() {\n this.unsupported('移除群成员');\n }\n\n async updateGroupMuteSetting() {\n this.unsupported('群禁言设置');\n }\n\n async updateProfile() {\n this.unsupported('更新个人资料');\n }\n\n async recallMessage() {\n this.unsupported('撤回消息');\n }\n\n async editMessage() {\n this.unsupported('编辑消息');\n }\n\n async getMessageDetail() {\n this.unsupported('消息详情');\n }\n}\n","import axios from 'axios';\nimport { appConfig } from '@/config';\nimport {\n appServerGet,\n appServerPost,\n clearStoredAppAuth,\n getStoredAppAuth,\n persistAppAuth\n} from '@/services/appServerClient';\n\r\nconst LOCAL_MESSAGE_STORAGE_KEY = 'qmt-web-im-local-messages-v2';\r\nconst LOCAL_HIDDEN_MESSAGE_STORAGE_KEY = 'qmt-web-im-hidden-messages-v1';\r\nconst LOCAL_RECALLED_MESSAGE_STORAGE_KEY = 'qmt-web-im-recalled-messages-v1';\r\n\r\nfunction scopedStorageKey(baseKey, userId = '') {\r\n const scope = `${appConfig.appServer || ''}:${userId || 'anonymous'}`;\r\n return `${baseKey}:${encodeURIComponent(scope)}`;\r\n}\r\n\r\nfunction randomId() {\r\n if (window.crypto && window.crypto.randomUUID) {\r\n return window.crypto.randomUUID().replaceAll('-', '');\r\n }\r\n return `${Date.now()}${Math.random().toString(16).slice(2)}`;\r\n}\r\n\r\nfunction readLocalMessages(userId) {\r\n try {\r\n return JSON.parse(localStorage.getItem(scopedStorageKey(LOCAL_MESSAGE_STORAGE_KEY, userId)) || '{}');\r\n } catch (error) {\r\n return {};\r\n }\r\n}\r\n\r\nfunction readMessageSet(storageKey, userId) {\r\n try {\r\n return JSON.parse(localStorage.getItem(scopedStorageKey(storageKey, userId)) || '{}');\r\n } catch (error) {\r\n return {};\r\n }\r\n}\r\n\r\nfunction writeMessageSet(storageKey, messagesByConversation, userId) {\r\n localStorage.setItem(scopedStorageKey(storageKey, userId), JSON.stringify(messagesByConversation));\r\n}\r\n\r\nfunction messageKeys(message) {\r\n return [message?.id, message?.messageUid]\r\n .filter(Boolean)\r\n .map(value => String(value));\r\n}\r\n\r\nfunction hasStoredMessage(storageKey, conversationId, message, userId) {\r\n const stored = readMessageSet(storageKey, userId);\r\n const ids = new Set(stored[conversationId] || []);\r\n return messageKeys(message).some(id => ids.has(id));\r\n}\r\n\r\nfunction storeMessageKeys(storageKey, conversationId, messages, userId) {\r\n const stored = readMessageSet(storageKey, userId);\r\n const ids = new Set(stored[conversationId] || []);\r\n messages.forEach(message => {\r\n messageKeys(message).forEach(id => ids.add(id));\r\n });\r\n stored[conversationId] = Array.from(ids);\r\n writeMessageSet(storageKey, stored, userId);\r\n}\r\n\r\nfunction withRecalledState(message) {\r\n return {\r\n ...message,\r\n status: 'recalled',\r\n deliveryStatus: '',\r\n recalled: true,\r\n recallStatus: '已撤回'\r\n };\r\n}\r\n\r\nfunction applyLocalMessageState(conversationId, messages, userId) {\r\n return messages\r\n .filter(message => !hasStoredMessage(LOCAL_HIDDEN_MESSAGE_STORAGE_KEY, conversationId, message, userId))\r\n .map(message => {\r\n const isRecalled = Boolean(message.recalled)\r\n || message.status === 'recalled'\r\n || hasStoredMessage(LOCAL_RECALLED_MESSAGE_STORAGE_KEY, conversationId, message, userId);\r\n if (!isRecalled) {\r\n return message;\r\n }\r\n return withRecalledState(message);\r\n });\r\n}\r\n\r\nfunction writeLocalMessages(messagesByConversation, userId) {\r\n localStorage.setItem(scopedStorageKey(LOCAL_MESSAGE_STORAGE_KEY, userId), JSON.stringify(messagesByConversation));\r\n}\r\n\r\nfunction saveLocalMessage(message, userId) {\r\n const messagesByConversation = readLocalMessages(userId);\r\n messagesByConversation[message.conversationId] = messagesByConversation[message.conversationId] || [];\r\n const index = messagesByConversation[message.conversationId].findIndex(item => item.id === message.id);\r\n if (index >= 0) {\r\n messagesByConversation[message.conversationId].splice(index, 1, message);\r\n } else {\r\n messagesByConversation[message.conversationId].push(message);\r\n }\r\n writeLocalMessages(messagesByConversation, userId);\r\n}\r\n\r\nfunction mergeSyncedMessages(localMessages, remoteMessages, conversationId, userId) {\r\n const visibleLocalMessages = applyLocalMessageState(conversationId, localMessages, userId);\r\n const localByKey = new Map();\r\n visibleLocalMessages.forEach(message => {\r\n messageKeys(message).forEach(key => {\r\n if (!localByKey.has(key)) {\r\n localByKey.set(key, message);\r\n }\r\n });\r\n });\r\n\r\n const visibleRemoteMessages = applyLocalMessageState(conversationId, remoteMessages, userId).map(remoteMessage => {\r\n if (!remoteMessage.recalled || String(remoteMessage.text || '').trim()) {\r\n return remoteMessage;\r\n }\r\n const localMessage = messageKeys(remoteMessage)\r\n .map(key => localByKey.get(key))\r\n .find(message => message?.text && message.text !== '你撤回了一条消息');\r\n return localMessage ? { ...remoteMessage, text: localMessage.text } : remoteMessage;\r\n });\r\n const remoteKeys = new Set();\r\n visibleRemoteMessages.forEach(message => {\r\n messageKeys(message).forEach(key => remoteKeys.add(key));\r\n });\r\n const now = Date.now();\r\n\r\n function hasRemoteMatch(localMessage) {\r\n if (localMessage.messageUid && remoteKeys.has(localMessage.messageUid)) {\r\n return true;\r\n }\r\n return visibleRemoteMessages.some(remoteMessage => {\r\n return remoteMessage.direction === localMessage.direction\r\n && remoteMessage.text === localMessage.text\r\n && Math.abs(Number(remoteMessage.timestamp || 0) - Number(localMessage.timestamp || 0)) < 15000;\r\n });\r\n }\r\n\r\n const pendingLocalMessages = visibleLocalMessages.filter(message => {\r\n if (message.status === 'recalled' || message.recalled) {\r\n return message.direction === 'out' && !hasRemoteMatch(message);\r\n }\r\n if (message.direction !== 'out') {\r\n return false;\r\n }\r\n if (message.status === 'sent' && message.messageUid) {\r\n return !hasRemoteMatch(message);\r\n }\r\n if (message.status === 'sent') {\r\n return !hasRemoteMatch(message) && now - Number(message.timestamp || 0) < 30000;\r\n }\r\n return message.status === 'sending' || message.status === 'failed';\r\n });\r\n\r\n return [...visibleRemoteMessages, ...pendingLocalMessages].sort((a, b) => {\r\n return Number(a.displayTimestamp || a.timestamp || 0) - Number(b.displayTimestamp || b.timestamp || 0);\r\n });\r\n}\r\n\r\nfunction getTitle(value, fallback) {\r\n return value || fallback || '';\r\n}\r\n\r\nfunction getUniqueEquipment(mobile, fallback) {\r\n const allowedDevices = {\r\n '18301902119': '67072d37062c4f31b1165073552933ba',\r\n '18301902116': '1777479418113eeea8e236edce',\r\n '18301902118': 'de89fb2f2a61480a8c381f6c16e28bd8',\r\n '18301902117': 'd117f480faa64145b6162107b1b49617'\r\n };\r\n return allowedDevices[mobile] || localStorage.getItem('uniqueEquipment') || fallback;\r\n}\r\n\r\nfunction canUseLocalLoginFallback(response) {\r\n const message = response.data?.message || '';\r\n return process.env.NODE_ENV === 'development' && message.includes('允许此设备登录');\r\n}\r\n\r\nexport class HttpImClient {\r\n constructor() {\r\n this.listeners = new Map();\r\n this.connected = false;\r\n this.currentUser = null;\r\n }\r\n\r\n getClientId() {\r\n let clientId = localStorage.getItem(appConfig.clientIdStorageKey);\r\n if (!clientId) {\r\n clientId = randomId();\r\n localStorage.setItem(appConfig.clientIdStorageKey, clientId);\r\n }\r\n return clientId;\r\n }\r\n\r\n restoreClientId(clientId) {\r\n if (clientId) {\r\n localStorage.setItem(appConfig.clientIdStorageKey, clientId);\r\n }\r\n }\r\n\r\n getSdkVersion() {\r\n return 'HTTP';\r\n }\r\n\r\n async ensureSdk() {\r\n return true;\r\n }\r\n\r\n async loginWithPassword(mobile, password) {\n const url = `${appConfig.appServer}/login_pwd`;\n const response = await axios.post(url, {\n mobile,\n password,\n platform: appConfig.platform,\n clientId: this.getClientId()\n }, { withCredentials: false });\n\r\n this.persistAppToken(url, response);\r\n if (response.data?.code !== 0) {\r\n if (canUseLocalLoginFallback(response)) {\r\n return {\r\n userId: mobile,\r\n token: `local-device-pending-${Date.now()}`,\r\n displayName: mobile,\r\n localOnly: true\r\n };\r\n }\r\n throw new Error(response.data?.message || '登录失败');\r\n }\r\n return response.data.result;\r\n }\r\n\r\n async requestAuthCode(mobile) {\r\n const response = await axios.post(`${appConfig.appServer}/send_code`, { mobile }, { withCredentials: false });\r\n if (response.data?.code !== 0) {\r\n throw new Error(response.data?.message || '验证码发送失败');\r\n }\r\n return response.data.result;\r\n }\r\n\r\n async loginWithCode(mobile, code) {\n const url = `${appConfig.appServer}/login`;\n const response = await axios.post(url, {\n mobile,\n code,\n platform: appConfig.platform,\n clientId: this.getClientId()\n }, { withCredentials: false });\n\r\n this.persistAppToken(url, response);\r\n if (response.data?.code !== 0) {\r\n throw new Error(response.data?.message || '登录失败');\r\n }\r\n return response.data.result;\r\n }\r\n\r\n async createPcSession(userId = '') {\r\n const response = await axios.post(`${appConfig.appServer}/pc_session`, {\r\n flag: 1,\r\n device_name: 'Web IM',\r\n userId,\r\n clientId: this.getClientId(),\r\n platform: appConfig.platform\r\n }, { withCredentials: false });\r\n\r\n if (response.data?.code !== 0) {\r\n throw new Error(response.data?.message || '二维码登录会话创建失败');\r\n }\r\n return response.data.result || {};\r\n }\r\n\r\n async loginWithPcSession(token) {\r\n const url = `${appConfig.appServer}/session_login/${encodeURIComponent(token)}`;\r\n const response = await axios.post(url, null, { withCredentials: false });\r\n this.persistAppToken(url, response);\r\n const data = response.data || {};\r\n if ([0, 8, 9, 10, 18].includes(Number(data.code))) {\r\n return data;\r\n }\r\n throw new Error(data.message || '扫码登录失败');\r\n }\r\n\r\n async registerWithPhone(mobile, code) {\r\n const url = `${appConfig.appServer}/register`;\r\n const deviceId = getUniqueEquipment(mobile, this.getClientId());\r\n\r\n try {\r\n const response = await axios.post(url, {\r\n mobile,\r\n code,\r\n platform: appConfig.platform,\r\n clientId: deviceId,\r\n uniqueEquipment: deviceId\r\n }, { withCredentials: false });\r\n\r\n this.persistAppToken(url, response);\r\n if (response.data?.code !== 0) {\r\n throw new Error(response.data?.message || '注册失败');\r\n }\r\n return response.data.result;\r\n } catch (error) {\r\n const status = error.response?.status;\r\n if (status === 404 || status === 405) {\r\n return this.loginWithCode(mobile, code);\r\n }\r\n throw error;\r\n }\r\n }\r\n\r\n connect(userId, token) {\r\n this.currentUser = { userId, token };\r\n this.connected = true;\r\n this.emit('connectionStatusChanged', { connected: true, statusText: '已连接' });\r\n this.refreshConversationList();\r\n }\r\n\r\n disconnect() {\r\n this.connected = false;\r\n this.currentUser = null;\r\n this.emit('connectionStatusChanged', { connected: false, statusText: '未连接' });\r\n }\r\n\r\n getConversationList() {\r\n return [];\r\n }\r\n\r\n refreshConversationList() {\r\n const conversations = this.getConversationList();\r\n if (conversations.length) {\r\n this.emit('conversationsChanged', conversations);\r\n }\r\n if (this.currentUser?.userId) {\r\n this.fetchRemoteConversations().then(remoteConversations => {\r\n this.emit('conversationsChanged', remoteConversations);\r\n }).catch(() => {});\r\n }\r\n return conversations;\r\n }\r\n\r\n async fetchRemoteConversations(limit = 50) {\r\n if (!this.currentUser?.userId) {\r\n return [];\r\n }\r\n const response = await axios.post(appConfig.messagesApi, {\r\n userId: this.currentUser.userId,\r\n limit\r\n }, { withCredentials: false });\r\n\r\n if (response.data?.code !== 0) {\r\n throw new Error(response.data?.message || '会话同步失败');\r\n }\r\n\r\n return (response.data?.result?.conversations || []).map(conversation => ({\r\n ...conversation,\r\n updatedAt: Number(conversation.updatedAt || Date.now()),\r\n avatarText: conversation.avatarText || String(conversation.title || conversation.target || '?').slice(0, 1).toUpperCase(),\r\n raw: conversation.raw || { type: 'single', target: conversation.target, line: 0 }\r\n }));\r\n }\r\n\r\n getMessages(conversation) {\r\n if (!conversation?.id) {\r\n return [];\r\n }\r\n const userId = this.currentUser?.userId || '';\r\n return applyLocalMessageState(conversation.id, readLocalMessages(userId)[conversation.id] || [], userId);\r\n }\r\n\r\n async fetchRemoteMessages(conversation, limit = 50, options = {}) {\r\n if (!conversation?.id || !this.currentUser?.userId) {\r\n return [];\r\n }\r\n const response = await axios.post(appConfig.messagesApi, {\r\n userId: this.currentUser.userId,\r\n target: conversation.target || conversation.raw?.target || conversation.id.replace(/^single-/, ''),\r\n limit,\n conversationType: conversation.type || conversation.raw?.type || 0,\n markRead: Boolean(options.markRead),\n includeConversations: Boolean(options.includeConversations)\n }, { withCredentials: false });\r\n\r\n if (response.data?.code !== 0) {\r\n throw new Error(response.data?.message || '消息同步失败');\r\n }\r\n\r\n const messages = (response.data?.result?.messages || []).map(message => ({\n ...message,\r\n displayTimestamp: message.displayTimestamp || message.timestamp,\r\n conversationId: conversation.id\n }));\n messages.pinnedMessageUid = String(response.data?.result?.pinnedMessageUid || '');\n if (options.includeConversations && Array.isArray(response.data?.result?.conversations)) {\n const remoteConversations = response.data.result.conversations.map(remoteConversation => ({\n ...remoteConversation,\n updatedAt: Number(remoteConversation.updatedAt || Date.now()),\n avatarText: remoteConversation.avatarText || String(remoteConversation.title || remoteConversation.target || '?').slice(0, 1).toUpperCase(),\n raw: remoteConversation.raw || { type: 'single', target: remoteConversation.target, line: 0 }\n }));\n this.emit('conversationsChanged', remoteConversations);\n }\n const userId = this.currentUser?.userId || '';\r\n const messagesByConversation = readLocalMessages(userId);\n messagesByConversation[conversation.id] = mergeSyncedMessages(messagesByConversation[conversation.id] || [], messages, conversation.id, userId);\n messagesByConversation[conversation.id].pinnedMessageUid = messages.pinnedMessageUid;\n writeLocalMessages(messagesByConversation, userId);\r\n return messagesByConversation[conversation.id];\n }\n\n async setPinnedMessage(conversation, messageUid = '') {\n const action = messageUid ? 'pin' : 'unpin';\n const response = await axios.post(appConfig.messageActionApi, {\n action,\n userId: this.currentUser?.userId || '',\n messageUid: messageUid || '1',\n target: conversation.target || conversation.raw?.target || '',\n conversationType: ['group', 'channel'].includes(conversation.type) ? 'group' : 'single'\n }, { withCredentials: false });\n if (response.data?.code !== 0) throw new Error(response.data?.message || '置顶失败');\n }\n\r\n hideMessages(conversation, messages) {\r\n const items = Array.isArray(messages) ? messages : [messages];\r\n if (!conversation?.id || !items.length) {\r\n return;\r\n }\r\n const userId = this.currentUser?.userId || '';\r\n storeMessageKeys(LOCAL_HIDDEN_MESSAGE_STORAGE_KEY, conversation.id, items, userId);\r\n const messagesByConversation = readLocalMessages(userId);\r\n messagesByConversation[conversation.id] = applyLocalMessageState(\r\n conversation.id,\r\n messagesByConversation[conversation.id] || [],\r\n userId\r\n );\r\n writeLocalMessages(messagesByConversation, userId);\r\n }\r\n\r\n markMessagesRecalled(conversation, messages) {\r\n const items = Array.isArray(messages) ? messages : [messages];\r\n if (!conversation?.id || !items.length) {\r\n return;\r\n }\r\n const userId = this.currentUser?.userId || '';\r\n storeMessageKeys(LOCAL_RECALLED_MESSAGE_STORAGE_KEY, conversation.id, items, userId);\r\n const messagesByConversation = readLocalMessages(userId);\r\n messagesByConversation[conversation.id] = applyLocalMessageState(\r\n conversation.id,\r\n messagesByConversation[conversation.id] || [],\r\n userId\r\n );\r\n writeLocalMessages(messagesByConversation, userId);\r\n }\r\n\r\n async recallMessage(conversation, message) {\r\n const messageUid = String(message?.messageUid || message?.id || '').trim();\r\n if (!/^\\d+$/.test(messageUid)) {\r\n throw new Error('缺少可撤回的消息ID');\r\n }\r\n\r\n const response = await axios.post(appConfig.messageActionApi, {\r\n action: 'recall',\r\n userId: this.currentUser?.userId || message.from || '',\r\n messageUid\r\n }, { withCredentials: false });\r\n\r\n if (response.data?.code !== 0) {\r\n throw new Error(response.data?.message || '撤回失败');\r\n }\r\n this.markMessagesRecalled(conversation, [message]);\r\n return response.data.result;\r\n }\r\n\r\n async editMessage(conversation, message, text) {\r\n const messageUid = String(message?.messageUid || message?.id || '').trim();\r\n if (!/^\\d+$/.test(messageUid)) {\r\n throw new Error('缺少可编辑的消息ID');\r\n }\r\n const nextText = String(text || '').trim();\r\n if (!nextText) {\r\n throw new Error('编辑内容不能为空');\r\n }\r\n\r\n const response = await axios.post(appConfig.messageActionApi, {\r\n action: 'edit',\r\n userId: this.currentUser?.userId || message.from || '',\r\n messageUid,\r\n text: nextText\r\n }, { withCredentials: false });\r\n\r\n if (response.data?.code !== 0) {\r\n throw new Error(response.data?.message || '编辑失败');\r\n }\r\n\r\n const result = response.data?.result?.message || {};\r\n const editedMessage = {\r\n ...message,\r\n text: result.text || nextText,\r\n status: 'delivered',\r\n deliveryStatus: 'delivered',\r\n editedAt: Number(result.editedAt || Date.now()),\r\n activityTimestamp: Number(result.editedAt || Date.now())\r\n };\r\n saveLocalMessage(editedMessage, this.currentUser?.userId || '');\r\n this.emit('messageStatusChanged', editedMessage);\r\n return editedMessage;\r\n }\r\n\r\n async getMessageDetail(conversation, message) {\r\n const messageUid = String(message?.messageUid || message?.id || '').trim();\r\n if (!messageUid) {\r\n throw new Error('缺少消息ID');\r\n }\r\n const response = await axios.post(appConfig.messageDetailApi, {\r\n userId: this.currentUser?.userId || '',\r\n target: conversation?.target || conversation?.raw?.target || conversation?.id?.replace(/^single-/, '') || '',\r\n conversationType: conversation?.type || conversation?.raw?.type || 'single',\r\n messageUid\r\n }, { withCredentials: false });\r\n\r\n if (response.data?.code !== 0) {\r\n throw new Error(response.data?.message || '消息详情加载失败');\r\n }\r\n\r\n return response.data?.result?.detail || null;\r\n }\r\n\r\n async sendTextMessage(conversation, text, initialMessage = null) {\r\n const senderRole = conversation?.role || conversation?.raw?.role || '';\r\n const message = initialMessage || {\r\n id: randomId(),\r\n conversationId: conversation.id,\r\n from: this.currentUser?.userId || 'me',\r\n senderRole,\r\n direction: 'out',\r\n type: 'text',\r\n text,\r\n status: 'sending',\r\n deliveryStatus: 'sending',\r\n timestamp: Date.now()\r\n };\r\n saveLocalMessage(message, this.currentUser?.userId || '');\r\n if (!initialMessage) {\r\n this.emit('messageSent', message);\r\n }\r\n\r\n try {\r\n const response = await axios.post(appConfig.sendMessageApi, {\r\n sender: this.currentUser?.userId || '',\r\n target: conversation.target || conversation.raw?.target || conversation.id.replace(/^single-/, ''),\r\n conversationType: conversation.type || conversation.raw?.type || 0,\r\n text\r\n }, { withCredentials: false });\r\n\r\n if (response.data?.code !== 0) {\r\n throw new Error(response.data?.message || '发送失败');\r\n }\r\n\r\n const sentMessage = {\r\n ...message,\r\n status: 'sent',\r\n deliveryStatus: 'sent',\r\n messageUid: response.data?.result?.messageUid ? String(response.data.result.messageUid) : '',\r\n senderRole: response.data?.result?.senderRole || message.senderRole || '',\r\n serverTimestamp: Number(response.data?.result?.timestamp || 0) || null,\r\n timestamp: message.timestamp,\r\n displayTimestamp: message.displayTimestamp || message.timestamp\r\n };\r\n saveLocalMessage(sentMessage, this.currentUser?.userId || '');\r\n this.emit('messageStatusChanged', sentMessage);\r\n return sentMessage;\r\n } catch (error) {\r\n const failedMessage = {\r\n ...message,\r\n status: 'failed',\r\n deliveryStatus: '',\r\n error: error.response?.data?.message || error.message || '发送失败'\r\n };\r\n saveLocalMessage(failedMessage, this.currentUser?.userId || '');\r\n this.emit('messageStatusChanged', failedMessage);\r\n return failedMessage;\r\n }\r\n }\r\n\r\n async sendAttachmentMessage(conversation, { type, file, text = '' }, initialMessage = null) {\r\n const senderRole = conversation?.role || conversation?.raw?.role || '';\r\n const message = initialMessage || {\r\n id: randomId(),\r\n conversationId: conversation.id,\r\n from: this.currentUser?.userId || 'me',\r\n senderRole,\r\n direction: 'out',\r\n type,\r\n text,\r\n attachment: {\r\n type,\r\n name: file?.name || (type === 'image' ? '图片' : '文件'),\r\n mime: file?.type || '',\r\n size: file?.size || 0,\r\n url: type === 'image' && file ? URL.createObjectURL(file) : ''\r\n },\r\n status: 'sending',\r\n deliveryStatus: 'sending',\r\n timestamp: Date.now()\r\n };\r\n saveLocalMessage(message, this.currentUser?.userId || '');\r\n if (!initialMessage) {\r\n this.emit('messageSent', message);\r\n }\r\n\r\n try {\r\n const formData = new FormData();\r\n formData.append('sender', this.currentUser?.userId || '');\r\n formData.append('target', conversation.target || conversation.raw?.target || conversation.id.replace(/^single-/, ''));\r\n formData.append('conversationType', conversation.type || conversation.raw?.type || 0);\r\n formData.append('messageType', type);\r\n formData.append('text', text || '');\r\n formData.append('attachment', file);\r\n\r\n const response = await axios.post(appConfig.sendMessageApi, formData, {\r\n withCredentials: false\r\n });\r\n\r\n if (response.data?.code !== 0) {\r\n throw new Error(response.data?.message || '发送失败');\r\n }\r\n\r\n const sentMessage = {\r\n ...message,\r\n status: 'sent',\r\n deliveryStatus: 'sent',\r\n messageUid: response.data?.result?.messageUid ? String(response.data.result.messageUid) : '',\r\n senderRole: response.data?.result?.senderRole || message.senderRole || '',\r\n attachment: response.data?.result?.attachment || message.attachment,\r\n serverTimestamp: Number(response.data?.result?.timestamp || 0) || null,\r\n timestamp: message.timestamp,\r\n displayTimestamp: message.displayTimestamp || message.timestamp\r\n };\r\n saveLocalMessage(sentMessage, this.currentUser?.userId || '');\r\n this.emit('messageStatusChanged', sentMessage);\r\n return sentMessage;\r\n } catch (error) {\r\n const failedMessage = {\r\n ...message,\r\n status: 'failed',\r\n deliveryStatus: '',\r\n error: error.response?.data?.message || error.message || '发送失败'\r\n };\r\n saveLocalMessage(failedMessage, this.currentUser?.userId || '');\r\n this.emit('messageStatusChanged', failedMessage);\r\n return failedMessage;\r\n }\r\n }\r\n\r\n getContactList() {\r\n return [];\r\n }\r\n\r\n async getServerContactList(userId) {\r\n if (!userId) {\r\n return [];\r\n }\r\n const response = await axios.post(appConfig.contactsApi, { userId }, {\r\n withCredentials: false,\r\n headers: this.getAppAuthHeaders(appConfig.contactsApi)\r\n });\r\n if (response.data?.code !== 0) {\r\n throw new Error(response.data?.message || '联系人加载失败');\r\n }\r\n return (response.data?.result?.contacts || []).map(item => {\r\n return this.mapContact(item.uid, { alias: item.alias }, {\r\n uid: item.uid,\r\n displayName: item.displayName,\r\n name: item.name,\r\n mobile: item.mobile,\r\n portrait: item.portrait,\r\n address: item.address,\r\n friendAlias: item.alias\r\n });\r\n }).sort((a, b) => a.title.localeCompare(b.title, 'zh-CN'));\r\n }\r\n\r\n async addContact(userId, keyword, reason = '') {\r\n const response = await axios.post(appConfig.addContactApi, {\r\n userId,\r\n keyword,\r\n reason\r\n }, { withCredentials: false });\r\n\r\n if (response.data?.code !== 0) {\r\n throw new Error(response.data?.message || '添加联系人失败');\r\n }\r\n\r\n const item = response.data?.result?.contact;\r\n if (!item?.uid) {\r\n return null;\r\n }\r\n\r\n return this.mapContact(item.uid, { alias: item.alias }, {\r\n uid: item.uid,\r\n displayName: item.displayName,\r\n name: item.name,\r\n mobile: item.mobile,\r\n portrait: item.portrait,\r\n address: item.address,\r\n friendAlias: item.alias\r\n });\r\n }\r\n\r\n normalizeConversation(conversation) {\r\n const title = getTitle(conversation?.title, conversation?.target || '');\r\n return {\r\n ...conversation,\r\n id: conversation?.id || `${conversation?.type === 'single' ? 'single' : 'group'}-${conversation?.target}`,\r\n target: conversation?.target || conversation?.raw?.target || '',\r\n title,\r\n subtitle: conversation?.subtitle || '',\r\n unread: Number(conversation?.unread || 0),\r\n portrait: conversation?.portrait || '',\r\n avatarText: conversation?.avatarText || title.slice(0, 1).toUpperCase(),\r\n updatedAt: Number(conversation?.updatedAt || Date.now()),\r\n raw: conversation?.raw || {\r\n type: conversation?.type === 'single' ? 'single' : 'group',\r\n target: conversation?.target || '',\r\n line: 0\r\n }\r\n };\r\n }\r\n\r\n async createGroup(userId, { name, memberIds = [], announcement = '', welcomeText = '', channel = false }) {\r\n const response = await axios.post(appConfig.conversationActionsApi, {\r\n action: channel ? 'create_channel' : 'create_group',\r\n userId,\r\n name,\r\n memberIds,\r\n announcement,\r\n welcomeText\r\n }, { withCredentials: false });\r\n\r\n if (response.data?.code !== 0) {\r\n throw new Error(response.data?.message || (channel ? '创建公告群失败' : '创建群组失败'));\r\n }\r\n\r\n return this.normalizeConversation(response.data?.result?.conversation || {});\r\n }\r\n\r\n async joinGroup(userId, groupKey) {\r\n const response = await axios.post(appConfig.conversationActionsApi, {\r\n action: 'join_group',\r\n userId,\r\n groupKey\r\n }, { withCredentials: false });\r\n\r\n if (response.data?.code !== 0) {\r\n throw new Error(response.data?.message || '加入群组失败');\r\n }\r\n\r\n return this.normalizeConversation(response.data?.result?.conversation || {});\r\n }\r\n\r\n async broadcastMessage(userId, targetIds, text) {\r\n const response = await axios.post(appConfig.conversationActionsApi, {\r\n action: 'broadcast',\r\n userId,\r\n targetIds,\r\n text\r\n }, { withCredentials: false });\r\n\r\n if (response.data?.code !== 0) {\r\n throw new Error(response.data?.message || '群发失败');\r\n }\r\n\r\n return response.data?.result || {};\r\n }\r\n\r\n async getGroupDetail(userId, groupId) {\r\n const response = await axios.post(appConfig.conversationActionsApi, {\r\n action: 'group_detail',\r\n userId,\r\n groupId\r\n }, { withCredentials: false });\r\n\r\n if (response.data?.code !== 0) {\r\n throw new Error(response.data?.message || '群资料加载失败');\r\n }\r\n\r\n return response.data?.result?.group || null;\r\n }\r\n\r\n async getGroupMembers(userId, groupId) {\r\n const response = await axios.post(appConfig.conversationActionsApi, {\r\n action: 'group_members',\r\n userId,\r\n groupId\r\n }, { withCredentials: false });\r\n\r\n if (response.data?.code !== 0) {\r\n throw new Error(response.data?.message || '群员加载失败');\r\n }\r\n\r\n return response.data?.result?.members || [];\r\n }\r\n\r\n async updateGroupAlias(userId, groupId, alias) {\r\n const response = await axios.post(appConfig.conversationActionsApi, {\r\n action: 'update_group_alias',\r\n userId,\r\n groupId,\r\n alias\r\n }, { withCredentials: false });\r\n\r\n if (response.data?.code !== 0) {\r\n throw new Error(response.data?.message || '本群昵称保存失败');\r\n }\r\n\r\n return response.data?.result?.alias || '';\r\n }\r\n\r\n async leaveGroup(userId, groupId) {\r\n const response = await axios.post(appConfig.conversationActionsApi, {\r\n action: 'leave_group',\r\n userId,\r\n groupId\r\n }, { withCredentials: false });\r\n\r\n if (response.data?.code !== 0) {\r\n throw new Error(response.data?.message || '退出群组失败');\r\n }\r\n\r\n return response.data?.result || {};\r\n }\r\n\r\n async dismissGroup(userId, groupId) {\r\n const response = await axios.post(appConfig.conversationActionsApi, {\r\n action: 'dismiss_group',\r\n userId,\r\n groupId\r\n }, { withCredentials: false });\r\n\r\n if (response.data?.code !== 0) {\r\n throw new Error(response.data?.message || '解散群组失败');\r\n }\r\n\r\n return response.data?.result || {};\r\n }\r\n\r\n async transferGroup(userId, groupId, targetUserId) {\r\n const response = await axios.post(appConfig.conversationActionsApi, {\r\n action: 'transfer_group',\r\n userId,\r\n groupId,\r\n targetUserId\r\n }, { withCredentials: false });\r\n\r\n if (response.data?.code !== 0) {\r\n throw new Error(response.data?.message || '转让群组失败');\r\n }\r\n\r\n return response.data?.result || {};\r\n }\r\n\r\n async setGroupAdmins(userId, groupId, adminIds) {\r\n const response = await axios.post(appConfig.conversationActionsApi, {\r\n action: 'set_group_admins',\r\n userId,\r\n groupId,\r\n adminIds\r\n }, { withCredentials: false });\r\n\r\n if (response.data?.code !== 0) {\r\n throw new Error(response.data?.message || '管理员设置失败');\r\n }\r\n\r\n return response.data?.result || {};\r\n }\r\n\r\n async updateGroupProfile(userId, groupId, { name, announcement, welcomeText }) {\r\n const response = await axios.post(appConfig.conversationActionsApi, {\r\n action: 'update_group_profile',\r\n userId,\r\n groupId,\r\n name,\r\n announcement,\r\n welcomeText\r\n }, { withCredentials: false });\r\n\r\n if (response.data?.code !== 0) {\r\n throw new Error(response.data?.message || '群资料保存失败');\r\n }\r\n\r\n return response.data?.result || {};\r\n }\r\n\r\n async kickGroupMembers(userId, groupId, targetIds) {\r\n const response = await axios.post(appConfig.conversationActionsApi, {\r\n action: 'kick_group_members',\r\n userId,\r\n groupId,\r\n targetIds\r\n }, { withCredentials: false });\r\n\r\n if (response.data?.code !== 0) {\r\n throw new Error(response.data?.message || '踢人失败');\r\n }\r\n\r\n return response.data?.result || {};\r\n }\r\n\r\n async updateGroupMuteSetting(userId, groupId, setting) {\r\n const response = await axios.post(appConfig.conversationActionsApi, {\r\n action: 'update_mute_setting',\r\n userId,\r\n groupId,\r\n ...setting\r\n }, { withCredentials: false });\r\n\r\n if (response.data?.code !== 0) {\r\n throw new Error(response.data?.message || '禁言设置保存失败');\r\n }\r\n\r\n return response.data?.result?.muteSetting || null;\r\n }\r\n\r\n async updateContactAlias(userId, targetId, alias) {\r\n const response = await axios.post(appConfig.updateAliasApi, {\r\n userId,\r\n targetId,\r\n alias\r\n }, {\r\n withCredentials: false,\r\n headers: this.getAppAuthHeaders(appConfig.updateAliasApi)\r\n });\r\n\r\n if (response.data?.code !== 0) {\r\n throw new Error(response.data?.message || '备注名修改失败');\r\n }\r\n\r\n return response.data?.result?.contact?.alias || '';\r\n }\r\n\r\n async getProfile(userId) {\r\n const response = await axios.post(appConfig.profileApi, {\r\n action: 'get',\r\n userId\r\n }, { withCredentials: false });\r\n\r\n if (response.data?.code !== 0) {\r\n throw new Error(response.data?.message || '用户资料加载失败');\r\n }\r\n\r\n return response.data?.result?.profile || null;\r\n }\r\n\r\n async updateProfile(userId, { displayName, portraitFile }) {\r\n const formData = new FormData();\r\n formData.append('action', 'update');\r\n formData.append('userId', userId);\r\n formData.append('displayName', displayName);\r\n if (portraitFile) {\r\n formData.append('portraitFile', portraitFile);\r\n }\r\n\r\n const response = await axios.post(appConfig.profileApi, formData, {\r\n withCredentials: false,\r\n headers: this.getAppAuthHeaders(appConfig.appServer)\r\n });\r\n\r\n if (response.data?.code !== 0) {\r\n throw new Error(response.data?.message || '用户资料保存失败');\r\n }\r\n\r\n return response.data?.result?.profile || null;\r\n }\r\n\r\n async changePassword({ oldPassword, newPassword }) {\r\n const response = await axios.post(appConfig.changePasswordApi, {\r\n oldPassword,\r\n newPassword\r\n }, {\r\n withCredentials: false,\r\n headers: this.getAppAuthHeaders(appConfig.changePasswordApi)\r\n });\r\n\r\n if (response.data?.code !== 0) {\r\n throw new Error(response.data?.message || response.data?.msg || '密码修改失败');\r\n }\r\n\r\n return true;\r\n }\r\n\r\n async resetPasswordWithCode({ mobile, resetCode, newPassword }) {\r\n const response = await axios.post(appConfig.resetPasswordApi, {\r\n mobile,\r\n resetCode,\r\n newPassword\r\n }, { withCredentials: false });\r\n\r\n if (response.data?.code !== 0) {\r\n throw new Error(response.data?.message || response.data?.msg || '密码设置失败');\r\n }\r\n\r\n return true;\r\n }\r\n\r\n refreshContactList() {\r\n const contacts = this.getContactList();\r\n this.emit('contactsChanged', contacts);\r\n return contacts;\r\n }\r\n\r\n createSingleConversation(userId, userInfo = null) {\r\n const title = getTitle(userInfo?.title || userInfo?.displayName || userInfo?.name, userId);\r\n return {\r\n id: `single-${userId}`,\r\n type: 'single',\r\n target: userId,\r\n title,\r\n subtitle: '',\r\n unread: 0,\r\n portrait: userInfo?.portrait || '',\r\n avatarText: title.slice(0, 1).toUpperCase(),\r\n updatedAt: Date.now(),\r\n raw: { type: 'single', target: userId, line: 0 }\r\n };\r\n }\r\n\r\n mapContact(userId, friend, userInfo) {\r\n const title = getTitle(userInfo?.friendAlias || friend?.alias || userInfo?.displayName || userInfo?.name, userId);\r\n return {\r\n id: userId,\r\n uid: userId,\r\n title,\r\n subtitle: userInfo?.mobile || userInfo?.name || userId,\r\n portrait: userInfo?.portrait || '',\r\n address: userInfo?.address || '',\r\n avatarText: title.slice(0, 1).toUpperCase(),\r\n alias: friend?.alias || userInfo?.friendAlias || '',\r\n rawFriend: friend,\r\n rawUser: userInfo\r\n };\r\n }\r\n\r\n on(eventName, handler) {\r\n if (!this.listeners.has(eventName)) {\r\n this.listeners.set(eventName, new Set());\r\n }\r\n this.listeners.get(eventName).add(handler);\r\n return () => this.off(eventName, handler);\r\n }\r\n\r\n off(eventName, handler) {\r\n this.listeners.get(eventName)?.delete(handler);\r\n }\r\n\r\n emit(eventName, payload) {\r\n this.listeners.get(eventName)?.forEach(handler => handler(payload));\r\n }\r\n\r\n persistAppToken(url, response) {\r\n const appToken = response.headers?.authtoken || response.headers?.authToken;\r\n if (appToken) {\r\n localStorage.setItem(appConfig.authTokenStoragePrefix + this.getUrlHost(url), appToken);\r\n }\r\n }\r\n\r\n getAppAuthHeaders(url) {\r\n const host = this.getUrlHost(url);\r\n if (!host) {\r\n return {};\r\n }\r\n const token = localStorage.getItem(appConfig.authTokenStoragePrefix + host);\r\n return token ? { authToken: token } : {};\r\n }\r\n\r\n getUrlHost(url) {\r\n try {\r\n return new URL(url, window.location.origin).host;\r\n } catch (error) {\r\n return '';\r\n }\r\n }\r\n}\r\n\r\nexport const imClient = new HttpImClient();\r\n","import { appConfig } from '@/config';\nimport { HttpImClient } from './httpImClient';\nimport { LongConnectionImClient } from './longConnectionImClient';\nimport { DocumentedHttpImClient } from './documentedHttpImClient';\n\nclass UnsupportedWildfireImClient {\n constructor() {\n throw new Error('当前本地社区版 Web 客户端未启用 WildFire Web SDK');\n }\n}\n\nexport const imClient = appConfig.sdkMode === 'wildfire'\n ? new UnsupportedWildfireImClient()\n : appConfig.sdkMode === 'custom-ws' || appConfig.sdkMode === 'long'\n ? new LongConnectionImClient()\n : appConfig.sdkMode === 'legacy-http'\n ? new HttpImClient()\n : new DocumentedHttpImClient();\n\nexport {\n DocumentedHttpImClient,\n HttpImClient,\n LongConnectionImClient,\n UnsupportedWildfireImClient as WildfireImClient\n};\n","import { appConfig } from '@/config';\r\nimport { HttpImClient } from './httpImClient';\r\n\r\nconst HEARTBEAT_INTERVAL_MS = 25000;\r\nconst RECONNECT_MIN_MS = 1000;\r\nconst RECONNECT_MAX_MS = 15000;\r\n\r\nfunction buildWsUrl() {\r\n if (appConfig.wsUrl) {\r\n return appConfig.wsUrl;\r\n }\r\n const protocol = appConfig.useWss ? 'wss' : 'ws';\r\n const host = appConfig.imServerHost || window.location.hostname;\r\n const port = appConfig.imRoutePort ? `:${appConfig.imRoutePort}` : '';\r\n const path = appConfig.wsPath?.startsWith('/') ? appConfig.wsPath : `/${appConfig.wsPath || 'ws'}`;\r\n return `${protocol}://${host}${port}${path}`;\r\n}\r\n\r\nfunction normalizeConversationId(payload) {\r\n const target = payload.target || payload.to || payload.receiver || payload.conversationTarget || payload.from || payload.sender;\r\n return payload.conversationId || (target ? `single-${target}` : '');\r\n}\r\n\r\nfunction normalizeIncomingMessage(payload, currentUserId) {\r\n const item = payload.message || payload;\r\n const from = item.from || item.sender || item.fromUser || '';\r\n const target = item.target || item.to || item.receiver || '';\r\n const direction = from && String(from) === String(currentUserId) ? 'out' : 'in';\r\n const conversationId = item.conversationId || normalizeConversationId({\r\n ...item,\r\n target: direction === 'out' ? target : from\r\n });\r\n\r\n if (!conversationId) {\r\n return null;\r\n }\r\n\r\n const status = item.status || item.deliveryStatus || 'sent';\r\n\r\n return {\r\n id: item.id || item.messageId || item.messageUid || `${Date.now()}${Math.random().toString(16).slice(2)}`,\r\n messageUid: item.messageUid || item.uid || item.messageId || '',\r\n conversationId,\r\n from,\r\n target,\r\n direction,\r\n type: item.type || 'text',\r\n text: item.text || item.content || item.searchableContent || '',\r\n status,\r\n deliveryStatus: item.deliveryStatus || (direction === 'out' ? status : ''),\r\n timestamp: Number(item.timestamp || item.serverTimestamp || Date.now()),\r\n displayTimestamp: Number(item.displayTimestamp || item.timestamp || item.serverTimestamp || Date.now()),\r\n raw: item\r\n };\r\n}\r\n\r\nexport class LongConnectionImClient extends HttpImClient {\r\n constructor() {\r\n super();\r\n this.socket = null;\r\n this.wsUrl = buildWsUrl();\r\n this.heartbeatTimer = null;\r\n this.reconnectTimer = null;\r\n this.reconnectAttempts = 0;\r\n this.manualClose = false;\r\n }\r\n\r\n getSdkVersion() {\r\n return 'JC-LC/0.1';\r\n }\r\n\r\n shouldUseMessagePolling() {\r\n return !this.connected;\r\n }\r\n\r\n async ensureSdk() {\r\n if (typeof WebSocket === 'undefined') {\r\n throw new Error('当前浏览器不支持 WebSocket 长连接');\r\n }\r\n return true;\r\n }\r\n\r\n connect(userId, token) {\r\n this.currentUser = { userId, token };\r\n this.manualClose = false;\r\n this.openSocket();\r\n }\r\n\r\n disconnect() {\r\n this.manualClose = true;\r\n this.clearReconnectTimer();\r\n this.clearHeartbeatTimer();\r\n if (this.socket) {\r\n this.socket.close();\r\n this.socket = null;\r\n }\r\n super.disconnect();\r\n }\r\n\r\n openSocket() {\r\n if (this.socket?.readyState === WebSocket.OPEN) {\r\n this.sendAuthFrame();\r\n return;\r\n }\r\n if (this.socket?.readyState === WebSocket.CONNECTING) {\r\n return;\r\n }\r\n\r\n this.emit('connectionStatusChanged', { connected: false, statusText: '长连接连接中' });\r\n\r\n try {\r\n this.socket = new WebSocket(this.wsUrl);\r\n this.socket.binaryType = 'arraybuffer';\r\n } catch (error) {\r\n this.emit('connectionStatusChanged', { connected: false, statusText: '长连接创建失败,使用HTTP补偿' });\r\n this.scheduleReconnect();\r\n return;\r\n }\r\n\r\n this.socket.onopen = () => {\r\n this.connected = true;\r\n this.reconnectAttempts = 0;\r\n this.emit('connectionStatusChanged', { connected: true, statusText: '长连接已连接' });\r\n this.sendAuthFrame();\r\n this.startHeartbeat();\r\n this.refreshConversationList();\r\n };\r\n\r\n this.socket.onmessage = event => {\r\n this.handleFrame(event.data);\r\n };\r\n\r\n this.socket.onerror = () => {\r\n this.emit('connectionStatusChanged', { connected: false, statusText: '长连接异常,使用HTTP补偿' });\r\n };\r\n\r\n this.socket.onclose = () => {\r\n this.connected = false;\r\n this.clearHeartbeatTimer();\r\n this.socket = null;\r\n if (this.manualClose) {\r\n return;\r\n }\r\n this.emit('connectionStatusChanged', { connected: false, statusText: '长连接重连中' });\r\n this.scheduleReconnect();\r\n };\r\n }\r\n\r\n sendAuthFrame() {\r\n this.sendFrame({\r\n type: 'auth',\r\n userId: this.currentUser?.userId || '',\r\n token: this.currentUser?.token || '',\r\n clientId: this.getClientId(),\r\n platform: appConfig.platform,\r\n timestamp: Date.now()\r\n });\r\n }\r\n\r\n sendFrame(frame) {\r\n if (this.socket?.readyState !== WebSocket.OPEN) {\r\n return false;\r\n }\r\n this.socket.send(JSON.stringify(frame));\r\n return true;\r\n }\r\n\r\n handleFrame(rawData) {\r\n if (rawData instanceof ArrayBuffer) {\r\n this.emit('rawFrameReceived', rawData);\r\n return;\r\n }\r\n\r\n let payload;\r\n try {\r\n payload = typeof rawData === 'string' ? JSON.parse(rawData) : rawData;\r\n } catch (error) {\r\n return;\r\n }\r\n\r\n const type = payload.type || payload.event || payload.cmd || '';\r\n if (type === 'pong' || type === 'auth_ok' || type === 'connected') {\r\n return;\r\n }\r\n if (type === 'contactsChanged') {\r\n this.emit('contactsChanged', payload.contacts || []);\r\n return;\r\n }\r\n if (type === 'conversationsChanged') {\r\n this.emit('conversationsChanged', payload.conversations || []);\r\n return;\r\n }\r\n if (type === 'messages' && Array.isArray(payload.messages)) {\r\n payload.messages\r\n .map(message => normalizeIncomingMessage(message, this.currentUser?.userId))\r\n .filter(Boolean)\r\n .forEach(message => this.emit('messageReceived', message));\r\n return;\r\n }\r\n\r\n const message = normalizeIncomingMessage(payload, this.currentUser?.userId);\r\n if (message) {\r\n this.emit(message.direction === 'out' ? 'messageStatusChanged' : 'messageReceived', message);\r\n }\r\n }\r\n\r\n startHeartbeat() {\r\n this.clearHeartbeatTimer();\r\n this.heartbeatTimer = window.setInterval(() => {\r\n this.sendFrame({ type: 'ping', timestamp: Date.now() });\r\n }, HEARTBEAT_INTERVAL_MS);\r\n }\r\n\r\n clearHeartbeatTimer() {\r\n if (this.heartbeatTimer) {\r\n window.clearInterval(this.heartbeatTimer);\r\n this.heartbeatTimer = null;\r\n }\r\n }\r\n\r\n scheduleReconnect() {\r\n this.clearReconnectTimer();\r\n const delay = Math.min(RECONNECT_MAX_MS, RECONNECT_MIN_MS * 2 ** this.reconnectAttempts);\r\n this.reconnectAttempts += 1;\r\n this.reconnectTimer = window.setTimeout(() => {\r\n this.openSocket();\r\n }, delay);\r\n }\r\n\r\n clearReconnectTimer() {\r\n if (this.reconnectTimer) {\r\n window.clearTimeout(this.reconnectTimer);\r\n this.reconnectTimer = null;\r\n }\r\n }\r\n}\r\n","function configuredProxyHosts() {\n const configured = window.JC_WEB_IM_CONFIG?.mediaProxyHosts;\n const values = Array.isArray(configured)\n ? configured\n : String(configured || '').split(/[\\s,]+/);\n return new Set(\n ['zhiyanim.dfpnm.cn', ...values]\n .map(value => String(value || '').trim().toLowerCase().replace(/\\.$/, ''))\n .filter(Boolean)\n );\n}\n\nexport function imageDisplayUrl(value) {\n const source = String(value || '').trim();\n if (!source || source.startsWith('blob:') || source.startsWith('data:')) {\n return source;\n }\n\n try {\n const url = new URL(source, window.location.origin);\n if (url.protocol !== 'https:' || !configuredProxyHosts().has(url.hostname.toLowerCase())) {\n return source;\n }\n const proxyUrl = new URL('/api/media_proxy.php', window.location.origin);\n proxyUrl.searchParams.set('url', url.toString());\n return proxyUrl.toString();\n } catch (error) {\n return source;\n }\n}\n","import axios from 'axios';\nimport { appConfig } from '@/config';\nimport { imClient } from '@/services/imClient';\n\nclass RealtimeNotificationClient {\n constructor() {\n this.source = null;\n this.userId = '';\n this.handler = null;\n this.reconnectTimer = null;\n this.reconnectAttempt = 0;\n this.generation = 0;\n }\n\n isConnected() {\n return this.source?.readyState === WebSocket.OPEN;\n }\n\n start(userId, handler) {\n this.stop();\n if (!appConfig.sseEnabled || !userId || typeof window.WebSocket !== 'function') return;\n this.userId = userId;\n this.handler = handler;\n this.generation += 1;\n this.open(this.generation);\n }\n\n stop() {\n this.generation += 1;\n window.clearTimeout(this.reconnectTimer);\n this.reconnectTimer = null;\n if (this.source) this.source.close();\n this.source = null;\n this.userId = '';\n this.handler = null;\n this.reconnectAttempt = 0;\n }\n\n async open(generation) {\n try {\n const response = await axios.post(appConfig.sseTicketApi, { userId: this.userId }, {\n withCredentials: false,\n headers: imClient.getAppAuthHeaders(appConfig.appServer)\n });\n if (generation !== this.generation) return;\n if (response.data?.code !== 0) throw new Error(response.data?.message || '实时通知凭证申请失败');\n const ticket = response.data?.result?.ticket || '';\n if (!ticket) throw new Error('实时通知凭证为空');\n const separator = appConfig.sseUrl.includes('?') ? '&' : '?';\n const endpoint = `${appConfig.sseUrl}${separator}ticket=${encodeURIComponent(ticket)}`;\n const socketUrl = endpoint.startsWith('ws://') || endpoint.startsWith('wss://')\n ? endpoint\n : `${window.location.protocol === 'https:' ? 'wss:' : 'ws:'}//${window.location.host}${endpoint.startsWith('/') ? '' : '/'}${endpoint}`;\n const source = new WebSocket(socketUrl);\n this.source = source;\n source.onopen = () => {\n this.reconnectAttempt = 0;\n };\n source.onmessage = event => {\n if (generation !== this.generation) return;\n let payload = {};\n try { payload = JSON.parse(event.data || '{}'); } catch (error) { payload = {}; }\n if (payload.type !== 'message-notification') return;\n this.handler?.(payload);\n };\n source.onerror = () => {\n if (generation !== this.generation) return;\n source.close();\n if (this.source === source) this.source = null;\n this.scheduleReconnect(generation);\n };\n source.onclose = () => {\n if (generation !== this.generation || this.source !== source) return;\n this.source = null;\n this.scheduleReconnect(generation);\n };\n } catch (error) {\n if (generation === this.generation) this.scheduleReconnect(generation);\n }\n }\n\n scheduleReconnect(generation) {\n window.clearTimeout(this.reconnectTimer);\n const delay = Math.min(30000, 1000 * (2 ** Math.min(this.reconnectAttempt, 5)));\n this.reconnectAttempt += 1;\n this.reconnectTimer = window.setTimeout(() => this.open(generation), delay);\n }\n}\n\nexport const realtimeNotifications = new RealtimeNotificationClient();\n","import { defineStore } from 'pinia';\r\nimport { imClient } from '@/services/imClient';\r\nimport { useConversationStore } from '@/stores/conversations';\r\nimport { useNavigationStore } from '@/stores/navigation';\r\nimport { useSessionStore } from '@/stores/session';\r\n\r\nconst CONTACT_CACHE_MS = 15000;\r\n\r\nfunction normalizeContacts(contacts) {\r\n const unique = new Map();\r\n contacts.forEach(contact => {\r\n const uid = String(contact.uid || contact.id || '').trim();\r\n if (!uid) {\r\n return;\r\n }\r\n const normalized = {\r\n ...contact,\r\n id: String(contact.id || uid),\r\n uid\r\n };\r\n unique.set(uid, {\r\n ...(unique.get(uid) || {}),\r\n ...normalized\r\n });\r\n });\r\n return Array.from(unique.values()).sort((a, b) => a.title.localeCompare(b.title, 'zh-CN'));\r\n}\r\n\r\nexport const useContactStore = defineStore('contacts', {\r\n state: () => ({\r\n contacts: [],\r\n activeId: '',\r\n loading: false,\r\n eventsBound: false,\r\n refreshSerial: 0,\r\n refreshPromise: null,\r\n loadedForUserId: '',\r\n loadedAt: 0,\r\n actionError: '',\r\n actionInfo: ''\r\n }),\r\n getters: {\r\n activeContact(state) {\r\n return state.contacts.find(item => item.id === state.activeId) || state.contacts[0] || null;\r\n }\r\n },\r\n actions: {\r\n bindImEvents() {\r\n if (this.eventsBound) {\r\n return;\r\n }\r\n this.eventsBound = true;\r\n imClient.on('contactsChanged', contacts => {\r\n if (!contacts.length && this.contacts.length) {\r\n return;\r\n }\r\n this.contacts = normalizeContacts(contacts);\r\n if (!this.contacts.find(item => item.id === this.activeId)) {\r\n this.activeId = this.contacts[0]?.id || '';\r\n }\r\n });\r\n },\r\n async refreshContacts(options = {}) {\r\n this.bindImEvents();\r\n const session = useSessionStore();\r\n const requestUserId = session.userId;\r\n const force = Boolean(options.force);\r\n if (!requestUserId) {\r\n this.clearContacts();\r\n return [];\r\n }\r\n if (!force\r\n && this.contacts.length\r\n && this.loadedForUserId === requestUserId\r\n && Date.now() - this.loadedAt < CONTACT_CACHE_MS\r\n ) {\r\n return this.contacts;\r\n }\r\n if (this.refreshPromise && !force) {\r\n return this.refreshPromise;\r\n }\r\n const serial = this.refreshSerial + 1;\r\n this.refreshSerial = serial;\r\n this.loading = true;\r\n\r\n this.refreshPromise = (async () => {\r\n this.contacts = normalizeContacts(imClient.refreshContactList());\r\n if (!this.contacts.find(item => item.id === this.activeId)) {\r\n this.activeId = this.contacts[0]?.id || '';\r\n }\r\n if (!this.contacts.length || force) {\r\n const serverContacts = await imClient.getServerContactList(requestUserId);\r\n if (serial !== this.refreshSerial || useSessionStore().userId !== requestUserId) {\r\n return this.contacts;\r\n }\r\n this.contacts = normalizeContacts(serverContacts);\r\n this.loadedForUserId = requestUserId;\r\n this.loadedAt = Date.now();\r\n if (!this.contacts.find(item => item.id === this.activeId)) {\r\n this.activeId = this.contacts[0]?.id || '';\r\n }\r\n }\r\n window.setTimeout(() => {\r\n if (serial !== this.refreshSerial || useSessionStore().userId !== requestUserId) {\r\n return;\r\n }\r\n const latest = imClient.getContactList(false);\r\n if (latest.length || !this.contacts.length) {\r\n this.contacts = normalizeContacts(latest);\r\n this.loadedForUserId = requestUserId;\r\n this.loadedAt = Date.now();\r\n if (!this.contacts.find(item => item.id === this.activeId)) {\r\n this.activeId = this.contacts[0]?.id || '';\r\n }\r\n }\r\n }, 1200);\r\n return this.contacts;\r\n })();\r\n\r\n try {\r\n return await this.refreshPromise;\r\n } finally {\r\n if (serial === this.refreshSerial) {\r\n this.loading = false;\r\n this.refreshPromise = null;\r\n }\r\n }\r\n },\r\n async addContact(keyword) {\r\n const session = useSessionStore();\r\n const value = String(keyword || '').trim();\r\n this.actionError = '';\r\n this.actionInfo = '';\r\n if (!session.userId) {\r\n this.actionError = '请先登录';\r\n return false;\r\n }\r\n if (!value) {\r\n this.actionError = '请输入用户ID、手机号或用户名';\r\n return false;\r\n }\r\n\r\n this.loading = true;\r\n try {\r\n const contact = await imClient.addContact(session.userId, value, '添加联系人');\r\n if (contact) {\r\n this.contacts = normalizeContacts([...this.contacts, contact]);\r\n this.activeId = contact.id;\r\n }\r\n this.actionInfo = '联系人已添加';\r\n await this.refreshContacts({ force: true });\r\n return true;\r\n } catch (error) {\r\n this.actionError = error.message || '添加联系人失败';\r\n return false;\r\n } finally {\r\n this.loading = false;\r\n }\r\n },\r\n async updateContactAlias(contactId, alias) {\r\n const session = useSessionStore();\r\n const targetId = String(contactId || '').trim();\r\n const nextAlias = String(alias || '').trim();\r\n this.actionError = '';\r\n this.actionInfo = '';\r\n if (!session.userId) {\r\n this.actionError = '请先登录';\r\n return false;\r\n }\r\n if (!targetId) {\r\n this.actionError = '缺少联系人ID';\r\n return false;\r\n }\r\n\r\n try {\r\n const savedAlias = await imClient.updateContactAlias(session.userId, targetId, nextAlias);\r\n this.contacts = normalizeContacts(this.contacts.map(item => {\r\n if (item.uid !== targetId && item.id !== targetId) {\r\n return item;\r\n }\r\n const rawUser = {\r\n ...(item.rawUser || {}),\r\n friendAlias: savedAlias\r\n };\r\n const rawFriend = {\r\n ...(item.rawFriend || {}),\r\n alias: savedAlias\r\n };\r\n const title = savedAlias || rawUser.displayName || rawUser.name || item.uid;\r\n return {\r\n ...item,\r\n title,\r\n avatarText: title.slice(0, 1).toUpperCase(),\r\n alias: savedAlias,\r\n rawFriend,\r\n rawUser\r\n };\r\n }));\r\n this.loadedAt = Date.now();\r\n this.actionInfo = '备注名已修改';\r\n return true;\r\n } catch (error) {\r\n this.actionError = error.message || '备注名修改失败';\r\n return false;\r\n }\r\n },\r\n clearContacts() {\r\n this.refreshSerial += 1;\r\n this.contacts = [];\r\n this.activeId = '';\r\n this.loading = false;\r\n this.refreshPromise = null;\r\n this.loadedForUserId = '';\r\n this.loadedAt = 0;\r\n this.actionError = '';\r\n this.actionInfo = '';\r\n },\r\n setActiveContact(id) {\r\n this.activeId = id;\r\n },\r\n openChat(contact) {\r\n if (!contact) {\r\n return;\r\n }\r\n const conversations = useConversationStore();\r\n const navigation = useNavigationStore();\r\n const conversation = imClient.createSingleConversation(contact.uid, contact);\r\n conversations.upsertConversation(conversation);\r\n conversations.setActiveConversation(conversation.id);\r\n navigation.showMessages();\r\n }\r\n }\r\n});\r\n","import { defineStore } from 'pinia';\r\nimport { imClient } from '@/services/imClient';\r\nimport { appConfig } from '@/config';\nimport { useSessionStore } from '@/stores/session';\nimport { realtimeNotifications } from '@/services/realtimeNotifications';\nimport { imageDisplayUrl } from '@/services/mediaProxy';\n\r\nconst LOCAL_CONVERSATION_STORAGE_KEY = 'qmt-web-im-local-conversations-v2';\r\nconst LOCAL_FAVORITE_MESSAGES_KEY = 'qmt-web-im-favorite-messages-v1';\nconst LOCAL_PINNED_MESSAGES_KEY = 'qmt-web-im-pinned-messages-v1';\n\r\nfunction scopedStorageKey(baseKey) {\r\n const session = useSessionStore();\r\n const scope = `${appConfig.appServer || ''}:${session.userId || 'anonymous'}`;\r\n return `${baseKey}:${encodeURIComponent(scope)}`;\r\n}\r\n\r\nfunction readFavoriteMessages() {\r\n try {\r\n return JSON.parse(localStorage.getItem(scopedStorageKey(LOCAL_FAVORITE_MESSAGES_KEY)) || '[]');\r\n } catch (error) {\r\n return [];\r\n }\r\n}\r\n\r\nfunction writeFavoriteMessages(messages) {\n localStorage.setItem(scopedStorageKey(LOCAL_FAVORITE_MESSAGES_KEY), JSON.stringify(messages));\r\n}\r\n\r\nfunction readLocalConversations() {\r\n try {\r\n return JSON.parse(localStorage.getItem(scopedStorageKey(LOCAL_CONVERSATION_STORAGE_KEY)) || '[]');\r\n } catch (error) {\r\n return [];\r\n }\r\n}\r\n\r\nfunction writeLocalConversations(conversations) {\n localStorage.setItem(scopedStorageKey(LOCAL_CONVERSATION_STORAGE_KEY), JSON.stringify(conversations));\n}\n\nfunction readPinnedMessages() {\n try {\n return JSON.parse(localStorage.getItem(scopedStorageKey(LOCAL_PINNED_MESSAGES_KEY)) || '{}');\n } catch (error) {\n return {};\n }\n}\n\nfunction writePinnedMessages(messages) {\n localStorage.setItem(scopedStorageKey(LOCAL_PINNED_MESSAGES_KEY), JSON.stringify(messages));\n}\n\nfunction sortConversations(conversations) {\n return [...conversations].sort((left, right) => {\n const leftPinned = Number(left.pinnedAt || left.top || 0);\n const rightPinned = Number(right.pinnedAt || right.top || 0);\n if (Boolean(leftPinned) !== Boolean(rightPinned)) {\n return rightPinned ? 1 : -1;\n }\n if (leftPinned && rightPinned && leftPinned !== rightPinned) {\n return rightPinned - leftPinned;\n }\n return Number(right.updatedAt || 0) - Number(left.updatedAt || 0);\n });\n}\n\r\nfunction randomId() {\r\n if (window.crypto && window.crypto.randomUUID) {\r\n return window.crypto.randomUUID().replaceAll('-', '');\r\n }\r\n return `${Date.now()}${Math.random().toString(16).slice(2)}`;\r\n}\r\n\r\nfunction messageKey(message) {\r\n return message.id || message.messageUid;\r\n}\r\n\r\nfunction messageStableKey(message) {\r\n return String(message?.messageUid || message?.id || '');\r\n}\r\n\r\nfunction messageActivityTimestamp(message) {\r\n return Number(message?.activityTimestamp || message?.editedAt || message?.displayTimestamp || message?.timestamp || 0);\r\n}\r\n\r\nfunction isRecalledMessage(message) {\r\n return Boolean(message?.recalled) || message?.status === 'recalled';\r\n}\r\n\r\nfunction attachmentLabel(message) {\r\n const attachment = message?.attachment;\r\n if (!attachment) {\r\n return '';\r\n }\r\n if (attachment.type === 'image') {\r\n return '[图片]';\r\n }\r\n return `[文件] ${attachment.name || '文件'}`;\r\n}\r\n\r\nfunction messagePreviewText(message) {\r\n if (isRecalledMessage(message)) {\r\n return `[${message?.recallStatus || '已撤回'}]`;\r\n }\r\n const text = String(message?.text || '').replace(/\\s+/g, ' ').trim();\r\n return text || attachmentLabel(message);\r\n}\r\n\r\nfunction quotePrefix(message) {\r\n const text = messagePreviewText(message);\r\n return text.length > 48 ? `${text.slice(0, 48)}...` : text;\r\n}\r\n\r\nasync function writeClipboard(text) {\r\n if (navigator.clipboard?.writeText) {\r\n await navigator.clipboard.writeText(text);\r\n return;\r\n }\r\n const element = document.createElement('textarea');\r\n element.value = text;\r\n element.setAttribute('readonly', 'readonly');\r\n element.style.position = 'fixed';\r\n element.style.left = '-9999px';\r\n document.body.appendChild(element);\r\n element.select();\r\n document.execCommand('copy');\r\n document.body.removeChild(element);\r\n}\r\n\r\nfunction isSameMessage(left, right) {\r\n if (left.messageUid && right.messageUid && left.messageUid === right.messageUid) {\r\n return true;\r\n }\r\n if (left.id && right.id && left.id === right.id) {\r\n return true;\r\n }\r\n return left.direction === right.direction\r\n && left.text === right.text\r\n && (left.type || 'text') === (right.type || 'text')\r\n && Math.abs(Number(left.displayTimestamp || left.timestamp || 0) - Number(right.displayTimestamp || right.timestamp || 0)) < 15000;\r\n}\r\n\r\nfunction hasExactMessage(messages, message) {\r\n return messages.some(item => {\r\n if (item.id && message.id && item.id === message.id) {\r\n return true;\r\n }\r\n return item.messageUid && message.messageUid && item.messageUid === message.messageUid;\r\n });\r\n}\r\n\r\nfunction shouldUseMessagePolling() {\r\n return imClient.shouldUseMessagePolling ? imClient.shouldUseMessagePolling() : true;\r\n}\r\n\r\nfunction canMarkReadNow(options = {}) {\n if (typeof document === 'undefined') {\r\n return false;\r\n }\r\n if (document.visibilityState !== 'visible') {\r\n return false;\r\n }\r\n if (options.userAction) {\r\n return true;\r\n }\r\n return true;\n}\n\nfunction normalizeMessageForDisplay(message) {\n if (!message || message.attachment || String(message.text || '').trim()) {\n return message;\n }\n const contentType = Number(message.contentType || 0);\n const labels = {\n 3: '[图片加载失败]',\n 6: '[视频加载失败]',\n 90: '[红包]',\n 92: '以上是打招呼的内容',\n 93: '你们已经是好友了,可以开始聊天了。',\n 105: '[领取了红包]'\n };\n if (!labels[contentType]) {\n return message;\n }\n return {\n ...message,\n type: 'text',\n text: labels[contentType]\n };\n}\n\nfunction mergeVisibleMessages(currentMessages, syncedMessages) {\n const merged = [...syncedMessages].map(normalizeMessageForDisplay);\n currentMessages.forEach(currentMessage => {\n currentMessage = normalizeMessageForDisplay(currentMessage);\n const exists = merged.some(message => isSameMessage(message, currentMessage));\r\n const shouldKeepLocal = currentMessage.status === 'sending'\r\n || currentMessage.status === 'failed'\r\n || (currentMessage.direction === 'out'\r\n && currentMessage.status === 'sent'\r\n && Date.now() - Number(currentMessage.timestamp || 0) < 30000);\r\n if (!exists && shouldKeepLocal) {\r\n merged.push(currentMessage);\r\n }\r\n });\r\n\r\n return merged\r\n .filter((message, index, messages) => {\r\n const key = messageKey(message);\r\n return messages.findIndex(item => messageKey(item) === key) === index;\r\n })\r\n .sort((a, b) => Number(a.displayTimestamp || a.timestamp || 0) - Number(b.displayTimestamp || b.timestamp || 0));\r\n}\r\n\r\nfunction incomingEditedMessages(previousMessages, nextMessages) {\r\n const previousByKey = new Map();\r\n (previousMessages || []).forEach(message => {\r\n const key = messageStableKey(message);\r\n if (key) {\r\n previousByKey.set(key, message);\r\n }\r\n });\r\n\r\n return (nextMessages || []).filter(message => {\r\n if (message.direction !== 'in') {\r\n return false;\r\n }\r\n const editedAt = Number(message.editedAt || 0);\r\n if (editedAt <= 0) {\r\n return false;\r\n }\r\n const previous = previousByKey.get(messageStableKey(message));\r\n return previous && editedAt > Number(previous.editedAt || 0);\r\n });\r\n}\r\n\r\nlet notificationAudioContext = null;\r\n\r\nfunction playNotificationSound() {\r\n if (typeof window === 'undefined') {\r\n return;\r\n }\r\n try {\r\n const AudioContext = window.AudioContext || window.webkitAudioContext;\r\n if (!AudioContext) {\r\n return;\r\n }\r\n notificationAudioContext = notificationAudioContext || new AudioContext();\r\n if (notificationAudioContext.state === 'suspended') {\r\n notificationAudioContext.resume().catch(() => {});\r\n }\r\n const oscillator = notificationAudioContext.createOscillator();\r\n const gain = notificationAudioContext.createGain();\r\n const startAt = notificationAudioContext.currentTime;\r\n oscillator.type = 'sine';\r\n oscillator.frequency.setValueAtTime(880, startAt);\r\n oscillator.frequency.setValueAtTime(660, startAt + 0.1);\r\n gain.gain.setValueAtTime(0.0001, startAt);\r\n gain.gain.exponentialRampToValueAtTime(0.12, startAt + 0.02);\r\n gain.gain.exponentialRampToValueAtTime(0.0001, startAt + 0.22);\r\n oscillator.connect(gain);\r\n gain.connect(notificationAudioContext.destination);\r\n oscillator.start(startAt);\r\n oscillator.stop(startAt + 0.24);\r\n } catch (error) {\r\n // Notification sound is best-effort; browsers may block audio until user interaction.\r\n }\r\n}\r\n\r\nexport const useConversationStore = defineStore('conversations', {\r\n state: () => ({\r\n activeId: '',\r\n conversations: [],\r\n messagesByConversation: {},\r\n visibleMessagesByConversation: {},\r\n eventsBound: false,\r\n usingDemoData: false,\r\n loading: false,\r\n syncTimer: null,\r\n conversationSyncTimer: null,\r\n readPresenceEventsBound: false,\r\n syncInFlight: false,\r\n pendingReadReceiptConversationId: '',\r\n conversationSyncInFlight: false,\r\n syncAfterSendTimer: null,\r\n optimisticMessagesByConversation: {},\r\n quotedMessage: null,\r\n forwardingMessages: [],\r\n editingMessage: null,\r\n editingText: '',\r\n editingMode: '',\r\n messageDetailOpen: false,\r\n messageDetailLoading: false,\r\n messageDetailError: '',\r\n messageDetail: null,\r\n attentionMessageId: '',\r\n attentionMessageTimer: null,\r\n selectionMode: false,\r\n selectedMessageIds: [],\r\n favoriteMessages: [],\n pinnedMessagesByConversation: {},\n activeFavoriteKey: '',\r\n actionNotice: '',\n actionError: '',\n actionNoticeTimer: null,\n realtimeSyncTimer: null\n }),\r\n getters: {\r\n activeConversation(state) {\r\n return state.conversations.find(item => item.id === state.activeId) || state.conversations[0] || null;\r\n },\r\n activeMessages(state) {\r\n return state.visibleMessagesByConversation[state.activeId] || [];\r\n },\r\n totalUnread(state) {\r\n return state.conversations.reduce((sum, item) => sum + Number(item.unread || 0), 0);\r\n },\r\n canSendActiveConversation(state) {\r\n const conversation = state.conversations.find(item => item.id === state.activeId) || state.conversations[0] || null;\r\n if (!conversation) {\r\n return false;\r\n }\r\n if (conversation.type !== 'channel') {\r\n return true;\r\n }\r\n return ['owner', 'admin'].includes(conversation.role || conversation.raw?.role || '');\r\n },\r\n favoriteMessageIds(state) {\r\n return state.favoriteMessages.map(message => message.key);\r\n },\r\n activeFavorite(state) {\n return state.favoriteMessages.find(message => message.key === state.activeFavoriteKey)\n || state.favoriteMessages[0]\n || null;\n },\n activePinnedMessage(state) {\n const pinned = state.pinnedMessagesByConversation[state.activeId] || null;\n if (!pinned) return null;\n const message = (state.visibleMessagesByConversation[state.activeId] || [])\n .find(item => messageStableKey(item) === pinned.key);\n return message ? { ...pinned, ...message, key: pinned.key } : pinned;\n },\n selectedMessages(state) {\r\n const selectedIds = new Set(state.selectedMessageIds);\r\n return (state.visibleMessagesByConversation[state.activeId] || [])\r\n .filter(message => selectedIds.has(messageStableKey(message)));\r\n }\r\n },\r\n actions: {\r\n bootstrapDemoData() {\n const session = useSessionStore();\n this.bindImEvents();\n this.usingDemoData = false;\n if (!session.userId) {\n this.clearUserState();\n return;\n }\n this.loadScopedLocalState();\n this.startMessageSync();\n realtimeNotifications.start(session.userId, payload => this.handleRealtimeNotification(payload));\n },\n loadScopedLocalState() {\n this.conversations = [];\n this.favoriteMessages = readFavoriteMessages();\n this.pinnedMessagesByConversation = readPinnedMessages();\n this.activeFavoriteKey = this.favoriteMessages[0]?.key || '';\n this.activeId = '';\n this.messagesByConversation = {};\n this.visibleMessagesByConversation = {};\n this.optimisticMessagesByConversation = {};\n this.quotedMessage = null;\r\n this.forwardingMessages = [];\r\n this.editingMessage = null;\r\n this.editingText = '';\r\n this.editingMode = '';\r\n this.messageDetailOpen = false;\r\n this.messageDetailLoading = false;\r\n this.messageDetailError = '';\r\n this.messageDetail = null;\n this.selectionMode = false;\n this.selectedMessageIds = [];\n },\n clearUserState() {\r\n window.clearInterval(this.syncTimer);\r\n window.clearInterval(this.conversationSyncTimer);\r\n window.clearTimeout(this.syncAfterSendTimer);\n window.clearTimeout(this.attentionMessageTimer);\n window.clearTimeout(this.actionNoticeTimer);\n window.clearTimeout(this.realtimeSyncTimer);\n realtimeNotifications.stop();\n this.syncTimer = null;\r\n this.conversationSyncTimer = null;\r\n this.syncAfterSendTimer = null;\r\n this.attentionMessageTimer = null;\n this.actionNoticeTimer = null;\n this.realtimeSyncTimer = null;\n this.syncInFlight = false;\r\n this.conversationSyncInFlight = false;\r\n this.pendingReadReceiptConversationId = '';\r\n this.activeId = '';\r\n this.conversations = [];\r\n this.messagesByConversation = {};\r\n this.visibleMessagesByConversation = {};\r\n this.optimisticMessagesByConversation = {};\r\n this.quotedMessage = null;\r\n this.forwardingMessages = [];\r\n this.editingMessage = null;\r\n this.editingText = '';\r\n this.editingMode = '';\r\n this.messageDetailOpen = false;\r\n this.messageDetailLoading = false;\r\n this.messageDetailError = '';\r\n this.messageDetail = null;\r\n this.attentionMessageId = '';\r\n this.selectionMode = false;\r\n this.selectedMessageIds = [];\r\n this.favoriteMessages = [];\r\n this.activeFavoriteKey = '';\r\n this.actionNotice = '';\r\n this.actionError = '';\r\n },\r\n bindImEvents() {\r\n if (this.eventsBound) {\r\n return;\r\n }\r\n this.eventsBound = true;\r\n imClient.on('messageSent', message => {\r\n this.appendMessage(message.conversationId, message);\r\n });\r\n imClient.on('messageReceived', message => {\n this.appendMessage(message.conversationId, message);\n if (message.conversationId === this.activeId) {\n this.scheduleActiveMessagesSync({ allowReadReceipt: true }, 500);\n }\r\n });\r\n imClient.on('messageStatusChanged', message => {\r\n this.replaceMessage(message.conversationId, message);\r\n });\r\n imClient.on('conversationsChanged', remoteConversations => {\r\n this.usingDemoData = false;\r\n this.applyRemoteConversations(remoteConversations);\r\n });\r\n },\r\n setActiveConversation(id) {\r\n this.activeId = id;\r\n const conversation = this.conversations.find(item => item.id === id);\r\n if (conversation) {\r\n conversation.unread = 0;\r\n }\r\n this.loadActiveMessages({ allowReadReceipt: true, userAction: true });\r\n },\r\n sendText(text) {\r\n const conversation = this.activeConversation;\r\n if (!conversation || !text.trim()) {\r\n return;\r\n }\r\n let value = text.trim();\r\n if (this.quotedMessage) {\r\n value = `引用:${quotePrefix(this.quotedMessage)}\\n${value}`;\r\n this.quotedMessage = null;\r\n }\r\n const message = {\r\n id: randomId(),\r\n conversationId: conversation.id,\r\n from: 'me',\r\n direction: 'out',\r\n type: 'text',\r\n text: value,\r\n status: 'sending',\r\n deliveryStatus: 'sending',\r\n timestamp: Date.now(),\r\n displayTimestamp: Date.now()\r\n };\r\n this.appendVisibleMessage(conversation.id, message);\r\n this.appendMessage(conversation.id, message);\r\n imClient.sendTextMessage(conversation, value, message);\r\n conversation.subtitle = value;\r\n conversation.updatedAt = Date.now();\r\n writeLocalConversations(this.conversations);\r\n window.clearTimeout(this.syncAfterSendTimer);\r\n this.syncAfterSendTimer = window.setTimeout(() => this.syncActiveMessages(), 250);\r\n },\r\n sendAttachment({ type, file, text = '' }) {\r\n const conversation = this.activeConversation;\r\n if (!conversation || !file || !['image', 'file'].includes(type)) {\r\n return;\r\n }\r\n let value = text.trim();\r\n if (this.quotedMessage) {\r\n value = `引用:${quotePrefix(this.quotedMessage)}\\n${value}`.trim();\r\n this.quotedMessage = null;\r\n }\r\n const now = Date.now();\r\n const message = {\r\n id: randomId(),\r\n conversationId: conversation.id,\r\n from: 'me',\r\n senderRole: conversation.role || conversation.raw?.role || '',\r\n direction: 'out',\r\n type,\r\n text: value,\r\n attachment: {\r\n type,\r\n name: file.name || (type === 'image' ? '图片' : '文件'),\r\n mime: file.type || '',\r\n size: file.size || 0,\r\n url: type === 'image' ? URL.createObjectURL(file) : ''\r\n },\r\n status: 'sending',\r\n deliveryStatus: 'sending',\r\n timestamp: now,\r\n displayTimestamp: now\r\n };\r\n this.appendVisibleMessage(conversation.id, message);\r\n this.appendMessage(conversation.id, message);\r\n imClient.sendAttachmentMessage(conversation, { type, file, text: value }, message);\r\n conversation.subtitle = messagePreviewText(message);\r\n conversation.updatedAt = now;\r\n writeLocalConversations(this.conversations);\r\n window.clearTimeout(this.syncAfterSendTimer);\r\n this.syncAfterSendTimer = window.setTimeout(() => this.syncActiveMessages(), 350);\r\n },\r\n async sendTextToConversation(conversation, text) {\r\n if (!conversation || !text.trim()) {\r\n return null;\r\n }\r\n const value = text.trim();\r\n const message = {\r\n id: randomId(),\r\n conversationId: conversation.id,\r\n from: 'me',\r\n direction: 'out',\r\n type: 'text',\r\n text: value,\r\n status: 'sending',\r\n deliveryStatus: 'sending',\r\n timestamp: Date.now(),\r\n displayTimestamp: Date.now()\r\n };\r\n this.appendMessage(conversation.id, message);\r\n const sentMessage = await imClient.sendTextMessage(conversation, value, message);\r\n this.replaceMessage(conversation.id, sentMessage);\r\n return sentMessage;\r\n },\r\n upsertConversation(conversation) {\r\n const index = this.conversations.findIndex(item => item.id === conversation.id);\r\n if (index >= 0) {\r\n this.conversations.splice(index, 1, {\r\n ...this.conversations[index],\r\n ...conversation\r\n });\r\n } else {\r\n this.conversations.unshift(conversation);\r\n }\r\n this.usingDemoData = false;\r\n writeLocalConversations(this.conversations);\r\n },\r\n removeConversation(conversationId) {\r\n this.conversations = this.conversations.filter(conversation => conversation.id !== conversationId);\r\n const {\r\n [conversationId]: removedMessages,\r\n ...messagesByConversation\r\n } = this.messagesByConversation;\r\n const {\r\n [conversationId]: removedVisibleMessages,\r\n ...visibleMessagesByConversation\r\n } = this.visibleMessagesByConversation;\r\n const {\r\n [conversationId]: removedOptimisticMessages,\r\n ...optimisticMessagesByConversation\r\n } = this.optimisticMessagesByConversation;\r\n void removedMessages;\r\n void removedVisibleMessages;\r\n void removedOptimisticMessages;\r\n this.messagesByConversation = messagesByConversation;\r\n this.visibleMessagesByConversation = visibleMessagesByConversation;\r\n this.optimisticMessagesByConversation = optimisticMessagesByConversation;\r\n if (this.activeId === conversationId) {\r\n this.activeId = this.conversations[0]?.id || '';\r\n }\r\n writeLocalConversations(this.conversations);\r\n if (this.activeId) {\r\n this.loadActiveMessages();\r\n }\r\n },\r\n applyRemoteConversations(remoteConversations) {\r\n const remote = Array.isArray(remoteConversations) ? remoteConversations : [];\r\n if (!remote.length && this.conversations.length) {\r\n return;\r\n }\r\n\r\n const merged = new Map();\r\n this.conversations.forEach(conversation => {\r\n merged.set(conversation.id, conversation);\r\n });\r\n remote.forEach(conversation => {\r\n const unread = conversation.id === this.activeId && canMarkReadNow() ? 0 : Number(conversation.unread || 0);\r\n merged.set(conversation.id, {\r\n ...(merged.get(conversation.id) || {}),\r\n ...conversation,\r\n unread\r\n });\r\n });\r\n\r\n this.conversations = sortConversations(Array.from(merged.values()))\n .slice(0, 100);\n\r\n if (!this.conversations.length) {\r\n this.activeId = '';\r\n this.messagesByConversation = {};\r\n this.visibleMessagesByConversation = {};\r\n this.optimisticMessagesByConversation = {};\r\n writeLocalConversations(this.conversations);\r\n return;\r\n }\r\n\r\n if (!this.conversations.find(item => item.id === this.activeId)) {\r\n this.activeId = this.conversations[0].id;\r\n }\r\n writeLocalConversations(this.conversations);\n this.loadActiveMessages();\n },\n togglePinnedConversation(conversationId) {\n const conversation = this.conversations.find(item => item.id === conversationId);\n if (!conversation) return;\n conversation.pinnedAt = Number(conversation.pinnedAt || conversation.top || 0) > 0 ? 0 : Date.now();\n conversation.top = conversation.pinnedAt;\n this.conversations = sortConversations(this.conversations);\n writeLocalConversations(this.conversations);\n },\n appendMessage(conversationId, message) {\r\n if (!this.messagesByConversation[conversationId]) {\r\n this.messagesByConversation = {\r\n ...this.messagesByConversation,\r\n [conversationId]: []\r\n };\r\n }\r\n if (message.direction === 'out' && (message.status === 'sending' || message.status === 'sent')) {\r\n this.keepOptimisticMessage(conversationId, message);\r\n }\r\n if (!hasExactMessage(this.messagesByConversation[conversationId], message)) {\r\n this.messagesByConversation = {\r\n ...this.messagesByConversation,\r\n [conversationId]: [...this.messagesByConversation[conversationId], message]\r\n };\r\n }\r\n this.updateConversationFromMessage(conversationId, message);\r\n this.syncVisibleMessages(conversationId);\r\n writeLocalConversations(this.conversations);\r\n },\r\n removeMessages(conversationId, messages) {\r\n const ids = new Set(messages.flatMap(message => [message.id, message.messageUid].filter(Boolean).map(String)));\r\n const filterMessages = list => (list || []).filter(message => {\r\n return ![message.id, message.messageUid].filter(Boolean).some(id => ids.has(String(id)));\r\n });\r\n this.messagesByConversation = {\r\n ...this.messagesByConversation,\r\n [conversationId]: filterMessages(this.messagesByConversation[conversationId])\r\n };\r\n this.visibleMessagesByConversation = {\r\n ...this.visibleMessagesByConversation,\r\n [conversationId]: filterMessages(this.visibleMessagesByConversation[conversationId])\r\n };\r\n this.optimisticMessagesByConversation = {\r\n ...this.optimisticMessagesByConversation,\r\n [conversationId]: filterMessages(this.optimisticMessagesByConversation[conversationId])\r\n };\r\n this.selectedMessageIds = this.selectedMessageIds.filter(id => !ids.has(String(id)));\r\n },\r\n replaceLocalMessage(conversationId, targetMessage, nextMessage) {\r\n const keys = new Set([targetMessage.id, targetMessage.messageUid].filter(Boolean).map(String));\r\n const replaceInList = list => (list || []).map(message => {\r\n const matched = [message.id, message.messageUid].filter(Boolean).some(id => keys.has(String(id)));\r\n return matched ? { ...message, ...nextMessage } : message;\r\n });\r\n this.messagesByConversation = {\r\n ...this.messagesByConversation,\r\n [conversationId]: replaceInList(this.messagesByConversation[conversationId])\r\n };\r\n this.visibleMessagesByConversation = {\r\n ...this.visibleMessagesByConversation,\r\n [conversationId]: replaceInList(this.visibleMessagesByConversation[conversationId])\r\n };\r\n },\r\n updateConversationFromMessage(conversationId, message) {\r\n const conversation = this.conversations.find(item => item.id === conversationId);\r\n if (!conversation) {\r\n return;\r\n }\r\n\r\n conversation.subtitle = message.text || conversation.subtitle || '';\r\n conversation.updatedAt = messageActivityTimestamp(message) || Date.now();\r\n if (message.direction === 'in') {\r\n conversation.unread = conversationId === this.activeId ? 0 : Number(conversation.unread || 0) + 1;\r\n }\r\n this.conversations = [...this.conversations]\r\n .sort((a, b) => Number(b.updatedAt || 0) - Number(a.updatedAt || 0));\r\n },\r\n appendVisibleMessage(conversationId, message) {\r\n const messages = this.visibleMessagesByConversation[conversationId] || [];\r\n this.visibleMessagesByConversation = {\r\n ...this.visibleMessagesByConversation,\r\n [conversationId]: [...messages.filter(item => item.id !== message.id), message]\r\n .sort((a, b) => Number(a.displayTimestamp || a.timestamp || 0) - Number(b.displayTimestamp || b.timestamp || 0))\r\n };\r\n },\r\n replaceMessage(conversationId, message) {\r\n if (!this.messagesByConversation[conversationId]) {\r\n this.messagesByConversation = {\r\n ...this.messagesByConversation,\r\n [conversationId]: []\r\n };\r\n }\r\n if (message.direction === 'out' && (message.status === 'sending' || message.status === 'sent' || message.status === 'failed')) {\r\n this.keepOptimisticMessage(conversationId, message);\r\n }\r\n const index = this.messagesByConversation[conversationId].findIndex(item => item.id === message.id);\r\n if (index >= 0) {\r\n const messages = [...this.messagesByConversation[conversationId]];\r\n messages.splice(index, 1, message);\r\n this.messagesByConversation = {\r\n ...this.messagesByConversation,\r\n [conversationId]: messages\r\n };\r\n } else {\r\n this.messagesByConversation = {\r\n ...this.messagesByConversation,\r\n [conversationId]: [...this.messagesByConversation[conversationId], message]\r\n };\r\n }\r\n this.syncVisibleMessages(conversationId);\r\n },\r\n syncVisibleMessages(conversationId) {\r\n this.visibleMessagesByConversation = {\r\n ...this.visibleMessagesByConversation,\r\n [conversationId]: mergeVisibleMessages(\r\n this.optimisticMessagesByConversation[conversationId] || [],\r\n this.messagesByConversation[conversationId] || []\r\n )\r\n };\r\n },\r\n keepOptimisticMessage(conversationId, message) {\r\n if (!this.optimisticMessagesByConversation[conversationId]) {\r\n this.optimisticMessagesByConversation = {\r\n ...this.optimisticMessagesByConversation,\r\n [conversationId]: []\r\n };\r\n }\r\n const messages = this.optimisticMessagesByConversation[conversationId];\r\n const index = messages.findIndex(item => item.id === message.id);\r\n let nextMessages;\r\n if (index >= 0) {\r\n nextMessages = [...messages];\r\n nextMessages.splice(index, 1, message);\r\n } else {\r\n nextMessages = [...messages, message];\r\n }\r\n this.optimisticMessagesByConversation = {\r\n ...this.optimisticMessagesByConversation,\r\n [conversationId]: nextMessages\r\n };\r\n },\r\n pruneOptimisticMessages(conversationId, syncedMessages) {\r\n const messages = this.optimisticMessagesByConversation[conversationId] || [];\r\n if (!messages.length) {\r\n return;\r\n }\r\n this.optimisticMessagesByConversation = {\r\n ...this.optimisticMessagesByConversation,\r\n [conversationId]: messages.filter(message => {\r\n const remoteMatched = syncedMessages.some(syncedMessage => {\r\n return syncedMessage.id !== message.id && isSameMessage(syncedMessage, message);\r\n });\r\n if (remoteMatched && message.status !== 'failed') {\r\n return false;\r\n }\r\n return Date.now() - Number(message.displayTimestamp || message.timestamp || 0) < 30000 || message.status === 'failed';\r\n })\r\n };\r\n },\r\n loadActiveMessages(options = {}) {\r\n const syncOptions = typeof options === 'boolean'\r\n ? { allowReadReceipt: options }\r\n : options;\r\n const conversation = this.activeConversation;\r\n if (!conversation) {\r\n return;\r\n }\r\n this.loading = true;\r\n const messages = imClient.getMessages(conversation, 30);\r\n this.pruneOptimisticMessages(conversation.id, messages);\r\n this.messagesByConversation = {\r\n ...this.messagesByConversation,\r\n [conversation.id]: mergeVisibleMessages(this.messagesByConversation[conversation.id] || [], messages)\r\n };\r\n this.syncVisibleMessages(conversation.id);\r\n this.loading = false;\r\n this.syncActiveMessages(syncOptions);\r\n },\r\n async syncActiveMessages(options = {}) {\r\n const conversation = this.activeConversation;\r\n if (!conversation) {\r\n return;\r\n }\r\n const wantsReadReceipt = Boolean(options.allowReadReceipt);\r\n const explicitReadReceipt = wantsReadReceipt && canMarkReadNow({ userAction: Boolean(options.userAction) });\r\n const pollingReadReceipt = canMarkReadNow();\r\n const markRead = explicitReadReceipt || pollingReadReceipt;\r\n\r\n if (this.syncInFlight) {\n if (wantsReadReceipt) {\r\n this.pendingReadReceiptConversationId = conversation.id;\r\n }\r\n return;\n }\r\n this.syncInFlight = true;\r\n const syncedConversationId = conversation.id;\r\n const previousMessages = this.messagesByConversation[syncedConversationId] || [];\r\n try {\r\n const messages = await imClient.fetchRemoteMessages(conversation, 50, {\n markRead,\n includeConversations: Boolean(options.includeConversations)\n });\n const remotePinnedKey = String(messages.pinnedMessageUid || '');\n if (remotePinnedKey) {\n const pinnedMessage = messages.find(item => messageStableKey(item) === remotePinnedKey);\n this.pinnedMessagesByConversation = {\n ...this.pinnedMessagesByConversation,\n [syncedConversationId]: pinnedMessage\n ? {\n key: remotePinnedKey,\n id: remotePinnedKey,\n text: messagePreviewText(pinnedMessage),\n type: pinnedMessage.type || 'text',\n attachment: pinnedMessage.attachment ? { ...pinnedMessage.attachment } : null,\n senderName: pinnedMessage.senderName || pinnedMessage.from || '',\n timestamp: Number(pinnedMessage.displayTimestamp || pinnedMessage.timestamp || Date.now())\n }\n : { key: remotePinnedKey, id: remotePinnedKey, text: '[置顶消息]' }\n };\n writePinnedMessages(this.pinnedMessagesByConversation);\n }\n const editedIncomingMessages = incomingEditedMessages(previousMessages, messages);\r\n this.pruneOptimisticMessages(syncedConversationId, messages);\r\n this.messagesByConversation = {\r\n ...this.messagesByConversation,\r\n [syncedConversationId]: mergeVisibleMessages(this.messagesByConversation[syncedConversationId] || [], messages)\r\n };\r\n this.syncVisibleMessages(syncedConversationId);\r\n if (editedIncomingMessages.length && syncedConversationId === this.activeId) {\r\n this.focusMessage(editedIncomingMessages.sort((a, b) => messageActivityTimestamp(b) - messageActivityTimestamp(a))[0]);\r\n playNotificationSound();\r\n }\r\n const latest = messages.reduce((latestMessage, message) => {\r\n if (!latestMessage || messageActivityTimestamp(message) > messageActivityTimestamp(latestMessage)) {\r\n return message;\r\n }\r\n return latestMessage;\r\n }, null);\r\n if (latest) {\r\n conversation.subtitle = messagePreviewText(latest);\r\n conversation.updatedAt = messageActivityTimestamp(latest);\r\n writeLocalConversations(this.conversations);\r\n }\r\n } catch (error) {\r\n // Keep the local view usable if a polling request misses.\r\n } finally {\r\n this.syncInFlight = false;\r\n if (this.pendingReadReceiptConversationId === this.activeId && canMarkReadNow()) {\r\n this.pendingReadReceiptConversationId = '';\r\n window.setTimeout(() => this.syncActiveMessages({ allowReadReceipt: true }), 0);\r\n }\r\n }\n },\n scheduleActiveMessagesSync(options = {}, delay = 500) {\n if (!this.activeId || (typeof document !== 'undefined' && document.visibilityState !== 'visible')) {\n return;\n }\n window.clearTimeout(this.syncAfterSendTimer);\n this.syncAfterSendTimer = window.setTimeout(() => {\n this.syncAfterSendTimer = null;\n this.syncActiveMessages(options);\n }, Math.max(0, Number(delay) || 0));\n },\n startMessageSync() {\n this.bindReadPresenceEvents();\n if (!this.syncTimer) {\n this.syncTimer = window.setInterval(() => {\n if (document.visibilityState === 'visible' && !realtimeNotifications.isConnected()) {\n this.syncActiveMessages();\n }\n }, Math.max(250, appConfig.syncIntervalMs));\n }\n if (!this.conversationSyncTimer) {\n this.conversationSyncTimer = window.setInterval(() => {\n if (document.visibilityState === 'visible' && !realtimeNotifications.isConnected()) {\n this.refreshRemoteConversations();\n }\n }, Math.max(5000, appConfig.syncIntervalMs * 2));\n this.refreshRemoteConversations();\n }\n },\n handleRealtimeNotification() {\n window.clearTimeout(this.realtimeSyncTimer);\n this.realtimeSyncTimer = window.setTimeout(() => {\n this.refreshRemoteConversations();\n this.scheduleActiveMessagesSync({\n allowReadReceipt: canMarkReadNow(),\n includeConversations: true\n }, 300);\n }, 300);\n },\n bindReadPresenceEvents() {\r\n if (this.readPresenceEventsBound || typeof window === 'undefined' || typeof document === 'undefined') {\r\n return;\r\n }\r\n this.readPresenceEventsBound = true;\r\n const syncWhenReadable = () => {\n if (canMarkReadNow()) {\n this.refreshRemoteConversations();\n this.scheduleActiveMessagesSync({ allowReadReceipt: true }, 200);\n }\r\n };\r\n window.addEventListener('focus', syncWhenReadable);\r\n document.addEventListener('visibilitychange', syncWhenReadable);\r\n },\r\n async refreshRemoteConversations() {\r\n this.bindImEvents();\r\n this.usingDemoData = false;\r\n if (this.conversationSyncInFlight) {\r\n return;\r\n }\r\n this.conversationSyncInFlight = true;\r\n try {\r\n const remoteConversations = await imClient.fetchRemoteConversations(50);\r\n this.applyRemoteConversations(remoteConversations);\r\n } catch (error) {\r\n imClient.refreshConversationList();\r\n } finally {\r\n this.conversationSyncInFlight = false;\r\n }\r\n },\r\n setActionNotice(message) {\n this.actionNotice = message;\n this.actionError = '';\n window.clearTimeout(this.actionNoticeTimer);\n this.actionNoticeTimer = window.setTimeout(() => {\n this.actionNotice = '';\n this.actionNoticeTimer = null;\n }, 3000);\n },\n setActionError(message) {\n this.actionError = message;\n this.actionNotice = '';\n window.clearTimeout(this.actionNoticeTimer);\n },\n focusMessage(message) {\r\n const key = messageStableKey(message);\r\n if (!key) {\r\n return;\r\n }\r\n this.attentionMessageId = key;\r\n window.clearTimeout(this.attentionMessageTimer);\r\n this.attentionMessageTimer = window.setTimeout(() => {\r\n if (this.attentionMessageId === key) {\r\n this.attentionMessageId = '';\r\n }\r\n }, 2800);\r\n },\r\n async handleMessageAction({ action, message }) {\r\n if (!message) {\r\n return;\r\n }\r\n if (action === 'copy') {\r\n await this.copyMessages([message]);\r\n } else if (action === 'edit') {\r\n this.startEditMessage(message);\r\n } else if (action === 'delete') {\r\n this.deleteMessages([message]);\r\n } else if (action === 'forward') {\r\n this.startForward([message]);\r\n } else if (action === 'favorite') {\n this.toggleFavorite(message);\n } else if (action === 'pin') {\n this.togglePinnedMessage(message);\n } else if (action === 'detail') {\r\n await this.openMessageDetail(message);\r\n } else if (action === 'quote') {\r\n this.quoteMessage(message);\r\n } else if (action === 'select') {\r\n this.enterSelectionMode(message);\r\n } else if (action === 'recall') {\r\n await this.recallMessage(message);\r\n }\r\n },\r\n async openMessageDetail(message) {\r\n const conversation = this.activeConversation;\r\n if (!conversation || !message) {\r\n return;\r\n }\r\n const key = messageStableKey(message);\r\n this.messageDetailOpen = true;\r\n this.messageDetailLoading = true;\r\n this.messageDetailError = '';\r\n this.messageDetail = {\r\n messageUid: key,\r\n conversationType: conversation.type || conversation.raw?.type || 'single',\r\n sentAt: Number(message.displayTimestamp || message.timestamp || 0),\r\n editedAt: Number(message.editedAt || 0),\r\n recalled: isRecalledMessage(message),\r\n localOnly: true,\r\n sender: {\r\n uid: message.from || '',\r\n name: message.senderName || message.from || ''\r\n }\r\n };\r\n try {\r\n if (!/^\\d+$/.test(key)) {\r\n this.messageDetailError = '本地临时消息暂无送达/已读详情';\r\n return;\r\n }\r\n const detail = await imClient.getMessageDetail(conversation, message);\r\n this.messageDetail = detail || this.messageDetail;\r\n } catch (error) {\r\n this.messageDetailError = error.message || '消息详情加载失败';\r\n } finally {\r\n this.messageDetailLoading = false;\r\n }\r\n },\r\n closeMessageDetail() {\r\n this.messageDetailOpen = false;\r\n this.messageDetailLoading = false;\r\n this.messageDetailError = '';\r\n this.messageDetail = null;\r\n },\r\n async copyMessages(messages) {\r\n const text = messages.map(message => message.text || '').join('\\n');\r\n if (!text.trim()) {\r\n return;\r\n }\r\n try {\r\n await writeClipboard(text);\r\n this.setActionNotice(messages.length > 1 ? '已复制所选消息' : '已复制');\r\n } catch (error) {\r\n this.setActionError('复制失败');\r\n }\r\n },\r\n deleteMessages(messages) {\r\n const conversation = this.activeConversation;\r\n if (!conversation || !messages.length) {\r\n return;\r\n }\r\n imClient.hideMessages(conversation, messages);\r\n this.removeMessages(conversation.id, messages);\r\n if (!this.selectedMessageIds.length) {\r\n this.selectionMode = false;\r\n }\r\n this.setActionNotice(messages.length > 1 ? '已删除所选消息' : '已删除');\r\n },\r\n toggleFavorite(message) {\n const key = messageStableKey(message);\r\n if (!key) {\r\n return;\r\n }\r\n const index = this.favoriteMessages.findIndex(item => item.key === key);\r\n if (index >= 0) {\r\n this.favoriteMessages.splice(index, 1);\r\n if (this.activeFavoriteKey === key) {\r\n this.activeFavoriteKey = this.favoriteMessages[0]?.key || '';\r\n }\r\n this.setActionNotice('已取消收藏');\r\n } else {\r\n const conversation = this.conversations.find(item => item.id === message.conversationId) || {};\r\n this.favoriteMessages.unshift({\r\n key,\r\n id: message.id,\r\n messageUid: message.messageUid,\r\n conversationId: message.conversationId,\r\n conversationTitle: conversation.title || message.conversationTitle || '',\r\n type: message.type || 'text',\r\n text: message.text || '',\r\n preview: messagePreviewText(message),\r\n senderName: message.senderName || message.from || '',\r\n timestamp: Number(message.displayTimestamp || message.timestamp || Date.now()),\r\n editedAt: Number(message.editedAt || 0),\r\n recalled: isRecalledMessage(message),\r\n recallStatus: message.recallStatus || (isRecalledMessage(message) ? '已撤回' : ''),\r\n attachment: message.attachment ? { ...message.attachment } : null\r\n });\r\n this.activeFavoriteKey = key;\r\n this.setActionNotice('已收藏');\r\n }\r\n this.favoriteMessages = this.favoriteMessages.slice(0, 200);\r\n writeFavoriteMessages(this.favoriteMessages);\n },\n async togglePinnedMessage(message) {\n const conversationId = message?.conversationId || this.activeId;\n const key = messageStableKey(message);\n if (!conversationId || !key) return;\n const current = this.pinnedMessagesByConversation[conversationId];\n const next = { ...this.pinnedMessagesByConversation };\n if (current && current.key === key) {\n await imClient.setPinnedMessage(this.activeConversation, '').catch(error => this.setActionError(error.message || '取消置顶失败'));\n delete next[conversationId];\n this.setActionNotice('已取消置顶');\n } else {\n try {\n await imClient.setPinnedMessage(this.activeConversation, key);\n } catch (error) {\n this.setActionError(error.message || '置顶失败');\n return;\n }\n next[conversationId] = {\n key,\n id: key,\n text: messagePreviewText(message),\n type: message.type || 'text',\n attachment: message.attachment ? { ...message.attachment } : null,\n senderName: message.senderName || message.from || '',\n timestamp: Number(message.displayTimestamp || message.timestamp || Date.now())\n };\n this.setActionNotice('消息已置顶');\n }\n this.pinnedMessagesByConversation = next;\n writePinnedMessages(next);\n },\n async clearPinnedMessage() {\n await imClient.setPinnedMessage(this.activeConversation, '').catch(error => this.setActionError(error.message || '取消置顶失败'));\n const next = { ...this.pinnedMessagesByConversation };\n delete next[this.activeId];\n this.pinnedMessagesByConversation = next;\n writePinnedMessages(next);\n this.setActionNotice('已取消置顶');\n },\n setActiveFavorite(key) {\r\n this.activeFavoriteKey = String(key || '');\r\n },\r\n removeFavorite(key) {\r\n const value = String(key || '');\r\n if (!value) {\r\n return;\r\n }\r\n this.favoriteMessages = this.favoriteMessages.filter(message => message.key !== value);\r\n if (this.activeFavoriteKey === value) {\r\n this.activeFavoriteKey = this.favoriteMessages[0]?.key || '';\r\n }\r\n writeFavoriteMessages(this.favoriteMessages);\r\n },\r\n quoteMessage(message) {\r\n this.quotedMessage = {\r\n ...message,\r\n quoteText: quotePrefix(message)\r\n };\r\n this.setActionNotice('已引用,输入后发送');\r\n },\r\n cancelQuote() {\r\n this.quotedMessage = null;\r\n },\r\n enterSelectionMode(message = null) {\r\n this.selectionMode = true;\r\n if (message) {\r\n const key = messageStableKey(message);\r\n this.selectedMessageIds = key ? [key] : [];\r\n }\r\n },\r\n toggleSelectedMessage(message) {\r\n const key = messageStableKey(message);\r\n if (!key) {\r\n return;\r\n }\r\n const selected = new Set(this.selectedMessageIds);\r\n if (selected.has(key)) {\r\n selected.delete(key);\r\n } else {\r\n selected.add(key);\r\n }\r\n this.selectedMessageIds = Array.from(selected);\r\n this.selectionMode = this.selectedMessageIds.length > 0;\r\n },\r\n clearSelection() {\r\n this.selectionMode = false;\r\n this.selectedMessageIds = [];\r\n },\r\n copySelectedMessages() {\r\n return this.copyMessages(this.selectedMessages);\r\n },\r\n deleteSelectedMessages() {\r\n this.deleteMessages(this.selectedMessages);\r\n },\r\n startForward(messages) {\n this.forwardingMessages = messages.filter(message => message?.text || message?.attachment?.url);\n if (!this.forwardingMessages.length) {\r\n this.setActionError('没有可转发的消息');\r\n }\r\n },\r\n startForwardSelectedMessages() {\r\n this.startForward(this.selectedMessages);\r\n },\r\n cancelForward() {\r\n this.forwardingMessages = [];\r\n },\r\n startEditMessage(message) {\r\n const isResend = isRecalledMessage(message);\r\n if (!isResend && !message?.text) {\r\n this.setActionError('没有可编辑的文字内容');\r\n return;\r\n }\r\n this.editingMessage = message;\r\n this.editingText = message.text || '';\r\n this.editingMode = isResend ? 'resend' : 'edit';\r\n },\r\n cancelEditMessage() {\r\n this.editingMessage = null;\r\n this.editingText = '';\r\n this.editingMode = '';\r\n },\r\n async completeEditMessage() {\r\n const conversation = this.activeConversation;\r\n const message = this.editingMessage;\r\n const text = this.editingText.trim();\r\n const isResend = this.editingMode === 'resend' || isRecalledMessage(message);\r\n if (!conversation || !message) {\r\n this.cancelEditMessage();\r\n return;\r\n }\r\n if (!text) {\r\n this.setActionError('编辑内容不能为空');\r\n return;\r\n }\r\n if (!isResend && text === String(message.text || '').trim()) {\r\n this.cancelEditMessage();\r\n return;\r\n }\r\n try {\r\n if (isResend) {\r\n await this.sendTextToConversation(conversation, text);\r\n this.cancelEditMessage();\r\n this.setActionNotice('已重新发送');\r\n return;\r\n }\r\n const editedMessage = await imClient.editMessage(conversation, message, text);\r\n this.replaceLocalMessage(conversation.id, message, editedMessage);\r\n if (messageActivityTimestamp(editedMessage) >= Number(conversation.updatedAt || 0)) {\r\n conversation.subtitle = editedMessage.text;\r\n conversation.updatedAt = messageActivityTimestamp(editedMessage);\r\n writeLocalConversations(this.conversations);\r\n }\r\n this.cancelEditMessage();\r\n this.setActionNotice('已编辑');\r\n } catch (error) {\r\n this.setActionError(error.message || '编辑失败');\r\n }\r\n },\r\n async completeForward(targetConversationId) {\n const target = this.conversations.find(conversation => conversation.id === targetConversationId);\r\n if (!target || !this.forwardingMessages.length) {\r\n return;\r\n }\r\n try {\n for (const message of this.forwardingMessages) {\n if (message.attachment?.url) {\n const response = await fetch(imageDisplayUrl(message.attachment.url));\n if (!response.ok) throw new Error('图片读取失败');\n const blob = await response.blob();\n const type = message.attachment.type || message.type || 'file';\n const file = new File(\n [blob],\n message.attachment.name || (type === 'image' ? '转发图片.jpg' : '转发文件'),\n { type: message.attachment.mime || blob.type || 'application/octet-stream' }\n );\n const sent = await imClient.sendAttachmentMessage(target, { type, file, text: message.text || '' });\n if (sent?.status === 'failed') throw new Error(sent.error || '转发失败');\n } else if (message.text) {\n await this.sendTextToConversation(target, message.text);\n }\n }\n this.forwardingMessages = [];\n this.clearSelection();\r\n this.setActionNotice('已转发');\r\n } catch (error) {\r\n this.setActionError(error.message || '转发失败');\r\n }\r\n },\r\n async recallMessage(message) {\r\n const conversation = this.activeConversation;\r\n if (!conversation) {\r\n return;\r\n }\r\n try {\r\n await imClient.recallMessage(conversation, message);\r\n if (message.direction !== 'out') {\r\n this.removeMessages(conversation.id, [message]);\r\n this.setActionNotice('已撤回');\r\n this.syncActiveMessages();\r\n return;\r\n }\r\n this.replaceLocalMessage(conversation.id, message, {\r\n status: 'recalled',\r\n deliveryStatus: '',\r\n recalled: true,\r\n recallStatus: '已撤回'\r\n });\r\n this.setActionNotice('已撤回');\r\n } catch (error) {\r\n this.setActionError(error.message || '撤回失败');\r\n }\r\n },\r\n async createGroup(options = {}) {\r\n const session = useSessionStore();\r\n if (!session.userId) {\r\n this.setActionError('请先登录');\r\n return false;\r\n }\r\n try {\r\n const conversation = await imClient.createGroup(session.userId, options);\r\n this.upsertConversation(conversation);\r\n this.setActiveConversation(conversation.id);\r\n this.setActionNotice(options.channel ? '公告群已创建' : '群组已创建');\r\n this.refreshRemoteConversations();\r\n return true;\r\n } catch (error) {\r\n this.setActionError(error.message || (options.channel ? '创建公告群失败' : '创建群组失败'));\r\n return false;\r\n }\r\n },\r\n async joinGroup(groupKey) {\r\n const session = useSessionStore();\r\n if (!session.userId) {\r\n this.setActionError('请先登录');\r\n return false;\r\n }\r\n try {\r\n const conversation = await imClient.joinGroup(session.userId, groupKey);\r\n this.upsertConversation(conversation);\r\n this.setActiveConversation(conversation.id);\r\n this.setActionNotice('已加入群组');\r\n this.refreshRemoteConversations();\r\n return true;\r\n } catch (error) {\r\n this.setActionError(error.message || '加入群组失败');\r\n return false;\r\n }\r\n },\r\n async broadcastMessage(targetIds, text) {\r\n const session = useSessionStore();\r\n if (!session.userId) {\r\n this.setActionError('请先登录');\r\n return false;\r\n }\r\n try {\r\n const result = await imClient.broadcastMessage(session.userId, targetIds, text);\r\n const successCount = Number(result.successCount || 0);\r\n const failedCount = Number(result.failedCount || 0);\r\n this.setActionNotice(failedCount > 0 ? `已群发 ${successCount} 条,失败 ${failedCount} 条` : `已群发 ${successCount} 条`);\r\n this.refreshRemoteConversations();\r\n return true;\r\n } catch (error) {\r\n this.setActionError(error.message || '群发失败');\r\n return false;\r\n }\r\n },\r\n async leaveGroup(conversation) {\r\n const session = useSessionStore();\r\n if (!session.userId || !conversation?.target) {\r\n this.setActionError('缺少群组信息');\r\n return false;\r\n }\r\n try {\r\n await imClient.leaveGroup(session.userId, conversation.target);\r\n this.removeConversation(conversation.id);\r\n this.setActionNotice('已退出群组');\r\n this.refreshRemoteConversations();\r\n return true;\r\n } catch (error) {\r\n this.setActionError(error.message || '退出群组失败');\r\n return false;\r\n }\r\n },\r\n async dismissGroup(conversation) {\r\n const session = useSessionStore();\r\n if (!session.userId || !conversation?.target) {\r\n this.setActionError('缺少群组信息');\r\n return false;\r\n }\r\n try {\r\n await imClient.dismissGroup(session.userId, conversation.target);\r\n this.removeConversation(conversation.id);\r\n this.setActionNotice('群组已解散');\r\n this.refreshRemoteConversations();\r\n return true;\r\n } catch (error) {\r\n this.setActionError(error.message || '解散群组失败');\r\n return false;\r\n }\r\n }\r\n }\r\n});\r\n","import { defineStore } from 'pinia';\r\n\r\nexport const useNavigationStore = defineStore('navigation', {\r\n state: () => ({\r\n section: 'messages'\r\n }),\r\n actions: {\r\n showMessages() {\r\n this.section = 'messages';\r\n },\r\n showContacts() {\r\n this.section = 'contacts';\r\n },\r\n showFavorites() {\r\n this.section = 'favorites';\r\n }\r\n }\r\n});\r\n","import { defineStore } from 'pinia';\nimport { imClient } from '@/services/imClient';\nimport { appConfig } from '@/config';\n\nconst STORAGE_KEY = 'qmt-web-im-session';\n\nfunction normalizeStoredPortrait(portrait) {\n return portrait || '';\n}\n\nfunction nextProfilePortrait(profilePortrait, currentPortrait) {\n return normalizeStoredPortrait(profilePortrait) || normalizeStoredPortrait(currentPortrait);\n}\n\nfunction inferAccountType(account) {\n return String(account || '').includes('@') ? 2 : 1;\n}\n\nexport const useSessionStore = defineStore('session', {\n state: () => ({\n isAuthenticated: false,\n connecting: false,\n connected: false,\n connectionStatusText: '未连接',\n userId: '',\n token: '',\n displayName: '',\n portrait: '',\n error: '',\n sdkVersion: '',\n eventsBound: false\n }),\n actions: {\n restore() {\n const raw = localStorage.getItem(STORAGE_KEY);\n if (!raw) {\n return;\n }\n\n try {\n const session = JSON.parse(raw);\n if (session.appServer !== appConfig.appServer) {\n localStorage.removeItem(STORAGE_KEY);\n return;\n }\n\n if (session.userId && session.token) {\n if (!session.clientId) {\n localStorage.removeItem(STORAGE_KEY);\n return;\n }\n this.userId = session.userId;\n this.token = session.token;\n this.displayName = session.displayName || session.userId;\n this.portrait = normalizeStoredPortrait(session.portrait);\n this.isAuthenticated = true;\n imClient.restoreClientId(session.clientId);\n this.connect();\n this.refreshProfile();\n }\n } catch (error) {\n localStorage.removeItem(STORAGE_KEY);\n }\n },\n\n async loginWithPassword(account, password, type = inferAccountType(account)) {\n this.error = '';\n this.connecting = true;\n try {\n const result = await imClient.loginWithPassword(account, password, type);\n this.applyLoginResult(result);\n await this.connect();\n } catch (error) {\n this.error = error.message || '登录失败';\n } finally {\n this.connecting = false;\n }\n },\n\n async loginWithCode(account, code) {\n this.error = '';\n this.connecting = true;\n try {\n const result = await imClient.loginWithCode(account, code);\n this.applyLoginResult(result);\n await this.connect();\n } catch (error) {\n this.error = error.message || '登录失败';\n } finally {\n this.connecting = false;\n }\n },\n\n async completePcSessionLogin(result) {\n this.error = '';\n this.connecting = true;\n try {\n this.applyLoginResult(result);\n await this.connect();\n } catch (error) {\n this.error = error.message || '扫码登录失败';\n } finally {\n this.connecting = false;\n }\n },\n\n async register(payload) {\n this.error = '';\n this.connecting = true;\n try {\n const result = await imClient.register(payload);\n this.applyLoginResult(result);\n await this.connect();\n return result;\n } catch (error) {\n this.error = error.message || '注册失败';\n return null;\n } finally {\n this.connecting = false;\n }\n },\n\n applyLoginResult(result) {\n this.userId = result.userId || result.uid || result.id || '';\n this.token = result.token || result.imToken || '';\n this.displayName = result.displayName || result.userName || result.name || this.userId;\n this.portrait = normalizeStoredPortrait(result.portrait);\n this.isAuthenticated = Boolean(this.userId && this.token);\n this.persistSession();\n },\n\n persistSession() {\n localStorage.setItem(STORAGE_KEY, JSON.stringify({\n userId: this.userId,\n token: this.token,\n displayName: this.displayName,\n portrait: this.portrait,\n clientId: imClient.getClientId(),\n appServer: appConfig.appServer\n }));\n },\n\n applyProfile(profile) {\n if (!profile) {\n return;\n }\n this.userId = profile.userId || profile.uid || this.userId;\n this.displayName = profile.displayName || profile.name || this.displayName || this.userId;\n this.portrait = nextProfilePortrait(profile.portrait, this.portrait);\n this.persistSession();\n },\n\n async refreshProfile() {\n if (!this.userId) {\n return null;\n }\n try {\n const profile = await imClient.getProfile(this.userId);\n this.applyProfile(profile);\n return profile;\n } catch (error) {\n return null;\n }\n },\n\n async saveProfile({ displayName, portraitFile }) {\n if (!this.userId) {\n throw new Error('请先登录');\n }\n const profile = await imClient.updateProfile(this.userId, {\n displayName,\n portraitFile\n });\n this.applyProfile(profile);\n return profile;\n },\n\n async changePassword({ oldPassword, newPassword }) {\n if (!this.userId) {\n throw new Error('请先登录');\n }\n await imClient.changePassword({ oldPassword, newPassword });\n await this.logout();\n return true;\n },\n\n async resetPasswordWithCode({ mobile, resetCode, newPassword }) {\n await imClient.resetPasswordWithCode({ mobile, resetCode, newPassword });\n return true;\n },\n\n async connect() {\n if (!this.userId || !this.token) {\n return;\n }\n await imClient.ensureSdk();\n this.sdkVersion = imClient.getSdkVersion();\n this.bindImEvents();\n await imClient.connect(this.userId, this.token);\n },\n\n bindImEvents() {\n if (this.eventsBound) {\n return;\n }\n this.eventsBound = true;\n imClient.on('connectionStatusChanged', status => {\n this.connected = status.connected;\n this.connectionStatusText = status.statusText || (status.connected ? '已连接' : '未连接');\n });\n },\n\n async logout() {\n try {\n await imClient.logout?.();\n } catch (error) {\n this.error = error.message || '退出登录失败';\n } finally {\n imClient.disconnect();\n localStorage.removeItem(STORAGE_KEY);\n this.$reset();\n }\n }\n }\n});\n","import script from \"./App.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./App.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","import script from \"./ChatShell.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./ChatShell.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","import script from \"./LoginView.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./LoginView.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","import script from \"./ChatPanel.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./ChatPanel.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","import script from \"./MessageComposer.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./MessageComposer.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","import script from \"./MessageList.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./MessageList.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","import script from \"./ContactPanel.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./ContactPanel.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","import script from \"./FavoriteList.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./FavoriteList.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","import script from \"./FavoritePanel.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./FavoritePanel.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","import script from \"./ContactList.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./ContactList.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","import script from \"./ConversationList.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./ConversationList.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","import script from \"./NavigationRail.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./NavigationRail.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","export { default } from \"-!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./App.vue?vue&type=script&setup=true&lang=js\"; export * from \"-!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./App.vue?vue&type=script&setup=true&lang=js\"","export { default } from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./ChatShell.vue?vue&type=script&setup=true&lang=js\"; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./ChatShell.vue?vue&type=script&setup=true&lang=js\"","export { default } from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./LoginView.vue?vue&type=script&setup=true&lang=js\"; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./LoginView.vue?vue&type=script&setup=true&lang=js\"","export { default } from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./ChatPanel.vue?vue&type=script&setup=true&lang=js\"; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./ChatPanel.vue?vue&type=script&setup=true&lang=js\"","export { default } from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./MessageComposer.vue?vue&type=script&setup=true&lang=js\"; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./MessageComposer.vue?vue&type=script&setup=true&lang=js\"","export { default } from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./MessageList.vue?vue&type=script&setup=true&lang=js\"; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./MessageList.vue?vue&type=script&setup=true&lang=js\"","export { default } from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./ContactPanel.vue?vue&type=script&setup=true&lang=js\"; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./ContactPanel.vue?vue&type=script&setup=true&lang=js\"","export { default } from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./FavoriteList.vue?vue&type=script&setup=true&lang=js\"; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./FavoriteList.vue?vue&type=script&setup=true&lang=js\"","export { default } from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./FavoritePanel.vue?vue&type=script&setup=true&lang=js\"; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./FavoritePanel.vue?vue&type=script&setup=true&lang=js\"","export { default } from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./ContactList.vue?vue&type=script&setup=true&lang=js\"; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./ContactList.vue?vue&type=script&setup=true&lang=js\"","export { default } from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./ConversationList.vue?vue&type=script&setup=true&lang=js\"; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./ConversationList.vue?vue&type=script&setup=true&lang=js\"","export { default } from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./NavigationRail.vue?vue&type=script&setup=true&lang=js\"; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./NavigationRail.vue?vue&type=script&setup=true&lang=js\"","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter/value functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tif(Array.isArray(definition)) {\n\t\tvar i = 0;\n\t\twhile(i < definition.length) {\n\t\t\tvar key = definition[i++];\n\t\t\tvar binding = definition[i++];\n\t\t\tif(!__webpack_require__.o(exports, key)) {\n\t\t\t\tif(binding === 0) {\n\t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, value: definition[i++] });\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: binding });\n\t\t\t\t}\n\t\t\t} else if(binding === 0) { i++; }\n\t\t}\n\t} else {\n\t\tfor(var key in definition) {\n\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t\t}\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// set .name for anonymous default exports per ES spec\n__webpack_require__.dn = function(x) {\n\t(Object.getOwnPropertyDescriptor(x, \"name\") || {}).writable || Object.defineProperty(x, \"name\", { value: \"default\", configurable: true });\n};","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t524: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkjc_web_im\"] = self[\"webpackChunkjc_web_im\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [504], function() { return __webpack_require__(1406); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n",""],"names":["onMounted","LoginView","ChatShell","useSessionStore","session","restore","NavigationRail","ConversationList","ContactList","ChatPanel","ContactPanel","FavoriteList","FavoritePanel","useConversationStore","useNavigationStore","useContactStore","conversations","navigation","contacts","refreshRemoteConversations","refreshContacts","axios","jrQRCode","computed","onBeforeUnmount","reactive","ref","appConfig","imClient","QR_CODE_PREFIX_PC_SESSION","defaultPlatformLogo","view","loginMode","loginAccount","loginPassword","registerType","registerForm","number","code","password","confirmPassword","invitationCode","sendingCode","info","qrStatus","qrCodeImage","qrSessionToken","qrUserName","qrUserPortrait","qrGeneration","qrExpireTimer","defaultPlatformName","appName","platformName","platformLogo","canSubmitLogin","value","length","canRequestEmailCode","test","canSubmitRegister","qrUserInitial","String","slice","toUpperCase","qrStatusTitle","connecting","qrStatusText","qrRefreshText","loadPlatformConfig","stopQrLogin","clearFormMessage","error","setLoginMode","mode","startQrLogin","submitLogin","type","loginWithPassword","switchRegisterType","requestEmailCode","requestAuthCode","message","submitRegister","result","register","openRegister","backToLogin","resetQrState","clearQrExpireTimer","window","clearTimeout","refreshQrLogin","force","includes","generation","pcSession","createPcSession","token","Error","getQrBase64","expireMs","Math","max","min","Number","expired","setTimeout","isAuthenticated","pollQrLogin","payload","loginWithPcSession","data","status","imToken","completePcSessionLogin","userName","displayName","portrait","delay","ms","Promise","resolve","response","get","platformConfigApi","withCredentials","config","name","trim","logo","logoUrl","version","resolveBrandLogo","applyDocumentBrand","appendBrandVersion","startsWith","location","protocol","base","adminServer","URL","toString","url","parsed","href","searchParams","set","document","title","icon","querySelector","createElement","setAttribute","head","appendChild","handleBrandLogoError","watch","MessageList","MessageComposer","imageDisplayUrl","activeConversation","pinnedMessageIsImage","activePinnedMessage","attachment","pinnedMessageText","text","groupMenuOpen","singleProfileOpen","singleAliasDraft","singleProfileSaving","singleProfileNotice","singleProfileError","groupPanel","groupBusy","groupDetail","groupMembers","groupAliasDraft","manageSection","selectedAdminIds","selectedKickIds","transferTargetId","profileDraft","announcement","welcomeText","muteDraft","scheduleType","startsAtLocal","endsAtLocal","dailyStart","dailyEnd","muteSaveNotice","muteSaveError","singlePeerId","isGroupConversation","target","raw","id","replace","singleContact","peerId","find","contact","uid","singleProfile","conversation","rawUser","alias","rawName","userId","mobile","address","avatarText","groupDisplayId","groupId","currentGroupRole","myRole","role","isGroupOwner","canManageGroup","adminCandidateMembers","filter","member","transferableMembers","messageDetail","messageDetailGroup","group","isMessageDetailGroup","conversationType","Boolean","messageDetailCounts","counts","read","unread","undelivered","total","kickCandidateMembers","statusText","canSendActiveConversation","connectionStatusText","connected","formatDetailTime","timestamp","Intl","DateTimeFormat","year","month","day","hour","minute","second","hour12","timeZone","resolvedOptions","format","detailMemberName","detailMemberAvatar","detailRoleLabel","closeGroupMenu","toggleGroupMenu","openSingleProfile","then","catch","closeSingleProfile","saveSingleAlias","ok","updateContactAlias","actionError","refreshedContact","nextTitle","upsertConversation","handleSenderProfileUpdated","syncActiveMessages","allowReadReceipt","loadGroupMembers","closeGroupPanel","clearMuteSaveFeedback","loadGroupDetail","getGroupDetail","setActionError","openGroupOverview","openGroupMembers","getGroupMembers","map","openGroupAlias","detail","myAlias","msToLocalInput","date","Date","local","getTime","getTimezoneOffset","toISOString","localInputToMs","prepareManagementDrafts","setting","muteSetting","startsAtMs","endsAtMs","openGroupManage","openTransferGroup","saveGroupAlias","updateGroupAlias","setActionNotice","toggleAdmin","selected","Set","has","delete","add","Array","from","toggleKick","saveGroupAdmins","setGroupAdmins","saveGroupProfile","updateGroupProfile","updatedAt","now","kickSelectedMembers","confirm","kickGroupMembers","removed","removedIds","saveMuteSetting","updateGroupMuteSetting","leaveCurrentGroup","leaveGroup","dismissCurrentGroup","dismissGroup","transferCurrentGroup","transferGroup","memberAvatar","addEventListener","removeEventListener","props","__props","emit","__emit","emojiOpen","dropActive","textareaEl","imageInput","fileInput","dragDepth","emojiList","submit","toggleEmojiPicker","insertEmoji","emoji","element","start","selectionStart","end","selectionEnd","requestAnimationFrame","focus","cursor","setSelectionRange","chooseImage","click","chooseFile","attachmentTypeForFile","file","fallbackType","emitFiles","files","disabled","validFiles","File","size","caption","forEach","index","selectAttachment","event","input","hasDraggedFiles","types","dataTransfer","handleDragEnter","dropEffect","handleDragOver","handleDragLeave","filesFromDataTransfer","items","item","kind","webkitGetAsEntry","isDirectory","getAsFile","handleDrop","imageFilesFromClipboard","clipboardData","handlePaste","imageFiles","preventDefault","nextTick","IMAGE_MIN_SCALE","IMAGE_MAX_SCALE","listEl","viewerStage","contextMenu","visible","x","y","imageViewer","sourceUrl","scale","rotation","offsetX","offsetY","dragging","dragStartX","dragStartY","dragOffsetX","dragOffsetY","senderProfile","roleLabel","contactAlias","groupAlias","isContact","aliasDraft","saving","adding","notice","imageViewerStyle","transform","viewerImages","messages","isImageMessage","menuItems","isOwnMessage","direction","isRecalledMessage","action","label","favoriteLabel","isFavorite","pinnedLabel","pinnedMessageId","messageIdentity","unshift","push","canRecallOthers","scrollToBottom","scrollTop","scrollHeight","scrollToMessage","messageId","row","querySelectorAll","dataset","messageKey","scrollIntoView","block","behavior","deliveryStatus","messageUid","recalled","join","immediate","attentionMessageId","closeMenu","closeMenuOnEscape","moveImageDrag","stopImageDrag","canOpenMessageMenu","isSelected","selectedMessageIds","favoriteMessageIds","isAttention","isRecallNotice","isFileMessage","isVideoMessage","contentType","isRedPacketMessage","redPacketPayload","isRedPacketReceipt","isSystemMessage","systemMessageText","redPacketReceiptText","receiverName","senderName","packetSenderName","redPacketSenderName","nearestRedPacketSenderName","receiptMessage","receiptIndex","findIndex","candidate","redPacket","JSON","parse","redPackets","redPacketBlessing","blessing","isGroupMessage","showGroupSender","senderRoleLabel","senderRole","groupSenderName","groupSenderAvatarText","openSenderProfile","profile","cachedContact","cachedAlias","remarkAlias","senderPortrait","closeSenderProfile","addSenderAsContact","addContact","aliasSaved","saveSenderAlias","roleBubbleClass","formatFileSize","bytes","toFixed","handleMessageClick","selectionMode","handleImageClick","openImageViewer","showViewerImage","images","closeImageViewer","normalizedIndex","resetImageViewer","showPreviousImage","showNextImage","clampImageScale","setImageScale","originX","originY","previousScale","nextScale","rect","getBoundingClientRect","centerX","left","width","centerY","top","height","ratio","zoomImage","delta","rotateImage","handleImageWheel","factor","deltaY","clientX","clientY","startImageDrag","saveViewerImage","downloadUrl","origin","link","download","body","remove","openMenu","innerWidth","innerHeight","key","chooseMenuAction","formatTime","deliveryState","state","deliveryTitle","failureText","errorCode","activeContact","remarkName","username","editingAlias","aliasSaving","aliasError","openAliasEditor","closeAliasEditor","submitAlias","activeKey","activeFavorite","favoriteTitle","conversationTitle","entry","conversationId","favoritePreview","recallStatus","preview","formatFavoriteTime","favorite","clearFeedback","favoriteText","isImageFavorite","isFileFavorite","favoriteCopyText","copyFavorite","writeClipboard","copyError","navigator","clipboard","writeText","style","position","select","execCommand","removeChild","openConversation","showMessages","setActiveConversation","focusMessage","removeFavorite","keyword","addingContact","addKeyword","filteredContacts","toLowerCase","subtitle","openAddContact","actionInfo","closeAddContact","submitAddContact","added","defineComponent","h","actionMenuOpen","activeAction","actionBusy","searchKeyword","groupName","groupAnnouncement","groupWelcomeText","joinGroupKey","broadcastText","channelName","channelAnnouncement","contactKeyword","selectedContactIds","conversationMenu","actionTitles","createGroup","joinGroup","broadcast","createChannel","submitLabels","actionTitle","submitLabel","modalError","modalInfo","actionNotice","normalizedSearchKeyword","contactsByUid","Map","filteredConversationItems","conversationResult","conversationResults","matchesConversation","contactForConversation","conversationTargets","conversationTarget","contactResults","matchesContact","contactResult","submitDisabled","isPinned","resultKind","pinnedAt","openConversationMenu","closeConversationMenu","togglePinned","togglePinnedConversation","ContactPicker","default","selectedIds","emptyText","emits","setup","class","placeholder","onInput","onClick","src","alt","searchableValues","values","flatMap","isArray","Object","matchesKeyword","compactKeyword","some","group_id","owner_uid","friendAlias","rawFriend","resultKey","isListItemActive","activeId","selectListItem","openChat","clearStoreMessages","resetActionFields","toggleActionMenu","closeActionMenu","openAction","closeActionModal","toggleContact","contactId","submitAction","memberIds","broadcastMessage","channel","formatUnread","count","CROP_OUTPUT_SIZE","settingsItems","initials","settingsOpen","settingsSection","passwordSaving","settingsNotice","settingsError","profileOpen","profileSaving","profileNotice","profileError","profileFile","profilePreview","portraitInput","cropperCanvas","cropperPreviewCanvas","passwordDraft","oldPassword","newPassword","currentAvatarUrl","activeSettingsItem","avatarPreviewViewer","open","avatarCropper","loaded","busy","objectUrl","fileName","image","baseScale","avatarPreviewStyle","refreshProfile","drawAvatarCropper","revokeProfilePreview","closeAvatarCropper","showContacts","clearProfileFeedback","clearSettingsFeedback","resetPasswordDraft","openSettings","closeSettings","selectSettingsSection","section","revokeObjectURL","revokeCropperObjectUrl","openProfileEditor","closeProfileEditor","closeAvatarPreview","selectPortrait","openAvatarCropper","choosePortraitFile","openAvatarPreview","resetAvatarPreview","zoomAvatarPreview","handleAvatarPreviewWheel","startAvatarPreviewDrag","currentTarget","setPointerCapture","pointerId","moveAvatarPreviewDrag","stopAvatarPreviewDrag","dropPortrait","cropperStageSize","canvas","round","cropperBoxSize","rotatedImageSize","quarterTurn","abs","naturalHeight","naturalWidth","clampCropperOffset","cropSize","rotated","scaledWidth","scaledHeight","maxX","maxY","updateCropperBaseScale","drawCanvasImage","outputScale","cropOnly","dpr","devicePixelRatio","context","getContext","setTransform","clearRect","fillStyle","fillRect","save","translate","rotate","PI","drawImage","beginPath","fill","previewCanvas","resetCropperTransform","createObjectURL","Image","onload","onerror","zoomCropper","rotateCropper","degrees","handleCropperWheel","startCropperDrag","moveCropperDrag","stopCropperDrag","canvasToBlob","quality","reject","toBlob","blob","confirmAvatarCrop","outputCanvas","croppedFile","saveProfile","portraitFile","savePassword","changePassword","logout","clearContacts","currentHost","hostname","runtimeConfig","JC_WEB_IM_CONFIG","appServerOrigin","qrAppServerOrigin","adminServerOrigin","process","env","VUE_APP_ADMIN_SERVER","appServer","VUE_APP_APP_SERVER","qrAppServer","VUE_APP_QR_APP_SERVER","VUE_APP_PLATFORM_CONFIG_API","NODE_ENV","registerConfigApi","VUE_APP_REGISTER_CONFIG_API","registerPhoneExistsApi","VUE_APP_REGISTER_PHONE_EXISTS_API","contactsApi","VUE_APP_CONTACTS_API","updateAliasApi","VUE_APP_UPDATE_ALIAS_API","addContactApi","VUE_APP_ADD_CONTACT_API","conversationActionsApi","VUE_APP_CONVERSATION_ACTIONS_API","sendMessageApi","VUE_APP_SEND_MESSAGE_API","messageActionApi","VUE_APP_MESSAGE_ACTION_API","messageDetailApi","VUE_APP_MESSAGE_DETAIL_API","messagesApi","VUE_APP_MESSAGES_API","profileApi","VUE_APP_PROFILE_API","changePasswordApi","VUE_APP_CHANGE_PASSWORD_API","logoutApi","VUE_APP_LOGOUT_API","imServerHost","VUE_APP_IM_SERVER_HOST","imRoutePort","VUE_APP_IM_ROUTE_PORT","useWss","VUE_APP_USE_WSS","wsPath","VUE_APP_WS_PATH","wsUrl","VUE_APP_WS_URL","sdkMode","VUE_APP_IM_MODE","syncIntervalMs","VUE_APP_SYNC_INTERVAL_MS","sseEnabled","VUE_APP_SSE_ENABLED","sseTicketApi","VUE_APP_SSE_TICKET_API","sseUrl","VUE_APP_SSE_URL","platform","clientIdStorageKey","authTokenStoragePrefix","createApp","createPinia","App","use","mount","AES_KEY","ENCRYPTION_EXCLUDE_PATHS","AUTH_STORAGE_KEY","AUTH_ERROR_CODE","REFRESH_ERROR_CODE","importedCryptoKeyPromise","refreshPromise","storageScope","readAuthStore","localStorage","getItem","writeAuthStore","store","setItem","stringify","normalizeAuthBundle","bundle","accessToken","refreshToken","tokenType","accessTokenExpireIn","accessTokenExpireAt","refreshTokenExpireIn","refreshTokenExpireAt","getStoredAppAuth","persistAppAuth","normalized","clearStoredAppAuth","hasFormData","FormData","absoluteUrl","shouldEncrypt","pathname","path","shouldAttachAuth","skipAuth","textEncoder","TextEncoder","textDecoder","TextDecoder","bytesToBase64","binary","byte","fromCharCode","btoa","base64ToBytes","base64","atob","Uint8Array","charCodeAt","getCryptoKey","crypto","subtle","importKey","encode","encryptPayload","plainText","iv","getRandomValues","encrypted","encrypt","decryptPayload","cipherText","ivBase64","encryptedBase64","split","decrypted","decrypt","decode","normalizeBusinessResponse","decodeResponsePayload","headers","client","create","interceptors","request","nextConfig","auth","Authorization","method","plainBody","floor","refreshAccessToken","post","finally","_retriedAfterRefresh","appServerRequest","appServerGet","appServerPost","HttpImClient","inferAccountType","account","unwrapData","unwrapMessage","fallback","msg","DocumentedHttpImClient","unsupported","feature","clientId","getClientId","email","loginWithCode","flag","device_name","encodeURIComponent","postError","persistAppToken","resetPasswordWithCode","resetCode","fetchRemoteConversations","fetchRemoteMessages","getServerContactList","getProfile","sendTextMessage","sendAttachmentMessage","updateProfile","recallMessage","editMessage","getMessageDetail","LOCAL_MESSAGE_STORAGE_KEY","LOCAL_HIDDEN_MESSAGE_STORAGE_KEY","LOCAL_RECALLED_MESSAGE_STORAGE_KEY","scopedStorageKey","baseKey","scope","randomId","randomUUID","replaceAll","random","readLocalMessages","readMessageSet","storageKey","writeMessageSet","messagesByConversation","messageKeys","hasStoredMessage","stored","ids","storeMessageKeys","withRecalledState","applyLocalMessageState","isRecalled","writeLocalMessages","saveLocalMessage","splice","mergeSyncedMessages","localMessages","remoteMessages","visibleLocalMessages","localByKey","visibleRemoteMessages","remoteMessage","localMessage","remoteKeys","hasRemoteMatch","pendingLocalMessages","sort","a","b","displayTimestamp","getTitle","getUniqueEquipment","allowedDevices","canUseLocalLoginFallback","constructor","listeners","currentUser","restoreClientId","getSdkVersion","ensureSdk","localOnly","registerWithPhone","deviceId","uniqueEquipment","connect","refreshConversationList","disconnect","getConversationList","remoteConversations","limit","line","getMessages","options","markRead","includeConversations","pinnedMessageUid","remoteConversation","setPinnedMessage","hideMessages","markMessagesRecalled","nextText","editedMessage","editedAt","activityTimestamp","initialMessage","sender","sentMessage","serverTimestamp","failedMessage","mime","formData","append","getContactList","getAppAuthHeaders","mapContact","localeCompare","reason","normalizeConversation","groupKey","targetIds","members","targetUserId","adminIds","targetId","resetPasswordApi","refreshContactList","createSingleConversation","userInfo","friend","on","eventName","handler","off","appToken","authtoken","authToken","getUrlHost","host","LongConnectionImClient","UnsupportedWildfireImClient","WildfireImClient","HEARTBEAT_INTERVAL_MS","RECONNECT_MIN_MS","RECONNECT_MAX_MS","buildWsUrl","port","normalizeConversationId","to","receiver","normalizeIncomingMessage","currentUserId","fromUser","content","searchableContent","socket","heartbeatTimer","reconnectTimer","reconnectAttempts","manualClose","shouldUseMessagePolling","WebSocket","openSocket","clearReconnectTimer","clearHeartbeatTimer","close","readyState","OPEN","sendAuthFrame","CONNECTING","binaryType","scheduleReconnect","onopen","startHeartbeat","onmessage","handleFrame","onclose","sendFrame","frame","send","rawData","ArrayBuffer","cmd","setInterval","clearInterval","configuredProxyHosts","configured","mediaProxyHosts","source","proxyUrl","RealtimeNotificationClient","reconnectAttempt","isConnected","stop","ticket","separator","endpoint","socketUrl","realtimeNotifications","defineStore","CONTACT_CACHE_MS","normalizeContacts","unique","loading","eventsBound","refreshSerial","loadedForUserId","loadedAt","getters","actions","bindImEvents","requestUserId","serial","serverContacts","latest","nextAlias","savedAlias","setActiveContact","LOCAL_CONVERSATION_STORAGE_KEY","LOCAL_FAVORITE_MESSAGES_KEY","LOCAL_PINNED_MESSAGES_KEY","readFavoriteMessages","writeFavoriteMessages","readLocalConversations","writeLocalConversations","readPinnedMessages","writePinnedMessages","sortConversations","right","leftPinned","rightPinned","messageStableKey","messageActivityTimestamp","attachmentLabel","messagePreviewText","quotePrefix","isSameMessage","hasExactMessage","canMarkReadNow","visibilityState","userAction","normalizeMessageForDisplay","labels","mergeVisibleMessages","currentMessages","syncedMessages","merged","currentMessage","exists","shouldKeepLocal","incomingEditedMessages","previousMessages","nextMessages","previousByKey","previous","notificationAudioContext","playNotificationSound","AudioContext","webkitAudioContext","resume","oscillator","createOscillator","gain","createGain","startAt","currentTime","frequency","setValueAtTime","exponentialRampToValueAtTime","destination","visibleMessagesByConversation","usingDemoData","syncTimer","conversationSyncTimer","readPresenceEventsBound","syncInFlight","pendingReadReceiptConversationId","conversationSyncInFlight","syncAfterSendTimer","optimisticMessagesByConversation","quotedMessage","forwardingMessages","editingMessage","editingText","editingMode","messageDetailOpen","messageDetailLoading","messageDetailError","attentionMessageTimer","favoriteMessages","pinnedMessagesByConversation","activeFavoriteKey","actionNoticeTimer","realtimeSyncTimer","activeMessages","totalUnread","reduce","sum","pinned","selectedMessages","bootstrapDemoData","clearUserState","loadScopedLocalState","startMessageSync","handleRealtimeNotification","appendMessage","scheduleActiveMessagesSync","replaceMessage","applyRemoteConversations","loadActiveMessages","sendText","appendVisibleMessage","sendAttachment","sendTextToConversation","removeConversation","removedMessages","removedVisibleMessages","removedOptimisticMessages","remote","keepOptimisticMessage","updateConversationFromMessage","syncVisibleMessages","removeMessages","filterMessages","list","replaceLocalMessage","targetMessage","nextMessage","keys","replaceInList","matched","pruneOptimisticMessages","remoteMatched","syncedMessage","syncOptions","wantsReadReceipt","explicitReadReceipt","pollingReadReceipt","syncedConversationId","remotePinnedKey","pinnedMessage","editedIncomingMessages","latestMessage","bindReadPresenceEvents","syncWhenReadable","handleMessageAction","copyMessages","startEditMessage","deleteMessages","startForward","toggleFavorite","togglePinnedMessage","openMessageDetail","quoteMessage","enterSelectionMode","sentAt","closeMessageDetail","current","next","clearPinnedMessage","setActiveFavorite","quoteText","cancelQuote","toggleSelectedMessage","clearSelection","copySelectedMessages","deleteSelectedMessages","startForwardSelectedMessages","cancelForward","isResend","cancelEditMessage","completeEditMessage","completeForward","targetConversationId","fetch","sent","successCount","failedCount","showFavorites","STORAGE_KEY","normalizeStoredPortrait","nextProfilePortrait","profilePortrait","currentPortrait","sdkVersion","removeItem","applyLoginResult","persistSession","applyProfile","$reset"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/js/app.d5ef3122.js.map b/dist/js/app.d5ef3122.js.map deleted file mode 100644 index 661a780..0000000 --- a/dist/js/app.d5ef3122.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"js/app.d5ef3122.js","mappings":"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D;WACrK;WACA,KAAK;WACL;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,E;;;;;WC7BA;WACA;WACA;WACA,eAAe,4BAA4B;WAC3C,eAAe;WACf,iCAAiC,WAAW;WAC5C;WACA,E;;;;;WCPA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,2CAA2C,0CAA0C;WACrF,MAAM;WACN,2CAA2C,gCAAgC;WAC3E;WACA,KAAK,yBAAyB;WAC9B;WACA,GAAG;WACH;WACA;WACA,0CAA0C,wCAAwC;WAClF;WACA;WACA;WACA,E;;;;;WCtBA;WACA;WACA;WACA;WACA,GAAG;WACH;WACA;WACA,CAAC,I;;;;;WCPD,8CAA8C,yD;;;;;WCA9C;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D,E;;;;;WCNA;WACA;WACA,kDAAkD,iDAAiD,sCAAsC;WACzI,E;;;;;WCHA;;WAEA;WACA;WACA;WACA;WACA;WACA;;WAEA;;WAEA;;WAEA;;WAEA;;WAEA;;WAEA,8CAA8C;;WAE9C;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,iCAAiC,mCAAmC;WACpE;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,MAAM,qBAAqB;WAC3B;WACA;WACA;WACA;WACA;WACA;WACA;WACA;;WAEA;WACA;WACA,4G;;;;;UElDA;UACA;UACA;UACA,+EAA+E,mCAAmC;UAClH","sources":["webpack://jc-web-im/./src/App.vue","webpack://jc-web-im/./src/components/ChatShell.vue","webpack://jc-web-im/./src/components/LoginView.vue","webpack://jc-web-im/./src/components/chat/ChatPanel.vue","webpack://jc-web-im/./src/components/chat/MessageComposer.vue","webpack://jc-web-im/./src/components/chat/MessageList.vue","webpack://jc-web-im/./src/components/contacts/ContactPanel.vue","webpack://jc-web-im/./src/components/favorites/FavoriteList.vue","webpack://jc-web-im/./src/components/favorites/FavoritePanel.vue","webpack://jc-web-im/./src/components/sidebar/ContactList.vue","webpack://jc-web-im/./src/components/sidebar/ConversationList.vue","webpack://jc-web-im/./src/components/sidebar/NavigationRail.vue","webpack://jc-web-im/./src/config.js","webpack://jc-web-im/./src/main.js","webpack://jc-web-im/./src/services/appServerClient.js","webpack://jc-web-im/./src/services/documentedHttpImClient.js","webpack://jc-web-im/./src/services/httpImClient.js","webpack://jc-web-im/./src/services/imClient.js","webpack://jc-web-im/./src/services/longConnectionImClient.js","webpack://jc-web-im/./src/services/mediaProxy.js","webpack://jc-web-im/./src/services/realtimeNotifications.js","webpack://jc-web-im/./src/stores/contacts.js","webpack://jc-web-im/./src/stores/conversations.js","webpack://jc-web-im/./src/stores/navigation.js","webpack://jc-web-im/./src/stores/session.js","webpack://jc-web-im/./src/App.vue?7ccd","webpack://jc-web-im/./src/components/ChatShell.vue?96ef","webpack://jc-web-im/./src/components/LoginView.vue?3311","webpack://jc-web-im/./src/components/chat/ChatPanel.vue?ffa3","webpack://jc-web-im/./src/components/chat/MessageComposer.vue?d45c","webpack://jc-web-im/./src/components/chat/MessageList.vue?73ad","webpack://jc-web-im/./src/components/contacts/ContactPanel.vue?11f7","webpack://jc-web-im/./src/components/favorites/FavoriteList.vue?7e83","webpack://jc-web-im/./src/components/favorites/FavoritePanel.vue?9ce0","webpack://jc-web-im/./src/components/sidebar/ContactList.vue?8b7f","webpack://jc-web-im/./src/components/sidebar/ConversationList.vue?8a4a","webpack://jc-web-im/./src/components/sidebar/NavigationRail.vue?e8e6","webpack://jc-web-im/./src/App.vue?455b","webpack://jc-web-im/./src/components/ChatShell.vue?ef53","webpack://jc-web-im/./src/components/LoginView.vue?f595","webpack://jc-web-im/./src/components/chat/ChatPanel.vue?402c","webpack://jc-web-im/./src/components/chat/MessageComposer.vue?bb22","webpack://jc-web-im/./src/components/chat/MessageList.vue?c1a2","webpack://jc-web-im/./src/components/contacts/ContactPanel.vue?96e0","webpack://jc-web-im/./src/components/favorites/FavoriteList.vue?bdf3","webpack://jc-web-im/./src/components/favorites/FavoritePanel.vue?ee85","webpack://jc-web-im/./src/components/sidebar/ContactList.vue?dff0","webpack://jc-web-im/./src/components/sidebar/ConversationList.vue?0914","webpack://jc-web-im/./src/components/sidebar/NavigationRail.vue?c3d8","webpack://jc-web-im/webpack/bootstrap","webpack://jc-web-im/webpack/runtime/chunk loaded","webpack://jc-web-im/webpack/runtime/compat get default export","webpack://jc-web-im/webpack/runtime/define property getters","webpack://jc-web-im/webpack/runtime/global","webpack://jc-web-im/webpack/runtime/hasOwnProperty shorthand","webpack://jc-web-im/webpack/runtime/make namespace object","webpack://jc-web-im/webpack/runtime/set anonymous default export name","webpack://jc-web-im/webpack/runtime/jsonp chunk loading","webpack://jc-web-im/webpack/before-startup","webpack://jc-web-im/webpack/startup","webpack://jc-web-im/webpack/after-startup"],"sourcesContent":["\n\n\n","\r\n\r\n\r\n","\n\n\n","\r\n\r\n\r\n","\r\n\r\n\r\n","\r\n\r\n\r\n","\r\n\r\n\r\n","\r\n\r\n\r\n","\r\n\r\n\r\n","\r\n\r\n\r\n","\r\n\r\n\r\n","\r\n\r\n\r\n","const currentHost = window.location.hostname || '127.0.0.1';\nconst runtimeConfig = window.JC_WEB_IM_CONFIG || {};\nconst appServerOrigin = `${window.location.protocol}//${currentHost}:8888`;\nconst qrAppServerOrigin = `${window.location.protocol}//${currentHost}:18888`;\nconst adminServerOrigin = `${window.location.protocol}//${currentHost}:8024`;\n\r\nexport const appConfig = {\r\n appName: 'Web IM',\r\n adminServer: runtimeConfig.adminServer || process.env.VUE_APP_ADMIN_SERVER || adminServerOrigin,\n appServer: runtimeConfig.appServer || process.env.VUE_APP_APP_SERVER || appServerOrigin,\n qrAppServer: runtimeConfig.qrAppServer || process.env.VUE_APP_QR_APP_SERVER || qrAppServerOrigin,\n platformConfigApi: runtimeConfig.platformConfigApi || process.env.VUE_APP_PLATFORM_CONFIG_API || (process.env.NODE_ENV === 'development' ? '/local-api/platform_config.php' : '/api/platform_config.php'),\n registerConfigApi: runtimeConfig.registerConfigApi || process.env.VUE_APP_REGISTER_CONFIG_API || `${adminServerOrigin}/api/register-config`,\r\n registerPhoneExistsApi: runtimeConfig.registerPhoneExistsApi || process.env.VUE_APP_REGISTER_PHONE_EXISTS_API || `${adminServerOrigin}/api/register-phone-exists`,\r\n contactsApi: runtimeConfig.contactsApi || process.env.VUE_APP_CONTACTS_API || (process.env.NODE_ENV === 'development' ? '/local-api/contacts.php' : '/api/contacts.php'),\r\n updateAliasApi: runtimeConfig.updateAliasApi || process.env.VUE_APP_UPDATE_ALIAS_API || (process.env.NODE_ENV === 'development' ? '/local-api/update_alias.php' : '/api/update_alias.php'),\r\n addContactApi: runtimeConfig.addContactApi || process.env.VUE_APP_ADD_CONTACT_API || (process.env.NODE_ENV === 'development' ? '/local-api/add_contact.php' : '/api/add_contact.php'),\r\n conversationActionsApi: runtimeConfig.conversationActionsApi || process.env.VUE_APP_CONVERSATION_ACTIONS_API || (process.env.NODE_ENV === 'development' ? '/local-api/conversation_actions.php' : '/api/conversation_actions.php'),\r\n sendMessageApi: runtimeConfig.sendMessageApi || process.env.VUE_APP_SEND_MESSAGE_API || (process.env.NODE_ENV === 'development' ? '/local-api/send_message.php' : '/api/send_message.php'),\r\n messageActionApi: runtimeConfig.messageActionApi || process.env.VUE_APP_MESSAGE_ACTION_API || (process.env.NODE_ENV === 'development' ? '/local-api/message_action.php' : '/api/message_action.php'),\r\n messageDetailApi: runtimeConfig.messageDetailApi || process.env.VUE_APP_MESSAGE_DETAIL_API || (process.env.NODE_ENV === 'development' ? '/local-api/message_detail.php' : '/api/message_detail.php'),\r\n messagesApi: runtimeConfig.messagesApi || process.env.VUE_APP_MESSAGES_API || (process.env.NODE_ENV === 'development' ? '/local-api/messages.php' : '/api/messages.php'),\r\n profileApi: runtimeConfig.profileApi || process.env.VUE_APP_PROFILE_API || (process.env.NODE_ENV === 'development' ? '/local-api/profile.php' : '/api/profile.php'),\r\n changePasswordApi: runtimeConfig.changePasswordApi || process.env.VUE_APP_CHANGE_PASSWORD_API || `${appServerOrigin}/auth/changePassword`,\n logoutApi: runtimeConfig.logoutApi || process.env.VUE_APP_LOGOUT_API || `${appServerOrigin}/auth/logout`,\n imServerHost: runtimeConfig.imServerHost || process.env.VUE_APP_IM_SERVER_HOST || currentHost,\n imRoutePort: Number(runtimeConfig.imRoutePort || process.env.VUE_APP_IM_ROUTE_PORT || 18000),\r\n useWss: runtimeConfig.useWss ?? process.env.VUE_APP_USE_WSS === 'true',\n wsPath: runtimeConfig.wsPath || process.env.VUE_APP_WS_PATH || '/ws',\n wsUrl: runtimeConfig.wsUrl || process.env.VUE_APP_WS_URL || '',\n sdkMode: runtimeConfig.sdkMode || process.env.VUE_APP_IM_MODE || 'http',\n syncIntervalMs: Number(runtimeConfig.syncIntervalMs || process.env.VUE_APP_SYNC_INTERVAL_MS || 300),\n sseEnabled: runtimeConfig.sseEnabled ?? process.env.VUE_APP_SSE_ENABLED === 'true',\n sseTicketApi: runtimeConfig.sseTicketApi || process.env.VUE_APP_SSE_TICKET_API || '/api/sse_ticket.php',\n sseUrl: runtimeConfig.sseUrl || process.env.VUE_APP_SSE_URL || '/ws-events',\n platform: 5,\n clientIdStorageKey: 'qmt-web-im-client-id',\n authTokenStoragePrefix: 'qmt-web-im-auth-token-'\n};\n","import { createApp } from 'vue';\r\nimport { createPinia } from 'pinia';\r\nimport App from './App.vue';\r\nimport './styles/base.css';\r\n\r\ncreateApp(App).use(createPinia()).mount('#app');\r\n","import axios from 'axios';\nimport { appConfig } from '@/config';\n\nconst AES_KEY = 'xczx2026!@#secKe';\nconst ENCRYPTION_EXCLUDE_PATHS = ['/avatar/', '/f/', '/amr2mp3', '/appVersion/check'];\nconst AUTH_STORAGE_KEY = 'qmt-web-im-app-auth-v1';\nconst AUTH_ERROR_CODE = 13;\nconst REFRESH_ERROR_CODE = 20045;\n\nlet importedCryptoKeyPromise = null;\nlet refreshPromise = null;\n\nfunction storageScope() {\n return appConfig.appServer || '';\n}\n\nfunction readAuthStore() {\n try {\n return JSON.parse(localStorage.getItem(AUTH_STORAGE_KEY) || '{}');\n } catch (error) {\n return {};\n }\n}\n\nfunction writeAuthStore(store) {\n localStorage.setItem(AUTH_STORAGE_KEY, JSON.stringify(store));\n}\n\nfunction normalizeAuthBundle(bundle = {}) {\n const accessToken = String(bundle.accessToken || '').trim();\n const refreshToken = String(bundle.refreshToken || '').trim();\n if (!accessToken || !refreshToken) {\n return null;\n }\n return {\n accessToken,\n refreshToken,\n tokenType: String(bundle.tokenType || 'Bearer').trim() || 'Bearer',\n accessTokenExpireIn: Number(bundle.accessTokenExpireIn || 0) || 0,\n accessTokenExpireAt: Number(bundle.accessTokenExpireAt || 0) || 0,\n refreshTokenExpireIn: Number(bundle.refreshTokenExpireIn || 0) || 0,\n refreshTokenExpireAt: Number(bundle.refreshTokenExpireAt || 0) || 0\n };\n}\n\nexport function getStoredAppAuth() {\n const store = readAuthStore();\n return normalizeAuthBundle(store[storageScope()]);\n}\n\nexport function persistAppAuth(bundle) {\n const normalized = normalizeAuthBundle(bundle);\n const store = readAuthStore();\n if (!normalized) {\n delete store[storageScope()];\n writeAuthStore(store);\n return null;\n }\n store[storageScope()] = normalized;\n writeAuthStore(store);\n return normalized;\n}\n\nexport function clearStoredAppAuth() {\n persistAppAuth(null);\n}\n\nfunction hasFormData(value) {\n return typeof FormData !== 'undefined' && value instanceof FormData;\n}\n\nfunction absoluteUrl(url) {\n return new URL(url, window.location.origin);\n}\n\nfunction shouldEncrypt(url) {\n const pathname = absoluteUrl(url).pathname;\n return !ENCRYPTION_EXCLUDE_PATHS.some(path => pathname === path || pathname.startsWith(path));\n}\n\nfunction shouldAttachAuth(config) {\n return !config.skipAuth;\n}\n\nfunction textEncoder() {\n return new TextEncoder();\n}\n\nfunction textDecoder() {\n return new TextDecoder();\n}\n\nfunction bytesToBase64(bytes) {\n let binary = '';\n bytes.forEach(byte => {\n binary += String.fromCharCode(byte);\n });\n return btoa(binary);\n}\n\nfunction base64ToBytes(base64) {\n const binary = atob(base64);\n const bytes = new Uint8Array(binary.length);\n for (let index = 0; index < binary.length; index += 1) {\n bytes[index] = binary.charCodeAt(index);\n }\n return bytes;\n}\n\nasync function getCryptoKey() {\n if (!importedCryptoKeyPromise) {\n importedCryptoKeyPromise = window.crypto.subtle.importKey(\n 'raw',\n textEncoder().encode(AES_KEY),\n { name: 'AES-CBC' },\n false,\n ['encrypt', 'decrypt']\n );\n }\n return importedCryptoKeyPromise;\n}\n\nasync function encryptPayload(plainText) {\n const iv = window.crypto.getRandomValues(new Uint8Array(16));\n const key = await getCryptoKey();\n const encrypted = await window.crypto.subtle.encrypt(\n { name: 'AES-CBC', iv },\n key,\n textEncoder().encode(plainText)\n );\n return `${bytesToBase64(iv)}:${bytesToBase64(new Uint8Array(encrypted))}`;\n}\n\nasync function decryptPayload(cipherText) {\n const [ivBase64, encryptedBase64] = String(cipherText || '').split(':', 2);\n if (!ivBase64 || !encryptedBase64) {\n throw new Error('Encrypted payload format is invalid');\n }\n const key = await getCryptoKey();\n const decrypted = await window.crypto.subtle.decrypt(\n { name: 'AES-CBC', iv: base64ToBytes(ivBase64) },\n key,\n base64ToBytes(encryptedBase64)\n );\n return textDecoder().decode(decrypted);\n}\n\nfunction normalizeBusinessResponse(payload) {\n if (payload && typeof payload === 'object' && !Array.isArray(payload)) {\n return payload;\n }\n return {\n code: 0,\n message: 'success',\n data: payload\n };\n}\n\nasync function decodeResponsePayload(response) {\n const encrypted = String(response.headers?.['x-encrypted'] || '').toLowerCase() === 'true';\n if (encrypted && typeof response.data === 'string') {\n const plainText = await decryptPayload(response.data);\n response.data = normalizeBusinessResponse(JSON.parse(plainText));\n return response;\n }\n response.data = normalizeBusinessResponse(response.data);\n return response;\n}\n\nconst client = axios.create({\n withCredentials: false\n});\n\nclient.interceptors.request.use(async config => {\n const nextConfig = { ...config };\n const url = absoluteUrl(nextConfig.url || '').toString();\n\n if (shouldAttachAuth(nextConfig)) {\n const auth = getStoredAppAuth();\n if (auth?.accessToken) {\n nextConfig.headers = {\n ...(nextConfig.headers || {}),\n Authorization: `${auth.tokenType || 'Bearer'} ${auth.accessToken}`\n };\n }\n }\n\n if (!hasFormData(nextConfig.data) && nextConfig.method?.toLowerCase() !== 'get' && shouldEncrypt(url)) {\n const plainBody = JSON.stringify(nextConfig.data ?? {});\n nextConfig.data = await encryptPayload(plainBody);\n nextConfig.headers = {\n ...(nextConfig.headers || {}),\n 'Content-Type': 'text/plain;charset=UTF-8',\n 'X-Timestamp': `${Math.floor(Date.now() / 1000)}`\n };\n }\n\n return nextConfig;\n});\n\nclient.interceptors.response.use(async response => decodeResponsePayload(response));\n\nasync function refreshAccessToken() {\n if (refreshPromise) {\n return refreshPromise;\n }\n const auth = getStoredAppAuth();\n if (!auth?.refreshToken) {\n clearStoredAppAuth();\n throw new Error('登录状态已失效,请重新登录');\n }\n\n refreshPromise = client.post(`${appConfig.appServer}/auth/refreshToken`, {\n refreshToken: auth.refreshToken\n }, {\n skipAuth: true\n }).then(response => {\n const payload = response.data || {};\n if (Number(payload.code) !== 0 || !payload.data) {\n if (Number(payload.code) === REFRESH_ERROR_CODE) {\n clearStoredAppAuth();\n }\n throw new Error(payload.message || '刷新登录状态失败');\n }\n persistAppAuth(payload.data);\n return payload.data;\n }).finally(() => {\n refreshPromise = null;\n });\n\n return refreshPromise;\n}\n\nasync function request(config) {\n const response = await client.request(config);\n const payload = response.data || {};\n if (Number(payload.code) === AUTH_ERROR_CODE && shouldAttachAuth(config) && !config._retriedAfterRefresh) {\n await refreshAccessToken();\n return request({\n ...config,\n _retriedAfterRefresh: true\n });\n }\n return response;\n}\n\nexport async function appServerRequest(config) {\n return request(config);\n}\n\nexport async function appServerGet(url, config = {}) {\n return request({\n ...config,\n method: 'get',\n url\n });\n}\n\nexport async function appServerPost(url, data = {}, config = {}) {\n return request({\n ...config,\n method: 'post',\n url,\n data\n });\n}\n","import { appConfig } from '@/config';\nimport { HttpImClient } from './httpImClient';\nimport axios from 'axios';\nimport {\n appServerGet,\n appServerPost,\n clearStoredAppAuth,\n getStoredAppAuth,\n persistAppAuth\n} from './appServerClient';\n\nfunction inferAccountType(account) {\n return String(account || '').includes('@') ? 2 : 1;\n}\n\nfunction unwrapData(response) {\n return response.data?.data ?? response.data?.result ?? null;\n}\n\nfunction unwrapMessage(response, fallback) {\n return response.data?.message || response.data?.msg || fallback;\n}\n\nexport class DocumentedHttpImClient extends HttpImClient {\n unsupported(feature) {\n throw new Error(`当前对接文档未提供“${feature}”接口,已禁用旧本地代理链路`);\n }\n\n async loginWithPassword(account, password, type = inferAccountType(account)) {\n const response = await appServerPost(`${appConfig.appServer}/auth/login_pwd`, {\n type,\n number: account,\n password,\n platform: appConfig.platform,\n clientId: this.getClientId()\n }, {\n skipAuth: true\n });\n\n if (response.data?.code !== 0) {\n throw new Error(unwrapMessage(response, '登录失败'));\n }\n\n persistAppAuth(unwrapData(response));\n return unwrapData(response);\n }\n\n async requestAuthCode(email) {\n const response = await appServerPost(`${appConfig.appServer}/auth/sendEmailCode`, {\n email\n }, {\n skipAuth: true\n });\n\n if (response.data?.code !== 0) {\n throw new Error(unwrapMessage(response, '验证码发送失败'));\n }\n\n return unwrapData(response);\n }\n\n async loginWithCode(account, code) {\n void account;\n void code;\n throw new Error('接口文档未提供验证码登录接口,请使用密码登录');\n }\n\n async register({ type, number, code = '', password, invitationCode = '' }) {\n const response = await appServerPost(`${appConfig.appServer}/auth/register`, {\n type,\n number,\n code,\n password,\n clientId: this.getClientId(),\n platform: appConfig.platform,\n invitationCode\n }, {\n skipAuth: true\n });\n\n if (response.data?.code !== 0) {\n throw new Error(unwrapMessage(response, '注册失败'));\n }\n\n persistAppAuth(unwrapData(response));\n return unwrapData(response);\n }\n\n async createPcSession(userId = '') {\n const response = await axios.post(`${appConfig.qrAppServer}/pc_session`, {\n flag: 1,\n device_name: 'Web IM',\n userId,\n clientId: this.getClientId(),\n platform: appConfig.platform\n }, { withCredentials: false });\n\n if (response.data?.code !== 0) {\n throw new Error(unwrapMessage(response, '二维码登录会话创建失败'));\n }\n\n return unwrapData(response) || {};\n }\n\n async loginWithPcSession(token) {\n const url = `${appConfig.qrAppServer}/session_login/${encodeURIComponent(token)}`;\n let response;\n try {\n response = await axios.post(url, null, { withCredentials: false });\n } catch (postError) {\n response = await axios.get(url, { withCredentials: false });\n }\n\n this.persistAppToken(url, response);\n\n const payload = response.data || {};\n const result = payload.result ?? payload.data ?? null;\n\n if (Number(payload.code) === 0 && result) {\n persistAppAuth(result);\n }\n\n if ([0, 8, 9, 10, 13, 18, 20042].includes(Number(payload.code))) {\n return {\n ...payload,\n data: result\n };\n }\n\n throw new Error(payload.message || '扫码登录失败');\n }\n\n async changePassword({ oldPassword, newPassword }) {\n const response = await appServerPost(appConfig.changePasswordApi, {\n oldPassword,\n newPassword\n });\n\n if (response.data?.code !== 0) {\n throw new Error(unwrapMessage(response, '密码修改失败'));\n }\n\n return true;\n }\n\n async resetPasswordWithCode({ mobile, resetCode, newPassword }) {\n void mobile;\n void resetCode;\n void newPassword;\n throw new Error('接口文档未提供重置密码接口,请联系服务端确认流程');\n }\n\n async logout() {\n const auth = getStoredAppAuth();\n if (!auth?.refreshToken) {\n clearStoredAppAuth();\n return true;\n }\n\n try {\n const response = await appServerPost(appConfig.logoutApi, {\n refreshToken: auth.refreshToken\n });\n if (response.data?.code !== 0) {\n throw new Error(unwrapMessage(response, '退出登录失败'));\n }\n } finally {\n clearStoredAppAuth();\n }\n\n return true;\n }\n\n async fetchRemoteConversations() {\n return [];\n }\n\n async fetchRemoteMessages() {\n return [];\n }\n\n async getServerContactList() {\n return [];\n }\n\n async getProfile() {\n return null;\n }\n\n async sendTextMessage() {\n this.unsupported('发送消息');\n }\n\n async sendAttachmentMessage() {\n this.unsupported('发送附件消息');\n }\n\n async addContact() {\n this.unsupported('添加联系人');\n }\n\n async updateContactAlias() {\n this.unsupported('联系人备注');\n }\n\n async createGroup() {\n this.unsupported('创建群组');\n }\n\n async joinGroup() {\n this.unsupported('加入群组');\n }\n\n async broadcastMessage() {\n this.unsupported('群发消息');\n }\n\n async getGroupDetail() {\n this.unsupported('群详情');\n }\n\n async getGroupMembers() {\n this.unsupported('群成员');\n }\n\n async updateGroupAlias() {\n this.unsupported('群备注');\n }\n\n async leaveGroup() {\n this.unsupported('退出群组');\n }\n\n async dismissGroup() {\n this.unsupported('解散群组');\n }\n\n async transferGroup() {\n this.unsupported('转让群组');\n }\n\n async setGroupAdmins() {\n this.unsupported('设置群管理员');\n }\n\n async updateGroupProfile() {\n this.unsupported('更新群资料');\n }\n\n async kickGroupMembers() {\n this.unsupported('移除群成员');\n }\n\n async updateGroupMuteSetting() {\n this.unsupported('群禁言设置');\n }\n\n async updateProfile() {\n this.unsupported('更新个人资料');\n }\n\n async recallMessage() {\n this.unsupported('撤回消息');\n }\n\n async editMessage() {\n this.unsupported('编辑消息');\n }\n\n async getMessageDetail() {\n this.unsupported('消息详情');\n }\n}\n","import axios from 'axios';\nimport { appConfig } from '@/config';\nimport {\n appServerGet,\n appServerPost,\n clearStoredAppAuth,\n getStoredAppAuth,\n persistAppAuth\n} from '@/services/appServerClient';\n\r\nconst LOCAL_MESSAGE_STORAGE_KEY = 'qmt-web-im-local-messages-v2';\r\nconst LOCAL_HIDDEN_MESSAGE_STORAGE_KEY = 'qmt-web-im-hidden-messages-v1';\r\nconst LOCAL_RECALLED_MESSAGE_STORAGE_KEY = 'qmt-web-im-recalled-messages-v1';\r\n\r\nfunction scopedStorageKey(baseKey, userId = '') {\r\n const scope = `${appConfig.appServer || ''}:${userId || 'anonymous'}`;\r\n return `${baseKey}:${encodeURIComponent(scope)}`;\r\n}\r\n\r\nfunction randomId() {\r\n if (window.crypto && window.crypto.randomUUID) {\r\n return window.crypto.randomUUID().replaceAll('-', '');\r\n }\r\n return `${Date.now()}${Math.random().toString(16).slice(2)}`;\r\n}\r\n\r\nfunction readLocalMessages(userId) {\r\n try {\r\n return JSON.parse(localStorage.getItem(scopedStorageKey(LOCAL_MESSAGE_STORAGE_KEY, userId)) || '{}');\r\n } catch (error) {\r\n return {};\r\n }\r\n}\r\n\r\nfunction readMessageSet(storageKey, userId) {\r\n try {\r\n return JSON.parse(localStorage.getItem(scopedStorageKey(storageKey, userId)) || '{}');\r\n } catch (error) {\r\n return {};\r\n }\r\n}\r\n\r\nfunction writeMessageSet(storageKey, messagesByConversation, userId) {\r\n localStorage.setItem(scopedStorageKey(storageKey, userId), JSON.stringify(messagesByConversation));\r\n}\r\n\r\nfunction messageKeys(message) {\r\n return [message?.id, message?.messageUid]\r\n .filter(Boolean)\r\n .map(value => String(value));\r\n}\r\n\r\nfunction hasStoredMessage(storageKey, conversationId, message, userId) {\r\n const stored = readMessageSet(storageKey, userId);\r\n const ids = new Set(stored[conversationId] || []);\r\n return messageKeys(message).some(id => ids.has(id));\r\n}\r\n\r\nfunction storeMessageKeys(storageKey, conversationId, messages, userId) {\r\n const stored = readMessageSet(storageKey, userId);\r\n const ids = new Set(stored[conversationId] || []);\r\n messages.forEach(message => {\r\n messageKeys(message).forEach(id => ids.add(id));\r\n });\r\n stored[conversationId] = Array.from(ids);\r\n writeMessageSet(storageKey, stored, userId);\r\n}\r\n\r\nfunction withRecalledState(message) {\r\n return {\r\n ...message,\r\n status: 'recalled',\r\n deliveryStatus: '',\r\n recalled: true,\r\n recallStatus: '已撤回'\r\n };\r\n}\r\n\r\nfunction applyLocalMessageState(conversationId, messages, userId) {\r\n return messages\r\n .filter(message => !hasStoredMessage(LOCAL_HIDDEN_MESSAGE_STORAGE_KEY, conversationId, message, userId))\r\n .map(message => {\r\n const isRecalled = Boolean(message.recalled)\r\n || message.status === 'recalled'\r\n || hasStoredMessage(LOCAL_RECALLED_MESSAGE_STORAGE_KEY, conversationId, message, userId);\r\n if (!isRecalled) {\r\n return message;\r\n }\r\n return withRecalledState(message);\r\n });\r\n}\r\n\r\nfunction writeLocalMessages(messagesByConversation, userId) {\r\n localStorage.setItem(scopedStorageKey(LOCAL_MESSAGE_STORAGE_KEY, userId), JSON.stringify(messagesByConversation));\r\n}\r\n\r\nfunction saveLocalMessage(message, userId) {\r\n const messagesByConversation = readLocalMessages(userId);\r\n messagesByConversation[message.conversationId] = messagesByConversation[message.conversationId] || [];\r\n const index = messagesByConversation[message.conversationId].findIndex(item => item.id === message.id);\r\n if (index >= 0) {\r\n messagesByConversation[message.conversationId].splice(index, 1, message);\r\n } else {\r\n messagesByConversation[message.conversationId].push(message);\r\n }\r\n writeLocalMessages(messagesByConversation, userId);\r\n}\r\n\r\nfunction mergeSyncedMessages(localMessages, remoteMessages, conversationId, userId) {\r\n const visibleLocalMessages = applyLocalMessageState(conversationId, localMessages, userId);\r\n const localByKey = new Map();\r\n visibleLocalMessages.forEach(message => {\r\n messageKeys(message).forEach(key => {\r\n if (!localByKey.has(key)) {\r\n localByKey.set(key, message);\r\n }\r\n });\r\n });\r\n\r\n const visibleRemoteMessages = applyLocalMessageState(conversationId, remoteMessages, userId).map(remoteMessage => {\r\n if (!remoteMessage.recalled || String(remoteMessage.text || '').trim()) {\r\n return remoteMessage;\r\n }\r\n const localMessage = messageKeys(remoteMessage)\r\n .map(key => localByKey.get(key))\r\n .find(message => message?.text && message.text !== '你撤回了一条消息');\r\n return localMessage ? { ...remoteMessage, text: localMessage.text } : remoteMessage;\r\n });\r\n const remoteKeys = new Set();\r\n visibleRemoteMessages.forEach(message => {\r\n messageKeys(message).forEach(key => remoteKeys.add(key));\r\n });\r\n const now = Date.now();\r\n\r\n function hasRemoteMatch(localMessage) {\r\n if (localMessage.messageUid && remoteKeys.has(localMessage.messageUid)) {\r\n return true;\r\n }\r\n return visibleRemoteMessages.some(remoteMessage => {\r\n return remoteMessage.direction === localMessage.direction\r\n && remoteMessage.text === localMessage.text\r\n && Math.abs(Number(remoteMessage.timestamp || 0) - Number(localMessage.timestamp || 0)) < 15000;\r\n });\r\n }\r\n\r\n const pendingLocalMessages = visibleLocalMessages.filter(message => {\r\n if (message.status === 'recalled' || message.recalled) {\r\n return message.direction === 'out' && !hasRemoteMatch(message);\r\n }\r\n if (message.direction !== 'out') {\r\n return false;\r\n }\r\n if (message.status === 'sent' && message.messageUid) {\r\n return !hasRemoteMatch(message);\r\n }\r\n if (message.status === 'sent') {\r\n return !hasRemoteMatch(message) && now - Number(message.timestamp || 0) < 30000;\r\n }\r\n return message.status === 'sending' || message.status === 'failed';\r\n });\r\n\r\n return [...visibleRemoteMessages, ...pendingLocalMessages].sort((a, b) => {\r\n return Number(a.displayTimestamp || a.timestamp || 0) - Number(b.displayTimestamp || b.timestamp || 0);\r\n });\r\n}\r\n\r\nfunction getTitle(value, fallback) {\r\n return value || fallback || '';\r\n}\r\n\r\nfunction getUniqueEquipment(mobile, fallback) {\r\n const allowedDevices = {\r\n '18301902119': '67072d37062c4f31b1165073552933ba',\r\n '18301902116': '1777479418113eeea8e236edce',\r\n '18301902118': 'de89fb2f2a61480a8c381f6c16e28bd8',\r\n '18301902117': 'd117f480faa64145b6162107b1b49617'\r\n };\r\n return allowedDevices[mobile] || localStorage.getItem('uniqueEquipment') || fallback;\r\n}\r\n\r\nfunction canUseLocalLoginFallback(response) {\r\n const message = response.data?.message || '';\r\n return process.env.NODE_ENV === 'development' && message.includes('允许此设备登录');\r\n}\r\n\r\nexport class HttpImClient {\r\n constructor() {\r\n this.listeners = new Map();\r\n this.connected = false;\r\n this.currentUser = null;\r\n }\r\n\r\n getClientId() {\r\n let clientId = localStorage.getItem(appConfig.clientIdStorageKey);\r\n if (!clientId) {\r\n clientId = randomId();\r\n localStorage.setItem(appConfig.clientIdStorageKey, clientId);\r\n }\r\n return clientId;\r\n }\r\n\r\n restoreClientId(clientId) {\r\n if (clientId) {\r\n localStorage.setItem(appConfig.clientIdStorageKey, clientId);\r\n }\r\n }\r\n\r\n getSdkVersion() {\r\n return 'HTTP';\r\n }\r\n\r\n async ensureSdk() {\r\n return true;\r\n }\r\n\r\n async loginWithPassword(mobile, password) {\n const url = `${appConfig.appServer}/login_pwd`;\n const response = await axios.post(url, {\n mobile,\n password,\n platform: appConfig.platform,\n clientId: this.getClientId()\n }, { withCredentials: false });\n\r\n this.persistAppToken(url, response);\r\n if (response.data?.code !== 0) {\r\n if (canUseLocalLoginFallback(response)) {\r\n return {\r\n userId: mobile,\r\n token: `local-device-pending-${Date.now()}`,\r\n displayName: mobile,\r\n localOnly: true\r\n };\r\n }\r\n throw new Error(response.data?.message || '登录失败');\r\n }\r\n return response.data.result;\r\n }\r\n\r\n async requestAuthCode(mobile) {\r\n const response = await axios.post(`${appConfig.appServer}/send_code`, { mobile }, { withCredentials: false });\r\n if (response.data?.code !== 0) {\r\n throw new Error(response.data?.message || '验证码发送失败');\r\n }\r\n return response.data.result;\r\n }\r\n\r\n async loginWithCode(mobile, code) {\n const url = `${appConfig.appServer}/login`;\n const response = await axios.post(url, {\n mobile,\n code,\n platform: appConfig.platform,\n clientId: this.getClientId()\n }, { withCredentials: false });\n\r\n this.persistAppToken(url, response);\r\n if (response.data?.code !== 0) {\r\n throw new Error(response.data?.message || '登录失败');\r\n }\r\n return response.data.result;\r\n }\r\n\r\n async createPcSession(userId = '') {\r\n const response = await axios.post(`${appConfig.appServer}/pc_session`, {\r\n flag: 1,\r\n device_name: 'Web IM',\r\n userId,\r\n clientId: this.getClientId(),\r\n platform: appConfig.platform\r\n }, { withCredentials: false });\r\n\r\n if (response.data?.code !== 0) {\r\n throw new Error(response.data?.message || '二维码登录会话创建失败');\r\n }\r\n return response.data.result || {};\r\n }\r\n\r\n async loginWithPcSession(token) {\r\n const url = `${appConfig.appServer}/session_login/${encodeURIComponent(token)}`;\r\n const response = await axios.post(url, null, { withCredentials: false });\r\n this.persistAppToken(url, response);\r\n const data = response.data || {};\r\n if ([0, 8, 9, 10, 18].includes(Number(data.code))) {\r\n return data;\r\n }\r\n throw new Error(data.message || '扫码登录失败');\r\n }\r\n\r\n async registerWithPhone(mobile, code) {\r\n const url = `${appConfig.appServer}/register`;\r\n const deviceId = getUniqueEquipment(mobile, this.getClientId());\r\n\r\n try {\r\n const response = await axios.post(url, {\r\n mobile,\r\n code,\r\n platform: appConfig.platform,\r\n clientId: deviceId,\r\n uniqueEquipment: deviceId\r\n }, { withCredentials: false });\r\n\r\n this.persistAppToken(url, response);\r\n if (response.data?.code !== 0) {\r\n throw new Error(response.data?.message || '注册失败');\r\n }\r\n return response.data.result;\r\n } catch (error) {\r\n const status = error.response?.status;\r\n if (status === 404 || status === 405) {\r\n return this.loginWithCode(mobile, code);\r\n }\r\n throw error;\r\n }\r\n }\r\n\r\n connect(userId, token) {\r\n this.currentUser = { userId, token };\r\n this.connected = true;\r\n this.emit('connectionStatusChanged', { connected: true, statusText: '已连接' });\r\n this.refreshConversationList();\r\n }\r\n\r\n disconnect() {\r\n this.connected = false;\r\n this.currentUser = null;\r\n this.emit('connectionStatusChanged', { connected: false, statusText: '未连接' });\r\n }\r\n\r\n getConversationList() {\r\n return [];\r\n }\r\n\r\n refreshConversationList() {\r\n const conversations = this.getConversationList();\r\n if (conversations.length) {\r\n this.emit('conversationsChanged', conversations);\r\n }\r\n if (this.currentUser?.userId) {\r\n this.fetchRemoteConversations().then(remoteConversations => {\r\n this.emit('conversationsChanged', remoteConversations);\r\n }).catch(() => {});\r\n }\r\n return conversations;\r\n }\r\n\r\n async fetchRemoteConversations(limit = 50) {\r\n if (!this.currentUser?.userId) {\r\n return [];\r\n }\r\n const response = await axios.post(appConfig.messagesApi, {\r\n userId: this.currentUser.userId,\r\n limit\r\n }, { withCredentials: false });\r\n\r\n if (response.data?.code !== 0) {\r\n throw new Error(response.data?.message || '会话同步失败');\r\n }\r\n\r\n return (response.data?.result?.conversations || []).map(conversation => ({\r\n ...conversation,\r\n updatedAt: Number(conversation.updatedAt || Date.now()),\r\n avatarText: conversation.avatarText || String(conversation.title || conversation.target || '?').slice(0, 1).toUpperCase(),\r\n raw: conversation.raw || { type: 'single', target: conversation.target, line: 0 }\r\n }));\r\n }\r\n\r\n getMessages(conversation) {\r\n if (!conversation?.id) {\r\n return [];\r\n }\r\n const userId = this.currentUser?.userId || '';\r\n return applyLocalMessageState(conversation.id, readLocalMessages(userId)[conversation.id] || [], userId);\r\n }\r\n\r\n async fetchRemoteMessages(conversation, limit = 50, options = {}) {\r\n if (!conversation?.id || !this.currentUser?.userId) {\r\n return [];\r\n }\r\n const response = await axios.post(appConfig.messagesApi, {\r\n userId: this.currentUser.userId,\r\n target: conversation.target || conversation.raw?.target || conversation.id.replace(/^single-/, ''),\r\n limit,\n conversationType: conversation.type || conversation.raw?.type || 0,\n markRead: Boolean(options.markRead),\n includeConversations: Boolean(options.includeConversations)\n }, { withCredentials: false });\r\n\r\n if (response.data?.code !== 0) {\r\n throw new Error(response.data?.message || '消息同步失败');\r\n }\r\n\r\n const messages = (response.data?.result?.messages || []).map(message => ({\n ...message,\r\n displayTimestamp: message.displayTimestamp || message.timestamp,\r\n conversationId: conversation.id\n }));\n if (options.includeConversations && Array.isArray(response.data?.result?.conversations)) {\n const remoteConversations = response.data.result.conversations.map(remoteConversation => ({\n ...remoteConversation,\n updatedAt: Number(remoteConversation.updatedAt || Date.now()),\n avatarText: remoteConversation.avatarText || String(remoteConversation.title || remoteConversation.target || '?').slice(0, 1).toUpperCase(),\n raw: remoteConversation.raw || { type: 'single', target: remoteConversation.target, line: 0 }\n }));\n this.emit('conversationsChanged', remoteConversations);\n }\n const userId = this.currentUser?.userId || '';\r\n const messagesByConversation = readLocalMessages(userId);\r\n messagesByConversation[conversation.id] = mergeSyncedMessages(messagesByConversation[conversation.id] || [], messages, conversation.id, userId);\r\n writeLocalMessages(messagesByConversation, userId);\r\n return messagesByConversation[conversation.id];\r\n }\r\n\r\n hideMessages(conversation, messages) {\r\n const items = Array.isArray(messages) ? messages : [messages];\r\n if (!conversation?.id || !items.length) {\r\n return;\r\n }\r\n const userId = this.currentUser?.userId || '';\r\n storeMessageKeys(LOCAL_HIDDEN_MESSAGE_STORAGE_KEY, conversation.id, items, userId);\r\n const messagesByConversation = readLocalMessages(userId);\r\n messagesByConversation[conversation.id] = applyLocalMessageState(\r\n conversation.id,\r\n messagesByConversation[conversation.id] || [],\r\n userId\r\n );\r\n writeLocalMessages(messagesByConversation, userId);\r\n }\r\n\r\n markMessagesRecalled(conversation, messages) {\r\n const items = Array.isArray(messages) ? messages : [messages];\r\n if (!conversation?.id || !items.length) {\r\n return;\r\n }\r\n const userId = this.currentUser?.userId || '';\r\n storeMessageKeys(LOCAL_RECALLED_MESSAGE_STORAGE_KEY, conversation.id, items, userId);\r\n const messagesByConversation = readLocalMessages(userId);\r\n messagesByConversation[conversation.id] = applyLocalMessageState(\r\n conversation.id,\r\n messagesByConversation[conversation.id] || [],\r\n userId\r\n );\r\n writeLocalMessages(messagesByConversation, userId);\r\n }\r\n\r\n async recallMessage(conversation, message) {\r\n const messageUid = String(message?.messageUid || message?.id || '').trim();\r\n if (!/^\\d+$/.test(messageUid)) {\r\n throw new Error('缺少可撤回的消息ID');\r\n }\r\n\r\n const response = await axios.post(appConfig.messageActionApi, {\r\n action: 'recall',\r\n userId: this.currentUser?.userId || message.from || '',\r\n messageUid\r\n }, { withCredentials: false });\r\n\r\n if (response.data?.code !== 0) {\r\n throw new Error(response.data?.message || '撤回失败');\r\n }\r\n this.markMessagesRecalled(conversation, [message]);\r\n return response.data.result;\r\n }\r\n\r\n async editMessage(conversation, message, text) {\r\n const messageUid = String(message?.messageUid || message?.id || '').trim();\r\n if (!/^\\d+$/.test(messageUid)) {\r\n throw new Error('缺少可编辑的消息ID');\r\n }\r\n const nextText = String(text || '').trim();\r\n if (!nextText) {\r\n throw new Error('编辑内容不能为空');\r\n }\r\n\r\n const response = await axios.post(appConfig.messageActionApi, {\r\n action: 'edit',\r\n userId: this.currentUser?.userId || message.from || '',\r\n messageUid,\r\n text: nextText\r\n }, { withCredentials: false });\r\n\r\n if (response.data?.code !== 0) {\r\n throw new Error(response.data?.message || '编辑失败');\r\n }\r\n\r\n const result = response.data?.result?.message || {};\r\n const editedMessage = {\r\n ...message,\r\n text: result.text || nextText,\r\n status: 'delivered',\r\n deliveryStatus: 'delivered',\r\n editedAt: Number(result.editedAt || Date.now()),\r\n activityTimestamp: Number(result.editedAt || Date.now())\r\n };\r\n saveLocalMessage(editedMessage, this.currentUser?.userId || '');\r\n this.emit('messageStatusChanged', editedMessage);\r\n return editedMessage;\r\n }\r\n\r\n async getMessageDetail(conversation, message) {\r\n const messageUid = String(message?.messageUid || message?.id || '').trim();\r\n if (!messageUid) {\r\n throw new Error('缺少消息ID');\r\n }\r\n const response = await axios.post(appConfig.messageDetailApi, {\r\n userId: this.currentUser?.userId || '',\r\n target: conversation?.target || conversation?.raw?.target || conversation?.id?.replace(/^single-/, '') || '',\r\n conversationType: conversation?.type || conversation?.raw?.type || 'single',\r\n messageUid\r\n }, { withCredentials: false });\r\n\r\n if (response.data?.code !== 0) {\r\n throw new Error(response.data?.message || '消息详情加载失败');\r\n }\r\n\r\n return response.data?.result?.detail || null;\r\n }\r\n\r\n async sendTextMessage(conversation, text, initialMessage = null) {\r\n const senderRole = conversation?.role || conversation?.raw?.role || '';\r\n const message = initialMessage || {\r\n id: randomId(),\r\n conversationId: conversation.id,\r\n from: this.currentUser?.userId || 'me',\r\n senderRole,\r\n direction: 'out',\r\n type: 'text',\r\n text,\r\n status: 'sending',\r\n deliveryStatus: 'sending',\r\n timestamp: Date.now()\r\n };\r\n saveLocalMessage(message, this.currentUser?.userId || '');\r\n if (!initialMessage) {\r\n this.emit('messageSent', message);\r\n }\r\n\r\n try {\r\n const response = await axios.post(appConfig.sendMessageApi, {\r\n sender: this.currentUser?.userId || '',\r\n target: conversation.target || conversation.raw?.target || conversation.id.replace(/^single-/, ''),\r\n conversationType: conversation.type || conversation.raw?.type || 0,\r\n text\r\n }, { withCredentials: false });\r\n\r\n if (response.data?.code !== 0) {\r\n throw new Error(response.data?.message || '发送失败');\r\n }\r\n\r\n const sentMessage = {\r\n ...message,\r\n status: 'sent',\r\n deliveryStatus: 'sent',\r\n messageUid: response.data?.result?.messageUid ? String(response.data.result.messageUid) : '',\r\n senderRole: response.data?.result?.senderRole || message.senderRole || '',\r\n serverTimestamp: Number(response.data?.result?.timestamp || 0) || null,\r\n timestamp: message.timestamp,\r\n displayTimestamp: message.displayTimestamp || message.timestamp\r\n };\r\n saveLocalMessage(sentMessage, this.currentUser?.userId || '');\r\n this.emit('messageStatusChanged', sentMessage);\r\n return sentMessage;\r\n } catch (error) {\r\n const failedMessage = {\r\n ...message,\r\n status: 'failed',\r\n deliveryStatus: '',\r\n error: error.response?.data?.message || error.message || '发送失败'\r\n };\r\n saveLocalMessage(failedMessage, this.currentUser?.userId || '');\r\n this.emit('messageStatusChanged', failedMessage);\r\n return failedMessage;\r\n }\r\n }\r\n\r\n async sendAttachmentMessage(conversation, { type, file, text = '' }, initialMessage = null) {\r\n const senderRole = conversation?.role || conversation?.raw?.role || '';\r\n const message = initialMessage || {\r\n id: randomId(),\r\n conversationId: conversation.id,\r\n from: this.currentUser?.userId || 'me',\r\n senderRole,\r\n direction: 'out',\r\n type,\r\n text,\r\n attachment: {\r\n type,\r\n name: file?.name || (type === 'image' ? '图片' : '文件'),\r\n mime: file?.type || '',\r\n size: file?.size || 0,\r\n url: type === 'image' && file ? URL.createObjectURL(file) : ''\r\n },\r\n status: 'sending',\r\n deliveryStatus: 'sending',\r\n timestamp: Date.now()\r\n };\r\n saveLocalMessage(message, this.currentUser?.userId || '');\r\n if (!initialMessage) {\r\n this.emit('messageSent', message);\r\n }\r\n\r\n try {\r\n const formData = new FormData();\r\n formData.append('sender', this.currentUser?.userId || '');\r\n formData.append('target', conversation.target || conversation.raw?.target || conversation.id.replace(/^single-/, ''));\r\n formData.append('conversationType', conversation.type || conversation.raw?.type || 0);\r\n formData.append('messageType', type);\r\n formData.append('text', text || '');\r\n formData.append('attachment', file);\r\n\r\n const response = await axios.post(appConfig.sendMessageApi, formData, {\r\n withCredentials: false\r\n });\r\n\r\n if (response.data?.code !== 0) {\r\n throw new Error(response.data?.message || '发送失败');\r\n }\r\n\r\n const sentMessage = {\r\n ...message,\r\n status: 'sent',\r\n deliveryStatus: 'sent',\r\n messageUid: response.data?.result?.messageUid ? String(response.data.result.messageUid) : '',\r\n senderRole: response.data?.result?.senderRole || message.senderRole || '',\r\n attachment: response.data?.result?.attachment || message.attachment,\r\n serverTimestamp: Number(response.data?.result?.timestamp || 0) || null,\r\n timestamp: message.timestamp,\r\n displayTimestamp: message.displayTimestamp || message.timestamp\r\n };\r\n saveLocalMessage(sentMessage, this.currentUser?.userId || '');\r\n this.emit('messageStatusChanged', sentMessage);\r\n return sentMessage;\r\n } catch (error) {\r\n const failedMessage = {\r\n ...message,\r\n status: 'failed',\r\n deliveryStatus: '',\r\n error: error.response?.data?.message || error.message || '发送失败'\r\n };\r\n saveLocalMessage(failedMessage, this.currentUser?.userId || '');\r\n this.emit('messageStatusChanged', failedMessage);\r\n return failedMessage;\r\n }\r\n }\r\n\r\n getContactList() {\r\n return [];\r\n }\r\n\r\n async getServerContactList(userId) {\r\n if (!userId) {\r\n return [];\r\n }\r\n const response = await axios.post(appConfig.contactsApi, { userId }, {\r\n withCredentials: false,\r\n headers: this.getAppAuthHeaders(appConfig.contactsApi)\r\n });\r\n if (response.data?.code !== 0) {\r\n throw new Error(response.data?.message || '联系人加载失败');\r\n }\r\n return (response.data?.result?.contacts || []).map(item => {\r\n return this.mapContact(item.uid, { alias: item.alias }, {\r\n uid: item.uid,\r\n displayName: item.displayName,\r\n name: item.name,\r\n mobile: item.mobile,\r\n portrait: item.portrait,\r\n address: item.address,\r\n friendAlias: item.alias\r\n });\r\n }).sort((a, b) => a.title.localeCompare(b.title, 'zh-CN'));\r\n }\r\n\r\n async addContact(userId, keyword, reason = '') {\r\n const response = await axios.post(appConfig.addContactApi, {\r\n userId,\r\n keyword,\r\n reason\r\n }, { withCredentials: false });\r\n\r\n if (response.data?.code !== 0) {\r\n throw new Error(response.data?.message || '添加联系人失败');\r\n }\r\n\r\n const item = response.data?.result?.contact;\r\n if (!item?.uid) {\r\n return null;\r\n }\r\n\r\n return this.mapContact(item.uid, { alias: item.alias }, {\r\n uid: item.uid,\r\n displayName: item.displayName,\r\n name: item.name,\r\n mobile: item.mobile,\r\n portrait: item.portrait,\r\n address: item.address,\r\n friendAlias: item.alias\r\n });\r\n }\r\n\r\n normalizeConversation(conversation) {\r\n const title = getTitle(conversation?.title, conversation?.target || '');\r\n return {\r\n ...conversation,\r\n id: conversation?.id || `${conversation?.type === 'single' ? 'single' : 'group'}-${conversation?.target}`,\r\n target: conversation?.target || conversation?.raw?.target || '',\r\n title,\r\n subtitle: conversation?.subtitle || '',\r\n unread: Number(conversation?.unread || 0),\r\n portrait: conversation?.portrait || '',\r\n avatarText: conversation?.avatarText || title.slice(0, 1).toUpperCase(),\r\n updatedAt: Number(conversation?.updatedAt || Date.now()),\r\n raw: conversation?.raw || {\r\n type: conversation?.type === 'single' ? 'single' : 'group',\r\n target: conversation?.target || '',\r\n line: 0\r\n }\r\n };\r\n }\r\n\r\n async createGroup(userId, { name, memberIds = [], announcement = '', welcomeText = '', channel = false }) {\r\n const response = await axios.post(appConfig.conversationActionsApi, {\r\n action: channel ? 'create_channel' : 'create_group',\r\n userId,\r\n name,\r\n memberIds,\r\n announcement,\r\n welcomeText\r\n }, { withCredentials: false });\r\n\r\n if (response.data?.code !== 0) {\r\n throw new Error(response.data?.message || (channel ? '创建公告群失败' : '创建群组失败'));\r\n }\r\n\r\n return this.normalizeConversation(response.data?.result?.conversation || {});\r\n }\r\n\r\n async joinGroup(userId, groupKey) {\r\n const response = await axios.post(appConfig.conversationActionsApi, {\r\n action: 'join_group',\r\n userId,\r\n groupKey\r\n }, { withCredentials: false });\r\n\r\n if (response.data?.code !== 0) {\r\n throw new Error(response.data?.message || '加入群组失败');\r\n }\r\n\r\n return this.normalizeConversation(response.data?.result?.conversation || {});\r\n }\r\n\r\n async broadcastMessage(userId, targetIds, text) {\r\n const response = await axios.post(appConfig.conversationActionsApi, {\r\n action: 'broadcast',\r\n userId,\r\n targetIds,\r\n text\r\n }, { withCredentials: false });\r\n\r\n if (response.data?.code !== 0) {\r\n throw new Error(response.data?.message || '群发失败');\r\n }\r\n\r\n return response.data?.result || {};\r\n }\r\n\r\n async getGroupDetail(userId, groupId) {\r\n const response = await axios.post(appConfig.conversationActionsApi, {\r\n action: 'group_detail',\r\n userId,\r\n groupId\r\n }, { withCredentials: false });\r\n\r\n if (response.data?.code !== 0) {\r\n throw new Error(response.data?.message || '群资料加载失败');\r\n }\r\n\r\n return response.data?.result?.group || null;\r\n }\r\n\r\n async getGroupMembers(userId, groupId) {\r\n const response = await axios.post(appConfig.conversationActionsApi, {\r\n action: 'group_members',\r\n userId,\r\n groupId\r\n }, { withCredentials: false });\r\n\r\n if (response.data?.code !== 0) {\r\n throw new Error(response.data?.message || '群员加载失败');\r\n }\r\n\r\n return response.data?.result?.members || [];\r\n }\r\n\r\n async updateGroupAlias(userId, groupId, alias) {\r\n const response = await axios.post(appConfig.conversationActionsApi, {\r\n action: 'update_group_alias',\r\n userId,\r\n groupId,\r\n alias\r\n }, { withCredentials: false });\r\n\r\n if (response.data?.code !== 0) {\r\n throw new Error(response.data?.message || '本群昵称保存失败');\r\n }\r\n\r\n return response.data?.result?.alias || '';\r\n }\r\n\r\n async leaveGroup(userId, groupId) {\r\n const response = await axios.post(appConfig.conversationActionsApi, {\r\n action: 'leave_group',\r\n userId,\r\n groupId\r\n }, { withCredentials: false });\r\n\r\n if (response.data?.code !== 0) {\r\n throw new Error(response.data?.message || '退出群组失败');\r\n }\r\n\r\n return response.data?.result || {};\r\n }\r\n\r\n async dismissGroup(userId, groupId) {\r\n const response = await axios.post(appConfig.conversationActionsApi, {\r\n action: 'dismiss_group',\r\n userId,\r\n groupId\r\n }, { withCredentials: false });\r\n\r\n if (response.data?.code !== 0) {\r\n throw new Error(response.data?.message || '解散群组失败');\r\n }\r\n\r\n return response.data?.result || {};\r\n }\r\n\r\n async transferGroup(userId, groupId, targetUserId) {\r\n const response = await axios.post(appConfig.conversationActionsApi, {\r\n action: 'transfer_group',\r\n userId,\r\n groupId,\r\n targetUserId\r\n }, { withCredentials: false });\r\n\r\n if (response.data?.code !== 0) {\r\n throw new Error(response.data?.message || '转让群组失败');\r\n }\r\n\r\n return response.data?.result || {};\r\n }\r\n\r\n async setGroupAdmins(userId, groupId, adminIds) {\r\n const response = await axios.post(appConfig.conversationActionsApi, {\r\n action: 'set_group_admins',\r\n userId,\r\n groupId,\r\n adminIds\r\n }, { withCredentials: false });\r\n\r\n if (response.data?.code !== 0) {\r\n throw new Error(response.data?.message || '管理员设置失败');\r\n }\r\n\r\n return response.data?.result || {};\r\n }\r\n\r\n async updateGroupProfile(userId, groupId, { name, announcement, welcomeText }) {\r\n const response = await axios.post(appConfig.conversationActionsApi, {\r\n action: 'update_group_profile',\r\n userId,\r\n groupId,\r\n name,\r\n announcement,\r\n welcomeText\r\n }, { withCredentials: false });\r\n\r\n if (response.data?.code !== 0) {\r\n throw new Error(response.data?.message || '群资料保存失败');\r\n }\r\n\r\n return response.data?.result || {};\r\n }\r\n\r\n async kickGroupMembers(userId, groupId, targetIds) {\r\n const response = await axios.post(appConfig.conversationActionsApi, {\r\n action: 'kick_group_members',\r\n userId,\r\n groupId,\r\n targetIds\r\n }, { withCredentials: false });\r\n\r\n if (response.data?.code !== 0) {\r\n throw new Error(response.data?.message || '踢人失败');\r\n }\r\n\r\n return response.data?.result || {};\r\n }\r\n\r\n async updateGroupMuteSetting(userId, groupId, setting) {\r\n const response = await axios.post(appConfig.conversationActionsApi, {\r\n action: 'update_mute_setting',\r\n userId,\r\n groupId,\r\n ...setting\r\n }, { withCredentials: false });\r\n\r\n if (response.data?.code !== 0) {\r\n throw new Error(response.data?.message || '禁言设置保存失败');\r\n }\r\n\r\n return response.data?.result?.muteSetting || null;\r\n }\r\n\r\n async updateContactAlias(userId, targetId, alias) {\r\n const response = await axios.post(appConfig.updateAliasApi, {\r\n userId,\r\n targetId,\r\n alias\r\n }, {\r\n withCredentials: false,\r\n headers: this.getAppAuthHeaders(appConfig.updateAliasApi)\r\n });\r\n\r\n if (response.data?.code !== 0) {\r\n throw new Error(response.data?.message || '备注名修改失败');\r\n }\r\n\r\n return response.data?.result?.contact?.alias || '';\r\n }\r\n\r\n async getProfile(userId) {\r\n const response = await axios.post(appConfig.profileApi, {\r\n action: 'get',\r\n userId\r\n }, { withCredentials: false });\r\n\r\n if (response.data?.code !== 0) {\r\n throw new Error(response.data?.message || '用户资料加载失败');\r\n }\r\n\r\n return response.data?.result?.profile || null;\r\n }\r\n\r\n async updateProfile(userId, { displayName, portraitFile }) {\r\n const formData = new FormData();\r\n formData.append('action', 'update');\r\n formData.append('userId', userId);\r\n formData.append('displayName', displayName);\r\n if (portraitFile) {\r\n formData.append('portraitFile', portraitFile);\r\n }\r\n\r\n const response = await axios.post(appConfig.profileApi, formData, {\r\n withCredentials: false,\r\n headers: this.getAppAuthHeaders(appConfig.appServer)\r\n });\r\n\r\n if (response.data?.code !== 0) {\r\n throw new Error(response.data?.message || '用户资料保存失败');\r\n }\r\n\r\n return response.data?.result?.profile || null;\r\n }\r\n\r\n async changePassword({ oldPassword, newPassword }) {\r\n const response = await axios.post(appConfig.changePasswordApi, {\r\n oldPassword,\r\n newPassword\r\n }, {\r\n withCredentials: false,\r\n headers: this.getAppAuthHeaders(appConfig.changePasswordApi)\r\n });\r\n\r\n if (response.data?.code !== 0) {\r\n throw new Error(response.data?.message || response.data?.msg || '密码修改失败');\r\n }\r\n\r\n return true;\r\n }\r\n\r\n async resetPasswordWithCode({ mobile, resetCode, newPassword }) {\r\n const response = await axios.post(appConfig.resetPasswordApi, {\r\n mobile,\r\n resetCode,\r\n newPassword\r\n }, { withCredentials: false });\r\n\r\n if (response.data?.code !== 0) {\r\n throw new Error(response.data?.message || response.data?.msg || '密码设置失败');\r\n }\r\n\r\n return true;\r\n }\r\n\r\n refreshContactList() {\r\n const contacts = this.getContactList();\r\n this.emit('contactsChanged', contacts);\r\n return contacts;\r\n }\r\n\r\n createSingleConversation(userId, userInfo = null) {\r\n const title = getTitle(userInfo?.title || userInfo?.displayName || userInfo?.name, userId);\r\n return {\r\n id: `single-${userId}`,\r\n type: 'single',\r\n target: userId,\r\n title,\r\n subtitle: '',\r\n unread: 0,\r\n portrait: userInfo?.portrait || '',\r\n avatarText: title.slice(0, 1).toUpperCase(),\r\n updatedAt: Date.now(),\r\n raw: { type: 'single', target: userId, line: 0 }\r\n };\r\n }\r\n\r\n mapContact(userId, friend, userInfo) {\r\n const title = getTitle(userInfo?.friendAlias || friend?.alias || userInfo?.displayName || userInfo?.name, userId);\r\n return {\r\n id: userId,\r\n uid: userId,\r\n title,\r\n subtitle: userInfo?.mobile || userInfo?.name || userId,\r\n portrait: userInfo?.portrait || '',\r\n address: userInfo?.address || '',\r\n avatarText: title.slice(0, 1).toUpperCase(),\r\n alias: friend?.alias || userInfo?.friendAlias || '',\r\n rawFriend: friend,\r\n rawUser: userInfo\r\n };\r\n }\r\n\r\n on(eventName, handler) {\r\n if (!this.listeners.has(eventName)) {\r\n this.listeners.set(eventName, new Set());\r\n }\r\n this.listeners.get(eventName).add(handler);\r\n return () => this.off(eventName, handler);\r\n }\r\n\r\n off(eventName, handler) {\r\n this.listeners.get(eventName)?.delete(handler);\r\n }\r\n\r\n emit(eventName, payload) {\r\n this.listeners.get(eventName)?.forEach(handler => handler(payload));\r\n }\r\n\r\n persistAppToken(url, response) {\r\n const appToken = response.headers?.authtoken || response.headers?.authToken;\r\n if (appToken) {\r\n localStorage.setItem(appConfig.authTokenStoragePrefix + this.getUrlHost(url), appToken);\r\n }\r\n }\r\n\r\n getAppAuthHeaders(url) {\r\n const host = this.getUrlHost(url);\r\n if (!host) {\r\n return {};\r\n }\r\n const token = localStorage.getItem(appConfig.authTokenStoragePrefix + host);\r\n return token ? { authToken: token } : {};\r\n }\r\n\r\n getUrlHost(url) {\r\n try {\r\n return new URL(url, window.location.origin).host;\r\n } catch (error) {\r\n return '';\r\n }\r\n }\r\n}\r\n\r\nexport const imClient = new HttpImClient();\r\n","import { appConfig } from '@/config';\nimport { HttpImClient } from './httpImClient';\nimport { LongConnectionImClient } from './longConnectionImClient';\nimport { DocumentedHttpImClient } from './documentedHttpImClient';\n\nclass UnsupportedWildfireImClient {\n constructor() {\n throw new Error('当前本地社区版 Web 客户端未启用 WildFire Web SDK');\n }\n}\n\nexport const imClient = appConfig.sdkMode === 'wildfire'\n ? new UnsupportedWildfireImClient()\n : appConfig.sdkMode === 'custom-ws' || appConfig.sdkMode === 'long'\n ? new LongConnectionImClient()\n : appConfig.sdkMode === 'legacy-http'\n ? new HttpImClient()\n : new DocumentedHttpImClient();\n\nexport {\n DocumentedHttpImClient,\n HttpImClient,\n LongConnectionImClient,\n UnsupportedWildfireImClient as WildfireImClient\n};\n","import { appConfig } from '@/config';\r\nimport { HttpImClient } from './httpImClient';\r\n\r\nconst HEARTBEAT_INTERVAL_MS = 25000;\r\nconst RECONNECT_MIN_MS = 1000;\r\nconst RECONNECT_MAX_MS = 15000;\r\n\r\nfunction buildWsUrl() {\r\n if (appConfig.wsUrl) {\r\n return appConfig.wsUrl;\r\n }\r\n const protocol = appConfig.useWss ? 'wss' : 'ws';\r\n const host = appConfig.imServerHost || window.location.hostname;\r\n const port = appConfig.imRoutePort ? `:${appConfig.imRoutePort}` : '';\r\n const path = appConfig.wsPath?.startsWith('/') ? appConfig.wsPath : `/${appConfig.wsPath || 'ws'}`;\r\n return `${protocol}://${host}${port}${path}`;\r\n}\r\n\r\nfunction normalizeConversationId(payload) {\r\n const target = payload.target || payload.to || payload.receiver || payload.conversationTarget || payload.from || payload.sender;\r\n return payload.conversationId || (target ? `single-${target}` : '');\r\n}\r\n\r\nfunction normalizeIncomingMessage(payload, currentUserId) {\r\n const item = payload.message || payload;\r\n const from = item.from || item.sender || item.fromUser || '';\r\n const target = item.target || item.to || item.receiver || '';\r\n const direction = from && String(from) === String(currentUserId) ? 'out' : 'in';\r\n const conversationId = item.conversationId || normalizeConversationId({\r\n ...item,\r\n target: direction === 'out' ? target : from\r\n });\r\n\r\n if (!conversationId) {\r\n return null;\r\n }\r\n\r\n const status = item.status || item.deliveryStatus || 'sent';\r\n\r\n return {\r\n id: item.id || item.messageId || item.messageUid || `${Date.now()}${Math.random().toString(16).slice(2)}`,\r\n messageUid: item.messageUid || item.uid || item.messageId || '',\r\n conversationId,\r\n from,\r\n target,\r\n direction,\r\n type: item.type || 'text',\r\n text: item.text || item.content || item.searchableContent || '',\r\n status,\r\n deliveryStatus: item.deliveryStatus || (direction === 'out' ? status : ''),\r\n timestamp: Number(item.timestamp || item.serverTimestamp || Date.now()),\r\n displayTimestamp: Number(item.displayTimestamp || item.timestamp || item.serverTimestamp || Date.now()),\r\n raw: item\r\n };\r\n}\r\n\r\nexport class LongConnectionImClient extends HttpImClient {\r\n constructor() {\r\n super();\r\n this.socket = null;\r\n this.wsUrl = buildWsUrl();\r\n this.heartbeatTimer = null;\r\n this.reconnectTimer = null;\r\n this.reconnectAttempts = 0;\r\n this.manualClose = false;\r\n }\r\n\r\n getSdkVersion() {\r\n return 'JC-LC/0.1';\r\n }\r\n\r\n shouldUseMessagePolling() {\r\n return !this.connected;\r\n }\r\n\r\n async ensureSdk() {\r\n if (typeof WebSocket === 'undefined') {\r\n throw new Error('当前浏览器不支持 WebSocket 长连接');\r\n }\r\n return true;\r\n }\r\n\r\n connect(userId, token) {\r\n this.currentUser = { userId, token };\r\n this.manualClose = false;\r\n this.openSocket();\r\n }\r\n\r\n disconnect() {\r\n this.manualClose = true;\r\n this.clearReconnectTimer();\r\n this.clearHeartbeatTimer();\r\n if (this.socket) {\r\n this.socket.close();\r\n this.socket = null;\r\n }\r\n super.disconnect();\r\n }\r\n\r\n openSocket() {\r\n if (this.socket?.readyState === WebSocket.OPEN) {\r\n this.sendAuthFrame();\r\n return;\r\n }\r\n if (this.socket?.readyState === WebSocket.CONNECTING) {\r\n return;\r\n }\r\n\r\n this.emit('connectionStatusChanged', { connected: false, statusText: '长连接连接中' });\r\n\r\n try {\r\n this.socket = new WebSocket(this.wsUrl);\r\n this.socket.binaryType = 'arraybuffer';\r\n } catch (error) {\r\n this.emit('connectionStatusChanged', { connected: false, statusText: '长连接创建失败,使用HTTP补偿' });\r\n this.scheduleReconnect();\r\n return;\r\n }\r\n\r\n this.socket.onopen = () => {\r\n this.connected = true;\r\n this.reconnectAttempts = 0;\r\n this.emit('connectionStatusChanged', { connected: true, statusText: '长连接已连接' });\r\n this.sendAuthFrame();\r\n this.startHeartbeat();\r\n this.refreshConversationList();\r\n };\r\n\r\n this.socket.onmessage = event => {\r\n this.handleFrame(event.data);\r\n };\r\n\r\n this.socket.onerror = () => {\r\n this.emit('connectionStatusChanged', { connected: false, statusText: '长连接异常,使用HTTP补偿' });\r\n };\r\n\r\n this.socket.onclose = () => {\r\n this.connected = false;\r\n this.clearHeartbeatTimer();\r\n this.socket = null;\r\n if (this.manualClose) {\r\n return;\r\n }\r\n this.emit('connectionStatusChanged', { connected: false, statusText: '长连接重连中' });\r\n this.scheduleReconnect();\r\n };\r\n }\r\n\r\n sendAuthFrame() {\r\n this.sendFrame({\r\n type: 'auth',\r\n userId: this.currentUser?.userId || '',\r\n token: this.currentUser?.token || '',\r\n clientId: this.getClientId(),\r\n platform: appConfig.platform,\r\n timestamp: Date.now()\r\n });\r\n }\r\n\r\n sendFrame(frame) {\r\n if (this.socket?.readyState !== WebSocket.OPEN) {\r\n return false;\r\n }\r\n this.socket.send(JSON.stringify(frame));\r\n return true;\r\n }\r\n\r\n handleFrame(rawData) {\r\n if (rawData instanceof ArrayBuffer) {\r\n this.emit('rawFrameReceived', rawData);\r\n return;\r\n }\r\n\r\n let payload;\r\n try {\r\n payload = typeof rawData === 'string' ? JSON.parse(rawData) : rawData;\r\n } catch (error) {\r\n return;\r\n }\r\n\r\n const type = payload.type || payload.event || payload.cmd || '';\r\n if (type === 'pong' || type === 'auth_ok' || type === 'connected') {\r\n return;\r\n }\r\n if (type === 'contactsChanged') {\r\n this.emit('contactsChanged', payload.contacts || []);\r\n return;\r\n }\r\n if (type === 'conversationsChanged') {\r\n this.emit('conversationsChanged', payload.conversations || []);\r\n return;\r\n }\r\n if (type === 'messages' && Array.isArray(payload.messages)) {\r\n payload.messages\r\n .map(message => normalizeIncomingMessage(message, this.currentUser?.userId))\r\n .filter(Boolean)\r\n .forEach(message => this.emit('messageReceived', message));\r\n return;\r\n }\r\n\r\n const message = normalizeIncomingMessage(payload, this.currentUser?.userId);\r\n if (message) {\r\n this.emit(message.direction === 'out' ? 'messageStatusChanged' : 'messageReceived', message);\r\n }\r\n }\r\n\r\n startHeartbeat() {\r\n this.clearHeartbeatTimer();\r\n this.heartbeatTimer = window.setInterval(() => {\r\n this.sendFrame({ type: 'ping', timestamp: Date.now() });\r\n }, HEARTBEAT_INTERVAL_MS);\r\n }\r\n\r\n clearHeartbeatTimer() {\r\n if (this.heartbeatTimer) {\r\n window.clearInterval(this.heartbeatTimer);\r\n this.heartbeatTimer = null;\r\n }\r\n }\r\n\r\n scheduleReconnect() {\r\n this.clearReconnectTimer();\r\n const delay = Math.min(RECONNECT_MAX_MS, RECONNECT_MIN_MS * 2 ** this.reconnectAttempts);\r\n this.reconnectAttempts += 1;\r\n this.reconnectTimer = window.setTimeout(() => {\r\n this.openSocket();\r\n }, delay);\r\n }\r\n\r\n clearReconnectTimer() {\r\n if (this.reconnectTimer) {\r\n window.clearTimeout(this.reconnectTimer);\r\n this.reconnectTimer = null;\r\n }\r\n }\r\n}\r\n","function configuredProxyHosts() {\n const configured = window.JC_WEB_IM_CONFIG?.mediaProxyHosts;\n const values = Array.isArray(configured)\n ? configured\n : String(configured || '').split(/[\\s,]+/);\n return new Set(\n values\n .map(value => String(value || '').trim().toLowerCase().replace(/\\.$/, ''))\n .filter(Boolean)\n );\n}\n\nexport function imageDisplayUrl(value) {\n const source = String(value || '').trim();\n if (!source || source.startsWith('blob:') || source.startsWith('data:')) {\n return source;\n }\n\n try {\n const url = new URL(source, window.location.origin);\n if (url.protocol !== 'https:' || !configuredProxyHosts().has(url.hostname.toLowerCase())) {\n return source;\n }\n const proxyUrl = new URL('/api/media_proxy.php', window.location.origin);\n proxyUrl.searchParams.set('url', url.toString());\n return proxyUrl.toString();\n } catch (error) {\n return source;\n }\n}\n","import axios from 'axios';\nimport { appConfig } from '@/config';\nimport { imClient } from '@/services/imClient';\n\nclass RealtimeNotificationClient {\n constructor() {\n this.source = null;\n this.userId = '';\n this.handler = null;\n this.reconnectTimer = null;\n this.reconnectAttempt = 0;\n this.generation = 0;\n }\n\n isConnected() {\n return this.source?.readyState === WebSocket.OPEN;\n }\n\n start(userId, handler) {\n this.stop();\n if (!appConfig.sseEnabled || !userId || typeof window.WebSocket !== 'function') return;\n this.userId = userId;\n this.handler = handler;\n this.generation += 1;\n this.open(this.generation);\n }\n\n stop() {\n this.generation += 1;\n window.clearTimeout(this.reconnectTimer);\n this.reconnectTimer = null;\n if (this.source) this.source.close();\n this.source = null;\n this.userId = '';\n this.handler = null;\n this.reconnectAttempt = 0;\n }\n\n async open(generation) {\n try {\n const response = await axios.post(appConfig.sseTicketApi, { userId: this.userId }, {\n withCredentials: false,\n headers: imClient.getAppAuthHeaders(appConfig.appServer)\n });\n if (generation !== this.generation) return;\n if (response.data?.code !== 0) throw new Error(response.data?.message || '实时通知凭证申请失败');\n const ticket = response.data?.result?.ticket || '';\n if (!ticket) throw new Error('实时通知凭证为空');\n const separator = appConfig.sseUrl.includes('?') ? '&' : '?';\n const endpoint = `${appConfig.sseUrl}${separator}ticket=${encodeURIComponent(ticket)}`;\n const socketUrl = endpoint.startsWith('ws://') || endpoint.startsWith('wss://')\n ? endpoint\n : `${window.location.protocol === 'https:' ? 'wss:' : 'ws:'}//${window.location.host}${endpoint.startsWith('/') ? '' : '/'}${endpoint}`;\n const source = new WebSocket(socketUrl);\n this.source = source;\n source.onopen = () => {\n this.reconnectAttempt = 0;\n };\n source.onmessage = event => {\n if (generation !== this.generation) return;\n let payload = {};\n try { payload = JSON.parse(event.data || '{}'); } catch (error) { payload = {}; }\n if (payload.type !== 'message-notification') return;\n this.handler?.(payload);\n };\n source.onerror = () => {\n if (generation !== this.generation) return;\n source.close();\n if (this.source === source) this.source = null;\n this.scheduleReconnect(generation);\n };\n source.onclose = () => {\n if (generation !== this.generation || this.source !== source) return;\n this.source = null;\n this.scheduleReconnect(generation);\n };\n } catch (error) {\n if (generation === this.generation) this.scheduleReconnect(generation);\n }\n }\n\n scheduleReconnect(generation) {\n window.clearTimeout(this.reconnectTimer);\n const delay = Math.min(30000, 1000 * (2 ** Math.min(this.reconnectAttempt, 5)));\n this.reconnectAttempt += 1;\n this.reconnectTimer = window.setTimeout(() => this.open(generation), delay);\n }\n}\n\nexport const realtimeNotifications = new RealtimeNotificationClient();\n","import { defineStore } from 'pinia';\r\nimport { imClient } from '@/services/imClient';\r\nimport { useConversationStore } from '@/stores/conversations';\r\nimport { useNavigationStore } from '@/stores/navigation';\r\nimport { useSessionStore } from '@/stores/session';\r\n\r\nconst CONTACT_CACHE_MS = 15000;\r\n\r\nfunction normalizeContacts(contacts) {\r\n const unique = new Map();\r\n contacts.forEach(contact => {\r\n const uid = String(contact.uid || contact.id || '').trim();\r\n if (!uid) {\r\n return;\r\n }\r\n const normalized = {\r\n ...contact,\r\n id: String(contact.id || uid),\r\n uid\r\n };\r\n unique.set(uid, {\r\n ...(unique.get(uid) || {}),\r\n ...normalized\r\n });\r\n });\r\n return Array.from(unique.values()).sort((a, b) => a.title.localeCompare(b.title, 'zh-CN'));\r\n}\r\n\r\nexport const useContactStore = defineStore('contacts', {\r\n state: () => ({\r\n contacts: [],\r\n activeId: '',\r\n loading: false,\r\n eventsBound: false,\r\n refreshSerial: 0,\r\n refreshPromise: null,\r\n loadedForUserId: '',\r\n loadedAt: 0,\r\n actionError: '',\r\n actionInfo: ''\r\n }),\r\n getters: {\r\n activeContact(state) {\r\n return state.contacts.find(item => item.id === state.activeId) || state.contacts[0] || null;\r\n }\r\n },\r\n actions: {\r\n bindImEvents() {\r\n if (this.eventsBound) {\r\n return;\r\n }\r\n this.eventsBound = true;\r\n imClient.on('contactsChanged', contacts => {\r\n if (!contacts.length && this.contacts.length) {\r\n return;\r\n }\r\n this.contacts = normalizeContacts(contacts);\r\n if (!this.contacts.find(item => item.id === this.activeId)) {\r\n this.activeId = this.contacts[0]?.id || '';\r\n }\r\n });\r\n },\r\n async refreshContacts(options = {}) {\r\n this.bindImEvents();\r\n const session = useSessionStore();\r\n const requestUserId = session.userId;\r\n const force = Boolean(options.force);\r\n if (!requestUserId) {\r\n this.clearContacts();\r\n return [];\r\n }\r\n if (!force\r\n && this.contacts.length\r\n && this.loadedForUserId === requestUserId\r\n && Date.now() - this.loadedAt < CONTACT_CACHE_MS\r\n ) {\r\n return this.contacts;\r\n }\r\n if (this.refreshPromise && !force) {\r\n return this.refreshPromise;\r\n }\r\n const serial = this.refreshSerial + 1;\r\n this.refreshSerial = serial;\r\n this.loading = true;\r\n\r\n this.refreshPromise = (async () => {\r\n this.contacts = normalizeContacts(imClient.refreshContactList());\r\n if (!this.contacts.find(item => item.id === this.activeId)) {\r\n this.activeId = this.contacts[0]?.id || '';\r\n }\r\n if (!this.contacts.length || force) {\r\n const serverContacts = await imClient.getServerContactList(requestUserId);\r\n if (serial !== this.refreshSerial || useSessionStore().userId !== requestUserId) {\r\n return this.contacts;\r\n }\r\n this.contacts = normalizeContacts(serverContacts);\r\n this.loadedForUserId = requestUserId;\r\n this.loadedAt = Date.now();\r\n if (!this.contacts.find(item => item.id === this.activeId)) {\r\n this.activeId = this.contacts[0]?.id || '';\r\n }\r\n }\r\n window.setTimeout(() => {\r\n if (serial !== this.refreshSerial || useSessionStore().userId !== requestUserId) {\r\n return;\r\n }\r\n const latest = imClient.getContactList(false);\r\n if (latest.length || !this.contacts.length) {\r\n this.contacts = normalizeContacts(latest);\r\n this.loadedForUserId = requestUserId;\r\n this.loadedAt = Date.now();\r\n if (!this.contacts.find(item => item.id === this.activeId)) {\r\n this.activeId = this.contacts[0]?.id || '';\r\n }\r\n }\r\n }, 1200);\r\n return this.contacts;\r\n })();\r\n\r\n try {\r\n return await this.refreshPromise;\r\n } finally {\r\n if (serial === this.refreshSerial) {\r\n this.loading = false;\r\n this.refreshPromise = null;\r\n }\r\n }\r\n },\r\n async addContact(keyword) {\r\n const session = useSessionStore();\r\n const value = String(keyword || '').trim();\r\n this.actionError = '';\r\n this.actionInfo = '';\r\n if (!session.userId) {\r\n this.actionError = '请先登录';\r\n return false;\r\n }\r\n if (!value) {\r\n this.actionError = '请输入用户ID、手机号或用户名';\r\n return false;\r\n }\r\n\r\n this.loading = true;\r\n try {\r\n const contact = await imClient.addContact(session.userId, value, '添加联系人');\r\n if (contact) {\r\n this.contacts = normalizeContacts([...this.contacts, contact]);\r\n this.activeId = contact.id;\r\n }\r\n this.actionInfo = '联系人已添加';\r\n await this.refreshContacts({ force: true });\r\n return true;\r\n } catch (error) {\r\n this.actionError = error.message || '添加联系人失败';\r\n return false;\r\n } finally {\r\n this.loading = false;\r\n }\r\n },\r\n async updateContactAlias(contactId, alias) {\r\n const session = useSessionStore();\r\n const targetId = String(contactId || '').trim();\r\n const nextAlias = String(alias || '').trim();\r\n this.actionError = '';\r\n this.actionInfo = '';\r\n if (!session.userId) {\r\n this.actionError = '请先登录';\r\n return false;\r\n }\r\n if (!targetId) {\r\n this.actionError = '缺少联系人ID';\r\n return false;\r\n }\r\n\r\n try {\r\n const savedAlias = await imClient.updateContactAlias(session.userId, targetId, nextAlias);\r\n this.contacts = normalizeContacts(this.contacts.map(item => {\r\n if (item.uid !== targetId && item.id !== targetId) {\r\n return item;\r\n }\r\n const rawUser = {\r\n ...(item.rawUser || {}),\r\n friendAlias: savedAlias\r\n };\r\n const rawFriend = {\r\n ...(item.rawFriend || {}),\r\n alias: savedAlias\r\n };\r\n const title = savedAlias || rawUser.displayName || rawUser.name || item.uid;\r\n return {\r\n ...item,\r\n title,\r\n avatarText: title.slice(0, 1).toUpperCase(),\r\n alias: savedAlias,\r\n rawFriend,\r\n rawUser\r\n };\r\n }));\r\n this.loadedAt = Date.now();\r\n this.actionInfo = '备注名已修改';\r\n return true;\r\n } catch (error) {\r\n this.actionError = error.message || '备注名修改失败';\r\n return false;\r\n }\r\n },\r\n clearContacts() {\r\n this.refreshSerial += 1;\r\n this.contacts = [];\r\n this.activeId = '';\r\n this.loading = false;\r\n this.refreshPromise = null;\r\n this.loadedForUserId = '';\r\n this.loadedAt = 0;\r\n this.actionError = '';\r\n this.actionInfo = '';\r\n },\r\n setActiveContact(id) {\r\n this.activeId = id;\r\n },\r\n openChat(contact) {\r\n if (!contact) {\r\n return;\r\n }\r\n const conversations = useConversationStore();\r\n const navigation = useNavigationStore();\r\n const conversation = imClient.createSingleConversation(contact.uid, contact);\r\n conversations.upsertConversation(conversation);\r\n conversations.setActiveConversation(conversation.id);\r\n navigation.showMessages();\r\n }\r\n }\r\n});\r\n","import { defineStore } from 'pinia';\r\nimport { imClient } from '@/services/imClient';\r\nimport { appConfig } from '@/config';\nimport { useSessionStore } from '@/stores/session';\nimport { realtimeNotifications } from '@/services/realtimeNotifications';\n\r\nconst LOCAL_CONVERSATION_STORAGE_KEY = 'qmt-web-im-local-conversations-v2';\r\nconst LOCAL_FAVORITE_MESSAGES_KEY = 'qmt-web-im-favorite-messages-v1';\r\n\r\nfunction scopedStorageKey(baseKey) {\r\n const session = useSessionStore();\r\n const scope = `${appConfig.appServer || ''}:${session.userId || 'anonymous'}`;\r\n return `${baseKey}:${encodeURIComponent(scope)}`;\r\n}\r\n\r\nfunction readFavoriteMessages() {\r\n try {\r\n return JSON.parse(localStorage.getItem(scopedStorageKey(LOCAL_FAVORITE_MESSAGES_KEY)) || '[]');\r\n } catch (error) {\r\n return [];\r\n }\r\n}\r\n\r\nfunction writeFavoriteMessages(messages) {\r\n localStorage.setItem(scopedStorageKey(LOCAL_FAVORITE_MESSAGES_KEY), JSON.stringify(messages));\r\n}\r\n\r\nfunction readLocalConversations() {\r\n try {\r\n return JSON.parse(localStorage.getItem(scopedStorageKey(LOCAL_CONVERSATION_STORAGE_KEY)) || '[]');\r\n } catch (error) {\r\n return [];\r\n }\r\n}\r\n\r\nfunction writeLocalConversations(conversations) {\r\n localStorage.setItem(scopedStorageKey(LOCAL_CONVERSATION_STORAGE_KEY), JSON.stringify(conversations));\r\n}\r\n\r\nfunction randomId() {\r\n if (window.crypto && window.crypto.randomUUID) {\r\n return window.crypto.randomUUID().replaceAll('-', '');\r\n }\r\n return `${Date.now()}${Math.random().toString(16).slice(2)}`;\r\n}\r\n\r\nfunction messageKey(message) {\r\n return message.id || message.messageUid;\r\n}\r\n\r\nfunction messageStableKey(message) {\r\n return String(message?.messageUid || message?.id || '');\r\n}\r\n\r\nfunction messageActivityTimestamp(message) {\r\n return Number(message?.activityTimestamp || message?.editedAt || message?.displayTimestamp || message?.timestamp || 0);\r\n}\r\n\r\nfunction isRecalledMessage(message) {\r\n return Boolean(message?.recalled) || message?.status === 'recalled';\r\n}\r\n\r\nfunction attachmentLabel(message) {\r\n const attachment = message?.attachment;\r\n if (!attachment) {\r\n return '';\r\n }\r\n if (attachment.type === 'image') {\r\n return '[图片]';\r\n }\r\n return `[文件] ${attachment.name || '文件'}`;\r\n}\r\n\r\nfunction messagePreviewText(message) {\r\n if (isRecalledMessage(message)) {\r\n return `[${message?.recallStatus || '已撤回'}]`;\r\n }\r\n const text = String(message?.text || '').replace(/\\s+/g, ' ').trim();\r\n return text || attachmentLabel(message);\r\n}\r\n\r\nfunction quotePrefix(message) {\r\n const text = messagePreviewText(message);\r\n return text.length > 48 ? `${text.slice(0, 48)}...` : text;\r\n}\r\n\r\nasync function writeClipboard(text) {\r\n if (navigator.clipboard?.writeText) {\r\n await navigator.clipboard.writeText(text);\r\n return;\r\n }\r\n const element = document.createElement('textarea');\r\n element.value = text;\r\n element.setAttribute('readonly', 'readonly');\r\n element.style.position = 'fixed';\r\n element.style.left = '-9999px';\r\n document.body.appendChild(element);\r\n element.select();\r\n document.execCommand('copy');\r\n document.body.removeChild(element);\r\n}\r\n\r\nfunction isSameMessage(left, right) {\r\n if (left.messageUid && right.messageUid && left.messageUid === right.messageUid) {\r\n return true;\r\n }\r\n if (left.id && right.id && left.id === right.id) {\r\n return true;\r\n }\r\n return left.direction === right.direction\r\n && left.text === right.text\r\n && (left.type || 'text') === (right.type || 'text')\r\n && Math.abs(Number(left.displayTimestamp || left.timestamp || 0) - Number(right.displayTimestamp || right.timestamp || 0)) < 15000;\r\n}\r\n\r\nfunction hasExactMessage(messages, message) {\r\n return messages.some(item => {\r\n if (item.id && message.id && item.id === message.id) {\r\n return true;\r\n }\r\n return item.messageUid && message.messageUid && item.messageUid === message.messageUid;\r\n });\r\n}\r\n\r\nfunction shouldUseMessagePolling() {\r\n return imClient.shouldUseMessagePolling ? imClient.shouldUseMessagePolling() : true;\r\n}\r\n\r\nfunction canMarkReadNow(options = {}) {\n if (typeof document === 'undefined') {\r\n return false;\r\n }\r\n if (document.visibilityState !== 'visible') {\r\n return false;\r\n }\r\n if (options.userAction) {\r\n return true;\r\n }\r\n return true;\n}\n\nfunction normalizeMessageForDisplay(message) {\n if (!message || message.attachment || String(message.text || '').trim()) {\n return message;\n }\n const contentType = Number(message.contentType || 0);\n const labels = {\n 3: '[图片加载失败]',\n 90: '[红包]',\n 105: '[领取了红包]'\n };\n if (!labels[contentType]) {\n return message;\n }\n return {\n ...message,\n type: 'text',\n text: labels[contentType]\n };\n}\n\nfunction mergeVisibleMessages(currentMessages, syncedMessages) {\n const merged = [...syncedMessages].map(normalizeMessageForDisplay);\n currentMessages.forEach(currentMessage => {\n currentMessage = normalizeMessageForDisplay(currentMessage);\n const exists = merged.some(message => isSameMessage(message, currentMessage));\r\n const shouldKeepLocal = currentMessage.status === 'sending'\r\n || currentMessage.status === 'failed'\r\n || (currentMessage.direction === 'out'\r\n && currentMessage.status === 'sent'\r\n && Date.now() - Number(currentMessage.timestamp || 0) < 30000);\r\n if (!exists && shouldKeepLocal) {\r\n merged.push(currentMessage);\r\n }\r\n });\r\n\r\n return merged\r\n .filter((message, index, messages) => {\r\n const key = messageKey(message);\r\n return messages.findIndex(item => messageKey(item) === key) === index;\r\n })\r\n .sort((a, b) => Number(a.displayTimestamp || a.timestamp || 0) - Number(b.displayTimestamp || b.timestamp || 0));\r\n}\r\n\r\nfunction incomingEditedMessages(previousMessages, nextMessages) {\r\n const previousByKey = new Map();\r\n (previousMessages || []).forEach(message => {\r\n const key = messageStableKey(message);\r\n if (key) {\r\n previousByKey.set(key, message);\r\n }\r\n });\r\n\r\n return (nextMessages || []).filter(message => {\r\n if (message.direction !== 'in') {\r\n return false;\r\n }\r\n const editedAt = Number(message.editedAt || 0);\r\n if (editedAt <= 0) {\r\n return false;\r\n }\r\n const previous = previousByKey.get(messageStableKey(message));\r\n return previous && editedAt > Number(previous.editedAt || 0);\r\n });\r\n}\r\n\r\nlet notificationAudioContext = null;\r\n\r\nfunction playNotificationSound() {\r\n if (typeof window === 'undefined') {\r\n return;\r\n }\r\n try {\r\n const AudioContext = window.AudioContext || window.webkitAudioContext;\r\n if (!AudioContext) {\r\n return;\r\n }\r\n notificationAudioContext = notificationAudioContext || new AudioContext();\r\n if (notificationAudioContext.state === 'suspended') {\r\n notificationAudioContext.resume().catch(() => {});\r\n }\r\n const oscillator = notificationAudioContext.createOscillator();\r\n const gain = notificationAudioContext.createGain();\r\n const startAt = notificationAudioContext.currentTime;\r\n oscillator.type = 'sine';\r\n oscillator.frequency.setValueAtTime(880, startAt);\r\n oscillator.frequency.setValueAtTime(660, startAt + 0.1);\r\n gain.gain.setValueAtTime(0.0001, startAt);\r\n gain.gain.exponentialRampToValueAtTime(0.12, startAt + 0.02);\r\n gain.gain.exponentialRampToValueAtTime(0.0001, startAt + 0.22);\r\n oscillator.connect(gain);\r\n gain.connect(notificationAudioContext.destination);\r\n oscillator.start(startAt);\r\n oscillator.stop(startAt + 0.24);\r\n } catch (error) {\r\n // Notification sound is best-effort; browsers may block audio until user interaction.\r\n }\r\n}\r\n\r\nexport const useConversationStore = defineStore('conversations', {\r\n state: () => ({\r\n activeId: '',\r\n conversations: [],\r\n messagesByConversation: {},\r\n visibleMessagesByConversation: {},\r\n eventsBound: false,\r\n usingDemoData: false,\r\n loading: false,\r\n syncTimer: null,\r\n conversationSyncTimer: null,\r\n readPresenceEventsBound: false,\r\n syncInFlight: false,\r\n pendingReadReceiptConversationId: '',\r\n conversationSyncInFlight: false,\r\n syncAfterSendTimer: null,\r\n optimisticMessagesByConversation: {},\r\n quotedMessage: null,\r\n forwardingMessages: [],\r\n editingMessage: null,\r\n editingText: '',\r\n editingMode: '',\r\n messageDetailOpen: false,\r\n messageDetailLoading: false,\r\n messageDetailError: '',\r\n messageDetail: null,\r\n attentionMessageId: '',\r\n attentionMessageTimer: null,\r\n selectionMode: false,\r\n selectedMessageIds: [],\r\n favoriteMessages: [],\r\n activeFavoriteKey: '',\r\n actionNotice: '',\n actionError: '',\n realtimeSyncTimer: null\n }),\r\n getters: {\r\n activeConversation(state) {\r\n return state.conversations.find(item => item.id === state.activeId) || state.conversations[0] || null;\r\n },\r\n activeMessages(state) {\r\n return state.visibleMessagesByConversation[state.activeId] || [];\r\n },\r\n totalUnread(state) {\r\n return state.conversations.reduce((sum, item) => sum + Number(item.unread || 0), 0);\r\n },\r\n canSendActiveConversation(state) {\r\n const conversation = state.conversations.find(item => item.id === state.activeId) || state.conversations[0] || null;\r\n if (!conversation) {\r\n return false;\r\n }\r\n if (conversation.type !== 'channel') {\r\n return true;\r\n }\r\n return ['owner', 'admin'].includes(conversation.role || conversation.raw?.role || '');\r\n },\r\n favoriteMessageIds(state) {\r\n return state.favoriteMessages.map(message => message.key);\r\n },\r\n activeFavorite(state) {\r\n return state.favoriteMessages.find(message => message.key === state.activeFavoriteKey)\r\n || state.favoriteMessages[0]\r\n || null;\r\n },\r\n selectedMessages(state) {\r\n const selectedIds = new Set(state.selectedMessageIds);\r\n return (state.visibleMessagesByConversation[state.activeId] || [])\r\n .filter(message => selectedIds.has(messageStableKey(message)));\r\n }\r\n },\r\n actions: {\r\n bootstrapDemoData() {\n const session = useSessionStore();\n this.bindImEvents();\n this.usingDemoData = false;\n if (!session.userId) {\n this.clearUserState();\n return;\n }\n this.loadScopedLocalState();\n this.startMessageSync();\n realtimeNotifications.start(session.userId, payload => this.handleRealtimeNotification(payload));\n },\n loadScopedLocalState() {\n this.conversations = [];\n this.favoriteMessages = readFavoriteMessages();\n this.activeFavoriteKey = this.favoriteMessages[0]?.key || '';\n this.activeId = '';\n this.messagesByConversation = {};\n this.visibleMessagesByConversation = {};\n this.optimisticMessagesByConversation = {};\n this.quotedMessage = null;\r\n this.forwardingMessages = [];\r\n this.editingMessage = null;\r\n this.editingText = '';\r\n this.editingMode = '';\r\n this.messageDetailOpen = false;\r\n this.messageDetailLoading = false;\r\n this.messageDetailError = '';\r\n this.messageDetail = null;\n this.selectionMode = false;\n this.selectedMessageIds = [];\n },\n clearUserState() {\r\n window.clearInterval(this.syncTimer);\r\n window.clearInterval(this.conversationSyncTimer);\r\n window.clearTimeout(this.syncAfterSendTimer);\n window.clearTimeout(this.attentionMessageTimer);\n window.clearTimeout(this.realtimeSyncTimer);\n realtimeNotifications.stop();\n this.syncTimer = null;\r\n this.conversationSyncTimer = null;\r\n this.syncAfterSendTimer = null;\r\n this.attentionMessageTimer = null;\n this.realtimeSyncTimer = null;\n this.syncInFlight = false;\r\n this.conversationSyncInFlight = false;\r\n this.pendingReadReceiptConversationId = '';\r\n this.activeId = '';\r\n this.conversations = [];\r\n this.messagesByConversation = {};\r\n this.visibleMessagesByConversation = {};\r\n this.optimisticMessagesByConversation = {};\r\n this.quotedMessage = null;\r\n this.forwardingMessages = [];\r\n this.editingMessage = null;\r\n this.editingText = '';\r\n this.editingMode = '';\r\n this.messageDetailOpen = false;\r\n this.messageDetailLoading = false;\r\n this.messageDetailError = '';\r\n this.messageDetail = null;\r\n this.attentionMessageId = '';\r\n this.selectionMode = false;\r\n this.selectedMessageIds = [];\r\n this.favoriteMessages = [];\r\n this.activeFavoriteKey = '';\r\n this.actionNotice = '';\r\n this.actionError = '';\r\n },\r\n bindImEvents() {\r\n if (this.eventsBound) {\r\n return;\r\n }\r\n this.eventsBound = true;\r\n imClient.on('messageSent', message => {\r\n this.appendMessage(message.conversationId, message);\r\n });\r\n imClient.on('messageReceived', message => {\n this.appendMessage(message.conversationId, message);\n if (message.conversationId === this.activeId) {\n this.scheduleActiveMessagesSync({ allowReadReceipt: true }, 500);\n }\r\n });\r\n imClient.on('messageStatusChanged', message => {\r\n this.replaceMessage(message.conversationId, message);\r\n });\r\n imClient.on('conversationsChanged', remoteConversations => {\r\n this.usingDemoData = false;\r\n this.applyRemoteConversations(remoteConversations);\r\n });\r\n },\r\n setActiveConversation(id) {\r\n this.activeId = id;\r\n const conversation = this.conversations.find(item => item.id === id);\r\n if (conversation) {\r\n conversation.unread = 0;\r\n }\r\n this.loadActiveMessages({ allowReadReceipt: true, userAction: true });\r\n },\r\n sendText(text) {\r\n const conversation = this.activeConversation;\r\n if (!conversation || !text.trim()) {\r\n return;\r\n }\r\n let value = text.trim();\r\n if (this.quotedMessage) {\r\n value = `引用:${quotePrefix(this.quotedMessage)}\\n${value}`;\r\n this.quotedMessage = null;\r\n }\r\n const message = {\r\n id: randomId(),\r\n conversationId: conversation.id,\r\n from: 'me',\r\n direction: 'out',\r\n type: 'text',\r\n text: value,\r\n status: 'sending',\r\n deliveryStatus: 'sending',\r\n timestamp: Date.now(),\r\n displayTimestamp: Date.now()\r\n };\r\n this.appendVisibleMessage(conversation.id, message);\r\n this.appendMessage(conversation.id, message);\r\n imClient.sendTextMessage(conversation, value, message);\r\n conversation.subtitle = value;\r\n conversation.updatedAt = Date.now();\r\n writeLocalConversations(this.conversations);\r\n window.clearTimeout(this.syncAfterSendTimer);\r\n this.syncAfterSendTimer = window.setTimeout(() => this.syncActiveMessages(), 250);\r\n },\r\n sendAttachment({ type, file, text = '' }) {\r\n const conversation = this.activeConversation;\r\n if (!conversation || !file || !['image', 'file'].includes(type)) {\r\n return;\r\n }\r\n let value = text.trim();\r\n if (this.quotedMessage) {\r\n value = `引用:${quotePrefix(this.quotedMessage)}\\n${value}`.trim();\r\n this.quotedMessage = null;\r\n }\r\n const now = Date.now();\r\n const message = {\r\n id: randomId(),\r\n conversationId: conversation.id,\r\n from: 'me',\r\n senderRole: conversation.role || conversation.raw?.role || '',\r\n direction: 'out',\r\n type,\r\n text: value,\r\n attachment: {\r\n type,\r\n name: file.name || (type === 'image' ? '图片' : '文件'),\r\n mime: file.type || '',\r\n size: file.size || 0,\r\n url: type === 'image' ? URL.createObjectURL(file) : ''\r\n },\r\n status: 'sending',\r\n deliveryStatus: 'sending',\r\n timestamp: now,\r\n displayTimestamp: now\r\n };\r\n this.appendVisibleMessage(conversation.id, message);\r\n this.appendMessage(conversation.id, message);\r\n imClient.sendAttachmentMessage(conversation, { type, file, text: value }, message);\r\n conversation.subtitle = messagePreviewText(message);\r\n conversation.updatedAt = now;\r\n writeLocalConversations(this.conversations);\r\n window.clearTimeout(this.syncAfterSendTimer);\r\n this.syncAfterSendTimer = window.setTimeout(() => this.syncActiveMessages(), 350);\r\n },\r\n async sendTextToConversation(conversation, text) {\r\n if (!conversation || !text.trim()) {\r\n return null;\r\n }\r\n const value = text.trim();\r\n const message = {\r\n id: randomId(),\r\n conversationId: conversation.id,\r\n from: 'me',\r\n direction: 'out',\r\n type: 'text',\r\n text: value,\r\n status: 'sending',\r\n deliveryStatus: 'sending',\r\n timestamp: Date.now(),\r\n displayTimestamp: Date.now()\r\n };\r\n this.appendMessage(conversation.id, message);\r\n const sentMessage = await imClient.sendTextMessage(conversation, value, message);\r\n this.replaceMessage(conversation.id, sentMessage);\r\n return sentMessage;\r\n },\r\n upsertConversation(conversation) {\r\n const index = this.conversations.findIndex(item => item.id === conversation.id);\r\n if (index >= 0) {\r\n this.conversations.splice(index, 1, {\r\n ...this.conversations[index],\r\n ...conversation\r\n });\r\n } else {\r\n this.conversations.unshift(conversation);\r\n }\r\n this.usingDemoData = false;\r\n writeLocalConversations(this.conversations);\r\n },\r\n removeConversation(conversationId) {\r\n this.conversations = this.conversations.filter(conversation => conversation.id !== conversationId);\r\n const {\r\n [conversationId]: removedMessages,\r\n ...messagesByConversation\r\n } = this.messagesByConversation;\r\n const {\r\n [conversationId]: removedVisibleMessages,\r\n ...visibleMessagesByConversation\r\n } = this.visibleMessagesByConversation;\r\n const {\r\n [conversationId]: removedOptimisticMessages,\r\n ...optimisticMessagesByConversation\r\n } = this.optimisticMessagesByConversation;\r\n void removedMessages;\r\n void removedVisibleMessages;\r\n void removedOptimisticMessages;\r\n this.messagesByConversation = messagesByConversation;\r\n this.visibleMessagesByConversation = visibleMessagesByConversation;\r\n this.optimisticMessagesByConversation = optimisticMessagesByConversation;\r\n if (this.activeId === conversationId) {\r\n this.activeId = this.conversations[0]?.id || '';\r\n }\r\n writeLocalConversations(this.conversations);\r\n if (this.activeId) {\r\n this.loadActiveMessages();\r\n }\r\n },\r\n applyRemoteConversations(remoteConversations) {\r\n const remote = Array.isArray(remoteConversations) ? remoteConversations : [];\r\n if (!remote.length && this.conversations.length) {\r\n return;\r\n }\r\n\r\n const merged = new Map();\r\n this.conversations.forEach(conversation => {\r\n merged.set(conversation.id, conversation);\r\n });\r\n remote.forEach(conversation => {\r\n const unread = conversation.id === this.activeId && canMarkReadNow() ? 0 : Number(conversation.unread || 0);\r\n merged.set(conversation.id, {\r\n ...(merged.get(conversation.id) || {}),\r\n ...conversation,\r\n unread\r\n });\r\n });\r\n\r\n this.conversations = Array.from(merged.values())\r\n .sort((a, b) => Number(b.updatedAt || 0) - Number(a.updatedAt || 0))\r\n .slice(0, 100);\r\n\r\n if (!this.conversations.length) {\r\n this.activeId = '';\r\n this.messagesByConversation = {};\r\n this.visibleMessagesByConversation = {};\r\n this.optimisticMessagesByConversation = {};\r\n writeLocalConversations(this.conversations);\r\n return;\r\n }\r\n\r\n if (!this.conversations.find(item => item.id === this.activeId)) {\r\n this.activeId = this.conversations[0].id;\r\n }\r\n writeLocalConversations(this.conversations);\r\n this.loadActiveMessages();\r\n },\r\n appendMessage(conversationId, message) {\r\n if (!this.messagesByConversation[conversationId]) {\r\n this.messagesByConversation = {\r\n ...this.messagesByConversation,\r\n [conversationId]: []\r\n };\r\n }\r\n if (message.direction === 'out' && (message.status === 'sending' || message.status === 'sent')) {\r\n this.keepOptimisticMessage(conversationId, message);\r\n }\r\n if (!hasExactMessage(this.messagesByConversation[conversationId], message)) {\r\n this.messagesByConversation = {\r\n ...this.messagesByConversation,\r\n [conversationId]: [...this.messagesByConversation[conversationId], message]\r\n };\r\n }\r\n this.updateConversationFromMessage(conversationId, message);\r\n this.syncVisibleMessages(conversationId);\r\n writeLocalConversations(this.conversations);\r\n },\r\n removeMessages(conversationId, messages) {\r\n const ids = new Set(messages.flatMap(message => [message.id, message.messageUid].filter(Boolean).map(String)));\r\n const filterMessages = list => (list || []).filter(message => {\r\n return ![message.id, message.messageUid].filter(Boolean).some(id => ids.has(String(id)));\r\n });\r\n this.messagesByConversation = {\r\n ...this.messagesByConversation,\r\n [conversationId]: filterMessages(this.messagesByConversation[conversationId])\r\n };\r\n this.visibleMessagesByConversation = {\r\n ...this.visibleMessagesByConversation,\r\n [conversationId]: filterMessages(this.visibleMessagesByConversation[conversationId])\r\n };\r\n this.optimisticMessagesByConversation = {\r\n ...this.optimisticMessagesByConversation,\r\n [conversationId]: filterMessages(this.optimisticMessagesByConversation[conversationId])\r\n };\r\n this.selectedMessageIds = this.selectedMessageIds.filter(id => !ids.has(String(id)));\r\n },\r\n replaceLocalMessage(conversationId, targetMessage, nextMessage) {\r\n const keys = new Set([targetMessage.id, targetMessage.messageUid].filter(Boolean).map(String));\r\n const replaceInList = list => (list || []).map(message => {\r\n const matched = [message.id, message.messageUid].filter(Boolean).some(id => keys.has(String(id)));\r\n return matched ? { ...message, ...nextMessage } : message;\r\n });\r\n this.messagesByConversation = {\r\n ...this.messagesByConversation,\r\n [conversationId]: replaceInList(this.messagesByConversation[conversationId])\r\n };\r\n this.visibleMessagesByConversation = {\r\n ...this.visibleMessagesByConversation,\r\n [conversationId]: replaceInList(this.visibleMessagesByConversation[conversationId])\r\n };\r\n },\r\n updateConversationFromMessage(conversationId, message) {\r\n const conversation = this.conversations.find(item => item.id === conversationId);\r\n if (!conversation) {\r\n return;\r\n }\r\n\r\n conversation.subtitle = message.text || conversation.subtitle || '';\r\n conversation.updatedAt = messageActivityTimestamp(message) || Date.now();\r\n if (message.direction === 'in') {\r\n conversation.unread = conversationId === this.activeId ? 0 : Number(conversation.unread || 0) + 1;\r\n }\r\n this.conversations = [...this.conversations]\r\n .sort((a, b) => Number(b.updatedAt || 0) - Number(a.updatedAt || 0));\r\n },\r\n appendVisibleMessage(conversationId, message) {\r\n const messages = this.visibleMessagesByConversation[conversationId] || [];\r\n this.visibleMessagesByConversation = {\r\n ...this.visibleMessagesByConversation,\r\n [conversationId]: [...messages.filter(item => item.id !== message.id), message]\r\n .sort((a, b) => Number(a.displayTimestamp || a.timestamp || 0) - Number(b.displayTimestamp || b.timestamp || 0))\r\n };\r\n },\r\n replaceMessage(conversationId, message) {\r\n if (!this.messagesByConversation[conversationId]) {\r\n this.messagesByConversation = {\r\n ...this.messagesByConversation,\r\n [conversationId]: []\r\n };\r\n }\r\n if (message.direction === 'out' && (message.status === 'sending' || message.status === 'sent' || message.status === 'failed')) {\r\n this.keepOptimisticMessage(conversationId, message);\r\n }\r\n const index = this.messagesByConversation[conversationId].findIndex(item => item.id === message.id);\r\n if (index >= 0) {\r\n const messages = [...this.messagesByConversation[conversationId]];\r\n messages.splice(index, 1, message);\r\n this.messagesByConversation = {\r\n ...this.messagesByConversation,\r\n [conversationId]: messages\r\n };\r\n } else {\r\n this.messagesByConversation = {\r\n ...this.messagesByConversation,\r\n [conversationId]: [...this.messagesByConversation[conversationId], message]\r\n };\r\n }\r\n this.syncVisibleMessages(conversationId);\r\n },\r\n syncVisibleMessages(conversationId) {\r\n this.visibleMessagesByConversation = {\r\n ...this.visibleMessagesByConversation,\r\n [conversationId]: mergeVisibleMessages(\r\n this.optimisticMessagesByConversation[conversationId] || [],\r\n this.messagesByConversation[conversationId] || []\r\n )\r\n };\r\n },\r\n keepOptimisticMessage(conversationId, message) {\r\n if (!this.optimisticMessagesByConversation[conversationId]) {\r\n this.optimisticMessagesByConversation = {\r\n ...this.optimisticMessagesByConversation,\r\n [conversationId]: []\r\n };\r\n }\r\n const messages = this.optimisticMessagesByConversation[conversationId];\r\n const index = messages.findIndex(item => item.id === message.id);\r\n let nextMessages;\r\n if (index >= 0) {\r\n nextMessages = [...messages];\r\n nextMessages.splice(index, 1, message);\r\n } else {\r\n nextMessages = [...messages, message];\r\n }\r\n this.optimisticMessagesByConversation = {\r\n ...this.optimisticMessagesByConversation,\r\n [conversationId]: nextMessages\r\n };\r\n },\r\n pruneOptimisticMessages(conversationId, syncedMessages) {\r\n const messages = this.optimisticMessagesByConversation[conversationId] || [];\r\n if (!messages.length) {\r\n return;\r\n }\r\n this.optimisticMessagesByConversation = {\r\n ...this.optimisticMessagesByConversation,\r\n [conversationId]: messages.filter(message => {\r\n const remoteMatched = syncedMessages.some(syncedMessage => {\r\n return syncedMessage.id !== message.id && isSameMessage(syncedMessage, message);\r\n });\r\n if (remoteMatched && message.status !== 'failed') {\r\n return false;\r\n }\r\n return Date.now() - Number(message.displayTimestamp || message.timestamp || 0) < 30000 || message.status === 'failed';\r\n })\r\n };\r\n },\r\n loadActiveMessages(options = {}) {\r\n const syncOptions = typeof options === 'boolean'\r\n ? { allowReadReceipt: options }\r\n : options;\r\n const conversation = this.activeConversation;\r\n if (!conversation) {\r\n return;\r\n }\r\n this.loading = true;\r\n const messages = imClient.getMessages(conversation, 30);\r\n this.pruneOptimisticMessages(conversation.id, messages);\r\n this.messagesByConversation = {\r\n ...this.messagesByConversation,\r\n [conversation.id]: mergeVisibleMessages(this.messagesByConversation[conversation.id] || [], messages)\r\n };\r\n this.syncVisibleMessages(conversation.id);\r\n this.loading = false;\r\n this.syncActiveMessages(syncOptions);\r\n },\r\n async syncActiveMessages(options = {}) {\r\n const conversation = this.activeConversation;\r\n if (!conversation) {\r\n return;\r\n }\r\n const wantsReadReceipt = Boolean(options.allowReadReceipt);\r\n const explicitReadReceipt = wantsReadReceipt && canMarkReadNow({ userAction: Boolean(options.userAction) });\r\n const pollingReadReceipt = canMarkReadNow();\r\n const markRead = explicitReadReceipt || pollingReadReceipt;\r\n\r\n if (this.syncInFlight) {\n if (wantsReadReceipt) {\r\n this.pendingReadReceiptConversationId = conversation.id;\r\n }\r\n return;\n }\r\n this.syncInFlight = true;\r\n const syncedConversationId = conversation.id;\r\n const previousMessages = this.messagesByConversation[syncedConversationId] || [];\r\n try {\r\n const messages = await imClient.fetchRemoteMessages(conversation, 50, {\n markRead,\n includeConversations: Boolean(options.includeConversations)\n });\n const editedIncomingMessages = incomingEditedMessages(previousMessages, messages);\r\n this.pruneOptimisticMessages(syncedConversationId, messages);\r\n this.messagesByConversation = {\r\n ...this.messagesByConversation,\r\n [syncedConversationId]: mergeVisibleMessages(this.messagesByConversation[syncedConversationId] || [], messages)\r\n };\r\n this.syncVisibleMessages(syncedConversationId);\r\n if (editedIncomingMessages.length && syncedConversationId === this.activeId) {\r\n this.focusMessage(editedIncomingMessages.sort((a, b) => messageActivityTimestamp(b) - messageActivityTimestamp(a))[0]);\r\n playNotificationSound();\r\n }\r\n const latest = messages.reduce((latestMessage, message) => {\r\n if (!latestMessage || messageActivityTimestamp(message) > messageActivityTimestamp(latestMessage)) {\r\n return message;\r\n }\r\n return latestMessage;\r\n }, null);\r\n if (latest) {\r\n conversation.subtitle = messagePreviewText(latest);\r\n conversation.updatedAt = messageActivityTimestamp(latest);\r\n writeLocalConversations(this.conversations);\r\n }\r\n } catch (error) {\r\n // Keep the local view usable if a polling request misses.\r\n } finally {\r\n this.syncInFlight = false;\r\n if (this.pendingReadReceiptConversationId === this.activeId && canMarkReadNow()) {\r\n this.pendingReadReceiptConversationId = '';\r\n window.setTimeout(() => this.syncActiveMessages({ allowReadReceipt: true }), 0);\r\n }\r\n }\n },\n scheduleActiveMessagesSync(options = {}, delay = 500) {\n if (!this.activeId || (typeof document !== 'undefined' && document.visibilityState !== 'visible')) {\n return;\n }\n window.clearTimeout(this.syncAfterSendTimer);\n this.syncAfterSendTimer = window.setTimeout(() => {\n this.syncAfterSendTimer = null;\n this.syncActiveMessages(options);\n }, Math.max(0, Number(delay) || 0));\n },\n startMessageSync() {\n this.bindReadPresenceEvents();\n if (!this.syncTimer) {\n this.syncTimer = window.setInterval(() => {\n if (document.visibilityState === 'visible' && !realtimeNotifications.isConnected()) {\n this.syncActiveMessages();\n }\n }, Math.max(250, appConfig.syncIntervalMs));\n }\n if (!this.conversationSyncTimer) {\n this.conversationSyncTimer = window.setInterval(() => {\n if (document.visibilityState === 'visible' && !realtimeNotifications.isConnected()) {\n this.refreshRemoteConversations();\n }\n }, Math.max(5000, appConfig.syncIntervalMs * 2));\n this.refreshRemoteConversations();\n }\n },\n handleRealtimeNotification() {\n window.clearTimeout(this.realtimeSyncTimer);\n this.realtimeSyncTimer = window.setTimeout(() => {\n this.refreshRemoteConversations();\n this.scheduleActiveMessagesSync({\n allowReadReceipt: canMarkReadNow(),\n includeConversations: true\n }, 300);\n }, 300);\n },\n bindReadPresenceEvents() {\r\n if (this.readPresenceEventsBound || typeof window === 'undefined' || typeof document === 'undefined') {\r\n return;\r\n }\r\n this.readPresenceEventsBound = true;\r\n const syncWhenReadable = () => {\n if (canMarkReadNow()) {\n this.refreshRemoteConversations();\n this.scheduleActiveMessagesSync({ allowReadReceipt: true }, 200);\n }\r\n };\r\n window.addEventListener('focus', syncWhenReadable);\r\n document.addEventListener('visibilitychange', syncWhenReadable);\r\n },\r\n async refreshRemoteConversations() {\r\n this.bindImEvents();\r\n this.usingDemoData = false;\r\n if (this.conversationSyncInFlight) {\r\n return;\r\n }\r\n this.conversationSyncInFlight = true;\r\n try {\r\n const remoteConversations = await imClient.fetchRemoteConversations(50);\r\n this.applyRemoteConversations(remoteConversations);\r\n } catch (error) {\r\n imClient.refreshConversationList();\r\n } finally {\r\n this.conversationSyncInFlight = false;\r\n }\r\n },\r\n setActionNotice(message) {\n this.actionNotice = message;\n this.actionError = '';\n },\n setActionError(message) {\n this.actionError = message;\n this.actionNotice = '';\n },\n focusMessage(message) {\r\n const key = messageStableKey(message);\r\n if (!key) {\r\n return;\r\n }\r\n this.attentionMessageId = key;\r\n window.clearTimeout(this.attentionMessageTimer);\r\n this.attentionMessageTimer = window.setTimeout(() => {\r\n if (this.attentionMessageId === key) {\r\n this.attentionMessageId = '';\r\n }\r\n }, 2800);\r\n },\r\n async handleMessageAction({ action, message }) {\r\n if (!message) {\r\n return;\r\n }\r\n if (action === 'copy') {\r\n await this.copyMessages([message]);\r\n } else if (action === 'edit') {\r\n this.startEditMessage(message);\r\n } else if (action === 'delete') {\r\n this.deleteMessages([message]);\r\n } else if (action === 'forward') {\r\n this.startForward([message]);\r\n } else if (action === 'favorite') {\r\n this.toggleFavorite(message);\r\n } else if (action === 'detail') {\r\n await this.openMessageDetail(message);\r\n } else if (action === 'quote') {\r\n this.quoteMessage(message);\r\n } else if (action === 'select') {\r\n this.enterSelectionMode(message);\r\n } else if (action === 'recall') {\r\n await this.recallMessage(message);\r\n }\r\n },\r\n async openMessageDetail(message) {\r\n const conversation = this.activeConversation;\r\n if (!conversation || !message) {\r\n return;\r\n }\r\n const key = messageStableKey(message);\r\n this.messageDetailOpen = true;\r\n this.messageDetailLoading = true;\r\n this.messageDetailError = '';\r\n this.messageDetail = {\r\n messageUid: key,\r\n conversationType: conversation.type || conversation.raw?.type || 'single',\r\n sentAt: Number(message.displayTimestamp || message.timestamp || 0),\r\n editedAt: Number(message.editedAt || 0),\r\n recalled: isRecalledMessage(message),\r\n localOnly: true,\r\n sender: {\r\n uid: message.from || '',\r\n name: message.senderName || message.from || ''\r\n }\r\n };\r\n try {\r\n if (!/^\\d+$/.test(key)) {\r\n this.messageDetailError = '本地临时消息暂无送达/已读详情';\r\n return;\r\n }\r\n const detail = await imClient.getMessageDetail(conversation, message);\r\n this.messageDetail = detail || this.messageDetail;\r\n } catch (error) {\r\n this.messageDetailError = error.message || '消息详情加载失败';\r\n } finally {\r\n this.messageDetailLoading = false;\r\n }\r\n },\r\n closeMessageDetail() {\r\n this.messageDetailOpen = false;\r\n this.messageDetailLoading = false;\r\n this.messageDetailError = '';\r\n this.messageDetail = null;\r\n },\r\n async copyMessages(messages) {\r\n const text = messages.map(message => message.text || '').join('\\n');\r\n if (!text.trim()) {\r\n return;\r\n }\r\n try {\r\n await writeClipboard(text);\r\n this.setActionNotice(messages.length > 1 ? '已复制所选消息' : '已复制');\r\n } catch (error) {\r\n this.setActionError('复制失败');\r\n }\r\n },\r\n deleteMessages(messages) {\r\n const conversation = this.activeConversation;\r\n if (!conversation || !messages.length) {\r\n return;\r\n }\r\n imClient.hideMessages(conversation, messages);\r\n this.removeMessages(conversation.id, messages);\r\n if (!this.selectedMessageIds.length) {\r\n this.selectionMode = false;\r\n }\r\n this.setActionNotice(messages.length > 1 ? '已删除所选消息' : '已删除');\r\n },\r\n toggleFavorite(message) {\r\n const key = messageStableKey(message);\r\n if (!key) {\r\n return;\r\n }\r\n const index = this.favoriteMessages.findIndex(item => item.key === key);\r\n if (index >= 0) {\r\n this.favoriteMessages.splice(index, 1);\r\n if (this.activeFavoriteKey === key) {\r\n this.activeFavoriteKey = this.favoriteMessages[0]?.key || '';\r\n }\r\n this.setActionNotice('已取消收藏');\r\n } else {\r\n const conversation = this.conversations.find(item => item.id === message.conversationId) || {};\r\n this.favoriteMessages.unshift({\r\n key,\r\n id: message.id,\r\n messageUid: message.messageUid,\r\n conversationId: message.conversationId,\r\n conversationTitle: conversation.title || message.conversationTitle || '',\r\n type: message.type || 'text',\r\n text: message.text || '',\r\n preview: messagePreviewText(message),\r\n senderName: message.senderName || message.from || '',\r\n timestamp: Number(message.displayTimestamp || message.timestamp || Date.now()),\r\n editedAt: Number(message.editedAt || 0),\r\n recalled: isRecalledMessage(message),\r\n recallStatus: message.recallStatus || (isRecalledMessage(message) ? '已撤回' : ''),\r\n attachment: message.attachment ? { ...message.attachment } : null\r\n });\r\n this.activeFavoriteKey = key;\r\n this.setActionNotice('已收藏');\r\n }\r\n this.favoriteMessages = this.favoriteMessages.slice(0, 200);\r\n writeFavoriteMessages(this.favoriteMessages);\r\n },\r\n setActiveFavorite(key) {\r\n this.activeFavoriteKey = String(key || '');\r\n },\r\n removeFavorite(key) {\r\n const value = String(key || '');\r\n if (!value) {\r\n return;\r\n }\r\n this.favoriteMessages = this.favoriteMessages.filter(message => message.key !== value);\r\n if (this.activeFavoriteKey === value) {\r\n this.activeFavoriteKey = this.favoriteMessages[0]?.key || '';\r\n }\r\n writeFavoriteMessages(this.favoriteMessages);\r\n },\r\n quoteMessage(message) {\r\n this.quotedMessage = {\r\n ...message,\r\n quoteText: quotePrefix(message)\r\n };\r\n this.setActionNotice('已引用,输入后发送');\r\n },\r\n cancelQuote() {\r\n this.quotedMessage = null;\r\n },\r\n enterSelectionMode(message = null) {\r\n this.selectionMode = true;\r\n if (message) {\r\n const key = messageStableKey(message);\r\n this.selectedMessageIds = key ? [key] : [];\r\n }\r\n },\r\n toggleSelectedMessage(message) {\r\n const key = messageStableKey(message);\r\n if (!key) {\r\n return;\r\n }\r\n const selected = new Set(this.selectedMessageIds);\r\n if (selected.has(key)) {\r\n selected.delete(key);\r\n } else {\r\n selected.add(key);\r\n }\r\n this.selectedMessageIds = Array.from(selected);\r\n this.selectionMode = this.selectedMessageIds.length > 0;\r\n },\r\n clearSelection() {\r\n this.selectionMode = false;\r\n this.selectedMessageIds = [];\r\n },\r\n copySelectedMessages() {\r\n return this.copyMessages(this.selectedMessages);\r\n },\r\n deleteSelectedMessages() {\r\n this.deleteMessages(this.selectedMessages);\r\n },\r\n startForward(messages) {\r\n this.forwardingMessages = messages.filter(message => message?.text);\r\n if (!this.forwardingMessages.length) {\r\n this.setActionError('没有可转发的消息');\r\n }\r\n },\r\n startForwardSelectedMessages() {\r\n this.startForward(this.selectedMessages);\r\n },\r\n cancelForward() {\r\n this.forwardingMessages = [];\r\n },\r\n startEditMessage(message) {\r\n const isResend = isRecalledMessage(message);\r\n if (!isResend && !message?.text) {\r\n this.setActionError('没有可编辑的文字内容');\r\n return;\r\n }\r\n this.editingMessage = message;\r\n this.editingText = message.text || '';\r\n this.editingMode = isResend ? 'resend' : 'edit';\r\n },\r\n cancelEditMessage() {\r\n this.editingMessage = null;\r\n this.editingText = '';\r\n this.editingMode = '';\r\n },\r\n async completeEditMessage() {\r\n const conversation = this.activeConversation;\r\n const message = this.editingMessage;\r\n const text = this.editingText.trim();\r\n const isResend = this.editingMode === 'resend' || isRecalledMessage(message);\r\n if (!conversation || !message) {\r\n this.cancelEditMessage();\r\n return;\r\n }\r\n if (!text) {\r\n this.setActionError('编辑内容不能为空');\r\n return;\r\n }\r\n if (!isResend && text === String(message.text || '').trim()) {\r\n this.cancelEditMessage();\r\n return;\r\n }\r\n try {\r\n if (isResend) {\r\n await this.sendTextToConversation(conversation, text);\r\n this.cancelEditMessage();\r\n this.setActionNotice('已重新发送');\r\n return;\r\n }\r\n const editedMessage = await imClient.editMessage(conversation, message, text);\r\n this.replaceLocalMessage(conversation.id, message, editedMessage);\r\n if (messageActivityTimestamp(editedMessage) >= Number(conversation.updatedAt || 0)) {\r\n conversation.subtitle = editedMessage.text;\r\n conversation.updatedAt = messageActivityTimestamp(editedMessage);\r\n writeLocalConversations(this.conversations);\r\n }\r\n this.cancelEditMessage();\r\n this.setActionNotice('已编辑');\r\n } catch (error) {\r\n this.setActionError(error.message || '编辑失败');\r\n }\r\n },\r\n async completeForward(targetConversationId) {\r\n const target = this.conversations.find(conversation => conversation.id === targetConversationId);\r\n if (!target || !this.forwardingMessages.length) {\r\n return;\r\n }\r\n const text = this.forwardingMessages\r\n .map(message => `转发:${message.text || ''}`)\r\n .join('\\n\\n');\r\n try {\r\n await this.sendTextToConversation(target, text);\r\n this.forwardingMessages = [];\r\n this.clearSelection();\r\n this.setActionNotice('已转发');\r\n } catch (error) {\r\n this.setActionError(error.message || '转发失败');\r\n }\r\n },\r\n async recallMessage(message) {\r\n const conversation = this.activeConversation;\r\n if (!conversation) {\r\n return;\r\n }\r\n try {\r\n await imClient.recallMessage(conversation, message);\r\n if (message.direction !== 'out') {\r\n this.removeMessages(conversation.id, [message]);\r\n this.setActionNotice('已撤回');\r\n this.syncActiveMessages();\r\n return;\r\n }\r\n this.replaceLocalMessage(conversation.id, message, {\r\n status: 'recalled',\r\n deliveryStatus: '',\r\n recalled: true,\r\n recallStatus: '已撤回'\r\n });\r\n this.setActionNotice('已撤回');\r\n } catch (error) {\r\n this.setActionError(error.message || '撤回失败');\r\n }\r\n },\r\n async createGroup(options = {}) {\r\n const session = useSessionStore();\r\n if (!session.userId) {\r\n this.setActionError('请先登录');\r\n return false;\r\n }\r\n try {\r\n const conversation = await imClient.createGroup(session.userId, options);\r\n this.upsertConversation(conversation);\r\n this.setActiveConversation(conversation.id);\r\n this.setActionNotice(options.channel ? '公告群已创建' : '群组已创建');\r\n this.refreshRemoteConversations();\r\n return true;\r\n } catch (error) {\r\n this.setActionError(error.message || (options.channel ? '创建公告群失败' : '创建群组失败'));\r\n return false;\r\n }\r\n },\r\n async joinGroup(groupKey) {\r\n const session = useSessionStore();\r\n if (!session.userId) {\r\n this.setActionError('请先登录');\r\n return false;\r\n }\r\n try {\r\n const conversation = await imClient.joinGroup(session.userId, groupKey);\r\n this.upsertConversation(conversation);\r\n this.setActiveConversation(conversation.id);\r\n this.setActionNotice('已加入群组');\r\n this.refreshRemoteConversations();\r\n return true;\r\n } catch (error) {\r\n this.setActionError(error.message || '加入群组失败');\r\n return false;\r\n }\r\n },\r\n async broadcastMessage(targetIds, text) {\r\n const session = useSessionStore();\r\n if (!session.userId) {\r\n this.setActionError('请先登录');\r\n return false;\r\n }\r\n try {\r\n const result = await imClient.broadcastMessage(session.userId, targetIds, text);\r\n const successCount = Number(result.successCount || 0);\r\n const failedCount = Number(result.failedCount || 0);\r\n this.setActionNotice(failedCount > 0 ? `已群发 ${successCount} 条,失败 ${failedCount} 条` : `已群发 ${successCount} 条`);\r\n this.refreshRemoteConversations();\r\n return true;\r\n } catch (error) {\r\n this.setActionError(error.message || '群发失败');\r\n return false;\r\n }\r\n },\r\n async leaveGroup(conversation) {\r\n const session = useSessionStore();\r\n if (!session.userId || !conversation?.target) {\r\n this.setActionError('缺少群组信息');\r\n return false;\r\n }\r\n try {\r\n await imClient.leaveGroup(session.userId, conversation.target);\r\n this.removeConversation(conversation.id);\r\n this.setActionNotice('已退出群组');\r\n this.refreshRemoteConversations();\r\n return true;\r\n } catch (error) {\r\n this.setActionError(error.message || '退出群组失败');\r\n return false;\r\n }\r\n },\r\n async dismissGroup(conversation) {\r\n const session = useSessionStore();\r\n if (!session.userId || !conversation?.target) {\r\n this.setActionError('缺少群组信息');\r\n return false;\r\n }\r\n try {\r\n await imClient.dismissGroup(session.userId, conversation.target);\r\n this.removeConversation(conversation.id);\r\n this.setActionNotice('群组已解散');\r\n this.refreshRemoteConversations();\r\n return true;\r\n } catch (error) {\r\n this.setActionError(error.message || '解散群组失败');\r\n return false;\r\n }\r\n }\r\n }\r\n});\r\n","import { defineStore } from 'pinia';\r\n\r\nexport const useNavigationStore = defineStore('navigation', {\r\n state: () => ({\r\n section: 'messages'\r\n }),\r\n actions: {\r\n showMessages() {\r\n this.section = 'messages';\r\n },\r\n showContacts() {\r\n this.section = 'contacts';\r\n },\r\n showFavorites() {\r\n this.section = 'favorites';\r\n }\r\n }\r\n});\r\n","import { defineStore } from 'pinia';\nimport { imClient } from '@/services/imClient';\nimport { appConfig } from '@/config';\n\nconst STORAGE_KEY = 'qmt-web-im-session';\n\nfunction normalizeStoredPortrait(portrait) {\n return portrait || '';\n}\n\nfunction nextProfilePortrait(profilePortrait, currentPortrait) {\n return normalizeStoredPortrait(profilePortrait) || normalizeStoredPortrait(currentPortrait);\n}\n\nfunction inferAccountType(account) {\n return String(account || '').includes('@') ? 2 : 1;\n}\n\nexport const useSessionStore = defineStore('session', {\n state: () => ({\n isAuthenticated: false,\n connecting: false,\n connected: false,\n connectionStatusText: '未连接',\n userId: '',\n token: '',\n displayName: '',\n portrait: '',\n error: '',\n sdkVersion: '',\n eventsBound: false\n }),\n actions: {\n restore() {\n const raw = localStorage.getItem(STORAGE_KEY);\n if (!raw) {\n return;\n }\n\n try {\n const session = JSON.parse(raw);\n if (session.appServer !== appConfig.appServer) {\n localStorage.removeItem(STORAGE_KEY);\n return;\n }\n\n if (session.userId && session.token) {\n if (!session.clientId) {\n localStorage.removeItem(STORAGE_KEY);\n return;\n }\n this.userId = session.userId;\n this.token = session.token;\n this.displayName = session.displayName || session.userId;\n this.portrait = normalizeStoredPortrait(session.portrait);\n this.isAuthenticated = true;\n imClient.restoreClientId(session.clientId);\n this.connect();\n this.refreshProfile();\n }\n } catch (error) {\n localStorage.removeItem(STORAGE_KEY);\n }\n },\n\n async loginWithPassword(account, password, type = inferAccountType(account)) {\n this.error = '';\n this.connecting = true;\n try {\n const result = await imClient.loginWithPassword(account, password, type);\n this.applyLoginResult(result);\n await this.connect();\n } catch (error) {\n this.error = error.message || '登录失败';\n } finally {\n this.connecting = false;\n }\n },\n\n async loginWithCode(account, code) {\n this.error = '';\n this.connecting = true;\n try {\n const result = await imClient.loginWithCode(account, code);\n this.applyLoginResult(result);\n await this.connect();\n } catch (error) {\n this.error = error.message || '登录失败';\n } finally {\n this.connecting = false;\n }\n },\n\n async completePcSessionLogin(result) {\n this.error = '';\n this.connecting = true;\n try {\n this.applyLoginResult(result);\n await this.connect();\n } catch (error) {\n this.error = error.message || '扫码登录失败';\n } finally {\n this.connecting = false;\n }\n },\n\n async register(payload) {\n this.error = '';\n this.connecting = true;\n try {\n const result = await imClient.register(payload);\n this.applyLoginResult(result);\n await this.connect();\n return result;\n } catch (error) {\n this.error = error.message || '注册失败';\n return null;\n } finally {\n this.connecting = false;\n }\n },\n\n applyLoginResult(result) {\n this.userId = result.userId || result.uid || result.id || '';\n this.token = result.token || result.imToken || '';\n this.displayName = result.displayName || result.userName || result.name || this.userId;\n this.portrait = normalizeStoredPortrait(result.portrait);\n this.isAuthenticated = Boolean(this.userId && this.token);\n this.persistSession();\n },\n\n persistSession() {\n localStorage.setItem(STORAGE_KEY, JSON.stringify({\n userId: this.userId,\n token: this.token,\n displayName: this.displayName,\n portrait: this.portrait,\n clientId: imClient.getClientId(),\n appServer: appConfig.appServer\n }));\n },\n\n applyProfile(profile) {\n if (!profile) {\n return;\n }\n this.userId = profile.userId || profile.uid || this.userId;\n this.displayName = profile.displayName || profile.name || this.displayName || this.userId;\n this.portrait = nextProfilePortrait(profile.portrait, this.portrait);\n this.persistSession();\n },\n\n async refreshProfile() {\n if (!this.userId) {\n return null;\n }\n try {\n const profile = await imClient.getProfile(this.userId);\n this.applyProfile(profile);\n return profile;\n } catch (error) {\n return null;\n }\n },\n\n async saveProfile({ displayName, portraitFile }) {\n if (!this.userId) {\n throw new Error('请先登录');\n }\n const profile = await imClient.updateProfile(this.userId, {\n displayName,\n portraitFile\n });\n this.applyProfile(profile);\n return profile;\n },\n\n async changePassword({ oldPassword, newPassword }) {\n if (!this.userId) {\n throw new Error('请先登录');\n }\n await imClient.changePassword({ oldPassword, newPassword });\n await this.logout();\n return true;\n },\n\n async resetPasswordWithCode({ mobile, resetCode, newPassword }) {\n await imClient.resetPasswordWithCode({ mobile, resetCode, newPassword });\n return true;\n },\n\n async connect() {\n if (!this.userId || !this.token) {\n return;\n }\n await imClient.ensureSdk();\n this.sdkVersion = imClient.getSdkVersion();\n this.bindImEvents();\n await imClient.connect(this.userId, this.token);\n },\n\n bindImEvents() {\n if (this.eventsBound) {\n return;\n }\n this.eventsBound = true;\n imClient.on('connectionStatusChanged', status => {\n this.connected = status.connected;\n this.connectionStatusText = status.statusText || (status.connected ? '已连接' : '未连接');\n });\n },\n\n async logout() {\n try {\n await imClient.logout?.();\n } catch (error) {\n this.error = error.message || '退出登录失败';\n } finally {\n imClient.disconnect();\n localStorage.removeItem(STORAGE_KEY);\n this.$reset();\n }\n }\n }\n});\n","import script from \"./App.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./App.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","import script from \"./ChatShell.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./ChatShell.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","import script from \"./LoginView.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./LoginView.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","import script from \"./ChatPanel.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./ChatPanel.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","import script from \"./MessageComposer.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./MessageComposer.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","import script from \"./MessageList.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./MessageList.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","import script from \"./ContactPanel.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./ContactPanel.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","import script from \"./FavoriteList.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./FavoriteList.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","import script from \"./FavoritePanel.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./FavoritePanel.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","import script from \"./ContactList.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./ContactList.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","import script from \"./ConversationList.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./ConversationList.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","import script from \"./NavigationRail.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./NavigationRail.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","export { default } from \"-!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./App.vue?vue&type=script&setup=true&lang=js\"; export * from \"-!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./App.vue?vue&type=script&setup=true&lang=js\"","export { default } from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./ChatShell.vue?vue&type=script&setup=true&lang=js\"; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./ChatShell.vue?vue&type=script&setup=true&lang=js\"","export { default } from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./LoginView.vue?vue&type=script&setup=true&lang=js\"; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./LoginView.vue?vue&type=script&setup=true&lang=js\"","export { default } from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./ChatPanel.vue?vue&type=script&setup=true&lang=js\"; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./ChatPanel.vue?vue&type=script&setup=true&lang=js\"","export { default } from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./MessageComposer.vue?vue&type=script&setup=true&lang=js\"; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./MessageComposer.vue?vue&type=script&setup=true&lang=js\"","export { default } from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./MessageList.vue?vue&type=script&setup=true&lang=js\"; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./MessageList.vue?vue&type=script&setup=true&lang=js\"","export { default } from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./ContactPanel.vue?vue&type=script&setup=true&lang=js\"; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./ContactPanel.vue?vue&type=script&setup=true&lang=js\"","export { default } from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./FavoriteList.vue?vue&type=script&setup=true&lang=js\"; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./FavoriteList.vue?vue&type=script&setup=true&lang=js\"","export { default } from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./FavoritePanel.vue?vue&type=script&setup=true&lang=js\"; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./FavoritePanel.vue?vue&type=script&setup=true&lang=js\"","export { default } from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./ContactList.vue?vue&type=script&setup=true&lang=js\"; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./ContactList.vue?vue&type=script&setup=true&lang=js\"","export { default } from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./ConversationList.vue?vue&type=script&setup=true&lang=js\"; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./ConversationList.vue?vue&type=script&setup=true&lang=js\"","export { default } from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./NavigationRail.vue?vue&type=script&setup=true&lang=js\"; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./NavigationRail.vue?vue&type=script&setup=true&lang=js\"","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter/value functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tif(Array.isArray(definition)) {\n\t\tvar i = 0;\n\t\twhile(i < definition.length) {\n\t\t\tvar key = definition[i++];\n\t\t\tvar binding = definition[i++];\n\t\t\tif(!__webpack_require__.o(exports, key)) {\n\t\t\t\tif(binding === 0) {\n\t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, value: definition[i++] });\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: binding });\n\t\t\t\t}\n\t\t\t} else if(binding === 0) { i++; }\n\t\t}\n\t} else {\n\t\tfor(var key in definition) {\n\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t\t}\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// set .name for anonymous default exports per ES spec\n__webpack_require__.dn = function(x) {\n\t(Object.getOwnPropertyDescriptor(x, \"name\") || {}).writable || Object.defineProperty(x, \"name\", { value: \"default\", configurable: true });\n};","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t524: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkjc_web_im\"] = self[\"webpackChunkjc_web_im\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [504], function() { return __webpack_require__(1406); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n",""],"names":["onMounted","LoginView","ChatShell","useSessionStore","session","restore","NavigationRail","ConversationList","ContactList","ChatPanel","ContactPanel","FavoriteList","FavoritePanel","useConversationStore","useNavigationStore","useContactStore","conversations","navigation","contacts","refreshRemoteConversations","refreshContacts","axios","jrQRCode","computed","onBeforeUnmount","reactive","ref","appConfig","imClient","QR_CODE_PREFIX_PC_SESSION","defaultPlatformLogo","view","loginMode","loginAccount","loginPassword","registerType","registerForm","number","code","password","confirmPassword","invitationCode","sendingCode","info","qrStatus","qrCodeImage","qrSessionToken","qrUserName","qrUserPortrait","qrGeneration","qrExpireTimer","defaultPlatformName","appName","platformName","platformLogo","canSubmitLogin","value","length","canRequestEmailCode","test","canSubmitRegister","qrUserInitial","String","slice","toUpperCase","qrStatusTitle","connecting","qrStatusText","qrRefreshText","loadPlatformConfig","stopQrLogin","clearFormMessage","error","setLoginMode","mode","startQrLogin","submitLogin","type","loginWithPassword","switchRegisterType","requestEmailCode","requestAuthCode","message","submitRegister","result","register","openRegister","backToLogin","resetQrState","clearQrExpireTimer","window","clearTimeout","refreshQrLogin","force","includes","generation","pcSession","createPcSession","token","Error","getQrBase64","expireMs","Math","max","min","Number","expired","setTimeout","isAuthenticated","pollQrLogin","payload","loginWithPcSession","data","status","imToken","completePcSessionLogin","userName","displayName","portrait","delay","ms","Promise","resolve","response","get","platformConfigApi","withCredentials","config","name","trim","logo","logoUrl","version","resolveBrandLogo","applyDocumentBrand","appendBrandVersion","startsWith","location","protocol","base","adminServer","URL","toString","url","parsed","href","searchParams","set","document","title","icon","querySelector","createElement","setAttribute","head","appendChild","handleBrandLogoError","watch","MessageList","MessageComposer","activeConversation","groupMenuOpen","singleProfileOpen","singleAliasDraft","singleProfileSaving","singleProfileNotice","singleProfileError","groupPanel","groupBusy","groupDetail","groupMembers","groupAliasDraft","manageSection","selectedAdminIds","selectedKickIds","transferTargetId","profileDraft","announcement","welcomeText","muteDraft","scheduleType","startsAtLocal","endsAtLocal","dailyStart","dailyEnd","muteSaveNotice","muteSaveError","singlePeerId","isGroupConversation","target","raw","id","replace","singleContact","peerId","find","contact","uid","singleProfile","conversation","rawUser","alias","rawName","mobile","address","avatarText","currentGroupRole","myRole","role","isGroupOwner","canManageGroup","adminCandidateMembers","filter","member","transferableMembers","messageDetail","messageDetailGroup","group","isMessageDetailGroup","conversationType","Boolean","messageDetailCounts","counts","read","unread","undelivered","total","kickCandidateMembers","userId","statusText","canSendActiveConversation","connectionStatusText","connected","formatDetailTime","timestamp","Intl","DateTimeFormat","year","month","day","hour","minute","second","hour12","timeZone","resolvedOptions","format","detailMemberName","detailMemberAvatar","detailRoleLabel","closeGroupMenu","toggleGroupMenu","openSingleProfile","then","catch","closeSingleProfile","saveSingleAlias","ok","updateContactAlias","actionError","refreshedContact","nextTitle","upsertConversation","handleSenderProfileUpdated","syncActiveMessages","allowReadReceipt","loadGroupMembers","closeGroupPanel","clearMuteSaveFeedback","loadGroupDetail","getGroupDetail","setActionError","openGroupOverview","openGroupMembers","getGroupMembers","map","openGroupAlias","detail","myAlias","msToLocalInput","date","Date","local","getTime","getTimezoneOffset","toISOString","localInputToMs","prepareManagementDrafts","setting","muteSetting","startsAtMs","endsAtMs","openGroupManage","openTransferGroup","saveGroupAlias","updateGroupAlias","setActionNotice","toggleAdmin","selected","Set","has","delete","add","Array","from","toggleKick","saveGroupAdmins","setGroupAdmins","saveGroupProfile","updateGroupProfile","updatedAt","now","kickSelectedMembers","confirm","kickGroupMembers","removed","removedIds","saveMuteSetting","updateGroupMuteSetting","leaveCurrentGroup","leaveGroup","dismissCurrentGroup","dismissGroup","transferCurrentGroup","transferGroup","memberAvatar","addEventListener","removeEventListener","props","__props","emit","__emit","text","emojiOpen","dropActive","textareaEl","imageInput","fileInput","dragDepth","emojiList","submit","toggleEmojiPicker","insertEmoji","emoji","element","start","selectionStart","end","selectionEnd","requestAnimationFrame","focus","cursor","setSelectionRange","chooseImage","click","chooseFile","attachmentTypeForFile","file","fallbackType","emitFiles","files","disabled","validFiles","File","size","caption","forEach","index","selectAttachment","event","input","hasDraggedFiles","types","dataTransfer","handleDragEnter","dropEffect","handleDragOver","handleDragLeave","filesFromDataTransfer","items","item","kind","webkitGetAsEntry","isDirectory","getAsFile","handleDrop","imageFilesFromClipboard","clipboardData","handlePaste","imageFiles","preventDefault","nextTick","imageDisplayUrl","IMAGE_MIN_SCALE","IMAGE_MAX_SCALE","listEl","viewerStage","contextMenu","visible","x","y","imageViewer","scale","rotation","offsetX","offsetY","dragging","dragStartX","dragStartY","dragOffsetX","dragOffsetY","senderProfile","roleLabel","contactAlias","groupAlias","isContact","aliasDraft","saving","adding","notice","imageViewerStyle","transform","menuItems","isOwnMessage","direction","isRecalledMessage","action","label","favoriteLabel","isFavorite","unshift","push","canRecallOthers","scrollToBottom","scrollTop","scrollHeight","scrollToMessage","messageId","row","querySelectorAll","dataset","messageKey","scrollIntoView","block","behavior","messages","deliveryStatus","messageUid","recalled","join","immediate","attentionMessageId","closeMenu","closeMenuOnEscape","moveImageDrag","stopImageDrag","messageIdentity","canOpenMessageMenu","isSelected","selectedMessageIds","favoriteMessageIds","isAttention","isRecallNotice","isImageMessage","attachment","isFileMessage","isGroupMessage","showGroupSender","senderRoleLabel","senderRole","groupSenderName","senderName","groupSenderAvatarText","openSenderProfile","profile","cachedContact","cachedAlias","remarkAlias","senderPortrait","closeSenderProfile","addSenderAsContact","addContact","aliasSaved","saveSenderAlias","roleBubbleClass","formatFileSize","bytes","toFixed","handleMessageClick","selectionMode","handleImageClick","openImageViewer","resetImageViewer","closeImageViewer","clampImageScale","setImageScale","originX","originY","previousScale","nextScale","rect","getBoundingClientRect","centerX","left","width","centerY","top","height","ratio","zoomImage","delta","rotateImage","handleImageWheel","factor","deltaY","clientX","clientY","startImageDrag","saveViewerImage","downloadUrl","origin","link","download","body","remove","openMenu","innerWidth","innerHeight","key","chooseMenuAction","formatTime","deliveryState","state","deliveryTitle","failureText","errorCode","activeContact","remarkName","username","editingAlias","aliasSaving","aliasError","openAliasEditor","closeAliasEditor","submitAlias","activeKey","activeFavorite","favoriteTitle","conversationTitle","entry","conversationId","favoritePreview","recallStatus","preview","formatFavoriteTime","favorite","clearFeedback","favoriteText","isImageFavorite","isFileFavorite","favoriteCopyText","copyFavorite","writeClipboard","copyError","navigator","clipboard","writeText","style","position","select","execCommand","removeChild","openConversation","showMessages","setActiveConversation","focusMessage","removeFavorite","keyword","addingContact","addKeyword","filteredContacts","toLowerCase","subtitle","openAddContact","actionInfo","closeAddContact","submitAddContact","added","defineComponent","h","actionMenuOpen","activeAction","actionBusy","searchKeyword","groupName","groupAnnouncement","groupWelcomeText","joinGroupKey","broadcastText","channelName","channelAnnouncement","contactKeyword","selectedContactIds","actionTitles","createGroup","joinGroup","broadcast","createChannel","submitLabels","actionTitle","submitLabel","modalError","modalInfo","actionNotice","normalizedSearchKeyword","contactsByUid","Map","filteredConversationItems","conversationResult","conversationResults","matchesConversation","contactForConversation","conversationTargets","conversationTarget","contactResults","matchesContact","contactResult","submitDisabled","ContactPicker","default","selectedIds","emptyText","emits","setup","class","placeholder","onInput","onClick","src","alt","searchableValues","values","flatMap","isArray","Object","matchesKeyword","compactKeyword","some","groupId","group_id","owner_uid","friendAlias","rawFriend","resultKind","resultKey","isListItemActive","activeId","selectListItem","openChat","clearStoreMessages","resetActionFields","toggleActionMenu","closeActionMenu","openAction","closeActionModal","toggleContact","contactId","submitAction","memberIds","broadcastMessage","channel","formatUnread","count","CROP_OUTPUT_SIZE","settingsItems","initials","settingsOpen","settingsSection","passwordSaving","settingsNotice","settingsError","profileOpen","profileSaving","profileNotice","profileError","profileFile","profilePreview","portraitInput","cropperCanvas","cropperPreviewCanvas","passwordDraft","oldPassword","newPassword","currentAvatarUrl","activeSettingsItem","avatarPreviewViewer","open","avatarCropper","loaded","busy","objectUrl","fileName","image","baseScale","avatarPreviewStyle","refreshProfile","drawAvatarCropper","revokeProfilePreview","closeAvatarCropper","showContacts","clearProfileFeedback","clearSettingsFeedback","resetPasswordDraft","openSettings","closeSettings","selectSettingsSection","section","revokeObjectURL","revokeCropperObjectUrl","openProfileEditor","closeProfileEditor","closeAvatarPreview","selectPortrait","openAvatarCropper","choosePortraitFile","openAvatarPreview","resetAvatarPreview","zoomAvatarPreview","handleAvatarPreviewWheel","startAvatarPreviewDrag","currentTarget","setPointerCapture","pointerId","moveAvatarPreviewDrag","stopAvatarPreviewDrag","dropPortrait","cropperStageSize","canvas","round","cropperBoxSize","rotatedImageSize","quarterTurn","abs","naturalHeight","naturalWidth","clampCropperOffset","cropSize","rotated","scaledWidth","scaledHeight","maxX","maxY","updateCropperBaseScale","drawCanvasImage","outputScale","cropOnly","dpr","devicePixelRatio","context","getContext","setTransform","clearRect","fillStyle","fillRect","save","translate","rotate","PI","drawImage","beginPath","fill","previewCanvas","resetCropperTransform","createObjectURL","Image","onload","onerror","zoomCropper","rotateCropper","degrees","handleCropperWheel","startCropperDrag","moveCropperDrag","stopCropperDrag","canvasToBlob","quality","reject","toBlob","blob","confirmAvatarCrop","outputCanvas","croppedFile","saveProfile","portraitFile","savePassword","changePassword","logout","clearContacts","currentHost","hostname","runtimeConfig","JC_WEB_IM_CONFIG","appServerOrigin","qrAppServerOrigin","adminServerOrigin","process","env","VUE_APP_ADMIN_SERVER","appServer","VUE_APP_APP_SERVER","qrAppServer","VUE_APP_QR_APP_SERVER","VUE_APP_PLATFORM_CONFIG_API","NODE_ENV","registerConfigApi","VUE_APP_REGISTER_CONFIG_API","registerPhoneExistsApi","VUE_APP_REGISTER_PHONE_EXISTS_API","contactsApi","VUE_APP_CONTACTS_API","updateAliasApi","VUE_APP_UPDATE_ALIAS_API","addContactApi","VUE_APP_ADD_CONTACT_API","conversationActionsApi","VUE_APP_CONVERSATION_ACTIONS_API","sendMessageApi","VUE_APP_SEND_MESSAGE_API","messageActionApi","VUE_APP_MESSAGE_ACTION_API","messageDetailApi","VUE_APP_MESSAGE_DETAIL_API","messagesApi","VUE_APP_MESSAGES_API","profileApi","VUE_APP_PROFILE_API","changePasswordApi","VUE_APP_CHANGE_PASSWORD_API","logoutApi","VUE_APP_LOGOUT_API","imServerHost","VUE_APP_IM_SERVER_HOST","imRoutePort","VUE_APP_IM_ROUTE_PORT","useWss","VUE_APP_USE_WSS","wsPath","VUE_APP_WS_PATH","wsUrl","VUE_APP_WS_URL","sdkMode","VUE_APP_IM_MODE","syncIntervalMs","VUE_APP_SYNC_INTERVAL_MS","sseEnabled","VUE_APP_SSE_ENABLED","sseTicketApi","VUE_APP_SSE_TICKET_API","sseUrl","VUE_APP_SSE_URL","platform","clientIdStorageKey","authTokenStoragePrefix","createApp","createPinia","App","use","mount","AES_KEY","ENCRYPTION_EXCLUDE_PATHS","AUTH_STORAGE_KEY","AUTH_ERROR_CODE","REFRESH_ERROR_CODE","importedCryptoKeyPromise","refreshPromise","storageScope","readAuthStore","JSON","parse","localStorage","getItem","writeAuthStore","store","setItem","stringify","normalizeAuthBundle","bundle","accessToken","refreshToken","tokenType","accessTokenExpireIn","accessTokenExpireAt","refreshTokenExpireIn","refreshTokenExpireAt","getStoredAppAuth","persistAppAuth","normalized","clearStoredAppAuth","hasFormData","FormData","absoluteUrl","shouldEncrypt","pathname","path","shouldAttachAuth","skipAuth","textEncoder","TextEncoder","textDecoder","TextDecoder","bytesToBase64","binary","byte","fromCharCode","btoa","base64ToBytes","base64","atob","Uint8Array","charCodeAt","getCryptoKey","crypto","subtle","importKey","encode","encryptPayload","plainText","iv","getRandomValues","encrypted","encrypt","decryptPayload","cipherText","ivBase64","encryptedBase64","split","decrypted","decrypt","decode","normalizeBusinessResponse","decodeResponsePayload","headers","client","create","interceptors","request","nextConfig","auth","Authorization","method","plainBody","floor","refreshAccessToken","post","finally","_retriedAfterRefresh","appServerRequest","appServerGet","appServerPost","HttpImClient","inferAccountType","account","unwrapData","unwrapMessage","fallback","msg","DocumentedHttpImClient","unsupported","feature","clientId","getClientId","email","loginWithCode","flag","device_name","encodeURIComponent","postError","persistAppToken","resetPasswordWithCode","resetCode","fetchRemoteConversations","fetchRemoteMessages","getServerContactList","getProfile","sendTextMessage","sendAttachmentMessage","updateProfile","recallMessage","editMessage","getMessageDetail","LOCAL_MESSAGE_STORAGE_KEY","LOCAL_HIDDEN_MESSAGE_STORAGE_KEY","LOCAL_RECALLED_MESSAGE_STORAGE_KEY","scopedStorageKey","baseKey","scope","randomId","randomUUID","replaceAll","random","readLocalMessages","readMessageSet","storageKey","writeMessageSet","messagesByConversation","messageKeys","hasStoredMessage","stored","ids","storeMessageKeys","withRecalledState","applyLocalMessageState","isRecalled","writeLocalMessages","saveLocalMessage","findIndex","splice","mergeSyncedMessages","localMessages","remoteMessages","visibleLocalMessages","localByKey","visibleRemoteMessages","remoteMessage","localMessage","remoteKeys","hasRemoteMatch","pendingLocalMessages","sort","a","b","displayTimestamp","getTitle","getUniqueEquipment","allowedDevices","canUseLocalLoginFallback","constructor","listeners","currentUser","restoreClientId","getSdkVersion","ensureSdk","localOnly","registerWithPhone","deviceId","uniqueEquipment","connect","refreshConversationList","disconnect","getConversationList","remoteConversations","limit","line","getMessages","options","markRead","includeConversations","remoteConversation","hideMessages","markMessagesRecalled","nextText","editedMessage","editedAt","activityTimestamp","initialMessage","sender","sentMessage","serverTimestamp","failedMessage","mime","formData","append","getContactList","getAppAuthHeaders","mapContact","localeCompare","reason","normalizeConversation","groupKey","targetIds","members","targetUserId","adminIds","targetId","resetPasswordApi","refreshContactList","createSingleConversation","userInfo","friend","on","eventName","handler","off","appToken","authtoken","authToken","getUrlHost","host","LongConnectionImClient","UnsupportedWildfireImClient","WildfireImClient","HEARTBEAT_INTERVAL_MS","RECONNECT_MIN_MS","RECONNECT_MAX_MS","buildWsUrl","port","normalizeConversationId","to","receiver","normalizeIncomingMessage","currentUserId","fromUser","content","searchableContent","socket","heartbeatTimer","reconnectTimer","reconnectAttempts","manualClose","shouldUseMessagePolling","WebSocket","openSocket","clearReconnectTimer","clearHeartbeatTimer","close","readyState","OPEN","sendAuthFrame","CONNECTING","binaryType","scheduleReconnect","onopen","startHeartbeat","onmessage","handleFrame","onclose","sendFrame","frame","send","rawData","ArrayBuffer","cmd","setInterval","clearInterval","configuredProxyHosts","configured","mediaProxyHosts","source","proxyUrl","RealtimeNotificationClient","reconnectAttempt","isConnected","stop","ticket","separator","endpoint","socketUrl","realtimeNotifications","defineStore","CONTACT_CACHE_MS","normalizeContacts","unique","loading","eventsBound","refreshSerial","loadedForUserId","loadedAt","getters","actions","bindImEvents","requestUserId","serial","serverContacts","latest","nextAlias","savedAlias","setActiveContact","LOCAL_CONVERSATION_STORAGE_KEY","LOCAL_FAVORITE_MESSAGES_KEY","readFavoriteMessages","writeFavoriteMessages","readLocalConversations","writeLocalConversations","messageStableKey","messageActivityTimestamp","attachmentLabel","messagePreviewText","quotePrefix","isSameMessage","right","hasExactMessage","canMarkReadNow","visibilityState","userAction","normalizeMessageForDisplay","contentType","labels","mergeVisibleMessages","currentMessages","syncedMessages","merged","currentMessage","exists","shouldKeepLocal","incomingEditedMessages","previousMessages","nextMessages","previousByKey","previous","notificationAudioContext","playNotificationSound","AudioContext","webkitAudioContext","resume","oscillator","createOscillator","gain","createGain","startAt","currentTime","frequency","setValueAtTime","exponentialRampToValueAtTime","destination","visibleMessagesByConversation","usingDemoData","syncTimer","conversationSyncTimer","readPresenceEventsBound","syncInFlight","pendingReadReceiptConversationId","conversationSyncInFlight","syncAfterSendTimer","optimisticMessagesByConversation","quotedMessage","forwardingMessages","editingMessage","editingText","editingMode","messageDetailOpen","messageDetailLoading","messageDetailError","attentionMessageTimer","favoriteMessages","activeFavoriteKey","realtimeSyncTimer","activeMessages","totalUnread","reduce","sum","selectedMessages","bootstrapDemoData","clearUserState","loadScopedLocalState","startMessageSync","handleRealtimeNotification","appendMessage","scheduleActiveMessagesSync","replaceMessage","applyRemoteConversations","loadActiveMessages","sendText","appendVisibleMessage","sendAttachment","sendTextToConversation","removeConversation","removedMessages","removedVisibleMessages","removedOptimisticMessages","remote","keepOptimisticMessage","updateConversationFromMessage","syncVisibleMessages","removeMessages","filterMessages","list","replaceLocalMessage","targetMessage","nextMessage","keys","replaceInList","matched","pruneOptimisticMessages","remoteMatched","syncedMessage","syncOptions","wantsReadReceipt","explicitReadReceipt","pollingReadReceipt","syncedConversationId","editedIncomingMessages","latestMessage","bindReadPresenceEvents","syncWhenReadable","handleMessageAction","copyMessages","startEditMessage","deleteMessages","startForward","toggleFavorite","openMessageDetail","quoteMessage","enterSelectionMode","sentAt","closeMessageDetail","setActiveFavorite","quoteText","cancelQuote","toggleSelectedMessage","clearSelection","copySelectedMessages","deleteSelectedMessages","startForwardSelectedMessages","cancelForward","isResend","cancelEditMessage","completeEditMessage","completeForward","targetConversationId","successCount","failedCount","showFavorites","STORAGE_KEY","normalizeStoredPortrait","nextProfilePortrait","profilePortrait","currentPortrait","sdkVersion","removeItem","applyLoginResult","persistSession","applyProfile","$reset"],"sourceRoot":""} \ No newline at end of file diff --git a/public/api.zip b/public/api.zip new file mode 100644 index 0000000000000000000000000000000000000000..c8a867feaf1a49a4e72caa265851163bf20579bf GIT binary patch literal 46293 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

1p6AJl7tJ$fiAs`6(_AW=_G7>~4 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 strtolower(rtrim(trim($host), '.')), preg_split('/[,\s]+/', $configured) ?: [] ); + $hosts[] = 'zhiyanim.dfpnm.cn'; return array_values(array_unique(array_filter($hosts))); } @@ -53,9 +66,12 @@ function validatedMediaProxyUrl(string $url): array function mediaProxyCacheRoot(): string { - $root = rtrim(webImEnv('JC_WEB_IM_MEDIA_CACHE_ROOT', '/var/cache/jc-web-im-media'), '/'); + $root = rtrim(mediaProxyEnv('JC_WEB_IM_MEDIA_CACHE_ROOT', '/var/cache/jc-web-im-media'), '/'); if ($root === '' || !is_dir($root) || !is_writable($root)) { - failMediaProxy(503, '媒体缓存目录不可用'); + $root = rtrim(sys_get_temp_dir(), '/') . '/jc-web-im-media'; + if (!is_dir($root) && !@mkdir($root, 0755, true) && !is_dir($root)) { + failMediaProxy(503, '媒体缓存目录不可用'); + } } return $root; @@ -63,7 +79,7 @@ function mediaProxyCacheRoot(): string function mediaProxyPreferredIps(): array { - $configured = preg_split('/[,\s]+/', webImEnv('JC_WEB_IM_MEDIA_PROXY_IPS')) ?: []; + $configured = preg_split('/[,\s]+/', mediaProxyEnv('JC_WEB_IM_MEDIA_PROXY_IPS')) ?: []; $ips = []; foreach ($configured as $ip) { $ip = trim($ip); diff --git a/public/api/media_stream.php b/public/api/media_stream.php new file mode 100644 index 0000000..7ccd61f --- /dev/null +++ b/public/api/media_stream.php @@ -0,0 +1,71 @@ + $end || $start >= $size) { + header('Content-Range: bytes */' . $size); + failMediaStream(416, '请求范围无效'); + } + http_response_code(206); + header('Content-Range: bytes ' . $start . '-' . $end . '/' . $size); +} + +$length = $end - $start + 1; +header('Content-Type: ' . $mime); +header('Content-Length: ' . $length); +header('Accept-Ranges: bytes'); +header('Content-Disposition: inline'); +header('Cache-Control: public, max-age=86400'); +header('X-Content-Type-Options: nosniff'); + +$stream = fopen($fullPath, 'rb'); +if ($stream === false) failMediaStream(500, '视频文件无法读取'); +fseek($stream, $start); +$remaining = $length; +while ($remaining > 0 && !feof($stream)) { + $chunk = fread($stream, min(1024 * 1024, $remaining)); + if ($chunk === false || $chunk === '') break; + echo $chunk; + $remaining -= strlen($chunk); + flush(); +} +fclose($stream); diff --git a/public/api/message_action.php b/public/api/message_action.php index f633822..e4c337b 100644 --- a/public/api/message_action.php +++ b/public/api/message_action.php @@ -78,7 +78,7 @@ function fetchActionMessageRow(string $messageUid): array return is_array($row) ? $row : []; } -function ensureMessageEditsTable(): void +function ensureMessageEditsTable(): void { imDb()->exec( 'create table if not exists `t_web_message_edits` (' @@ -93,7 +93,40 @@ function ensureMessageEditsTable(): void . 'key `idx_edited_at_ms` (`edited_at_ms`)' . ') engine=InnoDB default charset=utf8mb4' ); -} +} + +function ensurePinnedMessagesTable(): void +{ + imAppDb()->exec( + 'create table if not exists `t_web_pinned_messages` (' + . '`user_id` varchar(64) not null,' + . '`conversation_type` varchar(16) not null,' + . '`target_id` varchar(128) not null,' + . '`message_uid` varchar(32) not null,' + . '`updated_at_ms` bigint not null,' + . 'primary key (`user_id`, `conversation_type`, `target_id`)' + . ') engine=InnoDB default charset=utf8mb4' + ); +} + +function savePinnedMessage(string $userId, string $conversationType, string $targetId, string $messageUid): void +{ + ensurePinnedMessagesTable(); + $statement = imAppDb()->prepare( + 'insert into `t_web_pinned_messages` (`user_id`, `conversation_type`, `target_id`, `message_uid`, `updated_at_ms`)' + . ' values (?, ?, ?, ?, ?) on duplicate key update `message_uid` = values(`message_uid`), `updated_at_ms` = values(`updated_at_ms`)' + ); + $statement->execute([$userId, $conversationType, $targetId, $messageUid, nowTimestampMs()]); +} + +function removePinnedMessage(string $userId, string $conversationType, string $targetId): void +{ + ensurePinnedMessagesTable(); + $statement = imAppDb()->prepare( + 'delete from `t_web_pinned_messages` where `user_id` = ? and `conversation_type` = ? and `target_id` = ?' + ); + $statement->execute([$userId, $conversationType, $targetId]); +} function editTextMessage(string $operatorId, string $messageUid, string $text): array { @@ -222,7 +255,21 @@ if ($action === '' || $messageUid <= 0) { respond(400, '缺少操作类型或消息ID'); } -try { +try { + if ($action === 'pin' || $action === 'unpin') { + if ($userId === '') respond(400, '缺少操作者ID'); + $targetId = trim((string)($payload['target'] ?? '')); + $conversationType = trim((string)($payload['conversationType'] ?? 'single')); + if ($targetId === '') respond(400, '缺少会话ID'); + $userId = resolveActionUserId($userId); + if ($action === 'pin') { + savePinnedMessage($userId, $conversationType, $targetId, $messageUidText); + } else { + removePinnedMessage($userId, $conversationType, $targetId); + } + respond(0, 'success', ['messageUid' => $messageUidText, 'action' => $action]); + } + if ($action === 'recall') { if ($userId === '') { respond(400, '缺少操作者ID'); diff --git a/public/api/messages.php b/public/api/messages.php index 1b0d8ba..96ee37a 100644 --- a/public/api/messages.php +++ b/public/api/messages.php @@ -213,6 +213,9 @@ function attachmentFallbackText(?array $attachment): string if ((string)$attachment['type'] === 'image') { return '[图片]'; } + if ((string)$attachment['type'] === 'video') { + return '[视频]'; + } return '[文件] ' . ((string)($attachment['name'] ?? '') ?: '文件'); } @@ -594,6 +597,7 @@ function formatWebGroupMessage( 'senderPortrait' => (string)($senderUser['_portrait'] ?? ''), 'senderProfile' => [ 'uid' => $from, + 'userId' => (string)($senderUser['_name'] ?? ''), 'displayName' => $senderName, 'rawName' => $senderRawName, 'contactAlias' => $senderContactAlias, @@ -641,6 +645,9 @@ function nativeMediaUrlScore(string $url): int if (preg_match('/\.(?:jpe?g|png|gif|webp|bmp|avif)$/i', $path)) { $score += 30; } + if (preg_match('/\.(?:mp4|mov|m4v|webm|avi|mkv|3gp)$/i', $path)) { + $score += 30; + } if (strpos($path, 'image') !== false || strpos($path, 'media') !== false || strpos($path, 'upload') !== false) { $score += 5; } @@ -691,11 +698,21 @@ function nativeAttachmentName(string $url, string $type): string return $name; } - return $type === 'image' ? '图片' : '文件'; + return $type === 'image' ? '图片' : ($type === 'video' ? '视频' : '文件'); } function nativeAttachmentMime(string $url, string $type): string { + if ($type === 'video') { + $path = strtolower((string)(parse_url($url, PHP_URL_PATH) ?: '')); + if (preg_match('/\.webm$/', $path)) { + return 'video/webm'; + } + if (preg_match('/\.(?:mov|m4v)$/', $path)) { + return 'video/quicktime'; + } + return 'video/mp4'; + } if ($type !== 'image') { return ''; } @@ -730,7 +747,7 @@ function nativeAttachmentFromRow(array $row, ?array $attachment): ?array } $contentType = (int)($row['_content_type'] ?? 0); - if ($contentType !== 3 && $contentType !== 5) { + if (!in_array($contentType, [3, 5, 6], true)) { return null; } @@ -739,7 +756,7 @@ function nativeAttachmentFromRow(array $row, ?array $attachment): ?array return null; } - $type = $contentType === 3 ? 'image' : 'file'; + $type = $contentType === 3 ? 'image' : ($contentType === 6 ? 'video' : 'file'); return [ 'type' => $type, @@ -767,7 +784,7 @@ function nativeDisplayText(string $searchableText, int $contentType, bool $hasAt { $text = trim($searchableText); if (isNativePlaceholderText($text, $contentType)) { - return ''; + $text = ''; } if ($text === '' && !$isRecalled) { return nativeMessageFallbackText($contentType, $hasAttachment); @@ -776,6 +793,29 @@ function nativeDisplayText(string $searchableText, int $contentType, bool $hasAt return $text; } +function nativeRedPacketFromText(string $text): ?array +{ + $decoded = json_decode(trim($text), true); + if (!is_array($decoded)) { + return null; + } + + $packet = $decoded['redPackets'] ?? $decoded['redPacket'] ?? null; + if (!is_array($packet)) { + return null; + } + + return [ + 'id' => (string)($packet['id'] ?? ''), + 'senderId' => (string)($packet['userId'] ?? $packet['senderId'] ?? ''), + 'target' => (string)($packet['target'] ?? $decoded['target'] ?? ''), + 'blessing' => trim((string)($packet['blessing'] ?? '')) ?: '恭喜发财,大吉大利', + 'status' => (int)($packet['status'] ?? 0), + 'expireTime' => (string)($packet['expireTime'] ?? ''), + 'createDate' => (string)($packet['createDate'] ?? ''), + ]; +} + function nativeMessageFallbackText(int $contentType, bool $hasAttachment): string { if ($hasAttachment) { @@ -784,9 +824,18 @@ function nativeMessageFallbackText(int $contentType, bool $hasAttachment): strin if ($contentType === 5) { return '[文件]'; } + if ($contentType === 6) { + return '[视频加载失败]'; + } if ($contentType === 90) { return '[红包]'; } + if ($contentType === 92) { + return '以上是打招呼的内容'; + } + if ($contentType === 93) { + return '你们已经是好友了,可以开始聊天了。'; + } if ($contentType === 105) { return '[领取了红包]'; } @@ -892,13 +941,19 @@ function formatNativeGroupMessage( $messageId = (string)$row['_mid']; $timestamp = timestampMs((string)($row['_dt'] ?? ''), $messageId); $contentType = (int)($row['_content_type'] ?? 0); + $redPacket = nativeRedPacketFromText((string)($row['_searchable_key'] ?? '')); + if ($redPacket !== null) { + $contentType = 90; + } $isRecalled = $contentType === 80; $direction = $from === $currentUserId ? 'out' : 'in'; $attachment = nativeAttachmentFromRow($row, $attachment); $messageType = $attachment ? (string)$attachment['type'] - : (in_array($contentType, [1, 80, 90, 105], true) ? 'text' : 'unknown'); - $text = nativeDisplayText((string)($row['_searchable_key'] ?? ''), $contentType, $attachment !== null, $isRecalled); + : (in_array($contentType, [1, 80, 90, 92, 93, 105], true) ? 'text' : 'unknown'); + $text = $redPacket !== null + ? '[红包]' + : nativeDisplayText((string)($row['_searchable_key'] ?? ''), $contentType, $attachment !== null, $isRecalled); return [ 'id' => $messageId, @@ -910,6 +965,7 @@ function formatNativeGroupMessage( 'senderPortrait' => (string)($senderUser['_portrait'] ?? ''), 'senderProfile' => [ 'uid' => $from, + 'userId' => (string)($senderUser['_name'] ?? ''), 'displayName' => $senderName, 'rawName' => $senderRawName, 'contactAlias' => $senderContactAlias, @@ -929,6 +985,7 @@ function formatNativeGroupMessage( 'contentType' => $contentType, 'text' => attachmentDisplayText($text, $attachment), 'attachment' => $attachment, + 'redPacket' => $redPacket, 'status' => $isRecalled && $direction === 'out' ? 'recalled' : 'sent', 'deliveryStatus' => $direction === 'out' && !$isRecalled ? 'sent' : '', 'recalled' => $isRecalled, @@ -1333,6 +1390,10 @@ function formatMessage( $messageId = (string)$row['_mid']; $from = (string)$row['_from']; $contentType = (int)($row['_content_type'] ?? 0); + $redPacket = nativeRedPacketFromText((string)($row['_searchable_key'] ?? '')); + if ($redPacket !== null) { + $contentType = 90; + } $isRecalled = $contentType === 80; $text = (string)($row['_searchable_key'] ?? ''); $timestamp = timestampMs((string)($row['_dt'] ?? ''), $messageId); @@ -1340,8 +1401,10 @@ function formatMessage( $attachment = nativeAttachmentFromRow($row, $attachment); $messageType = $attachment ? (string)$attachment['type'] - : (in_array($contentType, [1, 80, 90, 105], true) ? 'text' : 'unknown'); - $messageText = nativeDisplayText($text, $contentType, $attachment !== null, $isRecalled); + : (in_array($contentType, [1, 80, 90, 92, 93, 105], true) ? 'text' : 'unknown'); + $messageText = $redPacket !== null + ? '[红包]' + : nativeDisplayText($text, $contentType, $attachment !== null, $isRecalled); $messageText = attachmentDisplayText($messageText, $attachment); $editedAt = (int)($editState['editedAt'] ?? 0); $activityTimestamp = messageActivityTimestamp($timestamp, $editState); @@ -1358,9 +1421,12 @@ function formatMessage( 'target' => $peerId, 'direction' => $direction, 'type' => $messageType, - 'contentType' => $attachment ? ((string)$attachment['type'] === 'image' ? 3 : 5) : $contentType, + 'contentType' => $attachment + ? ((string)$attachment['type'] === 'image' ? 3 : ((string)$attachment['type'] === 'video' ? 6 : 5)) + : $contentType, 'text' => $messageText, 'attachment' => $attachment, + 'redPacket' => $redPacket, 'status' => $isRecalled && $direction === 'out' ? 'recalled' : ($direction === 'out' ? $deliveryStatus : 'sent'), 'deliveryStatus' => $deliveryStatus, 'recalled' => $isRecalled, @@ -1510,7 +1576,16 @@ function loadRecentConversations(PDO $db, string $userId, int $limit): array 'portrait' => (string)($users[$peerId]['_portrait'] ?? ''), 'avatarText' => mb_strtoupper(mb_substr($title, 0, 1, 'UTF-8'), 'UTF-8'), 'updatedAt' => $message ? $message['activityTimestamp'] : timestampMs((string)($userRow['_dt'] ?? ''), $messageId), - 'raw' => ['type' => 'single', 'target' => $peerId, 'line' => 0], + 'raw' => [ + 'type' => 'single', + 'target' => $peerId, + 'line' => 0, + 'userId' => (string)($users[$peerId]['_name'] ?? $peerId), + 'userUid' => $peerId, + 'displayName' => (string)($users[$peerId]['_display_name'] ?? ''), + 'mobile' => (string)($users[$peerId]['_mobile'] ?? ''), + 'address' => (string)($users[$peerId]['_address'] ?? ''), + ], ]; } @@ -1536,13 +1611,34 @@ function messageSyncResult( string $userId, array $messages, bool $includeConversations, - int $limit + int $limit, + string $targetId = '', + string $conversationType = 'single' ): array { $result = ['messages' => $messages]; if ($includeConversations) { $result['conversations'] = loadRecentConversations($db, $userId, $limit); } + if ($targetId !== '') { + try { + imAppDb()->exec( + 'create table if not exists `t_web_pinned_messages` (' + . '`user_id` varchar(64) not null, `conversation_type` varchar(16) not null,' + . '`target_id` varchar(128) not null, `message_uid` varchar(32) not null,' + . '`updated_at_ms` bigint not null, primary key (`user_id`, `conversation_type`, `target_id`)' + . ') engine=InnoDB default charset=utf8mb4' + ); + $statement = imAppDb()->prepare( + 'select `message_uid` from `t_web_pinned_messages` where `user_id` = ? and `conversation_type` = ? and `target_id` = ? limit 1' + ); + $statement->execute([$userId, $conversationType, $targetId]); + $result['pinnedMessageUid'] = (string)($statement->fetchColumn() ?: ''); + } catch (Throwable) { + $result['pinnedMessageUid'] = ''; + } + } + return $result; } @@ -1571,7 +1667,7 @@ try { $userId, loadWebGroupMessages(imAppDb(), $userId, $target, $limit, $markRead), $includeConversations, - $limit + $limit, $target, 'group' )); } if (isNativeGroupTarget($db, $target)) { @@ -1580,7 +1676,7 @@ try { $userId, loadNativeGroupMessages($db, $userId, $target, $limit, $markRead), $includeConversations, - $limit + $limit, $target, 'group' )); } respond(0, 'success', messageSyncResult( @@ -1588,7 +1684,7 @@ try { $userId, [], $includeConversations, - $limit + $limit, $target, 'group' )); } if (isWebGroupTarget(imAppDb(), $target)) { @@ -1597,7 +1693,7 @@ try { $userId, loadWebGroupMessages(imAppDb(), $userId, $target, $limit, $markRead), $includeConversations, - $limit + $limit, $target, 'group' )); } $targetId = resolveUserId($db, $target); @@ -1606,7 +1702,7 @@ try { $userId, loadConversationMessages($db, $userId, $targetId, $limit, $markRead), $includeConversations, - $limit + $limit, $targetId, 'single' )); } diff --git a/public/api/send_message.php b/public/api/send_message.php index c06af18..a617725 100644 --- a/public/api/send_message.php +++ b/public/api/send_message.php @@ -8,8 +8,9 @@ require __DIR__ . '/im_web_bootstrap.php'; const WEB_MEDIA_ROOT = '/opt/im-server/media'; const WEB_MEDIA_PUBLIC_PORT = 18000; -const WEB_MEDIA_TYPE_IMAGE = 1; -const WEB_MEDIA_TYPE_FILE = 4; +const WEB_MEDIA_TYPE_IMAGE = 1; +const WEB_MEDIA_TYPE_VIDEO = 3; +const WEB_MEDIA_TYPE_FILE = 4; const WEB_IMAGE_MAX_BYTES = 10 * 1024 * 1024; const WEB_FILE_MAX_BYTES = 50 * 1024 * 1024; @@ -245,13 +246,32 @@ function storeMessageAttachment( ]); } -function attachmentFromRequest(string $messageType): ?array -{ - if (!in_array($messageType, ['image', 'file'], true)) { - return null; - } - - $attachmentFile = $_FILES['attachment'] ?? $_FILES['file'] ?? null; +function attachmentFromRequest(string $messageType): ?array +{ + if (!in_array($messageType, ['image', 'video', 'file'], true)) { + return null; + } + + $forwardUrl = trim((string)($_POST['attachmentUrl'] ?? '')); + if ($forwardUrl !== '') { + $parts = parse_url($forwardUrl); + $scheme = strtolower((string)($parts['scheme'] ?? '')); + if (!in_array($scheme, ['http', 'https'], true) || empty($parts['host']) || strlen($forwardUrl) > 2048) { + respond(400, '媒体地址不合法'); + } + $mime = trim((string)($_POST['attachmentMime'] ?? 'application/octet-stream')); + $name = safeUploadName((string)($_POST['attachmentName'] ?? ($messageType === 'image' ? '图片' : ($messageType === 'video' ? '视频.mp4' : '文件')))); + return [ + 'type' => $messageType, + 'url' => $forwardUrl, + 'name' => $name, + 'mime' => $mime, + 'size' => max(0, (int)($_POST['attachmentSize'] ?? 0)), + 'mediaType' => $messageType === 'image' ? WEB_MEDIA_TYPE_IMAGE : ($messageType === 'video' ? WEB_MEDIA_TYPE_VIDEO : WEB_MEDIA_TYPE_FILE), + ]; + } + + $attachmentFile = $_FILES['attachment'] ?? $_FILES['file'] ?? null; if (!is_array($attachmentFile)) { respond(400, '缺少上传文件'); } @@ -266,11 +286,15 @@ $sender = messageRequestValue($payload, 'sender'); $target = messageRequestValue($payload, 'target'); $text = messageRequestValue($payload, 'text'); $messageType = messageRequestValue($payload, 'messageType', 'text'); -$conversationType = $_POST['conversationType'] ?? $_POST['type'] ?? $payload['conversationType'] ?? $payload['type'] ?? 0; -$isGroupConversation = in_array((string)$conversationType, ['1', 'group', 'channel'], true); +$conversationType = $_POST['conversationType'] ?? $_POST['type'] ?? $payload['conversationType'] ?? $payload['type'] ?? 0; +$isGroupConversation = in_array((string)$conversationType, ['1', 'group', 'channel'], true); +$mentionedUserIds = $payload['mentionedUserIds'] ?? []; +$mentionedUserIds = is_array($mentionedUserIds) + ? array_values(array_unique(array_filter(array_map(static fn($value): string => trim((string)$value), $mentionedUserIds)))) + : []; $attachment = null; -if ($sender === '' || $target === '' || ($text === '' && !in_array($messageType, ['image', 'file'], true))) { +if ($sender === '' || $target === '' || ($text === '' && !in_array($messageType, ['image', 'video', 'file'], true))) { respond(400, '缺少发送者、接收者或消息内容'); } @@ -319,15 +343,19 @@ try { $pushContent = $text !== '' ? $text : ($attachment - ? ((string)$attachment['type'] === 'image' ? '[图片]' : '[文件] ' . (string)$attachment['name']) + ? ((string)$attachment['type'] === 'image' ? '[图片]' : ((string)$attachment['type'] === 'video' ? '[视频]' : '[文件] ' . (string)$attachment['name'])) : $text); - $payloadBody = [ - 'type' => $attachment ? ((string)$attachment['type'] === 'image' ? 3 : 5) : 1, + $payloadBody = [ + 'type' => $attachment ? ((string)$attachment['type'] === 'image' ? 3 : ((string)$attachment['type'] === 'video' ? 6 : 5)) : 1, 'searchableContent' => $pushContent, 'pushContent' => $pushContent, 'content' => $text, - 'persistFlag' => 3, - ]; + 'persistFlag' => 3, + ]; + if ($mentionedUserIds) { + $payloadBody['mentionedType'] = 1; + $payloadBody['mentionedTarget'] = $mentionedUserIds; + } if ($attachment) { $payloadBody['mediaType'] = (int)$attachment['mediaType']; $payloadBody['remoteMediaUrl'] = (string)$attachment['url']; @@ -364,10 +392,10 @@ try { $pushContent = $text !== '' ? $text : ($attachment - ? ((string)$attachment['type'] === 'image' ? '[图片]' : '[文件] ' . (string)$attachment['name']) + ? ((string)$attachment['type'] === 'image' ? '[图片]' : ((string)$attachment['type'] === 'video' ? '[视频]' : '[文件] ' . (string)$attachment['name'])) : $text); $payloadBody = [ - 'type' => $attachment ? ((string)$attachment['type'] === 'image' ? 3 : 5) : 1, + 'type' => $attachment ? ((string)$attachment['type'] === 'image' ? 3 : ((string)$attachment['type'] === 'video' ? 6 : 5)) : 1, 'searchableContent' => $pushContent, 'pushContent' => $pushContent, 'content' => $text, diff --git a/src/components/ChatShell.vue b/src/components/ChatShell.vue index 87d9458..345467b 100644 --- a/src/components/ChatShell.vue +++ b/src/components/ChatShell.vue @@ -21,11 +21,31 @@ import FavoriteList from './favorites/FavoriteList.vue'; import FavoritePanel from './favorites/FavoritePanel.vue'; import { useConversationStore } from '@/stores/conversations'; import { useNavigationStore } from '@/stores/navigation'; -import { useContactStore } from '@/stores/contacts'; +import { useContactStore } from '@/stores/contacts'; +import { useAutoDismiss } from '@/composables/useAutoDismiss'; const conversations = useConversationStore(); const navigation = useNavigationStore(); -const contacts = useContactStore(); +const contacts = useContactStore(); + +useAutoDismiss( + () => conversations.actionError || conversations.actionNotice, + value => { + if ((conversations.actionError || conversations.actionNotice) === value) { + conversations.actionError = ''; + conversations.actionNotice = ''; + } + } +); +useAutoDismiss( + () => contacts.actionError || contacts.actionInfo, + value => { + if ((contacts.actionError || contacts.actionInfo) === value) { + contacts.actionError = ''; + contacts.actionInfo = ''; + } + } +); onMounted(() => { conversations.refreshRemoteConversations(); diff --git a/src/components/DocumentedShell.vue b/src/components/DocumentedShell.vue index bce1bc9..61a6c70 100644 --- a/src/components/DocumentedShell.vue +++ b/src/components/DocumentedShell.vue @@ -2,7 +2,7 @@