joplin-plugin-aide 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 lim0513
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,68 @@
1
+ # Joplin Aide
2
+
3
+ An AI assistant chat panel for [Joplin](https://joplinapp.org/) — ask about your notes and let the AI read, search, create and edit them, powered by the CLI you already have: [Claude Code](https://claude.com/claude-code) or [GitHub Copilot CLI](https://github.com/features/copilot/cli).
4
+
5
+ Formerly published as *Joplin Claude*.
6
+
7
+ [中文说明](README-CN.md)
8
+
9
+
10
+ ## Features
11
+
12
+ - **Dual backend** — Claude Code or GitHub Copilot CLI; a pill button in the panel header switches engines with one click (the next message starts a fresh session on the new engine)
13
+ - **Chat panel** — streaming replies rendered as full Markdown (headings, tables, code, clickable links), tool-activity chips, and a header showing which note the AI is targeting (updates live as you switch notes)
14
+ - **19 note tools** — list/search/read notes and notebooks, create/update/delete notes, tags, to-dos, note attachments, rich search syntax (`tag:`, `type:todo`, `updated:day-7`, ...)
15
+ - **Write confirmation** — every create/update/delete waits for your Approve/Decline in the panel, with an "Always (this session)" option per request kind; an optional (dangerous, off by default) auto mode approves everything. Enforced server-side, so it applies to both backends
16
+ - **Interactive questions** — the AI can ask a multiple-choice question mid-task; options render as clickable buttons and your click is returned as the answer
17
+ - **Attachments** — paperclip button, drag & drop, or paste an image straight from the clipboard
18
+ - **Conversation history** — the clock button lists past conversations; loading one restores the transcript and resumes the CLI session
19
+ - **Uses your existing CLI login** — no API key to manage; requests go through `claude` / `copilot` with your existing subscription
20
+ - **i18n** — English, Simplified Chinese and Japanese (follows Joplin's locale setting)
21
+
22
+ ## How it works
23
+
24
+ ```
25
+ Panel (webview) ←→ Plugin host (Node)
26
+ ├─ spawns: claude -p --output-format stream-json ...
27
+ │ or: copilot --output-format json ...
28
+ ├─ local control server (127.0.0.1, random port)
29
+ └─ writes MCP stdio proxy to the plugin dataDir
30
+ CLI ── spawns ──► MCP proxy ── HTTP ──► control server ──► joplin.data
31
+ ```
32
+
33
+ The MCP proxy is a zero-dependency script shipped inside the plugin. The CLI launches it using **Joplin's own Electron runtime** (`ELECTRON_RUN_AS_NODE=1`), so users need no separate Node.js install. Every tool call is forwarded to the plugin's local control server, where the real work happens through the Joplin data API — including the user-confirmation step for writes.
34
+
35
+ ## Install
36
+
37
+ 1. Download `plugin.jpl` from the [latest release](https://github.com/lim0513/joplin-aide/releases/latest)
38
+ 2. In Joplin, go to **Tools → Options → Plugins**
39
+ 3. Click the gear icon and select **Install from file**
40
+ 4. Choose the downloaded `.jpl` file and restart Joplin
41
+
42
+ ## Requirements
43
+
44
+ - Joplin desktop 2.8+
45
+ - At least one backend CLI, installed and logged in:
46
+ - [Claude Code](https://claude.com/claude-code) — `claude` on PATH (or set the full path in settings)
47
+ - [GitHub Copilot CLI](https://github.com/features/copilot/cli) — `copilot` on PATH (or set the full path in settings); included with all Copilot plans, Free tier has a monthly request limit
48
+
49
+ ## Settings
50
+
51
+ **Tools → Options → Joplin Aide**: AI backend, CLI command/path and model per backend, write-confirmation toggle, extra allowed tools and CLI arguments (advanced).
52
+
53
+ ## Development
54
+
55
+ ```bash
56
+ npm install
57
+ npm run dist
58
+ ```
59
+
60
+ `dist/` is loadable via Joplin's **Development plugins** setting (point it at the project root). `publish/plugin.jpl` is the installable package.
61
+
62
+ ## Credits
63
+
64
+ Co-developed with [Claude](https://claude.com) (Anthropic).
65
+
66
+ ## License
67
+
68
+ MIT
package/package.json ADDED
@@ -0,0 +1,35 @@
1
+ {
2
+ "name": "joplin-plugin-aide",
3
+ "version": "1.0.0",
4
+ "description": "Chat with Claude inside Joplin - Claude can read, search, create and edit your notes (powered by your local Claude Code CLI)",
5
+ "author": "lim0513",
6
+ "homepage": "https://github.com/lim0513/joplin-aide",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://github.com/lim0513/joplin-aide.git"
10
+ },
11
+ "scripts": {
12
+ "dist": "webpack --env production && node scripts/pack-jpl.js",
13
+ "dev": "webpack --watch"
14
+ },
15
+ "keywords": [
16
+ "joplin-plugin",
17
+ "joplin",
18
+ "claude",
19
+ "ai",
20
+ "assistant",
21
+ "chat"
22
+ ],
23
+ "license": "MIT",
24
+ "devDependencies": {
25
+ "copy-webpack-plugin": "^11.0.0",
26
+ "ts-loader": "^9.5.1",
27
+ "typescript": "^5.3.3",
28
+ "webpack": "^5.89.0",
29
+ "webpack-cli": "^5.1.4",
30
+ "markdown-it": "^14.3.0"
31
+ },
32
+ "files": [
33
+ "publish"
34
+ ]
35
+ }
@@ -0,0 +1 @@
1
+ (()=>{"use strict";var e={317(e){e.exports=require("child_process")},896(e){e.exports=require("fs")},611(e){e.exports=require("http")},928(e){e.exports=require("path")}};const t={};function o(i){const n=t[i];if(void 0!==n)return n.exports;const s=t[i]={exports:{}};return e[i](s,s.exports,o),s.exports}const i={en_US:{inputPlaceholder:"Ask AI about your notes...",titleHistory:"History",titleNew:"New conversation",titleSend:"Send",titleStop:"Stop",titleDelete:"Delete",working:"⏳ Working...",noHistory:"No history yet",approve:"Approve",decline:"Decline",errAlreadyRunning:"A request is already running.",errStartFailed:"Failed to start {bin}: {err}",errProcess:"{bin} process error: {err}. Is the CLI installed and on PATH? (Settings > Joplin Aide)",errExited:"{bin} exited with code {code}: {err}",cCreateNote:'Create note "{title}"',cUpdateNote:"Update note {id}",cRetitle:' (retitle to "{title}")',cBodyChars:" [body: {n} chars]",cCreateNotebook:'Create notebook "{title}"',cDeleteNote:"DELETE note {id}",cToolPermission:"Tool permission: {name}",cAppend:"Append to note {id} [{n} chars]",cTagNote:'Tag note {id} with "{tag}"',cUntagNote:'Remove tag "{tag}" from note {id}',cSetTodo:"Mark to-do {id} as {state}",cUpdateNotebook:"Update notebook {id}",dCreated:"Created note: {title}",dUpdated:"Updated note {id}",dDeleted:"Deleted note {id}",autoApproved:"⚠ Auto-approved: {s}",alwaysAllow:"Always (this session)",titleAttach:"Attach files",titleBackend:"AI backend - click to switch (new session)",backendSwitched:"Switched to {name} - next message starts a new session",errAttachTooBig:"Attachment too large (max 8 MB): {name}",sessionApproved:"✓ Allowed by session rule: {s}"},zh_CN:{inputPlaceholder:"向 AI 询问你的笔记...",titleHistory:"历史会话",titleNew:"新会话",titleSend:"发送",titleStop:"停止",titleDelete:"删除",working:"⏳ 正在处理...",noHistory:"暂无历史会话",approve:"允许",decline:"拒绝",errAlreadyRunning:"已有请求正在运行。",errStartFailed:"启动 {bin} 失败:{err}",errProcess:"{bin} 进程错误:{err}。请确认已安装对应 CLI 且在 PATH 中(设置 > Joplin Aide)。",errExited:"{bin} 退出,代码 {code}:{err}",cCreateNote:"新建笔记「{title}」",cUpdateNote:"修改笔记 {id}",cRetitle:"(改名为「{title}」)",cBodyChars:"(正文 {n} 字符)",cCreateNotebook:"新建笔记本「{title}」",cDeleteNote:"删除笔记 {id}",cToolPermission:"工具权限请求:{name}",cAppend:"追加内容到笔记 {id}({n} 字符)",cTagNote:"给笔记 {id} 加标签「{tag}」",cUntagNote:"移除笔记 {id} 的标签「{tag}」",cSetTodo:"将待办 {id} 标记为{state}",cUpdateNotebook:"修改笔记本 {id}",dCreated:"已创建笔记:{title}",dUpdated:"已修改笔记 {id}",dDeleted:"已删除笔记 {id}",autoApproved:"⚠ 已自动批准:{s}",alwaysAllow:"本会话内一直允许",titleAttach:"添加附件",titleBackend:"AI 后端——点击切换(切换后开新会话)",backendSwitched:"已切换到 {name},下一条消息开始新会话",errAttachTooBig:"附件过大(上限 8 MB):{name}",sessionApproved:"✓ 按会话授权放行:{s}"},ja_JP:{inputPlaceholder:"ノートについて AI に質問...",titleHistory:"履歴",titleNew:"新しい会話",titleSend:"送信",titleStop:"停止",titleDelete:"削除",working:"⏳ 処理中...",noHistory:"履歴はまだありません",approve:"許可",decline:"拒否",errAlreadyRunning:"リクエストがすでに実行中です。",errStartFailed:"{bin} の起動に失敗しました:{err}",errProcess:"{bin} プロセスエラー:{err}。CLI がインストールされ PATH にあるか確認してください(設定 > Joplin Aide)。",errExited:"{bin} がコード {code} で終了:{err}",cCreateNote:"ノート「{title}」を作成",cUpdateNote:"ノート {id} を更新",cRetitle:"(「{title}」に改名)",cBodyChars:"(本文 {n} 文字)",cCreateNotebook:"ノートブック「{title}」を作成",cDeleteNote:"ノート {id} を削除",cToolPermission:"ツール権限リクエスト:{name}",cAppend:"ノート {id} に追記({n} 文字)",cTagNote:"ノート {id} にタグ「{tag}」を追加",cUntagNote:"ノート {id} からタグ「{tag}」を削除",cSetTodo:"タスク {id} を{state}にする",cUpdateNotebook:"ノートブック {id} を変更",dCreated:"ノートを作成:{title}",dUpdated:"ノート {id} を更新しました",dDeleted:"ノート {id} を削除しました",autoApproved:"⚠ 自動許可:{s}",alwaysAllow:"このセッションでは常に許可",titleAttach:"ファイルを添付",titleBackend:"AI バックエンド——クリックで切替(新しい会話を開始)",backendSwitched:"{name} に切り替えました。次のメッセージから新しいセッションになります",errAttachTooBig:"添付ファイルが大きすぎます(上限 8 MB):{name}",sessionApproved:"✓ セッション許可で実行:{s}"}};function n(e,t){return String(e).replace(/\{(\w+)\}/g,(e,o)=>void 0!==t[o]?String(t[o]):e)}const s=o(611),a=o(896),r=o(928),d=o(317);function l(e){return String(e).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}joplin.plugins.register({onStart:async function(){const e=function(e){if(i[e])return i[e];const t=String(e||"").split("_")[0];return"zh"===t?i.zh_CN:"ja"===t?i.ja_JP:i.en_US}(await joplin.settings.globalValue("locale")||"en_US");await joplin.settings.registerSection("joplinAide",{label:"Joplin Aide",iconName:"fas fa-robot"}),await joplin.settings.registerSettings({backend:{section:"joplinAide",type:2,value:"claude",public:!0,isEnum:!0,options:{claude:"Claude Code",copilot:"GitHub Copilot"},label:"AI backend",description:"Which local CLI powers the chat. Each must be installed and logged in on its own (claude / copilot). Switching backends starts a new session."},claudePath:{section:"joplinAide",type:2,value:"",public:!0,subType:"file_path",label:"Claude Code CLI path (claude.exe)",description:'Full path to the claude executable. Leave empty to use "claude" from the system PATH.'},claudeModel:{section:"joplinAide",type:2,value:"",public:!0,label:"Model (optional)",description:"Passed as --model. Leave empty to use the CLI default."},copilotPath:{section:"joplinAide",type:2,value:"",public:!0,subType:"file_path",label:"Copilot CLI path (copilot)",description:'Full path to the copilot executable. Leave empty to use "copilot" from the system PATH.'},copilotModel:{section:"joplinAide",type:2,value:"",public:!0,label:"Copilot model (optional)",description:"Passed as --model to the Copilot CLI. Leave empty for automatic model selection."},requireWriteConfirm:{section:"joplinAide",type:3,value:!0,public:!0,advanced:!0,label:"Confirm before Claude modifies notes",description:"Create/update/delete operations wait for your approval in the chat panel."},autoApproveAll:{section:"joplinAide",type:3,value:!1,public:!0,advanced:!0,label:"🔴 ⚠ AUTO MODE — approve ALL permission requests ⚠",description:"DANGER: when enabled, EVERY request is approved automatically without asking - note edits and deletions, AND any tool Claude asks for (potentially including shell commands). Claude gets free rein over your notes. Equivalent to running Claude Code with permissions disabled. Leave OFF unless you fully accept the risk."},extraAllowedTools:{section:"joplinAide",type:2,value:"WebSearch,WebFetch,Read",public:!0,advanced:!0,label:"Additional allowed Claude tools",description:"Comma-separated Claude Code tools to auto-allow besides the Joplin note tools. Tools NOT listed here trigger an Approve/Decline card in the chat panel. Default: WebSearch,WebFetch,Read (Read is needed to view chat and note attachments without prompting)."},extraCliArgs:{section:"joplinAide",type:2,value:"",public:!0,advanced:!0,label:"Extra CLI arguments",description:"Advanced: appended verbatim to the claude command line."}});const t=await joplin.views.panels.create("aideChatPanel");async function o(){try{const e=await joplin.workspace.selectedNote();c({name:"noteContext",title:e?e.title:""})}catch(e){}}function c(e){joplin.views.panels.postMessage(t,e)}await joplin.views.panels.addScript(t,"webview/panel.css"),await joplin.views.panels.addScript(t,"webview/markdown-it.min.js"),await joplin.views.panels.addScript(t,"webview/panel.js"),await joplin.views.panels.setHtml(t,['<div id="aide-root" data-i18n="'+l(JSON.stringify(e))+'">',' <div class="cc-header"><span class="cc-title">Aide</span>',' <span id="cc-note-context" class="cc-note-context"></span>',' <button id="cc-backend" title="'+l(e.titleBackend)+'"></button>',' <button id="cc-history" title="'+l(e.titleHistory)+'">&#x1F550;</button>',' <button id="cc-new" title="'+l(e.titleNew)+'">&#x2795;</button>'," </div>",' <div id="cc-messages"></div>',' <div id="cc-confirm"></div>',' <div id="cc-attachments"></div>',' <div class="cc-input-row">',' <textarea id="cc-input" rows="3" placeholder="'+l(e.inputPlaceholder)+'"></textarea>',' <div class="cc-input-buttons">',' <button id="cc-attach" title="'+l(e.titleAttach)+'">&#x1F4CE;</button>',' <input id="cc-file" type="file" multiple style="display:none;" />',' <button id="cc-send" title="'+l(e.titleSend)+'">&#x27A4;</button>',' <button id="cc-stop" title="'+l(e.titleStop)+'" style="display:none;">&#x25A0;</button>'," </div>"," </div>","</div>"].join("")),await joplin.views.panels.show(t,!1),await joplin.commands.register({name:"toggleAidePanel",label:"Toggle Aide panel",iconName:"fas fa-robot",execute:async()=>{const e=await joplin.views.panels.visible(t);await joplin.views.panels.show(t,!e)}}),await joplin.views.toolbarButtons.create("aidePanelButton","toggleAidePanel","noteToolbar"),await joplin.workspace.onNoteSelectionChange(o);const p=[{name:"list_notebooks",description:"List all notebooks (folders) with id, title and parent_id.",inputSchema:{type:"object",properties:{},required:[]}},{name:"list_notes",description:"List notes in a notebook (id + title, most recently updated first, max 200).",inputSchema:{type:"object",properties:{notebook_id:{type:"string",description:"Notebook id"}},required:["notebook_id"]}},{name:"search_notes",description:'Search notes with Joplin query syntax: plain words, "exact phrase", tag:xxx, notebook:xxx, type:todo, iscompleted:0, created:20260101, updated:day-7, sourceurl:*. Returns id, title, parent_id, todo fields (max 50).',inputSchema:{type:"object",properties:{query:{type:"string",description:"Search query"}},required:["query"]}},{name:"read_note",description:"Read a note: title, markdown body, notebook id.",inputSchema:{type:"object",properties:{note_id:{type:"string"}},required:["note_id"]}},{name:"get_selected_note",description:'Get the note currently open in the Joplin editor (id, title, body). Use this when the user says "this note".',inputSchema:{type:"object",properties:{},required:[]}},{name:"create_note",description:"Create a new note in a notebook.",write:!0,confirmSummary:t=>n(e.cCreateNote,{title:t.title||"(untitled)"}),inputSchema:{type:"object",properties:{title:{type:"string"},body:{type:"string",description:"Markdown body"},notebook_id:{type:"string",description:"Target notebook id (optional; defaults to the currently selected notebook)"}},required:["title","body"]}},{name:"update_note",description:"Update an existing note. Only the provided fields are changed. To edit content, read the note first, then send the FULL new body.",write:!0,confirmSummary:t=>n(e.cUpdateNote,{id:t.note_id})+(t.title?n(e.cRetitle,{title:t.title}):"")+(void 0!==t.body?n(e.cBodyChars,{n:String(t.body).length}):""),inputSchema:{type:"object",properties:{note_id:{type:"string"},title:{type:"string"},body:{type:"string",description:"Full replacement markdown body"},notebook_id:{type:"string",description:"Move to this notebook"}},required:["note_id"]}},{name:"create_notebook",description:"Create a new notebook, optionally under a parent notebook.",write:!0,confirmSummary:t=>n(e.cCreateNotebook,{title:t.title||""}),inputSchema:{type:"object",properties:{title:{type:"string"},parent_id:{type:"string",description:"Parent notebook id (optional)"}},required:["title"]}},{name:"list_tags",description:"List all tags (id + title).",inputSchema:{type:"object",properties:{},required:[]}},{name:"get_note_tags",description:"List the tags attached to a note.",inputSchema:{type:"object",properties:{note_id:{type:"string"}},required:["note_id"]}},{name:"list_notes_by_tag",description:"List notes that carry a tag (by tag id, see list_tags).",inputSchema:{type:"object",properties:{tag_id:{type:"string"}},required:["tag_id"]}},{name:"list_note_attachments",description:"List the file attachments (resources) of a note, with their LOCAL file paths. Use the Read tool with local_path to view an attachment (images, PDFs, text...).",inputSchema:{type:"object",properties:{note_id:{type:"string"}},required:["note_id"]}},{name:"open_note",description:"Open a note in the Joplin editor (navigate the user to it).",inputSchema:{type:"object",properties:{note_id:{type:"string"}},required:["note_id"]}},{name:"append_to_note",description:"Append markdown text to the END of a note. Prefer this over update_note when adding content - it cannot damage existing content.",write:!0,confirmSummary:t=>n(e.cAppend,{id:t.note_id,n:String(t.text||"").length}),inputSchema:{type:"object",properties:{note_id:{type:"string"},text:{type:"string",description:"Markdown to append"}},required:["note_id","text"]}},{name:"tag_note",description:"Add a tag to a note (creates the tag if it does not exist).",write:!0,confirmSummary:t=>n(e.cTagNote,{id:t.note_id,tag:t.tag}),inputSchema:{type:"object",properties:{note_id:{type:"string"},tag:{type:"string",description:"Tag title"}},required:["note_id","tag"]}},{name:"untag_note",description:"Remove a tag from a note.",write:!0,confirmSummary:t=>n(e.cUntagNote,{id:t.note_id,tag:t.tag}),inputSchema:{type:"object",properties:{note_id:{type:"string"},tag:{type:"string",description:"Tag title"}},required:["note_id","tag"]}},{name:"set_todo_status",description:"Mark a to-do note as completed or not completed.",write:!0,confirmSummary:t=>n(e.cSetTodo,{id:t.note_id,state:t.completed?"done":"open"}),inputSchema:{type:"object",properties:{note_id:{type:"string"},completed:{type:"boolean"}},required:["note_id","completed"]}},{name:"update_notebook",description:"Rename a notebook and/or move it under another parent notebook.",write:!0,confirmSummary:t=>n(e.cUpdateNotebook,{id:t.notebook_id}),inputSchema:{type:"object",properties:{notebook_id:{type:"string"},title:{type:"string",description:"New title"},parent_id:{type:"string",description:'New parent notebook id ("" for top level)'}},required:["notebook_id"]}},{name:"ask_user",description:"Ask the user ONE multiple-choice question and wait for their answer. Renders clickable option buttons in the chat panel. Use this whenever you need the user to pick between alternatives before proceeding. Returns the chosen option text.",inputSchema:{type:"object",properties:{question:{type:"string",description:"The question to ask"},options:{type:"array",items:{type:"string"},description:"2-6 short option labels"}},required:["question","options"]}},{name:"approval_prompt",description:"INTERNAL: permission prompt bridge for the Claude Code permission system. Not for direct use.",inputSchema:{type:"object",properties:{tool_name:{type:"string"},input:{type:"object"},tool_use_id:{type:"string"}},required:["tool_name"]}},{name:"delete_note",description:"Delete a note (moves it to trash).",write:!0,confirmSummary:t=>n(e.cDeleteNote,{id:t.note_id}),inputSchema:{type:"object",properties:{note_id:{type:"string"}},required:["note_id"]}}],u={};let m=0;const g={};let h=0,y={};async function f(t,o){return!0===await joplin.settings.value("autoApproveAll")?(c({name:"toolDone",text:n(e.autoApproved,{s:t})}),!0):y[o]?(c({name:"toolDone",text:n(e.sessionApproved,{s:t})}),!0):new Promise(e=>{const i=String(++m),n=setTimeout(()=>{delete u[i],c({name:"confirmGone",requestId:i}),e(!1)},12e4);u[i]={resolve:e,timer:n,key:o,summary:t},c({name:"confirmWrite",requestId:i,summary:t})})}async function b(e,t,o={}){let i=[],n=1,s=!0;for(;s&&i.length<1e3;){const a=await joplin.data.get(e,{fields:t,page:n,limit:100,...o});i=i.concat(a.items),s=a.has_more,n++}return i}async function _(e,t){const o=await joplin.data.get(["search"],{query:e,type:"tag",fields:["id","title"]}),i=String(e).toLowerCase();return(o.items||[]).find(e=>String(e.title).toLowerCase()===i)||(t?await joplin.data.post(["tags"],null,{title:e}):null)}const w=s.createServer((t,o)=>{const i=(e,t)=>{const i=JSON.stringify(t);o.writeHead(e,{"Content-Type":"application/json"}),o.end(i)};if("GET"!==t.method||"/tools"!==t.url){if("POST"===t.method&&"/tool"===t.url){const o=[];return t.on("data",e=>o.push(e)),void t.on("end",async()=>{try{const t=JSON.parse(Buffer.concat(o).toString("utf8"));c({name:"toolUse",tool:t.name});const s=await async function(t,o){const i=p.find(e=>e.name===t);if(!i)return{result:"Unknown tool: "+t,isError:!0};if(i.write&&!1!==await joplin.settings.value("requireWriteConfirm")){const e=i.confirmSummary?i.confirmSummary(o):t;if(!await f(e,t))return{result:"The user DECLINED this operation. Do not retry it; ask the user what they would like instead.",isError:!0}}if("ask_user"===t){const e=Array.isArray(o.options)?o.options.map(e=>String(e)).slice(0,6):[];if(!o.question||e.length<2)return{result:"ask_user requires a question and at least 2 options.",isError:!0};const t=await function(e,t){return new Promise(o=>{const i="q"+String(++h),n=setTimeout(()=>{delete g[i],c({name:"questionGone",requestId:i}),o("")},3e5);g[i]={resolve:o,timer:n,question:e,options:t},c({name:"userQuestion",requestId:i,questions:[{question:e,options:t}]})})}(String(o.question),e);return t?(E("tool","ask_user: "+o.question+" -> "+t),{result:t}):{result:"The user did not answer within the time limit.",isError:!0}}if("approval_prompt"===t){let t="";try{const e=JSON.stringify(o.input||{});t=e.length>160?e.slice(0,160)+"...":e}catch(e){}const i=await f(n(e.cToolPermission,{name:String(o.tool_name||"?")})+(t&&"{}"!==t?" "+t:""),"tool:"+String(o.tool_name||"?"));return{result:JSON.stringify(i?{behavior:"allow",updatedInput:o.input||{}}:{behavior:"deny",message:"The user denied this tool use."})}}switch(t){case"list_notebooks":return{result:await b(["folders"],["id","title","parent_id"])};case"list_notes":{const e=await b(["folders",o.notebook_id,"notes"],["id","title","user_updated_time","is_todo","todo_completed"]);return e.sort((e,t)=>(t.user_updated_time||0)-(e.user_updated_time||0)),{result:e.slice(0,200).map(e=>({id:e.id,title:e.title,is_todo:e.is_todo,todo_completed:e.todo_completed}))}}case"search_notes":return{result:(await joplin.data.get(["search"],{query:o.query,fields:["id","title","parent_id","is_todo","todo_completed","todo_due","user_updated_time"],limit:50})).items};case"read_note":return{result:await joplin.data.get(["notes",o.note_id],{fields:["id","title","body","parent_id","is_todo","todo_completed","todo_due","user_created_time","user_updated_time","source_url"]})};case"get_selected_note":{const e=await joplin.workspace.selectedNote();return e?{result:{id:e.id,title:e.title,body:e.body,parent_id:e.parent_id}}:{result:"No note is currently selected.",isError:!0}}case"list_tags":return{result:await b(["tags"],["id","title"])};case"get_note_tags":return{result:(await joplin.data.get(["notes",o.note_id,"tags"],{fields:["id","title"],limit:100})).items};case"list_notes_by_tag":return{result:(await b(["tags",o.tag_id,"notes"],["id","title","parent_id","is_todo","todo_completed"])).slice(0,200)};case"list_note_attachments":{const e=((await joplin.data.get(["notes",o.note_id,"resources"],{fields:["id","title","mime","file_extension","size"],limit:100})).items||[]).map(e=>({id:e.id,title:e.title,mime:e.mime,size:e.size,local_path:r.join(r.resolve(S,"..","..","resources"),e.id+(e.file_extension?"."+e.file_extension:""))}));return{result:e.length?e:"This note has no attachments."}}case"open_note":return await joplin.commands.execute("openNote",o.note_id),{result:"Opened."};case"append_to_note":{const t=await joplin.data.get(["notes",o.note_id],{fields:["body"]}),i=String(t.body||"").replace(/\s+$/,"")+"\n\n"+String(o.text||"");return await joplin.data.put(["notes",o.note_id],null,{body:i}),c({name:"toolDone",text:n(e.dUpdated,{id:o.note_id})}),{result:"Appended."}}case"tag_note":{const e=await _(String(o.tag),!0);return await joplin.data.post(["tags",e.id,"notes"],null,{id:o.note_id}),{result:'Tagged with "'+e.title+'".'}}case"untag_note":{const e=await _(String(o.tag),!1);return e?(await joplin.data.delete(["tags",e.id,"notes",o.note_id]),{result:"Tag removed."}):{result:"Tag not found: "+o.tag,isError:!0}}case"set_todo_status":return(await joplin.data.get(["notes",o.note_id],{fields:["is_todo"]})).is_todo?(await joplin.data.put(["notes",o.note_id],null,{todo_completed:o.completed?Date.now():0}),{result:o.completed?"Marked as done.":"Marked as open."}):{result:"This note is not a to-do.",isError:!0};case"update_notebook":{const e={};return void 0!==o.title&&(e.title=o.title),void 0!==o.parent_id&&(e.parent_id=o.parent_id),0===Object.keys(e).length?{result:"Nothing to update.",isError:!0}:(await joplin.data.put(["folders",o.notebook_id],null,e),{result:"Notebook updated."})}case"create_note":{const t={title:o.title,body:o.body};if(o.notebook_id)t.parent_id=o.notebook_id;else{const e=await joplin.workspace.selectedFolder();e&&(t.parent_id=e.id)}const i=await joplin.data.post(["notes"],null,t);return c({name:"toolDone",text:n(e.dCreated,{title:i.title})}),{result:{id:i.id,title:i.title}}}case"update_note":{const t={};return void 0!==o.title&&(t.title=o.title),void 0!==o.body&&(t.body=o.body),void 0!==o.notebook_id&&(t.parent_id=o.notebook_id),0===Object.keys(t).length?{result:"Nothing to update.",isError:!0}:(await joplin.data.put(["notes",o.note_id],null,t),c({name:"toolDone",text:n(e.dUpdated,{id:o.note_id})}),{result:"Note updated."})}case"create_notebook":{const e={title:o.title};o.parent_id&&(e.parent_id=o.parent_id);const t=await joplin.data.post(["folders"],null,e);return{result:{id:t.id,title:t.title}}}case"delete_note":return await joplin.data.delete(["notes",o.note_id]),c({name:"toolDone",text:n(e.dDeleted,{id:o.note_id})}),{result:"Note deleted."}}return{result:"Unhandled tool: "+t,isError:!0}}(t.name,t.arguments||{});i(200,s)}catch(e){i(200,{result:"Tool execution failed: "+String(e&&e.message?e.message:e),isError:!0})}})}i(404,{error:"not found"})}else i(200,{tools:p.map(e=>({name:e.name,description:e.description,inputSchema:e.inputSchema}))})});await new Promise(e=>w.listen(0,"127.0.0.1",()=>e()));const v=w.address().port,S=await joplin.plugins.dataDir(),k=r.join(S,"joplin-mcp-proxy.cjs");a.writeFileSync(k,"/* Joplin Aide - MCP stdio proxy (auto-generated, do not edit) */\n'use strict';\nvar http = require('http');\n\nvar PORT = parseInt(process.env.JOPLIN_AIDE_PORT || '0', 10);\n\nfunction callControl(method, path, payload, cb) {\n var data = payload ? Buffer.from(JSON.stringify(payload), 'utf8') : null;\n var req = http.request({\n host: '127.0.0.1',\n port: PORT,\n path: path,\n method: method,\n headers: data\n ? { 'Content-Type': 'application/json', 'Content-Length': data.length }\n : {},\n timeout: 180000,\n }, function (res) {\n var chunks = [];\n res.on('data', function (c) { chunks.push(c); });\n res.on('end', function () {\n try {\n cb(null, JSON.parse(Buffer.concat(chunks).toString('utf8')));\n } catch (e) {\n cb(e, null);\n }\n });\n });\n req.on('error', function (e) { cb(e, null); });\n req.on('timeout', function () { req.destroy(new Error('control server timeout')); });\n if (data) req.write(data);\n req.end();\n}\n\nfunction send(obj) {\n process.stdout.write(JSON.stringify(obj) + '\\n');\n}\n\nfunction reply(id, result) {\n send({ jsonrpc: '2.0', id: id, result: result });\n}\n\nfunction replyError(id, message) {\n send({ jsonrpc: '2.0', id: id, error: { code: -32000, message: String(message) } });\n}\n\nvar buffer = '';\nprocess.stdin.setEncoding('utf8');\nprocess.stdin.on('data', function (chunk) {\n buffer += chunk;\n var idx;\n while ((idx = buffer.indexOf('\\n')) >= 0) {\n var line = buffer.slice(0, idx).trim();\n buffer = buffer.slice(idx + 1);\n if (line) handleLine(line);\n }\n});\nprocess.stdin.on('end', function () { process.exit(0); });\n\nfunction handleLine(line) {\n var msg;\n try { msg = JSON.parse(line); } catch (e) { return; }\n var id = msg.id;\n var method = msg.method;\n\n if (method === 'initialize') {\n reply(id, {\n protocolVersion: (msg.params && msg.params.protocolVersion) || '2024-11-05',\n capabilities: { tools: {} },\n serverInfo: { name: 'joplin', version: '0.1.0' },\n });\n return;\n }\n if (method === 'ping') { reply(id, {}); return; }\n if (!method || method.indexOf('notifications/') === 0) return;\n\n if (method === 'tools/list') {\n callControl('GET', '/tools', null, function (err, res) {\n if (err) { replyError(id, err.message); return; }\n reply(id, { tools: res.tools || [] });\n });\n return;\n }\n\n if (method === 'tools/call') {\n var name = msg.params && msg.params.name;\n var args = (msg.params && msg.params.arguments) || {};\n callControl('POST', '/tool', { name: name, arguments: args }, function (err, res) {\n if (err) { replyError(id, err.message); return; }\n reply(id, {\n content: [{ type: 'text', text: typeof res.result === 'string' ? res.result : JSON.stringify(res.result) }],\n isError: !!res.isError,\n });\n });\n return;\n }\n\n if (id !== undefined) replyError(id, 'Method not supported: ' + method);\n}\n","utf8");const j=r.join(S,"mcp-config.json");a.writeFileSync(j,JSON.stringify({mcpServers:{joplin:{command:process.execPath,args:[k],env:{ELECTRON_RUN_AS_NODE:"1",JOPLIN_AIDE_PORT:String(v)}}}},null,2),"utf8");const x=r.join(S,"mcp-config-copilot.json");a.writeFileSync(x,JSON.stringify({mcpServers:{joplin:{type:"local",command:process.execPath,args:[k],env:{ELECTRON_RUN_AS_NODE:"1",JOPLIN_AIDE_PORT:String(v)},tools:["*"]}}},null,2),"utf8");const A=r.join(S,"conversations.json");let N=[];try{N=JSON.parse(a.readFileSync(A,"utf8")),Array.isArray(N)||(N=[])}catch(e){N=[]}let q=null,C=null;function T(){C&&clearTimeout(C),C=setTimeout(()=>{C=null;try{N.sort((e,t)=>(t.updated||0)-(e.updated||0)),N.length>100&&(N.length=100),a.writeFileSync(A,JSON.stringify(N),"utf8")}catch(e){console.error("Joplin Aide: failed to save history",e)}},400)}function E(e,t){q||(q={id:Date.now()+"-"+Math.random().toString(36).slice(2,8),title:"",sessionId:"",messages:[],updated:Date.now()},N.push(q)),"user"!==e||q.title||(q.title=t.slice(0,60)),q.messages.push({role:e,text:t}),q.updated=Date.now(),L&&(q.sessionId=L),T()}const P=r.join(S,"attachments");try{a.mkdirSync(P,{recursive:!0});const e=Date.now()-6048e5;for(const t of a.readdirSync(P)){const o=r.join(P,t);try{a.statSync(o).mtimeMs<e&&a.unlinkSync(o)}catch(e){}}}catch(e){}let O=[],D=0,I=null,L="",U="claude",R="";function J(){if(I)try{"win32"===process.platform?d.spawn("taskkill",["/pid",String(I.pid),"/T","/F"],{windowsHide:!0}):I.kill("SIGTERM")}catch(e){}}function F(e){return"win32"!==process.platform?e:/[\s"]/.test(e)?'"'+e.replace(/"/g,'\\"')+'"':e}function M(e){let t;try{t=JSON.parse(e)}catch(e){return}if(t.session_id&&(L=t.session_id),q&&L&&q.sessionId!==L&&(q.sessionId=L,T()),"stream_event"===t.type&&t.event){const e=t.event;return void("content_block_start"===e.type&&e.content_block&&"text"===e.content_block.type?c({name:"assistantStart"}):"content_block_delta"===e.type&&e.delta&&"text_delta"===e.delta.type&&e.delta.text&&c({name:"assistantDelta",text:e.delta.text}))}if("assistant"===t.type&&t.message&&Array.isArray(t.message.content)){for(const e of t.message.content)if("text"===e.type&&e.text)E("assistant",e.text),c({name:"assistantText",text:e.text});else if("tool_use"===e.type){const t=String(e.name||"").replace(/^mcp__joplin__/,"");"AskUserQuestion"===t&&e.input&&Array.isArray(e.input.questions)?(E("tool",t),c({name:"userQuestion",questions:e.input.questions})):(E("tool",t),c({name:"toolUse",tool:t}))}}else"result"===t.type&&(!0===t.is_error&&c({name:"error",text:("string"==typeof t.result&&t.result?t.result:t.subtype?String(t.subtype):"Request failed.").slice(0,500)}),c({name:"turnDone",isError:!0===t.is_error,costUsd:t.total_cost_usd}))}function B(e){let t;try{t=JSON.parse(e)}catch(e){return}const o=String(t.type||""),i=t.data||{};if("result"===o)return t.sessionId&&(L=String(t.sessionId),q&&q.sessionId!==L&&(q.sessionId=L,T())),0!==t.exitCode&&c({name:"error",text:"copilot finished with exit code "+t.exitCode}),void c({name:"turnDone",isError:0!==t.exitCode});if("assistant.message_start"!==o)if("assistant.message_delta"!==o)if("assistant.message"!==o){if(0===o.indexOf("tool.")){const e=String(i.toolName||i.name||i.tool||"");if(e&&/start|begin|request|call/i.test(o)){const t=e.replace(/^joplin[_\-]{1,2}/,"");E("tool",t),c({name:"toolUse",tool:t})}return}/\berror\b/i.test(o)&&c({name:"error",text:String(i.message||i.error||e).slice(0,500)})}else i.content&&(E("assistant",i.content),c({name:"assistantText",text:i.content}));else i.deltaContent&&c({name:"assistantDelta",text:i.deltaContent});else c({name:"assistantStart"})}await o(),await joplin.views.panels.onMessage(t,async t=>{if("ready"===t.name){await o(),q&&q.messages&&q.messages.length&&c({name:"conversationLoaded",messages:q.messages}),c({name:"busy",busy:!!I}),c({name:"backendState",backend:String(await joplin.settings.value("backend")||"claude")});for(const e of Object.keys(u))c({name:"confirmWrite",requestId:e,summary:u[e].summary});for(const e of Object.keys(g)){const t=g[e];c({name:"userQuestion",requestId:e,questions:[{question:t.question,options:t.options}]})}}else if("send"===t.name){const o=String(t.text||"").trim();o&&await async function(t){if(I)return c({name:"error",text:e.errAlreadyRunning}),void c({name:"busy",busy:!0});const o=String(await joplin.settings.value("backend")||"claude");R&&R!==o&&(L="",y={}),R=o;const i=String(await joplin.settings.value("extraCliArgs")||"").trim();let s="";try{const e=await joplin.workspace.selectedNote();e&&(s=' The note currently open in the editor is "'+e.title+'" (id: '+e.id+").")}catch(e){}const a="copilot"===o?"joplin MCP":"mcp__joplin",r="You are embedded in the Joplin note-taking app as an assistant. Use the "+a+" tools to read, search, create and edit the user's notes and notebooks. Note bodies are Markdown. When editing a note, read it first and provide the full new body. Write operations may require user approval; if one is declined, do not retry it. To ask the user a multiple-choice question, use the "+a+" ask_user tool - it renders clickable buttons in the panel and waits for the answer. Other question mechanisms do NOT work in this environment; never use them."+s;let l,p;if("copilot"===o){l=String(await joplin.settings.value("copilotPath")||"").trim()||"copilot";const e=await joplin.settings.value("copilotModel");p=["--output-format","json","--no-color","--log-level","none","--disable-builtin-mcps","--no-ask-user","--additional-mcp-config",F("@"+x),"--allow-tool","joplin"],L&&p.push("--resume="+L),e&&p.push("--model",F(String(e))),i&&p.push(i)}else{l=String(await joplin.settings.value("claudePath")||"").trim()||"claude";const e=await joplin.settings.value("claudeModel"),t=String(await joplin.settings.value("extraAllowedTools")||"").split(",").map(e=>e.trim()).filter(e=>!!e),o=["mcp__joplin"].concat(t).join(",");p=["-p","--output-format","stream-json","--include-partial-messages","--verbose","--mcp-config",F(j),"--allowedTools",F(o),"--permission-prompt-tool","mcp__joplin__approval_prompt","--append-system-prompt",F(r)],L&&p.push("--resume",L),e&&p.push("--model",F(String(e))),i&&p.push(i)}if(O.length){if("copilot"===o){const e=/\.(png|jpe?g|gif|webp|bmp|pdf|docx|pptx|xlsx)$/i,o=[];let i=!1;for(const t of O)e.test(t.fileName)?p.push("--attachment",F(t.filePath)):(o.push("- "+t.filePath),i=!0);i&&(p.push("--add-dir",F(P),"--allow-tool","read"),t+="\n\n[The user attached the following files. Read them from disk:]\n"+o.join("\n"))}else t+="\n\n[The user attached the following files. Use the Read tool to view them:]\n"+O.map(e=>"- "+e.filePath).join("\n");O=[],c({name:"attachmentsCleared"})}E("user",t),"copilot"===o&&(t="<context>"+r+"</context>\n\n"+t),U=o,c({name:"busy",busy:!0});try{I=d.spawn(F(l),p,{shell:"win32"===process.platform,windowsHide:!0,stdio:["pipe","pipe","pipe"]})}catch(t){return c({name:"error",text:n(e.errStartFailed,{bin:l,err:String(t&&t.message?t.message:t)})}),c({name:"busy",busy:!1}),void(I=null)}I.stdin.write(t),I.stdin.end();let u="",m="";I.stdout.on("data",e=>{let t;for(u+=e.toString("utf8");(t=u.indexOf("\n"))>=0;){const e=u.slice(0,t).trim();u=u.slice(t+1),e&&("copilot"===U?B(e):M(e))}}),I.stderr.on("data",e=>{m+=e.toString("utf8")}),I.on("error",t=>{c({name:"error",text:n(e.errProcess,{bin:l,err:String(t&&t.message?t.message:t)})}),c({name:"busy",busy:!1}),I=null}),I.on("close",t=>{0!==t&&m.trim()&&c({name:"error",text:n(e.errExited,{bin:l,code:t,err:m.trim().slice(0,500)})}),c({name:"busy",busy:!1}),I=null})}(o)}else if("openUrl"===t.name){const e=String(t.url||"");if(/^https?:\/\//i.test(e))"win32"===process.platform?d.spawn("cmd",["/c","start","",e],{detached:!0,stdio:"ignore"}):"darwin"===process.platform?d.spawn("open",[e],{detached:!0,stdio:"ignore"}):d.spawn("xdg-open",[e],{detached:!0,stdio:"ignore"});else if(/^:\/[0-9a-f]{32}$/i.test(e))try{await joplin.commands.execute("openNote",e.slice(2))}catch(e){}}else if("toggleBackend"===t.name){const e="claude"===String(await joplin.settings.value("backend")||"claude")?"copilot":"claude";await joplin.settings.setValue("backend",e),c({name:"backendState",backend:e,switched:!0})}else if("stop"===t.name)J();else if("newSession"===t.name)L="",q=null,y={},J();else if("listHistory"===t.name)c({name:"historyList",items:N.slice().sort((e,t)=>(t.updated||0)-(e.updated||0)).map(e=>({id:e.id,title:e.title||"(empty)",updated:e.updated}))});else if("loadConversation"===t.name){const e=N.find(e=>e.id===t.id);e&&(J(),q=e,L=e.sessionId||"",c({name:"conversationLoaded",messages:e.messages||[]}))}else if("deleteConversation"===t.name)N=N.filter(e=>e.id!==t.id),q&&q.id===t.id&&(q=null,L=""),T(),c({name:"historyList",items:N.slice().sort((e,t)=>(t.updated||0)-(e.updated||0)).map(e=>({id:e.id,title:e.title||"(empty)",updated:e.updated}))});else if("attachFile"===t.name)try{const o=Buffer.from(String(t.data||""),"base64");if(o.length>8388608)return void c({name:"error",text:n(e.errAttachTooBig,{name:t.fileName})});const i=String(t.fileName||"file").replace(/[^\w.\-\u4e00-\u9fff\u3040-\u30ff]+/g,"_").slice(0,80),s="a"+ ++D+"-"+Date.now(),d=r.join(P,s+"-"+i);a.writeFileSync(d,o),O.push({id:s,fileName:i,filePath:d}),c({name:"attached",id:s,fileName:i})}catch(e){c({name:"error",text:String(e&&e.message?e.message:e)})}else if("removeAttachment"===t.name){const e=O.find(e=>e.id===t.id);if(e){try{a.unlinkSync(e.filePath)}catch(e){}O=O.filter(e=>e.id!==t.id)}c({name:"attachmentRemoved",id:t.id})}else if("questionAnswer"===t.name){const e=g[t.requestId];e&&(clearTimeout(e.timer),delete g[t.requestId],e.resolve(String(t.value||"")))}else if("confirmResult"===t.name){const e=u[t.requestId];e&&(clearTimeout(e.timer),delete u[t.requestId],!0===t.approved&&!0===t.always&&(y[e.key]=!0),e.resolve(!0===t.approved))}})}})})();
@@ -0,0 +1,13 @@
1
+ {
2
+ "manifest_version": 1,
3
+ "id": "com.github.joplin-aide",
4
+ "app_min_version": "2.8",
5
+ "version": "1.0.0",
6
+ "name": "Joplin Aide",
7
+ "description": "Chat with Claude inside Joplin. Claude can read, search, create and edit your notes through your local Claude Code CLI. Write operations require your confirmation.",
8
+ "author": "lim0513",
9
+ "homepage_url": "https://github.com/lim0513/joplin-aide",
10
+ "repository_url": "https://github.com/lim0513/joplin-aide",
11
+ "keywords": ["claude", "ai", "assistant", "chat"],
12
+ "categories": ["productivity"]
13
+ }
Binary file
@@ -0,0 +1,3 @@
1
+ /*! markdown-it 14.3.0 https://github.com/markdown-it/markdown-it @license MIT */
2
+ !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):(t="undefined"!=typeof globalThis?globalThis:t||self).markdownit=e()}(this,function(){var t=Object.defineProperty,e=(e,r)=>{let n={};for(var s in e)t(n,s,{get:e[s],enumerable:!0});return r||t(n,Symbol.toStringTag,{value:"Module"}),n},r={};function n(t,e){"string"!=typeof e&&(e=n.defaultChars);const s=function(t){let e=r[t];if(e)return e;e=r[t]=[];for(let r=0;r<128;r++){const t=String.fromCharCode(r);e.push(t)}for(let r=0;r<t.length;r++){const n=t.charCodeAt(r);e[n]="%"+("0"+n.toString(16).toUpperCase()).slice(-2)}return e}(e);return t.replace(/(%[a-f0-9]{2})+/gi,function(t){let e="";for(let r=0,n=t.length;r<n;r+=3){const i=parseInt(t.slice(r+1,r+3),16);if(i<128)e+=s[i];else{if(192==(224&i)&&r+3<n){const n=parseInt(t.slice(r+4,r+6),16);if(128==(192&n)){const t=i<<6&1984|63&n;e+=t<128?"\ufffd\ufffd":String.fromCharCode(t),r+=3;continue}}if(224==(240&i)&&r+6<n){const n=parseInt(t.slice(r+4,r+6),16),s=parseInt(t.slice(r+7,r+9),16);if(128==(192&n)&&128==(192&s)){const t=i<<12&61440|n<<6&4032|63&s;e+=t<2048||t>=55296&&t<=57343?"\ufffd\ufffd\ufffd":String.fromCharCode(t),r+=6;continue}}if(240==(248&i)&&r+9<n){const n=parseInt(t.slice(r+4,r+6),16),s=parseInt(t.slice(r+7,r+9),16),o=parseInt(t.slice(r+10,r+12),16);if(128==(192&n)&&128==(192&s)&&128==(192&o)){let t=i<<18&1835008|n<<12&258048|s<<6&4032|63&o;t<65536||t>1114111?e+="\ufffd\ufffd\ufffd\ufffd":(t-=65536,e+=String.fromCharCode(55296+(t>>10),56320+(1023&t))),r+=9;continue}}e+="\ufffd"}}return e})}n.defaultChars=";/?:@&=+$,#",n.componentChars="";var s={};function i(t,e,r){"string"!=typeof e&&(r=e,e=i.defaultChars),void 0===r&&(r=!0);const n=function(t){let e=s[t];if(e)return e;e=s[t]=[];for(let r=0;r<128;r++){const t=String.fromCharCode(r);/^[0-9a-z]$/i.test(t)?e.push(t):e.push("%"+("0"+r.toString(16).toUpperCase()).slice(-2))}for(let r=0;r<t.length;r++)e[t.charCodeAt(r)]=t[r];return e}(e);let o="";for(let s=0,i=t.length;s<i;s++){const e=t.charCodeAt(s);if(r&&37===e&&s+2<i&&/^[0-9a-f]{2}$/i.test(t.slice(s+1,s+3)))o+=t.slice(s,s+3),s+=2;else if(e<128)o+=n[e];else if(e>=55296&&e<=57343){if(e>=55296&&e<=56319&&s+1<i){const e=t.charCodeAt(s+1);if(e>=56320&&e<=57343){o+=encodeURIComponent(t[s]+t[s+1]),s++;continue}}o+="%EF%BF%BD"}else o+=encodeURIComponent(t[s])}return o}function o(t){let e="";return e+=t.protocol||"",e+=t.slashes?"//":"",e+=t.auth?t.auth+"@":"",t.hostname&&-1!==t.hostname.indexOf(":")?e+="["+t.hostname+"]":e+=t.hostname||"",e+=t.port?":"+t.port:"",e+=t.pathname||"",e+=t.search||"",e+=t.hash||"",e}function u(){this.protocol=null,this.slashes=null,this.auth=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.pathname=null}i.defaultChars=";/?:@&=+$,-_.!~*'()#",i.componentChars="-_.!~*'()";var c=/^([a-z0-9.+-]+:)/i,a=/:[0-9]*$/,l=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,h=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),p=["'"].concat(h),f=["%","/","?",";","#"].concat(p),d=["/","?","#"],m=/^[+a-z0-9A-Z_-]{0,63}$/,_=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,g={javascript:!0,"javascript:":!0},k={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0};function D(t,e){if(t&&t instanceof u)return t;const r=new u;return r.parse(t,e),r}u.prototype.parse=function(t,e){let r,n,s,i=t;if(i=i.trim(),!e&&1===t.split("#").length){const t=l.exec(i);if(t)return this.pathname=t[1],t[2]&&(this.search=t[2]),this}let o=c.exec(i);if(o&&(o=o[0],r=o.toLowerCase(),this.protocol=o,i=i.substr(o.length)),(e||o||i.match(/^\/\/[^@\/]+@[^@\/]+/))&&(s="//"===i.substr(0,2),!s||o&&g[o]||(i=i.substr(2),this.slashes=!0)),!g[o]&&(s||o&&!k[o])){let t,e,r=-1;for(let u=0;u<d.length;u++)n=i.indexOf(d[u]),-1!==n&&(-1===r||n<r)&&(r=n);e=-1===r?i.lastIndexOf("@"):i.lastIndexOf("@",r),-1!==e&&(t=i.slice(0,e),i=i.slice(e+1),this.auth=t),r=-1;for(let u=0;u<f.length;u++)n=i.indexOf(f[u]),-1!==n&&(-1===r||n<r)&&(r=n);-1===r&&(r=i.length),":"===i[r-1]&&r--;const s=i.slice(0,r);i=i.slice(r),this.parseHost(s),this.hostname=this.hostname||"";const o="["===this.hostname[0]&&"]"===this.hostname[this.hostname.length-1];if(!o){const t=this.hostname.split(/\./);for(let e=0,r=t.length;e<r;e++){const r=t[e];if(r&&!r.match(m)){let n="";for(let t=0,e=r.length;t<e;t++)r.charCodeAt(t)>127?n+="x":n+=r[t];if(!n.match(m)){const n=t.slice(0,e),s=t.slice(e+1),o=r.match(_);o&&(n.push(o[1]),s.unshift(o[2])),s.length&&(i=s.join(".")+i),this.hostname=n.join(".");break}}}}this.hostname.length>255&&(this.hostname=""),o&&(this.hostname=this.hostname.substr(1,this.hostname.length-2))}const u=i.indexOf("#");-1!==u&&(this.hash=i.substr(u),i=i.slice(0,u));const a=i.indexOf("?");return-1!==a&&(this.search=i.substr(a),i=i.slice(0,a)),i&&(this.pathname=i),k[r]&&this.hostname&&!this.pathname&&(this.pathname=""),this},u.prototype.parseHost=function(t){let e=a.exec(t);e&&(e=e[0],":"!==e&&(this.port=e.substr(1)),t=t.substr(0,t.length-e.length)),t&&(this.hostname=t)};var C,y,E=e({decode:()=>n,encode:()=>i,format:()=>o,parse:()=>D}),A=/[\0-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,b=/[\0-\x1F\x7F-\x9F]/,F=/[\xAD\u0600-\u0605\u061C\u06DD\u070F\u0890\u0891\u08E2\u180E\u200B-\u200F\u202A-\u202E\u2060-\u2064\u2066-\u206F\uFEFF\uFFF9-\uFFFB]|\uD804[\uDCBD\uDCCD]|\uD80D[\uDC30-\uDC3F]|\uD82F[\uDCA0-\uDCA3]|\uD834[\uDD73-\uDD7A]|\uDB40[\uDC01\uDC20-\uDC7F]/,x=/[!-#%-\*,-\/:;\?@\[-\]_\{\}\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061D-\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C77\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1B7D\u1B7E\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4F\u2E52-\u2E5D\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD803[\uDEAD\uDF55-\uDF59\uDF86-\uDF89]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC8\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDC4B-\uDC4F\uDC5A\uDC5B\uDC5D\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDE60-\uDE6C\uDEB9\uDF3C-\uDF3E]|\uD806[\uDC3B\uDD44-\uDD46\uDDE2\uDE3F-\uDE46\uDE9A-\uDE9C\uDE9E-\uDEA2\uDF00-\uDF09]|\uD807[\uDC41-\uDC45\uDC70\uDC71\uDEF7\uDEF8\uDF43-\uDF4F\uDFFF]|\uD809[\uDC70-\uDC74]|\uD80B[\uDFF1\uDFF2]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD81B[\uDE97-\uDE9A\uDFE2]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]|\uD83A[\uDD5E\uDD5F]/,v=/[\$\+<->\^`\|~\xA2-\xA6\xA8\xA9\xAC\xAE-\xB1\xB4\xB8\xD7\xF7\u02C2-\u02C5\u02D2-\u02DF\u02E5-\u02EB\u02ED\u02EF-\u02FF\u0375\u0384\u0385\u03F6\u0482\u058D-\u058F\u0606-\u0608\u060B\u060E\u060F\u06DE\u06E9\u06FD\u06FE\u07F6\u07FE\u07FF\u0888\u09F2\u09F3\u09FA\u09FB\u0AF1\u0B70\u0BF3-\u0BFA\u0C7F\u0D4F\u0D79\u0E3F\u0F01-\u0F03\u0F13\u0F15-\u0F17\u0F1A-\u0F1F\u0F34\u0F36\u0F38\u0FBE-\u0FC5\u0FC7-\u0FCC\u0FCE\u0FCF\u0FD5-\u0FD8\u109E\u109F\u1390-\u1399\u166D\u17DB\u1940\u19DE-\u19FF\u1B61-\u1B6A\u1B74-\u1B7C\u1FBD\u1FBF-\u1FC1\u1FCD-\u1FCF\u1FDD-\u1FDF\u1FED-\u1FEF\u1FFD\u1FFE\u2044\u2052\u207A-\u207C\u208A-\u208C\u20A0-\u20C0\u2100\u2101\u2103-\u2106\u2108\u2109\u2114\u2116-\u2118\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u2140-\u2144\u214A-\u214D\u214F\u218A\u218B\u2190-\u2307\u230C-\u2328\u232B-\u2426\u2440-\u244A\u249C-\u24E9\u2500-\u2767\u2794-\u27C4\u27C7-\u27E5\u27F0-\u2982\u2999-\u29D7\u29DC-\u29FB\u29FE-\u2B73\u2B76-\u2B95\u2B97-\u2BFF\u2CE5-\u2CEA\u2E50\u2E51\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFF\u3004\u3012\u3013\u3020\u3036\u3037\u303E\u303F\u309B\u309C\u3190\u3191\u3196-\u319F\u31C0-\u31E3\u31EF\u3200-\u321E\u322A-\u3247\u3250\u3260-\u327F\u328A-\u32B0\u32C0-\u33FF\u4DC0-\u4DFF\uA490-\uA4C6\uA700-\uA716\uA720\uA721\uA789\uA78A\uA828-\uA82B\uA836-\uA839\uAA77-\uAA79\uAB5B\uAB6A\uAB6B\uFB29\uFBB2-\uFBC2\uFD40-\uFD4F\uFDCF\uFDFC-\uFDFF\uFE62\uFE64-\uFE66\uFE69\uFF04\uFF0B\uFF1C-\uFF1E\uFF3E\uFF40\uFF5C\uFF5E\uFFE0-\uFFE6\uFFE8-\uFFEE\uFFFC\uFFFD]|\uD800[\uDD37-\uDD3F\uDD79-\uDD89\uDD8C-\uDD8E\uDD90-\uDD9C\uDDA0\uDDD0-\uDDFC]|\uD802[\uDC77\uDC78\uDEC8]|\uD805\uDF3F|\uD807[\uDFD5-\uDFF1]|\uD81A[\uDF3C-\uDF3F\uDF45]|\uD82F\uDC9C|\uD833[\uDF50-\uDFC3]|\uD834[\uDC00-\uDCF5\uDD00-\uDD26\uDD29-\uDD64\uDD6A-\uDD6C\uDD83\uDD84\uDD8C-\uDDA9\uDDAE-\uDDEA\uDE00-\uDE41\uDE45\uDF00-\uDF56]|\uD835[\uDEC1\uDEDB\uDEFB\uDF15\uDF35\uDF4F\uDF6F\uDF89\uDFA9\uDFC3]|\uD836[\uDC00-\uDDFF\uDE37-\uDE3A\uDE6D-\uDE74\uDE76-\uDE83\uDE85\uDE86]|\uD838[\uDD4F\uDEFF]|\uD83B[\uDCAC\uDCB0\uDD2E\uDEF0\uDEF1]|\uD83C[\uDC00-\uDC2B\uDC30-\uDC93\uDCA0-\uDCAE\uDCB1-\uDCBF\uDCC1-\uDCCF\uDCD1-\uDCF5\uDD0D-\uDDAD\uDDE6-\uDE02\uDE10-\uDE3B\uDE40-\uDE48\uDE50\uDE51\uDE60-\uDE65\uDF00-\uDFFF]|\uD83D[\uDC00-\uDED7\uDEDC-\uDEEC\uDEF0-\uDEFC\uDF00-\uDF76\uDF7B-\uDFD9\uDFE0-\uDFEB\uDFF0]|\uD83E[\uDC00-\uDC0B\uDC10-\uDC47\uDC50-\uDC59\uDC60-\uDC87\uDC90-\uDCAD\uDCB0\uDCB1\uDD00-\uDE53\uDE60-\uDE6D\uDE70-\uDE7C\uDE80-\uDE88\uDE90-\uDEBD\uDEBF-\uDEC5\uDECE-\uDEDB\uDEE0-\uDEE8\uDEF0-\uDEF8\uDF00-\uDF92\uDF94-\uDFCA]/,w=/[ \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]/,z=e({Any:()=>A,Cc:()=>b,Cf:()=>F,P:()=>x,S:()=>v,Z:()=>w}),S=new Uint16Array('\u1d41<\xd5\u0131\u028a\u049d\u057b\u05d0\u0675\u06de\u07a2\u07d6\u080f\u0a4a\u0a91\u0da1\u0e6d\u0f09\u0f26\u10ca\u1228\u12e1\u1415\u149d\u14c3\u14df\u1525\0\0\0\0\0\0\u156b\u16cd\u198d\u1c12\u1ddd\u1f7e\u2060\u21b0\u228d\u23c0\u23fb\u2442\u2824\u2912\u2d08\u2e48\u2fce\u3016\u32ba\u3639\u37ac\u38fe\u3a28\u3a71\u3ae0\u3b2e\u0800EMabcfglmnoprstu\\bfms\x7f\x84\x8b\x90\x95\x98\xa6\xb3\xb9\xc8\xcflig\u803b\xc6\u40c6P\u803b&\u4026cute\u803b\xc1\u40c1reve;\u4102\u0100iyx}rc\u803b\xc2\u40c2;\u4410r;\uc000\ud835\udd04rave\u803b\xc0\u40c0pha;\u4391acr;\u4100d;\u6a53\u0100gp\x9d\xa1on;\u4104f;\uc000\ud835\udd38plyFunction;\u6061ing\u803b\xc5\u40c5\u0100cs\xbe\xc3r;\uc000\ud835\udc9cign;\u6254ilde\u803b\xc3\u40c3ml\u803b\xc4\u40c4\u0400aceforsu\xe5\xfb\xfe\u0117\u011c\u0122\u0127\u012a\u0100cr\xea\xf2kslash;\u6216\u0176\xf6\xf8;\u6ae7ed;\u6306y;\u4411\u0180crt\u0105\u010b\u0114ause;\u6235noullis;\u612ca;\u4392r;\uc000\ud835\udd05pf;\uc000\ud835\udd39eve;\u42d8c\xf2\u0113mpeq;\u624e\u0700HOacdefhilorsu\u014d\u0151\u0156\u0180\u019e\u01a2\u01b5\u01b7\u01ba\u01dc\u0215\u0273\u0278\u027ecy;\u4427PY\u803b\xa9\u40a9\u0180cpy\u015d\u0162\u017aute;\u4106\u0100;i\u0167\u0168\u62d2talDifferentialD;\u6145leys;\u612d\u0200aeio\u0189\u018e\u0194\u0198ron;\u410cdil\u803b\xc7\u40c7rc;\u4108nint;\u6230ot;\u410a\u0100dn\u01a7\u01adilla;\u40b8terDot;\u40b7\xf2\u017fi;\u43a7rcle\u0200DMPT\u01c7\u01cb\u01d1\u01d6ot;\u6299inus;\u6296lus;\u6295imes;\u6297o\u0100cs\u01e2\u01f8kwiseContourIntegral;\u6232eCurly\u0100DQ\u0203\u020foubleQuote;\u601duote;\u6019\u0200lnpu\u021e\u0228\u0247\u0255on\u0100;e\u0225\u0226\u6237;\u6a74\u0180git\u022f\u0236\u023aruent;\u6261nt;\u622fourIntegral;\u622e\u0100fr\u024c\u024e;\u6102oduct;\u6210nterClockwiseContourIntegral;\u6233oss;\u6a2fcr;\uc000\ud835\udc9ep\u0100;C\u0284\u0285\u62d3ap;\u624d\u0580DJSZacefios\u02a0\u02ac\u02b0\u02b4\u02b8\u02cb\u02d7\u02e1\u02e6\u0333\u048d\u0100;o\u0179\u02a5trahd;\u6911cy;\u4402cy;\u4405cy;\u440f\u0180grs\u02bf\u02c4\u02c7ger;\u6021r;\u61a1hv;\u6ae4\u0100ay\u02d0\u02d5ron;\u410e;\u4414l\u0100;t\u02dd\u02de\u6207a;\u4394r;\uc000\ud835\udd07\u0100af\u02eb\u0327\u0100cm\u02f0\u0322ritical\u0200ADGT\u0300\u0306\u0316\u031ccute;\u40b4o\u0174\u030b\u030d;\u42d9bleAcute;\u42ddrave;\u4060ilde;\u42dcond;\u62c4ferentialD;\u6146\u0470\u033d\0\0\0\u0342\u0354\0\u0405f;\uc000\ud835\udd3b\u0180;DE\u0348\u0349\u034d\u40a8ot;\u60dcqual;\u6250ble\u0300CDLRUV\u0363\u0372\u0382\u03cf\u03e2\u03f8ontourIntegra\xec\u0239o\u0274\u0379\0\0\u037b\xbb\u0349nArrow;\u61d3\u0100eo\u0387\u03a4ft\u0180ART\u0390\u0396\u03a1rrow;\u61d0ightArrow;\u61d4e\xe5\u02cang\u0100LR\u03ab\u03c4eft\u0100AR\u03b3\u03b9rrow;\u67f8ightArrow;\u67faightArrow;\u67f9ight\u0100AT\u03d8\u03derrow;\u61d2ee;\u62a8p\u0241\u03e9\0\0\u03efrrow;\u61d1ownArrow;\u61d5erticalBar;\u6225n\u0300ABLRTa\u0412\u042a\u0430\u045e\u047f\u037crrow\u0180;BU\u041d\u041e\u0422\u6193ar;\u6913pArrow;\u61f5reve;\u4311eft\u02d2\u043a\0\u0446\0\u0450ightVector;\u6950eeVector;\u695eector\u0100;B\u0459\u045a\u61bdar;\u6956ight\u01d4\u0467\0\u0471eeVector;\u695fector\u0100;B\u047a\u047b\u61c1ar;\u6957ee\u0100;A\u0486\u0487\u62a4rrow;\u61a7\u0100ct\u0492\u0497r;\uc000\ud835\udc9frok;\u4110\u0800NTacdfglmopqstux\u04bd\u04c0\u04c4\u04cb\u04de\u04e2\u04e7\u04ee\u04f5\u0521\u052f\u0536\u0552\u055d\u0560\u0565G;\u414aH\u803b\xd0\u40d0cute\u803b\xc9\u40c9\u0180aiy\u04d2\u04d7\u04dcron;\u411arc\u803b\xca\u40ca;\u442dot;\u4116r;\uc000\ud835\udd08rave\u803b\xc8\u40c8ement;\u6208\u0100ap\u04fa\u04fecr;\u4112ty\u0253\u0506\0\0\u0512mallSquare;\u65fberySmallSquare;\u65ab\u0100gp\u0526\u052aon;\u4118f;\uc000\ud835\udd3csilon;\u4395u\u0100ai\u053c\u0549l\u0100;T\u0542\u0543\u6a75ilde;\u6242librium;\u61cc\u0100ci\u0557\u055ar;\u6130m;\u6a73a;\u4397ml\u803b\xcb\u40cb\u0100ip\u056a\u056fsts;\u6203onentialE;\u6147\u0280cfios\u0585\u0588\u058d\u05b2\u05ccy;\u4424r;\uc000\ud835\udd09lled\u0253\u0597\0\0\u05a3mallSquare;\u65fcerySmallSquare;\u65aa\u0370\u05ba\0\u05bf\0\0\u05c4f;\uc000\ud835\udd3dAll;\u6200riertrf;\u6131c\xf2\u05cb\u0600JTabcdfgorst\u05e8\u05ec\u05ef\u05fa\u0600\u0612\u0616\u061b\u061d\u0623\u066c\u0672cy;\u4403\u803b>\u403emma\u0100;d\u05f7\u05f8\u4393;\u43dcreve;\u411e\u0180eiy\u0607\u060c\u0610dil;\u4122rc;\u411c;\u4413ot;\u4120r;\uc000\ud835\udd0a;\u62d9pf;\uc000\ud835\udd3eeater\u0300EFGLST\u0635\u0644\u064e\u0656\u065b\u0666qual\u0100;L\u063e\u063f\u6265ess;\u62dbullEqual;\u6267reater;\u6aa2ess;\u6277lantEqual;\u6a7eilde;\u6273cr;\uc000\ud835\udca2;\u626b\u0400Aacfiosu\u0685\u068b\u0696\u069b\u069e\u06aa\u06be\u06caRDcy;\u442a\u0100ct\u0690\u0694ek;\u42c7;\u405eirc;\u4124r;\u610clbertSpace;\u610b\u01f0\u06af\0\u06b2f;\u610dizontalLine;\u6500\u0100ct\u06c3\u06c5\xf2\u06a9rok;\u4126mp\u0144\u06d0\u06d8ownHum\xf0\u012fqual;\u624f\u0700EJOacdfgmnostu\u06fa\u06fe\u0703\u0707\u070e\u071a\u071e\u0721\u0728\u0744\u0778\u078b\u078f\u0795cy;\u4415lig;\u4132cy;\u4401cute\u803b\xcd\u40cd\u0100iy\u0713\u0718rc\u803b\xce\u40ce;\u4418ot;\u4130r;\u6111rave\u803b\xcc\u40cc\u0180;ap\u0720\u072f\u073f\u0100cg\u0734\u0737r;\u412ainaryI;\u6148lie\xf3\u03dd\u01f4\u0749\0\u0762\u0100;e\u074d\u074e\u622c\u0100gr\u0753\u0758ral;\u622bsection;\u62c2isible\u0100CT\u076c\u0772omma;\u6063imes;\u6062\u0180gpt\u077f\u0783\u0788on;\u412ef;\uc000\ud835\udd40a;\u4399cr;\u6110ilde;\u4128\u01eb\u079a\0\u079ecy;\u4406l\u803b\xcf\u40cf\u0280cfosu\u07ac\u07b7\u07bc\u07c2\u07d0\u0100iy\u07b1\u07b5rc;\u4134;\u4419r;\uc000\ud835\udd0dpf;\uc000\ud835\udd41\u01e3\u07c7\0\u07ccr;\uc000\ud835\udca5rcy;\u4408kcy;\u4404\u0380HJacfos\u07e4\u07e8\u07ec\u07f1\u07fd\u0802\u0808cy;\u4425cy;\u440cppa;\u439a\u0100ey\u07f6\u07fbdil;\u4136;\u441ar;\uc000\ud835\udd0epf;\uc000\ud835\udd42cr;\uc000\ud835\udca6\u0580JTaceflmost\u0825\u0829\u082c\u0850\u0863\u09b3\u09b8\u09c7\u09cd\u0a37\u0a47cy;\u4409\u803b<\u403c\u0280cmnpr\u0837\u083c\u0841\u0844\u084dute;\u4139bda;\u439bg;\u67ealacetrf;\u6112r;\u619e\u0180aey\u0857\u085c\u0861ron;\u413ddil;\u413b;\u441b\u0100fs\u0868\u0970t\u0500ACDFRTUVar\u087e\u08a9\u08b1\u08e0\u08e6\u08fc\u092f\u095b\u0390\u096a\u0100nr\u0883\u088fgleBracket;\u67e8row\u0180;BR\u0899\u089a\u089e\u6190ar;\u61e4ightArrow;\u61c6eiling;\u6308o\u01f5\u08b7\0\u08c3bleBracket;\u67e6n\u01d4\u08c8\0\u08d2eeVector;\u6961ector\u0100;B\u08db\u08dc\u61c3ar;\u6959loor;\u630aight\u0100AV\u08ef\u08f5rrow;\u6194ector;\u694e\u0100er\u0901\u0917e\u0180;AV\u0909\u090a\u0910\u62a3rrow;\u61a4ector;\u695aiangle\u0180;BE\u0924\u0925\u0929\u62b2ar;\u69cfqual;\u62b4p\u0180DTV\u0937\u0942\u094cownVector;\u6951eeVector;\u6960ector\u0100;B\u0956\u0957\u61bfar;\u6958ector\u0100;B\u0965\u0966\u61bcar;\u6952ight\xe1\u039cs\u0300EFGLST\u097e\u098b\u0995\u099d\u09a2\u09adqualGreater;\u62daullEqual;\u6266reater;\u6276ess;\u6aa1lantEqual;\u6a7dilde;\u6272r;\uc000\ud835\udd0f\u0100;e\u09bd\u09be\u62d8ftarrow;\u61daidot;\u413f\u0180npw\u09d4\u0a16\u0a1bg\u0200LRlr\u09de\u09f7\u0a02\u0a10eft\u0100AR\u09e6\u09ecrrow;\u67f5ightArrow;\u67f7ightArrow;\u67f6eft\u0100ar\u03b3\u0a0aight\xe1\u03bfight\xe1\u03caf;\uc000\ud835\udd43er\u0100LR\u0a22\u0a2ceftArrow;\u6199ightArrow;\u6198\u0180cht\u0a3e\u0a40\u0a42\xf2\u084c;\u61b0rok;\u4141;\u626a\u0400acefiosu\u0a5a\u0a5d\u0a60\u0a77\u0a7c\u0a85\u0a8b\u0a8ep;\u6905y;\u441c\u0100dl\u0a65\u0a6fiumSpace;\u605flintrf;\u6133r;\uc000\ud835\udd10nusPlus;\u6213pf;\uc000\ud835\udd44c\xf2\u0a76;\u439c\u0480Jacefostu\u0aa3\u0aa7\u0aad\u0ac0\u0b14\u0b19\u0d91\u0d97\u0d9ecy;\u440acute;\u4143\u0180aey\u0ab4\u0ab9\u0aberon;\u4147dil;\u4145;\u441d\u0180gsw\u0ac7\u0af0\u0b0eative\u0180MTV\u0ad3\u0adf\u0ae8ediumSpace;\u600bhi\u0100cn\u0ae6\u0ad8\xeb\u0ad9eryThi\xee\u0ad9ted\u0100GL\u0af8\u0b06reaterGreate\xf2\u0673essLes\xf3\u0a48Line;\u400ar;\uc000\ud835\udd11\u0200Bnpt\u0b22\u0b28\u0b37\u0b3areak;\u6060BreakingSpace;\u40a0f;\u6115\u0680;CDEGHLNPRSTV\u0b55\u0b56\u0b6a\u0b7c\u0ba1\u0beb\u0c04\u0c5e\u0c84\u0ca6\u0cd8\u0d61\u0d85\u6aec\u0100ou\u0b5b\u0b64ngruent;\u6262pCap;\u626doubleVerticalBar;\u6226\u0180lqx\u0b83\u0b8a\u0b9bement;\u6209ual\u0100;T\u0b92\u0b93\u6260ilde;\uc000\u2242\u0338ists;\u6204reater\u0380;EFGLST\u0bb6\u0bb7\u0bbd\u0bc9\u0bd3\u0bd8\u0be5\u626fqual;\u6271ullEqual;\uc000\u2267\u0338reater;\uc000\u226b\u0338ess;\u6279lantEqual;\uc000\u2a7e\u0338ilde;\u6275ump\u0144\u0bf2\u0bfdownHump;\uc000\u224e\u0338qual;\uc000\u224f\u0338e\u0100fs\u0c0a\u0c27tTriangle\u0180;BE\u0c1a\u0c1b\u0c21\u62eaar;\uc000\u29cf\u0338qual;\u62ecs\u0300;EGLST\u0c35\u0c36\u0c3c\u0c44\u0c4b\u0c58\u626equal;\u6270reater;\u6278ess;\uc000\u226a\u0338lantEqual;\uc000\u2a7d\u0338ilde;\u6274ested\u0100GL\u0c68\u0c79reaterGreater;\uc000\u2aa2\u0338essLess;\uc000\u2aa1\u0338recedes\u0180;ES\u0c92\u0c93\u0c9b\u6280qual;\uc000\u2aaf\u0338lantEqual;\u62e0\u0100ei\u0cab\u0cb9verseElement;\u620cghtTriangle\u0180;BE\u0ccb\u0ccc\u0cd2\u62ebar;\uc000\u29d0\u0338qual;\u62ed\u0100qu\u0cdd\u0d0cuareSu\u0100bp\u0ce8\u0cf9set\u0100;E\u0cf0\u0cf3\uc000\u228f\u0338qual;\u62e2erset\u0100;E\u0d03\u0d06\uc000\u2290\u0338qual;\u62e3\u0180bcp\u0d13\u0d24\u0d4eset\u0100;E\u0d1b\u0d1e\uc000\u2282\u20d2qual;\u6288ceeds\u0200;EST\u0d32\u0d33\u0d3b\u0d46\u6281qual;\uc000\u2ab0\u0338lantEqual;\u62e1ilde;\uc000\u227f\u0338erset\u0100;E\u0d58\u0d5b\uc000\u2283\u20d2qual;\u6289ilde\u0200;EFT\u0d6e\u0d6f\u0d75\u0d7f\u6241qual;\u6244ullEqual;\u6247ilde;\u6249erticalBar;\u6224cr;\uc000\ud835\udca9ilde\u803b\xd1\u40d1;\u439d\u0700Eacdfgmoprstuv\u0dbd\u0dc2\u0dc9\u0dd5\u0ddb\u0de0\u0de7\u0dfc\u0e02\u0e20\u0e22\u0e32\u0e3f\u0e44lig;\u4152cute\u803b\xd3\u40d3\u0100iy\u0dce\u0dd3rc\u803b\xd4\u40d4;\u441eblac;\u4150r;\uc000\ud835\udd12rave\u803b\xd2\u40d2\u0180aei\u0dee\u0df2\u0df6cr;\u414cga;\u43a9cron;\u439fpf;\uc000\ud835\udd46enCurly\u0100DQ\u0e0e\u0e1aoubleQuote;\u601cuote;\u6018;\u6a54\u0100cl\u0e27\u0e2cr;\uc000\ud835\udcaaash\u803b\xd8\u40d8i\u016c\u0e37\u0e3cde\u803b\xd5\u40d5es;\u6a37ml\u803b\xd6\u40d6er\u0100BP\u0e4b\u0e60\u0100ar\u0e50\u0e53r;\u603eac\u0100ek\u0e5a\u0e5c;\u63deet;\u63b4arenthesis;\u63dc\u0480acfhilors\u0e7f\u0e87\u0e8a\u0e8f\u0e92\u0e94\u0e9d\u0eb0\u0efcrtialD;\u6202y;\u441fr;\uc000\ud835\udd13i;\u43a6;\u43a0usMinus;\u40b1\u0100ip\u0ea2\u0eadncareplan\xe5\u069df;\u6119\u0200;eio\u0eb9\u0eba\u0ee0\u0ee4\u6abbcedes\u0200;EST\u0ec8\u0ec9\u0ecf\u0eda\u627aqual;\u6aaflantEqual;\u627cilde;\u627eme;\u6033\u0100dp\u0ee9\u0eeeuct;\u620fortion\u0100;a\u0225\u0ef9l;\u621d\u0100ci\u0f01\u0f06r;\uc000\ud835\udcab;\u43a8\u0200Ufos\u0f11\u0f16\u0f1b\u0f1fOT\u803b"\u4022r;\uc000\ud835\udd14pf;\u611acr;\uc000\ud835\udcac\u0600BEacefhiorsu\u0f3e\u0f43\u0f47\u0f60\u0f73\u0fa7\u0faa\u0fad\u1096\u10a9\u10b4\u10bearr;\u6910G\u803b\xae\u40ae\u0180cnr\u0f4e\u0f53\u0f56ute;\u4154g;\u67ebr\u0100;t\u0f5c\u0f5d\u61a0l;\u6916\u0180aey\u0f67\u0f6c\u0f71ron;\u4158dil;\u4156;\u4420\u0100;v\u0f78\u0f79\u611cerse\u0100EU\u0f82\u0f99\u0100lq\u0f87\u0f8eement;\u620builibrium;\u61cbpEquilibrium;\u696fr\xbb\u0f79o;\u43a1ght\u0400ACDFTUVa\u0fc1\u0feb\u0ff3\u1022\u1028\u105b\u1087\u03d8\u0100nr\u0fc6\u0fd2gleBracket;\u67e9row\u0180;BL\u0fdc\u0fdd\u0fe1\u6192ar;\u61e5eftArrow;\u61c4eiling;\u6309o\u01f5\u0ff9\0\u1005bleBracket;\u67e7n\u01d4\u100a\0\u1014eeVector;\u695dector\u0100;B\u101d\u101e\u61c2ar;\u6955loor;\u630b\u0100er\u102d\u1043e\u0180;AV\u1035\u1036\u103c\u62a2rrow;\u61a6ector;\u695biangle\u0180;BE\u1050\u1051\u1055\u62b3ar;\u69d0qual;\u62b5p\u0180DTV\u1063\u106e\u1078ownVector;\u694feeVector;\u695cector\u0100;B\u1082\u1083\u61bear;\u6954ector\u0100;B\u1091\u1092\u61c0ar;\u6953\u0100pu\u109b\u109ef;\u611dndImplies;\u6970ightarrow;\u61db\u0100ch\u10b9\u10bcr;\u611b;\u61b1leDelayed;\u69f4\u0680HOacfhimoqstu\u10e4\u10f1\u10f7\u10fd\u1119\u111e\u1151\u1156\u1161\u1167\u11b5\u11bb\u11bf\u0100Cc\u10e9\u10eeHcy;\u4429y;\u4428FTcy;\u442ccute;\u415a\u0280;aeiy\u1108\u1109\u110e\u1113\u1117\u6abcron;\u4160dil;\u415erc;\u415c;\u4421r;\uc000\ud835\udd16ort\u0200DLRU\u112a\u1134\u113e\u1149ownArrow\xbb\u041eeftArrow\xbb\u089aightArrow\xbb\u0fddpArrow;\u6191gma;\u43a3allCircle;\u6218pf;\uc000\ud835\udd4a\u0272\u116d\0\0\u1170t;\u621aare\u0200;ISU\u117b\u117c\u1189\u11af\u65a1ntersection;\u6293u\u0100bp\u118f\u119eset\u0100;E\u1197\u1198\u628fqual;\u6291erset\u0100;E\u11a8\u11a9\u6290qual;\u6292nion;\u6294cr;\uc000\ud835\udcaear;\u62c6\u0200bcmp\u11c8\u11db\u1209\u120b\u0100;s\u11cd\u11ce\u62d0et\u0100;E\u11cd\u11d5qual;\u6286\u0100ch\u11e0\u1205eeds\u0200;EST\u11ed\u11ee\u11f4\u11ff\u627bqual;\u6ab0lantEqual;\u627dilde;\u627fTh\xe1\u0f8c;\u6211\u0180;es\u1212\u1213\u1223\u62d1rset\u0100;E\u121c\u121d\u6283qual;\u6287et\xbb\u1213\u0580HRSacfhiors\u123e\u1244\u1249\u1255\u125e\u1271\u1276\u129f\u12c2\u12c8\u12d1ORN\u803b\xde\u40deADE;\u6122\u0100Hc\u124e\u1252cy;\u440by;\u4426\u0100bu\u125a\u125c;\u4009;\u43a4\u0180aey\u1265\u126a\u126fron;\u4164dil;\u4162;\u4422r;\uc000\ud835\udd17\u0100ei\u127b\u1289\u01f2\u1280\0\u1287efore;\u6234a;\u4398\u0100cn\u128e\u1298kSpace;\uc000\u205f\u200aSpace;\u6009lde\u0200;EFT\u12ab\u12ac\u12b2\u12bc\u623cqual;\u6243ullEqual;\u6245ilde;\u6248pf;\uc000\ud835\udd4bipleDot;\u60db\u0100ct\u12d6\u12dbr;\uc000\ud835\udcafrok;\u4166\u0ae1\u12f7\u130e\u131a\u1326\0\u132c\u1331\0\0\0\0\0\u1338\u133d\u1377\u1385\0\u13ff\u1404\u140a\u1410\u0100cr\u12fb\u1301ute\u803b\xda\u40dar\u0100;o\u1307\u1308\u619fcir;\u6949r\u01e3\u1313\0\u1316y;\u440eve;\u416c\u0100iy\u131e\u1323rc\u803b\xdb\u40db;\u4423blac;\u4170r;\uc000\ud835\udd18rave\u803b\xd9\u40d9acr;\u416a\u0100di\u1341\u1369er\u0100BP\u1348\u135d\u0100ar\u134d\u1350r;\u405fac\u0100ek\u1357\u1359;\u63dfet;\u63b5arenthesis;\u63ddon\u0100;P\u1370\u1371\u62c3lus;\u628e\u0100gp\u137b\u137fon;\u4172f;\uc000\ud835\udd4c\u0400ADETadps\u1395\u13ae\u13b8\u13c4\u03e8\u13d2\u13d7\u13f3rrow\u0180;BD\u1150\u13a0\u13a4ar;\u6912ownArrow;\u61c5ownArrow;\u6195quilibrium;\u696eee\u0100;A\u13cb\u13cc\u62a5rrow;\u61a5own\xe1\u03f3er\u0100LR\u13de\u13e8eftArrow;\u6196ightArrow;\u6197i\u0100;l\u13f9\u13fa\u43d2on;\u43a5ing;\u416ecr;\uc000\ud835\udcb0ilde;\u4168ml\u803b\xdc\u40dc\u0480Dbcdefosv\u1427\u142c\u1430\u1433\u143e\u1485\u148a\u1490\u1496ash;\u62abar;\u6aeby;\u4412ash\u0100;l\u143b\u143c\u62a9;\u6ae6\u0100er\u1443\u1445;\u62c1\u0180bty\u144c\u1450\u147aar;\u6016\u0100;i\u144f\u1455cal\u0200BLST\u1461\u1465\u146a\u1474ar;\u6223ine;\u407ceparator;\u6758ilde;\u6240ThinSpace;\u600ar;\uc000\ud835\udd19pf;\uc000\ud835\udd4dcr;\uc000\ud835\udcb1dash;\u62aa\u0280cefos\u14a7\u14ac\u14b1\u14b6\u14bcirc;\u4174dge;\u62c0r;\uc000\ud835\udd1apf;\uc000\ud835\udd4ecr;\uc000\ud835\udcb2\u0200fios\u14cb\u14d0\u14d2\u14d8r;\uc000\ud835\udd1b;\u439epf;\uc000\ud835\udd4fcr;\uc000\ud835\udcb3\u0480AIUacfosu\u14f1\u14f5\u14f9\u14fd\u1504\u150f\u1514\u151a\u1520cy;\u442fcy;\u4407cy;\u442ecute\u803b\xdd\u40dd\u0100iy\u1509\u150drc;\u4176;\u442br;\uc000\ud835\udd1cpf;\uc000\ud835\udd50cr;\uc000\ud835\udcb4ml;\u4178\u0400Hacdefos\u1535\u1539\u153f\u154b\u154f\u155d\u1560\u1564cy;\u4416cute;\u4179\u0100ay\u1544\u1549ron;\u417d;\u4417ot;\u417b\u01f2\u1554\0\u155boWidt\xe8\u0ad9a;\u4396r;\u6128pf;\u6124cr;\uc000\ud835\udcb5\u0be1\u1583\u158a\u1590\0\u15b0\u15b6\u15bf\0\0\0\0\u15c6\u15db\u15eb\u165f\u166d\0\u1695\u169b\u16b2\u16b9\0\u16becute\u803b\xe1\u40e1reve;\u4103\u0300;Ediuy\u159c\u159d\u15a1\u15a3\u15a8\u15ad\u623e;\uc000\u223e\u0333;\u623frc\u803b\xe2\u40e2te\u80bb\xb4\u0306;\u4430lig\u803b\xe6\u40e6\u0100;r\xb2\u15ba;\uc000\ud835\udd1erave\u803b\xe0\u40e0\u0100ep\u15ca\u15d6\u0100fp\u15cf\u15d4sym;\u6135\xe8\u15d3ha;\u43b1\u0100ap\u15dfc\u0100cl\u15e4\u15e7r;\u4101g;\u6a3f\u0264\u15f0\0\0\u160a\u0280;adsv\u15fa\u15fb\u15ff\u1601\u1607\u6227nd;\u6a55;\u6a5clope;\u6a58;\u6a5a\u0380;elmrsz\u1618\u1619\u161b\u161e\u163f\u164f\u1659\u6220;\u69a4e\xbb\u1619sd\u0100;a\u1625\u1626\u6221\u0461\u1630\u1632\u1634\u1636\u1638\u163a\u163c\u163e;\u69a8;\u69a9;\u69aa;\u69ab;\u69ac;\u69ad;\u69ae;\u69aft\u0100;v\u1645\u1646\u621fb\u0100;d\u164c\u164d\u62be;\u699d\u0100pt\u1654\u1657h;\u6222\xbb\xb9arr;\u637c\u0100gp\u1663\u1667on;\u4105f;\uc000\ud835\udd52\u0380;Eaeiop\u12c1\u167b\u167d\u1682\u1684\u1687\u168a;\u6a70cir;\u6a6f;\u624ad;\u624bs;\u4027rox\u0100;e\u12c1\u1692\xf1\u1683ing\u803b\xe5\u40e5\u0180cty\u16a1\u16a6\u16a8r;\uc000\ud835\udcb6;\u402amp\u0100;e\u12c1\u16af\xf1\u0288ilde\u803b\xe3\u40e3ml\u803b\xe4\u40e4\u0100ci\u16c2\u16c8onin\xf4\u0272nt;\u6a11\u0800Nabcdefiklnoprsu\u16ed\u16f1\u1730\u173c\u1743\u1748\u1778\u177d\u17e0\u17e6\u1839\u1850\u170d\u193d\u1948\u1970ot;\u6aed\u0100cr\u16f6\u171ek\u0200ceps\u1700\u1705\u170d\u1713ong;\u624cpsilon;\u43f6rime;\u6035im\u0100;e\u171a\u171b\u623dq;\u62cd\u0176\u1722\u1726ee;\u62bded\u0100;g\u172c\u172d\u6305e\xbb\u172drk\u0100;t\u135c\u1737brk;\u63b6\u0100oy\u1701\u1741;\u4431quo;\u601e\u0280cmprt\u1753\u175b\u1761\u1764\u1768aus\u0100;e\u010a\u0109ptyv;\u69b0s\xe9\u170cno\xf5\u0113\u0180ahw\u176f\u1771\u1773;\u43b2;\u6136een;\u626cr;\uc000\ud835\udd1fg\u0380costuvw\u178d\u179d\u17b3\u17c1\u17d5\u17db\u17de\u0180aiu\u1794\u1796\u179a\xf0\u0760rc;\u65efp\xbb\u1371\u0180dpt\u17a4\u17a8\u17adot;\u6a00lus;\u6a01imes;\u6a02\u0271\u17b9\0\0\u17becup;\u6a06ar;\u6605riangle\u0100du\u17cd\u17d2own;\u65bdp;\u65b3plus;\u6a04e\xe5\u1444\xe5\u14adarow;\u690d\u0180ako\u17ed\u1826\u1835\u0100cn\u17f2\u1823k\u0180lst\u17fa\u05ab\u1802ozenge;\u69ebriangle\u0200;dlr\u1812\u1813\u1818\u181d\u65b4own;\u65beeft;\u65c2ight;\u65b8k;\u6423\u01b1\u182b\0\u1833\u01b2\u182f\0\u1831;\u6592;\u65914;\u6593ck;\u6588\u0100eo\u183e\u184d\u0100;q\u1843\u1846\uc000=\u20e5uiv;\uc000\u2261\u20e5t;\u6310\u0200ptwx\u1859\u185e\u1867\u186cf;\uc000\ud835\udd53\u0100;t\u13cb\u1863om\xbb\u13cctie;\u62c8\u0600DHUVbdhmptuv\u1885\u1896\u18aa\u18bb\u18d7\u18db\u18ec\u18ff\u1905\u190a\u1910\u1921\u0200LRlr\u188e\u1890\u1892\u1894;\u6557;\u6554;\u6556;\u6553\u0280;DUdu\u18a1\u18a2\u18a4\u18a6\u18a8\u6550;\u6566;\u6569;\u6564;\u6567\u0200LRlr\u18b3\u18b5\u18b7\u18b9;\u655d;\u655a;\u655c;\u6559\u0380;HLRhlr\u18ca\u18cb\u18cd\u18cf\u18d1\u18d3\u18d5\u6551;\u656c;\u6563;\u6560;\u656b;\u6562;\u655fox;\u69c9\u0200LRlr\u18e4\u18e6\u18e8\u18ea;\u6555;\u6552;\u6510;\u650c\u0280;DUdu\u06bd\u18f7\u18f9\u18fb\u18fd;\u6565;\u6568;\u652c;\u6534inus;\u629flus;\u629eimes;\u62a0\u0200LRlr\u1919\u191b\u191d\u191f;\u655b;\u6558;\u6518;\u6514\u0380;HLRhlr\u1930\u1931\u1933\u1935\u1937\u1939\u193b\u6502;\u656a;\u6561;\u655e;\u653c;\u6524;\u651c\u0100ev\u0123\u1942bar\u803b\xa6\u40a6\u0200ceio\u1951\u1956\u195a\u1960r;\uc000\ud835\udcb7mi;\u604fm\u0100;e\u171a\u171cl\u0180;bh\u1968\u1969\u196b\u405c;\u69c5sub;\u67c8\u016c\u1974\u197el\u0100;e\u1979\u197a\u6022t\xbb\u197ap\u0180;Ee\u012f\u1985\u1987;\u6aae\u0100;q\u06dc\u06db\u0ce1\u19a7\0\u19e8\u1a11\u1a15\u1a32\0\u1a37\u1a50\0\0\u1ab4\0\0\u1ac1\0\0\u1b21\u1b2e\u1b4d\u1b52\0\u1bfd\0\u1c0c\u0180cpr\u19ad\u19b2\u19ddute;\u4107\u0300;abcds\u19bf\u19c0\u19c4\u19ca\u19d5\u19d9\u6229nd;\u6a44rcup;\u6a49\u0100au\u19cf\u19d2p;\u6a4bp;\u6a47ot;\u6a40;\uc000\u2229\ufe00\u0100eo\u19e2\u19e5t;\u6041\xee\u0693\u0200aeiu\u19f0\u19fb\u1a01\u1a05\u01f0\u19f5\0\u19f8s;\u6a4don;\u410ddil\u803b\xe7\u40e7rc;\u4109ps\u0100;s\u1a0c\u1a0d\u6a4cm;\u6a50ot;\u410b\u0180dmn\u1a1b\u1a20\u1a26il\u80bb\xb8\u01adptyv;\u69b2t\u8100\xa2;e\u1a2d\u1a2e\u40a2r\xe4\u01b2r;\uc000\ud835\udd20\u0180cei\u1a3d\u1a40\u1a4dy;\u4447ck\u0100;m\u1a47\u1a48\u6713ark\xbb\u1a48;\u43c7r\u0380;Ecefms\u1a5f\u1a60\u1a62\u1a6b\u1aa4\u1aaa\u1aae\u65cb;\u69c3\u0180;el\u1a69\u1a6a\u1a6d\u42c6q;\u6257e\u0261\u1a74\0\0\u1a88rrow\u0100lr\u1a7c\u1a81eft;\u61baight;\u61bb\u0280RSacd\u1a92\u1a94\u1a96\u1a9a\u1a9f\xbb\u0f47;\u64c8st;\u629birc;\u629aash;\u629dnint;\u6a10id;\u6aefcir;\u69c2ubs\u0100;u\u1abb\u1abc\u6663it\xbb\u1abc\u02ec\u1ac7\u1ad4\u1afa\0\u1b0aon\u0100;e\u1acd\u1ace\u403a\u0100;q\xc7\xc6\u026d\u1ad9\0\0\u1ae2a\u0100;t\u1ade\u1adf\u402c;\u4040\u0180;fl\u1ae8\u1ae9\u1aeb\u6201\xee\u1160e\u0100mx\u1af1\u1af6ent\xbb\u1ae9e\xf3\u024d\u01e7\u1afe\0\u1b07\u0100;d\u12bb\u1b02ot;\u6a6dn\xf4\u0246\u0180fry\u1b10\u1b14\u1b17;\uc000\ud835\udd54o\xe4\u0254\u8100\xa9;s\u0155\u1b1dr;\u6117\u0100ao\u1b25\u1b29rr;\u61b5ss;\u6717\u0100cu\u1b32\u1b37r;\uc000\ud835\udcb8\u0100bp\u1b3c\u1b44\u0100;e\u1b41\u1b42\u6acf;\u6ad1\u0100;e\u1b49\u1b4a\u6ad0;\u6ad2dot;\u62ef\u0380delprvw\u1b60\u1b6c\u1b77\u1b82\u1bac\u1bd4\u1bf9arr\u0100lr\u1b68\u1b6a;\u6938;\u6935\u0270\u1b72\0\0\u1b75r;\u62dec;\u62dfarr\u0100;p\u1b7f\u1b80\u61b6;\u693d\u0300;bcdos\u1b8f\u1b90\u1b96\u1ba1\u1ba5\u1ba8\u622arcap;\u6a48\u0100au\u1b9b\u1b9ep;\u6a46p;\u6a4aot;\u628dr;\u6a45;\uc000\u222a\ufe00\u0200alrv\u1bb5\u1bbf\u1bde\u1be3rr\u0100;m\u1bbc\u1bbd\u61b7;\u693cy\u0180evw\u1bc7\u1bd4\u1bd8q\u0270\u1bce\0\0\u1bd2re\xe3\u1b73u\xe3\u1b75ee;\u62ceedge;\u62cfen\u803b\xa4\u40a4earrow\u0100lr\u1bee\u1bf3eft\xbb\u1b80ight\xbb\u1bbde\xe4\u1bdd\u0100ci\u1c01\u1c07onin\xf4\u01f7nt;\u6231lcty;\u632d\u0980AHabcdefhijlorstuwz\u1c38\u1c3b\u1c3f\u1c5d\u1c69\u1c75\u1c8a\u1c9e\u1cac\u1cb7\u1cfb\u1cff\u1d0d\u1d7b\u1d91\u1dab\u1dbb\u1dc6\u1dcdr\xf2\u0381ar;\u6965\u0200glrs\u1c48\u1c4d\u1c52\u1c54ger;\u6020eth;\u6138\xf2\u1133h\u0100;v\u1c5a\u1c5b\u6010\xbb\u090a\u016b\u1c61\u1c67arow;\u690fa\xe3\u0315\u0100ay\u1c6e\u1c73ron;\u410f;\u4434\u0180;ao\u0332\u1c7c\u1c84\u0100gr\u02bf\u1c81r;\u61catseq;\u6a77\u0180glm\u1c91\u1c94\u1c98\u803b\xb0\u40b0ta;\u43b4ptyv;\u69b1\u0100ir\u1ca3\u1ca8sht;\u697f;\uc000\ud835\udd21ar\u0100lr\u1cb3\u1cb5\xbb\u08dc\xbb\u101e\u0280aegsv\u1cc2\u0378\u1cd6\u1cdc\u1ce0m\u0180;os\u0326\u1cca\u1cd4nd\u0100;s\u0326\u1cd1uit;\u6666amma;\u43ddin;\u62f2\u0180;io\u1ce7\u1ce8\u1cf8\u40f7de\u8100\xf7;o\u1ce7\u1cf0ntimes;\u62c7n\xf8\u1cf7cy;\u4452c\u026f\u1d06\0\0\u1d0arn;\u631eop;\u630d\u0280lptuw\u1d18\u1d1d\u1d22\u1d49\u1d55lar;\u4024f;\uc000\ud835\udd55\u0280;emps\u030b\u1d2d\u1d37\u1d3d\u1d42q\u0100;d\u0352\u1d33ot;\u6251inus;\u6238lus;\u6214quare;\u62a1blebarwedg\xe5\xfan\u0180adh\u112e\u1d5d\u1d67ownarrow\xf3\u1c83arpoon\u0100lr\u1d72\u1d76ef\xf4\u1cb4igh\xf4\u1cb6\u0162\u1d7f\u1d85karo\xf7\u0f42\u026f\u1d8a\0\0\u1d8ern;\u631fop;\u630c\u0180cot\u1d98\u1da3\u1da6\u0100ry\u1d9d\u1da1;\uc000\ud835\udcb9;\u4455l;\u69f6rok;\u4111\u0100dr\u1db0\u1db4ot;\u62f1i\u0100;f\u1dba\u1816\u65bf\u0100ah\u1dc0\u1dc3r\xf2\u0429a\xf2\u0fa6angle;\u69a6\u0100ci\u1dd2\u1dd5y;\u445fgrarr;\u67ff\u0900Dacdefglmnopqrstux\u1e01\u1e09\u1e19\u1e38\u0578\u1e3c\u1e49\u1e61\u1e7e\u1ea5\u1eaf\u1ebd\u1ee1\u1f2a\u1f37\u1f44\u1f4e\u1f5a\u0100Do\u1e06\u1d34o\xf4\u1c89\u0100cs\u1e0e\u1e14ute\u803b\xe9\u40e9ter;\u6a6e\u0200aioy\u1e22\u1e27\u1e31\u1e36ron;\u411br\u0100;c\u1e2d\u1e2e\u6256\u803b\xea\u40ealon;\u6255;\u444dot;\u4117\u0100Dr\u1e41\u1e45ot;\u6252;\uc000\ud835\udd22\u0180;rs\u1e50\u1e51\u1e57\u6a9aave\u803b\xe8\u40e8\u0100;d\u1e5c\u1e5d\u6a96ot;\u6a98\u0200;ils\u1e6a\u1e6b\u1e72\u1e74\u6a99nters;\u63e7;\u6113\u0100;d\u1e79\u1e7a\u6a95ot;\u6a97\u0180aps\u1e85\u1e89\u1e97cr;\u4113ty\u0180;sv\u1e92\u1e93\u1e95\u6205et\xbb\u1e93p\u01001;\u1e9d\u1ea4\u0133\u1ea1\u1ea3;\u6004;\u6005\u6003\u0100gs\u1eaa\u1eac;\u414bp;\u6002\u0100gp\u1eb4\u1eb8on;\u4119f;\uc000\ud835\udd56\u0180als\u1ec4\u1ece\u1ed2r\u0100;s\u1eca\u1ecb\u62d5l;\u69e3us;\u6a71i\u0180;lv\u1eda\u1edb\u1edf\u43b5on\xbb\u1edb;\u43f5\u0200csuv\u1eea\u1ef3\u1f0b\u1f23\u0100io\u1eef\u1e31rc\xbb\u1e2e\u0269\u1ef9\0\0\u1efb\xed\u0548ant\u0100gl\u1f02\u1f06tr\xbb\u1e5dess\xbb\u1e7a\u0180aei\u1f12\u1f16\u1f1als;\u403dst;\u625fv\u0100;D\u0235\u1f20D;\u6a78parsl;\u69e5\u0100Da\u1f2f\u1f33ot;\u6253rr;\u6971\u0180cdi\u1f3e\u1f41\u1ef8r;\u612fo\xf4\u0352\u0100ah\u1f49\u1f4b;\u43b7\u803b\xf0\u40f0\u0100mr\u1f53\u1f57l\u803b\xeb\u40ebo;\u60ac\u0180cip\u1f61\u1f64\u1f67l;\u4021s\xf4\u056e\u0100eo\u1f6c\u1f74ctatio\xee\u0559nential\xe5\u0579\u09e1\u1f92\0\u1f9e\0\u1fa1\u1fa7\0\0\u1fc6\u1fcc\0\u1fd3\0\u1fe6\u1fea\u2000\0\u2008\u205allingdotse\xf1\u1e44y;\u4444male;\u6640\u0180ilr\u1fad\u1fb3\u1fc1lig;\u8000\ufb03\u0269\u1fb9\0\0\u1fbdg;\u8000\ufb00ig;\u8000\ufb04;\uc000\ud835\udd23lig;\u8000\ufb01lig;\uc000fj\u0180alt\u1fd9\u1fdc\u1fe1t;\u666dig;\u8000\ufb02ns;\u65b1of;\u4192\u01f0\u1fee\0\u1ff3f;\uc000\ud835\udd57\u0100ak\u05bf\u1ff7\u0100;v\u1ffc\u1ffd\u62d4;\u6ad9artint;\u6a0d\u0100ao\u200c\u2055\u0100cs\u2011\u2052\u03b1\u201a\u2030\u2038\u2045\u2048\0\u2050\u03b2\u2022\u2025\u2027\u202a\u202c\0\u202e\u803b\xbd\u40bd;\u6153\u803b\xbc\u40bc;\u6155;\u6159;\u615b\u01b3\u2034\0\u2036;\u6154;\u6156\u02b4\u203e\u2041\0\0\u2043\u803b\xbe\u40be;\u6157;\u615c5;\u6158\u01b6\u204c\0\u204e;\u615a;\u615d8;\u615el;\u6044wn;\u6322cr;\uc000\ud835\udcbb\u0880Eabcdefgijlnorstv\u2082\u2089\u209f\u20a5\u20b0\u20b4\u20f0\u20f5\u20fa\u20ff\u2103\u2112\u2138\u0317\u213e\u2152\u219e\u0100;l\u064d\u2087;\u6a8c\u0180cmp\u2090\u2095\u209dute;\u41f5ma\u0100;d\u209c\u1cda\u43b3;\u6a86reve;\u411f\u0100iy\u20aa\u20aerc;\u411d;\u4433ot;\u4121\u0200;lqs\u063e\u0642\u20bd\u20c9\u0180;qs\u063e\u064c\u20c4lan\xf4\u0665\u0200;cdl\u0665\u20d2\u20d5\u20e5c;\u6aa9ot\u0100;o\u20dc\u20dd\u6a80\u0100;l\u20e2\u20e3\u6a82;\u6a84\u0100;e\u20ea\u20ed\uc000\u22db\ufe00s;\u6a94r;\uc000\ud835\udd24\u0100;g\u0673\u061bmel;\u6137cy;\u4453\u0200;Eaj\u065a\u210c\u210e\u2110;\u6a92;\u6aa5;\u6aa4\u0200Eaes\u211b\u211d\u2129\u2134;\u6269p\u0100;p\u2123\u2124\u6a8arox\xbb\u2124\u0100;q\u212e\u212f\u6a88\u0100;q\u212e\u211bim;\u62e7pf;\uc000\ud835\udd58\u0100ci\u2143\u2146r;\u610am\u0180;el\u066b\u214e\u2150;\u6a8e;\u6a90\u8300>;cdlqr\u05ee\u2160\u216a\u216e\u2173\u2179\u0100ci\u2165\u2167;\u6aa7r;\u6a7aot;\u62d7Par;\u6995uest;\u6a7c\u0280adels\u2184\u216a\u2190\u0656\u219b\u01f0\u2189\0\u218epro\xf8\u209er;\u6978q\u0100lq\u063f\u2196les\xf3\u2088i\xed\u066b\u0100en\u21a3\u21adrtneqq;\uc000\u2269\ufe00\xc5\u21aa\u0500Aabcefkosy\u21c4\u21c7\u21f1\u21f5\u21fa\u2218\u221d\u222f\u2268\u227dr\xf2\u03a0\u0200ilmr\u21d0\u21d4\u21d7\u21dbrs\xf0\u1484f\xbb\u2024il\xf4\u06a9\u0100dr\u21e0\u21e4cy;\u444a\u0180;cw\u08f4\u21eb\u21efir;\u6948;\u61adar;\u610firc;\u4125\u0180alr\u2201\u220e\u2213rts\u0100;u\u2209\u220a\u6665it\xbb\u220alip;\u6026con;\u62b9r;\uc000\ud835\udd25s\u0100ew\u2223\u2229arow;\u6925arow;\u6926\u0280amopr\u223a\u223e\u2243\u225e\u2263rr;\u61fftht;\u623bk\u0100lr\u2249\u2253eftarrow;\u61a9ightarrow;\u61aaf;\uc000\ud835\udd59bar;\u6015\u0180clt\u226f\u2274\u2278r;\uc000\ud835\udcbdas\xe8\u21f4rok;\u4127\u0100bp\u2282\u2287ull;\u6043hen\xbb\u1c5b\u0ae1\u22a3\0\u22aa\0\u22b8\u22c5\u22ce\0\u22d5\u22f3\0\0\u22f8\u2322\u2367\u2362\u237f\0\u2386\u23aa\u23b4cute\u803b\xed\u40ed\u0180;iy\u0771\u22b0\u22b5rc\u803b\xee\u40ee;\u4438\u0100cx\u22bc\u22bfy;\u4435cl\u803b\xa1\u40a1\u0100fr\u039f\u22c9;\uc000\ud835\udd26rave\u803b\xec\u40ec\u0200;ino\u073e\u22dd\u22e9\u22ee\u0100in\u22e2\u22e6nt;\u6a0ct;\u622dfin;\u69dcta;\u6129lig;\u4133\u0180aop\u22fe\u231a\u231d\u0180cgt\u2305\u2308\u2317r;\u412b\u0180elp\u071f\u230f\u2313in\xe5\u078ear\xf4\u0720h;\u4131f;\u62b7ed;\u41b5\u0280;cfot\u04f4\u232c\u2331\u233d\u2341are;\u6105in\u0100;t\u2338\u2339\u621eie;\u69dddo\xf4\u2319\u0280;celp\u0757\u234c\u2350\u235b\u2361al;\u62ba\u0100gr\u2355\u2359er\xf3\u1563\xe3\u234darhk;\u6a17rod;\u6a3c\u0200cgpt\u236f\u2372\u2376\u237by;\u4451on;\u412ff;\uc000\ud835\udd5aa;\u43b9uest\u803b\xbf\u40bf\u0100ci\u238a\u238fr;\uc000\ud835\udcben\u0280;Edsv\u04f4\u239b\u239d\u23a1\u04f3;\u62f9ot;\u62f5\u0100;v\u23a6\u23a7\u62f4;\u62f3\u0100;i\u0777\u23aelde;\u4129\u01eb\u23b8\0\u23bccy;\u4456l\u803b\xef\u40ef\u0300cfmosu\u23cc\u23d7\u23dc\u23e1\u23e7\u23f5\u0100iy\u23d1\u23d5rc;\u4135;\u4439r;\uc000\ud835\udd27ath;\u4237pf;\uc000\ud835\udd5b\u01e3\u23ec\0\u23f1r;\uc000\ud835\udcbfrcy;\u4458kcy;\u4454\u0400acfghjos\u240b\u2416\u2422\u2427\u242d\u2431\u2435\u243bppa\u0100;v\u2413\u2414\u43ba;\u43f0\u0100ey\u241b\u2420dil;\u4137;\u443ar;\uc000\ud835\udd28reen;\u4138cy;\u4445cy;\u445cpf;\uc000\ud835\udd5ccr;\uc000\ud835\udcc0\u0b80ABEHabcdefghjlmnoprstuv\u2470\u2481\u2486\u248d\u2491\u250e\u253d\u255a\u2580\u264e\u265e\u2665\u2679\u267d\u269a\u26b2\u26d8\u275d\u2768\u278b\u27c0\u2801\u2812\u0180art\u2477\u247a\u247cr\xf2\u09c6\xf2\u0395ail;\u691barr;\u690e\u0100;g\u0994\u248b;\u6a8bar;\u6962\u0963\u24a5\0\u24aa\0\u24b1\0\0\0\0\0\u24b5\u24ba\0\u24c6\u24c8\u24cd\0\u24f9ute;\u413amptyv;\u69b4ra\xee\u084cbda;\u43bbg\u0180;dl\u088e\u24c1\u24c3;\u6991\xe5\u088e;\u6a85uo\u803b\xab\u40abr\u0400;bfhlpst\u0899\u24de\u24e6\u24e9\u24eb\u24ee\u24f1\u24f5\u0100;f\u089d\u24e3s;\u691fs;\u691d\xeb\u2252p;\u61abl;\u6939im;\u6973l;\u61a2\u0180;ae\u24ff\u2500\u2504\u6aabil;\u6919\u0100;s\u2509\u250a\u6aad;\uc000\u2aad\ufe00\u0180abr\u2515\u2519\u251drr;\u690crk;\u6772\u0100ak\u2522\u252cc\u0100ek\u2528\u252a;\u407b;\u405b\u0100es\u2531\u2533;\u698bl\u0100du\u2539\u253b;\u698f;\u698d\u0200aeuy\u2546\u254b\u2556\u2558ron;\u413e\u0100di\u2550\u2554il;\u413c\xec\u08b0\xe2\u2529;\u443b\u0200cqrs\u2563\u2566\u256d\u257da;\u6936uo\u0100;r\u0e19\u1746\u0100du\u2572\u2577har;\u6967shar;\u694bh;\u61b2\u0280;fgqs\u258b\u258c\u0989\u25f3\u25ff\u6264t\u0280ahlrt\u2598\u25a4\u25b7\u25c2\u25e8rrow\u0100;t\u0899\u25a1a\xe9\u24f6arpoon\u0100du\u25af\u25b4own\xbb\u045ap\xbb\u0966eftarrows;\u61c7ight\u0180ahs\u25cd\u25d6\u25derrow\u0100;s\u08f4\u08a7arpoon\xf3\u0f98quigarro\xf7\u21f0hreetimes;\u62cb\u0180;qs\u258b\u0993\u25falan\xf4\u09ac\u0280;cdgs\u09ac\u260a\u260d\u261d\u2628c;\u6aa8ot\u0100;o\u2614\u2615\u6a7f\u0100;r\u261a\u261b\u6a81;\u6a83\u0100;e\u2622\u2625\uc000\u22da\ufe00s;\u6a93\u0280adegs\u2633\u2639\u263d\u2649\u264bppro\xf8\u24c6ot;\u62d6q\u0100gq\u2643\u2645\xf4\u0989gt\xf2\u248c\xf4\u099bi\xed\u09b2\u0180ilr\u2655\u08e1\u265asht;\u697c;\uc000\ud835\udd29\u0100;E\u099c\u2663;\u6a91\u0161\u2669\u2676r\u0100du\u25b2\u266e\u0100;l\u0965\u2673;\u696alk;\u6584cy;\u4459\u0280;acht\u0a48\u2688\u268b\u2691\u2696r\xf2\u25c1orne\xf2\u1d08ard;\u696bri;\u65fa\u0100io\u269f\u26a4dot;\u4140ust\u0100;a\u26ac\u26ad\u63b0che\xbb\u26ad\u0200Eaes\u26bb\u26bd\u26c9\u26d4;\u6268p\u0100;p\u26c3\u26c4\u6a89rox\xbb\u26c4\u0100;q\u26ce\u26cf\u6a87\u0100;q\u26ce\u26bbim;\u62e6\u0400abnoptwz\u26e9\u26f4\u26f7\u271a\u272f\u2741\u2747\u2750\u0100nr\u26ee\u26f1g;\u67ecr;\u61fdr\xeb\u08c1g\u0180lmr\u26ff\u270d\u2714eft\u0100ar\u09e6\u2707ight\xe1\u09f2apsto;\u67fcight\xe1\u09fdparrow\u0100lr\u2725\u2729ef\xf4\u24edight;\u61ac\u0180afl\u2736\u2739\u273dr;\u6985;\uc000\ud835\udd5dus;\u6a2dimes;\u6a34\u0161\u274b\u274fst;\u6217\xe1\u134e\u0180;ef\u2757\u2758\u1800\u65cange\xbb\u2758ar\u0100;l\u2764\u2765\u4028t;\u6993\u0280achmt\u2773\u2776\u277c\u2785\u2787r\xf2\u08a8orne\xf2\u1d8car\u0100;d\u0f98\u2783;\u696d;\u600eri;\u62bf\u0300achiqt\u2798\u279d\u0a40\u27a2\u27ae\u27bbquo;\u6039r;\uc000\ud835\udcc1m\u0180;eg\u09b2\u27aa\u27ac;\u6a8d;\u6a8f\u0100bu\u252a\u27b3o\u0100;r\u0e1f\u27b9;\u601arok;\u4142\u8400<;cdhilqr\u082b\u27d2\u2639\u27dc\u27e0\u27e5\u27ea\u27f0\u0100ci\u27d7\u27d9;\u6aa6r;\u6a79re\xe5\u25f2mes;\u62c9arr;\u6976uest;\u6a7b\u0100Pi\u27f5\u27f9ar;\u6996\u0180;ef\u2800\u092d\u181b\u65c3r\u0100du\u2807\u280dshar;\u694ahar;\u6966\u0100en\u2817\u2821rtneqq;\uc000\u2268\ufe00\xc5\u281e\u0700Dacdefhilnopsu\u2840\u2845\u2882\u288e\u2893\u28a0\u28a5\u28a8\u28da\u28e2\u28e4\u0a83\u28f3\u2902Dot;\u623a\u0200clpr\u284e\u2852\u2863\u287dr\u803b\xaf\u40af\u0100et\u2857\u2859;\u6642\u0100;e\u285e\u285f\u6720se\xbb\u285f\u0100;s\u103b\u2868to\u0200;dlu\u103b\u2873\u2877\u287bow\xee\u048cef\xf4\u090f\xf0\u13d1ker;\u65ae\u0100oy\u2887\u288cmma;\u6a29;\u443cash;\u6014asuredangle\xbb\u1626r;\uc000\ud835\udd2ao;\u6127\u0180cdn\u28af\u28b4\u28c9ro\u803b\xb5\u40b5\u0200;acd\u1464\u28bd\u28c0\u28c4s\xf4\u16a7ir;\u6af0ot\u80bb\xb7\u01b5us\u0180;bd\u28d2\u1903\u28d3\u6212\u0100;u\u1d3c\u28d8;\u6a2a\u0163\u28de\u28e1p;\u6adb\xf2\u2212\xf0\u0a81\u0100dp\u28e9\u28eeels;\u62a7f;\uc000\ud835\udd5e\u0100ct\u28f8\u28fdr;\uc000\ud835\udcc2pos\xbb\u159d\u0180;lm\u2909\u290a\u290d\u43bctimap;\u62b8\u0c00GLRVabcdefghijlmoprstuvw\u2942\u2953\u297e\u2989\u2998\u29da\u29e9\u2a15\u2a1a\u2a58\u2a5d\u2a83\u2a95\u2aa4\u2aa8\u2b04\u2b07\u2b44\u2b7f\u2bae\u2c34\u2c67\u2c7c\u2ce9\u0100gt\u2947\u294b;\uc000\u22d9\u0338\u0100;v\u2950\u0bcf\uc000\u226b\u20d2\u0180elt\u295a\u2972\u2976ft\u0100ar\u2961\u2967rrow;\u61cdightarrow;\u61ce;\uc000\u22d8\u0338\u0100;v\u297b\u0c47\uc000\u226a\u20d2ightarrow;\u61cf\u0100Dd\u298e\u2993ash;\u62afash;\u62ae\u0280bcnpt\u29a3\u29a7\u29ac\u29b1\u29ccla\xbb\u02deute;\u4144g;\uc000\u2220\u20d2\u0280;Eiop\u0d84\u29bc\u29c0\u29c5\u29c8;\uc000\u2a70\u0338d;\uc000\u224b\u0338s;\u4149ro\xf8\u0d84ur\u0100;a\u29d3\u29d4\u666el\u0100;s\u29d3\u0b38\u01f3\u29df\0\u29e3p\u80bb\xa0\u0b37mp\u0100;e\u0bf9\u0c00\u0280aeouy\u29f4\u29fe\u2a03\u2a10\u2a13\u01f0\u29f9\0\u29fb;\u6a43on;\u4148dil;\u4146ng\u0100;d\u0d7e\u2a0aot;\uc000\u2a6d\u0338p;\u6a42;\u443dash;\u6013\u0380;Aadqsx\u0b92\u2a29\u2a2d\u2a3b\u2a41\u2a45\u2a50rr;\u61d7r\u0100hr\u2a33\u2a36k;\u6924\u0100;o\u13f2\u13f0ot;\uc000\u2250\u0338ui\xf6\u0b63\u0100ei\u2a4a\u2a4ear;\u6928\xed\u0b98ist\u0100;s\u0ba0\u0b9fr;\uc000\ud835\udd2b\u0200Eest\u0bc5\u2a66\u2a79\u2a7c\u0180;qs\u0bbc\u2a6d\u0be1\u0180;qs\u0bbc\u0bc5\u2a74lan\xf4\u0be2i\xed\u0bea\u0100;r\u0bb6\u2a81\xbb\u0bb7\u0180Aap\u2a8a\u2a8d\u2a91r\xf2\u2971rr;\u61aear;\u6af2\u0180;sv\u0f8d\u2a9c\u0f8c\u0100;d\u2aa1\u2aa2\u62fc;\u62facy;\u445a\u0380AEadest\u2ab7\u2aba\u2abe\u2ac2\u2ac5\u2af6\u2af9r\xf2\u2966;\uc000\u2266\u0338rr;\u619ar;\u6025\u0200;fqs\u0c3b\u2ace\u2ae3\u2aeft\u0100ar\u2ad4\u2ad9rro\xf7\u2ac1ightarro\xf7\u2a90\u0180;qs\u0c3b\u2aba\u2aealan\xf4\u0c55\u0100;s\u0c55\u2af4\xbb\u0c36i\xed\u0c5d\u0100;r\u0c35\u2afei\u0100;e\u0c1a\u0c25i\xe4\u0d90\u0100pt\u2b0c\u2b11f;\uc000\ud835\udd5f\u8180\xac;in\u2b19\u2b1a\u2b36\u40acn\u0200;Edv\u0b89\u2b24\u2b28\u2b2e;\uc000\u22f9\u0338ot;\uc000\u22f5\u0338\u01e1\u0b89\u2b33\u2b35;\u62f7;\u62f6i\u0100;v\u0cb8\u2b3c\u01e1\u0cb8\u2b41\u2b43;\u62fe;\u62fd\u0180aor\u2b4b\u2b63\u2b69r\u0200;ast\u0b7b\u2b55\u2b5a\u2b5flle\xec\u0b7bl;\uc000\u2afd\u20e5;\uc000\u2202\u0338lint;\u6a14\u0180;ce\u0c92\u2b70\u2b73u\xe5\u0ca5\u0100;c\u0c98\u2b78\u0100;e\u0c92\u2b7d\xf1\u0c98\u0200Aait\u2b88\u2b8b\u2b9d\u2ba7r\xf2\u2988rr\u0180;cw\u2b94\u2b95\u2b99\u619b;\uc000\u2933\u0338;\uc000\u219d\u0338ghtarrow\xbb\u2b95ri\u0100;e\u0ccb\u0cd6\u0380chimpqu\u2bbd\u2bcd\u2bd9\u2b04\u0b78\u2be4\u2bef\u0200;cer\u0d32\u2bc6\u0d37\u2bc9u\xe5\u0d45;\uc000\ud835\udcc3ort\u026d\u2b05\0\0\u2bd6ar\xe1\u2b56m\u0100;e\u0d6e\u2bdf\u0100;q\u0d74\u0d73su\u0100bp\u2beb\u2bed\xe5\u0cf8\xe5\u0d0b\u0180bcp\u2bf6\u2c11\u2c19\u0200;Ees\u2bff\u2c00\u0d22\u2c04\u6284;\uc000\u2ac5\u0338et\u0100;e\u0d1b\u2c0bq\u0100;q\u0d23\u2c00c\u0100;e\u0d32\u2c17\xf1\u0d38\u0200;Ees\u2c22\u2c23\u0d5f\u2c27\u6285;\uc000\u2ac6\u0338et\u0100;e\u0d58\u2c2eq\u0100;q\u0d60\u2c23\u0200gilr\u2c3d\u2c3f\u2c45\u2c47\xec\u0bd7lde\u803b\xf1\u40f1\xe7\u0c43iangle\u0100lr\u2c52\u2c5ceft\u0100;e\u0c1a\u2c5a\xf1\u0c26ight\u0100;e\u0ccb\u2c65\xf1\u0cd7\u0100;m\u2c6c\u2c6d\u43bd\u0180;es\u2c74\u2c75\u2c79\u4023ro;\u6116p;\u6007\u0480DHadgilrs\u2c8f\u2c94\u2c99\u2c9e\u2ca3\u2cb0\u2cb6\u2cd3\u2ce3ash;\u62adarr;\u6904p;\uc000\u224d\u20d2ash;\u62ac\u0100et\u2ca8\u2cac;\uc000\u2265\u20d2;\uc000>\u20d2nfin;\u69de\u0180Aet\u2cbd\u2cc1\u2cc5rr;\u6902;\uc000\u2264\u20d2\u0100;r\u2cca\u2ccd\uc000<\u20d2ie;\uc000\u22b4\u20d2\u0100At\u2cd8\u2cdcrr;\u6903rie;\uc000\u22b5\u20d2im;\uc000\u223c\u20d2\u0180Aan\u2cf0\u2cf4\u2d02rr;\u61d6r\u0100hr\u2cfa\u2cfdk;\u6923\u0100;o\u13e7\u13e5ear;\u6927\u1253\u1a95\0\0\0\0\0\0\0\0\0\0\0\0\0\u2d2d\0\u2d38\u2d48\u2d60\u2d65\u2d72\u2d84\u1b07\0\0\u2d8d\u2dab\0\u2dc8\u2dce\0\u2ddc\u2e19\u2e2b\u2e3e\u2e43\u0100cs\u2d31\u1a97ute\u803b\xf3\u40f3\u0100iy\u2d3c\u2d45r\u0100;c\u1a9e\u2d42\u803b\xf4\u40f4;\u443e\u0280abios\u1aa0\u2d52\u2d57\u01c8\u2d5alac;\u4151v;\u6a38old;\u69bclig;\u4153\u0100cr\u2d69\u2d6dir;\u69bf;\uc000\ud835\udd2c\u036f\u2d79\0\0\u2d7c\0\u2d82n;\u42dbave\u803b\xf2\u40f2;\u69c1\u0100bm\u2d88\u0df4ar;\u69b5\u0200acit\u2d95\u2d98\u2da5\u2da8r\xf2\u1a80\u0100ir\u2d9d\u2da0r;\u69beoss;\u69bbn\xe5\u0e52;\u69c0\u0180aei\u2db1\u2db5\u2db9cr;\u414dga;\u43c9\u0180cdn\u2dc0\u2dc5\u01cdron;\u43bf;\u69b6pf;\uc000\ud835\udd60\u0180ael\u2dd4\u2dd7\u01d2r;\u69b7rp;\u69b9\u0380;adiosv\u2dea\u2deb\u2dee\u2e08\u2e0d\u2e10\u2e16\u6228r\xf2\u1a86\u0200;efm\u2df7\u2df8\u2e02\u2e05\u6a5dr\u0100;o\u2dfe\u2dff\u6134f\xbb\u2dff\u803b\xaa\u40aa\u803b\xba\u40bagof;\u62b6r;\u6a56lope;\u6a57;\u6a5b\u0180clo\u2e1f\u2e21\u2e27\xf2\u2e01ash\u803b\xf8\u40f8l;\u6298i\u016c\u2e2f\u2e34de\u803b\xf5\u40f5es\u0100;a\u01db\u2e3as;\u6a36ml\u803b\xf6\u40f6bar;\u633d\u0ae1\u2e5e\0\u2e7d\0\u2e80\u2e9d\0\u2ea2\u2eb9\0\0\u2ecb\u0e9c\0\u2f13\0\0\u2f2b\u2fbc\0\u2fc8r\u0200;ast\u0403\u2e67\u2e72\u0e85\u8100\xb6;l\u2e6d\u2e6e\u40b6le\xec\u0403\u0269\u2e78\0\0\u2e7bm;\u6af3;\u6afdy;\u443fr\u0280cimpt\u2e8b\u2e8f\u2e93\u1865\u2e97nt;\u4025od;\u402eil;\u6030enk;\u6031r;\uc000\ud835\udd2d\u0180imo\u2ea8\u2eb0\u2eb4\u0100;v\u2ead\u2eae\u43c6;\u43d5ma\xf4\u0a76ne;\u660e\u0180;tv\u2ebf\u2ec0\u2ec8\u43c0chfork\xbb\u1ffd;\u43d6\u0100au\u2ecf\u2edfn\u0100ck\u2ed5\u2eddk\u0100;h\u21f4\u2edb;\u610e\xf6\u21f4s\u0480;abcdemst\u2ef3\u2ef4\u1908\u2ef9\u2efd\u2f04\u2f06\u2f0a\u2f0e\u402bcir;\u6a23ir;\u6a22\u0100ou\u1d40\u2f02;\u6a25;\u6a72n\u80bb\xb1\u0e9dim;\u6a26wo;\u6a27\u0180ipu\u2f19\u2f20\u2f25ntint;\u6a15f;\uc000\ud835\udd61nd\u803b\xa3\u40a3\u0500;Eaceinosu\u0ec8\u2f3f\u2f41\u2f44\u2f47\u2f81\u2f89\u2f92\u2f7e\u2fb6;\u6ab3p;\u6ab7u\xe5\u0ed9\u0100;c\u0ece\u2f4c\u0300;acens\u0ec8\u2f59\u2f5f\u2f66\u2f68\u2f7eppro\xf8\u2f43urlye\xf1\u0ed9\xf1\u0ece\u0180aes\u2f6f\u2f76\u2f7approx;\u6ab9qq;\u6ab5im;\u62e8i\xed\u0edfme\u0100;s\u2f88\u0eae\u6032\u0180Eas\u2f78\u2f90\u2f7a\xf0\u2f75\u0180dfp\u0eec\u2f99\u2faf\u0180als\u2fa0\u2fa5\u2faalar;\u632eine;\u6312urf;\u6313\u0100;t\u0efb\u2fb4\xef\u0efbrel;\u62b0\u0100ci\u2fc0\u2fc5r;\uc000\ud835\udcc5;\u43c8ncsp;\u6008\u0300fiopsu\u2fda\u22e2\u2fdf\u2fe5\u2feb\u2ff1r;\uc000\ud835\udd2epf;\uc000\ud835\udd62rime;\u6057cr;\uc000\ud835\udcc6\u0180aeo\u2ff8\u3009\u3013t\u0100ei\u2ffe\u3005rnion\xf3\u06b0nt;\u6a16st\u0100;e\u3010\u3011\u403f\xf1\u1f19\xf4\u0f14\u0a80ABHabcdefhilmnoprstux\u3040\u3051\u3055\u3059\u30e0\u310e\u312b\u3147\u3162\u3172\u318e\u3206\u3215\u3224\u3229\u3258\u326e\u3272\u3290\u32b0\u32b7\u0180art\u3047\u304a\u304cr\xf2\u10b3\xf2\u03ddail;\u691car\xf2\u1c65ar;\u6964\u0380cdenqrt\u3068\u3075\u3078\u307f\u308f\u3094\u30cc\u0100eu\u306d\u3071;\uc000\u223d\u0331te;\u4155i\xe3\u116emptyv;\u69b3g\u0200;del\u0fd1\u3089\u308b\u308d;\u6992;\u69a5\xe5\u0fd1uo\u803b\xbb\u40bbr\u0580;abcfhlpstw\u0fdc\u30ac\u30af\u30b7\u30b9\u30bc\u30be\u30c0\u30c3\u30c7\u30cap;\u6975\u0100;f\u0fe0\u30b4s;\u6920;\u6933s;\u691e\xeb\u225d\xf0\u272el;\u6945im;\u6974l;\u61a3;\u619d\u0100ai\u30d1\u30d5il;\u691ao\u0100;n\u30db\u30dc\u6236al\xf3\u0f1e\u0180abr\u30e7\u30ea\u30eer\xf2\u17e5rk;\u6773\u0100ak\u30f3\u30fdc\u0100ek\u30f9\u30fb;\u407d;\u405d\u0100es\u3102\u3104;\u698cl\u0100du\u310a\u310c;\u698e;\u6990\u0200aeuy\u3117\u311c\u3127\u3129ron;\u4159\u0100di\u3121\u3125il;\u4157\xec\u0ff2\xe2\u30fa;\u4440\u0200clqs\u3134\u3137\u313d\u3144a;\u6937dhar;\u6969uo\u0100;r\u020e\u020dh;\u61b3\u0180acg\u314e\u315f\u0f44l\u0200;ips\u0f78\u3158\u315b\u109cn\xe5\u10bbar\xf4\u0fa9t;\u65ad\u0180ilr\u3169\u1023\u316esht;\u697d;\uc000\ud835\udd2f\u0100ao\u3177\u3186r\u0100du\u317d\u317f\xbb\u047b\u0100;l\u1091\u3184;\u696c\u0100;v\u318b\u318c\u43c1;\u43f1\u0180gns\u3195\u31f9\u31fcht\u0300ahlrst\u31a4\u31b0\u31c2\u31d8\u31e4\u31eerrow\u0100;t\u0fdc\u31ada\xe9\u30c8arpoon\u0100du\u31bb\u31bfow\xee\u317ep\xbb\u1092eft\u0100ah\u31ca\u31d0rrow\xf3\u0feaarpoon\xf3\u0551ightarrows;\u61c9quigarro\xf7\u30cbhreetimes;\u62ccg;\u42daingdotse\xf1\u1f32\u0180ahm\u320d\u3210\u3213r\xf2\u0feaa\xf2\u0551;\u600foust\u0100;a\u321e\u321f\u63b1che\xbb\u321fmid;\u6aee\u0200abpt\u3232\u323d\u3240\u3252\u0100nr\u3237\u323ag;\u67edr;\u61fer\xeb\u1003\u0180afl\u3247\u324a\u324er;\u6986;\uc000\ud835\udd63us;\u6a2eimes;\u6a35\u0100ap\u325d\u3267r\u0100;g\u3263\u3264\u4029t;\u6994olint;\u6a12ar\xf2\u31e3\u0200achq\u327b\u3280\u10bc\u3285quo;\u603ar;\uc000\ud835\udcc7\u0100bu\u30fb\u328ao\u0100;r\u0214\u0213\u0180hir\u3297\u329b\u32a0re\xe5\u31f8mes;\u62cai\u0200;efl\u32aa\u1059\u1821\u32ab\u65b9tri;\u69celuhar;\u6968;\u611e\u0d61\u32d5\u32db\u32df\u332c\u3338\u3371\0\u337a\u33a4\0\0\u33ec\u33f0\0\u3428\u3448\u345a\u34ad\u34b1\u34ca\u34f1\0\u3616\0\0\u3633cute;\u415bqu\xef\u27ba\u0500;Eaceinpsy\u11ed\u32f3\u32f5\u32ff\u3302\u330b\u330f\u331f\u3326\u3329;\u6ab4\u01f0\u32fa\0\u32fc;\u6ab8on;\u4161u\xe5\u11fe\u0100;d\u11f3\u3307il;\u415frc;\u415d\u0180Eas\u3316\u3318\u331b;\u6ab6p;\u6abaim;\u62e9olint;\u6a13i\xed\u1204;\u4441ot\u0180;be\u3334\u1d47\u3335\u62c5;\u6a66\u0380Aacmstx\u3346\u334a\u3357\u335b\u335e\u3363\u336drr;\u61d8r\u0100hr\u3350\u3352\xeb\u2228\u0100;o\u0a36\u0a34t\u803b\xa7\u40a7i;\u403bwar;\u6929m\u0100in\u3369\xf0nu\xf3\xf1t;\u6736r\u0100;o\u3376\u2055\uc000\ud835\udd30\u0200acoy\u3382\u3386\u3391\u33a0rp;\u666f\u0100hy\u338b\u338fcy;\u4449;\u4448rt\u026d\u3399\0\0\u339ci\xe4\u1464ara\xec\u2e6f\u803b\xad\u40ad\u0100gm\u33a8\u33b4ma\u0180;fv\u33b1\u33b2\u33b2\u43c3;\u43c2\u0400;deglnpr\u12ab\u33c5\u33c9\u33ce\u33d6\u33de\u33e1\u33e6ot;\u6a6a\u0100;q\u12b1\u12b0\u0100;E\u33d3\u33d4\u6a9e;\u6aa0\u0100;E\u33db\u33dc\u6a9d;\u6a9fe;\u6246lus;\u6a24arr;\u6972ar\xf2\u113d\u0200aeit\u33f8\u3408\u340f\u3417\u0100ls\u33fd\u3404lsetm\xe9\u336ahp;\u6a33parsl;\u69e4\u0100dl\u1463\u3414e;\u6323\u0100;e\u341c\u341d\u6aaa\u0100;s\u3422\u3423\u6aac;\uc000\u2aac\ufe00\u0180flp\u342e\u3433\u3442tcy;\u444c\u0100;b\u3438\u3439\u402f\u0100;a\u343e\u343f\u69c4r;\u633ff;\uc000\ud835\udd64a\u0100dr\u344d\u0402es\u0100;u\u3454\u3455\u6660it\xbb\u3455\u0180csu\u3460\u3479\u349f\u0100au\u3465\u346fp\u0100;s\u1188\u346b;\uc000\u2293\ufe00p\u0100;s\u11b4\u3475;\uc000\u2294\ufe00u\u0100bp\u347f\u348f\u0180;es\u1197\u119c\u3486et\u0100;e\u1197\u348d\xf1\u119d\u0180;es\u11a8\u11ad\u3496et\u0100;e\u11a8\u349d\xf1\u11ae\u0180;af\u117b\u34a6\u05b0r\u0165\u34ab\u05b1\xbb\u117car\xf2\u1148\u0200cemt\u34b9\u34be\u34c2\u34c5r;\uc000\ud835\udcc8tm\xee\xf1i\xec\u3415ar\xe6\u11be\u0100ar\u34ce\u34d5r\u0100;f\u34d4\u17bf\u6606\u0100an\u34da\u34edight\u0100ep\u34e3\u34eapsilo\xee\u1ee0h\xe9\u2eafs\xbb\u2852\u0280bcmnp\u34fb\u355e\u1209\u358b\u358e\u0480;Edemnprs\u350e\u350f\u3511\u3515\u351e\u3523\u352c\u3531\u3536\u6282;\u6ac5ot;\u6abd\u0100;d\u11da\u351aot;\u6ac3ult;\u6ac1\u0100Ee\u3528\u352a;\u6acb;\u628alus;\u6abfarr;\u6979\u0180eiu\u353d\u3552\u3555t\u0180;en\u350e\u3545\u354bq\u0100;q\u11da\u350feq\u0100;q\u352b\u3528m;\u6ac7\u0100bp\u355a\u355c;\u6ad5;\u6ad3c\u0300;acens\u11ed\u356c\u3572\u3579\u357b\u3326ppro\xf8\u32faurlye\xf1\u11fe\xf1\u11f3\u0180aes\u3582\u3588\u331bppro\xf8\u331aq\xf1\u3317g;\u666a\u0680123;Edehlmnps\u35a9\u35ac\u35af\u121c\u35b2\u35b4\u35c0\u35c9\u35d5\u35da\u35df\u35e8\u35ed\u803b\xb9\u40b9\u803b\xb2\u40b2\u803b\xb3\u40b3;\u6ac6\u0100os\u35b9\u35bct;\u6abeub;\u6ad8\u0100;d\u1222\u35c5ot;\u6ac4s\u0100ou\u35cf\u35d2l;\u67c9b;\u6ad7arr;\u697bult;\u6ac2\u0100Ee\u35e4\u35e6;\u6acc;\u628blus;\u6ac0\u0180eiu\u35f4\u3609\u360ct\u0180;en\u121c\u35fc\u3602q\u0100;q\u1222\u35b2eq\u0100;q\u35e7\u35e4m;\u6ac8\u0100bp\u3611\u3613;\u6ad4;\u6ad6\u0180Aan\u361c\u3620\u362drr;\u61d9r\u0100hr\u3626\u3628\xeb\u222e\u0100;o\u0a2b\u0a29war;\u692alig\u803b\xdf\u40df\u0be1\u3651\u365d\u3660\u12ce\u3673\u3679\0\u367e\u36c2\0\0\0\0\0\u36db\u3703\0\u3709\u376c\0\0\0\u3787\u0272\u3656\0\0\u365bget;\u6316;\u43c4r\xeb\u0e5f\u0180aey\u3666\u366b\u3670ron;\u4165dil;\u4163;\u4442lrec;\u6315r;\uc000\ud835\udd31\u0200eiko\u3686\u369d\u36b5\u36bc\u01f2\u368b\0\u3691e\u01004f\u1284\u1281a\u0180;sv\u3698\u3699\u369b\u43b8ym;\u43d1\u0100cn\u36a2\u36b2k\u0100as\u36a8\u36aeppro\xf8\u12c1im\xbb\u12acs\xf0\u129e\u0100as\u36ba\u36ae\xf0\u12c1rn\u803b\xfe\u40fe\u01ec\u031f\u36c6\u22e7es\u8180\xd7;bd\u36cf\u36d0\u36d8\u40d7\u0100;a\u190f\u36d5r;\u6a31;\u6a30\u0180eps\u36e1\u36e3\u3700\xe1\u2a4d\u0200;bcf\u0486\u36ec\u36f0\u36f4ot;\u6336ir;\u6af1\u0100;o\u36f9\u36fc\uc000\ud835\udd65rk;\u6ada\xe1\u3362rime;\u6034\u0180aip\u370f\u3712\u3764d\xe5\u1248\u0380adempst\u3721\u374d\u3740\u3751\u3757\u375c\u375fngle\u0280;dlqr\u3730\u3731\u3736\u3740\u3742\u65b5own\xbb\u1dbbeft\u0100;e\u2800\u373e\xf1\u092e;\u625cight\u0100;e\u32aa\u374b\xf1\u105aot;\u65ecinus;\u6a3alus;\u6a39b;\u69cdime;\u6a3bezium;\u63e2\u0180cht\u3772\u377d\u3781\u0100ry\u3777\u377b;\uc000\ud835\udcc9;\u4446cy;\u445brok;\u4167\u0100io\u378b\u378ex\xf4\u1777head\u0100lr\u3797\u37a0eftarro\xf7\u084fightarrow\xbb\u0f5d\u0900AHabcdfghlmoprstuw\u37d0\u37d3\u37d7\u37e4\u37f0\u37fc\u380e\u381c\u3823\u3834\u3851\u385d\u386b\u38a9\u38cc\u38d2\u38ea\u38f6r\xf2\u03edar;\u6963\u0100cr\u37dc\u37e2ute\u803b\xfa\u40fa\xf2\u1150r\u01e3\u37ea\0\u37edy;\u445eve;\u416d\u0100iy\u37f5\u37farc\u803b\xfb\u40fb;\u4443\u0180abh\u3803\u3806\u380br\xf2\u13adlac;\u4171a\xf2\u13c3\u0100ir\u3813\u3818sht;\u697e;\uc000\ud835\udd32rave\u803b\xf9\u40f9\u0161\u3827\u3831r\u0100lr\u382c\u382e\xbb\u0957\xbb\u1083lk;\u6580\u0100ct\u3839\u384d\u026f\u383f\0\0\u384arn\u0100;e\u3845\u3846\u631cr\xbb\u3846op;\u630fri;\u65f8\u0100al\u3856\u385acr;\u416b\u80bb\xa8\u0349\u0100gp\u3862\u3866on;\u4173f;\uc000\ud835\udd66\u0300adhlsu\u114b\u3878\u387d\u1372\u3891\u38a0own\xe1\u13b3arpoon\u0100lr\u3888\u388cef\xf4\u382digh\xf4\u382fi\u0180;hl\u3899\u389a\u389c\u43c5\xbb\u13faon\xbb\u389aparrows;\u61c8\u0180cit\u38b0\u38c4\u38c8\u026f\u38b6\0\0\u38c1rn\u0100;e\u38bc\u38bd\u631dr\xbb\u38bdop;\u630eng;\u416fri;\u65f9cr;\uc000\ud835\udcca\u0180dir\u38d9\u38dd\u38e2ot;\u62f0lde;\u4169i\u0100;f\u3730\u38e8\xbb\u1813\u0100am\u38ef\u38f2r\xf2\u38a8l\u803b\xfc\u40fcangle;\u69a7\u0780ABDacdeflnoprsz\u391c\u391f\u3929\u392d\u39b5\u39b8\u39bd\u39df\u39e4\u39e8\u39f3\u39f9\u39fd\u3a01\u3a20r\xf2\u03f7ar\u0100;v\u3926\u3927\u6ae8;\u6ae9as\xe8\u03e1\u0100nr\u3932\u3937grt;\u699c\u0380eknprst\u34e3\u3946\u394b\u3952\u395d\u3964\u3996app\xe1\u2415othin\xe7\u1e96\u0180hir\u34eb\u2ec8\u3959op\xf4\u2fb5\u0100;h\u13b7\u3962\xef\u318d\u0100iu\u3969\u396dgm\xe1\u33b3\u0100bp\u3972\u3984setneq\u0100;q\u397d\u3980\uc000\u228a\ufe00;\uc000\u2acb\ufe00setneq\u0100;q\u398f\u3992\uc000\u228b\ufe00;\uc000\u2acc\ufe00\u0100hr\u399b\u399fet\xe1\u369ciangle\u0100lr\u39aa\u39afeft\xbb\u0925ight\xbb\u1051y;\u4432ash\xbb\u1036\u0180elr\u39c4\u39d2\u39d7\u0180;be\u2dea\u39cb\u39cfar;\u62bbq;\u625alip;\u62ee\u0100bt\u39dc\u1468a\xf2\u1469r;\uc000\ud835\udd33tr\xe9\u39aesu\u0100bp\u39ef\u39f1\xbb\u0d1c\xbb\u0d59pf;\uc000\ud835\udd67ro\xf0\u0efbtr\xe9\u39b4\u0100cu\u3a06\u3a0br;\uc000\ud835\udccb\u0100bp\u3a10\u3a18n\u0100Ee\u3980\u3a16\xbb\u397en\u0100Ee\u3992\u3a1e\xbb\u3990igzag;\u699a\u0380cefoprs\u3a36\u3a3b\u3a56\u3a5b\u3a54\u3a61\u3a6airc;\u4175\u0100di\u3a40\u3a51\u0100bg\u3a45\u3a49ar;\u6a5fe\u0100;q\u15fa\u3a4f;\u6259erp;\u6118r;\uc000\ud835\udd34pf;\uc000\ud835\udd68\u0100;e\u1479\u3a66at\xe8\u1479cr;\uc000\ud835\udccc\u0ae3\u178e\u3a87\0\u3a8b\0\u3a90\u3a9b\0\0\u3a9d\u3aa8\u3aab\u3aaf\0\0\u3ac3\u3ace\0\u3ad8\u17dc\u17dftr\xe9\u17d1r;\uc000\ud835\udd35\u0100Aa\u3a94\u3a97r\xf2\u03c3r\xf2\u09f6;\u43be\u0100Aa\u3aa1\u3aa4r\xf2\u03b8r\xf2\u09eba\xf0\u2713is;\u62fb\u0180dpt\u17a4\u3ab5\u3abe\u0100fl\u3aba\u17a9;\uc000\ud835\udd69im\xe5\u17b2\u0100Aa\u3ac7\u3acar\xf2\u03cer\xf2\u0a01\u0100cq\u3ad2\u17b8r;\uc000\ud835\udccd\u0100pt\u17d6\u3adcr\xe9\u17d4\u0400acefiosu\u3af0\u3afd\u3b08\u3b0c\u3b11\u3b15\u3b1b\u3b21c\u0100uy\u3af6\u3afbte\u803b\xfd\u40fd;\u444f\u0100iy\u3b02\u3b06rc;\u4177;\u444bn\u803b\xa5\u40a5r;\uc000\ud835\udd36cy;\u4457pf;\uc000\ud835\udd6acr;\uc000\ud835\udcce\u0100cm\u3b26\u3b29y;\u444el\u803b\xff\u40ff\u0500acdefhiosw\u3b42\u3b48\u3b54\u3b58\u3b64\u3b69\u3b6d\u3b74\u3b7a\u3b80cute;\u417a\u0100ay\u3b4d\u3b52ron;\u417e;\u4437ot;\u417c\u0100et\u3b5d\u3b61tr\xe6\u155fa;\u43b6r;\uc000\ud835\udd37cy;\u4436grarr;\u61ddpf;\uc000\ud835\udd6bcr;\uc000\ud835\udccf\u0100jn\u3b85\u3b87;\u600dj;\u600c'.split("").map(t=>t.charCodeAt(0))),q=new Uint16Array("\u0200aglq\t\x15\x18\x1b\u026d\x0f\0\0\x12p;\u4026os;\u4027t;\u403et;\u403cuot;\u4022".split("").map(t=>t.charCodeAt(0))),B=new Map([[0,65533],[128,8364],[130,8218],[131,402],[132,8222],[133,8230],[134,8224],[135,8225],[136,710],[137,8240],[138,352],[139,8249],[140,338],[142,381],[145,8216],[146,8217],[147,8220],[148,8221],[149,8226],[150,8211],[151,8212],[152,732],[153,8482],[154,353],[155,8250],[156,339],[158,382],[159,376]]),L=null!==(C=String.fromCodePoint)&&void 0!==C?C:function(t){let e="";return t>65535&&(t-=65536,e+=String.fromCharCode(t>>>10&1023|55296),t=56320|1023&t),e+=String.fromCharCode(t),e};!function(t){t[t.NUM=35]="NUM",t[t.SEMI=59]="SEMI",t[t.EQUALS=61]="EQUALS",t[t.ZERO=48]="ZERO",t[t.NINE=57]="NINE",t[t.LOWER_A=97]="LOWER_A",t[t.LOWER_F=102]="LOWER_F",t[t.LOWER_X=120]="LOWER_X",t[t.LOWER_Z=122]="LOWER_Z",t[t.UPPER_A=65]="UPPER_A",t[t.UPPER_F=70]="UPPER_F",t[t.UPPER_Z=90]="UPPER_Z"}(y||(y={}));var I,M,T;function $(t){return t>=y.ZERO&&t<=y.NINE}function R(t){return t>=y.UPPER_A&&t<=y.UPPER_F||t>=y.LOWER_A&&t<=y.LOWER_F}function N(t){return t===y.EQUALS||function(t){return t>=y.UPPER_A&&t<=y.UPPER_Z||t>=y.LOWER_A&&t<=y.LOWER_Z||$(t)}(t)}!function(t){t[t.VALUE_LENGTH=49152]="VALUE_LENGTH",t[t.BRANCH_LENGTH=16256]="BRANCH_LENGTH",t[t.JUMP_TABLE=127]="JUMP_TABLE"}(I||(I={})),function(t){t[t.EntityStart=0]="EntityStart",t[t.NumericStart=1]="NumericStart",t[t.NumericDecimal=2]="NumericDecimal",t[t.NumericHex=3]="NumericHex",t[t.NamedEntity=4]="NamedEntity"}(M||(M={})),function(t){t[t.Legacy=0]="Legacy",t[t.Strict=1]="Strict",t[t.Attribute=2]="Attribute"}(T||(T={}));var P=class{constructor(t,e,r){this.decodeTree=t,this.emitCodePoint=e,this.errors=r,this.state=M.EntityStart,this.consumed=1,this.result=0,this.treeIndex=0,this.excess=1,this.decodeMode=T.Strict}startEntity(t){this.decodeMode=t,this.state=M.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1}write(t,e){switch(this.state){case M.EntityStart:return t.charCodeAt(e)===y.NUM?(this.state=M.NumericStart,this.consumed+=1,this.stateNumericStart(t,e+1)):(this.state=M.NamedEntity,this.stateNamedEntity(t,e));case M.NumericStart:return this.stateNumericStart(t,e);case M.NumericDecimal:return this.stateNumericDecimal(t,e);case M.NumericHex:return this.stateNumericHex(t,e);case M.NamedEntity:return this.stateNamedEntity(t,e)}}stateNumericStart(t,e){return e>=t.length?-1:(32|t.charCodeAt(e))===y.LOWER_X?(this.state=M.NumericHex,this.consumed+=1,this.stateNumericHex(t,e+1)):(this.state=M.NumericDecimal,this.stateNumericDecimal(t,e))}addToNumericResult(t,e,r,n){if(e!==r){const s=r-e;this.result=this.result*Math.pow(n,s)+parseInt(t.substr(e,s),n),this.consumed+=s}}stateNumericHex(t,e){const r=e;for(;e<t.length;){const n=t.charCodeAt(e);if(!$(n)&&!R(n))return this.addToNumericResult(t,r,e,16),this.emitNumericEntity(n,3);e+=1}return this.addToNumericResult(t,r,e,16),-1}stateNumericDecimal(t,e){const r=e;for(;e<t.length;){const n=t.charCodeAt(e);if(!$(n))return this.addToNumericResult(t,r,e,10),this.emitNumericEntity(n,2);e+=1}return this.addToNumericResult(t,r,e,10),-1}emitNumericEntity(t,e){var r;if(this.consumed<=e)return null===(r=this.errors)||void 0===r||r.absenceOfDigitsInNumericCharacterReference(this.consumed),0;if(t===y.SEMI)this.consumed+=1;else if(this.decodeMode===T.Strict)return 0;return this.emitCodePoint(function(t){var e;return t>=55296&&t<=57343||t>1114111?65533:null!==(e=B.get(t))&&void 0!==e?e:t}(this.result),this.consumed),this.errors&&(t!==y.SEMI&&this.errors.missingSemicolonAfterCharacterReference(),this.errors.validateNumericCharacterReference(this.result)),this.consumed}stateNamedEntity(t,e){const{decodeTree:r}=this;let n=r[this.treeIndex],s=(n&I.VALUE_LENGTH)>>14;for(;e<t.length;e++,this.excess++){const i=t.charCodeAt(e);if(this.treeIndex=Z(r,n,this.treeIndex+Math.max(1,s),i),this.treeIndex<0)return 0===this.result||this.decodeMode===T.Attribute&&(0===s||N(i))?0:this.emitNotTerminatedNamedEntity();if(n=r[this.treeIndex],s=(n&I.VALUE_LENGTH)>>14,0!==s){if(i===y.SEMI)return this.emitNamedEntityData(this.treeIndex,s,this.consumed+this.excess);this.decodeMode!==T.Strict&&(this.result=this.treeIndex,this.consumed+=this.excess,this.excess=0)}}return-1}emitNotTerminatedNamedEntity(){var t;const{result:e,decodeTree:r}=this,n=(r[e]&I.VALUE_LENGTH)>>14;return this.emitNamedEntityData(e,n,this.consumed),null===(t=this.errors)||void 0===t||t.missingSemicolonAfterCharacterReference(),this.consumed}emitNamedEntityData(t,e,r){const{decodeTree:n}=this;return this.emitCodePoint(1===e?n[t]&~I.VALUE_LENGTH:n[t+1],r),3===e&&this.emitCodePoint(n[t+2],r),r}end(){var t;switch(this.state){case M.NamedEntity:return 0===this.result||this.decodeMode===T.Attribute&&this.result!==this.treeIndex?0:this.emitNotTerminatedNamedEntity();case M.NumericDecimal:return this.emitNumericEntity(0,2);case M.NumericHex:return this.emitNumericEntity(0,3);case M.NumericStart:return null===(t=this.errors)||void 0===t||t.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case M.EntityStart:return 0}}};function O(t){let e="";const r=new P(t,t=>e+=L(t));return function(t,n){let s=0,i=0;for(;(i=t.indexOf("&",i))>=0;){e+=t.slice(s,i),r.startEntity(n);const o=r.write(t,i+1);if(o<0){s=i+r.end();break}s=i+o,i=0===o?s+1:s}const o=e+t.slice(s);return e="",o}}function Z(t,e,r,n){const s=(e&I.BRANCH_LENGTH)>>7,i=e&I.JUMP_TABLE;if(0===s)return 0!==i&&n===i?r:-1;if(i){const e=n-i;return e<0||e>=s?-1:t[r+e]-1}let o=r,u=o+s-1;for(;o<=u;){const e=o+u>>>1,r=t[e];if(r<n)o=e+1;else{if(!(r>n))return t[e+s];u=e-1}}return-1}var j=O(S);O(q);var U=e({arrayReplaceAt:()=>J,asciiTrim:()=>kt,assign:()=>W,escapeHtml:()=>ct,escapeRE:()=>lt,fromCodePoint:()=>X,has:()=>G,isMdAsciiPunct:()=>mt,isPunctChar:()=>ft,isPunctCharCode:()=>dt,isSpace:()=>ht,isString:()=>H,isValidEntityCode:()=>Q,isWhiteSpace:()=>pt,lib:()=>Dt,normalizeReference:()=>_t,unescapeAll:()=>nt,unescapeMd:()=>rt});function H(t){return"[object String]"===function(t){return Object.prototype.toString.call(t)}(t)}var V=Object.prototype.hasOwnProperty;function G(t,e){return V.call(t,e)}function W(t){return Array.prototype.slice.call(arguments,1).forEach(function(e){if(e){if("object"!=typeof e)throw new TypeError(e+"must be object");Object.keys(e).forEach(function(r){t[r]=e[r]})}}),t}function J(t,e,r){return[].concat(t.slice(0,e),r,t.slice(e+1))}function Q(t){return!(t>=55296&&t<=57343)&&(!(t>=64976&&t<=65007)&&(!!(65535&~t&&65534!=(65535&t))&&(!(t>=0&&t<=8)&&(11!==t&&(!(t>=14&&t<=31)&&(!(t>=127&&t<=159)&&!(t>1114111)))))))}function X(t){if(t>65535){const e=55296+((t-=65536)>>10),r=56320+(1023&t);return String.fromCharCode(e,r)}return String.fromCharCode(t)}var Y=/\\([!"#$%&'()*+,\-./:;<=>?@[\\\]^_`{|}~])/g,K=new RegExp(Y.source+"|"+/&([a-z#][a-z0-9]{1,31});/gi.source,"gi"),tt=/^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))$/i;function et(t,e){if(35===e.charCodeAt(0)&&tt.test(e)){const r="x"===e[1].toLowerCase()?parseInt(e.slice(2),16):parseInt(e.slice(1),10);return Q(r)?X(r):t}const r=function(t,e=T.Legacy){return j(t,e)}(t);return r!==t?r:t}function rt(t){return t.indexOf("\\")<0?t:t.replace(Y,"$1")}function nt(t){return t.indexOf("\\")<0&&t.indexOf("&")<0?t:t.replace(K,function(t,e,r){return e||et(t,r)})}var st=/[&<>"]/,it=/[&<>"]/g,ot={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;"};function ut(t){return ot[t]}function ct(t){return st.test(t)?t.replace(it,ut):t}var at=/[.?*+^$[\]\\(){}|-]/g;function lt(t){return t.replace(at,"\\$&")}function ht(t){switch(t){case 9:case 32:return!0}return!1}function pt(t){if(t>=8192&&t<=8202)return!0;switch(t){case 9:case 10:case 11:case 12:case 13:case 32:case 160:case 5760:case 8239:case 8287:case 12288:return!0}return!1}function ft(t){return x.test(t)||v.test(t)}function dt(t){return ft(X(t))}function mt(t){switch(t){case 33:case 34:case 35:case 36:case 37:case 38:case 39:case 40:case 41:case 42:case 43:case 44:case 45:case 46:case 47:case 58:case 59:case 60:case 61:case 62:case 63:case 64:case 91:case 92:case 93:case 94:case 95:case 96:case 123:case 124:case 125:case 126:return!0;default:return!1}}function _t(t){return t=t.trim().replace(/\s+/g," "),"\u1e7e"==="\u1e9e".toLowerCase()&&(t=t.replace(/\u1e9e/g,"\xdf")),t.toLowerCase().toUpperCase()}function gt(t){return 32===t||9===t||10===t||13===t}function kt(t){let e=0;for(;e<t.length&&gt(t.charCodeAt(e));e++);let r=t.length-1;for(;r>=e&&gt(t.charCodeAt(r));r--);return t.slice(e,r+1)}var Dt={mdurl:E,ucmicro:z};function Ct(t,e,r){let n,s,i,o;const u=t.posMax,c=t.pos;for(t.pos=e+1,n=1;t.pos<u;){if(i=t.src.charCodeAt(t.pos),93===i&&(n--,0===n)){s=!0;break}if(o=t.pos,t.md.inline.skipToken(t),91===i)if(o===t.pos-1)n++;else if(r)return t.pos=c,-1}let a=-1;return s&&(a=t.pos),t.pos=c,a}function yt(t,e,r){let n,s=e;const i={ok:!1,pos:0,str:""};if(60===t.charCodeAt(s)){for(s++;s<r;){if(n=t.charCodeAt(s),10===n)return i;if(60===n)return i;if(62===n)return i.pos=s+1,i.str=nt(t.slice(e+1,s)),i.ok=!0,i;92===n&&s+1<r?s+=2:s++}return i}let o=0;for(;s<r&&(n=t.charCodeAt(s),32!==n)&&!(n<32||127===n);)if(92===n&&s+1<r){if(32===t.charCodeAt(s+1))break;s+=2}else{if(40===n&&(o++,o>32))return i;if(41===n){if(0===o)break;o--}s++}return e===s||0!==o||(i.str=nt(t.slice(e,s)),i.pos=s,i.ok=!0),i}function Et(t,e,r,n){let s,i=e;const o={ok:!1,can_continue:!1,pos:0,str:"",marker:0};if(n)o.str=n.str,o.marker=n.marker;else{if(i>=r)return o;let n=t.charCodeAt(i);if(34!==n&&39!==n&&40!==n)return o;e++,i++,40===n&&(n=41),o.marker=n}for(;i<r;){if(s=t.charCodeAt(i),s===o.marker)return o.pos=i+1,o.str+=nt(t.slice(e,i)),o.ok=!0,o;if(40===s&&41===o.marker)return o;92===s&&i+1<r&&i++,i++}return o.can_continue=!0,o.str+=nt(t.slice(e,i)),o}var At=e({parseLinkDestination:()=>yt,parseLinkLabel:()=>Ct,parseLinkTitle:()=>Et}),bt={};function Ft(){this.rules=W({},bt)}function xt(){this.__rules__=[],this.__cache__=null}function vt(t,e,r){this.type=t,this.tag=e,this.attrs=null,this.map=null,this.nesting=r,this.level=0,this.children=null,this.content="",this.markup="",this.info="",this.meta=null,this.block=!1,this.hidden=!1}function wt(t,e,r){this.src=t,this.env=r,this.tokens=[],this.inlineMode=!1,this.md=e}bt.code_inline=function(t,e,r,n,s){const i=t[e];return"<code"+s.renderAttrs(i)+">"+ct(i.content)+"</code>"},bt.code_block=function(t,e,r,n,s){const i=t[e];return"<pre"+s.renderAttrs(i)+"><code>"+ct(t[e].content)+"</code></pre>\n"},bt.fence=function(t,e,r,n,s){const i=t[e],o=i.info?nt(i.info).trim():"";let u,c="",a="";if(o){const t=o.split(/(\s+)/g);c=t[0],a=t.slice(2).join("")}if(u=r.highlight&&r.highlight(i.content,c,a)||ct(i.content),0===u.indexOf("<pre"))return u+"\n";if(o){const t=i.attrIndex("class"),e=i.attrs?i.attrs.slice():[];t<0?e.push(["class",r.langPrefix+c]):(e[t]=e[t].slice(),e[t][1]+=" "+r.langPrefix+c);const n={attrs:e};return`<pre><code${s.renderAttrs(n)}>${u}</code></pre>\n`}return`<pre><code${s.renderAttrs(i)}>${u}</code></pre>\n`},bt.image=function(t,e,r,n,s){const i=t[e];return i.attrs[i.attrIndex("alt")][1]=s.renderInlineAsText(i.children,r,n),s.renderToken(t,e,r)},bt.hardbreak=function(t,e,r){return r.xhtmlOut?"<br />\n":"<br>\n"},bt.softbreak=function(t,e,r){return r.breaks?r.xhtmlOut?"<br />\n":"<br>\n":"\n"},bt.text=function(t,e){return ct(t[e].content)},bt.html_block=function(t,e){return t[e].content},bt.html_inline=function(t,e){return t[e].content},Ft.prototype.renderAttrs=function(t){let e,r,n;if(!t.attrs)return"";for(n="",e=0,r=t.attrs.length;e<r;e++)n+=" "+ct(t.attrs[e][0])+'="'+ct(t.attrs[e][1])+'"';return n},Ft.prototype.renderToken=function(t,e,r){const n=t[e];let s="";if(n.hidden)return"";n.block&&-1!==n.nesting&&e&&t[e-1].hidden&&(s+="\n"),s+=(-1===n.nesting?"</":"<")+n.tag,s+=this.renderAttrs(n),0===n.nesting&&r.xhtmlOut&&(s+=" /");let i=!1;if(n.block&&(i=!0,1===n.nesting&&e+1<t.length)){const r=t[e+1];("inline"===r.type||r.hidden||-1===r.nesting&&r.tag===n.tag)&&(i=!1)}return s+=i?">\n":">",s},Ft.prototype.renderInline=function(t,e,r){let n="";const s=this.rules;for(let i=0,o=t.length;i<o;i++){const o=t[i].type;void 0!==s[o]?n+=s[o](t,i,e,r,this):n+=this.renderToken(t,i,e)}return n},Ft.prototype.renderInlineAsText=function(t,e,r){let n="";for(let s=0,i=t.length;s<i;s++)switch(t[s].type){case"text":case"html_inline":case"html_block":n+=t[s].content;break;case"image":n+=this.renderInlineAsText(t[s].children,e,r);break;case"softbreak":case"hardbreak":n+="\n"}return n},Ft.prototype.render=function(t,e,r){let n="";const s=this.rules;for(let i=0,o=t.length;i<o;i++){const o=t[i].type;"inline"===o?n+=this.renderInline(t[i].children,e,r):void 0!==s[o]?n+=s[o](t,i,e,r,this):n+=this.renderToken(t,i,e,r)}return n},xt.prototype.__find__=function(t){for(let e=0;e<this.__rules__.length;e++)if(this.__rules__[e].name===t)return e;return-1},xt.prototype.__compile__=function(){const t=this,e=[""];t.__rules__.forEach(function(t){t.enabled&&t.alt.forEach(function(t){e.indexOf(t)<0&&e.push(t)})}),t.__cache__={},e.forEach(function(e){t.__cache__[e]=[],t.__rules__.forEach(function(r){r.enabled&&(e&&r.alt.indexOf(e)<0||t.__cache__[e].push(r.fn))})})},xt.prototype.at=function(t,e,r){const n=this.__find__(t),s=r||{};if(-1===n)throw new Error("Parser rule not found: "+t);this.__rules__[n].fn=e,this.__rules__[n].alt=s.alt||[],this.__cache__=null},xt.prototype.before=function(t,e,r,n){const s=this.__find__(t),i=n||{};if(-1===s)throw new Error("Parser rule not found: "+t);this.__rules__.splice(s,0,{name:e,enabled:!0,fn:r,alt:i.alt||[]}),this.__cache__=null},xt.prototype.after=function(t,e,r,n){const s=this.__find__(t),i=n||{};if(-1===s)throw new Error("Parser rule not found: "+t);this.__rules__.splice(s+1,0,{name:e,enabled:!0,fn:r,alt:i.alt||[]}),this.__cache__=null},xt.prototype.push=function(t,e,r){const n=r||{};this.__rules__.push({name:t,enabled:!0,fn:e,alt:n.alt||[]}),this.__cache__=null},xt.prototype.enable=function(t,e){Array.isArray(t)||(t=[t]);const r=[];return t.forEach(function(t){const n=this.__find__(t);if(n<0){if(e)return;throw new Error("Rules manager: invalid rule name "+t)}this.__rules__[n].enabled=!0,r.push(t)},this),this.__cache__=null,r},xt.prototype.enableOnly=function(t,e){Array.isArray(t)||(t=[t]),this.__rules__.forEach(function(t){t.enabled=!1}),this.enable(t,e)},xt.prototype.disable=function(t,e){Array.isArray(t)||(t=[t]);const r=[];return t.forEach(function(t){const n=this.__find__(t);if(n<0){if(e)return;throw new Error("Rules manager: invalid rule name "+t)}this.__rules__[n].enabled=!1,r.push(t)},this),this.__cache__=null,r},xt.prototype.getRules=function(t){return null===this.__cache__&&this.__compile__(),this.__cache__[t]||[]},vt.prototype.attrIndex=function(t){if(!this.attrs)return-1;const e=this.attrs;for(let r=0,n=e.length;r<n;r++)if(e[r][0]===t)return r;return-1},vt.prototype.attrPush=function(t){this.attrs?this.attrs.push(t):this.attrs=[t]},vt.prototype.attrSet=function(t,e){const r=this.attrIndex(t),n=[t,e];r<0?this.attrPush(n):this.attrs[r]=n},vt.prototype.attrGet=function(t){const e=this.attrIndex(t);let r=null;return e>=0&&(r=this.attrs[e][1]),r},vt.prototype.attrJoin=function(t,e){const r=this.attrIndex(t);r<0?this.attrPush([t,e]):this.attrs[r][1]=this.attrs[r][1]+" "+e},wt.prototype.Token=vt;var zt=/\r\n?|\n/g,St=/\0/g;function qt(t){return/^<a[>\s]/i.test(t)}function Bt(t){return/^<\/a\s*>/i.test(t)}var Lt=/\+-|\.\.|\?\?\?\?|!!!!|,,|--/,It=/\((c|tm|r)\)/i,Mt=/\((c|tm|r)\)/gi,Tt={c:"\xa9",r:"\xae",tm:"\u2122"};function $t(t,e){return Tt[e.toLowerCase()]}function Rt(t){let e=0;for(let r=t.length-1;r>=0;r--){const n=t[r];"text"!==n.type||e||(n.content=n.content.replace(Mt,$t)),"link_open"===n.type&&"auto"===n.info&&e--,"link_close"===n.type&&"auto"===n.info&&e++}}function Nt(t){let e=0;for(let r=t.length-1;r>=0;r--){const n=t[r];"text"!==n.type||e||Lt.test(n.content)&&(n.content=n.content.replace(/\+-/g,"\xb1").replace(/\.{2,}/g,"\u2026").replace(/([?!])\u2026/g,"$1..").replace(/([?!]){4,}/g,"$1$1$1").replace(/,{2,}/g,",").replace(/(^|[^-])---(?=[^-]|$)/gm,"$1\u2014").replace(/(^|\s)--(?=\s|$)/gm,"$1\u2013").replace(/(^|[^-\s])--(?=[^-\s]|$)/gm,"$1\u2013")),"link_open"===n.type&&"auto"===n.info&&e--,"link_close"===n.type&&"auto"===n.info&&e++}}var Pt=/['"]/,Ot=/['"]/g;function Zt(t,e,r,n){t[e]||(t[e]=[]),t[e].push({pos:r,ch:n})}function jt(t,e){let r;const n=[],s={};for(let i=0;i<t.length;i++){const o=t[i],u=t[i].level;for(r=n.length-1;r>=0&&!(n[r].level<=u);r--);if(n.length=r+1,"text"!==o.type)continue;const c=o.content;let a=0;const l=c.length;t:for(;a<l;){Ot.lastIndex=a;const o=Ot.exec(c);if(!o)break;let h=!0,p=!0;a=o.index+1;const f="'"===o[0];let d=32;if(o.index-1>=0)d=c.charCodeAt(o.index-1);else for(r=i-1;r>=0&&("softbreak"!==t[r].type&&"hardbreak"!==t[r].type);r--)if(t[r].content){d=t[r].content.charCodeAt(t[r].content.length-1);break}let m=32;if(a<l)m=c.charCodeAt(a);else for(r=i+1;r<t.length&&("softbreak"!==t[r].type&&"hardbreak"!==t[r].type);r++)if(t[r].content){m=t[r].content.charCodeAt(0);break}const _=mt(d)||dt(d),g=mt(m)||dt(m),k=pt(d),D=pt(m);if(D?h=!1:g&&(k||_||(h=!1)),k?p=!1:_&&(D||g||(p=!1)),34===m&&'"'===o[0]&&d>=48&&d<=57&&(p=h=!1),h&&p&&(h=_,p=g),h||p){if(p)for(r=n.length-1;r>=0;r--){let t=n[r];if(n[r].level<u)break;if(t.single===f&&n[r].level===u){let u,c;t=n[r],f?(u=e.md.options.quotes[2],c=e.md.options.quotes[3]):(u=e.md.options.quotes[0],c=e.md.options.quotes[1]),Zt(s,i,o.index,c),Zt(s,t.token,t.pos,u),n.length=r;continue t}}h?n.push({token:i,pos:o.index,single:f,level:u}):p&&f&&Zt(s,i,o.index,"\u2019")}else f&&Zt(s,i,o.index,"\u2019")}}Object.keys(s).forEach(function(e){t[e].content=function(t,e){let r="",n=0;e.sort((t,e)=>t.pos-e.pos);for(let s=0;s<e.length;s++){const i=e[s];r+=t.slice(n,i.pos)+i.ch,n=i.pos+1}return r+t.slice(n)}(t[e].content,s[e])})}var Ut=[["normalize",function(t){let e;e=t.src.replace(zt,"\n"),e=e.replace(St,"\ufffd"),t.src=e}],["block",function(t){let e;t.inlineMode?(e=new t.Token("inline","",0),e.content=t.src,e.map=[0,1],e.children=[],t.tokens.push(e)):t.md.block.parse(t.src,t.md,t.env,t.tokens)}],["inline",function(t){const e=t.tokens;for(let r=0,n=e.length;r<n;r++){const n=e[r];"inline"===n.type&&t.md.inline.parse(n.content,t.md,t.env,n.children)}}],["linkify",function(t){const e=t.tokens;if(t.md.options.linkify)for(let r=0,n=e.length;r<n;r++){if("inline"!==e[r].type||!t.md.linkify.pretest(e[r].content))continue;let n=e[r].children,s=0;for(let i=n.length-1;i>=0;i--){const o=n[i];if("link_close"!==o.type){if("html_inline"===o.type&&(qt(o.content)&&s>0&&s--,Bt(o.content)&&s++),!(s>0)&&"text"===o.type&&t.md.linkify.test(o.content)){const s=o.content;let u=t.md.linkify.match(s);const c=[];let a=o.level,l=0;u.length>0&&0===u[0].index&&i>0&&"text_special"===n[i-1].type&&(u=u.slice(1));for(let e=0;e<u.length;e++){const r=u[e].url,n=t.md.normalizeLink(r);if(!t.md.validateLink(n))continue;let i=u[e].text;i=u[e].schema?"mailto:"!==u[e].schema||/^mailto:/i.test(i)?t.md.normalizeLinkText(i):t.md.normalizeLinkText("mailto:"+i).replace(/^mailto:/,""):t.md.normalizeLinkText("http://"+i).replace(/^http:\/\//,"");const o=u[e].index;if(o>l){const e=new t.Token("text","",0);e.content=s.slice(l,o),e.level=a,c.push(e)}const h=new t.Token("link_open","a",1);h.attrs=[["href",n]],h.level=a++,h.markup="linkify",h.info="auto",c.push(h);const p=new t.Token("text","",0);p.content=i,p.level=a,c.push(p);const f=new t.Token("link_close","a",-1);f.level=--a,f.markup="linkify",f.info="auto",c.push(f),l=u[e].lastIndex}if(l<s.length){const e=new t.Token("text","",0);e.content=s.slice(l),e.level=a,c.push(e)}e[r].children=n=J(n,i,c)}}else for(i--;n[i].level!==o.level&&"link_open"!==n[i].type;)i--}}}],["replacements",function(t){let e;if(t.md.options.typographer)for(e=t.tokens.length-1;e>=0;e--)"inline"===t.tokens[e].type&&(It.test(t.tokens[e].content)&&Rt(t.tokens[e].children),Lt.test(t.tokens[e].content)&&Nt(t.tokens[e].children))}],["smartquotes",function(t){if(t.md.options.typographer)for(let e=t.tokens.length-1;e>=0;e--)"inline"===t.tokens[e].type&&Pt.test(t.tokens[e].content)&&jt(t.tokens[e].children,t)}],["text_join",function(t){let e,r;const n=t.tokens,s=n.length;for(let i=0;i<s;i++){if("inline"!==n[i].type)continue;const t=n[i].children,s=t.length;for(e=0;e<s;e++)"text_special"===t[e].type&&(t[e].type="text");for(e=r=0;e<s;e++)"text"===t[e].type&&e+1<s&&"text"===t[e+1].type?t[e+1].content=t[e].content+t[e+1].content:(e!==r&&(t[r]=t[e]),r++);e!==r&&(t.length=r)}}]];function Ht(){this.ruler=new xt;for(let t=0;t<Ut.length;t++)this.ruler.push(Ut[t][0],Ut[t][1])}function Vt(t,e,r,n){this.src=t,this.md=e,this.env=r,this.tokens=n,this.bMarks=[],this.eMarks=[],this.tShift=[],this.sCount=[],this.bsCount=[],this.blkIndent=0,this.line=0,this.lineMax=0,this.tight=!1,this.ddIndent=-1,this.listIndent=-1,this.parentType="root",this.level=0;const s=this.src;for(let i=0,o=0,u=0,c=0,a=s.length,l=!1;o<a;o++){const t=s.charCodeAt(o);if(!l){if(ht(t)){u++,9===t?c+=4-c%4:c++;continue}l=!0}10!==t&&o!==a-1||(10!==t&&o++,this.bMarks.push(i),this.eMarks.push(o),this.tShift.push(u),this.sCount.push(c),this.bsCount.push(0),l=!1,u=0,c=0,i=o+1)}this.bMarks.push(s.length),this.eMarks.push(s.length),this.tShift.push(0),this.sCount.push(0),this.bsCount.push(0),this.lineMax=this.bMarks.length-1}Ht.prototype.process=function(t){const e=this.ruler.getRules("");for(let r=0,n=e.length;r<n;r++)e[r](t)},Ht.prototype.State=wt,Vt.prototype.push=function(t,e,r){const n=new vt(t,e,r);return n.block=!0,r<0&&this.level--,n.level=this.level,r>0&&this.level++,this.tokens.push(n),n},Vt.prototype.isEmpty=function(t){return this.bMarks[t]+this.tShift[t]>=this.eMarks[t]},Vt.prototype.skipEmptyLines=function(t){for(let e=this.lineMax;t<e&&!(this.bMarks[t]+this.tShift[t]<this.eMarks[t]);t++);return t},Vt.prototype.skipSpaces=function(t){for(let e=this.src.length;t<e&&ht(this.src.charCodeAt(t));t++);return t},Vt.prototype.skipSpacesBack=function(t,e){if(t<=e)return t;for(;t>e;)if(!ht(this.src.charCodeAt(--t)))return t+1;return t},Vt.prototype.skipChars=function(t,e){for(let r=this.src.length;t<r&&this.src.charCodeAt(t)===e;t++);return t},Vt.prototype.skipCharsBack=function(t,e,r){if(t<=r)return t;for(;t>r;)if(e!==this.src.charCodeAt(--t))return t+1;return t},Vt.prototype.getLines=function(t,e,r,n){if(t>=e)return"";const s=new Array(e-t);for(let i=0,o=t;o<e;o++,i++){let t=0;const u=this.bMarks[o];let c,a=u;for(c=o+1<e||n?this.eMarks[o]+1:this.eMarks[o];a<c&&t<r;){const e=this.src.charCodeAt(a);if(ht(e))9===e?t+=4-(t+this.bsCount[o])%4:t++;else{if(!(a-u<this.tShift[o]))break;t++}a++}s[i]=t>r?new Array(t-r+1).join(" ")+this.src.slice(a,c):this.src.slice(a,c)}return s.join("")},Vt.prototype.Token=vt;function Gt(t,e){const r=t.bMarks[e]+t.tShift[e],n=t.eMarks[e];return t.src.slice(r,n)}function Wt(t){const e=[],r=t.length;let n=0,s=t.charCodeAt(n),i=!1,o=0,u="";for(;n<r;)124===s&&(i?(u+=t.substring(o,n-1),o=n):(e.push(u+t.substring(o,n)),u="",o=n+1)),i=92===s,n++,s=t.charCodeAt(n);return e.push(u+t.substring(o)),e}function Jt(t,e){const r=t.eMarks[e];let n=t.bMarks[e]+t.tShift[e];const s=t.src.charCodeAt(n++);return 42!==s&&45!==s&&43!==s||n<r&&!ht(t.src.charCodeAt(n))?-1:n}function Qt(t,e){const r=t.bMarks[e]+t.tShift[e],n=t.eMarks[e];let s=r;if(s+1>=n)return-1;let i=t.src.charCodeAt(s++);if(i<48||i>57)return-1;for(;;){if(s>=n)return-1;if(i=t.src.charCodeAt(s++),!(i>=48&&i<=57)){if(41===i||46===i)break;return-1}if(s-r>=10)return-1}return s<n&&(i=t.src.charCodeAt(s),!ht(i))?-1:s}var Xt=new RegExp("^(?:<[A-Za-z][A-Za-z0-9\\-]*(?:\\s+[a-zA-Z_:][a-zA-Z0-9:._-]*(?:\\s*=\\s*(?:[^\"'=<>`\\x00-\\x20]+|'[^']*'|\"[^\"]*\"))?)*\\s*\\/?>|<\\/[A-Za-z][A-Za-z0-9\\-]*\\s*>|\x3c!---?>|\x3c!--(?:[^-]|-[^-]|--[^>])*--\x3e|<[?][\\s\\S]*?[?]>|<![A-Za-z][^>]*>|<!\\[CDATA\\[[\\s\\S]*?\\]\\]>)"),Yt=new RegExp("^(?:<[A-Za-z][A-Za-z0-9\\-]*(?:\\s+[a-zA-Z_:][a-zA-Z0-9:._-]*(?:\\s*=\\s*(?:[^\"'=<>`\\x00-\\x20]+|'[^']*'|\"[^\"]*\"))?)*\\s*\\/?>|<\\/[A-Za-z][A-Za-z0-9\\-]*\\s*>)"),Kt=[[/^<(script|pre|style|textarea)(?=(\s|>|$))/i,/<\/(script|pre|style|textarea)>/i,!0],[/^<!--/,/-->/,!0],[/^<\?/,/\?>/,!0],[/^<![A-Z]/,/>/,!0],[/^<!\[CDATA\[/,/\]\]>/,!0],[new RegExp("^</?("+["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","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","search","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"].join("|")+")(?=(\\s|/?>|$))","i"),/^$/,!0],[new RegExp(Yt.source+"\\s*$"),/^$/,!1]];var te=[["table",function(t,e,r,n){if(e+2>r)return!1;let s=e+1;if(t.sCount[s]<t.blkIndent)return!1;if(t.sCount[s]-t.blkIndent>=4)return!1;let i=t.bMarks[s]+t.tShift[s];if(i>=t.eMarks[s])return!1;const o=t.src.charCodeAt(i++);if(124!==o&&45!==o&&58!==o)return!1;if(i>=t.eMarks[s])return!1;const u=t.src.charCodeAt(i++);if(124!==u&&45!==u&&58!==u&&!ht(u))return!1;if(45===o&&ht(u))return!1;for(;i<t.eMarks[s];){const e=t.src.charCodeAt(i);if(124!==e&&45!==e&&58!==e&&!ht(e))return!1;i++}let c=Gt(t,e+1),a=c.split("|");const l=[];for(let g=0;g<a.length;g++){const t=a[g].trim();if(!t){if(0===g||g===a.length-1)continue;return!1}if(!/^:?-+:?$/.test(t))return!1;58===t.charCodeAt(t.length-1)?l.push(58===t.charCodeAt(0)?"center":"right"):58===t.charCodeAt(0)?l.push("left"):l.push("")}if(c=Gt(t,e).trim(),-1===c.indexOf("|"))return!1;if(t.sCount[e]-t.blkIndent>=4)return!1;a=Wt(c),a.length&&""===a[0]&&a.shift(),a.length&&""===a[a.length-1]&&a.pop();const h=a.length;if(0===h||h!==l.length)return!1;if(n)return!0;const p=t.parentType;t.parentType="table";const f=t.md.block.ruler.getRules("blockquote"),d=[e,0];t.push("table_open","table",1).map=d,t.push("thead_open","thead",1).map=[e,e+1],t.push("tr_open","tr",1).map=[e,e+1];for(let g=0;g<a.length;g++){const e=t.push("th_open","th",1);l[g]&&(e.attrs=[["style","text-align:"+l[g]]]);const r=t.push("inline","",0);r.content=a[g].trim(),r.children=[],t.push("th_close","th",-1)}let m;t.push("tr_close","tr",-1),t.push("thead_close","thead",-1);let _=0;for(s=e+2;s<r&&!(t.sCount[s]<t.blkIndent);s++){let n=!1;for(let e=0,i=f.length;e<i;e++)if(f[e](t,s,r,!0)){n=!0;break}if(n)break;if(c=Gt(t,s).trim(),!c)break;if(t.sCount[s]-t.blkIndent>=4)break;if(a=Wt(c),a.length&&""===a[0]&&a.shift(),a.length&&""===a[a.length-1]&&a.pop(),_+=h-a.length,_>65536)break;if(s===e+2){t.push("tbody_open","tbody",1).map=m=[e+2,0]}t.push("tr_open","tr",1).map=[s,s+1];for(let e=0;e<h;e++){const r=t.push("td_open","td",1);l[e]&&(r.attrs=[["style","text-align:"+l[e]]]);const n=t.push("inline","",0);n.content=a[e]?a[e].trim():"",n.children=[],t.push("td_close","td",-1)}t.push("tr_close","tr",-1)}return m&&(t.push("tbody_close","tbody",-1),m[1]=s),t.push("table_close","table",-1),d[1]=s,t.parentType=p,t.line=s,!0},["paragraph","reference"]],["code",function(t,e,r){if(t.sCount[e]-t.blkIndent<4)return!1;let n=e+1,s=n;for(;n<r;)if(t.isEmpty(n))n++;else{if(!(t.sCount[n]-t.blkIndent>=4))break;n++,s=n}t.line=s;const i=t.push("code_block","code",0);return i.content=t.getLines(e,s,4+t.blkIndent,!1)+"\n",i.map=[e,t.line],!0}],["fence",function(t,e,r,n){let s=t.bMarks[e]+t.tShift[e],i=t.eMarks[e];if(t.sCount[e]-t.blkIndent>=4)return!1;if(s+3>i)return!1;const o=t.src.charCodeAt(s);if(126!==o&&96!==o)return!1;let u=s;s=t.skipChars(s,o);let c=s-u;if(c<3)return!1;const a=t.src.slice(u,s),l=t.src.slice(s,i);if(96===o&&l.indexOf(String.fromCharCode(o))>=0)return!1;if(n)return!0;let h=e,p=!1;for(;(h++,!(h>=r))&&(s=u=t.bMarks[h]+t.tShift[h],i=t.eMarks[h],!(s<i&&t.sCount[h]<t.blkIndent));)if(t.src.charCodeAt(s)===o&&!(t.sCount[h]-t.blkIndent>=4||(s=t.skipChars(s,o),s-u<c||(s=t.skipSpaces(s),s<i)))){p=!0;break}c=t.sCount[e],t.line=h+(p?1:0);const f=t.push("fence","code",0);return f.info=l,f.content=t.getLines(e+1,h,c,!0),f.markup=a,f.map=[e,t.line],!0},["paragraph","reference","blockquote","list"]],["blockquote",function(t,e,r,n){let s=t.bMarks[e]+t.tShift[e],i=t.eMarks[e];const o=t.lineMax;if(t.sCount[e]-t.blkIndent>=4)return!1;if(62!==t.src.charCodeAt(s))return!1;if(n)return!0;const u=[],c=[],a=[],l=[],h=t.md.block.ruler.getRules("blockquote"),p=t.parentType;t.parentType="blockquote";let f,d=!1;for(f=e;f<r;f++){const e=t.sCount[f]<t.blkIndent;if(s=t.bMarks[f]+t.tShift[f],i=t.eMarks[f],s>=i)break;if(62===t.src.charCodeAt(s++)&&!e){let e,r,n=t.sCount[f]+1;32===t.src.charCodeAt(s)?(s++,n++,r=!1,e=!0):9===t.src.charCodeAt(s)?(e=!0,(t.bsCount[f]+n)%4==3?(s++,n++,r=!1):r=!0):e=!1;let o=n;for(u.push(t.bMarks[f]),t.bMarks[f]=s;s<i;){const e=t.src.charCodeAt(s);if(!ht(e))break;9===e?o+=4-(o+t.bsCount[f]+(r?1:0))%4:o++,s++}d=s>=i,c.push(t.bsCount[f]),t.bsCount[f]=t.sCount[f]+1+(e?1:0),a.push(t.sCount[f]),t.sCount[f]=o-n,l.push(t.tShift[f]),t.tShift[f]=s-t.bMarks[f];continue}if(d)break;let n=!1;for(let s=0,i=h.length;s<i;s++)if(h[s](t,f,r,!0)){n=!0;break}if(n){t.lineMax=f,0!==t.blkIndent&&(u.push(t.bMarks[f]),c.push(t.bsCount[f]),l.push(t.tShift[f]),a.push(t.sCount[f]),t.sCount[f]-=t.blkIndent);break}u.push(t.bMarks[f]),c.push(t.bsCount[f]),l.push(t.tShift[f]),a.push(t.sCount[f]),t.sCount[f]=-1}const m=t.blkIndent;t.blkIndent=0;const _=t.push("blockquote_open","blockquote",1);_.markup=">";const g=[e,0];_.map=g,t.md.block.tokenize(t,e,f),t.push("blockquote_close","blockquote",-1).markup=">",t.lineMax=o,t.parentType=p,g[1]=t.line;for(let k=0;k<l.length;k++)t.bMarks[k+e]=u[k],t.tShift[k+e]=l[k],t.sCount[k+e]=a[k],t.bsCount[k+e]=c[k];return t.blkIndent=m,!0},["paragraph","reference","blockquote","list"]],["hr",function(t,e,r,n){const s=t.eMarks[e];if(t.sCount[e]-t.blkIndent>=4)return!1;let i=t.bMarks[e]+t.tShift[e];const o=t.src.charCodeAt(i++);if(42!==o&&45!==o&&95!==o)return!1;let u=1;for(;i<s;){const e=t.src.charCodeAt(i++);if(e!==o&&!ht(e))return!1;e===o&&u++}if(u<3)return!1;if(n)return!0;t.line=e+1;const c=t.push("hr","hr",0);return c.map=[e,t.line],c.markup=Array(u+1).join(String.fromCharCode(o)),!0},["paragraph","reference","blockquote","list"]],["list",function(t,e,r,n){let s,i,o,u,c=e,a=!0;if(t.sCount[c]-t.blkIndent>=4)return!1;if(t.listIndent>=0&&t.sCount[c]-t.listIndent>=4&&t.sCount[c]<t.blkIndent)return!1;let l,h,p,f=!1;if(n&&"paragraph"===t.parentType&&t.sCount[c]>=t.blkIndent&&(f=!0),(p=Qt(t,c))>=0){if(l=!0,o=t.bMarks[c]+t.tShift[c],h=Number(t.src.slice(o,p-1)),f&&1!==h)return!1}else{if(!((p=Jt(t,c))>=0))return!1;l=!1}if(f&&t.skipSpaces(p)>=t.eMarks[c])return!1;if(n)return!0;const d=t.src.charCodeAt(p-1),m=t.tokens.length;l?(u=t.push("ordered_list_open","ol",1),1!==h&&(u.attrs=[["start",h]])):u=t.push("bullet_list_open","ul",1);const _=[c,0];u.map=_,u.markup=String.fromCharCode(d);let g=!1;const k=t.md.block.ruler.getRules("list"),D=t.parentType;for(t.parentType="list";c<r;){i=p,s=t.eMarks[c];const e=t.sCount[c]+p-(t.bMarks[c]+t.tShift[c]);let n=e;for(;i<s;){const e=t.src.charCodeAt(i);if(9===e)n+=4-(n+t.bsCount[c])%4;else{if(32!==e)break;n++}i++}const h=i;let f;f=h>=s?1:n-e,f>4&&(f=1);const m=e+f;u=t.push("list_item_open","li",1),u.markup=String.fromCharCode(d);const _=[c,0];u.map=_,l&&(u.info=t.src.slice(o,p-1));const D=t.tight,C=t.tShift[c],y=t.sCount[c],E=t.listIndent;if(t.listIndent=t.blkIndent,t.blkIndent=m,t.tight=!0,t.tShift[c]=h-t.bMarks[c],t.sCount[c]=n,h>=s&&t.isEmpty(c+1)?t.line=Math.min(t.line+2,r):t.md.block.tokenize(t,c,r,!0),t.tight&&!g||(a=!1),g=t.line-c>1&&t.isEmpty(t.line-1),t.blkIndent=t.listIndent,t.listIndent=E,t.tShift[c]=C,t.sCount[c]=y,t.tight=D,u=t.push("list_item_close","li",-1),u.markup=String.fromCharCode(d),c=t.line,_[1]=c,c>=r)break;if(t.sCount[c]<t.blkIndent)break;if(t.sCount[c]-t.blkIndent>=4)break;let A=!1;for(let s=0,i=k.length;s<i;s++)if(k[s](t,c,r,!0)){A=!0;break}if(A)break;if(l){if(p=Qt(t,c),p<0)break;o=t.bMarks[c]+t.tShift[c]}else if(p=Jt(t,c),p<0)break;if(d!==t.src.charCodeAt(p-1))break}return u=l?t.push("ordered_list_close","ol",-1):t.push("bullet_list_close","ul",-1),u.markup=String.fromCharCode(d),_[1]=c,t.line=c,t.parentType=D,a&&function(t,e){const r=t.level+2;for(let n=e+2,s=t.tokens.length-2;n<s;n++)t.tokens[n].level===r&&"paragraph_open"===t.tokens[n].type&&(t.tokens[n+2].hidden=!0,t.tokens[n].hidden=!0,n+=2)}(t,m),!0},["paragraph","reference","blockquote"]],["reference",function(t,e,r,n){let s=t.bMarks[e]+t.tShift[e],i=t.eMarks[e],o=e+1;if(t.sCount[e]-t.blkIndent>=4)return!1;if(91!==t.src.charCodeAt(s))return!1;function u(e){const r=t.lineMax;if(e>=r||t.isEmpty(e))return null;let n=!1;if(t.sCount[e]-t.blkIndent>3&&(n=!0),t.sCount[e]<0&&(n=!0),!n){const n=t.md.block.ruler.getRules("reference"),s=t.parentType;t.parentType="reference";let i=!1;for(let o=0,u=n.length;o<u;o++)if(n[o](t,e,r,!0)){i=!0;break}if(t.parentType=s,i)return null}const s=t.bMarks[e]+t.tShift[e],i=t.eMarks[e];return t.src.slice(s,i+1)}let c=t.src.slice(s,i+1);i=c.length;let a=-1;for(s=1;s<i;s++){const t=c.charCodeAt(s);if(91===t)return!1;if(93===t){a=s;break}if(10===t){const t=u(o);null!==t&&(c+=t,i=c.length,o++)}else if(92===t&&(s++,s<i&&10===c.charCodeAt(s))){const t=u(o);null!==t&&(c+=t,i=c.length,o++)}}if(a<0||58!==c.charCodeAt(a+1))return!1;for(s=a+2;s<i;s++){const t=c.charCodeAt(s);if(10===t){const t=u(o);null!==t&&(c+=t,i=c.length,o++)}else if(!ht(t))break}const l=t.md.helpers.parseLinkDestination(c,s,i);if(!l.ok)return!1;const h=t.md.normalizeLink(l.str);if(!t.md.validateLink(h))return!1;s=l.pos;const p=s,f=o,d=s;for(;s<i;s++){const t=c.charCodeAt(s);if(10===t){const t=u(o);null!==t&&(c+=t,i=c.length,o++)}else if(!ht(t))break}let m,_=t.md.helpers.parseLinkTitle(c,s,i);for(;_.can_continue;){const e=u(o);if(null===e)break;c+=e,s=i,i=c.length,o++,_=t.md.helpers.parseLinkTitle(c,s,i,_)}for(s<i&&d!==s&&_.ok?(m=_.str,s=_.pos):(m="",s=p,o=f);s<i&&ht(c.charCodeAt(s));)s++;if(s<i&&10!==c.charCodeAt(s)&&m)for(m="",s=p,o=f;s<i&&ht(c.charCodeAt(s));)s++;if(s<i&&10!==c.charCodeAt(s))return!1;const g=_t(c.slice(1,a));return!!g&&(n||(void 0===t.env.references&&(t.env.references={}),void 0===t.env.references[g]&&(t.env.references[g]={title:m,href:h}),t.line=o),!0)}],["html_block",function(t,e,r,n){let s=t.bMarks[e]+t.tShift[e],i=t.eMarks[e];if(t.sCount[e]-t.blkIndent>=4)return!1;if(!t.md.options.html)return!1;if(60!==t.src.charCodeAt(s))return!1;let o=t.src.slice(s,i),u=0;for(;u<Kt.length&&!Kt[u][0].test(o);u++);if(u===Kt.length)return!1;if(n)return Kt[u][2];let c=e+1;const a=Kt[u][1].test("");if(!Kt[u][1].test(o))for(;c<r&&(!(t.sCount[c]<t.blkIndent)||!a&&t.isEmpty(c));c++)if(s=t.bMarks[c]+t.tShift[c],i=t.eMarks[c],o=t.src.slice(s,i),Kt[u][1].test(o)){0!==o.length&&c++;break}t.line=c;const l=t.push("html_block","",0);return l.map=[e,c],l.content=t.getLines(e,c,t.blkIndent,!0),!0},["paragraph","reference","blockquote"]],["heading",function(t,e,r,n){let s=t.bMarks[e]+t.tShift[e],i=t.eMarks[e];if(t.sCount[e]-t.blkIndent>=4)return!1;let o=t.src.charCodeAt(s);if(35!==o||s>=i)return!1;let u=1;for(o=t.src.charCodeAt(++s);35===o&&s<i&&u<=6;)u++,o=t.src.charCodeAt(++s);if(u>6||s<i&&!ht(o))return!1;if(n)return!0;i=t.skipSpacesBack(i,s);const c=t.skipCharsBack(i,35,s);c>s&&ht(t.src.charCodeAt(c-1))&&(i=c),t.line=e+1;const a=t.push("heading_open","h"+String(u),1);a.markup="########".slice(0,u),a.map=[e,t.line];const l=t.push("inline","",0);return l.content=kt(t.src.slice(s,i)),l.map=[e,t.line],l.children=[],t.push("heading_close","h"+String(u),-1).markup="########".slice(0,u),!0},["paragraph","reference","blockquote"]],["lheading",function(t,e,r){const n=t.md.block.ruler.getRules("paragraph");if(t.sCount[e]-t.blkIndent>=4)return!1;const s=t.parentType;t.parentType="paragraph";let i,o=0,u=e+1;for(;u<r&&!t.isEmpty(u);u++){if(t.sCount[u]-t.blkIndent>3)continue;if(t.sCount[u]>=t.blkIndent){let e=t.bMarks[u]+t.tShift[u];const r=t.eMarks[u];if(e<r&&(i=t.src.charCodeAt(e),(45===i||61===i)&&(e=t.skipChars(e,i),e=t.skipSpaces(e),e>=r))){o=61===i?1:2;break}}if(t.sCount[u]<0)continue;let e=!1;for(let s=0,i=n.length;s<i;s++)if(n[s](t,u,r,!0)){e=!0;break}if(e)break}if(!o)return t.parentType=s,!1;const c=kt(t.getLines(e,u,t.blkIndent,!1));t.line=u+1;const a=t.push("heading_open","h"+String(o),1);a.markup=String.fromCharCode(i),a.map=[e,t.line];const l=t.push("inline","",0);return l.content=c,l.map=[e,t.line-1],l.children=[],t.push("heading_close","h"+String(o),-1).markup=String.fromCharCode(i),t.parentType=s,!0}],["paragraph",function(t,e,r){const n=t.md.block.ruler.getRules("paragraph"),s=t.parentType;let i=e+1;for(t.parentType="paragraph";i<r&&!t.isEmpty(i);i++){if(t.sCount[i]-t.blkIndent>3)continue;if(t.sCount[i]<0)continue;let e=!1;for(let s=0,o=n.length;s<o;s++)if(n[s](t,i,r,!0)){e=!0;break}if(e)break}const o=kt(t.getLines(e,i,t.blkIndent,!1));t.line=i,t.push("paragraph_open","p",1).map=[e,t.line];const u=t.push("inline","",0);return u.content=o,u.map=[e,t.line],u.children=[],t.push("paragraph_close","p",-1),t.parentType=s,!0}]];function ee(){this.ruler=new xt;for(let t=0;t<te.length;t++)this.ruler.push(te[t][0],te[t][1],{alt:(te[t][2]||[]).slice()})}function re(t,e,r,n){this.src=t,this.env=r,this.md=e,this.tokens=n,this.tokens_meta=Array(n.length),this.pos=0,this.posMax=this.src.length,this.level=0,this.pending="",this.pendingLevel=0,this.cache={},this.delimiters=[],this._prev_delimiters=[],this.backticks={},this.backticksScanned=!1,this.linkLevel=0}function ne(t){switch(t){case 10:case 33:case 35:case 36:case 37:case 38:case 42:case 43:case 45:case 58:case 60:case 61:case 62:case 64:case 91:case 92:case 93:case 94:case 95:case 96:case 123:case 125:case 126:return!0;default:return!1}}ee.prototype.tokenize=function(t,e,r){const n=this.ruler.getRules(""),s=n.length,i=t.md.options.maxNesting;let o=e,u=!1;for(;o<r&&(t.line=o=t.skipEmptyLines(o),!(o>=r))&&!(t.sCount[o]<t.blkIndent);){if(t.level>=i){t.line=r;break}const e=t.line;let c=!1;for(let i=0;i<s;i++)if(c=n[i](t,o,r,!1),c){if(e>=t.line)throw new Error("block rule didn't increment state.line");break}if(!c)throw new Error("none of the block rules matched");t.tight=!u,t.isEmpty(t.line-1)&&(u=!0),o=t.line,o<r&&t.isEmpty(o)&&(u=!0,o++,t.line=o)}},ee.prototype.parse=function(t,e,r,n){if(!t)return;const s=new this.State(t,e,r,n);this.tokenize(s,s.line,s.lineMax)},ee.prototype.State=Vt,re.prototype.pushPending=function(){const t=new vt("text","",0);return t.content=this.pending,t.level=this.pendingLevel,this.tokens.push(t),this.pending="",t},re.prototype.push=function(t,e,r){this.pending&&this.pushPending();const n=new vt(t,e,r);let s=null;return r<0&&(this.level--,this.delimiters=this._prev_delimiters.pop()),n.level=this.level,r>0&&(this.level++,this._prev_delimiters.push(this.delimiters),this.delimiters=[],s={delimiters:this.delimiters}),this.pendingLevel=this.level,this.tokens.push(n),this.tokens_meta.push(s),n},re.prototype.scanDelims=function(t,e){const r=this.posMax,n=this.src.charCodeAt(t);let s;if(0===t)s=32;else if(1===t)s=this.src.charCodeAt(0),55296==(63488&s)&&(s=65533);else if(s=this.src.charCodeAt(t-1),56320==(64512&s)){const e=this.src.charCodeAt(t-2);s=55296==(64512&e)?65536+(e-55296<<10)+(s-56320):65533}else 55296==(64512&s)&&(s=65533);let i=t;for(;i<r&&this.src.charCodeAt(i)===n;)i++;const o=i-t;let u=i<r?this.src.charCodeAt(i):32;if(55296==(64512&u)){const t=this.src.charCodeAt(i+1);u=56320==(64512&t)?65536+(u-55296<<10)+(t-56320):65533}else 56320==(64512&u)&&(u=65533);const c=mt(s)||dt(s),a=mt(u)||dt(u),l=pt(s),h=pt(u),p=!h&&(!a||l||c),f=!l&&(!c||h||a);return{can_open:p&&(e||!f||c),can_close:f&&(e||!p||a),length:o}},re.prototype.Token=vt;var se=/(?:^|[^a-z0-9.+-])([a-z][a-z0-9.+-]*)$/i;var ie=[];for(let tr=0;tr<256;tr++)ie.push(0);function oe(t,e){let r;const n=[],s=e.length;for(let i=0;i<s;i++){const s=e[i];if(126!==s.marker)continue;if(-1===s.end)continue;const o=e[s.end];r=t.tokens[s.token],r.type="s_open",r.tag="s",r.nesting=1,r.markup="~~",r.content="",r=t.tokens[o.token],r.type="s_close",r.tag="s",r.nesting=-1,r.markup="~~",r.content="","text"===t.tokens[o.token-1].type&&"~"===t.tokens[o.token-1].content&&n.push(o.token-1)}for(;n.length;){const e=n.pop();let s=e+1;for(;s<t.tokens.length&&"s_close"===t.tokens[s].type;)s++;s--,e!==s&&(r=t.tokens[s],t.tokens[s]=t.tokens[e],t.tokens[e]=r)}}"\\!\"#$%&'()*+,./:;<=>?@[]^_`{|}~-".split("").forEach(function(t){ie[t.charCodeAt(0)]=1});var ue={tokenize:function(t,e){const r=t.pos,n=t.src.charCodeAt(r);if(e)return!1;if(126!==n)return!1;const s=t.scanDelims(t.pos,!0);let i=s.length;const o=String.fromCharCode(n);if(i<2)return!1;let u;i%2&&(u=t.push("text","",0),u.content=o,i--);for(let c=0;c<i;c+=2)u=t.push("text","",0),u.content=o+o,t.delimiters.push({marker:n,length:0,token:t.tokens.length-1,end:-1,open:s.can_open,close:s.can_close});return t.pos+=s.length,!0},postProcess:function(t){const e=t.tokens_meta,r=t.tokens_meta.length;oe(t,t.delimiters);for(let n=0;n<r;n++)e[n]&&e[n].delimiters&&oe(t,e[n].delimiters)}};function ce(t,e){for(let r=e.length-1;r>=0;r--){const n=e[r];if(95!==n.marker&&42!==n.marker)continue;if(-1===n.end)continue;const s=e[n.end],i=r>0&&e[r-1].end===n.end+1&&e[r-1].marker===n.marker&&e[r-1].token===n.token-1&&e[n.end+1].token===s.token+1,o=String.fromCharCode(n.marker),u=t.tokens[n.token];u.type=i?"strong_open":"em_open",u.tag=i?"strong":"em",u.nesting=1,u.markup=i?o+o:o,u.content="";const c=t.tokens[s.token];c.type=i?"strong_close":"em_close",c.tag=i?"strong":"em",c.nesting=-1,c.markup=i?o+o:o,c.content="",i&&(t.tokens[e[r-1].token].content="",t.tokens[e[n.end+1].token].content="",r--)}}var ae={tokenize:function(t,e){const r=t.pos,n=t.src.charCodeAt(r);if(e)return!1;if(95!==n&&42!==n)return!1;const s=t.scanDelims(t.pos,42===n);for(let i=0;i<s.length;i++){t.push("text","",0).content=String.fromCharCode(n),t.delimiters.push({marker:n,length:s.length,token:t.tokens.length-1,end:-1,open:s.can_open,close:s.can_close})}return t.pos+=s.length,!0},postProcess:function(t){const e=t.tokens_meta,r=t.tokens_meta.length;ce(t,t.delimiters);for(let n=0;n<r;n++)e[n]&&e[n].delimiters&&ce(t,e[n].delimiters)}};var le=/^([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])?)*)$/,he=/^([a-zA-Z][a-zA-Z0-9+.-]{1,31}):([^<>\x00-\x20]*)$/;var pe=/^&#((?:x[a-f0-9]{1,6}|[0-9]{1,7}));/i,fe=/^&([a-z][a-z0-9]{1,31});/i;function de(t){const e={},r=t.length;if(!r)return;let n=0,s=-2;const i=[];for(let o=0;o<r;o++){const r=t[o];if(i.push(0),t[n].marker===r.marker&&s===r.token-1||(n=o),s=r.token,r.length=r.length||0,!r.close)continue;e.hasOwnProperty(r.marker)||(e[r.marker]=[-1,-1,-1,-1,-1,-1]);const u=e[r.marker][(r.open?3:0)+r.length%3];let c=n-i[n]-1,a=c;for(;c>u;c-=i[c]+1){const e=t[c];if(e.marker===r.marker&&(e.open&&e.end<0)){let n=!1;if((e.close||r.open)&&(e.length+r.length)%3==0&&(e.length%3==0&&r.length%3==0||(n=!0)),!n){const n=c>0&&!t[c-1].open?i[c-1]+1:0;i[o]=o-c+n,i[c]=n,r.open=!1,e.end=o,e.close=!1,a=-1,s=-2;break}}}-1!==a&&(e[r.marker][(r.open?3:0)+(r.length||0)%3]=a)}}var me=[["text",function(t,e){let r=t.pos;for(;r<t.posMax&&!ne(t.src.charCodeAt(r));)r++;return r!==t.pos&&(e||(t.pending+=t.src.slice(t.pos,r)),t.pos=r,!0)}],["linkify",function(t,e){if(!t.md.options.linkify)return!1;if(t.linkLevel>0)return!1;const r=t.pos;if(r+3>t.posMax)return!1;if(58!==t.src.charCodeAt(r))return!1;if(47!==t.src.charCodeAt(r+1))return!1;if(47!==t.src.charCodeAt(r+2))return!1;const n=t.pending.match(se);if(!n)return!1;const s=n[1],i=t.md.linkify.matchAtStart(t.src.slice(r-s.length));if(!i)return!1;let o=i.url;if(o.length<=s.length)return!1;let u=o.length;for(;u>0&&42===o.charCodeAt(u-1);)u--;u!==o.length&&(o=o.slice(0,u));const c=t.md.normalizeLink(o);if(!t.md.validateLink(c))return!1;if(!e){t.pending=t.pending.slice(0,-s.length);const e=t.push("link_open","a",1);e.attrs=[["href",c]],e.markup="linkify",e.info="auto";t.push("text","",0).content=t.md.normalizeLinkText(o);const r=t.push("link_close","a",-1);r.markup="linkify",r.info="auto"}return t.pos+=o.length-s.length,!0}],["newline",function(t,e){let r=t.pos;if(10!==t.src.charCodeAt(r))return!1;const n=t.pending.length-1,s=t.posMax;if(!e)if(n>=0&&32===t.pending.charCodeAt(n))if(n>=1&&32===t.pending.charCodeAt(n-1)){let e=n-1;for(;e>=1&&32===t.pending.charCodeAt(e-1);)e--;t.pending=t.pending.slice(0,e),t.push("hardbreak","br",0)}else t.pending=t.pending.slice(0,-1),t.push("softbreak","br",0);else t.push("softbreak","br",0);for(r++;r<s&&ht(t.src.charCodeAt(r));)r++;return t.pos=r,!0}],["escape",function(t,e){let r=t.pos;const n=t.posMax;if(92!==t.src.charCodeAt(r))return!1;if(r++,r>=n)return!1;let s=t.src.charCodeAt(r);if(10===s){for(e||t.push("hardbreak","br",0),r++;r<n&&(s=t.src.charCodeAt(r),ht(s));)r++;return t.pos=r,!0}if(32===s){if(!e){const e=t.push("text_special","",0);e.content="\\",e.markup="\\",e.info="escape"}return t.pos=r,!0}let i=t.src[r];if(s>=55296&&s<=56319&&r+1<n){const e=t.src.charCodeAt(r+1);e>=56320&&e<=57343&&(i+=t.src[r+1],r++)}const o="\\"+i;if(!e){const e=t.push("text_special","",0);s<256&&0!==ie[s]?e.content=i:e.content=o,e.markup=o,e.info="escape"}return t.pos=r+1,!0}],["backticks",function(t,e){let r=t.pos;if(96!==t.src.charCodeAt(r))return!1;const n=r;r++;const s=t.posMax;for(;r<s&&96===t.src.charCodeAt(r);)r++;const i=t.src.slice(n,r),o=i.length;if(t.backticksScanned&&(t.backticks[o]||0)<=n)return e||(t.pending+=i),t.pos+=o,!0;let u,c=r;for(;-1!==(u=t.src.indexOf("`",c));){for(c=u+1;c<s&&96===t.src.charCodeAt(c);)c++;const n=c-u;if(n===o){if(!e){const e=t.push("code_inline","code",0);e.markup=i,e.content=t.src.slice(r,u).replace(/\n/g," ").replace(/^ (.+) $/,"$1")}return t.pos=c,!0}t.backticks[n]=u}return t.backticksScanned=!0,e||(t.pending+=i),t.pos+=o,!0}],["strikethrough",ue.tokenize],["emphasis",ae.tokenize],["link",function(t,e){let r,n,s,i,o="",u="",c=t.pos,a=!0;if(91!==t.src.charCodeAt(t.pos))return!1;const l=t.pos,h=t.posMax,p=t.pos+1,f=t.md.helpers.parseLinkLabel(t,t.pos,!0);if(f<0)return!1;let d=f+1;if(d<h&&40===t.src.charCodeAt(d)){for(a=!1,d++;d<h&&(r=t.src.charCodeAt(d),ht(r)||10===r);d++);if(d>=h)return!1;if(c=d,s=t.md.helpers.parseLinkDestination(t.src,d,t.posMax),s.ok){for(o=t.md.normalizeLink(s.str),t.md.validateLink(o)?d=s.pos:o="",c=d;d<h&&(r=t.src.charCodeAt(d),ht(r)||10===r);d++);if(s=t.md.helpers.parseLinkTitle(t.src,d,t.posMax),d<h&&c!==d&&s.ok)for(u=s.str,d=s.pos;d<h&&(r=t.src.charCodeAt(d),ht(r)||10===r);d++);}(d>=h||41!==t.src.charCodeAt(d))&&(a=!0),d++}if(a){if(void 0===t.env.references)return!1;if(d<h&&91===t.src.charCodeAt(d)?(c=d+1,d=t.md.helpers.parseLinkLabel(t,d),d>=0?n=t.src.slice(c,d++):d=f+1):d=f+1,n||(n=t.src.slice(p,f)),i=t.env.references[_t(n)],!i)return t.pos=l,!1;o=i.href,u=i.title}if(!e){t.pos=p,t.posMax=f;const e=[["href",o]];t.push("link_open","a",1).attrs=e,u&&e.push(["title",u]),t.linkLevel++,t.md.inline.tokenize(t),t.linkLevel--,t.push("link_close","a",-1)}return t.pos=d,t.posMax=h,!0}],["image",function(t,e){let r,n,s,i,o,u,c,a,l="";const h=t.pos,p=t.posMax;if(33!==t.src.charCodeAt(t.pos))return!1;if(91!==t.src.charCodeAt(t.pos+1))return!1;const f=t.pos+2,d=t.md.helpers.parseLinkLabel(t,t.pos+1,!1);if(d<0)return!1;if(i=d+1,i<p&&40===t.src.charCodeAt(i)){for(i++;i<p&&(r=t.src.charCodeAt(i),ht(r)||10===r);i++);if(i>=p)return!1;for(a=i,u=t.md.helpers.parseLinkDestination(t.src,i,t.posMax),u.ok&&(l=t.md.normalizeLink(u.str),t.md.validateLink(l)?i=u.pos:l=""),a=i;i<p&&(r=t.src.charCodeAt(i),ht(r)||10===r);i++);if(u=t.md.helpers.parseLinkTitle(t.src,i,t.posMax),i<p&&a!==i&&u.ok)for(c=u.str,i=u.pos;i<p&&(r=t.src.charCodeAt(i),ht(r)||10===r);i++);else c="";if(i>=p||41!==t.src.charCodeAt(i))return t.pos=h,!1;i++}else{if(void 0===t.env.references)return!1;if(i<p&&91===t.src.charCodeAt(i)?(a=i+1,i=t.md.helpers.parseLinkLabel(t,i),i>=0?s=t.src.slice(a,i++):i=d+1):i=d+1,s||(s=t.src.slice(f,d)),o=t.env.references[_t(s)],!o)return t.pos=h,!1;l=o.href,c=o.title}if(!e){n=t.src.slice(f,d);const e=[];t.md.inline.parse(n,t.md,t.env,e);const r=t.push("image","img",0),s=[["src",l],["alt",""]];r.attrs=s,r.children=e,r.content=n,c&&s.push(["title",c])}return t.pos=i,t.posMax=p,!0}],["autolink",function(t,e){let r=t.pos;if(60!==t.src.charCodeAt(r))return!1;const n=t.pos,s=t.posMax;for(;;){if(++r>=s)return!1;const e=t.src.charCodeAt(r);if(60===e)return!1;if(62===e)break}const i=t.src.slice(n+1,r);if(he.test(i)){const r=t.md.normalizeLink(i);if(!t.md.validateLink(r))return!1;if(!e){const e=t.push("link_open","a",1);e.attrs=[["href",r]],e.markup="autolink",e.info="auto";t.push("text","",0).content=t.md.normalizeLinkText(i);const n=t.push("link_close","a",-1);n.markup="autolink",n.info="auto"}return t.pos+=i.length+2,!0}if(le.test(i)){const r=t.md.normalizeLink("mailto:"+i);if(!t.md.validateLink(r))return!1;if(!e){const e=t.push("link_open","a",1);e.attrs=[["href",r]],e.markup="autolink",e.info="auto";t.push("text","",0).content=t.md.normalizeLinkText(i);const n=t.push("link_close","a",-1);n.markup="autolink",n.info="auto"}return t.pos+=i.length+2,!0}return!1}],["html_inline",function(t,e){if(!t.md.options.html)return!1;const r=t.posMax,n=t.pos;if(60!==t.src.charCodeAt(n)||n+2>=r)return!1;const s=t.src.charCodeAt(n+1);if(33!==s&&63!==s&&47!==s&&!function(t){const e=32|t;return e>=97&&e<=122}(s))return!1;const i=t.src.slice(n).match(Xt);if(!i)return!1;if(!e){const e=t.push("html_inline","",0);e.content=i[0],o=e.content,/^<a[>\s]/i.test(o)&&t.linkLevel++,function(t){return/^<\/a\s*>/i.test(t)}(e.content)&&t.linkLevel--}var o;return t.pos+=i[0].length,!0}],["entity",function(t,e){const r=t.pos,n=t.posMax;if(38!==t.src.charCodeAt(r))return!1;if(r+1>=n)return!1;if(35===t.src.charCodeAt(r+1)){const n=t.src.slice(r).match(pe);if(n){if(!e){const e="x"===n[1][0].toLowerCase()?parseInt(n[1].slice(1),16):parseInt(n[1],10),r=t.push("text_special","",0);r.content=Q(e)?X(e):X(65533),r.markup=n[0],r.info="entity"}return t.pos+=n[0].length,!0}}else{const n=t.src.slice(r).match(fe);if(n){const r=(s=n[0],j(s,T.Strict));if(r!==n[0]){if(!e){const e=t.push("text_special","",0);e.content=r,e.markup=n[0],e.info="entity"}return t.pos+=n[0].length,!0}}}var s;return!1}]],_e=[["balance_pairs",function(t){const e=t.tokens_meta,r=t.tokens_meta.length;de(t.delimiters);for(let n=0;n<r;n++)e[n]&&e[n].delimiters&&de(e[n].delimiters)}],["strikethrough",ue.postProcess],["emphasis",ae.postProcess],["fragments_join",function(t){let e,r,n=0;const s=t.tokens,i=t.tokens.length;for(e=r=0;e<i;e++)s[e].nesting<0&&n--,s[e].level=n,s[e].nesting>0&&n++,"text"===s[e].type&&e+1<i&&"text"===s[e+1].type?s[e+1].content=s[e].content+s[e+1].content:(e!==r&&(s[r]=s[e]),r++);e!==r&&(s.length=r)}]];function ge(){this.ruler=new xt;for(let t=0;t<me.length;t++)this.ruler.push(me[t][0],me[t][1]);this.ruler2=new xt;for(let t=0;t<_e.length;t++)this.ruler2.push(_e[t][0],_e[t][1])}function ke(t){return Array.prototype.slice.call(arguments,1).forEach(function(e){e&&Object.keys(e).forEach(function(r){t[r]=e[r]})}),t}function De(t){return Object.prototype.toString.call(t)}function Ce(t){return"[object Function]"===De(t)}function ye(t){return t.replace(/[.?*+^$[\]\\(){}|-]/g,"\\$&")}ge.prototype.skipToken=function(t){const e=t.pos,r=this.ruler.getRules(""),n=r.length,s=t.md.options.maxNesting,i=t.cache;if(void 0!==i[e])return void(t.pos=i[e]);let o=!1;if(t.level<s){for(let u=0;u<n;u++)if(t.level++,o=r[u](t,!0),t.level--,o){if(e>=t.pos)throw new Error("inline rule didn't increment state.pos");break}}else t.pos=t.posMax;o||t.pos++,i[e]=t.pos},ge.prototype.tokenize=function(t){const e=this.ruler.getRules(""),r=e.length,n=t.posMax,s=t.md.options.maxNesting;for(;t.pos<n;){const i=t.pos;let o=!1;if(t.level<s)for(let n=0;n<r;n++)if(o=e[n](t,!1),o){if(i>=t.pos)throw new Error("inline rule didn't increment state.pos");break}if(o){if(t.pos>=n)break}else t.pending+=t.src[t.pos++]}t.pending&&t.pushPending()},ge.prototype.parse=function(t,e,r,n){const s=new this.State(t,e,r,n);this.tokenize(s);const i=this.ruler2.getRules(""),o=i.length;for(let u=0;u<o;u++)i[u](s)},ge.prototype.State=re;var Ee={fuzzyLink:!0,fuzzyEmail:!0,fuzzyIP:!1};var Ae={"http:":{validate:function(t,e,r){const n=t.slice(e);return r.re.http||(r.re.http=new RegExp(`^\\/\\/${r.re.src_auth}${r.re.src_host_port_strict}${r.re.src_path}`,"i")),r.re.http.test(n)?n.match(r.re.http)[0].length:0}},"https:":"http:","ftp:":"http:","//":{validate:function(t,e,r){const n=t.slice(e);return r.re.no_http||(r.re.no_http=new RegExp("^"+r.re.src_auth+`(?:localhost|(?:(?:${r.re.src_domain})\\.)+${r.re.src_domain_root})`+r.re.src_port+r.re.src_host_terminator+r.re.src_path,"i")),r.re.no_http.test(n)?e>=3&&":"===t[e-3]||e>=3&&"/"===t[e-3]?0:n.match(r.re.no_http)[0].length:0}},"mailto:":{validate:function(t,e,r){const n=t.slice(e);return r.re.mailto||(r.re.mailto=new RegExp(`^${r.re.src_email_name}@${r.re.src_host_strict}`,"i")),r.re.mailto.test(n)?n.match(r.re.mailto)[0].length:0}}},be="biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|\u0440\u0444".split("|");function Fe(t){const e=t.re=function(t){const e={};t=t||{},e.src_Any=A.source,e.src_Cc=b.source,e.src_Z=w.source,e.src_P=x.source,e.src_ZPCc=[e.src_Z,e.src_P,e.src_Cc].join("|"),e.src_ZCc=[e.src_Z,e.src_Cc].join("|");const r="[><\uff5c]";return e.src_pseudo_letter=`(?:(?!${r}|${e.src_ZPCc})${e.src_Any})`,e.src_ip4="(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)",e.src_auth=`(?:(?:(?!${e.src_ZCc}|[@/\\[\\]()]).){1,50}@)?`,e.src_port="(?::(?:6(?:[0-4]\\d{3}|5(?:[0-4]\\d{2}|5(?:[0-2]\\d|3[0-5])))|[1-5]?\\d{1,4}))?",e.src_host_terminator=`(?=$|${r}|${e.src_ZPCc})(?!${t["---"]?"-(?!--)|":"-|"}_|:\\d|\\.-|\\.(?!$|${e.src_ZPCc}))`,e.src_path=`(?:[/?#](?:(?!${e.src_ZCc}|${r}|[()[\\]{}.,"'?!\\-;]).|\\[(?:(?!${e.src_ZCc}|\\]).)*\\]|\\((?:(?!${e.src_ZCc}|[)]).)*\\)|\\{(?:(?!${e.src_ZCc}|[}]).)*\\}|\\"(?:(?!${e.src_ZCc}|["]).)+\\"|\\'(?:(?!${e.src_ZCc}|[']).)+\\'|\\'(?=${e.src_pseudo_letter}|[-])|\\.{2,}[a-zA-Z0-9%/&]|\\.(?!${e.src_ZCc}|[.]|$)|`+(t["---"]?"\\-(?!--(?:[^-]|$))(?:-*)|":"\\-+|")+`,(?!${e.src_ZCc}|$)|;(?!${e.src_ZCc}|$)|\\!+(?!${e.src_ZCc}|[!]|$)|\\?(?!${e.src_ZCc}|[?]|$))+|\\/)?`,e.src_email_name='[\\-;:&=\\+\\$,\\.a-zA-Z0-9_][\\-;:&=\\+\\$,\\"\\.a-zA-Z0-9_]{0,63}',e.src_xn="xn--[a-z0-9\\-]{1,59}",e.src_domain_root="(?:"+e.src_xn+`|${e.src_pseudo_letter}{1,63})`,e.src_domain="(?:"+e.src_xn+`|(?:${e.src_pseudo_letter})|(?:${e.src_pseudo_letter}(?:-|${e.src_pseudo_letter}){0,61}${e.src_pseudo_letter}))`,e.src_host=`(?:(?:(?:(?:${e.src_domain})\\.)*${e.src_domain}))`,e.tpl_host_fuzzy="(?:"+e.src_ip4+`|(?:(?:(?:${e.src_domain})\\.)+(?:%TLDS%)))`,e.tpl_host_no_ip_fuzzy=`(?:(?:(?:${e.src_domain})\\.)+(?:%TLDS%))`,e.src_host_strict=e.src_host+e.src_host_terminator,e.tpl_host_fuzzy_strict=e.tpl_host_fuzzy+e.src_host_terminator,e.src_host_port_strict=e.src_host+e.src_port+e.src_host_terminator,e.tpl_host_port_fuzzy_strict=e.tpl_host_fuzzy+e.src_port+e.src_host_terminator,e.tpl_host_port_no_ip_fuzzy_strict=e.tpl_host_no_ip_fuzzy+e.src_port+e.src_host_terminator,e.tpl_host_fuzzy_test=`localhost|www\\.|\\.\\d{1,3}\\.|(?:\\.(?:%TLDS%)(?:${e.src_ZPCc}|>|$))`,e.tpl_email_fuzzy=`(^|${r}|"|\\(|${e.src_ZCc})(${e.src_email_name}@${e.tpl_host_fuzzy_strict})`,e.tpl_link_fuzzy=`(^|(?![.:/\\-_@])(?:[$+<=>^\`|\uff5c]|${e.src_ZPCc}))((?![$+<=>^\`|\uff5c])${e.tpl_host_port_fuzzy_strict}${e.src_path})`,e.tpl_link_no_ip_fuzzy=`(^|(?![.:/\\-_@])(?:[$+<=>^\`|\uff5c]|${e.src_ZPCc}))((?![$+<=>^\`|\uff5c])${e.tpl_host_port_no_ip_fuzzy_strict}${e.src_path})`,e}(t.__opts__),r=t.__tlds__.slice();function n(t){return t.replace("%TLDS%",e.src_tlds)}t.onCompile(),t.__tlds_replaced__||r.push("a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]"),r.push(e.src_xn),e.src_tlds=r.join("|"),e.email_fuzzy=RegExp(n(e.tpl_email_fuzzy),"i"),e.email_fuzzy_global=RegExp(n(e.tpl_email_fuzzy),"ig"),e.link_fuzzy=RegExp(n(e.tpl_link_fuzzy),"i"),e.link_fuzzy_global=RegExp(n(e.tpl_link_fuzzy),"ig"),e.link_no_ip_fuzzy=RegExp(n(e.tpl_link_no_ip_fuzzy),"i"),e.link_no_ip_fuzzy_global=RegExp(n(e.tpl_link_no_ip_fuzzy),"ig"),e.host_fuzzy_test=RegExp(n(e.tpl_host_fuzzy_test),"i");const s=[];function i(t,e){throw new Error(`(LinkifyIt) Invalid schema "${t}": ${e}`)}t.__compiled__={},Object.keys(t.__schemas__).forEach(function(e){const r=t.__schemas__[e];if(null===r)return;const n={validate:null,link:null};if(t.__compiled__[e]=n,"[object Object]"===De(r))return!function(t){return"[object RegExp]"===De(t)}(r.validate)?Ce(r.validate)?n.validate=r.validate:i(e,r):n.validate=function(t){return function(e,r){const n=e.slice(r);return t.test(n)?n.match(t)[0].length:0}}(r.validate),void(Ce(r.normalize)?n.normalize=r.normalize:r.normalize?i(e,r):n.normalize=function(t,e){e.normalize(t)});!function(t){return"[object String]"===De(t)}(r)?i(e,r):s.push(e)}),s.forEach(function(e){t.__compiled__[t.__schemas__[e]]&&(t.__compiled__[e].validate=t.__compiled__[t.__schemas__[e]].validate,t.__compiled__[e].normalize=t.__compiled__[t.__schemas__[e]].normalize)}),t.__compiled__[""]={validate:null,normalize:function(t,e){e.normalize(t)}};const o=Object.keys(t.__compiled__).filter(function(e){return e.length>0&&t.__compiled__[e]}).map(ye).join("|");t.re.schema_test=RegExp(`(^|(?!_)(?:[><\uff5c]|${e.src_ZPCc}))(${o})`,"i"),t.re.schema_search=RegExp(`(^|(?!_)(?:[><\uff5c]|${e.src_ZPCc}))(${o})`,"ig"),t.re.schema_at_start=RegExp(`^${t.re.schema_search.source}`,"i"),t.re.pretest=RegExp(`(${t.re.schema_test.source})|(${t.re.host_fuzzy_test.source})|@`,"i")}function xe(t,e,r,n){const s=t.slice(r,n);this.schema=e.toLowerCase(),this.index=r,this.lastIndex=n,this.raw=s,this.text=s,this.url=s}function ve(t,e){if(!(this instanceof ve))return new ve(t,e);var r;e||(r=t,Object.keys(r||{}).reduce(function(t,e){return t||Ee.hasOwnProperty(e)},!1)&&(e=t,t={})),this.__opts__=ke({},Ee,e),this.__schemas__=ke({},Ae,t),this.__compiled__={},this.__tlds__=be,this.__tlds_replaced__=!1,this.re={},Fe(this)}ve.prototype.add=function(t,e){return this.__schemas__[t]=e,Fe(this),this},ve.prototype.set=function(t){return this.__opts__=ke(this.__opts__,t),this},ve.prototype.test=function(t){if(!t.length)return!1;let e,r;if(this.re.schema_test.test(t))for(r=this.re.schema_search,r.lastIndex=0;null!==(e=r.exec(t));)if(this.testSchemaAt(t,e[2],r.lastIndex))return!0;return!!(this.__opts__.fuzzyLink&&this.__compiled__["http:"]&&t.search(this.re.host_fuzzy_test)>=0&&null!==t.match(this.__opts__.fuzzyIP?this.re.link_fuzzy:this.re.link_no_ip_fuzzy))||!!(this.__opts__.fuzzyEmail&&this.__compiled__["mailto:"]&&t.indexOf("@")>=0&&null!==t.match(this.re.email_fuzzy))},ve.prototype.pretest=function(t){return this.re.pretest.test(t)},ve.prototype.testSchemaAt=function(t,e,r){return this.__compiled__[e.toLowerCase()]?this.__compiled__[e.toLowerCase()].validate(t,r,this):0},ve.prototype.match=function(t){const e=[],r=[],n=[],s=[];let i,o,u;function c(t,e){return t?e?t.index!==e.index?t.index<e.index?t:e:t.lastIndex>=e.lastIndex?t:e:t:e}if(!t.length)return null;if(this.re.schema_test.test(t))for(u=this.re.schema_search,u.lastIndex=0;null!==(i=u.exec(t));)o=this.testSchemaAt(t,i[2],u.lastIndex),o&&r.push({schema:i[2],index:i.index+i[1].length,lastIndex:i.index+i[0].length+o});if(this.__opts__.fuzzyLink&&this.__compiled__["http:"])for(u=this.__opts__.fuzzyIP?this.re.link_fuzzy_global:this.re.link_no_ip_fuzzy_global,u.lastIndex=0;null!==(i=u.exec(t));)n.push({schema:"",index:i.index+i[1].length,lastIndex:i.index+i[0].length});if(this.__opts__.fuzzyEmail&&this.__compiled__["mailto:"])for(u=this.re.email_fuzzy_global,u.lastIndex=0;null!==(i=u.exec(t));)s.push({schema:"mailto:",index:i.index+i[1].length,lastIndex:i.index+i[0].length});const a=[0,0,0];let l=0;for(;;){const i=[r[a[0]],s[a[1]],n[a[2]]],o=c(c(i[0],i[1]),i[2]);if(!o)break;if(o===i[0]?a[0]++:o===i[1]?a[1]++:a[2]++,o.index<l)continue;const u=new xe(t,o.schema,o.index,o.lastIndex);this.__compiled__[u.schema].normalize(u,this),e.push(u),l=o.lastIndex}return e.length?e:null},ve.prototype.matchAtStart=function(t){if(!t.length)return null;const e=this.re.schema_at_start.exec(t);if(!e)return null;const r=this.testSchemaAt(t,e[2],e[0].length);if(!r)return null;const n=new xe(t,e[2],e.index+e[1].length,e.index+e[0].length+r);return this.__compiled__[n.schema].normalize(n,this),n},ve.prototype.tlds=function(t,e){return t=Array.isArray(t)?t:[t],e?(this.__tlds__=this.__tlds__.concat(t).sort().filter(function(t,e,r){return t!==r[e-1]}).reverse(),Fe(this),this):(this.__tlds__=t.slice(),this.__tlds_replaced__=!0,Fe(this),this)},ve.prototype.normalize=function(t){t.schema||(t.url=`http://${t.url}`),"mailto:"!==t.schema||/^mailto:/i.test(t.url)||(t.url=`mailto:${t.url}`)},ve.prototype.onCompile=function(){};var we=2147483647,ze=36,Se=/^xn--/,qe=/[^\0-\x7F]/,Be=/[\x2E\u3002\uFF0E\uFF61]/g,Le={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},Ie=Math.floor,Me=String.fromCharCode;function Te(t){throw new RangeError(Le[t])}function $e(t,e){const r=t.split("@");let n="";r.length>1&&(n=r[0]+"@",t=r[1]);const s=function(t,e){const r=[];let n=t.length;for(;n--;)r[n]=e(t[n]);return r}((t=t.replace(Be,".")).split("."),e).join(".");return n+s}function Re(t){const e=[];let r=0;const n=t.length;for(;r<n;){const s=t.charCodeAt(r++);if(s>=55296&&s<=56319&&r<n){const n=t.charCodeAt(r++);56320==(64512&n)?e.push(((1023&s)<<10)+(1023&n)+65536):(e.push(s),r--)}else e.push(s)}return e}var Ne=function(t){return t>=48&&t<58?t-48+26:t>=65&&t<91?t-65:t>=97&&t<123?t-97:ze},Pe=function(t,e){return t+22+75*(t<26)-((0!=e)<<5)},Oe=function(t,e,r){let n=0;for(t=r?Ie(t/700):t>>1,t+=Ie(t/e);t>455;n+=ze)t=Ie(t/35);return Ie(n+36*t/(t+38))},Ze=function(t){const e=[],r=t.length;let n=0,s=128,i=72,o=t.lastIndexOf("-");o<0&&(o=0);for(let u=0;u<o;++u)t.charCodeAt(u)>=128&&Te("not-basic"),e.push(t.charCodeAt(u));for(let u=o>0?o+1:0;u<r;){const o=n;for(let e=1,s=ze;;s+=ze){u>=r&&Te("invalid-input");const o=Ne(t.charCodeAt(u++));o>=ze&&Te("invalid-input"),o>Ie((we-n)/e)&&Te("overflow"),n+=o*e;const c=s<=i?1:s>=i+26?26:s-i;if(o<c)break;const a=ze-c;e>Ie(we/a)&&Te("overflow"),e*=a}const c=e.length+1;i=Oe(n-o,c,0==o),Ie(n/c)>we-s&&Te("overflow"),s+=Ie(n/c),n%=c,e.splice(n++,0,s)}return String.fromCodePoint(...e)},je=function(t){const e=[],r=(t=Re(t)).length;let n=128,s=0,i=72;for(const c of t)c<128&&e.push(Me(c));const o=e.length;let u=o;for(o&&e.push("-");u<r;){let r=we;for(const e of t)e>=n&&e<r&&(r=e);const c=u+1;r-n>Ie((we-s)/c)&&Te("overflow"),s+=(r-n)*c,n=r;for(const a of t)if(a<n&&++s>we&&Te("overflow"),a===n){let t=s;for(let r=ze;;r+=ze){const n=r<=i?1:r>=i+26?26:r-i;if(t<n)break;const s=t-n,o=ze-n;e.push(Me(Pe(n+s%o,0))),t=Ie(s/o)}e.push(Me(Pe(t,0))),i=Oe(s,c,u===o),s=0,++u}++s,++n}return e.join("")},Ue=function(t){return $e(t,function(t){return qe.test(t)?"xn--"+je(t):t})},He=function(t){return $e(t,function(t){return Se.test(t)?Ze(t.slice(4).toLowerCase()):t})},Ve={default:{options:{html:!1,xhtmlOut:!1,breaks:!1,langPrefix:"language-",linkify:!1,typographer:!1,quotes:"\u201c\u201d\u2018\u2019",highlight:null,maxNesting:100},components:{core:{},block:{},inline:{}}},zero:{options:{html:!1,xhtmlOut:!1,breaks:!1,langPrefix:"language-",linkify:!1,typographer:!1,quotes:"\u201c\u201d\u2018\u2019",highlight:null,maxNesting:20},components:{core:{rules:["normalize","block","inline","text_join"]},block:{rules:["paragraph"]},inline:{rules:["text"],rules2:["balance_pairs","fragments_join"]}}},commonmark:{options:{html:!0,xhtmlOut:!0,breaks:!1,langPrefix:"language-",linkify:!1,typographer:!1,quotes:"\u201c\u201d\u2018\u2019",highlight:null,maxNesting:20},components:{core:{rules:["normalize","block","inline","text_join"]},block:{rules:["blockquote","code","fence","heading","hr","html_block","lheading","list","reference","paragraph"]},inline:{rules:["autolink","backticks","emphasis","entity","escape","html_inline","image","link","newline","text"],rules2:["balance_pairs","emphasis","fragments_join"]}}}},Ge=/^(vbscript|javascript|file|data):/,We=/^data:image\/(gif|png|jpeg|webp);/;function Je(t){const e=t.trim().toLowerCase();return!Ge.test(e)||We.test(e)}var Qe=["http:","https:","mailto:"];function Xe(t){const e=D(t,!0);if(e.hostname&&(!e.protocol||Qe.indexOf(e.protocol)>=0))try{e.hostname=Ue(e.hostname)}catch(r){}return i(o(e))}function Ye(t){const e=D(t,!0);if(e.hostname&&(!e.protocol||Qe.indexOf(e.protocol)>=0))try{e.hostname=He(e.hostname)}catch(r){}return n(o(e),n.defaultChars+"%")}function Ke(t,e){if(!(this instanceof Ke))return new Ke(t,e);e||H(t)||(e=t||{},t="default"),this.inline=new ge,this.block=new ee,this.core=new Ht,this.renderer=new Ft,this.linkify=new ve,this.validateLink=Je,this.normalizeLink=Xe,this.normalizeLinkText=Ye,this.utils=U,this.helpers=W({},At),this.options={},this.configure(t),e&&this.set(e)}return Ke.prototype.set=function(t){return W(this.options,t),this},Ke.prototype.configure=function(t){const e=this;if(H(t)){const e=t;if(!(t=Ve[e]))throw new Error('Wrong `markdown-it` preset "'+e+'", check name')}if(!t)throw new Error("Wrong `markdown-it` preset, can't be empty");return t.options&&e.set(t.options),t.components&&Object.keys(t.components).forEach(function(r){t.components[r].rules&&e[r].ruler.enableOnly(t.components[r].rules),t.components[r].rules2&&e[r].ruler2.enableOnly(t.components[r].rules2)}),this},Ke.prototype.enable=function(t,e){let r=[];Array.isArray(t)||(t=[t]),["core","block","inline"].forEach(function(e){r=r.concat(this[e].ruler.enable(t,!0))},this),r=r.concat(this.inline.ruler2.enable(t,!0));const n=t.filter(function(t){return r.indexOf(t)<0});if(n.length&&!e)throw new Error("MarkdownIt. Failed to enable unknown rule(s): "+n);return this},Ke.prototype.disable=function(t,e){let r=[];Array.isArray(t)||(t=[t]),["core","block","inline"].forEach(function(e){r=r.concat(this[e].ruler.disable(t,!0))},this),r=r.concat(this.inline.ruler2.disable(t,!0));const n=t.filter(function(t){return r.indexOf(t)<0});if(n.length&&!e)throw new Error("MarkdownIt. Failed to disable unknown rule(s): "+n);return this},Ke.prototype.use=function(t){const e=[this].concat(Array.prototype.slice.call(arguments,1));return t.apply(t,e),this},Ke.prototype.parse=function(t,e){if("string"!=typeof t)throw new Error("Input data should be a String");const r=new this.core.State(t,this,e);return this.core.process(r),r.tokens},Ke.prototype.render=function(t,e){return e=e||{},this.renderer.render(this.parse(t,e),this.options,e)},Ke.prototype.parseInline=function(t,e){const r=new this.core.State(t,this,e);return r.inlineMode=!0,this.core.process(r),r.tokens},Ke.prototype.renderInline=function(t,e){return e=e||{},this.renderer.render(this.parseInline(t,e),this.options,e)},Ke});
3
+ //# sourceMappingURL=markdown-it.min.js.map
@@ -0,0 +1,407 @@
1
+ #aide-root {
2
+ position: relative;
3
+ display: flex;
4
+ flex-direction: column;
5
+ height: 100vh;
6
+ font-size: 13px;
7
+ color: var(--joplin-color, #ddd);
8
+ background: var(--joplin-background-color, #1e1e1e);
9
+ }
10
+
11
+ .cc-header {
12
+ display: flex;
13
+ align-items: center;
14
+ justify-content: space-between;
15
+ padding: 6px 10px;
16
+ border-bottom: 1px solid var(--joplin-divider-color, #333);
17
+ flex-shrink: 0;
18
+ }
19
+ .cc-title { font-weight: bold; }
20
+ .cc-note-context {
21
+ flex: 1;
22
+ margin: 0 8px;
23
+ font-size: 11px;
24
+ color: var(--joplin-color-faded, #999);
25
+ white-space: nowrap;
26
+ overflow: hidden;
27
+ text-overflow: ellipsis;
28
+ }
29
+ .cc-header button {
30
+ background: transparent;
31
+ border: none;
32
+ border-radius: 6px;
33
+ color: var(--joplin-color-faded, #999);
34
+ cursor: pointer;
35
+ padding: 3px 8px;
36
+ font-size: 13px;
37
+ line-height: 1;
38
+ transition: background 0.12s ease, color 0.12s ease;
39
+ }
40
+ .cc-header button:hover {
41
+ background: rgba(127, 127, 127, 0.18);
42
+ color: inherit;
43
+ }
44
+ .cc-header button + button { margin-left: 2px; }
45
+ /* Backend switcher: a small pill showing the active engine */
46
+ #cc-backend {
47
+ border: 1px solid rgba(127, 127, 127, 0.4);
48
+ border-radius: 999px;
49
+ font-size: 11px;
50
+ padding: 2px 9px;
51
+ color: var(--joplin-color-faded, #999);
52
+ }
53
+ #cc-backend.cc-backend-copilot {
54
+ border-color: rgba(88, 166, 255, 0.55);
55
+ }
56
+ /* One line per backend-switch notice */
57
+ .cc-switch-note {
58
+ align-self: center;
59
+ font-size: 11px;
60
+ color: var(--joplin-color-faded, #999);
61
+ background: rgba(127, 127, 127, 0.12);
62
+ border-radius: 999px;
63
+ padding: 2px 10px;
64
+ }
65
+
66
+ #cc-messages {
67
+ flex: 1;
68
+ overflow-y: auto;
69
+ padding: 10px;
70
+ display: flex;
71
+ flex-direction: column;
72
+ gap: 8px;
73
+ }
74
+
75
+ .cc-msg {
76
+ max-width: 92%;
77
+ padding: 7px 10px;
78
+ border-radius: 8px;
79
+ line-height: 1.5;
80
+ word-wrap: break-word;
81
+ overflow-wrap: break-word;
82
+ }
83
+ .cc-user {
84
+ align-self: flex-end;
85
+ background: var(--joplin-selected-color, rgba(74, 156, 245, 0.25));
86
+ }
87
+ .cc-assistant {
88
+ align-self: flex-start;
89
+ background: rgba(127, 127, 127, 0.12);
90
+ }
91
+ .cc-error {
92
+ align-self: stretch;
93
+ background: rgba(220, 70, 70, 0.15);
94
+ border: 1px solid rgba(220, 70, 70, 0.4);
95
+ font-size: 12px;
96
+ }
97
+
98
+ .cc-code {
99
+ background: rgba(0, 0, 0, 0.3);
100
+ padding: 6px 8px;
101
+ border-radius: 4px;
102
+ overflow-x: auto;
103
+ font-size: 12px;
104
+ margin: 4px 0;
105
+ white-space: pre;
106
+ }
107
+ .cc-msg code {
108
+ background: rgba(0, 0, 0, 0.25);
109
+ padding: 0 4px;
110
+ border-radius: 3px;
111
+ font-size: 12px;
112
+ }
113
+
114
+ .cc-tools { align-self: flex-start; display: flex; flex-wrap: wrap; gap: 4px; }
115
+ .cc-tool-chip {
116
+ font-size: 11px;
117
+ padding: 1px 8px;
118
+ border-radius: 10px;
119
+ background: rgba(127, 127, 127, 0.15);
120
+ color: var(--joplin-color-faded, #999);
121
+ }
122
+
123
+ .cc-spinner {
124
+ font-size: 12px;
125
+ color: var(--joplin-color-faded, #999);
126
+ align-self: flex-start;
127
+ }
128
+
129
+ #cc-confirm { flex-shrink: 0; padding: 0 10px; }
130
+ .cc-confirm-card {
131
+ border: 1px solid rgba(230, 180, 60, 0.6);
132
+ background: rgba(230, 180, 60, 0.1);
133
+ border-radius: 6px;
134
+ padding: 8px 10px;
135
+ margin-bottom: 8px;
136
+ }
137
+ .cc-confirm-text { margin-bottom: 6px; word-break: break-all; }
138
+ .cc-confirm-actions { display: flex; gap: 8px; }
139
+ .cc-confirm-btn {
140
+ border: none;
141
+ border-radius: 4px;
142
+ padding: 4px 14px;
143
+ cursor: pointer;
144
+ font-size: 12px;
145
+ }
146
+ .cc-approve { background: #3d8b40; color: #fff; }
147
+ .cc-always { background: #a8760b; color: #fff; }
148
+ .cc-decline { background: rgba(127, 127, 127, 0.3); color: inherit; }
149
+
150
+ /* ---- slim scrollbars (messages + history) ---- */
151
+ #cc-messages::-webkit-scrollbar,
152
+ .cc-hist-box::-webkit-scrollbar,
153
+ #cc-input::-webkit-scrollbar {
154
+ width: 6px;
155
+ }
156
+ #cc-messages::-webkit-scrollbar-track,
157
+ .cc-hist-box::-webkit-scrollbar-track,
158
+ #cc-input::-webkit-scrollbar-track {
159
+ background: transparent;
160
+ }
161
+ #cc-messages::-webkit-scrollbar-thumb,
162
+ .cc-hist-box::-webkit-scrollbar-thumb,
163
+ #cc-input::-webkit-scrollbar-thumb {
164
+ background: rgba(127, 127, 127, 0.35);
165
+ border-radius: 3px;
166
+ }
167
+ #cc-messages::-webkit-scrollbar-thumb:hover,
168
+ .cc-hist-box::-webkit-scrollbar-thumb:hover,
169
+ #cc-input::-webkit-scrollbar-thumb:hover {
170
+ background: rgba(127, 127, 127, 0.6);
171
+ }
172
+ .cc-code::-webkit-scrollbar { height: 6px; }
173
+ .cc-code::-webkit-scrollbar-thumb {
174
+ background: rgba(127, 127, 127, 0.35);
175
+ border-radius: 3px;
176
+ }
177
+
178
+ /* ---- history overlay ---- */
179
+ #cc-history-overlay {
180
+ position: absolute;
181
+ inset: 0;
182
+ background: rgba(0, 0, 0, 0.35);
183
+ z-index: 50;
184
+ }
185
+ .cc-hist-box {
186
+ position: absolute;
187
+ top: 40px;
188
+ left: 8px;
189
+ right: 8px;
190
+ max-height: 70%;
191
+ overflow-y: auto;
192
+ background: var(--joplin-background-color, #222);
193
+ border: 1px solid var(--joplin-divider-color, #444);
194
+ border-radius: 8px;
195
+ box-shadow: 0 8px 30px rgba(0, 0, 0, 0.4);
196
+ padding: 4px;
197
+ }
198
+ .cc-hist-item {
199
+ display: flex;
200
+ align-items: center;
201
+ gap: 6px;
202
+ padding: 7px 8px;
203
+ border-radius: 6px;
204
+ cursor: pointer;
205
+ }
206
+ .cc-hist-item:hover { background: rgba(127, 127, 127, 0.15); }
207
+ .cc-hist-main { flex: 1; min-width: 0; }
208
+ .cc-hist-title {
209
+ white-space: nowrap;
210
+ overflow: hidden;
211
+ text-overflow: ellipsis;
212
+ }
213
+ .cc-hist-date { font-size: 11px; color: var(--joplin-color-faded, #999); }
214
+ .cc-hist-del {
215
+ background: transparent;
216
+ border: none;
217
+ color: var(--joplin-color-faded, #999);
218
+ cursor: pointer;
219
+ padding: 2px 6px;
220
+ border-radius: 4px;
221
+ }
222
+ .cc-hist-del:hover { background: rgba(220, 70, 70, 0.3); color: #fff; }
223
+ .cc-hist-empty { padding: 16px; text-align: center; color: var(--joplin-color-faded, #999); }
224
+
225
+ /* attachment names inside a sent user bubble */
226
+ .cc-msg-atts {
227
+ margin-top: 5px;
228
+ padding-top: 4px;
229
+ border-top: 1px solid rgba(127, 127, 127, 0.25);
230
+ font-size: 11px;
231
+ color: var(--joplin-color-faded, #bbb);
232
+ word-break: break-all;
233
+ }
234
+
235
+ /* ---- quick-reply question cards (AskUserQuestion) ---- */
236
+ .cc-question-card {
237
+ align-self: flex-start;
238
+ max-width: 92%;
239
+ border: 1px solid var(--joplin-selected-color, #4a9cf5);
240
+ border-radius: 8px;
241
+ padding: 8px 10px;
242
+ background: rgba(74, 156, 245, 0.08);
243
+ }
244
+ .cc-q-text { margin-bottom: 6px; }
245
+ /* One option per line - easier to scan and click than a wrapped row */
246
+ .cc-q-options { display: flex; flex-direction: column; align-items: stretch; gap: 6px; }
247
+ .cc-q-option {
248
+ border: 1px solid var(--joplin-divider-color, #555);
249
+ background: transparent;
250
+ color: inherit;
251
+ border-radius: 14px;
252
+ padding: 4px 12px;
253
+ cursor: pointer;
254
+ font-size: 12px;
255
+ text-align: left;
256
+ }
257
+ .cc-q-option:hover:not(:disabled) { background: rgba(74, 156, 245, 0.2); }
258
+ .cc-q-option:disabled { opacity: 0.45; cursor: default; }
259
+ .cc-q-answered { opacity: 0.7; }
260
+ .cc-q-chosen {
261
+ background: var(--joplin-selected-color, #4a9cf5) !important;
262
+ color: #fff !important;
263
+ border-color: transparent !important;
264
+ opacity: 1 !important;
265
+ }
266
+
267
+ /* ---- attachment chips ---- */
268
+ #cc-attachments {
269
+ flex-shrink: 0;
270
+ padding: 0 10px;
271
+ display: flex;
272
+ flex-wrap: wrap;
273
+ gap: 4px;
274
+ }
275
+ #cc-attachments:not(:empty) { padding-bottom: 6px; }
276
+ .cc-att-chip {
277
+ font-size: 11px;
278
+ padding: 2px 6px;
279
+ border-radius: 10px;
280
+ background: rgba(127, 127, 127, 0.18);
281
+ display: inline-flex;
282
+ align-items: center;
283
+ gap: 4px;
284
+ max-width: 220px;
285
+ overflow: hidden;
286
+ text-overflow: ellipsis;
287
+ white-space: nowrap;
288
+ }
289
+ .cc-att-del {
290
+ background: transparent;
291
+ border: none;
292
+ color: var(--joplin-color-faded, #999);
293
+ cursor: pointer;
294
+ padding: 0 2px;
295
+ }
296
+ .cc-att-del:hover { color: #e66; }
297
+
298
+ .cc-input-row {
299
+ display: flex;
300
+ gap: 6px;
301
+ padding: 8px 10px;
302
+ border-top: 1px solid var(--joplin-divider-color, #333);
303
+ flex-shrink: 0;
304
+ }
305
+ #cc-input {
306
+ flex: 1;
307
+ resize: none;
308
+ background: var(--joplin-background-color3, #2a2a2a);
309
+ color: inherit;
310
+ border: 1px solid var(--joplin-divider-color, #444);
311
+ border-radius: 6px;
312
+ padding: 6px 8px;
313
+ font-family: inherit;
314
+ font-size: 13px;
315
+ }
316
+ .cc-input-buttons {
317
+ display: flex;
318
+ flex-direction: column;
319
+ justify-content: flex-end;
320
+ gap: 4px;
321
+ }
322
+ #cc-attach, #cc-send, #cc-stop {
323
+ border: none;
324
+ border-radius: 8px;
325
+ width: 34px;
326
+ height: 28px;
327
+ cursor: pointer;
328
+ font-size: 14px;
329
+ line-height: 1;
330
+ display: flex;
331
+ align-items: center;
332
+ justify-content: center;
333
+ transition: background 0.12s ease, filter 0.12s ease;
334
+ }
335
+ #cc-attach {
336
+ background: transparent;
337
+ color: var(--joplin-color-faded, #999);
338
+ }
339
+ #cc-attach:hover {
340
+ background: rgba(127, 127, 127, 0.18);
341
+ color: inherit;
342
+ }
343
+ #cc-send {
344
+ background: var(--joplin-selected-color, #4a9cf5);
345
+ color: #fff;
346
+ }
347
+ #cc-send:hover { filter: brightness(1.15); }
348
+ #cc-stop {
349
+ background: #c0392b;
350
+ color: #fff;
351
+ }
352
+ #cc-stop:hover { filter: brightness(1.15); }
353
+
354
+ /* ---- markdown elements inside message bubbles ---- */
355
+ .cc-msg p { margin: 0 0 6px; }
356
+ .cc-msg p:last-child { margin-bottom: 0; }
357
+ .cc-msg h1, .cc-msg h2, .cc-msg h3, .cc-msg h4, .cc-msg h5, .cc-msg h6 {
358
+ margin: 8px 0 5px;
359
+ line-height: 1.3;
360
+ font-weight: 600;
361
+ }
362
+ .cc-msg h1 { font-size: 1.25em; }
363
+ .cc-msg h2 { font-size: 1.15em; }
364
+ .cc-msg h3 { font-size: 1.06em; }
365
+ .cc-msg h4, .cc-msg h5, .cc-msg h6 { font-size: 1em; }
366
+ .cc-msg ul, .cc-msg ol { margin: 4px 0 6px; padding-left: 20px; }
367
+ .cc-msg li { margin: 2px 0; }
368
+ .cc-msg li > p { margin: 0; }
369
+ .cc-msg pre {
370
+ background: rgba(0, 0, 0, 0.3);
371
+ padding: 6px 8px;
372
+ border-radius: 4px;
373
+ overflow-x: auto;
374
+ font-size: 12px;
375
+ margin: 4px 0 6px;
376
+ }
377
+ .cc-msg pre code { background: none; padding: 0; }
378
+ .cc-msg pre::-webkit-scrollbar { height: 6px; }
379
+ .cc-msg pre::-webkit-scrollbar-thumb { background: rgba(127, 127, 127, 0.35); border-radius: 3px; }
380
+ .cc-msg blockquote {
381
+ margin: 4px 0 6px;
382
+ padding: 2px 10px;
383
+ border-left: 3px solid rgba(127, 127, 127, 0.5);
384
+ color: var(--joplin-color-faded, #bbb);
385
+ }
386
+ .cc-msg a { color: var(--joplin-color-url, #6ab0f3); text-decoration: none; }
387
+ .cc-msg a:hover { text-decoration: underline; }
388
+ .cc-msg table {
389
+ border-collapse: collapse;
390
+ margin: 4px 0 6px;
391
+ display: block;
392
+ max-width: 100%;
393
+ overflow-x: auto;
394
+ font-size: 12px;
395
+ }
396
+ .cc-msg th, .cc-msg td {
397
+ border: 1px solid rgba(127, 127, 127, 0.4);
398
+ padding: 3px 8px;
399
+ text-align: left;
400
+ }
401
+ .cc-msg th { background: rgba(127, 127, 127, 0.15); }
402
+ .cc-msg hr {
403
+ border: none;
404
+ border-top: 1px solid rgba(127, 127, 127, 0.35);
405
+ margin: 8px 0;
406
+ }
407
+ .cc-msg img { max-width: 100%; }
@@ -0,0 +1 @@
1
+ function postMsg(e){webviewApi.postMessage(e)}var _busy=!1;function el(e){return document.getElementById(e)}function T(e){if(!window._i18n){var t=document.getElementById("aide-root");if(t&&t.dataset.i18n)try{window._i18n=JSON.parse(t.dataset.i18n)}catch(e){window._i18n={}}else window._i18n={}}return window._i18n[e]||e}function escapeHtml(e){return String(e??"").replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}var _md=null;function getMd(){return _md||("function"==typeof window.markdownit&&(_md=window.markdownit({html:!1,linkify:!0,breaks:!0})),_md)}function renderLite(e){var t=getMd();if(t)return t.render(String(e??""));var a=escapeHtml(e);return(a=(a=(a=(a=a.replace(/```([\s\S]*?)```/g,function(e,t){return'<pre class="cc-code">'+t.replace(/^\n/,"")+"</pre>"})).replace(/`([^`\n]+)`/g,"<code>$1</code>")).replace(/\*\*([^*\n]+)\*\*/g,"<strong>$1</strong>")).replace(/\n/g,"<br>")).replace(/(<\/pre>)<br>/g,"$1")}function scrollToBottom(){var e=el("cc-messages");e&&(e.scrollTop=e.scrollHeight)}function appendToMessages(e){var t=el("cc-messages");if(t){var a=document.getElementById("cc-spinner");a&&a.parentElement===t?t.insertBefore(e,a):t.appendChild(e)}}function addBubble(e,t){if(!el("cc-messages"))return null;var a=document.createElement("div");return a.className="cc-msg "+e,a.innerHTML=t,appendToMessages(a),scrollToBottom(),a}function addToolChip(e){var t=el("cc-messages");if(t){var a=t.lastElementChild;if(a&&"cc-spinner"===a.id&&a.previousElementSibling&&(a=a.previousElementSibling),a&&a.classList.contains("cc-tools")){var s=document.createElement("span");s.className="cc-tool-chip",s.textContent=e,a.appendChild(s)}else{var n=document.createElement("div");n.className="cc-tools";var c=document.createElement("span");c.className="cc-tool-chip",c.textContent=e,n.appendChild(c),appendToMessages(n)}scrollToBottom()}}function setBusy(e){_busy=e;var t=el("cc-send"),a=el("cc-stop"),s=el("cc-input");t&&(t.style.display=e?"none":""),a&&(a.style.display=e?"":"none"),s&&(s.disabled=!1);var n=el("cc-messages"),c=document.getElementById("cc-spinner");if(e){if(!c&&n){var r=document.createElement("div");r.id="cc-spinner",r.className="cc-spinner",r.textContent=T("working"),n.appendChild(r),scrollToBottom()}}else c&&c.remove()}function sendText(e){_busy||(e=String(e||"").trim())&&(setBusy(!0),addBubble("cc-user",escapeHtml(e).replace(/\n/g,"<br>")),postMsg({name:"send",text:e}))}function sendCurrent(){if(!_busy){var e=el("cc-input");if(e){var t=e.value.trim();if(t){setBusy(!0),e.value="";var a=escapeHtml(t).replace(/\n/g,"<br>"),s=document.querySelectorAll("#cc-attachments .cc-att-chip");if(s.length){for(var n=[],c=0;c<s.length;c++)n.push(escapeHtml(s[c].dataset.name||""));a+='<div class="cc-msg-atts">📎 '+n.join(" · ")+"</div>"}addBubble("cc-user",a),postMsg({name:"send",text:t})}}}}function sendFileToBackend(e){if(e)if(e.size>8388608)addBubble("cc-error",escapeHtml(e.name)+" (>8MB)");else{var t=new FileReader;t.onload=function(){var a=String(t.result||""),s=a.indexOf(",");postMsg({name:"attachFile",fileName:e.name,data:s>=0?a.slice(s+1):a})},t.readAsDataURL(e)}}function handleFiles(e){for(var t=0;t<e.length&&t<5;t++)sendFileToBackend(e[t])}document.addEventListener("paste",function(e){if(e.clipboardData){for(var t=[],a=e.clipboardData.items||[],s=0;s<a.length;s++)if("file"===a[s].kind){var n=a[s].getAsFile();n&&t.push(n)}if(t.length){e.preventDefault();for(var c=0;c<t.length&&c<5;c++){var r=t[c];if(!r.name||"image.png"===r.name){var l=r.type&&r.type.indexOf("/")>=0?r.type.split("/")[1]:"png";r=new File([r],"paste-"+Date.now()+"-"+c+"."+l,{type:r.type||"image/png"})}sendFileToBackend(r)}}}}),document.addEventListener("dragover",function(e){e.preventDefault()}),document.addEventListener("drop",function(e){e.preventDefault(),e.dataTransfer&&e.dataTransfer.files&&e.dataTransfer.files.length&&handleFiles(e.dataTransfer.files)}),document.addEventListener("change",function(e){e.target&&"cc-file"===e.target.id&&e.target.files&&(handleFiles(e.target.files),e.target.value="")}),document.addEventListener("click",function(e){var t=e.target;if(t){var a=t.closest?t.closest(".cc-msg a[href]"):null;if(a)return e.preventDefault(),void postMsg({name:"openUrl",url:a.getAttribute("href")});if("cc-send"!==t.id)if("cc-backend"!==t.id)if("cc-attach"!==t.id){var s=t.closest?t.closest(".cc-q-option"):null;if(s){var n=s.closest(".cc-question-card");if(n){for(var c=n.querySelectorAll(".cc-q-option"),r=0;r<c.length;r++)c[r].disabled=!0;n.classList.add("cc-q-answered"),s.classList.add("cc-q-chosen")}var l=n?n.dataset.requestId:"";l?postMsg({name:"questionAnswer",requestId:l,value:s.dataset.value}):sendText(s.dataset.value)}else{var i=t.closest?t.closest(".cc-att-del"):null;if(i)postMsg({name:"removeAttachment",id:i.dataset.id});else if("cc-stop"!==t.id){if("cc-history"===t.id){var o=el("cc-history-overlay");return o?void o.remove():void postMsg({name:"listHistory"})}var d=t.closest?t.closest(".cc-hist-del"):null;if(d)postMsg({name:"deleteConversation",id:d.dataset.id});else{var m=t.closest?t.closest(".cc-hist-item"):null;if(m)postMsg({name:"loadConversation",id:m.dataset.id});else if("cc-history-overlay"!==t.id)if("cc-new"!==t.id){var u=t.closest?t.closest(".cc-confirm-btn"):null;if(u){var p=u.closest(".cc-confirm-card");return postMsg({name:"confirmResult",requestId:u.dataset.requestId,approved:"1"===u.dataset.approved,always:"1"===u.dataset.always}),void(p&&p.remove())}}else{postMsg({name:"newSession"});var v=el("cc-messages");v&&(v.innerHTML="");var f=el("cc-confirm");f&&(f.innerHTML="")}else t.remove()}}else postMsg({name:"stop"})}}else{var g=el("cc-file");g&&g.click()}else postMsg({name:"toggleBackend"});else sendCurrent()}}),document.addEventListener("keydown",function(e){e.target&&"cc-input"===e.target.id&&"Enter"===e.key&&!e.shiftKey&&(e.preventDefault(),sendCurrent())});var _streamBubble=null,_streamRaw="";function endStreamBubble(){_streamBubble=null,_streamRaw=""}webviewApi.onMessage(function(e){if(e&&e.message){var t=e.message;if("assistantStart"===t.name)return _streamRaw="",void(_streamBubble=addBubble("cc-assistant",""));if("assistantDelta"===t.name)return _streamBubble||(_streamRaw="",_streamBubble=addBubble("cc-assistant","")),_streamRaw+=t.text,_streamBubble.innerHTML=renderLite(_streamRaw),void scrollToBottom();if("historyList"===t.name){var a=el("cc-history-overlay");a&&a.remove();var s=document.createElement("div");s.id="cc-history-overlay";var n=document.createElement("div");if(n.className="cc-hist-box",t.items&&t.items.length)for(var c=0;c<t.items.length;c++){var r=t.items[c],l=r.updated?new Date(r.updated):null,i=l?l.getFullYear()+"-"+("0"+(l.getMonth()+1)).slice(-2)+"-"+("0"+l.getDate()).slice(-2)+" "+("0"+l.getHours()).slice(-2)+":"+("0"+l.getMinutes()).slice(-2):"",o=document.createElement("div");o.className="cc-hist-item",o.dataset.id=r.id,o.innerHTML='<div class="cc-hist-main"><div class="cc-hist-title">'+escapeHtml(r.title)+'</div><div class="cc-hist-date">'+i+'</div></div><button class="cc-hist-del" data-id="'+r.id+'" title="'+escapeHtml(T("titleDelete"))+'">&#x2715;</button>',n.appendChild(o)}else n.innerHTML='<div class="cc-hist-empty">'+escapeHtml(T("noHistory"))+"</div>";s.appendChild(n),document.getElementById("aide-root").appendChild(s)}else if("conversationLoaded"===t.name){var d=el("cc-history-overlay");d&&d.remove();var m=el("cc-messages");m&&(m.innerHTML="");var u=el("cc-confirm");u&&(u.innerHTML="");for(var p=t.messages||[],v=0;v<p.length;v++){var f=p[v];"user"===f.role?addBubble("cc-user",escapeHtml(f.text).replace(/\n/g,"<br>")):"assistant"===f.role?addBubble("cc-assistant",renderLite(f.text)):"tool"===f.role?addToolChip("⚙ "+f.text):addBubble("cc-error",escapeHtml(f.text))}setBusy(!1)}else if("attached"===t.name){var g=el("cc-attachments");if(g){var b=document.createElement("span");b.className="cc-att-chip",b.dataset.id=t.id,b.dataset.name=t.fileName,b.innerHTML="📎 "+escapeHtml(t.fileName)+' <button class="cc-att-del" data-id="'+t.id+'">✕</button>',g.appendChild(b)}}else if("attachmentRemoved"===t.name){var h=document.querySelector('.cc-att-chip[data-id="'+t.id+'"]');h&&h.remove()}else if("attachmentsCleared"===t.name){var y=el("cc-attachments");y&&(y.innerHTML="")}else if("backendState"===t.name){var B=el("cc-backend"),w="copilot"===t.backend?"Copilot":"Claude";if(B&&(B.textContent=w,B.classList.toggle("cc-backend-copilot","copilot"===t.backend)),t.switched){var q=document.createElement("div");q.className="cc-switch-note",q.textContent="⇄ "+T("backendSwitched").replace("{name}",w),appendToMessages(q),scrollToBottom()}}else if("noteContext"===t.name){var M=el("cc-note-context");M&&(M.textContent=t.title?"📄 "+t.title:"")}else if("assistantText"===t.name)_streamBubble?(_streamBubble.innerHTML=renderLite(t.text),endStreamBubble(),scrollToBottom()):addBubble("cc-assistant",renderLite(t.text));else if("userQuestion"===t.name){endStreamBubble();for(var H=t.questions||[],L=0;L<H.length;L++){var C=H[L];(D=document.createElement("div")).className="cc-question-card",t.requestId&&(D.dataset.requestId=t.requestId);for(var x='<div class="cc-q-text">'+escapeHtml(C.question||"")+'</div><div class="cc-q-options">',E=C.options||[],_=0;_<E.length;_++)x+='<button class="cc-q-option" data-value="'+escapeHtml(w="string"==typeof E[_]?E[_]:E[_].label||"")+'">'+escapeHtml(w)+"</button>";x+="</div>",D.innerHTML=x,appendToMessages(D)}scrollToBottom()}else if("questionGone"===t.name){var S=document.querySelector('.cc-question-card[data-request-id="'+t.requestId+'"]');if(S){for(var k=S.querySelectorAll(".cc-q-option"),I=0;I<k.length;I++)k[I].disabled=!0;S.classList.add("cc-q-answered")}}else if("toolUse"===t.name)endStreamBubble(),addToolChip("⚙ "+t.tool);else if("toolDone"===t.name)addToolChip("✔ "+t.text);else if("busy"===t.name)setBusy(!0===t.busy);else if("turnDone"===t.name)endStreamBubble(),setBusy(!1);else if("error"===t.name)endStreamBubble(),addBubble("cc-error",escapeHtml(t.text)),setBusy(!1);else if("confirmWrite"===t.name){var D,N=el("cc-confirm");if(!N)return;(D=document.createElement("div")).className="cc-confirm-card",D.innerHTML='<div class="cc-confirm-text">⚠ '+escapeHtml(t.summary)+'</div><div class="cc-confirm-actions"><button class="cc-confirm-btn cc-approve" data-request-id="'+t.requestId+'" data-approved="1">'+escapeHtml(T("approve"))+'</button><button class="cc-confirm-btn cc-always" data-request-id="'+t.requestId+'" data-approved="1" data-always="1">'+escapeHtml(T("alwaysAllow"))+'</button><button class="cc-confirm-btn cc-decline" data-request-id="'+t.requestId+'" data-approved="0">'+escapeHtml(T("decline"))+"</button></div>",N.appendChild(D),scrollToBottom()}else if("confirmGone"===t.name){var A=document.querySelectorAll('.cc-confirm-btn[data-request-id="'+t.requestId+'"]');if(A.length){var F=A[0].closest(".cc-confirm-card");F&&F.remove()}}}}),postMsg({name:"ready"});