From 9ec1aaedd72b16c0d711c31143aaf32894b9ada0 Mon Sep 17 00:00:00 2001 From: fanjiangwei7 Date: Thu, 30 Nov 2023 19:25:21 +0800 Subject: [PATCH] update to version 3.1.2 --- ChangeLog.md | 37 + _icons/512x512.png | Bin 0 -> 32539 bytes _scripts/config.js | 14 +- _scripts/webpack.renderer.config.js | 7 +- entitlements.mac.plist | 16 + package.json | 26 +- src/main/index.js | 113 +- src/renderer/assets/contact.css | 7 + src/renderer/assets/content.css | 179 ++- src/renderer/assets/header.css | 25 +- src/renderer/assets/index.css | 2 + src/renderer/assets/layers.css | 222 ++- src/renderer/assets/login.css | 6 +- src/renderer/assets/snackbar.css | 64 + src/renderer/assets/support.css | 541 +++++++ src/renderer/assets/util.css | 78 +- src/renderer/audio/phone_ring.mp3 | Bin 0 -> 34260 bytes src/renderer/im/floo-2.0.0.js | 2 +- src/renderer/im/floo-3.0.0.js | 2 + src/renderer/image/audio_call.png | Bin 0 -> 2635 bytes src/renderer/image/audio_call_switch.png | Bin 0 -> 3238 bytes src/renderer/image/camera_off.png | Bin 0 -> 4006 bytes src/renderer/image/camera_on.png | Bin 0 -> 2503 bytes src/renderer/image/file.png | Bin 6170 -> 585 bytes src/renderer/image/hangup.png | Bin 0 -> 4131 bytes src/renderer/image/im_closer.png | Bin 0 -> 4831 bytes src/renderer/image/im_max.png | Bin 0 -> 1346 bytes src/renderer/image/im_send.png | Bin 0 -> 395 bytes src/renderer/image/loc2.png | Bin 1378 -> 1745 bytes src/renderer/image/mic_off.png | Bin 0 -> 4358 bytes src/renderer/image/mic_on.png | Bin 0 -> 4301 bytes src/renderer/image/pickup.png | Bin 0 -> 5175 bytes src/renderer/image/picture.png | Bin 7319 -> 784 bytes src/renderer/image/roster.png | Bin 1563 -> 4204 bytes src/renderer/image/speaker_off.png | Bin 0 -> 4956 bytes src/renderer/image/speaker_on.png | Bin 0 -> 4855 bytes src/renderer/main.js | 3 + .../ui/chatting/contact/conContact.vue | 45 +- .../ui/chatting/content/group/chat.vue | 41 +- .../ui/chatting/content/group/header.vue | 8 +- .../ui/chatting/content/group/inputer.vue | 6 +- .../ui/chatting/content/group/renderMsg.vue | 319 +++- src/renderer/ui/chatting/content/index.vue | 2 + .../ui/chatting/content/roster/chat.vue | 68 +- .../ui/chatting/content/roster/header.vue | 16 +- .../ui/chatting/content/roster/inputer.vue | 35 +- .../ui/chatting/content/roster/renderMsg.vue | 319 +++- .../ui/chatting/content/setting/index.vue | 9 +- src/renderer/ui/chatting/header/index.vue | 46 +- src/renderer/ui/chatting/index.vue | 106 +- src/renderer/ui/index.vue | 132 +- src/renderer/ui/layers/addfriend.vue | 16 +- src/renderer/ui/layers/audiocall.vue | 262 ++++ src/renderer/ui/layers/callinvite.vue | 108 ++ src/renderer/ui/layers/groupsetting.vue | 18 +- src/renderer/ui/layers/index.vue | 11 +- src/renderer/ui/layers/joingroup.vue | 13 +- src/renderer/ui/layers/videocall.vue | 340 +++++ src/renderer/ui/login/bindacc.vue | 4 +- src/renderer/ui/login/bindreg.vue | 4 +- src/renderer/ui/login/login.vue | 2 +- src/renderer/ui/login/regedit.vue | 2 +- src/renderer/ui/store/contact.js | 55 +- src/renderer/ui/store/content.js | 27 +- src/renderer/ui/store/header.js | 13 +- src/renderer/ui/store/setting.js | 3 +- src/renderer/ui/support/content/index.vue | 27 + .../ui/support/content/roster/chat.vue | 207 +++ .../ui/support/content/roster/index.vue | 39 + .../ui/support/content/roster/info.vue | 103 ++ .../ui/support/content/roster/inputer.vue | 156 ++ .../ui/support/content/roster/renderMsg.vue | 546 +++++++ src/renderer/ui/support/header/index.vue | 253 ++++ src/renderer/ui/support/index.vue | 56 + src/renderer/ui/third/marked.min.js | 1311 +++++++++++++++++ src/renderer/ui/third/tools.js | 8 +- 76 files changed, 5846 insertions(+), 234 deletions(-) create mode 100644 _icons/512x512.png create mode 100644 entitlements.mac.plist create mode 100644 src/renderer/assets/snackbar.css create mode 100644 src/renderer/assets/support.css create mode 100644 src/renderer/audio/phone_ring.mp3 create mode 100644 src/renderer/im/floo-3.0.0.js create mode 100644 src/renderer/image/audio_call.png create mode 100644 src/renderer/image/audio_call_switch.png create mode 100644 src/renderer/image/camera_off.png create mode 100644 src/renderer/image/camera_on.png create mode 100644 src/renderer/image/hangup.png create mode 100644 src/renderer/image/im_closer.png create mode 100644 src/renderer/image/im_max.png create mode 100644 src/renderer/image/im_send.png create mode 100644 src/renderer/image/mic_off.png create mode 100644 src/renderer/image/mic_on.png create mode 100644 src/renderer/image/pickup.png create mode 100644 src/renderer/image/speaker_off.png create mode 100644 src/renderer/image/speaker_on.png create mode 100644 src/renderer/ui/layers/audiocall.vue create mode 100644 src/renderer/ui/layers/callinvite.vue create mode 100644 src/renderer/ui/layers/videocall.vue create mode 100644 src/renderer/ui/support/content/index.vue create mode 100644 src/renderer/ui/support/content/roster/chat.vue create mode 100644 src/renderer/ui/support/content/roster/index.vue create mode 100644 src/renderer/ui/support/content/roster/info.vue create mode 100644 src/renderer/ui/support/content/roster/inputer.vue create mode 100644 src/renderer/ui/support/content/roster/renderMsg.vue create mode 100644 src/renderer/ui/support/header/index.vue create mode 100644 src/renderer/ui/support/index.vue create mode 100644 src/renderer/ui/third/marked.min.js diff --git a/ChangeLog.md b/ChangeLog.md index 74ba499..4b506ee 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -2,6 +2,43 @@ [蓝莺IM](https://www.lanyingim.com/),是由美信拓扑团队研发的新一代即时通讯云服务,SDK设计简单集成方便,服务采用云原生技术和多云架构,私有云也可按月付费。 +### v3.1.2 20231127 +1.单聊、群聊及LinkChat界面增加流式消息展示功能。 +2.修复历史消息获取的流式消息仍然使用流式消息展示的问题。 +3.文本消息新增功能按钮可以展示消息的扩展信息。 +4.修复AI同时回复多条消息时出现的消息展示错乱问题。 +5.support页面新增参数确保safri跳转聊天时使用同一个账号。 +6.support页面新增其它会话未读数展示功能。 +7.调整markdown信息展示格式及support页面展示格式。 +8.support页面新增其它会话未读数展示功能。 +9.调整markdown信息展示格式及support页面展示格式。 +10.修改音视频信令逻辑,新增 rtc record 指令用于展示通话记录。 +11.修改 sdk 处理 rtc 信令逻辑,sdk 中只存储 rtc record 信令,其它 rtc 信令不保存。 +12.修改 sdk 处理 会话最新消息逻辑,过滤 rtc 非 record 消息,确保 conversation 中会话最新消息不会展示其它 rtc 消息。 +13.修改音视频通话 janus 信令执行流程,会话发起端在接收到对方的 pickup 消息之后才会开始加入房间等后续逻辑处理,在两端都发布流之后才正式进入通话状态。 +14.修改通话接收端逻辑,接收端同样使用 initRTCEngine 初始化音视频环境,初始化后执行 joinRoom 执行加入房间逻辑。 +15.修改对端音视频流检测逻辑,检测到对端异常结束流发布后自动执行挂断操作。 +16.通话建立之前,通话界面仅挂断按钮有效,屏蔽其它按键操作。 +17.通话建立之前,使用本地渲染来展示本地视频展示。 +18.修改支持页面启动会话页面逻辑,使用服务器返回凭证获取用户信息进行登录,确保 safari 浏览器多tab 页面下使用相同账户登录。 +19.增加延迟启动音视频通话逻辑,确保过滤该设备历史离线队列中多设备支持其他端同步的历史通话消息唤醒音视频呼叫。 + +### v3.1.1 20230717 +1.PC端支持Ubuntu安装包。 +2.同步floo-web解决音视频相关bug。 + +### v3.1.0 20230620 +1. 单聊新增1v1音视频功能。 + +### v3.0.1 20230310 +1. 修复删除会话后不会收到删除会话事件的问题。 +2. 增加好友申请事件通知(onRosterApplied)。 +3. 修复退出并登录新用户时,可能会加载旧用户的数据的问题。 +4. 支持设置sdk日志等级。 +5. 通讯录页面增加客服列表。 +6. 修复退出群不会触发onGroupMemberChanged事件的问题。 +7. 修复noticeStore.saveNotice报错问题。 + ### v3.0.0 20220425 1.启用蓝莺产品名称,基于原"美信拓扑IM"v2.9.10发布全新版本。 diff --git a/_icons/512x512.png b/_icons/512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..c8ae447ab64d3d135fabc235968cd38128087321 GIT binary patch literal 32539 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

;qpYIDe|&Lst2aaryi;agSKYfcj4%0rtZ99;OEg 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 i3Qe+p1Ak1GY#) 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 s|Ck?x3%{@9LD`mr^QW + + + + com.apple.security.cs.allow-jit + + com.apple.security.cs.allow-unsigned-executable-memory + + com.apple.security.cs.allow-dyld-environment-variables + + com.apple.security.device.audio-input + + com.apple.security.device.camera + + + \ No newline at end of file diff --git a/package.json b/package.json index eb24946..8d77bd7 100644 --- a/package.json +++ b/package.json @@ -10,23 +10,26 @@ "vue-electron": "^1.0.6", "vue-router": "^3.1.3", "vue-toasted": "^1.1.27", - "vuex": "^3.1.1" + "vuex": "^3.1.1", + "webrtc-adapter": "^8.1.2", + "jquery": "3.6.1", + "vue-js-popover": "^1.2.1" }, "description": "蓝莺IM", "devDependencies": { "@babel/core": "^7.6.4", - "@babel/plugin-proposal-class-properties": "^7.5.5", - "@babel/plugin-proposal-object-rest-spread": "^7.6.2", + "@babel/plugin-transform-class-properties": "^7.23.3", + "@babel/plugin-transform-object-rest-spread": "^7.23.3", "@babel/preset-env": "^7.6.3", "@babel/preset-typescript": "^7.6.0", "@typescript-eslint/eslint-plugin": "^2.4.0", "@typescript-eslint/parser": "^2.4.0", "acorn": "^7.0.0", - "babel-eslint": "^10.0.3", + "@babel/eslint-parser": "^7.23.3", "babel-loader": "^8.0.6", - "babili-webpack-plugin": "^0.1.2", + "babel-preset-minify": "^0.5.2", "cfonts": "^2.4.8", - "copy-webpack-plugin": "^5.1.1", + "copy-webpack-plugin": "^10.0.0", "css-loader": "^3.2.0", "devtron": "^1.4.0", "electron": "18.1.0", @@ -35,7 +38,7 @@ "element-ui": "^2.12.0", "eslint": "^6.2.2", "eslint-config-prettier": "^6.1.0", - "eslint-loader": "^3.0.3", + "eslint-webpack-plugin": "^3.0.3", "eslint-plugin-html": "^5.0.3", "eslint-plugin-prettier": "^3.1.1", "eslint-plugin-vue": "^5.2.3", @@ -46,9 +49,11 @@ "copy-webpack-plugin": "^5.1.1", "cross-env": "^3.2.4", "long": "^4.0.0", + "marked-highlight": "^2.0.6", "mini-css-extract-plugin": "^0.9.0", "moment": "^2.24.0", "multispinner": "^0.2.1", + "json-bigint": "1.0.0", "lodash": "^4.17.11", "node-loader": "^0.6.0", "native-ext-loader": "2.3.0", @@ -85,6 +90,7 @@ "type": "git", "url": "git+https://github.com/mubaidr/vue-electron-template.git" }, + "permissions":["camera", "microphone", "audio-capture", "video-capture"], "scripts": { "build": "npm run pack && node _scripts/config.js", "debug": "node _scripts/dev-runner.js --remote-debug", @@ -96,7 +102,7 @@ "pack:workers": "cross-env webpack --mode=production --env.NODE_ENV=production --hide-modules --config _scripts/webpack.workers.config.js", "pack:win-clean" : "cd dist && rm flooMac.node && rm libcrypto.1.0.0.dylib && cd ..", "pack:mac-clean" : "cd dist && rm flooWin.node && rm LIBCURL.* && cd ..", - "pack:web":"cp -r src/renderer/image dist && sed -i '' 's/\\/image\\//.\\/image\\//g' dist/renderer.js && sed -i '' 's/packages.\\/image\\//packages\\/image\\//g' dist/renderer.js", + "pack:web":"cp -r src/renderer/image dist && cp -r src/renderer/audio dist && sed -i '' 's/\\/audio\\//.\\/audio\\//g' dist/renderer.js && sed -i '' 's/\\/image\\//.\\/image\\//g' dist/renderer.js && sed -i '' 's/packages.\\/image\\//packages\\/image\\//g' dist/renderer.js", "postinstall": "electron-builder install-app-deps", "prettier": "prettier --write \"src/**/*.{js,ts,vue}\"", "release": "build", @@ -106,6 +112,8 @@ "win-arm64": "rm -rf dist && npm run pack && electron-builder --win --arm64 --config=_scripts/config.js", "mac": "rm -rf dist && npm run pack && electron-builder --mac --x64 --config=_scripts/config.js", "mac-arm64": "rm -rf dist && npm run pack && electron-builder --mac --arm64 --config=_scripts/config.js", + "ubuntu": "rm -rf dist && npm run pack && electron-builder --linux --x64 --config=_scripts/config.js", + "ubuntu-arm64": "rm -rf dist && npm run pack && electron-builder --linux --arm64 --config=_scripts/config.js", "build:dir": "node .electron-vue/build.js && electron-builder --dir", "build:clean": "cross-env BUILD_TARGET=clean node .electron-vue/build.js", "build:web": "cross-env BUILD_TARGET=web node .electron-vue/build.js", @@ -115,5 +123,5 @@ "all": "node .electron-vue/build.js && electron-builder", "w": "node .electron-vue/build.js" }, - "version": "3.0.0" + "version": "3.1.2" } diff --git a/src/main/index.js b/src/main/index.js index c77160d..3ab3d93 100644 --- a/src/main/index.js +++ b/src/main/index.js @@ -1,22 +1,29 @@ -import { app, BrowserWindow, Menu, Tray } from 'electron' +import { app, BrowserWindow, Menu, Tray, ipcMain, systemPreferences, shell } from 'electron' import { productName } from '../../package.json' var os = require("os"); var platform = os.platform(); // set app name -app.setName(productName) +if (platform === "linux") { + app.setName("lanying IM") +} else { + app.setName(productName) +} // disable electron warning process.env.ELECTRON_DISABLE_SECURITY_WARNINGS = 'true' const gotTheLock = app.requestSingleInstanceLock() const isDev = process.env.NODE_ENV === 'development' -let mainWindow +let windows = [] +//let mainWindow let willQuitApp = false; let tray = null +let isFirstWindow = true // only allow single instance of application +/* if (!isDev) { if (gotTheLock) { app.on('second-instance', () => { @@ -35,6 +42,7 @@ if (!isDev) { showDevTools: !(process.env.RENDERER_REMOTE_DEBUGGING === 'true'), }) } +*/ async function installDevTools () { try { @@ -59,7 +67,7 @@ function createWindow () { height = 670 } - mainWindow = new BrowserWindow({ + let mainWindow = new BrowserWindow({ backgroundColor: '#fff', width: width, height: height, @@ -73,16 +81,26 @@ function createWindow () { nodeIntegration: true, nodeIntegrationInWorker: false, contextIsolation: false, - webSecurity: false, + webSecurity: false, + partition: isFirstWindow ? 'persist:userData' : String(+new Date()), }, show: false, + icon: platform === "linux" ? `${__dirname}/../_icons/icon.png` : '' }) - + windows.push(mainWindow) + if (isFirstWindow) { + isFirstWindow = false + } + if (platform != "darwin") { if (isDev) { tray = new Tray(`${__dirname}/../../_icons/icon.ico`) } else { - tray = new Tray(`${__dirname}/../_icons/icon.ico`) + if (platform === "linux") { + tray = new Tray(`${__dirname}/../_icons/icon.png`) + } else { + tray = new Tray(`${__dirname}/../_icons/icon.ico`) + } } tray.on('click', () => { mainWindow.show() @@ -105,6 +123,22 @@ function createWindow () { .replace(/\\/g, '\\\\') } + mainWindow.webContents.on('will-navigate', (event, url) => { + if (!url.endsWith('/app/dist/index.html')) { + event.preventDefault(); + shell.openExternal(url); + } + }) + + mainWindow.webContents.setWindowOpenHandler((data) => { + if (data.url && !data.url.endsWith('/app/dist/index.html')) { + shell.openExternal(data.url) + return { + action: 'deny' + } + } + }) + // Show when loaded mainWindow.on('ready-to-show', () => { mainWindow.show() @@ -112,12 +146,27 @@ function createWindow () { }) mainWindow.on('close', e => { + /* if (willQuitApp) { mainWindow = null } else { e.preventDefault(); mainWindow.hide(); } + */ + }) +} + +if (platform != "linux") { + ipcMain.on("getMediaAccessStatus", () => { + let microphoneStatus = systemPreferences.getMediaAccessStatus('microphone') + if (microphoneStatus !== 'granted') { + systemPreferences.askForMediaAccess('microphone') + } + let cameraStatus = systemPreferences.getMediaAccessStatus('camera') + if (cameraStatus !== 'granted') { + systemPreferences.askForMediaAccess('camera') + } }) } @@ -132,18 +181,19 @@ app.on('ready', () => { }) app.on('window-all-closed', () => { - if (process.platform !== 'darwin') { + //if (process.platform !== 'darwin') { app.quit() - } + //} }) app.on('activate', () => { + /* if (mainWindow === null) { createWindow() } else { mainWindow.show() mainWindow.focus() - } + }*/ }) app.on('before-quit', () => { @@ -171,12 +221,12 @@ app.on('ready', () => { */ const sendMenuEvent = async data => { - mainWindow.webContents.send('change-view', data) + //mainWindow.webContents.send('change-view', data) } const template = [ { - label: app.getName(), + label: productName, submenu: [ { label: 'Home', @@ -192,9 +242,37 @@ const template = [ { role: 'quit', accelerator: 'Alt+F4' }, ], }, + { + label: 'Window', + submenu: [ + { + label: 'new Window', + click: async () => { + createWindow() + } + } + ] + }, + { + label: 'Edit', + submenu: [ + { role: 'undo' }, + { role: 'redo' }, + { type: 'separator' }, + { role: 'cut' }, + { role: 'copy' }, + { role: 'paste' }, + { role: 'delete' }, + { type: 'separator' }, + { role: 'selectAll' } + ], + }, { role: 'help', submenu: [ + { + role: 'toggleDevTools' + }, { label: 'Get Help', role: 'help', @@ -216,6 +294,8 @@ const template = [ ] function setMenu () { + + /* if (process.platform === 'darwin') { template.unshift({ label: app.getName(), @@ -232,11 +312,6 @@ function setMenu () { ], }) - // @ts-ignore - template.push({ - role: 'window', - }) - // @ts-ignore template.push({ role: 'help', @@ -245,9 +320,9 @@ function setMenu () { // @ts-ignore template.push({ role: 'services' }) } + */ // @ts-ignore const menu = Menu.buildFromTemplate(template) - //Menu.setApplicationMenu(menu) - //Menu.setApplicationMenu(null) + Menu.setApplicationMenu(menu) } diff --git a/src/renderer/assets/contact.css b/src/renderer/assets/contact.css index 9a29d3c..723f0b0 100644 --- a/src/renderer/assets/contact.css +++ b/src/renderer/assets/contact.css @@ -53,6 +53,9 @@ font-size: 14px; margin-left: 15px; color: #333; + text-overflow: ellipsis; + overflow: hidden; + max-width: 66.6%; } .contact .l_conversation { @@ -101,6 +104,9 @@ line-height: 20px; padding-top: 12px; color: #000; + text-overflow: ellipsis; + overflow: hidden; + max-width: 40%; } .contact .l_conversation .item .last_msg_time { @@ -120,4 +126,5 @@ text-overflow: ellipsis; white-space: nowrap; overflow: hidden; + max-width: 66.6%; } diff --git a/src/renderer/assets/content.css b/src/renderer/assets/content.css index a7fcf33..08efdd5 100644 --- a/src/renderer/assets/content.css +++ b/src/renderer/assets/content.css @@ -21,7 +21,7 @@ text-align: center; display: block; margin: 0 auto; - background-color: #319de1; + background-color: #47b6ff; border-radius: 5px; } @@ -39,18 +39,28 @@ background-color: #f0f0f0; } -.content .header .delete_button { +.content .header .header_items { position: absolute; - right: 24px; - width: 64px; - height: 18px; - line-height: 32px; - margin-top: -32px; + display: flex; + flex-direction: row; + width: 100%; +} + +.content .header .header_items .name { + text-overflow: ellipsis; + overflow: hidden; + max-width: 33.3%; +} + +.content .header .header_items .delete_button { + position: absolute; + right: 0; font-size: 12px; - color: #319de1; + color: #47b6ff; + padding-right: 20px; } -.content .header .delete_button:hover { +.content .header .header_items .delete_button:hover { color: #880000; } @@ -72,19 +82,52 @@ background-color: #f6f6f6; } +.content .list .messageFrame .contentFrame .c_content_ext { + color: gray; +} + +.content .list .messageFrame .contentFrame .c_content_more { + display: flex; + flex-direction: column; +} + +.content .list .messageFrame .contentFrame .c_content_more .c_content_text_more { + display: flex; + flex-direction: column; +} + +.content .list .messageFrame .contentFrame .c_content_text_more .c_ext_title { + color: rgb(180, 180, 180); + border-radius: 20px 20px 20px 20px; + background-color: rgb(230, 230, 230); + font-size: 12px; + min-width: 60px; + max-width: 60px; + text-align: center; + margin-left: 2px; + margin-bottom: 2px; +} + .content .list .messageFrame .contentFrame .c_content { word-break: break-all; - max-width: 300px; border-radius: 3px; - padding: 10px 15px; + margin-left: 6px; + margin-right: 6px; + padding: 0 14px 12px 12px; line-height: 16px; - font-size: 12px; position: relative; + max-width: 100%; } -.content .list .messageFrame .contentFrame .c_content .h_image { - position: absolute; - top: 40%; +.content .list .messageFrame .contentFrame .c_content .c_markdown { + line-height: normal; + word-wrap: break-word; + word-break: break-all; + white-space: normal; +} + +.content .list .messageFrame .contentFrame .c_content_more .h_image { + position: relative; width: 21px; height: 10px; border: 1px solid #d1d1d1; @@ -95,14 +138,14 @@ } .self .h_image { - left: -30px; + margin-left: 40px; } .roster .h_image { - right: -30px; + margin-left: 3px; } -.content .list .messageFrame .contentFrame .c_content .h_image img { +.content .list .messageFrame .contentFrame .c_content_more .h_image img { width: 15px; vertical-align: middle; } @@ -116,13 +159,13 @@ } .content .list .messageFrame .rosterInfo { - height: 24px; - width: 24px; + height: 32px; + width: 32px; } .content .list .messageFrame .rosterInfo img { - width: 24px; - height: 24px; + width: 32px; + height: 32px; border-radius: 3px; } @@ -135,20 +178,49 @@ } .self .contentFrame { - margin-right: 32px; + float: right; + text-align: right; + display: inline-flex; + align-items: flex-end; + max-width: 66.6%; + min-width: max(66.6%, 252px); } .roster .contentFrame { - margin-left: 32px; + float: left; + text-align: left; + display: block; + max-width: 66.6%; + min-width: max(66.6%, 252px); } .contentFrame .username { font-size: 12px; color: #000; - padding: 0; + padding: 0 0 5px 10px; margin: 0; } +.self .contentFrame .user_content { + float: left; + text-align: left; + display: inline-flex; + flex-direction: row; + justify-content: flex-end; + align-items: flex-end; + width: 100%; +} + +.roster .contentFrame .user_content { + float: left; + text-align: left; + display: inline-flex; + flex-direction: row-reverse; + justify-content: flex-end; + align-items: flex-end; + width: 100%; +} + .history .messageExt { display: none; } @@ -160,9 +232,31 @@ .content .c_content { white-space: pre-line; } + +.content .c_content table { + display: block; + overflow-x: auto; + border-collapse: collapse; + background-color: #fafafa; +} + +.content .c_content table, +th, +td { + border: 1px solid gray; +} + +.content .c_content th, +td { + padding-left: 5px; + padding-right: 5px; + min-width: 50px; +} + .content .self .c_content { float: right; - background: #b3d0fd; + background: #b2d2fb; + text-align: left; } .content .roster .c_content { @@ -175,6 +269,10 @@ max-height: 200px; } +.content .c_content .c_image { + padding-top: 14px; +} + .content .notice_frame { height: 60px; line-height: 60px; @@ -211,6 +309,7 @@ } .content .c_content .loc_frame { + padding-top: 14px; overflow: hidden; } @@ -228,6 +327,7 @@ } .content .c_content .audio_frame { + padding-top: 14px; overflow: hidden; } @@ -235,7 +335,7 @@ width: 20px; height: 25px; float: left; - padding: 7px 20px; + padding: 0px 10px; } .content .c_content .audio_txt { @@ -245,6 +345,17 @@ color: #4a90e2; } +.content [data-popover='tooltip'] { + background: white; + color: gray; + font-size: 10px; + line-height: 0.8; + width: 50px !important; + text-align: center; + float: left; + top: calc(75% + 72px) !important; +} + /** input **/ .content .inputer_frame { background-color: #f6f6f6; @@ -279,6 +390,14 @@ background-image: url(/image/loc2.png); } +.content .inputer_frame .attach .videocall { + background-image: url(/image/camera_on.png); +} + +.content .inputer_frame .attach .audiocall { + background-image: url(/image/audio_call.png); +} + .content .inputer_frame .attach .mentionList { position: absolute; width: 150px; @@ -478,6 +597,10 @@ text-align: right; padding: 0; margin: 0; + display: block; + text-overflow: ellipsis; + overflow: hidden; + padding-left: 33.3%; } .user_setting .line .switcher { @@ -486,7 +609,7 @@ .user_setting .logout { line-height: 32px; - background: #319de1; + background: #47b6ff; border-radius: 3px; font-size: 14px; text-align: center; diff --git a/src/renderer/assets/header.css b/src/renderer/assets/header.css index 5455d35..46d3583 100644 --- a/src/renderer/assets/header.css +++ b/src/renderer/assets/header.css @@ -1,6 +1,6 @@ .header { height: 48px; - background: #409fe0; + background: #47b6ff; } .header .searchArea { @@ -48,6 +48,20 @@ margin: 14px 36px 0px 0px; } +.header .tab .stab .unread_number { + position: relative; + left: -5px; + color: white; + background: red; + font-size: 10px; + font-weight: bold; + padding: 0 5px; + border-radius: 10px; + line-height: 14px; + min-width: 8px; + text-align: center; +} + .header .tab .stab img { width: 20px; height: 20px; @@ -79,3 +93,12 @@ font-size: 16px; color: white; } + +.header .supportname { + float: right; + margin-right: 20px; + line-height: 20px; + margin-left: 6px; + font-size: 16px; + color: white; +} diff --git a/src/renderer/assets/index.css b/src/renderer/assets/index.css index 0f69bab..4177cfe 100644 --- a/src/renderer/assets/index.css +++ b/src/renderer/assets/index.css @@ -5,8 +5,10 @@ @import './header.css'; @import './contact.css'; @import './content.css'; +@import './support.css'; @import './setting.css'; @import './layers.css'; +@import './snackbar.css'; /**** log 的css 先放这里 ***/ #slog { diff --git a/src/renderer/assets/layers.css b/src/renderer/assets/layers.css index 36f915b..cb16feb 100644 --- a/src/renderer/assets/layers.css +++ b/src/renderer/assets/layers.css @@ -31,7 +31,7 @@ .layer .layer_header { height: 52px; line-height: 52px; - background: #409fe0; + background: #47b6ff; position: relative; text-indent: 48px; font-size: 16px; @@ -74,7 +74,7 @@ text-align: center; line-height: 25px; color: #000; - background: #409fe0; + background: #47b6ff; font-size: 14px; float: right; border-radius: 3px; @@ -110,6 +110,35 @@ padding: 2px 5px; } +.layer .layer_content .search_item { + padding: 10px 0; +} + +.layer .layer_content .search_item .item { + display: flex; + flex-direction: row; +} + +.layer .layer_content .search_item .name { + display: block; + text-overflow: ellipsis; + overflow: hidden; + margin-left: 20px; + max-width: 66.6%; +} + +.layer .layer_content .search_item .item .rname { + position: absolute; + right: 0; + text-align: center; + min-width: 33.3%; +} + +.layer .layer_content .search_item .action_item { + margin-top: 5px; + margin-left: 15px; +} + .layer .layer_footer { height: 66px; padding-right: 32px; @@ -121,7 +150,7 @@ text-align: center; line-height: 40px; color: #000; - background: #409fe0; + background: #47b6ff; font-size: 14px; float: right; margin-right: 16px; @@ -261,6 +290,189 @@ z-index: 3; } +.call_panel { + position: fixed; + max-width: 360px; + max-height: 640px; + width: 100%; + height: 100%; + border-radius: 5px; + left: 50%; + top: 50%; + transform: translate(-50%, -50%); + background: rgb(246, 246, 246); + text-align: center; + text-indent: 5px; + font-size: 8px; + z-index: 3; +} + +.call_panel .call_time { + font-size: 14px; + z-index: 6; + position: relative; +} + +.call_panel .info { + width: 100%; + height: 80px; + top: 100px; + position: absolute; + z-index: 6; +} + +.call_panel .layer { + width: 240px; + height: 80px; + top: 450px; + margin-left: 60px; + margin-right: 60px; + background: rgb(246, 246, 246); + position: absolute; + border: 0px; + display: flex; +} + +.call_panel .item { + width: 80px; + height: 80px; + background: rgb(246, 246, 246); + display: flex; + flex-direction: column; +} + +.call_panel .caller_layer { + position: absolute; + text-indent: 0px; + top: 540px; + left: 50%; + margin-left: -25px; +} + +.call_panel .callee_layer { + position: absolute; + text-indent: 0px; + width: 240px; + top: 540px; + margin-left: 60px; + margin-right: 60px; + display: flex; + justify-content: space-around; +} + +.call_panel .button { + border-radius: 50%; + width: 50px; + height: 50px; + background-color: white; + position: relative; + margin: auto; + padding: 5px 5px; + border-width: 0px; + z-index: 6; +} + +.call_panel .avatar img.av { + width: 50px; + height: 50px; + position: relative; + margin-bottom: 0px; + z-index: 6; +} + +.call_panel span.display_info { + color: black; + z-index: 6; +} + +.call_panel .panel_remote { + height: 100%; + width: 100%; + left: 0px; + top: 0px; + margin: auto; + border-radius: 5px; + background: rgb(246, 246, 246); + position: absolute; + display: block; + z-index: 4; + object-fit: cover; +} + +.call_panel .panel_local { + height: 160px; + width: 90px; + left: 0px; + top: 0px; + margin: auto; + border-radius: 5px; + background: rgb(246, 246, 246); + position: absolute; + display: block; + z-index: 5; +} + +.call_invite_panel { + position: fixed; + max-width: 300px; + max-height: 120px; + width: 300px; + height: 120px; + border-radius: 5px; + left: 50%; + top: 50%; + transform: translate(-50%, -50%); + background: rgb(246, 246, 246); + font-size: 8px; + z-index: 3; +} + +.call_invite_panel .info { + width: 300px; + height: 80px; + top: 5px; + left: 5px; + position: absolute; + z-index: 6; + display: flex; +} + +.call_invite_panel .info .avatar img.av { + width: 50px; + height: 50px; + border-radius: 5px; + position: relative; + margin-bottom: 0px; + z-index: 6; +} + +.call_invite_panel .title { + left: 55px; + position: absolute; +} + +.call_invite_panel .layer { + width: 120px; + height: 50px; + top: 60px; + left: 170px; + background: rgb(246, 246, 246); + position: absolute; + border: 0px; + display: flex; +} + +.call_invite_panel .button { + border-radius: 50%; + width: 50px; + height: 50px; + background-color: white; + position: relative; + padding: 5px 5px; + border-width: 0px; + z-index: 6; +} + .change_appid_layer { position: absolute; left: 280px; @@ -296,7 +508,7 @@ .group_setting_layer .group_setting_group .category a { float: left; padding: 0 8px; - background: #319de1; + background: #47b6ff; color: white; font-size: 12px; cursor: pointer; @@ -325,7 +537,7 @@ } .group_setting_layer .group_setting_group .setting_lists .category a { - background: #b3d0fd; + background: #47b6ff; } /** search result ***/ diff --git a/src/renderer/assets/login.css b/src/renderer/assets/login.css index 035b794..76b0af9 100644 --- a/src/renderer/assets/login.css +++ b/src/renderer/assets/login.css @@ -79,7 +79,7 @@ } .logo img { - height: 60px; + height: 50px; } .login .canvas { @@ -109,7 +109,7 @@ margin-left: 28px; margin-right: 28px; line-height: 38px; - background: #409fe0; + background: #47b6ff; border-radius: 4px; font-size: 14px; text-align: center; @@ -176,7 +176,7 @@ } .login .smallbtn { - background: #409fe0; + background: #47b6ff; line-height: 32px; margin-left: 170px; text-align: center; diff --git a/src/renderer/assets/snackbar.css b/src/renderer/assets/snackbar.css new file mode 100644 index 0000000..7293cd2 --- /dev/null +++ b/src/renderer/assets/snackbar.css @@ -0,0 +1,64 @@ +#lanying-snackbar { + visibility: hidden; + min-width: 250px; + margin-left: -125px; + background-color: #333; + color: #fff; + text-align: center; + border-radius: 2px; + padding: 16px; + position: fixed; + z-index: 1; + left: 50%; + font-size: 17px; +} + +#lanying-snackbar.show { + visibility: visible; + -webkit-animation: fadein 0.5s, fadeout 0.5s 2.5s; + animation: fadein 0.5s, fadeout 0.5s 2.5s; +} + +@-webkit-keyframes fadein { + from { + bottom: 0; + opacity: 0; + } + to { + bottom: 30px; + opacity: 1; + } +} + +@keyframes fadein { + from { + bottom: 0; + opacity: 0; + } + to { + bottom: 30px; + opacity: 1; + } +} + +@-webkit-keyframes fadeout { + from { + bottom: 30px; + opacity: 1; + } + to { + bottom: 0; + opacity: 0; + } +} + +@keyframes fadeout { + from { + bottom: 30px; + opacity: 1; + } + to { + bottom: 0; + opacity: 0; + } +} diff --git a/src/renderer/assets/support.css b/src/renderer/assets/support.css new file mode 100644 index 0000000..0200257 --- /dev/null +++ b/src/renderer/assets/support.css @@ -0,0 +1,541 @@ +.support-content { + background: #fafbfc; + height: calc(100% - 50px); + margin-left: 240px; + border-radius: 0px 0px 10px 0px; + overflow: hidden; + margin-left: 0px; + border-radius: 0px 0px 10px 10px; + min-width: 360px; +} + +/** roster info ***/ +.support-content .roster_info .remove { + height: 44px; + margin-top: 40px; +} + +.support-content .roster_info .remove span { + width: 300px; + height: 44px; + font-size: 16px; + line-height: 44px; + color: #fff; + text-align: center; + display: block; + margin: 0 auto; + background-color: #47b6ff; + border-radius: 5px; +} + +.support-content .header { + height: 39px; + line-height: 40px; + position: relative; + border-bottom: 1px solid #ececec; + border-radius: 0px; + text-indent: 15px; + background-color: #f0f0f0; +} + +.support-content .header .header_items { + position: absolute; + display: flex; + flex-direction: row; + width: 100%; +} + +.support-content .header .header_items .name { + text-overflow: ellipsis; + overflow: hidden; + max-width: 33.3%; +} + +.support-content .header .delete_button { + position: absolute; + right: 0; + font-size: 12px; + color: #47b6ff; + padding-right: 20px; +} + +.support-content .header .delete_button:hover { + color: #880000; +} + +.support-content .list { + width: auto; + height: calc(100% - 99px); + overflow-y: auto; + background-color: #f6f6f6; +} + +.support-content .list .messageFrame { + padding: 10px 15px; + overflow: hidden; + position: relative; + background-color: #f6f6f6; +} + +.support-content .list .timeline { + background-color: #f6f6f6; +} + +.support-content .list .messageFrame .support-contentFrame .c_content_ext { + color: gray; +} + +.support-content .list .messageFrame .support-contentFrame .c_content_more { + display: flex; + flex-direction: row; + padding-top: 5px; + margin-right: 5px; +} + +.support-content .list .messageFrame .support-contentFrame .c_ext_title { + color: rgb(180, 180, 180); + border-radius: 20px 20px 20px 20px; + background-color: rgb(230, 230, 230); + font-size: 12px; + min-width: 60px; + max-width: 60px; + text-align: center; + margin-left: 2px; + margin-right: 2px; + margin-bottom: 5px; +} + +.support-content .list .messageFrame .support-contentFrame .c_content { + word-break: break-all; + border-radius: 3px; + padding: 0px 10px 15px; + line-height: 18px; + position: relative; + max-width: calc(100% - 60px); +} + +.support-content .list .messageFrame .support-contentFrame .c_content .c_markdown { + line-height: normal; + word-wrap: break-word; + word-break: break-all; + white-space: normal; +} + +.support-contentFrame .messageExt { + clear: both; + margin-top: 3px; + font-size: 10px; + color: #ccc; + overflow: hidden; +} + +.support-content .list .messageFrame .rosterInfo { + height: 32px; + width: 32px; +} + +.support-content .list .messageFrame .rosterInfo img { + width: 32px; + height: 32px; + border-radius: 3px; +} + +.self .rosterInfo { + float: right; +} + +.roster .rosterInfo { + float: left; +} + +.self .support-contentFrame { + float: right; + text-align: right; + display: inline-flex; + align-items: flex-end; + max-width: 72%; + min-width: max(66.6%, 290px); +} + +.roster .support-contentFrame { + float: left; + text-align: left; + display: block; + max-width: 72%; + min-width: max(66.6%, 290px); +} + +.support-contentFrame .username { + font-size: 12px; + color: #000; + padding: 0 0 5px 10px; + margin: 0; +} + +.self .support-contentFrame .user_content { + float: left; + text-align: left; + display: flex; + flex-direction: column; + align-items: flex-end; + width: 100%; +} + +.roster .support-contentFrame .user_content { + float: left; + text-align: left; + display: flex; + flex-direction: column; + align-items: baseline; + width: 100%; +} + +.history .messageExt { + display: none; +} + +.messageExt .item { + line-height: 25px; +} + +.support-content .c_content { + white-space: pre-line; + padding: 0 14px 12px 12px; + border-radius: 3px; + margin-left: 6px; + margin-right: 6px; +} + +.support-content .c_content table { + display: block; + overflow-x: auto; + border-collapse: collapse; + background-color: #fafafa; +} + +.support-content .c_content table, +th, +td { + border: 1px solid gray; +} + +.support-content .c_content th, +td { + padding-left: 5px; + padding-right: 5px; + min-width: 50px; +} + +.support-content .self .c_content { + float: right; + background: #b2d2fb; + text-align: left; +} + +.support-content .roster .c_content { + float: left; + background: white; +} + +.support-content .c_content img { + max-width: 200px; + max-height: 200px; +} + +.support-content .notice_frame { + height: 60px; + line-height: 60px; + text-align: center; + color: #83898f; + font-size: 14px; +} + +.support-content .c_content .video_frame { + position: relative; + max-width: 200px; +} + +.support-content .c_content .video_frame .preview { + display: block; + max-width: 200px; + z-index: 1; +} + +.support-content .c_content .video_frame .play { + position: absolute; + width: 64px; + height: auto; + left: 50%; + top: 50%; + transform: translate(-50%, -50%); + align: center; + opacity: 0.65; + z-index: 2; +} + +.support-content .c_content .video_frame:hover .play { + opacity: 1; +} + +.support-content .c_content .loc_frame { + overflow: hidden; +} + +.support-content .c_content .loc_frame .loc { + width: 40px; + height: 40px; + float: left; +} + +.support-content .c_content .loc_txt { + margin-left: 5px; + line-height: 40px; + cursor: pointer; + color: #4a90e2; +} + +.support-content .c_content .audio_frame { + overflow: hidden; +} + +.support-content .c_content .audio_frame .audio { + width: 20px; + height: 25px; + float: left; + padding: 7px 20px; +} + +.support-content .c_content .audio_txt { + margin-left: 8px; + line-height: 40px; + cursor: pointer; + color: #4a90e2; +} + +/** input **/ +.support-content .inputer_frame { + background-color: #f6f6f6; + border-radius: 0px 0px 10px 10px; +} + +.support-content .inputer_frame .attach { + height: 28px; + overflow: hidden; + /*background-color: #f6f6f6;*/ +} + +.support-content .inputer_frame .support_link { + height: 22px; + width: 100%; + text-align: right; + /*opacity: 0.3;*/ + background-color: #f6f6f6; + border-radius: 0px 0px 10px 10px; +} + +.support-content .inputer_frame .support_link a { + text-decoration: none; + margin-right: 10px; + color: gray; + text: bold; +} + +.support-content .inputer_frame .attach .ico { + float: left; + cursor: pointer; + width: 24px; + height: 24px; + margin-top: 2px; + margin-left: 10px; + background-size: 24px 24px; +} + +.support-content .inputer_frame .attach .image { + background-image: url(/image/picture.png); +} + +.support-content .inputer_frame .attach .file { + background-image: url(/image/file.png); +} + +.support-content .inputer_frame .attach .location { + background-image: url(/image/loc2.png); +} + +.support-content .inputer_frame .attach .mentionList { + position: absolute; + width: 150px; + height: 200px; + top: -180px; + left: 0; + background: orange; + overflow-y: auto; +} + +.support-content .inputer_frame .input { + border: 2px solid #e6e6e6; +} + +.support-content .inputer_frame .input .input_text { + height: 40px; + background-color: #f6f6f6; + width: calc(100% - 60px); +} + +.support-content .chat-index .inputer_frame { + box-sizing: border-box; + position: relative; +} + +.support-content .chat-index .inputer_frame textarea { + height: 100%; + width: 100%; + box-sizing: border-box; + outline: none; + padding-left: 10px; + padding-top: 10px; + /*padding-bottom: 0px;*/ + font-size: 14px; + border: none; +} + +.support-content .chat-index .inputer_frame textarea::placeholder { + color: #bbbbbb; +} + +.support-content .chat-index [data-popover='tooltip'] { + background: white; + color: gray; + font-size: 10px; + line-height: 0.8; + width: 50px !important; + text-align: center; + margin-left: 10px; +} + +/**** 群 ...*****/ +.support-content .chat-index .header .mention_title { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 20px; + background: #eee; + color: #880000; + line-height: 20px; +} + +.support-content .chat-index .header .mention_title .text { + line-height: 20px; +} + +.support-content .chat-index .header .mention_title .closer { + cursor: pointer; + width: 20px; + height: 20px; + position: absolute; + top: 0; + right: 15px; + line-height: 20px; + font-size: 20px; +} + +.support-content .chat-index .group_memberlist { + float: right; + width: 200px; + border-left: 1px solid #eee; + height: 75%; + margin-top: 38px; + background: white; + box-sizing: border-box; + border-bottom-right-radius: 10px; +} + +.support-content .chat-index .group_memberlist .infos { + height: 29px; + line-height: 22px; + border-bottom: 1px solid #ececec; + padding: 10px 10px 0; + font-size: 14px; +} + +.support-content .chat-index .group_memberlist .group_count { + color: #83898f; + margin-left: 15px; +} + +.support-content .chat-index .group_memberlist .setting { + float: right; + color: #4a90e2; + font-size: 12px; + margin-top: 1px; +} + +.support-content .chat-index .group_memberlist .search { + height: 35px; + border: 1px solid #eee; + border-radius: 12px; + margin: 12px 20px; + overflow: hidden; +} + +.support-content .chat-index .group_memberlist .search input { + width: 100%; + height: 100%; + border: none; + outline: none; + text-indent: 5px; + font-size: 14px; +} + +.support-content .chat-index .group_memberlist .gm_list { + height: 100%; + overflow-y: auto; + margin-top: 10px; +} + +.support-content .chat-index .group_memberlist .gm_list .item { + height: 22px; + padding: 5px 10px; + line-height: 22px; +} + +.support-content .chat-index .group_memberlist .gm_list .item .avatar { + width: 22px; + height: 22px; + float: left; + border-radius: 3px; +} + +.support-content .chat-index .group_memberlist .gm_list .item .name { + height: 22px; + margin-left: 28px; + line-height: 22px; + font-size: 12px; + color: #333; +} + +.support-content .chat-index .inputer_frame .button { + width: 40px; + height: 40px; + margin-top: 6px; + margin-right: 10px; + float: right; + border-radius: 2px; + transform: translate(0, -18px); /* 逆时针旋转45度 */ +} + +.support-content .chat-index .inputer_frame .button:hover { + background: #47b6ff; +} + +.im_send { + width: 40px; + height: 40px; + cursor: pointer; + background-image: url(/image/im_send.png); + background-size: 40px 40px; + transform: rotate(-45deg); /* 逆时针旋转45度 */ + transform-origin: center; /* 旋转中心点为容器中心 */ + /*filter: brightness(0) invert(0.9);*/ +} diff --git a/src/renderer/assets/util.css b/src/renderer/assets/util.css index e876f1e..1b8d39f 100644 --- a/src/renderer/assets/util.css +++ b/src/renderer/assets/util.css @@ -110,6 +110,80 @@ i.switcher_off { display: block; } +i.mic_on { + width: 40px; + height: 40px; + background-size: 40px 40px; + background-image: url(/image/mic_on.png); + display: block; +} + +i.mic_off { + width: 40px; + height: 40px; + background-size: 40px 40px; + background-image: url(/image/mic_off.png); + display: block; +} + +i.speaker_on { + width: 40px; + height: 40px; + background-size: 40px 40px; + background-image: url(/image/speaker_on.png); + display: block; +} + +i.speaker_off { + width: 40px; + height: 40px; + background-size: 40px 40px; + background-image: url(/image/speaker_off.png); + display: block; +} + +i.camera_on { + width: 40px; + height: 40px; + background-size: 40px 40px; + background-image: url(/image/camera_on.png); + display: block; +} + +i.camera_off { + width: 40px; + height: 40px; + background-size: 40px 40px; + background-image: url(/image/camera_off.png); + display: block; +} + +i.audio_call_switch { + width: 40px; + height: 40px; + background-size: 40px 40px; + background-image: url(/image/audio_call_switch.png); + display: block; +} + +i.pickup { + width: 30px; + height: 30px; + background-size: 30px 30px; + background-image: url(/image/pickup.png); + display: block; + margin-left: auto; + margin-right: auto; +} + +i.hangup { + width: 40px; + height: 40px; + background-size: 40px 40px; + background-image: url(/image/hangup.png); + display: block; +} + .el-popover { min-width: 10px !important; } @@ -119,7 +193,7 @@ i.switcher_off { text-align: center; padding: 10px 0; font-size: 10px; - color: #bbb; + color: #bbbbbb; } .r { @@ -157,7 +231,7 @@ i.switcher_off { #roster_history_btn { height: 20px; - background: #eee; + color: gray; line-height: 20px; text-align: center; } diff --git a/src/renderer/audio/phone_ring.mp3 b/src/renderer/audio/phone_ring.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..b2bb0dfc78807faf0e8a0d27be00fbfa9ae06db3 GIT binary patch literal 34260 zcmZsicUTkK_V@Rs5g>$64b>0=gr3j@L`^867&Ry=DC&d`qEakaNdg3rprMEXTTn#6 zhJp%;5;{l`6&2e#6veJ6coaeNhI94a-yiROcp#Giv*t73wf0(T@A3C`M1k318nj}C zkK(5~07y1>dz7=Q-8>gNI*s=4r~mmTpXU6ZqyPWQ;MmR4icb{(25bT#;|xG6sp8c& zv~`L4h9;(F7FITP4$kx37c#wk{n<-7D^>+>;D$%W#BJJ=v~|axRDOEqe$m1F!ox?7 zm!3LZQFZ>}rP{jdHyfK;+Bd)JMe#)l_5kP$$fLO&lSOC;W06>bbUy4J;OD7%xD0H?J z>Qf+BLt^VDA4a*GmXL2mDal($lzmhdQ*Lae0Z87v;(krG8u{?k!|i70Yj{sqroho* zdd_7vpY+dGUayhvl23~x$dKYZsfz#j=R8Q-VkHtW{LgugbgUJvbjcFbmJIHx+(G*l z6?tFIB;`v7ahvwdvtP-ImA%-!hyHf4?{V>~9^XpEM za;9f{md1gEF!vl!&k5RKGg!^z4&~j+K5Y}dQtw4nujSh1sRda6|kc;cw);@ zB;9W!Byc=22=4TpgH}=8O6+mgfnA`U z$(nXZmJdfE_e)fe7$gkB7;ffn@GV&EX#Oa?Hmrmgg(H38B0vcLh%W+`79x*^s9?b1qOmEsdB4-va2Z8=t-p_zjK>w`qKu zUefs+9PwQF+5_aOzjyJx2q5?1@ebme)`@75S)~VFMVT%G%qVx|11LPkH>1z%T{5CG6n@*a>exEb&h4`P@LF?|7= zulZF6!KfxDxZ%SHh=C{L)ketqsTAv~?c90l z2u6U_Wct`eDC?awal@g{H_Cr~nHH;r>(cc!X_t!bWgiQa7c6OD&G-%e~=M!O!MIdx{L)_Q=g`DRcC2&_VKF8^$+ zY4XCkXbIZ^1{X>EPCST|U0q;{InctVg{rzQWSkP)9IY$4w!BZh8tk&9@3HmSc6g=J zGIJGqrEa^X{X3WLs1jGIgqZdHt%QhCl2G*>YEbA2JPR>dTAT%@u=)wERuT*cf4|_6 z+*_iRlo3Ypv-CdHIH{#sFI*3M9(4E9j~m*_;4nDZI|pc#x{>U|$8PTw=3=DBL*70A zIg)Q`h`ED!XxNlkc6Qc*K$U{f?otE@V}}N(;i4>P-u)$`b%Fw%}BdXouf9h$#uowiy6tCQ5VG7YBc_kS69aBkuVhWxglwQ0`Ti1_Y#kWz449a?8E^G49ajYg^R zd+kTP&f)^Pl0_*`-8!$xNGAFokNopD+w2tc;M?tbs{{9^FJ^$# zU+MW5?D8?JG* zkz|mygtmu56Fbvz1RBRaf~Bk`G|17ITtXv82X`zh!h8;Pdor2Q>Ulupdjswn%Ukoq z0#w16ar%x`cGf|oTz8Vd+y%MNVb+CSLlfgx-MiP_^ZV^W1Ztbb$N#y|VShtTsRN2+ z_?724iN3sOyJO3)dlnrrY8%mn!>tCVziJ8P(#3HWPhX~2J%%`*Gy>xpPy$FqGmS)m zE0)&c=9u98u+N-mDoQP2=VM`IX{KpmDnd$gJ(hntTAKynY|6HC7$2kC(aKkfErn`N zNF~k-bdDbs@gxq2%?CS0jC)U^3JURh{*N9s9^)y2ujx5&c%W6h`wJ(scb)g>p0czF zHJKHL0<^JFqLQtwO8@7zHuKoCQn_DGLRZy3PO;@NNw-$>2GC#@C^iA$&Sd#@Jn{XkEi=3Q+sL zhULF~7Tg#9q>+8V?i(k+{|1L2SGdsIoImP$kYWp%`9$G^ zP$FT-%956s9myw*g`4yF7z?C?B3p?&#{3dx5|<}ulItA8D0Z9A!gj{Ah)teWP1gH^ zkDpFk?VUJ>l^|9UVM;JC0yUcUtzM zqL!Lty#4cxJM;N#5@Q}Iu)mzHuIFm!t%4_(Y8+E*Uj{hczE~IxU;l*k6BEu~(07h7 z7kr3+AQS>gjqsdDNs;kcN?{cAtW82Ehhp3Oh&chlaavm#oXNupXh#yd)VoR4;Jo! zy#1{`Ra(20*9ss8KU3gTdv~&y*05DJ+B9^Ou6E;Fb@mz0GbohW5uP(GMg|F(n%f$4 zWm2?(CgyNi1>LbG7CHX6{8tf2jg4D1ZetjZb;mBe9RHX5iHY=;e>toDeLLbX2?7M3 zBud;D^GoOv;mzQlG+%HzHYyCD-Z=0B8Cf5&(w6b@6z`3#(#6r5_{wn3Z9}0(GELC- z&Z=P6h2B7u9(K2<>rPAl#Gb4h79YR-*M*+E`n>UqREmdx*hLWVWQ1rA8VPhmuNJt; zXhDbs&u+$pWhUvxr)n-+YWq@g?L2+d)*QQM$*Re7W=B_tb4103;*{V(bAB zKNwulv&!{$>mj09LL|}4=gB>h4hCn1>zk&qw&@3iN_3eVR%XMvB1((YlBmadH3|n#r^bEYMVZ`Hy1)|*=V}tOUcZd#&_c8 z;gw#FQ-0T?z)+Ob1Y(yZJXB^c;pn;^YF7r~l#kypF)V{*)t!?g=TLNFoSJki;jS>F zP|3jwp^S>s!n9YRPRi0Qg2k5O=Nit@YM`b(lf5fDc()f{u$cw-fj{YEcYAlke`60J z=7x3eKmT>1pKVLrt$Fch#ZGx&jck-y7}b=J5ZYe$kGl(gU7B&dH(k*ncMrV`aabG% zuL0nS)3(_(Kb~t1>FH;Bp0afqQNxvCjIXBnpf$)z|^X>^_-JzML;UBBzLj7SL-=IvwO!8G}G znZ|mzO~3I4O9nAGO(-a<0|Wa8uT(XmyK0eFG7?DIO>-F1!dNyfN@<9CfPN^MW4_p&qplHA^6aYRe z{~>%Q68+{0cjXwlwvrI4Zw`|X?X_ho&f;IoZ#ADOcc2d0u5>^^`CbNf*Y_@R3yjxeNUZ%kZ(L&Nox#GY{mFMnw*k z)*Zdz>IS*|=WREG)mVtv$^Zx@!ooAS>i&iQ6ejOCe*THa)i6rz*LS&KDNe7lsM1Rq zqDXeyC59w!XA6DZ{cM79Z|^*>-wvhd@M^~z=*1owHRJ*Q@cthUuKTQUUq=h^xpXi3 z{JWHwJAY64x9k*C{(qA{{NP#Z4?q5^o^CpaBVC}}*t-lxp)pGd^@xoK*^EZs- z@~NzgCQoPb0BptqiVy^NQ4V4lhq~JenirA0lT979ybndOp1u%8&@Nbgbb(33`HI3X zWs{1mSr)(b!${ZeO7;5##TvXG7ai^}{8{iuK=5+aMNvbI_T{|`F=aB8d;Caji-HZW zu3t6qhXUeKkj=y4~vEj~IXA1m!NTG(_ zy~iEHw~?7!5y&%1uM)2o3zTZ~Z2YXR|1E!~-|g+ailVh~u3SE=o@rE#fRNlq~GPn(}#^=g+&S@-=6K7*{%4Sulh;%0qjKssP6z#9u=P+eqQM32uT(x z=P_tZMzzXk9uSijbQ({&{2g8O~?F!z+JT7AvQfi zwa{7e;OJ1M$PY!m8gn|r%ccHrx%~Qrbn=p`ixjV7K5Urxx4K;3d{nCZqQ&io{HL5t zs9bXrz|JI){vF`h2^~7D)lI!+QdUM`%)H)b-EBB_3<12NaAz=n2Q`bhN&PB@mg0~i zGa6rDWVChs)!XYe0l^>$zokB>ofkA^{*ENx*XwX!p08XlWo?@MJ-Y#v{>- z2WTt~WkjkzKU|=f8YpCH!S`SI3~yHIk*4Ayj!K5Vi*fwvb-c4@v_+Vs;&EzeCV%y zMC8<(n{s)9f27uaqlS8U)d!xd>UufZLvjDxNQVY!1QZ}-%m6jh6^CibfhDM}Wk*&# z=1JUy4q$&l`*oAn&5=l1#vR*`jkobb!B7Ai$;Kv#t|a(;T(#3otbKWUS6HH^up;-v zU(1MR?@0}95}Zc-4ByyHUU0rMW15v5__ghTLQF^R-}q!aS1#`g?k}ua(=C_(nlYd4 zb|?lOu2vFaWUDwxrmPu8V9YULRq&+7h_sojk2Kfj7lw(nSiiiY!ZG?$SW-L=8IF*W z1H?lH0FB0ovS=`^CFTH0)QS<8xC1p%>{nYh3+^8?!oX$g zqbDbC9d`*vdc9bE^4js;=fe-Z-g$iIgKG%IwJ4g@(Amp80MPSjp6U-rU=e-{;;o0{ zjTODO{;)?tXetejh(icTq}N={t5N<*k!iCNJp#kDnk7pr&+yVY1W{rA%mAE$2? z)vYgkwC-PU(8PPiY`6Z&A6M03x0!wYz#}Q*m4F9O3DcEJ`I{W)mYyGsl)igoy-nnSXhe9{~(l`L?{Um<_C; zSA9`M6qa-5SlD&ExvR;Sh@k!D%b6~5_>1i<{+`I{t7C35e3%tsOqpcJ#j20#aQ(ut zwDvhNQuub{n5kJG_k~KiP2|4FnFr-pO2-WCS*A=J6p+RpKSi^{-&YBo=b+;<>OxpU zqd<=OLy7bg$}QGBOPW8rI!1+fg?H&V?-8+le+o%Mq|B&p!p+asZ+p?b#|Dy0=0IN1 zI68(t$9!Xj#p=eQ5G6=kApbS0{=>Y6G^Ak;QnI5)z7&yBNQ=Aw05IEOe9yzYqIYfH zEmc5JBgp_TL3NRKeo`C(r!>VkE3;=C%^}hr4nk|@H5qUKK+FJTfHBdlLh4~~G($R8 zl0Zc(iPJ5Ax8aAJDu6kH~@K+R1#0cztda|;4 z5G#1|k_Q2X0^Ku(XX#Ow@F??Wq|G#j>at`sA`N0q5Wkrc5T{JrK!pp!oUMn&VSxrz z$Z6(!oh{w3wwR`Gh+A=U>0avvBr?%Y9X~(m^grt~r1Rrx3!Jvue2U~G_&1&ZzOd8g zJKsn4!Hp0M+l>wPt}WDIM(MA}#0=lwGk$T;efeQk=^*Xeo9*BP*@Z+>m;(qbH3{tD zFo9Icubym&TXA!E-li(D7Gc;5`7|%$19I}R{hicg_+J+q0+1%P(YbH)lA+&I{u(}# zkbWNx>70Xsr=dCxM%@%5(8t~o2)3Ls8OO-f7*lsoQb7?#_IF#{CO6?wZe)|gg&kgA z&h _Cc738c!p&E&E{xg`j3A*3s?(ptv$gIQrHd;aE^1gDuP-x>QClIr8h2zyo={ zJ#9iKxCdy@dt5MUJOH5pXMn|-tG4mzr)cdfJlbS2&HY4#rNqh4V7REb9G~W!hLoje z(G2l8LN=kPC0tXItDc9-%9nZL9f_9DMH>#P2yh2nLO-?8Xe7{WZUTQXJe2-?M?tD> z7SpoxWo^dTVCNw_EYB|5v*aoUda>d!4gqa18;iZ<|q#|H1lLMO4VZ5 zoY{EwlRuee&)(foph!~GNQwZg#cs6y_+``3Z`iMiY8$Xfs?n{fXe|=J7)C6pddoX( z3(06PFZ$OxepW|ipWXRB?RA$I6CIqem8_EJ{(7Wi{8eugc3*@~9nt*#il>)0KYn%8 zY4yWw1maE3wh8{@Z7+~ucKX@_Fa=BEZ`$Cl5>UGkRZc_6kiL@Y(K_fjPER7a>&mlq zUq^~rv#dOJP<_06^O=4h)$;a3=Mgzy&OW&NtgE!lHZefjvN!-==VMHyfA>CaY>0Q3 z?DQ+{_dC1XefQ0d71o_iN{pePYxdm+cR~Vvr|u6gO?@z+bwR*E6Of4BmgI|dUFb!V zy{ysW=`Xab1IS>bG?zf@Q-fFFooJ`7IylrZE=^_K3AQJBzI>`Tp$_%cPUTlDR)&~L?=gAM;;CgecXqwJ zR&ChFS)qDK_;I7P@?-qPbJdn}e|jO_-cywL|FXdi&Gd(z!_h=fiFv_^98lZk)3bqc zzM(aa^NeMf{hri}x*ODjEI7-|ao-?~5$kvq?@#sh+0po^D%>ecq=F3MG5qsTnI|mx z!hja!x^iJpsM-!T84VrmN_$^)UbM(9;~#E#?5>yEQ^P0L%wur!Ov@Jq>SG^odC(0t z&OM~CLNVG*Ov>IIY&W+fm+T&le>s)A46}F1+aXE*2fZn`M_ ztvDHU2pK}7;8odpWl^#DvS@RhGoqE(w*4S}Jjj$bqf0~KX%#mdES)rC}J#d;7U8B z)r>kDC5PPV<|Z$MK*=)~?Nt(z1F3|e=_ScA5WYsR>TX+ltO;VhSX9)5RZTi~?{LDM z@KFRmzczwEFIwzK*`>j=Proox<*FgsilEgXFkU;*{haEH&;0fsKmF#PfbbO9+jzm3 z+lM}K^G}~n?N0wzd1=P-d=v)o6wAb})bPtxl5u!`V2h7AnOOXq!TqeazqS3y+oGQC z$`*nWo3lvY>?%@y7TkCKq@Ti7_vHKmr_H-*(YNit;L=*Ke$phBE*?)6gNxO#bALnk z{Q_I1(t@E+N3;1LDj2VmdALFx{G?}suOUWUkgisK9$boIz__Mp)1qn_^Ynf7@TU() zRE#6EMwp5F_l)=b6=Iw!f7DH4FObfL7yym}oR6M}V&BT3r=6-7r&aPzEz{s)fv0PK zfAUCOIB_th=>pLinXxj?wqC&a%;QyNnpi%Gf)k585E61ek$^r-lxVCU?_a5kqZ;n4 zXtT^aF_lF!NrNv5yt(|ao#l!2d`5P$d1(fhz(ABQhGihV2~aquuC6=; zusz!JX2|g;Mg^Kz$icQaGZIT~Utc#dpK9E}RO+R~c?4b=WPW|DcF6?GLD~C`YFPC3 zL?AVTu4`6(Ko~`ie|hOx-x|C^<x^8(}lPoVjFdJqKni3|~r)zFgmQFiICIsX&C&7wh57h=zV)_nTTan=eDD z1Gb$yy;G0d$|!)(qtn9{oZ}LC7qTK12UD%!ZV>o#1&ETl4cr})0F7T(KN~s zNO@>=Wjb73n&oECB%&nu9Dg{qySN~VdvDj!9+YB-FOMS!A&e+0x9cK#bh(U?r?Khn z8AY=8>W*CgW2gLw-_z>)ZV4Q`9PaN)u|5#)r^yBl_Y77SjVRQh7)Tx_9Ue=^Gfe56 z6e_|8iO6PaE_Dj{{-))=o{smSay=X3GjW7?^5!(i6-g@H;n#P{1IuCs0G!m|F)zSb z%Of@J=Cq9=ZS`c5FxgC9D}2Sq1TXm>7s($MJrv&eF-#!0j@kWle&`0YKZ{CoHhgqp zcJs&^-q#vh!1UhX{eNIjwk-JY?!3a=op_4k2%Cwk?-}&3Zgij-{LFIOE1%Gv$+i92 zZz`kh!9@7t?|rUX`fQ7o11YXT(NMeRS@u8+7cpkz+96ttbV9C~_;lDOtBK)C zOlcC7lAk-i_~k&94UV_q5D+qf##}l$dYNhfW6+p9Q<>h&nVRZH;yRC?PFO9H~s_jbV)yUHXUNL1&vcypKJ-MJ|7Bc}_w7+3{cd z^ac)H<_*!0=Dd(~Z$A8O);s{hc{qX!qlvzaZD5Qu&=J)tEq36rB{X~{NoX{$T~{gc zX6!J>qlwgNgJ?W>DYrQ`P3%Wpsgfylm*oq|v^8As$T8HRw225SR~xXuVzOc}FFha9bzB$Wh;dwrUuT%G~|3;E`#ocTv)0O-8Exp#Wy281^HStjY{T z-%)_1NRZnShdRR2H8Dg#&rBqX1&txHF)mq(WX{}KtQ0mIMt*{?+V*|Bk6h6IeS@?K zH{3o%3rW9kkiIF?B&#$wO%^;J?BS3Lao#nD$50}Y`V07hd9iEre6=GyTK2a9wsX)B z|M38)MW!=`t+TT7*bF0HHAqEz@{gyEd#}^6rFS3HP~&@pYEjFCyt@L`ErB#3H4 z)Z7$T&OByd@bjq!VGiEk-=^U*8_JWCEn)K`cMlk>O0OSE8!{asy*h6Am!ACVqSa;1 zM*hCbtFCj_|7_h|y8wGex1;RMWs87^@(IVJ1YgEH^4O+Oo)kfXcnIbw()+Fq$mmoV zlXQm=)C@;-@(D5~s--gJU18S0VFWQLR!m$s$~eElY2t3u`#uILF5q8fw~o_z`ksO5 z!!p8tN!Ngw#hiEaRD%thkk>q?dYcZ}Q6kwK0sF1l19ktH}O58?z(mOvh|ip&{mA~ixCntXS z--%rg{B{e9Y}he8!$xkoqy;8Q?Ll+j>4y8ol7g zW^A{W%O&_@JR39rD=0t*2t|#gx-dM$=P)hel-_BFNw1x@w2@)r^6+iAxPFb(NU{cr z32sO^Un1>Jp?T>Q9WQreTKoD~$~O~Fu$Y{wgR(ITH;JE%C{8RJ#>8|ZhHErPd|yul z^f{d3X|JwX;VT2)9>{ca>C6|2vTM>ZdGdjo} zFV5RbakFtpO9|4#G0H@AS2bG12S==v9?}mvs>*1Y1vkl?oT7K{Zb%RQqtdPQ_8((Y z;NRe4{2ZNm1(x2UI!GjFJ*DDx9|&sCuQNxY%I#5^j>K|3{%{~M$vE-LVI9a*vm(i` zMU%j(uXYGWooG*w7g6UpJacX55BM&4@LgiGV&NwZf_6%fDN175y16wZ6QJvKmDItj z`PapIil){!gq5`$IiH&2V{=Si`DB#}My4p771!VaP|&4Jin{|5N7vg*DSn}b$n{c^ z6(G{?N1j`;bIE<}3=TC8PBC=Sk^soE)|-VSQozx^QDTKEQG0>p2dd%ry$J%Jmv4yB zB5qZav@127l9uMCf8KVOMwn0UNkj4BKBh)N zt@|@$FANBq@9Di}%)0kW{^V8LZpFm)-z?#Ey>;K`OMk#Q4VL8`Oly0%Zi}3=14XIv zBg`ggw1i2wrH^n)+77b*Uc|j0+1BiMFZxx&?Oc=7d6^vyUW_)Lh71=^dZZU5ahe$U zKk{6p(PPCoa0l4l2(+4vU-2~90sGaj2dn5kVg$J(nOYu;_2N&Sn6EnkYTs2ijV2c# zKtLaUEUY{9RbF~e5GsDsIvUE_D3>de^nMu%P!u>7#k{^U+l^S_&!bpoVoZdv+kQb} z7MFt!cWl*k&B{Y5x9e+{#-tm=;(ViMKChWaKeGd)jF8w|pp3;O*j_O8?y zm0s-%dYIGPt*uN>TKyp(X_LSBy&2Hkb9uA9;F~q#01uI~!cJdjmA1Af9Jdsm#Lu1bsEP3)o%1 z`44PDYdyU$at-OXO8G2(QF{!^Tz)Ld;^3GXFA9TbCS*w*mt|FJlW3vFv?_H30)z4@ zE_0)+z4?cR#kuZ}@Cx?YyXp{w72-9AE(&D+d8TVd>fQjNVJb-#g z;v#JO4g)>&`6YHbl2yt?5rXJ#Ez!a1ubc^A$>Z7BnCWU^!RdEdr4>y0VJHGN$y^dO zA2YZv?}-3d%}21B`leP?Ku(2f>!plp&GmFye+Sah&zFryh6V)BG0s$Zn#Xb7aPNi0 zlCY8d!`&pM-=7tsJ=L>FK&tdSUVG6d>E*Xw9g1LZlVtL?QCh=j+p=YvJ0^c-;LK1_ zqj!eTs-%sQc1o?CySAj^_>Hx<~m$8@6WzMH$hPsl@` z&leH`v8wf)cUwj5JI@*q%Rjx_ro>ZY0zYp@$693>K!PTue!*2CoXv)%eNk~Z!(>C3 zlr-$vp5H2l=^lJ{w!iI_WaU~uwF+a?8X`Gr~w{KJg&){fhOd-v3eYkjMA$Bau z1IgqCa%w5!Bs^DQxC-wDFm)V0dE%jN)W%#^mu(35 zCnuW2S}NkkB+fENyHMt7cW;t)G$+J>(1#82fqsN$KW7t0p3@L^imx`_^t z>DhokyY?oRJ(pDR2oM+qJZ z{sZyL+EppB-eUyfN>?l0wEf^73!@T)b?zA-koDy`X)`i);aIKGYzAR9zh1vja7RPH zoJWagO0ga z<9R0A+vM_jyL*No{0N+#0=U4_AChDdIT4DT3DO9~F6s62`!?@LN6f;O0iZAGT|CvB zulUV>JLi5Y?KhU&WFhbf-8^&MCY3`WSKa4$+i(djW`3)83LG;>jMl`zIh2mZC~4h- zWpvEl;S&ifp{+%F&ZB`{yCx`B8X3VcJJXo^U;ZsWi)*p1JZpJW?XUv#uf}hY1TUo1 zQ|HTz#}uann59zH!Uk5#Us&fbzW@W*X0F<5)3s&0>knWE{dVwcR%k1OAVr`+J3}~M z3F1>lT;Q%^F=4S`S$!H{MlfHuFd;1jAE$|qRgRkju-@1tk`m;7e_0M4jv}m2%dJL! zePFmJ{;fRq>nf=TrC398&I_Nl<&)tSZ*i6t*pgJ0@r^{FDcTiV0gj%ma(55kP(OiG zaeI6C)0TELe5{lNEg!?`Wri-_jz?|}jG?N>k3s56%12mj)TuZEF@&_l^Yroc)n-r3 zw#47Zs-8Ys-P7Z)<2PULi^tSAd2WAb_9yv0tt{ohK$k7avzLv8kw}4vWY5${_bX?r z>amHJdJ1i^29je|u&hZV__Db&8r}Pf6sD#YGH@kbLK;6OAP5fo{Qd9>y+484bmWv5 zPv=&Q6^aUatxRmP6Nivh=0i76xgqsqQfE)Jcp+ zCrMv_ul02&AeCKWOb`)H#??vb#|@UVj^8^^0j+*QZ@#j|-Odq; zG7XM+%bN(Y>faq&0RN6X>Xb8XePKn6-w<4A3x6WMpJv?6GT0Pdq?+23{sJ_sewaDA zzS|<}$(31q0ocpKX<~Zj;541|og~fpOiMsG+UhgVN&~L*ooiE#DUfWKKkA=b)>P$g znbATQ$g(O>VZlqI>y58?GsJgqoh*d{EDwuR=BA~2sb`;B?s*?HdGho&n4J17f1i^rBAJ79mx#QirnNs1!c`-UI86``@@t1#+3y!n z1dXyb`p2ju_%{SoeFiB8z&vlbM3{18Cfsiq9D}{j-s<|{@F9|uAzdY&r0i>;kZyJ2 zk#7B|actXCW-0CMCp|zXL$E1i=iupgq-;v_P}&*3|L4WqjINqBZfT8D(k#o>E;h56 zP)zaQ-h|69cb}ex=|mfT1pe~egPkM*AQjZ#Je->;wvgr8$8v60!v@zEH|UXMH$A#V zoN*fYh5oxUTFM9?vZdK|%Y(XcSF!q-DstPSm_julN9_I~s2Mn8g4M!6@(|rCb5I%Y ziE4&4PKRw3q_g-HF$SM+gm-W1XLA6oN~}5`apEoU3&A$g{;T%GV2yrVCvVXaMdqX! z7@`c1kMzN*m?L$2*Soq5gZ|l>>pki#a9F(i`hWMwY0h-fKYrX2^BbIbO%Q~8pXOZc z)G=C?sJcHF6SQFNfXp*ZS@mfJ^>PfEDh_4XC|Qe}b%<%GaDqRrWh#6gR`awU^3WV^ z>7{Co{xpQf8K;pYrZrX6&~97v5Y?N?+V~c@Kvj%)SV!xhB&|XiNk-Oe##L|! zlXR5;!z7L5pLYgMp!pfADtE&%O2vg@WpfA6zWGr5c@*F(2Z%_jtM^aacON?v(2vl^$)g{}>k}{SEsAK_V=Peb3RnRoes5jm@v- zm(<+sXjI?_#t?QAqMmK=Z4oDaa|QyK9Fg39G-t zh2Ze#cjS+LZPPaXHQN6zuKi!Ohz6jxr^W1CwEx8?+~Smoh(d~v(|h8eEIEL_%wybn z07qIH2G; z>~!r+@9^$#rB!GT0Ph}x;Pj9NEy#xA)O~DMQ077}3;E1sOIO+_mv=WGZ{B2+^lJ3h z_7_X;D|VbT{vg6PjRvks7>aK80W#;PtjRpOt3{C9rN^FC=~wh*ry{>Pc0?h||E$_| zwwd+q7Lk5~vnIAz=U}49l}Zu7T-zwS!o*neQa@EKFb^rT2gIX6F^|xr zN9@sS=5q~7B+c=JM6PIK@Xm~qF(X|Bk7eO$u&6zn*OU)Q#ahPOopq&H>TN02%7|lk zI~_Sz0wNzNJ!`PR4*))jA@>he9baZb2mkij1P@^G;Mp-56s%t#>T&x3z^MPcU;%F*0zf zVYI>iHgVb&S(?efuxwDK*gUQ1`(;c{D0W}18&U+0|G=gywxI1um;Q!5D4P%suc~YB zA7Bu45lCXXLzp+pL!$4XTUvI}buC#F#dc8^ZOz0xSfnWxZMT}+GGTckoOyPD$lG$V zdn(+rx|CZ=&QrU)Bj4|g+;;FxCb2jdVBg^Aj4Ky{A}=m~aVq!IrsUD{Uh<&7*~F?QGy~h?%A$9F|^>wt*`e<=c*He-^wW#%+=C(9QOrp9GV4+>UCL+ap{Q3&{Z6 z^lvOhPj=C6?>=&5@HaSZ?MBOwJ7Oz-gOe6ECrqtmTjP6dj6`M@-q~8#N56z;bwoD| zc`@2Xvv4YO&il3ObHZ-%3bWjv1V~R^L;aJrQ>~W1l6KaXw(a$H@O#Tb_5clfRM=FNGNx*22QTqc?3jcU)YdTZ?s*Pr!TjvN8h{)Yw{R z97Uyx1np1fONO94CSO3xD|kE3V27=VPo7%O4cr66c*LwqCo(2m70*T-`|m=&MtYld z-xYI6%unZoN>qbX*$1rFw+jh=`IQ)5Qpv zb1WfCH}Q~YZ!4CHZgQ9Qn>O>BeHm_vlhin})f(!xty<=QYK+P%t<_s}%=qv<+c?5H z^|j%lzK_kl?>ylB%M>~aaAZ56-wk1qb3(K?l#M=?b;W$zJ=|f?3gkz$Q-z_)w7iHW^yMjYilda z4IH;4H7XH^nlWChZsPBU|9$&I-M&+c>?(Plflqhb=o@;xHh#;#zvj&g zIvj*o#HWeLA7|G6yteA4eYIlak)l@3P!#!!XCu;H|5mByV4KC}x3%zZa0)dOUGyC0 zqyaBuwwJ9CY2`bCm(?uBuF!4OBImCdEDWEQHVnfpLzI@!L1Tmc&DHVEoGckHSu{s& z$$)M3n`&=V>Wd9~sxkCn?e5OeJ!*vYRxp3VI&lT)%t4w$IN;t_il;y8bO&L}uLRK|G&j}Qm0oQ$Ot9o1H)Py!hfUJVl@U?x zd?o8OMu$VXe`*V3j)%Fb#fMbPxkWZbF9{@WJcKTse`{Cuv+UJT?~a3wvdph zv{~5S(O;=_|J}z%sDEOqw9V|}=TCoNJ0jbg`fae)k~PF)hh^4@5{h1SQ=qUMaz7Bs z*~8AD`^C$=l4EFTU{h8r_x_e5+#Ce0I>HajHWXb~e`ibJ^_Z(V{9X1lOH)qMQbWSg zvGdrNVmgPC?j6ZX-s?l2JxAhIv59oQa4G8Qb z1d$L{$7=WF>q9($p;vZQQ{bs({(>PW5-`t=ZP3R+Bv976c+bda6B%U^wLIv<9a|)I zgCi#od-p8mJP+%?pGTa3X@*yvV7gXXTHmm!QT}j<#CRbk?RqMgXDuj^Kl5F5BWY!{ z{MTvwC_z_o>;dT(Ml>F|p7l_a z5C16#OK+PHO%tmR9qmtWv*|BIsEO_sem|Dm6*|_YRxNqlzjQUVXR&hV7bp#9I?o{E zwS&vlx1HOAoiw@arXQ9!D4yXxp&1gvY>}2?0=KP>^?ADBLCUjL4;Lt^@fkCQ1|jhJ z!xN9>GgVp_e+D>D^A)?ZXI{-LJYn;|M?^_@>MJ(<#2%Wp82KK!qlhX-2Otb|9HXHT zmB7#Rnx~{BjyeX~x1gh{39Q-*7K|^ZvSP!t-z@;6A!!I@n;4E|@my0Mfd;kTYV*3q zI1yjufTXL`%DiK`FLM*ja&Gqk1j$vr*~4Om1J9CBCObP(la5f{Ou1Fy;V3UhP!WeH z{zhNmD|?diPVQB|De@}C49}|cHR@}oW9P;jy?<1yA?>jL@GV|(_-`F;m@oB{>M-4} zwlNguTeyafzS`Qf9JI*xGz~U%G#NHm=PeLfn217f-aco&acGQ63%PItFc}Qp;bKPi zi8jjqgO~hEVkOa=G1_jrzlqsxHqy*m;nv8Ob*j;Z)_;}@mr-D(l-0|JGj!{unVwH*_utVrZyuHidoV0TFVn)H65c2O6%Z$ z+L#jW99)PsM>TDZo77~KhAKfslzBwnUb28nyN{A(J`U>0Y|&bGUm|NF-{dU#qCBnl zYDKCrjtavijh6bld&>Jr4>QuLZ00*c-P3&!6;J;*&cgnQ{pz3y3AaYEzhUcSwUIyW zPJ@5LmiLcqD8&W5U#fUR={wK>?F2w(B#K(|(q2@a2z`9m^o_`q>dKbC?X&#U{}=8i-;hosHh-{1wo`(P|0_AFTVG#`|DeG-L>xd#}Bgie)i1lnP<<; zPH!yVq@PV@kaZXXf%R?G*F0^5hp%p(bwqZE0vt4jR z)G?|Ct75?|&Zp_*&Z-^8GsbxWbwgg~o`d$mQ{^PKN zFS1B32kuV&3pS%e>*B9^{3_Uw$Z1(40f^skfo&r|3mL7lR>Sp3d8S{DNe6?}EkQcw zMvSu|^4D4qE0YvWNH_wKs82k(!)CiQ32vt*FX|fRY_9ySjw-u-G8)UnD#h$)Es8oJ z(Kst=AV#q;P-nmLg%2SuKz(99LNG8FDvNr>o)QrUWQts&9T`WPn_el-&kG+v`79y* zB~-Jg$&6b@w(7r6F+KG9hw9At>SYk<^~#Q%tMem3>`>e?)EZB#KR|>6$oM-4*%dps!GTV7On4y6N`B0?CsG&t+0eQ$* zGbvEunueSFrj(zFmc|o51oZS4VSsH{BzIbEj3(TH&O5n$dMJVdh?fa`ub!XPmrFJ* z3YQ9bWOk(4d;M1(k-MEG2z?hkA{%MPcNR5@Tw0OrnVf|WB)911BhUXzc2bYd?)i-o zt6(oDS!l+v#WN*G;*aIio-zSoy#T1oDj)EL_Gxz1w5P12Z5&McoK6^M>w~j-VLMa_ zo679gP)=6 z&0b5(VP1-IS+cE-;9zRx+WHd0f{FFC9p9L!MlKlh)ssB#1T%)w1;;RJcw3=HM8Y;5 zgjyoRelX%-mp4FMPqV-?@JgS(y$YFPjrDM;3swR$rh}m(a7h}bfXUE^j15h7H&ZXq z%~~8>di2Q@Ohp92<}Avax*gyZ|Me{7ZggnX|Kc-N!R8nY4sQ!dvzEOstRFF~4fY%8 z@YxYt9zNwSg1lgt2u z3L1B|^7Hgg`nmKPOIlrjb$kGvESop1IyaPhDQ_YxK?SEbR}Mn@kI@DwqG^?Yz$y@R zFp*3TQ*~Kad`xbV0&vZd-0YKFtO?@K>QpRN!ysj>-?Fnn;ziFRf zzWeB@o0(u|fQc}#eq>Cb4$$G+qh*F=3JS{`?!S8kGVRt4)(**}rJ5iRZ zC=bttSHoaop2wU>;#59fU>``w71kA68bU=hptVQhZtNRD0S9UFgu|b0*m!%7il2U> z6CV8WF`Yt{DNPBx%TEqGTwHr(Ok@J@T5KSG@e_)_sUj7vv`t5}qrhP!b&*oRUC8`Q z^{8G1nP&{Rj^AK#A}g-!4lpPOpVhR5(rBGJNX;BJn#7>K>%6Sn)QUX+0k_sxs}>q4 zFxzi|j~OU`tl1`V#JKN;{b>pcWf7s{KT4Tsr#{63f!CLbW!{=(70n%4Y=;8a+paXH z63X6f!auP>ln0#Y^w_FZ?!)$UnHL8YKVI>=6~#OKD=^1xFocEzSttN7YMmWvD?cVJ zh3nQ)8t%enzgH|1Q!F&+#o$Zh)m9|?J7?hy$>rDW^WCdvL>AtmeR0l=zY4aR@%b{^ zeOT7;J))6><$7(Lq*4K36oKoFWcX3>2^fr>}**-D| zx1pr%4PS6iC?_8zF*+ws_SA-qzZn>0{b(P^5fD=Z2`Uqg>n>E4;`N4eWMcH&a~VF2 z!G6hqm^IeI0g%Sb+x=IvWvCt6N9Sbut6)d(5NP^hl=^sXA^GJwk+=`ybQwDG#)&MqI}JoJw|{cNt7Y^6{-?pvMq~=+XMpsBiR-vcqwVAG&U0&4>{V_%4E3UX2OHzS?4ty zk2-V~Y^PMR$D}V#DS5cP0Slh&t2H^NtSW=6{atq?G6YY4IrrWQ(HCF~kquZ8v((>B z@}9;C=t6F}JS{5ocd^y}M%UaTtbt1SvE|2N)PS43Qw0KWE-s9~+AJvIm8llcJuGO7 z88|o4=_iVc^d4ODnAqZ@2_tJkHv8YpK{_FBxgWC*iiz@T_=oI)FL;BA2?zgeqar=r zp+EEW5@QuOBd8wwLT3vUz)bd}$`Ezx`#KU?S<0gNZSzBJ1n~U**%jU>0Q*o5AXq#_3guJ zwo}-wf+%cN2}G-LY)am^e#1tKdmkz;?7^Eri+LF1Wb!tZ$~&)8LC+&mOtR{n{&g=W zlU~0IxY(seidM)Q&Tjw9NAWZHvKgb7(NuSepb?gGitr?jJEVCF~M`RKBxv0>XL0Hoz1><*4OjED=Y@hz;nrePTArJ zBs5)3sH<3HtE4HKRa^RlF`#*A?ZnKsw0vCQldhe@<;xhGVM+y4rD@Pa1P7poum6AX9 z>`ZVZM>CQs_?Zzwsr&Jm=gSluKiEQ+4+>DMXrX~uG~>)fED;Lh)5Y}s0ckj#l#78W z=B8m;0x)!hK)=x5OyESt3(9Se^6s6CX9)~yY;}wPdw7c&fDA8h#+*BKW>LC)90EY0 zQ7=REw)$sX!;{YazICKZJrjo`ngaqD-2{S@*l``C7r|yf+=UGwy?CPX?|~xi+oL}- zlT@<`96oSK2P}aE#HRpUyH#kbfhX?k+rXWT{j$h!vZbyrK_=K!pLBHH*}2-`iVaZT zZ}~7NQ?-R@tv52bE8Hvn2x4ufD5CB3PA3U*-0RF;gMmz-8Vx-kvWtY)6+t&OdDt1- zi$BS^AtS2JrUO%oxHq5Nw=Cu{Ct-*2PixEPAR*M=cLm1@yDz;ihBr4)G^0~mZ{^b- z^H&gugXgyh3#l(t44b3`D0v)=-x}FkqC+;|{YbE~HHAA!_+kL7Fg@?&>mONIF0zPL z;Zb{;<5!&Sz-3=rONb`am<7Il?^?3opxymsV5xSn8>+};L`)4i4+*o#-LA0Q0~TJ4 zZ1VkZYRF1oV{^75tE`99zmgCCjip~OdB0UvmCkvfKeMM8zY5%O;Un>~lqCF3 z-8gWfGO)BtX~-D9o54$A%vMC1HHG2os8E!fjs^#pQXH6$A}1xG8OI_|Mt6#eTtcu- zTyi?*1Y-g|(=XTp4;P2l$c(g?2P5ec0$GRT7V#pmw*p2fcdP=S19ULm*hmA5k13QY z((Z|!>$U`XnoO$#u4P)@$Sp-5R-RFHprW>XoX4Iq&{+eqN4hb=DFI-t^cs!e%1TX2 z=S+G*xf>(6en&cGGPwXtXVdXF^u{92n3X;n+UKc$w9t;`1{ROn;7ZF0q39)idRLnO zm1KZa1MK(%Q0&P+b$ePq1fnvbdkDBZd2dpwK%$T%fKX=GM8T8j?ZV#)55=Yh z%`qnMjN91IEi-jFXFe~#nLD`ioEe{bx1PnesrP|BCGf$ismB3oq9$gSNyb<{f8V=t zcs&Gw7fL9~zU+}$cecO;6Rq*3B`y7Ye!8NjfBvft_N;-==|kbf-dM5Bu9UFk70Lb$ z)_{}Tf1Suq`MW_>@DQ5I7+c*SnM$qTOt0I*>U@Pp6@P&5}ogJ{tlLuqSn_1TE#_=?l$ zs6LWmE{}k|D+`000!#;(L-0oDN^!FHTMQIQ?bDyHQm2I9&It00<#szh zqxuwHZ|5V91q;2lUKz!o{w@?Mzy9dfdtt`&lb--2uJv2TvRg zBOX(S!#mfAheJ7?36NHP3!R5(-*rDL4brotwa)?o^2*=dm0km*geC4Q8@;HBW~C)g zPD!XXpa@!9jy7BC?Vic@*ZFlJvaq@)bE^iY(MJ91-M==YW?I&xRE2zG|_ zjIz%`mri!cZ4mxByl!OrxcwP#aD&BD0Ne;S=<;m$aC=poapX~@bSoyV1Htr8>U&#s z!9b!I67ZJXhTuQ+Uz0-t>;Y%YKfvWJyeGL%-9E+pdwRd^(23#2 z{lZJ#5oosDMul|O5M^mCZ%3P+#x3du-(g;CjA`TPdjHnp-Ue{?VAq9F0BIivNHZy1 z6FtRJe$1pIw-;YNnAN6(*FG818P4#AKgsvKoBY%WbgojPs0{ ztt{O77 zzcwoeh5Oe&>IeJeXr#3`8EErTjDoVt@AjQT({U${g*GZ?Iq}_Dk00r3Yl}#tC}$}e zZ9jF?|B2VXz!!>0u0zfH|4N(;9=vwhBf(McO>r4e{6V~SCSx` zzHQ>hEs&sqA&r$|S|Bd)MnQE#q-? zKK1me`bN6JsMJVHtl7rt(Oa@86SrE+634BJS*TX}o22gRFBB?ndjaa&x4@y1S#^v; z9LhVy{N_MOSnwHMTml1sGmTTtI9KNPHc>j?7yX47r;^Cl42mO^yunx>cXcW~$HjD@ zG+la#A5vr`b1^KmoeHrZ(^|o)jV|0;B&C?ntM<^3*CIPqF|*Fa*UW9qu;{={#>o4T%}`g%nQIDn;!$W40wg-X0|hbv83Zngi~0-PC@7_SbMULcl{xf{BZskj?-p2n zdSsf$y=RuGmh5vewE6Jh)tUz}$-?j7H+l+M%4r4@4Wq3PBrJ69XY;~|FI;)sj@bOe zvzI-D!b`%^@GaZF+25=)Xj}mmfS(57cupOkVTz7Xq*+eD^hF%$^zs6$Q>B5obt=8H zGIMh>eiKFOtAAz|DHXN(cs?zD&bsSe-3>J$-gj_BN0SV1y>t+fjz~%{_&O42Z{t<` zeaDv#!jD?96Sgi62&_r=gdoCHTZ25jKaP5%V6B9<6k%iPAM%o?DBsuVE74`erfk(f ziSgQ*Ec=2qsZJReTmddj^X3tkFr7636nWDNmjZ7n+;D%bJ?~Y4Ba;kkz0qYkzTWbBskw=EY)}-6k z9n(xN(qXGEop>tzV;6XTd-`i45`aNkiKg53$Qa^PHG!}*vbql>dJ2=DSCt4Cj?GG-9;dTi99bHGQylF=KCse5N!|=B2S}aj zHNIK?1xCrqvdT+7=U?8IC|U5kcwM+4AZReFtOByncE6KJqFlXtbf-}Gr_DNOAMboi z&dyIavEFm~slugW?S78rSeNsi-Qb8Kvp^vJC##1=-j{}%d{LzQa4tD8tMXOnRiYw! z8ME0$pNx)T(lpmwM2(V- zG;q^CN0Kv_R`eC#X4YSWLNx!VY9=`%bZR@;DX1*@Xj1fWQ5bMpwK#n9Pyp1B9DJiu zsp|Cw*F2UYq;9j7Q&y8s_l+NF2X6?4bmo139S1Z6ga?43#Sv&RaeIC_Ge;wz@Uud$ zv3dfM1#wMdws867wJ@X@4#pwsXLN-t$g#4g<3msYSJ$Yb#n*&on`QGfj6NG@5m@)^ zynPhCf1)TcDhY7W^4MQs5od?_kEjMdUrO@)wZG`oDsUKb$C{bQOEs&&4UZ_IWpxwc zErebM_}QOnt<=&%*WizPyBp6re4J+&xHRce&V-JwFoe2btShD{yP3h%IQiNcZG9#d zvnNGN^p#T7EBJHx)w4g4g^(O6jC1q*AirJ}|QL*<8(w)TUN_$&M4QxrJUUrkXaq{(eIjM*A145ka8dqq~MiVAOaah5ER6H)iw zWlG^|7)Dqb+ab1J4CvjV0X1Kq(3B0BZGY)O38XxxL|uRd=|GTn1*fk?t=|h?d_EN0 z8%WE!fx@q3Cx2(nx02kW%PLa-0{5Xq_u^db*eY;H?K{EC3;MrP7t!w|?=JJEcHR@- z`{RA<=5M8C0|B_Tb^y>|0G9x1t^GmNWBD~Z^#M>ch zC~40vpGY6B!sY9=H&6yaVPl;%{O9|PTOWQl+sR-?mK~dE zz2%lBfwnyd+vS7IJBDyGoZA0%&caAab2RzqTd)X&3E<_&fZ#x<2>E)al7p;}gK`foUum1j*_@3L}1D78+%9=9ZeuZG! z2!UO=twAHc+(v$LNPebESyPzfhd1+PIRe)1kZNukxu`yLH&=e>Q&*$wo=D1*?y!v- zS3GWX+v;f}Oe)j5j1FI4$cu2r$>Yxm>-_~uP7qC()TJYUF`2@em5jePcYn$nTy!Q< z1sef~L(rbebO+gDZiP;G9)s=B{}&tKmYO9UJ*Oi zOizW3tpW#$Fg~~yuYZ4_G7v*+QrLb7D}KvLa$7SWQ*XNC!m!)hH2VTd!XRQirFWb8 zjfwpz4VD?Q)^e$ch-8wVSz_a#$7I<>6&+|y@fI-b+4>bJ3fSbe_l+JGmx8^7v_J;t zB!DJJ^=YVafkdS9oPYj9X+g&o8*P1fz;4d&)-!Q9u8E=Sn=)0%mAJPjy{VV$3wV2y zzu02M_Q*j-v->*u@LNEGLm4NW+b!z`e{@`3=pAf@bZkg-#@0F2nv_bGQOz)_2<8#6 z%6$F9iJy@BRW3(nMZp?vNfy~ul+Dl+3(7Z$prMUsaa1BtQwp>2Z^AjMl89#K zP4SaTy02Y|O!VcQVotdpIxkm<$-q)_FdCpltbFSO-?McG_^cyuaRrV%p8c6*?llM# zOeI}E`|ZVXcANcvEVNvh4kyGxC^)HnNspY1c z*KV$;>U*$jIY`mpEKgaLI4O{6zBrRHwkmO;dI^PBZOjn)BJy2&*Zi&_C*xWXoWV_|i_RA+NrQ(?YK*CtS4}l5e0}0mdqJ^E^n@-*#1m`zk*cc2cLiRb+lcbeK z5R2Ih$5cTF9i1#AQ+W{kg9J={=I|lf(J!nSi-tPG#p)rn)Sukpq6Op1`7`UhsB zBgKKZ7r6IOn|o#=N`4+Zl)1pSmy|Zzc%O^}2vFb4p8?#5!jJ{1MY`K$LX&d9=b-V3 zhL=h?l8&TpaIPO&#VXUG4-yeErBLOd)mzs(G)y4#vZ#yLTP`9UHcn?k1;E(4QscqX zx*P<=?<}lNI2;79JIRkHyKhSBe(`Vhh>%TvXF6d;%L{JUksrJwJqs)_3UHY!`Jss`v~eSh4tX=N@s~fPFCiYbHnFqnP8;>AeB= z)2wZ0xUz{swEIZkGHw&`>nFo_qO2U>RMa$JSa0tIw{1r8u$J!*KX$vm8}qXl{uxPz zuvvhMJvG(}28k zdvxwim@lN*OCIj5G$C5}`aEr{^w4{T%`KLthr}A0jeQTr6RLMRcs5u-MobNEUjkdo zssFt5Pm`pd@C8c~w*#ehfBh@0-9z=6nOw#yaB*Q+Mx4@#7blid7_sk{rG~EbZO=;n z0$z{g4YzN2?dAKRvu_2byG+1_8WJ_>awDnM3C+TUo*r~2`YA3RBiIn19UE@dvLR$0 zsfI(+Sk8wqhRV;|oU^O7iMLsSijL4Ezk4WLY}9G9aXExx!*=N)TBZ^Yv$Wswc6=EM`i|i^u&fh7cln*MjzlYDm*iMpib?Ig0B*%N=$8`>lz!!;BRD}O0XVNH=Ir&$Znh7B0c<1WktxHWv;H+E1OHU5t3On^@V>Imsp<+etegX6EOk986 z`cMDrEf@+V+W!Uai5WJrDm^lDP^a%6PTG4V^A$AIDdSgwy{MD$CSCQfP|papE1>cpl+ip*rBc1 zbCB{=&ttyUEy7&Wiq%i}jowuw`%MUSJfic*zB5Oq<)l4>wl~UQ>jDlIXwvAFHmS== z8=v3500jU%5@k37;1pQnEXJB_CJB6=fv3kQ$V?DXY_8KY*q?*Zw#3DW`A7pW7E(g< zv{8S_G)X`!l3b%R((#qT%^CaJ<+gQ2?LIOWPLrIb4v%H7s-5HjcvmVOV=^Te0PT!r>bx+qX7!8Nb`2+fvqf_{=?b@oJ{}B~Anr zAOld$Iq>>a4@|k1$!^=Be&I~{r04X8>b4#H{$j_3yR@A z3y9B-uWacQgI3EF3Y~Vr5j8(uAKt&Z7wqCAd^+$r_QO~EeN2Jj#XfLKfOI3zSC404 zCCSuL5)acU4ionzR7U1#_OSTY=@t7jDYfbNB_A6Cz+zWgAJ*RcqBi5rfqR%O68IJ> zAtgWXNVy_S@t;P!GtBw#V8+(%|CAnhrN);;NBk;q{gb|8su!Mz4|fdj8yU`+y{qs8 zy&jMYKeH5}(9OreWs!=lEG`pvyZ?xpa2_cwEt1oY!s)V4F(`4`>A;B#* zVUe2|rb$2cPRRZ&5wvM5n#9X_iDtm;^fFIq#tll1&ZaVZ;~-=L?y=@4ny2*C&WERs z50Biz(7IXN0J$3j4FE=_s)#w@?rH)#_MYLbF%a~lwS%Im!FB9JMuf-e(3A}bqNe%< z{1-bzo(=fU^|qAYNcY$589EDhilj@+UJZJZDo>TA2hAxw6yGag;-O7;D-!pUwNMPE zO_WWHtV$dPOroEe{Fn1mZY)q+t{PaIMh13)G?`P>T!ip>%5ZAzHS;cq5{{9&;$Z>! zhLgvr00<<=8 zA$?ApbazFFmA$%b@+gld9d;%v!!__|eoMPMSThbbsJOKZASp(Qm~Xi)uB2jSC(cpP zY*NF|KAs_Za`)zn;CQi%)(X#(N1st1+6LZUH{^O%`f~gr^fm!%d9QyQ##+8xMteQHco9#f;Z=;lu4Wp%RB* zyz1QXsJv)BNtn5#SMIg&`;^@uco?xy!uD8&{vETuzYZ=bRF)-Zho_Eyr{5Ugw<67$ z6GAf3**auYBECP&*Ohy;S|_>`EMCNtG61dwj7K~fT3Evod%}Val`3bX=iA8-=H9xE z)!yLAV4oX(9mDfIw`#8_B$wzD|Eis294I|e>0_&E7h{(YzVld8o2&fti;LpN8oeNN zGtq+*8tnILL01Ry<8g8gS@H4p?xOq4l?jrsewLQ@=G4`^NlmA;wL}ztVuCY;KvI8z zjYk=p#2opc>}QV*aZY1q^ueAUG2jS(Pth?ml-Q0SsFvLHX4L3S8xQB>s+%uKD`I#x zXH@5Hy?&m)|IPFzphMhFw~gjlI;A1Yo8C)i7YBho%7>sctX;6O%pKEPcYa57ET^`u z^&a*!n~Hs+ZR~qWDC|XCkiDXc2k-!(yzzlG?4(?>T2v6^$9*(o_Kbw8Sw~vVLBg!N z$M9R({NKh}8*a(N_Gk!QIz=CR5g&6};%C};@K6n{q3ASiN~hEr7#ysVZc z17ZNM_6ZZFOGH68X=w;1Y(|P2%jfsx`jC+G%q)u~X79%MvrqFH>Fott(`c-3=UhIyK%o5kEb3Hjs22MaUQp4nj@50{NEoR)7_QgxRUYm*=1KYsntM zxybSjsf&ectak2aLO_o}<_j6%c~gss1LW@NA&-duG*xM91Y47wrU3NK;tj@_?(NKR zUhf0_SC;g5`lpv?lcH&5XSqxnC|JDEBz&-DEM@xQ#sNS~;L+A^AsghrzuP*lbiE=Y z7^4`2a&d+$J5#fQHVr`G{GrWs?a61UKoVIlwv zJ^?A=EP(FbXzD+BEL{Sr)~&1>bDIl~>I}jLHi-psd1KK4W6No;9!sO98I{X2qfcGn z&+fU?lj-S$dVVM)`R!?mdMK>N>DEtU{ZJfU9k(shz_Dfgs*)&`PdmXR#v>&Yd$k@r z)c75_lpAa+ot*kd{*-|QfWiW}HL-jkNIBDvtU(>m_%6`1@Fh0;=aEO~X8{VYvXAjfcrxg$Z;j;Hr=z!pOSgI- z4c0eW;Fbr$*bWSene%-l=U=zVQdU8bf`cGLMg9fhyPk03f$cpZq4E!*57z+Ez{90K zfc^D%U`&V-m!uWYTen&X;B8|=SXQ5%CUI6a1Q$qg-G@z2k#uL*wM4#+r?~t4H2=6` zYTK3NviPbHFuQtP(PLw zAm@GRwZQku2?F=G4HAkW8H&HRL77jZF2y`AUi&BXi?GiNH)cwdge#)h1EAV5LVg1C zFaMFAzraa+KBYCCNM@``51uGP(EkA-@=sWj(x9WG(dOC`Fo#BdJJuQnm-Ki!?3%V^KCpD6(n{-^|lv9PmNqZRxNCAV5#(?>O6~B$sGpwq{0SXgaHyvH{=Fv0N zEA>Y$aGqB!P`={&`udZUTF7xK#EDBAG=&5FIRBpapC{dk3S&SsLi1>RY2}8liPv53 zbqxR>Lx{B)1JG1{OSY4J?nHhU?dU<89DT=-9N?F!ZRUV%pvK`U$M+1`&Fahq01NxY zCGyKgOr{LXCaum^6|YFoZ(yDca#5R3)vT(WWKIXjCS;7Q0_XXhTUlWjMn~i=jpCt% zurA?fPB8bQa_LbnZd2=?$L1I3ZBxJe)-t*$6zV)D0|3xxvMdehD`t2x=lpru+&xcu zIg%=RI5;{V?ddM7fDt+KHqI%cV2sysXMck##x zBN2~edlAjo`)*jFBCG?qpC;Gb+o+!BdAk!99C@d%MiAnA4_R1?$-no``4i}aV;t6O z5CG~!RF&@qI_ zd$Q6)mLT)tUj;Pe13H#Sq>O&uuWkhHnajl))p`jR0UPu%A6{cN9FZ$NO zgR-4b%|;c=P6Q@ia?k`8k3m_Uqg2?n)`(Vr9oyZJ0(Q{V?Wl*DSkw&KC z2vDk1MMFqEiS$dgY+t+Pmh;u^$Tu&h_oPU8!dysJL8q%FhP#}~-(UNdC^gmEqj|BZ zft}{$dq4%N7edC-ammz-Dc%4b?;80f)-WF;L(zn60ckH{%s-t*A zdCcJreE0vdzD7@ss@o{ccyQ;sUU1ecikRh975?yD56@kC9_QPX$}$VC#=yP>vXp9- zMJk!CVUO?}Yi5;b=IOMKAwTadL5R4vy5HWoQbtE52_GUnuZ6coQbQ5nzI@_PLk84$ zNZ)ch;Cr@2Ug5&j{$H>A`_p^WWvML{jJHh2gAfiXaO9eSKw1yG_0Z`t03x9E=u#h; zn7+^XJYmD=;+W_#IUOv-Ag0K%_)QSYYfp0yRUt=To=?#A*?cxyP*?Tph57BLb7@p( z%J@|5&ZU{fJudb=?UlFlEt1I9f(?R#!s!)3Scc4}=ym^!Tc5eA4H5wdw5I2+@T%M&yO5apu2*c)|WNOw1;?NP%frr@FVmQkewcqDMb*J)^EKE z+6E=>HJ@?{b?+>LHp}#mp^s06Wg&ekR=QR1XH!H7dH-SX&KDiP?3Jc!BddeNHd(+f z-w83VB)vV={REPzG3BMAD0*RBZ&TtP#^jZr^Hq1ZzBO9U%pQc0DuVJcO0Z2u!V2@W z!-V3F38D&h!&|ZmbJL1;zlY3|)Lnk<8&6qXk9g*xwbSADe+A*F6XEwTR>V9L`o?iW zzVE&OpER~#$)pmUB*D}KqR#nb(5K&Bjomy^5^hsC+DzZJ|JDMEubk#S{o~B39D(on zv5K3)!r#J|t_^~rpU>W%^Nm_3T>v#!07Pv1-$t1Z%XrB09~qtKB`0ZsX^t&O{aK=WS3d zry?$1KFGwfv%3$Sm9PMkq zd<&b*{BKj<-D70FJUX+hsN)`J{8U;cQ)ijI`A}){evx4CJ)}3>kZczVn1lr6J0y=# zWsl!viV6OVF+c|hh;OQ~p0%_9>vF= z2Q4y=dNypm%Io{+WZL++y~3N^Q>OU64);!y+qpXVLle?VG(5W!NZ>9#*?$#I75*%n zg&6HKNW38rwLBvw&PK1XEvY)PR2)L%fDGhKsOIc8%*{DMR8gv`gNpoUem(#I`cjQ} z02={EC-kx9%?&wyU(@(IZ662M`&a~NwIqN~chW=VfVmE}?gM^3fA4JvDjaZo9`^>95XnI##brH-<7etoH-8YwRxuhhWFZ0>9uUCYvT>h|aee#>++qa9f zw3YU@@wRztNjKp-5s5* zEZ{Fkpm10(Qjujx3~ zrtk>uXKP#cfC57{$WjV%Ft|>;cg-s&_9F@4zT0>0eI%>S+249CV|k+k+TYfE3u#sP zEdf6D4!&x~oNqR8`gNkm@2~X*&TIS^U&Pd1wKqy#I65E*JMO+4U_l`-0z!6;r5z-8gQ+`Wh!>v-^ef68 zM}LreZO?zHn70_xVw-L%>Emgf)i@R3?La@%#@oGIYusH7WEsx*qy9s?=S}pT59}-a zd%YuWl&1JO5zk+h9#mmmKjTUukwFFQ+^$mL^a$$4$cG2mSCrVJUN`prPI?`_c&g*f zjr28U@3yEelve#pEV!A4Xx0T5SYMof5z|X84N+MjLPc@~B)m+U$>KCF1+q9|cz&^9Tn@T{OQJ8s8`Mat6o=hKF zbl;qb-@19Ud)-Tuax2jU8pIdgyzzzk2%P_>CNL{b+&C-Ce71ma{ik?>m49}0Gk5rs zf{NkEGqKin*CN8*RI)Q*yF5eWlw#Gq735Wtyn^Vj^6MX*5xwg0bL;N%LCl&DhLYVv z;cdD5o0H5`kA@Zg!i2oc0~eCY1RMISt_Nf|mjUqN?SFAS|Be$0{_uYpr|N%soc{-e C+YPh; literal 0 HcmV?d00001 diff --git a/src/renderer/im/floo-2.0.0.js b/src/renderer/im/floo-2.0.0.js index 8b24cd9..95b6138 100644 --- a/src/renderer/im/floo-2.0.0.js +++ b/src/renderer/im/floo-2.0.0.js @@ -1,2 +1,2 @@ /*! License information can be found in floo-2.0.0.js.LICENSE */ -!function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var n=e();for(var r in n)("object"==typeof exports?exports:t)[r]=n[r]}}(this,(function(){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=298)}([function(t,e,n){"use strict";t.exports=n(278)},function(t,e,n){for(var r=n(126),o=n(74),i=n(21),s=n(8),a=n(14),u=n(29),c=n(4),f=c("iterator"),p=c("toStringTag"),l=u.Array,d={CSSRuleList:!0,CSSStyleDeclaration:!1,CSSValueList:!1,ClientRectList:!1,DOMRectList:!1,DOMStringList:!1,DOMTokenList:!0,DataTransferItemList:!1,FileList:!1,HTMLAllCollection:!1,HTMLCollection:!1,HTMLFormElement:!1,HTMLSelectElement:!1,MediaList:!0,MimeTypeArray:!1,NamedNodeMap:!1,NodeList:!0,PaintRequestList:!1,Plugin:!1,PluginArray:!1,SVGLengthList:!1,SVGNumberList:!1,SVGPathSegList:!1,SVGPointList:!1,SVGStringList:!1,SVGTransformList:!1,SourceBufferList:!1,StyleSheetList:!0,TextTrackCueList:!1,TextTrackList:!1,TouchList:!1},h=o(d),y=0;y0)e[o]=t(e[o]||{},n,r);else{var i=e[o];i&&(r=[].concat(i).concat(r)),e[o]=r}return e}(t,e=e.split("."),n)},Object.defineProperty(i,"decorateRoot",{get:function(){return s.decorated||(s.decorated=new(n(178)))}})},function(t,e,n){var r,o,i;n(25);o=[n(0)],void 0===(i="function"==typeof(r=function(t){"use strict";return(t.roots.xsync||(t.roots.xsync=new t.Root)).addJSON({im:{nested:{floo:{nested:{protobuf:{nested:{Frame:{fields:{vsn:{type:"VSN",id:1},compress_method:{type:"CompressMethod",id:2},command:{type:"Command",id:3},payload:{type:"bytes",id:4},encrypt_method:{type:"EncryptMethod",id:5},encrypt_key:{type:"bytes",id:6},check_sum:{type:"uint32",id:7},tag:{type:"string",id:8}},nested:{VSN:{values:{XSYNC_V1:0,XSYNC_V2:1}},Command:{values:{UNREAD:0,SYNC:1,NOTICE:2,PROVISION:3}},CompressMethod:{values:{NONE:0,ZLIB:1}},EncryptMethod:{values:{ENCRYPT_NONE:0,AES_CBC_128:1,AES_CBC_256:2,CUSTOM:3}}}},Status:{fields:{code:{type:"ErrorCode",id:1},reason:{type:"string",id:2}},nested:{ErrorCode:{values:{UNKNOWN:0,OK:1,FAIL:2,UNKNOWN_COMMAND:3,PB_PARSER_ERROR:4,DECRYPT_FAILURE:5,PUBLIC_KEY_CHANGED:6,INVALID_TOKEN:7,INVALID_PARAMETER:8,UNAUTHORIZED:9,USER_FROZEN:10,USER_BANNED:11,WORD_CENSORED:12,TOO_MANY_DEVICES:13,ENCRYPT_METHOD_UNSUPPORTED:14,DEVICE_GUID_CONFLICT:15,CHECK_SUM_FAILURE:16,INVALID_LICENSE:17,LICENSE_LIMIT:18,APP_FROZEN:19}}}},ConversationUnread:{fields:{xid:{type:"XID",id:1},n:{type:"uint32",id:2},type:{type:"ConvType",id:3}},nested:{ConvType:{values:{UNKNOWN:0,CHAT:1,GROUPCHAT:2}}}},UnreadUL:{fields:{}},UnreadDL:{fields:{status:{type:"Status",id:1},unread:{rule:"repeated",type:"ConversationUnread",id:2}}},SyncUL:{fields:{xid:{type:"XID",id:1},key:{type:"uint64",id:2},meta:{type:"Meta",id:3},is_full_sync:{type:"bool",id:4},full_sync_num:{type:"sint32",id:5}}},SyncDL:{fields:{status:{type:"Status",id:1},metas:{rule:"repeated",type:"Meta",id:2},next_key:{type:"uint64",id:3},xid:{type:"XID",id:4},client_mid:{type:"uint64",id:5},server_mid:{type:"uint64",id:6},server_time:{type:"uint64",id:7},is_full_sync:{type:"bool",id:8},prev_mid:{type:"uint64",id:9},is_eager_sync:{type:"bool",id:10}}},Notice:{fields:{xid:{type:"XID",id:1}}},Provision:{fields:{status:{type:"Status",id:1},xid:{type:"XID",id:2},password:{type:"string",id:5},token:{type:"string",id:6},os_type:{type:"OsType",id:7},sdk_vsn:{type:"string",id:8},is_manual_login:{type:"bool",id:9},device_guid:{type:"string",id:10},device_notifier:{type:"string",id:11},device_token:{type:"string",id:12},device_info:{type:"string",id:13},last_login_time:{type:"uint64",id:14}},nested:{OsType:{values:{UNKNOWN:0,IOS:1,ANDR:2,WIN:3,OSX:4,LINUX:5,WEB:6}}}},Meta:{fields:{id:{type:"uint64",id:1},from:{type:"XID",id:2},to:{type:"XID",id:3},timestamp:{type:"uint64",id:4},ns:{type:"NameSpace",id:5},payload:{type:"bytes",id:6}},nested:{NameSpace:{values:{UNKNOWN:0,MESSAGE:1,GROUP_NOTICE:2,ROSTER_NOTICE:3,USER_NOTICE:4,INFO:5,CONVERSATION:6,PUSH:7}}}},XID:{fields:{uid:{type:"uint64",id:1},deviceSN:{type:"uint32",id:2}}}}}}}}}})})?r.apply(e,o):r)||(t.exports=i)},function(t,e,n){var r=n(76)("wks"),o=n(28),i=n(8).Symbol,s="function"==typeof i;(t.exports=function(t){return r[t]||(r[t]=s&&i[t]||(s?i:o)("Symbol."+t))}).store=r},function(t,e,n){"use strict";var r=n(145),o=Object.prototype.toString;function i(t){return Array.isArray(t)}function s(t){return void 0===t}function a(t){return"[object ArrayBuffer]"===o.call(t)}function u(t){return null!==t&&"object"==typeof t}function c(t){if("[object Object]"!==o.call(t))return!1;var e=Object.getPrototypeOf(t);return null===e||e===Object.prototype}function f(t){return"[object Function]"===o.call(t)}function p(t,e){if(null!=t)if("object"!=typeof t&&(t=[t]),i(t))for(var n=0,r=t.length;n>>=0)&&t<256)&&(r=s[t])?r:(n=c(t,(0|t)<0?-1:0,!0),o&&(s[t]=n),n):(o=-128<=(t|=0)&&t<128)&&(r=i[t])?r:(n=c(t,t<0?-1:0,!1),o&&(i[t]=n),n)}function u(t,e){if(isNaN(t))return e?m:v;if(e){if(t<0)return m;if(t>=h)return A}else{if(t<=-y)return C;if(t+1>=y)return w}return t<0?u(-t,e).neg():c(t%d|0,t/d|0,e)}function c(t,e,n){return new r(t,e,n)}r.fromInt=a,r.fromNumber=u,r.fromBits=c;var f=Math.pow;function p(t,e,n){if(0===t.length)throw Error("empty string");if("NaN"===t||"Infinity"===t||"+Infinity"===t||"-Infinity"===t)return v;if("number"==typeof e?(n=e,e=!1):e=!!e,(n=n||10)<2||360)throw Error("interior hyphen");if(0===r)return p(t.substring(1),e,n).neg();for(var o=u(f(n,8)),i=v,s=0;s>>0:this.low},S.toNumber=function(){return this.unsigned?(this.high>>>0)*d+(this.low>>>0):this.high*d+(this.low>>>0)},S.toString=function(t){if((t=t||10)<2||36>>0).toString(t);if((i=a).isZero())return c+s;for(;c.length<6;)c="0"+c;s=""+c+s}},S.getHighBits=function(){return this.high},S.getHighBitsUnsigned=function(){return this.high>>>0},S.getLowBits=function(){return this.low},S.getLowBitsUnsigned=function(){return this.low>>>0},S.getNumBitsAbs=function(){if(this.isNegative())return this.eq(C)?64:this.neg().getNumBitsAbs();for(var t=0!=this.high?this.high:this.low,e=31;e>0&&0==(t&1<=0},S.isOdd=function(){return 1==(1&this.low)},S.isEven=function(){return 0==(1&this.low)},S.equals=function(t){return o(t)||(t=l(t)),(this.unsigned===t.unsigned||this.high>>>31!=1||t.high>>>31!=1)&&(this.high===t.high&&this.low===t.low)},S.eq=S.equals,S.notEquals=function(t){return!this.eq(t)},S.neq=S.notEquals,S.ne=S.notEquals,S.lessThan=function(t){return this.comp(t)<0},S.lt=S.lessThan,S.lessThanOrEqual=function(t){return this.comp(t)<=0},S.lte=S.lessThanOrEqual,S.le=S.lessThanOrEqual,S.greaterThan=function(t){return this.comp(t)>0},S.gt=S.greaterThan,S.greaterThanOrEqual=function(t){return this.comp(t)>=0},S.gte=S.greaterThanOrEqual,S.ge=S.greaterThanOrEqual,S.compare=function(t){if(o(t)||(t=l(t)),this.eq(t))return 0;var e=this.isNegative(),n=t.isNegative();return e&&!n?-1:!e&&n?1:this.unsigned?t.high>>>0>this.high>>>0||t.high===this.high&&t.low>>>0>this.low>>>0?-1:1:this.sub(t).isNegative()?-1:1},S.comp=S.compare,S.negate=function(){return!this.unsigned&&this.eq(C)?C:this.not().add(b)},S.neg=S.negate,S.add=function(t){o(t)||(t=l(t));var e=this.high>>>16,n=65535&this.high,r=this.low>>>16,i=65535&this.low,s=t.high>>>16,a=65535&t.high,u=t.low>>>16,f=0,p=0,d=0,h=0;return d+=(h+=i+(65535&t.low))>>>16,p+=(d+=r+u)>>>16,f+=(p+=n+a)>>>16,f+=e+s,c((d&=65535)<<16|(h&=65535),(f&=65535)<<16|(p&=65535),this.unsigned)},S.subtract=function(t){return o(t)||(t=l(t)),this.add(t.neg())},S.sub=S.subtract,S.multiply=function(t){if(this.isZero())return v;if(o(t)||(t=l(t)),n)return c(n.mul(this.low,this.high,t.low,t.high),n.get_high(),this.unsigned);if(t.isZero())return v;if(this.eq(C))return t.isOdd()?C:v;if(t.eq(C))return this.isOdd()?C:v;if(this.isNegative())return t.isNegative()?this.neg().mul(t.neg()):this.neg().mul(t).neg();if(t.isNegative())return this.mul(t.neg()).neg();if(this.lt(g)&&t.lt(g))return u(this.toNumber()*t.toNumber(),this.unsigned);var e=this.high>>>16,r=65535&this.high,i=this.low>>>16,s=65535&this.low,a=t.high>>>16,f=65535&t.high,p=t.low>>>16,d=65535&t.low,h=0,y=0,m=0,b=0;return m+=(b+=s*d)>>>16,y+=(m+=i*d)>>>16,m&=65535,y+=(m+=s*p)>>>16,h+=(y+=r*d)>>>16,y&=65535,h+=(y+=i*p)>>>16,y&=65535,h+=(y+=s*f)>>>16,h+=e*d+r*p+i*f+s*a,c((m&=65535)<<16|(b&=65535),(h&=65535)<<16|(y&=65535),this.unsigned)},S.mul=S.multiply,S.divide=function(t){if(o(t)||(t=l(t)),t.isZero())throw Error("division by zero");var e,r,i;if(n)return this.unsigned||-2147483648!==this.high||-1!==t.low||-1!==t.high?c((this.unsigned?n.div_u:n.div_s)(this.low,this.high,t.low,t.high),n.get_high(),this.unsigned):this;if(this.isZero())return this.unsigned?m:v;if(this.unsigned){if(t.unsigned||(t=t.toUnsigned()),t.gt(this))return m;if(t.gt(this.shru(1)))return _;i=m}else{if(this.eq(C))return t.eq(b)||t.eq(E)?C:t.eq(C)?b:(e=this.shr(1).div(t).shl(1)).eq(v)?t.isNegative()?b:E:(r=this.sub(t.mul(e)),i=e.add(r.div(t)));if(t.eq(C))return this.unsigned?m:v;if(this.isNegative())return t.isNegative()?this.neg().div(t.neg()):this.neg().div(t).neg();if(t.isNegative())return this.div(t.neg()).neg();i=v}for(r=this;r.gte(t);){e=Math.max(1,Math.floor(r.toNumber()/t.toNumber()));for(var s=Math.ceil(Math.log(e)/Math.LN2),a=s<=48?1:f(2,s-48),p=u(e),d=p.mul(t);d.isNegative()||d.gt(r);)d=(p=u(e-=a,this.unsigned)).mul(t);p.isZero()&&(p=b),i=i.add(p),r=r.sub(d)}return i},S.div=S.divide,S.modulo=function(t){return o(t)||(t=l(t)),n?c((this.unsigned?n.rem_u:n.rem_s)(this.low,this.high,t.low,t.high),n.get_high(),this.unsigned):this.sub(this.div(t).mul(t))},S.mod=S.modulo,S.rem=S.modulo,S.not=function(){return c(~this.low,~this.high,this.unsigned)},S.and=function(t){return o(t)||(t=l(t)),c(this.low&t.low,this.high&t.high,this.unsigned)},S.or=function(t){return o(t)||(t=l(t)),c(this.low|t.low,this.high|t.high,this.unsigned)},S.xor=function(t){return o(t)||(t=l(t)),c(this.low^t.low,this.high^t.high,this.unsigned)},S.shiftLeft=function(t){return o(t)&&(t=t.toInt()),0==(t&=63)?this:t<32?c(this.low<>>32-t,this.unsigned):c(0,this.low<>>t|this.high<<32-t,this.high>>t,this.unsigned):c(this.high>>t-32,this.high>=0?0:-1,this.unsigned)},S.shr=S.shiftRight,S.shiftRightUnsigned=function(t){if(o(t)&&(t=t.toInt()),0===(t&=63))return this;var e=this.high;return t<32?c(this.low>>>t|e<<32-t,e>>>t,this.unsigned):c(32===t?e:e>>>t-32,0,this.unsigned)},S.shru=S.shiftRightUnsigned,S.shr_u=S.shiftRightUnsigned,S.toSigned=function(){return this.unsigned?c(this.low,this.high,!1):this},S.toUnsigned=function(){return this.unsigned?this:c(this.low,this.high,!0)},S.toBytes=function(t){return t?this.toBytesLE():this.toBytesBE()},S.toBytesLE=function(){var t=this.high,e=this.low;return[255&e,e>>>8&255,e>>>16&255,e>>>24,255&t,t>>>8&255,t>>>16&255,t>>>24]},S.toBytesBE=function(){var t=this.high,e=this.low;return[t>>>24,t>>>16&255,t>>>8&255,255&t,e>>>24,e>>>16&255,e>>>8&255,255&e]},r.fromBytes=function(t,e,n){return n?r.fromBytesLE(t,e):r.fromBytesBE(t,e)},r.fromBytesLE=function(t,e){return new r(t[0]|t[1]<<8|t[2]<<16|t[3]<<24,t[4]|t[5]<<8|t[6]<<16|t[7]<<24,e)},r.fromBytesBE=function(t,e){return new r(t[4]<<24|t[5]<<16|t[6]<<8|t[7],t[0]<<24|t[1]<<16|t[2]<<8|t[3],e)}},function(t,e,n){t.exports=!n(12)((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},function(t,e){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(t,e,n){var r=n(11),o=n(111),i=n(71),s=Object.defineProperty;e.f=n(7)?Object.defineProperty:function(t,e,n){if(r(t),e=i(e,!0),r(n),o)try{return s(t,e,n)}catch(t){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(t[e]=n.value),t}},function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},function(t,e,n){var r=n(10);t.exports=function(t){if(!r(t))throw TypeError(t+" is not an object!");return t}},function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e,n){var r=n(27),o=Math.min;t.exports=function(t){return t>0?o(r(t),9007199254740991):0}},function(t,e,n){var r=n(9),o=n(42);t.exports=n(7)?function(t,e,n){return r.f(t,e,o(1,n))}:function(t,e,n){return t[e]=n,t}},function(t,e,n){var r=n(23),o=n(74);n(227)("keys",(function(){return function(t){return o(r(t))}}))},function(t,e,n){"use strict";(function(t){var r=e;function o(t,e,n){for(var r=Object.keys(e),o=0;o0)},r.Buffer=function(){try{var t=r.inquire("buffer").Buffer;return t.prototype.utf8Write?t:null}catch(t){return null}}(),r._Buffer_from=null,r._Buffer_allocUnsafe=null,r.newBuffer=function(t){return"number"==typeof t?r.Buffer?r._Buffer_allocUnsafe(t):new r.Array(t):r.Buffer?r._Buffer_from(t):"undefined"==typeof Uint8Array?t:new Uint8Array(t)},r.Array="undefined"!=typeof Uint8Array?Uint8Array:Array,r.Long=r.global.dcodeIO&&r.global.dcodeIO.Long||r.global.Long||r.inquire("long"),r.key2Re=/^true|false|0|1$/,r.key32Re=/^-?(?:0|[1-9][0-9]*)$/,r.key64Re=/^(?:[\\x00-\\xff]{8}|-?(?:0|[1-9][0-9]*))$/,r.longToHash=function(t){return t?r.LongBits.from(t).toHash():r.LongBits.zeroHash},r.longFromHash=function(t,e){var n=r.LongBits.fromHash(t);return r.Long?r.Long.fromBits(n.lo,n.hi,e):n.toNumber(Boolean(e))},r.merge=o,r.lcFirst=function(t){return t.charAt(0).toLowerCase()+t.substring(1)},r.newError=i,r.ProtocolError=i("ProtocolError"),r.oneOfGetter=function(t){for(var e={},n=0;n-1;--n)if(1===e[t[n]]&&void 0!==this[t[n]]&&null!==this[t[n]])return t[n]}},r.oneOfSetter=function(t){return function(e){for(var n=0;n0?r:n)(t)}},function(t,e){var n=0,r=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++n+r).toString(36))}},function(t,e){t.exports={}},function(t,e,n){function r(t){if(t)return function(t){for(var e in r.prototype)t[e]=r.prototype[e];return t}(t)}t.exports=r,r.prototype.on=r.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks["$"+t]=this._callbacks["$"+t]||[]).push(e),this},r.prototype.once=function(t,e){function n(){this.off(t,n),e.apply(this,arguments)}return n.fn=e,this.on(t,n),this},r.prototype.off=r.prototype.removeListener=r.prototype.removeAllListeners=r.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var n,r=this._callbacks["$"+t];if(!r)return this;if(1==arguments.length)return delete this._callbacks["$"+t],this;for(var o=0;o1?{type:d[o],data:t.substring(1)}:{type:d[o]}:h}o=new Uint8Array(t)[0];var i=s(t,1);return y&&"blob"===n&&(i=new y([i])),{type:d[o],data:i}},e.decodeBase64Packet=function(t,e){var n=d[t.charAt(0)];if(!r)return{type:n,data:{base64:!0,data:t.substr(1)}};var o=r.decode(t.substr(1));return"blob"===e&&y&&(o=new y([o])),{type:n,data:o}},e.encodePayload=function(t,n,r){"function"==typeof n&&(r=n,n=null);var o=i(t);if(n&&o)return y&&!p?e.encodePayloadAsBlob(t,r):e.encodePayloadAsArrayBuffer(t,r);if(!t.length)return r("0:");g(t,(function(t,r){e.encodePacket(t,!!o&&n,!1,(function(t){r(null,function(t){return t.length+":"+t}(t))}))}),(function(t,e){return r(e.join(""))}))},e.decodePayload=function(t,n,r){if("string"!=typeof t)return e.decodePayloadAsBinary(t,n,r);var o;if("function"==typeof n&&(r=n,n=null),""===t)return r(h,0,1);for(var i,s,a="",u=0,c=t.length;u0;){for(var a=new Uint8Array(o),u=0===a[0],c="",f=1;255!==a[f];f++){if(c.length>310)return r(h,0,1);c+=a[f]}o=s(o,2+c.length),c=parseInt(c);var p=s(o,0,c);if(u)try{p=String.fromCharCode.apply(null,new Uint8Array(p))}catch(t){var l=new Uint8Array(p);p="";for(f=0;f1?arguments[1]:void 0)}}),n(84)(i)},function(t,e,n){t.exports=!n(63)((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},function(t,e,n){var r=n(35),o=n(66);t.exports=n(33)?function(t,e,n){return r.f(t,e,o(1,n))}:function(t,e,n){return t[e]=n,t}},function(t,e,n){var r=n(65),o=n(154),i=n(93),s=Object.defineProperty;e.f=n(33)?Object.defineProperty:function(t,e,n){if(r(t),e=i(e,!0),r(n),o)try{return s(t,e,n)}catch(t){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(t[e]=n.value),t}},function(t,e,n){var r=n(94)("wks"),o=n(67),i=n(19).Symbol,s="function"==typeof i;(t.exports=function(t){return r[t]||(r[t]=s&&i[t]||(s?i:o)("Symbol."+t))}).store=r},function(t,e,n){var r=n(251),o=n(99);t.exports=function(t){return r(o(t))}},function(t,e,n){"use strict";t.exports=i,i.className="ReflectionObject";var r,o=n(2);function i(t,e){if(!o.isString(t))throw TypeError("name must be a string");if(e&&!o.isObject(e))throw TypeError("options must be an object");this.options=e,this.parsedOptions=null,this.name=t,this.parent=null,this.resolved=!1,this.comment=null,this.filename=null}Object.defineProperties(i.prototype,{root:{get:function(){for(var t=this;null!==t.parent;)t=t.parent;return t}},fullName:{get:function(){for(var t=[this.name],e=this.parent;e;)t.unshift(e.name),e=e.parent;return t.join(".")}}}),i.prototype.toJSON=function(){throw Error()},i.prototype.onAdd=function(t){this.parent&&this.parent!==t&&this.parent.remove(this),this.parent=t,this.resolved=!1;var e=t.root;e instanceof r&&e._handleAdd(this)},i.prototype.onRemove=function(t){var e=t.root;e instanceof r&&e._handleRemove(this),this.parent=null,this.resolved=!1},i.prototype.resolve=function(){return this.resolved||this.root instanceof r&&(this.resolved=!0),this},i.prototype.getOption=function(t){if(this.options)return this.options[t]},i.prototype.setOption=function(t,e,n){return n&&this.options&&void 0!==this.options[t]||((this.options||(this.options={}))[t]=e),this},i.prototype.setParsedOption=function(t,e,n){this.parsedOptions||(this.parsedOptions=[]);var r=this.parsedOptions;if(n){var i=r.find((function(e){return Object.prototype.hasOwnProperty.call(e,t)}));if(i){var s=i[t];o.setProperty(s,n,e)}else(i={})[t]=o.setProperty({},n,e),r.push(i)}else{var a={};a[t]=e,r.push(a)}return this},i.prototype.setOptions=function(t,e){if(t)for(var n=Object.keys(t),r=0;re)return!0;return!1},p.isReservedName=function(t,e){if(t)for(var n=0;n0;){var r=t.shift();if(n.nested&&n.nested[r]){if(!((n=n.nested[r])instanceof p))throw Error("path conflicts with non-namespace objects")}else n.add(n=new p(r))}return e&&n.addJSON(e),n},p.prototype.resolveAll=function(){for(var t=this.nestedArray,e=0;e-1)return r}else if(r instanceof p&&(r=r.lookup(t.slice(1),e,!0)))return r}else for(var o=0;o=e.length?{value:void 0,done:!0}:(t=r(e,n),this._i+=t.length,{value:t,done:!1})}))},function(t,e,n){(function(r){function o(){var t;try{t=e.storage.debug}catch(t){}return!t&&void 0!==r&&"env"in r&&(t=r.env.DEBUG),t}(e=t.exports=n(203)).log=function(){return"object"==typeof console&&console.log&&Function.prototype.apply.call(console.log,console,arguments)},e.formatArgs=function(t){var n=this.useColors;if(t[0]=(n?"%c":"")+this.namespace+(n?" %c":" ")+t[0]+(n?"%c ":" ")+"+"+e.humanize(this.diff),!n)return;var r="color: "+this.color;t.splice(1,0,r,"color: inherit");var o=0,i=0;t[0].replace(/%[a-zA-Z%]/g,(function(t){"%%"!==t&&(o++,"%c"===t&&(i=o))})),t.splice(i,0,r)},e.save=function(t){try{null==t?e.storage.removeItem("debug"):e.storage.debug=t}catch(t){}},e.load=o,e.useColors=function(){if("undefined"!=typeof window&&window.process&&"renderer"===window.process.type)return!0;if("undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;return"undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)},e.storage="undefined"!=typeof chrome&&void 0!==chrome.storage?chrome.storage.local:function(){try{return window.localStorage}catch(t){}}(),e.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],e.formatters.j=function(t){try{return JSON.stringify(t)}catch(t){return"[UnexpectedJSONParseError]: "+t.message}},e.enable(o())}).call(this,n(57))},function(t,e){var n,r,o=t.exports={};function i(){throw new Error("setTimeout has not been defined")}function s(){throw new Error("clearTimeout has not been defined")}function a(t){if(n===setTimeout)return setTimeout(t,0);if((n===i||!n)&&setTimeout)return n=setTimeout,setTimeout(t,0);try{return n(t,0)}catch(e){try{return n.call(null,t,0)}catch(e){return n.call(this,t,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:i}catch(t){n=i}try{r="function"==typeof clearTimeout?clearTimeout:s}catch(t){r=s}}();var u,c=[],f=!1,p=-1;function l(){f&&u&&(f=!1,u.length?c=u.concat(c):p=-1,c.length&&d())}function d(){if(!f){var t=a(l);f=!0;for(var e=c.length;e;){for(u=c,c=[];++p1)for(var n=1;n=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)},e.storage="undefined"!=typeof chrome&&void 0!==chrome.storage?chrome.storage.local:function(){try{return window.localStorage}catch(t){}}(),e.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],e.formatters.j=function(t){try{return JSON.stringify(t)}catch(t){return"[UnexpectedJSONParseError]: "+t.message}},e.enable(o())}).call(this,n(57))},function(t,e,n){"use strict";(function(e){var r=n(5),o=n(233),i=n(147),s={"Content-Type":"application/x-www-form-urlencoded"};function a(t,e){!r.isUndefined(t)&&r.isUndefined(t["Content-Type"])&&(t["Content-Type"]=e)}var u,c={transitional:{silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},adapter:(("undefined"!=typeof XMLHttpRequest||void 0!==e&&"[object process]"===Object.prototype.toString.call(e))&&(u=n(148)),u),transformRequest:[function(t,e){return o(e,"Accept"),o(e,"Content-Type"),r.isFormData(t)||r.isArrayBuffer(t)||r.isBuffer(t)||r.isStream(t)||r.isFile(t)||r.isBlob(t)?t:r.isArrayBufferView(t)?t.buffer:r.isURLSearchParams(t)?(a(e,"application/x-www-form-urlencoded;charset=utf-8"),t.toString()):r.isObject(t)||e&&"application/json"===e["Content-Type"]?(a(e,"application/json"),function(t,e,n){if(r.isString(t))try{return(e||JSON.parse)(t),r.trim(t)}catch(t){if("SyntaxError"!==t.name)throw t}return(n||JSON.stringify)(t)}(t)):t}],transformResponse:[function(t){var e=this.transitional||c.transitional,n=e&&e.silentJSONParsing,o=e&&e.forcedJSONParsing,s=!n&&"json"===this.responseType;if(s||o&&r.isString(t)&&t.length)try{return JSON.parse(t)}catch(t){if(s){if("SyntaxError"===t.name)throw i(t,this,"E_JSON_PARSE");throw t}}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,validateStatus:function(t){return t>=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};r.forEach(["delete","get","head"],(function(t){c.headers[t]={}})),r.forEach(["post","put","patch"],(function(t){c.headers[t]=r.merge(s)})),t.exports=c}).call(this,n(57))},function(t,e,n){"use strict";function r(t){this.message=t}r.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},r.prototype.__CANCEL__=!0,t.exports=r},function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e){var n=t.exports={version:"2.6.12"};"number"==typeof __e&&(__e=n)},function(t,e,n){var r=n(43);t.exports=function(t){if(!r(t))throw TypeError(t+" is not an object!");return t}},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e){var n=0,r=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++n+r).toString(36))}},function(t,e){t.exports=!0},function(t,e,n){"use strict";t.exports=s;var r=n(38);((s.prototype=Object.create(r.prototype)).constructor=s).className="OneOf";var o=n(39),i=n(2);function s(t,e,n,o){if(Array.isArray(e)||(n=e,e=void 0),r.call(this,t,n),void 0!==e&&!Array.isArray(e))throw TypeError("fieldNames must be an Array");this.oneof=e||[],this.fieldsArray=[],this.comment=o}function a(t){if(t.parent)for(var e=0;e-1&&this.oneof.splice(e,1),t.partOf=null,this},s.prototype.onAdd=function(t){r.prototype.onAdd.call(this,t);for(var e=0;e{e=/\[(\d*)\]$/.exec(t),t=t.replace(/\[\d*\]$/,""),e?(void 0===r[t]&&(r[t]={}),r[t][e[1]]=n):r[t]=n};case"bracket":return(t,n,r)=>{e=/(\[\])$/.exec(t),t=t.replace(/\[\]$/,""),e?void 0!==r[t]?r[t]=[].concat(r[t],n):r[t]=[n]:r[t]=n};case"comma":case"separator":return(e,n,r)=>{const o="string"==typeof n&&n.includes(t.arrayFormatSeparator),i="string"==typeof n&&!o&&c(n,t).includes(t.arrayFormatSeparator);n=i?c(n,t):n;const s=o||i?n.split(t.arrayFormatSeparator).map(e=>c(e,t)):null===n?n:c(n,t);r[e]=s};default:return(t,e,n)=>{void 0!==n[t]?n[t]=[].concat(n[t],e):n[t]=e}}}(e),r=Object.create(null);if("string"!=typeof t)return r;if(!(t=t.trim().replace(/^[?#&]/,"")))return r;for(const o of t.split("&")){if(""===o)continue;let[t,s]=i(e.decode?o.replace(/\+/g," "):o,"=");s=void 0===s?null:["comma","separator"].includes(e.arrayFormat)?s:c(s,e),n(c(t,e),s,r)}for(const t of Object.keys(r)){const n=r[t];if("object"==typeof n&&null!==n)for(const t of Object.keys(n))n[t]=l(n[t],e);else r[t]=l(n,e)}return!1===e.sort?r:(!0===e.sort?Object.keys(r).sort():Object.keys(r).sort(e.sort)).reduce((t,e)=>{const n=r[e];return Boolean(n)&&"object"==typeof n&&!Array.isArray(n)?t[e]=function t(e){return Array.isArray(e)?e.sort():"object"==typeof e?t(Object.keys(e)).sort((t,e)=>Number(t)-Number(e)).map(t=>e[t]):e}(n):t[e]=n,t},Object.create(null))}e.extract=p,e.parse=d,e.stringify=(t,e)=>{if(!t)return"";a((e=Object.assign({encode:!0,strict:!0,arrayFormat:"none",arrayFormatSeparator:","},e)).arrayFormatSeparator);const n=n=>e.skipNull&&null==t[n]||e.skipEmptyString&&""===t[n],r=function(t){switch(t.arrayFormat){case"index":return e=>(n,r)=>{const o=n.length;return void 0===r||t.skipNull&&null===r||t.skipEmptyString&&""===r?n:null===r?[...n,[u(e,t),"[",o,"]"].join("")]:[...n,[u(e,t),"[",u(o,t),"]=",u(r,t)].join("")]};case"bracket":return e=>(n,r)=>void 0===r||t.skipNull&&null===r||t.skipEmptyString&&""===r?n:null===r?[...n,[u(e,t),"[]"].join("")]:[...n,[u(e,t),"[]=",u(r,t)].join("")];case"comma":case"separator":return e=>(n,r)=>null==r||0===r.length?n:0===n.length?[[u(e,t),"=",u(r,t)].join("")]:[[n,u(r,t)].join(t.arrayFormatSeparator)];default:return e=>(n,r)=>void 0===r||t.skipNull&&null===r||t.skipEmptyString&&""===r?n:null===r?[...n,u(e,t)]:[...n,[u(e,t),"=",u(r,t)].join("")]}}(e),o={};for(const e of Object.keys(t))n(e)||(o[e]=t[e]);const i=Object.keys(o);return!1!==e.sort&&i.sort(e.sort),i.map(n=>{const o=t[n];return void 0===o?"":null===o?u(n,e):Array.isArray(o)?o.reduce(r(n),[]).join("&"):u(n,e)+"="+u(o,e)}).filter(t=>t.length>0).join("&")},e.parseUrl=(t,e)=>{e=Object.assign({decode:!0},e);const[n,r]=i(t,"#");return Object.assign({url:n.split("?")[0]||"",query:d(p(t),e)},e&&e.parseFragmentIdentifier&&r?{fragmentIdentifier:c(r,e)}:{})},e.stringifyUrl=(t,n)=>{n=Object.assign({encode:!0,strict:!0},n);const r=f(t.url).split("?")[0]||"",o=e.extract(t.url),i=e.parse(o,{sort:!1}),s=Object.assign(i,t.query);let a=e.stringify(s,n);a&&(a="?"+a);let c=function(t){let e="";const n=t.indexOf("#");return-1!==n&&(e=t.slice(n)),e}(t.url);return t.fragmentIdentifier&&(c="#"+u(t.fragmentIdentifier,n)),`${r}${a}${c}`},e.pick=(t,n,r)=>{r=Object.assign({parseFragmentIdentifier:!0},r);const{url:o,query:i,fragmentIdentifier:a}=e.parseUrl(t,r);return e.stringifyUrl({url:o,query:s(i,n),fragmentIdentifier:a},r)},e.exclude=(t,n,r)=>{const o=Array.isArray(n)?t=>!n.includes(t):(t,e)=>!n(t,e);return e.pick(t,o,r)}},function(t,e,n){var r=n(10);t.exports=function(t,e){if(!r(t))return t;var n,o;if(e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;if("function"==typeof(n=t.valueOf)&&!r(o=n.call(t)))return o;if(!e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;throw TypeError("Can't convert object to primitive value")}},function(t,e,n){"use strict";var r=n(186),o=n(123);t.exports=n(191)("Set",(function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}}),{add:function(t){return r.def(o(this,"Set"),t=0===t?0:t,t)}},r)},function(t,e,n){var r=n(11),o=n(187),i=n(77),s=n(75)("IE_PROTO"),a=function(){},u=function(){var t,e=n(112)("iframe"),r=i.length;for(e.style.display="none",n(188).appendChild(e),e.src="javascript:",(t=e.contentWindow.document).open(),t.write(" + + diff --git a/src/renderer/ui/layers/callinvite.vue b/src/renderer/ui/layers/callinvite.vue new file mode 100644 index 0000000..de17ac0 --- /dev/null +++ b/src/renderer/ui/layers/callinvite.vue @@ -0,0 +1,108 @@ + + + + + diff --git a/src/renderer/ui/layers/groupsetting.vue b/src/renderer/ui/layers/groupsetting.vue index fa55d4d..647014e 100644 --- a/src/renderer/ui/layers/groupsetting.vue +++ b/src/renderer/ui/layers/groupsetting.vue @@ -387,7 +387,8 @@ export default { this.selIdList.push(uid); } }, - /********************************** 成员管理 ************************************/ + /********************************** 成员管理 *********************************** + */ requireInfo() { this.im.groupManage.asyncGetInfo({ group_id: this.getSid }).then((res) => { this.groupInfo = res; @@ -461,7 +462,8 @@ export default { this.requireMember(); }); }, - /**** 禁言 */ + /**** 禁言 + */ addMute() { let user_list = this.selIdList; if (!user_list.length) { @@ -504,7 +506,8 @@ export default { this.bans = res; }); }, - /******黑名单 */ + /******黑名单 + */ requireBlockList() { const group_id = this.getSid; this.im.groupManage.asyncGroupBockedlist({ group_id }).then((res) => { @@ -523,7 +526,8 @@ export default { this.requireBlockList(); }); }, - /****** 公告 */ + /****** 公告 + */ requirePublicList() { const group_id = this.getSid; this.im.groupManage.asyncGetAnnouncementList({ group_id }).then((res = []) => { @@ -550,7 +554,8 @@ export default { this.requirePublicList(); }); }, - /********** files .... */ + /********** files .... + */ requireFileList() { const group_id = this.getSid; this.im.groupManage.asyncGetFileList({ group_id }).then((res = []) => { @@ -608,7 +613,8 @@ export default { const url = d + '&access-token=' + this.im.userManage.getToken() + '&app_id=' + this.im.userManage.getAppid(); window.open(url); }, - /********** add roster */ + /********** add roster + */ requireRosterList() { this.im.rosterManage.asyncGetRosterIdList().then((res) => { this.rosters = res; diff --git a/src/renderer/ui/layers/index.vue b/src/renderer/ui/layers/index.vue index 2e7d8e3..2e9aa31 100644 --- a/src/renderer/ui/layers/index.vue +++ b/src/renderer/ui/layers/index.vue @@ -12,6 +12,9 @@

-
-
- {{ searchObj.name }} - 申请 - 已加入 +
+
+ {{ searchObj.name }} + 已加入 +
+
+ {{ searchObj.name }} + 申请
diff --git a/src/renderer/ui/layers/videocall.vue b/src/renderer/ui/layers/videocall.vue new file mode 100644 index 0000000..eed622f --- /dev/null +++ b/src/renderer/ui/layers/videocall.vue @@ -0,0 +1,340 @@ + + + + + diff --git a/src/renderer/ui/login/bindacc.vue b/src/renderer/ui/login/bindacc.vue index b37251a..f0979e4 100644 --- a/src/renderer/ui/login/bindacc.vue +++ b/src/renderer/ui/login/bindacc.vue @@ -50,8 +50,8 @@ export default { return; } const im = this.$store.state.im; - im.rosterManage - .asyncRegester(this.user) + im.userManage + .asyncRegister(this.user) .then(() => { im.userManage .asyncUserMobileBindSign({ diff --git a/src/renderer/ui/login/bindreg.vue b/src/renderer/ui/login/bindreg.vue index 98911d2..4ca0787 100644 --- a/src/renderer/ui/login/bindreg.vue +++ b/src/renderer/ui/login/bindreg.vue @@ -50,8 +50,8 @@ export default { return; } const im = this.$store.state.im; - im.rosterManage - .asyncRegester(this.user) + im.userManage + .asyncRegister(this.user) .then(() => { im.login({ name: this.user.username, diff --git a/src/renderer/ui/login/login.vue b/src/renderer/ui/login/login.vue index 882d6ba..a8b658d 100644 --- a/src/renderer/ui/login/login.vue +++ b/src/renderer/ui/login/login.vue @@ -52,7 +52,7 @@ export default { return this.$parent.$parent; }, submit() { - this.getApp().saveLoginInfo(this.user); + this.getApp().saveLoginInfo(this.user, this.appid); this.getApp().imLogin(); }, diff --git a/src/renderer/ui/login/regedit.vue b/src/renderer/ui/login/regedit.vue index 9dac900..b9204cb 100644 --- a/src/renderer/ui/login/regedit.vue +++ b/src/renderer/ui/login/regedit.vue @@ -63,7 +63,7 @@ export default { return; } const im = this.$store.state.im; - im.rosterManage.asyncRegester(this.user).then(() => { + im.userManage.asyncRegister(this.user).then(() => { this.$store.dispatch('login/actionSetLoginInfo', this.user); this.$store.dispatch('login/actionChangeAppStatus', 'bind'); }); diff --git a/src/renderer/ui/store/contact.js b/src/renderer/ui/store/contact.js index 2b69236..ff73899 100644 --- a/src/renderer/ui/store/contact.js +++ b/src/renderer/ui/store/contact.js @@ -5,7 +5,11 @@ const state = { groupList: [], conversationList: [], contactStatus: 'contact', - searchKeyword: '' + callInviteInfo: null, + callId: '', + pickupTime: 0, + searchKeyword: '', + totalUnread: '' }; const contactRequestFlag = { @@ -30,6 +34,20 @@ const getters = { getSearchKeyword(state) { return state.searchKeyword; + }, + + getCallInviteInfo(state) { + return state.callInviteInfo; + }, + getCallId(state) { + return state.callId; + }, + getCallPickupTime(state) { + return state.pickupTime; + }, + + getTotalUnread(state) { + return state.totalUnread; } }; @@ -52,6 +70,22 @@ const mutations = { setSearchKeyword(state, x) { state.searchKeyword = x; + }, + + setCallInviteInfo(state, x) { + state.callInviteInfo = x; + }, + + setCallId(state, x) { + state.callId = x; + }, + + setCallPickupTime(state, x) { + state.pickupTime = x; + }, + + setTotalUnread(state, x) { + state.totalUnread = x; } }; @@ -86,6 +120,7 @@ const actions = { const convlist = rootState.im.userManage.getConversationList(); const allGroupMap = rootState.im.groupManage.getAllGroupDetail(); const allRosterMap = rootState.im.rosterManage.getAllRosterDetail() || {}; + let totalUnreadCount = 0; const convData = convlist.map((item, index) => { let name; const id = item.id; @@ -95,6 +130,7 @@ const actions = { let avatar = ''; //(img && this.client.signatureUrl(img, { expires: 600, process: 'image/resize,w_50' })) || '/image/roster.png'; const unreadCount = item.type == 'roster' ? rootState.im.rosterManage.getUnreadCount(id) : rootState.im.groupManage.getUnreadCount(id); const unread = unreadCount > 0 ? unreadCount : 0; + totalUnreadCount += unread; if (item.type === 'roster') { //roster const sroster = allRosterMap[id] || {}; @@ -126,6 +162,13 @@ const actions = { return a.timestamp < b.timestamp ? 1 : a.timestamp > b.timestamp ? -1 : 0; }); context.commit('saveConversationList', sortedConvList); + if (totalUnreadCount > 99) { + context.commit('setTotalUnread', '99+'); + } else if (totalUnreadCount > 0) { + context.commit('setTotalUnread', totalUnreadCount.toString()); + } else { + context.commit('setTotalUnread', ''); + } }, actionLazyGetRosterList(context) { @@ -187,6 +230,16 @@ const actions = { actionSetSearchkeyword(context, x) { context.commit('setSearchKeyword', x); + }, + + actionSetCallInviteInfo(context, x) { + context.commit('setCallInviteInfo', x); + }, + actionSetCallPickupTime(context, x) { + context.commit('setCallPickupTime', x); + }, + actionSetCallId(context, x) { + context.commit('setCallId', x); } }; export default { diff --git a/src/renderer/ui/store/content.js b/src/renderer/ui/store/content.js index 163abe8..7c3cfb1 100644 --- a/src/renderer/ui/store/content.js +++ b/src/renderer/ui/store/content.js @@ -19,6 +19,7 @@ const state = { */ viewType: '', sid: -1, //selected roster/group id.. + intentMessage: '', messages: [], time: [], // 这个是,消息的时间,几分钟显示一下,按现在的逻辑.. @@ -43,6 +44,10 @@ const getters = { return state.sid; }, + getIntentMessage(state) { + return state.intentMessage; + }, + getMessages(state) { return state.messages; }, @@ -81,6 +86,10 @@ const mutations = { this.queryHistoryMessageId = 0; }, + setIntentMessage(state, x) { + state.intentMessage = x; + }, + setMessage(state, x) { state.messages = x; }, @@ -166,9 +175,16 @@ const actions = { } }, + actionSetIntentMessage(context, x) { + const { state } = context; + if (state.intentMessage !== x) { + context.commit('setIntentMessage', x); + } + }, + actionUpdateRoster(context) { const { rootState, state } = context; - rootState.im.rosterManage.asyncGetRosterInfo(state.sid).then((res) => { + rootState.im.rosterManage.asyncGetRosterInfo(state.sid, true).then((res) => { context.commit('setRosterInfo', res); }); }, @@ -221,7 +237,14 @@ const actions = { j = 0; while (i < newMessages.length && j < oldMessages.length) { const newMeta = newMessages[i]; - if (newMeta.ext && newMeta.ext.input_status) { + const { ext } = newMeta; + let jext = {}; + try { + jext = JSON.parse(ext); + } catch (ex) { + // + } + if (jext.input_status) { i++; continue; } diff --git a/src/renderer/ui/store/header.js b/src/renderer/ui/store/header.js index e66f53a..c75edd8 100644 --- a/src/renderer/ui/store/header.js +++ b/src/renderer/ui/store/header.js @@ -2,7 +2,8 @@ const state = { headerStatus: 'contact', - userProfile: {} + userProfile: {}, + supportSafariAudio: false }; const headerRequestFlag = { @@ -15,6 +16,9 @@ const getters = { }, getUserProfile(state) { return state.userProfile; + }, + getSupportSafariAudio(state) { + return state.supportSafariAudio; } }; @@ -25,6 +29,10 @@ const mutations = { changeHeaderUserProfile(state, profile) { state.userProfile = profile; + }, + + changeSupportSafariAudio(state, status) { + state.supportSafariAudio = status; } }; @@ -44,6 +52,9 @@ const actions = { headerRequestFlag.profile = false; }); } + }, + actionChangeSupportSafariAudio(context, status) { + context.commit('changeSupportSafariAudio', status); } }; export default { diff --git a/src/renderer/ui/store/setting.js b/src/renderer/ui/store/setting.js index 5ee26ea..53b523e 100644 --- a/src/renderer/ui/store/setting.js +++ b/src/renderer/ui/store/setting.js @@ -3,7 +3,8 @@ const state = { settingInfo: {}, - profileInfo: {} + profileInfo: {}, + callStatus: false }; const getters = { diff --git a/src/renderer/ui/support/content/index.vue b/src/renderer/ui/support/content/index.vue new file mode 100644 index 0000000..675786f --- /dev/null +++ b/src/renderer/ui/support/content/index.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/renderer/ui/support/content/roster/chat.vue b/src/renderer/ui/support/content/roster/chat.vue new file mode 100644 index 0000000..c57a829 --- /dev/null +++ b/src/renderer/ui/support/content/roster/chat.vue @@ -0,0 +1,207 @@ + + + + + diff --git a/src/renderer/ui/support/content/roster/index.vue b/src/renderer/ui/support/content/roster/index.vue new file mode 100644 index 0000000..d3e41c2 --- /dev/null +++ b/src/renderer/ui/support/content/roster/index.vue @@ -0,0 +1,39 @@ + + + diff --git a/src/renderer/ui/support/content/roster/info.vue b/src/renderer/ui/support/content/roster/info.vue new file mode 100644 index 0000000..3f276b4 --- /dev/null +++ b/src/renderer/ui/support/content/roster/info.vue @@ -0,0 +1,103 @@ + + + + + diff --git a/src/renderer/ui/support/content/roster/inputer.vue b/src/renderer/ui/support/content/roster/inputer.vue new file mode 100644 index 0000000..a2d8312 --- /dev/null +++ b/src/renderer/ui/support/content/roster/inputer.vue @@ -0,0 +1,156 @@ + + + diff --git a/src/renderer/ui/support/content/roster/renderMsg.vue b/src/renderer/ui/support/content/roster/renderMsg.vue new file mode 100644 index 0000000..68c12f1 --- /dev/null +++ b/src/renderer/ui/support/content/roster/renderMsg.vue @@ -0,0 +1,546 @@ + + + diff --git a/src/renderer/ui/support/header/index.vue b/src/renderer/ui/support/header/index.vue new file mode 100644 index 0000000..81e2b2a --- /dev/null +++ b/src/renderer/ui/support/header/index.vue @@ -0,0 +1,253 @@ + + + + + diff --git a/src/renderer/ui/support/index.vue b/src/renderer/ui/support/index.vue new file mode 100644 index 0000000..b80ff7c --- /dev/null +++ b/src/renderer/ui/support/index.vue @@ -0,0 +1,56 @@ + + + diff --git a/src/renderer/ui/third/marked.min.js b/src/renderer/ui/third/marked.min.js new file mode 100644 index 0000000..3a83d90 --- /dev/null +++ b/src/renderer/ui/third/marked.min.js @@ -0,0 +1,1311 @@ +!(function (e, t) { + 'object' == typeof exports && 'undefined' != typeof module + ? t(exports) + : 'function' == typeof define && define.amd + ? define(['exports'], t) + : t(((e = 'undefined' != typeof globalThis ? globalThis : e || self).marked = {})); +})(this, function (e) { + 'use strict'; + function t() { + return { async: !1, breaks: !1, extensions: null, gfm: !0, hooks: null, pedantic: !1, renderer: null, silent: !1, tokenizer: null, walkTokens: null }; + } + function n(t) { + e.defaults = t; + } + e.defaults = { async: !1, breaks: !1, extensions: null, gfm: !0, hooks: null, pedantic: !1, renderer: null, silent: !1, tokenizer: null, walkTokens: null }; + const s = /[&<>"']/, + r = new RegExp(s.source, 'g'), + i = /[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/, + l = new RegExp(i.source, 'g'), + o = { '&': '&', '<': '<', '>': '>', '"': '"', "'": ''' }, + a = (e) => o[e]; + function c(e, t) { + if (t) { + if (s.test(e)) return e.replace(r, a); + } else if (i.test(e)) return e.replace(l, a); + return e; + } + const h = /&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi; + const p = /(^|[^\[])\^/g; + function u(e, t) { + (e = 'string' == typeof e ? e : e.source), (t = t || ''); + const n = { + replace: (t, s) => ((s = (s = 'object' == typeof s && 'source' in s ? s.source : s).replace(p, '$1')), (e = e.replace(t, s)), n), + getRegex: () => new RegExp(e, t) + }; + return n; + } + function g(e) { + try { + e = encodeURI(e).replace(/%25/g, '%'); + } catch (e) { + return null; + } + return e; + } + const k = { exec: () => null }; + function f(e, t) { + const n = e + .replace(/\|/g, (e, t, n) => { + let s = !1, + r = t; + for (; --r >= 0 && '\\' === n[r]; ) s = !s; + return s ? '|' : ' |'; + }) + .split(/ \|/); + let s = 0; + if ((n[0].trim() || n.shift(), n.length > 0 && !n[n.length - 1].trim() && n.pop(), t)) + if (n.length > t) n.splice(t); + else for (; n.length < t; ) n.push(''); + for (; s < n.length; s++) n[s] = n[s].trim().replace(/\\\|/g, '|'); + return n; + } + function d(e, t, n) { + const s = e.length; + if (0 === s) return ''; + let r = 0; + for (; r < s; ) { + const i = e.charAt(s - r - 1); + if (i !== t || n) { + if (i === t || !n) break; + r++; + } else r++; + } + return e.slice(0, s - r); + } + function x(e, t, n, s) { + const r = t.href, + i = t.title ? c(t.title) : null, + l = e[1].replace(/\\([\[\]])/g, '$1'); + if ('!' !== e[0].charAt(0)) { + s.state.inLink = !0; + const e = { type: 'link', raw: n, href: r, title: i, text: l, tokens: s.inlineTokens(l) }; + return (s.state.inLink = !1), e; + } + return { type: 'image', raw: n, href: r, title: i, text: c(l) }; + } + class b { + options; + rules; + lexer; + constructor(t) { + this.options = t || e.defaults; + } + space(e) { + const t = this.rules.block.newline.exec(e); + if (t && t[0].length > 0) return { type: 'space', raw: t[0] }; + } + code(e) { + const t = this.rules.block.code.exec(e); + if (t) { + const e = t[0].replace(/^ {1,4}/gm, ''); + return { type: 'code', raw: t[0], codeBlockStyle: 'indented', text: this.options.pedantic ? e : d(e, '\n') }; + } + } + fences(e) { + const t = this.rules.block.fences.exec(e); + if (t) { + const e = t[0], + n = (function (e, t) { + const n = e.match(/^(\s+)(?:```)/); + if (null === n) return t; + const s = n[1]; + return t + .split('\n') + .map((e) => { + const t = e.match(/^\s+/); + if (null === t) return e; + const [n] = t; + return n.length >= s.length ? e.slice(s.length) : e; + }) + .join('\n'); + })(e, t[3] || ''); + return { type: 'code', raw: e, lang: t[2] ? t[2].trim().replace(this.rules.inline._escapes, '$1') : t[2], text: n }; + } + } + heading(e) { + const t = this.rules.block.heading.exec(e); + if (t) { + let e = t[2].trim(); + if (/#$/.test(e)) { + const t = d(e, '#'); + this.options.pedantic ? (e = t.trim()) : (t && !/ $/.test(t)) || (e = t.trim()); + } + return { type: 'heading', raw: t[0], depth: t[1].length, text: e, tokens: this.lexer.inline(e) }; + } + } + hr(e) { + const t = this.rules.block.hr.exec(e); + if (t) return { type: 'hr', raw: t[0] }; + } + blockquote(e) { + const t = this.rules.block.blockquote.exec(e); + if (t) { + const e = t[0].replace(/^ *>[ \t]?/gm, ''), + n = this.lexer.state.top; + this.lexer.state.top = !0; + const s = this.lexer.blockTokens(e); + return (this.lexer.state.top = n), { type: 'blockquote', raw: t[0], tokens: s, text: e }; + } + } + list(e) { + let t = this.rules.block.list.exec(e); + if (t) { + let n = t[1].trim(); + const s = n.length > 1, + r = { type: 'list', raw: '', ordered: s, start: s ? +n.slice(0, -1) : '', loose: !1, items: [] }; + (n = s ? `\\d{1,9}\\${n.slice(-1)}` : `\\${n}`), this.options.pedantic && (n = s ? n : '[*+-]'); + const i = new RegExp(`^( {0,3}${n})((?:[\t ][^\\n]*)?(?:\\n|$))`); + let l = '', + o = '', + a = !1; + for (; e; ) { + let n = !1; + if (!(t = i.exec(e))) break; + if (this.rules.block.hr.test(e)) break; + (l = t[0]), (e = e.substring(l.length)); + let s = t[2].split('\n', 1)[0].replace(/^\t+/, (e) => ' '.repeat(3 * e.length)), + c = e.split('\n', 1)[0], + h = 0; + this.options.pedantic ? ((h = 2), (o = s.trimStart())) : ((h = t[2].search(/[^ ]/)), (h = h > 4 ? 1 : h), (o = s.slice(h)), (h += t[1].length)); + let p = !1; + if ((!s && /^ *$/.test(c) && ((l += c + '\n'), (e = e.substring(c.length + 1)), (n = !0)), !n)) { + const t = new RegExp(`^ {0,${Math.min(3, h - 1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ \t][^\\n]*)?(?:\\n|$))`), + n = new RegExp(`^ {0,${Math.min(3, h - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`), + r = new RegExp(`^ {0,${Math.min(3, h - 1)}}(?:\`\`\`|~~~)`), + i = new RegExp(`^ {0,${Math.min(3, h - 1)}}#`); + for (; e; ) { + const a = e.split('\n', 1)[0]; + if (((c = a), this.options.pedantic && (c = c.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ')), r.test(c))) break; + if (i.test(c)) break; + if (t.test(c)) break; + if (n.test(e)) break; + if (c.search(/[^ ]/) >= h || !c.trim()) o += '\n' + c.slice(h); + else { + if (p) break; + if (s.search(/[^ ]/) >= 4) break; + if (r.test(s)) break; + if (i.test(s)) break; + if (n.test(s)) break; + o += '\n' + c; + } + p || c.trim() || (p = !0), (l += a + '\n'), (e = e.substring(a.length + 1)), (s = c.slice(h)); + } + } + r.loose || (a ? (r.loose = !0) : /\n *\n *$/.test(l) && (a = !0)); + let u, + g = null; + this.options.gfm && ((g = /^\[[ xX]\] /.exec(o)), g && ((u = '[ ] ' !== g[0]), (o = o.replace(/^\[[ xX]\] +/, '')))), + r.items.push({ type: 'list_item', raw: l, task: !!g, checked: u, loose: !1, text: o, tokens: [] }), + (r.raw += l); + } + (r.items[r.items.length - 1].raw = l.trimEnd()), (r.items[r.items.length - 1].text = o.trimEnd()), (r.raw = r.raw.trimEnd()); + for (let e = 0; e < r.items.length; e++) + if (((this.lexer.state.top = !1), (r.items[e].tokens = this.lexer.blockTokens(r.items[e].text, [])), !r.loose)) { + const t = r.items[e].tokens.filter((e) => 'space' === e.type), + n = t.length > 0 && t.some((e) => /\n.*\n/.test(e.raw)); + r.loose = n; + } + if (r.loose) for (let e = 0; e < r.items.length; e++) r.items[e].loose = !0; + return r; + } + } + html(e) { + const t = this.rules.block.html.exec(e); + if (t) { + return { type: 'html', block: !0, raw: t[0], pre: 'pre' === t[1] || 'script' === t[1] || 'style' === t[1], text: t[0] }; + } + } + def(e) { + const t = this.rules.block.def.exec(e); + if (t) { + const e = t[1].toLowerCase().replace(/\s+/g, ' '), + n = t[2] ? t[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline._escapes, '$1') : '', + s = t[3] ? t[3].substring(1, t[3].length - 1).replace(this.rules.inline._escapes, '$1') : t[3]; + return { type: 'def', tag: e, raw: t[0], href: n, title: s }; + } + } + table(e) { + const t = this.rules.block.table.exec(e); + if (t) { + const e = { + type: 'table', + raw: t[0], + header: f(t[1]).map((e) => ({ text: e, tokens: [] })), + align: t[2].replace(/^ *|\| *$/g, '').split(/ *\| */), + rows: t[3] && t[3].trim() ? t[3].replace(/\n[ \t]*$/, '').split('\n') : [] + }; + if (e.header.length === e.align.length) { + let t, + n, + s, + r, + i = e.align.length; + for (t = 0; t < i; t++) { + const n = e.align[t]; + n && + (/^ *-+: *$/.test(n) ? (e.align[t] = 'right') : /^ *:-+: *$/.test(n) ? (e.align[t] = 'center') : /^ *:-+ *$/.test(n) ? (e.align[t] = 'left') : (e.align[t] = null)); + } + for (i = e.rows.length, t = 0; t < i; t++) e.rows[t] = f(e.rows[t], e.header.length).map((e) => ({ text: e, tokens: [] })); + for (i = e.header.length, n = 0; n < i; n++) e.header[n].tokens = this.lexer.inline(e.header[n].text); + for (i = e.rows.length, n = 0; n < i; n++) for (r = e.rows[n], s = 0; s < r.length; s++) r[s].tokens = this.lexer.inline(r[s].text); + return e; + } + } + } + lheading(e) { + const t = this.rules.block.lheading.exec(e); + if (t) return { type: 'heading', raw: t[0], depth: '=' === t[2].charAt(0) ? 1 : 2, text: t[1], tokens: this.lexer.inline(t[1]) }; + } + paragraph(e) { + const t = this.rules.block.paragraph.exec(e); + if (t) { + const e = '\n' === t[1].charAt(t[1].length - 1) ? t[1].slice(0, -1) : t[1]; + return { type: 'paragraph', raw: t[0], text: e, tokens: this.lexer.inline(e) }; + } + } + text(e) { + const t = this.rules.block.text.exec(e); + if (t) return { type: 'text', raw: t[0], text: t[0], tokens: this.lexer.inline(t[0]) }; + } + escape(e) { + const t = this.rules.inline.escape.exec(e); + if (t) return { type: 'escape', raw: t[0], text: c(t[1]) }; + } + tag(e) { + const t = this.rules.inline.tag.exec(e); + if (t) + return ( + !this.lexer.state.inLink && /^/i.test(t[0]) && (this.lexer.state.inLink = !1), + !this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\s|>)/i.test(t[0]) + ? (this.lexer.state.inRawBlock = !0) + : this.lexer.state.inRawBlock && /^<\/(pre|code|kbd|script)(\s|>)/i.test(t[0]) && (this.lexer.state.inRawBlock = !1), + { type: 'html', raw: t[0], inLink: this.lexer.state.inLink, inRawBlock: this.lexer.state.inRawBlock, block: !1, text: t[0] } + ); + } + link(e) { + const t = this.rules.inline.link.exec(e); + if (t) { + const e = t[2].trim(); + if (!this.options.pedantic && /^$/.test(e)) return; + const t = d(e.slice(0, -1), '\\'); + if ((e.length - t.length) % 2 == 0) return; + } else { + const e = (function (e, t) { + if (-1 === e.indexOf(t[1])) return -1; + let n = 0; + for (let s = 0; s < e.length; s++) + if ('\\' === e[s]) s++; + else if (e[s] === t[0]) n++; + else if (e[s] === t[1] && (n--, n < 0)) return s; + return -1; + })(t[2], '()'); + if (e > -1) { + const n = (0 === t[0].indexOf('!') ? 5 : 4) + t[1].length + e; + (t[2] = t[2].substring(0, e)), (t[0] = t[0].substring(0, n).trim()), (t[3] = ''); + } + } + let n = t[2], + s = ''; + if (this.options.pedantic) { + const e = /^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(n); + e && ((n = e[1]), (s = e[3])); + } else s = t[3] ? t[3].slice(1, -1) : ''; + return ( + (n = n.trim()), + /^$/.test(e) ? n.slice(1) : n.slice(1, -1)), + x(t, { href: n ? n.replace(this.rules.inline._escapes, '$1') : n, title: s ? s.replace(this.rules.inline._escapes, '$1') : s }, t[0], this.lexer) + ); + } + } + reflink(e, t) { + let n; + if ((n = this.rules.inline.reflink.exec(e)) || (n = this.rules.inline.nolink.exec(e))) { + let e = (n[2] || n[1]).replace(/\s+/g, ' '); + if (((e = t[e.toLowerCase()]), !e)) { + const e = n[0].charAt(0); + return { type: 'text', raw: e, text: e }; + } + return x(n, e, n[0], this.lexer); + } + } + emStrong(e, t, n = '') { + let s = this.rules.inline.emStrong.lDelim.exec(e); + if (!s) return; + if (s[3] && n.match(/[\p{L}\p{N}]/u)) return; + if (!(s[1] || s[2] || '') || !n || this.rules.inline.punctuation.exec(n)) { + const n = [...s[0]].length - 1; + let r, + i, + l = n, + o = 0; + const a = '*' === s[0][0] ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd; + for (a.lastIndex = 0, t = t.slice(-1 * e.length + n); null != (s = a.exec(t)); ) { + if (((r = s[1] || s[2] || s[3] || s[4] || s[5] || s[6]), !r)) continue; + if (((i = [...r].length), s[3] || s[4])) { + l += i; + continue; + } + if ((s[5] || s[6]) && n % 3 && !((n + i) % 3)) { + o += i; + continue; + } + if (((l -= i), l > 0)) continue; + i = Math.min(i, i + l + o); + const t = [...e].slice(0, n + s.index + i + 1).join(''); + if (Math.min(n, i) % 2) { + const e = t.slice(1, -1); + return { type: 'em', raw: t, text: e, tokens: this.lexer.inlineTokens(e) }; + } + const a = t.slice(2, -2); + return { type: 'strong', raw: t, text: a, tokens: this.lexer.inlineTokens(a) }; + } + } + } + codespan(e) { + const t = this.rules.inline.code.exec(e); + if (t) { + let e = t[2].replace(/\n/g, ' '); + const n = /[^ ]/.test(e), + s = /^ /.test(e) && / $/.test(e); + return n && s && (e = e.substring(1, e.length - 1)), (e = c(e, !0)), { type: 'codespan', raw: t[0], text: e }; + } + } + br(e) { + const t = this.rules.inline.br.exec(e); + if (t) return { type: 'br', raw: t[0] }; + } + del(e) { + const t = this.rules.inline.del.exec(e); + if (t) return { type: 'del', raw: t[0], text: t[2], tokens: this.lexer.inlineTokens(t[2]) }; + } + autolink(e) { + const t = this.rules.inline.autolink.exec(e); + if (t) { + let e, n; + return ( + '@' === t[2] ? ((e = c(t[1])), (n = 'mailto:' + e)) : ((e = c(t[1])), (n = e)), { type: 'link', raw: t[0], text: e, href: n, tokens: [{ type: 'text', raw: e, text: e }] } + ); + } + } + url(e) { + let t; + if ((t = this.rules.inline.url.exec(e))) { + let e, n; + if ('@' === t[2]) (e = c(t[0])), (n = 'mailto:' + e); + else { + let s; + do { + (s = t[0]), (t[0] = this.rules.inline._backpedal.exec(t[0])[0]); + } while (s !== t[0]); + (e = c(t[0])), (n = 'www.' === t[1] ? 'http://' + t[0] : t[0]); + } + return { type: 'link', raw: t[0], text: e, href: n, tokens: [{ type: 'text', raw: e, text: e }] }; + } + } + inlineText(e) { + const t = this.rules.inline.text.exec(e); + if (t) { + let e; + return (e = this.lexer.state.inRawBlock ? t[0] : c(t[0])), { type: 'text', raw: t[0], text: e }; + } + } + } + const m = { + newline: /^(?: *(?:\n|$))+/, + code: /^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/, + fences: /^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/, + hr: /^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/, + heading: /^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/, + blockquote: /^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/, + list: /^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/, + html: '^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n *)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$))', + def: /^ {0,3}\[(label)\]: *(?:\n *)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n *)?| *\n *)(title))? *(?:\n+|$)/, + table: k, + lheading: /^((?:(?!^bull ).|\n(?!\n|bull ))+?)\n {0,3}(=+|-+) *(?:\n+|$)/, + _paragraph: /^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/, + text: /^[^\n]+/, + _label: /(?!\s*\])(?:\\.|[^\[\]\\])+/, + _title: /(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/ + }; + (m.def = u(m.def).replace('label', m._label).replace('title', m._title).getRegex()), + (m.bullet = /(?:[*+-]|\d{1,9}[.)])/), + (m.listItemStart = u(/^( *)(bull) */) + .replace('bull', m.bullet) + .getRegex()), + (m.list = u(m.list) + .replace(/bull/g, m.bullet) + .replace('hr', '\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))') + .replace('def', '\\n+(?=' + m.def.source + ')') + .getRegex()), + (m._tag = + 'address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul'), + (m._comment = /|$)/), + (m.html = u(m.html, 'i') + .replace('comment', m._comment) + .replace('tag', m._tag) + .replace('attribute', / +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/) + .getRegex()), + (m.lheading = u(m.lheading).replace(/bull/g, m.bullet).getRegex()), + (m.paragraph = u(m._paragraph) + .replace('hr', m.hr) + .replace('heading', ' {0,3}#{1,6} ') + .replace('|lheading', '') + .replace('|table', '') + .replace('blockquote', ' {0,3}>') + .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n') + .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') + .replace('html', ')|<(?:script|pre|style|textarea|!--)') + .replace('tag', m._tag) + .getRegex()), + (m.blockquote = u(m.blockquote).replace('paragraph', m.paragraph).getRegex()), + (m.normal = { ...m }), + (m.gfm = { + ...m.normal, + table: '^ *([^\\n ].*\\|.*)\\n {0,3}(?:\\| *)?(:?-+:? *(?:\\| *:?-+:? *)*)(?:\\| *)?(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)' + }), + (m.gfm.table = u(m.gfm.table) + .replace('hr', m.hr) + .replace('heading', ' {0,3}#{1,6} ') + .replace('blockquote', ' {0,3}>') + .replace('code', ' {4}[^\\n]') + .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n') + .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') + .replace('html', ')|<(?:script|pre|style|textarea|!--)') + .replace('tag', m._tag) + .getRegex()), + (m.gfm.paragraph = u(m._paragraph) + .replace('hr', m.hr) + .replace('heading', ' {0,3}#{1,6} ') + .replace('|lheading', '') + .replace('table', m.gfm.table) + .replace('blockquote', ' {0,3}>') + .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n') + .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') + .replace('html', ')|<(?:script|pre|style|textarea|!--)') + .replace('tag', m._tag) + .getRegex()), + (m.pedantic = { + ...m.normal, + html: u('^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))') + .replace('comment', m._comment) + .replace( + /tag/g, + '(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b' + ) + .getRegex(), + def: /^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/, + heading: /^(#{1,6})(.*)(?:\n+|$)/, + fences: k, + lheading: /^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/, + paragraph: u(m.normal._paragraph) + .replace('hr', m.hr) + .replace('heading', ' *#{1,6} *[^\n]') + .replace('lheading', m.lheading) + .replace('blockquote', ' {0,3}>') + .replace('|fences', '') + .replace('|list', '') + .replace('|html', '') + .getRegex() + }); + const w = { + escape: /^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/, + autolink: /^<(scheme:[^\s\x00-\x1f<>]*|email)>/, + url: k, + tag: '^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^', + link: /^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/, + reflink: /^!?\[(label)\]\[(ref)\]/, + nolink: /^!?\[(ref)\](?:\[\])?/, + reflinkSearch: 'reflink|nolink(?!\\()', + emStrong: { + lDelim: /^(?:\*+(?:((?!\*)[punct])|[^\s*]))|^_+(?:((?!_)[punct])|([^\s_]))/, + rDelimAst: + /^[^_*]*?__[^_*]*?\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\*)[punct](\*+)(?=[\s]|$)|[^punct\s](\*+)(?!\*)(?=[punct\s]|$)|(?!\*)[punct\s](\*+)(?=[^punct\s])|[\s](\*+)(?!\*)(?=[punct])|(?!\*)[punct](\*+)(?!\*)(?=[punct])|[^punct\s](\*+)(?=[^punct\s])/, + rDelimUnd: + /^[^_*]*?\*\*[^_*]*?_[^_*]*?(?=\*\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\s]|$)|[^punct\s](_+)(?!_)(?=[punct\s]|$)|(?!_)[punct\s](_+)(?=[^punct\s])|[\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])/ + }, + code: /^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/, + br: /^( {2,}|\\)\n(?!\s*$)/, + del: k, + text: /^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\`^|~' + }; + (w.punctuation = u(w.punctuation, 'u') + .replace(/punctuation/g, w._punctuation) + .getRegex()), + (w.blockSkip = /\[[^[\]]*?\]\([^\(\)]*?\)|`[^`]*?`|<[^<>]*?>/g), + (w.anyPunctuation = /\\[punct]/g), + (w._escapes = /\\([punct])/g), + (w._comment = u(m._comment).replace('(?:--\x3e|$)', '--\x3e').getRegex()), + (w.emStrong.lDelim = u(w.emStrong.lDelim, 'u').replace(/punct/g, w._punctuation).getRegex()), + (w.emStrong.rDelimAst = u(w.emStrong.rDelimAst, 'gu').replace(/punct/g, w._punctuation).getRegex()), + (w.emStrong.rDelimUnd = u(w.emStrong.rDelimUnd, 'gu').replace(/punct/g, w._punctuation).getRegex()), + (w.anyPunctuation = u(w.anyPunctuation, 'gu').replace(/punct/g, w._punctuation).getRegex()), + (w._escapes = u(w._escapes, 'gu').replace(/punct/g, w._punctuation).getRegex()), + (w._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/), + (w._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/), + (w.autolink = u(w.autolink).replace('scheme', w._scheme).replace('email', w._email).getRegex()), + (w._attribute = /\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/), + (w.tag = u(w.tag).replace('comment', w._comment).replace('attribute', w._attribute).getRegex()), + (w._label = /(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/), + (w._href = /<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/), + (w._title = /"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/), + (w.link = u(w.link).replace('label', w._label).replace('href', w._href).replace('title', w._title).getRegex()), + (w.reflink = u(w.reflink).replace('label', w._label).replace('ref', m._label).getRegex()), + (w.nolink = u(w.nolink).replace('ref', m._label).getRegex()), + (w.reflinkSearch = u(w.reflinkSearch, 'g').replace('reflink', w.reflink).replace('nolink', w.nolink).getRegex()), + (w.normal = { ...w }), + (w.pedantic = { + ...w.normal, + strong: { start: /^__|\*\*/, middle: /^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/, endAst: /\*\*(?!\*)/g, endUnd: /__(?!_)/g }, + em: { start: /^_|\*/, middle: /^()\*(?=\S)([\s\S]*?\S)\*(?!\*)|^_(?=\S)([\s\S]*?\S)_(?!_)/, endAst: /\*(?!\*)/g, endUnd: /_(?!_)/g }, + link: u(/^!?\[(label)\]\((.*?)\)/) + .replace('label', w._label) + .getRegex(), + reflink: u(/^!?\[(label)\]\s*\[([^\]]*)\]/) + .replace('label', w._label) + .getRegex() + }), + (w.gfm = { + ...w.normal, + escape: u(w.escape).replace('])', '~|])').getRegex(), + _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/, + url: /^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/, + _backpedal: /(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/, + del: /^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/, + text: /^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\ t + ' '.repeat(n.length)); e; ) + if ( + !( + this.options.extensions && + this.options.extensions.block && + this.options.extensions.block.some((s) => !!(n = s.call({ lexer: this }, e, t)) && ((e = e.substring(n.raw.length)), t.push(n), !0)) + ) + ) + if ((n = this.tokenizer.space(e))) (e = e.substring(n.raw.length)), 1 === n.raw.length && t.length > 0 ? (t[t.length - 1].raw += '\n') : t.push(n); + else if ((n = this.tokenizer.code(e))) + (e = e.substring(n.raw.length)), + (s = t[t.length - 1]), + !s || ('paragraph' !== s.type && 'text' !== s.type) + ? t.push(n) + : ((s.raw += '\n' + n.raw), (s.text += '\n' + n.text), (this.inlineQueue[this.inlineQueue.length - 1].src = s.text)); + else if ((n = this.tokenizer.fences(e))) (e = e.substring(n.raw.length)), t.push(n); + else if ((n = this.tokenizer.heading(e))) (e = e.substring(n.raw.length)), t.push(n); + else if ((n = this.tokenizer.hr(e))) (e = e.substring(n.raw.length)), t.push(n); + else if ((n = this.tokenizer.blockquote(e))) (e = e.substring(n.raw.length)), t.push(n); + else if ((n = this.tokenizer.list(e))) (e = e.substring(n.raw.length)), t.push(n); + else if ((n = this.tokenizer.html(e))) (e = e.substring(n.raw.length)), t.push(n); + else if ((n = this.tokenizer.def(e))) + (e = e.substring(n.raw.length)), + (s = t[t.length - 1]), + !s || ('paragraph' !== s.type && 'text' !== s.type) + ? this.tokens.links[n.tag] || (this.tokens.links[n.tag] = { href: n.href, title: n.title }) + : ((s.raw += '\n' + n.raw), (s.text += '\n' + n.raw), (this.inlineQueue[this.inlineQueue.length - 1].src = s.text)); + else if ((n = this.tokenizer.table(e))) (e = e.substring(n.raw.length)), t.push(n); + else if ((n = this.tokenizer.lheading(e))) (e = e.substring(n.raw.length)), t.push(n); + else { + if (((r = e), this.options.extensions && this.options.extensions.startBlock)) { + let t = 1 / 0; + const n = e.slice(1); + let s; + this.options.extensions.startBlock.forEach((e) => { + (s = e.call({ lexer: this }, n)), 'number' == typeof s && s >= 0 && (t = Math.min(t, s)); + }), + t < 1 / 0 && t >= 0 && (r = e.substring(0, t + 1)); + } + if (this.state.top && (n = this.tokenizer.paragraph(r))) + (s = t[t.length - 1]), + i && 'paragraph' === s.type + ? ((s.raw += '\n' + n.raw), (s.text += '\n' + n.text), this.inlineQueue.pop(), (this.inlineQueue[this.inlineQueue.length - 1].src = s.text)) + : t.push(n), + (i = r.length !== e.length), + (e = e.substring(n.raw.length)); + else if ((n = this.tokenizer.text(e))) + (e = e.substring(n.raw.length)), + (s = t[t.length - 1]), + s && 'text' === s.type + ? ((s.raw += '\n' + n.raw), (s.text += '\n' + n.text), this.inlineQueue.pop(), (this.inlineQueue[this.inlineQueue.length - 1].src = s.text)) + : t.push(n); + else if (e) { + const t = 'Infinite loop on byte: ' + e.charCodeAt(0); + if (this.options.silent) { + console.error(t); + break; + } + throw new Error(t); + } + } + return (this.state.top = !0), t; + } + inline(e, t = []) { + return this.inlineQueue.push({ src: e, tokens: t }), t; + } + inlineTokens(e, t = []) { + let n, + s, + r, + i, + l, + o, + a = e; + if (this.tokens.links) { + const e = Object.keys(this.tokens.links); + if (e.length > 0) + for (; null != (i = this.tokenizer.rules.inline.reflinkSearch.exec(a)); ) + e.includes(i[0].slice(i[0].lastIndexOf('[') + 1, -1)) && + (a = a.slice(0, i.index) + '[' + 'a'.repeat(i[0].length - 2) + ']' + a.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex)); + } + for (; null != (i = this.tokenizer.rules.inline.blockSkip.exec(a)); ) + a = a.slice(0, i.index) + '[' + 'a'.repeat(i[0].length - 2) + ']' + a.slice(this.tokenizer.rules.inline.blockSkip.lastIndex); + for (; null != (i = this.tokenizer.rules.inline.anyPunctuation.exec(a)); ) a = a.slice(0, i.index) + '++' + a.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex); + for (; e; ) + if ( + (l || (o = ''), + (l = !1), + !( + this.options.extensions && + this.options.extensions.inline && + this.options.extensions.inline.some((s) => !!(n = s.call({ lexer: this }, e, t)) && ((e = e.substring(n.raw.length)), t.push(n), !0)) + )) + ) + if ((n = this.tokenizer.escape(e))) (e = e.substring(n.raw.length)), t.push(n); + else if ((n = this.tokenizer.tag(e))) + (e = e.substring(n.raw.length)), (s = t[t.length - 1]), s && 'text' === n.type && 'text' === s.type ? ((s.raw += n.raw), (s.text += n.text)) : t.push(n); + else if ((n = this.tokenizer.link(e))) (e = e.substring(n.raw.length)), t.push(n); + else if ((n = this.tokenizer.reflink(e, this.tokens.links))) + (e = e.substring(n.raw.length)), (s = t[t.length - 1]), s && 'text' === n.type && 'text' === s.type ? ((s.raw += n.raw), (s.text += n.text)) : t.push(n); + else if ((n = this.tokenizer.emStrong(e, a, o))) (e = e.substring(n.raw.length)), t.push(n); + else if ((n = this.tokenizer.codespan(e))) (e = e.substring(n.raw.length)), t.push(n); + else if ((n = this.tokenizer.br(e))) (e = e.substring(n.raw.length)), t.push(n); + else if ((n = this.tokenizer.del(e))) (e = e.substring(n.raw.length)), t.push(n); + else if ((n = this.tokenizer.autolink(e))) (e = e.substring(n.raw.length)), t.push(n); + else if (this.state.inLink || !(n = this.tokenizer.url(e))) { + if (((r = e), this.options.extensions && this.options.extensions.startInline)) { + let t = 1 / 0; + const n = e.slice(1); + let s; + this.options.extensions.startInline.forEach((e) => { + (s = e.call({ lexer: this }, n)), 'number' == typeof s && s >= 0 && (t = Math.min(t, s)); + }), + t < 1 / 0 && t >= 0 && (r = e.substring(0, t + 1)); + } + if ((n = this.tokenizer.inlineText(r))) + (e = e.substring(n.raw.length)), + '_' !== n.raw.slice(-1) && (o = n.raw.slice(-1)), + (l = !0), + (s = t[t.length - 1]), + s && 'text' === s.type ? ((s.raw += n.raw), (s.text += n.text)) : t.push(n); + else if (e) { + const t = 'Infinite loop on byte: ' + e.charCodeAt(0); + if (this.options.silent) { + console.error(t); + break; + } + throw new Error(t); + } + } else (e = e.substring(n.raw.length)), t.push(n); + return t; + } + } + class y { + options; + constructor(t) { + this.options = t || e.defaults; + } + code(e, t, n) { + const s = (t || '').match(/^\S*/)?.[0]; + return ( + (e = e.replace(/\n$/, '') + '\n'), + s ? '
' + (n ? e : c(e, !0)) + '
\n' : '
' + (n ? e : c(e, !0)) + '
\n' + ); + } + blockquote(e) { + return `
\n${e}
\n`; + } + html(e, t) { + return e; + } + heading(e, t, n) { + return `${e}\n`; + } + hr() { + return '
\n'; + } + list(e, t, n) { + const s = t ? 'ol' : 'ul'; + return '<' + s + (t && 1 !== n ? ' start="' + n + '"' : '') + '>\n' + e + '\n'; + } + listitem(e, t, n) { + return `
  • ${e}
  • \n`; + } + checkbox(e) { + return ''; + } + paragraph(e) { + return `

    ${e}

    \n`; + } + table(e, t) { + return t && (t = `${t}`), '\n\n' + e + '\n' + t + '
    \n'; + } + tablerow(e) { + return `\n${e}\n`; + } + tablecell(e, t) { + const n = t.header ? 'th' : 'td'; + return (t.align ? `<${n} align="${t.align}">` : `<${n}>`) + e + `\n`; + } + strong(e) { + return `${e}`; + } + em(e) { + return `${e}`; + } + codespan(e) { + return `${e}`; + } + br() { + return '
    '; + } + del(e) { + return `${e}`; + } + link(e, t, n) { + const s = g(e); + if (null === s) return n; + let r = '
    '), r; + } + image(e, t, n) { + const s = g(e); + if (null === s) return n; + let r = `${n} + 'colon' === (t = t.toLowerCase()) + ? ':' + : '#' === t.charAt(0) + ? 'x' === t.charAt(1) + ? String.fromCharCode(parseInt(t.substring(2), 16)) + : String.fromCharCode(+t.substring(1)) + : '' + ) + ); + continue; + } + case 'code': { + const e = r; + n += this.renderer.code(e.text, e.lang, !!e.escaped); + continue; + } + case 'table': { + const e = r; + let t = '', + s = ''; + for (let t = 0; t < e.header.length; t++) s += this.renderer.tablecell(this.parseInline(e.header[t].tokens), { header: !0, align: e.align[t] }); + t += this.renderer.tablerow(s); + let i = ''; + for (let t = 0; t < e.rows.length; t++) { + const n = e.rows[t]; + s = ''; + for (let t = 0; t < n.length; t++) s += this.renderer.tablecell(this.parseInline(n[t].tokens), { header: !1, align: e.align[t] }); + i += this.renderer.tablerow(s); + } + n += this.renderer.table(t, i); + continue; + } + case 'blockquote': { + const e = r, + t = this.parse(e.tokens); + n += this.renderer.blockquote(t); + continue; + } + case 'list': { + const e = r, + t = e.ordered, + s = e.start, + i = e.loose; + let l = ''; + for (let t = 0; t < e.items.length; t++) { + const n = e.items[t], + s = n.checked, + r = n.task; + let o = ''; + if (n.task) { + const e = this.renderer.checkbox(!!s); + i + ? n.tokens.length > 0 && 'paragraph' === n.tokens[0].type + ? ((n.tokens[0].text = e + ' ' + n.tokens[0].text), + n.tokens[0].tokens && + n.tokens[0].tokens.length > 0 && + 'text' === n.tokens[0].tokens[0].type && + (n.tokens[0].tokens[0].text = e + ' ' + n.tokens[0].tokens[0].text)) + : n.tokens.unshift({ type: 'text', text: e + ' ' }) + : (o += e + ' '); + } + (o += this.parse(n.tokens, i)), (l += this.renderer.listitem(o, r, !!s)); + } + n += this.renderer.list(l, t, s); + continue; + } + case 'html': { + const e = r; + n += this.renderer.html(e.text, e.block); + continue; + } + case 'paragraph': { + const e = r; + n += this.renderer.paragraph(this.parseInline(e.tokens)); + continue; + } + case 'text': { + let i = r, + l = i.tokens ? this.parseInline(i.tokens) : i.text; + for (; s + 1 < e.length && 'text' === e[s + 1].type; ) (i = e[++s]), (l += '\n' + (i.tokens ? this.parseInline(i.tokens) : i.text)); + n += t ? this.renderer.paragraph(l) : l; + continue; + } + default: { + const e = 'Token with "' + r.type + '" type was not found.'; + if (this.options.silent) return console.error(e), ''; + throw new Error(e); + } + } + } + return n; + } + parseInline(e, t) { + t = t || this.renderer; + let n = ''; + for (let s = 0; s < e.length; s++) { + const r = e[s]; + if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[r.type]) { + const e = this.options.extensions.renderers[r.type].call({ parser: this }, r); + if (!1 !== e || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(r.type)) { + n += e || ''; + continue; + } + } + switch (r.type) { + case 'escape': { + const e = r; + n += t.text(e.text); + break; + } + case 'html': { + const e = r; + n += t.html(e.text); + break; + } + case 'link': { + const e = r; + n += t.link(e.href, e.title, this.parseInline(e.tokens, t)); + break; + } + case 'image': { + const e = r; + n += t.image(e.href, e.title, e.text); + break; + } + case 'strong': { + const e = r; + n += t.strong(this.parseInline(e.tokens, t)); + break; + } + case 'em': { + const e = r; + n += t.em(this.parseInline(e.tokens, t)); + break; + } + case 'codespan': { + const e = r; + n += t.codespan(e.text); + break; + } + case 'br': + n += t.br(); + break; + case 'del': { + const e = r; + n += t.del(this.parseInline(e.tokens, t)); + break; + } + case 'text': { + const e = r; + n += t.text(e.text); + break; + } + default: { + const e = 'Token with "' + r.type + '" type was not found.'; + if (this.options.silent) return console.error(e), ''; + throw new Error(e); + } + } + } + return n; + } + } + class T { + options; + constructor(t) { + this.options = t || e.defaults; + } + static passThroughHooks = new Set(['preprocess', 'postprocess']); + preprocess(e) { + return e; + } + postprocess(e) { + return e; + } + } + class R { + defaults = { async: !1, breaks: !1, extensions: null, gfm: !0, hooks: null, pedantic: !1, renderer: null, silent: !1, tokenizer: null, walkTokens: null }; + options = this.setOptions; + parse = this.#e(_.lex, z.parse); + parseInline = this.#e(_.lexInline, z.parseInline); + Parser = z; + parser = z.parse; + Renderer = y; + TextRenderer = $; + Lexer = _; + lexer = _.lex; + Tokenizer = b; + Hooks = T; + constructor(...e) { + this.use(...e); + } + walkTokens(e, t) { + let n = []; + for (const s of e) + switch (((n = n.concat(t.call(this, s))), s.type)) { + case 'table': { + const e = s; + for (const s of e.header) n = n.concat(this.walkTokens(s.tokens, t)); + for (const s of e.rows) for (const e of s) n = n.concat(this.walkTokens(e.tokens, t)); + break; + } + case 'list': { + const e = s; + n = n.concat(this.walkTokens(e.items, t)); + break; + } + default: { + const e = s; + this.defaults.extensions?.childTokens?.[e.type] + ? this.defaults.extensions.childTokens[e.type].forEach((s) => { + n = n.concat(this.walkTokens(e[s], t)); + }) + : e.tokens && (n = n.concat(this.walkTokens(e.tokens, t))); + } + } + return n; + } + use(...e) { + const t = this.defaults.extensions || { renderers: {}, childTokens: {} }; + return ( + e.forEach((e) => { + const n = { ...e }; + if ( + ((n.async = this.defaults.async || n.async || !1), + e.extensions && + (e.extensions.forEach((e) => { + if (!e.name) throw new Error('extension name required'); + if ('renderer' in e) { + const n = t.renderers[e.name]; + t.renderers[e.name] = n + ? function (...t) { + let s = e.renderer.apply(this, t); + return !1 === s && (s = n.apply(this, t)), s; + } + : e.renderer; + } + if ('tokenizer' in e) { + if (!e.level || ('block' !== e.level && 'inline' !== e.level)) throw new Error("extension level must be 'block' or 'inline'"); + const n = t[e.level]; + n ? n.unshift(e.tokenizer) : (t[e.level] = [e.tokenizer]), + e.start && + ('block' === e.level + ? t.startBlock + ? t.startBlock.push(e.start) + : (t.startBlock = [e.start]) + : 'inline' === e.level && (t.startInline ? t.startInline.push(e.start) : (t.startInline = [e.start]))); + } + 'childTokens' in e && e.childTokens && (t.childTokens[e.name] = e.childTokens); + }), + (n.extensions = t)), + e.renderer) + ) { + const t = this.defaults.renderer || new y(this.defaults); + for (const n in e.renderer) { + const s = e.renderer[n], + r = n, + i = t[r]; + t[r] = (...e) => { + let n = s.apply(t, e); + return !1 === n && (n = i.apply(t, e)), n || ''; + }; + } + n.renderer = t; + } + if (e.tokenizer) { + const t = this.defaults.tokenizer || new b(this.defaults); + for (const n in e.tokenizer) { + const s = e.tokenizer[n], + r = n, + i = t[r]; + t[r] = (...e) => { + let n = s.apply(t, e); + return !1 === n && (n = i.apply(t, e)), n; + }; + } + n.tokenizer = t; + } + if (e.hooks) { + const t = this.defaults.hooks || new T(); + for (const n in e.hooks) { + const s = e.hooks[n], + r = n, + i = t[r]; + T.passThroughHooks.has(n) + ? (t[r] = (e) => { + if (this.defaults.async) return Promise.resolve(s.call(t, e)).then((e) => i.call(t, e)); + const n = s.call(t, e); + return i.call(t, n); + }) + : (t[r] = (...e) => { + let n = s.apply(t, e); + return !1 === n && (n = i.apply(t, e)), n; + }); + } + n.hooks = t; + } + if (e.walkTokens) { + const t = this.defaults.walkTokens, + s = e.walkTokens; + n.walkTokens = function (e) { + let n = []; + return n.push(s.call(this, e)), t && (n = n.concat(t.call(this, e))), n; + }; + } + this.defaults = { ...this.defaults, ...n }; + }), + this + ); + } + setOptions(e) { + return (this.defaults = { ...this.defaults, ...e }), this; + } + #e(e, t) { + return (n, s) => { + const r = { ...s }, + i = { ...this.defaults, ...r }; + !0 === this.defaults.async && + !1 === r.async && + (i.silent || console.warn('marked(): The async option was set to true by an extension. The async: false option sent to parse will be ignored.'), (i.async = !0)); + const l = this.#t(!!i.silent, !!i.async); + if (null == n) return l(new Error('marked(): input parameter is undefined or null')); + if ('string' != typeof n) return l(new Error('marked(): input parameter is of type ' + Object.prototype.toString.call(n) + ', string expected')); + if ((i.hooks && (i.hooks.options = i), i.async)) + return Promise.resolve(i.hooks ? i.hooks.preprocess(n) : n) + .then((t) => e(t, i)) + .then((e) => (i.walkTokens ? Promise.all(this.walkTokens(e, i.walkTokens)).then(() => e) : e)) + .then((e) => t(e, i)) + .then((e) => (i.hooks ? i.hooks.postprocess(e) : e)) + .catch(l); + try { + i.hooks && (n = i.hooks.preprocess(n)); + const s = e(n, i); + i.walkTokens && this.walkTokens(s, i.walkTokens); + let r = t(s, i); + return i.hooks && (r = i.hooks.postprocess(r)), r; + } catch (e) { + return l(e); + } + }; + } + #t(e, t) { + return (n) => { + if (((n.message += '\nPlease report this to https://github.com/markedjs/marked.'), e)) { + const e = '

    An error occurred:

    ' + c(n.message + '', !0) + '
    '; + return t ? Promise.resolve(e) : e; + } + if (t) return Promise.reject(n); + throw n; + }; + } + } + const S = new R(); + function A(e, t) { + return S.parse(e, t); + } + (A.options = A.setOptions = + function (e) { + return S.setOptions(e), (A.defaults = S.defaults), n(A.defaults), A; + }), + (A.getDefaults = t), + (A.defaults = e.defaults), + (A.use = function (...e) { + return S.use(...e), (A.defaults = S.defaults), n(A.defaults), A; + }), + (A.walkTokens = function (e, t) { + return S.walkTokens(e, t); + }), + (A.parseInline = S.parseInline), + (A.Parser = z), + (A.parser = z.parse), + (A.Renderer = y), + (A.TextRenderer = $), + (A.Lexer = _), + (A.lexer = _.lex), + (A.Tokenizer = b), + (A.Hooks = T), + (A.parse = A); + const I = A.options, + E = A.setOptions, + Z = A.use, + q = A.walkTokens, + L = A.parseInline, + D = A, + P = z.parse, + v = _.lex; + (e.Hooks = T), + (e.Lexer = _), + (e.Marked = R), + (e.Parser = z), + (e.Renderer = y), + (e.TextRenderer = $), + (e.Tokenizer = b), + (e.getDefaults = t), + (e.lexer = v), + (e.marked = A), + (e.options = I), + (e.parse = D), + (e.parseInline = L), + (e.parser = P), + (e.setOptions = E), + (e.use = Z), + (e.walkTokens = q); +}); diff --git a/src/renderer/ui/third/tools.js b/src/renderer/ui/third/tools.js index e7fb507..9f177ad 100644 --- a/src/renderer/ui/third/tools.js +++ b/src/renderer/ui/third/tools.js @@ -1,6 +1,6 @@ import Long from 'long'; -const formatJson = (obj) => { +const formatJson = (obj = 0) => { const isLong = obj instanceof Long; if (isLong) { return obj; @@ -24,7 +24,7 @@ const formatJson = (obj) => { return hashRet; }; -const transferToLong = (obj) => { +const transferToLong = (obj = 0) => { const { low, high } = obj; if (typeof low !== 'undefined' && typeof high !== 'undefined') { const srret = new Long(low, high, true); @@ -62,7 +62,7 @@ const toNumber = (obj = 0) => { } }; -const toLong = (obj) => { +const toLong = (obj = 0) => { if (typeof obj === 'string') return Long.fromString(obj); const { low, high, unsigned = true } = obj; if (typeof low !== 'undefined' && high !== 'undefined') { @@ -74,7 +74,7 @@ const toLong = (obj) => { return new Long(); }; -const numToString = (obj) => { +const numToString = (obj = 0) => { if (typeof obj === 'undefined') { (''); }