Full Code of Vanessa219/vditor for AI

master 86c2aaf43bb7 cached
228 files
9.2 MB
2.4M tokens
4336 symbols
1 requests
Download .txt
Showing preview only (9,715K chars total). Download the full file or copy to clipboard to get everything.
Repository: Vanessa219/vditor
Branch: master
Commit: 86c2aaf43bb7
Files: 228
Total size: 9.2 MB

Directory structure:
gitextract_r00b7n2y/

├── .editorconfig
├── .github/
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.md
│   │   ├── config.yml
│   │   └── feature_request.md
│   ├── PULL_REQUEST_TEMPLATE.md
│   └── SECURITY.md
├── .gitignore
├── .npmrc
├── .prettierrc
├── CHANGELOG.md
├── LICENSE
├── README.md
├── README_en_US.md
├── __test__/
│   ├── markdown/
│   │   ├── commonmark-0.29.ts
│   │   └── lute.test.ts
│   ├── methods/
│   │   └── index.spec.ts
│   └── util/
│       ├── Options.test.ts
│       └── textareaPosition.spec.ts
├── bower.json
├── demo/
│   ├── comment.html
│   ├── comment.js
│   ├── icon.html
│   ├── index.html
│   ├── index.js
│   ├── jest-puppeteer.html
│   ├── jest-puppeteer.js
│   ├── markdown/
│   │   ├── cute-list.md
│   │   ├── entity.md
│   │   ├── ko_KR.md
│   │   └── zh_CN.md
│   ├── render.html
│   ├── render.js
│   └── static.html
├── eslint.config.mjs
├── package.json
├── src/
│   ├── assets/
│   │   └── less/
│   │       ├── _content.less
│   │       ├── _hint.less
│   │       ├── _ir.less
│   │       ├── _panel.less
│   │       ├── _reset.less
│   │       ├── _sv.less
│   │       ├── _toolbar.less
│   │       ├── _tooltipped.less
│   │       ├── _wysiwyg.less
│   │       └── index.less
│   ├── css/
│   │   └── content-theme/
│   │       ├── ant-design.css
│   │       ├── dark.css
│   │       ├── light.css
│   │       └── wechat.css
│   ├── index.ts
│   ├── js/
│   │   ├── graphviz/
│   │   │   ├── full.render.js
│   │   │   └── viz.js
│   │   ├── highlight.js/
│   │   │   ├── LICENSE
│   │   │   └── third-languages.js
│   │   ├── i18n/
│   │   │   ├── de_DE.js
│   │   │   ├── en_US.js
│   │   │   ├── es_ES.js
│   │   │   ├── fr_FR.js
│   │   │   ├── ja_JP.js
│   │   │   ├── ko_KR.js
│   │   │   ├── pt_BR.js
│   │   │   ├── ru_RU.js
│   │   │   ├── sv_SE.js
│   │   │   ├── vi_VN.js
│   │   │   ├── zh_CN.js
│   │   │   └── zh_TW.js
│   │   ├── icons/
│   │   │   ├── ant.js
│   │   │   └── material.js
│   │   ├── markmap/
│   │   │   └── prism.css
│   │   └── mathjax/
│   │       ├── LICENSE
│   │       ├── a11y/
│   │       │   ├── assistive-mml.js
│   │       │   ├── complexity.js
│   │       │   ├── explorer.js
│   │       │   └── semantic-enrich.js
│   │       ├── input/
│   │       │   ├── asciimath.js
│   │       │   ├── mml/
│   │       │   │   └── entities.js
│   │       │   ├── mml.js
│   │       │   ├── tex/
│   │       │   │   └── extensions/
│   │       │   │       ├── action.js
│   │       │   │       ├── all-packages.js
│   │       │   │       ├── ams.js
│   │       │   │       ├── amscd.js
│   │       │   │       ├── autoload.js
│   │       │   │       ├── bbox.js
│   │       │   │       ├── boldsymbol.js
│   │       │   │       ├── braket.js
│   │       │   │       ├── bussproofs.js
│   │       │   │       ├── cancel.js
│   │       │   │       ├── color.js
│   │       │   │       ├── colorV2.js
│   │       │   │       ├── configMacros.js
│   │       │   │       ├── enclose.js
│   │       │   │       ├── extpfeil.js
│   │       │   │       ├── html.js
│   │       │   │       ├── mhchem.js
│   │       │   │       ├── newcommand.js
│   │       │   │       ├── noerrors.js
│   │       │   │       ├── noundefined.js
│   │       │   │       ├── physics.js
│   │       │   │       ├── require.js
│   │       │   │       ├── tagFormat.js
│   │       │   │       ├── textmacros.js
│   │       │   │       ├── unicode.js
│   │       │   │       └── verb.js
│   │       │   ├── tex-base.js
│   │       │   ├── tex-full.js
│   │       │   └── tex.js
│   │       ├── sre/
│   │       │   ├── mathmaps/
│   │       │   │   ├── de.js
│   │       │   │   ├── en.js
│   │       │   │   ├── es.js
│   │       │   │   ├── fr.js
│   │       │   │   ├── mathmaps_ie.js
│   │       │   │   └── nemeth.js
│   │       │   ├── sre-node.js
│   │       │   └── sre_browser.js
│   │       └── tex-svg-full.js
│   ├── method.ts
│   └── ts/
│       ├── constants.ts
│       ├── devtools/
│       │   └── index.ts
│       ├── export/
│       │   └── index.ts
│       ├── hint/
│       │   └── index.ts
│       ├── ir/
│       │   ├── expandMarker.ts
│       │   ├── highlightToolbarIR.ts
│       │   ├── index.ts
│       │   ├── input.ts
│       │   ├── process.ts
│       │   └── processKeydown.ts
│       ├── markdown/
│       │   ├── SMILESRender.ts
│       │   ├── abcRender.ts
│       │   ├── adapterRender.ts
│       │   ├── anchorRender.ts
│       │   ├── chartRender.ts
│       │   ├── codeRender.ts
│       │   ├── flowchartRender.ts
│       │   ├── getHTML.ts
│       │   ├── getMarkdown.ts
│       │   ├── graphvizRender.ts
│       │   ├── highlightRender.ts
│       │   ├── lazyLoadImageRender.ts
│       │   ├── markmapRender.ts
│       │   ├── mathRender.ts
│       │   ├── mediaRender.ts
│       │   ├── mermaidRender.ts
│       │   ├── mindmapRender.ts
│       │   ├── outlineRender.ts
│       │   ├── plantumlRender.ts
│       │   ├── previewRender.ts
│       │   ├── setLute.ts
│       │   └── speechRender.ts
│       ├── outline/
│       │   └── index.ts
│       ├── preview/
│       │   ├── image.ts
│       │   └── index.ts
│       ├── resize/
│       │   └── index.ts
│       ├── sv/
│       │   ├── combineFootnote.ts
│       │   ├── index.ts
│       │   ├── inputEvent.ts
│       │   ├── process.ts
│       │   └── processKeydown.ts
│       ├── tip/
│       │   └── index.ts
│       ├── toolbar/
│       │   ├── Both.ts
│       │   ├── Br.ts
│       │   ├── CodeTheme.ts
│       │   ├── ContentTheme.ts
│       │   ├── Counter.ts
│       │   ├── Custom.ts
│       │   ├── Devtools.ts
│       │   ├── Divider.ts
│       │   ├── EditMode.ts
│       │   ├── Emoji.ts
│       │   ├── Export.ts
│       │   ├── Fullscreen.ts
│       │   ├── Headings.ts
│       │   ├── Help.ts
│       │   ├── Indent.ts
│       │   ├── Info.ts
│       │   ├── InsertAfter.ts
│       │   ├── InsertBefore.ts
│       │   ├── MenuItem.ts
│       │   ├── Outdent.ts
│       │   ├── Outline.ts
│       │   ├── Preview.ts
│       │   ├── Record.ts
│       │   ├── Redo.ts
│       │   ├── Undo.ts
│       │   ├── Upload.ts
│       │   ├── index.ts
│       │   └── setToolbar.ts
│       ├── ui/
│       │   ├── initUI.ts
│       │   ├── setCodeTheme.ts
│       │   ├── setContentTheme.ts
│       │   ├── setPreviewMode.ts
│       │   └── setTheme.ts
│       ├── undo/
│       │   └── index.ts
│       ├── upload/
│       │   ├── getElement.ts
│       │   ├── index.ts
│       │   └── setHeaders.ts
│       ├── util/
│       │   ├── Options.ts
│       │   ├── RecordMedia.ts
│       │   ├── addScript.ts
│       │   ├── addStyle.ts
│       │   ├── code160to32.ts
│       │   ├── compatibility.ts
│       │   ├── editorCommonEvent.ts
│       │   ├── fixBrowserBehavior.ts
│       │   ├── function.ts
│       │   ├── getSelectText.ts
│       │   ├── hasClosest.ts
│       │   ├── hasClosestByHeadings.ts
│       │   ├── highlightToolbar.ts
│       │   ├── hotKey.ts
│       │   ├── log.ts
│       │   ├── merge.ts
│       │   ├── processCode.ts
│       │   ├── selection.ts
│       │   └── toc.ts
│       └── wysiwyg/
│           ├── afterRenderEvent.ts
│           ├── highlightToolbarWYSIWYG.ts
│           ├── index.ts
│           ├── inlineTag.ts
│           ├── input.ts
│           ├── processKeydown.ts
│           ├── renderDomByMd.ts
│           ├── setHeading.ts
│           ├── showCode.ts
│           └── toolbarEvent.ts
├── tsconfig.json
├── types/
│   └── index.d.ts
├── webpack.config.js
└── webpack.start.js

================================================
FILE CONTENTS
================================================

================================================
FILE: .editorconfig
================================================
[*]
tab_width = 4
trim_trailing_whitespace = true
end_of_line = lf
indent_size = 4
indent_style = space
insert_final_newline = true
charset = utf-8


================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.md
================================================
---
name: 报告缺陷
about: 报告缺陷以帮助我们改进
---

### 编辑模式

<!-- 请选择你遇到问题时使用的编辑模式(把正常情况模式删掉):-->

* `wysiwyg` 所见即所得模式
* `ir` 即时渲染模式
* `sv` 分屏编辑预览模式

### 描述问题

<!-- 请尽量清晰精准地描述你碰到的问题。-->

````````markdown
如果是解析渲染问题的话请在此处贴入 Markdown 原文
````````

### 期待的结果

<!-- 请尽量清晰精准地描述你所期待的结果。-->

### 截屏或录像

<!-- 
如果可能,请尽量附加截图或录像来描述你遇到的问题。

(Windows 下推荐使用 [Screen2Gif](https://www.screentogif.com/) 进行录屏。如果是编辑器输入相关问题,使用 Screen2Gif 录制结束后请打开`图像 - 按键`)
-->

### 版本信息

* 版本:
* 操作系统:
* 浏览器:

### 其他信息

<!-- 请提供其他附加信息帮助我们诊断问题。 -->


================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: false
contact_links:
  - name: Vditor 官方讨论区
    url: https://ld246.com/tag/vditor
    about: 欢迎到这里反馈问题和提出建议,国内访问的话会比 GitHub 更丝滑流畅一些
  - name: 思源笔记问题反馈
    url: https://github.com/siyuan-note/siyuan
    about: 思源笔记相关问题请到这里反馈

================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.md
================================================
---
name: 请求新功能
about: 提出你期待的功能特性
---

### 你在什么场景下需要该功能?

<!-- 请尽量清晰精准地描述你期待的功能和应用场景。-->

### 描述最优的解决方案 

<!-- 请尝试描述最优的解决方案,也许已经有类似软件实现了该特性,也请列出给我们参考。-->

### 描述候选解决方案

<!-- 请尽量清晰精准地描述你能接受的候选解决方案。-->

### 其他信息

<!-- 请提供关于该功能建议的其他附加信息。-->


================================================
FILE: .github/PULL_REQUEST_TEMPLATE.md
================================================
<!--

* PR 请提交到 dev 开发分支上

-->

================================================
FILE: .github/SECURITY.md
================================================
# 安全报告 Security report

如果你发现安全相关漏洞请通过如下任意一种方式告知我们:\
If you find security-related vulnerabilities, please inform us in any of the following ways:

* 直接开 Issue(请隐去站点、实际项目等敏感信息)\
  Open Issue directly (please hide sensitive information such as site and actual project)
* 发邮件至 845765@qq.com\
  Send an email to 845765@qq.com
* 在链滴上[私信我](https://ld246.com/chats/88250) \
  On the LianDi [Private Message](https://ld246.com/chats/88250)

非常感谢!\
Thank you very much!


================================================
FILE: .gitignore
================================================
.idea
**/.DS_Store
/dist
/node_modules
/demo/dist
/coverage
.vscode/*


================================================
FILE: .npmrc
================================================
@b3log:registry=https://npm.pkg.github.com/

================================================
FILE: .prettierrc
================================================
{
	"arrowParens": "always",
	"bracketSpacing": true,
	"embeddedLanguageFormatting": "auto",
	"htmlWhitespaceSensitivity": "css",
	"insertPragma": false,
	"jsxBracketSameLine": false,
	"jsxSingleQuote": false,
	"printWidth": 80,
	"proseWrap": "preserve",
	"quoteProps": "as-needed",
	"requirePragma": false,
	"semi": true,
	"singleQuote": false,
	"tabWidth": 4,
	"trailingComma": "es5",
	"useTabs": false,
	"vueIndentScriptAndStyle": false
}


================================================
FILE: CHANGELOG.md
================================================
## Vditor change log

### 升级

* 3.11
  * 添加 options.preview.markdown.sup
  * 添加 options.preview.markdown.sub
  * 添加 options.customWysiwygToolbar
  * 添加 options.upload.base64ToLink
  * 添加 options.upload.xhr
  * 添加 options.upload.cancel
* 3.10
  * 添加 options.unSelect
* 3.9
  * 添加 insertEmptyBlock
  * 添加 markmapRender 方法
  * 添加 SMILESRender 方法
  * 添加 insertMD 方法
  * 添加 options.upload.renderLinkDest
  * 添加 options.preview.math.mathJaxOptions
  * 添加 hljs.langs
  * 添加 option.keydown
  * 添加 option.link 和 options.image
  * 添加 hljs.defaultLang
  * 添加 hljs.renderMenu
  * 添加 preview.render.media.enable
  * 添加 updateToolbarConfig

### TODO

* [open issues](https://github.com/Vanessa219/vditor/issues)

### v3.11.3 / 2025-09

* [添加 `options.preview.markdown.sup/sub` 对上下标的配置](https://github.com/Vanessa219/vditor/pull/1853) `引入特性`
* [升级 mermaid.js 11.6.0 至 11.11.0](https://github.com/Vanessa219/vditor/issues/1857) `改进功能`

### v3.11.2 / 2025-09-02

* [上标下标输入异常](https://github.com/Vanessa219/vditor/issues/1822) `修复缺陷`
* [添加 `customWysiwygToolbar` 方法对 wysiwyg 模式下的工具栏进行自定义](https://github.com/Vanessa219/vditor/issues/1849) `引入特性`
* [特定情况下工具栏图标无法正常加载](https://github.com/Vanessa219/vditor/issues/1846) `兼容性`
* [改进粘贴 markdown 导致的 XSS](https://github.com/Vanessa219/vditor/issues/1827) `改进功能`
* [支持西班牙语和越南语](https://github.com/Vanessa219/vditor/pull/1828) `引入特性`
* [支持粘贴含有图文的 Word](https://github.com/Vanessa219/vditor/pull/1830) `引入特性`
* [改进列表内粘贴列表](https://github.com/Vanessa219/vditor/issues/1832) `改进功能`

### v3.11.1 / 2025-05-27

* [支持德语](https://github.com/Vanessa219/vditor/pull/1816) `文档相关`
* [订正多语言(英语)中的 `delete-column` 和 `delete-row`](https://github.com/Vanessa219/vditor/pull/1811) `文档相关`
* [更新 LICENSE](https://github.com/Vanessa219/vditor/pull/1812) `文档相关`
* [添加 `options.upload.xhr` 回调](https://github.com/Vanessa219/vditor/issues/1808) `引入特性`
* [待办列表回车换行错误](https://github.com/Vanessa219/vditor/issues/1789) `修复缺陷`

### v3.11.0 / 2025-04-09

* [添加 `options.upload.cancel` 回调](https://github.com/Vanessa219/vditor/issues/1791) `引入特性`
* [修复代码行号对不齐](https://github.com/Vanessa219/vditor/issues/1786) `修复缺陷`
* [mermaid 升级至 11.6.0](https://github.com/Vanessa219/vditor/issues/1140) `开发重构`
* [初始化后立即 `destroy` 不再进行 `after` 的回调](https://github.com/Vanessa219/vditor/issues/1790) `改进功能`
* [点击复制按钮不展开编辑区域](https://github.com/Vanessa219/vditor/issues/1768) `改进功能`
* [添加 `unSelect` 回调](https://github.com/Vanessa219/vditor/pull/1775) `改进功能`

### v3.10.9 / 2025-02-11

* [任务列表中的无序列表回车异常](https://github.com/Vanessa219/vditor/issues/1754) `修复缺陷`
* [添加 `insertEmptyBlock` 方法](https://github.com/Vanessa219/vditor/pull/1745) `开发重构`
* [撤销后图表会重复](https://github.com/Vanessa219/vditor/issues/1738) `修复缺陷`
* [设置 defaultLang 之后,指定代码失效](https://github.com/Vanessa219/vditor/issues/1728) `修复缺陷`

### v3.10.8 / 2024-12-03

* [任务列表勾选和取消勾选时保持背景色不变](https://github.com/Vanessa219/vditor/issues/1721) `改进功能`
* [代码块主题预览失效](https://github.com/Vanessa219/vditor/issues/1722) `修复缺陷`
* [带 tag 的数学公式会出现滚动条](https://github.com/Vanessa219/vditor/issues/1710) `改进功能`
* [行内公式撤销异常](https://github.com/Vanessa219/vditor/issues/1706) `修复缺陷`
* [改进俄语](https://github.com/Vanessa219/vditor/pull/1702) `文档相关`

### v3.10.7 / 2024-10-15

* [支持化学物质结构渲染](https://github.com/Vanessa219/vditor/issues/1158) `引入特性`
* [内容为空时使用工具栏插入表情错误](https://github.com/Vanessa219/vditor/issues/1662) `修复缺陷`
* [更新 hljs,支持更多的语言和外观](https://github.com/Vanessa219/vditor/issues/1680) `改进功能`
* [撤销后 echart 无法渲染](https://github.com/Vanessa219/vditor/issues/1673) `修复缺陷`

### v3.10.6 / 2024-09-11

* [支持 echarts 中执行函数](https://github.com/Vanessa219/vditor/issues/1672) `改进功能`
* [井号后输入空格就渲染标题](https://github.com/Vanessa219/vditor/issues/729) `改进功能`
* [ir 模式下标题删除报错](https://github.com/Vanessa219/vditor/issues/1666) `修复缺陷`
* [升级 echarts 至 5.5.1](https://github.com/Vanessa219/vditor/issues/1664) `开发重构`
* [添加 `insertMD` 方法](https://github.com/Vanessa219/vditor/issues/1640) `引入特性`

### v3.10.5 / 2024-08-09

* [添加 `upload.renderLinkDest` 用于扩展粘贴时图片链接的处理](https://github.com/Vanessa219/vditor/issues/1186) `引入特性`
* [图标配置为 `material` 时,列表反向缩进与缩进的图标错误](https://github.com/Vanessa219/vditor/issues/1656) `修复缺陷`
* [提供非混淆版本的产物代码](https://github.com/Vanessa219/vditor/issues/1653) `开发重构`
* [Bump ws from 6.2.2 to 6.2.3](https://github.com/Vanessa219/vditor/pull/1635) `dependencies`
* [支持 SV 模式下列表的反向缩进](https://github.com/Vanessa219/vditor/pull/1630) `引入特性`
* [添加 `updateToolbarConfig` 方法](https://github.com/Vanessa219/vditor/issues/1627) `引入特性`

### v3.10.4 / 2024-04-16

* [移动端支持划选阅读](https://github.com/Vanessa219/vditor/issues/1611) `改进功能`
* [改进代码样式外链地址匹配规则](https://github.com/Vanessa219/vditor/pull/1607) `改进功能`
* [移动端预览模式下点击复制代码不弹起键盘](https://github.com/Vanessa219/vditor/issues/1603) `改进功能`
* [大纲对不齐](https://github.com/Vanessa219/vditor/issues/1591) `改进功能`
* [options.preview.hljs.linenumber 设置为 true 时复制按钮消失](https://github.com/Vanessa219/vditor/issues/1601) `修复缺陷`

### v3.10.3 / 2024-04-02

* [⬆️ Bump express from 4.17.3 to 4.19.2](https://github.com/Vanessa219/vditor/pull/1594) `dependencies`
* [id 不存在时给出对应提示](https://github.com/Vanessa219/vditor/issues/1562) `改进功能`
* [https 下请求 plantuml 会被阻止](https://github.com/Vanessa219/vditor/pull/1586) `改进功能`
* [拼写错误](https://github.com/Vanessa219/vditor/issues/1588) `文档相关`
* [⬆️ Bump webpack-dev-middleware from 5.3.1 to 5.3.4](https://github.com/Vanessa219/vditor/pull/1590) `dependencies`
* [添加 `preview.render.media.enable` 参数](https://github.com/Vanessa219/vditor/issues/1583) `引入特性`

### v3.10.2 / 2024-03-19

* [使用 object 内嵌 plantuml 以支持特殊语法](https://github.com/Vanessa219/vditor/pull/1579) `改进功能`
* [⬆️ Bump follow-redirects from 1.15.4 to 1.15.6](https://github.com/Vanessa219/vditor/pull/1582) `dependencies`
* [改进 bilibili 视频网站解析](https://github.com/Vanessa219/vditor/issues/1581) `改进功能`
* [改进松散模式下的列表展现](https://github.com/Vanessa219/vditor/issues/1575) `改进功能`
* [mermaid 图表渲染自适应](https://github.com/Vanessa219/vditor/issues/1574) `改进功能`

### v3.10.1 / 2024-03-05

* [`insertValue` 后无法回车](https://github.com/Vanessa219/vditor/issues/1566) `修复缺陷`
* [IR 模式滚动时隐藏代码块语言提示](https://github.com/Vanessa219/vditor/issues/1567) `改进功能`
* [内容为空时回车禁止光标跳动](https://github.com/Vanessa219/vditor/issues/1565) `开发重构`
* [⬆️ Bump ip from 1.1.5 to 1.1.9](https://github.com/Vanessa219/vditor/pull/1563) `开发重构`
* [WYSIWYG 模式下链接包含粗体无法打开](https://github.com/Vanessa219/vditor/issues/1560) `改进功能`
* [添加 options.preview.hljs.renderMenu 方法](https://github.com/Vanessa219/vditor/issues/1553) `引入特性`

### v3.9.9 / 2024-01-30

* [导出 PDF 时主题错误](https://github.com/Vanessa219/vditor/issues/1549) `修复缺陷`
* [改进表格中行内数学公式 `|` 的渲染](https://github.com/Vanessa219/vditor/issues/1550) `改进功能`
* [wysiwyg 模式下通过输入框修改元素属性时触发 input](https://github.com/Vanessa219/vditor/issues/1542) `改进功能`
* [自定义渲染器支持](https://github.com/Vanessa219/vditor/issues/1540) `引入特性`

### v3.9.8 / 2023-12-26

* [多语言加载失败后给出相关提示](https://github.com/Vanessa219/vditor/issues/1531) `改进功能`
* [导出 PDF 时 CDN 配置不生效](https://github.com/Vanessa219/vditor/pull/1529) `修复缺陷`
* [sv 模式中在脚注下方输入文本出现渲染错误](https://github.com/Vanessa219/vditor/issues/1518) `修复缺陷`
* [KaTeX 渲染支持 macros](https://github.com/Vanessa219/vditor/issues/1519) `引入特性`
* [简化 CDN 配置](https://github.com/Vanessa219/vditor/issues/1522) `改进功能`

### v3.9.7 / 2023-12-14

* [改进带端口的超链接解析](https://github.com/Vanessa219/vditor/issues/1513) `改进功能`
* [优化代码块复制功能的渲染性能](https://github.com/Vanessa219/vditor/pull/1502) `开发重构`
* [tipPosition 设置在取消全屏后失效](https://github.com/Vanessa219/vditor/issues/1491) `修复缺陷`

### v3.9.6 / 2023-09-26

* [预览页面渲染错误](https://github.com/Vanessa219/vditor/pull/1475/files) `修复缺陷`
* [markmap 生产环境路径错误](https://github.com/Vanessa219/vditor/issues/1467) `修复缺陷`
* [insertValue 后光标移动到插入的字符串之后](https://github.com/Vanessa219/vditor/issues/1464) `改进功能`
* [preview.actions 为空不渲染工具栏](https://github.com/Vanessa219/vditor/issues/1453) `改进功能`
* [MathJax 支持传入其他配置项](https://github.com/Vanessa219/vditor/issues/1453) `引入特性`

### v3.9.5 / 2023-08-29

* [换行+冒号会被识别为表格](https://github.com/Vanessa219/vditor/issues/1460) `修复缺陷`
* [自定义代码块语言](https://github.com/Vanessa219/vditor/issues/1459) `引入特性`
* [编辑器全票后双击图片无法放大](https://github.com/Vanessa219/vditor/issues/1437) `修复缺陷`
* [⬆️ Bump word-wrap from 1.2.3 to 1.2.4](https://github.com/Vanessa219/vditor/pull/1436) `dependencies`
* [IR 模式下输入 `<!--` 后报错](https://github.com/Vanessa219/vditor/issues/1431) `修复缺陷`
* [改进预览界面复制提示](https://github.com/Vanessa219/vditor/pull/1429) `改进功能`

### v3.9.4 / 2023-06-20

* [支持自动链接配置 `gfmAutoLink`](https://github.com/Vanessa219/vditor/issues/1422) `引入特性`
* [订正多语言繁体中的文案错误](https://github.com/Vanessa219/vditor/pull/1421) `文档相关`
* [修正多语言中英语的错误](https://github.com/Vanessa219/vditor/pull/1416) `文档相关`
* [IR, SV 模式下输入内容后立即点击工具栏下拉无反应](https://github.com/Vanessa219/vditor/issues/1414) `改进功能`
* [为 `button` 添加 `type` 属性](https://github.com/Vanessa219/vditor/pull/1410) `开发重构`
* [XSS 代码注入漏洞 - 表单](https://github.com/Vanessa219/vditor/issues/1412) `修复缺陷`
* [XSS 代码注入漏洞 - meta](https://github.com/Vanessa219/vditor/issues/1411) `修复缺陷`

### v3.9.3 / 2023-05-23

* [XSS 代码注入漏洞 - 链接](https://github.com/Vanessa219/vditor/issues/1401) `修复缺陷`
* [XSS 代码注入漏洞 - iframe](https://github.com/Vanessa219/vditor/issues/1400) `修复缺陷`
* [添加`keydown`回调](https://github.com/Vanessa219/vditor/issues/1397) `引入特性`
* [输入内容后立即点击工具栏下拉无反应](https://github.com/Vanessa219/vditor/issues/1391) `改进功能`
* [XSS 代码注入漏洞](https://github.com/Vanessa219/vditor/issues/1395) `修复缺陷`
* [支持葡萄牙语](https://github.com/Vanessa219/vditor/pull/1394) `引入特性`

### v3.9.2 / 2023-04-11

* [代码高亮不指定语言时使用 hljs.defaultLang 进行渲染](https://github.com/Vanessa219/vditor/issues/1382) `引入特性`
* [选中文本后粘贴网址自动生成链接](https://github.com/Vanessa219/vditor/issues/1301) `改进功能`
* [情景菜单输入框中 Esc/alt+Enter/Enter 可将光标设置到编辑器中](https://github.com/Vanessa219/vditor/issues/1302) `改进功能`
* [文本选中弹出组件 speech 位置被多屏影响](https://github.com/Vanessa219/vditor/issues/1373) `改进功能`
* [更新补充 JSDoc](https://github.com/Vanessa219/vditor/pull/1374) `文档相关`

### v3.9.1 / 2023-03-14

* [新增法语](https://github.com/Vanessa219/vditor/pull/1365) `引入特性`
* [新增瑞士语](https://github.com/Vanessa219/vditor/pull/1359) `引入特性`
* [代码块下一行的标题前输入中文时内容会跑到代码块里面](https://github.com/Vanessa219/vditor/issues/1356) `修复缺陷`
* [连续插入多个列表,控制台报错](https://github.com/Vanessa219/vditor/issues/1343) `修复缺陷`
* [IR 模式选择内容设置为代码块时异常](https://github.com/Vanessa219/vditor/issues/1354) `修复缺陷`

### v3.9.0 / 2023-01-15

* [1345](https://github.com/Vanessa219/vditor/issues/1345) 移除复制代码块末尾的换行 `改进功能`
* [1348](https://github.com/Vanessa219/vditor/pull/1348) 新增链接和图片处理接口 `引入特性`
* [1342](https://github.com/Vanessa219/vditor/pull/1342) 初始化后不自动聚焦 `改进功能`
* [1341](https://github.com/Vanessa219/vditor/pull/1341) 支持 markmap `引入特性`
* [1335](https://github.com/Vanessa219/vditor/issues/1335) 嵌入 Iframe 时无法导出 PDF `修复缺陷`

### 历史版本升级记录
* 3.8
  * 添加 plantumlRender 方法
  * options.input 移除 previewElement 参数
  * 添加表格增加向上插入行 ⇧⌘F 和向左插入列 ⇧⌘G 的快捷键
  * 快捷键配置格式修改为 ⇧⌘[] / ⌘[] / ⌥⌘[]
  * 添加 hint.parse 配置
  * codeRender 方法中移除 lang 参数
  * 为 options 添加 i18n 语言自定义参数
  * 添加 exportJSON 方法
* 3.7
  * `preview` 静态方法添加 `mode` 配置
  * 大纲 DOM 结构和 class 变更
  * 添加 `options.undoDelay` 配置
  * 添加 `options.counter.after` 回调方法
  * 添加 `previewImage` 静态方法
  * 添加 `options.fullscreen.index`
  * 移除`options.preview.markdown.chinesePunct` 配置
  * `options.outline` 修改为 `{ enable: boolean, position: "left" | "right" }`
  * `toolbar.click` 参数修改为 `event: Event, vditor: IVditor`
* 3.6
  * `options.preview.actions` 添加 `tooltip`
  * `mermaidRender` 添加 `theme` 参数
  * `mindmapRender` 添加 `theme` 参数
  * `chartRender` 添加 `theme` 参数
* 3.5
  * `mermaidRender` 移除 `className` 参数
* 3.4
  * `options.hint.at` => "options.hint.extend: IHintExtend[]"
* v3.3
  * options.mode 默认值修改为 `ir`
  * `options.markdown.listMarker` 修改为 `options.markdown.listStyle`
  * `options.preview.markdow.theme` 修改为 `options.preview.theme`
  * `setContentTheme` 参数修改为 `contentTheme: string, path: string`
  * `setTheme` 参数修改为 `theme: "dark" | "classic", contentTheme?: string, codeTheme?: string, contentThemePath?: string`
  * 移除 `setSelection`
  * 移除 `options.keymap`
  * 移除 `options.preview.markdown.setext`
  * 移除工具栏上的格式化功能:`options.toolbar` 中移除 `format` 选项
* v3.2
  * IPreviewOptions.anchor 从 `boolean` 类型修改为 `number` 类型
* v3.1
  * `options.counter` 修改为 `counter?: { enable: boolean; max?: number; type: "markdown" | "text"; }`
  * `options.hideToolbar` 修改为 `toolbarConfig: { hide?: boolean, pin?: boolean }`
  * `setPreviewMode` 方法中移除 `preview` 选项
  * `options.preview.mode` 移除 `preview` 选项
  * 将 `IPreviewOptions` 中的 `theme` 配置移动到 `IPreviewOptions.markdown` 中
* v3.0
  * `options.mode` 可选值为:'wysiwyg', 'sv', 'ir'
  * toolbar 中的 `wysiwyg` 修改为 `edit-mode`
  * new 支持传入 element
  * `options.cache` 修改为 `{enable: boolean, id: string}`
  * `md2html` 方法改为异步
  * 添加 `options.preview.markdown.codeBlockPreview` 配置
  * 为 `options.toolbar` 添加 `className` 配置
  * 添加 `getCurrentMode` 方法
* v2.2
  * 移除 `IPreviewOptions` 中的 `className`
  * `insertValue` 添加 `render` 参数,以便配置是否需要进行 Markdown 处理
  * 将异步方法变为同步
  * 引用快捷键修改为 <kbd>Ctrl-;</kbd>
  * 移除 index-preview.html, index-preview.js 文件
  * `options.preview.markdown.autoSpace/chinesePunct/fixTermTypo` 默认值设置为 `false`
* v2.1
  * 添加 options.upload.file 方法
  * options.preview 修改,支持 MathJax 配置
  * 移除 mathRenderByLute 方法
  * 添加 setTheme 方法,classic.scss -> index.scss
* v2.0
  * 默认为 WYSIWYG 模式,可根据需要修改 option.mode 参数
  * 添加 options.debugger, options.value
* v1.9
  * preview 静态方法参数修改为 `(previewElement: HTMLDivElement, markdown: string, options?: IPreviewOptions)`,其中参数 `IPreviewOptions` 修改为
    ```ts
        anchor?: boolean;
        className?: string;
        customEmoji?: { [key: string]: string };
        lang?: (keyof II18nLang);
        emojiPath?: string;
        hljs?: {
            lineNumber?: boolean;
            style?: string;
            enable?: boolean;
        };
        speech?: {
            enable?: boolean
        }
    ```
  * highlightRender 参数修改为 `(hljs?: IHljs, element?: HTMLElement | Document)`
* v1.8
  * `getHTML` 方法移除参数
  * `md2html` 静态方法参数修改为 `(mdText: string, options?: IPreviewOptions)`
  * `mathRender` 参数修改为 `(element: HTMLElement)`
  * `preview.hljs.style` 默认值修改为 `github`,可选值参见[chroma](https://xyproto.github.io/splash/docs/longer/all.html)
  * 添加 `typewriterMode` 配置,默认值为 false。1.7 版本用户需要手动开启该功能
* v1.7
  * `option.preivew.show?: boolean` => `option.preivew.mode?: string`
  * 移除 `option.editorName`

### v3.8.18 / 2022-11-01

* [1325](https://github.com/Vanessa219/vditor/pull/1325) 日语改进 `文档相关`
* [1312](https://github.com/Vanessa219/vditor/issues/1312) 导出 PDF 图表缺失 `修复缺陷`
* [1297](https://github.com/Vanessa219/vditor/issues/1297) mermaid 升级到 9.1.7 `改进功能`
* [1289](https://github.com/Vanessa219/vditor/issues/1289) 切换输入法后光标错位 `兼容性`
* [1278](https://github.com/Vanessa219/vditor/issues/1278) RenderJSON 导出的 JSON 不正确 `修复缺陷`
* [1275](https://github.com/Vanessa219/vditor/issues/1275) XSS 安全漏洞 `修复缺陷`

### v3.8.17 / 2022-08-04

* [1270](https://github.com/Vanessa219/vditor/issues/1270) 切换编辑模式 SV 脚注缩进丢失 `修复缺陷`
* [1274](https://github.com/Vanessa219/vditor/issues/1274) XSS 安全漏洞 `修复缺陷`
* [1269](https://github.com/Vanessa219/vditor/issues/1269) 代码块自动补全会包含链接引用和脚注 `修复缺陷`
* [1263](https://github.com/Vanessa219/vditor/issues/1263) 所见即所得和即使渲染只有空格输入时,不会触发 input 事件 `修复缺陷`
* [1264](https://github.com/Vanessa219/vditor/issues/1264) 链接中,会强制将&reg解析为 ® 字符 `修复缺陷`
* [1242](https://github.com/Vanessa219/vditor/issues/1242) 在即时渲染模式下表格源文件未对齐 `改进功能`

### v3.8.15 / 2022-05-24

* [1241](https://github.com/Vanessa219/vditor/issues/1241) 默认 CDN 从 cdn.jsdelivr.net 切换到 unpkg.com `改进功能`
* [1231](https://github.com/Vanessa219/vditor/pull/1231) 支持使用 Base64 显示图片 `引入特性`
* [1235](https://github.com/Vanessa219/vditor/issues/1235) 自定义上传无法连续上传相同的图片 `修复缺陷`
* [1228](https://github.com/Vanessa219/vditor/issues/1228) 使用删除图标删除后,大纲没有自动更新 `修复缺陷`
* [1230](https://github.com/Vanessa219/vditor/issues/1230) cnd preview path 重复加载问题 `改进功能`

### v3.8.14 / 2022-05

* [1223](https://github.com/Vanessa219/vditor/issues/1223) 关于有时显示不完整 `修复缺陷`
* [1218](https://github.com/Vanessa219/vditor/issues/1218) 高度设置为 string 时,大纲锚点失效 `修复缺陷`
* [1215](https://github.com/Vanessa219/vditor/issues/1215) sv 模式 setValue 导致状态错误 `修复缺陷`
* [1219](https://github.com/Vanessa219/vditor/issues/1219) vditor.destroy 报错 `修复缺陷`
* [1208](https://github.com/Vanessa219/vditor/pull/1208) Sass -> Less `开发重构`
* [1209](https://github.com/Vanessa219/vditor/issues/1209) 侧栏大纲内容未转义 `修复缺陷`
* [1207](https://github.com/Vanessa219/vditor/issues/1207) 3.8.13 源码 build 报错 `修复缺陷`

### v3.8.13 / 2022-03-31

* [1206](https://github.com/Vanessa219/vditor/issues/1206) 评论语法解析和行级 HTML 解析冲突 `修复缺陷`
* [1054](https://github.com/Vanessa219/vditor/issues/1054) disabled 后应禁止粘贴 `修复缺陷`
* [1162](https://github.com/Vanessa219/vditor/issues/1162) XSS 安全漏洞 `修复缺陷`
* [1203](https://github.com/Vanessa219/vditor/issues/1203) 支持 solidity, yul 语法 `引入特性`
* [1176](https://github.com/Vanessa219/vditor/issues/1176) 代码规范 lint 从 Tslint 迁移至 Eslint `开发重构`
* [1178](https://github.com/Vanessa219/vditor/issues/1198) 调用 insertValue 后第一次用户输入没有触发 input 回调函数 `修复缺陷`
* [1179](https://github.com/Vanessa219/vditor/pull/1179) 更新代码风格工具&包管理工具 `开发重构`

### v3.8.12 / 2022-03-03

* [1184](https://github.com/Vanessa219/vditor/issues/1184) wysiwyg 模式下,录音渲染出现问题,无法正常显示 audio 组件 `修复缺陷`
* [1182](https://github.com/Vanessa219/vditor/issues/1182) 撤销后大纲不会刷新 `修复缺陷`
* [1178](https://github.com/Vanessa219/vditor/issues/1178) 3.8.12 中使用 highlight.js 渲染的代码块无法高亮 `修复缺陷`
* [1171](https://github.com/Vanessa219/vditor/issues/1171) 代码编辑区域未能按照预期隐藏 `改进功能`
* [1177](https://github.com/Vanessa219/vditor/pull/1177) 优化 Emoji 绑定事件 `开发重构`

### v3.8.11 / 2022-01-22

* [1156](https://github.com/Vanessa219/vditor/issues/1156) 所见即所得行级 HTML 解析错误 `修复缺陷`
* [1133](https://github.com/Vanessa219/vditor/issues/1133) SVG 事件导致的 XSS 漏洞 `修复缺陷`
* [1158](https://github.com/Vanessa219/vditor/pull/1158) Add mhchem support to KaTex `引入特性`
* [1153](https://github.com/Vanessa219/vditor/issues/1153) vditor 的生产代码未经 minify `改进功能`
* [1004](https://github.com/Vanessa219/vditor/issues/1004) options.input无法监听点击toolbar link的输入内容 `改进功能`

### v3.8.10 / 2021-12-21

* [1134](https://github.com/Vanessa219/vditor/issues/1134) 渲染时代码块复制图标报错 `修复缺陷`
* [1129](https://github.com/Vanessa219/vditor/pull/1129) WYSIWYG 下,点击语言后光标切换到代码输入框中 `改进功能`
* [1122](https://github.com/Vanessa219/vditor/pull/1122) 预览中退出全屏后,工具栏布局错误 `修复缺陷`
* [1123](https://github.com/Vanessa219/vditor/pull/1123) 预览模式下,工具栏不自动隐藏 `改进功能`
* [1124](https://github.com/Vanessa219/vditor/pull/1124) 在焦点更改后,代码选择列表不自动隐藏 `改进功能`
* [1121](https://github.com/Vanessa219/vditor/pull/1121) WYSIWYG 下,Enter 也可以切换到代码输入框中 `改进功能`
* [1103](https://github.com/Vanessa219/vditor/pull/1103) 支持多语言切换 `改进功能`
* [1105](https://github.com/Vanessa219/vditor/pull/1105) 兼容 Firefox 中的代码语言选择 `修复缺陷`
* [1098](https://github.com/Vanessa219/vditor/pull/1098) 兼容 Firefox 中的文件拖拽 `修复缺陷`
* [1097](https://github.com/Vanessa219/vditor/pull/1097) options.hint.extend[].hint 支持异步 `改进功能`
* [1101](https://github.com/Vanessa219/vditor/pull/1101) 支持 options.upload.handler 异步 `改进功能`
* [1089](https://github.com/Vanessa219/vditor/pull/1089) 解决内存泄漏问题 `开发重构`
* [158](https://github.com/88250/lute/issues/158) Table 紧跟的上一行不是空行时,SpinVditorSVDOM 会将整个表格过滤掉 `修复缺陷`

### v3.8.7 / 2021-09-21

* [1049](https://github.com/Vanessa219/vditor/issues/1049) #后面没有空格也会渲染为标题 `修复缺陷`
* [1085](https://github.com/Vanessa219/vditor/issues/1085) XSS 漏洞修复 `修复缺陷`
* [1074](https://github.com/Vanessa219/vditor/issues/1074) 升级 webpack-dev-server & node-sass `开发重构`
* [1063](https://github.com/Vanessa219/vditor/issues/1063) 所见即所得模式链接引用语法中链接文本包含行级嵌套的问题 `修复缺陷`
* [1047](https://github.com/Vanessa219/vditor/issues/1047) 列表换行问题 `修复缺陷`
* [974](https://github.com/Vanessa219/vditor/issues/974) 所见即所得模式下行级元素间的空格会被删除 `修复缺陷`
* [1029](https://github.com/Vanessa219/vditor/issues/1029) 公式内小于号大于号等没有转义 `修复缺陷`
* [1036](https://github.com/Vanessa219/vditor/issues/1036) 标题设置没有配置多语言 `改进功能`
* [957](https://github.com/Vanessa219/vditor/issues/957) 支持表格横向滚动 `引入特性`
* [1038](https://github.com/Vanessa219/vditor/issues/1038) 图片使用 pointer 样式 `改进功能`
* [1034](https://github.com/Vanessa219/vditor/pull/1034) Support Vue and Angular `改进功能`
* [1016](https://github.com/Vanessa219/vditor/pull/1016) Support Svelte `文档相关`
* [1009](https://github.com/Vanessa219/vditor/pull/1009/) 对于 markdown 目录下的渲染方法新增 适配模块 `引入特性`
* [1011](https://github.com/Vanessa219/vditor/issues/1011) 支持导出 JSON `引入特性`
* [1010](https://github.com/Vanessa219/vditor/issues/1010) 多语言分离 `改进功能`
* [1008](https://github.com/Vanessa219/vditor/pull/1008) 自定义多语言 `引入特性`
* [1000](https://github.com/Vanessa219/vditor/issues/1000) 升级 hljs 并添加更多的语言支持 `改进功能`
* [993](https://github.com/Vanessa219/vditor/pull/993) 加入繁體中文 `引入特性`
* [980](https://github.com/Vanessa219/vditor/pull/980) 流程图不应渲染代码高亮  `修复缺陷`
* [987](https://github.com/Vanessa219/vditor/pull/987) 完善 upload 必填项说明 `文档相关`
* [970](https://github.com/Vanessa219/vditor/pull/970) added ru_RU lang `引入特性`
* [955](https://github.com/Vanessa219/vditor/issues/955) 为 hint 内容添加是否进行 md 转换的设置 `改进功能`
* [956](https://github.com/Vanessa219/vditor/issues/956) 改进 plantuml 解析问题 `修复缺陷`
* [953](https://github.com/Vanessa219/vditor/issues/953) 标题删除需保留空行 `改进功能`
* [946](https://github.com/Vanessa219/vditor/issues/946) Improve delete behavior in the list item after the code block `修复缺陷`
* [949](https://github.com/Vanessa219/vditor/issues/949) lute.Md2HTML 3.7.5 后解析无 id 属性 `修复缺陷`
* [936](https://github.com/Vanessa219/vditor/issues/936) Auto link `.app` domain suffix `改进功能`
* [926](https://github.com/Vanessa219/vditor/issues/926) 即时渲染和所见即所得模式支持点击链接 `引入特性`
* [938](https://github.com/Vanessa219/vditor/issues/938) 大纲缺少样式 `修复缺陷`
* [928](https://github.com/Vanessa219/vditor/issues/928) Mathjax 资源缺失及添加 license `修复缺陷`
* [720](https://github.com/Vanessa219/vditor/issues/720) 在光标位置插入内容的问题 `改进功能`
* [751](https://github.com/Vanessa219/vditor/issues/751) firefox 代码块中 enter 键换行问题 `修复缺陷`
* [923](https://github.com/Vanessa219/vditor/issues/923) 隐藏预览操作栏 `改进功能`
* [921](https://github.com/Vanessa219/vditor/issues/921) MS Word 表格粘贴问题 `修复缺陷`
* [922](https://github.com/Vanessa219/vditor/issues/922) MS Excel 粘贴带图表格问题 `修复缺陷`
* [904](https://github.com/Vanessa219/vditor/issues/904) wysiwyg 和 ir 模式表格增加向上插入行和向左插入列 `改进功能`
* [920](https://github.com/Vanessa219/vditor/issues/920) ” 无法输入 `修复缺陷`
* [919](https://github.com/Vanessa219/vditor/issues/919) 支持外部文本内容拖拽进入编辑器 `改进功能`
* [917](https://github.com/Vanessa219/vditor/issues/917) intsertValue无法一次添加多行markdown内容 `修复缺陷`
* [910](https://github.com/Vanessa219/vditor/issues/910) 编辑列表内容时出现的问题 `改进功能`
* [913](https://github.com/Vanessa219/vditor/pull/913) 支持plantuml `引入特性`
* [907](https://github.com/Vanessa219/vditor/issues/907) mathjax 在method.min.js 中preview 显示错误 `修复缺陷`
* [909](https://github.com/Vanessa219/vditor/issues/909) toc 和大纲中数学公式显示问题修复 `修复缺陷`
* [908](https://github.com/Vanessa219/vditor/issues/908) 粘贴不了 MS Office Excel 内容的问题 `修复缺陷`
* 文档修改
  * 3.8.0
    * 添加 plantumlRender 方法
    * options.input 移除 previewElement 参数
  * 3.8.1
    * 添加表格增加向上插入行 ⇧⌘F 和向左插入列 ⇧⌘G 的快捷键
    * 快捷键配置格式修改为 ⇧⌘[] / ⌘[] / ⌥⌘[]
  * 3.8.4
    * 添加 hint.parse 配置
  * 3.8.5
    * codeRender 方法中移除 lang 参数
    * 为 options 添加 i18n 语言自定义参数
    * 添加 exportJSON 方法

### v3.7.7 / 2021-01-19

* [903](https://github.com/Vanessa219/vditor/issues/903) 使用 setValue 后第一次输入无法撤销 `修复缺陷`
* [902](https://github.com/Vanessa219/vditor/issues/902) hint 内容为 md 时,需进行渲染 `改进功能`
* [900](https://github.com/Vanessa219/vditor/issues/900) img标签图片无法显示 `修复缺陷`
* [901](https://github.com/Vanessa219/vditor/issues/901) 预览区域代码点击复制无效 `修复缺陷`
* [890](https://github.com/Vanessa219/vditor/issues/890) Can not delete the special tag(Wysiwyg mode) `修复缺陷`
* [894](https://github.com/Vanessa219/vditor/issues/894) 代码块下紧跟一张图片,使用回退键删除图片时光标跑到代码块里,图片不能删除 `修复缺陷`
* [659](https://github.com/Vanessa219/vditor/issues/659) IR 模式复制粘贴 <kbd> 问题 `修复缺陷`
* [888](https://github.com/Vanessa219/vditor/issues/888) 大纲点击错误 `修复缺陷`
* [884](https://github.com/Vanessa219/vditor/issues/884) 工具栏自定义按钮禁用 `改进功能`
* [877](https://github.com/Vanessa219/vditor/issues/877) 数学公式输入删除生成节点 `修复缺陷`
* [882](https://github.com/Vanessa219/vditor/issues/882) 改进 HTML 转换 Markdown 时加粗、斜体等空格的处理 `改进功能`
* [878](https://github.com/Vanessa219/vditor/issues/878) 移除列表标记符中文优化 `改进功能`
* [875](https://github.com/Vanessa219/vditor/issues/875) 增加大纲位置配置 `引入特性`
* [873](https://github.com/Vanessa219/vditor/issues/873) graphviz,mermaid 在为空时不应出现错误提示 `改进功能`
* [872](https://github.com/Vanessa219/vditor/issues/872) vditor.options.upload.file 支持 await `改进功能`
* [871](https://github.com/Vanessa219/vditor/issues/871) 大纲标题过长需显示省略号 `改进功能`
* [866](https://github.com/Vanessa219/vditor/issues/866) 预览配置开启自动空格后,链接中有中文,无法正常解析 `改进功能`
* [868](https://github.com/Vanessa219/vditor/issues/868) 将 Markdown 引擎选项拆分为解析选项和渲染选项 `改进功能`
* [869](https://github.com/Vanessa219/vditor/issues/869) 移除 options.preview.markdown. chinesePunct 配置 `开发重构`
* [848](https://github.com/Vanessa219/vditor/issues/848) 即时渲染模式下FireFox浏览器光标问题 `修复缺陷`
* [847](https://github.com/Vanessa219/vditor/issues/847) 即时渲染状态下 Firefox 删除线出错 `修复缺陷`
* [858](https://github.com/Vanessa219/vditor/issues/858) 预览模式下应禁用工具栏上传按钮 `修复缺陷`
* [849](https://github.com/Vanessa219/vditor/issues/849) 固定工具栏模式下点击全屏打开后导航栏位置异常 `修复缺陷`
* [855](https://github.com/Vanessa219/vditor/issues/855) 添加全屏 z-index 设置 `引入特性`
* [850](https://github.com/Vanessa219/vditor/issues/850) 工具栏大纲按钮点击后焦点并未回到内容区 `改进功能`
* [840](https://github.com/Vanessa219/vditor/issues/840) 关于移动端图片点击需求 `引入特性`
* [842](https://github.com/Vanessa219/vditor/issues/842) 大纲无法展示 `修复缺陷`
* [673](https://github.com/Vanessa219/vditor/issues/673) 复制粘贴 Excel 内容转换为表格问题 `修复缺陷`
* [742](https://github.com/Vanessa219/vditor/issues/742) IR 模式块引用换行问题 `修复缺陷`
* [759](https://github.com/Vanessa219/vditor/issues/759) 添加数字统计回调函数 `引入特性`
* [835](https://github.com/Vanessa219/vditor/issues/835) 历史性能优化 `改进功能`
* [837](https://github.com/Vanessa219/vditor/issues/837) 历史记录添加时间间隔配置 `引入特性`
* [479](https://github.com/Vanessa219/vditor/issues/479) 大纲折叠 `改进功能`
* [830](https://github.com/Vanessa219/vditor/issues/830) ToC 优化 `改进功能`
* [828](https://github.com/Vanessa219/vditor/issues/828) 为 Vditor.preview 添加 mode 设置 `修复缺陷`
* 文档修改
  * 3.7.0
    * `preview` 静态方法添加 `mode` 配置
    * 大纲 DOM 结构和 class 变更
  * 3.7.1
    * 添加 `options.undoDelay` 配置
    * 添加 `options.counter.after` 回调方法
  * 3.7.2
    * 添加 `previewImage` 静态方法
  * 3.7.3
    * 添加 `options.fullscreen.index`
  * 3.7.4
    * 移除`options.preview.markdown.chinesePunct` 配置
  * 3.7.5
    * `options.outline` 修改为 `{ enable: boolean, position: "left" | "right" }`
    * `toolbar.click` 参数修改为 `event: Event, vditor: IVditor`

### v3.6.6 / 2020-11-23

* [824](https://github.com/Vanessa219/vditor/issues/824) 流程图大小可自适应 & 居中 `引入特性`
* [822](https://github.com/Vanessa219/vditor/issues/822) 流程图、甘特图、时序图、图表、脑图、五线谱、添加暗黑模式 `引入特性`
* [823](https://github.com/Vanessa219/vditor/issues/823) 数学公式块去除背景 `改进功能`
* [761](https://github.com/Vanessa219/vditor/issues/761) 列表项批量缩进和取消缩进 `改进功能`
* [819](https://github.com/Vanessa219/vditor/issues/819) 粘贴后滚动到粘贴内容末尾 bug `修复缺陷`
* [815](https://github.com/Vanessa219/vditor/issues/815) wysiwyg sv 表格切换会多内容 `修复缺陷`
* [814](https://github.com/Vanessa219/vditor/issues/814) 划词评论纯文本以外的其他元素处理 `修复缺陷`
* [812](https://github.com/Vanessa219/vditor/issues/812) 粘贴时减少抖动优化 `改进功能`
* [810](https://github.com/Vanessa219/vditor/issues/810) 所见即所得模式划词评论功能改进 `修复缺陷`
* [807](https://github.com/Vanessa219/vditor/issues/807) 脚注和链接引用改进 `改进功能`
* [721](https://github.com/Vanessa219/vditor/issues/721) 所见即所得模式加入划词评论 `引入特性`
* [808](https://github.com/Vanessa219/vditor/issues/808) options.preview.actions 添加的自定义 tooltip `改进功能`
* [802](https://github.com/Vanessa219/vditor/issues/802) 粘贴后需滚动到粘贴内容的末尾 `改进功能`
* [806](https://github.com/Vanessa219/vditor/pull/806) 修复201不算成功的问题  `改进功能`
* [786](https://github.com/Vanessa219/vditor/issues/786) 数学公式块预览开关 `引入特性`
* [800](https://github.com/Vanessa219/vditor/issues/800) WG 模式代码块预览开关问题 `修复缺陷`
* [801](https://github.com/Vanessa219/vditor/issues/801) 编辑器拖拽问题 `修复缺陷`
* [796](https://github.com/Vanessa219/vditor/issues/796) 列表项合并 `改进功能`
* [787](https://github.com/Vanessa219/vditor/issues/787) IR 模式 Setext 风格标题编辑问题 `修复缺陷`
* [784](https://github.com/Vanessa219/vditor/issues/784) 从 WPS 粘贴时标题转 Markdown 优化 `改进功能`
* [781](https://github.com/Vanessa219/vditor/issues/781) 增加 `linkPrefix` 用于强制对链接目标地址添加前缀 `引入特性`
* [780](https://github.com/Vanessa219/vditor/pull/780) linkToImg支持自定义format `引入特性`
* 文档修改
  * 3.6.1
   * `options.preview.actions` 添加 `tooltip`
   * 添加 `options.comment` 及 `getCommentIds`, `hlCommentIds`, `unHlCommentIds`, `removeCommentIds` 方法
     ```
     comment?: {
         enable: boolean
         add?(id: string, text: string, commentsData: ICommentsData[]): void
         remove?(ids: string[]): void;
         scroll?(top: number): void;
         adjustTop?(commentsData: ICommentsData[]): void;
     };
     ```
  * 3.6.4
    * `mermaidRender` 添加 `theme` 参数
    * `mindmapRender` 添加 `theme` 参数
    * `chartRender` 添加 `theme` 参数

### v3.5.5 / 2020-10-12

* [777](https://github.com/Vanessa219/vditor/issues/777) blockquote 复制问题 `修复缺陷`
* [774](https://github.com/Vanessa219/vditor/issues/774) sv 模式在 table 后换行 bug`修复缺陷`
* [773](https://github.com/Vanessa219/vditor/issues/773) vditor支持FlowCharts的流程图语法 `引入特性`
* [770](https://github.com/Vanessa219/vditor/issues/770) 取消列表项自动合并 `改进功能`
* [768](https://github.com/Vanessa219/vditor/issues/768) mermaid 问题修复 `修复缺陷`
* [765](https://github.com/Vanessa219/vditor/issues/765) hint 组件中文回车及单引号转译修复 `修复缺陷`
* [746](https://github.com/Vanessa219/vditor/issues/746) 块引用 > 按下后即渲染(允许空内容的块引用) `改进功能`
* [757](https://github.com/Vanessa219/vditor/issues/757) 汉语拼音中文空格问题 `修复缺陷`
* [756](https://github.com/Vanessa219/vditor/issues/756) 任务列表编辑问题 `修复缺陷`
* [755](https://github.com/Vanessa219/vditor/issues/755) 撤销后光标位置改进 `修复缺陷`
* [746](https://github.com/Vanessa219/vditor/issues/746) 代码片段都没了 `修复缺陷`
* [753](https://github.com/Vanessa219/vditor/issues/753) 更新社区地址为 ld246.com `文档相关`
* [752](https://github.com/Vanessa219/vditor/issues/752) 图表和脑图 undo bug `修复缺陷`
* [749](https://github.com/Vanessa219/vditor/issues/749) 即时渲染模式转义符 \ 改进 `改进功能`
* [747](https://github.com/Vanessa219/vditor/issues/747) options.esc 中文处理 `改进功能`
* [744](https://github.com/Vanessa219/vditor/issues/744) IR 模式代码块闪烁 `修复缺陷`
* [748](https://github.com/Vanessa219/vditor/issues/748) 数学公式中出现中文不能渲染问题 `修复缺陷`
* [738](https://github.com/Vanessa219/vditor/issues/738) IR 模式标题变大变小快捷键及光标位置 `修复缺陷`
* [736](https://github.com/Vanessa219/vditor/issues/736) MathJax 数学公式会抖动 `改进功能`
* [735](https://github.com/Vanessa219/vditor/issues/735) 官网地址及桌面端地址修改 `文档相关`
* [730](https://github.com/Vanessa219/vditor/issues/730) 数学公式细节处理 `修复缺陷`
* 文档修改
  * 3.5.5 `mermaidRender` 移除 `className` 参数;添加 `flowchartRender` 方法

### v3.4.7 / 2020-08-22

* [717](https://github.com/Vanessa219/vditor/issues/717) 在IR模式下插入特殊字符的bug `修复缺陷`
* [719](https://github.com/Vanessa219/vditor/issues/719) 支持 ==Mark== 标记语法 `引入特性`
* [711](https://github.com/Vanessa219/vditor/issues/711) 调试工具栏图颜色不适配暗黑主题 `改进功能`
* [718](https://github.com/Vanessa219/vditor/issues/718) 脚注太长浮层渲染溢出 `修复缺陷`
* [716](https://github.com/Vanessa219/vditor/issues/716) insertValue 无法插入html文本 `改进功能`
* [714](https://github.com/Vanessa219/vditor/issues/714) preview 数学公式解析问题 `修复缺陷`
* [709](https://github.com/Vanessa219/vditor/issues/709) 操作栏按钮快速点击问题「ir」「wysiwyg」模式 `改进功能`
* [706](https://github.com/Vanessa219/vditor/issues/706) 光标非正常移动 `修复缺陷`
* [676](https://github.com/Vanessa219/vditor/issues/676) 请求:增加 Ant Design 主题 `引入特性`
* [703](https://github.com/Vanessa219/vditor/issues/703) codeblock with backspace(IR) `修复缺陷`
* [708](https://github.com/Vanessa219/vditor/issues/708) linkToImgUrl 方法添加 token `改进功能`
* [701](https://github.com/Vanessa219/vditor/issues/701) 复制到微信、知乎的改进 `改进功能`
* [684](https://github.com/Vanessa219/vditor/issues/684) 图片使用引用风格时的解析问题 `修复缺陷`
* [698](https://github.com/Vanessa219/vditor/issues/698) 图片上传解析问题 `修复缺陷`
* [696](https://github.com/Vanessa219/vditor/issues/696) 图片参考式解析问题 `修复缺陷`
* [694](https://github.com/Vanessa219/vditor/pull/694) Fix expandmarker for node element `修复缺陷`
* [697](https://github.com/Vanessa219/vditor/pull/697) 修复Lute类型的定义 `开发重构`
* [687](https://github.com/Vanessa219/vditor/issues/687) Code 内 Enter/Backspace/Delete 可能不触发 input,并导致 Code 不及时渲染 `改进功能`
* [685](https://github.com/Vanessa219/vditor/issues/685) options.icon 增加判断如果没有该属性则不引入js `改进功能`
* [689](https://github.com/Vanessa219/vditor/pull/689) 存在软换行时,选中文本执行 Backspace,会导致内容异常 `修复缺陷`
* [686](https://github.com/Vanessa219/vditor/pull/686) 修正 Issue:Code 内 Delete 键可能删除过多内容 & Code 内 回车后光标位置异常 `修复缺陷`
* [681](https://github.com/Vanessa219/vditor/pull/681) 修正 ExpandMarker 规则,避免无法取消选中区域 `修复缺陷`
* [653](https://github.com/Vanessa219/vditor/issues/653) [Feature Request] Hashtag `引入特性`
* [441](https://github.com/Vanessa219/vditor/issues/441) 对标 Typora 反馈 `改进功能`
* [669](https://github.com/Vanessa219/vditor/issues/669) links problem(Wysiwyg) `改进功能`
* [667](https://github.com/Vanessa219/vditor/issues/667) lists (SV) `修复缺陷`
* [446](https://github.com/Vanessa219/vditor/issues/446) 改进复制粘贴链接体验 `引入特性`
* [658](https://github.com/Vanessa219/vditor/issues/658) SV 模式打字机模式问题 `修复缺陷`
* [655](https://github.com/Vanessa219/vditor/issues/655) SV 模式代码块开始标记符 info 后回车问题 `修复缺陷`
* [656](https://github.com/Vanessa219/vditor/issues/656) SV 模式有序列表延续问题 `修复缺陷`
* [654](https://github.com/Vanessa219/vditor/issues/654) SV 模式 Placeholder 显示问题 `修复缺陷`
* [650](https://github.com/Vanessa219/vditor/pull/650) 全选剪切及任务列表样式和点击问题改进 `修复缺陷`
* [636](https://github.com/Vanessa219/vditor/issues/636) SV 模式 Setext 标题问题 `修复缺陷`
* [647](https://github.com/Vanessa219/vditor/pull/647) 即时渲染模式输入 ``` 后会弹出 hint,此时执行 undo 后, hint 不消失 `改进功能`
* [643](https://github.com/Vanessa219/vditor/issues/643) 支持 YAML Front Matter `引入特性`
* [648](https://github.com/Vanessa219/vditor/pull/648) added ja_JP lang `改进功能`
* [644](https://github.com/Vanessa219/vditor/pull/644) 粘贴多行代码时,避免代码段与当前行内容混淆在一起 `改进功能`
* [639](https://github.com/Vanessa219/vditor/issues/639) 列表嵌套代码块后输入中文的问题 `修复缺陷`
* [641](https://github.com/Vanessa219/vditor/issues/641) 清空 undo 栈后,第一次编辑操作无法进行记录 `修复缺陷`
* [640](https://github.com/Vanessa219/vditor/issues/640) options.icon 无法进行切换 `改进功能`
* [638](https://github.com/Vanessa219/vditor/pull/638) ir模式下图片编辑时很难触发md图片代码显示 `改进功能`
* 文档修改
  * 3.4.2 `options.hint.at` => "options.hint.extend: IHintExtend[]"
  * 3.4.7 删除线快捷键修改为 `⌘-D`
  * 3.4.8 添加 `options.preview.markdown.mark` 配置

### v3.3.12 / 2020-07-28

* [632](https://github.com/Vanessa219/vditor/issues/632) 复制代码块解析优化 `改进功能`
* [627](https://github.com/Vanessa219/vditor/issues/627) 为 <kbd> 提供单独的渲染效果 `改进功能`
* [621](https://github.com/Vanessa219/vditor/issues/621) 粘贴数学公式时渲染报错 `修复缺陷`
* [619](https://github.com/Vanessa219/vditor/issues/619) 即时渲染下list删除(或剪切)的问题 `修复缺陷`
* [633](https://github.com/Vanessa219/vditor/issues/633) SV 模式光标在列表标记符中的问题 `修复缺陷`
* [623](https://github.com/Vanessa219/vditor/pull/623) 修复即时渲染模式下复制光标位置错误和添加位置错误的问题 `修复缺陷`
* [608](https://github.com/Vanessa219/vditor/issues/608) 更新使用截图和演示动画 `文档相关`
* [587](https://github.com/Vanessa219/vditor/issues/587) IR & SV 保留 Setext 风格标题 `改进功能`
* [626](https://github.com/Vanessa219/vditor/issues/626) 去除 Setext 标题解析开关 `开发重构`
* [451](https://github.com/Vanessa219/vditor/issues/451) IR 模式保留 Emoji 原始输入 `改进功能`
* [620](https://github.com/Vanessa219/vditor/issues/620) 支持多套图标配置 `引入特性`
* [578](https://github.com/Vanessa219/vditor/issues/578) 添加 ant-design 及 Material 风格的图标 `改进功能`
* [614](https://github.com/Vanessa219/vditor/issues/614) 添加 linkToImgUrl 回调 `引入特性`
* [617](https://github.com/Vanessa219/vditor/issues/617) options.preview.theme.current 需设置不使用主题样式 `改进功能`
* [611](https://github.com/Vanessa219/vditor/issues/611) SV 模式粘贴图片拉取上传问题 `修复缺陷`
* [616](https://github.com/Vanessa219/vditor/pull/616) fix: safari下选中文字添加标题文字会消失 `修复缺陷`
* [615](https://github.com/Vanessa219/vditor/issues/615) 即时渲染模式下在safari中光标位置跳动 `修复缺陷`
* [596](https://github.com/Vanessa219/vditor/issues/596) blockquote insdie ordered list `改进功能`
* [605](https://github.com/Vanessa219/vditor/issues/605) 块节点上下插入的优化 `改进功能`
* [602](https://github.com/Vanessa219/vditor/issues/602) Three enters inside codeblock `修复缺陷`
* [600](https://github.com/Vanessa219/vditor/issues/600) codeblock inside footnote `修复缺陷`
* [590](https://github.com/Vanessa219/vditor/pull/590) Set value issue `修复缺陷`
* [594](https://github.com/Vanessa219/vditor/issues/594) Blockquote, ordered list and code block `改进功能`
* [593](https://github.com/Vanessa219/vditor/issues/593) IR 模式焦点离开时的渲染问题 `改进功能`
* [604](https://github.com/Vanessa219/vditor/issues/604) 站外图片抓取请求的 Content-Type 是 text/plain `改进功能`
* [597](https://github.com/Vanessa219/vditor/issues/597) one more backspace before delete lists `修复缺陷`
* [599](https://github.com/Vanessa219/vditor/issues/599) Ordered list(minor bug) `修复缺陷`
* [591](https://github.com/Vanessa219/vditor/issues/591) 粘贴有可能不渲染本行内容 `改进功能`
* [586](https://github.com/Vanessa219/vditor/issues/586) code block inside ordered list `修复缺陷`
* [585](https://github.com/Vanessa219/vditor/issues/585) [suggestion] when enter after code block inside blockqoute `改进功能`
* [584](https://github.com/Vanessa219/vditor/issues/584) Can not delete Code block `修复缺陷`
* [588](https://github.com/Vanessa219/vditor/issues/588) 第五版 SV 模式 bug 记录 `修复缺陷`
* [259](https://github.com/Vanessa219/vditor/issues/259) 分屏预览模式列表项自动完成 `引入特性`
* [580](https://github.com/Vanessa219/vditor/issues/580) 重构 SV 模式 DOM `开发重构`
* [567](https://github.com/Vanessa219/vditor/issues/567) SV 模式块引用嵌套列表、代码块问题 `修复缺陷`
* [563](https://github.com/Vanessa219/vditor/issues/563) SV 模式列表项下的代码块问题 `修复缺陷`
* [579](https://github.com/Vanessa219/vditor/issues/579) 样式调整 `改进功能`
* [575](https://github.com/Vanessa219/vditor/issues/575) 编辑器存在 form 中,情景菜单会出发提交事件 `修复缺陷`
* [577](https://github.com/Vanessa219/vditor/issues/577) 粘贴 XML 代码问题 `修复缺陷`
* [573](https://github.com/Vanessa219/vditor/pull/573) style: 优化分隔符样式 `改进功能`
* [572](https://github.com/Vanessa219/vditor/pull/572) fix: support aliyun oss `改进功能`
* [570](https://github.com/Vanessa219/vditor/issues/570) no placeholder after(SV) `修复缺陷`
* [569](https://github.com/Vanessa219/vditor/issues/569) 预览区域工具栏配置 `引入特性`
* [565](https://github.com/Vanessa219/vditor/issues/565) SV 模式支持缩进代码块 `改进功能`
* [566](https://github.com/Vanessa219/vditor/issues/566) 行级代码解析渲染 `修复缺陷`
* [555](https://github.com/Vanessa219/vditor/issues/555) SV 模式段落块拆分问题 `修复缺陷`
* [556](https://github.com/Vanessa219/vditor/issues/556) options.preview.markdown.setext 默认值修改为 true `改进功能`
* [554](https://github.com/Vanessa219/vditor/issues/554) SV 模式 Ctrl+u 代码块生成光标初始定位优化 `改进功能`
* [558](https://github.com/Vanessa219/vditor/issues/558) [suggestion] shift+enter and end the lists `改进功能`
* [547](https://github.com/Vanessa219/vditor/issues/547) 文件上传 format 第一个参数 files 为空数组 `修复缺陷`
* [562](https://github.com/Vanessa219/vditor/issues/562) 为上传添加 fieldName 选项 `引入特性`
* [553](https://github.com/Vanessa219/vditor/issues/553) 子任务列表回车问题 `改进功能`
* [534](https://github.com/Vanessa219/vditor/issues/534) 支持导出到知乎 `引入特性`
* [552](https://github.com/Vanessa219/vditor/issues/552) blockquote 换行需逐层跳出 `修复缺陷`
* [551](https://github.com/Vanessa219/vditor/issues/551) Tab and ctrl+shift+J (checkbox) `修复缺陷`
* [550](https://github.com/Vanessa219/vditor/issues/550) [Mermaid] State diagram rendering of multiple same node loops `修复缺陷`
* [549](https://github.com/Vanessa219/vditor/issues/549) 粘贴 HTML 内容失败 `修复缺陷`
* [548](https://github.com/Vanessa219/vditor/issues/548) 添加文件上传多选/单选配置 `引入特性`
* [545](https://github.com/Vanessa219/vditor/issues/545) SV 模式列表项下输入代码块问题 `修复缺陷`
* [544](https://github.com/Vanessa219/vditor/issues/544) SV 模式有序列表缩进问题 `修复缺陷`
* [543](https://github.com/Vanessa219/vditor/issues/543) SV 模式删除选择文本问题 `修复缺陷`
* [541](https://github.com/Vanessa219/vditor/issues/541) SV 模式列表和引用快捷键问题 `修复缺陷`
* [546](https://github.com/Vanessa219/vditor/issues/546) SV 模式丢失 headingID `修复缺陷`
* [539](https://github.com/Vanessa219/vditor/pull/539) 即时渲染模式 setValue 后,没有及时渲染 Code 区域 `修复缺陷`
* [536](https://github.com/Vanessa219/vditor/issues/536) 文件上传检查后缀忽略大小写 `改进功能`
* [537](https://github.com/Vanessa219/vditor/issues/537) 添加 destroy 方法 `引入特新`
* [532](https://github.com/Vanessa219/vditor/issues/532) 中文输入过程中不应记录 UndoStack `修复缺陷`
* [519](https://github.com/Vanessa219/vditor/issues/519) 扩展 markdown 主题 `改进功能`
* [533](https://github.com/Vanessa219/vditor/issues/533) 中文字符串中间插入 \ 字符导致乱码 `修复缺陷`
* [528](https://github.com/Vanessa219/vditor/issues/528) wysiwyg & ir 列表中有两个代码块时的错误 `修复缺陷`
* [531](https://github.com/Vanessa219/vditor/issues/531) 移除 options.keymap `改进功能`
* [529](https://github.com/Vanessa219/vditor/issues/529) 移除格式化按钮 `改进功能`
* [526](https://github.com/Vanessa219/vditor/issues/526) 字符串中带有 \ 符号时,从 \ 后面,但不是行尾 Backspace 删除字符到达 \ 时处理异常 `修复缺陷`
* [517](https://github.com/Vanessa219/vditor/issues/517) Duplicate CSS(render.html) `修复缺陷`
* [522](https://github.com/Vanessa219/vditor/issues/522) 从 WPS Office 复制文本,粘贴异常 `修复缺陷`
* [524](https://github.com/Vanessa219/vditor/issues/524) no background-color change(dark mode-abcjs) `修复缺陷`
* [516](https://github.com/Vanessa219/vditor/issues/516) 高亮自动填写功能未生效问题 `修复缺陷`
* [355](https://github.com/Vanessa219/vditor/issues/355) 新增 VditorSVDOM 渲染器 `引入特新`
* [499](https://github.com/Vanessa219/vditor/issues/499) Chrome 浏览器,Up 方向键 光标位置移动异常 `修复缺陷`
* [514](https://github.com/Vanessa219/vditor/issues/514) 只读没有禁用场景菜单 `修复缺陷`
* [501](https://github.com/Vanessa219/vditor/issues/501) 反斜杠 \ 转义问题 `改进功能`
* [508](https://github.com/Vanessa219/vditor/issues/508) 软键盘 bug `修复缺陷`
* [504](https://github.com/Vanessa219/vditor/issues/504) 解决编辑器中 esc 推出 hint 和 options.esc 冲突 `修复缺陷`
* [500](https://github.com/Vanessa219/vditor/issues/500) wysiwyg 模式下打字数学公式会闪 `改进功能`
* [498](https://github.com/Vanessa219/vditor/issues/498) 修复 <summary> <details> 标签编辑问题 `修复缺陷`
* [488](https://github.com/Vanessa219/vditor/pull/488) setValue 增加 clearStack 参数,添加 clearStack 方法 `引入特新`
* [478](https://github.com/Vanessa219/vditor/issues/478) add tip to footnote `改进功能`
* [492](https://github.com/Vanessa219/vditor/issues/492) 列表内含有代码块,修改列表中的文字时,代码块会闪 `修复缺陷`
* [496](https://github.com/Vanessa219/vditor/issues/496) 行级 HTML 空格问题 `修复缺陷`
* [495](https://github.com/Vanessa219/vditor/issues/495) 行级 HTML 退格问题 `修复缺陷`
* [494](https://github.com/Vanessa219/vditor/issues/494) 三种模式支持 list-style 样式 `改进功能`
* [489](https://github.com/Vanessa219/vditor/issues/489) 为 b3log.org/vditor/demo 添加源码 `改进功能`
* [493](https://github.com/Vanessa219/vditor/issues/493) 修复 XSS 过滤 `修复缺陷`
* [486](https://github.com/Vanessa219/vditor/pull/486) getCursorPosition 针对空行会得到错误数据 `修复缺陷`
* [485](https://github.com/Vanessa219/vditor/issues/485) IR 模式下,<details>的编辑问题 `修复缺陷`
* [484](https://github.com/Vanessa219/vditor/issues/484) 添加 TED 视频支持 `改进功能`
* [480](https://github.com/Vanessa219/vditor/issues/480) Mindmap 和 Echarts 内容为空时会报错 `修复缺陷`
* 文档修改
  * `options.markdown.listMarker` 修改为 `options.markdown.listStyle`
  * 为 `setValue` 方法添加 `clearStack` 参数;新增 `clearStack` 方法
  * 移除 `options.keymap`
  * 移除工具栏上的格式化功能
  * `setContentTheme` 参数修改为 `contentTheme: string, path: string`
  * `options.preview.markdow.theme` 修改为 `options.preview.theme`
  * `setTheme` 参数修改为 `theme: "dark" | "classic", contentTheme?: string, codeTheme?: string, contentThemePath?: string`
  * 移除 `setSelection`
  * 添加 `destroy` 方法
  * 添加 `options.upload.multiple`
  * 添加 `options.upload.fieldName`
  * `options.preview.markdown.setext` 默认值修改为 `true`
  * options.mode 默认值修改为 `ir`
  * 支持预览区域工具栏配置及自定义
  * 添加 `options.upload.linkToImgCallback`
  * 添加 `options.icon`
  * 移除 `options.preview.markdown.setext`

### v3.2.12 / 2020-06-07

* [475](https://github.com/Vanessa219/vditor/issues/475) 从网页和其它 md 编辑器中复制的 iframe 和 视频标签 无法粘贴到 Vditor `修复缺陷`
* [455](https://github.com/Vanessa219/vditor/issues/455) HTML 实体在切换编辑模式时的转义问题 `修复缺陷`
* [466](https://github.com/Vanessa219/vditor/issues/466) Tab is not working inside Quote(safari) `修复缺陷`
* [467](https://github.com/Vanessa219/vditor/issues/467) 为表格添加行列增删按钮 `引入特性`
* [472](https://github.com/Vanessa219/vditor/issues/472) Add details preview in ir mode `引入特性`
* [471](https://github.com/Vanessa219/vditor/issues/471) 移动端子工具栏箭头没对齐 `修复缺陷`
* [473](https://github.com/Vanessa219/vditor/issues/473) different between press "Ctrl+b" and click "B" icon. `修复缺陷`
* [463](https://github.com/Vanessa219/vditor/issues/463) 在行内代码中进行粘贴时光标位置不对及报错处理 `修复缺陷`
* [462](https://github.com/Vanessa219/vditor/issues/462) ctrl+z ir 模式没有渲染代码块 `修复缺陷`
* [456](https://github.com/Vanessa219/vditor/pull/456) 根据逗号/制表符生成表格 `引入特性`
* [453](https://github.com/Vanessa219/vditor/issues/453) bold 位于子菜单中无作用 `修复缺陷`
* [449](https://github.com/Vanessa219/vditor/issues/449) table(IR mode) `修复缺陷`
* [443](https://github.com/Vanessa219/vditor/issues/443) 快捷键中文版 `文档相关`
* [438](https://github.com/Vanessa219/vditor/issues/438) one empty line when ctrl+shift+h `改进功能`
* [439](https://github.com/Vanessa219/vditor/issues/439) not working ctrl+shift+x at links `修复缺陷`
* [444](https://github.com/Vanessa219/vditor/pull/444) delete tables when cells are empty `改进功能`
* [447](https://github.com/Vanessa219/vditor/pull/447) run vditor.insertValue('abc') throw error `修复缺陷`
* [435](https://github.com/Vanessa219/vditor/issues/435) task list 合并会添加 p 标签 `修复缺陷`
* [432](https://github.com/Vanessa219/vditor/issues/432) 代码块中输入 &pars 解析问题 `修复缺陷`
* [433](https://github.com/Vanessa219/vditor/issues/433) language position(code block, wysiwyg mode) `修复缺陷`
* [431](https://github.com/Vanessa219/vditor/issues/431) 链接、图片相对路径支持 `引入特性`
* [430](https://github.com/Vanessa219/vditor/issues/430) cursor location when press ctrl+b after checkbox `修复缺陷`
* [429](https://github.com/Vanessa219/vditor/issues/429) localStorage被禁用时,报错 `修复缺陷`
* [427](https://github.com/Vanessa219/vditor/issues/427) headings 大小调整 `改进功能`
* [422](https://github.com/Vanessa219/vditor/issues/422) inserted one line before table block(windows/Firefox) `修复缺陷`
* [425](https://github.com/Vanessa219/vditor/issues/425) 支持 flac 音频格式解析 `改进功能`
* [409](https://github.com/Vanessa219/vditor/issues/409) codeblock(mac safari) `修复缺陷`
* [407](https://github.com/Vanessa219/vditor/issues/407) cursor moving at tables(safari & firefox) `修复缺陷`
* [421](https://github.com/Vanessa219/vditor/issues/421) 添加 bilibili 视频网站解析 `改进功能`
* [420](https://github.com/Vanessa219/vditor/issues/420) 缓存时可以提供一个回调吗,我想同步到服务器上 `改进功能`
* [419](https://github.com/Vanessa219/vditor/issues/419) outline after update at smartphone `改进功能`
* [418](https://github.com/Vanessa219/vditor/issues/418) 点击侧边空白,光标会挪到尾部 `修复缺陷`
* [415](https://github.com/Vanessa219/vditor/issues/415) using local JS file `修复缺陷`
* [406](https://github.com/Vanessa219/vditor/issues/406) 相同标题内容 ID 生成问题 `修复缺陷`
* [412](https://github.com/Vanessa219/vditor/issues/412) 预览界面大纲无法定位 `修复缺陷`
* [411](https://github.com/Vanessa219/vditor/issues/411) 复制到微信公众号后代码块背景丢失 `修复缺陷`
* [410](https://github.com/Vanessa219/vditor/issues/410) not delete inline code(firfox) `修复缺陷`
* [405](https://github.com/Vanessa219/vditor/issues/405) translated mindmap into Korean `文档相关`
* [402](https://github.com/Vanessa219/vditor/issues/402) setValue 后 outline 没有渲染 `修复缺陷`
* [400](https://github.com/Vanessa219/vditor/issues/400) Heading(wysiwyg) windows firefox `修复缺陷`
* [401](https://github.com/Vanessa219/vditor/issues/401) render demo(mobile) `改进功能`
* [397](https://github.com/Vanessa219/vditor/issues/397) link(ctrl+k) at wysiwyg mode `改进功能`
* [399](https://github.com/Vanessa219/vditor/issues/399) When click empty editor pane `修复缺陷`
* [398](https://github.com/Vanessa219/vditor/issues/398) unnecessary line before ctrl+M(tables) at wysiwyg mode `修复缺陷`
* [395](https://github.com/Vanessa219/vditor/pull/395) Demo for reading external markdown text `改进功能`
* [386](https://github.com/Vanessa219/vditor/issues/386) [wysiwyg] 在代码块尾部按 arrowdown 插入空行 `改进功能`
* [396](https://github.com/Vanessa219/vditor/issues/396) click empty, append empty block `改进功能`
* [385](https://github.com/Vanessa219/vditor/issues/385) image title at wysiwyg `修复缺陷`
* [390](https://github.com/Vanessa219/vditor/issues/390) no data-marker(editing mode) `修复缺陷`
* [392](https://github.com/Vanessa219/vditor/issues/392) anchor option `改进功能`
* [389](https://github.com/Vanessa219/vditor/issues/389) marker option at preview `改进功能`
* [388](https://github.com/Vanessa219/vditor/pull/388) changed some korean i18n and demo text `文档相关`
* [383](https://github.com/Vanessa219/vditor/issues/383) 移动端移除侧边提示 `改进功能`
* [384](https://github.com/Vanessa219/vditor/issues/384) ctrl_+, ctrl_- at heading(wysiwyg) `修复缺陷`
* [321](https://github.com/Vanessa219/vditor/issues/321) 移动端如何调用toolbar的方法 `咨询提问`
* [382](https://github.com/Vanessa219/vditor/issues/382) sometimes the keyboard is hidden at smartphone `修复缺陷`
* [378](https://github.com/Vanessa219/vditor/issues/378) hover style in Mobile `修复缺陷`
* [379](https://github.com/Vanessa219/vditor/issues/379) Not sticky at IOS `修复缺陷`
* [381](https://github.com/Vanessa219/vditor/issues/381) 光标在内联数学公式中无法向下移动 `修复缺陷`
* [380](https://github.com/Vanessa219/vditor/issues/380) 修复 XSS 漏洞 `修复缺陷`
* [4](https://github.com/Vanessa219/vditor/issues/4) 添加支持思维导图的功能 `引入特性`
* [376](https://github.com/Vanessa219/vditor/issues/376) 为 markdown 添加 sanitize 设置 `引入特性`
* [375](https://github.com/Vanessa219/vditor/pull/375) upload 配置项添加额外请求参数 `引入特性`
* [372](https://github.com/Vanessa219/vditor/issues/372) 配置lineNumber为true后,代码复制按钮不出现 `修复缺陷`
* [373](https://github.com/Vanessa219/vditor/issues/373) toolbar 缺失 edit-mode 报错 `修复缺陷`
* [371](https://github.com/Vanessa219/vditor/issues/371) 列表项上下移动 `改进功能`
* [367](https://github.com/Vanessa219/vditor/issues/367) cursor up and down inside Table `改进功能`
* [368](https://github.com/Vanessa219/vditor/issues/368) Copy Paste multiline inside table `修复缺陷`
* [369](https://github.com/Vanessa219/vditor/issues/369) when paste, code can not highlight `修复缺陷`
* [370](https://github.com/Vanessa219/vditor/issues/370) Copy Paste multiline at markdown mode `改进功能`
* 文档修改
  * 为 `options.upload` 添加 `extraData` 配置
  * 添加静态方法 `mindmapRender`
  * 为 `IMarkdownConfig` 添加 `sanitize`, `listMarker`, `linkBase` 配置
  * IPreviewOptions.anchor 从 `boolean` 类型修改为 `number` 类型
  * 示例代码地址修改:static-preview.html => preview.html,static.html => b3log.org/vditor/demo/render.html
  * 添加 [Vditor](https://b3log.org/vditor) 官方首页
  * 添加缓存回调 `options.cache.after(markdown:string)`


### v3.1.23 / 2020-05-05

* [365](https://github.com/Vanessa219/vditor/issues/365) Emoji 6️⃣ `修复缺陷`
* [361](https://github.com/Vanessa219/vditor/issues/361) typing korean char. after end of code block at IR `修复缺陷`
* [358](https://github.com/Vanessa219/vditor/issues/358) cursor up and down at IR mode `修复缺陷`
* [363](https://github.com/Vanessa219/vditor/issues/363) Copy Paste (HTML2Markdown) issue `修复缺陷`
* [360](https://github.com/Vanessa219/vditor/issues/360) typing fast(code block) at IR `修复缺陷`
* [364](https://github.com/Vanessa219/vditor/issues/364) 复制粘贴过滤掉 svg 标签 `修复缺陷`
* [362](https://github.com/Vanessa219/vditor/issues/362) Export HeadingID function to JavaScript `改进功能`
* [359](https://github.com/Vanessa219/vditor/issues/359) heading anchor when copy & paste `修复缺陷`
* [357](https://github.com/Vanessa219/vditor/issues/357) 预览区透明 `修复缺陷`
* [349](https://github.com/Vanessa219/vditor/issues/349) 传统中文排版“段落开头空两格” `引入特性`
* [351](https://github.com/Vanessa219/vditor/issues/351) MathJax plugin `修复缺陷`
* [353](https://github.com/Vanessa219/vditor/issues/353) list demo at static-preview.html `文档相关`
* [350](https://github.com/Vanessa219/vditor/issues/350) 自定义渲染的方法 `引入特性`
* [345](https://github.com/Vanessa219/vditor/issues/345) 支持预览区域粘贴到公众号 `引入特性`
* [324](https://github.com/Vanessa219/vditor/issues/324) 支持多款主题预览 `引入特性`
* [325](https://github.com/Vanessa219/vditor/issues/325) 导出功能 `引入特性`
* [344](https://github.com/Vanessa219/vditor/issues/344) outline 渲染 bug `修复缺陷`
* [343](https://github.com/Vanessa219/vditor/issues/343) 添加初始化大纲展现参数 `改进功能`
* [341](https://github.com/Vanessa219/vditor/issues/341) Can not delete the image at IR mode `修复缺陷`
* [339](https://github.com/Vanessa219/vditor/issues/339) 添加静态方法 setCodeTheme, setContentTheme `改进功能`
* [316](https://github.com/Vanessa219/vditor/issues/316) 支持多端预览 `引入特性`
* [337](https://github.com/Vanessa219/vditor/issues/337) insertValue 光标错误 `修复缺陷`
* [333](https://github.com/Vanessa219/vditor/issues/333) 重新设计帮助菜单 `改进功能`
* [334](https://github.com/Vanessa219/vditor/issues/334) 重新设计关于菜单 `改进功能`
* [335](https://github.com/Vanessa219/vditor/issues/335) 块引用嵌套列表跳出问题 `修复缺陷`
* [332](https://github.com/Vanessa219/vditor/issues/332) Not working 3rd menu at smartphone `修复缺陷`
* [329](https://github.com/Vanessa219/vditor/issues/329) preview方法可选参数options.transform提示undefined错误的问题 `修复缺陷`
* [328](https://github.com/Vanessa219/vditor/issues/328) sv 模式高度错误 `修复缺陷`
* [326](https://github.com/Vanessa219/vditor/issues/326) 为工具栏添加2级和3级菜单 `改进功能`
* [323](https://github.com/Vanessa219/vditor/issues/323) setTheme 需支持代码块风格的切换 `改进功能`
* [320](https://github.com/Vanessa219/vditor/issues/320) 代码区点击复制代码时自动去掉行号 `修复缺陷`
* [314](https://github.com/Vanessa219/vditor/issues/314) 添加图片懒加载设置 `引入特性`
* [319](https://github.com/Vanessa219/vditor/issues/319) add ctrl+shift+e button to toolbar for smartphone `改进功能`
* [312](https://github.com/Vanessa219/vditor/issues/312) 支持块级元素上下移动 `引入特性`
* [318](https://github.com/Vanessa219/vditor/issues/318) 工具栏和编辑器区域对齐 `改进功能`
* [313](https://github.com/Vanessa219/vditor/issues/313) html 页面 点击禁用button 引起回调 `修复缺陷`
* [311](https://github.com/Vanessa219/vditor/issues/311) preview demo `改进功能`
* [94](https://github.com/Vanessa219/vditor/issues/94) 获取大纲内容及点击定位功能 `引入特性`
* [309](https://github.com/Vanessa219/vditor/issues/309) 添加 options.upload.setHeaders `引入特性`
* [306](https://github.com/Vanessa219/vditor/issues/306) IR mode ATX heading change `改进功能`
* [303](https://github.com/Vanessa219/vditor/issues/303) Inline HTML parsing issue `修复缺陷`
* [304](https://github.com/Vanessa219/vditor/issues/304) 为 toolbar 添加是否 pin 的配置 `引入特性`
* [296](https://github.com/Vanessa219/vditor/issues/296) 打字机模式下字数统计标签不可见 `改进功能`
* [302](https://github.com/Vanessa219/vditor/issues/302) Editing Heading(IR mode) `修复缺陷`
* [301](https://github.com/Vanessa219/vditor/issues/301) Add README in English `文档相关`
* [299](https://github.com/Vanessa219/vditor/issues/299) 表格解析异常 `修复缺陷`
* [226](https://github.com/Vanessa219/vditor/issues/226) Vulnerable to Self-XSS `修复缺陷`
* [297](https://github.com/Vanessa219/vditor/issues/297) 纯文本字数统计 `引入特性`
* [298](https://github.com/Vanessa219/vditor/pull/298) ✨ 允许开启 counter 而不设置限值 & README 优化 `引入特性`
* [295](https://github.com/Vanessa219/vditor/issues/295) 全屏模式下打字机行为异常 `修复缺陷`
* [294](https://github.com/Vanessa219/vditor/pull/294) 🐛 计算全屏 typewriterMode 位置 `修复缺陷`
* [286](https://github.com/Vanessa219/vditor/issues/286) add indent & outdent button `引入特性`
* [291](https://github.com/Vanessa219/vditor/pull/291) 🎨 改进 Counter `修复缺陷`
* [285](https://github.com/Vanessa219/vditor/issues/285) shift+tab is not working at lists `修复缺陷`
* [292](https://github.com/Vanessa219/vditor/pull/292) 🐛 全屏模式文末空白 `修复缺陷`
* [293](https://github.com/Vanessa219/vditor/issues/293) iOS Safari 快捷键显示为 Windows 版本 `修复缺陷`
* [290](https://github.com/Vanessa219/vditor/pull/290) 🎨 add minHeight `改进功能`
* [71](https://github.com/Vanessa219/vditor/issues/71) 优化移动端体验 `改进功能`
* [283](https://github.com/Vanessa219/vditor/issues/283) 添加 SetSetext 配置 `引入特性`
* [278](https://github.com/Vanessa219/vditor/issues/278) IR 细节修改 `修复缺陷`
* 文档更新
  * 添加 `options.minHeight`, `options.outline`
  * `options.counter` 修改为 `counter?: { enable: boolean; max?: number; type: "markdown" | "text"; }`
  * counter 位置移动到 toolbar 上
  * `options.hideToolbar` 修改为 `toolbarConfig: { hide?: boolean, pin?: boolean }`
  * 添加 `options.upload.setHeaders: { [key: string]: string }`
  * 添加静态方法 `outlineRender`, `setCodeTheme`, `setContentTheme`
  * 添加 lazyLoadImageRender 静态方法
  * insert line 默认快捷键由 `⌘-⇧-D` 修改为 `⌘-⇧-H`,添加下移 `⌘-⇧-D`、上移 `⌘-⇧-U` 快捷键,移除上传、预览、编辑器模式切换快捷键
  * 为 `options.toolbar` 添加 toolbar 参数,最多可进行 3 级菜单
  * 为 `options.toolbar` 添加 outdent,indent, outline, insert-after, insert-before, more,code-theme, content-theme, export
  * `setTheme` 方法添加 `conentTheme`, `codeTheme` 参数
  * `setPreviewMode` 方法移除 `preview`
  * `options.preview` 中 `maxWidth` 默认值改为 800, `mode` 移除 `preview` 选项,`markdonw` 添加 `theme`、`setext` 配置
  * IPreviewOptions 添加 `after`,`lazyLoadImage`, `markdown.theme`, `renderers`, `markdown.paragraphBeginningSpace`,移除 `theme`

### v3.0.12 / 2020-04-06

* [276](https://github.com/Vanessa219/vditor/issues/276) 当设置编辑器宽度后,模式切换导致样式错误 `修复缺陷`
* [266](https://github.com/Vanessa219/vditor/issues/266) linkToImgUrl 图片重复上传 `修复缺陷`
* [208](https://github.com/Vanessa219/vditor/issues/208) hr in Firefox `修复缺陷`
* [274](https://github.com/Vanessa219/vditor/issues/274) Toc demo at Preview `文档相关`
* [269](https://github.com/Vanessa219/vditor/issues/269) 分屏预览支持 list-style-type CSS `引入特性`
* [265](https://github.com/Vanessa219/vditor/issues/265) ir 模式中 toc, 链接引用,脚注 `引入特性`
* [271](https://github.com/Vanessa219/vditor/issues/271) options.toolbar支持自定义绑定class `引入特性`
* [267](https://github.com/Vanessa219/vditor/issues/267) 设置 codeBlockPreview false, esc 后代码块消失 `修复缺陷`
* [270](https://github.com/Vanessa219/vditor/issues/270) 支持捂脸表情 `改进功能`
* [264](https://github.com/Vanessa219/vditor/issues/264) table at IR mdoe `修复缺陷`
* [253](https://github.com/Vanessa219/vditor/issues/253) 所见即所得复制粘贴问题 `修复缺陷`
* [261](https://github.com/Vanessa219/vditor/issues/261) When link with "" and ctrl+k `修复缺陷`
* [262](https://github.com/Vanessa219/vditor/issues/262) ctrl+m... delete, and enter `修复缺陷`
* [260](https://github.com/Vanessa219/vditor/issues/260) Not working typewritermode at code block `修复缺陷`
* [250](https://github.com/Vanessa219/vditor/issues/250) 支持配置是否开启 wysiwyg 模式下代码块渲染 `引入特性`
* [258](https://github.com/Vanessa219/vditor/issues/258) wysiwyg a 元素子导航居右被挤变形 `修复缺陷`
* [212](https://github.com/Vanessa219/vditor/issues/212) Sync XMLHttpRequest Deprecation message `改进功能`
* [251](https://github.com/Vanessa219/vditor/issues/251) 所见即所得模式下,光标后图片工具层会遮挡文字 `改进功能`
* [249](https://github.com/Vanessa219/vditor/issues/249) 代码块语言选择优化 `改进功能`
* [211](https://github.com/Vanessa219/vditor/issues/211) Heading when backspace (Windows Firefox) `修复缺陷`
* [239](https://github.com/Vanessa219/vditor/issues/239) be converted after spaces in FF `修复缺陷`
* [240](https://github.com/Vanessa219/vditor/issues/240) multiple markdown at one line `修复缺陷`
* [241](https://github.com/Vanessa219/vditor/issues/241) When editing the heading, not converted using the cursor key `修复缺陷`
* [242](https://github.com/Vanessa219/vditor/issues/242) combined lists "+" and "-" `修复缺陷`
* [243](https://github.com/Vanessa219/vditor/issues/243) can not delete the table with "backspace" `修复缺陷`
* [246](https://github.com/Vanessa219/vditor/issues/246) 报错index.min.js:27 `修复缺陷`
* [248](https://github.com/Vanessa219/vditor/issues/248) enter after heading `修复缺陷`
* [235](https://github.com/Vanessa219/vditor/pull/235) 修复父元素自定义行高时工具栏垂直不居中 `修复缺陷`
* [210](https://github.com/Vanessa219/vditor/issues/210) inks with korean character(windows chrome & firefox) `修复缺陷`
* [231](https://github.com/Vanessa219/vditor/issues/231) 支持直接传入元素进行初始化 `引入特性`
* [232](https://github.com/Vanessa219/vditor/issues/232) 【IR&WYSIWYG】围栏代码块 info 部分自动完成 `引入特性`
* [230](https://github.com/Vanessa219/vditor/pull/230) 切换 IR 模式后依然展示工具栏 `改进功能`
* [27](https://github.com/Vanessa219/vditor/issues/27) 支持类似 Typora 的及时渲染模式 `引入特性`
* [229](https://github.com/Vanessa219/vditor/issues/229) 初始化时不应该自动获取焦点 `改进功能`
* [228](https://github.com/Vanessa219/vditor/pull/228) menu misplaced when vditor is not first child `改进功能`
* [227](https://github.com/Vanessa219/vditor/pull/227) add jsdoc `引入特性`
* [225](https://github.com/Vanessa219/vditor/pull/225) publish type declaration file `引入特性`
* [224](https://github.com/Vanessa219/vditor/issues/224) md2html 方法报错 `修复缺陷`
* [223](https://github.com/Vanessa219/vditor/issues/223) 下列 a 前输入 ``` b 会消失,且返回无光标 `修复缺陷`
* [222](https://github.com/Vanessa219/vditor/issues/222) The cursor does not enter when added in the middle of the list `修复缺陷`
* [221](https://github.com/Vanessa219/vditor/issues/221) 输入复选框时出现乱码 `修复缺陷`
* [220](https://github.com/Vanessa219/vditor/issues/220) 软换行前进行删除,将会变为 p `修复缺陷`
* 文档更新
  * 修改 `options.mode` 可选值为:'sv', 'wysiwyg', 'ir'
  * toolbar 中的 wysiwyg 修改为 'edit-mode'
  * id 可以传入 element
  * cache 修改为 {enable: boolean, id: string}
  * md2html 改为异步
  * 添加 `options.preview.markdown.codeBlockPreview`
  * 为 `options.toolbar` 添加 `className`
  * 添加 getCurrentMode 方法

### v2.3.0 / 2020-03-12

* [218](https://github.com/Vanessa219/vditor/issues/218) 所见即所得模式下,insertValue渲染*和~的时候似乎不是很正确 `修复缺陷`
* [217](https://github.com/Vanessa219/vditor/issues/217) ToC 添加悬浮菜单及 bug 修复 `修复缺陷`
* [216](https://github.com/Vanessa219/vditor/issues/216) subtoolbar 向下溢出 `修复缺陷`
* [215](https://github.com/Vanessa219/vditor/issues/215) lists when last enter `修复缺陷`

### v2.2.19 / 2020-03-10

* [214](https://github.com/Vanessa219/vditor/issues/214) wysiwyg heading id `引入特性`
* [206](https://github.com/Vanessa219/vditor/issues/206) combined blockquote and lists (windows firefox) `修复缺陷`
* [151](https://github.com/Vanessa219/vditor/issues/151) 支持隐藏编辑器工具栏 `引入特性`
* [121](https://github.com/Vanessa219/vditor/issues/121) 所见即所得模式支持 [ToC] `引入特性`
* [119](https://github.com/Vanessa219/vditor/issues/119) 所见即所得模式支持脚注 `引入特性`
* [55](https://github.com/Vanessa219/vditor/issues/55) 所见即所得模式支持链接引用定义`引入特性`
* [209](https://github.com/Vanessa219/vditor/pull/209) 支持 Graphviz `引入特性`
* [207](https://github.com/Vanessa219/vditor/issues/207) heading at first time(windows firefox) `修复缺陷`
* [205](https://github.com/Vanessa219/vditor/issues/205) not working typewrite mode (windows firefox) `修复缺陷`
* [204](https://github.com/Vanessa219/vditor/issues/204) Empty Enter in Firefox `修复缺陷`
* [203](https://github.com/Vanessa219/vditor/issues/203) when cache:false, use cache `修复缺陷`
* [199](https://github.com/Vanessa219/vditor/issues/199) heading at first time(windows firefox) `修复缺陷`
* [202](https://github.com/Vanessa219/vditor/issues/202) 第一次进入代码块后 ctrl+a 无作用 `修复缺陷`
* [201](https://github.com/Vanessa219/vditor/issues/201) table (windows firefox) `修复缺陷`
* [200](https://github.com/Vanessa219/vditor/issues/200) copy in wysiwyg bug `修复缺陷`
* [197](https://github.com/Vanessa219/vditor/issues/197) 禁用编辑器后,工具栏未被禁用 `修复缺陷`
* [196](https://github.com/Vanessa219/vditor/issues/196) Headings command+alt+1 at safari(Mac) `修复缺陷`
* [195](https://github.com/Vanessa219/vditor/pull/195) added korean i18n `引入特性`
* [194](https://github.com/Vanessa219/vditor/issues/194) Lists (Firefox Compatibility) `修复缺陷`
* [193](https://github.com/Vanessa219/vditor/issues/193) Links (Firefox Compatibility) `修复缺陷`
* [192](https://github.com/Vanessa219/vditor/issues/192) Heading (Firefox Compatibility) `修复缺陷`
* [191](https://github.com/Vanessa219/vditor/issues/191) backspace problem(Firefox Compatibility) `修复缺陷`
* [188](https://github.com/Vanessa219/vditor/issues/188) korean character composition at mac chrome `改进功能`
* [187](https://github.com/Vanessa219/vditor/issues/187) ctrl+b, ctrl+i `修复缺陷`
* [185](https://github.com/Vanessa219/vditor/issues/185) Safari 兼容性修复 `改进功能`
* [137](https://github.com/Vanessa219/vditor/issues/137) [suggestion] ctrl+g behavior `改进功能`
* [182](https://github.com/Vanessa219/vditor/issues/182) 支持 Setext 标题 `改进功能`
* [181](https://github.com/Vanessa219/vditor/issues/181) GFM Example52,54 - Setext 支持 `改进功能`
* [180](https://github.com/Vanessa219/vditor/issues/180) GFM Example 31 `修复缺陷`
* [179](https://github.com/Vanessa219/vditor/issues/179) GFM Example 19, 40, 57 `修复缺陷`
* [178](https://github.com/Vanessa219/vditor/issues/178) 链接文本修改方式改进 `改进功能`
* [177](https://github.com/Vanessa219/vditor/issues/177) can not input alt+ctrl+[number] at first time `修复缺陷`
* [176](https://github.com/Vanessa219/vditor/issues/176) cList+blockquote `修复缺陷`
* [176](https://github.com/Vanessa219/vditor/issues/176) cList+blockquote `修复缺陷`
* [173](https://github.com/Vanessa219/vditor/issues/173) lists start with 1) and enter error `修复缺陷`
* [172](https://github.com/Vanessa219/vditor/issues/172) space between inline codes `修复缺陷`
* [171](https://github.com/Vanessa219/vditor/issues/171) space between inline codes `修复缺陷`
* [170](https://github.com/Vanessa219/vditor/issues/170) ctrl+b with shift+enter `修复缺陷`
* [169](https://github.com/Vanessa219/vditor/issues/169) 五线谱渐强减弱无法显示 `修复缺陷`
* [168](https://github.com/Vanessa219/vditor/issues/168) insertValue 图片解析问题 `修复缺陷`
* [166](https://github.com/Vanessa219/vditor/issues/166) 加粗、强调、删除线合并 `修复缺陷`
* [165](https://github.com/Vanessa219/vditor/issues/165) wysiwyg 内容太长时辅助工具条可以悬浮在顶部 `改进功能`
* [163](https://github.com/Vanessa219/vditor/issues/163) 链接结尾回车不应该复制到下一行 `修复缺陷`
* [162](https://github.com/Vanessa219/vditor/issues/162) 中文标题删除 `修复缺陷`
* [158](https://github.com/Vanessa219/vditor/issues/158) tab key is not working when no text `修复缺陷`
* [156](https://github.com/Vanessa219/vditor/issues/156) li 缩进后没有渲染代码块 `修复缺陷`
* [155](https://github.com/Vanessa219/vditor/issues/155) blockquote 插入光标错误 `修复缺陷`
* [154](https://github.com/Vanessa219/vditor/issues/154) the cursor is disapeared after tab pressed at editor mode `修复缺陷`
* [153](https://github.com/Vanessa219/vditor/issues/153) Heading toolbar is not working `修复缺陷`
* [150](https://github.com/Vanessa219/vditor/issues/150) [suggestion] deleting heading with backspace `改进功能`
* [149](https://github.com/Vanessa219/vditor/issues/149) [suggestion] UI Consistency `改进功能`
* [148](https://github.com/Vanessa219/vditor/issues/148) 任务列表退格删除问题 `修复缺陷`
* [147](https://github.com/Vanessa219/vditor/issues/147) [suggestion] ctrl+l, ctrl+o, ctrl + j add insert line `改进功能`
* [146](https://github.com/Vanessa219/vditor/issues/146) [suggestion] ctrl+k `改进功能`
* [145](https://github.com/Vanessa219/vditor/issues/145) [suggestion] ctrl+shift+j toggle checked `改进功能`
* [144](https://github.com/Vanessa219/vditor/issues/144) ctrl+shift+. 插入 blockquote `改进功能`
* [143](https://github.com/Vanessa219/vditor/issues/143) [suggestion] ctrl+m `改进功能`
* [142](https://github.com/Vanessa219/vditor/issues/142) lists when indented at wysiwyg mode `修复缺陷`
* [141](https://github.com/Vanessa219/vditor/issues/141) toolbar 添加箭头,默认表情修改 `改进功能`
* [140](https://github.com/Vanessa219/vditor/issues/140) *** after shift+enter `修复缺陷`
* [139](https://github.com/Vanessa219/vditor/issues/139) toggle after ===, enter `修复缺陷`
* [138](https://github.com/Vanessa219/vditor/issues/138) ctrl+b, ctrl+i, enter with no text `修复缺陷`
* [136](https://github.com/Vanessa219/vditor/issues/136) ⌘ and Ctrl is different at MacOS `修复缺陷`
* [135](https://github.com/Vanessa219/vditor/issues/135) can not delete the first char. at first field of links `改进功能`
* [134](https://github.com/Vanessa219/vditor/issues/134) 支持 linkToImgUrl `引入特性`
* [133](https://github.com/Vanessa219/vditor/issues/133) MathJax 渲染无法修改 `修复缺陷`
* [132](https://github.com/Vanessa219/vditor/issues/132) 添加 md 配置项 `引入特性`
* [131](https://github.com/Vanessa219/vditor/issues/131) 代码块下输入中文 bug `修复缺陷`
* [130](https://github.com/Vanessa219/vditor/issues/130) 任务列表跳出 `修复缺陷`
* [129](https://github.com/Vanessa219/vditor/issues/129) 分隔线规则问题 `修复缺陷`
* [128](https://github.com/Vanessa219/vditor/issues/128) 在分隔线之间输入的问题 `修复缺陷`
* [127](https://github.com/Vanessa219/vditor/issues/127) more keyboard shortcut after ctrl+h `改进功能`
* [125](https://github.com/Vanessa219/vditor/issues/125) ctrl+l, ** `修复缺陷`
* 文档更新
  * 移除 `IPreviewOptions` 中的 `className`
  * 为 `IPreviewOptions` 添加 `theme` 选项
  * `insertValue` 添加 `render` 参数,以便配置是否需要进行 Markdown 处理
  * 将异步方法变为同步
  * 引用快捷键修改为 <kbd>Ctrl-;</kbd>
  * 移除 index-preview.html, index-preview.js 文件
  * 添加 `graphvizRender` 方法
  * 添加 `option.preview.markdown.toc/footnotes` 配置选项
  * 添加 `option.hideToolbar` 配置选项
  * `options.preview.markdown.autoSpace/chinesePunct/fixTermTypo` 默认值设置为 `false`

### v2.1.15 / 2020-02-09

* [123](https://github.com/Vanessa219/vditor/issues/123) 加粗、强调前导空格问题 `修复缺陷`
* [122](https://github.com/Vanessa219/vditor/issues/122) 在 p 中插入代码块 bug `修复缺陷`
* [118](https://github.com/Vanessa219/vditor/issues/118) Firefox no cursor when ctrl+b pressed `修复缺陷`
* [117](https://github.com/Vanessa219/vditor/issues/117) cursor moving problem near inline code `修复缺陷`
* [115](https://github.com/Vanessa219/vditor/issues/115) codeblock difference between ``` and ctrl+u `修复缺陷`
* [114](https://github.com/Vanessa219/vditor/issues/114) 有序列表合并问题 `修复缺陷`
* [113](https://github.com/Vanessa219/vditor/issues/113) 分隔线、标题在换行时处理 `改进功能`
* [112](https://github.com/Vanessa219/vditor/issues/112) 列表项加代码块问题 `修复缺陷`
* [111](https://github.com/Vanessa219/vditor/issues/111) ctrl+b, ctrl+i, ctrl+s not working at starting and combining `修复缺陷`
* [109](https://github.com/Vanessa219/vditor/issues/109) tab key at list `改进功能`
* [108](https://github.com/Vanessa219/vditor/issues/108) 行级代码问题 `修复缺陷`
* [107](https://github.com/Vanessa219/vditor/issues/107) 删除线解析问题 `修复缺陷`
* [105](https://github.com/Vanessa219/vditor/issues/105) Link(ctrl+k) `改进功能`
* [104](https://github.com/Vanessa219/vditor/issues/104) image tag at wysiwyg mode `修复缺陷`
* [103](https://github.com/Vanessa219/vditor/issues/103) cell alignment `修复缺陷`
* [102](https://github.com/Vanessa219/vditor/issues/102) minus number at table(not important) `修复缺陷`
* [101](https://github.com/Vanessa219/vditor/issues/101) 提供 setTheme(theme: "dark" | "classic") 方法 `引入特性`
* [100](https://github.com/Vanessa219/vditor/issues/100) inline-math `修复缺陷`
* [99](https://github.com/Vanessa219/vditor/issues/99) a 中斜体/粗体时 toolbar 不显示 `修复缺陷`
* [96](https://github.com/Vanessa219/vditor/issues/96) 所见即所得模式下的任务列表Bug `修复缺陷`
* [95](https://github.com/Vanessa219/vditor/issues/95) setVaule 和 初始化时,不触发 input 事件 `改进功能`
* [93](https://github.com/Vanessa219/vditor/issues/93) Headers with = and - `修复缺陷`
* [92](https://github.com/Vanessa219/vditor/issues/92) 空行回车可以逐层跳出引用 `改进功能`
* [89](https://github.com/Vanessa219/vditor/issues/89) 数学公式支持 MathJax `引入特性`
* [88](https://github.com/Vanessa219/vditor/issues/88) Bold `修复缺陷`
* [87](https://github.com/Vanessa219/vditor/issues/87) inside cell `修复缺陷`
* [85](https://github.com/Vanessa219/vditor/issues/85) ctrl-z & 重写缩进 `修复缺陷`
* [84](https://github.com/Vanessa219/vditor/issues/84) 光标在 emoji 后的空格后无法对其进行删除 `修复缺陷`
* [83](https://github.com/Vanessa219/vditor/issues/83) 所见即所得从菜单插入链接用对话框 `改进功能`
* [82](https://github.com/Vanessa219/vditor/issues/82) 文字拖动 `修复缺陷`
* [80](https://github.com/Vanessa219/vditor/issues/80) 第一次 ctrl+z 无法设置光标 `修复缺陷`
* [79](https://github.com/Vanessa219/vditor/issues/79) 链接所见即所得渲染问题 `改进功能`
* [78](https://github.com/Vanessa219/vditor/issues/78) 列表换行处理问题 `修复缺陷`
* [77](https://github.com/Vanessa219/vditor/issues/77) 上传文件处理 `改进功能`
* [75](https://github.com/Vanessa219/vditor/issues/75) 表格输入自动完成优化 `改进功能`
* [74](https://github.com/Vanessa219/vditor/issues/74) anchor 中移除 . `改进功能`
* [73](https://github.com/Vanessa219/vditor/issues/73) 添加链接卡片样式 `引入特性`
* [76](https://github.com/Vanessa219/vditor/issues/76) 菜单选择图片类 Emoji 无法直接显示 `修复缺陷`
* [70](https://github.com/Vanessa219/vditor/issues/70) 所见即所得模式下Table按钮重复点击会导致table嵌套,另外希望标题支持快捷键调整大小 `引入特性`
* [69](https://github.com/Vanessa219/vditor/issues/69) 渲染块按 esc 可以进行退出代码块进行预览 `改进功能`
* [68](https://github.com/Vanessa219/vditor/issues/68) 列表标记符自动优化 `改进功能`
* [67](https://github.com/Vanessa219/vditor/issues/67) code、inline-math、inline-html 优化 `改进功能`
* [66](https://github.com/Vanessa219/vditor/issues/66) 表格优化 `改进功能`
* [65](https://github.com/Vanessa219/vditor/issues/65) 任务列表回车、删除优化 `改进功能`
* [60](https://github.com/Vanessa219/vditor/issues/60) 行内代码删除错误 `修复缺陷`
* 文档更新
  * 添加 options.upload.file 方法
  * options.preview 修改,支持 MathJax 配置
  * 移除 mathRenderByLute 方法
  * 添加 setTheme 方法,classic.scss -> index.scss

### v2.0.15 / 2020-01-11

* [64](https://github.com/Vanessa219/vditor/issues/64) 所见即所得模式代码块 % 问题 `修复缺陷`
* [62](https://github.com/Vanessa219/vditor/issues/62) 任务列表光标位置 `修复缺陷`
* [59](https://github.com/Vanessa219/vditor/issues/59) 任务列表 bug `修复缺陷`
* [58](https://github.com/Vanessa219/vditor/issues/58) 表格内换行处理问题 `修复缺陷`
* [57](https://github.com/Vanessa219/vditor/issues/57) * a*b* 后换行错误 `修复缺陷`
* [56](https://github.com/Vanessa219/vditor/issues/56) 图片 alt 属性不应该带光标位置 `修复缺陷`
* [54](https://github.com/Vanessa219/vditor/issues/54) 代码块优化 `引入特性`
* [53](https://github.com/Vanessa219/vditor/issues/53) 图片 title 丢失问题 `修复缺陷`
* [52](https://github.com/Vanessa219/vditor/issues/52) 下划线强调标记符失效 `修复缺陷`
* [51](https://github.com/Vanessa219/vditor/issues/51) 引用多层嵌套无法一次性回到最外层 `引入特性`
* [50](https://github.com/Vanessa219/vditor/issues/50) 标题前的段落结尾为 `\n` 时,标题的选中和取消会关联到 `\n` `修复缺陷`
* [48](https://github.com/Vanessa219/vditor/issues/48) H6 回车 解析问题 `修复缺陷`
* [47](https://github.com/Vanessa219/vditor/issues/47) <details> 改进 `改进功能`
* [46](https://github.com/Vanessa219/vditor/issues/46) add row 添加快捷键 `引入特性`
* [45](https://github.com/Vanessa219/vditor/issues/45) 为列表 indent 和 outdent 添加快捷键 `引入特性`
* [44](https://github.com/Vanessa219/vditor/issues/44) Unorderlist + Link 会缩进 `修复缺陷`
* [43](https://github.com/Vanessa219/vditor/issues/43) When copy & paste the link `修复缺陷`
* [42](https://github.com/Vanessa219/vditor/issues/42) 在内联数学公式前进行删除操作会删除公式 `修复缺陷`
* [41](https://github.com/Vanessa219/vditor/issues/41) wysiwyg 切换后,列表紧凑模式错误 `修复缺陷`
* [40](https://github.com/Vanessa219/vditor/issues/40) 列表 marker 错误 `修复缺陷`
* [39](https://github.com/Vanessa219/vditor/issues/39) 所见即所得模式录音bug `修复缺陷`
* [38](https://github.com/Vanessa219/vditor/issues/38) 有序列表顺序错误 `修复缺陷`
* [37](https://github.com/Vanessa219/vditor/issues/37) 为 wysiwyg 代码块添加快捷键 `引入特性`
* [36](https://github.com/Vanessa219/vditor/issues/36) two 'enter' at code block `修复缺陷`
* [35](https://github.com/Vanessa219/vditor/issues/35) no cursor after tab `修复缺陷`
* [33](https://github.com/Vanessa219/vditor/issues/33) 插入链接优化 `improvement`
* [32](https://github.com/Vanessa219/vditor/issues/32) 反斜杠转义处理 `修复缺陷`
* [31](https://github.com/Vanessa219/vditor/issues/31) merge list `bug`
* [30](https://github.com/Vanessa219/vditor/issues/30) 添加 option.value `enhancement`
* [29](https://github.com/Vanessa219/vditor/issues/29) 添加 debugger,为开发时显示日志 `enhancement`
* [28](https://github.com/Vanessa219/vditor/issues/28) wysiwyg 时代码块、流程图等直接进行渲染,不展示源码 `enhancement`
* [26](https://github.com/Vanessa219/vditor/issues/26) wysiwyg 性能优化 `enhancement`
* [25](https://github.com/Vanessa219/vditor/issues/25) wysiwyg 表格添加居中居左居右 `enhancement`
* [24](https://github.com/Vanessa219/vditor/issues/24) wysiwyg 块工具栏添加文字说明 `enhancement`
* [23](https://github.com/Vanessa219/vditor/issues/23) When code copied and pasted.... `bug`
* [2](https://github.com/Vanessa219/vditor/issues/2) 所见即所得 `enhancement`
* 文档更新
  * 添加 option.mode?: "wysiwyg-show" | "markdown-show" | "wysiwyg-only" | "markdown-only" 参数
  * 添加 options.debugger
  * 添加 options.value

### v1.10.11 / 2019-12-12

* [20](https://github.com/Vanessa219/vditor/issues/20) 报错:Lute is not defined `bug`
* [19](https://github.com/Vanessa219/vditor/issues/19) CDN 切换优化 `enhancement`
* [18](https://github.com/Vanessa219/vditor/issues/18) 菜单栏上的按钮会触发 form 提交事件 `bug`
* [17](https://github.com/Vanessa219/vditor/issues/17) tip 会遮挡住输入框的上部 `enhancement`
* [16](https://github.com/Vanessa219/vditor/issues/16) 复制代码按钮错误 `bug`
* [14](https://github.com/Vanessa219/vditor/issues/14) Vditor.preview不能渲染 `bug`
* [13](https://github.com/Vanessa219/vditor/issues/13) 编辑到最底部时,回车不会滚动到最下面 `bug`
* [12](https://github.com/Vanessa219/vditor/issues/12) 代码渲染问题,抛出KaTeX的错误信息。 `question`
* [11](https://github.com/Vanessa219/vditor/issues/11) 添加 CDN 配置  `enhancement`
* [10](https://github.com/Vanessa219/vditor/issues/10) block code 拷贝后变为 inline code `bug`
* [9](https://github.com/Vanessa219/vditor/issues/9) 没有预览界面时依旧出现预览耗时提示 `bug`
* [1](https://github.com/Vanessa219/vditor/issues/1) 上传时支持 xhr.setRequestHeader 设置 `enhancement`
* [172](https://github.com/b3log/vditor/issues/172) 上传改进  `enhancement`
* [171](https://github.com/b3log/vditor/issues/171) 编辑器在生成 preview 之前,添加处理函数  `feature`
* [170](https://github.com/b3log/vditor/issues/170) 新增内联数学公式开关 `enhancement`
* [168](https://github.com/b3log/vditor/issues/168) highlightRender报错 `invalid`
* [167](https://github.com/b3log/vditor/issues/167) withCredentials(跨域传递 cookie) `feature`
* [166](https://github.com/b3log/vditor/issues/166) typewriterMode 为 false 时,preview 区域不会同步滚动 `bug`
* 文档更新
  * public static mermaidRender(element: HTMLElement, className?: string)
  * hotkey 和 setSelection 方法不支持 wysiwyg
  * setValue 参数改为 markdown
  * 添加 options.upload.headers
  * 为 options, IPreviewOptions, highlightRender, mathRenderByLute, mathRender, abcRender, chartRender, mermaidRender 添加 cdn

### v1.9.7 / 2019-11-11

* [165](https://github.com/b3log/vditor/issues/165) 1个数学公式支持有问题 `question`
* [164](https://github.com/b3log/vditor/issues/164) 当文本内容过多时,卡顿的问题 `duplicate`
* [163](https://github.com/b3log/vditor/issues/163) 为标题添加锚点 `feature`
* [162](https://github.com/b3log/vditor/issues/162) 没有使用后端渲染时,编辑器卡顿 `bug`
* [160](https://github.com/b3log/vditor/issues/160) 添加 `speechRender` 方法 `feature`
* [159](https://github.com/b3log/vditor/issues/159) Vditor.preview方法在页面中渲染textarea内markdown代码无效 `invalid`
* [157](https://github.com/b3log/vditor/issues/157) 初始化后添加回调方法 `options.after` `feature`
* [156](https://github.com/b3log/vditor/issues/156) 语法高亮添加行号配置 `options.preview.hljs.lineNumber` `feature`
* [155](https://github.com/b3log/vditor/issues/155) preview 方法支持多次渲染 `enhancement`
* [154](https://github.com/b3log/vditor/issues/154) 流程图写代码对新手来说太难了建议 `question`
* [153](https://github.com/b3log/vditor/issues/153) Markdown 渲染空格问题 `bug`
* [152](https://github.com/b3log/vditor/issues/152) 直接调用 getHTML 抛错 `bug`
* [151](https://github.com/b3log/vditor/issues/151) Xcode 复制粘贴后换行增加 `bug`
* [150](https://github.com/b3log/vditor/issues/150) 加粗、斜体、删除线等功能按钮无法对选中的内容进行修改 `bug`

### v1.8.16 / 2019-10-08

* [144](https://github.com/b3log/vditor/issues/144) 编辑器内容为空时,placeholder 不显示 `bug`
* [143](https://github.com/b3log/vditor/issues/143) 为编辑器底部空白添加配置项 `enhancement`
* [142](https://github.com/b3log/vditor/issues/142) setPreviewMode 方法失效 `bug`
* [141](https://github.com/b3log/vditor/issues/141) Safari 中代码块换行 `bug`
* [140](https://github.com/b3log/vditor/issues/140) Scroll to the cursor position after pasting `bug`
* [139](https://github.com/b3log/vditor/issues/139) The cursor position is incorrect when ctrl+z is pressed `bug`
* [138](https://github.com/b3log/vditor/issues/138) markdown 中长表格支持滚动预览 `enhancement`
* [137](https://github.com/b3log/vditor/issues/137) 整理 highlight.js 和 chroma,以便统一 preview.hljs.style 的设置 `enhancement`
* [136](https://github.com/b3log/vditor/issues/136) 添加 AST 展示 `feature`
* [135](https://github.com/b3log/vditor/issues/135) 数学公式错误打印到预览区域 `feature`
* [134](https://github.com/b3log/vditor/issues/134) 数学公式问题 `question`
* [133](https://github.com/b3log/vditor/issues/133) Inline Katex `question`
* [132](https://github.com/b3log/vditor/issues/132) emoji and table `question`
* [131](https://github.com/b3log/vditor/issues/131) 上传失败时,内容没有清空 `bug`
* [130](https://github.com/b3log/vditor/issues/130) 代码部分支持长代码拖动预览 `enhancement`
* [128](https://github.com/b3log/vditor/issues/128) customEmoji 在代码块中不应该被转换 `enhancement`
* [126](https://github.com/b3log/vditor/issues/126) /src/ts/preview/index.ts 29 行报错 `bug`
* [125](https://github.com/b3log/vditor/issues/125) Image 添加最大宽度 `feature`
* [124](https://github.com/b3log/vditor/issues/124) 菜单栏按钮在 iPhone 中无法正常工作 `bug`
* [123](https://github.com/b3log/vditor/issues/123) 添加 format 功能 `feature`
* [122](https://github.com/b3log/vditor/issues/122) 添加 ~~emojiRender~~ 和 highlightRender 接口 `feature`
* [120](https://github.com/b3log/vditor/issues/120) markdown-it 切换为 lute `enhancement`
* [119](https://github.com/b3log/vditor/issues/119) 提供服务端返回数据格式化接口 `feature`
* [117](https://github.com/b3log/vditor/issues/117) 支持站点、视频、音频解析 `feature`
* [112](https://github.com/b3log/vditor/issues/112) :xxx: 需根据对应的 emoji 渲染为 emoji,而非 :xxx: `feature`

### v1.7.25 / 2019-08-29

* [116](https://github.com/b3log/vditor/issues/116) Vditor 解析`&emsp;`等空格相关的内容解析完后,光标会回到头部 `question`
* [115](https://github.com/b3log/vditor/issues/115) 测试 issues 变 0 `invalid`
* [114](https://github.com/b3log/vditor/issues/114) 封装 Preview `enhancement`
* [113](https://github.com/b3log/vditor/issues/113) emoji 整理 `enhancement`
* [111](https://github.com/b3log/vditor/issues/111) emoji problem `bug`
* [110](https://github.com/b3log/vditor/issues/110) 支持 Word 粘贴 `feature`
* [109](https://github.com/b3log/vditor/issues/109) 移除 option.editorName 变量 `bug`
* [108](https://github.com/b3log/vditor/issues/108) hint.emoji 支持自定义 `feature`
* [107](https://github.com/b3log/vditor/issues/107) custom emoji "trollface" & "huaji" is not working at demo mode `bug`
* [106](https://github.com/b3log/vditor/issues/106) 添加 Chroma 样式 `feature`
* [105](https://github.com/b3log/vditor/issues/105) firefox 兼容性 `bug`
* [104](https://github.com/b3log/vditor/issues/104) vs code 粘贴代码问题 `bug`
* [103](https://github.com/b3log/vditor/issues/103) 光标位置应在正中间 `feature`
* [102](https://github.com/b3log/vditor/issues/102) 安装依赖后自动删除已有的依赖 `question`
* [101](https://github.com/b3log/vditor/issues/101) video 标签移动端溢出 `enhancement`
* [100](https://github.com/b3log/vditor/issues/100) esc/选中工具栏中的表情或标题后输入框中的 at 及 emoji 的提示应消失 `bug`
* [98](https://github.com/b3log/vditor/issues/98) 支持 shift + tab `feature`
* [99](https://github.com/b3log/vditor/issues/99) esc/选中工具栏中的表情或标题后输入框中的 at 及 emoji 的提示应消失 `bug`
* [97](https://github.com/b3log/vditor/issues/97) 添加五线谱支持 `feature`
* [96](https://github.com/b3log/vditor/issues/96) 工具栏没有配置 preview, both, redo, undo 在其他操作时会报错 `bug`
* [95](https://github.com/b3log/vditor/issues/95) 1.6.x 细节 bug 修改 `bug`
* [94](https://github.com/b3log/vditor/issues/94) 数学公示支持源码查看 `feature`
* [93](https://github.com/b3log/vditor/issues/93) 新增预览模式设置接口 `feature`
* [92](https://github.com/b3log/vditor/issues/92) 现在toolbar里面有演示的按钮吗 `question`
* [91](https://github.com/b3log/vditor/issues/91) No default jsDelivr CDN file set `development`
* [90](https://github.com/b3log/vditor/issues/90) 编辑区域底部留白且光标所在位置应在可视区域内 `feature`
* [89](https://github.com/b3log/vditor/issues/89) 自定义 toolbar 事件、添加按钮到 toolbar 上 `feature`
* [88](https://github.com/b3log/vditor/issues/88) resize 优化 `enhancement`
* [87](https://github.com/b3log/vditor/issues/87) 获取文本时对 HTML 实体进行转换 `bug`
* [86](https://github.com/b3log/vditor/issues/86) 代码分包优化 `feature`
* [85](https://github.com/b3log/vditor/issues/85) 改善提示且提供提示接口 `feature`
* [84](https://github.com/b3log/vditor/issues/84) 支持全屏预览 `feature`

### v1.6.12 / 2019-08-04

* [83](https://github.com/b3log/vditor/issues/83) 升级 markdown-it `dependencies`
* [82](https://github.com/b3log/vditor/issues/82) textarea 修改为带 contenteditable 属性的 div `development`
* [81](https://github.com/b3log/vditor/issues/81) toolbar.hotkey 添加 shift 可选配置 `feature`
* [80](https://github.com/b3log/vditor/issues/80) 移除第三方依赖库版本号 `enhancement`
* [79](https://github.com/b3log/vditor/issues/79) 重置内容中的 ul 样式 `enhancement`
* [78](https://github.com/b3log/vditor/issues/78) npx webpack出现错误 `bug`
* [77](https://github.com/b3log/vditor/issues/77) 发布一个bower版本 `development`
* [76](https://github.com/b3log/vditor/issues/76) Bump lodash from 4.17.11 to 4.17.14 `dependencies`
* [75](https://github.com/b3log/vditor/issues/75) 增强 emoji 配置的容错性及 UI 细节改进 `enhancement`
* [74](https://github.com/b3log/vditor/issues/74) 上传错误处理文案与性能提示冲突 `bug`
* [68](https://github.com/b3log/vditor/issues/68) 1 high severity vulnerability: vditor > mermaid `development`
* [61](https://github.com/b3log/vditor/issues/61) 支持简单的快捷键 `feature`

### v1.5.12 / 2019-07-09

* [73](https://github.com/b3log/vditor/issues/73) iframe 添加 max-width `enhancement`
* [72](https://github.com/b3log/vditor/issues/72) 当编辑器父元素为 position: fix 时 hit 计算错误 `bug`
* [71](https://github.com/b3log/vditor/issues/71) new 之前应保证该 id 元素在 html 中已经渲染 `question`
* [70](https://github.com/b3log/vditor/issues/70) 建议删除CDN和代码中的Dynamic Import `invalid`
* [69](https://github.com/b3log/vditor/issues/69) Assets 文件夹介绍 `question`
* [67](https://github.com/b3log/vditor/issues/67) 长文本粘贴性能改进 `enhancement`
* [66](https://github.com/b3log/vditor/issues/66) 上传按钮问题  `bug`
* [65](https://github.com/b3log/vditor/issues/65) options.upload.linkToImgUrl 配置错误提示  `enhancement`
* [64](https://github.com/b3log/vditor/issues/64) 表情太多需要滚动条 `enhancement`
* [63](https://github.com/b3log/vditor/issues/63) 粘贴时 html2md 和 md2html 保持一致  `bug`
* [62](https://github.com/b3log/vditor/issues/62) 升级 highlight.js 到 9.15.8 `development`
* [58](https://github.com/b3log/vditor/issues/58) 添加图表支持 `feature`

### v1.4.7 / 2019-06-06

* [60](https://github.com/b3log/vditor/issues/60) type 完善 `development`
* [59](https://github.com/b3log/vditor/issues/59) Bump fstream from 1.0.11 to 1.0.12 `dependencies`
* [57](https://github.com/b3log/vditor/issues/57) ios移动端兼容 `question`
* [56](https://github.com/b3log/vditor/issues/56) 展现样式完善 `enhancement`
* [55](https://github.com/b3log/vditor/issues/55) 如何设置图片上传的路径 `question`
* [54](https://github.com/b3log/vditor/issues/54) 在使用Vditor时,如何做到支持粘贴图片的? `question`
* [53](https://github.com/b3log/vditor/issues/53) 升级 katex 0.10.1 => 0.10.2 `enhancement`
* [52](https://github.com/b3log/vditor/issues/52) 图片 emoji 对不齐 `enhancement`
* [51](https://github.com/b3log/vditor/issues/51) 剪切板中 text/html 大于 106496 时强制使用 text/plain `enhancement`
* [50](https://github.com/b3log/vditor/issues/50) 鼠标移动到 emoji 上添加变大及提示效果 `enhancement`
* [49](https://github.com/b3log/vditor/issues/49) 添加 md2html 接口 `feature`
* [48](https://github.com/b3log/vditor/issues/48) 修改 emoji 中的 hash 值 `bug`

### v1.3.5 / 2019-05-04

* [47](https://github.com/b3log/vditor/issues/47) Upgrade tar to version 4.4.2 or later `development`
* [46](https://github.com/b3log/vditor/issues/46) 注脚解析的讨论 `question`
* [45](https://github.com/b3log/vditor/issues/45) 上传图片进行容错处理 `enhancement`
* [44](https://github.com/b3log/vditor/issues/44) toolbar将emoji插件去掉之后报错 `bug`
* [43](https://github.com/b3log/vditor/issues/43) ~~支持字体样式~~ `question`
* [42](https://github.com/b3log/vditor/issues/42) 支持 CDN 快速切换 `feature`
* [41](https://github.com/b3log/vditor/issues/41) jsDelivr 证书过期解决方案 `question`
* [40](https://github.com/b3log/vditor/issues/40) 运行命令合并 `development`
* [39](https://github.com/b3log/vditor/issues/39) 拷贝行内代码,外围空格消失 `enhancement`

### v1.2.10 / 2019-04-04

* [38](https://github.com/b3log/vditor/issues/38) firefox 中代码块点击复制会回到顶部 `bug`
* [37](https://github.com/b3log/vditor/issues/37) chrome 地址栏链接复制处理 `enhancement`
* [36](https://github.com/b3log/vditor/issues/36) 和 markdown-http 保持一致,开启软换行 `enhancement`
* [35](https://github.com/b3log/vditor/issues/35) 添加 handshake 🤝 emoji `enhancement`
* [34](https://github.com/b3log/vditor/issues/34) 适配代码高亮黑色系列主题 `enhancement`
* [33](https://github.com/b3log/vditor/issues/33) 添加 options.upload.handler 接口 `feature`
* [32](https://github.com/b3log/vditor/issues/32) 添加 options.upload.validate 接口 `feature`

### v1.1.11 / 2019-03-21

* [31](https://github.com/b3log/vditor/issues/31) 添加 vditor-reset class `feature`
* [30](https://github.com/b3log/vditor/issues/30) 支持 task list `feature`
* [29](https://github.com/b3log/vditor/issues/29) 代码块添加复制 `feature`
* [28](https://github.com/b3log/vditor/issues/28) 编辑器中按下Ctrl+s 会出现字符 `question`
* [27](https://github.com/b3log/vditor/issues/27) 支持时序图渲染和甘特图  `feature`
* [26](https://github.com/b3log/vditor/issues/26) 支持流程图渲染 `feature`
* [25](https://github.com/b3log/vditor/issues/25) 支持数学公式渲染 `feature`
* [24](https://github.com/b3log/vditor/issues/24) markdown 不支持多行公式块 `enhancement`

### v1.0.0 / 2019-03-13

* [15](https://github.com/b3log/vditor/issues/15) 添加测试用例 `development`
* [9](https://github.com/b3log/vditor/issues/9) 支持前端预览 md `enhancement`

### v0.4.0 / 2019-03-06

* [23](https://github.com/b3log/vditor/issues/23) 支持 tab `feature`
* [22](https://github.com/b3log/vditor/issues/22) 全屏默认快捷键修改 `enhancement`
* [21](https://github.com/b3log/vditor/issues/21) API 改进 `feature`
* [20](https://github.com/b3log/vditor/issues/20) 添加 doge 表情 `enhancement`

### v0.2.5 / 2019-02-19

* [19](https://github.com/b3log/vditor/issues/19) emoji 样式修改 `theme`
* [18](https://github.com/b3log/vditor/issues/18) 使用 cdn.jsdelivr.net `development`
* [17](https://github.com/b3log/vditor/issues/17) 添加 emojiPath 选项 `enhancement`
* [16](https://github.com/b3log/vditor/issues/16) 期待添加滑稽表情 `enhancement`
* [14](https://github.com/b3log/vditor/issues/14) 添加 lint `development`
* [13](https://github.com/b3log/vditor/issues/13) any 修改 `development`

### v0.1.8 / 2019-02-14

* [12](https://github.com/b3log/vditor/issues/12") 全屏后,preview tip 位置错误 `bug`
* [11](https://github.com/b3log/vditor/issues/11") npm 中加入源码,以便有需要的可直接进行打包优化 `enhancement`
* [10](https://github.com/b3log/vditor/issues/10") 录音支持 Safari `enhancement`
* [8](https://github.com/b3log/vditor/issues/8") 工具栏浮动问题 `bug`
* [7](https://github.com/b3log/vditor/issues/7") 添加上传文件名安全过滤接口 `enhancement`
* [6](https://github.com/b3log/vditor/issues/6") 添加窗口 resize 回调 `enhancement`
* [5](https://github.com/b3log/vditor/issues/5") 上传改进 `enhancement`
* [4](https://github.com/b3log/vditor/issues/4") api 拼写错误 `bug`
* [3](https://github.com/b3log/vditor/issues/3") hint 添加高亮 `enhancement`

### v0.1.7 / 2019-02-11

* 第一次公开发布


================================================
FILE: LICENSE
================================================
MIT License

Copyright (c) 2019-present B3log 开源, b3log.org

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.


================================================
FILE: README.md
================================================
<p align="center">
<img alt="Vditor" src="https://b3log.org/images/brand/vditor-128.png" />

<br>
易于使用的 Markdown 编辑器,为适配不同的应用场景而生
<br><br>
<a title="MIT" target="_blank" href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/license-MIT-orange.svg?style=flat-square"></a>
<a title="npm bundle size" target="_blank" href="https://www.npmjs.com/package/vditor"><img alt="npm bundle size" src="https://img.shields.io/bundlephobia/minzip/vditor?style=flat-square&color=blueviolet"></a>
<a title="Version" target="_blank" href="https://www.npmjs.com/package/vditor"><img src="https://img.shields.io/npm/v/vditor.svg?style=flat-square"></a><br>
<a title="Downloads" target="_blank" href="https://www.npmjs.com/package/vditor"><img src="https://img.shields.io/npm/dt/vditor.svg?style=flat-square&color=97ca00"></a>
<a title="jsdelivr" target="_blank" href="https://www.jsdelivr.com/package/npm/vditor"><img src="https://data.jsdelivr.com/v1/package/npm/vditor/badge"/></a>
<a title="Hits" target="_blank" href="https://github.com/88250/hits"><img src="https://hits.b3log.org/Vanessa219/vditor.svg"></a> <br><br>
<a title="GitHub Watchers" target="_blank" href="https://github.com/Vanessa219/vditor/watchers"><img src="https://img.shields.io/github/watchers/Vanessa219/vditor.svg?label=Watchers&style=social"></a>
<a title="GitHub Stars" target="_blank" href="https://github.com/Vanessa219/vditor/stargazers"><img src="https://img.shields.io/github/stars/Vanessa219/vditor.svg?label=Stars&style=social"></a>
<a title="GitHub Forks" target="_blank" href="https://github.com/Vanessa219/vditor/network/members"><img src="https://img.shields.io/github/forks/Vanessa219/vditor.svg?label=Forks&style=social"></a>
<a title="Author GitHub Followers" target="_blank" href="https://github.com/vanessa219"><img src="https://img.shields.io/github/followers/vanessa219.svg?label=Followers&style=social"></a>
</p>

<p align="center">
<a href="https://github.com/Vanessa219/vditor/blob/master/README_en_US.md">English</a> &nbsp;|&nbsp; <a href="https://b3log.org/vditor/demo/index.html">Demo</a>
</p>

<p align="center">
🔥 欢迎观摩我们的另一个开源项目 <a href="https://github.com/siyuan-note/siyuan">思源笔记</a>
<p>

## 💡 简介

[Vditor](https://b3log.org/vditor) 是一款浏览器端的 Markdown 编辑器,支持所见即所得、即时渲染(类似 Typora)和分屏预览模式。它使用 TypeScript 实现,支持原生 JavaScript 以及 Vue、React、Angular 和 Svelte 等框架。

欢迎到 [Vditor 官方讨论区](https://ld246.com/tag/vditor)了解更多。同时也欢迎关注 B3log 开源社区微信公众号 `B3log开源`:

![b3logos.jpg](https://b3logfile.com/file/2020/08/b3logos-032af045.jpg)

## 🗺️ 背景

随着 Markdown 排版方式的普及,越来越多的应用开始集成 Markdown 编辑器。目前主流可集成的 Markdown 编辑器现状如下:

* 有的仅支持分屏预览,即编辑区和预览区分离
* 有的同时支持所见即所得和分屏预览,但所见即所得模式下不能完整支持 Markdown 语法排版
* 几乎没有类似 Typora 的即时渲染

而这三点恰好对应了三种应用场景:

* 分屏预览:适配传统的 Markdown 使用场景,适合大屏下编辑排版
* 所见即所得:对不熟悉 Markdown 的用户友好,熟悉 Markdown 的用户也可以无缝使用
* 即时渲染:理论上这是最为优雅的 Markdown 编辑方式,让熟悉 Markdown 的用户能够更专注于内容创作

所以,一个能够**适配应用场景**的 Markdown 编辑器至关重要,它需要考虑到:

* 传统 Markdown 用户的使用场景,提供分屏预览
* 富文本编辑用户的使用场景,提供所见即所得
* 高阶 Markdown 用户的使用场景,提供即时渲染

Vditor 在这些方面做了努力,希望能为现代化的通用 Markdown 编辑领域做出一些贡献。

## ✨  特性

* 支持三种编辑模式:所见即所得(wysiwyg)、即时渲染(ir)、分屏预览(sv)
* 支持大纲、数学公式、脑图、图表、流程图、甘特图、时序图、五线谱、[多媒体](https://ld246.com/article/1589813914768)、语音阅读、标题锚点、代码高亮及复制、graphviz 渲染、[plantuml](https://plantuml.com)UML图
* 导出、图片懒加载、任务列表、多平台预览、多主题切换、复制到微信公众号/知乎功能
* 实现 CommonMark 和 GFM 规范,可对 Markdown 进行格式化和语法树查看,并支持[10+项](https://ld246.com/article/1549638745630#options-preview-markdown)配置
* 工具栏包含 36+ 项操作,除支持扩展外还可对每一项中的[快捷键](https://ld246.com/article/1582778815353)、提示、提示位置、图标、点击事件、类名、子工具栏进行自定义
* 表情/at/话题等自动补全扩展
* 可使用拖拽、剪切板粘贴上传,显示实时上传进度,支持 CORS 跨域上传
* 实时保存内容,防止意外丢失
* 录音支持,用户可直接发布语音
* 粘贴 HTML 自动转换为 Markdown,如粘贴中包含外链图片可通过指定接口上传到服务器
* 支持主窗口大小拖拽、字符计数
* 多主题支持,内置黑白绿三套主题
* 多语言支持,内置中、英、韩文本地化
* 支持主流浏览器,对移动端友好

![editor.png](https://b3logfile.com/file/2020/07/editor-b304aa97.png)

![preview.png](https://b3logfile.com/file/2020/05/preview-80846f66.png)

## 🔮 编辑模式

### 所见即所得(WYSIWYG)

*所见即所得*模式对不熟悉 Markdown 的用户较为友好,熟悉 Markdown 的话也可以无缝使用。

![vditor-wysiwyg](https://b3logfile.com/file/2020/07/wysiwyg-4f216b9b.gif)

### 即时渲染(IR)

*即时渲染*模式对熟悉 Typora 的用户应该不会感到陌生,理论上这是最优雅的 Markdown 编辑方式。

![vditor-ir](https://b3logfile.com/file/2020/07/ir-67cd956c.gif)

### 分屏预览(SV)

传统的*分屏预览*模式适合大屏下的 Markdown 编辑。

![vditor-sv](https://b3logfile.com/file/2020/07/sv-595dcb28.gif)

## 🍱 语法支持

* 所有 CommonMark 语法:分隔线、ATX 标题、Setext 标题、缩进代码块、围栏代码块、HTML 块、链接引用定义、段落、块引用、列表、反斜杠转义、HTML 实体、行级代码、强调、加粗、链接、图片、行级 HTML、硬换行、软换行和纯文本。
* 所有 GFM 语法:表格、任务列表项、删除线、自动链接、XSS 过滤
* 常用 Markdown 扩展语法:脚注、ToC、自定义标题 ID
* 图表语法
  * 流程图、时序图、甘特图,通过 Mermaid 支持
  * Graphviz
  * 折线图、饼图、脑图等,通过 ECharts 支持
* 五线谱:通过 abc.js 支持
* 数学公式:数学公式块、行级数学公式,通过 MathJax 和 KaTeX 支持
* YAML Front Matter
* 中文语境优化
  * 中西文之间插入空格
  * 术语拼写修正
  * 中文后跟英文逗号句号等标点替换为中文对应标点

以上大部分特性可以通过开关配置是否启用,开发者可根据自己的应用场景选择搭配。

## 🗃 案例

* [Sym](https://github.com/88250/symphony) 一款用 Java 实现的现代化社区(论坛/BBS/社交网络/博客)平台
* [Solo](https://github.com/88250/solo) & [Pipe](https://github.com/88250/pipe) B3log 分布式社区的博客端节点,欢迎加入下一代社区网络
* [Tditor](https://tditor.com) 基于React、Vditor、Springboot,一款打造极致文字创作体验的在线Markdown编辑平台
* [Arya](https://github.com/nicejade/markdown-online-editor) 基于 Vue、Vditor,所构建的在线 Markdown 编辑器
* [更多案例](https://github.com/Vanessa219/vditor/network/dependents?package_id=UGFja2FnZS0zMTY2Mzg4MzE%3D)

## 🛠️ 使用文档

### CommonJS

* 安装依赖

```shell
npm install vditor --save
```

* 在代码中引入并初始化对象,可参考 [index.js](https://github.com/Vanessa219/vditor/blob/master/demo/index.js)

```ts
import Vditor from 'vditor'
import "~vditor/src/assets/less/index"

const vditor = new Vditor(id, {options...})
```

### HTML script

* 在 HTML 中插入 CSS 和 JavaScript,可参考 [demo](https://b3log.org/vditor/demo/index.html)

```html
<!-- ⚠️生产环境请指定版本号,如 https://unpkg.com/vditor@x.x.x/dist... -->
<link rel="stylesheet" href="https://unpkg.com/vditor/dist/index.css" />
<script src="https://unpkg.com/vditor/dist/index.min.js"></script>
```

### 示例代码

* [官方示例](https://b3log.org/vditor/demo/index.html) / [示例源码](https://github.com/Vanessa219/b3log-index/tree/master/src/vditor)
* [CommonJS Editor](https://github.com/Vanessa219/vditor/blob/master/demo/index.js)
* [CommonJS Render](https://github.com/Vanessa219/vditor/blob/master/demo/render.js)
* [在Svelte中使用](https://github.com/HerbertHe/svelte-vditor-demo)

### 主题

#### 编辑器主题

编辑器所展现的外观。内置classic,dark 2 套主题。

* 编辑器初始化时可通过 `options.theme` 设置内置主题
* 初始化完成后可通过 `setTheme` 更新编辑器主题
* 可通过修改 [index.less](https://github.com/Vanessa219/vditor/blob/master/src/assets/less/index.less) 中的变量对主题颜色进行定制
* 可参考现有结构和类名在原有基础上进行修改

#### 内容主题

Markdown 输出的 HTML 所展现的外观。内置 ant-design, light,dark,wechat 4 套主题。支持内容主题扩展接口。

* 需在显示元素上添加 `class="vditor-reset"`
* 编辑器初始化时可通过 `options.preview.theme` 设置内置或自己开发的主题列表
* 内容渲染初始化时可通过 `IPreviewOptions.theme` 设置内置或自己开发的主题
* 初始化完成后可通过 `setTheme` 或 `setContentTheme` 更新内容主题

#### 代码主题

代码块所展现的外观。内置 github 等 36 套主题。

* 编辑器初始化时可通过 `options.preview.hljs` 对代码块样式、行号、是否启用进行设置
* 内容渲染初始化时可通过 `IPreviewOptions.hljs` 对代码块样式、行号、是否启用进行设置
* 初始化完成后可通过 `setTheme` 或 `setCodeTheme` 更新代码主题

### API

#### id

可填入元素 `id` 或元素自身 `HTMLElement`

⚠️:当填入元素自身的 `HTMLElement` 时需设置 `options.cache.id` 或将 `options.cache.enable` 设置为 `false`

#### options

|   | 说明 | 默认值 |
| - | - | - |
| i18n | 多语言,参见 ITips | - |
| undoDelay | 历史记录间隔 | - |
| after | 编辑器异步渲染完成后的回调方法 | - |
| height | 编辑器总高度 | 'auto' |
| minHeight | 编辑区域最小高度 | - |
| width | 编辑器总宽度,支持 % | 'auto' |
| placeholder | 输入区域为空时的提示 | '' |
| lang | 语言种类:de_DE, en_US, es_ES, fr_FR, ja_JP, ko_KR, pt_BR, ru_RU, sv_SE, vi_VN, zh_CN, zh_TW | 'zh_CN' |
| input(value: string) | 输入后触发  | - |
| focus(value: string) | 聚焦后触发 | - |
| blur(value: string) | 失焦后触发 | - |
| keydown(event: KeyboardEvent) | 按下后触发 | - |
| esc(value: string) | <kbd>esc</kbd> 按下后触发 | - |
| ctrlEnter(value: string) | <kbd>⌘/ctrl+enter</kbd> 按下后触发 | - |
| select(value: string) | 编辑器中选中文字后触发 | - |
| unSelect() | 编辑器中未选中文字后触发 | - |
| tab | <kbd>tab</kbd> 键操作字符串,支持 `\t` 及任意字符串 | - |
| typewriterMode | 是否启用打字机模式 | false |
| cdn | 配置自建 CDN 地址 | `https://unpkg.com/vditor@${VDITOR_VERSION}` |
| mode | 可选模式:sv, ir, wysiwyg | 'ir' |
| debugger | 是否显示日志 | false |
| value | 编辑器初始化值 | '' |
| theme | 主题:classic, dark | 'classic' |
| icon | 图标风格:ant, material | 'ant' |
| customRenders: {language: string, render: (element: HTMLElement, vditor: IVditor) => void}[] | 自定义渲染器 | [] |
| customWysiwygToolbar(type: TWYSISYGToolbar, element: HTMLElement): void | 对 wysiwyg 模式下的工具栏进行自定义 | - |

#### options.toolbar

* 工具栏,可使用 name 进行简写: `toolbar: ['emoji', 'br', 'bold', '|', 'line']` 。默认值参见 [src/ts/util/Options.ts](https://github.com/Vanessa219/vditor/blob/master/src/ts/util/Options.ts)
* name 可枚举为: `emoji`,`headings`,`bold`,`italic`,`strike`,`|`,`line`,`quote`,`list`,`ordered-list`,`check` ,`outdent` ,`indent`,`code`,`inline-code`,`insert-after`,`insert-before` ,`undo`,`redo`,`upload`,`link`,`table`,`record`,`edit-mode`,`both`,`preview`,`fullscreen`,`outline`,`code-theme`,`content-theme`,`export`, `devtools`,`info`,`help`,`br`
* 当 `name` 不在枚举中时,可以添加自定义按钮,格式如下:

```js
new Vditor('vditor', {
  toolbar: [
    {
      hotkey: '⇧⌘S',
      name: 'sponsor',
      tipPosition: 's',
      tip: '成为赞助者',
      className: 'right',
      icon: '<svg t="1589994565028" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2808" width="32" height="32"><path d="M506.6 423.6m-29.8 0a29.8 29.8 0 1 0 59.6 0 29.8 29.8 0 1 0-59.6 0Z" fill="#0F0F0F" p-id="2809"></path><path d="M717.8 114.5c-83.5 0-158.4 65.4-211.2 122-52.7-56.6-127.7-122-211.2-122-159.5 0-273.9 129.3-273.9 288.9C21.5 562.9 429.3 913 506.6 913s485.1-350.1 485.1-509.7c0.1-159.5-114.4-288.8-273.9-288.8z" fill="#FAFCFB" p-id="2810"></path><path d="M506.6 926c-22 0-61-20.1-116-59.6-51.5-37-109.9-86.4-164.6-139-65.4-63-217.5-220.6-217.5-324 0-81.4 28.6-157.1 80.6-213.1 53.2-57.2 126.4-88.8 206.3-88.8 40 0 81.8 14.1 124.2 41.9 28.1 18.4 56.6 42.8 86.9 74.2 30.3-31.5 58.9-55.8 86.9-74.2 42.5-27.8 84.3-41.9 124.2-41.9 79.9 0 153.2 31.5 206.3 88.8 52 56 80.6 131.7 80.6 213.1 0 103.4-152.1 261-217.5 324-54.6 52.6-113.1 102-164.6 139-54.8 39.5-93.8 59.6-115.8 59.6zM295.4 127.5c-72.6 0-139.1 28.6-187.3 80.4-47.5 51.2-73.7 120.6-73.7 195.4 0 64.8 78.3 178.9 209.6 305.3 53.8 51.8 111.2 100.3 161.7 136.6 56.1 40.4 88.9 54.8 100.9 54.8s44.7-14.4 100.9-54.8c50.5-36.3 108-84.9 161.7-136.6 131.2-126.4 209.6-240.5 209.6-305.3 0-74.9-26.2-144.2-73.7-195.4-48.2-51.9-114.7-80.4-187.3-80.4-61.8 0-127.8 38.5-201.7 117.9-2.5 2.6-5.9 4.1-9.5 4.1s-7.1-1.5-9.5-4.1C423.2 166 357.2 127.5 295.4 127.5z" fill="#141414" p-id="2811"></path><path d="M353.9 415.6m-33.8 0a33.8 33.8 0 1 0 67.6 0 33.8 33.8 0 1 0-67.6 0Z" fill="#0F0F0F" p-id="2812"></path><path d="M659.3 415.6m-33.8 0a33.8 33.8 0 1 0 67.6 0 33.8 33.8 0 1 0-67.6 0Z" fill="#0F0F0F" p-id="2813"></path><path d="M411.6 538.5c0 52.3 42.8 95 95 95 52.3 0 95-42.8 95-95v-31.7h-190v31.7z" fill="#5B5143" p-id="2814"></path><path d="M506.6 646.5c-59.6 0-108-48.5-108-108v-31.7c0-7.2 5.8-13 13-13h190.1c7.2 0 13 5.8 13 13v31.7c0 59.5-48.5 108-108.1 108z m-82-126.7v18.7c0 45.2 36.8 82 82 82s82-36.8 82-82v-18.7h-164z" fill="#141414" p-id="2815"></path><path d="M450.4 578.9a54.7 27.5 0 1 0 109.4 0 54.7 27.5 0 1 0-109.4 0Z" fill="#EA64F9" p-id="2816"></path><path d="M256 502.7a32.1 27.5 0 1 0 64.2 0 32.1 27.5 0 1 0-64.2 0Z" fill="#EFAFF9" p-id="2817"></path><path d="M703.3 502.7a32.1 27.5 0 1 0 64.2 0 32.1 27.5 0 1 0-64.2 0Z" fill="#EFAFF9" p-id="2818"></path></svg>',
      click () {alert('捐赠地址:https://ld246.com/sponsor')},
    }],
})
```

|   | 说明 | 默认值 |
| - | - | - |
| name | 唯一标示 | - |
| icon | svg 图标 | - |
| tip | 提示 | - |
| tipPosition | 提示位置:'n', 'ne', 'nw', 's', 'se', 'sw', 'w', 'e' | - |
| hotkey | 快捷键,格式为<kbd>⇧⌘</kbd>/<kbd>⌘</kbd>/<kbd>⌥⌘</kbd>| - |
| suffix | 插入编辑器中的后缀 | - |
| prefix | 插入编辑器中的前缀 | - |
| click(event: Event, vditor: IVditor) | 自定义按钮点击时触发的事件 | - |
| className | 样式名 | '' |
| toolbar?: Array<options.toolbar> | 子菜单 | - |

#### options.toolbarConfig

|   | 说明 | 默认值 |
| - | - | - |
| hide | 是否隐藏工具栏 | false |
| pin | 是否固定工具栏 | false |

#### options.counter

|   | 说明 | 默认值 |
| - | - | - |
| enable | 是否启用计数器 | false |
| after(length: number, counter: options.counter): void | 字数统计回调 | - |
| max | 允许输入的最大值 | - |
| type | 统计类型:'markdown', 'text' | 'markdown' |

#### options.cache

|   | 说明 | 默认值 |
| - | - | - |
| enable | 是否使用 localStorage 进行缓存 | true |
| id | 缓存 key,第一个参数为元素且启用缓存时**必填** | - |
| after(html: string): string | 缓存后的回调 | - |

#### options.comment

⚠️:仅支持 wysiwyg 模式

|   | 说明 | 默认值 |
| - | - | - |
| enable | 是否启用评论模式 | false |
| add(id: string, text: string, commentsData: ICommentsData[]) | 添加评论回调 | - |
| remove(ids: string[]) | 删除评论回调 | - |
| scroll(top: number) | 滚动回调 | - |
| adjustTop(commentsData: ICommentsData[]) | 文档修改时,适配评论高度 | - |

#### options.preview

|   | 说明 | 默认值 |
| - | - | - |
| delay | 预览 debounce 毫秒间隔 | 1000 |
| maxWidth | 预览区域最大宽度 | 800 |
| mode | 显示模式:both, editor | 'both' |
| url | md 解析请求 | - |
| parse(element: HTMLElement) | 预览回调 | - |
| transform(html: string): string | 渲染之前回调 | - |

#### options.preview.hljs

|   | 说明 | 默认值 |
| - | - | - |
| defaultLang | 未指定语言时默认使用该语言 | '' |
| enable | 是否启用代码高亮 | true |
| style | 可选值参见[Chroma](https://xyproto.github.io/splash/docs/longer/all.html) | `github` |
| lineNumber | 是否启用行号 | false |
| langs | 自定义指定语言 | [CODE_LANGUAGES](https://github.com/Vanessa219/vditor/blob/53ca8f9a0e511b37b5dae7c6b15eb933e9e02ccd/src/ts/constants.ts#L20) |
| renderMenu(code: HTMLElement, copy: HTMLElement) | 渲染菜单按钮 | - |

#### options.preview.markdown

|   | 说明 | 默认值 |
| - | - | - |
| autoSpace | 自动空格 | false |
| gfmAutoLink | 自动链接 | true |
| fixTermTypo | 自动矫正术语 | false |
| toc | 插入目录 | false |
| footnotes | 脚注 | true |
| codeBlockPreview | wysiwyg 和 ir 模式下是否对代码块进行渲染 | true |
| mathBlockPreview | wysiwyg 和 ir 模式下是否对数学公式进行渲染 | true |
| paragraphBeginningSpace | 段落开头空两个 | false |
| sanitize | 是否启用过滤 XSS | true |
| listStyle | 为列表添加 data-style 属性 | false |
| linkBase | 链接相对路径前缀 | '' |
| linkPrefix | 链接强制前缀 | '' |
| mark | 启用 mark 标记 | false |
| sup | 上标 | false |
| sub | 下标 | false |

#### options.preview.theme

|   | 说明 | 默认值 |
| - | - | - |
| current | 当前主题 | "light" |
| list | 可选主题列表 | { "ant-design": "Ant Design", dark: "Dark", light: "Light", wechat: "WeChat" } |
| path | 主题样式地址 | `https://unpkg.com/vditor@${VDITOR_VERSION}/dist/css/content-theme` |

#### options.preview.math

|   | 说明 | 默认值 |
| - | - | - |
| inlineDigit | 内联数学公式起始 $ 后是否允许数字 | false |
| macros | 使用 MathJax 渲染时传入的宏定义 | {} |
| engine | 数学公式渲染引擎:KaTeX, MathJax | 'KaTeX' |
| mathJaxOptions | 数学公式渲染引擎为 MathJax 时的参数 | - |

#### options.preview.actions?: Array<IPreviewAction | IPreviewActionCustom>

默认值为 ["desktop", "tablet", "mobile", "mp-wechat", "zhihu"]。
可从默认值中挑选进行配置,也可使用以下字段进行自定制开发。

|   | 说明 | 默认值 |
| - | - | - |
| key | 按钮唯一标识,不能为空 | - |
| text | 按钮文字 | - |
| tooltip | 提示 | - |
| className | 按钮类名 | - |
| click(key: string) | 按钮点击回调事件 | - |

#### options.preview.render.media

|        | 说明        | 默认值  |
|--------|-----------|------|
| enable | 是否启用多媒体渲染 | true |

#### options.image

|   | 说明 | 默认值 |
| - | - | - |
| isPreview | 是否预览图片 | true |
| preview(bom: Element) => void | 图片预览处理 | - |

#### options.link

|   | 说明 | 默认值 |
| - | - | - |
| isOpen | 是否打开链接地址 | true |
| click(bom: Element) => void | 点击链接事件 | - |

#### options.hint

|   | 说明 | 默认值 |
| - | - | - |
| parse | 是否进行 md 解析 | true |
| delay | 提示 debounce 毫秒间隔 | 200 |
| emoji | 默认表情,可从[lute/emoji_map](https://github.com/88250/lute/blob/master/parse/emoji_map.go) 中选取,也可自定义 | { '+1': '👍', '-1': '👎', 'heart': '❤️', 'cold_sweat': '😰' } |
| emojiTail | 常用表情提示 | - |
| emojiPath | 表情图片地址 | `https://unpkg.com/vditor@${VDITOR_VERSION}/dist/images/emoji` |
| extend: IHintExtend[] | 对 @/话题等关键字自动补全的扩展 | [] |

```ts
interface IHintData {
  html: string;
  value: string;
}

interface IHintExtend {
    key: string;

    hint?(value: string): IHintData[] | Promise<IHintData[]>;
}
```

#### options.upload

* 文件上传的数据结构如下。后端返回的数据结构不一致时,可使用 `format` 进行转换。

```js
// POST data
xhr.send(formData);  // formData = FormData.append("file[]", File)
// return data
{
 "msg": "",
 "code": 0,
 "data": {
 "errFiles": ['filename', 'filename2'],
 "succMap": {
   "filename3": "filepath3",
   "filename3": "filepath3"
   }
 }
}
```

* 为了防止站外图片失效,`linkToImgUrl` 可将剪贴板中的站外图片地址传到服务器端进行保存处理,其数据结构如下:

```js
// POST data
xhr.send(JSON.stringify({url: src})); // src 为站外图片地址
// return data
{
 msg: '',
 code: 0,
 data : {
   originalURL: '',
   url: ''
 }
}
```

* `success`,`format`,`error` 不会同时触发,具体调用情况如下:

```js
if (xhr.status === 200) {
    if (vditor.options.upload.success) {
        vditor.options.upload.success(editorElement, xhr.responseText);
    } else {
        let responseText = xhr.responseText;
        if (vditor.options.upload.format) {
            responseText = vditor.options.upload.format(files as File [], xhr.responseText);
        }
        genUploadedLabel(responseText, vditor);
    }
} else {
    if (vditor.options.upload.error) {
        vditor.options.upload.error(xhr.responseText);
    } else {
        vditor.tip.show(xhr.responseText);
    }
}
```

|   | 说明 | 默认值 |
| - | - | - |
| xhr | 上传时使用的 XMLHttpRequest | - |
| url | 上传 url,为空则不会触发上传相关事件 | '' |
| max | 上传文件最大 Byte | 10 * 1024 * 1024 |
| linkToImgUrl | 剪切板中包含图片地址时,使用此 url 重新上传 | '' |
| linkToImgCallback(responseText: string) | 图片地址上传回调 | - |
| linkToImgFormat(responseText: string): string | 对图片地址上传的返回值进行格式化 | - |
| success(editor: HTMLPreElement, msg: string) | 上传成功回调 | - |
| error(msg: string) | 上传失败回调 | - |
| token | CORS 上传验证,头为 X-Upload-Token | - |
| withCredentials | 跨站点访问控制 | false |
| headers | 请求头设置 | - |
| filename(name: string): string | 文件名安全处理 | name => name.replace(/\W/g, '') |
| accept | 文件上传类型,同[input accept](https://www.w3schools.com/tags/att_input_accept.asp) | - |
| validate(files: File[]) => string \| boolean | 校验,成功时返回 true 否则返回错误信息 | - |
| handler(files: File[]) => string \| null \| Promise<string> \| Promise<null> | 自定义上传,当发生错误时返回错误信息 | - |
| format(files: File[], responseText: string): string | 对服务端返回的数据进行转换,以满足内置的数据结构 | - |
| file(files: File[]): File[] \| Promise<File[]> | 将上传的文件处理后再返回 | - |
| cancel(files: File[]): void | 取消正在上传的文件 | - |
| setHeaders(): { [key: string]: string } | 上传前使用返回值设置头 | - |
| extraData: { [key: string]: string \| Blob } | 为 FormData 添加额外的参数 | - |
| multiple | 上传文件是否为多个 | true |
| fieldName | 上传字段名称 | 'file[]' |
| renderLinkDest?(vditor: IVditor, node: ILuteNode, entering: boolean): [string, number] | 处理剪贴板中的图片地址 | '' |

#### options.resize

|   | 说明 | 默认值 |
| - | - | - |
| enable | 是否支持大小拖拽 | false |
| position | 拖拽栏位置:'top', 'bottom' | 'bottom' |
| after(height: number) | 拖拽结束的回调 | - |

#### options.classes

|   | 说明 | 默认值 |
| - | - | - |
| preview | 预览元素上的 className | '' |

#### options.fullscreen

|   | 说明 | 默认值 |
| - | - | - |
| index | 全屏层级 | 90 |

#### options.outline

|   | 说明 | 默认值 |
| - | - | - |
| enable | 初始化是否展现大纲 | false |
| position | 大纲位置:'left', 'right' | 'left' |

#### methods

|   | 说明 |
| - | - |
| exportJSON(markdown: string) | 根据 Markdown 获取对应 JSON |
| getValue() | 获取 Markdown 内容 |
| getHTML() | 获取 HTML 内容 |
| insertValue(value: string, render = true) | 在焦点处插入内容,并默认进行 Markdown 渲染 |
| focus() | 聚焦到编辑器 |
| blur() | 让编辑器失焦 |
| disabled() | 禁用编辑器 |
| enable() | 解除编辑器禁用 |
| getSelection(): string | 返回选中的字符串 |
| setValue(markdown: string, clearStack = false) | 设置编辑器内容且选中清空历史栈 |
| clearStack() | 清空撤销和重做记录栈|
| renderPreview(value?: string) | 设置预览区域内容 |
| getCursorPosition():{top: number, left: number} | 获取焦点位置 |
| deleteValue() | 删除选中内容 |
| updateValue(value: string) | 更新选中内容 |
| isUploading() | 上传是否还在进行中 |
| clearCache() | 清除缓存 |
| disabledCache() | 禁用缓存 |
| enableCache() | 启用缓存 |
| html2md(value: string) | HTML 转 md |
| tip(text: string, time: number) | 消息提示。time 为 0 将一直显示 |
| setPreviewMode(mode: "both" \| "editor") | 设置预览模式 |
| setTheme(theme: "dark" \| "classic", contentTheme?: string, codeTheme?: string, contentThemePath?: string) | 设置主题、内容主题及代码块风格 |
| getCurrentMode(): string | 获取编辑器当前编辑模式 |
| destroy() | 销毁编辑器 |
| getCommentIds(): {id: string, top: number}[] | 获取所有评论 |
| hlCommentIds(ids: string[]) | 高亮评论 |
| unHlCommentIds(ids: string[]) | 取消评论高亮 |
| removeCommentIds(removeIds: string[]) | 删除评论 |
| updateToolbarConfig(config: {hide?: boolean, pin?: boolean}) | 更新工具栏配置 |
| insertEmptyBlock(position: InsertPosition) | 插入空快 |

#### static methods

* 不需要进行编辑操作时,仅需引入 [`method.min.js`](https://unpkg.com/vditor/dist/) 后如下直接调用

```js
Vditor.mermaidRender(document)
```

```js
import VditorPreview from 'vditor/dist/method.min'
VditorPreview.mermaidRender(document)
```

* 需要对页面中的 Markdown 进行渲染时可直接调用 `preview` 方法,参数如下:

```ts
previewElement: HTMLDivElement,   // 使用该元素进行渲染
markdown: string,  // 需要渲染的 markdown 原文
options?: IPreviewOptions {
  mode: "dark" | "light";
  anchor?: number;  // 为标题添加锚点 0:不渲染;1:渲染于标题前;2:渲染于标题后,默认 0
  customEmoji?: { [key: string]: string };    // 自定义 emoji,默认为 {}
  lang?: (keyof II18nLang);    // 语言,默认为 'zh_CN'
  emojiPath?: string;    // 表情图片路径
  hljs?: IHljs; // 参见 options.preview.hljs
  speech?: {  // 对选中后的内容进行阅读
    enable?: boolean,
  };
  math?: IMath; // 数学公式渲染配置
  cdn?: string; // 自建 CDN 地址
  transform?(html: string): string; // 在渲染前进行的回调方法
  after?(); // 渲染完成后的回调
  lazyLoadImage?: string; // 设置为 Loading 图片地址后将启用图片的懒加载
  markdown?: options.preview.markdown;
  theme?: options.preview.theme;
  render?: options.preview.render;
  renderers?: ILuteRender; // 自定义渲染 https://ld246.com/article/1588412297062
}
```

* ⚠️ `method.min.js`  和 `index.min.js` 不可同时引入

|   | 说明 |
| - | - |
| previewImage(oldImgElement: HTMLImageElement, lang: keyof II18n = "zh_CN", theme = "classic") | 点击图片预览 |
| mermaidRender(element: HTMLElement, cdn = options.cdn, theme = options.theme) | 流程图/时序图/甘特图 |
| SMILESRender(element: HTMLElement, cdn = options.cdn, theme = options.theme) | 化学物质结构 |
| markmapRender(element: HTMLElement, cdn = options.cdn) | markdown 思维导图 |
| flowchartRender(element: HTMLElement, cdn = options.cdn) | flowchart 渲染 |
| codeRender(element: HTMLElement, option?: IHljs) | 为 element 中的代码块添加复制按钮 |
| chartRender(element: (HTMLElement \| Document) = document, cdn = options.cdn, theme = options.theme) | 图表渲染 |
| mindmapRender(element: (HTMLElement \| Document) = document, cdn = options.cdn, theme = options.theme) | 脑图渲染 |
| plantumlRender(element: (HTMLElement \| Document) = document, cdn = options.cdn) | plantuml 渲染 |
| abcRender(element: (HTMLElement \| Document) = document, cdn = options.cdn) | 五线谱渲染 |
| md2html(mdText: string, options?: IPreviewOptions): Promise\<string> | Markdown 文本转换为 HTML,该方法需使用[异步编程](https://ld246.com/article/1546828434083?r=Vanessa#toc_h3_1) |
| preview(previewElement: HTMLDivElement, markdown: string, options?: IPreviewOptions) | 页面 Markdown 文章渲染 |
| highlightRender(hljsOption?: IHljs, element?: HTMLElement \| Document, cdn = options.cdn) | 为 element 中的代码块进行高亮渲染 |
| mediaRender(element: HTMLElement) | 为[特定链接](https://ld246.com/article/1589813914768)分别渲染为视频、音频、嵌入的 iframe |
| mathRender(element: HTMLElement, options?: {cdn?: string, math?: IMath}) | 对数学公式进行渲染 |
| speechRender(element: HTMLElement, lang?: (keyof II18nLang)) | 对选中的文字进行阅读 |
| graphvizRender(element: HTMLElement, cdn?: string) | 对 graphviz 进行渲染 |
| outlineRender(contentElement: HTMLElement, targetElement: Element) | 对大纲进行渲染 |
| lazyLoadImageRender(element: (HTMLElement \| Document) = document) | 对启用懒加载的图片进行渲染 |
| setCodeTheme(codeTheme: string, cdn = options.cdn) | 设置代码主题,codeTheme 参见 options.preview.hljs.style |
| setContentTheme(contentTheme: string, path: string) | 设置内容主题,contentTheme 参见 options.preview.theme.list |

## 🏗 开发文档

### 原理相关

* [关于所见即所得 Markdown 编辑器的讨论](https://ld246.com/article/1579414663700)
* [Vditor 实现 Markdown 所见即所得](https://ld246.com/article/1577370404903)
* [Lute 一款对中文语境优化的 Markdown 引擎,支持 Go 和 JavaScript](https://ld246.com/article/1567047822949)

### 环境

1. 安装 [node](https://nodejs.org/) LTS 版本
2. [下载](https://github.com/Vanessa219/vditor/archive/master.zip)最新代码并解压
3. 根目录运行 `npm install`
4. `npm run start` 启动本地服务器,打开 http://localhost:9000
5. 修改代码
6. `npm run build` 打包代码到 dist 目录

### CDN 切换

由于使用了按需加载的机制,默认 CDN 为 [https://unpkg.com/vditor](https://unpkg.com/vditor)@版本号

如果代码有修改或需要使用自建 CDN 的话,可按以下步骤进行操作:

* 初始化时,需对 `options` 及 `IPreviewOptions` 中的 `cdn`,`emojiPath`, `themes` 进行配置
* `highlightRender`,`mathRender`,`abcRender`,`chartRender`,`mermaidRender`,`SMILESRender`,`markmapRender`,`flowchartRender`,`mindmapRender`,`plantumlRender`,`graphvizRender`,`setCodeTheme`,`setContentTheme` 方法中需添加 cdn 参数
* 将 build 成功的 dist 目录或 [jsDelivr](https://www.jsdelivr.com/package/npm/vditor?path=dist) 中的 dist 目录拷贝至正确的位置

### 升级

版本升级时请**仔细阅读** [CHANGELOG](https://github.com/Vanessa219/vditor/blob/master/CHANGELOG.md) 中的**升级**部分

## Ⓜ️ Markdown 使用指南

* [基础语法](https://ld246.com/article/1583129520165)
* [扩展语法](https://ld246.com/article/1583305480675)
* [速查手册](https://ld246.com/article/1583308420519)

## 🏘️ 社区

* [官网](https://b3log.org/vditor)
* [讨论区](https://ld246.com/tag/vditor)
* [报告问题](https://github.com/Vanessa219/vditor/issues/new)

## 📄 授权

Vditor 使用 [MIT](https://opensource.org/licenses/MIT) 开源协议。

## 🙏 鸣谢

* [Lute](https://github.com/88250/lute):🎼 一款结构化的 Markdown 引擎,支持 Go 和 JavaScript
* [highlight.js](https://github.com/highlightjs/highlight.js):JavaScript syntax highlighter
* [mermaid](https://github.com/knsv/mermaid):Generation of diagram and flowchart from text in a similar manner as Markdown
* [incubator-echarts](https://github.com/apache/incubator-echarts):A powerful, interactive charting and visualization library for browser
* [abcjs](https://github.com/paulrosen/abcjs):JavaScript library for rendering standard music notation in a browser

## 📽️ 历史

我们在开发 [Sym](https://github.com/88250/symphony) 的初期是直接使用 WYSIWYG 富文本编辑器的。那时候基于 HTML 的编辑器非常流行,项目中引用起来也很方便,也符合用户当时的使用习惯。

后来,Markdown 的崛起逐步改变了大家的排版方式。再加上我们其他几个项目都是面向程序员用户的,所以迁移到 md 上也是大势所趋。我们选择了 [CodeMirror](https://github.com/codemirror/CodeMirror),这是一款优秀的编辑器,它对开发者提供了丰富的编程接口,对各种浏览器的兼容性也比较好。

再后来,随着我们项目业务需求方面的沉淀,使用 CodeMirror 有时候会感到比较“笨重”。比如要实现 @自动完成用户名列表、插入 Emoji、上传文件等就需要比较深入的二次开发,而这些业务需求恰恰是很多项目场景共有且必备的。

终于,我们决定开始在 Sym 中自己实现编辑器。随着几个版本的迭代,Sym 的编辑器也日趋成熟。在我们运营的社区[链滴](https://ld246.com)上陆续有人问我们是否能将编辑器单独抽离出来提供给大家使用。与此同时,我们的前端主程 [V](https://ld246.com/member/Vanessa) 同学对于维护分散在各个项目中的编辑器也感到有点力不从心,外加对 TypeScript 的好感,所以就决定使用 ts 来实现一个全新的浏览器端 md 编辑器。

于是,Vditor 就这样诞生了。


================================================
FILE: README_en_US.md
================================================
<p align="center">
<img alt="Vditor" src="https://b3log.org/images/brand/vditor-128.png" />

<br>
Easy-to-use Markdown editor, born to adapt to different application scenarios
<br><br>
<a title="MIT" target="_blank" href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/license-MIT-orange.svg?style=flat-square"></a>
<a title="npm bundle size" target="_blank" href="https://www.npmjs.com/package/vditor"><img alt="npm bundle size" src="https://img.shields.io/bundlephobia/minzip/vditor?style=flat-square&color=blueviolet"></a>
<a title="Version" target="_blank" href="https://www.npmjs.com/package/vditor"><img src="https://img.shields.io/npm/v/vditor.svg?style=flat-square"></a><br>
<a title="Downloads" target="_blank" href="https://www.npmjs.com/package/vditor"><img src="https://img.shields.io/npm/dt/vditor.svg?style=flat-square&color=97ca00"></a>
<a title="jsdelivr" target="_blank" href="https://www.jsdelivr.com/package/npm/vditor"><img src="https://data.jsdelivr.com/v1/package/npm/vditor/badge"/></a>
<a title="Hits" target="_blank" href="https://github.com/88250/hits"><img src="https://hits.b3log.org/Vanessa219/vditor.svg"></a> <br><br>
<a title="GitHub Watchers" target="_blank" href="https://github.com/Vanessa219/vditor/watchers"><img src="https://img.shields.io/github/watchers/Vanessa219/vditor.svg?label=Watchers&style=social"></a>
<a title="GitHub Stars" target="_blank" href="https://github.com/Vanessa219/vditor/stargazers"><img src="https://img.shields.io/github/stars/Vanessa219/vditor.svg?label=Stars&style=social"></a>
<a title="GitHub Forks" target="_blank" href="https://github.com/Vanessa219/vditor/network/members"><img src="https://img.shields.io/github/forks/Vanessa219/vditor.svg?label=Forks&style=social"></a>
<a title="Author GitHub Followers" target="_blank" href="https://github.com/vanessa219"><img src="https://img.shields.io/github/followers/vanessa219.svg?label=Followers&style=social"></a>
</p>

<p align="center">
<a href="https://github.com/Vanessa219/vditor/blob/master/README.md">中文</a> &nbsp;|&nbsp; <a href="https://b3log.org/vditor/demo/index.html">Demo</a>
</p>

<p align="center">
🔥 Welcome to check out our other open source project <a href="https://github.com/siyuan-note/siyuan">SiYuan</a>
<p>

## 💡 Introduction

[Vditor](https://b3log.org/vditor) is a browser-side Markdown editor, Support WYSIWYG, instant rendering (similar to Typora) and split-screen preview mode. It is implemented using TypeScript and supports native JavaScript and frameworks such as Vue, React, Angular, and Svelte..

Welcome to [Vditor Official Site](https://b3log.org/vditor) to learn more.

## 🗺️ Background

With the popularization of Markdown typesetting methods, more and more applications begin to integrate the Markdown editor. The current status of mainstream integrable Markdown editors is as follows:

* Some only support split-screen preview, that is, the editing area and preview area are separated
* Some support WYSIWYG and split-screen previews at the same time, but they cannot fully support Markdown syntax typesetting in WYSIWYG mode
* There is almost no instant rendering similar to Typora

These three points correspond to three application scenarios:

* Split screen preview: adapt to the traditional Markdown usage scene, suitable for editing and typesetting on a large screen
* WYSIWYG: Friendly to users who are not familiar with Markdown, users who are familiar with Markdown can also use it seamlessly
* Instant rendering: In theory, this is the most elegant Markdown editing method, allowing users familiar with Markdown to focus more on content creation

Therefore, a Markdown editor that can **adapt to application scenarios** is essential, it needs to consider:

* Use scenes of traditional Markdown users, providing split screen preview
* Rich text editing users' usage scenarios, providing WYSIWYG
* High-end Markdown users' use scenes, providing instant rendering

Vditor has made efforts in these areas, hoping to make some contributions to the modern general Markdown editing field.

## ✨  Features

* Support three editing modes: WYSIWYG(wysiwyg), Instant Rendering(ir) and Split View(sv)
* Support outline, mathematical formulas, mind maps, charts, flowcharts, Gantt charts, timing charts, staffs, [multimedia](https://ld246.com/article/1589813914768), voice reading, heading anchors, code highlighting and copying, graphviz rendering
* Export, image lazy loading, task list, multi-platform preview, multi-theme switching, copy to WeChat/zhihu function
* Implementation of CommonMark and GFM specifications, formatting and syntax tree viewing of Markdown, and support for [10+ configurations](https://ld246.com/article/1549638745630#options-preview-markdown)
* The toolbar contains 36+ items of operations. In addition to support for expansion, the [shortcut keys](https://ld246.com/article/1582778815353), tip, tip positions, icons, click events, class names, and sub-toolbars can be customized
* Extend auto-complete for emoji/@/# and so on
* You can use drag and drop, paste and paste to upload, display real-time upload progress, support CORS cross-domain upload
* Save content in real time to prevent accidental loss
* Recording support, users can directly publish voice
* The markup HTML is automatically converted to Markdown, if the paste contains images of external links, it can be uploaded to the server through the specified interface
* Support main window size drag and drop, character counting
* Multi-theme support, built-in black, white and green three sets of themes
* Multi-language support, built-in Chinese, English, Korean text localization
* Support mainstream browsers, mobile friendly

![editor.png](https://b3logfile.com/file/2020/07/editor-b304aa97.png)

![preview.png](https://b3logfile.com/file/2020/05/preview-80846f66.png)

## 🔮 Editing Modes

### WYSIWYG

*WYSIWYG* mode is more friendly to users who are not familiar with Markdown, and you can use it seamlessly if you are familiar with Markdown.

![vditor-wysiwyg](https://b3logfile.com/file/2020/07/wysiwyg-4f216b9b.gif)

### Instant Rendering

*Instant Rendering* mode should not be unfamiliar to users who are familiar with Typora. In theory, this is the most elegant Markdown editing method.

![vditor-ir](https://b3logfile.com/file/2020/07/ir-67cd956c.gif)

### Split View

The traditional *Split View* mode is suitable for Markdown editing on a large screen.

![vditor-sv](https://b3logfile.com/file/2020/07/sv-595dcb28.gif)

## 🍱 Syntax support

* All CommonMark syntax: Thematic breaks, ATX headings, Setext headings, Indented code blocks, Fenced code blocks, HTML blocks, Link reference definitions, Paragraphs, Block quotes, Lists, Backslash escapes, Entity and numeric character references, Code spans, Emphasis and strong emphasis, Links, Images, Raw HTML, Hard line breaks, Soft line breaks, and Textual content.
* All GFM syntax: Tables, Task list items, Strikethrough, Autolinks, XSS filtering
* Common Markdown extended syntax: Footnotes, ToC, Custom Heading ID
* Chart syntax
  * Flow chart, sequence diagram, Gantt chart, supported by Mermaid
  * Graphviz
  * Line chart, pie chart, brain chart, etc., supported by ECharts
* Stave: supported by abc.js
* Math formulas: Math formula blocks, row-level math formulas, supported by MathJax and KaTeX
* YAML Front Matter
* Chinese context optimization
  * Insert space between Chinese and Western
  * Terminology spelling correction
  * Chinese followed by English comma period and other punctuation are replaced with Chinese corresponding punctuation

Most of the above features can be enabled or disabled through the switch configuration, developers can choose to match according to their own application scenarios.

## 🗃 Showcases

* [Sym](https://github.com/88250/symphony) A modern community (forum/BBS/SNS/blog) platform implemented in Java
* [Solo](https://github.com/88250/solo) & [Pipe](https://github.com/88250/pipe) B3log distributed community blog end node, welcome to join the next generation community network
* [Arya](https://github.com/nicejade/markdown-online-editor) Based on Vue, Vditor, built online Markdown editor
* [More cases](https://github.com/Vanessa219/vditor/network/dependents?package_id=UGFja2FnZS0zMTY2Mzg4MzE%3D)

## 🛠️ User Guide

### CommonJS

* Install dependencies

```shell
npm install vditor --save
```

* Introduce and initialize objects in the code, you can refer to [index.js](https://github.com/Vanessa219/vditor/blob/master/demo/index.js)

```ts
import Vditor from 'vditor'
import "~vditor/src/assets/less/index" // Or use dark

const vditor = new Vditor(id, {options...})
```

### HTML script

* Insert CSS and js in HTML, you can refer to [demo](https://b3log.org/vditor/demo/index.html)

```html
<!-- ⚠️Please specify the version number in the production environment, such as https://unpkg.com/vditor@x.x.x/dist... -->
<link rel="stylesheet" href="https://unpkg.com/vditor/dist/index.css" />
<script src="https://unpkg.com/vditor/dist/index.min.js"></script>
```

### Demo code

* [Demo](https://b3log.org/vditor/demo/index.html)
* [CommonJS Editor](https://github.com/Vanessa219/vditor/blob/master/demo/index.js)
* [CommonJS Render](https://github.com/Vanessa219/vditor/blob/master/demo/render.js)
* [Use in Svelte](https://github.com/HerbertHe/svelte-vditor-demo)

### Themes

* Support four sets of black and white themes: and-design, classic, dark, wechat
* Use the less/css developed by yourself to fully customize the style after referring to the existing style
* Theme colors can be customized by modifying variables in [index.less](https://github.com/Vanessa219/vditor/blob/master/src/assets/less/index.less)
* Adding `class="vditor-reset"` (classic theme) or `class="vditor-reset vditor-reset--dark"` (black theme) attribute on the content display element can display the content more friendly

### API

#### id

Can be filled with element `id` or element itself` HTMLElement`

⚠️: When filling in the element's `HTMLElement`, you need to set `options.cache.id` or set `options.cache.enable` to `false`

#### options

|   | Explanation | Default |
| - | - | - |
| i18n | I18n, more details see ITips | - |
| undoDelay | Undo interval | - |
| after | Callback method after editor asynchronous rendering is completed | - |
| height | Total editor height | 'auto' |
| minHeight | Editing area minimum height | - |
| width | Total editor width, supports % | 'auto' |
| placeholder | Tips when the input area is empty | '' |
| lang | I18n type: de_DE, en_US, es_ES, fr_FR, ja_JP, ko_KR, pt_BR, ru_RU, sv_SE, vi_VN, zh_CN, zh_TW | 'zh_CN' |
| input(value: string) | Trigger after input  | - |
| focus(value: string) | Trigger after focusing | - |
| blur(value: string) | Trigger after out of focus | - |
| keydown(event: KeyboardEvent) | Trigger after keydown | - |
| esc(value: string) | Trigger after pressing | - |
| ctrlEnter(value: string) | Trigger after pressing <kbd>⌘/ctrl+enter</kbd> | - |
| select(value: string) | Triggered after selecting text in the editor | - |
| unSelect() | Triggered after un selecting text in the editor | - |
| tab | <kbd>tab</kbd> key operation string, support `\ t` and any string | - |
| typewriterMode | Whether to enable typewriter mode | false |
| cdn | Configure self-built CDN address | `https://unpkg.com/vditor@${VDITOR_VERSION}` |
| mode | Editing mode: sv, ir, wysiwyg | 'ir' |
| debugger | Whether to display the log | false |
| value | Editor initialization value | '' |
| theme | Theme: classic, dark | 'classic' |
| icon | icon theme: ant, material | 'ant' |
| customRenders: {language: string, render: (element: HTMLElement, vditor: IVditor) => void}[] | Custom render | [] |
| customWysiwygToolbar(type: TWYSISYGToolbar, element: HTMLElement): void | Customizing the toolbar in wysiwyg mode | - |

#### options.toolbar

* Toolbar, you can use name for shorthand: `toolbar: ['emoji', 'br', 'bold', '|', 'line']`. See default [src/ts/util/Options.ts](https://github.com/Vanessa219/vditor/blob/master/src/ts/util/Options.ts)
* name can be enumerated as: `emoji` , `headings` , `bold` , `italic` , `strike` , `|` , `line` , `quote` , `list` , `ordered-list` , `check` ,`outdent` ,`indent` , `code` , `inline-code`, `insert-after`, `insert-before`, `code-theme`, `content-theme`, `export`, `undo` , `redo` , `upload` , `link` , `table` , `record` , `edit-mode` , `both` , `preview` , `fullscreen` , `outline` , `devtools` , `info` , `help` , `br`
* When `name` is not in the enumeration, you can add a custom button in the following format:

```js
new Vditor('vditor', {
  toolbar: [
    {
      hotkey: '⇧⌘S',
      name: 'sponsor',
      tipPosition: 's',
      tip: '成为赞助者',
      className: 'right',
      icon: '<svg t="1589994565028" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2808" width="32" height="32"><path d="M506.6 423.6m-29.8 0a29.8 29.8 0 1 0 59.6 0 29.8 29.8 0 1 0-59.6 0Z" fill="#0F0F0F" p-id="2809"></path><path d="M717.8 114.5c-83.5 0-158.4 65.4-211.2 122-52.7-56.6-127.7-122-211.2-122-159.5 0-273.9 129.3-273.9 288.9C21.5 562.9 429.3 913 506.6 913s485.1-350.1 485.1-509.7c0.1-159.5-114.4-288.8-273.9-288.8z" fill="#FAFCFB" p-id="2810"></path><path d="M506.6 926c-22 0-61-20.1-116-59.6-51.5-37-109.9-86.4-164.6-139-65.4-63-217.5-220.6-217.5-324 0-81.4 28.6-157.1 80.6-213.1 53.2-57.2 126.4-88.8 206.3-88.8 40 0 81.8 14.1 124.2 41.9 28.1 18.4 56.6 42.8 86.9 74.2 30.3-31.5 58.9-55.8 86.9-74.2 42.5-27.8 84.3-41.9 124.2-41.9 79.9 0 153.2 31.5 206.3 88.8 52 56 80.6 131.7 80.6 213.1 0 103.4-152.1 261-217.5 324-54.6 52.6-113.1 102-164.6 139-54.8 39.5-93.8 59.6-115.8 59.6zM295.4 127.5c-72.6 0-139.1 28.6-187.3 80.4-47.5 51.2-73.7 120.6-73.7 195.4 0 64.8 78.3 178.9 209.6 305.3 53.8 51.8 111.2 100.3 161.7 136.6 56.1 40.4 88.9 54.8 100.9 54.8s44.7-14.4 100.9-54.8c50.5-36.3 108-84.9 161.7-136.6 131.2-126.4 209.6-240.5 209.6-305.3 0-74.9-26.2-144.2-73.7-195.4-48.2-51.9-114.7-80.4-187.3-80.4-61.8 0-127.8 38.5-201.7 117.9-2.5 2.6-5.9 4.1-9.5 4.1s-7.1-1.5-9.5-4.1C423.2 166 357.2 127.5 295.4 127.5z" fill="#141414" p-id="2811"></path><path d="M353.9 415.6m-33.8 0a33.8 33.8 0 1 0 67.6 0 33.8 33.8 0 1 0-67.6 0Z" fill="#0F0F0F" p-id="2812"></path><path d="M659.3 415.6m-33.8 0a33.8 33.8 0 1 0 67.6 0 33.8 33.8 0 1 0-67.6 0Z" fill="#0F0F0F" p-id="2813"></path><path d="M411.6 538.5c0 52.3 42.8 95 95 95 52.3 0 95-42.8 95-95v-31.7h-190v31.7z" fill="#5B5143" p-id="2814"></path><path d="M506.6 646.5c-59.6 0-108-48.5-108-108v-31.7c0-7.2 5.8-13 13-13h190.1c7.2 0 13 5.8 13 13v31.7c0 59.5-48.5 108-108.1 108z m-82-126.7v18.7c0 45.2 36.8 82 82 82s82-36.8 82-82v-18.7h-164z" fill="#141414" p-id="2815"></path><path d="M450.4 578.9a54.7 27.5 0 1 0 109.4 0 54.7 27.5 0 1 0-109.4 0Z" fill="#EA64F9" p-id="2816"></path><path d="M256 502.7a32.1 27.5 0 1 0 64.2 0 32.1 27.5 0 1 0-64.2 0Z" fill="#EFAFF9" p-id="2817"></path><path d="M703.3 502.7a32.1 27.5 0 1 0 64.2 0 32.1 27.5 0 1 0-64.2 0Z" fill="#EFAFF9" p-id="2818"></path></svg>',
      click () {alert('捐赠地址:https://ld246.com/sponsor')},
    }],
})
```

|   | Explanation | Default |
| - | - | - |
| name | Unique label | - |
| icon | svg icon | - |
| tip | Prompt | - |
| tipPosition | Prompt location: 'n', 'ne', 'nw', 's', 'se', 'sw', 'w', 'e' | - |
| hotkey | Shortcut keys, support 为<kbd>⇧⌘</kbd>/<kbd>⌘</kbd>/<kbd>⌥⌘</kbd> format configuration | - |
| suffix | Insert the suffix in the editor | - |
| prefix | Insert the prefix in the editor | - |
| click(event: Event, vditor: IVditor) | Custom event triggered when button is clicked | - |
| className | Style name | '' |
| toolbar?: Array<options.toolbar> | sub menu | - |

#### options.toolbarConfig

|   | Explanation | Default |
| - | - | - |
| hide | Whether to hide the toolbar | false |
| pin | Whether to pin the toolbar | false |

#### options.counter

|   | Explanation | Default |
| - | - | - |
| enable | Whether to use counter | false |
| after(length: number, counter: options.counter): void | After count callback | - |
| max | max counter | - |
| type | counter type: 'markdown', 'text' | 'markdown' |

#### options.cache

|   | Explanation | Default |
| - | - | - |
| enable | Whether to use localStorage for caching | true |
| id | Cache key, the first parameter is an element and when caching is enabled **required** | - |
| after | cache callback (markdown: string) | - |

#### options.comment

⚠️: Only supports wysiwyg mode

|   | Explanation | Default |
| - | - | - |
| enable | Whether to enable comment mode | false |
| add(id: string, text: string, commentsData: ICommentsData[]) | Add comment callback | - |
| remove(ids: string[]) | delete comment callback | - |
| scroll(top: number) | Scroll callback | - |
| adjustTop(commentsData: ICommentsData[]) | Adapt the comment height | - |

#### options.preview

|   | Explanation | Default |
| - | - | - |
| delay | Preview debounce millisecond interval | 1000 |
| maxWidth | Preview area maximum width | 800 |
| mode | Display mode: both, editor | 'both' |
| url | md parsing request | - |
| parse | Preview callback (element: HTMLElement) | - |
| transform | Callback before rendering (html: string): string | - |

#### options.preview.theme

|   | Explanation | Default |
| - | - | - |
| current | current Markdown Theme | "light" |
| list | Choose Markdown Theme List | { "ant-design": "Ant Design", dark: "Dark", light: "Light", wechat: "WeChat" } |
| path | CSS Path | `https://unpkg.com/vditor@${VDITOR_VERSION}/dist/css/content-theme` |

#### options.preview.hljs

|   | Explanation | Default |
| - | - | - |
| defaultLang | The language is used by default when no language is specified | '' |
| enable | Whether to enable code syntax highlighting | true |
| style | For optional values, see [Chroma](https://xyproto.github.io/splash/docs/longer/all.html) | `github` |
| lineNumber | Whether to enable line number | false |
| langs | Custom languages | [CODE_LANGUAGES](https://github.com/Vanessa219/vditor/blob/53ca8f9a0e511b37b5dae7c6b15eb933e9e02ccd/src/ts/constants.ts#L20) |
| renderMenu(code: HTMLElement, copy: HTMLElement) | render menu button | - |

#### options.preview.markdown

|   | Explanation | Default |
| - | - | - |
| autoSpace | Autospace | false |
| gfmAutoLink | Automatic link | true |
| fixTermTypo | Automatically correct terminology | false |
| toc | Insert Table of Contents | false |
| footnotes | Footnotes | true |
| codeBlockPreview | Whether to render code blocks in wysiwyg and ir modes | true |
| mathBlockPreview | Whether to render math blocks in wysiwyg and ir modes | true |
| paragraphBeginningSpace | Two spaces before the paragraph | false |
| sanitize | Use XSS | true |
| listStyle | add data-style attribute | false |
| linkBase | link relative path prefix | '' |
| linkPrefix | link prefix | '' |
| mark | enable mark tag | false |
| sup | superscript | false |
| sub | subscript | false |

#### options.preview.math

|   | Explanation | Default |
| - | - | - |
| inlineDigit | Whether numbers are allowed after the inline math formula starting with $ | false |
| macros | Macro definition passed in when rendering with MathJax | {} |
| engine | Math formula rendering engine: KaTeX, MathJax | 'KaTeX' |
| mathJaxOptions | Parameters when the math formula rendering engine is MathJax | - |

#### options.preview.actions

Default: ["desktop", "tablet", "mobile", "mp-wechat", "zhihu"]

|   | Explanation | Default |
| - | - | - |
| key | Custom action ID, not Empty. | - |
| tooltip | Tooltip | - |
| text | Button Text | - |
| className | Button Class | - |
| click(key: string) | Click Event | - |

#### options.preview.render.media

|        | Explanation        | Default  |
|--------|-----------|------|
| enable | Whether to enable multimedia render | true |

#### options.image

|   | Explanation | Default |
| - | - | - |
| isPreview | Whether to preview the picture | true |
| preview(bom: Element) => void | Image preview processing | - |

#### options.link

|   | Explanation | Default |
| - | - | - |
| isOpen | Whether to open the link address | true |
| click(bom: Element) => void | Click link event | - |

#### options.hint

|   | Explanation | Default |
| - | - | - |
| parse | Whether to perform md parsing | true |
| delay | Tip debounce millisecond interval | 200 |
| emoji | The default emoji can be selected from [lute/emoji_map](https://github.com/88250/lute/blob/master/parse/emoji_map.go), or can be customized | { '+1': '👍', '-1': '👎', 'heart': '❤️', 'cold_sweat': '😰' } |
| emojiTail | Common emoji | - |
| emojiPath | Emoji path | `https://unpkg.com/vditor@${VDITOR_VERSION}/dist/images/emoji` |
| extend: IHintExtend[] | @/# and other keyword auto-completion expansion | [] |

```ts
interface IHintData {
  html: string;
  value: string;
}

interface IHintExtend {
  key: string;

  hint?(value: string): IHintData[] | Promise<IHintData[]>;
}
```

#### options.upload

* The data structure of the file upload is as follows. When the data structure returned by the backend is inconsistent, you can use `format` for conversion.

```js
// POST data
xhr.send(formData);  // formData = FormData.append("file[]", File)
// return data
{
 "msg": "",
 "code": 0,
 "data": {
 "errFiles": ['filename', 'filename2'],
 "succMap": {
   "filename3": "filepath3",
   "filename3": "filepath3"
   }
 }
}
```

* In order to prevent the off-site pictures from being invalid, `linkToImgUrl` can transfer the off-site picture addresses in the clipboard to the server for saving and processing. The data structure is as follows:

```js
// POST data
xhr.send(JSON.stringify({url: src})); // src is the address of the image outside the station
// return data
{
 msg: '',
 code: 0,
 data : {
   originalURL: '',
   url: ''
 }
}
```

|   | Explanation | Default |
| - | - | - |
| xhr | XMLHttpRequest used when uploading | - |
| url | Upload url, empty will not trigger upload related events | '' |
| max | The largest upload file Byte | 10 * 1024 * 1024 |
| linkToImgUrl | When the clipboard contains the image address, use this url to re-upload | '' |
| linkToImgCallback | Callback when uploading picture address | - |
| linkToImgFormat | Transform the data returned by the server to meet the built-in data structure (responseText: string): string | - |
| success | Upload success callback (editor: HTMLPreElement, msg: string) | - |
| error | Upload failure callback (msg: string) | - |
| token | CORS upload verification, header is X-Upload-Token | - |
| withCredentials | Cross-site access control | false |
| headers | Request header settings | - |
| filename | Sanitizing file names (name: string): string \| name => name.replace(/\W/g, '') |
| accept | File upload type, same as [input accept](https://www.w3schools.com/tags/att_input_accept.asp) | - |
| validate | Check, return true if successful, otherwise return error message (files: File[]) => string \| boolean | - |
| handler(files: File[]) => string \| null \| Promise<string> \| Promise<null> | Custom upload, return error message when an error occurs | - |
| format | Transform the data returned by the server to meet the built-in data structure (files: File[], responseText: string): string | - |
| file(files: File[]): File[] \| Promise<File[]> | Process the uploaded file before return. | - |
| cancel(files: File[]): void | Cancel uploading a file. | - |
| setHeaders | Use the return value to set the header before uploading (): { [key: string]: string } | - |
| extraData | Append data to FormData { [key: string]: string | Blob } | - |
| multiple | Allow multiple file uploads | true |
| fieldName | The key of field name | file[] |
| renderLinkDest?(vditor: IVditor, node: ILuteNode, entering: boolean): [string, number] | Process the image address in the clipboard | '' |

#### options.resize

|   | Explanation | Default |
| - | - | - |
| enable | Whether to support size drag | false |
| position | Drag column position: 'top', 'bottom' | 'bottom' |
| after | Callback when dragging ends (height: number) | - |

#### options.classes

|   | Explanation | Default |
| - | - | - |
| preview | Preview on the element className | '' |

#### options.fullscreen

|   | Explanation | Default |
| - | - | - |
| index | fullscreen index | 90 |

#### options.outline

|   | Explanation | Default |
| - | - | - |
| enable | Initialize whether to show outline | false |
| position | Outline location: 'left', 'right' | 'left' |

#### methods

|   | Explanation |
| - | - |
| exportJSON(markdown: string) | Get JSON by markdown |
| getValue() | Get editor content |
| getHTML() | Get preview area content |
| insertValue(value: string, render = true) | Insert content at the focus and markdown rendering by default |
| focus() | Focus on the editor |
| blur() | Make the editor out of focus |
| disabled() | Disable editor |
| enable() | Unedit editor |
| getSelection(): string | Returns the selected string |
| setValue(markdown: string, clearStack = false) | Set editor content |
| clearStack() | remove undo and redo stack |
| renderPreview(value?: string) | Set preview area content |
| getCursorPosition():{top: number, left: number} | Get focus position |
| deleteValue() | Delete selected content |
| updateValue(value: string) | Update selected content |
| isUploading() | Whether the upload is still in progress |
| clearCache() | clear cache |
| disabledCache() | Disable cache |
| enableCache() | Enable caching |
| html2md(value: string) | HTML to md |
| tip(text: string, time: number) | notification. time is 0 will always display |
| setPreviewMode(mode: "both" \| "editor") | Set preview mode |
| setTheme(theme: "dark" | "classic", contentTheme?: string, codeTheme?: string, contentThemePath?: string) | Set theme |
| getCurrentMode(): string | Get the editor's current editing mode |
| destroy() | Destroy the vditor |
| getCommentIds(): {id: string, top: number}[] | Get all comments |
| hlCommentIds(ids: string[]) | Highlight comment by Ids |
| unHlCommentIds(ids: string[]) | Cancel highlight comment by Ids |
| removeCommentIds(removeIds: string[]) | Remove comment by Ids |
| updateToolbarConfig(config: {hide?: boolean, pin?: boolean}) | Update toolbar config |
| insertEmptyBlock(position: InsertPosition) | Insert empty block |

#### static methods

* When no editing operation is required, just introduce [`method.min.js`](https://unpkg.com/vditor/dist/) and directly call

```js
Vditor.mermaidRender(document)
```

```js
import VditorPreview from 'vditor/dist/method.min'
VditorPreview.mermaidRender(document)
```

* When you need to render Markdown on the page, you can directly call the `preview` method with the following parameters:

```ts
previewElement: HTMLDivElement,   // Use this element for rendering
markdown: string,  // The original markdown to be rendered
options?: IPreviewOptions {
  mode: "dark" | "light";
  anchor?: number;  // 0: no render, 1: render left, 2: render right
  customEmoji?: { [key: string]: string };    // Custom emoji, default is {}
  lang?: (keyof II18nLang);    // Language, default is 'zh_CN'
  emojiPath?: string;    // Emoji picture path
  hljs?: IHljs; // Refer to options.preview.hljs
  speech?: {  // Read the selected content
    enable?: boolean,
  };
  math?: IMath; // Math formula rendering configuration
  transform?(html: string): string; // Callback method before rendering
  after?(); // Callback method after rendering
  cdn?: string; // Self-built CDN address
  lazyLoadImage?: string; // use "https://unpkg.com/vditor/dist/images/img-loading.svg" to lazy load image
  markdown?: options.preview.markdown;
  render?: options.preview.render;
  renderers?: ILuteRender; // Custom rendering method https://ld246.com/article/1588412297062
}
```

* ⚠️`method.min.js` and` index.min.js` cannot be introduced at the same time

|   | Explanation |
| - | - |
| previewImage(oldImgElement: HTMLImageElement, lang: keyof II18n = "zh_CN", theme = "classic") | Click on the image to preview |
| mermaidRender(element: HTMLElement, cdn = options.cdn, theme = options.theme) | flowchart/sequence diagram/gantt diagram rendering |
| SMILESRender(element: HTMLElement, cdn = options.cdn, theme = options.theme) | the structure of chemical |
| markmapRender(element: HTMLElement, cdn = options.cdn) | markdown Mind Map |
| flowchartRender(element: HTMLElement, cdn = options.cdn) | flowchart.js rendering |
| codeRender(element: HTMLElement, option?: IHljs) | Add a copy button for the code block in element |
| chartRender(element: (HTMLElement\| Document) = document, cdn = options.cdn, theme = options.theme) | Chart rendering |
| plantumlRender(element: (HTMLElement\| Document) = document, cdn = options.cdn) | plantuml rendering |
| abcRender(element: (HTMLElement\| Document) = document, cdn = options.cdn) | Stave rendering |
| outlineRender(contentElement: HTMLElement, targetElement: Element, vditor?: IVditor) | Outline rendering |
| md2html(mdText: string, options?: IPreviewOptions): Promise\<string> | Markdown text is converted to HTML, this method needs to use [asynchronous programming](https://ld246.com/article/1546828434083?r=Vanessa#toc_h3_1) |
| preview(previewElement: HTMLDivElement, markdown: string, options?: IPreviewOptions) | Page Markdown article rendering |
| highlightRender(hljsOption?: IHljs, element?: HTMLElement \| Document, cdn = options.cdn) | Highlight the code block in element |
| mediaRender(element: HTMLElement) | Rendering as [specific link](https://ld246.com/article/1589813914768) as video, audio, embedded iframe |
| mathRender(element: HTMLElement, options?: {cdn?: string, math?: IMath}) | Render math formulas |
| speechRender(element: HTMLElement, lang?: (keyof II18nLang)) | Read the selected text |
| graphvizRender(element: HTMLElement, cdn?: string) | Render graphviz |
| lazyLoadImageRender(element: (HTMLElement \| Document) = document) | Render lazy load image |
| setCodeTheme (codeTheme: string, cdn = options.cdn)  | update code theme |
| setContentTheme (contentTheme: string, path: string)  | update content theme |
| mindmapRender (element: (HTMLElement \| Document) = document, cdn = options.cdn, theme = options.theme)  | Render mind map |

## 🏗 Developer Guide

### Principle related

* [Discussion on WYSIWYG Markdown Editor](https://ld246.com/article/1579414663700)
* [Vditor implements Markdown WYSIWYG](https://ld246.com/article/1577370404903)
* [Lute is a Markdown engine optimized for Chinese context, supports Go and JavaScript](https://ld246.com/article/1567047822949)

### Environment

1. Install [node](https://nodejs.org/) LTS version
2. [Download](https://github.com/Vanessa219/vditor/archive/master.zip) latest code and unzip
3. Run `npm install` in the root directory
4. `npm run start` Start the local server, open http: // localhost: 9000
5. Modify the code
6. `npm run build` package code to dist directory

### CDN switch

Due to the on-demand loading mechanism, the default CDN is [https://unpkg.com/vditor](https://unpkg.com/vditor)@version number

If the code is modified or you need to use a self-built CDN, you can follow the steps below:

* The initial `options` and` IPreviewOptions` need to add `cdn` configuration
* `highlightRender`, `mathRender`, `abcRender`, `chartRender`, `mermaidRender`, `SMILESRender`, `markmapRender`, `flowchartRender`, `mindmapRender`, `plantumlRender`, `graphvizRender`, `setCodeTheme`, `setContentTheme` methods need to add cdn parameter
* Copy the dist directory in the successful build or [jsDelivr](https://www.jsdelivr.com/package/npm/vditor?path=dist) to the correct location

### Upgrade

Please read [CHANGELOG](https://github.com/Vanessa219/vditor/blob/master/CHANGELOG.md) carefully when upgrading the version.

## Ⓜ️ Markdown User Guide

* [Basic syntax](https://ld246.com/article/1583129520165)
* [Extended syntax](https://ld246.com/article/1583305480675)
* [Quick Reference Manual](https://ld246.com/article/1583308420519)

## 🏘️ Community

* [Forum](https://ld246.com/tag/vditor)
* [Issues](https://github.com/Vanessa219/vditor/issues/new)

## 📄 License

Vditor uses the [MIT](https://opensource.org/licenses/MIT) open source license.

## 🙏 Acknowledgement

* [Lute](https://github.com/88250/lute): A structured Markdown engine that supports Go and JavaScript
* [highlight.js](https://github.com/highlightjs/highlight.js): JavaScript syntax highlighter
* [mermaid](https://github.com/knsv/mermaid): Generation of diagram and flowchart from text in a similar manner as Markdown
* [incubator-echarts](https://github.com/apache/incubator-echarts): A powerful, interactive charting and visualization library for browser
* [abcjs](https://github.com/paulrosen/abcjs): JavaScript library for rendering standard music notation in a browser
* [IntelliJ IDEA](https://www.jetbrains.com/?from=Vditor): Family of capable and ergonomic development environments

## 📽️ History

In the initial stage of developing [Sym](https://github.com/88250/symphony), we directly used WYSIWYG rich text editor. At that time, HTML-based editors were very popular, and it was very convenient to quote them in the project, which also conformed to the usage habits of users at that time.

Later, the rise of Markdown gradually changed everyone's typography. In addition, several of our other projects are for programmer users, so it is also a general trend to migrate to md. We chose [CodeMirror](https://github.com/codemirror/CodeMirror), which is an excellent editor, it provides a rich programming interface for developers, and is also compatible with various browsers. it is good.

Later, as the business needs of our projects have precipitated, using CodeMirror sometimes feels more "cumbersome." For example, to implement @automatically complete the user name list, insert Emoji, upload files, etc., it requires more in-depth secondary development, and these business requirements are precisely common and necessary in many project scenarios.

Finally, we decided to start implementing the editor ourselves in Sym. With the iterations of several versions, Sym's editor has matured. In the community [LianDi](https://ld246.com) that we operate, people have asked us if we can separate the editor for everyone to use. At the same time, our front-end main programmer [V](https://ld246.com/member/Vanessa) also felt a little bit overwhelmed with maintaining the editors scattered in various projects, plus a good impression of TypeScript, so I decided Use ts to implement a new browser-side md editor.

So, Vditor was born.


================================================
FILE: __test__/markdown/commonmark-0.29.ts
================================================
export const spec = [
    {
        markdown: "\tfoo\tbaz\t\tbim\n",
        html: "<pre><code>foo\tbaz\t\tbim\n</code></pre>\n",
        example: 1,
        start_line: 352,
        end_line: 357,
        section: "Tabs",
    },
    {
        markdown: "  \tfoo\tbaz\t\tbim\n",
        html: "<pre><code>foo\tbaz\t\tbim\n</code></pre>\n",
        example: 2,
        start_line: 359,
        end_line: 364,
        section: "Tabs",
    },
    {
        markdown: "    a\ta\n    ὐ\ta\n",
        html: "<pre><code>a\ta\nὐ\ta\n</code></pre>\n",
        example: 3,
        start_line: 366,
        end_line: 373,
        section: "Tabs",
    },
    {
        markdown: "  - foo\n\n\tbar\n",
        html: "<ul>\n<li>\n<p>foo</p>\n<p>bar</p>\n</li>\n</ul>\n",
        example: 4,
        start_line: 379,
        end_line: 390,
        section: "Tabs",
    },
    {
        markdown: "- foo\n\n\t\tbar\n",
        html: "<ul>\n<li>\n<p>foo</p>\n<pre><code>  bar\n</code></pre>\n</li>\n</ul>\n",
        example: 5,
        start_line: 392,
        end_line: 404,
        section: "Tabs",
    },
    {
        markdown: ">\t\tfoo\n",
        html: "<blockquote>\n<pre><code>  foo\n</code></pre>\n</blockquote>\n",
        example: 6,
        start_line: 415,
        end_line: 422,
        section: "Tabs",
    },
    {
        markdown: "-\t\tfoo\n",
        html: "<ul>\n<li>\n<pre><code>  foo\n</code></pre>\n</li>\n</ul>\n",
        example: 7,
        start_line: 424,
        end_line: 433,
        section: "Tabs",
    },
    {
        markdown: "    foo\n\tbar\n",
        html: "<pre><code>foo\nbar\n</code></pre>\n",
        example: 8,
        start_line: 436,
        end_line: 443,
        section: "Tabs",
    },
    {
        markdown: " - foo\n   - bar\n\t - baz\n",
        html: "<ul>\n<li>foo\n<ul>\n<li>bar\n<ul>\n<li>baz</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n",
        example: 9,
        start_line: 445,
        end_line: 461,
        section: "Tabs",
    },
    {
        markdown: "#\tFoo\n",
        html: "<h1>Foo</h1>\n",
        example: 10,
        start_line: 463,
        end_line: 467,
        section: "Tabs",
    },
    {
        markdown: "*\t*\t*\t\n",
        html: "<hr />\n",
        example: 11,
        start_line: 469,
        end_line: 473,
        section: "Tabs",
    },
    {
        markdown: "- `one\n- two`\n",
        html: "<ul>\n<li>`one</li>\n<li>two`</li>\n</ul>\n",
        example: 12,
        start_line: 496,
        end_line: 504,
        section: "Precedence",
    },
    {
        markdown: "***\n---\n___\n",
        html: "<hr />\n<hr />\n<hr />\n",
        example: 13,
        start_line: 535,
        end_line: 543,
        section: "Thematic breaks",
    },
    {
        markdown: "+++\n",
        html: "<p>+++</p>\n",
        example: 14,
        start_line: 548,
        end_line: 552,
        section: "Thematic breaks",
    },
    {
        markdown: "===\n",
        html: "<p>===</p>\n",
        example: 15,
        start_line: 555,
        end_line: 559,
        section: "Thematic breaks",
    },
    {
        markdown: "--\n**\n__\n",
        html: "<p>--\n**\n__</p>\n",
        example: 16,
        start_line: 564,
        end_line: 572,
        section: "Thematic breaks",
    },
    {
        markdown: " ***\n  ***\n   ***\n",
        html: "<hr />\n<hr />\n<hr />\n",
        example: 17,
        start_line: 577,
        end_line: 585,
        section: "Thematic breaks",
    },
    {
        markdown: "    ***\n",
        html: "<pre><code>***\n</code></pre>\n",
        example: 18,
        start_line: 590,
        end_line: 595,
        section: "Thematic breaks",
    },
    {
        markdown: "Foo\n    ***\n",
        html: "<p>Foo\n***</p>\n",
        example: 19,
        start_line: 598,
        end_line: 604,
        section: "Thematic breaks",
    },
    {
        markdown: "_____________________________________\n",
        html: "<hr />\n",
        example: 20,
        start_line: 609,
        end_line: 613,
        section: "Thematic breaks",
    },
    {
        markdown: " - - -\n",
        html: "<hr />\n",
        example: 21,
        start_line: 618,
        end_line: 622,
        section: "Thematic breaks",
    },
    {
        markdown: " **  * ** * ** * **\n",
        html: "<hr />\n",
        example: 22,
        start_line: 625,
        end_line: 629,
        section: "Thematic breaks",
    },
    {
        markdown: "-     -      -      -\n",
        html: "<hr />\n",
        example: 23,
        start_line: 632,
        end_line: 636,
        section: "Thematic breaks",
    },
    {
        markdown: "- - - -    \n",
        html: "<hr />\n",
        example: 24,
        start_line: 641,
        end_line: 645,
        section: "Thematic breaks",
    },
    {
        markdown: "_ _ _ _ a\n\na------\n\n---a---\n",
        html: "<p>_ _ _ _ a</p>\n<p>a------</p>\n<p>---a---</p>\n",
        example: 25,
        start_line: 650,
        end_line: 660,
        section: "Thematic breaks",
    },
    {
        markdown: " *-*\n",
        html: "<p><em>-</em></p>\n",
        example: 26,
        start_line: 666,
        end_line: 670,
        section: "Thematic breaks",
    },
    {
        markdown: "- foo\n***\n- bar\n",
        html: "<ul>\n<li>foo</li>\n</ul>\n<hr />\n<ul>\n<li>bar</li>\n</ul>\n",
        example: 27,
        start_line: 675,
        end_line: 687,
        section: "Thematic breaks",
    },
    {
        markdown: "Foo\n***\nbar\n",
        html: "<p>Foo</p>\n<hr />\n<p>bar</p>\n",
        example: 28,
        start_line: 692,
        end_line: 700,
        section: "Thematic breaks",
    },
    {
        markdown: "Foo\n---\nbar\n",
        html: "<h2>Foo</h2>\n<p>bar</p>\n",
        example: 29,
        start_line: 709,
        end_line: 716,
        section: "Thematic breaks",
    },
    {
        markdown: "* Foo\n* * *\n* Bar\n",
        html: "<ul>\n<li>Foo</li>\n</ul>\n<hr />\n<ul>\n<li>Bar</li>\n</ul>\n",
        example: 30,
        start_line: 722,
        end_line: 734,
        section: "Thematic breaks",
    },
    {
        markdown: "- Foo\n- * * *\n",
        html: "<ul>\n<li>Foo</li>\n<li>\n<hr />\n</li>\n</ul>\n",
        example: 31,
        start_line: 739,
        end_line: 749,
        section: "Thematic breaks",
    },
    {
        markdown: "# foo\n## foo\n### foo\n#### foo\n##### foo\n###### foo\n",
        html: "<h1>foo</h1>\n<h2>foo</h2>\n<h3>foo</h3>\n<h4>foo</h4>\n<h5>foo</h5>\n<h6>foo</h6>\n",
        example: 32,
        start_line: 768,
        end_line: 782,
        section: "ATX headings",
    },
    {
        markdown: "####### foo\n",
        html: "<p>####### foo</p>\n",
        example: 33,
        start_line: 787,
        end_line: 791,
        section: "ATX headings",
    },
    {
        markdown: "#5 bolt\n\n#hashtag\n",
        html: "<p>#5 bolt</p>\n<p>#hashtag</p>\n",
        example: 34,
        start_line: 802,
        end_line: 809,
        section: "ATX headings",
    },
    {
        markdown: "\\## foo\n",
        html: "<p>## foo</p>\n",
        example: 35,
        start_line: 814,
        end_line: 818,
        section: "ATX headings",
    },
    {
        markdown: "# foo *bar* \\*baz\\*\n",
        html: "<h1>foo <em>bar</em> *baz*</h1>\n",
        example: 36,
        start_line: 823,
        end_line: 827,
        section: "ATX headings",
    },
    {
        markdown: "#                  foo                     \n",
        html: "<h1>foo</h1>\n",
        example: 37,
        start_line: 832,
        end_line: 836,
        section: "ATX headings",
    },
    {
        markdown: " ### foo\n  ## foo\n   # foo\n",
        html: "<h3>foo</h3>\n<h2>foo</h2>\n<h1>foo</h1>\n",
        example: 38,
        start_line: 841,
        end_line: 849,
        section: "ATX headings",
    },
    {
        markdown: "    # foo\n",
        html: "<pre><code># foo\n</code></pre>\n",
        example: 39,
        start_line: 854,
        end_line: 859,
        section: "ATX headings",
    },
    {
        markdown: "foo\n    # bar\n",
        html: "<p>foo\n# bar</p>\n",
        example: 40,
        start_line: 862,
        end_line: 868,
        section: "ATX headings",
    },
    {
        markdown: "## foo ##\n  ###   bar    ###\n",
        html: "<h2>foo</h2>\n<h3>bar</h3>\n",
        example: 41,
        start_line: 873,
        end_line: 879,
        section: "ATX headings",
    },
    {
        markdown: "# foo ##################################\n##### foo ##\n",
        html: "<h1>foo</h1>\n<h5>foo</h5>\n",
        example: 42,
        start_line: 884,
        end_line: 890,
        section: "ATX headings",
    },
    {
        markdown: "### foo ###     \n",
        html: "<h3>foo</h3>\n",
        example: 43,
        start_line: 895,
        end_line: 899,
        section: "ATX headings",
    },
    {
        markdown: "### foo ### b\n",
        html: "<h3>foo ### b</h3>\n",
        example: 44,
        start_line: 906,
        end_line: 910,
        section: "ATX headings",
    },
    {
        markdown: "# foo#\n",
        html: "<h1>foo#</h1>\n",
        example: 45,
        start_line: 915,
        end_line: 919,
        section: "ATX headings",
    },
    {
        markdown: "### foo \\###\n## foo #\\##\n# foo \\#\n",
        html: "<h3>foo ###</h3>\n<h2>foo ###</h2>\n<h1>foo #</h1>\n",
        example: 46,
        start_line: 925,
        end_line: 933,
        section: "ATX headings",
    },
    {
        markdown: "****\n## foo\n****\n",
        html: "<hr />\n<h2>foo</h2>\n<hr />\n",
        example: 47,
        start_line: 939,
        end_line: 947,
        section: "ATX headings",
    },
    {
        markdown: "Foo bar\n# baz\nBar foo\n",
        html: "<p>Foo bar</p>\n<h1>baz</h1>\n<p>Bar foo</p>\n",
        example: 48,
        start_line: 950,
        end_line: 958,
        section: "ATX headings",
    },
    {
        markdown: "## \n#\n### ###\n",
        html: "<h2></h2>\n<h1></h1>\n<h3></h3>\n",
        example: 49,
        start_line: 963,
        end_line: 971,
        section: "ATX headings",
    },
    {
        markdown: "Foo *bar*\n=========\n\nFoo *bar*\n---------\n",
        html: "<h1>Foo <em>bar</em></h1>\n<h2>Foo <em>bar</em></h2>\n",
        example: 50,
        start_line: 1006,
        end_line: 1015,
        section: "Setext headings",
    },
    {
        markdown: "Foo *bar\nbaz*\n====\n",
        html: "<h1>Foo <em>bar\nbaz</em></h1>\n",
        example: 51,
        start_line: 1020,
        end_line: 1027,
        section: "Setext headings",
    },
    {
        markdown: "  Foo *bar\nbaz*\t\n====\n",
        html: "<h1>Foo <em>bar\nbaz</em></h1>\n",
        example: 52,
        start_line: 1034,
        end_line: 1041,
        section: "Setext headings",
    },
    {
        markdown: "Foo\n-------------------------\n\nFoo\n=\n",
        html: "<h2>Foo</h2>\n<h1>Foo</h1>\n",
        example: 53,
        start_line: 1046,
        end_line: 1055,
        section: "Setext headings",
    },
    {
        markdown: "   Foo\n---\n\n  Foo\n-----\n\n  Foo\n  ===\n",
        html: "<h2>Foo</h2>\n<h2>Foo</h2>\n<h1>Foo</h1>\n",
        example: 54,
        start_line: 1061,
        end_line: 1074,
        section: "Setext headings",
    },
    {
        markdown: "    Foo\n    ---\n\n    Foo\n---\n",
        html: "<pre><code>Foo\n---\n\nFoo\n</code></pre>\n<hr />\n",
        example: 55,
        start_line: 1079,
        end_line: 1092,
        section: "Setext headings",
    },
    {
        markdown: "Foo\n   ----      \n",
        html: "<h2>Foo</h2>\n",
        example: 56,
        start_line: 1098,
        end_line: 1103,
        section: "Setext headings",
    },
    {
        markdown: "Foo\n    ---\n",
        html: "<p>Foo\n---</p>\n",
        example: 57,
        start_line: 1108,
        end_line: 1114,
        section: "Setext headings",
    },
    {
        markdown: "Foo\n= =\n\nFoo\n--- -\n",
        html: "<p>Foo\n= =</p>\n<p>Foo</p>\n<hr />\n",
        example: 58,
        start_line: 1119,
        end_line: 1130,
        section: "Setext headings",
    },
    {
        markdown: "Foo  \n-----\n",
        html: "<h2>Foo</h2>\n",
        example: 59,
        start_line: 1135,
        end_line: 1140,
        section: "Setext headings",
    },
    {
        markdown: "Foo\\\n----\n",
        html: "<h2>Foo\\</h2>\n",
        example: 60,
        start_line: 1145,
        end_line: 1150,
        section: "Setext headings",
    },
    {
        markdown: "`Foo\n----\n`\n\n<a title=\"a lot\n---\nof dashes\"/>\n",
        html: "<h2>`Foo</h2>\n<p>`</p>\n<h2>&lt;a title=&quot;a lot</h2>\n<p>of dashes&quot;/&gt;</p>\n",
        example: 61,
        start_line: 1156,
        end_line: 1169,
        section: "Setext headings",
    },
    {
        markdown: "> Foo\n---\n",
        html: "<blockquote>\n<p>Foo</p>\n</blockquote>\n<hr />\n",
        example: 62,
        start_line: 1175,
        end_line: 1183,
        section: "Setext headings",
    },
    {
        markdown: "> foo\nbar\n===\n",
        html: "<blockquote>\n<p>foo\nbar\n===</p>\n</blockquote>\n",
        example: 63,
        start_line: 1186,
        end_line: 1196,
        section: "Setext headings",
    },
    {
        markdown: "- Foo\n---\n",
        html: "<ul>\n<li>Foo</li>\n</ul>\n<hr />\n",
        example: 64,
        start_line: 1199,
        end_line: 1207,
        section: "Setext headings",
    },
    {
        markdown: "Foo\nBar\n---\n",
        html: "<h2>Foo\nBar</h2>\n",
        example: 65,
        start_line: 1214,
        end_line: 1221,
        section: "Setext headings",
    },
    {
        markdown: "---\nFoo\n---\nBar\n---\nBaz\n",
        html: "<hr />\n<h2>Foo</h2>\n<h2>Bar</h2>\n<p>Baz</p>\n",
        example: 66,
        start_line: 1227,
        end_line: 1239,
        section: "Setext headings",
    },
    {
        markdown: "\n====\n",
        html: "<p>====</p>\n",
        example: 67,
        start_line: 1244,
        end_line: 1249,
        section: "Setext headings",
    },
    {
        markdown: "---\n---\n",
        html: "<hr />\n<hr />\n",
        example: 68,
        start_line: 1256,
        end_line: 1262,
        section: "Setext headings",
    },
    {
        markdown: "- foo\n-----\n",
        html: "<ul>\n<li>foo</li>\n</ul>\n<hr />\n",
        example: 69,
        start_line: 1265,
        end_line: 1273,
        section: "Setext headings",
    },
    {
        markdown: "    foo\n---\n",
        html: "<pre><code>foo\n</code></pre>\n<hr />\n",
        example: 70,
        start_line: 1276,
        end_line: 1283,
        section: "Setext headings",
    },
    {
        markdown: "> foo\n-----\n",
        html: "<blockquote>\n<p>foo</p>\n</blockquote>\n<hr />\n",
        example: 71,
        start_line: 1286,
        end_line: 1294,
        section: "Setext headings",
    },
    {
        markdown: "\\> foo\n------\n",
        html: "<h2>&gt; foo</h2>\n",
        example: 72,
        start_line: 1300,
        end_line: 1305,
        section: "Setext headings",
    },
    {
        markdown: "Foo\n\nbar\n---\nbaz\n",
        html: "<p>Foo</p>\n<h2>bar</h2>\n<p>baz</p>\n",
        example: 73,
        start_line: 1331,
        end_line: 1341,
        section: "Setext headings",
    },
    {
        markdown: "Foo\nbar\n\n---\n\nbaz\n",
        html: "<p>Foo\nbar</p>\n<hr />\n<p>baz</p>\n",
        example: 74,
        start_line: 1347,
        end_line: 1359,
        section: "Setext headings",
    },
    {
        markdown: "Foo\nbar\n* * *\nbaz\n",
        html: "<p>Foo\nbar</p>\n<hr />\n<p>baz</p>\n",
        example: 75,
        start_line: 1365,
        end_line: 1375,
        section: "Setext headings",
    },
    {
        markdown: "Foo\nbar\n\\---\nbaz\n",
        html: "<p>Foo\nbar\n---\nbaz</p>\n",
        example: 76,
        start_line: 1380,
        end_line: 1390,
        section: "Setext headings",
    },
    {
        markdown: "    a simple\n      indented code block\n",
        html: "<pre><code>a simple\n  indented code block\n</code></pre>\n",
        example: 77,
        start_line: 1408,
        end_line: 1415,
        section: "Indented code blocks",
    },
    {
        markdown: "  - foo\n\n    bar\n",
        html: "<ul>\n<li>\n<p>foo</p>\n<p>bar</p>\n</li>\n</ul>\n",
        example: 78,
        start_line: 1422,
        end_line: 1433,
        section: "Indented code blocks",
    },
    {
        markdown: "1.  foo\n\n    - bar\n",
        html: "<ol>\n<li>\n<p>foo</p>\n<ul>\n<li>bar</li>\n</ul>\n</li>\n</ol>\n",
        example: 79,
        start_line: 1436,
        end_line: 1449,
        section: "Indented code blocks",
    },
    {
        markdown: "    <a/>\n    *hi*\n\n    - one\n",
        html: "<pre><code>&lt;a/&gt;\n*hi*\n\n- one\n</code></pre>\n",
        example: 80,
        start_line: 1456,
        end_line: 1467,
        section: "Indented code blocks",
    },
    {
        markdown: "    chunk1\n\n    chunk2\n  \n \n \n    chunk3\n",
        html: "<pre><code>chunk1\n\nchunk2\n\n\n\nchunk3\n</code></pre>\n",
        example: 81,
        start_line: 1472,
        end_line: 1489,
        section: "Indented code blocks",
    },
    {
        markdown: "    chunk1\n      \n      chunk2\n",
        html: "<pre><code>chunk1\n  \n  chunk2\n</code></pre>\n",
        example: 82,
        start_line: 1495,
        end_line: 1504,
        section: "Indented code blocks",
    },
    {
        markdown: "Foo\n    bar\n\n",
        html: "<p>Foo\nbar</p>\n",
        example: 83,
        start_line: 1510,
        end_line: 1517,
        section: "Indented code blocks",
    },
    {
        markdown: "    foo\nbar\n",
        html: "<pre><code>foo\n</code></pre>\n<p>bar</p>\n",
        example: 84,
        start_line: 1524,
        end_line: 1531,
        section: "Indented code blocks",
    },
    {
        markdown: "# Heading\n    foo\nHeading\n------\n    foo\n----\n",
        html: "<h1>Heading</h1>\n<pre><code>foo\n</code></pre>\n<h2>Heading</h2>\n<pre><code>foo\n</code></pre>\n<hr />\n",
        example: 85,
        start_line: 1537,
        end_line: 1552,
        section: "Indented code blocks",
    },
    {
        markdown: "        foo\n    bar\n",
        html: "<pre><code>    foo\nbar\n</code></pre>\n",
        example: 86,
        start_line: 1557,
        end_line: 1564,
        section: "Indented code blocks",
    },
    {
        markdown: "\n    \n    foo\n    \n\n",
        html: "<pre><code>foo\n</code></pre>\n",
        example: 87,
        start_line: 1570,
        end_line: 1579,
        section: "Indented code blocks",
    },
    {
        markdown: "    foo  \n",
        html: "<pre><code>foo  \n</code></pre>\n",
        example: 88,
        start_line: 1584,
        end_line: 1589,
        section: "Indented code blocks",
    },
    {
        markdown: "```\n<\n >\n```\n",
        html: "<pre><code>&lt;\n &gt;\n</code></pre>\n",
        example: 89,
        start_line: 1639,
        end_line: 1648,
        section: "Fenced code blocks",
    },
    {
        markdown: "~~~\n<\n >\n~~~\n",
        html: "<pre><code>&lt;\n &gt;\n</code></pre>\n",
        example: 90,
        start_line: 1653,
        end_line: 1662,
        section: "Fenced code blocks",
    },
    {
        markdown: "``\nfoo\n``\n",
        html: "<p><code>foo</code></p>\n",
        example: 91,
        start_line: 1666,
        end_line: 1672,
        section: "Fenced code blocks",
    },
    {
        markdown: "```\naaa\n~~~\n```\n",
        html: "<pre><code>aaa\n~~~\n</code></pre>\n",
        example: 92,
        start_line: 1677,
        end_line: 1686,
        section: "Fenced code blocks",
    },
    {
        markdown: "~~~\naaa\n```\n~~~\n",
        html: "<pre><code>aaa\n```\n</code></pre>\n",
        example: 93,
        start_line: 1689,
        end_line: 1698,
        section: "Fenced code blocks",
    },
    {
        markdown: "````\naaa\n```\n``````\n",
        html: "<pre><code>aaa\n```\n</code></pre>\n",
        example: 94,
        start_line: 1703,
        end_line: 1712,
        section: "Fenced code blocks",
    },
    {
        markdown: "~~~~\naaa\n~~~\n~~~~\n",
        html: "<pre><code>aaa\n~~~\n</code></pre>\n",
        example: 95,
        start_line: 1715,
        end_line: 1724,
        section: "Fenced code blocks",
    },
    {
        markdown: "```\n",
        html: "<pre><code></code></pre>\n",
        example: 96,
        start_line: 1730,
        end_line: 1734,
        section: "Fenced code blocks",
    },
    {
        markdown: "`````\n\n```\naaa\n",
        html: "<pre><code>\n```\naaa\n</code></pre>\n",
        example: 97,
        start_line: 1737,
        end_line: 1747,
        section: "Fenced code blocks",
    },
    {
        markdown: "> ```\n> aaa\n\nbbb\n",
        html: "<blockquote>\n<pre><code>aaa\n</code></pre>\n</blockquote>\n<p>bbb</p>\n",
        example: 98,
        start_line: 1750,
        end_line: 1761,
        section: "Fenced code blocks",
    },
    {
        markdown: "```\n\n  \n```\n",
        html: "<pre><code>\n  \n</code></pre>\n",
        example: 99,
        start_line: 1766,
        end_line: 1775,
        section: "Fenced code blocks",
    },
    {
        markdown: "```\n```\n",
        html: "<pre><code></code></pre>\n",
        example: 100,
        start_line: 1780,
        end_line: 1785,
        section: "Fenced code blocks",
    },
    {
        markdown: " ```\n aaa\naaa\n```\n",
        html: "<pre><code>aaa\naaa\n</code></pre>\n",
        example: 101,
        start_line: 1792,
        end_line: 1801,
        section: "Fenced code blocks",
    },
    {
        markdown: "  ```\naaa\n  aaa\naaa\n  ```\n",
        html: "<pre><code>aaa\naaa\naaa\n</code></pre>\n",
        example: 102,
        start_line: 1804,
        end_line: 1815,
        section: "Fenced code blocks",
    },
    {
        markdown: "   ```\n   aaa\n    aaa\n  aaa\n   ```\n",
        html: "<pre><code>aaa\n aaa\naaa\n</code></pre>\n",
        example: 103,
        start_line: 1818,
        end_line: 1829,
        section: "Fenced code blocks",
    },
    {
        markdown: "    ```\n    aaa\n    ```\n",
        html: "<pre><code>```\naaa\n```\n</code></pre>\n",
        example: 104,
        start_line: 1834,
        end_line: 1843,
        section: "Fenced code blocks",
    },
    {
        markdown: "```\naaa\n  ```\n",
        html: "<pre><code>aaa\n</code></pre>\n",
        example: 105,
        start_line: 1849,
        end_line: 1856,
        section: "Fenced code blocks",
    },
    {
        markdown: "   ```\naaa\n  ```\n",
        html: "<pre><code>aaa\n</code></pre>\n",
        example: 106,
        start_line: 1859,
        end_line: 1866,
        section: "Fenced code blocks",
    },
    {
        markdown: "```\naaa\n    ```\n",
        html: "<pre><code>aaa\n    ```\n</code></pre>\n",
        example: 107,
        start_line: 1871,
        end_line: 1879,
        section: "Fenced code blocks",
    },
    {
        markdown: "``` ```\naaa\n",
        html: "<p><code> </code>\naaa</p>\n",
        example: 108,
        start_line: 1885,
        end_line: 1891,
        section: "Fenced code blocks",
    },
    {
        markdown: "~~~~~~\naaa\n~~~ ~~\n",
        html: "<pre><code>aaa\n~~~ ~~\n</code></pre>\n",
        example: 109,
        start_line: 1894,
        end_line: 1902,
        section: "Fenced code blocks",
    },
    {
        markdown: "foo\n```\nbar\n```\nbaz\n",
        html: "<p>foo</p>\n<pre><code>bar\n</code></pre>\n<p>baz</p>\n",
        example: 110,
        start_line: 1908,
        end_line: 1919,
        section: "Fenced code blocks",
    },
    {
        markdown: "foo\n---\n~~~\nbar\n~~~\n# baz\n",
        html: "<h2>foo</h2>\n<pre><code>bar\n</code></pre>\n<h1>baz</h1>\n",
        example: 111,
        start_line: 1925,
        end_line: 1937,
        section: "Fenced code blocks",
    },
    {
        markdown: "```ruby\ndef foo(x)\n  return 3\nend\n```\n",
        html: "<pre><code class=\"language-ruby\">def foo(x)\n  return 3\nend\n</code></pre>\n",
        example: 112,
        start_line: 1947,
        end_line: 1958,
        section: "Fenced code blocks",
    },
    {
        markdown: "~~~~    ruby startline=3 $%@#$\ndef foo(x)\n  return 3\nend\n~~~~~~~\n",
        html: "<pre><code class=\"language-ruby\">def foo(x)\n  return 3\nend\n</code></pre>\n",
        example: 113,
        start_line: 1961,
        end_line: 1972,
        section: "Fenced code blocks",
    },
    {
        markdown: "````;\n````\n",
        html: "<pre><code class=\"language-;\"></code></pre>\n",
        example: 114,
        start_line: 1975,
        end_line: 1980,
        section: "Fenced code blocks",
    },
    {
        markdown: "``` aa ```\nfoo\n",
        html: "<p><code>aa</code>\nfoo</p>\n",
        example: 115,
        start_line: 1985,
        end_line: 1991,
        section: "Fenced code blocks",
    },
    {
        markdown: "~~~ aa ``` ~~~\nfoo\n~~~\n",
        html: "<pre><code class=\"language-aa\">foo\n</code></pre>\n",
        example: 116,
        start_line: 1996,
        end_line: 2003,
        section: "Fenced code blocks",
    },
    {
        markdown: "```\n``` aaa\n```\n",
        html: "<pre><code>``` aaa\n</code></pre>\n",
        example: 117,
        start_line: 2008,
        end_line: 2015,
        section: "Fenced code blocks",
    },
    {
        markdown: "<table><tr><td>\n<pre>\n**Hello**,\n\n_world_.\n</pre>\n</td></tr></table>\n",
        html: "<table><tr><td>\n<pre>\n**Hello**,\n<p><em>world</em>.\n</pre></p>\n</td></tr></table>\n",
        example: 118,
        start_line: 2087,
        end_line: 2102,
        section: "HTML blocks",
    },
    {
        markdown: "<table>\n  <tr>\n    <td>\n           hi\n    </td>\n  </tr>\n</table>\n\nokay.\n",
        html: "<table>\n  <tr>\n    <td>\n           hi\n    </td>\n  </tr>\n</table>\n<p>okay.</p>\n",
        example: 119,
        start_line: 2116,
        end_line: 2135,
        section: "HTML blocks",
    },
    {
        markdown: " <div>\n  *hello*\n         <foo><a>\n",
        html: " <div>\n  *hello*\n         <foo><a>\n",
        example: 120,
        start_line: 2138,
        end_line: 2146,
        section: "HTML blocks",
    },
    {
        markdown: "</div>\n*foo*\n",
        html: "</div>\n*foo*\n",
        example: 121,
        start_line: 2151,
        end_line: 2157,
        section: "HTML blocks",
    },
    {
        markdown: "<DIV CLASS=\"foo\">\n\n*Markdown*\n\n</DIV>\n",
        html: "<DIV CLASS=\"foo\">\n<p><em>Markdown</em></p>\n</DIV>\n",
        example: 122,
        start_line: 2162,
        end_line: 2172,
        section: "HTML blocks",
    },
    {
        markdown: "<div id=\"foo\"\n  class=\"bar\">\n</div>\n",
        html: "<div id=\"foo\"\n  class=\"bar\">\n</div>\n",
        example: 123,
        start_line: 2178,
        end_line: 2186,
        section: "HTML blocks",
    },
    {
        markdown: "<div id=\"foo\" class=\"bar\n  baz\">\n</div>\n",
        html: "<div id=\"foo\" class=\"bar\n  baz\">\n</div>\n",
        example: 124,
        start_line: 2189,
        end_line: 2197,
        section: "HTML blocks",
    },
    {
        markdown: "<div>\n*foo*\n\n*bar*\n",
        html: "<div>\n*foo*\n<p><em>bar</em></p>\n",
        example: 125,
        start_line: 2201,
        end_line: 2210,
        section: "HTML blocks",
    },
    {
        markdown: "<div id=\"foo\"\n*hi*\n",
        html: "<div id=\"foo\"\n*hi*\n",
        example: 126,
        start_line: 2217,
        end_line: 2223,
        section: "HTML blocks",
    },
    {
        markdown: "<div class\nfoo\n",
        html: "<div class\nfoo\n",
        example: 127,
        start_line: 2226,
        end_line: 2232,
        section: "HTML blocks",
    },
    {
        markdown: "<div *???-&&&-<---\n*foo*\n",
        html: "<div *???-&&&-<---\n*foo*\n",
        example: 128,
        start_line: 2238,
        end_line: 2244,
        section: "HTML blocks",
    },
    {
        markdown: "<div><a href=\"bar\">*foo*</a></div>\n",
        html: "<div><a href=\"bar\">*foo*</a></div>\n",
        example: 129,
        start_line: 2250,
        end_line: 2254,
        section: "HTML blocks",
    },
    {
        markdown: "<table><tr><td>\nfoo\n</td></tr></table>\n",
        html: "<table><tr><td>\nfoo\n</td></tr></table>\n",
        example: 130,
        start_line: 2257,
        end_line: 2265,
        section: "HTML blocks",
    },
    {
        markdown: "<div></div>\n``` c\nint x = 33;\n```\n",
        html: "<div></div>\n``` c\nint x = 33;\n```\n",
        example: 131,
        start_line: 2274,
        end_line: 2284,
        section: "HTML blocks",
    },
    {
        markdown: "<a href=\"foo\">\n*bar*\n</a>\n",
        html: "<a href=\"foo\">\n*bar*\n</a>\n",
        example: 132,
        start_line: 2291,
        end_line: 2299,
        section: "HTML blocks",
    },
    {
        markdown: "<Warning>\n*bar*\n</Warning>\n",
        html: "<Warning>\n*bar*\n</Warning>\n",
        example: 133,
        start_line: 2304,
        end_line: 2312,
        section: "HTML blocks",
    },
    {
        markdown: "<i class=\"foo\">\n*bar*\n</i>\n",
        html: "<i class=\"foo\">\n*bar*\n</i>\n",
        example: 134,
        start_line: 2315,
        end_line: 2323,
        section: "HTML blocks",
    },
    {
        markdown: "</ins>\n*bar*\n",
        html: "</ins>\n*bar*\n",
        example: 135,
        start_line: 2326,
        end_line: 2332,
        section: "HTML blocks",
    },
    {
        markdown: "<del>\n*foo*\n</del>\n",
        html: "<del>\n*foo*\n</del>\n",
        example: 136,
        start_line: 2341,
        end_line: 2349,
        section: "HTML blocks",
    },
    {
        markdown: "<del>\n\n*foo*\n\n</del>\n",
        html: "<del>\n<p><em>foo</em></p>\n</del>\n",
        example: 137,
        start_line: 2356,
        end_line: 2366,
        section: "HTML blocks",
    },
    {
        markdown: "<del>*foo*</del>\n",
        html: "<p><del><em>foo</em></del></p>\n",
        example: 138,
        start_line: 2374,
        end_line: 2378,
        section: "HTML blocks",
    },
    {
        markdown: "<pre language=\"haskell\"><code>\nimport Text.HTML.TagSoup\n\nmain :: IO ()\nmain = print $ parseTags tags\n</code></pre>\nokay\n",
        html: "<pre language=\"haskell\"><code>\nimport Text.HTML.TagSoup\n\nmain :: IO ()\nmain = print $ parseTags tags\n</code></pre>\n<p>okay</p>\n",
        example: 139,
        start_line: 2390,
        end_line: 2406,
        section: "HTML blocks",
    },
    {
        markdown: "<script type=\"text/javascript\">\n// JavaScript example\n\ndocument.getElementById(\"demo\").innerHTML = \"Hello JavaScript!\";\n</script>\nokay\n",
        html: "<script type=\"text/javascript\">\n// JavaScript example\n\ndocument.getElementById(\"demo\").innerHTML = \"Hello JavaScript!\";\n</script>\n<p>okay</p>\n",
        example: 140,
        start_line: 2411,
        end_line: 2425,
        section: "HTML blocks",
    },
    {
        markdown: "<style\n  type=\"text/css\">\nh1 {color:red;}\n\np {color:blue;}\n</style>\nokay\n",
        html: "<style\n  type=\"text/css\">\nh1 {color:red;}\n\np {color:blue;}\n</style>\n<p>okay</p>\n",
        example: 141,
        start_line: 2430,
        end_line: 2446,
        section: "HTML blocks",
    },
    {
        markdown: "<style\n  type=\"text/css\">\n\nfoo\n",
        html: "<style\n  type=\"text/css\">\n\nfoo\n",
        example: 142,
        start_line: 2453,
        end_line: 2463,
        section: "HTML blocks",
    },
    {
        markdown: "> <div>\n> foo\n\nbar\n",
        html: "<blockquote>\n<div>\nfoo\n</blockquote>\n<p>bar</p>\n",
        example: 143,
        start_line: 2466,
        end_line: 2477,
        section: "HTML blocks",
    },
    {
        markdown: "- <div>\n- foo\n",
        html: "<ul>\n<li>\n<div>\n</li>\n<li>foo</li>\n</ul>\n",
        example: 144,
        start_line: 2480,
        end_line: 2490,
        section: "HTML blocks",
    },
    {
        markdown: "<style>p{color:red;}</style>\n*foo*\n",
        html: "<style>p{color:red;}</style>\n<p><em>foo</em></p>\n",
        example: 145,
        start_line: 2495,
        end_line: 2501,
        section: "HTML blocks",
    },
    {
        markdown: "<!-- foo -->*bar*\n*baz*\n",
        html: "<!-- foo -->*bar*\n<p><em>baz</em></p>\n",
        example: 146,
        start_line: 2504,
        end_line: 2510,
        section: "HTML blocks",
    },
    {
        markdown: "<script>\nfoo\n</script>1. *bar*\n",
        html: "<script>\nfoo\n</script>1. *bar*\n",
        example: 147,
        start_line: 2516,
        end_line: 2524,
        section: "HTML blocks",
    },
    {
        markdown: "<!-- Foo\n\nbar\n   baz -->\nokay\n",
        html: "<!-- Foo\n\nbar\n   baz -->\n<p>okay</p>\n",
        example: 148,
        start_line: 2529,
        end_line: 2541,
        section: "HTML blocks",
    },
    {
        markdown: "<?php\n\n  echo '>';\n\n?>\nokay\n",
        html: "<?php\n\n  echo '>';\n\n?>\n<p>okay</p>\n",
        example: 149,
        start_line: 2547,
        end_line: 2561,
        section: "HTML blocks",
    },
    {
        markdown: "<!DOCTYPE html>\n",
        html: "<!DOCTYPE html>\n",
        example: 150,
        start_line: 2566,
        end_line: 2570,
        section: "HTML blocks",
    },
    {
        markdown: "<![CDATA[\nfunction matchwo(a,b)\n{\n  if (a < b && a < 0) then {\n    return 1;\n\n  } else {\n\n    return 0;\n  }\n}\n]]>\nokay\n",
        html: "<![CDATA[\nfunction matchwo(a,b)\n{\n  if (a < b && a < 0) then {\n    return 1;\n\n  } else {\n\n    return 0;\n  }\n}\n]]>\n<p>okay</p>\n",
        example: 151,
        start_line: 2575,
        end_line: 2603,
        section: "HTML blocks",
    },
    {
        markdown: "  <!-- foo -->\n\n    <!-- foo -->\n",
        html: "  <!-- foo -->\n<pre><code>&lt;!-- foo --&gt;\n</code></pre>\n",
        example: 152,
        start_line: 2608,
        end_line: 2616,
        section: "HTML blocks",
    },
    {
        markdown: "  <div>\n\n    <div>\n",
        html: "  <div>\n<pre><code>&lt;div&gt;\n</code></pre>\n",
        example: 153,
        start_line: 2619,
        end_line: 2627,
        section: "HTML blocks",
    },
    {
        markdown: "Foo\n<div>\nbar\n</div>\n",
        html: "<p>Foo</p>\n<div>\nbar\n</div>\n",
        example: 154,
        start_line: 2633,
        end_line: 2643,
        section: "HTML blocks",
    },
    {
        markdown: "<div>\nbar\n</div>\n*foo*\n",
        html: "<div>\nbar\n</div>\n*foo*\n",
        example: 155,
        start_line: 2650,
        end_line: 2660,
        section: "HTML blocks",
    },
    {
        markdown: "Foo\n<a href=\"bar\">\nbaz\n",
        html: "<p>Foo\n<a href=\"bar\">\nbaz</p>\n",
        example: 156,
        start_line: 2665,
        end_line: 2673,
        section: "HTML blocks",
    },
    {
        markdown: "<div>\n\n*Emphasized* text.\n\n</div>\n",
        html: "<div>\n<p><em>Emphasized</em> text.</p>\n</div>\n",
        example: 157,
        start_line: 2706,
        end_line: 2716,
        section: "HTML blocks",
    },
    {
        markdown: "<div>\n*Emphasized* text.\n</div>\n",
        html: "<div>\n*Emphasized* text.\n</div>\n",
        example: 158,
        start_line: 2719,
        end_line: 2727,
        section: "HTML blocks",
    },
    {
        markdown: "<table>\n\n<tr>\n\n<td>\nHi\n</td>\n\n</tr>\n\n</table>\n",
        html: "<table>\n<tr>\n<td>\nHi\n</td>\n</tr>\n</table>\n",
        example: 159,
        start_line: 2741,
        end_line: 2761,
        section: "HTML blocks",
    },
    {
        markdown: "<table>\n\n  <tr>\n\n    <td>\n      Hi\n    </td>\n\n  </tr>\n\n</table>\n",
        html: "<table>\n  <tr>\n<pre><code>&lt;td&gt;\n  Hi\n&lt;/td&gt;\n</code></pre>\n  </tr>\n</table>\n",
        example: 160,
        start_line: 2768,
        end_line: 2789,
        section: "HTML blocks",
    },
    {
        markdown: "[foo]: /url \"title\"\n\n[foo]\n",
        html: "<p><a href=\"/url\" title=\"title\">foo</a></p>\n",
        example: 161,
        start_line: 2816,
        end_line: 2822,
        section: "Link reference definitions",
    },
    {
        markdown: "   [foo]: \n      /url  \n           'the title'  \n\n[foo]\n",
        html: "<p><a href=\"/url\" title=\"the title\">foo</a></p>\n",
        example: 162,
        start_line: 2825,
        end_line: 2833,
        section: "Link reference definitions",
    },
    {
        markdown: "[Foo*bar\\]]:my_(url) 'title (with parens)'\n\n[Foo*bar\\]]\n",
        html: "<p><a href=\"my_(url)\" title=\"title (with parens)\">Foo*bar]</a></p>\n",
        example: 163,
        start_line: 2836,
        end_line: 2842,
        section: "Link reference definitions",
    },
    {
        markdown: "[Foo bar]:\n<my url>\n'title'\n\n[Foo bar]\n",
        html: "<p><a href=\"my%20url\" title=\"title\">Foo bar</a></p>\n",
        example: 164,
        start_line: 2845,
        end_line: 2853,
        section: "Link reference definitions",
    },
    {
        markdown: "[foo]: /url '\ntitle\nline1\nline2\n'\n\n[foo]\n",
        html: "<p><a href=\"/url\" title=\"\ntitle\nline1\nline2\n\">foo</a></p>\n",
        example: 165,
        start_line: 2858,
        end_line: 2872,
        section: "Link reference definitions",
    },
    {
        markdown: "[foo]: /url 'title\n\nwith blank line'\n\n[foo]\n",
        html: "<p>[foo]: /url 'title</p>\n<p>with blank line'</p>\n<p>[foo]</p>\n",
        example: 166,
        start_line: 2877,
        end_line: 2887,
        section: "Link reference definitions",
    },
    {
        markdown: "[foo]:\n/url\n\n[foo]\n",
        html: "<p><a href=\"/url\">foo</a></p>\n",
        example: 167,
        start_line: 2892,
        end_line: 2899,
        section: "Link reference definitions",
    },
    {
        markdown: "[foo]:\n\n[foo]\n",
        html: "<p>[foo]:</p>\n<p>[foo]</p>\n",
        example: 168,
        start_line: 2904,
        end_line: 2911,
        section: "Link reference definitions",
    },
    {
        markdown: "[foo]: <>\n\n[foo]\n",
        html: "<p><a href=\"\">foo</a></p>\n",
        example: 169,
        start_line: 2916,
        end_line: 2922,
        section: "Link reference definitions",
    },
    {
        markdown: "[foo]: <bar>(baz)\n\n[foo]\n",
        html: "<p>[foo]: <bar>(baz)</p>\n<p>[foo]</p>\n",
        example: 170,
        start_line: 2927,
        end_line: 2934,
        section: "Link reference definitions",
    },
    {
        markdown: "[foo]: /url\\bar\\*baz \"foo\\\"bar\\baz\"\n\n[foo]\n",
        html: "<p><a href=\"/url%5Cbar*baz\" title=\"foo&quot;bar\\baz\">foo</a></p>\n",
        example: 171,
        start_line: 2940,
        end_line: 2946,
        section: "Link reference definitions",
    },
    {
        markdown: "[foo]\n\n[foo]: url\n",
        html: "<p><a href=\"url\">foo</a></p>\n",
        example: 172,
        start_line: 2951,
        end_line: 2957,
        section: "Link reference definitions",
    },
    {
        markdown: "[foo]\n\n[foo]: first\n[foo]: second\n",
        html: "<p><a href=\"first\">foo</a></p>\n",
        example: 173,
        start_line: 2963,
        end_line: 2970,
        section: "Link reference definitions",
    },
    {
        markdown: "[FOO]: /url\n\n[Foo]\n",
        html: "<p><a href=\"/url\">Foo</a></p>\n",
        example: 174,
        start_line: 2976,
        end_line: 2982,
        section: "Link reference definitions",
    },
    {
        markdown: "[ΑΓΩ]: /φου\n\n[αγω]\n",
        html: "<p><a href=\"/%CF%86%CE%BF%CF%85\">αγω</a></p>\n",
        example: 175,
        start_line: 2985,
        end_line: 2991,
        section: "Link reference definitions",
    },
    {
        markdown: "[foo]: /url\n",
        html: "",
        example: 176,
        start_line: 2997,
        end_line: 3000,
        section: "Link reference definitions",
    },
    {
        markdown: "[\nfoo\n]: /url\nbar\n",
        html: "<p>bar</p>\n",
        example: 177,
        start_line: 3005,
        end_line: 3012,
        section: "Link reference definitions",
    },
    {
        markdown: "[foo]: /url \"title\" ok\n",
        html: "<p>[foo]: /url &quot;title&quot; ok</p>\n",
        example: 178,
        start_line: 3018,
        end_line: 3022,
        section: "Link reference definitions",
    },
    {
        markdown: "[foo]: /url\n\"title\" ok\n",
        html: "<p>&quot;title&quot; ok</p>\n",
        example: 179,
        start_line: 3027,
        end_line: 3032,
        section: "Link reference definitions",
    },
    {
        markdown: "    [foo]: /url \"title\"\n\n[foo]\n",
        html: "<pre><code>[foo]: /url &quot;title&quot;\n</code></pre>\n<p>[foo]</p>\n",
        example: 180,
        start_line: 3038,
        end_line: 3046,
        section: "Link reference definitions",
    },
    {
        markdown: "```\n[foo]: /url\n```\n\n[foo]\n",
        html: "<pre><code>[foo]: /url\n</code></pre>\n<p>[foo]</p>\n",
        example: 181,
        start_line: 3052,
        end_line: 3062,
        section: "Link reference definitions",
    },
    {
        markdown: "Foo\n[bar]: /baz\n\n[bar]\n",
        html: "<p>Foo\n[bar]: /baz</p>\n<p>[bar]</p>\n",
        example: 182,
        start_line: 3067,
        end_line: 3076,
        section: "Link reference definitions",
    },
    {
        markdown: "# [Foo]\n[foo]: /url\n> bar\n",
        html: "<h1><a href=\"/url\">Foo</a></h1>\n<blockquote>\n<p>bar</p>\n</blockquote>\n",
        example: 183,
        start_line: 3082,
        end_line: 3091,
        section: "Link reference definitions",
    },
    {
        markdown: "[foo]: /url\nbar\n===\n[foo]\n",
        html: "<h1>bar</h1>\n<p><a href=\"/url\">foo</a></p>\n",
        example: 184,
        start_line: 3093,
        end_line: 3101,
        section: "Link reference definitions",
    },
    {
        markdown: "[foo]: /url\n===\n[foo]\n",
        html: "<p>===\n<a href=\"/url\">foo</a></p>\n",
        example: 185,
        start_line: 3103,
        end_line: 3110,
        section: "Link reference definitions",
    },
    {
        markdown: "[foo]: /foo-url \"foo\"\n[bar]: /bar-url\n  \"bar\"\n[baz]: /baz-url\n\n[foo],\n[bar],\n[baz]\n",
        html: "<p><a href=\"/foo-url\" title=\"foo\">foo</a>,\n<a href=\"/bar-url\" title=\"bar\">bar</a>,\n<a href=\"/baz-url\">baz</a></p>\n",
        example: 186,
        start_line: 3116,
        end_line: 3129,
        section: "Link reference definitions",
    },
    {
        markdown: "[foo]\n\n> [foo]: /url\n",
        html: "<p><a href=\"/url\">foo</a></p>\n<blockquote>\n</blockquote>\n",
        example: 187,
        start_line: 3137,
        end_line: 3145,
        section: "Link reference definitions",
    },
    {
        markdown: "[foo]: /url\n",
        html: "",
        example: 188,
        start_line: 3154,
        end_line: 3157,
        section: "Link reference definitions",
    },
    {
        markdown: "aaa\n\nbbb\n",
        html: "<p>aaa</p>\n<p>bbb</p>\n",
        example: 189,
        start_line: 3171,
        end_line: 3178,
        section: "Paragraphs",
    },
    {
        markdown: "aaa\nbbb\n\nccc\nddd\n",
        html: "<p>aaa\nbbb</p>\n<p>ccc\nddd</p>\n",
        example: 190,
        start_line: 3183,
        end_line: 3194,
        section: "Paragraphs",
    },
    {
        markdown: "aaa\n\n\nbbb\n",
        html: "<p>aaa</p>\n<p>bbb</p>\n",
        example: 191,
        start_line: 3199,
        end_line: 3207,
        section: "Paragraphs",
    },
    {
        markdown: "  aaa\n bbb\n",
        html: "<p>aaa\nbbb</p>\n",
        example: 192,
        start_line: 3212,
        end_line: 3218,
        section: "Paragraphs",
    },
    {
        markdown: "aaa\n             bbb\n                                       ccc\n",
        html: "<p>aaa\nbbb\nccc</p>\n",
        example: 193,
        start_line: 3224,
        end_line: 3232,
        section: "Paragraphs",
    },
    {
        markdown: "   aaa\nbbb\n",
        html: "<p>aaa\nbbb</p>\n",
        example: 194,
        start_line: 3238,
        end_line: 3244,
        section: "Paragraphs",
    },
    {
        markdown: "    aaa\nbbb\n",
        html: "<pre><code>aaa\n</code></pre>\n<p>bbb</p>\n",
        example: 195,
        start_line: 3247,
        end_line: 3254,
        section: "Paragraphs",
    },
    {
        markdown: "aaa     \nbbb     \n",
        html: "<p>aaa<br />\nbbb</p>\n",
        example: 196,
        start_line: 3261,
        end_line: 3267,
        section: "Paragraphs",
    },
    {
        markdown: "  \n\naaa\n  \n\n# aaa\n\n  \n",
        html: "<p>aaa</p>\n<h1>aaa</h1>\n",
        example: 197,
        start_line: 3278,
        end_line: 3290,
        section: "Blank lines",
    },
    {
        markdown: "> # Foo\n> bar\n> baz\n",
        html: "<blockquote>\n<h1>Foo</h1>\n<p>bar\nbaz</p>\n</blockquote>\n",
     
Download .txt
gitextract_r00b7n2y/

├── .editorconfig
├── .github/
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.md
│   │   ├── config.yml
│   │   └── feature_request.md
│   ├── PULL_REQUEST_TEMPLATE.md
│   └── SECURITY.md
├── .gitignore
├── .npmrc
├── .prettierrc
├── CHANGELOG.md
├── LICENSE
├── README.md
├── README_en_US.md
├── __test__/
│   ├── markdown/
│   │   ├── commonmark-0.29.ts
│   │   └── lute.test.ts
│   ├── methods/
│   │   └── index.spec.ts
│   └── util/
│       ├── Options.test.ts
│       └── textareaPosition.spec.ts
├── bower.json
├── demo/
│   ├── comment.html
│   ├── comment.js
│   ├── icon.html
│   ├── index.html
│   ├── index.js
│   ├── jest-puppeteer.html
│   ├── jest-puppeteer.js
│   ├── markdown/
│   │   ├── cute-list.md
│   │   ├── entity.md
│   │   ├── ko_KR.md
│   │   └── zh_CN.md
│   ├── render.html
│   ├── render.js
│   └── static.html
├── eslint.config.mjs
├── package.json
├── src/
│   ├── assets/
│   │   └── less/
│   │       ├── _content.less
│   │       ├── _hint.less
│   │       ├── _ir.less
│   │       ├── _panel.less
│   │       ├── _reset.less
│   │       ├── _sv.less
│   │       ├── _toolbar.less
│   │       ├── _tooltipped.less
│   │       ├── _wysiwyg.less
│   │       └── index.less
│   ├── css/
│   │   └── content-theme/
│   │       ├── ant-design.css
│   │       ├── dark.css
│   │       ├── light.css
│   │       └── wechat.css
│   ├── index.ts
│   ├── js/
│   │   ├── graphviz/
│   │   │   ├── full.render.js
│   │   │   └── viz.js
│   │   ├── highlight.js/
│   │   │   ├── LICENSE
│   │   │   └── third-languages.js
│   │   ├── i18n/
│   │   │   ├── de_DE.js
│   │   │   ├── en_US.js
│   │   │   ├── es_ES.js
│   │   │   ├── fr_FR.js
│   │   │   ├── ja_JP.js
│   │   │   ├── ko_KR.js
│   │   │   ├── pt_BR.js
│   │   │   ├── ru_RU.js
│   │   │   ├── sv_SE.js
│   │   │   ├── vi_VN.js
│   │   │   ├── zh_CN.js
│   │   │   └── zh_TW.js
│   │   ├── icons/
│   │   │   ├── ant.js
│   │   │   └── material.js
│   │   ├── markmap/
│   │   │   └── prism.css
│   │   └── mathjax/
│   │       ├── LICENSE
│   │       ├── a11y/
│   │       │   ├── assistive-mml.js
│   │       │   ├── complexity.js
│   │       │   ├── explorer.js
│   │       │   └── semantic-enrich.js
│   │       ├── input/
│   │       │   ├── asciimath.js
│   │       │   ├── mml/
│   │       │   │   └── entities.js
│   │       │   ├── mml.js
│   │       │   ├── tex/
│   │       │   │   └── extensions/
│   │       │   │       ├── action.js
│   │       │   │       ├── all-packages.js
│   │       │   │       ├── ams.js
│   │       │   │       ├── amscd.js
│   │       │   │       ├── autoload.js
│   │       │   │       ├── bbox.js
│   │       │   │       ├── boldsymbol.js
│   │       │   │       ├── braket.js
│   │       │   │       ├── bussproofs.js
│   │       │   │       ├── cancel.js
│   │       │   │       ├── color.js
│   │       │   │       ├── colorV2.js
│   │       │   │       ├── configMacros.js
│   │       │   │       ├── enclose.js
│   │       │   │       ├── extpfeil.js
│   │       │   │       ├── html.js
│   │       │   │       ├── mhchem.js
│   │       │   │       ├── newcommand.js
│   │       │   │       ├── noerrors.js
│   │       │   │       ├── noundefined.js
│   │       │   │       ├── physics.js
│   │       │   │       ├── require.js
│   │       │   │       ├── tagFormat.js
│   │       │   │       ├── textmacros.js
│   │       │   │       ├── unicode.js
│   │       │   │       └── verb.js
│   │       │   ├── tex-base.js
│   │       │   ├── tex-full.js
│   │       │   └── tex.js
│   │       ├── sre/
│   │       │   ├── mathmaps/
│   │       │   │   ├── de.js
│   │       │   │   ├── en.js
│   │       │   │   ├── es.js
│   │       │   │   ├── fr.js
│   │       │   │   ├── mathmaps_ie.js
│   │       │   │   └── nemeth.js
│   │       │   ├── sre-node.js
│   │       │   └── sre_browser.js
│   │       └── tex-svg-full.js
│   ├── method.ts
│   └── ts/
│       ├── constants.ts
│       ├── devtools/
│       │   └── index.ts
│       ├── export/
│       │   └── index.ts
│       ├── hint/
│       │   └── index.ts
│       ├── ir/
│       │   ├── expandMarker.ts
│       │   ├── highlightToolbarIR.ts
│       │   ├── index.ts
│       │   ├── input.ts
│       │   ├── process.ts
│       │   └── processKeydown.ts
│       ├── markdown/
│       │   ├── SMILESRender.ts
│       │   ├── abcRender.ts
│       │   ├── adapterRender.ts
│       │   ├── anchorRender.ts
│       │   ├── chartRender.ts
│       │   ├── codeRender.ts
│       │   ├── flowchartRender.ts
│       │   ├── getHTML.ts
│       │   ├── getMarkdown.ts
│       │   ├── graphvizRender.ts
│       │   ├── highlightRender.ts
│       │   ├── lazyLoadImageRender.ts
│       │   ├── markmapRender.ts
│       │   ├── mathRender.ts
│       │   ├── mediaRender.ts
│       │   ├── mermaidRender.ts
│       │   ├── mindmapRender.ts
│       │   ├── outlineRender.ts
│       │   ├── plantumlRender.ts
│       │   ├── previewRender.ts
│       │   ├── setLute.ts
│       │   └── speechRender.ts
│       ├── outline/
│       │   └── index.ts
│       ├── preview/
│       │   ├── image.ts
│       │   └── index.ts
│       ├── resize/
│       │   └── index.ts
│       ├── sv/
│       │   ├── combineFootnote.ts
│       │   ├── index.ts
│       │   ├── inputEvent.ts
│       │   ├── process.ts
│       │   └── processKeydown.ts
│       ├── tip/
│       │   └── index.ts
│       ├── toolbar/
│       │   ├── Both.ts
│       │   ├── Br.ts
│       │   ├── CodeTheme.ts
│       │   ├── ContentTheme.ts
│       │   ├── Counter.ts
│       │   ├── Custom.ts
│       │   ├── Devtools.ts
│       │   ├── Divider.ts
│       │   ├── EditMode.ts
│       │   ├── Emoji.ts
│       │   ├── Export.ts
│       │   ├── Fullscreen.ts
│       │   ├── Headings.ts
│       │   ├── Help.ts
│       │   ├── Indent.ts
│       │   ├── Info.ts
│       │   ├── InsertAfter.ts
│       │   ├── InsertBefore.ts
│       │   ├── MenuItem.ts
│       │   ├── Outdent.ts
│       │   ├── Outline.ts
│       │   ├── Preview.ts
│       │   ├── Record.ts
│       │   ├── Redo.ts
│       │   ├── Undo.ts
│       │   ├── Upload.ts
│       │   ├── index.ts
│       │   └── setToolbar.ts
│       ├── ui/
│       │   ├── initUI.ts
│       │   ├── setCodeTheme.ts
│       │   ├── setContentTheme.ts
│       │   ├── setPreviewMode.ts
│       │   └── setTheme.ts
│       ├── undo/
│       │   └── index.ts
│       ├── upload/
│       │   ├── getElement.ts
│       │   ├── index.ts
│       │   └── setHeaders.ts
│       ├── util/
│       │   ├── Options.ts
│       │   ├── RecordMedia.ts
│       │   ├── addScript.ts
│       │   ├── addStyle.ts
│       │   ├── code160to32.ts
│       │   ├── compatibility.ts
│       │   ├── editorCommonEvent.ts
│       │   ├── fixBrowserBehavior.ts
│       │   ├── function.ts
│       │   ├── getSelectText.ts
│       │   ├── hasClosest.ts
│       │   ├── hasClosestByHeadings.ts
│       │   ├── highlightToolbar.ts
│       │   ├── hotKey.ts
│       │   ├── log.ts
│       │   ├── merge.ts
│       │   ├── processCode.ts
│       │   ├── selection.ts
│       │   └── toc.ts
│       └── wysiwyg/
│           ├── afterRenderEvent.ts
│           ├── highlightToolbarWYSIWYG.ts
│           ├── index.ts
│           ├── inlineTag.ts
│           ├── input.ts
│           ├── processKeydown.ts
│           ├── renderDomByMd.ts
│           ├── setHeading.ts
│           ├── showCode.ts
│           └── toolbarEvent.ts
├── tsconfig.json
├── types/
│   └── index.d.ts
├── webpack.config.js
└── webpack.start.js
Download .txt
Showing preview only (411K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (4336 symbols across 93 files)

FILE: demo/comment.js
  method adjustTop (line 119) | adjustTop(commentsData) {
  method add (line 122) | add (id, text, commentsData) {
  method remove (line 157) | remove (ids) {
  method scroll (line 164) | scroll (top) {
  method after (line 168) | after () {

FILE: demo/index.js
  method filename (line 130) | filename(name) {

FILE: demo/render.js
  method after (line 30) | after() {

FILE: src/index.ts
  class Vditor (line 41) | class Vditor extends VditorMethod {
    method constructor (line 50) | constructor(id: string | HTMLElement, options?: IOptions) {
    method showErrorTip (line 102) | private showErrorTip(error: string) {
    method updateToolbarConfig (line 108) | public updateToolbarConfig(options: IToolbarConfig) {
    method setTheme (line 113) | public setTheme(
    method getValue (line 132) | public getValue() {
    method getCurrentMode (line 137) | public getCurrentMode() {
    method focus (line 142) | public focus() {
    method blur (line 153) | public blur() {
    method disabled (line 164) | public disabled() {
    method enable (line 177) | public enable() {
    method getSelection (line 187) | public getSelection() {
    method renderPreview (line 198) | public renderPreview(value?: string) {
    method getCursorPosition (line 203) | public getCursorPosition() {
    method isUploading (line 208) | public isUploading() {
    method clearCache (line 213) | public clearCache() {
    method disabledCache (line 220) | public disabledCache() {
    method enableCache (line 225) | public enableCache() {
    method html2md (line 235) | public html2md(value: string) {
    method exportJSON (line 240) | public exportJSON(value: string) {
    method getHTML (line 245) | public getHTML() {
    method tip (line 250) | public tip(text: string, time?: number) {
    method setPreviewMode (line 255) | public setPreviewMode(mode: "both" | "editor") {
    method deleteValue (line 260) | public deleteValue() {
    method updateValue (line 268) | public updateValue(value: string) {
    method insertValue (line 273) | public insertValue(value: string, render = true) {
    method insertMD (line 301) | public insertMD(md: string) {
    method setValue (line 315) | public setValue(markdown: string, clearStack = false) {
    method insertEmptyBlock (line 358) | public insertEmptyBlock(position: InsertPosition) {
    method clearStack (line 363) | public clearStack() {
    method destroy (line 369) | public destroy() {
    method getCommentIds (line 386) | public getCommentIds() {
    method hlCommentIds (line 394) | public hlCommentIds(ids: string[]) {
    method unHlCommentIds (line 421) | public unHlCommentIds(ids: string[]) {
    method removeCommentIds (line 447) | public removeCommentIds(removeIds: string[]) {
    method init (line 488) | private init(id: HTMLElement, mergedOptions: IOptions) {

FILE: src/js/graphviz/full.render.js
  function staticAlloc (line 7) | function staticAlloc(size){assert(!staticSealed);var ret=STATICTOP;STATI...
  function dynamicAlloc (line 7) | function dynamicAlloc(size){assert(DYNAMICTOP_PTR);var ret=HEAP32[DYNAMI...
  function alignMemory (line 7) | function alignMemory(size,factor){if(!factor)factor=STACK_ALIGN;var ret=...
  function getNativeTypeSize (line 7) | function getNativeTypeSize(type){switch(type){case"i1":case"i8":return 1...
  function warnOnce (line 7) | function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnc...
  function dynCall (line 7) | function dynCall(sig,ptr,args){if(args&&args.length){return Module["dynC...
  function assert (line 7) | function assert(condition,text){if(!condition){abort("Assertion failed: ...
  function getCFunc (line 7) | function getCFunc(ident){var func=Module["_"+ident];assert(func,"Cannot ...
  function ccall (line 7) | function ccall(ident,returnType,argTypes,args,opts){var func=getCFunc(id...
  function setValue (line 7) | function setValue(ptr,value,type,noSafe){type=type||"i8";if(type.charAt(...
  function allocate (line 7) | function allocate(slab,types,allocator,ptr){var zeroinit,size;if(typeof ...
  function Pointer_stringify (line 7) | function Pointer_stringify(ptr,length){if(length===0||!ptr)return"";var ...
  function UTF8ArrayToString (line 7) | function UTF8ArrayToString(u8Array,idx){var endPtr=idx;while(u8Array[end...
  function UTF8ToString (line 7) | function UTF8ToString(ptr){return UTF8ArrayToString(HEAPU8,ptr)}
  function stringToUTF8Array (line 7) | function stringToUTF8Array(str,outU8Array,outIdx,maxBytesToWrite){if(!(m...
  function stringToUTF8 (line 7) | function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Arr...
  function lengthBytesUTF8 (line 7) | function lengthBytesUTF8(str){var len=0;for(var i=0;i<str.length;++i){va...
  function allocateUTF8 (line 7) | function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_mall...
  function demangle (line 7) | function demangle(func){return func}
  function demangleAll (line 7) | function demangleAll(text){var regex=/__Z[\w\d_]+/g;return text.replace(...
  function jsStackTrace (line 7) | function jsStackTrace(){var err=new Error;if(!err.stack){try{throw new E...
  function stackTrace (line 7) | function stackTrace(){var js=jsStackTrace();if(Module["extraStackTrace"]...
  function updateGlobalBufferViews (line 7) | function updateGlobalBufferViews(){Module["HEAP8"]=HEAP8=new Int8Array(b...
  function abortOnCannotGrowMemory (line 7) | function abortOnCannotGrowMemory(){abort("Cannot enlarge memory arrays. ...
  function enlargeMemory (line 7) | function enlargeMemory(){abortOnCannotGrowMemory()}
  function getTotalMemory (line 7) | function getTotalMemory(){return TOTAL_MEMORY}
  function callRuntimeCallbacks (line 7) | function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var c...
  function preRun (line 7) | function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="func...
  function ensureInitRuntime (line 7) | function ensureInitRuntime(){if(runtimeInitialized)return;runtimeInitial...
  function preMain (line 7) | function preMain(){callRuntimeCallbacks(__ATMAIN__)}
  function exitRuntime (line 7) | function exitRuntime(){callRuntimeCallbacks(__ATEXIT__);runtimeExited=true}
  function postRun (line 7) | function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="f...
  function addOnPreRun (line 7) | function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}
  function addOnPostRun (line 7) | function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}
  function writeArrayToMemory (line 7) | function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}
  function writeAsciiToMemory (line 7) | function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i<str.le...
  function getUniqueRunDependency (line 7) | function getUniqueRunDependency(id){return id}
  function addRunDependency (line 7) | function addRunDependency(id){runDependencies++;if(Module["monitorRunDep...
  function removeRunDependency (line 7) | function removeRunDependency(id){runDependencies--;if(Module["monitorRun...
  function isDataURI (line 7) | function isDataURI(filename){return String.prototype.startsWith?filename...
  function _emscripten_asm_const_iii (line 7) | function _emscripten_asm_const_iii(code,a0,a1){return ASM_CONSTS[code](a...
  function ___assert_fail (line 7) | function ___assert_fail(condition,filename,line,func){abort("Assertion f...
  function _emscripten_get_now (line 7) | function _emscripten_get_now(){abort()}
  function _emscripten_get_now_is_monotonic (line 7) | function _emscripten_get_now_is_monotonic(){return ENVIRONMENT_IS_NODE||...
  function ___setErrNo (line 7) | function ___setErrNo(value){if(Module["___errno_location"])HEAP32[Module...
  function _clock_gettime (line 7) | function _clock_gettime(clk_id,tp){var now;if(clk_id===0){now=Date.now()...
  function ___clock_gettime (line 7) | function ___clock_gettime(){return _clock_gettime.apply(null,arguments)}
  function ___lock (line 7) | function ___lock(){}
  function ___map_file (line 7) | function ___map_file(pathname,size){___setErrNo(ERRNO_CODES.EPERM);retur...
  function trim (line 7) | function trim(arr){var start=0;for(;start<arr.length;start++){if(arr[sta...
  function isRealDir (line 7) | function isRealDir(p){return p!=="."&&p!==".."}
  function toAbsolute (line 7) | function toAbsolute(root){return(function(p){return PATH.join2(root,p)})}
  function done (line 7) | function done(err){if(err){if(!done.errored){done.errored=true;return ca...
  function ensureParent (line 7) | function ensureParent(path){var parts=path.split("/");var parent=root;fo...
  function base (line 7) | function base(path){var parts=path.split("/");return parts[parts.length-1]}
  function doCallback (line 7) | function doCallback(err){assert(FS.syncFSRequests>0);FS.syncFSRequests--...
  function done (line 7) | function done(err){if(err){if(!done.errored){done.errored=true;return do...
  function LazyUint8Array (line 7) | function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}
  function processData (line 7) | function processData(byteArray){function finish(byteArray){if(preFinish)...
  function finish (line 7) | function finish(){if(fail==0)onload();else onerror()}
  function finish (line 7) | function finish(){if(fail==0)onload();else onerror()}
  function ___syscall10 (line 7) | function ___syscall10(which,varargs){SYSCALLS.varargs=varargs;try{var pa...
  function ___syscall140 (line 7) | function ___syscall140(which,varargs){SYSCALLS.varargs=varargs;try{var s...
  function ___syscall145 (line 7) | function ___syscall145(which,varargs){SYSCALLS.varargs=varargs;try{var s...
  function ___syscall146 (line 7) | function ___syscall146(which,varargs){SYSCALLS.varargs=varargs;try{var s...
  function ___syscall192 (line 7) | function ___syscall192(which,varargs){SYSCALLS.varargs=varargs;try{var a...
  function ___syscall195 (line 7) | function ___syscall195(which,varargs){SYSCALLS.varargs=varargs;try{var p...
  function ___syscall197 (line 7) | function ___syscall197(which,varargs){SYSCALLS.varargs=varargs;try{var s...
  function ___syscall20 (line 7) | function ___syscall20(which,varargs){SYSCALLS.varargs=varargs;try{return...
  function ___syscall221 (line 7) | function ___syscall221(which,varargs){SYSCALLS.varargs=varargs;try{var s...
  function ___syscall3 (line 7) | function ___syscall3(which,varargs){SYSCALLS.varargs=varargs;try{var str...
  function ___syscall33 (line 7) | function ___syscall33(which,varargs){SYSCALLS.varargs=varargs;try{var pa...
  function ___syscall5 (line 7) | function ___syscall5(which,varargs){SYSCALLS.varargs=varargs;try{var pat...
  function ___syscall54 (line 7) | function ___syscall54(which,varargs){SYSCALLS.varargs=varargs;try{var st...
  function ___syscall6 (line 7) | function ___syscall6(which,varargs){SYSCALLS.varargs=varargs;try{var str...
  function ___syscall91 (line 7) | function ___syscall91(which,varargs){SYSCALLS.varargs=varargs;try{var ad...
  function ___unlock (line 7) | function ___unlock(){}
  function __exit (line 7) | function __exit(status){Module["exit"](status)}
  function _exit (line 7) | function _exit(status){__exit(status)}
  function ___buildEnvironment (line 7) | function ___buildEnvironment(env){var MAX_ENV_VALUES=64;var TOTAL_ENV_SI...
  function _getenv (line 7) | function _getenv(name){if(name===0)return 0;name=Pointer_stringify(name)...
  function _gettimeofday (line 7) | function _gettimeofday(ptr){var now=Date.now();HEAP32[ptr>>2]=now/1e3|0;...
  function _llvm_trap (line 7) | function _llvm_trap(){abort("trap!")}
  function _longjmp (line 7) | function _longjmp(env,value){Module["setThrew"](env,value||1);throw"long...
  function _emscripten_memcpy_big (line 7) | function _emscripten_memcpy_big(dest,src,num){HEAPU8.set(HEAPU8.subarray...
  function _setenv (line 7) | function _setenv(envname,envval,overwrite){if(envname===0){___setErrNo(E...
  function _time (line 7) | function _time(ptr){var ret=Date.now()/1e3|0;if(ptr){HEAP32[ptr>>2]=ret}...
  function _times (line 7) | function _times(buffer){if(buffer!==0){_memset(buffer,0,16)}return 0}
  function intArrayFromString (line 7) | function intArrayFromString(stringy,dontAddNull,length){var len=length>0...
  function intArrayToString (line 7) | function intArrayToString(array){var ret=[];for(var i=0;i<array.length;i...
  function intArrayFromBase64 (line 7) | function intArrayFromBase64(s){if(typeof ENVIRONMENT_IS_NODE==="boolean"...
  function tryParseAsDataURI (line 7) | function tryParseAsDataURI(filename){if(!isDataURI(filename)){return}ret...
  function invoke_d (line 7) | function invoke_d(index){try{return Module["dynCall_d"](index)}catch(e){...
  function invoke_dddd (line 7) | function invoke_dddd(index,a1,a2,a3){try{return Module["dynCall_dddd"](i...
  function invoke_di (line 7) | function invoke_di(index,a1){try{return Module["dynCall_di"](index,a1)}c...
  function invoke_i (line 7) | function invoke_i(index){try{return Module["dynCall_i"](index)}catch(e){...
  function invoke_ii (line 7) | function invoke_ii(index,a1){try{return Module["dynCall_ii"](index,a1)}c...
  function invoke_iii (line 7) | function invoke_iii(index,a1,a2){try{return Module["dynCall_iii"](index,...
  function invoke_iiidd (line 7) | function invoke_iiidd(index,a1,a2,a3,a4){try{return Module["dynCall_iiid...
  function invoke_iiii (line 7) | function invoke_iiii(index,a1,a2,a3){try{return Module["dynCall_iiii"](i...
  function invoke_iiiii (line 7) | function invoke_iiiii(index,a1,a2,a3,a4){try{return Module["dynCall_iiii...
  function invoke_iiiiii (line 7) | function invoke_iiiiii(index,a1,a2,a3,a4,a5){try{return Module["dynCall_...
  function invoke_iiiiiii (line 7) | function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){try{return Module["dynC...
  function invoke_iiiiiiiiiii (line 7) | function invoke_iiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){try{re...
  function invoke_v (line 7) | function invoke_v(index){try{Module["dynCall_v"](index)}catch(e){if(type...
  function invoke_vi (line 7) | function invoke_vi(index,a1){try{Module["dynCall_vi"](index,a1)}catch(e)...
  function invoke_vii (line 7) | function invoke_vii(index,a1,a2){try{Module["dynCall_vii"](index,a1,a2)}...
  function invoke_viii (line 7) | function invoke_viii(index,a1,a2,a3){try{Module["dynCall_viii"](index,a1...
  function invoke_viiiddi (line 7) | function invoke_viiiddi(index,a1,a2,a3,a4,a5,a6){try{Module["dynCall_vii...
  function invoke_viiii (line 7) | function invoke_viiii(index,a1,a2,a3,a4){try{Module["dynCall_viiii"](ind...
  function invoke_viiiii (line 7) | function invoke_viiiii(index,a1,a2,a3,a4,a5){try{Module["dynCall_viiiii"...
  function invoke_viiiiii (line 7) | function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6){try{Module["dynCall_vii...
  function invoke_viiiiiiiii (line 7) | function invoke_viiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9){try{Module[...
  function gP (line 11) | function gP(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0...
  function hP (line 11) | function hP(a,b){a=a|0;b=b|0;b=wC(c[a>>2]|0,4,b)|0;if(!b)b=999;else{b=c[...
  function iP (line 11) | function iP(a){a=a|0;return 1}
  function jP (line 11) | function jP(b){b=b|0;var c=0;a[b+536>>0]=0;c=b+336|0;h[c>>3]=+h[c>>3]+10...
  function kP (line 11) | function kP(b){b=b|0;var c=0;a[b+536>>0]=0;c=b+336|0;h[c>>3]=+h[c>>3]-10...
  function lP (line 11) | function lP(b){b=b|0;var c=0;a[b+536>>0]=0;c=b+344|0;h[c>>3]=+h[c>>3]-10...
  function mP (line 11) | function mP(b){b=b|0;var c=0;a[b+536>>0]=0;c=b+344|0;h[c>>3]=+h[c>>3]+10...
  function nP (line 11) | function nP(b){b=b|0;var c=0;a[b+536>>0]=0;c=b+352|0;h[c>>3]=+h[c>>3]*1....
  function oP (line 11) | function oP(b){b=b|0;var c=0;a[b+536>>0]=0;c=b+352|0;h[c>>3]=+h[c>>3]*.9...
  function pP (line 11) | function pP(b){b=b|0;var d=0,e=0,f=0,g=0.0,i=0.0;e=b+536|0;d=(a[e>>0]|0)...
  function qP (line 11) | function qP(b){b=b|0;var d=0,e=0;d=c[(c[b>>2]|0)+168>>2]|0;e=b+580|0;if(...
  function rP (line 11) | function rP(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0,k=0;k=l;l=l...
  function sP (line 11) | function sP(b,c,d){b=b|0;c=c|0;d=d|0;a[b+538>>0]=0;a[b+541>>0]=0;return}
  function tP (line 11) | function tP(b,d){b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0,j=0.0,k=0;k=l;l=l+1...
  function uP (line 11) | function uP(a,b,c){a=a|0;b=b|0;c=c|0;return}
  function vP (line 11) | function vP(a){a=a|0;return}
  function wP (line 11) | function wP(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=c[b>>2]|0...
  function xP (line 11) | function xP(a,b){a=a|0;b=b|0;a=c[a>>2]|0;_C(a,c[a+168>>2]|0,b)|0;return}
  function yP (line 11) | function yP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;g=c[a>>2]|0...
  function zP (line 11) | function zP(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0.0,j=0.0,k=0.0,m=0;f=l;l...
  function AP (line 11) | function AP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,g=0.0,i=0;if(!(c[b+...
  function BP (line 11) | function BP(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=l;l=l+32|0;f=g;e=Sy(a...
  function CP (line 11) | function CP(b){b=b|0;var d=0;d=c[b+576>>2]|0;a:do if(d|0)switch(pz(d)|0)...
  function DP (line 11) | function DP(b){b=b|0;var d=0,e=0;e=b+584|0;d=c[e>>2]|0;if(d|0){D_(d);c[e...
  function EP (line 11) | function EP(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0.0,o...
  function FP (line 11) | function FP(b){b=b|0;var d=0,e=0,f=0;f=b+580|0;d=c[f>>2]|0;a:do if(d|0)s...
  function GP (line 11) | function GP(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=a+592|0;do if((fz(b)|...
  function HP (line 11) | function HP(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;f=a+592|0;rC(f,0,10...
  function IP (line 11) | function IP(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;h=a...
  function JP (line 11) | function JP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=KP(a,b,c[d>>2]|0)...
  function KP (line 11) | function KP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=vH(12)|0;if(!b)b=0;else b...
  function LP (line 11) | function LP(b,c){b=b|0;c=c|0;MP(b);a[b+44>>0]=0;NP(b)|0;AL(b)|0;return}
  function MP (line 11) | function MP(b){b=b|0;var d=0,e=0;d=c[b+32>>2]|0;a:do if(d|0)while(1){e=c...
  function NP (line 11) | function NP(a){a=a|0;var b=0;b=wC(a,2,108440)|0;if(!b)a=999;else{c[a+148...
  function OP (line 11) | function OP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;a=c[a+148>>2]|0;if((a|0)!=0...
  function PP (line 11) | function PP(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;return (c[b>>2]|0)-(c[d>>2]...
  function QP (line 11) | function QP(a){a=a|0;var b=0.0,d=0.0;a=c[a+16>>2]|0;d=+h[a+16>>3];b=+h[a...
  function RP (line 11) | function RP(a){a=a|0;var b=0,c=0;if(!a)a=-1;else{c=a>>>0>65535;a=c?a>>>1...
  function SP (line 11) | function SP(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0.0,j=0.0,k=0...
  function TP (line 11) | function TP(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0...
  function UP (line 11) | function UP(a){a=a|0;var b=0;b=dQ(a)|0;if((b|0)>=0){eQ(a);fQ(a);b=yw(c[a...
  function VP (line 11) | function VP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,i=0.0,j=0,k=0.0,m...
  function WP (line 11) | function WP(a){a=a|0;ES(c[a+24>>2]|0)|0;D_(a);return}
  function XP (line 11) | function XP(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0.0,j=0,k=0,m=0,n...
  function YP (line 11) | function YP(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0.0,g=0.0;a=c[a+32>>2]|0;...
  function ZP (line 11) | function ZP(a,b){a=a|0;b=b|0;var d=0.0,e=0.0;a=c[a+32>>2]|0;e=+h[a+16>>3...
  function _P (line 11) | function _P(a,b){a=a|0;b=b|0;var d=0.0,e=0.0;e=+h[a>>3];c[b>>2]=~~e;d=+h...
  function $P (line 11) | function $P(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;i...
  function aQ (line 11) | function aQ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=+e;f=f|0;var g=0.0,h=0.0,i=0,...
  function bQ (line 11) | function bQ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=+e;f=f|0;var g=0.0,h=0.0,i=0,...
  function cQ (line 11) | function cQ(b,d){b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0.0,j=0.0,k=0.0;e=c[b+3...
  function dQ (line 11) | function dQ(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0...
  function eQ (line 11) | function eQ(a){a=a|0;var b=0,d=0,e=0;d=a+20|0;e=c[d>>2]|0;b=a+24|0;a=nb[...
  function fQ (line 11) | function fQ(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;e=a+20|0;f=Ew(c[e>>2]|0...
  function gQ (line 11) | function gQ(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0,g=0.0,i=0,j=0,k=0,l=0.0...
  function hQ (line 11) | function hQ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;f=0;e=c[a>>2]|0...
  function iQ (line 11) | function iQ(b){b=b|0;var d=0,e=0,f=0,g=0;d=W_(b)|0;if(d>>>0>=(c[46595]|0...
  function jQ (line 11) | function jQ(b,e,f){b=b|0;e=e|0;f=f|0;var g=0.0,i=0,j=0.0,k=0.0,m=0,n=0,o...
  function kQ (line 11) | function kQ(a,b,c,d,e,f){a=+a;b=+b;c=+c;d=d|0;e=e|0;f=f|0;var g=0.0,i=0....
  function lQ (line 11) | function lQ(a,b,c,d,e,f,g){a=+a;b=+b;c=+c;d=d|0;e=e|0;f=f|0;g=g|0;h[d>>3...
  function mQ (line 11) | function mQ(a,b,c,d,e,f){a=+a;b=+b;c=+c;d=d|0;e=e|0;f=f|0;var g=0.0,i=0....
  function nQ (line 11) | function nQ(b){b=b|0;var d=0,e=0;d=a[b>>0]|0;if(((d<<24>>24!=98?(e=b+1|0...
  function oQ (line 11) | function oQ(a,b){a=a|0;b=b|0;return O$(c[a>>2]|0,c[b>>2]|0)|0}
  function pQ (line 11) | function pQ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=l;l=l+16|0;e=f;g=W_(a...
  function qQ (line 11) | function qQ(a){a=a|0;c[46600]=a;return}
  function rQ (line 11) | function rQ(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;var f=0,g=0;f=l;l=l+208...
  function sQ (line 11) | function sQ(a,b,c,d,e,f,g){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;var i=0,j...
  function tQ (line 11) | function tQ(a){a=a|0;var b=0,c=0.0,d=0,e=0.0,f=0.0,g=0.0,i=0.0,j=0,k=0,l...
  function uQ (line 11) | function uQ(a,b,c){a=a|0;b=+b;c=+c;var d=0.0,e=0.0,f=0.0,g=0.0,i=0.0;d=c...
  function vQ (line 11) | function vQ(a,b,d){a=a|0;b=+b;d=+d;var e=0;c[46603]=100;e=uH(1600)|0;c[a...
  function wQ (line 11) | function wQ(a,b,d){a=a|0;b=+b;d=+d;var e=0,f=0;f=c[a>>2]|0;e=(c[a+4>>2]|...
  function xQ (line 11) | function xQ(a,b,d,e,f,g,i){a=a|0;b=+b;d=+d;e=+e;f=+f;g=+g;i=+i;var j=0,k...
  function yQ (line 11) | function yQ(a){a=a|0;var b=0;b=c[a>>2]|0;wQ(a,+h[b>>3],+h[b+8>>3]);c[a>>...
  function zQ (line 11) | function zQ(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0.0;d=+h[a+16>>3];b=+h[a+24...
  function AQ (line 11) | function AQ(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0.0,f=0.0,g=0.0,i=0.0,j=0.0...
  function BQ (line 11) | function BQ(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0.0,f=0.0,g=0.0,i=0.0,j=0.0...
  function CQ (line 11) | function CQ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0,j=0,k=0.0,m=0,n=0...
  function DQ (line 11) | function DQ(a){a=a|0;var d=0,e=0,f=0;d=NE(a)|0;e=c[d>>2]|0;a=c[e+4>>2]|0...
  function EQ (line 11) | function EQ(b){b=b|0;var d=0.0,e=0,f=0;switch(a[b+4>>0]|0){case 1:{e=c[b...
  function FQ (line 11) | function FQ(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0.0,p...
  function GQ (line 11) | function GQ(e,f,g){e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0.0,n=0.0,o=0,p=0...
  function HQ (line 11) | function HQ(a){a=a|0;var b=0;b=c[a+16>>2]|0;c[b+208>>2]=0;c[b+228>>2]=0;...
  function IQ (line 11) | function IQ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,i=0;i=a+16|0;f=c[...
  function JQ (line 11) | function JQ(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0...
  function KQ (line 11) | function KQ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0.0,i=0,j=0;j...
  function LQ (line 11) | function LQ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0.0,j=0.0;c[a...
  function MQ (line 11) | function MQ(e,f,g){e=e|0;f=f|0;g=g|0;var i=0,j=0.0,k=0.0,m=0,n=0,o=0,p=0...
  function NQ (line 11) | function NQ(f,g,i,j,k){f=f|0;g=g|0;i=i|0;j=j|0;k=k|0;var m=0.0,n=0,o=0.0...
  function OQ (line 11) | function OQ(e,f,g){e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0...
  function PQ (line 11) | function PQ(d,e){d=d|0;e=e|0;var f=0,g=0,h=0;h=c[d+16>>2]|0;f=h+208|0;if...
  function QQ (line 11) | function QQ(a,b){a=a|0;b=b|0;var d=0.0,e=0;e=c[b>>2]|0;if(e|0)c[a+16>>2]...
  function RQ (line 11) | function RQ(a,b,d,e){a=a|0;b=b|0;d=+d;e=+e;var f=0,g=0,i=0;f=l;l=l+64|0;...
  function SQ (line 11) | function SQ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0.0,k=0.0,m=0.0,n...
  function TQ (line 11) | function TQ(d,e,f,g,i,j,k,m){d=d|0;e=e|0;f=f|0;g=g|0;i=+i;j=j|0;k=k|0;m=...
  function UQ (line 11) | function UQ(a){a=a|0;D_(c[a>>2]|0);D_(c[a+4>>2]|0);D_(c[a+8>>2]|0);D_(c[...
  function VQ (line 11) | function VQ(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;if(a|0){j=a+4|0...
  function WQ (line 11) | function WQ(a){a=a|0;D_(c[a+32>>2]|0);D_(a);return}
  function XQ (line 11) | function XQ(b,d){b=b|0;d=d|0;switch(a[b+4>>0]|0){case 1:{YQ(c[b>>2]|0);b...
  function YQ (line 11) | function YQ(a){a=a|0;var b=0,d=0,e=0;e=a+84|0;if((c[a+100>>2]|0)==-1)yw(...
  function ZQ (line 11) | function ZQ(a){a=a|0;XQ(a+88|0,0);UQ(a);D_(a);return}
  function _Q (line 11) | function _Q(b,e,f){b=b|0;e=e|0;f=f|0;var g=0;b=c[(c[(c[b+16>>2]|0)+104>>...
  function $Q (line 11) | function $Q(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[a+4>>2]|0;if(!((d|0)!=0?(O$...
  function aR (line 11) | function aR(b,d){b=b|0;d=d|0;var e=0;e=c[b+4>>2]|0;if(!((e|0)!=0?(O$(e,d...
  function bR (line 11) | function bR(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return 0}
  function cR (line 11) | function cR(d){d=d|0;var f=0.0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r...
  function dR (line 11) | function dR(a){a=a|0;var b=0,d=0;d=l;l=l+16|0;b=d;if(a>>>0<21)a=c[55736+...
  function eR (line 11) | function eR(a,b,d){a=a|0;b=b|0;d=d|0;var f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0...
  function fR (line 11) | function fR(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,i=0;h=Rx(a,d,f,0,0)...
  function gR (line 11) | function gR(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=c[(c[a+16>>2]|0)+192>...
  function hR (line 11) | function hR(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=a+92|0;e=0;f=...
  function iR (line 11) | function iR(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;g=h+4|0;d=h;c[...
  function jR (line 11) | function jR(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=(c[b+16>>2]|0)+192|0;whil...
  function kR (line 11) | function kR(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0...
  function lR (line 11) | function lR(b,d){b=b|0;d=d|0;var e=0;a:do switch(pz(b)|0){case 0:{Ww(d,r...
  function mR (line 11) | function mR(b){b=b|0;var c=0,d=0;c=xx(b,134647)|0;if(!((c|0)!=0?(a[c>>0]...
  function nR (line 11) | function nR(f,g,i,j){f=f|0;g=g|0;i=i|0;j=j|0;var k=0,m=0,n=0,o=0,p=0,q=0...
  function oR (line 11) | function oR(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;h[a>>3]=b;h[a+8>>3]=c;h...
  function pR (line 11) | function pR(e,f,g){e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0.0,n=0.0,o=0,p=0...
  function qR (line 11) | function qR(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0.0,k=0.0,m=0,n=0,o=0...
  function rR (line 11) | function rR(e,f,g){e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0.0,m=0.0,n=0.0,o=0.0...
  function sR (line 11) | function sR(a,b){a=a|0;b=b|0;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>...
  function tR (line 11) | function tR(d,e){d=d|0;e=e|0;var f=0,g=0,h=0;g=b[d+4>>1]|0;f=0;while(1){...
  function uR (line 11) | function uR(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0...
  function vR (line 11) | function vR(f,g,i,j){f=f|0;g=g|0;i=i|0;j=j|0;var k=0.0,m=0.0,n=0,o=0,p=0...
  function wR (line 11) | function wR(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var f=0,g=0,h=0,i=0,j=0;j=d...
  function xR (line 11) | function xR(b,d){b=b|0;d=d|0;var e=0.0,f=0.0,g=0,i=0,j=0,k=0,m=0;m=l;l=l...
  function yR (line 11) | function yR(){return Cw(55820,c[4555]|0)|0}
  function zR (line 11) | function zR(a,b,d){a=a|0;b=b|0;d=d|0;d=uH(12)|0;c[d>>2]=c[b>>2];return d|0}
  function AR (line 11) | function AR(a,b,c){a=a|0;b=b|0;c=c|0;D_(b);return}
  function BR (line 11) | function BR(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;b=c[b>>2]|0;e=c[d>>2]|0;ret...
  function CR (line 11) | function CR(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=b;nb[c...
  function DR (line 11) | function DR(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=b;b=(n...
  function ER (line 11) | function ER(a){a=a|0;var b=0;if(!(c[46605]|0)){b=uH((a<<2)+4|0)|0;c[4660...
  function FR (line 11) | function FR(){D_(c[46605]|0);c[46605]=0;c[46617]=0;return}
  function GR (line 11) | function GR(){c[46617]=0;return}
  function HR (line 11) | function HR(){var a=0,b=0,d=0;b=c[46617]|0;d=c[46605]|0;a=1;while(1){if(...
  function IR (line 11) | function IR(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;f=c[46605]|0;g=c[f+(a<<...
  function JR (line 11) | function JR(a){a=a|0;var b=0,d=0;d=l;l=l+16|0;b=c[46617]|0;if((b|0)==(c[...
  function KR (line 11) | function KR(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;e=c[466...
  function LR (line 11) | function LR(){var a=0,b=0,d=0,e=0;b=c[46617]|0;if(!b)a=0;else{e=c[46605]...
  function MR (line 11) | function MR(a,b){a=a|0;b=b|0;c[a>>2]=b;IR(c[a+4>>2]|0);HR();return}
  function NR (line 11) | function NR(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0...
  function OR (line 11) | function OR(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+8|0;e=c[d>>2]|0;c[d>>2]=e+1...
  function PR (line 11) | function PR(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0.0,o...
  function QR (line 11) | function QR(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0.0,i=0,j=0,k...
  function RR (line 11) | function RR(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o...
  function SR (line 11) | function SR(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=nb[c[...
  function TR (line 11) | function TR(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0;a:do if((+h[b+64>>3]+-3...
  function UR (line 11) | function UR(a,b){a=a|0;b=b|0;var d=0,e=0,f=0.0,g=0.0,i=0.0,j=0,k=0,l=0,m...
  function VR (line 11) | function VR(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+16|0;i=...
  function WR (line 11) | function WR(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,f=0.0;e=+h[b+8>>3...
  function XR (line 11) | function XR(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,f=0.0;e=+h[b>>3];...
  function YR (line 11) | function YR(a){a=a|0;var b=0,d=0;d=a+8|0;D_(c[(c[d>>2]|0)+36>>2]|0);b=a+...
  function ZR (line 11) | function ZR(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0...
  function _R (line 11) | function _R(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0...
  function $R (line 11) | function $R(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=0;while(1){if((d|...
  function aS (line 11) | function aS(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0...
  function bS (line 11) | function bS(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,g=0.0;g=+h[(+...
  function cS (line 11) | function cS(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0;f=c[a+4>>2]|0;do if((c[...
  function dS (line 11) | function dS(a,b,d,e,f,g,i,j,k,l){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i...
  function eS (line 11) | function eS(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0...
  function fS (line 11) | function fS(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0.0,h=0,i=0,j=0.0...
  function gS (line 11) | function gS(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,g=0.0,i=0.0;g...
  function hS (line 11) | function hS(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0.0,l...
  function iS (line 11) | function iS(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0...
  function jS (line 11) | function jS(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0...
  function kS (line 11) | function kS(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,l=0...
  function lS (line 11) | function lS(a){a=a|0;var b=0.0;b=+(a|0);a=0;while(1){if(!(b>=1.0))break;...
  function mS (line 11) | function mS(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;d=+(a|0);c=d;a=0;while(1){i...
  function nS (line 11) | function nS(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0.0,j=0.0,k=0...
  function oS (line 11) | function oS(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;if(!(c[b+(a...
  function pS (line 11) | function pS(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0.0,i=0,j=0.0...
  function qS (line 11) | function qS(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0,g=0.0,i=0,j=0,k...
  function rS (line 11) | function rS(a,b,d){a=a|0;b=b|0;d=d|0;return c[b+((c[((d|0)==1?b+(a*56|0)...
  function sS (line 11) | function sS(a){a=a|0;var b=0,d=0,e=0;e=l;l=l+16|0;d=e;b=c[46625]|0;if((b...
  function tS (line 11) | function tS(){var a=0;a=c[46626]|0;if((a|0)<(c[46623]|0)){c[46626]=a+1;r...
  function uS (line 11) | function uS(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;c=+h[a+8>>3];d=+h[b+8>>3];i...
  function vS (line 11) | function vS(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;c=+h[a+8>>3];d=+h[b+8>>3];i...
  function wS (line 11) | function wS(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0...
  function xS (line 11) | function xS(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0;e=+h[b+8>>3];f=+h[d...
  function yS (line 11) | function yS(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0;e=+h[b+8>>3];f=+h[d...
  function zS (line 11) | function zS(a){a=a|0;var b=0;b=uH(8)|0;if(b|0){c[b+4>>2]=a;c[b>>2]=0}ret...
  function AS (line 11) | function AS(a,b){a=a|0;b=b|0;if(b){b=zS(b)|0;c[b>>2]=a;a=b}return a|0}
  function BS (line 11) | function BS(a){a=a|0;var b=0;do{b=a;a=c[a>>2]|0;D_(b)}while((a|0)!=0);re...
  function CS (line 11) | function CS(){var a=0;a=uH(1992)|0;if(a|0)c[a>>2]=DS(a)|0;return a|0}
  function DS (line 11) | function DS(a){a=a|0;var b=0;b=JS(a)|0;c[b+4>>2]=0;a=a+1972|0;c[a>>2]=(c...
  function ES (line 11) | function ES(a){a=a|0;FS(a,c[a>>2]|0);D_(c[a>>2]|0);D_(a);return 0}
  function FS (line 11) | function FS(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;g=a+1980|0;h=a+...
  function GS (line 11) | function GS(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;if(!b)qa(13...
  function HS (line 11) | function HS(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0...
  function IS (line 11) | function IS(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0...
  function JS (line 11) | function JS(a){a=a|0;a=a+1968|0;c[a>>2]=(c[a>>2]|0)+1;a=C_(1288)|0;KS(a)...
  function KS (line 11) | function KS(a){a=a|0;var b=0;c[a>>2]=0;c[a+4>>2]=-1;b=0;while(1){if((b|0...
  function LS (line 11) | function LS(a){a=a|0;QS(a);c[a+16>>2]=0;return}
  function MS (line 11) | function MS(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+32|0;g=...
  function NS (line 11) | function NS(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0...
  function OS (line 11) | function OS(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;if(!b)qa(13...
  function PS (line 11) | function PS(a,b){a=a|0;b=b|0;if(!((a|0)!=0&b>>>0<64))qa(135698,135636,20...
  function QS (line 11) | function QS(a){a=a|0;var b=0;b=0;while(1){if((b|0)==4)break;c[a+(b<<2)>>...
  function RS (line 11) | function RS(a){a=a|0;var b=0,d=0,e=0;e=l;l=l+16|0;d=e;c[d>>2]=1;c[d+8>>2...
  function SS (line 11) | function SS(a){a=a|0;var b=0,d=0,e=0;if(!a)qa(135739,135741,128,135753);...
  function TS (line 11) | function TS(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;g=l;l=l...
  function US (line 11) | function US(a,b){a=a|0;b=b|0;var d=0,e=0;if((a|0)!=0&(b|0)!=0)d=0;else q...
  function VS (line 11) | function VS(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0;if(!b)q...
  function WS (line 11) | function WS(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;h=l;l=l...
  function XS (line 11) | function XS(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0...
  function YS (line 11) | function YS(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;if(!b)qa(135797,135...
  function ZS (line 11) | function ZS(a){a=a|0;var b=0,d=0,e=0,f=0;d=l;l=l+16|0;e=d;c[a+1848>>2]=0...
  function _S (line 11) | function _S(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0...
  function $S (line 11) | function $S(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|...
  function aT (line 11) | function aT(){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=...
  function bT (line 11) | function bT(b,d){b=b|0;d=d|0;var e=0;e=uH(8)|0;a[e+4>>0]=d;c[e>>2]=b;ret...
  function cT (line 11) | function cT(){var a=0,b=0;a=c[46632]|0;b=c[46630]|0;if(b|0){XQ(b,1);c[46...
  function dT (line 11) | function dT(){var a=0,d=0,e=0,f=0,g=0,h=0;e=c[46636]|0;f=uH(40)|0;if(Ew(...
  function eT (line 11) | function eT(b){b=b|0;var d=0,e=0,f=0;e=uH(64)|0;f=b+4|0;d=c[f>>2]|0;if(d...
  function fT (line 11) | function fT(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=uH(32)|0;j=c[4663...
  function gT (line 11) | function gT(a){a=a|0;var b=0,d=0.0,e=0,f=0,g=0,i=0,j=0;j=l;l=l+32|0;g=j;...
  function hT (line 11) | function hT(){var a=0,b=0;b=c[46633]|0;a=c[b+4>>2]|0;D_(b);c[46633]=a;re...
  function iT (line 11) | function iT(b){b=b|0;var c=0;while(1){c=a[b>>0]|0;if(!(c<<24>>24)){b=0;b...
  function jT (line 11) | function jT(){var b=0,d=0,e=0;e=Cw(55964,c[4554]|0)|0;b=c[46632]|0;d=uH(...
  function kT (line 11) | function kT(){var a=0;a=c[(c[46632]|0)+84>>2]|0;return nb[c[a>>2]&63](a,...
  function lT (line 11) | function lT(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=uH(16)|0;f=c[4663...
  function mT (line 11) | function mT(a,b,c){a=a|0;b=b|0;c=c|0;D_(b);return}
  function nT (line 11) | function nT(a,b,d){a=a|0;b=b|0;d=d|0;yw(c[b+8>>2]|0)|0;D_(b);return}
  function oT (line 11) | function oT(a,b,d){a=a|0;b=b|0;d=d|0;tT(c[b+8>>2]|0);D_(b);return}
  function pT (line 11) | function pT(a){a=a|0;yw(c[a+84>>2]|0)|0;UQ(a);D_(a);return}
  function qT (line 11) | function qT(a,b,d){a=a|0;b=b|0;d=d|0;D_(c[b+8>>2]|0);D_(b);return}
  function rT (line 11) | function rT(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=d+12|0;a=b[g>>1]|...
  function sT (line 11) | function sT(){var a=0,b=0;a=c[46633]|0;while(1){b=c[a+4>>2]|0;if(!b)brea...
  function tT (line 11) | function tT(b){b=b|0;var d=0;d=b+88|0;switch(a[b+92>>0]|0){case 1:{pT(c[...
  function uT (line 11) | function uT(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=l;l=l+160|0;e=f+8...
  function vT (line 11) | function vT(b){b=b|0;var d=0,e=0,f=0;e=l;l=l+16|0;d=e;if(!(a[186581]|0))...
  function wT (line 11) | function wT(){return dX(c[46637]|0)|0}
  function xT (line 11) | function xT(){var b=0,d=0,e=0,f=0;f=l;l=l+16|0;e=f;b=c[46640]|0;c[b+4>>2...
  function yT (line 11) | function yT(b,e,f){b=b|0;e=e|0;f=f|0;c[46640]=e;Tw(186564,128,0);c[46638...
  function zT (line 11) | function zT(b,d,e){b=b|0;d=d|0;e=e|0;do if(!(O$(d,137521)|0)){c[46629]=D...
  function AT (line 11) | function AT(b,d){b=b|0;d=d|0;do if(!(O$(d,137521)|0)){c[46639]=264;a[186...
  function BT (line 11) | function BT(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;if(a[186582]|0){b=0...
  function CT (line 11) | function CT(b){b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d;c[46639]=268;a[186...
  function DT (line 11) | function DT(b){b=b|0;var d=0;d=uH(120)|0;c[d+100>>2]=-1;a[d+88>>0]=-1;IT...
  function ET (line 11) | function ET(a){a=a|0;var c=0;c=uH(104)|0;b[c+80>>1]=1;b[c+82>>1]=1;IT(c,...
  function FT (line 11) | function FT(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=l;l=l+32|0;e=f;c[e>>2...
  function GT (line 11) | function GT(a){a=a|0;c[46629]=0;IT(186516,56088,1,a,137670);return}
  function HT (line 11) | function HT(a){a=a|0;var b=0;b=uH(40)|0;IT(b,56072,2,a,137616);return b|0}
  function IT (line 11) | function IT(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0...
  function JT (line 11) | function JT(a,b){a=a|0;b=b|0;return O$(c[a>>2]|0,c[b>>2]|0)|0}
  function KT (line 11) | function KT(a,b){a=a|0;b=b|0;c[a+36>>2]=n1(b)|0;return 0}
  function LT (line 11) | function LT(a,b){a=a|0;b=b|0;c[a+32>>2]=n1(b)|0;return 0}
  function MT (line 11) | function MT(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;g=i;f=...
  function NT (line 11) | function NT(a,b){a=a|0;b=b|0;c[a+4>>2]=b;return 0}
  function OT (line 11) | function OT(a,b){a=a|0;b=b|0;c[a>>2]=b;return 0}
  function PT (line 11) | function PT(a,b){a=a|0;b=b|0;var d=0,e=0;e=l;l=l+16|0;d=e;if(!(QT(b,1377...
  function QT (line 11) | function QT(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0...
  function RT (line 11) | function RT(d,e){d=d|0;e=e|0;var f=0,g=0,h=0;h=l;l=l+16|0;f=h;switch((I0...
  function ST (line 11) | function ST(d,e){d=d|0;e=e|0;var f=0,g=0,h=0;h=l;l=l+16|0;f=h;switch((I0...
  function TT (line 11) | function TT(a,b){a=a|0;b=b|0;c[a+20>>2]=n1(b)|0;return 0}
  function UT (line 11) | function UT(d,e){d=d|0;e=e|0;var f=0,g=0;g=l;l=l+16|0;f=g;if(!(QT(e,1384...
  function VT (line 11) | function VT(d,e){d=d|0;e=e|0;var f=0,g=0;g=l;l=l+16|0;f=g;if(!(QT(e,1384...
  function WT (line 11) | function WT(d,e){d=d|0;e=e|0;var f=0,g=0;g=l;l=l+16|0;f=g;if(!(QT(e,1384...
  function XT (line 11) | function XT(a,b){a=a|0;b=b|0;c[a+24>>2]=n1(b)|0;return 0}
  function YT (line 11) | function YT(a,d){a=a|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+16|0;f=g;e=g+4|0;do...
  function ZT (line 11) | function ZT(a,e){a=a|0;e=e|0;var f=0,g=0,h=0;h=l;l=l+16|0;f=h;switch((I0...
  function _T (line 11) | function _T(a,b){a=a|0;b=b|0;var d=0,e=0;e=l;l=l+16|0;d=e;if(!(QT(b,1382...
  function $T (line 11) | function $T(a,d){a=a|0;d=d|0;var e=0,f=0;f=l;l=l+16|0;e=f;if(!(QT(d,1382...
  function aU (line 11) | function aU(a,b){a=a|0;b=b|0;c[a>>2]=n1(b)|0;return 0}
  function bU (line 11) | function bU(a,b){a=a|0;b=b|0;c[a+16>>2]=n1(b)|0;return 0}
  function cU (line 11) | function cU(a,b){a=a|0;b=b|0;c[a+4>>2]=n1(b)|0;return 0}
  function dU (line 11) | function dU(a,d){a=a|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+16|0;f=g;e=g+4|0;do...
  function eU (line 11) | function eU(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;i=...
  function fU (line 11) | function fU(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;j=...
  function gU (line 11) | function gU(a,b){a=a|0;b=b|0;c[a+8>>2]=n1(b)|0;return 0}
  function hU (line 11) | function hU(a,b){a=a|0;b=b|0;c[a+12>>2]=n1(b)|0;return 0}
  function iU (line 11) | function iU(d,e){d=d|0;e=e|0;var f=0,g=0,h=0;h=l;l=l+16|0;f=h;switch((I0...
  function jU (line 11) | function jU(a,d){a=a|0;d=d|0;var e=0,f=0;f=l;l=l+16|0;e=f;if(!(QT(d,1380...
  function kU (line 11) | function kU(d,e){d=d|0;e=e|0;var f=0,g=0,h=0;h=l;l=l+16|0;f=h;switch((I0...
  function lU (line 11) | function lU(b,d){b=b|0;d=d|0;var e=0,f=0;f=l;l=l+16|0;e=f;if(!(QT(d,1386...
  function mU (line 11) | function mU(b,d){b=b|0;d=d|0;var e=0,f=0;f=l;l=l+16|0;e=f;if((a[d>>0]|0)...
  function nU (line 11) | function nU(b,d){b=b|0;d=d|0;var e=0,f=0;f=l;l=l+16|0;e=f;if((a[d>>0]|0)...
  function oU (line 11) | function oU(){var b=0;b=(a[186581]|a[186580])<<24>>24;JV(c[46637]|0);Xw(...
  function pU (line 11) | function pU(){var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+16|0;i=j;c[466...
  function qU (line 11) | function qU(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;f=h;d=b+1|0;e=...
  function rU (line 11) | function rU(b){b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+16|0;i=...
  function sU (line 11) | function sU(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0...
  function tU (line 11) | function tU(a){a=a|0;if(!a)a=0;else a=C_(a)|0;return a|0}
  function uU (line 11) | function uU(a){a=a|0;var b=0,d=0;D_(c[a+8>>2]|0);D_(c[a+12>>2]|0);D_(c[a...
  function vU (line 11) | function vU(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0...
  function wU (line 11) | function wU(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;j=l...
  function xU (line 11) | function xU(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0...
  function yU (line 11) | function yU(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0.0,g=0.0,i=0.0;d=+h[b>>3];...
  function zU (line 11) | function zU(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+32|0;e=f+16|0;d=f;if((c...
  function AU (line 11) | function AU(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0...
  function BU (line 11) | function BU(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;c=+h[b>>3]-+h[a>>3];d=+h[b+...
  function CU (line 11) | function CU(a){a=+a;var b=0.0;b=1.0-a;return +(b*b*(a*3.0))}
  function DU (line 11) | function DU(a,b,d){a=a|0;b=b|0;d=+d;var e=0;h[b>>3]=+h[b>>3]*d;e=b+8|0;h...
  function EU (line 11) | function EU(a){a=+a;return +(a*a*3.0*(1.0-a))}
  function FU (line 11) | function FU(a,b,d,e,f,g,i,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0...
  function GU (line 11) | function GU(a,b,d,e,f,g,i,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;j...
  function HU (line 11) | function HU(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;h[b>>3]=+h[b>>3]+ +h[d>>3];...
  function IU (line 11) | function IU(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;h[b>>3]=+h[b>>3]-+h[d>>3];e...
  function JU (line 11) | function JU(a){a=+a;a=1.0-a;return +(a*a*a)}
  function KU (line 11) | function KU(a){a=+a;return +(a*a*a)}
  function LU (line 11) | function LU(a,b){a=a|0;b=b|0;var c=0.0,d=0,e=0.0,f=0.0,g=0;c=0.0;d=1;whi...
  function MU (line 11) | function MU(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0...
  function NU (line 11) | function NU(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0,j=0.0,k=0,m=0...
  function OU (line 11) | function OU(a,b,c,d,e){a=+a;b=+b;c=+c;d=+d;e=e|0;h[e+24>>3]=d-a+(b-c)*3....
  function PU (line 11) | function PU(a,b,d){a=+a;b=b|0;d=d|0;var e=0;if(a>=0.0&a<=1.0){e=c[d>>2]|...
  function QU (line 11) | function QU(a,b){a=a|0;b=b|0;return +(+h[b+8>>3]*+h[a+8>>3]+ +h[b>>3]*+h...
  function RU (line 11) | function RU(a){a=+a;var b=0.0;b=1.0-a;return +(b*b*(b+a*3.0))}
  function SU (line 11) | function SU(a){a=+a;return +(a*a*((1.0-a)*3.0+a))}
  function TU (line 11) | function TU(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0.0,j=0,k=0,m=0,n...
  function UU (line 11) | function UU(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=l;l=l+64|0;e=h+48|0;g...
  function VU (line 11) | function VU(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+32|0;e=f+16|0;d=f;if((c...
  function WU (line 11) | function WU(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0;d=+h[b+8>>3];e=+h[b...
  function XU (line 11) | function XU(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=...
  function YU (line 11) | function YU(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0...
  function ZU (line 11) | function ZU(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=c[46743]|0;d=0;e=0;while(...
  function _U (line 11) | function _U(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=c[46743]|0;e=d+(a*52|0)|0...
  function $U (line 11) | function $U(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+32|0;e=f+16|0;d=f;if((c...
  function aV (line 11) | function aV(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=c[46738]|0;e=c[46737]|0;f...
  function bV (line 11) | function bV(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=c[46739]|0;g=c[46735]|0;b...
  function cV (line 11) | function cV(a,b){a=a|0;b=b|0;c[((a|0)==1?186952:186948)>>2]=b;return}
  function dV (line 11) | function dV(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0...
  function eV (line 11) | function eV(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=c[46734]|0;f=...
  function fV (line 11) | function fV(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+32|0;e=f+16|0;d=f;if((c...
  function gV (line 11) | function gV(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;f=WU(a,...
  function hV (line 11) | function hV(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,g=0.0;e=+h[a>...
  function iV (line 11) | function iV(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0,j=0.0,k=0...
  function jV (line 11) | function jV(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var...
  function kV (line 11) | function kV(a,b){a=a|0;b=b|0;var c=0,d=0.0,e=0.0,f=0.0,g=0.0,i=0.0,j=0;d...
  function lV (line 11) | function lV(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;c=+h[a+16>>3];do if(!(c<1.0...
  function mV (line 11) | function mV(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;d=+h[a+8>>3];c=+h[a>>3];if(...
  function nV (line 11) | function nV(a){a=a|0;D_(c[a>>2]|0);D_(a);return}
  function oV (line 11) | function oV(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0...
  function pV (line 11) | function pV(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0;d=+h[b+8>>3];e=+h[b...
  function qV (line 11) | function qV(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0;e=+h[a>>3];f=...
  function rV (line 11) | function rV(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0...
  function sV (line 11) | function sV(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;c=+h[a>>3]-+h[b>>3];d=+h[a+...
  function tV (line 11) | function tV(a){a=a|0;c[a+24>>2]=uV(c[a+4>>2]|0)|0;vV(a);return}
  function uV (line 11) | function uV(a){a=a|0;var b=0,d=0,e=0,f=0;e=a+2|0;f=C_(e<<2)|0;b=E_(O(a,a...
  function vV (line 11) | function vV(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0...
  function wV (line 11) | function wV(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0,g=0;e=l;l=l+32|0;f=e+16|0...
  function xV (line 11) | function xV(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0...
  function yV (line 11) | function yV(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var...
  function zV (line 11) | function zV(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;g=l...
  function AV (line 11) | function AV(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,i=0,j=0,k=0,m=0,n...
  function BV (line 11) | function BV(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0...
  function CV (line 11) | function CV(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0...
  function DV (line 11) | function DV(a){a=a|0;return EV(a,0,0)|0}
  function EV (line 11) | function EV(a,b,c){a=a|0;b=b|0;c=c|0;return FV(a,b,c,0)|0}
  function FV (line 11) | function FV(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;if(!d){...
  function GV (line 11) | function GV(b){b=b|0;var d=0;d=kb[c[b>>2]&63](188)|0;if(d|0){HV(d+80|0,b...
  function HV (line 11) | function HV(a,b){a=a|0;b=b|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2...
  function IV (line 11) | function IV(d,e){d=d|0;e=e|0;var f=0,g=0,h=0;c[d+276>>2]=56;EZ(d+252|0);...
  function JV (line 11) | function JV(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;if(b|0){e=b+364|0;g=b+20|0;...
  function KV (line 11) | function KV(a,b){a=a|0;b=b|0;var d=0;b=b+20|0;while(1){if(!a)break;d=c[a...
  function LV (line 11) | function LV(a){a=a|0;var b=0,d=0,e=0;d=a+20|0;b=c[a>>2]|0;while(1){if(!b...
  function MV (line 11) | function MV(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=l;l=l+16|0;f=...
  function NV (line 11) | function NV(a,b){a=a|0;b=b|0;var d=0;d=c[b>>2]|0;c[a>>2]=d;c[a+4>>2]=d+(...
  function OV (line 11) | function OV(a){a=a|0;var b=0,d=0,e=0;d=c[a+4>>2]|0;e=c[a>>2]|0;do{if((e|...
  function PV (line 11) | function PV(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;d=a+8|0;e=a+16|0;b=0;while(...
  function QV (line 11) | function QV(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=SV(a)|0;if(!f){c[...
  function RV (line 11) | function RV(b,d){b=b|0;d=d|0;var e=0,f=0;e=0;do{f=e;e=e+1|0}while((a[b+f...
  function SV (line 11) | function SV(b){b=b|0;var d=0;d=b+228|0;if(!(nb[(a[b+232>>0]<<24>>24?35:3...
  function TV (line 11) | function TV(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;g=l;l=l...
  function UV (line 11) | function UV(b,e,f,g,h,i,j,k){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k...
  function VV (line 11) | function VV(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0...
  function WV (line 11) | function WV(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;do if(!(cW(b,d,e,f)|0))d=0;...
  function XV (line 11) | function XV(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;e=a+4|0;b=c[e>>2]|0;a:do if...
  function YV (line 11) | function YV(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0...
  function ZV (line 11) | function ZV(b){b=b|0;var c=0,d=0,e=0;e=b;c=b;while(1){d=a[e>>0]|0;if(!(d...
  function _V (line 11) | function _V(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;d=rW(b,0,c[b+144>>2]|0,d,e,...
  function $V (line 11) | function $V(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=c[a+352>>2]|0...
  function aW (line 11) | function aW(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0...
  function bW (line 11) | function bW(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;g=b+12|0;h=b+8|0;wh...
  function cW (line 11) | function cW(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l...
  function dW (line 11) | function dW(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0...
  function eW (line 11) | function eW(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;b=a+4|0...
  function fW (line 11) | function fW(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0;b=L...
  function gW (line 11) | function gW(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0...
  function hW (line 11) | function hW(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0...
  function iW (line 11) | function iW(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0...
  function jW (line 11) | function jW(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=l;l=l+16|0;g=...
  function kW (line 11) | function kW(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=c[a+352>>2]|0...
  function lW (line 11) | function lW(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0...
  function mW (line 11) | function mW(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=l;l=l+16|0;d=g+4|0;e=g;b=...
  function nW (line 11) | function nW(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=a...
  function oW (line 11) | function oW(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=a+68|0;if...
  function pW (line 11) | function pW(b){b=b|0;var c=0,d=0,e=0;a:while(1){switch(a[b>>0]|0){case 0...
  function qW (line 11) | function qW(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0...
  function rW (line 11) | function rW(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var...
  function sW (line 11) | function sW(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0...
  function tW (line 11) | function tW(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0...
  function uW (line 11) | function uW(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0...
  function vW (line 11) | function vW(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=a+104|0;f=a+372|0...
  function wW (line 11) | function wW(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0...
  function xW (line 11) | function xW(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0...
  function yW (line 11) | function yW(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=l;l=l+16|0;g=...
  function zW (line 11) | function zW(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;d=rW(b,1,c[b+144>>2]|0,d,e,...
  function AW (line 11) | function AW(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=a...
  function BW (line 11) | function BW(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;f=b+12|0;g=b+8|0;wh...
  function CW (line 11) | function CW(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0...
  function DW (line 11) | function DW(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0...
  function EW (line 11) | function EW(a,b){a=a|0;b=b|0;var d=0;d=b;c[d>>2]=0;c[d+4>>2]=0;b=b+8|0;c...
  function FW (line 11) | function FW(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=b;g=c[d+4>>2]^1936682...
  function GW (line 11) | function GW(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0...
  function HW (line 11) | function HW(b){b=b|0;var c=0;c=0;while(1){if(!(a[b>>0]|0))break;c=c+1|0;...
  function IW (line 11) | function IW(a){a=a|0;var b=0,e=0,f=0,g=0,h=0,i=0;f=a+32|0;h=(c[a+40>>2]|...
  function JW (line 11) | function JW(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0...
  function KW (line 11) | function KW(a){a=a|0;var b=0;while(1){b=c[a+472>>2]|0;if(!b)break;else a...
  function LW (line 11) | function LW(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0...
  function MW (line 11) | function MW(a){a=a|0;var b=0;b=a+8|0;return ((a|0)<1?0:(b|0)>0?b:0)|0}
  function NW (line 11) | function NW(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=l;l=l+80|0;d=c+16|0;e=c;E...
  function OW (line 11) | function OW(b,c){b=b|0;c=c|0;var d=0;while(1){d=a[b>>0]|0;if(d<<24>>24!=...
  function PW (line 11) | function PW(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+104...
  function QW (line 11) | function QW(b,d){b=b|0;d=d|0;a[b+4>>0]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[b>>2...
  function RW (line 11) | function RW(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0...
  function SW (line 11) | function SW(a,b){a=a|0;b=b|0;var d=0,e=0;if(a|0?(d=a+4|0,e=(c[d>>2]|0)==...
  function TW (line 11) | function TW(a,b,d){a=a|0;b=b|0;d=d|0;if(a|0){c[a+52>>2]=b;c[a+56>>2]=d}r...
  function UW (line 11) | function UW(a,b){a=a|0;b=b|0;if(a|0)c[a+60>>2]=b;return}
  function VW (line 11) | function VW(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;g=(b|0)...
  function WW (line 11) | function WW(b){b=b|0;var d=0;d=b+492|0;if(!(c[d>>2]|0))c[d>>2]=_W()|0;if...
  function XW (line 11) | function XW(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;return c[a+280>>2]|0}
  function YW (line 11) | function YW(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0...
  function ZW (line 11) | function ZW(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;a:do if...
  function _W (line 11) | function _W(){var a=0,b=0,d=0;b=l;l=l+16|0;a=b;if(!($W(a)|0)){d=bX()|0;d...
  function $W (line 11) | function $W(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=l;l=l+16|0;e=X_(139283,0,...
  function aX (line 11) | function aX(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=l;l=l+16|0;e=f;d=Ta(13936...
  function bX (line 11) | function bX(){var a=0,b=0;b=l;l=l+16|0;a=b;if(!(Ua(a|0,0)|0)){l=b;return...
  function cX (line 11) | function cX(a){a=a|0;if(!a)a=41;else a=c[a+280>>2]|0;return a|0}
  function dX (line 11) | function dX(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;if(!a)a=0;else{b=a+284|0;d=...
  function eX (line 11) | function eX(a){a=a|0;do switch(a|0){case 41:{a=139420;break}case 1:{a=14...
  function fX (line 11) | function fX(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,i=0;e=c[b>>2]|0;f=0;a:w...
  function gX (line 11) | function gX(b,c){b=b|0;c=c|0;do if((b|0)>=0){if((b|0)<128){a[c>>0]=b;b=1...
  function hX (line 11) | function hX(){return 1908}
  function iX (line 11) | function iX(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0...
  function jX (line 11) | function jX(b){b=b|0;var c=0;switch(b>>8|0){case 223:case 222:case 221:c...
  function kX (line 11) | function kX(a,b){a=a|0;b=b|0;a=lb[c[a+364>>2]&127](c[a+368>>2]|0,b)|0;if...
  function lX (line 11) | function lX(a,b){a=a|0;b=b|0;a=lb[c[a+364>>2]&127](c[a+368>>2]|0,b)|0;if...
  function mX (line 11) | function mX(a,b){a=a|0;b=b|0;a=lb[c[a+364>>2]&127](c[a+368>>2]|0,b)|0;if...
  function nX (line 11) | function nX(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0...
  function oX (line 11) | function oX(a,e,f,g,h){a=a|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0...
  function pX (line 11) | function pX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0...
  function qX (line 11) | function qX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0...
  function rX (line 11) | function rX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;a:d...
  function sX (line 11) | function sX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0...
  function tX (line 11) | function tX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;do ...
  function uX (line 11) | function uX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;do ...
  function vX (line 11) | function vX(b,c,d,e){b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;f=d;b=c;while(1...
  function wX (line 11) | function wX(b,c){b=b|0;c=c|0;var e=0,f=0;f=b+72|0;b=c;a:while(1){switch(...
  function xX (line 11) | function xX(b,c){b=b|0;c=c|0;b=b+72|0;a:while(1){switch(a[b+(d[c>>0]|0)>...
  function yX (line 11) | function yX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0...
  function zX (line 11) | function zX(b,c){b=b|0;c=c|0;var d=0,e=0;b=c+2|0;d=a[b>>0]|0;a:do if(d<<...
  function AX (line 11) | function AX(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;a:do switch(d-c|0){case 2:{...
  function BX (line 11) | function BX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=b+72|0;i=g+4|...
  function CX (line 11) | function CX(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=e+-1|0;b=b+72...
  function DX (line 11) | function DX(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0;i=h...
  function EX (line 11) | function EX(a,e,f,g,h){a=a|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0;while(1...
  function FX (line 11) | function FX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;k=f...
  function GX (line 11) | function GX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=f...
  function HX (line 11) | function HX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;i=f;a:do if((i-...
  function IX (line 11) | function IX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0;a:do if((f-e|0)>0){...
  function JX (line 11) | function JX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0...
  function KX (line 11) | function KX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;a:d...
  function LX (line 11) | function LX(b,d,e){b=b|0;d=d|0;e=e|0;if((d-b|0)>5){d=0;while(1){if((d|0)...
  function MX (line 11) | function MX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0...
  function NX (line 11) | function NX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=f...
  function OX (line 11) | function OX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0...
  function PX (line 11) | function PX(b,d,e){b=b|0;d=d|0;e=e|0;c[e>>2]=11;a:do if((d-b|0)==3){swit...
  function QX (line 11) | function QX(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0...
  function RX (line 11) | function RX(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=f;a:do if...
  function Rv (line 12) | function Rv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0...
  function Sv (line 12) | function Sv(a){a=a|0;return c[a+8>>2]|0}
  function Tv (line 12) | function Tv(a,b){a=a|0;b=b|0;Uv(a,Ov(b)|0);D_(b);return}
  function Uv (line 12) | function Uv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=c[b>>2]|0;if(d|0){e=a+4|0...
  function Vv (line 12) | function Vv(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0.0,g=0.0,i=0.0,j=0.0,k=0,...
  function Wv (line 12) | function Wv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=c[b+8>>2]|0;d=Sy(f)|0;whi...
  function Xv (line 12) | function Xv(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|...
  function Yv (line 12) | function Yv(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+144|0;b=f;e=f+8|0;d=c[4...
  function Zv (line 12) | function Zv(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;if((ay(a)|0)!=1){d=Sy(a)|0;...
  function _v (line 12) | function _v(a,b){a=a|0;b=b|0;var d=0;d=Sy(a)|0;while(1){if(!d)break;if(!...
  function $v (line 12) | function $v(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=l;l=l+16|0;f=g;d=...
  function aw (line 12) | function aw(a){a=a|0;var b=0.0,d=0.0,e=0.0,f=0;b=0.0;while(1){a=c[a>>2]|...
  function bw (line 12) | function bw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;k=r...
  function cw (line 12) | function cw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=c...
  function dw (line 12) | function dw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=Kv()|0;e=Ex(a...
  function ew (line 12) | function ew(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0...
  function fw (line 12) | function fw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=(c[(c[b+16>>2]|0)...
  function gw (line 12) | function gw(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;k=l...
  function hw (line 12) | function hw(a){a=a|0;var b=0,c=0;c=jw()|0;b=Sy(a)|0;while(1){if(!b)break...
  function iw (line 12) | function iw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0...
  function jw (line 12) | function jw(){return Cw(18136,c[4555]|0)|0}
  function kw (line 12) | function kw(a,b,d){a=a|0;b=b|0;d=d|0;d=vH(16)|0;c[d+12>>2]=0;c[d+8>>2]=c...
  function lw (line 12) | function lw(a,b,c){a=a|0;b=b|0;c=c|0;D_(b);return}
  function mw (line 12) | function mw(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;b=c[b>>2]|0;e=c[d>>2]|0;ret...
  function nw (line 12) | function nw(a){a=a|0;yw(a)|0;return}
  function ow (line 12) | function ow(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;f=d;e=b+16|0;c...
  function pw (line 12) | function pw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;g=h;f=...
  function qw (line 12) | function qw(a){a=a|0;var b=0,d=0,e=0,f=0;d=nb[c[a>>2]&63](a,0,128)|0;if(...
  function rw (line 12) | function rw(){return Cw(18172,c[4555]|0)|0}
  function sw (line 12) | function sw(a,b,d){a=a|0;b=b|0;d=d|0;d=vH(12)|0;c[d+8>>2]=c[b+8>>2];retu...
  function tw (line 12) | function tw(a,b,c){a=a|0;b=b|0;c=c|0;D_(b);return}
  function uw (line 12) | function uw(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;b=c[b>>2]|0;e=c[d>>2]|0;ret...
  function vw (line 12) | function vw(a){a=a|0;yw(a)|0;return}
  function ww (line 12) | function ww(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e+8>>2]=b;nb...
  function xw (line 12) | function xw(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e+8>>2]=b;nb...
  function yw (line 12) | function yw(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;do if((a|0)!=0?(c[a+24>...
  function zw (line 12) | function zw(a){a=a|0;var b=0,d=0,e=0;e=a+8|0;b=c[e>>2]|0;d=c[b>>2]|0;a:d...
  function Aw (line 12) | function Aw(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=a+8|0;a=c[g>>2]|0;b=c[a>>...
  function Bw (line 12) | function Bw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0...
  function Cw (line 12) | function Cw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+16|...
  function Dw (line 12) | function Dw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;f=c[c[a+16>...
  function Ew (line 12) | function Ew(a){a=a|0;var b=0,d=0,e=0;b=a+8|0;d=c[b>>2]|0;if(c[d>>2]&4096...
  function Fw (line 12) | function Fw(a){a=a|0;var b=0;if(!a)return 0;else{b=Fw(c[a+4>>2]|0)|0;ret...
  function Gw (line 12) | function Gw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0...
  function Hw (line 12) | function Hw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;if(c[c[a+8>>2]>>2]&4096...
  function Iw (line 12) | function Iw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0...
  function Jw (line 12) | function Jw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=a+32|0;f=nb[c...
  function Kw (line 12) | function Kw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0...
  function Lw (line 12) | function Lw(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;a=(c|0)==0;do if(!b)if(a)a=...
  function Mw (line 12) | function Mw(b,c,e){b=b|0;c=c|0;e=e|0;var f=0,g=0,h=0;g=c;if((e|0)>=1){h=...
  function Nw (line 12) | function Nw(a){a=a|0;var b=0;b=c[46164]|0;c[46164]=a;return b|0}
  function Ow (line 12) | function Ow(a){a=a|0;var b=0;b=c[46165]|0;c[46165]=a;return b|0}
  function Pw (line 12) | function Pw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;c[f>>2...
  function Qw (line 12) | function Qw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;g=l;l=l+16|...
  function Rw (line 12) | function Rw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;if((c[46169]|0)==0?(f=C...
  function Sw (line 12) | function Sw(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=b;Qw(1...
  function Tw (line 12) | function Tw(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;if(!e){e=(d|0)==0?1024:d;d=...
  function Uw (line 12) | function Uw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=a+8|0;f=c[a>>...
  function Vw (line 12) | function Vw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=a+4|0;e=c[f>>2]|0;if(...
  function Ww (line 12) | function Ww(a,b){a=a|0;b=b|0;return Vw(a,b,W_(b)|0)|0}
  function Xw (line 12) | function Xw(a){a=a|0;if(c[a+12>>2]|0)D_(c[a>>2]|0);return}
  function Yw (line 12) | function Yw(a){a=a|0;var b=0,e=0;b=a+4|0;e=c[b>>2]|0;if(e>>>0>(c[a>>2]|0...
  function Zw (line 12) | function Zw(a,b,d){a=a|0;b=b|0;d=d|0;Qz(c[46171]|0,c[b+8>>2]|0)|0;Qz(c[4...
  function _w (line 12) | function _w(a,b){a=a|0;b=b|0;var c=0;c=yz(a,93334,0)|0;if((b|0)!=0&(c|0)...
  function $w (line 12) | function $w(a){a=a|0;var b=0,c=0,d=0;d=fz(a)|0;jB(d,d,104,0,1)|0;c=Sy(d)...
  function ax (line 12) | function ax(b){b=b|0;var c=0;c=b+24|0;a[c>>0]=a[c>>0]|64;hx(b);c=yA(b)|0...
  function bx (line 12) | function bx(a,b){a=a|0;b=b|0;var d=0;d=dx(b)|0;if(!((d|0)!=0?(c[d+8>>2]|...
  function cx (line 12) | function cx(a,b){a=a|0;b=b|0;var d=0;d=dx(b)|0;if(!((d|0)!=0?(c[d+8>>2]|...
  function dx (line 12) | function dx(a){a=a|0;return yz(a,93322,0)|0}
  function ex (line 12) | function ex(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=Az(b,93322,16,0)|0;f=fx(a...
  function fx (line 12) | function fx(a,b){a=a|0;b=b|0;var d=0,e=0;e=l;l=l+16|0;d=e;a=_w(a,0)|0;a:...
  function gx (line 12) | function gx(a){a=a|0;var b=0;b=fz(ez(a)|0)|0;a=fx(b,c[a>>2]&3)|0;if(!a)a...
  function hx (line 12) | function hx(a){a=a|0;var b=0,d=0,e=0,f=0;d=Az(a,93334,20,0)|0;e=d+8|0;c[...
  function ix (line 12) | function ix(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=nb[c[b>>2]&63...
  function jx (line 12) | function jx(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;h=My(b,24)|...
  function kx (line 12) | function kx(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+32|0;e=d;c[e+8>>2]=b;b=...
  function lx (line 12) | function lx(a,b){a=a|0;b=b|0;var c=0;c=Hw(a,0)|0;b=kx(a,b)|0;Hw(a,c)|0;r...
  function mx (line 12) | function mx(a,b){a=a|0;b=b|0;a=dx(a)|0;if(!a)a=0;else a=kx(c[a+8>>2]|0,b...
  function nx (line 12) | function nx(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=l;l=l+16|0;g=...
  function ox (line 12) | function ox(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=fz(a)...
  function px (line 12) | function px(a,b,c){a=a|0;b=b|0;c=c|0;a=fx(a,b)|0;if(!a)a=0;else a=kx(a,c...
  function qx (line 12) | function qx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;b=dx(b)|0;f=d+16|0;...
  function rx (line 12) | function rx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=ez(a)|0;g...
  function sx (line 12) | function sx(a,b,d){a=a|0;b=b|0;d=d|0;a=fx(a,b)|0;do if(a){b=c[a>>2]|0;if...
  function tx (line 12) | function tx(a){a=a|0;var b=0;c[46171]=a;b=dx(a)|0;if(b|0){ux(a,b);Cz(a,c...
  function ux (line 12) | function ux(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=ez(a)|0;e=gx(a)|0;b=b+12|...
  function vx (line 12) | function vx(a){a=a|0;var b=0;b=dx(a)|0;if(b|0){ux(a,b);Cz(a,93322)|0}ret...
  function wx (line 12) | function wx(a){a=a|0;var b=0;b=dx(a)|0;if(b|0){ux(a,b);Cz(a,93322)|0}ret...
  function xx (line 12) | function xx(a,b){a=a|0;b=b|0;b=mx(a,b)|0;if(!b)b=0;else{a=c[(dx(a)|0)+12...
  function yx (line 12) | function yx(a,b){a=a|0;b=b|0;a=c[(dx(a)|0)+12>>2]|0;return c[a+(c[b+16>>...
  function zx (line 12) | function zx(a,b,c){a=a|0;b=b|0;c=c|0;b=mx(a,b)|0;if(!b)b=-1;else{rx(a,b,...
  function Ax (line 12) | function Ax(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=ez(a)|0;f=nx(f,c[...
  function Bx (line 12) | function Bx(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=ez(a)|0;f=c[a>>2]|0;a...
  function Cx (line 12) | function Cx(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;a=c[b+40>>2]|0;...
  function Dx (line 12) | function Dx(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;a=(c[b+...
  function Ex (line 12) | function Ex(a,b){a=a|0;b=b|0;var d=0;b=Fx(a,b)|0;if(!b)b=0;else{d=a+44|0...
  function Fx (line 12) | function Fx(a,b){a=a|0;b=b|0;var d=0,e=0;e=l;l=l+48|0;d=e;if((c[b+24>>2]...
  function Gx (line 12) | function Gx(a,b){a=a|0;b=b|0;var d=0,e=0;d=Fx(a,c[((c[b>>2]&3|0)==3?b:b+...
  function Hx (line 12) | function Hx(a,b){a=a|0;b=b|0;var d=0;b=Fx(a,b)|0;if(!b)b=0;else{d=a+44|0...
  function Ix (line 12) | function Ix(a,b){a=a|0;b=b|0;var d=0,e=0;d=Fx(a,c[((c[b>>2]&3|0)==2?b:b+...
  function Jx (line 12) | function Jx(a,b){a=a|0;b=b|0;var c=0;c=Ex(a,b)|0;if(!c)c=Hx(a,b)|0;retur...
  function Kx (line 12) | function Kx(a,b,d){a=a|0;b=b|0;d=d|0;a:do if((c[b>>2]&3|0)==2){b=Gx(a,b)...
  function Lx (line 12) | function Lx(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0;h=l;l=l+32|0;f=h+16...
  function Mx (line 12) | function Mx(a,b){a=a|0;b=b|0;Ox(a,b);return}
  function Nx (line 12) | function Nx(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0...
  function Ox (line 12) | function Ox(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;i=l...
  function Px (line 12) | function Px(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=l;l=l+48|...
  function Qx (line 12) | function Qx(a,b,d){a=a|0;b=b|0;d=d|0;Dw(a,c[b>>2]|0)|0;nb[c[a>>2]&63](a,...
  function Rx (line 12) | function Rx(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0...
  function Sx (line 12) | function Sx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;d=(c[b>>2]&3|0)...
  function Tx (line 12) | function Tx(a,b,d){a=a|0;b=b|0;d=d|0;Dw(a,c[b>>2]|0)|0;nb[c[a>>2]&63](a,...
  function Ux (line 12) | function Ux(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e;d=(c[d...
  function Vx (line 12) | function Vx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=l;l=l+16|0;e=...
  function Wx (line 12) | function Wx(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;b=b+8|0;e=d+8|0;e=t3(c[b>>2...
  function Xx (line 12) | function Xx(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;h=l;l=l...
  function Yx (line 12) | function Yx(b){b=b|0;var d=0,e=0,f=0,g=0;d=(b|0)!=0;if(d){e=c[b>>2]|0;e=...
  function Zx (line 12) | function Zx(b){b=b|0;var d=0,e=0;c[b+36>>2]=CA(b,18688,c[4563]|0)|0;c[b+...
  function _x (line 12) | function _x(a,b){a=a|0;b=b|0;var d=0;d=(c[a+64>>2]|0)+24+(b<<3)|0;b=d;b=...
  function $x (line 12) | function $x(b){b=b|0;var d=0,e=0,f=0,g=0;f=yA(b)|0;g=(f|0)==0;if(g?(d=b+...
  function ay (line 12) | function ay(a){a=a|0;return Ew(c[a+40>>2]|0)|0}
  function by (line 12) | function by(a){a=a|0;var b=0,c=0,d=0;b=0;c=Sy(a)|0;while(1){if(!c)break;...
  function cy (line 12) | function cy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=Fx(a,b)|0;if(f){i...
  function dy (line 12) | function dy(a,b){a=a|0;b=b|0;var d=0;Dw(a,c[b>>2]|0)|0;d=Ew(a)|0;c[b>>2]...
  function ey (line 12) | function ey(b){b=b|0;return a[b+24>>0]&1|0}
  function fy (line 12) | function fy(a){a=a|0;return (ey(a)|0)==0|0}
  function gy (line 12) | function gy(a){a=a|0;return (d[a+24>>0]|0)>>>1&1|0}
  function hy (line 12) | function hy(a,b){a=a|0;b=b|0;return a|0}
  function iy (line 12) | function iy(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;if(!d){f=1392;d=c[f...
  function jy (line 12) | function jy(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return 0}
  function ky (line 12) | function ky(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if((c&1|0)==0&0==0)Qz(a,c)|...
  function ly (line 12) | function ly(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ((c&1|0)==0&0==0?c:0...
  function my (line 12) | function my(a){a=a|0;return}
  function ny (line 12) | function ny(a,b,c){a=a|0;b=b|0;c=c|0;return}
  function oy (line 12) | function oy(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;i=(...
  function py (line 12) | function py(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=c[a+64>>2]|0;return ob[c[...
  function qy (line 12) | function qy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;zy(a,b,d,e)|0;a=c[a+64>>2]|...
  function ry (line 12) | function ry(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;g=h;d=ez(a...
  function sy (line 12) | function sy(a,b,d){a=a|0;b=b|0;d=d|0;a=c[a+64>>2]|0;vb[c[(c[a+4>>2]|0)+2...
  function ty (line 12) | function ty(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l...
  function uy (line 12) | function uy(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=My(a,...
  function vy (line 12) | function vy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=b+16|0;b=c[a>>2]|0;a=c[a+...
  function wy (line 12) | function wy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;b=c[b+24>>2]|0;e=c[d+24>>2]...
  function xy (line 12) | function xy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=yy(a,b,d,e)|0;if(!a)a=0;e...
  function yy (line 12) | function yy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=l;l=l+32|0;f=...
  function zy (line 12) | function zy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=(b|0)==3?2:b;b=yy...
  function Ay (line 12) | function Ay(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;c[46171]=b;g=c[b+64>>2]...
  function By (line 12) | function By(a){a=a|0;c[46171]=a;a=a+64|0;Cy((c[a>>2]|0)+56|0);Cy((c[a>>2...
  function Cy (line 12) | function Cy(a){a=a|0;var b=0,d=0,e=0;b=0;while(1){if((b|0)==3)break;d=a+...
  function Dy (line 12) | function Dy(a,b,c){a=a|0;b=b|0;c=c|0;if(!(O0(b,c,a)|0))a=0;else a=W_(b)|...
  function Ey (line 12) | function Ey(a,b){a=a|0;b=b|0;return D1(b,a)|0}
  function Fy (line 12) | function Fy(a){a=a|0;return w1(a)|0}
  function Gy (line 12) | function Gy(a){a=a|0;var b=0,d=0,e=0;b=l;l=l+32|0;e=b+12|0;d=b;c[4656]=c...
  function Hy (line 12) | function Hy(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;if((e|0)!=0?(h=...
  function Iy (line 12) | function Iy(a){a=a|0;return 0}
  function Jy (line 12) | function Jy(a,b){a=a|0;b=b|0;a=C_(b)|0;H3(a|0,0,b|0)|0;return a|0}
  function Ky (line 12) | function Ky(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;a=F_(b,d)|0;if(d>>>0>c>>>0)...
  function Ly (line 12) | function Ly(a,b){a=a|0;b=b|0;D_(b);return}
  function My (line 12) | function My(a,b){a=a|0;b=b|0;var d=0;d=l;l=l+16|0;a=c[a+64>>2]|0;a=lb[c[...
  function Ny (line 12) | function Ny(a,b){a=a|0;b=b|0;if(b|0){a=c[a+64>>2]|0;ub[c[(c[a>>2]|0)+12>...
  function Oy (line 12) | function Oy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=(c[b+16>>2]|0)+8|0;b=c[a>...
  function Py (line 12) | function Py(a,b,d){a=a|0;b=b|0;d=d|0;a=c[b+16>>2]|0;if((a+28|0)!=(b|0))N...
  function Qy (line 12) | function Qy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;b=(c[c[b+16>>2]>>2]|0)>>>4;...
  function Ry (line 12) | function Ry(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=183176;c[e>>2]=b;c[e+4>>2...
  function Sy (line 12) | function Sy(a){a=a|0;a=c[a+36>>2]|0;a=nb[c[a>>2]&63](a,0,128)|0;if(!a)a=...
  function Ty (line 12) | function Ty(a,b){a=a|0;b=b|0;var d=0;b=Fx(a,b)|0;if((b|0)!=0?(d=c[a+36>>...
  function Uy (line 12) | function Uy(a){a=a|0;a=c[a+36>>2]|0;a=nb[c[a>>2]&63](a,0,256)|0;if(!a)a=...
  function Vy (line 12) | function Vy(a,b){a=a|0;b=b|0;var d=0;b=Fx(a,b)|0;if((b|0)!=0?(d=c[a+36>>...
  function Wy (line 12) | function Wy(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=Ry(a,b,c)|0;d...
  function Xy (line 12) | function Xy(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=fz(a)|0;if((e|0)==(c[b+24...
  function Yy (line 12) | function Yy(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;g=My(b,...
  function Zy (line 12) | function Zy(a,b){a=a|0;b=b|0;do{$y(a,b);a=yA(a)|0}while((a|0)!=0);return}
  function _y (line 12) | function _y(b,c){b=b|0;c=c|0;if(a[(fz(b)|0)+24>>0]&64)bx(b,c);gz(b,c);re...
  function $y (line 12) | function $y(a,b){a=a|0;b=b|0;var d=0,e=0;e=a+40|0;Ew(c[e>>2]|0)|0;if((fz...
  function az (line 12) | function az(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l...
  function bz (line 12) | function bz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;c[46185]=b;d=Jx(a,b)|0;whil...
  function cz (line 12) | function cz(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;f=d+8|0;e=f;if(Ry(b,c[e>>2]...
  function dz (line 12) | function dz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;e=h;d=...
  function ez (line 12) | function ez(a){a=a|0;var b=0;switch(c[a>>2]&3){case 2:case 3:{b=c[(c[a+4...
  function fz (line 12) | function fz(a){a=a|0;var b=0;switch(c[a>>2]&3){case 2:case 3:{b=(c[a+40>...
  function gz (line 12) | function gz(b,d){b=b|0;d=d|0;var e=0;e=c[b+64>>2]|0;if(!(a[e+52>>0]|0))q...
  function hz (line 12) | function hz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;a:do if(d|0){hz(a,b,c[d+8>>...
  function iz (line 12) | function iz(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;f=c[b+64>>2]|0;if(!(a[f+52>...
  function jz (line 12) | function jz(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;a:do if(e|0){jz(a,b...
  function kz (line 12) | function kz(b,d){b=b|0;d=d|0;var e=0;e=c[b+64>>2]|0;if(!(a[e+52>>0]|0))q...
  function lz (line 12) | function lz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;a:do if(d|0){lz(a,b,c[d+8>>...
  function mz (line 12) | function mz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=My(a,12)|0;c[e>>2]=b;c[e+...
  function nz (line 12) | function nz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=(c[a+64>>2]|0)+48|0;d=c[e...
  function oz (line 12) | function oz(a,b){a=a|0;b=b|0;var d=0;d=fz(a)|0;a:do if((d|0)==(fz(b)|0))...
  function pz (line 12) | function pz(a){a=a|0;return c[a>>2]&3|0}
  function qz (line 12) | function qz(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;h=l;l=l...
  function rz (line 12) | function rz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+16|0;e=g;a:...
  function sz (line 12) | function sz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+32|0;e=d;f=vz(b)|0;...
  function tz (line 12) | function tz(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=My(ez(d)|0,32...
  function uz (line 12) | function uz(a,b){a=a|0;b=b|0;b=sz(a,b)|0;if(b|0)nb[c[a>>2]&63](a,b,2)|0;...
  function vz (line 12) | function vz(a){a=a|0;a=a+8|0;z=c[a+4>>2]|0;return c[a>>2]|0}
  function wz (line 12) | function wz(a,b,d){a=a|0;b=b|0;d=d|0;xz(b);Ny(c[b+16>>2]|0,b);return}
  function xz (line 12) | function xz(a){a=a|0;var b=0,d=0;b=a+16|0;a=c[a+24>>2]|0;while(1){if(!a)...
  function yz (line 12) | function yz(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l...
  function zz (line 12) | function zz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;c[a+16>>2]=b;e=c[a>>2]|0;d=...
  function Az (line 12) | function Az(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=ez(a)|0;f...
  function Bz (line 12) | function Bz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=c[a+16>>2]|0;do if(d){e=d...
  function Cz (line 12) | function Cz(a,b){a=a|0;b=b|0;var d=0,e=0;e=ez(a)|0;d=yz(a,b,0)|0;if(!d)b...
  function Dz (line 12) | function Dz(a,b){a=a|0;b=b|0;var d=0;a=c[a+16>>2]|0;do{d=a+4|0;a=c[d>>2]...
  function Ez (line 12) | function Ez(a,b,d){a=a|0;b=b|0;d=d|0;if((c[b+16>>2]|0)==(d|0)){a=c[d+4>>...
  function Fz (line 12) | function Fz(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;f=(d|0)...
  function Gz (line 12) | function Gz(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;a:do switch(b|0){case 0...
  function Hz (line 12) | function Hz(a,b,c){a=a|0;b=b|0;c=c|0;Cz(b,c)|0;return}
  function Iz (line 12) | function Iz(a){a=a|0;var b=0,d=0,e=0;d=ez(a)|0;b=a+16|0;a=c[b>>2]|0;if(a...
  function Jz (line 12) | function Jz(a){a=a|0;return EA(a,Kz(a)|0)|0}
  function Kz (line 12) | function Kz(a){a=a|0;var b=0,d=0;if(!a)d=184760;else d=(c[a+64>>2]|0)+20...
  function Lz (line 12) | function Lz(a,b){a=a|0;b=b|0;return Mz(Kz(a)|0,b)|0}
  function Mz (line 12) | function Mz(a,b){a=a|0;b=b|0;a=Nz(a,b)|0;if(!a)a=0;else a=c[a+16>>2]|0;r...
  function Nz (line 12) | function Nz(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+32|0;e=d;c[e+16>>2]=b;b...
  function Oz (line 12) | function Oz(a,b){a=a|0;b=b|0;var d=0,e=0;if(!b)d=0;else{e=Kz(a)|0;d=Nz(e...
  function Pz (line 12) | function Pz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;if(!b)d=0;else{e=Kz(a)|...
  function Qz (line 12) | function Qz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;if((b|0)!=0?(d=Kz(a)|0,...
  function Rz (line 12) | function Rz(a){a=a|0;var b=0;if(!a)a=0;else{a=a+-12|0;b=183232;a=c[b>>2]...
  function Sz (line 12) | function Sz(a){a=a|0;var b=0,d=0,e=0;if(a|0){d=183232;a=a+-12|0;e=a;b=c[...
  function Tz (line 12) | function Tz(a){a=a|0;c[4699]=a;return}
  function Uz (line 12) | function Uz(a){a=a|0;c[46195]=a;c[4699]=1;return}
  function Vz (line 12) | function Vz(a,b){a=a|0;b=b|0;c[46196]=a;c[46197]=b;c[46198]=0;return}
  function Wz (line 12) | function Wz(){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;if(!(c[46199]|...
  function Xz (line 12) | function Xz(){var a=0,b=0,d=0;b=c[46201]|0;do if(!b){a=oA(4)|0;c[46201]=...
  function Yz (line 12) | function Yz(a,b){a=a|0;b=b|0;var d=0;d=oA(48)|0;if(!d)hA(93850);c[d+12>>...
  function Zz (line 12) | function Zz(){var b=0,d=0;d=c[46201]|0;b=c[d>>2]|0;c[46206]=c[b+16>>2];b...
  function _z (line 12) | function _z(){var b=0,d=0,e=0,f=0,g=0,h=0,i=0;g=l;l=l+32|0;f=g;d=g+16|0;...
  function $z (line 12) | function $z(){var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;j=l;l=l+2080|0;i=j...
  function aA (line 12) | function aA(){var b=0;b=c[46207]|0;if(!b){b=C_(1024)|0;c[46207]=b;c[4620...
  function bA (line 12) | function bA(){c[46221]=Oz(c[46171]|0,c[46207]|0)|0;a[c[46207]>>0]=0;return}
  function cA (line 12) | function cA(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;e=c[46208]|0;d=c[46207]...
  function dA (line 12) | function dA(){c[46221]=Pz(c[46171]|0,c[46207]|0)|0;a[c[46207]>>0]=0;return}
  function eA (line 12) | function eA(){var d=0,e=0,f=0,g=0,h=0;h=c[46202]|0;g=c[46193]|0;e=(c[(c[...
  function fA (line 12) | function fA(a){a=a|0;var d=0;if(b[63752+(a<<1)>>1]|0){d=c[46202]|0;c[462...
  function gA (line 12) | function gA(){var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;j=...
  function hA (line 12) | function hA(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=c[15686]|0;c[b>>2]=a;g1(...
  function iA (line 12) | function iA(a,b){a=a|0;b=b|0;return F_(a,b)|0}
  function jA (line 12) | function jA(a){a=a|0;var b=0,d=0,e=0;d=c[46201]|0;if((d|0)!=0?(b=c[d>>2]...
  function kA (line 12) | function kA(a,b){a=a|0;b=b|0;var d=0;d=c[(O_()|0)>>2]|0;lA(a);c[a>>2]=b;...
  function lA (line 12) | function lA(b){b=b|0;var d=0;if(b|0){c[b+16>>2]=0;d=b+4|0;a[c[d>>2]>>0]=...
  function mA (line 12) | function mA(){var b=0,d=0;d=c[46193]|0;b=(c[46194]|0)+-2|0;while(1){if((...
  function nA (line 12) | function nA(a,b){a=a|0;b=b|0;var d=0;d=c[46210]|0;if((d|0)<(b|0)){if(!d)...
  function oA (line 12) | function oA(a){a=a|0;return C_(a)|0}
  function pA (line 12) | function pA(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+211...
  function qA (line 12) | function qA(){rA(c[46193]|0);return}
  function rA (line 12) | function rA(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;j=c[462...
  function sA (line 12) | function sA(){var a=0;a=c[46201]|0;if(!a)a=0;else a=c[a>>2]|0;lA(a);return}
  function tA (line 12) | function tA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+80|0;f=e;g=...
  function uA (line 12) | function uA(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=tA(b,d,e)|0;if(!f...
  function vA (line 12) | function vA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+16|0;f=g;if...
  function wA (line 12) | function wA(a){a=a|0;a=c[a+52>>2]|0;return nb[c[a>>2]&63](a,0,128)|0}
  function xA (line 12) | function xA(a){a=a|0;var b=0;b=yA(a)|0;if(!b)a=0;else{b=c[b+52>>2]|0;a=n...
  function yA (line 12) | function yA(a){a=a|0;return c[a+56>>2]|0}
  function zA (line 12) | function zA(a,b){a=a|0;b=b|0;a=c[a+52>>2]|0;return nb[c[a>>2]&63](a,b,2)|0}
  function AA (line 12) | function AA(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=c[46213]|0;e=(b|0)!=0;do ...
  function BA (line 12) | function BA(a,b,d){a=a|0;b=b|0;d=d|0;a=c[46213]|0;if(!a)D_(b);else Ny(a,...
  function CA (line 12) | function CA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=b+28|0;f=c[e>>2]|0;c[...
  function DA (line 12) | function DA(a,b,d){a=a|0;b=b|0;d=d|0;c[46213]=a;return nb[c[b>>2]&63](b,...
  function EA (line 12) | function EA(a,b){a=a|0;b=b|0;var d=0,e=0;d=(Kw(b,0,0)|0)+28|0;e=c[d>>2]|...
  function FA (line 12) | function FA(a,b,c){a=a|0;b=b|0;c=c|0;if(c|0?(Kw(b,0,0)|0)!=(c|0):0)Kw(b,...
  function GA (line 12) | function GA(a,b){a=a|0;b=b|0;if(!(Rz(a)|0))b=IA(a,b)|0;else HA(a,b)|0;re...
  function HA (line 12) | function HA(b,c){b=b|0;c=c|0;var d=0,e=0,f=0;a[c>>0]=60;e=c;while(1){d=e...
  function IA (line 12) | function IA(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0...
  function JA (line 12) | function JA(a){a=a|0;return GA(a,KA(a)|0)|0}
  function KA (line 12) | function KA(a){a=a|0;var b=0;b=((W_(a)|0)<<1)+2|0;b=b>>>0>1024?b:1024;a=...
  function LA (line 12) | function LA(a,b){a=a|0;b=b|0;a=wA(a)|0;while(1){if(!a){a=0;break}if((MA(...
  function MA (line 12) | function MA(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=ry(b)|0;if((h|0)!=0?(...
  function NA (line 12) | function NA(b,d){b=b|0;d=d|0;var e=0,f=0;c[46216]=0;e=xx(b,94237)|0;if((...
  function OA (line 12) | function OA(a,b){a=a|0;b=b|0;var d=0;c[a>>2]=c[a>>2]&-9;d=wA(a)|0;while(...
  function PA (line 12) | function PA(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;if((e|0...
  function QA (line 12) | function QA(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;a:do if...
  function RA (line 12) | function RA(a,b){a=a|0;b=b|0;c[46216]=(c[46216]|0)+-1;if((SA(a,b)|0)==-1...
  function SA (line 12) | function SA(a,b){a=a|0;b=b|0;var d=0;d=c[46216]|0;while(1){if((d|0)<=0){...
  function TA (line 12) | function TA(a,b,d){a=a|0;b=b|0;d=d|0;return lb[c[(c[(c[a+64>>2]|0)+8>>2]...
  function UA (line 12) | function UA(a,b){a=a|0;b=b|0;a=wA(a)|0;while(1){if(!a){a=0;break}if(!(MA...
  function VA (line 12) | function VA(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;if((LA(a,b)|0)==0?(...
  function WA (line 12) | function WA(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=ez(a)|0;do if((SA(d,b)|0)...
  function XA (line 12) | function XA(a,b){a=a|0;b=b|0;a=wA(a)|0;while(1){if(!a){a=1;break}if((MA(...
  function YA (line 12) | function YA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=c[a>>2]&3;g=c[((e...
  function ZA (line 12) | function ZA(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=l;l=l+32|...
  function _A (line 12) | function _A(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0;a:do if((d|0)!=0?(e=ez(...
  function $A (line 12) | function $A(a){a=a|0;return (c[a>>2]|0)>>>3&1|0}
  function aB (line 12) | function aB(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;a:d...
  function bB (line 12) | function bB(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0;e=ry(b)|0;b=ez(b)|0;if(...
  function cB (line 12) | function cB(a,b,c){a=a|0;b=b|0;c=c|0;return dB(a,b,c,1)|0}
  function dB (line 12) | function dB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if(!d)c=IA(c,KA(c)|0)|0;els...
  function eB (line 12) | function eB(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a:do if(0<e>>>0|(0==(e|0)?(...
  function fB (line 12) | function fB(a,b){a=a|0;b=b|0;if(!(Hx(a,b)|0))a=(Ex(a,b)|0)==0&1;else a=0...
  function gB (line 12) | function gB(a){a=a|0;var b=0,d=0,e=0;a=dx(a)|0;a:do if(!a)a=0;else{d=a+8...
  function hB (line 12) | function hB(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=_w(a,0)|0;if(e)if(((i...
  function iB (line 12) | function iB(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0...
  function jB (line 12) | function jB(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;switch(c[b>...
  function kB (line 12) | function kB(a,b){a=a|0;b=b|0;if((ez(b)|0)!=(a|0))b=Vx(a,b,0)|0;return b|0}
  function lB (line 12) | function lB(a,b){a=a|0;b=b|0;if((ez(b)|0)!=(a|0))b=Xy(a,b,0)|0;return b|0}
  function mB (line 12) | function mB(a,b){a=a|0;b=b|0;return a|0}
  function nB (line 12) | function nB(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0...
  function oB (line 12) | function oB(){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=...
  function pB (line 12) | function pB(){var a=0,b=0;a=c[46223]|0;while(1){if(!a)break;IB(a+8|0);IB...
  function qB (line 12) | function qB(){qA();Ay(c[46222]|0);return}
  function rB (line 12) | function rB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=l;l=l+16|0;g=h;f=...
  function sB (line 12) | function sB(){var b=0,d=0,e=0,f=0,g=0,h=0;HB(2);e=c[46223]|0;f=a[95044]|...
  function tB (line 12) | function tB(){var a=0;HB(1);a=(c[46223]|0)+8|0;while(1){a=c[a>>2]|0;if(!...
  function uB (line 12) | function uB(){var a=0,b=0;a=c[46223]|0;b=c[a+8>>2]|0;if(!b){b=c[a+4>>2]|...
  function vB (line 12) | function vB(a,b,d){a=a|0;b=b|0;d=d|0;if(d)b=KB(b,d)|0;d=LB(az(c[c[46223]...
  function wB (line 12) | function wB(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;if(d|0)GB();d=(c[46223]|0)+...
  function xB (line 12) | function xB(a,b){a=a|0;b=b|0;b=DB(a,b)|0;EB((c[46223]|0)+24|0,b);return}
  function yB (line 12) | function yB(a){a=a|0;var b=0;b=c[46223]|0;c[46223]=CB(b,vA(c[b>>2]|0,a,1...
  function zB (line 12) | function zB(){var a=0,b=0;a=c[46223]|0;b=c[a>>2]|0;a=BB(a)|0;c[46223]=a;...
  function AB (line 12) | function AB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=l;l=l+1024|0;f=g;d=W_...
  function BB (line 12) | function BB(a){a=a|0;var b=0;b=c[(c[46223]|0)+32>>2]|0;Ny(c[46222]|0,a);...
  function CB (line 12) | function CB(a,b){a=a|0;b=b|0;var d=0;d=My(c[46222]|0,36)|0;c[d+32>>2]=a;...
  function DB (line 12) | function DB(a,b){a=a|0;b=b|0;return FB(267,a,b)|0}
  function EB (line 12) | function EB(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+4|0;e=c[d>>2]|0;if(e|0)c[e+...
  function FB (line 12) | function FB(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=My(c[46222]|0,16)|0;c[e>>...
  function GB (line 12) | function GB(){var a=0;a=l;l=l+16|0;Pw(0,95048,a)|0;l=a;return}
  function HB (line 12) | function HB(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;g=(b|0)==2;d=(c[46223]|0)+2...
  function IB (line 12) | function IB(a){a=a|0;JB(c[a>>2]|0);c[a+4>>2]=0;c[a>>2]=0;return}
  function JB (line 12) | function JB(a){a=a|0;var b=0;while(1){if(!a)break;b=c[a+12>>2]|0;switch(...
  function KB (line 12) | function KB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+1040|0;f=h;...
  function LB (line 12) | function LB(a,b){a=a|0;b=b|0;return FB(259,a,b)|0}
  function MB (line 12) | function MB(a){a=a|0;return FB(265,a,0)|0}
  function NB (line 12) | function NB(a){a=a|0;return FB(262,a,0)|0}
  function OB (line 12) | function OB(a){a=a|0;var b=0,d=0;b=(c[46223]|0)+24|0;while(1){b=c[b>>2]|...
  function PB (line 12) | function PB(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=d+4|0;a:do if((c[...
  function QB (line 12) | function QB(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;d=Rx(c[c[46...
  function RB (line 12) | function RB(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if(d|0){e=nx(c[c[46223]>>2]...
  function SB (line 12) | function SB(a,b,d){a=a|0;b=b|0;d=d|0;c[46191]=b;c[46222]=a;c[46171]=0;a=...
  function TB (line 12) | function TB(a,b){a=a|0;b=b|0;return SB(0,a,b)|0}
  function UB (line 12) | function UB(a,b){a=a|0;b=b|0;b=wC(a,1,b)|0;if(!b)b=999;else{b=c[b+16>>2]...
  function VB (line 12) | function VB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;f=...
  function WB (line 12) | function WB(a,b){a=a|0;b=b|0;var d=0,e=0;if(Az(b,134401,0,1)|0){d=b+16|0...
  function XB (line 12) | function XB(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;j=...
  function YB (line 12) | function YB(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=l;l=l+112|0;e=h;g=h+4...
  function ZB (line 12) | function ZB(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=l;l=l+16|0;g=...
  function _B (line 12) | function _B(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0...
  function $B (line 12) | function $B(a,b){a=a|0;b=b|0;var c=0;c=W_(b)|0;b=(ZB(a,b,c)|0)==(c|0);re...
  function aC (line 12) | function aC(b,c){b=b|0;c=c|0;var d=0,e=0;d=l;l=l+16|0;e=d;a[e>>0]=c;b=(Z...
  function bC (line 12) | function bC(b){b=b|0;var d=0;d=c[b+36>>2]|0;if(((d|0)!=0?(a[b+144>>0]|0)...
  function cC (line 12) | function cC(a){a=a|0;var b=0,d=0;b=c[a+76>>2]|0;if(b|0?(d=c[b+4>>2]|0,d|...
  function dC (line 12) | function dC(a){a=a|0;var b=0,d=0,e=0;e=l;l=l+16|0;d=c[a+76>>2]|0;if(c[a+...
  function eC (line 12) | function eC(b){b=b|0;var d=0,e=0,f=0;d=b+32|0;if((c[d>>2]|0?(e=b+36|0,f=...
  function fC (line 12) | function fC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=l;l=l+105...
  function gC (line 12) | function gC(a,b){a=a|0;b=+b;var d=0,e=0,f=0;d=l;l=l+16|0;e=d;f=hC(e,b)|0...
  function hC (line 12) | function hC(b,d){b=b|0;d=+d;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;if(!(d<-...
  function iC (line 12) | function iC(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d;f=hC(e,+h[...
  function jC (line 12) | function jC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=l;l=l+16|0;f=...
  function kC (line 12) | function kC(a,b){a=a|0;b=b|0;var d=0;d=uH(392)|0;if(d|0){c[d>>2]=20052;c...
  function lC (line 12) | function lC(a){a=a|0;var b=0,d=0,e=0,f=0;b=uH(392)|0;d=b;e=a;f=d+40|0;do...
  function mC (line 12) | function mC(a){a=a|0;tC(a);D_(a);return}
  function nC (line 12) | function nC(a,b){a=a|0;b=b|0;var d=0,e=0;e=a+160|0;d=c[e>>2]|0;if(d){e=c...
  function oC (line 12) | function oC(a,b){a=a|0;b=b|0;var d=0,e=0;e=a+160|0;d=c[e>>2]|0;if(d){e=c...
  function pC (line 12) | function pC(a){a=a|0;var b=0;b=c[a+160>>2]|0;c[a+164>>2]=b;return b|0}
  function qC (line 12) | function qC(a){a=a|0;var b=0,d=0,e=0;a=a+164|0;b=c[a>>2]|0;d=c[b+4>>2]|0...
  function rC (line 12) | function rC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=a+8|0;f=b+10|0;if((c[...
  function sC (line 12) | function sC(a){a=a|0;var b=0;b=c[a>>2]|0;if(b|0)D_(b);c[a>>2]=0;c[a+8>>2...
  function tC (line 12) | function tC(a){a=a|0;var b=0,d=0,e=0;d=a+160|0;b=c[d>>2]|0;while(1){if(!...
  function uC (line 12) | function uC(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0...
  function vC (line 12) | function vC(a,b){a=a|0;b=b|0;b=l;l=l+16|0;Pw(1,95321,b)|0;l=b;return 0}
  function wC (line 12) | function wC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0...
  function xC (line 12) | function xC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;do if(!e)e=0;el...
  function yC (line 12) | function yC(b){b=b|0;var d=0;if(!b)qa(108182,95369,573,95383);if(!(a[b>>...
  function zC (line 12) | function zC(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;j=...
  function AC (line 12) | function AC(b){b=b|0;var d=0,e=0;if(a[b+17>>0]|0?(d=b+20|0,e=c[d>>2]|0,e...
  function BC (line 12) | function BC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0.0;if(!b){e=-1;d=-...
  function CC (line 12) | function CC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0.0;m...
  function DC (line 12) | function DC(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+16|0;e=f;if(!a)qa(10818...
  function EC (line 12) | function EC(a){a=a|0;var b=0;b=c[a+8>>2]|0;if(b|0)Qz(0,b)|0;D_(a);return}
  function FC (line 12) | function FC(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+224|0;f...
  function GC (line 12) | function GC(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+16|0;b=f+4|0;d=f;c[a+48...
  function HC (line 12) | function HC(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+16|0;b=f+4|0;d=f;c[a+48...
  function IC (line 12) | function IC(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;b=h+12|0;d...
  function JC (line 12) | function JC(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l...
  function KC (line 12) | function KC(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l...
  function LC (line 12) | function LC(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;g=l;l=l+16|0;b=g+4|0;d=...
  function MC (line 12) | function MC(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0...
  function NC (line 12) | function NC(a){a=a|0;var b=0,d=0,e=0,f=0.0,g=0.0;d=l;l=l+32|0;b=d;c[a+48...
  function OC (line 12) | function OC(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+16|0;b=f+4|0;d=f;c[a+48...
  function PC (line 12) | function PC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;c[d>>2]=0;e=0;while(1){...
  function QC (line 12) | function QC(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+1040|0;d=h;...
  function RC (line 12) | function RC(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+1024|0;f=g;SC(b);e=...
  function SC (line 12) | function SC(b){b=b|0;var d=0;d=c[b>>2]|0;while(1){d=a[d>>0]|0;if(!(d<<24...
  function TC (line 12) | function TC(b){b=b|0;var d=0;d=b+4|0;if(!(O0(c[d>>2]|0,1024,c[b+8>>2]|0)...
  function UC (line 12) | function UC(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;SC(b);e=0;f=c[b>>2]|0;while...
  function VC (line 12) | function VC(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0;e=l;l=l+16|0;f=e;d=+c2(a,...
  function WC (line 12) | function WC(a,b){a=+a;b=b|0;var c=0.0;do if(!(b$(b,95660)|0)){a=a*72.0;c...
  function XC (line 12) | function XC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;c[d>>2]=0;e=0;while(1){...
  function YC (line 12) | function YC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;a=c[b+20>>2]|0;if(a|0)s1(a)...
  function ZC (line 12) | function ZC(){var a=0;nx(0,1,105198,102467)|0;a=kC(0,1)|0;LP(a,0);return...
  function _C (line 12) | function _C(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0.0,n=0.0...
  function $C (line 12) | function $C(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l...
  function aD (line 12) | function aD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l...
  function bD (line 12) | function bD(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0...
  function cD (line 12) | function cD(a,b){a=a|0;b=b|0;JP(a,0,b);return}
  function dD (line 12) | function dD(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0...
  function eD (line 12) | function eD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;if(!((a|0)!=0?(nD(a)|0)...
  function fD (line 12) | function fD(a,b){a=a|0;b=b|0;Xy(b,a,1)|0;return}
  function gD (line 12) | function gD(b,d){b=b|0;d=d|0;var e=0;b=(c[b+16>>2]|0)+157|0;e=a[b>>0]|0;...
  function hD (line 12) | function hD(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;c[b>>2]=d;c[b+4>>2]...
  function iD (line 12) | function iD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0...
  function jD (line 12) | function jD(a){a=a|0;var b=0;a=c[(c[a>>2]|0)+12>>2]|0;while(1){if(!a)bre...
  function kD (line 12) | function kD(a){a=a|0;D_(c[a>>2]|0);D_(a);return}
  function lD (line 12) | function lD(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l...
  function mD (line 12) | function mD(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=a+8|0;b=c[f>>2]|0;d=a+4|0...
  function nD (line 12) | function nD(b){b=b|0;var c=0;a:while(1){c=b;b=b+1|0;c=a[c>>0]|0;switch(c...
  function oD (line 12) | function oD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0...
  function pD (line 12) | function pD(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=0;f=Sy(a)|0;while(1){if(!...
  function qD (line 12) | function qD(a){a=a|0;a=yz(a,95967,0)|0;if(!a)qa(95972,95975,529,95984);e...
  function rD (line 12) | function rD(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0...
  function sD (line 12) | function sD(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i;a[h>>0...
  function tD (line 12) | function tD(b,d){b=b|0;d=d|0;var e=0;b=(c[b+16>>2]|0)+8|0;e=a[b>>0]|0;if...
  function uD (line 12) | function uD(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=Sy(a)|0;while(1){if(!e)br...
  function vD (line 12) | function vD(a){a=a|0;return pD(a,c[a+60>>2]|0)|0}
  function wD (line 12) | function wD(a,b){a=a|0;b=b|0;xD(a,b,0);return}
  function xD (line 12) | function xD(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;g=(d|0)==0;b=wA(b)|...
  function yD (line 12) | function yD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=0;g=Sy(a)|0;while...
  function zD (line 12) | function zD(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=l;l=l...
  function AD (line 12) | function AD(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,l=0...
  function BD (line 12) | function BD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0...
  function CD (line 12) | function CD(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0...
  function DD (line 12) | function DD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0.0,j=0,k=0,m=0.0...
  function ED (line 12) | function ED(a,b){a=a|0;b=b|0;var d=0;d=c[46285]|0;a=c[d+(c[(c[a>>2]|0)+1...
  function FD (line 12) | function FD(a,b){a=a|0;b=b|0;var d=0.0,e=0.0;a=c[a>>2]|0;b=c[b>>2]|0;e=+...
  function GD (line 12) | function GD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,g=0.0,i=0.0,j=0.0,k...
  function HD (line 12) | function HD(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0...
  function ID (line 12) | function ID(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0...
  function JD (line 12) | function JD(a,b){a=a|0;b=b|0;return (c[c[b>>2]>>2]|0)-(c[c[a>>2]>>2]|0)|0}
  function KD (line 12) | function KD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0...
  function LD (line 12) | function LD(a,b,d,e,f,g,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var...
  function MD (line 12) | function MD(a,b,d,e,f,g,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var...
  function ND (line 12) | function ND(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=(c[b+4>>2]|0)-(c[d+4>>2]|...
  function OD (line 12) | function OD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=(c[d+4>>2]|0)+(c[b+4>>2]|...
  function PD (line 12) | function PD(a,b,d,e,f,g,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var...
  function QD (line 12) | function QD(a,b,d){a=a|0;b=b|0;d=d|0;a:do if((a|0)<1)a=0;else switch(c[d...
  function RD (line 12) | function RD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0...
  function SD (line 12) | function SD(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0...
  function TD (line 12) | function TD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0.0,k=0,l=0.0...
  function UD (line 12) | function UD(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0,k=0.0,l=0.0...
  function VD (line 12) | function VD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=BD(a,b,d,e)|0;if(...
  function WD (line 12) | function WD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0...
  function XD (line 12) | function XD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=l;l=l+16|...
  function YD (line 12) | function YD(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=...
  function ZD (line 12) | function ZD(a,b,c){a=a|0;b=b|0;c=c|0;return _D(xx(a,96546)|0,b,c)|0}
  function _D (line 12) | function _D(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0...
  function $D (line 12) | function $D(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;a:do if((a[b>>0]|0)==95){f=...
  function aE (line 12) | function aE(a){a=a|0;switch(a|0){case 1:{a=104980;break}case 2:{a=108399...
  function bE (line 12) | function bE(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0...
  function cE (line 12) | function cE(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;j=l;l=l...
  function dE (line 12) | function dE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0;i=l;l=l+16|0;e=i;h[...
  function eE (line 12) | function eE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0;k=l;l=l+16|...
  function fE (line 12) | function fE(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+16|0;i=...
  function gE (line 12) | function gE(b,d){b=b|0;d=d|0;var e=0;e=a[b>>0]|0;switch(e|0){case 91:{b=...
  function hE (line 12) | function hE(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0;f=l;l=l+16|0;d=f;e=+c2(a,...
  function iE (line 12) | function iE(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;a=kE(a,e)|0;e=...
  function jE (line 12) | function jE(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[b>>2]=C$(a,e...
  function kE (line 12) | function kE(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[b>>2]=i1(a,e...
  function lE (line 12) | function lE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l...
  function mE (line 12) | function mE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0...
  function nE (line 12) | function nE(a,b,c){a=a|0;b=b|0;c=c|0;return bE(a,b,c,0)|0}
  function oE (line 12) | function oE(a){a=a|0;return nE(a,0,0)|0}
  function pE (line 12) | function pE(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;e=c[a+12>>2]|0;if(a|0){...
  function qE (line 12) | function qE(a){a=a|0;switch(c[a>>2]|0){case 3:case 2:{D_(c[a+8+4>>2]|0);...
  function rE (line 12) | function rE(a){a=a|0;var b=0,d=0,e=0;switch(c[a>>2]|0){case 1:{e=a+40|0;...
  function sE (line 12) | function sE(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0...
  function tE (line 12) | function tE(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0...
  function uE (line 12) | function uE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=l;l=l+16|0;e=f;c[e>>2]=0;...
  function vE (line 12) | function vE(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;while(1){e=c[b>>2]|...
  function wE (line 12) | function wE(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0,g=0,i=0;g=0;d=0.0;while(1...
  function xE (line 12) | function xE(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=+e;f=+f;g=g|0;var i=0.0,j=0...
  function yE (line 12) | function yE(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=+e;f=+f;g=g|0;var i=0.0,j=0...
  function zE (line 12) | function zE(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=+e;f=+f;g=g|0;var i=0.0,j=0...
  function AE (line 12) | function AE(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=+e;f=+f;g=g|0;var i=0.0,j=0...
  function BE (line 12) | function BE(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=+e;f=+f;g=g|0;var i=0,j=0,k...
  function CE (line 12) | function CE(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=f|0;var g=0,i=0,j...
  function DE (line 12) | function DE(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=+e;f=+f;g=g|0;var i=0.0,j=0...
  function EE (line 12) | function EE(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=+e;f=+f;g=g|0;var i=0;g=l;l...
  function FE (line 12) | function FE(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0.0,j...
  function GE (line 12) | function GE(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0;f=c[a>>2]|0;d=+h[b>>3]-...
  function HE (line 12) | function HE(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0...
  function IE (line 12) | function IE(a,b,d,e,f,g,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var...
  function JE (line 12) | function JE(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;var f=0.0,g=0.0,i=0....
  function KE (line 12) | function KE(a,b,d,e,f,g,i){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;g=+g;i=i|0;var j...
  function LE (line 12) | function LE(a,b,d,e,f,g,i){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;g=+g;i=i|0;var j...
  function ME (line 12) | function ME(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;g=i+8|0;f=...
  function NE (line 12) | function NE(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=l;l=l+16|0;f=uH(304)|0;if...
  function OE (line 12) | function OE(a){a=a|0;var b=0;a=a+16|0;b=c[a>>2]|0;if(!b)qa(96876,96880,1...
  function PE (line 12) | function PE(d,e,f,g,h,i,j){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var...
  function QE (line 12) | function QE(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=l;l=l+80|...
  function RE (line 12) | function RE(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=l;l=l+144|0;h=i;g...
  function SE (line 12) | function SE(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,i=0.0,j=0,k=0.0,m=0.0...
  function TE (line 12) | function TE(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0.0,k=0.0,m=0.0,n...
  function UE (line 12) | function UE(a){a=a|0;D_(c[a+4>>2]|0);D_(c[a+8>>2]|0);D_(a);return}
  function VE (line 12) | function VE(b){b=b|0;var d=0.0,e=0,f=0,g=0;f=l;l=l+16|0;e=f;b=A$(b,59)|0...
  function WE (line 12) | function WE(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,i=0,j=0,k=0,m=0.0...
  function XE (line 12) | function XE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=c[a+16>>2]|0;e=c[...
  function YE (line 12) | function YE(a,b){a=a|0;b=b|0;var c=0,d=0.0,e=0,f=0,g=0,i=0.0,j=0.0,k=0.0...
  function ZE (line 12) | function ZE(a){a=a|0;var b=0,d=0,e=0,f=0,g=0.0,h=0,i=0;b=l;l=l+48|0;d=b+...
  function _E (line 12) | function _E(b,d){b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0,j=0,k=0,m=0,n=0,o=0,p...
  function $E (line 12) | function $E(a,b){a=a|0;b=b|0;var c=0.0,d=0;c=+h[b>>3];d=a+16|0;if(c>+h[d...
  function aF (line 12) | function aF(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0,i=0,j=0,k=0,m...
  function bF (line 12) | function bF(b,c,d,e){b=b|0;c=+c;d=+d;e=e|0;var f=0.0,g=0,i=0,j=0,k=0.0,m...
  function cF (line 12) | function cF(a){a=a|0;if((c[a>>2]|0)==7)mH(c[a+112>>2]|0,1);return}
  function dF (line 12) | function dF(b,d){b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0.0,j=0,k=0,m=0,n=0.0...
  function eF (line 12) | function eF(a,b){a=a|0;b=b|0;var d=0;d=NE(a)|0;c[d+4>>2]=0;c[d+8>>2]=b;c...
  function fF (line 12) | function fF(b,c){b=b|0;c=c|0;var d=0,e=0,f=0,g=0;WO(b,131718);d=xx(c,137...
  function gF (line 12) | function gF(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;e=...
  function hF (line 12) | function hF(a){a=a|0;return (c[a+160>>2]|0)<=(c[a+156>>2]|0)|0}
  function iF (line 12) | function iF(a){a=a|0;var b=0;b=c[(c[a>>2]|0)+316>>2]|0;return c[((b|0)==...
  function jF (line 12) | function jF(a){a=a|0;var b=0,d=0;d=a+172|0;b=c[d+4>>2]|0;a=a+196|0;c[a>>...
  function kF (line 12) | function kF(a){a=a|0;var b=0,d=0;d=c[a+196>>2]|0;if(((d|0)>-1?(d|0)<(c[a...
  function lF (line 12) | function lF(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0...
  function mF (line 12) | function mF(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;h=l;l=l+32|0;d=...
  function nF (line 12) | function nF(a,b){a=a|0;b=b|0;var d=0;d=c[b>>2]|0;if(!d){d=a+160|0;c[d>>2...
  function oF (line 12) | function oF(a){a=a|0;AO(a);OE(a);return}
  function pF (line 12) | function pF(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=(c[d+4>>2]|0)+(c[b+4>>2]|...
  function qF (line 12) | function qF(a){a=a|0;var b=0.0,d=0.0,e=0.0,f=0,g=0.0,i=0,j=0,k=0,m=0,n=0...
  function rF (line 12) | function rF(b,d){b=b|0;d=d|0;var e=0,f=0.0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p...
  function sF (line 12) | function sF(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=(c[a>>2]|0)+28|0;...
  function tF (line 12) | function tF(e,f,i){e=e|0;f=f|0;i=i|0;var j=0,k=0,m=0,n=0,o=0.0,p=0,q=0,r...
  function uF (line 12) | function uF(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;j=l;l=l+32|...
  function vF (line 12) | function vF(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=l;l=l+32|0;g=h;e=...
  function wF (line 12) | function wF(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+16|0;a=1;while(1){e=c[d>>2]...
  function xF (line 12) | function xF(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+16|0;a=1;while(1){e=c[d>>2]...
  function yF (line 12) | function yF(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+64|0;i=...
  function zF (line 12) | function zF(b,d){b=b|0;d=d|0;var e=0,f=0;a:do if((c[b+156>>2]|0)>=2?(e=N...
  function AF (line 12) | function AF(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0...
  function BF (line 12) | function BF(d,f,g){d=d|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0.0,n=0,o=0,p=0,q...
  function CF (line 12) | function CF(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0...
  function DF (line 12) | function DF(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0...
  function EF (line 12) | function EF(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;j=l...
  function FF (line 12) | function FF(b,d,e,f,g,h,i,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0...
  function GF (line 12) | function GF(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0;d=c[a+16>>2]|0;...
  function HF (line 12) | function HF(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0...
  function IF (line 12) | function IF(a,b,c){a=a|0;b=+b;c=+c;h[a>>3]=b;h[a+8>>3]=c;return}
  function JF (line 12) | function JF(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0.0,i=0.0,j=0,k=0;d=c[a+1...
  function KF (line 12) | function KF(a,b,d,e,f,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=+h;i=+i;var j...
  function LF (line 12) | function LF(b,d){b=b|0;d=d|0;var e=0,f=0;e=1;a:while(1){switch(a[b>>0]|0...
  function MF (line 12) | function MF(b){b=b|0;var d=0,e=0;d=c[46414]|0;a:do if(!d)e=7;else{d=yx(b...
  function NF (line 12) | function NF(a){a=a|0;if(a|0){D_(c[a+8>>2]|0);D_(a)}return}
  function OF (line 12) | function OF(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0;e=+h[b>>3]-+h...
  function PF (line 12) | function PF(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0...
  function QF (line 12) | function QF(a,b,c){a=+a;b=+b;c=+c;return +(c*.5*(1.0-a/b))}
  function RF (line 12) | function RF(a,b,c){a=+a;b=+b;c=+c;return +(c*.5)}
  function SF (line 12) | function SF(a,b,c){a=+a;b=+b;c=+c;return +(c*.5*(a/b))}
  function TF (line 12) | function TF(a,b,c){a=+a;b=+b;c=+c;b=a/b;return +((!(b<=.5)?1.0-b:b)*c)}
  function UF (line 12) | function UF(a,b,d,e){a=a|0;b=+b;d=d|0;e=e|0;var f=0.0,g=0,i=0,j=0,k=0,m=...
  function VF (line 12) | function VF(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0.0,f=0.0;e=+h[a+16>>3];d=+...
  function WF (line 12) | function WF(b,d){b=b|0;d=d|0;d=fz(d)|0;if((a[(c[d+16>>2]|0)+115>>0]|0)==...
  function XF (line 12) | function XF(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;var g=0,h=0,i=0,j=0,...
  function YF (line 12) | function YF(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=l;l=l+144|0;f=g+128|0...
  function ZF (line 12) | function ZF(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=+g;var i=0.0,j=...
  function _F (line 12) | function _F(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0...
  function $F (line 12) | function $F(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0;f=+h[b+8>>3];...
  function aG (line 12) | function aG(a,b){a=a|0;b=b|0;var d=0;d=vH(24)|0;c[d+16>>2]=0;c[d>>2]=c[a...
  function bG (line 12) | function bG(b){b=b|0;var c=0,d=0,e=0,f=0,g=0;c=b;f=b;a:while(1){e=0;whil...
  function cG (line 12) | function cG(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=c[b>>2]|0;while(1...
  function dG (line 12) | function dG(a){a=a|0;switch(a|0){case 0:case 44:case 41:case 40:{a=1;bre...
  function eG (line 12) | function eG(a,b){a=a|0;b=b|0;return fG(c[a>>2]|0,c[a+160>>2]|0,c[a+156>>...
  function fG (line 12) | function fG(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0...
  function gG (line 12) | function gG(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=a[d>>0]|0;if(!(h<...
  function hG (line 12) | function hG(b){b=b|0;var c=0;while(1){c=a[b>>0]|0;if(!(c<<24>>24)){b=1;b...
  function iG (line 12) | function iG(a,b){a=a|0;b=b|0;if((+h[a+16>>3]>=+h[b>>3]?+h[b+16>>3]>=+h[a...
  function jG (line 12) | function jG(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;a:do if((c[b+156>>2]|0)...
  function kG (line 12) | function kG(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+64|0;e=d+32|0;f=d;a...
  function lG (line 12) | function lG(a,d){a=a|0;d=d|0;var f=0.0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p...
  function mG (line 12) | function mG(a){a=a|0;MO(a);OE(a);return}
  function nG (line 12) | function nG(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l...
  function oG (line 12) | function oG(b){b=b|0;var d=0,e=0;b=OL(b,c[46387]|0,191979)|0;a:do if(!(a...
  function pG (line 12) | function pG(a){a=a|0;var b=0.0;if(((c[a+8>>2]|0)==4?(b=+h[a+16>>3],((~~(...
  function qG (line 12) | function qG(a,b,c){a=+a;b=+b;c=c|0;var d=0.0,e=0,f=0.0,g=0;f=6.283185307...
  function rG (line 12) | function rG(b,d){b=b|0;d=d|0;var e=0;a:do if((c[b+156>>2]|0)>=2?(e=NL(d,...
  function sG (line 12) | function sG(a,b){a=a|0;b=b|0;var d=0;d=NE(a)|0;c[d+4>>2]=1;c[d+8>>2]=b;c...
  function tG (line 12) | function tG(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;b=xx(b,138e3)|0;a:do if...
  function uG (line 12) | function uG(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,m=0;k=l;l=l...
  function vG (line 12) | function vG(a,b){a=a|0;b=b|0;GO(a,b);OE(a);return}
  function wG (line 12) | function wG(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,i=0,j=0,k=0.0,m=0.0,n=0,o=0...
  function xG (line 12) | function xG(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=c[b>>2]|0;f=g...
  function yG (line 12) | function yG(a,b){a=a|0;b=b|0;var d=0;d=c[b>>2]|0;c[a>>2]=c[b+4>>2];c[a+4...
  function zG (line 12) | function zG(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;g=d+16|0;f=1;while(1){d=c[g...
  function AG (line 12) | function AG(a){a=a|0;var b=0,d=0,e=0;b=c[46356]|0;if(!b){b=Cw(20524,c[45...
  function BG (line 12) | function BG(a,b,c){a=a|0;b=b|0;c=c|0;D_(b);return}
  function CG (line 12) | function CG(a){a=a|0;var b=0;b=c[46357]|0;if(!a){if((b|0)>0?(b=b+-1|0,c[...
  function DG (line 12) | function DG(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0...
  function EG (line 12) | function EG(a){a=a|0;var b=0;b=Sy(a)|0;while(1){if(!b)break;RG(a,b);b=Ty...
  function FG (line 12) | function FG(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0...
  function GG (line 12) | function GG(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=b+304|0;f=c[e>>2]|0;if(f|...
  function HG (line 12) | function HG(b){b=b|0;b=xx(b,97795)|0;a:do if(!b)b=0;else switch(a[b>>0]|...
  function IG (line 12) | function IG(b){b=b|0;var d=0.0,e=0;e=c[b>>2]|0;if(!(a[e+292>>0]|0)){if((...
  function JG (line 12) | function JG(b){b=b|0;var d=0;d=c[b>>2]|0;a:do if(!(a[d+293>>0]|0))switch...
  function KG (line 12) | function KG(b,d){b=b|0;d=d|0;var e=0.0,f=0;f=c[(c[b>>2]|0)+192>>2]|0;e=+...
  function LG (line 12) | function LG(b,d){b=b|0;d=d|0;var e=0.0,f=0.0,g=0,i=0.0,j=0.0,k=0.0,m=0,n...
  function MG (line 12) | function MG(b,d){b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0.0,j=0,k=0.0,m=0.0,n=0...
  function NG (line 12) | function NG(a,b){a=a|0;b=b|0;var c=0.0;c=+h[b>>3];h[a>>3]=+h[b+8>>3];h[a...
  function OG (line 12) | function OG(a,b,d){a=a|0;b=b|0;d=d|0;d=(d<<24>>24)+-66|0;switch(d>>>1|d<...
  function PG (line 12) | function PG(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=l;l=l+16|...
  function QG (line 12) | function QG(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l...
  function RG (line 12) | function RG(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0,g=0.0;d=c[b+16>>2]|0;g=...
  function SG (line 12) | function SG(a){a=a|0;a=c[(c[a+16>>2]|0)+8>>2]|0;if(a|0)TG(a);return}
  function TG (line 12) | function TG(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0...
  function UG (line 12) | function UG(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0...
  function VG (line 12) | function VG(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0.0,f=0.0,g=0.0,i=0,j=0.0...
  function WG (line 12) | function WG(a){a=a|0;var b=0,c=0.0;b=a+16|0;c=+h[b>>3];h[a+32>>3]=c;h[a+...
  function XG (line 12) | function XG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,g=0.0,i=0.0;if((c[4...
  function YG (line 12) | function YG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0.0,i=0,j=0,k=0;k=l...
  function ZG (line 12) | function ZG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0.0,i=0,j=0,k=0;k=l...
  function _G (line 12) | function _G(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,g=0.0;g=+h[c>...
  function $G (line 12) | function $G(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,g=0.0;f=+h[a>...
  function aH (line 12) | function aH(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+16|0;f=g+8|...
  function bH (line 12) | function bH(b,d){b=b|0;d=d|0;var e=0,f=0.0,g=0,i=0,j=0,k=0,m=0,n=0;n=l;l...
  function cH (line 12) | function cH(a){a=a|0;var b=0,d=0;d=l;l=l+16|0;b=d;a=OL(a,nx(a,0,98781,0)...
  function dH (line 12) | function dH(b){b=b|0;var d=0.0,e=0,f=0;e=xx(b,98739)|0;a:do if(e|0?(f=a[...
  function eH (line 12) | function eH(b,d,e){b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0,j=0,k=0,m=0,n=0...
  function fH (line 12) | function fH(b){b=b|0;var d=0,e=0,f=0.0,g=0.0,i=0;d=xx(b,105198)|0;do if(...
  function gH (line 12) | function gH(a){a=a|0;var b=0,d=0,e=0;e=a+16|0;d=c[e>>2]|0;b=c[d+8>>2]|0;...
  function hH (line 12) | function hH(a){a=a|0;var b=0,d=0;d=l;l=l+16|0;b=d;switch(a|0){case 0:{a=...
  function iH (line 12) | function iH(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;f=c[d>>...
  function jH (line 12) | function jH(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var i=0.0,j=0.0,k=0,m=0,n=0...
  function kH (line 12) | function kH(b,e,f,g,i,j){b=b|0;e=e|0;f=f|0;g=+g;i=i|0;j=j|0;var k=0,m=0,...
  function lH (line 12) | function lH(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0...
  function mH (line 12) | function mH(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;if(a|0){d=a;e=0;while(1...
  function nH (line 12) | function nH(d){d=d|0;var e=0;if(d|0){D_(c[d>>2]|0);e=d+72|0;if(a[d+82>>0...
  function oH (line 12) | function oH(d,e,f){d=d|0;e=e|0;f=f|0;var g=0.0,i=0,j=0.0,k=0,m=0,n=0,o=0...
  function pH (line 12) | function pH(a,b){a=a|0;b=b|0;return lH(a,b,1)|0}
  function qH (line 12) | function qH(a){a=a|0;return rH(a,0)|0}
  function rH (line 12) | function rH(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=c[46437]|...
  function sH (line 12) | function sH(b){b=b|0;var c=0,d=0;d=b+1|0;c=a[d>>0]|0;a:do if(c<<24>>24==...
  function tH (line 12) | function tH(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;d=c[46439]|0;if(!d)...
  function uH (line 12) | function uH(a){a=a|0;var b=0;if(!a)a=0;else{b=vH(a)|0;H3(b|0,0,a|0)|0;a=...
  function vH (line 12) | function vH(a){a=a|0;if(a){a=C_(a)|0;if(!a){E1(108658,14,1,c[15686]|0)|0...
  function wH (line 12) | function wH(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=F_(a,O(d,b)|0)|0;if(!((b|...
  function xH (line 12) | function xH(a,b){a=a|0;b=b|0;a=F_(a,b)|0;if((b|0)!=0&(a|0)==0)E1(108658,...
  function ol (line 13) | function ol(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0...
  function pl (line 13) | function pl(b,d){b=b|0;d=d|0;var e=0,f=0;f=l;l=l+16|0;e=f;if((b|0)!=0?(a...
  function ql (line 13) | function ql(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;d=+h[a>>3];if((+h[b>>3]<=d?...
  function rl (line 13) | function rl(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0,j=0.0,k...
  function sl (line 13) | function sl(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=(+h[c+8>>3]+ +h[b+8>>3]...
  function tl (line 13) | function tl(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0.0,g=0,i=0,j=0,k=0,m=0;m=l...
  function ul (line 13) | function ul(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;var g=0.0,i=0,j=...
  function vl (line 13) | function vl(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;var g=0.0,i=0,j=...
  function wl (line 13) | function wl(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0.0,g=0,i=0;f=+h[a+8>>3];e...
  function xl (line 13) | function xl(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0.0,g=0,i=0;f=+h[a>>3];e=f...
  function yl (line 13) | function yl(a,b){a=a|0;b=b|0;var c=0,d=0,e=0.0;c=l;l=l+16|0;d=c;e=+h[a+8...
  function zl (line 13) | function zl(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,q=0,r=0...
  function Al (line 13) | function Al(b){b=b|0;b=c[b+16>>2]|0;if(((a[b+156>>0]|0)==1?(c[b+176>>2]|...
  function Bl (line 13) | function Bl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+80|0;h=...
  function Cl (line 13) | function Cl(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0...
  function Dl (line 13) | function Dl(b){b=b|0;b=c[b+16>>2]|0;if(((a[b+156>>0]|0)==1?(c[b+184>>2]|...
  function El (line 13) | function El(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+80|0;h=...
  function Fl (line 13) | function Fl(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0...
  function Gl (line 13) | function Gl(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[b+16>>2]|0;a=(c[(c[a+16>>2]...
  function Hl (line 13) | function Hl(b,d){b=b|0;d=d|0;var e=0,f=0;while(1){f=c[b+16>>2]|0;if(!(a[...
  function Il (line 13) | function Il(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+544...
  function Jl (line 13) | function Jl(a,b,d){a=a|0;b=b|0;d=d|0;c[b>>2]=d;c[b+4>>2]=d+512;c[b+12>>2...
  function Kl (line 13) | function Kl(a){a=a|0;c[(c[a+16>>2]|0)+192>>2]=0;c[46023]=0;return}
  function Ll (line 13) | function Ll(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0...
  function Ml (line 13) | function Ml(a){a=a|0;var b=0,d=0,e=0,f=0;d=a+16|0;b=c[d>>2]|0;f=b+220|0;...
  function Nl (line 13) | function Nl(a){a=a|0;var b=0;a=c[(c[a>>2]|0)+12>>2]|0;while(1){if(!a)bre...
  function Ol (line 13) | function Ol(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;h=...
  function Pl (line 13) | function Pl(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=a+8|0;b=c[f>>2]|0;d=a+4|0...
  function Ql (line 13) | function Ql(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;f=c[b+16>>2]|0;g=f+232|0;c[...
  function Rl (line 13) | function Rl(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0...
  function Sl (line 13) | function Sl(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=c[b>>2]&3;i=c[((d|0)=...
  function Tl (line 13) | function Tl(a){a=a|0;var d=0,e=0,f=0,g=0;g=a+16|0;a=c[g>>2]|0;if(b[a+236...
  function Ul (line 13) | function Ul(b){b=b|0;var d=0,e=0,f=0.0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p...
  function Vl (line 13) | function Vl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0...
  function Wl (line 13) | function Wl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;g=a+16|0;f=...
  function Xl (line 13) | function Xl(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;a=c[(c[a+16>>2]|0)+...
  function Yl (line 13) | function Yl(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0...
  function Zl (line 13) | function Zl(a){a=a|0;c[46363]=1;rm(a);c[46363]=0;return}
  function _l (line 13) | function _l(a){a=a|0;c[46363]=2;rm(a);c[46363]=0;return}
  function $l (line 13) | function $l(a){a=a|0;var b=0;Az(a,134365,304,1)|0;dM(a);b=uH((e[(c[(ez(a...
  function am (line 13) | function am(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0...
  function bm (line 13) | function bm(a){a=a|0;var b=0,c=0;c=Sy(a)|0;while(1){if(!c)break;b=Ex(a,c...
  function cm (line 13) | function cm(a){a=a|0;if((c[46363]|0)!=0|(c[46025]|0)<0)Fn(a);if((fz(a)|0...
  function dm (line 13) | function dm(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0...
  function em (line 13) | function em(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0;k=l;l=l+48|...
  function fm (line 13) | function fm(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0;m=l...
  function gm (line 13) | function gm(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;if(by(a)|0){f=nx(a,2,99597,...
  function hm (line 13) | function hm(a){a=a|0;var b=0,d=0,e=0;d=Sy(a)|0;while(1){if(!d)break;b=Ex...
  function im (line 13) | function im(b,d){b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0.0,j=0.0,k=0.0,m=0,n=0...
  function jm (line 13) | function jm(b){b=b|0;var c=0,d=0;d=0;do{while(1){c=a[b>>0]|0;if(!(B$(c&2...
  function km (line 13) | function km(a,b,c){a=a|0;b=+b;c=+c;h[a>>3]=b;h[a+8>>3]=c;return}
  function lm (line 13) | function lm(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=l;l=l...
  function mm (line 13) | function mm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,g=0,i=0,j=0,k=0;i=l...
  function nm (line 13) | function nm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=a+16|0;d=c[e>>2]|0;g=...
  function om (line 13) | function om(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l...
  function pm (line 13) | function pm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=l;l=l+16|0;e=f+4|0;c[...
  function qm (line 13) | function qm(b,d){b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0.0,j=0,k=0,l=0.0;g=+...
  function rm (line 13) | function rm(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0...
  function sm (line 13) | function sm(a){a=a|0;var d=0,e=0,f=0,g=0;$M(a,2);f=KL(a,nx(a,0,89557,0)|...
  function tm (line 13) | function tm(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+1040|0;e=f;d=f+8|0;a:do...
  function um (line 13) | function um(b){b=b|0;var d=0,e=0,f=0;f=l;l=l+16|0;e=f;d=xx(b,89477)|0;a:...
  function vm (line 13) | function vm(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+32|0;g=h+16|0;f=h+8...
  function wm (line 13) | function wm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=xx(a,90975)|0;if(!e)if((b...
  function xm (line 13) | function xm(a){a=a|0;mM(a);$m(a,1);return}
  function ym (line 13) | function ym(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0...
  function zm (line 13) | function zm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0.0,j=0;g=l;l=l+4...
  function Am (line 13) | function Am(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0;j=l;l=l+16|0;g=...
  function Bm (line 13) | function Bm(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0.0;f=a+16|0;d=Sy(a)|...
  function Cm (line 13) | function Cm(a,b,d,e,f,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;i=i|0;var j=0,k=0...
  function Dm (line 13) | function Dm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=c[b>>2]&3;e=c[(c[(c[(...
  function Em (line 13) | function Em(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=0;while(1){if...
  function Fm (line 13) | function Fm(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var h=0,i=0,j=0,k=0,l=0,m=0...
  function Gm (line 13) | function Gm(a){a=a|0;var b=0,d=0;d=l;l=l+16|0;b=d;a=KL(a,nx(a,0,89205,0)...
  function Hm (line 13) | function Hm(a){a=a|0;var b=0,d=0,e=0;d=ay(a)|0;c[46026]=nx(a,1,99597,0)|...
  function Im (line 13) | function Im(a){a=a|0;var b=0.0;Az(a,134378,176,1)|0;eM(a)|0;b=+LL(a,c[46...
  function Jm (line 13) | function Jm(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0;a=uH(64)|0;e=a+8|0;f=d+...
  function Km (line 13) | function Km(a,b,c){a=a|0;b=b|0;c=c|0;D_(b);return}
  function Lm (line 13) | function Lm(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=c[b>>2]|0;e=c[d>>2]|0;if(...
  function Mm (line 13) | function Mm(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0.0;k=l;l...
  function Nm (line 13) | function Nm(a){a=a|0;return 0}
  function Om (line 13) | function Om(a){a=a|0;return 0}
  function Pm (line 13) | function Pm(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,i=0,j=0,k=0.0,m=0.0,n=0.0,o...
  function Qm (line 13) | function Qm(a,b,c,d){a=a|0;b=+b;c=+c;d=d|0;c=+h[d+8>>3]+c;h[a>>3]=+h[d>>...
  function Rm (line 13) | function Rm(a,b,c,d,e){a=a|0;b=+b;c=+c;d=d|0;e=e|0;c=+g[e+4>>2]*c+ +h[d+...
  function Sm (line 13) | function Sm(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0...
  function Tm (line 13) | function Tm(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=+h[c+8>>3]+ +h[b+8>>3];...
  function Um (line 13) | function Um(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0...
  function Vm (line 13) | function Vm(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0...
  function Wm (line 13) | function Wm(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0...
  function Xm (line 13) | function Xm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0.0,g=0.0,i=0,j=0.0,k=0.0,m=0...
  function Ym (line 13) | function Ym(a,b){a=a|0;b=b|0;return Wm(a,21,b)|0}
  function Zm (line 13) | function Zm(d,e,f){d=d|0;e=e|0;f=f|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0...
  function _m (line 13) | function _m(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0...
  function $m (line 13) | function $m(a,d){a=a|0;d=d|0;var e=0;e=b[(c[a+16>>2]|0)+136>>1]&14;if(d<...
  function an (line 13) | function an(a){a=a|0;var b=0,d=0,e=0,f=0;d=bn(a)|0;b=Sy(a)|0;while(1){if...
  function bn (line 13) | function bn(a){a=a|0;var b=0,d=0,e=0,f=0.0,g=0.0,i=0.0,j=0,k=0;a:do if((...
  function cn (line 13) | function cn(b){b=b|0;var d=0,e=0,f=0.0,g=0.0,i=0.0,j=0.0,k=0,m=0,n=0,o=0...
  function dn (line 13) | function dn(b,d,e){b=b|0;d=+d;e=+e;var f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o...
  function en (line 13) | function en(b,d,e){b=b|0;d=+d;e=+e;var f=0,g=0,i=0;i=b+16|0;g=c[i>>2]|0;...
  function fn (line 13) | function fn(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0;k=c[b+1...
  function gn (line 13) | function gn(b,d){b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0,j=0,k=0,m=0;k=l;l=l...
  function hn (line 13) | function hn(a){a=a|0;var b=0,d=0,e=0,f=0.0,g=0.0,i=0,j=0;i=l;l=l+16|0;d=...
  function jn (line 13) | function jn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0.0,j=0.0;g=l;l=l+16|...
  function kn (line 13) | function kn(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,l=0...
  function ln (line 13) | function ln(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,i=0,j=0,k=0,l=0.0,m=0,n=0,o...
  function mn (line 13) | function mn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0.0,i=0,j=0,k=0,m=0,n=0,o=0,p...
  function nn (line 13) | function nn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l...
  function on (line 13) | function on(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l...
  function pn (line 13) | function pn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0.0,m=0,n...
  function qn (line 13) | function qn(a,b,e,f,i,j,k,m,n){a=a|0;b=b|0;e=e|0;f=f|0;i=i|0;j=j|0;k=k|0...
  function rn (line 13) | function rn(b,d,e,f,i,j,k){b=b|0;d=d|0;e=e|0;f=f|0;i=i|0;j=j|0;k=k|0;var...
  function sn (line 13) | function sn(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0.0,i=0.0,j=0...
  function tn (line 13) | function tn(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0.0,i=0.0,j=0...
  function un (line 13) | function un(a){a=+a;return +(+C(+a)*a)}
  function vn (line 13) | function vn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,i=0.0;g=c[46366]|...
  function wn (line 13) | function wn(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0,g=0,i=0;i=uH(a<<2)|0;f=0...
  function xn (line 13) | function xn(a){a=a|0;if(a|0){D_(c[a>>2]|0);D_(a)}return}
  function yn (line 13) | function yn(b,d){b=b|0;d=d|0;var e=0.0,f=0.0,g=0,i=0,j=0,k=0,m=0,n=0,o=0...
  function zn (line 13) | function zn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;f=0;e=0...
  function An (line 13) | function An(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=l;l=l+16|0;f=...
  function Bn (line 13) | function Bn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,g=0,i=0,j=0,k=0;k=l...
  function Cn (line 13) | function Cn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,l=0;j=u...
  function Dn (line 13) | function Dn(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0,j=0,k=0;k=l;l=l+1...
  function En (line 13) | function En(a){a=a|0;return yn(a,0)|0}
  function Fn (line 13) | function Fn(a){a=a|0;a=a+16|0;D_(c[(c[a>>2]|0)+152>>2]|0);if(!(c[46363]|...
  function Gn (line 13) | function Gn(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;if(a|0){f=0;while(1){g=a+(f...
  function Hn (line 13) | function Hn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0;e=+(b|0);b=a+16|0;w...
  function In (line 13) | function In(a,b){a=a|0;b=b|0;Hn(a,b,2);return}
  function Jn (line 13) | function Jn(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0;e=+(b|0);f=+k2()*e;d=a+...
  function Kn (line 13) | function Kn(b,d){b=b|0;d=d|0;var e=0,f=0;f=l;l=l+16|0;e=f;if(0)E1(90071,...
  function Ln (line 13) | function Ln(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0.0,i=0,j=0,k=0,m=0,n=0,o...
  function Mn (line 13) | function Mn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0.0,k=0;i=l;l=l+3...
  function Nn (line 13) | function Nn(a,b){a=a|0;b=b|0;var e=0.0,f=0,g=0,i=0.0,j=0,k=0,m=0,n=0,o=0...
  function On (line 13) | function On(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,i=0,j=0,k=0,m=0,n...
  function Pn (line 13) | function Pn(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0,g=0,i=0,j=0,k=0,l=0,m=0...
  function Qn (line 13) | function Qn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0...
  function Rn (line 13) | function Rn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0.0,j=0,k=0,m=0,n...
  function Sn (line 13) | function Sn(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0;d=a+16|0;g=c[46030]...
  function Tn (line 13) | function Tn(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0,k=0,l=0;i=a+16|0;j=...
  function Un (line 13) | function Un(a){a=a|0;var b=0,d=0;b=(c[a+16>>2]|0)+124|0;if((c[b>>2]|0)>=...
  function Vn (line 13) | function Vn(){var a=0,b=0,d=0,e=0;b=c[46031]|0;if(!b)a=0;else{e=c[46030]...
  function Wn (line 13) | function Wn(a,b){a=a|0;b=b|0;var d=0,e=0;e=l;l=l+16|0;d=e;c[46030]=uH((b...
  function Xn (line 13) | function Xn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0.0,g=0,i=0,j=0,k=0;e=c[(c[a+...
  function Yn (line 13) | function Yn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;b=c[(c[b+16>>2]|0)+120>>2]|0...
  function Zn (line 13) | function Zn(a){a=a|0;$M(a,2);b[(c[a+16>>2]|0)+176>>1]=2;c[46366]=2;_n(a)...
  function _n (line 13) | function _n(a){a=a|0;var b=0,d=0,e=0,f=0;b=ay(a)|0;e=uH(b*56|0)|0;b=uH((...
  function $n (line 13) | function $n(a){a=a|0;var b=0.0;Az(a,134378,176,1)|0;eM(a)|0;b=+LL(a,c[46...
  function ao (line 13) | function ao(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0...
  function bo (line 13) | function bo(a,b){a=a|0;b=b|0;var c=0;c=Sy(a)|0;while(1){if(!c){c=0;break...
  function co (line 13) | function co(a){a=a|0;var b=0,c=0;b=Sy(a)|0;if(b|0){while(1){if(!b)break;...
  function eo (line 13) | function eo(a){a=a|0;D_(c[(c[a+16>>2]|0)+152>>2]|0);if((fz(a)|0)!=(a|0))...
  function fo (line 13) | function fo(a){a=a|0;go(a);if(!((ay(a)|0)==0?!(c[(c[a+16>>2]|0)+180>>2]|...
  function go (line 13) | function go(a){a=a|0;c[46377]=nx(a,1,105204,105210)|0;$M(a,2);b[(c[a+16>...
  function ho (line 13) | function ho(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;g=...
  function io (line 13) | function io(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=uH((ay(a)|0)<<2)|0;b=uH((...
  function jo (line 13) | function jo(a){a=a|0;zx(a,105204,105210)|0;return}
  function ko (line 13) | function ko(a){a=a|0;Az(a,134378,304,1)|0;return}
  function lo (line 13) | function lo(a){a=a|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;return}
  function mo (line 13) | function mo(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=a+8|0;d=(c[g>>2]|...
  function no (line 13) | function no(a){a=a|0;var b=0,d=0;b=Sy(a)|0;if(b|0){D_(c[(c[b+16>>2]|0)+1...
  function oo (line 13) | function oo(a){a=a|0;D_(c[(c[a+16>>2]|0)+152>>2]|0);if((fz(a)|0)!=(a|0))...
  function po (line 13) | function po(a){a=a|0;var d=0,e=0,f=0;qo(a);ro(a,0);so(a,0);to(a,0);d=c[a...
  function qo (line 13) | function qo(a){a=a|0;var d=0,e=0;$M(a,2);b[(c[a+16>>2]|0)+176>>1]=2;c[46...
  function ro (line 13) | function ro(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;g=...
  function so (line 13) | function so(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0.0,j=0.0,k=0.0,m=0.0...
  function to (line 13) | function to(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0.0,k=0.0,m=0.0,n...
  function uo (line 13) | function uo(a){a=a|0;var b=0;b=c[15686]|0;while(1){if((a|0)<=0)break;D1(...
  function vo (line 13) | function vo(a,b,c){a=a|0;b=+b;c=+c;h[a>>3]=b;h[a+8>>3]=c;return}
  function wo (line 13) | function wo(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=(+h[c+8>>3]+ +h[b+8>>3]...
  function xo (line 13) | function xo(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=+h[b+8>>3]-+h[c+8>>3];h...
  function yo (line 13) | function yo(a){a=a|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;return}
  function zo (line 13) | function zo(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=a+8|0;d=(c[g>>2]|...
  function Ao (line 13) | function Ao(a){a=a|0;var b=0;b=Sy(a)|0;while(1){if(!b)break;HM(b);b=Ty(a...
  function Bo (line 13) | function Bo(a){a=a|0;var b=0,d=0,e=0;b=a+16|0;a=1;while(1){e=c[b>>2]|0;d...
  function Co (line 13) | function Co(a){a=a|0;var b=0,d=0,e=0;Fz(a,1,134365,304,1);sM(a)|0;b=uH((...
  function Do (line 13) | function Do(a){a=a|0;var b=0;dM(a);b=uH((e[(c[(ez(a)|0)+16>>2]|0)+176>>1...
  function Eo (line 13) | function Eo(a,b){a=a|0;b=b|0;var d=0,e=0.0;Az(a,134378,176,1)|0;e=+LL(a,...
  function Fo (line 13) | function Fo(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0...
  function Go (line 13) | function Go(a){a=a|0;var b=0,c=0;c=Sy(a)|0;while(1){if(!c)break;b=Ex(a,c...
  function Ho (line 13) | function Ho(a){a=a|0;Io(a);a=a+16|0;D_(c[(c[a>>2]|0)+152>>2]|0);D_(c[(c[...
  function Io (line 13) | function Io(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=a+16|0;f=1;while(1){e=c[g...
  function Jo (line 13) | function Jo(a,b){a=a|0;b=b|0;c[b+4>>2]=nx(a,0,90626,0)|0;c[b+8>>2]=nx(a,...
  function Ko (line 13) | function Ko(a){a=a|0;var d=0,e=0;$M(a,2);d=uH(56)|0;e=a+16|0;c[(c[e>>2]|...
  function Lo (line 13) | function Lo(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0...
  function Mo (line 13) | function Mo(a){a=a|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;return}
  function No (line 13) | function No(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=a+8|0;d=(c[g>>2]|...
  function Oo (line 13) | function Oo(a){a=a|0;var b=0,c=0;b=l;l=l+64|0;c=b;Jo(a,c);Po(a,c);Qo(a);...
  function Po (line 13) | function Po(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0...
  function Qo (line 13) | function Qo(b){b=b|0;var d=0,e=0,f=0.0,g=0.0,i=0.0,j=0.0,k=0;d=Sy(b)|0;w...
  function Ro (line 13) | function Ro(a,b){a=a|0;b=b|0;var d=0,e=0,f=0.0,g=0.0,i=0,j=0,k=0.0,l=0,m...
  function So (line 13) | function So(a){a=a|0;var b=0,d=0,e=0.0,f=0.0,g=0.0;b=a+16|0;a=c[b>>2]|0;...
  function To (line 13) | function To(d,e){d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0...
  function Uo (line 13) | function Uo(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0,g=0,i=0,j=0,k=0,l=0;l=c[a...
  function Vo (line 13) | function Vo(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0.0,j...
  function Wo (line 13) | function Wo(a,b){a=a|0;b=b|0;var d=0,e=0;while(1){d=c[b>>2]|0;if(!d)brea...
  function Xo (line 13) | function Xo(a){a=a|0;D_(c[(c[a+16>>2]|0)+140>>2]|0);return}
  function Yo (line 13) | function Yo(a){a=a|0;var b=0;b=a+16|0;D_(c[(c[b>>2]|0)+112>>2]|0);D_(c[(...
  function Zo (line 13) | function Zo(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0,g=0.0,i=0,j=0,k=0,l=0,m=0...
  function _o (line 13) | function _o(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=+g;var i=0,j=0,k=0,l=0....
  function $o (line 13) | function $o(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;c=+h[a+8>>3];d=+h[b+8>>3];i...
  function ap (line 13) | function ap(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=nx(a,0,c,0)|0;do if(d|0){...
  function bp (line 13) | function bp(a,b){a=a|0;b=b|0;var d=0,f=0;b=az(a,b,1)|0;Az(b,134365,304,1...
  function cp (line 13) | function cp(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0.0,i=0,j=0,k=0,m=0,n...
  function dp (line 13) | function dp(a,d){a=a|0;d=d|0;var e=0,f=0,g=0;g=a+16|0;f=c[g>>2]|0;a=b[f+...
  function ep (line 13) | function ep(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=l;l=l+48|...
  function fp (line 13) | function fp(a){a=a|0;var d=0,e=0,f=0.0,g=0.0,i=0,j=0,k=0;j=4;i=C_(40)|0;...
  function gp (line 13) | function gp(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;g=i;e=a+16...
  function hp (line 13) | function hp(a){a=a|0;var b=0.0,d=0.0,e=0;e=l;l=l+16|0;c[45704]=1;c[45705...
  function ip (line 13) | function ip(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0,g=0,i=0,j=0;j=l;l=l+16|...
  function jp (line 13) | function jp(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0,g=0,i=0,j=0;if(+h[22858]=...
  function kp (line 13) | function kp(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0.0,j=0.0,k=0,l=0.0,m...
  function lp (line 13) | function lp(a){a=a|0;var b=0;b=c[45708]|0;return +(+h[22858]*+(b-a|0)/+(...
  function mp (line 13) | function mp(a,b,d,e){a=a|0;b=+b;d=d|0;e=e|0;var f=0,g=0,i=0,j=0.0;if(!(b...
  function np (line 13) | function np(a,b,d){a=a|0;b=+b;d=d|0;var e=0,f=0,g=0;if(!(b<=0.0)){e=Sy(a...
  function op (line 13) | function op(){h[22858]=-1.0;return}
  function pp (line 13) | function pp(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0,g=0;g=c[(c[b+16>>2]|0)+...
  function qp (line 13) | function qp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,g=0.0,i=0.0,j=0,k=0...
  function rp (line 13) | function rp(b,d,e){b=b|0;d=+d;e=e|0;var f=0.0,g=0.0,i=0.0,j=0.0,k=0,l=0,...
  function sp (line 13) | function sp(a,b,d,e,f){a=a|0;b=b|0;d=+d;e=+e;f=+f;var g=0.0,i=0,j=0;g=d;...
  function tp (line 13) | function tp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;f=c[b+8>>2]|0;g...
  function up (line 13) | function up(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0,k...
  function vp (line 13) | function vp(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=l;l=l+16|0;g=h;e=...
  function wp (line 13) | function wp(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,i=0,j=0,k=0,m=0.0,n=0.0,o=0...
  function xp (line 13) | function xp(a){a=a|0;var b=0,c=0,d=0,e=0;b=0;e=Sy(a)|0;while(1){if(!e)br...
  function yp (line 13) | function yp(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0.0;e=+h[b+16>>3];h[171]=...
  function zp (line 13) | function zp(a){a=a|0;var b=0;b=c[344]|0;return +(+h[22872]*+(b-a|0)/+(b|...
  function Ap (line 13) | function Ap(b,d){b=b|0;d=+d;var e=0,f=0,g=0,i=0.0,j=0,k=0.0,l=0.0,m=0.0;...
  function Bp (line 13) | function Bp(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0,g=0;g=c[(c[b+16>>2]|0)+...
  function Cp (line 13) | function Cp(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0,g=0.0,i=0,j=0.0,k=0.0,l...
  function Dp (line 13) | function Dp(b,d){b=b|0;d=d|0;var e=0.0,f=0.0,i=0.0,j=0.0,k=0,l=0;k=c[d+1...
  function Ep (line 13) | function Ep(b){b=b|0;var d=0.0,e=0.0;b=c[b+16>>2]|0;d=+h[b+32>>3];if(!(a...
  function Fp (line 13) | function Fp(a,b,d,e,f){a=a|0;b=b|0;d=+d;e=+e;f=+f;var g=0,i=0;while(1){i...
  function Gp (line 13) | function Gp(a){a=a|0;$M(a,2);b[(c[a+16>>2]|0)+176>>1]=2;c[46366]=2;Hp(a)...
  function Hp (line 13) | function Hp(a){a=a|0;var b=0,d=0,e=0,f=0;e=uH((ay(a)|0)<<2)|0;b=uH(((ay(...
  function Ip (line 13) | function Ip(a){a=a|0;var b=0.0;Az(a,134378,176,1)|0;eM(a)|0;b=+LL(a,c[46...
  function Jp (line 13) | function Jp(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l...
  function Kp (line 13) | function Kp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;b=az(a,b,1)|0;Az(b,134365,3...
  function Lp (line 13) | function Lp(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;h=l;l=l+48|0;b=h+32...
  function Mp (line 13) | function Mp(a){a=a|0;var b=0,d=0,e=0;b=Sy(a)|0;while(1){if(!b)break;d=c[...
  function Np (line 13) | function Np(a){a=a|0;if(ay(a)|0){Gp(a);Lp(a);D_(c[(c[(Sy(a)|0)+16>>2]|0)...
  function Op (line 13) | function Op(a){a=a|0;var b=0,d=0,e=0;b=Sy(a)|0;if(b|0){e=a+16|0;Pp(c[(c[...
  function Pp (line 13) | function Pp(a){a=a|0;var b=0,d=0;d=Sy(a)|0;while(1){if(!d)break;b=Ex(a,d...
  function Qp (line 13) | function Qp(a){a=a|0;var b=0,d=0,e=0.0,f=0,g=0.0,i=0.0,j=0.0,k=0,m=0,n=0...
  function Rp (line 13) | function Rp(b,d){b=b|0;d=d|0;var e=0.0,f=0,g=0;g=l;l=l+16|0;f=g;b=xx(b,9...
  function Sp (line 13) | function Sp(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=xx(a,91095)|0;return Tp(a...
  function Tp (line 13) | function Tp(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0...
  function Up (line 13) | function Up(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e;g=...
  function Vp (line 13) | function Vp(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;h=l;l=l+16|...
  function Wp (line 13) | function Wp(a){a=a|0;var b=0,d=0.0,e=0,f=0,g=0.0,i=0,j=0,k=0,m=0;m=l;l=l...
  function Xp (line 13) | function Xp(b){b=b|0;var d=0,e=0,f=0,i=0.0,j=0.0,k=0,m=0,n=0,o=0;n=l;l=l...
  function Yp (line 13) | function Yp(){var a=0,b=0;a=c[46099]|0;b=0;while(1){if((b|0)>=(c[46084]|...
  function Zp (line 13) | function Zp(b){b=b|0;var d=0,e=0,f=0,g=0.0,i=0.0,j=0.0,k=0.0,m=0,n=0,o=0...
  function _p (line 13) | function _p(){var a=0,b=0,d=0,e=0;d=l;l=l+16|0;b=d;if(bq(0)|0){cq();a=0;...
  function $p (line 13) | function $p(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i+8|0;g...
  function aq (line 13) | function aq(){var a=0,b=0,d=0,e=0;d=c[46084]|0;a=c[46099]|0;b=0;while(1)...
  function bq (line 13) | function bq(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0...
  function cq (line 13) | function cq(){var a=0,b=0,d=0,e=0.0,f=0,g=0.0,i=0,j=0,k=0,l=0,m=0,n=0;nq...
  function dq (line 13) | function dq(a){a=a|0;var b=0.0,d=0.0,e=0.0,f=0,g=0.0,i=0,j=0,k=0;if(a|0)...
  function eq (line 13) | function eq(){var a=0;a=c[46077]|0;if(a>>>0<(c[46078]|0)>>>0){c[46077]=a...
  function fq (line 13) | function fq(){var a=0,b=0,d=0;a=c[46099]|0;jq();d=(c[46076]|0)==0;b=0;wh...
  function gq (line 13) | function gq(){var a=0,b=0,c=0,d=0.0,e=0.0,f=0.0,g=0.0,i=0.0,j=0.0;a=l;l=...
  function hq (line 13) | function hq(){Hr();Jr();Kt();nr();return}
  function iq (line 13) | function iq(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0.0,f=0.0;f=+h[a>>3];h[22...
  function jq (line 13) | function jq(){var a=0,b=0.0,d=0.0,e=0.0,f=0.0,g=0,i=0,j=0,k=0,l=0,m=0,n=...
  function kq (line 13) | function kq(a){a=a|0;var b=0.0,d=0.0,e=0.0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o...
  function lq (line 13) | function lq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0;d=+h[b+8>>3];...
  function mq (line 13) | function mq(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;h[d>>3]=(+h[b>>3]+ ...
  function nq (line 13) | function nq(){var a=0,b=0,d=0,e=0;a=c[46075]|0;if(!a){a=vH(c[46084]<<2)|...
  function oq (line 13) | function oq(a,b){a=a|0;b=b|0;var d=0.0,e=0.0;a=c[a>>2]|0;b=c[b>>2]|0;d=+...
  function pq (line 13) | function pq(){var a=0,b=0,d=0,e=0;d=c[46084]|0;a=0;b=c[46099]|0;while(1)...
  function qq (line 13) | function qq(b,e){b=b|0;e=e|0;var f=0,i=0,j=0,k=0,m=0,n=0.0,o=0.0;m=l;l=l...
  function rq (line 13) | function rq(b,d,e,f){b=b|0;d=d|0;e=+e;f=+f;var h=0,i=0,j=0,k=0,m=0,n=0,o...
  function sq (line 13) | function sq(a,b){a=a|0;b=b|0;var c=0,d=0;d=l;l=l+32|0;c=d;if((ay(a)|0)<2...
  function tq (line 13) | function tq(a){a=a|0;return sq(a,xx(a,91095)|0)|0}
  function uq (line 13) | function uq(b,e){b=b|0;e=e|0;var f=0,i=0,j=0,k=0,m=0,n=0.0,o=0.0;m=l;l=l...
  function vq (line 13) | function vq(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0,i=0,j=0,k=0...
  function wq (line 13) | function wq(a,b){a=a|0;b=b|0;c[c[a>>2]>>2]=b;c[a+12>>2]=0;c[a+8>>2]=1;re...
  function xq (line 13) | function xq(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+12|0;e=c[d>>2]|0;if((e|0)<(...
  function yq (line 13) | function yq(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+8|0;e=c[d>>2]|0;if((e|0)<(c...
  function zq (line 13) | function zq(a,b){a=a|0;b=b|0;c[a>>2]=vH(b<<2)|0;c[a+4>>2]=b;c[a+8>>2]=0;...
  function Aq (line 13) | function Aq(a){a=a|0;D_(c[a>>2]|0);return}
  function Bq (line 13) | function Bq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,i=0;if(!0)g=0;els...
  function Cq (line 13) | function Cq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,l=0.0;j=wn(...
  function Dq (line 13) | function Dq(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;var g=0.0,h=...
  function Eq (line 13) | function Eq(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;var ...
  function Fq (line 13) | function Fq(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;var g=0.0,h=...
  function Gq (line 13) | function Gq(a,b,d,e,f,i,j,k,m,n){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;i=i|0;j=j...
  function Hq (line 13) | function Hq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0;m=l;l=l...
  function Iq (line 13) | function Iq(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,i=0,j=0,k=0,l=0.0,m=0.0;f=c...
  function Jq (line 13) | function Jq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=b+-1|...
  function Kq (line 13) | function Kq(a,b){a=a|0;b=b|0;if((c[a+36>>2]|0)>(c[b+44>>2]|0))a=0;else a...
  function Lq (line 13) | function Lq(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;i=C...
  function Mq (line 13) | function Mq(a,b){a=a|0;b=b|0;if((c[a+32>>2]|0)>(c[b+40>>2]|0))a=0;else a...
  function Nq (line 13) | function Nq(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;i=C...
  function Oq (line 13) | function Oq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=a+32|0;e=b+32|0;if((c...
  function Pq (line 13) | function Pq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=a+32|0;e=b+32|0;if((c...
  function Qq (line 13) | function Qq(a,b){a=a|0;b=b|0;return ((c[a+12>>2]|0)-(c[a+4>>2]|0)+(c[b+1...
  function Rq (line 13) | function Rq(a,b){a=a|0;b=b|0;return ((c[a+8>>2]|0)-(c[a>>2]|0)+(c[b+8>>2...
  function Sq (line 13) | function Sq(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0...
  function Tq (line 13) | function Tq(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0...
  function Uq (line 13) | function Uq(a){a=a|0;var b=0,d=0,e=0,f=0;f=Sy(a)|0;while(1){if(!f)break;...
  function Vq (line 13) | function Vq(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0...
  function Wq (line 13) | function Wq(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;return (c[b>>2]|0)-(c[d>>2]...
  function Xq (line 13) | function Xq(b,d){b=b|0;d=d|0;var e=0,f=0,i=0.0,j=0.0,k=0.0,m=0.0,n=0.0,o...
  function Yq (line 13) | function Yq(a,b){a=a|0;b=b|0;var c=0.0,d=0,e=0.0,f=0.0,g=0.0,i=0,j=0,k=0...
  function Zq (line 13) | function Zq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0,j=0.0,k=0,l...
  function _q (line 13) | function _q(a,b){a=a|0;b=b|0;var c=0,d=0,e=0.0,f=0.0,g=0.0;d=1;e=0.0;whi...
  function $q (line 13) | function $q(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0,f=0,g=0,i=0.0;h[b>>3]...
  function ar (line 13) | function ar(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;c=+h[a>>3];d=+h[b>>3];if(!(...
  function br (line 13) | function br(a){a=a|0;var b=0;if(a|0){b=c[a+4>>2]|0;if(b|0)D_(b);b=c[a+8>...
  function cr (line 13) | function cr(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,m=0...
  function dr (line 13) | function dr(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0...
  function er (line 13) | function er(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=a+4|0;if(!(c[...
  function fr (line 13) | function fr(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0...
  function gr (line 13) | function gr(a){a=a|0;a=c[a>>2]|0;if(a|0)D_(a);return}
  function hr (line 13) | function hr(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;i=a...
  function ir (line 13) | function ir(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0.0,m...
  function jr (line 13) | function jr(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0...
  function kr (line 13) | function kr(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=a+4|0;if(!(c[...
  function lr (line 13) | function lr(a,b,d,e,f){a=a|0;b=b|0;d=+d;e=e|0;f=f|0;var h=0,i=0,j=0,k=0;...
  function mr (line 13) | function mr(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0;j=a...
  function nr (line 13) | function nr(){gt(184320,48);c[46083]=0;return}
  function or (line 13) | function or(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0.0,g=0.0,i=0;i=it(184320...
  function pr (line 13) | function pr(a){a=a|0;var b=0,d=0,e=0.0,f=0.0,g=0.0,i=0.0,j=0.0,k=0.0,l=0...
  function qr (line 13) | function qr(a,b,d,e,f){a=a|0;b=+b;d=+d;e=+e;f=+f;var g=0;g=a+32|0;Xr(c[g...
  function rr (line 13) | function rr(a,b,d){a=a|0;b=b|0;d=d|0;c[a+24+(b<<2)>>2]=d;Pt(d);if(c[a+24...
  function sr (line 13) | function sr(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0...
  function tr (line 13) | function tr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,h=0,i=0.0,j=0,k=0...
  function ur (line 13) | function ur(){c[46085]=~~+C(+(+((c[46084]|0)+4|0)));return}
  function vr (line 13) | function vr(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;c=+h[a>>3]-+h[b>>3];d=+h[a+...
  function wr (line 13) | function wr(a,b,c){a=a|0;b=b|0;c=c|0;h[a>>3]=+h[b>>3]-+h[c>>3];h[a+8>>3]...
  function xr (line 13) | function xr(a,b,c){a=a|0;b=b|0;c=c|0;h[a>>3]=+h[c>>3]+ +h[b>>3];h[a+8>>3...
  function yr (line 13) | function yr(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0;d=+h[b+8>>3];e=+h[b...
  function zr (line 13) | function zr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+48|0;f=...
  function Ar (line 13) | function Ar(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0...
  function Br (line 13) | function Br(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0,g=0.0,i=0;c[a+20>>2]=b;P...
  function Cr (line 13) | function Cr(a){a=a|0;var b=0.0,d=0,e=0.0;d=c[46088]|0;e=+(d|0);b=(+h[a+2...
  function Dr (line 13) | function Dr(a){a=a|0;var b=0,d=0,e=0;d=a+20|0;if(c[d>>2]|0){b=c[46086]|0...
  function Er (line 13) | function Er(){return (c[46087]|0)==0|0}
  function Fr (line 13) | function Fr(a){a=a|0;var b=0,d=0,e=0,f=0.0;b=c[46086]|0;d=c[46089]|0;whi...
  function Gr (line 13) | function Gr(){var a=0,b=0;b=(c[46086]|0)+((c[46089]|0)*40|0)+32|0;a=c[b>...
  function Hr (line 13) | function Hr(){D_(c[46086]|0);c[46086]=0;return}
  function Ir (line 13) | function Ir(){var a=0,b=0,d=0;c[46087]=0;c[46089]=0;a=c[46085]|0;b=a<<2;...
  function Jr (line 13) | function Jr(){gt(184368,40);D_(c[46095]|0);c[46095]=0;return}
  function Kr (line 13) | function Kr(){var a=0,b=0,d=0;gt(184368,40);a=c[46085]|0;b=a<<1;c[46096]...
  function Lr (line 13) | function Lr(b,d){b=b|0;d=d|0;var e=0;e=it(184368)|0;c[e+8>>2]=b;a[e+16>>...
  function Mr (line 13) | function Mr(b,d){b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0,j=0.0,k=0,l=0.0,m=0...
  function Nr (line 13) | function Nr(b,d){b=b|0;d=d|0;var e=0.0,f=0,g=0.0,i=0.0,j=0.0,k=0,l=0.0,m...
  function Or (line 13) | function Or(a,b){a=a|0;b=b|0;c[b>>2]=a;a=a+4|0;c[b+4>>2]=c[a>>2];c[c[a>>...
  function Pr (line 13) | function Pr(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=c[46096]|0;b=~~((+h[a>>3]...
  function Qr (line 13) | function Qr(a){a=a|0;var b=0,d=0;if((a|0)>-1&(c[46096]|0)>(a|0)?(d=(c[46...
  function Rr (line 13) | function Rr(a){a=a|0;var b=0,d=0;b=a+4|0;d=c[a>>2]|0;c[d+4>>2]=c[b>>2];c...
  function Sr (line 13) | function Sr(a){a=a|0;return c[a+4>>2]|0}
  function Tr (line 13) | function Tr(a){a=a|0;return c[a>>2]|0}
  function Ur (line 13) | function Ur(b){b=b|0;var d=0;d=c[b+8>>2]|0;if(!d)b=184588;else b=(a[b+16...
  function Vr (line 13) | function Vr(b){b=b|0;var d=0;d=c[b+8>>2]|0;if(!d)b=184588;else b=(a[b+16...
  function Wr (line 13) | function Wr(){gt(184400,24);return}
  function Xr (line 13) | function Xr(a,b,d){a=a|0;b=+b;d=+d;var e=0,f=0,g=0,i=0,j=0;j=l;l=l+32|0;...
  function Yr (line 13) | function Yr(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,g=0.0,i=0.0,j...
  function Zr (line 13) | function Zr(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=c[a+(d*20|0)>...
  function _r (line 13) | function _r(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=a+(b*20|0)|0;b=a+(b*20|0)...
  function $r (line 13) | function $r(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=a+(b*20|0)|0;b=a+(b*20|0)...
  function as (line 13) | function as(a,b){a=a|0;b=b|0;if(!(c[a+8>>2]|0))a=cs(a,b)|0;else a=bs(a,b...
  function bs (line 13) | function bs(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=b<<2;e=vH(O(f,b)|0)|0;f=v...
  function cs (line 13) | function cs(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;f=h;g=...
  function ds (line 13) | function ds(a,b){a=a|0;b=b|0;var d=0,e=0;e=c[a+8>>2]|0;es(a,b);d=bs(a,b)...
  function es (line 13) | function es(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0...
  function fs (line 13) | function fs(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=a+8|0;D_(c[e>>2]|0);c...
  function gs (line 13) | function gs(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0;f=0...
  function hs (line 13) | function hs(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;if((e|0)>(d|0)){c[46103]=a;...
  function is (line 13) | function is(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0;f=c[46103]|0;e=+g[f+(c[...
  function js (line 13) | function js(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=l;l=l+16|...
  function ks (line 13) | function ks(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0...
  function ls (line 13) | function ls(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=1;while(1){f=...
  function ms (line 13) | function ms(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0.0,i=0.0,j=0.0,k=0.0,m=0...
  function ns (line 13) | function ns(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0...
  function os (line 13) | function os(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0,i=0,j=0.0,k=0.0,m...
  function ps (line 13) | function ps(a,b){a=a|0;b=b|0;var d=0.0,e=0;e=c[a>>2]|0;a=c[b>>2]|0;d=+h[...
  function qs (line 13) | function qs(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0;m=l;l=l...
  function rs (line 13) | function rs(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0.0,j=0.0,k=0...
  function ss (line 13) | function ss(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0.0,i=0.0,j=0.0,k=0...
  function ts (line 13) | function ts(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0.0,j=0.0...
  function us (line 13) | function us(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0.0,j=0.0,k=0...
  function vs (line 13) | function vs(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0.0,i=0.0,j=0,k=0,m=0.0,n...
  function ws (line 13) | function ws(a,b,c){a=+a;b=+b;c=+c;return (a==b|b==c?0:(a<b?b<c:c<b)?1:-1...
  function xs (line 13) | function xs(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0.0,j=0;a:do if(!...
  function ys (line 13) | function ys(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0...
  function zs (line 13) | function zs(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0.0;f=0.0;e=1-b+c...
  function As (line 13) | function As(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;var f=0;f=1-b+c|0;e=...
  function Bs (line 13) | function Bs(a,b,c){a=a|0;b=b|0;c=c|0;return +(+C(+(+zs(a,b,c,a))))}
  function Cs (line 13) | function Cs(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;var f=0;f=1-b+c|0;e=...
  function Ds (line 13) | function Ds(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=1-b+c|0;d=d+(b<<3...
  function Es (line 13) | function Es(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0.0,i=0,j=0,k...
  function Fs (line 13) | function Fs(a,b,d,e,f,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;i=i|0;var j=0,k=0...
  function Gs (line 13) | function Gs(a,b,d,e,f,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;i=i|0;var j=0,k=0...
  function Hs (line 13) | function Hs(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var i=0,j=0,k=0.0,l...
  function Is (line 13) | function Is(a,b){a=a|0;b=b|0;var c=0.0,d=0,e=0;c=0.0;d=b;e=a;while(1){if...
  function Js (line 13) | function Js(a,b){a=a|0;b=b|0;var c=0;c=0;while(1){if((c|0)>=(a|0))break;...
  function Ks (line 13) | function Ks(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,i=0,j=0,k=0,l=0,m...
  function Ls (line 13) | function Ls(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,i=0,j=0,k=0;j=0;w...
  function Ms (line 13) | function Ms(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=0;while(1){if((e|...
  function Ns (line 13) | function Ns(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=0;while(1){if((e|...
  function Os (line 13) | function Os(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;var e=0;e=0;while(1){if((e|0...
  function Ps (line 13) | function Ps(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=0;while(1){if((d|0)>=(a|0...
  function Qs (line 13) | function Qs(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0;d=0.0;e=0;while(1){if...
  function Rs (line 13) | function Rs(a,b){a=a|0;b=b|0;var c=0,d=0.0,e=0.0;c=0;d=-1.e+50;while(1){...
  function Ss (line 13) | function Ss(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0.0,i=0,j=0;j...
  function Ts (line 13) | function Ts(a,b){a=a|0;b=b|0;var c=0.0,d=0,e=0;c=0.0;d=b;e=a;while(1){if...
  function Us (line 13) | function Us(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0.0,h=0,i=0,j=0,k...
  function Vs (line 13) | function Vs(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=0;while(1){if((e|...
  function Ws (line 13) | function Ws(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=0;while(1){if((e|...
  function Xs (line 13) | function Xs(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;var e=0,f=0;e=0;while(1){if(...
  function Ys (line 13) | function Ys(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;var e=0;e=0;while(1){if((e|0...
  function Zs (line 13) | function Zs(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=0;while(1){if((e|0)>=(a|0...
  function _s (line 13) | function _s(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0;d=0.0;e=0;while(1){if...
  function $s (line 13) | function $s(a,b,c){a=a|0;b=+b;c=c|0;var d=0;d=0;while(1){if((d|0)>=(a|0)...
  function at (line 13) | function at(a,b,c){a=a|0;b=+b;c=c|0;var d=0;d=0;while(1){if((d|0)>=(a|0)...
  function bt (line 13) | function bt(a,b){a=a|0;b=b|0;var c=0.0,d=0,e=0.0;c=-10000000150474662198...
  function ct (line 13) | function ct(a,b){a=a|0;b=b|0;var c=0,d=0,e=0.0;c=0;while(1){if((c|0)>=(a...
  function dt (line 13) | function dt(a,b){a=a|0;b=b|0;var c=0,d=0,e=0.0;c=0;while(1){if((c|0)>=(a...
  function et (line 13) | function et(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0.0;d=0;while(1){if((d|0)...
  function ft (line 13) | function ft(a,b){a=a|0;b=b|0;var c=0,d=0,e=0.0;c=0;while(1){if((c|0)>=(a...
  function gt (line 13) | function gt(a,b){a=a|0;b=b|0;var d=0;c[a>>2]=0;if(b&3)if(!(4%(b>>>0)|0))...
  function ht (line 13) | function ht(a){a=a|0;var b=0,c=0;c=4;a:while(1){b=c;while(1){if((b|0)==(...
  function it (line 13) | function it(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a>>2]|0;if(!b){d=c[a+8>>2]|...
  function jt (line 13) | function jt(a,b){a=a|0;b=b|0;c[a>>2]=c[b>>2];c[b>>2]=a;return}
  function kt (line 13) | function kt(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,l=0...
  function lt (line 13) | function lt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,i=0,j=0,k=0,l=0,m=0;k...
  function mt (line 13) | function mt(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0.0,k...
  function nt (line 13) | function nt(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;f=l...
  function ot (line 13) | function ot(){c[46143]=0;D_(c[46144]|0);D_(c[46145]|0);D_(c[46146]|0);c[...
  function pt (line 13) | function pt(a){a=a|0;D_(c[a+36>>2]|0);return}
  function qt (line 13) | function qt(b,d,e,f){b=b|0;d=d|0;e=+e;f=+f;var g=0,i=0,j=0,k=0,m=0,n=0,o...
  function rt (line 13) | function rt(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;do if((b|0)==4){c=+h[a+8>>3...
  function st (line 13) | function st(a,b,d,e){a=a|0;b=b|0;d=+d;e=+e;var f=0,g=0.0,i=0,j=0,k=0.0,l...
  function tt (line 13) | function tt(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;h[a>>3]=+(b|0)*.01388...
  function ut (line 13) | function ut(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0.0,g=0.0,i=0.0,j...
  function vt (line 13) | function vt(b,d,e,f){b=b|0;d=d|0;e=+e;f=+f;var g=0,i=0,j=0,k=0,m=0,n=0,o...
  function wt (line 13) | function wt(a,b,c){a=a|0;b=+b;c=+c;h[a>>3]=b*.013888888888888888;h[a+8>>...
  function xt (line 13) | function xt(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;var e=0,f=0;e=0;while(1){if((...
  function yt (line 13) | function yt(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0...
  function zt (line 13) | function zt(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if((+h[a>>3]<=+h[d>>3]?+h[c...
  function At (line 13) | function At(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;f=c+8|0;e=0;whi...
  function Bt (line 13) | function Bt(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0.0,k...
  function Ct (line 13) | function Ct(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0;e=+h[a>>3];if((e<=+...
  function Dt (line 13) | function Dt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0,i=0,j=0.0,k=0.0,l...
  function Et (line 13) | function Et(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;j=vH(b<...
  function Ft (line 13) | function Ft(a,b,d,e,f,h,i,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;j...
  function Gt (line 13) | function Gt(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;g=0;while(1...
  function Ht (line 13) | function Ht(a,b,d,e,f,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=+h;var i=0.0,j=...
  function It (line 13) | function It(a){a=a|0;D_(c[c[a>>2]>>2]|0);D_(c[a>>2]|0);D_(c[a+8>>2]|0);D...
  function Jt (line 13) | function Jt(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0...
  function Kt (line 13) | function Kt(){gt(184592,24);c[46151]=0;return}
  function Lt (line 13) | function Lt(){return it(184592)|0}
  function Mt (line 13) | function Mt(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;c=+h[a>>3]-+h[b>>3];d=+h[a+...
  function Nt (line 13) | function Nt(a){a=a|0;var b=0;b=c[46151]|0;c[a+16>>2]=b;c[46151]=b+1;return}
  function Ot (line 13) | function Ot(a){a=a|0;var b=0,d=0;d=a+20|0;b=(c[d>>2]|0)+-1|0;c[d>>2]=b;i...
  function Pt (line 13) | function Pt(a){a=a|0;a=a+20|0;c[a>>2]=(c[a>>2]|0)+1;return}
  function Qt (line 13) | function Qt(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;var i=0.0,j=0,k=0,m=...
  function Rt (line 13) | function Rt(a,b){a=a|0;b=b|0;var c=0,d=0.0,e=0.0,f=0;c=0;d=0.0;while(1){...
  function St (line 13) | function St(a,b,d,e,f){a=a|0;b=b|0;d=+d;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,...
  function Tt (line 13) | function Tt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0.0,i=0,j=0,k=0,m=0,n=0,o...
  function Ut (line 13) | function Ut(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=+g;var i=0,j=0,...
  function Vt (line 13) | function Vt(a,b,d,e,f,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;i=i|0;var j=0,k=0...
  function Wt (line 13) | function Wt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,h=0,i=0,j=0,k=0.0,l...
  function Xt (line 13) | function Xt(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0.0,g=0,i=0,j=0,k...
  function Yt (line 13) | function Yt(b,d){b=b|0;d=d|0;var e=0.0,f=0.0,g=0.0,i=0,j=0,k=0,m=0,n=0,o...
  function Zt (line 13) | function Zt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=l;l=l+16|0;f=g+8|...
  function _t (line 13) | function _t(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;d=ay(a)|0;d=O(d,d)|0;b=Sy(a...
  function $t (line 13) | function $t(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;e=(ay(a)|0)<3;b=Sy(a)|0...
  function au (line 13) | function au(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=c[(c[b+16>>2]...
  function bu (line 13) | function bu(a){a=a|0;var b=0,d=0,e=0,f=0;d=Sy(a)|0;while(1){if(!d)break;...
  function cu (line 13) | function cu(a,b){a=a|0;b=b|0;h[(c[(c[b+16>>2]|0)+112>>2]|0)+40>>3]=6.283...
  function du (line 13) | function du(a,b){a=a|0;b=b|0;h[(c[(c[b+16>>2]|0)+112>>2]|0)+48>>3]=0.0;g...
  function eu (line 13) | function eu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0.0,k=0.0;i=l;l=l...
  function fu (line 13) | function fu(b,d){b=b|0;d=d|0;var e=0.0,f=0.0,g=0,i=0.0,j=0,k=0,m=0,n=0;n...
  function gu (line 13) | function gu(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0,g=0,i=0,j=0.0;d=c[(c[b+16...
  function hu (line 13) | function hu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0.0,i=0,j=0;e=c[(c[b+16>>...
  function iu (line 13) | function iu(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0...
  function ju (line 13) | function ju(a,b){a=a|0;b=b|0;var d=0,e=0;d=uH(8)|0;c[d>>2]=b;b=a+4|0;e=c...
  function ku (line 13) | function ku(a){a=a|0;var b=0,d=0;d=c[a>>2]|0;if(d){b=c[d>>2]|0;c[a>>2]=c...
  function lu (line 13) | function lu(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=c...
  function mu (line 13) | function mu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=0;g=Jx(a,b)|0;while(1...
  function nu (line 13) | function nu(a){a=a|0;var b=0,d=0,e=0,f=0.0,g=0;b=l;l=l+32|0;e=b;d=nx(a,1...
  function ou (line 13) | function ou(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0,i=0,j=0,k=0,l...
  function pu (line 13) | function pu(a){a=a|0;var b=0,d=0,e=0,f=0,g=0.0,i=0,j=0,k=0,m=0,n=0,o=0,p...
  function qu (line 13) | function qu(a){a=a|0;var b=0,d=0,e=0,f=0,g=0.0,i=0.0,j=0,k=0.0,m=0.0;f=l...
  function ru (line 13) | function ru(a){a=a|0;var b=0,d=0,e=0;e=c[a+64>>2]|0;b=a+48|0;d=0;while(1...
  function su (line 13) | function su(b){b=b|0;var d=0,e=0,f=0,g=0;g=l;l=l+48|0;f=g;d=g+8|0;e=c[46...
  function tu (line 13) | function tu(a,b){a=a|0;b=b|0;var d=0.0;d=+h[c[a>>2]>>3]-+h[c[b>>2]>>3];r...
  function uu (line 13) | function uu(a,b){a=a|0;b=b|0;var d=0;d=uH(72)|0;h[d>>3]=+wu(a,b);c[d+60>...
  function vu (line 13) | function vu(a,b){a=a|0;b=b|0;var d=0.0;d=+LL(c[a+56>>2]|0,b,0.0,0.0);if(...
  function wu (line 13) | function wu(a,b){a=a|0;b=b|0;var c=0.0;c=+LL(a,b,1.0,0.0);return +(c==0....
  function xu (line 13) | function xu(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0,i=0,j=0.0;i=l;l=l...
  function yu (line 13) | function yu(a,b,d,e,f,g,i,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;g=+g;i=+i;j=...
  function zu (line 13) | function zu(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;h[a>>3]=b;h[a+8>>3]=c;h...
  function Au (line 13) | function Au(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,i=0,j=0,k=0,m=0.0,n=0.0,o=0...
  function Bu (line 13) | function Bu(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0...
  function Cu (line 13) | function Cu(a){a=a|0;c[a>>2]=0;return}
  function Du (line 13) | function Du(a){a=a|0;if(a|0){D_(c[a+8>>2]|0);D_(a)}return}
  function Eu (line 13) | function Eu(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0...
  function Fu (line 13) | function Fu(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=Sy(d)...
  function Gu (line 13) | function Gu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=a+4|0;f=c[e>>2]|0;g=a...
  function Hu (line 13) | function Hu(b,d){b=b|0;d=d|0;var e=0.0,f=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0...
  function Iu (line 13) | function Iu(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0...
  function Ju (line 13) | function Ju(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;a[f+(c[(c[d...
  function Ku (line 13) | function Ku(a){a=a|0;var b=0;b=vH(24)|0;c[46153]=b;c[b>>2]=Cw(18100,c[45...
  function Lu (line 13) | function Lu(a){a=a|0;var b=0,d=0;b=vH(16)|0;c[b+12>>2]=0;d=vH(a*20|0)|0;...
  function Mu (line 13) | function Mu(a,b,d){a=a|0;b=b|0;d=d|0;d=Ou(c[46153]|0)|0;c[d>>2]=c[b>>2];...
  function Nu (line 13) | function Nu(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=(c[b>>2]|0)-(c[d>>2]|0)|0...
  function Ou (line 13) | function Ou(a){a=a|0;var b=0,d=0,e=0,f=0;f=a+8|0;a=c[f>>2]|0;b=c[a+4>>2]...
  function Pu (line 13) | function Pu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=a+12|0;d=c[f>>2]|0;if((d|...
  function Qu (line 13) | function Qu(a){a=a|0;var b=0;b=c[a>>2]|0;nb[c[b>>2]&63](b,0,64)|0;c[a+20...
  function Ru (line 13) | function Ru(a){a=a|0;yw(c[a>>2]|0)|0;Su(c[a+4>>2]|0);D_(c[a+16>>2]|0);D_...
  function Su (line 13) | function Su(a){a=a|0;var b=0;while(1){if(!a)break;b=c[a+12>>2]|0;D_(c[a>...
  function Tu (line 13) | function Tu(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;g=l;l=l...
  function Uu (line 13) | function Uu(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=a+20|0;a=c[e>>2]|0;c[e>>2...
  function Vu (line 13) | function Vu(a,b){a=a|0;b=b|0;Jw(c[a>>2]|0,b,a)|0;return}
  function Wu (line 13) | function Wu(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+32|0;f=e;c[f>>2...
  function Xu (line 13) | function Xu(a,b){a=a|0;b=b|0;if((ay(a)|0)==1){a=c[(c[(Sy(a)|0)+16>>2]|0)...
  function Yu (line 13) | function Yu(a){a=a|0;var b=0;b=ez(c[c[(c[(Sy(a)|0)+16>>2]|0)+112>>2]>>2]...
  function Zu (line 13) | function Zu(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+144|0;e=f;d=f+8|0;b=c[4...
  function _u (line 13) | function _u(a){a=a|0;Bv(a);return}
  function $u (line 13) | function $u(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=...
  function av (line 13) | function av(a,b){a=a|0;b=b|0;c[a>>2]=vH(b<<4)|0;c[a+4>>2]=b;c[a+8>>2]=0;...
  function bv (line 13) | function bv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0...
  function cv (line 13) | function cv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0...
  function dv (line 13) | function dv(a){a=a|0;D_(c[a>>2]|0);return}
  function ev (line 13) | function ev(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0;f=a+(b*20|0...
  function fv (line 13) | function fv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0.0,k=0,l...
  function gv (line 13) | function gv(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+4|0;if(!(c[d>>2]|0))a=0;els...
  function hv (line 13) | function hv(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0,g=0,i=0,j=0,k=0,m=0,n=0...
  function iv (line 13) | function iv(a){a=a|0;D_(c[a>>2]|0);return}
  function jv (line 13) | function jv(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0,g=0,i=0,j=0,k=0,m=0,n=0...
  function kv (line 13) | function kv(a,b,d,e,f,g,i,j){a=a|0;b=b|0;d=+d;e=+e;f=f|0;g=g|0;i=i|0;j=j...
  function lv (line 13) | function lv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0.0,g=0,i=0,j=0.0,k=0,l=0,m=0...
  function mv (line 13) | function mv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0,i=0,j=0,k=0,l=0;k...
  function nv (line 13) | function nv(a){a=a|0;c[a>>2]=0;c[a+4>>2]=0;return}
  function ov (line 13) | function ov(a){a=a|0;var b=0;b=uH(64)|0;nv(b+36|0);c[b+8>>2]=a;return b|0}
  function pv (line 13) | function pv(a){a=a|0;if(a|0){Lv(c[a+32>>2]|0);D_(a)}return}
  function qv (line 13) | function qv(a){a=a|0;return ay(c[a+8>>2]|0)|0}
  function rv (line 13) | function rv(a,b){a=a|0;b=b|0;var d=0,e=0;c[b+4>>2]=0;d=a+4|0;e=c[d>>2]|0...
  function sv (line 13) | function sv(a,b){a=a|0;b=b|0;var d=0;d=c[a>>2]|0;if(!d){c[a>>2]=b;a=a+4|...
  function tv (line 13) | function tv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;uv(a,b)...
  function uv (line 13) | function uv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=...
  function vv (line 13) | function vv(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0...
  function wv (line 13) | function wv(a,b){a=a|0;b=b|0;c[(c[(c[b+16>>2]|0)+120>>2]|0)+4>>2]=c[a>>2...
  function xv (line 13) | function xv(a){a=a|0;var b=0,d=0,e=0;b=c[a>>2]|0;if(!b)qa(135312,93172,6...
  function yv (line 13) | function yv(a,b){a=a|0;b=b|0;return ov(Av(a,b)|0)|0}
  function zv (line 13) | function zv(a,b){a=a|0;b=b|0;Xy(c[a+8>>2]|0,b,1)|0;c[(c[(c[b+16>>2]|0)+1...
  function Av (line 13) | function Av(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+144|0;f=d;e=d+8...
  function Bv (line 13) | function Bv(a){a=a|0;var b=0,d=0;b=c[a+36>>2]|0;while(1){if(!b)break;d=c...
  function Cv (line 13) | function Cv(a,b,c){a=a|0;b=b|0;c=c|0;Dv(a,b,+h[c+32>>3]);return}
  function Dv (line 13) | function Dv(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0,g=0,i=0;e=b+36|0;f=0;whi...
  function Ev (line 13) | function Ev(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;var g=0.0,i=0,j=0.0,...
  function Fv (line 13) | function Fv(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0.0,g=0.0,i=0,j=0,k=0.0;i=...
  function Gv (line 13) | function Gv(a,b,c){a=a|0;b=b|0;c=+c;var d=0.0,e=0.0;e=+h[b+16>>3];d=+h[a...
  function Hv (line 13) | function Hv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;var f=0.0,g=0.0,i=0,j=0.0,k=...
  function Iv (line 13) | function Iv(a,b,d,e){a=a|0;b=+b;d=+d;e=+e;var f=0,g=0.0,i=0.0,j=0.0,k=0,...
  function Jv (line 13) | function Jv(a,b,d,e){a=a|0;b=+b;d=+d;e=+e;var f=0.0,g=0,i=0,j=0.0,k=0.0,...
  function Kv (line 13) | function Kv(){return uH(12)|0}
  function Lv (line 13) | function Lv(a){a=a|0;var b=0,d=0;if(a|0){b=c[a>>2]|0;while(1){if(!b)brea...
  function Mv (line 13) | function Mv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=Nv(d)|0;d=a+8|0;c[d>>...
  function Nv (line 13) | function Nv(a){a=a|0;var b=0;b=uH(12)|0;c[b>>2]=a;return b|0}
  function Ov (line 13) | function Ov(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=c[a>>2]|0;d=b;while(1){if...
  function Pv (line 13) | function Pv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=c[a>>2]|0;if((d|0)!=(b|0)...
  function Qv (line 13) | function Qv(a){a=a|0;var b=0,d=0,e=0;d=Kv()|0;e=d+4|0;b=0;while(1){a=c[a...
  function Bb (line 14) | function Bb(a){a=a|0;var b=0;b=l;l=l+a|0;l=l+15&-16;return b|0}
  function Cb (line 14) | function Cb(){return l|0}
  function Db (line 14) | function Db(a){a=a|0;l=a}
  function Eb (line 14) | function Eb(a,b){a=a|0;b=b|0;l=a;m=b}
  function Fb (line 14) | function Fb(a,b){a=a|0;b=b|0;if(!o){o=a;p=b}}
  function Gb (line 14) | function Gb(a){a=a|0;z=a}
  function Hb (line 14) | function Hb(){return z|0}
  function Ib (line 14) | function Ib(a){a=a|0;c[45884]=a;return 0}
  function Jb (line 14) | function Jb(){return c[45884]|0}
  function Kb (line 14) | function Kb(a,b){a=a|0;b=b|0;Oa(0,a|0,b|0)|0;return}
  function Lb (line 14) | function Lb(a){a=a|0;c[46369]=a;return}
  function Mb (line 14) | function Mb(a){a=a|0;if(a|0)c[46363]=a;return}
  function Nb (line 14) | function Nb(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|...
  function Ob (line 14) | function Ob(a){a=a|0;var d=0,e=0,f=0,g=0;g=l;l=l+16|0;d=g+4|0;e=g;f=c[(c...
  function Pb (line 14) | function Pb(a){a=a|0;var b=0,d=0,e=0,f=0;d=c[(c[a+16>>2]|0)+8>>2]|0;if(!...
  function Qb (line 14) | function Qb(b){b=b|0;var d=0,e=0;d=c[45889]|0;if((d|0)!=(c[45888]|0)){e=...
  function Rb (line 14) | function Rb(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;i=C_(8240)|...
  function Sb (line 14) | function Sb(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+1040|0;h=j;...
  function Tb (line 14) | function Tb(b){b=b|0;var d=0,e=0;e=c[(c[b+16>>2]|0)+8>>2]|0;d=c[c[45920]...
  function Ub (line 14) | function Ub(b){b=b|0;var d=0,e=0;e=c[(c[b+16>>2]|0)+8>>2]|0;b=c[45893]|0...
  function Vb (line 14) | function Vb(b){b=b|0;var d=0,e=0;e=c[(c[b+16>>2]|0)+8>>2]|0;b=c[45893]|0...
  function Wb (line 14) | function Wb(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0...
  function Xb (line 14) | function Xb(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0;i=l;l=l+1040|0;...
  function Yb (line 14) | function Yb(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;$b(a);ac(a);if(!d)bc(a,112,...
  function Zb (line 14) | function Zb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;$b(a);ac(a)...
  function _b (line 14) | function _b(a,b,c){a=a|0;b=b|0;c=c|0;$b(a);ac(a);bc(a,76,b,c);return}
  function $b (line 14) | function $b(b){b=b|0;var d=0,e=0,f=0,g=0.0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+1...
  function ac (line 14) | function ac(a){a=a|0;fc((c[a+16>>2]|0)+16|0);gc(a,75730,190678);return}
  function bc (line 14) | function bc(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;k=l...
  function cc (line 14) | function cc(a,b){a=a|0;b=b|0;var c=0,d=0;c=l;l=l+1024|0;d=c;dc(d,+h[b>>3...
  function dc (line 14) | function dc(a,b){a=a|0;b=+b;var c=0,d=0;c=l;l=l+16|0;d=c;h[d>>3]=b>-1.0e...
  function ec (line 14) | function ec(b,c){b=b|0;c=c|0;var d=0,e=0;d=A$(b,46)|0;if(!d){if(c|0){d=b...
  function fc (line 14) | function fc(b){b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+32|0;i=j+16|0;h...
  function gc (line 14) | function gc(a,b,d){a=a|0;b=b|0;d=d|0;hc(c[11416+(c[(c[a+16>>2]|0)+12>>2]...
  function hc (line 14) | function hc(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=l;l=l+1040|0;...
  function ic (line 14) | function ic(b,d,f,i){b=b|0;d=d|0;f=f|0;i=i|0;var j=0.0,k=0,m=0.0,n=0.0,o...
  function jc (line 14) | function jc(a){a=a|0;fc((c[a+16>>2]|0)+56|0);gc(a,66800,190678);return}
  function kc (line 14) | function kc(a,b){a=a|0;b=+b;var c=0,d=0;c=l;l=l+1024|0;d=c;dc(d,b);Ww(a,...
  function lc (line 14) | function lc(a,b,c){a=a|0;b=+b;c=c|0;var d=0,e=0,f=0;d=l;l=l+1040|0;f=d;e...
  function mc (line 14) | function mc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0;e=l;l=l+104...
  function nc (line 14) | function nc(a){a=a|0;var b=0;switch(c[a+64>>2]|0){case 0:{b=lC(c[a>>2]|0...
  function oc (line 14) | function oc(b){b=b|0;var d=0,e=0,f=0,g=0;f=l;l=l+16|0;d=f;e=c[(c[b+16>>2...
  function pc (line 14) | function pc(a,b){a=a|0;b=b|0;var d=0;c[a>>2]=c[a>>2]&-9;d=wA(a)|0;while(...
  function qc (line 14) | function qc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0...
  function rc (line 14) | function rc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if((fz(a)|0)!=(a|0)){e=b+1|...
  function sc (line 14) | function sc(a,b){a=a|0;b=b|0;a=nb[c[a>>2]&63](a,b,512)|0;if(!a)a=-1;else...
  function tc (line 14) | function tc(a,b){a=a|0;b=b|0;while(1){if((b|0)<=0)break;$B(a,90480)|0;b=...
  function uc (line 14) | function uc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;h=l...
  function vc (line 14) | function vc(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0...
  function wc (line 14) | function wc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l...
  function xc (line 14) | function xc(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=Sy(a)...
  function yc (line 14) | function yc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=Sy(a)...
  function zc (line 14) | function zc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=l...
  function Ac (line 14) | function Ac(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l...
  function Bc (line 14) | function Bc(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;g=d+4|0;if(a[g>>0]|0)b=RM(b...
  function Cc (line 14) | function Cc(a,b,c){a=a|0;b=b|0;c=c|0;qc(a,b,0,c);a=wA(a)|0;while(1){if(!...
  function Dc (line 14) | function Dc(b){b=b|0;var c=0;c=b+1|0;a:do if((a[b>>0]|0)==95){b=(a[c>>0]...
  function Ec (line 14) | function Ec(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l+16|0;f=...
  function Fc (line 14) | function Fc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0...
  function Gc (line 14) | function Gc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0.0;j=l;l=l+4...
  function Hc (line 14) | function Hc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0;e=l;l=l+32|0;...
  function Ic (line 14) | function Ic(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0.0,j=0;e=l;l=l...
  function Jc (line 14) | function Jc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,i=0,j=0,k=0,m=0,n=0...
  function Kc (line 14) | function Kc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+16|0;f=g;e=...
  function Lc (line 14) | function Lc(a,b,d){a=a|0;b=b|0;d=d|0;D_(c[b+8>>2]|0);D_(b);return}
  function Mc (line 14) | function Mc(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;b=l;l=l+32|0;d=...
  function Nc (line 14) | function Nc(a){a=a|0;$B(a,68500)|0;return}
  function Oc (line 14) | function Oc(a){a=a|0;c[45940]=2;return}
  function Pc (line 14) | function Pc(a){a=a|0;c[45940]=1;return}
  function Qc (line 14) | function Qc(a){a=a|0;c[45940]=2;return}
  function Rc (line 14) | function Rc(a){a=a|0;c[45940]=0;return}
  function Sc (line 14) | function Sc(a){a=a|0;c[45940]=2;return}
  function Tc (line 14) | function Tc(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0,k=0.0,m=0,n...
  function Uc (line 14) | function Uc(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;n=l...
  function Vc (line 14) | function Vc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0.0,j=0,k=0,m=0...
  function Wc (line 14) | function Wc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0.0,j=0,k=0,m...
  function Xc (line 14) | function Xc(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0...
  function Yc (line 14) | function Yc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0,j=0,k=0,m=0,n...
  function Zc (line 14) | function Zc(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=b;fC(a...
  function _c (line 14) | function _c(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;switch(c[a+144>>2]|0){cas...
  function $c (line 14) | function $c(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0.0,m...
  function ad (line 14) | function ad(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0...
  function bd (line 14) | function bd(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i;d=c[45...
  function cd (line 14) | function cd(b){b=b|0;var d=0,e=0,f=0;e=c[b+16>>2]|0;switch(c[b+64>>2]|0)...
  function dd (line 14) | function dd(a){a=a|0;var b=0;b=c[a+16>>2]|0;switch(c[a+64>>2]|0){case 2:...
  function ed (line 14) | function ed(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;g=c[a+16>>2...
  function fd (line 14) | function fd(b,d,e,f,g,i,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;j=j|0;k...
  function gd (line 14) | function gd(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;b=l;l=l+32|0;d=...
  function hd (line 14) | function hd(a){a=a|0;$B(a,68500)|0;return}
  function id (line 14) | function id(a){a=a|0;c[45946]=2;return}
  function jd (line 14) | function jd(a){a=a|0;c[45946]=1;return}
  function kd (line 14) | function kd(a){a=a|0;c[45946]=2;return}
  function ld (line 14) | function ld(a){a=a|0;c[45946]=0;return}
  function md (line 14) | function md(a){a=a|0;c[45946]=2;return}
  function nd (line 14) | function nd(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0,k=0,m=0,n=0...
  function od (line 14) | function od(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;n=l...
  function pd (line 14) | function pd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0.0,j=0,k=0,m=0...
  function qd (line 14) | function qd(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0.0,j=0,k=0,m...
  function rd (line 14) | function rd(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0...
  function sd (line 14) | function sd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0,j=0,k=0,m=0,n...
  function td (line 14) | function td(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=b;fC(a...
  function ud (line 14) | function ud(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;switch(c[a+144>>2]|0){cas...
  function vd (line 14) | function vd(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0.0,m...
  function wd (line 14) | function wd(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0...
  function xd (line 14) | function xd(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i;d=c[45...
  function yd (line 14) | function yd(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;d=l;l=l+16|0;b=d;$B(a,73228...
  function zd (line 14) | function zd(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=l;l=l+32|0;f=g+8|0;e=g;$B...
  function Ad (line 14) | function Ad(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;k=l;l=l...
  function Bd (line 14) | function Bd(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;b=l;l=l+16|0;f=b;c[...
  function Cd (line 14) | function Cd(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0...
  function Dd (line 14) | function Dd(a){a=a|0;var b=0,d=0,e=0;e=l;l=l+16|0;d=e;b=a+12|0;if(c[(c[b...
  function Ed (line 14) | function Ed(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=ry(c[(c[a+16>>...
  function Fd (line 14) | function Fd(a){a=a|0;$B(a,84457)|0;return}
  function Gd (line 14) | function Gd(a){a=a|0;$B(a,69014)|0;return}
  function Hd (line 14) | function Hd(a){a=a|0;$B(a,84457)|0;return}
  function Id (line 14) | function Id(a){a=a|0;$B(a,69014)|0;return}
  function Jd (line 14) | function Jd(a){a=a|0;$B(a,84457)|0;return}
  function Kd (line 14) | function Kd(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;e=l;l=l+16|...
  function Ld (line 14) | function Ld(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0,j=0,k=0,m=0,n=0;m...
  function Md (line 14) | function Md(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+32|0;f=g;c[...
  function Nd (line 14) | function Nd(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0;j=l;l=l...
  function Od (line 14) | function Od(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0...
  function Pd (line 14) | function Pd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0;g=l;l=l+16|0;f=...
  function Qd (line 14) | function Qd(a,b){a=a|0;b=b|0;$B(a,68745)|0;$B(a,b)|0;$B(a,150517)|0;return}
  function Rd (line 14) | function Rd(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0...
  function Sd (line 14) | function Sd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0.0,i=0.0;f=l;l=l+32|0;e=...
  function Td (line 14) | function Td(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0;m=l;l=l+16|0;k=...
  function Ud (line 14) | function Ud(b){b=b|0;var d=0;$B(b,74734)|0;d=xx(c[(c[b>>2]|0)+168>>2]|0,...
  function Vd (line 14) | function Vd(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0.0,k=0.0,m=0.0;i=l;l=l+4...
  function Wd (line 14) | function Wd(a){a=a|0;$B(a,74561)|0;return}
  function Xd (line 14) | function Xd(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;se(a,b,0,98484,c[(c[a+16>>2...
  function Yd (line 14) | function Yd(a){a=a|0;$B(a,74409)|0;return}
  function Zd (line 14) | function Zd(b){b=b|0;var d=0,e=0,f=0,g=0;e=l;l=l+16|0;f=e;g=c[b+16>>2]|0...
  function _d (line 14) | function _d(a){a=a|0;$B(a,74409)|0;return}
  function $d (line 14) | function $d(a){a=a|0;var b=0,d=0;d=c[a+16>>2]|0;b=d+8|0;se(a,c[d+212>>2]...
  function ae (line 14) | function ae(a){a=a|0;$B(a,74409)|0;return}
  function be (line 14) | function be(a){a=a|0;var b=0,d=0,e=0;d=c[a+16>>2]|0;b=c[a+160>>2]|0;if((...
  function ce (line 14) | function ce(a){a=a|0;$B(a,74409)|0;return}
  function de (line 14) | function de(a){a=a|0;var b=0,d=0;d=c[a+16>>2]|0;b=d+8|0;se(a,c[d+212>>2]...
  function ee (line 14) | function ee(a){a=a|0;$B(a,74409)|0;return}
  function fe (line 14) | function fe(b,c,d,e,f){b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;$B(b,74415)|0;if(f|...
  function ge (line 14) | function ge(a){a=a|0;$B(a,76239)|0;$B(a,74409)|0;return}
  function he (line 14) | function he(e,f,g){e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0...
  function ie (line 14) | function ie(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;switch(c|0){case 2:{d=pe(a,...
  function je (line 14) | function je(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;switch(d|0){case 2:...
  function ke (line 14) | function ke(a,d,e,f,g,h){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;g=c[a+16>>2...
  function le (line 14) | function le(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;$B(a,73300)|0;ne(a,0,0);$B(...
  function me (line 14) | function me(a,b){a=a|0;b=b|0;$B(a,73294)|0;$B(a,qH(b)|0)|0;$B(a,75354)|0...
  function ne (line 14) | function ne(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0...
  function oe (line 14) | function oe(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0;g=l;l=l+16|0;f=g;a:do s...
  function pe (line 14) | function pe(b,d,e){b=b|0;d=d|0;e=e|0;var f=0.0,i=0,j=0,k=0,m=0,n=0,o=0,p...
  function qe (line 14) | function qe(b){b=b|0;var d=0,e=0.0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q...
  function re (line 14) | function re(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0;i=l;l=l+16|0;g=...
  function se (line 14) | function se(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;j=l...
  function te (line 14) | function te(a){a=a|0;var b=0;$B(a,75314)|0;b=a+12|0;$B(a,De(c[c[c[b>>2]>...
  function ue (line 14) | function ue(b){b=b|0;var d=0,e=0,f=0;f=l;l=l+16|0;e=f;d=c[b+16>>2]|0;$B(...
  function ve (line 14) | function ve(a){a=a|0;c[45953]=1;return}
  function we (line 14) | function we(a){a=a|0;c[45953]=-1;return}
  function xe (line 14) | function xe(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0;n=l...
  function ye (line 14) | function ye(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0.0,m=0.0...
  function ze (line 14) | function ze(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0;j=l;l=l...
  function Ae (line 14) | function Ae(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0...
  function Be (line 14) | function Be(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=l;l=l+48|...
  function Ce (line 14) | function Ce(a,b){a=a|0;b=b|0;$B(a,75034)|0;$B(a,De(b)|0)|0;$B(a,150517)|...
  function De (line 14) | function De(a){a=a|0;return a|0}
  function Ee (line 14) | function Ee(b){b=b|0;if(!(a[b+144>>0]|0))$B(b,75159)|0;else $B(b,c[b+148...
  function Fe (line 14) | function Fe(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0;g=l;l=l+16|0;f=g;a:do s...
  function Ge (line 14) | function Ge(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;g=h;f=c[a+...
  function He (line 14) | function He(a){a=a|0;var b=0;$B(a,78049)|0;$B(a,78057)|0;b=a+12|0;$B(a,S...
  function Ie (line 14) | function Ie(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0;j=l;l=l+32|0;i=j+24|0;g...
  function Je (line 14) | function Je(a){a=a|0;$B(a,76287)|0;$B(a,76299)|0;$B(a,76307)|0;$B(a,7637...
  function Ke (line 14) | function Ke(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;j=l...
  function Le (line 14) | function Le(a){a=a|0;$B(a,76239)|0;return}
  function Me (line 14) | function Me(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,i=0.0,j=0.0,k=0.0,m=0.0,n=0...
  function Ne (line 14) | function Ne(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0.0,j=0,k=0.0,m...
  function Oe (line 14) | function Oe(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0,i=0.0,j=0,k=0...
  function Pe (line 14) | function Pe(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;f=l...
  function Qe (line 14) | function Qe(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0.0;k...
  function Re (line 14) | function Re(a,b){a=a|0;b=b|0;$B(a,75342)|0;$B(a,Se(b)|0)|0;$B(a,75354)|0...
  function Se (line 14) | function Se(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0...
  function Te (line 14) | function Te(b){b=b|0;var c=0,d=0;d=b+1|0;c=a[d>>0]|0;a:do if(c<<24>>24==...
  function Ue (line 14) | function Ue(a){a=a|0;var b=0.0,d=0,e=0,f=0,g=0,i=0,j=0,k=0;k=l;l=l+48|0;...
  function Ve (line 14) | function Ve(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0;g=l;l=l+16|0;f=g;a:do s...
  function We (line 14) | function We(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=l;l=l+48|0;f=g;if(!b)...
  function Xe (line 14) | function Xe(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0.0,k=0.0;i=l...
  function Ye (line 14) | function Ye(a){a=a|0;var b=0,d=0,e=0;b=l;l=l+16|0;d=b+8|0;e=b;$B(a,80347...
  function Ze (line 14) | function Ze(a){a=a|0;var b=0,d=0,e=0.0,f=0.0,g=0.0,i=0.0,j=0;b=l;l=l+64|...
  function _e (line 14) | function _e(a){a=a|0;$B(a,79283)|0;return}
  function $e (line 14) | function $e(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0;f=l;l=l+16|0;h=...
  function af (line 14) | function af(a){a=a|0;$B(a,79236)|0;return}
  function bf (line 14) | function bf(a){a=a|0;$B(a,79218)|0;return}
  function cf (line 14) | function cf(a){a=a|0;$B(a,79202)|0;return}
  function df (line 14) | function df(a){a=a|0;$B(a,79181)|0;g[45958]=+g[45958]+-2.0;return}
  function ef (line 14) | function ef(a){a=a|0;$B(a,79162)|0;return}
  function ff (line 14) | function ff(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=ry(c[(c[a+16>>...
  function gf (line 14) | function gf(a){a=a|0;$B(a,79124)|0;return}
  function hf (line 14) | function hf(a){a=a|0;$B(a,79106)|0;g[45958]=+g[45958]+-5.0;return}
  function jf (line 14) | function jf(a){a=a|0;$B(a,79090)|0;g[45958]=+g[45958]+5.0;return}
  function kf (line 14) | function kf(b,d,e){b=b|0;d=d|0;e=e|0;var f=0.0,i=0,j=0,k=0,m=0,n=0,o=0,p...
  function lf (line 14) | function lf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,i=0.0,j=0.0,k=0.0,m=0,n...
  function mf (line 14) | function mf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,i=0,j=0,k=0,m=0,n=0...
  function nf (line 14) | function nf(a,b,d,e,f,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;i=i|0;var j=0,k=0...
  function of (line 14) | function of(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,i=0,j=0,k=0,m=0,n=0,o=0...
  function pf (line 14) | function pf(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=b;fC(a...
  function qf (line 14) | function qf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=l;l=l+105...
  function rf (line 14) | function rf(a,b,e){a=a|0;b=b|0;e=+e;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,...
  function sf (line 14) | function sf(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;b=l;l=l+32|0;d=...
  function tf (line 14) | function tf(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=80990;fC(a,835...
  function uf (line 14) | function uf(a)
Copy disabled (too large) Download .json
Condensed preview — 228 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (10,355K chars).
[
  {
    "path": ".editorconfig",
    "chars": 148,
    "preview": "[*]\ntab_width = 4\ntrim_trailing_whitespace = true\nend_of_line = lf\nindent_size = 4\nindent_style = space\ninsert_final_new"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.md",
    "chars": 499,
    "preview": "---\nname: 报告缺陷\nabout: 报告缺陷以帮助我们改进\n---\n\n### 编辑模式\n\n<!-- 请选择你遇到问题时使用的编辑模式(把正常情况模式删掉):-->\n\n* `wysiwyg` 所见即所得模式\n* `ir` 即时渲染模式"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/config.yml",
    "chars": 245,
    "preview": "blank_issues_enabled: false\ncontact_links:\n  - name: Vditor 官方讨论区\n    url: https://ld246.com/tag/vditor\n    about: 欢迎到这里"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature_request.md",
    "chars": 238,
    "preview": "---\nname: 请求新功能\nabout: 提出你期待的功能特性\n---\n\n### 你在什么场景下需要该功能?\n\n<!-- 请尽量清晰精准地描述你期待的功能和应用场景。-->\n\n### 描述最优的解决方案 \n\n<!-- 请尝试描述最优的解"
  },
  {
    "path": ".github/PULL_REQUEST_TEMPLATE.md",
    "chars": 30,
    "preview": "<!--\n\n* PR 请提交到 dev 开发分支上\n\n-->"
  },
  {
    "path": ".github/SECURITY.md",
    "chars": 461,
    "preview": "# 安全报告 Security report\n\n如果你发现安全相关漏洞请通过如下任意一种方式告知我们:\\\nIf you find security-related vulnerabilities, please inform us in a"
  },
  {
    "path": ".gitignore",
    "chars": 70,
    "preview": ".idea\n**/.DS_Store\n/dist\n/node_modules\n/demo/dist\n/coverage\n.vscode/*\n"
  },
  {
    "path": ".npmrc",
    "chars": 43,
    "preview": "@b3log:registry=https://npm.pkg.github.com/"
  },
  {
    "path": ".prettierrc",
    "chars": 441,
    "preview": "{\n\t\"arrowParens\": \"always\",\n\t\"bracketSpacing\": true,\n\t\"embeddedLanguageFormatting\": \"auto\",\n\t\"htmlWhitespaceSensitivity\""
  },
  {
    "path": "CHANGELOG.md",
    "chars": 88919,
    "preview": "## Vditor change log\n\n### 升级\n\n* 3.11\n  * 添加 options.preview.markdown.sup\n  * 添加 options.preview.markdown.sub\n  * 添加 opti"
  },
  {
    "path": "LICENSE",
    "chars": 1084,
    "preview": "MIT License\n\nCopyright (c) 2019-present B3log 开源, b3log.org\n\nPermission is hereby granted, free of charge, to any person"
  },
  {
    "path": "README.md",
    "chars": 26316,
    "preview": "<p align=\"center\">\n<img alt=\"Vditor\" src=\"https://b3log.org/images/brand/vditor-128.png\" />\n\n<br>\n易于使用的 Markdown 编辑器,为适配"
  },
  {
    "path": "README_en_US.md",
    "chars": 34501,
    "preview": "<p align=\"center\">\n<img alt=\"Vditor\" src=\"https://b3log.org/images/brand/vditor-128.png\" />\n\n<br>\nEasy-to-use Markdown e"
  },
  {
    "path": "__test__/markdown/commonmark-0.29.ts",
    "chars": 150730,
    "preview": "export const spec = [\n    {\n        markdown: \"\\tfoo\\tbaz\\t\\tbim\\n\",\n        html: \"<pre><code>foo\\tbaz\\t\\tbim\\n</code><"
  },
  {
    "path": "__test__/markdown/lute.test.ts",
    "chars": 633,
    "preview": "import {spec} from \"./commonmark-0.29\";\n\nrequire(\"../../src/js/lute/lute.min.js\");\n\nconst globalAny: any = global;\n\nit(\""
  },
  {
    "path": "__test__/methods/index.spec.ts",
    "chars": 5259,
    "preview": "import puppeteer from \"puppeteer\";\n\ndeclare let vditorTest: any;\n\ndescribe(\"use puppeteer to test methods\", () => {\n    "
  },
  {
    "path": "__test__/util/Options.test.ts",
    "chars": 4164,
    "preview": "const globalAny: any = global;\nglobalAny.VDITOR_VERSION = \"version\";\nimport {Options} from \"../../src/ts/util/Options\";\n"
  },
  {
    "path": "__test__/util/textareaPosition.spec.ts",
    "chars": 1044,
    "preview": "import puppeteer from \"puppeteer\";\n\ndeclare let vditorTest: any;\n\ndescribe(\"use puppeteer to test getTextareaPosition\", "
  },
  {
    "path": "bower.json",
    "chars": 318,
    "preview": "{\n  \"name\": \"vditor\",\n  \"description\": \"A markdown editor written in TypeScript\",\n  \"main\": \"dist/index.min.js\",\n  \"auth"
  },
  {
    "path": "demo/comment.html",
    "chars": 4000,
    "preview": "<!DOCTYPE html>\n<html lang=\"zh-cmn-Hans\">\n<head>\n    <meta charset=\"utf-8\"/>\n    <meta http-equiv=\"X-UA-Compatible\" cont"
  },
  {
    "path": "demo/comment.js",
    "chars": 4921,
    "preview": "import Vditor from '../src/index'\nimport '../src/assets/less/index.less'\n\nconst bindCommentEvent = (cmtElement) => {\n  c"
  },
  {
    "path": "demo/icon.html",
    "chars": 7796,
    "preview": "<html>\n<head>\n    <style>\n        .fn__clear > div {\n            float: left;\n            width: 250px;\n            text"
  },
  {
    "path": "demo/index.html",
    "chars": 4439,
    "preview": "<!DOCTYPE html>\n<html lang=\"zh-cmn-Hans\">\n<head>\n    <meta charset=\"utf-8\"/>\n    <meta http-equiv=\"X-UA-Compatible\" cont"
  },
  {
    "path": "demo/index.js",
    "chars": 4014,
    "preview": "import Vditor from \"../src/index\"\nimport \"../src/assets/less/index.less\"\n\n// new VConsole()\n\nlet toolbar\nif (window.inne"
  },
  {
    "path": "demo/jest-puppeteer.html",
    "chars": 2905,
    "preview": "<!DOCTYPE html>\n<html lang=\"zh-cmn-Hans\">\n<head>\n    <meta charset=\"utf-8\"/>\n    <meta http-equiv=\"X-UA-Compatible\" cont"
  },
  {
    "path": "demo/jest-puppeteer.js",
    "chars": 4834,
    "preview": "import Vditor from '../src/index'\nimport '../src/assets/less/index.less'\n\nwindow.vditorTest = new Vditor('vditorTest', {"
  },
  {
    "path": "demo/markdown/cute-list.md",
    "chars": 311,
    "preview": "* test\n    * test\n        * test\n\n+ test\n    + test\n        + test\n\n- test\n    - test\n      - test\n\n1. test\n    1. test\n"
  },
  {
    "path": "demo/markdown/entity.md",
    "chars": 85,
    "preview": "```\n<textarea>\n    <div>test</div>\n</textarea>\n```\n\n<: \\&lt; `&lt;`\n\\>: \\&gt; `&gt;`\n"
  },
  {
    "path": "demo/markdown/ko_KR.md",
    "chars": 8454,
    "preview": "## 가이드\n\n이것은 **Markdown** 타이포그래피를 올바르게 사용하는 방법의 예입니다. 이를 배우면 글을 보다 선명하고 명료하게 작성하는 데 도움이 됩니다.\n\n> 인용 텍스트: 마크 다운은 텍스트 서식 구문에"
  },
  {
    "path": "demo/markdown/zh_CN.md",
    "chars": 7165,
    "preview": "## 教程\n\n这是一篇讲解如何正确使用 **Markdown** 的排版示例,学会这个很有必要,能让你的文章有更佳清晰的排版。\n\n> 引用文本:Markdown is a text formatting syntax inspired\n\n#"
  },
  {
    "path": "demo/render.html",
    "chars": 6125,
    "preview": "<!DOCTYPE html>\n<html lang=\"zh-cmn-Hans\">\n<head>\n    <meta charset=\"utf-8\"/>\n    <meta http-equiv=\"X-UA-Compatible\" cont"
  },
  {
    "path": "demo/render.js",
    "chars": 3091,
    "preview": "import Vditor from '../src/method'\nimport '../src/assets/less/index.less'\n\nconst outlineElement = document.getElementByI"
  },
  {
    "path": "demo/static.html",
    "chars": 3377,
    "preview": "<!DOCTYPE html>\n<html lang=\"zh-cmn-Hans\">\n<head>\n  <meta charset=\"utf-8\"/>\n  <meta http-equiv=\"X-UA-Compatible\" content="
  },
  {
    "path": "eslint.config.mjs",
    "chars": 525,
    "preview": "import typescriptEslintParser from \"@typescript-eslint/parser\";\nimport eslint from \"@eslint/js\";\nimport tseslint from \"t"
  },
  {
    "path": "package.json",
    "chars": 2455,
    "preview": "{\n    \"name\": \"vditor\",\n    \"version\": \"3.11.2\",\n    \"description\": \"♏ 易于使用的 Markdown 编辑器,为适配不同的应用场景而生\",\n    \"author\": \""
  },
  {
    "path": "src/assets/less/_content.less",
    "chars": 5288,
    "preview": "@keyframes slideInDown {\n  from {\n    transform: translate3d(0, -100%, 0);\n    visibility: visible;\n  }\n\n  to {\n    tran"
  },
  {
    "path": "src/assets/less/_hint.less",
    "chars": 1222,
    "preview": ".vditor-hint {\n  background-color: var(--panel-background-color);\n  position: absolute;\n  box-shadow: var(--panel-shadow"
  },
  {
    "path": "src/assets/less/_ir.less",
    "chars": 5287,
    "preview": ".vditor-ir {\n  box-sizing: border-box;\n  flex: 1;\n  min-width: 1px;\n  position: relative;\n  width: 100%;\n\n  &__node {\n  "
  },
  {
    "path": "src/assets/less/_panel.less",
    "chars": 2069,
    "preview": "/**\n * panel.\n *\n * @author <a href=\"http://vanessa.b3log.org\">Liyuan Li</a>\n * @version 1.0.0.0, Jan 22, 2020\n */\n\n@key"
  },
  {
    "path": "src/assets/less/_reset.less",
    "chars": 13969,
    "preview": ".vditor {\n    &-reset {\n        &--anchor {\n            padding-left: 20px;\n        }\n\n        &--error {\n            co"
  },
  {
    "path": "src/assets/less/_sv.less",
    "chars": 2022,
    "preview": ".vditor-sv {\n  font-family: @font-family-base;\n  margin: 0 1px 0 0;\n  overflow: auto;\n  width: 100%;\n  flex: 1;\n  min-wi"
  },
  {
    "path": "src/assets/less/_toolbar.less",
    "chars": 3502,
    "preview": ".vditor {\n  &-toolbar {\n    background-color: var(--toolbar-background-color);\n    border-bottom: 1px solid var(--border"
  },
  {
    "path": "src/assets/less/_tooltipped.less",
    "chars": 2842,
    "preview": "/**\n * tool tip.\n *\n * @author <a href=\"http://vanessa.b3log.org\">Liyuan Li</a>\n * @version 0.1.0.0, Jan 25, 2019\n */\n@k"
  },
  {
    "path": "src/assets/less/_wysiwyg.less",
    "chars": 3551,
    "preview": ".vditor-wysiwyg {\n  box-sizing: border-box;\n  flex: 1;\n  position: relative;\n  width: 100%;\n  min-width: 1px;\n\n  pre.vdi"
  },
  {
    "path": "src/assets/less/index.less",
    "chars": 2614,
    "preview": "@errorColor: #d23f31;\n@blurColor: #4285f4;\n\n@font-family-base: \"Helvetica Neue\", \"Luxi Sans\", \"DejaVu Sans\",\n  \"Hiragino"
  },
  {
    "path": "src/css/content-theme/ant-design.css",
    "chars": 4877,
    "preview": "/*!\n * Vditor - A markdown editor written in TypeScript.\n *\n * MIT License\n *\n * Copyright (c) 2018-present B3log 开源, b3"
  },
  {
    "path": "src/css/content-theme/dark.css",
    "chars": 2851,
    "preview": "/*!\n * Vditor - A markdown editor written in TypeScript.\n *\n * MIT License\n *\n * Copyright (c) 2018-present B3log 开源, b3"
  },
  {
    "path": "src/css/content-theme/light.css",
    "chars": 2556,
    "preview": "/*!\n * Vditor - A markdown editor written in TypeScript.\n *\n * MIT License\n *\n * Copyright (c) 2018-present B3log 开源, b3"
  },
  {
    "path": "src/css/content-theme/wechat.css",
    "chars": 2874,
    "preview": "/*!\n * Vditor - A markdown editor written in TypeScript.\n *\n * MIT License\n *\n * Copyright (c) 2018-present B3log 开源, b3"
  },
  {
    "path": "src/index.ts",
    "chars": 19913,
    "preview": "import \"./assets/less/index.less\";\nimport VditorMethod from \"./method\";\nimport {Constants, VDITOR_VERSION} from \"./ts/co"
  },
  {
    "path": "src/js/graphviz/full.render.js",
    "chars": 1979941,
    "preview": "/*\nViz.js 2.1.2 (Graphviz 2.40.1, Expat 2.2.5, Emscripten 1.37.36)\n*/\n(function(global) {\n  var Module = function(Module"
  },
  {
    "path": "src/js/graphviz/viz.js",
    "chars": 11468,
    "preview": "/*\nViz.js 2.1.2 (Graphviz 2.40.1, Expat 2.2.5, Emscripten 1.37.36)\nCopyright (c) 2014-2018 Michael Daines\nLicensed under"
  },
  {
    "path": "src/js/highlight.js/LICENSE",
    "chars": 1514,
    "preview": "BSD 3-Clause License\n\nCopyright (c) 2006, Ivan Sagalaev.\nAll rights reserved.\n\nRedistribution and use in source and bina"
  },
  {
    "path": "src/js/highlight.js/third-languages.js",
    "chars": 21007,
    "preview": "// https://cdn.jsdelivr.net/npm/highlightjs-solidity@2.0.5/dist/yul.min.js\nhljs.registerLanguage(\"yul\",(()=>{\"use strict"
  },
  {
    "path": "src/js/i18n/de_DE.js",
    "chars": 2670,
    "preview": "window.VditorI18n = {\n  'alignCenter': 'Zentriert',\n  'alignLeft': 'Linksbündig',\n  'alignRight': 'Rechtsbündig',\n  'alt"
  },
  {
    "path": "src/js/i18n/en_US.js",
    "chars": 2419,
    "preview": "window.VditorI18n = {\n  'alignCenter': 'Center',\n  'alignLeft': 'Left',\n  'alignRight': 'Right',\n  'alternateText': 'Alt"
  },
  {
    "path": "src/js/i18n/es_ES.js",
    "chars": 2911,
    "preview": "window.VditorI18n = {\n  'alignCenter': 'Centrar',\n  'alignLeft': 'Alinear a la izquierda',\n  'alignRight': 'Alinear a la"
  },
  {
    "path": "src/js/i18n/fr_FR.js",
    "chars": 2700,
    "preview": "window.VditorI18n = {\n  'alignCenter': 'Centré',\n  'alignLeft': 'Gauche',\n  'alignRight': 'Droite',\n  'alternateText': '"
  },
  {
    "path": "src/js/i18n/ja_JP.js",
    "chars": 2066,
    "preview": "window.VditorI18n = {\n  'alignCenter': '中央',\n  'alignLeft': '左側',\n  'alignRight': '右側',\n  'alternateText': 'イメージタグ',\n  '"
  },
  {
    "path": "src/js/i18n/ko_KR.js",
    "chars": 2009,
    "preview": "window.VditorI18n = {\n  'alignCenter': '가운데',\n  'alignLeft': '왼쪽',\n  'alignRight': '오른쪽',\n  'alternateText': '이미지 태그',\n "
  },
  {
    "path": "src/js/i18n/pt_BR.js",
    "chars": 2652,
    "preview": "window.VditorI18n = {\n  'alignCenter': 'Centralizar',\n  'alignLeft': 'Alinhar à esquerda',\n  'alignRight': 'Alinhar à di"
  },
  {
    "path": "src/js/i18n/ru_RU.js",
    "chars": 2920,
    "preview": "window.VditorI18n = {\n  'alignCenter': 'Выровнять по центру',\n  'alignLeft': 'Выровнять по левому краю',\n  'alignRight':"
  },
  {
    "path": "src/js/i18n/sv_SE.js",
    "chars": 2639,
    "preview": "window.VditorI18n = {\r\n  'alignCenter': 'Centrera',\r\n  'alignLeft': 'Vänsterställ',\r\n  'alignRight': 'Högerställ',\r\n  '"
  },
  {
    "path": "src/js/i18n/vi_VN.js",
    "chars": 2772,
    "preview": "window.VditorI18n = {\n  'alignCenter': 'Căn giữa',\n  'alignLeft': 'Căn trái',\n  'alignRight': 'Căn phải',\n  'alternateTe"
  },
  {
    "path": "src/js/i18n/zh_CN.js",
    "chars": 1892,
    "preview": "window.VditorI18n = {\n  'alignCenter': '居中',\n  'alignLeft': '居左',\n  'alignRight': '居右',\n  'alternateText': '替代文本',\n  'bo"
  },
  {
    "path": "src/js/i18n/zh_TW.js",
    "chars": 1886,
    "preview": "window.VditorI18n = {\n  'alignCenter': '置中',\n  'alignLeft': '置左',\n  'alignRight': '置右',\n  'alternateText': '替代文字',\n  'bo"
  },
  {
    "path": "src/js/icons/ant.js",
    "chars": 42983,
    "preview": "document.body.insertAdjacentHTML('afterbegin', `<svg style=\"position: absolute; width: 0; height: 0; overflow: hidden;\" "
  },
  {
    "path": "src/js/icons/material.js",
    "chars": 20896,
    "preview": "document.body.insertAdjacentHTML('afterbegin', `<svg style=\"position: absolute; width: 0; height: 0; overflow: hidden;\" "
  },
  {
    "path": "src/js/markmap/prism.css",
    "chars": 2335,
    "preview": "/**\n * prism.js default theme for JavaScript, CSS and HTML\n * Based on dabblet (http://dabblet.com)\n * @author Lea Verou"
  },
  {
    "path": "src/js/mathjax/LICENSE",
    "chars": 11358,
    "preview": "\n                                 Apache License\n                           Version 2.0, January 2004\n                  "
  },
  {
    "path": "src/js/mathjax/a11y/assistive-mml.js",
    "chars": 6982,
    "preview": "!function(t){var e={};function i(n){if(e[n])return e[n].exports;var o=e[n]={i:n,l:!1,exports:{}};return t[n].call(o.expo"
  },
  {
    "path": "src/js/mathjax/a11y/complexity.js",
    "chars": 18478,
    "preview": "!function(t){var e={};function i(o){if(e[o])return e[o].exports;var r=e[o]={i:o,l:!1,exports:{}};return t[o].call(r.expo"
  },
  {
    "path": "src/js/mathjax/a11y/explorer.js",
    "chars": 32640,
    "preview": "!function(t){var e={};function o(r){if(e[r])return e[r].exports;var n=e[r]={i:r,l:!1,exports:{}};return t[r].call(n.expo"
  },
  {
    "path": "src/js/mathjax/a11y/semantic-enrich.js",
    "chars": 8767,
    "preview": "!function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.expo"
  },
  {
    "path": "src/js/mathjax/input/asciimath.js",
    "chars": 106067,
    "preview": "!function(t){var e={};function i(n){if(e[n])return e[n].exports;var a=e[n]={i:n,l:!1,exports:{}};return t[n].call(a.expo"
  },
  {
    "path": "src/js/mathjax/input/mml/entities.js",
    "chars": 33265,
    "preview": "!function(r){var e={};function t(o){if(e[o])return e[o].exports;var a=e[o]={i:o,l:!1,exports:{}};return r[o].call(a.expo"
  },
  {
    "path": "src/js/mathjax/input/mml.js",
    "chars": 14009,
    "preview": "!function(t){var e={};function r(o){if(e[o])return e[o].exports;var a=e[o]={i:o,l:!1,exports:{}};return t[o].call(a.expo"
  },
  {
    "path": "src/js/mathjax/input/tex/extensions/action.js",
    "chars": 3302,
    "preview": "!function(t){var e={};function a(o){if(e[o])return e[o].exports;var n=e[o]={i:o,l:!1,exports:{}};return t[o].call(n.expo"
  },
  {
    "path": "src/js/mathjax/input/tex/extensions/all-packages.js",
    "chars": 147205,
    "preview": "!function(t){var e={};function r(a){if(e[a])return e[a].exports;var n=e[a]={i:a,l:!1,exports:{}};return t[a].call(n.expo"
  },
  {
    "path": "src/js/mathjax/input/tex/extensions/ams.js",
    "chars": 23357,
    "preview": "!function(t){var e={};function a(r){if(e[r])return e[r].exports;var n=e[r]={i:r,l:!1,exports:{}};return t[r].call(n.expo"
  },
  {
    "path": "src/js/mathjax/input/tex/extensions/amscd.js",
    "chars": 7056,
    "preview": "!function(e){var t={};function a(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.expo"
  },
  {
    "path": "src/js/mathjax/input/tex/extensions/autoload.js",
    "chars": 7019,
    "preview": "!function(e){var t={};function o(a){if(t[a])return t[a].exports;var r=t[a]={i:a,l:!1,exports:{}};return e[a].call(r.expo"
  },
  {
    "path": "src/js/mathjax/input/tex/extensions/bbox.js",
    "chars": 3693,
    "preview": "!function(t){var e={};function a(o){if(e[o])return e[o].exports;var n=e[o]={i:o,l:!1,exports:{}};return t[o].call(n.expo"
  },
  {
    "path": "src/js/mathjax/input/tex/extensions/boldsymbol.js",
    "chars": 4709,
    "preview": "!function(t){var e={};function o(a){if(e[a])return e[a].exports;var n=e[a]={i:a,l:!1,exports:{}};return t[a].call(n.expo"
  },
  {
    "path": "src/js/mathjax/input/tex/extensions/braket.js",
    "chars": 7150,
    "preview": "!function(e){var t={};function r(a){if(t[a])return t[a].exports;var o=t[a]={i:a,l:!1,exports:{}};return e[a].call(o.expo"
  },
  {
    "path": "src/js/mathjax/input/tex/extensions/bussproofs.js",
    "chars": 17174,
    "preview": "!function(e){var t={};function r(o){if(t[o])return t[o].exports;var n=t[o]={i:o,l:!1,exports:{}};return e[o].call(n.expo"
  },
  {
    "path": "src/js/mathjax/input/tex/extensions/cancel.js",
    "chars": 4029,
    "preview": "!function(e){var t={};function n(a){if(t[a])return t[a].exports;var o=t[a]={i:a,l:!1,exports:{}};return e[a].call(o.expo"
  },
  {
    "path": "src/js/mathjax/input/tex/extensions/color.js",
    "chars": 9192,
    "preview": "!function(e){var o={};function t(r){if(o[r])return o[r].exports;var n=o[r]={i:r,l:!1,exports:{}};return e[r].call(n.expo"
  },
  {
    "path": "src/js/mathjax/input/tex/extensions/colorV2.js",
    "chars": 3076,
    "preview": "!function(t){var e={};function o(a){if(e[a])return e[a].exports;var n=e[a]={i:a,l:!1,exports:{}};return t[a].call(n.expo"
  },
  {
    "path": "src/js/mathjax/input/tex/extensions/configMacros.js",
    "chars": 4764,
    "preview": "!function(t){var e={};function a(n){if(e[n])return e[n].exports;var o=e[n]={i:n,l:!1,exports:{}};return t[n].call(o.expo"
  },
  {
    "path": "src/js/mathjax/input/tex/extensions/enclose.js",
    "chars": 3071,
    "preview": "!function(e){var t={};function a(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.expo"
  },
  {
    "path": "src/js/mathjax/input/tex/extensions/extpfeil.js",
    "chars": 4158,
    "preview": "!function(t){var e={};function a(o){if(e[o])return e[o].exports;var n=e[o]={i:o,l:!1,exports:{}};return t[o].call(n.expo"
  },
  {
    "path": "src/js/mathjax/input/tex/extensions/html.js",
    "chars": 3572,
    "preview": "!function(t){var e={};function a(n){if(e[n])return e[n].exports;var r=e[n]={i:n,l:!1,exports:{}};return t[n].call(r.expo"
  },
  {
    "path": "src/js/mathjax/input/tex/extensions/mhchem.js",
    "chars": 36819,
    "preview": "!function(t){var e={};function a(n){if(e[n])return e[n].exports;var o=e[n]={i:n,l:!1,exports:{}};return t[n].call(o.expo"
  },
  {
    "path": "src/js/mathjax/input/tex/extensions/newcommand.js",
    "chars": 10840,
    "preview": "!function(e){var t={};function a(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.expo"
  },
  {
    "path": "src/js/mathjax/input/tex/extensions/noerrors.js",
    "chars": 2049,
    "preview": "!function(e){var t={};function n(o){if(t[o])return t[o].exports;var r=t[o]={i:o,l:!1,exports:{}};return e[o].call(r.expo"
  },
  {
    "path": "src/js/mathjax/input/tex/extensions/noundefined.js",
    "chars": 2657,
    "preview": "!function(e){var n={};function t(o){if(n[o])return n[o].exports;var r=n[o]={i:o,l:!1,exports:{}};return e[o].call(r.expo"
  },
  {
    "path": "src/js/mathjax/input/tex/extensions/physics.js",
    "chars": 23443,
    "preview": "!function(t){var e={};function a(r){if(e[r])return e[r].exports;var n=e[r]={i:r,l:!1,exports:{}};return t[r].call(n.expo"
  },
  {
    "path": "src/js/mathjax/input/tex/extensions/require.js",
    "chars": 6521,
    "preview": "!function(e){var t={};function a(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.expo"
  },
  {
    "path": "src/js/mathjax/input/tex/extensions/tagFormat.js",
    "chars": 3842,
    "preview": "!function(t){var n={};function o(e){if(n[e])return n[e].exports;var a=n[e]={i:e,l:!1,exports:{}};return t[e].call(a.expo"
  },
  {
    "path": "src/js/mathjax/input/tex/extensions/textmacros.js",
    "chars": 15926,
    "preview": "!function(t){var e={};function a(n){if(e[n])return e[n].exports;var r=e[n]={i:n,l:!1,exports:{}};return t[n].call(r.expo"
  },
  {
    "path": "src/js/mathjax/input/tex/extensions/unicode.js",
    "chars": 4151,
    "preview": "!function(t){var e={};function a(n){if(e[n])return e[n].exports;var o=e[n]={i:n,l:!1,exports:{}};return t[n].call(o.expo"
  },
  {
    "path": "src/js/mathjax/input/tex/extensions/verb.js",
    "chars": 3258,
    "preview": "!function(t){var e={};function n(a){if(e[a])return e[a].exports;var r=e[a]={i:a,l:!1,exports:{}};return t[a].call(r.expo"
  },
  {
    "path": "src/js/mathjax/input/tex-base.js",
    "chars": 129130,
    "preview": "!function(t){var e={};function r(n){if(e[n])return e[n].exports;var i=e[n]={i:n,l:!1,exports:{}};return t[n].call(i.expo"
  },
  {
    "path": "src/js/mathjax/input/tex-full.js",
    "chars": 270488,
    "preview": "!function(t){var e={};function r(n){if(e[n])return e[n].exports;var a=e[n]={i:n,l:!1,exports:{}};return t[n].call(a.expo"
  },
  {
    "path": "src/js/mathjax/input/tex.js",
    "chars": 163954,
    "preview": "!function(t){var e={};function r(n){if(e[n])return e[n].exports;var a=e[n]={i:n,l:!1,exports:{}};return t[n].call(a.expo"
  },
  {
    "path": "src/js/mathjax/sre/mathmaps/de.js",
    "chars": 267661,
    "preview": "{\n\"de/functions/algebra.js\": \n[{\"locale\":\"de\"},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"Grad\"}},\"key\":\"de"
  },
  {
    "path": "src/js/mathjax/sre/mathmaps/en.js",
    "chars": 335735,
    "preview": "{\n\"en/functions/algebra.js\": \n[{\"locale\":\"en\"},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"degree\"}},\"key\":\""
  },
  {
    "path": "src/js/mathjax/sre/mathmaps/es.js",
    "chars": 268178,
    "preview": "{\n\"es/functions/algebra.js\": \n[{\"locale\":\"es\"},{\"key\":\"deg\",\"names\":[\"deg\"],\"mappings\":{\"default\":{\"default\":\"grados\"}},"
  },
  {
    "path": "src/js/mathjax/sre/mathmaps/fr.js",
    "chars": 263209,
    "preview": "{\n\"fr/functions/algebra.js\": \n[{\"locale\":\"fr\"},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"degré\"}},\"key\":\"d"
  },
  {
    "path": "src/js/mathjax/sre/mathmaps/mathmaps_ie.js",
    "chars": 1350373,
    "preview": "sre.BrowserUtil.mapsForIE = {\n\"en/functions/algebra.js\": \n[{\"locale\":\"en\"},{\"category\":\"Algebra\",\"mappings\":{\"default\":{"
  },
  {
    "path": "src/js/mathjax/sre/mathmaps/nemeth.js",
    "chars": 215574,
    "preview": "{\n\"nemeth/functions/algebra.js\": \n[{\"locale\":\"nemeth\"},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"⠙⠑⠛\"}},\"k"
  },
  {
    "path": "src/js/mathjax/sre/sre-node.js",
    "chars": 297,
    "preview": "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar SRE = require(\"speech-rule-engine\");\ngl"
  },
  {
    "path": "src/js/mathjax/sre/sre_browser.js",
    "chars": 874345,
    "preview": "// Copyright 2014-2019 Volker Sorge\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not"
  },
  {
    "path": "src/js/mathjax/tex-svg-full.js",
    "chars": 1811419,
    "preview": "!function(t){var e={};function Q(r){if(e[r])return e[r].exports;var T=e[r]={i:r,l:!1,exports:{}};return t[r].call(T.expo"
  },
  {
    "path": "src/method.ts",
    "chars": 2943,
    "preview": "import {abcRender} from \"./ts/markdown/abcRender\";\nimport * as adapterRender from \"./ts/markdown/adapterRender\";\nimport "
  },
  {
    "path": "src/ts/constants.ts",
    "chars": 7426,
    "preview": "declare const VDITOR_VERSION: string;\n\nconst _VDITOR_VERSION = VDITOR_VERSION;\n\nexport {_VDITOR_VERSION as VDITOR_VERSIO"
  },
  {
    "path": "src/ts/devtools/index.ts",
    "chars": 3221,
    "preview": "import {getMarkdown} from \"../markdown/getMarkdown\";\nimport {addScript} from \"../util/addScript\";\n\ndeclare const echarts"
  },
  {
    "path": "src/ts/export/index.ts",
    "chars": 3617,
    "preview": "import {getHTML} from \"../markdown/getHTML\";\nimport {getMarkdown} from \"../markdown/getMarkdown\";\n\nexport const download"
  },
  {
    "path": "src/ts/hint/index.ts",
    "chars": 12053,
    "preview": "import {Constants} from \"../constants\";\nimport {processAfterRender} from \"../ir/process\";\nimport {code160to32} from \"../"
  },
  {
    "path": "src/ts/ir/expandMarker.ts",
    "chars": 3018,
    "preview": "import {hasClosestByClassName, hasTopClosestByClassName} from \"../util/hasClosest\";\nimport {setSelectionFocus} from \"../"
  },
  {
    "path": "src/ts/ir/highlightToolbarIR.ts",
    "chars": 4478,
    "preview": "import {Constants} from \"../constants\";\nimport {disableToolbar, enableToolbar, removeCurrentToolbar, setCurrentToolbar} "
  },
  {
    "path": "src/ts/ir/index.ts",
    "chars": 11262,
    "preview": "import {Constants} from \"../constants\";\nimport {isCtrl, isFirefox} from \"../util/compatibility\";\nimport {\n    blurEvent,"
  },
  {
    "path": "src/ts/ir/input.ts",
    "chars": 9766,
    "preview": "import {Constants} from \"../constants\";\nimport {isHeadingMD, isHrMD} from \"../util/fixBrowserBehavior\";\nimport {\n    get"
  },
  {
    "path": "src/ts/ir/process.ts",
    "chars": 9766,
    "preview": "import {Constants} from \"../constants\";\nimport {getMarkdown} from \"../markdown/getMarkdown\";\nimport {removeCurrentToolba"
  },
  {
    "path": "src/ts/ir/processKeydown.ts",
    "chars": 9281,
    "preview": "import {Constants} from \"../constants\";\nimport {hidePanel} from \"../toolbar/setToolbar\";\nimport {isCtrl} from \"../util/c"
  },
  {
    "path": "src/ts/markdown/SMILESRender.ts",
    "chars": 1284,
    "preview": "import {Constants} from \"../constants\";\nimport {addScript} from \"../util/addScript\";\nimport {SMILESRenderAdapter} from \""
  },
  {
    "path": "src/ts/markdown/abcRender.ts",
    "chars": 1126,
    "preview": "import {Constants} from \"../constants\";\nimport {addScript} from \"../util/addScript\";\nimport {abcRenderAdapter} from \"./a"
  },
  {
    "path": "src/ts/markdown/adapterRender.ts",
    "chars": 1873,
    "preview": "export const mathRenderAdapter = {\n    getCode: (el: Element) => el.textContent,\n    getElements: (element: HTMLElement|"
  },
  {
    "path": "src/ts/markdown/anchorRender.ts",
    "chars": 754,
    "preview": "export const anchorRender = (type: number) => {\n    document.querySelectorAll(\".vditor-anchor\").forEach((anchor: HTMLLin"
  },
  {
    "path": "src/ts/markdown/chartRender.ts",
    "chars": 1603,
    "preview": "import {Constants} from \"../constants\";\nimport {addScript} from \"../util/addScript\";\nimport {chartRenderAdapter} from \"."
  },
  {
    "path": "src/ts/markdown/codeRender.ts",
    "chars": 3343,
    "preview": "import {code160to32} from \"../util/code160to32\";\nimport {Constants} from \"../constants\";\n\nexport const codeRender = (ele"
  },
  {
    "path": "src/ts/markdown/flowchartRender.ts",
    "chars": 963,
    "preview": "import {Constants} from \"../constants\";\nimport {addScript} from \"../util/addScript\";\nimport {flowchartRenderAdapter} fro"
  },
  {
    "path": "src/ts/markdown/getHTML.ts",
    "chars": 443,
    "preview": "import {getMarkdown} from \"./getMarkdown\";\n\nexport const getHTML = (vditor: IVditor) => {\n    if (vditor.currentMode ==="
  },
  {
    "path": "src/ts/markdown/getMarkdown.ts",
    "chars": 496,
    "preview": "import {code160to32} from \"../util/code160to32\";\n\nexport const getMarkdown = (vditor: IVditor) => {\n    if (vditor.curre"
  },
  {
    "path": "src/ts/markdown/graphvizRender.ts",
    "chars": 1969,
    "preview": "import {Constants} from \"../constants\";\nimport {addScript} from \"../util/addScript\";\nimport {graphvizRenderAdapter} from"
  },
  {
    "path": "src/ts/markdown/highlightRender.ts",
    "chars": 4321,
    "preview": "import {Constants} from \"../constants\";\nimport {addScript} from \"../util/addScript\";\nimport {addStyle} from \"../util/add"
  },
  {
    "path": "src/ts/markdown/lazyLoadImageRender.ts",
    "chars": 2298,
    "preview": "declare global {\n    interface Window {\n        vditorImageIntersectionObserver: IntersectionObserver;\n    }\n}\n\nexport c"
  },
  {
    "path": "src/ts/markdown/markmapRender.ts",
    "chars": 2129,
    "preview": "import {Constants} from \"../constants\";\nimport {addScript} from \"../util/addScript\";\nimport {markmapRenderAdapter} from "
  },
  {
    "path": "src/ts/markdown/mathRender.ts",
    "chars": 6146,
    "preview": "import {Constants} from \"../constants\";\nimport {addScript, addScriptSync} from \"../util/addScript\";\nimport {addStyle} fr"
  },
  {
    "path": "src/ts/markdown/mediaRender.ts",
    "chars": 4694,
    "preview": "import {getSearch} from \"../util/function\";\n\nconst videoRender = (element: HTMLElement, url: string) => {\n    element.in"
  },
  {
    "path": "src/ts/markdown/mermaidRender.ts",
    "chars": 2401,
    "preview": "import {Constants} from \"../constants\";\nimport {addScript} from \"../util/addScript\";\nimport {mermaidRenderAdapter} from "
  },
  {
    "path": "src/ts/markdown/mindmapRender.ts",
    "chars": 3353,
    "preview": "import {Constants} from \"../constants\";\nimport {addScript} from \"../util/addScript\";\nimport {mindmapRenderAdapter} from "
  },
  {
    "path": "src/ts/markdown/outlineRender.ts",
    "chars": 5280,
    "preview": "import {hasClosestByHeadings} from \"../util/hasClosestByHeadings\";\nimport {mathRender} from \"./mathRender\";\n\nexport cons"
  },
  {
    "path": "src/ts/markdown/plantumlRender.ts",
    "chars": 1288,
    "preview": "import {Constants} from \"../constants\";\nimport {addScript} from \"../util/addScript\";\nimport {plantumlRenderAdapter} from"
  },
  {
    "path": "src/ts/markdown/previewRender.ts",
    "chars": 7035,
    "preview": "import {Constants} from \"../constants\";\nimport {setContentTheme} from \"../ui/setContentTheme\";\nimport {addScript} from \""
  },
  {
    "path": "src/ts/markdown/setLute.ts",
    "chars": 1076,
    "preview": "export const setLute = (options: ILuteOptions) => {\n    const lute: Lute = Lute.New();\n    lute.PutEmojis(options.emojis"
  },
  {
    "path": "src/ts/markdown/speechRender.ts",
    "chars": 4223,
    "preview": "import {setSelectionFocus} from \"../util/selection\";\n\ndeclare global {\n    interface Window {\n        vditorSpeechRange:"
  },
  {
    "path": "src/ts/outline/index.ts",
    "chars": 1741,
    "preview": "import {Constants} from \"../constants\";\nimport {outlineRender} from \"../markdown/outlineRender\";\nimport {setPadding} fro"
  },
  {
    "path": "src/ts/preview/image.ts",
    "chars": 2872,
    "preview": "export const previewImage = (oldImgElement: HTMLImageElement, lang: keyof II18n = \"zh_CN\", theme = \"classic\") => {\n    c"
  },
  {
    "path": "src/ts/preview/index.ts",
    "chars": 13753,
    "preview": "import {abcRender} from \"../markdown/abcRender\";\nimport {chartRender} from \"../markdown/chartRender\";\nimport {codeRender"
  },
  {
    "path": "src/ts/resize/index.ts",
    "chars": 2241,
    "preview": "\nexport class Resize {\n    public element: HTMLElement;\n\n    constructor(vditor: IVditor) {\n        this.element = docum"
  },
  {
    "path": "src/ts/sv/combineFootnote.ts",
    "chars": 925,
    "preview": "/**\n * 合并脚注\n * @param elements vditor.sv.element\n * @param afterCombine 每个脚注块合并完成后的回调, param: root为合并后的脚注块\n */\nexport co"
  },
  {
    "path": "src/ts/sv/index.ts",
    "chars": 4748,
    "preview": "import {isCtrl, isFirefox} from \"../util/compatibility\";\nimport {\n    blurEvent,\n    copyEvent, cutEvent,\n    dropEvent,"
  },
  {
    "path": "src/ts/sv/inputEvent.ts",
    "chars": 8229,
    "preview": "import {scrollCenter} from \"../util/editorCommonEvent\";\nimport {hasClosestByAttribute} from \"../util/hasClosest\";\nimport"
  },
  {
    "path": "src/ts/sv/process.ts",
    "chars": 9342,
    "preview": "import {getMarkdown} from \"../markdown/getMarkdown\";\nimport {accessLocalStorage} from \"../util/compatibility\";\nimport {s"
  },
  {
    "path": "src/ts/sv/processKeydown.ts",
    "chars": 9929,
    "preview": "import {isCtrl} from \"../util/compatibility\";\nimport {fixTab} from \"../util/fixBrowserBehavior\";\nimport {hasClosestByAtt"
  },
  {
    "path": "src/ts/tip/index.ts",
    "chars": 1247,
    "preview": "export class Tip {\n    public element: HTMLElement;\n\n    constructor() {\n        this.element = document.createElement(\""
  },
  {
    "path": "src/ts/toolbar/Both.ts",
    "chars": 1041,
    "preview": "import {Constants} from \"../constants\";\nimport {setPreviewMode} from \"../ui/setPreviewMode\";\nimport {getEventName} from "
  },
  {
    "path": "src/ts/toolbar/Br.ts",
    "chars": 189,
    "preview": "export class Br {\n    public element: HTMLElement;\n\n    constructor() {\n        this.element = document.createElement(\"d"
  },
  {
    "path": "src/ts/toolbar/CodeTheme.ts",
    "chars": 1506,
    "preview": "import {Constants} from \"../constants\";\nimport {setCodeTheme} from \"../ui/setCodeTheme\";\nimport {getEventName} from \"../"
  },
  {
    "path": "src/ts/toolbar/ContentTheme.ts",
    "chars": 1598,
    "preview": "import {setContentTheme} from \"../ui/setContentTheme\";\nimport {getEventName} from \"../util/compatibility\";\nimport {MenuI"
  },
  {
    "path": "src/ts/toolbar/Counter.ts",
    "chars": 1606,
    "preview": "export class Counter {\n    public element: HTMLElement;\n\n    constructor(vditor: IVditor) {\n        this.element = docum"
  },
  {
    "path": "src/ts/toolbar/Custom.ts",
    "chars": 663,
    "preview": "import {Constants} from \"../constants\";\nimport {getEventName} from \"../util/compatibility\";\nimport {MenuItem} from \"./Me"
  },
  {
    "path": "src/ts/toolbar/Devtools.ts",
    "chars": 1122,
    "preview": "import {Constants} from \"../constants\";\nimport {setPadding} from \"../ui/initUI\";\nimport {getEventName} from \"../util/com"
  },
  {
    "path": "src/ts/toolbar/Divider.ts",
    "chars": 199,
    "preview": "export class Divider {\n    public element: HTMLElement;\n\n    constructor() {\n        this.element = document.createEleme"
  },
  {
    "path": "src/ts/toolbar/EditMode.ts",
    "chars": 7778,
    "preview": "import {Constants} from \"../constants\";\nimport {processAfterRender} from \"../ir/process\";\nimport {getMarkdown} from \"../"
  },
  {
    "path": "src/ts/toolbar/Emoji.ts",
    "chars": 3811,
    "preview": "import {getEventName} from \"../util/compatibility\";\nimport {execAfterRender} from \"../util/fixBrowserBehavior\";\nimport {"
  },
  {
    "path": "src/ts/toolbar/Export.ts",
    "chars": 1724,
    "preview": "import {exportHTML, exportMarkdown, exportPDF} from \"../export/index\";\nimport {getEventName} from \"../util/compatibility"
  },
  {
    "path": "src/ts/toolbar/Fullscreen.ts",
    "chars": 2945,
    "preview": "import {setPadding, setTypewriterPosition} from \"../ui/initUI\";\nimport {getEventName} from \"../util/compatibility\";\nimpo"
  },
  {
    "path": "src/ts/toolbar/Headings.ts",
    "chars": 3604,
    "preview": "import {Constants} from \"../constants\";\nimport {processHeading} from \"../ir/process\";\nimport {processHeading as processH"
  },
  {
    "path": "src/ts/toolbar/Help.ts",
    "chars": 1469,
    "preview": "import {getEventName} from \"../util/compatibility\";\nimport {MenuItem} from \"./MenuItem\";\n\nexport class Help extends Menu"
  },
  {
    "path": "src/ts/toolbar/Indent.ts",
    "chars": 968,
    "preview": "import {Constants} from \"../constants\";\nimport {getEventName} from \"../util/compatibility\";\nimport {listIndent} from \".."
  },
  {
    "path": "src/ts/toolbar/Info.ts",
    "chars": 1583,
    "preview": "import {VDITOR_VERSION} from \"../constants\";\nimport {getEventName} from \"../util/compatibility\";\nimport {MenuItem} from "
  },
  {
    "path": "src/ts/toolbar/InsertAfter.ts",
    "chars": 694,
    "preview": "import {Constants} from \"../constants\";\nimport {getEventName} from \"../util/compatibility\";\nimport {insertEmptyBlock} fr"
  },
  {
    "path": "src/ts/toolbar/InsertBefore.ts",
    "chars": 698,
    "preview": "import {Constants} from \"../constants\";\nimport {getEventName} from \"../util/compatibility\";\nimport {insertEmptyBlock} fr"
  },
  {
    "path": "src/ts/toolbar/MenuItem.ts",
    "chars": 2435,
    "preview": "import {Constants} from \"../constants\";\nimport {processToolbar} from \"../ir/process\";\nimport {processToolbar as processT"
  },
  {
    "path": "src/ts/toolbar/Outdent.ts",
    "chars": 996,
    "preview": "import {Constants} from \"../constants\";\nimport {getEventName} from \"../util/compatibility\";\nimport { listOutdent} from \""
  },
  {
    "path": "src/ts/toolbar/Outline.ts",
    "chars": 918,
    "preview": "import {Constants} from \"../constants\";\nimport {getEventName} from \"../util/compatibility\";\nimport {MenuItem} from \"./Me"
  },
  {
    "path": "src/ts/toolbar/Preview.ts",
    "chars": 2469,
    "preview": "import {Constants} from \"../constants\";\nimport {setPadding} from \"../ui/initUI\";\nimport {getEventName} from \"../util/com"
  },
  {
    "path": "src/ts/toolbar/Record.ts",
    "chars": 2760,
    "preview": "import {Constants} from \"../constants\";\nimport {uploadFiles} from \"../upload/index\";\nimport {getEventName} from \"../util"
  },
  {
    "path": "src/ts/toolbar/Redo.ts",
    "chars": 668,
    "preview": "import {Constants} from \"../constants\";\nimport {getEventName} from \"../util/compatibility\";\nimport {MenuItem} from \"./Me"
  },
  {
    "path": "src/ts/toolbar/Undo.ts",
    "chars": 668,
    "preview": "import {Constants} from \"../constants\";\nimport {getEventName} from \"../util/compatibility\";\nimport {MenuItem} from \"./Me"
  },
  {
    "path": "src/ts/toolbar/Upload.ts",
    "chars": 1684,
    "preview": "import {Constants} from \"../constants\";\nimport {uploadFiles} from \"../upload/index\";\nimport {getEventName} from \"../util"
  },
  {
    "path": "src/ts/toolbar/index.ts",
    "chars": 6756,
    "preview": "import {getEventName} from \"../util/compatibility\";\nimport {Both} from \"./Both\";\nimport {Br} from \"./Br\";\nimport {CodeTh"
  },
  {
    "path": "src/ts/toolbar/setToolbar.ts",
    "chars": 4391,
    "preview": "import {Constants} from \"../constants\";\nimport {getEventName} from \"../util/compatibility\";\n\nexport const removeCurrentT"
  },
  {
    "path": "src/ts/ui/initUI.ts",
    "chars": 6197,
    "preview": "import {Constants} from \"../constants\";\nimport {setEditMode} from \"../toolbar/EditMode\";\nimport {hidePanel} from \"../too"
  },
  {
    "path": "src/ts/ui/setCodeTheme.ts",
    "chars": 635,
    "preview": "import {Constants} from \"../constants\";\nimport {addStyle} from \"../util/addStyle\";\n\nexport const setCodeTheme = (codeThe"
  },
  {
    "path": "src/ts/ui/setContentTheme.ts",
    "chars": 566,
    "preview": "import {addStyle} from \"../util/addStyle\";\n\nexport const setContentTheme = (contentTheme: string, path: string) => {\n   "
  },
  {
    "path": "src/ts/ui/setPreviewMode.ts",
    "chars": 943,
    "preview": "import {removeCurrentToolbar} from \"../toolbar/setToolbar\";\nimport {setCurrentToolbar} from \"../toolbar/setToolbar\";\n\nex"
  },
  {
    "path": "src/ts/ui/setTheme.ts",
    "chars": 223,
    "preview": "export const setTheme = (vditor: IVditor) => {\n    if (vditor.options.theme === \"dark\") {\n        vditor.element.classLi"
  },
  {
    "path": "src/ts/undo/index.ts",
    "chars": 10619,
    "preview": "import * as DiffMatchPatch from \"diff-match-patch\";\nimport {disableToolbar, enableToolbar, hidePanel} from \"../toolbar/s"
  },
  {
    "path": "src/ts/upload/getElement.ts",
    "chars": 273,
    "preview": "export const getElement = (vditor: IVditor) => {\n    switch (vditor.currentMode) {\n        case \"ir\":\n            return"
  },
  {
    "path": "src/ts/upload/index.ts",
    "chars": 10462,
    "preview": "import { getEditorRange, setSelectionFocus } from \"../util/selection\";\nimport { getElement } from \"./getElement\";\nimport"
  },
  {
    "path": "src/ts/upload/setHeaders.ts",
    "chars": 404,
    "preview": "export const setHeaders = (vditor: IVditor, xhr: XMLHttpRequest) => {\n    if (vditor.options.upload.setHeaders) {\n      "
  },
  {
    "path": "src/ts/util/Options.ts",
    "chars": 14068,
    "preview": "import {Constants} from \"../constants\";\nimport {merge} from \"./merge\";\n\nexport class Options {\n    public options: IOpti"
  },
  {
    "path": "src/ts/util/RecordMedia.ts",
    "chars": 6300,
    "preview": "export class RecordMedia {\n    public SAMPLE_RATE = 5000;  // 44100 suggested by demos;\n    public DEFAULT_SAMPLE_RATE: "
  },
  {
    "path": "src/ts/util/addScript.ts",
    "chars": 1474,
    "preview": "export const addScriptSync = (path: string, id: string) => {\n    if (document.getElementById(id)) {\n        return false"
  },
  {
    "path": "src/ts/util/addStyle.ts",
    "chars": 385,
    "preview": "export const addStyle = (url: string, id: string) => {\n    if (!document.getElementById(id)) {\n        const styleElemen"
  },
  {
    "path": "src/ts/util/code160to32.ts",
    "chars": 109,
    "preview": "export const code160to32 = (text: string) => {\n    // 非打断空格转换为空格\n    return text.replace(/\\u00a0/g, \" \");\n};\n"
  }
]

// ... and 28 more files (download for full content)

About this extraction

This page contains the full source code of the Vanessa219/vditor GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 228 files (9.2 MB), approximately 2.4M tokens, and a symbol index with 4336 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!